Skip to main content
Glama

civilquants

Server Details

Parametric estimating engine: CESMM4/NRM2/SMM7/MMHW Bills of Quantities for civils assemblies.

If you are the author of this connector, you can claim ownership with GitHub, an HTTP challenge, or a DNS record. Claimed connector authors can inspect health checks, view analytics, and manage their listing.
Status
Healthy
Last Tested
Transport
Streamable HTTP
URL

TDQS

A3.8/5.0

Scored across 56 tools

Disambiguation3/5

While each tool targets a distinct civil engineering assembly, the descriptions are extremely detailed and rely on discriminators (e.g., wall_type, channel_type) that may not be instantly clear to an agent. Some tools like compute_headwall, compute_headwall_precast, and compute_headwall_attenuation_outlet have overlapping components but are still distinct enough. A few pairs (e.g., compute_cantilever_wall vs compute_counterfort_wall) could be confused if an agent doesn't read carefully, but the descriptions do clarify differences.

Naming Consistency5/5

All assembly tools follow the consistent `compute_<assembly>` naming pattern (e.g., compute_manhole, compute_cantilever_wall), and utility tools are `list_`, `get_`, `save_`, `recompute_`, `render_`, `resolve_` with consistent verb-noun structure. The naming is fully predictable and follows a clear convention.

Tool Count2/5

At 56 tools, the server is very large. While each tool has a specific engineering purpose, the sheer number is overwhelming for an agent to choose from. The tool count is far beyond the typical comfortable range and is likely to increase selection complexity. Although the domain is broad (civil engineering quantities), the count feels excessive for an MCP server, especially with many similar compute_<specific_wall> variants.

Completeness3/5

The server covers a wide range of civil engineering assemblies (retaining walls, pavements, drainage, earthworks, utilities) and supports the full lifecycle of saving and recomputing projects. However, there are notable gaps: no tool explicitly lists available assemblies other than via resolve_assembly_from_description, and no generic 'list all compute_*' tool exists. Additionally, update/delete operations for projects are absent; only save (create) and recompute exist. This limits editing flexibility but is workable.

Available Tools

56 tools
compute_anchored_wallCompute Anchored Retaining Wall BoQA
Read-only
Inspect

Paid tier only. Calling this without an authenticated CivilQuants account returns TIER_INSUFFICIENT — sign up at https://civilquants.com/pricing or use the free-tier alternative compute_cantilever_wall. Anchored retaining wall — the only wall family member that pre-stresses the retained soil mass into the wall via post-tensioned ground anchors per BS EN 1537. Three structural variants: in-situ reinforced concrete (INSITU_RC, economic 5-10m); steel king-post-and-lagging (KING_POST, typical 4-8m, often temporary); driven sheet pile (SHEET_PILED, quays/cofferdams/deep basements). Eight VARIANT_PRESETS exercise the 'one parameter form, eight variants, four standards' moat #1 claim across all three structural variants. The in-situ RC body routes via wall_type='anchored' attribute discrimination: CESMM4 F.6.4, NRM2 11.3.4, MMHW 1700.4.3 (SHW Cl. 1709/1710), SMM7 E10.3.3. Ground anchors and stressing route to new specialist handlers (CESMM4 Class C; NRM2 Group 7; MMHW Series 1600; SMM7 D32). King-post sections to CESMM4 P.5 / NRM2 7.3 / MMHW 1600.3 / SMM7 D32; sheet piles to CESMM4 P.4 / NRM2 7.4 / MMHW 1600.4 / SMM7 D31; timber lagging to CESMM4 O.3 / NRM2 16.4 / MMHW 2500.7 / SMM7 G20.1. Example params: stem_height=6 m (2–15), stem_thickness=0.5 m (0–1.5), wall_length=25 m (5–200). Example call: {"params": {"stem_height": 6, "stem_thickness": 0.5, "wall_length": 25}, "standard": "MMHW"}. Omitted parameters use sensible engineering defaults. Pass deliverables=["xlsx","dxf","pdf"] (any subset) to also receive one-shot download URLs in the same call: Excel BoQ (both tiers, watermarked free) plus the dimensioned DXF (CAD) and PDF drawing sheets (paid tier). Pass freeboard (clearance below the wall top, m) instead of the retained-height field to set the retained fill by clearance — the engine back-calculates it as stem − freeboard. Supplying both is rejected.

ParametersJSON Schema
NameRequiredDescriptionDefault
paramsYesParameter form for an anchored retaining wall. A single dataclass that — through combinations of its fields and the ``wall_form`` discriminator — produces all eight VARIANT_PRESETS plus arbitrary user-specified geometries across all three structural variants (INSITU_RC, KING_POST, SHEET_PILED). Sensible defaults yield a 6m in-situ RC wall with a single row of permanent anchors.
standardNoMMHW
freeboardNo
output_modeNofull_json
deliverablesNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.9/5.0
Behavior5/5

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

Discloses authentication requirement and paid tier restriction. Explains behavior of freeboard parameter. Annotations set readOnlyHint: true, consistent with a computation tool. No contradiction.

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?

While the description is lengthy, it efficiently packs essential information about variants, standards, parameters, and deliverables. Each sentence adds value, though slight tightening could improve conciseness.

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?

Given the tool's complexity (three structural variants, multiple standards, many parameters), the description is thorough. It covers variants, presets, standard mappings, parameter constraints, and deliverables. Output schema exists for return values.

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

Parameters5/5

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

Adds significant meaning beyond the schema: provides example values with ranges (stem_height=6 m (2–15)), defaults, and relationships (freeboard vs retained_height). The description compensates for the schema's limited descriptions and adds engineering context.

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?

The description clearly states that the tool computes a Bill of Quantities for anchored retaining walls, specifically noting it's the only wall family member with pre-stressed ground anchors. It distinguishes from the sibling tool compute_cantilever_wall by mentioning it as a free-tier alternative.

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?

Explicitly states it's paid tier only and warns about TIER_INSUFFICIENT error for unauthenticated calls. Provides the free alternative compute_cantilever_wall. Includes example params and an example call. Clarifies when to use freeboard vs retained_height.

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

compute_attenuation_tankCompute Stormwater Attenuation Tank BoQA
Read-only
Inspect

Free tier. Renders the MMHW standard only — CESMM4, NRM2 and SMM7 require a paid tier. Anonymous callers welcome. Stormwater attenuation tank supporting two configurations: modular geocellular crates (high void ratio, compact footprint) or large-bore pipe arrays (1.5m+ ID concrete pipes in parallel runs). Excavation may be open-battered or vertical-sided with sheet pile support. Example params: tank_length=30 m (2–200), crate_width=6 m (1–20), crate_height=1.2 m (0.4–3.6). Example call: {"params": {"tank_length": 30, "crate_width": 6, "crate_height": 1.2}, "standard": "MMHW"}. Omitted parameters use sensible engineering defaults. Pass deliverables=["xlsx","dxf","pdf"] (any subset) to also receive one-shot download URLs in the same call: Excel BoQ (both tiers, watermarked free) plus the dimensioned DXF (CAD) and PDF drawing sheets (paid tier).

ParametersJSON Schema
NameRequiredDescriptionDefault
paramsYes
standardNoMMHW
output_modeNofull_json
deliverablesNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.3/5.0
Behavior5/5

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

The description mentions that the tool is free tier with limitations, anonymous callers are welcome, and omitted parameters use sensible defaults. It does not contradict the readOnlyHint annotation, as the tool performs calculations without mutating data. This adds valuable context beyond 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?

The description is moderately sized and contains essential information: tier restrictions, configuration options, example call, and deliverables. It is front-loaded with critical constraints. A slightly more structured format could improve readability, but it remains efficient.

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

Completeness4/5

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

Given the tool's complexity (many parameters, nested object, multiple standards) and the presence of an output schema, the description is fairly complete. It covers free tier limitations, example usage, and defaults. It could have elaborated on the meaning of each output mode, but overall it is sufficient.

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

Parameters3/5

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

Despite schema description coverage being 0%, the description compensates by explaining key parameters like tank_length, crate_width, and crate_height with default ranges. It states that omitted parameters use defaults, but does not describe all parameters individually. This is adequate but not fully comprehensive.

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?

The description clearly states the tool computes a stormwater attenuation tank Bill of Quantities. It specifies two tank configurations (crates or pipes) and excavation types, distinguishing this tool from sibling tools that compute other civil engineering structures.

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

Usage Guidelines4/5

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

The description explicitly notes that only the MMHW standard is available in the free tier, while CESMM4, NRM2, and SMM7 require a paid tier. It includes an example call and explains the deliverables parameter. However, it does not provide explicit guidance on when not to use this tool versus its siblings.

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

compute_bored_pile_wallCompute Bored Pile Retaining Wall BoQA
Read-only
Inspect

Paid tier only. Calling this without an authenticated CivilQuants account returns TIER_INSUFFICIENT — sign up at https://civilquants.com/pricing or use the free-tier alternative compute_cantilever_wall. Cast-in-place bored concrete pile retaining wall, the SEVENTH member of the wall family and the FIFTH of the retaining_walls L1 leaf. The SIXTH structural system in the retaining / earth-structures domain (after mass concrete / RC / steel / mesh-and-stone / reinforced-soil-with-facing). Four structural forms via the bored_pile_form discriminator: CONTIGUOUS (clear-spaced piles, shotcrete face), SECANT_HARD_SOFT (alternating soft/hard overlapping piles, intermediate watertightness), SECANT_HARD_HARD (overlapping RC piles, maximum watertightness; deep basements), and KING_POST_AND_LAGGING_RC (widely-spaced RC king posts with lagging panels). 18th use of the classed-then-legacy attribute discrimination pattern, applied via the CONCRETE_REINFORCED handler's new wall_type='bored_pile' branch for the capping beam (when included). Routes via five new WorkCategory entries (BORED_PILE_CONCRETE, BORED_PILE_BORE, BORED_PILE_NR, BORED_PILE_HEAD_PREP, BORED_PILE_INTERLOCK) covering the CESMM4 Class P §P.8 three-line cast-in-place pile measurement convention plus the Class Q ancillaries head-prep line and the secant-specific interlock line. Codes: CESMM4 P.8.1-4 + Q.1.1, NRM2 7.6.1-4 + 7.5.1, MMHW 1600.5-6 (SHW Cl. 1602/1603), and SMM7 D30.1-5 — D30 (Cast in place piling) is OPENED at this session as the conventional UK QS named home. Capping beam routes via CONCRETE_REINFORCED with wall_type='bored_pile' to F.6.5 / 11.3.5 / 1700.4.4 / E10.3.4. Reinforcement billed itemised (separate audit line per BS 8666:2020 cage) on top of the pile rate by S31 decision. Eight variant presets exercise all four BoredPileForm values (2/2/2/2 split). Example params: wall_length_m=20 m (5–200), retained_height_m=6 m (2–20), embedment_below_formation_m=4 m (1–15). Example call: {"params": {"wall_length_m": 20, "retained_height_m": 6, "embedment_below_formation_m": 4}, "standard": "MMHW"}. Omitted parameters use sensible engineering defaults. Pass deliverables=["xlsx","dxf","pdf"] (any subset) to also receive one-shot download URLs in the same call: Excel BoQ (both tiers, watermarked free) plus the dimensioned DXF (CAD) and PDF drawing sheets (paid tier).

ParametersJSON Schema
NameRequiredDescriptionDefault
paramsYesParameter form for a bored pile retaining wall. A single dataclass that — through combinations of its fields and the ``bored_pile_form`` discriminator — produces all eight VARIANT_PRESETS plus arbitrary user-specified geometries across all four BoredPileForm options. Sensible defaults yield a 6m basement-wall CONTIGUOUS bored pile wall.
standardNoMMHW
output_modeNofull_json
deliverablesNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.6/5.0
Behavior4/5

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

Discloses authentication requirement and error behavior (TIER_INSUFFICIENT), output formats (xlsx, dxf, pdf), and defaults behavior. Adds value beyond the readOnlyHint annotation by detailing access constraints and deliverable options.

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

Conciseness2/5

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

Overly verbose; includes extraneous taxonomy details about structural families (SEVENTH member, FIFTH leaf) and coding references that are not needed for an AI agent. Core information should be more front-loaded and concise.

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

Completeness3/5

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

Provides a good overview of the tool's complexity, structural forms, and deliverables, but lacks detailed descriptions for many parameters. Adequate for a complex tool given presence of output schema and default parameter values.

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

Parameters3/5

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

Adds meaning with example parameter ranges (wall_length_m, retained_height_m, embedment_below_formation_m) and explanations of the bored_pile_form enum. However, schema coverage is low (25%) and many parameters remain undescribed; the description partially compensates but is not exhaustive.

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

Purpose4/5

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

The description clearly states the tool computes a BoQ for bored pile retaining walls and distinguishes from the free-tier alternative compute_cantilever_wall. However, the purpose is somewhat buried in verbose taxonomy about structural families and coding references.

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

Usage Guidelines4/5

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

Provides explicit guidance on paid tier requirement ('Calling this without an authenticated CivilQuants account returns TIER_INSUFFICIENT'), alternative free tool (compute_cantilever_wall), and gives example parameters and calls. Lacks explicit when-not-to-use but provides sufficient context.

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

compute_box_culvertCompute Precast Concrete Box Culvert BoQA
Read-only
Inspect

Paid tier only. Calling this without an authenticated CivilQuants account returns TIER_INSUFFICIENT — sign up at https://civilquants.com/pricing or use the free-tier alternative compute_manhole. Precast concrete box culvert run (Marshalls / FP McCann / CPM ranges, BS EN 14844 / BS 5911-3) of one of eight catalogue sizes from BC_600 (600 × 600mm) to BC_3000x2000 (3000 × 2000mm). Composes the precast units (N per run), concrete blinding bedding, geotextile separator, selected granular surround per SHW Cl. 503, and foundation excavation with optional sheet pile support. Optional headwall_attenuation_outlet (2nd use of S21) at each termination with independently parameter-selectable scour protection (rock armour, gabion mattress, concrete apron, or none). Routes BOX_CULVERT_UNIT via CESMM4 H.7.3/.4/.5 (precast concrete, size banded), NRM2 33.8.1/.2/.3, MMHW 500.12.1/.2/.3 (with Series 2500 signpost for large units per Volume 4 NG 25), and SMM7 R12.4.5/.6/.7. Example params: total_length_m=12 m (1–200), invert_depth_m=2.5 m (0.5–15), invert_gradient=0.005 (0–0.08). Example call: {"params": {"total_length_m": 12, "invert_depth_m": 2.5, "invert_gradient": 0.005}, "standard": "MMHW"}. Omitted parameters use sensible engineering defaults. Pass deliverables=["xlsx","dxf","pdf"] (any subset) to also receive one-shot download URLs in the same call: Excel BoQ (both tiers, watermarked free) plus the dimensioned DXF (CAD) and PDF drawing sheets (paid tier).

ParametersJSON Schema
NameRequiredDescriptionDefault
paramsYesParameter form for a precast concrete box culvert run. Catalogue-driven: pick a ``size`` and the section's nominal span / height / mass / wall thickness are read from ``_CATALOGUE``. Override individual fields if a specific manufacturer differs. The run is composed of ``ceil(total_length_m / unit_length_m)`` precast sections of the chosen size. Headwalls at each end are optional and each independently selectable, with the headwall_attenuation_outlet sub-assembly owning its size, bedding, outlet ironmongery, and scour protection. Per the S23 spec, the headwalls are emitted as fully separate sub-assemblies — their WorkItems carry their own ``source_assembly`` tag.
standardNoMMHW
output_modeNofull_json
deliverablesNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.8/5.0
Behavior1/5

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

The description contradicts annotations: readOnlyHint is true, but the tool performs computation (returns BoQ, drawings) and requires paid authentication. Description states TIER_INSUFFICIENT error, indicating a write/compute operation, not read-only.

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

Conciseness3/5

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

Long description (multiple paragraphs) with detailed examples. Front-loaded with important paid tier warning, but could be more concise. Some redundancy (e.g., repeated info on headwalls).

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

Completeness4/5

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

Given complexity and output schema existence, description is comprehensive: explains components, standards, optional deliverables, and defaults. Covers most aspects needed for agent to use correctly.

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 low (25%), but the description adds value by explaining defaults and deliverable mechanism. However, it does not enumerate all parameters; the schema itself has some descriptions. Overall, adds moderate insight beyond schema.

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?

The description clearly states it computes a precast concrete box culvert BoQ, specifying the resource (box culvert run) and verb (compute). It distinguishes from siblings by naming compute_manhole as a free-tier alternative.

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?

Explicitly mentions paid tier requirement and free-tier alternative. Provides example parameters and call, and notes when to use (for box culvert BoQ) and when to avoid (if not paid).

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

compute_cantilever_wallCompute Cantilever Retaining Wall BoQA
Read-only
Inspect

Free tier. Renders the MMHW standard only — CESMM4, NRM2 and SMM7 require a paid tier. Anonymous callers welcome. In-situ reinforced concrete cantilever retaining wall with toe, heel, and stem. Includes excavation, blinding, drainage, and backfill quantities. Example params: stem_height=4 m (2–8), stem_thickness_top=0.3 m (0.2–0.6), stem_thickness_bottom=0.45 m (0.25–0.9). Example call: {"params": {"stem_height": 4, "stem_thickness_top": 0.3, "stem_thickness_bottom": 0.45}, "standard": "MMHW"}. Omitted parameters use sensible engineering defaults. Pass deliverables=["xlsx","dxf","pdf"] (any subset) to also receive one-shot download URLs in the same call: Excel BoQ (both tiers, watermarked free) plus the dimensioned DXF (CAD) and PDF drawing sheets (paid tier). Pass freeboard (clearance below the wall top, m) instead of the retained-height field to set the retained fill by clearance — the engine back-calculates it as stem − freeboard. Supplying both is rejected.

ParametersJSON Schema
NameRequiredDescriptionDefault
paramsYes
standardNoMMHW
freeboardNo
output_modeNofull_json
deliverablesNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.3/5.0
Behavior5/5

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

The description adds significant behavioral context beyond the readOnlyHint annotation: free tier restrictions, anonymous caller support, default parameter behavior, freeboard back-calculation, and deliverables format. No contradiction with annotations; the description enriches the agent's understanding of side effects and limitations.

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

Conciseness4/5

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

The description is a single paragraph with all essential information, front-loading free tier info and purpose. It is clear but could benefit from more structure (e.g., bullet points for parameters) to improve scanability. Every sentence adds value, with minimal redundancy.

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

Completeness4/5

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

Given the complexity (5 top-level parameters, nested params object with many fields, output schema present), the description covers core functionality, tier constraints, example usage, and key parameter behaviors. It lacks coverage of error cases or behavior when parameters are out of range, but overall is adequate for the complexity level.

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

Parameters3/5

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

The schema has 0% parameter description coverage, so the description must compensate. It adds meaning for key parameters like stem_height with range examples (2–8 m), stem_thickness_top (0.2–0.6), stem_thickness_bottom (0.25–0.9), freeboard (clearance), and deliverables (any subset of xlsx, dxf, pdf). However, many other parameters (toe_length, heel_length, etc.) are left undocumented, so compensation is partial.

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?

The description clearly states the tool computes BoQ for an in-situ reinforced concrete cantilever retaining wall, specifying components like toe, heel, stem, excavation, etc. It distinguishes from sibling tools by focusing on 'cantilever' wall, which differentiates from other retaining wall types like gravity or counterfort walls.

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

Usage Guidelines4/5

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

The description provides clear context on when to use (cantilever wall BoQ) and tier limitations (free tier only for MMHW). It includes an example call with parameters. However, it does not explicitly state when not to use or suggest alternatives among sibling tools like compute_gravity_wall or compute_counterfort_wall, so it lacks exclusions.

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

compute_carrier_pipe_runCompute Carrier Pipe Run (banded) BoQA
Read-only
Inspect

Paid tier only. Calling this without an authenticated CivilQuants account returns TIER_INSUFFICIENT — sign up at https://civilquants.com/pricing or use the free-tier alternative compute_manhole. Linear carrier-pipe measurement assembly with full four-standard depth-banded rendering. CESMM4 Class I (I.{material}.{bore}.{depth}, 9 depth bands), NRM2 Group 33 (33.1.{bore}.{depth}, equivalent banding), MMHW Series 500 (500.1.{bore}.{depth}, 11 depth bands extending to 6 m for highway-scale carriers per SHW Cl. 501), SMM7 R12 (R12.1.{bore}.{depth}, 10 depth bands starting at 1 m for housing-scale carriers). Twelve variant presets exercise all 9 CESMM4 Class I depth bands and all 5 carrier materials (vitrified clay / concrete / HDPE / ductile iron / uPVC) — 12 × 4 = 48 distinguishable BoQ rows from a single parameter form. 19th use of the classed-then-legacy attribute discrimination pattern, FIRST applied to a Class I (Pipework) category — discriminator here is material itself, with the CESMM4 handler routing through the 5 Class I material sub-class digits while NRM2/MMHW/SMM7 stay within their respective groups but distinguish material in the description. Companion assembly: connection_to_existing (S32 sibling pair) — the enumerated extra-over connection line that ties a carrier run into an adopted asset. Example params: diameter_mm=225 mm (100–2400), invert_depth_m=1.8 m (0.5–10), run_length_m=30 m (1–2000). Example call: {"params": {"diameter_mm": 225, "invert_depth_m": 1.8, "run_length_m": 30}, "standard": "MMHW"}. Omitted parameters use sensible engineering defaults. Pass deliverables=["xlsx","dxf","pdf"] (any subset) to also receive one-shot download URLs in the same call: Excel BoQ (both tiers, watermarked free) plus the dimensioned DXF (CAD) and PDF drawing sheets (paid tier).

ParametersJSON Schema
NameRequiredDescriptionDefault
paramsYesParameters for a carrier pipe run. Geometric defaults yield a DN225 vitrified clay carrier at 1.8 m average invert depth over a 30 m run — the textbook small-civils foul carrier described in the QS measurement examples.
standardNoMMHW
output_modeNofull_json
deliverablesNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.5/5.0
Behavior4/5

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

The description discloses that authentication is required for paid tier, that it returns deliverables like xlsx/dxf/pdf conditionally, and that it is read-only (consistent with annotations). It adds context about the return format and tier limitations beyond the readOnlyHint.

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

Conciseness3/5

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

The description is very long and includes many implementation details (e.g., discriminator pattern, companion assembly history) that are not essential for an agent. It could be more concise while retaining key information.

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?

The description covers authorization, parameter defaults, example calls, deliverable options, and standards. Given the tool's complexity (4 parameters, nested objects, enums), this provides all necessary context for correct invocation without needing external lookup.

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?

Although schema description coverage is only 25%, the description compensates by explaining each parameter's role, providing example values, and clarifying defaults and enum meanings (e.g., material families, use descriptions).

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

Purpose5/5

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

The description clearly states it computes BoQ for carrier pipe runs according to four standards (CESMM4, NRM2, MMHW, SMM7) with specific class references. It distinguishes itself from siblings by mentioning the companion tool 'connection_to_existing' and the free-tier alternative 'compute_manhole'.

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?

The description explicitly states 'Paid tier only' and provides an alternative free tool, 'compute_manhole'. It also explains that omitted parameters use sensible defaults and gives example parameter calls, guiding effective usage.

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

compute_catchpitCompute Precast Concrete Catchpit / Silt Trap BoQA
Read-only
Inspect

Paid tier only. Calling this without an authenticated CivilQuants account returns TIER_INSUFFICIENT — sign up at https://civilquants.com/pricing or use the free-tier alternative compute_manhole. Precast concrete catchpit / silt trap to BS 5911-3 comprising factory-cast monolithic base with integral silt sump (600-900mm below outlet invert), stacked precast chamber rings, precast cover slab, ductile-iron frame and cover (BS EN 124 loading classes), optional step irons, granular or concrete bedding, granular surround, geotextile separator, and excavation. Catalogue-driven sizing from CP_900 (900mm ID) to CP_1800 (1800mm ID). Routes via chamber_type='catchpit' attribute discrimination through CESMM4 K.1.6.x, NRM2 33.7.14, MMHW 500.5.16 (SHW Cl. 511 silt traps), and SMM7 R12.3.13. Distinct from manholes by the silt-sump-below-channel geometry; typical position upstream of petrol/oil interceptor (S24) in a forecourt or service-area drainage train. Example params: invert_depth=2.5 m (0.5–10), bedding_thickness_mm=150 mm (100–300), bedding_overhang_m=0.15 m (0.1–0.3). Example call: {"params": {"invert_depth": 2.5, "bedding_thickness_mm": 150, "bedding_overhang_m": 0.15}, "standard": "MMHW"}. Omitted parameters use sensible engineering defaults. Pass deliverables=["xlsx","dxf","pdf"] (any subset) to also receive one-shot download URLs in the same call: Excel BoQ (both tiers, watermarked free) plus the dimensioned DXF (CAD) and PDF drawing sheets (paid tier).

ParametersJSON Schema
NameRequiredDescriptionDefault
paramsYesParameter form for a precast concrete catchpit / silt trap. Catalogue-driven: pick a ``size`` and the chamber's nominal dimensions, masses, and silt-sump depth are read from ``_CATALOGUE``. Override individual fields if a specific manufacturer differs. The catchpit is treated as a **manhole-family chamber** (same WorkCategory.MANHOLE) discriminated on chamber_type='catchpit'.
standardNoMMHW
output_modeNofull_json
deliverablesNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.8/5.0
Behavior5/5

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

Discloses paid tier requirement, authorization failure response, watermarking for free tier, and deliverables behavior. Annotations have readOnlyHint: true, and description adds behavioral context beyond that.

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?

Somewhat verbose but front-loaded with key information. Every sentence is informative. Could be slightly more concise, but structure is logical.

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?

Covers all aspects: purpose, usage, alternatives, authentication, parameters example, deliverables, and standards. Despite high complexity, the description provides complete guidance.

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 coverage is 25%, but description explains catalogue-driven sizing, example params, and that omitted params use sensible defaults. It adds context for parameters like size and standard beyond the schema.

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?

The description clearly states it computes a BoQ for a precast concrete catchpit/silt trap, using BS 5911-3 and several standard methods. It distinguishes from manholes by the silt-sump geometry and typical position upstream of an interceptor.

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?

Explicitly states paid tier and provides free-tier alternative compute_manhole. Gives example params and call, and context for when to use (upstream of petrol/oil interceptor in forecourt drainage).

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

compute_combined_services_trenchCompute Combined Services Trench BoQA
Read-only
Inspect

Paid tier only. Calling this without an authenticated CivilQuants account returns TIER_INSUFFICIENT — sign up at https://civilquants.com/pricing or use the free-tier alternative compute_manhole. Shared utility trench carrying multiple services side by side, each at its own cover depth (water, gas, electricity, telecoms) per NJUG Volume 1. One excavation envelope sized from the services, one disposal, one backfill column, with per-service lane-width bedding, surround, pipe/duct, and warning tape. Renders through CESMM4 Class I, NRM2 Group 41, MMHW Series 1300 and SMM7 Group T for the services, with the shared envelope routing through the existing earthworks/drainage handlers. Example params: trench_length_m=50 m (1–2000), service_spacing_mm=100 mm (50–500), working_space_below_bed_mm=100 mm (0–500). Example call: {"params": {"trench_length_m": 50, "service_spacing_mm": 100, "working_space_below_bed_mm": 100}, "standard": "MMHW"}. Omitted parameters use sensible engineering defaults. Pass deliverables=["xlsx","dxf","pdf"] (any subset) to also receive one-shot download URLs in the same call: Excel BoQ (both tiers, watermarked free) plus the dimensioned DXF (CAD) and PDF drawing sheets (paid tier).

ParametersJSON Schema
NameRequiredDescriptionDefault
paramsYes
standardNoMMHW
output_modeNofull_json
deliverablesNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.3/5.0
Behavior4/5

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

Beyond the readOnlyHint annotation, the description discloses authentication and tier requirements, the behavior of omitted parameters (defaults), and the ability to receive deliverables with one-shot download URLs. It also explains the rendering standards and the free/paid tier differences (watermarked vs. full).

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

Conciseness4/5

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

The description is well-structured and front-loaded with the most important information (paid tier, core functionality). It is informative but somewhat lengthy; every sentence serves a purpose, though some details (e.g., the list of standards) could be more concise.

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

Completeness4/5

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

Given the complexity (nested parameters, multiple standards, optional deliverables, authentication) and the presence of an output schema, the description covers the essential aspects for tool selection and invocation. It provides examples and explains the shared envelope concept, but could further clarify the relationship between parameters and defaults.

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?

The description adds value by explaining the services array structure, providing example parameter values and ranges, and clarifying that omitted parameters use sensible defaults. The input schema itself has descriptions for many parameters, so the description complements rather than replaces schema information.

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?

The description clearly states the tool computes a BoQ for a shared utility trench with multiple services, following NJUG Volume 1 and multiple standards (CESMM4, NRM2, MMHW, SMM7). It distinguishes from the free-tier alternative compute_manhole and implies differentiation from compute_single_service_run by emphasizing the shared envelope.

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

Usage Guidelines4/5

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

The description explicitly notes the paid-tier requirement and suggests the free-tier alternative compute_manhole. It provides example parameters and a call example, but does not explicitly state when to use this tool over other trench-related siblings (e.g., compute_single_service_run).

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

compute_connection_to_existingCompute Connection to Existing (drainage) BoQA
Read-only
Inspect

Paid tier only. Calling this without an authenticated CivilQuants account returns TIER_INSUFFICIENT — sign up at https://civilquants.com/pricing or use the free-tier alternative compute_manhole. Enumerated extra-over connection of a new drainage carrier pipe into an existing asset: existing manhole / inspection chamber, existing sewer or drain (via saddle / wye / cut-in junction), or existing outfall / watercourse / surface system. Routes via CESMM4 I.7.1/2/3 (Class I §I.7 Pipework Ancillaries — Connections), NRM2 33.6.1/2/3, MMHW 500.5.1/2/3 (SHW Cl. 506 Connections to existing sewers, drains and service runs), SMM7 R12.4.1/2/3, with a bore-size digit suffix appended in all four. The connection_type attribute is the discriminator that routes to the right sub-code; the bore digit refines within. Six variant presets cover all three connection types × two characteristic bores. Unit: Nr. Opens the new drainage_ancillaries L2 leaf (reserved for ditch, hard-material extra-over, CCTV testing, etc. in future sessions). Sibling assembly: carrier_pipe_run — the S32 pair that delivers a complete tender drainage line. Example params: diameter_mm=225 mm (100–2400). Example call: {"params": {"diameter_mm": 225}, "standard": "MMHW"}. Omitted parameters use sensible engineering defaults. Pass deliverables=["xlsx","dxf","pdf"] (any subset) to also receive one-shot download URLs in the same call: Excel BoQ (both tiers, watermarked free) plus the dimensioned DXF (CAD) and PDF drawing sheets (paid tier).

ParametersJSON Schema
NameRequiredDescriptionDefault
paramsYesParameters for a single connection-to-existing extra-over item.
standardNoMMHW
output_modeNofull_json
deliverablesNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.7/5.0
Behavior4/5

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

Beyond readOnlyHint annotation, the description discloses tier restrictions, behavior when not authenticated, that it computes BoQ (not modifies data), and details on deliverables. It adds significant context about the standards routing and output modes, though it could slightly improve by explicitly stating no write operations occur.

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

Conciseness5/5

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

The description is dense but well-organized: starts with tier warning, then systematically covers tool purpose, standards, parameters, unit, sibling tools, example, and deliverables. Every sentence adds value; no redundancy.

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

Completeness4/5

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

Very comprehensive for a complex tool, but existing_asset_id parameter is not explained in the description (only mentioned in schema). The description covers connection types, standards, deliverables, and tier info well, but omits guidance on when and how to use the existing_asset_id field.

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

Parameters5/5

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

Schema coverage is low (25%), but the description compensates by explaining connection_type as a discriminator with standard codes, method as non-code-affecting, and provides example call with diameter range and sensible defaults for omitted parameters. It adds engineering context missing from schema.

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?

The description clearly states the tool computes an extra-over connection BoQ item for drainage, enumerates connection types, and distinguishes from sibling compute_manhole and carrier_pipe_run. It provides a specific verb ('computes') and resource ('Connection to Existing drainage BoQ').

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?

Explicitly states paid tier only with a free alternative (compute_manhole), mentions when not to use (tier insufficient), and provides context on when to use this versus siblings like carrier_pipe_run. Also includes prerequisites (authenticated account).

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

compute_counterfort_wallCompute Counterfort Retaining Wall BoQA
Read-only
Inspect

Paid tier only. Calling this without an authenticated CivilQuants account returns TIER_INSUFFICIENT — sign up at https://civilquants.com/pricing or use the free-tier alternative compute_cantilever_wall. In-situ reinforced concrete counterfort retaining wall. Discrete RC counterforts on the retained face enhance moment capacity, making the wall economic for 4-10m retained heights (above cantilever-economic range, below anchored-wall range). Includes base slab, thin curtain wall, counterforts at configurable centres, drainage, and backfill. Eight VARIANT_PRESETS exercise the 'one parameter form, eight variants, four standards' moat #1 claim. Routes via wall_type='counterfort' attribute discrimination: CESMM4 F.6.3, NRM2 11.3.3, MMHW 1700.4.2 (SHW Cl. 1704), SMM7 E10.3.2. Example params: stem_height=5 m (3–12), curtain_thickness=0.35 m (0.2–0.6), toe_length=0.6 m (0–3). Example call: {"params": {"stem_height": 5, "curtain_thickness": 0.35, "toe_length": 0.6}, "standard": "MMHW"}. Omitted parameters use sensible engineering defaults. Pass deliverables=["xlsx","dxf","pdf"] (any subset) to also receive one-shot download URLs in the same call: Excel BoQ (both tiers, watermarked free) plus the dimensioned DXF (CAD) and PDF drawing sheets (paid tier). Pass freeboard (clearance below the wall top, m) instead of the retained-height field to set the retained fill by clearance — the engine back-calculates it as stem − freeboard. Supplying both is rejected.

ParametersJSON Schema
NameRequiredDescriptionDefault
paramsYesParameter form for an in-situ RC counterfort retaining wall. A single dataclass that — through combinations of its fields — produces all eight VARIANT_PRESETS plus arbitrary user-specified geometries. Sensible defaults yield a 5 m high standard highway counterfort wall with counterforts at 4.0 m centres.
standardNoMMHW
freeboardNo
output_modeNofull_json
deliverablesNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.6/5.0
Behavior4/5

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

Discloses tier requirements, error responses (TIER_INSUFFICIENT), watermarking, and deliverable behavior beyond annotations. Annotations already provide readOnlyHint=true, so the bar is lower; description adds useful context about payment and output restrictions. No contradictions with 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?

The description is relatively long but well-structured with clear sections. Front-loaded with critical tier information. Each sentence adds value, though could be slightly condensed. No redundant repetition of schema.

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?

Given the complexity of the tool (many nested params, multiple standards, deliverables), the description covers tier, error handling, alternatives, parameter usage, standards, and output options. Output schema exists, so return value explanation is not needed. Complete for effective tool selection and invocation.

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 20%, but the description adds meaning by explaining parameter usage like freeboard vs retained-height, deliverables format, and example calls. Nested params object has its own rich schema descriptions for enums. The description provides context that the schema alone does not.

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?

The description states 'Compute Counterfort Retaining Wall BoQ', uses specific verb 'compute' and resource, and distinguishes from sibling tools by explicitly naming the free-tier alternative compute_cantilever_wall and referencing other wall types for height ranges. The purpose is clear and unambiguous.

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?

Explicitly states when to use (4-10m retained heights) and when not (above cantilever-economic range, below anchored-wall range). Provides explicit alternative (compute_cantilever_wall for free tier) and mentions prerequisites (CivilQuants account). Comprehensive usage guidance.

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

compute_ditchCompute Open Ditch (drainage channel) BoQA
Read-only
Inspect

Paid tier only. Calling this without an authenticated CivilQuants account returns TIER_INSUFFICIENT — sign up at https://civilquants.com/pricing or use the free-tier alternative compute_manhole. Linear primary measurement of an open earthwork drainage channel — trapezoidal cross-section, four lining variants (unlined / geotextile / granular / concrete). Routes via CESMM4 Class E.4 (excavation for cuttings), NRM2 Group 34.10 (site works: open drains and ditches), MMHW Series 500.4 (SHW Cl. 514 Earthwork ditches and drains), SMM7 R13.4 (Land Drainage — ditches). Eight variant presets cover all four lining types x two characteristic size scenarios each. Unit: M. Second member of the drainage_ancillaries L2 leaf (opened at S32 with connection_to_existing). 20th use of the classed-then-legacy attribute discrimination pattern via the lining_type discriminator. The four standards genuinely diverge on which work-section heading owns ditches (Class E vs Group 34 vs Series 500 vs R13) — the platform renders all four honestly from one source WorkItem. Example params: run_length_m=100 m (1–1000), top_width_mm=1700 mm (200–10000), bottom_width_mm=500 mm (100–5000). Example call: {"params": {"run_length_m": 100, "top_width_mm": 1700, "bottom_width_mm": 500}, "standard": "MMHW"}. Omitted parameters use sensible engineering defaults. Pass deliverables=["xlsx","dxf","pdf"] (any subset) to also receive one-shot download URLs in the same call: Excel BoQ (both tiers, watermarked free) plus the dimensioned DXF (CAD) and PDF drawing sheets (paid tier).

ParametersJSON Schema
NameRequiredDescriptionDefault
paramsYesParameters for a single open-ditch primary measurement. The geometry is a trapezoidal cross-section run linearly along the ditch alignment. side_slope_h_per_v is the side slope expressed as horizontal-per-vertical (1.0 = 45 deg, 1.5 = ~34 deg, 0.5 = ~63 deg).
standardNoMMHW
output_modeNofull_json
deliverablesNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.4/5.0
Behavior4/5

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

Annotations already declare readOnlyHint: true. The description adds concrete details: authentication requirement, tier insufficiency error, and behavior of deliverables (one-shot download URLs). No contradiction.

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

Conciseness3/5

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

The description is verbose, including extensive standards references and variant presets that may not be essential for an AI agent to select the tool. However, it is front-loaded with key info (paid tier, purpose).

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

Completeness4/5

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

Covers purpose, constraints, alternatives, examples, and deliverables option. Output schema exists, so no need to detail return values. Provides sufficient context for an agent to invoke correctly.

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 low (25%). The description adds value by detailing parameter ranges (e.g., run_length_m 1-1000) and explaining side_slope_h_per_v meaning. It also notes that omitted parameters use engineering defaults.

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?

The description clearly states the tool's purpose: 'Linear primary measurement of an open earthwork drainage channel' and outputs a BoQ. It distinguishes from siblings by mentioning it's the second member of the drainage_ancillaries leaf and contrasts with the free-tier alternative compute_manhole.

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?

Explicitly states paid-tier requirement, provides sign-up link, and directs to free alternative compute_manhole. Also gives example parameters and a sample call, plus notes on omitted parameters using defaults.

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

compute_edge_drainCompute Highway Pavement Edge Drain (HD 33/16) BoQA
Read-only
Inspect

Paid tier only. Calling this without an authenticated CivilQuants account returns TIER_INSUFFICIENT — sign up at https://civilquants.com/pricing or use the free-tier alternative compute_manhole. Highway pavement edge drain per HD 33/16. Perforated carrier in a granular-filled trench with filter geotextile wrap; optional top separator under the pavement build-up. Highway-specific defaults: Type B filter aggregate, 200 g/m² geotextile, supported excavation. Headline standard mapping: MMHW 500.7 (filter drain with perforated pipe). Renders cleanly across all four standards with HA 40/01 references. Example params: pipe_internal_diameter_mm=150 mm (80–300), pipe_wall_thickness_mm=25 mm (5–50), drain_length=100 m (1–1000). Example call: {"params": {"pipe_internal_diameter_mm": 150, "pipe_wall_thickness_mm": 25, "drain_length": 100}, "standard": "MMHW"}. Omitted parameters use sensible engineering defaults. Pass deliverables=["xlsx","dxf","pdf"] (any subset) to also receive one-shot download URLs in the same call: Excel BoQ (both tiers, watermarked free) plus the dimensioned DXF (CAD) and PDF drawing sheets (paid tier).

ParametersJSON Schema
NameRequiredDescriptionDefault
paramsYes
standardNoMMHW
output_modeNofull_json
deliverablesNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4/5.0
Behavior4/5

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

Annotations declare readOnlyHint=true, meaning no side effects. The description adds that the tool requires authentication for paid tier, returning a specific error otherwise. It also mentions optional deliverables. This adds useful behavioral context beyond the annotation.

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

Conciseness3/5

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

The description is long but packed with relevant information. It begins with the tier warning and then provides definitions, defaults, and examples. Some redundancy could be trimmed (e.g., repeating standard references).

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

Completeness3/5

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

Given the tool's complexity (many parameters, output schema exists), the description covers usage context, standards, example call, and deliverables. However, it misses comprehensive parameter documentation and could better describe return values when output schema is present but not detailed in description.

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

Parameters2/5

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

The input schema has 15+ parameters with no description coverage (0%). The description only mentions three example parameters and their ranges, lacking explanation for the majority. It states omitted parameters use defaults, but without detailing them, the agent cannot understand their purpose or values.

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?

Title and description clearly specify the tool computes BoQ for 'highway pavement edge drain' per HD 33/16, with a detailed definition. It distinguishes itself from siblings like compute_french_drain by mentioning highway-specific defaults and standards.

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?

Explicitly states 'Paid tier only' and points to free-tier alternative compute_manhole. Provides example parameters and call format, helping the agent decide when to use this tool versus other drain computation tools.

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

compute_embankment_cross_sectionCompute Embankment Cross-Section BoQA
Read-only
Inspect

Paid tier only. Calling this without an authenticated CivilQuants account returns TIER_INSUFFICIENT — sign up at https://civilquants.com/pricing or use the free-tier alternative compute_end_area_earthworks. Geometry-driven embankment per MMHW Series 600 — trapezoidal cross-section with crest width, asymmetric side slopes (h:v), and per-chainage height profile. Auto-generates the CrossSection series and delegates volume integration + mass-haul + standards routing to the end_area_earthworks engine, inheriting the four-standard rendering invariant. Auto-computes topsoil strip footprint from toe-to-toe envelope and supports an optional founding-strip excavation below ground level. Example params: crest_width_m=10 m (3–30), side_slope_h_per_v=2 (1–4), strip_envelope_offset_m=0.5 m (0–2). Example call: {"params": {"crest_width_m": 10, "side_slope_h_per_v": 2, "strip_envelope_offset_m": 0.5}, "standard": "MMHW"}. Omitted parameters use sensible engineering defaults. Pass deliverables=["xlsx","dxf","pdf"] (any subset) to also receive one-shot download URLs in the same call: Excel BoQ (both tiers, watermarked free) plus the dimensioned DXF (CAD) and PDF drawing sheets (paid tier).

ParametersJSON Schema
NameRequiredDescriptionDefault
paramsYesInputs for a geometry-driven embankment cross-section assembly. The assembly generates a `CrossSection` list from the profile + geometry parameters, builds an `EndAreaEarthworksParameters` from the result + the material/method parameters carried here, and delegates compute to `EndAreaEarthworks.compute(...)`. Per Session 12 Q2 decision: left and right slopes are exposed separately, both defaulting to `side_slope_h_per_v` so the common symmetric case is a single-parameter call.
standardNoMMHW
output_modeNofull_json
deliverablesNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.5/5.0
Behavior5/5

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

The description goes beyond the readOnlyHint annotation by detailing tier requirements, error conditions, delegation to end_area_earthworks engine, auto-computation of topsoil strip, and support for optional excavation. It also explains the inheritance of rendering invariants and the one-shot download URL mechanism for deliverables.

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

Conciseness4/5

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

The description is well-structured with clear sections: tier warning, core functionality, example, and deliverables. It front-loads critical information (paid tier, alternative) and uses bullet-like phrasing. However, it is somewhat verbose and could be trimmed without losing substance.

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

Completeness4/5

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

Given the tool's complexity (many parameters, nested objects, sibling tools), the description covers the main workflow, tier restrictions, and deliverables. It explains the delegation and core features. However, it lacks detailed parameter descriptions for most parameters, relying on defaults and an example. The existence of an output schema reduces the need for return value explanation, but parameter descriptions are still lacking.

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

Parameters3/5

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

The schema has many parameters with 25% coverage, but the description adds value by explaining crest_width_m, side_slope_h_per_v, and strip_envelope_offset_m with examples and sensible defaults. However, it does not explain the meaning of most other parameters like method, bulking, material classes, which are critical for proper use. The example call helps but is insufficient for full understanding.

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?

The description clearly states it computes an embankment cross-section BoQ, explicitly distinguishing from the free-tier alternative compute_end_area_earthworks. It specifies the geometry-driven approach per MMHW Series 600 and lists key parameters, making the purpose unambiguous.

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?

It explicitly states it is paid-tier only and directs to the free-tier alternative compute_end_area_earthworks. It provides example parameters and a full example call, enabling correct invocation. It also explains when to omit parameters and how to request deliverables.

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

compute_end_area_earthworksCompute End-Area Earthworks BoQA
Read-only
Inspect

Free tier. Renders the MMHW standard only — CESMM4, NRM2 and SMM7 require a paid tier. Anonymous callers welcome. Linear earthworks reach measured by the end-area method per MMHW Series 600 — Simpson's Rule with UK-QS even-ordinate trapezoidal-boundary fallback, with full SHW Series 600 Table 6/1 class tagging, mass-haul diagram (bulking + shrinkage per SHW Cl. 605), cut/fill balance, DISPOSAL vs FILL_GENERAL routing, capping and sub-base build-up, and topsoil strip + replacement. Renders identically across CESMM4 / NRM2 / MMHW / SMM7 with per-class line distinction. Example params: unacceptable_proportion=0 (0–1), topsoil_strip_depth_m=0.15 m (0–1), topsoil_replace_depth_mm=150 mm (0–500). Example call: {"params": {"unacceptable_proportion": 0, "topsoil_strip_depth_m": 0.15, "topsoil_replace_depth_mm": 150}, "standard": "MMHW"}. Omitted parameters use sensible engineering defaults. Pass deliverables=["xlsx","dxf","pdf"] (any subset) to also receive one-shot download URLs in the same call: Excel BoQ (both tiers, watermarked free) plus the dimensioned DXF (CAD) and PDF drawing sheets (paid tier).

ParametersJSON Schema
NameRequiredDescriptionDefault
paramsYesInputs for a linear earthworks reach measured by the end-area method. The five area streams in each `CrossSection` are integrated independently along the chainage axis. `topsoil_strip_area` is the planar (m²) strip area at each section; the volume is computed as `trap-integrate(topsoil_strip_area) × topsoil_strip_depth_m / strip_area_mean` — i.e. we multiply the integrated planar strip area by the strip depth to get a volume in m³. Conventionally `topsoil_strip_area` per the designer is planar in m² per running metre (m² of plan area per metre of chainage = m of width), but to keep CrossSection symmetric with the other four area streams we treat it as a true area (m²) at that station and apply the depth multiplication here.
standardNoMMHW
output_modeNofull_json
deliverablesNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.9/5.0
Behavior4/5

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

Annotations provide readOnlyHint=true, and the description adds significant behavioral context: computation details (integration method, bulking, shrinkage), tier limitations, rendering behavior across standards, and deliverable options. No contradiction with annotations.

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

Conciseness2/5

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

The description is a dense, single paragraph with many clauses and details. It could be structured into sections (purpose, usage, examples, limitations) for better readability. While informative, it lacks conciseness.

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

Completeness4/5

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

Given the tool's complexity (nested objects, many params, output schema exists), the description covers calculation method, standards, deliverables, tier limitations, example call, and defaults. It doesn't explain return values, but output schema fills that gap. Fairly complete.

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

Parameters3/5

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

Schema has detailed parameter descriptions (e.g., bulking, cross_sections) covering 25% of parameters, plus enums with standard material classes. The tool description adds overall context (example params, integration method) but does not significantly enhance individual parameter meaning beyond the schema.

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?

The description explicitly states the tool computes end-area earthworks BoQ, specifies the standard (MMHW), method (Simpson's Rule), and provides example parameters and deliverables. It clearly distinguishes from sibling compute tools by naming the specific earthworks and standard.

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

Usage Guidelines4/5

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

The description provides clear context: free tier vs paid tier, which standards are supported, anonymous callers welcome, and example call with parameters. However, it does not explicitly state when to use this tool versus sibling compute tools for different structures, which is a minor gap.

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

compute_flexible_pavementCompute Flexible (Bituminous) Pavement Build-Up BoQA
Read-only
Inspect

Paid tier only. Calling this without an authenticated CivilQuants account returns TIER_INSUFFICIENT — sign up at https://civilquants.com/pricing or use the free-tier alternative compute_end_area_earthworks. Flexible pavement build-up: optional capping (Class 6F) + Type 1 (Class 1A) granular sub-base + asphalt concrete base (AC) + binder course (AC/HRA) + optional tack coat + surface course (AC/HRA/SMA/TSCS). Routes the bound layers through PAVEMENT_BASE/BINDER/SURFACE handlers with pavement_family discrimination across all four standards. Sub-base and capping route through the v8 FILL_SUB_BASE/FILL_CAPPING SHW-class-aware handlers. Four traffic-category defaults (domestic/light/medium/heavy) per DMRB CD 226. All four standards render (CESMM4 R.1-R.4, NRM2 34.4-34.6, MMHW 700, SMM7 Q20+Q22). Example params: length=100 m (0.5–2000), width=6 m (0.5–30), sub_base_thickness_mm=150 mm (100–500). Example call: {"params": {"length": 100, "width": 6, "sub_base_thickness_mm": 150}, "standard": "MMHW"}. Omitted parameters use sensible engineering defaults. Pass deliverables=["xlsx","dxf","pdf"] (any subset) to also receive one-shot download URLs in the same call: Excel BoQ (both tiers, watermarked free) plus the dimensioned DXF (CAD) and PDF drawing sheets (paid tier).

ParametersJSON Schema
NameRequiredDescriptionDefault
paramsYesInput parameters for a flexible pavement assembly. Geometric defaults match a 100m × 6m urban access road (medium traffic) per DMRB CD 226 starting build-up: 150mm Type 1 sub-base, 150mm AC 32 base, 60mm AC 20 binder, 40mm SMA 10 surface.
standardNoMMHW
output_modeNofull_json
deliverablesNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.7/5.0
Behavior5/5

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

Annotations declare readOnlyHint=true, which is consistent with a computation tool. The description adds context about authentication requirements, tier insufficiency errors, and the one-shot download URLs for deliverables, going beyond 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?

The description is comprehensive but lengthy; however, every sentence provides essential information. It is well-structured, starting with the critical usage constraint and then detailing the build-up layers, standards, and example calls.

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

Completeness4/5

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

Given the tool's complexity (many parameters, multiple standards, output modes, deliverables), the description covers key aspects: purpose, usage constraints, parameter defaults, and output options. The presence of an output schema partly reduces the need to describe return values in detail.

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?

While schema description coverage is 25%, the description adds meaningful context for parameters, such as traffic category mappings to DMRB CD 226, default dimensions for an urban access road, and the effect of omitted parameters. This compensates for the lack of full schema descriptions.

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

Purpose5/5

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

The description clearly states that the tool computes a flexible pavement build-up BoQ, including optional layers, standards, and traffic categories. It distinguishes itself from sibling tools like compute_rigid_pavement and compute_end_area_earthworks by specifying 'flexible pavement' and mentioning the free-tier alternative.

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?

The description explicitly states 'Paid tier only' and provides the alternative compute_end_area_earthworks for free-tier users. It gives example parameters, default values, and notes when explicit thicknesses are needed (e.g., design traffic >30 msa).

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

compute_french_drainCompute French (Filter) Drain BoQA
Read-only
Inspect

Paid tier only. Calling this without an authenticated CivilQuants account returns TIER_INSUFFICIENT — sign up at https://civilquants.com/pricing or use the free-tier alternative compute_manhole. Perforated land drain in a granular-filled trench with non-woven filter geotextile wrap. Composes the bedding primitive at Class S geometry (full granular envelope) with three additions: perforated carrier, filter geotextile wrap, and optional top seal. Renders cleanly across CESMM4 / NRM2 / MMHW (Series 500 filter drain) and SMM7. Example params: pipe_internal_diameter_mm=150 mm (80–600), pipe_wall_thickness_mm=25 mm (5–80), drain_length=50 m (1–500). Example call: {"params": {"pipe_internal_diameter_mm": 150, "pipe_wall_thickness_mm": 25, "drain_length": 50}, "standard": "MMHW"}. Omitted parameters use sensible engineering defaults. Pass deliverables=["xlsx","dxf","pdf"] (any subset) to also receive one-shot download URLs in the same call: Excel BoQ (both tiers, watermarked free) plus the dimensioned DXF (CAD) and PDF drawing sheets (paid tier).

ParametersJSON Schema
NameRequiredDescriptionDefault
paramsYes
standardNoMMHW
output_modeNofull_json
deliverablesNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.3/5.0
Behavior4/5

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

Annotations set readOnlyHint=true, consistent with description (no data modification mentioned). Description adds useful context: requires authenticated account, returns TIER_INSUFFICIENT error without it, and delivers download URLs for deliverables. No contradictions.

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?

Description is well-structured: starts with tier info, then technical description, then example, then deliverables. Front-loaded with critical details. Slightly long but earns its length with relevant information.

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?

Covers tier, alternative, standards (CESMM4, NRM2, MMHW, SMM7), example call, default behavior, and deliverables. With output schema present, return values need not be detailed. Sufficient for agent to understand and invoke correctly.

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

Parameters2/5

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

Schema description coverage is 0% per context, but description only provides example values for three parameters (pipe_internal_diameter_mm, pipe_wall_thickness_mm, drain_length) without explaining others. 'Omitted parameters use sensible defaults' offers minimal guidance. Does not compensate for lack of schema descriptions.

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

Purpose5/5

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

The description clearly states it computes a French drain BoQ, provides technical details (perforated drain, granular-filled trench, geotextile wrap), and distinguishes from sibling tool compute_manhole as a paid-tier alternative. The purpose is specific and unambiguous.

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?

Explicitly states 'Paid tier only' and mentions the free-tier alternative compute_manhole. Includes example parameters and call, and explains when to use the tool versus alternatives. Provides clear context for invocation.

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

compute_gabion_wallCompute Gabion Retaining Wall BoQA
Read-only
Inspect

Paid tier only. Calling this without an authenticated CivilQuants account returns TIER_INSUFFICIENT — sign up at https://civilquants.com/pricing or use the free-tier alternative compute_cantilever_wall. Modular gabion retaining wall built from welded or hexagonal-mesh wire baskets filled with hard angular graded stone (SHW Cl. 622). The first non-concrete retaining structure in the platform and the FIRST member of the earth_structures L1 leaf — opening Phase E. Spans four structural forms via the gabion_form discriminator: STACKED_RECTANGULAR (standard highway boundary), STACKED_STEPPED (architectural / heritage), BATTERED (tall walls with back batter), and FACING_MATTRESS (Reno-type mattresses for slope facing / scour protection). Eight variant presets exercise the parameter form covering all four gabion_form values: highway boundary, landscape, stepped front, heritage stepped, battered, river training, scour apron, and tall battered. Routes via three new WorkCategory entries (GABION_BASKET, GABION_FACING_MATTRESS, STONE_FILL) — the first session where the classed-then-legacy discriminator pattern is applied to fundamentally new measurement vocabulary rather than to existing concrete categories. Codes: CESMM4 E.8.1-3 (Class E — Earthworks), NRM2 5.20-22 (Group 5 — Excavating and filling), MMHW 600.12-14 (Series 600 — Earthworks; SHW Cl. 622/623), and SMM7 D41.1/D41.2/D20.20 (D41 — Crib walls / gabions / reinforced earth — the only standard with a NAMED home). 16th use of the discriminator pattern, first applied to new WorkCategories rather than legacy ones. Example params: wall_height=3 m (0.1–8), wall_length=25 m (5–200), basket_length_m=2 m (1–3). Example call: {"params": {"wall_height": 3, "wall_length": 25, "basket_length_m": 2}, "standard": "MMHW"}. Omitted parameters use sensible engineering defaults. Pass deliverables=["xlsx","dxf","pdf"] (any subset) to also receive one-shot download URLs in the same call: Excel BoQ (both tiers, watermarked free) plus the dimensioned DXF (CAD) and PDF drawing sheets (paid tier).

ParametersJSON Schema
NameRequiredDescriptionDefault
paramsYesParameter form for a gabion retaining wall. A single dataclass that — through combinations of its fields and the ``gabion_form`` discriminator — produces all eight VARIANT_PRESETS plus arbitrary user-specified geometries across all four GabionForm options. Sensible defaults yield a 3m highway-boundary STACKED_RECTANGULAR wall with 1m × 1m × 2m galvanised hexagonal baskets filled with 100-200mm graded stone.
standardNoMMHW
output_modeNofull_json
deliverablesNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.4/5.0
Behavior4/5

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

The description extensively describes behavioral traits: paid tier, authentication, output options (deliverables: xlsx, dxf, pdf), default parameters, and the discriminator pattern for structural forms. It adds context beyond annotations by explaining the paid tier error and output features. However, it does not explicitly confirm read-only behavior, and annotations state readOnlyHint=true, which may be contradictory given the tool creates new WorkCategory entries.

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

Conciseness2/5

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

The description is excessively long (over 500 words) with dense technical details about structural forms, codes, and historical context. While informative, it lacks conciseness; a shorter version would be more efficient for an AI agent to parse. Key information is front-loaded (paid tier, authentication), but the latter half is verbose.

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?

Given the tool's complexity (four forms, many parameters, paid tier, multiple output modes), the description covers virtually all relevant aspects: authentication, alternative tool, parameter examples, defaults, output deliverables, codes, and discriminator patterns. It is extremely thorough and leaves few gaps for an agent to infer.

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?

The description adds value beyond the schema by providing example parameters and call, listing defaults for key parameters (wall_height=3m, wall_length=25m, basket_length_m=2m), and explaining the deliverables parameter. Schema coverage is low (25%), but the description compensates with examples and practical usage notes, though it doesn't detail every parameter.

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?

The description clearly states the tool computes a Bill of Quantities for a modular gabion retaining wall. It distinguishes from siblings by being the first non-concrete retaining structure and explicitly names the free alternative compute_cantilever_wall. The four structural forms and eight variant presets are detailed, leaving no ambiguity about what the tool does.

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?

The description starts with 'Paid tier only' and specifies authentication requirements, explicitly warning about TIER_INSUFFICIENT error. It names the free-tier alternative compute_cantilever_wall. It also provides example parameters and a call, guiding when to use this tool versus alternatives.

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

compute_gravity_wallCompute Mass Concrete Gravity Retaining Wall BoQA
Read-only
Inspect

Paid tier only. Calling this without an authenticated CivilQuants account returns TIER_INSUFFICIENT — sign up at https://civilquants.com/pricing or use the free-tier alternative compute_cantilever_wall. In-situ mass concrete gravity retaining wall (typical C20/25 to C25/30) with trapezoidal cross-section, retaining soil by self-weight rather than structural action. Eight variant presets exercise the parameter form — landscape, highway boundary, trapezoidal, stepped-front, toe-projection, keyed-base, stepped-foundation, and battered-back-vertical-front. Routes via wall_type='gravity' attribute discrimination through CESMM4 F.5.3, NRM2 11.2.3, MMHW 1700.5 (SHW Cl. 1704 structural concrete), and SMM7 E10.2.3. Reinforcement default zero (gravity walls are nominally unreinforced); optional nominal face mesh available via nominal_face_reinforcement_kg_per_m3 parameter. Includes excavation (battered or supported, level or stepped foundation), blinding, drainage system (subsoil drain + granular surround + geotextile separator), Class 6N backfill, disposal, and formwork to vertical and battered faces. 13th use of the classed-then-legacy attribute discrimination pattern, and first use in the retaining wall family — opening the wall moat for subsequent counterfort (S30), anchored (S31) and bored pile (S32) variants. Example params: stem_height=3 m (1.5–6), stem_thickness_top=0.4 m (0.2–1), stem_thickness_bottom=1.3 m (0.4–2.5). Example call: {"params": {"stem_height": 3, "stem_thickness_top": 0.4, "stem_thickness_bottom": 1.3}, "standard": "MMHW"}. Omitted parameters use sensible engineering defaults. Pass deliverables=["xlsx","dxf","pdf"] (any subset) to also receive one-shot download URLs in the same call: Excel BoQ (both tiers, watermarked free) plus the dimensioned DXF (CAD) and PDF drawing sheets (paid tier).

ParametersJSON Schema
NameRequiredDescriptionDefault
paramsYesParameter form for a mass concrete gravity retaining wall. A single dataclass that — through combinations of its fields — produces all eight VARIANT_PRESETS plus arbitrary user-specified geometries. Sensible defaults yield a 3 m high standard highway boundary wall.
standardNoMMHW
output_modeNofull_json
deliverablesNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.2/5.0
Behavior4/5

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

Annotations declare readOnlyHint: true, so the tool is stateless. The description adds context: describes computation details (inclusions like excavation, drainage), output deliverables (Excel, DXF, PDF), and tier behavior (TIER_INSUFFICIENT error). No contradictory behavior disclosed. Slight verbosity but adds value beyond annotation.

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

Conciseness3/5

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

Description is lengthy and includes internal implementation details (e.g., '13th use of the classed-then-legacy pattern') that are irrelevant for an agent. Front-loaded with tier info, but overall verbose. Could be more concise while retaining essential information.

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

Completeness4/5

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

Given complexity (4 top-level params, nested params, output schema exists), the description covers tool purpose, inputs (including defaults and ranges), outputs (deliverables), and usage context. Output schema handles return details. Some param descriptions missing, but overall adequate for an experienced agent.

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

Parameters3/5

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

Schema description coverage is only 25% (low). The description adds meaning for key parameters like stem_height, stem_thickness_top/bottom (with ranges) and mentions variant presets. However, many parameters are not explained (e.g., toe_length, heel_length, back_profile, etc.). The example call helps but incomplete compensation for low coverage.

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?

The description clearly states it computes a mass concrete gravity retaining wall BoQ, specifying wall type, cross-section, and materials. It explicitly differentiates from the sibling tool compute_cantilever_wall as a free-tier alternative, and mentions variants. The verb 'compute' and resource 'Mass Concrete Gravity Retaining Wall BoQ' are specific.

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?

Explicitly states paid tier requirement and provides the free-tier alternative (compute_cantilever_wall). Includes example parameters and example call. Describes when to use, including variant presets and standard codes. Clear guidance on deliverables and how to pass them.

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

compute_gullyCompute Highway / Curtilage Gully with Connection BoQA
Read-only
Inspect

Free tier. Renders the MMHW standard only — CESMM4, NRM2 and SMM7 require a paid tier. Anonymous callers welcome. Composite drainage inlet: precast gully pot with trap, ductile-iron grating, optional kerb outlet, and a short connection drain to the carrier sewer. The connection drain re-uses the bedding primitive. Four-standard rendering with component-aware sub-codes (CESMM4 K.6.x, NRM2 33.8.x, MMHW 500.7.x, SMM7 R12.3.6.x). Example params: pot_internal_diameter_mm=450 mm (300–750), pot_depth_m=0.9 m (0.45–2.5), pot_wall_thickness_mm=60 mm (50–100). Example call: {"params": {"pot_internal_diameter_mm": 450, "pot_depth_m": 0.9, "pot_wall_thickness_mm": 60}, "standard": "MMHW"}. Omitted parameters use sensible engineering defaults. Pass deliverables=["xlsx","dxf","pdf"] (any subset) to also receive one-shot download URLs in the same call: Excel BoQ (both tiers, watermarked free) plus the dimensioned DXF (CAD) and PDF drawing sheets (paid tier).

ParametersJSON Schema
NameRequiredDescriptionDefault
paramsYes
standardNoMMHW
output_modeNofull_json
deliverablesNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.1/5.0
Behavior4/5

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

The description discloses behavioral traits such as free tier restriction, anonymous caller acceptance, and use of sensible defaults. While annotations already indicate readOnlyHint=true, the description adds context about tiers and deliverables. It does not contradict 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?

The description is relatively long but well-structured with front-loaded tier information and an example call. Almost every sentence adds value, but it could be slightly more concise by grouping standard-related info. Still, it earns a 4 for clarity.

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

Completeness4/5

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

Given the tool's complexity (many parameters, nested objects, output schema exists), the description covers essential aspects: tier limitations, an example call, deliverables, and component description. It does not need to explain return values due to output schema. It is nearly complete for an agent to invoke correctly, though more parameter details would help.

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

Parameters3/5

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

Schema description coverage is 0%, so the description carries the burden. It adds meaning by explaining the composite nature of the gully and providing example parameters with ranges (e.g., pot_internal_diameter_mm 300–750). However, it does not describe all 24 parameters individually, leaving many undocumented. Baseline 3 is appropriate as it partially compensates.

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?

The name and title clearly indicate a tool for computing a gully with connection BoQ. The description explains it is a composite drainage inlet with specific components (gully pot, grating, kerb outlet, connection drain), and the mention of four-standard rendering with sub-codes distinguishes it from sibling tools like compute_catchpit or compute_highway_drainage_channel.

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

Usage Guidelines4/5

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

The description explicitly states that the free tier only supports MMHW, and that other standards require a paid tier. It provides an example call and mentions that omitted parameters use defaults. However, it does not explicitly compare this tool to siblings or state when to use it instead of alternatives like compute_catchpit or compute_manhole.

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

compute_hard_material_in_trenchCompute Hard Material in Trench (extra-over) BoQA
Read-only
Inspect

Paid tier only. Calling this without an authenticated CivilQuants account returns TIER_INSUFFICIENT — sign up at https://civilquants.com/pricing or use the free-tier alternative compute_manhole. Linear extra-over measurement of hard material encountered during drainage trench excavation. Discriminates between natural rock (CESMM4 E.6 / NRM2 5.6.1 / MMHW 500.6.1 / SMM7 R12.6.1) and artificial hard material — buried concrete / masonry / obstructions (CESMM4 E.7 / NRM2 5.6.2 / MMHW 500.6.2 / SMM7 R12.6.2). The platform's first dual-quantity WorkItem: carries both length_m and volume_m3 so CESMM4/NRM2 (m³) and MMHW/SMM7 (m) each render with their correct unit per the standards' rules. Eight variant presets cover both hard-material types × four depth bands. SMM7 R12 deems trench excavation (including hard material) included in the pipe-run rate — the SMM7 handler emits a zero-priceable annotated line for tender transparency (third use of the deemed-included extra-over annotation pattern). Closes the drainage_ancillaries L2 leaf at 4/4 members. Sibling assemblies: connection_to_existing (S32), ditch (S33), pipework_testing (S33). Example params: length_m=10 m (0.5–500), max_depth_m=1.5 m (0.3–10), trench_width_m=0.7 m (0.3–3). Example call: {"params": {"length_m": 10, "max_depth_m": 1.5, "trench_width_m": 0.7}, "standard": "MMHW"}. Omitted parameters use sensible engineering defaults. Pass deliverables=["xlsx","dxf","pdf"] (any subset) to also receive one-shot download URLs in the same call: Excel BoQ (both tiers, watermarked free) plus the dimensioned DXF (CAD) and PDF drawing sheets (paid tier).

ParametersJSON Schema
NameRequiredDescriptionDefault
paramsYesParameters for a single hard-material extra-over scenario. Geometry interpretation: - `length_m` is the chainage extent of the hard-material zone (i.e. how many metres of pipe-run encounter hard material). This is the MMHW/SMM7 quantity directly. - `trench_width_m` is the trench plan width at the level of the hard material — used (with height_of_hard_material_m and length_m) to compute the volumetric quantity used by CESMM4/NRM2. - `height_of_hard_material_m` is the vertical extent of hard material within the trench section — the bottom of the trench wraps the pipe envelope, so the hard-material height is typically less than the full trench depth. This is the QS's judgment, informed by site investigation. - `max_depth_m` is the depth (from finished ground level) to the bottom of the hard-material zone — drives the depth banding in all four handlers. - `pipe_diameter_mm` is descriptive only — propagated to the WorkItem for cross-referencing the carrier pipe. Volume = length_m × trench_width_m × height_of_hard_material_m.
standardNoMMHW
output_modeNofull_json
deliverablesNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A5/5.0
Behavior5/5

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

Discloses paid tier enforcement, authentication requirement, and the dual-quantity behavior across four standards. Does not contradict annotations (readOnlyHint is appropriate for a computation tool).

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

Conciseness5/5

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

Front-loaded with tier info and alternative, then logically structured: behavior, standards, parameters, example. Every sentence adds value; no redundancy.

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?

Covers tier, standards, parameter semantics, example call, deliverables, and sibling context. Thoroughly equips an agent to select and invoke the tool correctly.

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

Parameters5/5

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

Despite low schema coverage (25%), the description provides extensive parameter details: ranges, defaults, engineering rationale, geometry interpretation, and examples. Fully compensates for schema gaps.

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?

The description clearly states it computes extra-over measurement of hard material in trench excavation, specifies the dual-quantity nature (length and volume), and distinguishes from the free-tier alternative compute_manhole.

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?

Explicitly states paid tier requirement and provides free-tier alternative compute_manhole. Also notes SMM7's deemed-included behavior, guiding appropriate usage.

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

compute_headwallCompute Reinforced Concrete Outfall Headwall BoQA
Read-only
Inspect

Free tier. Renders the MMHW standard only — CESMM4, NRM2 and SMM7 require a paid tier. Anonymous callers welcome. Composite RC outfall headwall: back wall pierced by the outfall pipe, splayed wing walls flaring downstream, apron slab, and rock-armour scour protection. In-situ or precast construction; BS 8666:2020 bar schedule composed across back wall, apron and wing walls. Four-standard rendering across CESMM4 / NRM2 / MMHW / SMM7. Example params: pipe_internal_diameter_mm=300 mm (100–1800), pipe_wall_thickness_mm=50 mm (15–120), invert_below_apron_m=0 m (0–1.5). Example call: {"params": {"pipe_internal_diameter_mm": 300, "pipe_wall_thickness_mm": 50, "invert_below_apron_m": 0}, "standard": "MMHW"}. Omitted parameters use sensible engineering defaults. Pass deliverables=["xlsx","dxf","pdf"] (any subset) to also receive one-shot download URLs in the same call: Excel BoQ (both tiers, watermarked free) plus the dimensioned DXF (CAD) and PDF drawing sheets (paid tier).

ParametersJSON Schema
NameRequiredDescriptionDefault
paramsYes
standardNoMMHW
output_modeNofull_json
deliverablesNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4/5.0
Behavior4/5

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

Beyond the readOnlyHint annotation (which indicates no state modification), the description discloses pricing tiers, output modes (summary, boq, etc.), deliverables (xlsx, dxf, pdf), and watermarks for free tier. This adds significant behavioral context.

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

Conciseness4/5

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

The description is packed with useful information but is somewhat long and dense. Front-loading key points (free tier, standard restriction) is effective, though some technical details could be organized more clearly.

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

Completeness3/5

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

Given the complex nested input schema (4 top-level params, many sub-params) and 0% schema description coverage, the description provides essential context (standards, outputs, example) but lacks detailed parameter explanations. Output schema exists but is not shown, so return values remain partially unclear.

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

Parameters3/5

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

The schema has 0% description coverage, but the description compensates with an example for three key parameters (pipe_internal_diameter_mm, pipe_wall_thickness_mm, invert_below_apron_m) and notes that omitted parameters use defaults. However, many parameters (e.g., cover_mm, concrete_grade) are not explained, leaving gaps.

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?

The description explicitly states it computes a reinforced concrete outfall headwall BoQ, detailing components (back wall, wing walls, apron, scour protection) and standards (CESMM4, NRM2, SMM7, MMHW). This clearly distinguishes it from sibling tools like compute_headwall_attenuation_outlet and compute_headwall_precast.

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

Usage Guidelines4/5

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

The description provides clear guidance: free tier for MMHW, paid for others; example params and full call; defaults for omitted parameters. It does not explicitly state when not to use this tool versus alternatives, but the context of headwall type is implicit.

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

compute_headwall_attenuation_outletCompute Headwall — Attenuation Outlet BoQA
Read-only
Inspect

Paid tier only. Calling this without an authenticated CivilQuants account returns TIER_INSUFFICIENT — sign up at https://civilquants.com/pricing or use the free-tier alternative compute_headwall. Controlled attenuation outlet: precast concrete headwall plus outlet-control ironmongery (orifice plate, optional flap valve, weir overflow, penstock) and downstream scour protection. 2nd use of the bundle-with-shared-envelope pattern (template: combined_services_trench S14). Composes headwall_precast for the structural unit and bedding; emits ironmongery items as CONTRACTOR_INSTALL_PC_SUPPLY by default (3rd commercially significant PC-supply emitter after utility_chamber and utility_kiosk_base). Scour protection extended to three variants: rock armour, gabion mattress, concrete apron. Example params: orifice_diameter_mm=150 mm (20–600), orifice_target_discharge_ls=5 l/s (0.1–200), flap_valve_size_mm=0 mm (0–1200). Example call: {"params": {"orifice_diameter_mm": 150, "orifice_target_discharge_ls": 5, "flap_valve_size_mm": 0}, "standard": "MMHW"}. Omitted parameters use sensible engineering defaults. Pass deliverables=["xlsx","dxf","pdf"] (any subset) to also receive one-shot download URLs in the same call: Excel BoQ (both tiers, watermarked free) plus the dimensioned DXF (CAD) and PDF drawing sheets (paid tier).

ParametersJSON Schema
NameRequiredDescriptionDefault
paramsYesParameter form for an attenuation outlet headwall. Composes a precast headwall (size, bedding) with one always-present orifice plate and up to three optional outlet-control ironmongery items (flap valve, weir overflow, penstock), plus a scour protection variant.
standardNoMMHW
output_modeNofull_json
deliverablesNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.1/5.0
Behavior4/5

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

The description reveals that the tool requires authentication and is a paid service, returning a TIER_INSUFFICIENT error otherwise. It mentions the default supply route (CONTRACTOR_INSTALL_PC_SUPPLY) and the ability to request deliverables like xlsx, dxf, pdf. While the annotations indicate readOnlyHint=true, the description does not contradict it and adds context about billing and output generation. It lacks explicit mention of side effects or state changes, but overall provides good behavioral insight.

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

Conciseness3/5

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

The description is relatively long and contains domain-specific jargon (e.g., 'bundle-with-shared-envelope pattern') that may not be helpful for an AI agent. While it is front-loaded with the critical paid-tier warning, the overall structure could be more concise by removing extraneous details. The length is justified for the complexity, but it could be trimmed.

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

Completeness3/5

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

The description covers key aspects like input parameters, example call, output modes, and deliverable options. However, it lacks a formal output schema description; the agent must infer return values from the text. Given the tool's complexity (nested params, many options), the description leaves some gaps (e.g., exact structure of 'full_json' output). It is adequate but not fully complete.

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

Parameters3/5

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

With only 25% schema description coverage, the description partially compensates by explaining the high-level parameter categories (orifice, flap valve, weir, penstock, scour protection) and providing example parameter values and an example call. However, it does not detail each parameter's meaning or constraints beyond a few examples, so agents must rely heavily on the schema for full parameter semantics.

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?

The description uses a specific verb ('compute') and clearly identifies the resource ('Headwall — Attenuation Outlet BoQ'). It distinguishes from sibling tool 'compute_headwall' by noting it is the paid-tier alternative. The purpose is unambiguous: it computes a bill of quantities for a controlled attenuation outlet headwall with ironmongery and scour protection.

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?

The description explicitly states it is paid-tier only and directs users to the free-tier alternative 'compute_headwall' for unpaid access. It provides a URL for pricing and mentions authentication requirements. It also gives example parameters and an example call, helping the agent understand when and how to use the tool.

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

compute_headwall_precastCompute Precast Concrete Outfall Headwall BoQA
Read-only
Inspect

Paid tier only. Calling this without an authenticated CivilQuants account returns TIER_INSUFFICIENT — sign up at https://civilquants.com/pricing or use the free-tier alternative compute_headwall. Precast concrete outfall headwall, supplied as a whole unit from a UK manufacturer (Marshalls CPM, FP McCann, Stanton Bonna or equivalent). Catalogue-driven sizing from PHW_300 (300mm pipe ID) to PHW_1500 (1500mm). Includes excavation, concrete or granular bedding, and optional rock-armour scour protection. Routes precast unit through CESMM4 Class H, NRM2 33.9.1, MMHW 500.8.1 (SHW Cl. 511), and SMM7 R12.3.7 via headwall_type=precast attribute discrimination. Example params: bedding_thickness_mm=150 mm (75–300), bedding_overhang_m=0.15 m (0.075–0.3), working_space_each_side_m=0.45 m (0.3–1.5). Example call: {"params": {"bedding_thickness_mm": 150, "bedding_overhang_m": 0.15, "working_space_each_side_m": 0.45}, "standard": "MMHW"}. Omitted parameters use sensible engineering defaults. Pass deliverables=["xlsx","dxf","pdf"] (any subset) to also receive one-shot download URLs in the same call: Excel BoQ (both tiers, watermarked free) plus the dimensioned DXF (CAD) and PDF drawing sheets (paid tier).

ParametersJSON Schema
NameRequiredDescriptionDefault
paramsYesParameter form for a precast headwall. Catalogue-driven: pick a `size` and the unit's nominal physical dimensions are read from `_CATALOGUE`. Override individual physical fields if a specific manufacturer differs.
standardNoMMHW
output_modeNofull_json
deliverablesNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.9/5.0
Behavior1/5

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

Annotations declare readOnlyHint=true, suggesting read-only behavior, but the description indicates a paid operation that creates deliverables (Excel, DXF, PDF) and returns errors without authentication. This is a clear contradiction, and the description adds context about tier requirements but conflicts with 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?

The description is long but front-loads critical tier and availability info. Every sentence adds value, though some parameter details could be streamlined. Generally well-structured.

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

Completeness4/5

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

Given the tool's complexity (many parameters, nested objects, output schema exists), the description covers tier constraints, standards, example usage, and catalogue-driven sizing. It is fairly complete for the domain.

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 only 25%, but the description adds significant meaning: explains size enum values, bedding types, example parameter ranges and defaults, and references a catalogue. This compensates for low schema coverage.

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?

The description clearly states the tool computes a BoQ for precast concrete outfall headwalls, distinguishes from the free-tier sibling 'compute_headwall', and specifies standards and sizing ranges. This is a specific verb+resource with sibling differentiation.

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?

Explicitly states 'Paid tier only', provides alternative 'compute_headwall' for free tier, and describes when to use UK precast headwall. Includes example calls and omitted parameter defaults.

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

compute_highway_drainage_channelCompute Highway Drainage Channel BoQA
Read-only
Inspect

Paid tier only. Calling this without an authenticated CivilQuants account returns TIER_INSUFFICIENT — sign up at https://civilquants.com/pricing or use the free-tier alternative compute_end_area_earthworks. Highway / surface-water drainage channel installation per BS EN 1433 + SHW Cl. 511-514 + HD 33/16. Discriminates between five UK channel product classifications via the channel_type enum (linear_polymer_concrete — ACO-pattern; linear_concrete — Charcon-pattern precast; slot_drain — narrow-slot recessed; combined_kerb_drainage — Beany/Safeticurb integrated unit per SHW Cl. 514; steel_grated_channel — heavy-duty stainless/galvanised). Plus parallel discriminators on two further WorkCategory entries: outfall_type on CHANNEL_OUTFALL (end / branch / side), silt_box_type on CHANNEL_SILT_BOX (standard / heavy-duty / deep-sump). The MMHW Series 500 _highway_drainage_channel handler is the platform's FOURTH 2D-banded handler — code 500.8.{t}.{d} bands by channel_type (5 bands) AND depth_class (4 bands). 5×4 = 20-cell grid. SMM7 routes to R12 (Drainage below ground) — SECOND highway L1 family outside Section Q after S39 lighting → V41. Example params: channel_depth_mm=100 mm (50–1500), channel_length_m=50 m (1–500), outfall_count=1 nr (0–20). Example call: {"params": {"channel_depth_mm": 100, "channel_length_m": 50, "outfall_count": 1}, "standard": "MMHW"}. Omitted parameters use sensible engineering defaults. Pass deliverables=["xlsx","dxf","pdf"] (any subset) to also receive one-shot download URLs in the same call: Excel BoQ (both tiers, watermarked free) plus the dimensioned DXF (CAD) and PDF drawing sheets (paid tier).

ParametersJSON Schema
NameRequiredDescriptionDefault
paramsYesInputs for the highway_drainage_channel assembly. Required: channel_type — ChannelType enum (or string equivalent) depth_class — DepthClass enum (or string) channel_depth_mm — actual channel depth in mm channel_length_m — channel run length in metres Optional: outfall_type — OutfallType enum (or string); defaults to END_OUTFALL when outfall_count > 0 outfall_count — number of primary outfalls (default 1) branch_outfall_count — number of additional branch outfalls (default 0) silt_box_type — SiltBoxType enum (or string); required when silt_box_count > 0 silt_box_count — number of silt boxes (default 0)
standardNoMMHW
output_modeNofull_json
deliverablesNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.1/5.0
Behavior4/5

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

Annotations only provide readOnlyHint=true. The description adds significant behavioral context: authentication requirement, specific error message (TIER_INSUFFICIENT), discrimination of channel types, defaults for omitted parameters, and generation of deliverables with download URLs. It does not contradict annotations and provides value beyond the minimal annotations.

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

Conciseness2/5

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

The description is verbose, containing multiple paragraphs with technical details (e.g., 'second highway L1 family outside Section Q after S39 lighting → V41') that are not essential for agent understanding. It could be more concise and better structured, though it front-loads important usage constraints.

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

Completeness4/5

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

Given the complexity (many parameters, nested object, output schema exists), the description covers authentication, alternative, standards, output formats, defaults, and an example call. It omits explicit listing of required parameters beyond the example, but the example suffices. Output schema information is not needed as it exists separately.

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

Parameters3/5

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

The input schema already provides detailed descriptions for most sub-parameters (depth_class, channel_type, outfall_type, silt_box_type). The description adds context about the 5x4 grid and example parameters but does not significantly enhance understanding of individual parameters beyond the schema. Top-level parameters like standard and output_mode lack descriptions, but the description mentions deliverables loosely.

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?

The description clearly states the tool computes a Bill of Quantities for highway drainage channel installation per UK standards, specifying verb 'compute' and resource 'Highway Drainage Channel BoQ'. It distinguishes from the sibling tool 'compute_end_area_earthworks' which is mentioned as a free-tier alternative.

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?

The description explicitly states when to use this tool vs the alternative: 'Paid tier only...use the free-tier alternative compute_end_area_earthworks'. It also implies use for highway drainage channel calculations, not for other drainage structures.

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

compute_kerb_runCompute Precast Concrete Kerb Run BoQA
Read-only
Inspect

Paid tier only. Calling this without an authenticated CivilQuants account returns TIER_INSUFFICIENT — sign up at https://civilquants.com/pricing or use the free-tier alternative compute_cantilever_wall. Linear precast concrete kerb run on concrete bed and haunch over Type 1 (Class 1A) granular sub-base. Emits excavation, sub-base (v8 SHW-class-aware), concrete bed, kerb units to BS EN 1340 / SHW Cl. 1101, concrete haunch to back face, optional channel block, and disposal. Supports HB2/HB1/SP/BN/EF/ER kerb profiles and CS1/CS2/dish channels. All four standards render with type designators (CESMM4 R.7, NRM2 34.10, MMHW 1100, SMM7 Q10). Example params: kerb_length=25 m (1–1000), bed_thickness_mm=150 mm (75–300), bed_extra_each_side_mm=100 mm (0–300). Example call: {"params": {"kerb_length": 25, "bed_thickness_mm": 150, "bed_extra_each_side_mm": 100}, "standard": "MMHW"}. Omitted parameters use sensible engineering defaults. Pass deliverables=["xlsx","dxf","pdf"] (any subset) to also receive one-shot download URLs in the same call: Excel BoQ (both tiers, watermarked free) plus the dimensioned DXF (CAD) and PDF drawing sheets (paid tier).

ParametersJSON Schema
NameRequiredDescriptionDefault
paramsYesInput parameters for a kerb run assembly. Geometric defaults match a standard UK HB2 road kerb on 150mm concrete bed over 150mm Type 1 sub-base, with triangular haunch rising to half the kerb height on the back face.
standardNoMMHW
output_modeNofull_json
deliverablesNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.4/5.0
Behavior4/5

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

Annotations already indicate readOnlyHint=true, so the description rightfully focuses on other behaviors: tier restriction (paid) and authentication requirements, sensible engineering defaults for omitted parameters, and optional file generation (xlsx, dxf, pdf). No contradiction with 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?

The description is somewhat lengthy but well-structured: tier/authentication first, then assembly composition, standards, examples, and optional deliverables. Every sentence serves a purpose (e.g., defaults, profiles, call example). Slightly more verbose than necessary but packed with valuable detail.

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?

Given the tool's complexity (many parameters, nested object, multiple standards, tier restrictions, file generation), the description covers all essential aspects: authentication, assembly details, supported profiles/channels, example call with ranges, and deliverables. The output schema exists (not shown here) so return values need not be described. Very complete.

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 low (25%), but the description compensates with detailed examples (kerb_length=25 m, range 1–1000; bed_thickness_mm=150 mm, range 75–300; bed_extra_each_side_mm=100 mm, range 0–300) and explains kerb profile types (HB2/HB1/SP/BN/EF/ER) and channel options. It adds meaning beyond the schema, especially for the nested params object.

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?

The description states it computes a precast concrete kerb run BoQ, listing assembly components (excavation, sub-base, concrete bed, kerb units, etc.) and supported standards (CESMM4, NRM2, MMHW, SMM7). It explicitly distinguishes from sibling tools by mentioning a free-tier alternative (compute_cantilever_wall) and specifying the linear kerb run context.

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

Usage Guidelines4/5

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

Explicitly states 'Paid tier only' and directs to free alternative for non-authenticated users. It describes the typical use case (linear precast concrete kerb on concrete bed and haunch over Type 1 sub-base). While it doesn't list explicit exclusions, the purpose is so specific that usage context is clear.

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

compute_lighting_columnCompute Lighting Column BoQA
Read-only
Inspect

Paid tier only. Calling this without an authenticated CivilQuants account returns TIER_INSUFFICIENT — sign up at https://civilquants.com/pricing or use the free-tier alternative compute_end_area_earthworks. Highway / street lighting column installation per BS EN 40 + BS 5489-1:2020 + TR 22. Discriminates between four UK column material classifications via the column_type enum (steel_galvanised, aluminium, composite_grp, decorative_cast_iron). Plus parallel discriminators on three further WorkCategory entries: foundation_type on COLUMN_FOUNDATION, luminaire_type on LUMINAIRE, bracket_type on COLUMN_BRACKET. The MMHW Series 1300 _lighting_column handler is the platform's THIRD 2D-banded handler — code 1300.4.1.{h}.{c} bands by column_height_class (6 bands per TR 22) AND column_loading_class (4 bands per BS EN 40-3). 6×4 = 24-cell grid (the LARGEST banded grid in the platform). Example params: mounting_height_m=6 m (4–16), luminaire_wattage_W=60 W (10–1000), bracket_count=0 Nr (0–4). Example call: {"params": {"mounting_height_m": 6, "luminaire_wattage_W": 60, "bracket_count": 0}, "standard": "MMHW"}. Omitted parameters use sensible engineering defaults. Pass deliverables=["xlsx","dxf","pdf"] (any subset) to also receive one-shot download URLs in the same call: Excel BoQ (both tiers, watermarked free) plus the dimensioned DXF (CAD) and PDF drawing sheets (paid tier).

ParametersJSON Schema
NameRequiredDescriptionDefault
paramsYesInputs for the lighting_column assembly. Defaults anchored to URBAN_6M_LED — UK urban distributor: 6 m steel galvanised column on precast socket, BS EN 40-3 Class B, LED M-class luminaire (~60 W typical). Required-field defaults added per G.6.7.24 precedent — non-breaking API enrichment opens the slug to schema- driven workspace defaults.
standardNoMMHW
output_modeNofull_json
deliverablesNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.5/5.0
Behavior4/5

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

Discloses authentication requirement and tier restriction. Describes the large 24-cell banded grid and the return of download URLs for deliverables. Annotations already declare readOnlyHint=true, so no contradiction; the description adds useful context about the computation's scope.

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

Conciseness3/5

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

The description is comprehensive but quite verbose, with a lot of internal detail (e.g., banded grid, handler code). The first sentence captures purpose, but overall could be more concise to reduce processing overhead for an AI agent.

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?

Given the complexity of parameters, nested objects, and multiple standards, the description covers purpose, usage, parameter defaults, examples, and output formats. An output schema exists, so return values are handled externally.

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 25%, but the description elaborates on key enums (column_type, foundation_type, etc.) and explains defaults. Adds meaning beyond the schema for the major parameters, though not exhaustive for all 11 sub-parameters.

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?

The description clearly states the tool computes a BoQ for highway/street lighting column installation per BS EN 40 + BS 5489-1:2020 + TR 22. It names the output (Excel, DXF, PDF) and distinguishes from the free-tier sibling compute_end_area_earthworks.

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?

Explicitly states 'Paid tier only' and provides the free-tier alternative. Includes example parameter values and a full example call, plus explains default behavior and optional deliverables.

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

compute_manholeCompute Precast Concrete Circular Manhole BoQA
Read-only
Inspect

Free tier. Renders the MMHW standard only — CESMM4, NRM2 and SMM7 require a paid tier. Anonymous callers welcome. Composite assembly: precast concrete circular manhole with base slab, chamber rings (optional reducing slab + shaft), cover slab, frame & cover (BS EN 124 loading classes), step irons or ladder, in-situ benching with pre-formed channel, granular surround, geotextile separator, and excavation. Supports both open-battered and sheet-piled excavations. Example params: internal_diameter=1.5 m (1–3), wall_thickness=0.15 m (0.1–0.25), invert_depth=3.5 m (0.5–12). Example call: {"params": {"internal_diameter": 1.5, "wall_thickness": 0.15, "invert_depth": 3.5}, "standard": "MMHW"}. Omitted parameters use sensible engineering defaults. Pass deliverables=["xlsx","dxf","pdf"] (any subset) to also receive one-shot download URLs in the same call: Excel BoQ (both tiers, watermarked free) plus the dimensioned DXF (CAD) and PDF drawing sheets (paid tier).

ParametersJSON Schema
NameRequiredDescriptionDefault
paramsYes
standardNoMMHW
output_modeNofull_json
deliverablesNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.1/5.0
Behavior4/5

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

Annotations indicate readOnlyHint=true, and the description confirms a read operation (computes BoQ, renders standards). It adds behavioral details: tier restrictions, deliverables (xlsx, dxf, pdf), watermarking, and composite assembly components. No contradictions. However, it does not mention rate limits or authentication beyond 'anonymous callers welcome'.

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

Conciseness4/5

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

The description is well-structured, front-loading key information about tiers, standard restrictions, and assembly components. While it is somewhat long, every sentence adds value. It could be slightly more concise, but it is not verbose.

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

Completeness4/5

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

Given the tool's complexity (30+ parameters, nested object, output schema exists), the description covers essential aspects: input examples, defaults, deliverables, and output modes. It does not explain the return structure, but the output schema fills that gap. The description is sufficient for an agent to make a correct call.

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

Parameters3/5

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

Schema description coverage is 0%, so the description must compensate. It provides example parameters with typical values and ranges (e.g., internal_diameter=1.5, wall_thickness=0.15, invert_depth=3.5) and mentions that omitted parameters use sensible defaults. However, it does not describe all parameters, leaving many undocumented. This partial compensation earns a 3.

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?

The description clearly states the tool computes a Bill of Quantities (BoQ) for precast concrete circular manholes. It specifies the composite assembly and distinguishes itself from similar tools by indicating the standard coverage (MMHW free, others paid). The verb 'compute' and resource 'manhole' are specific.

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

Usage Guidelines4/5

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

The description provides explicit context on when to use: free tier for MMHW, paid tier for others. It welcomes anonymous callers and mentions sensible defaults. However, it does not explicitly compare with sibling tools like compute_manhole_precast or provide when-not-to-use scenarios.

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

compute_manhole_precastCompute Precast Concrete Monolithic Manhole BoQA
Read-only
Inspect

Paid tier only. Calling this without an authenticated CivilQuants account returns TIER_INSUFFICIENT — sign up at https://civilquants.com/pricing or use the free-tier alternative compute_manhole. Fully monolithic precast concrete circular manhole comprising factory-cast base + bottom ring + integral benching + pre-formed channel as a single delivered unit (BS 5911-3), with stacked precast chamber rings, optional reducing slab and access shaft, precast cover slab, ductile-iron frame and cover (BS EN 124 loading classes), step irons cast into rings, granular or concrete bedding, granular surround, geotextile separator, and excavation. Catalogue-driven sizing from PMC_1200 (1200mm ID) to PMC_2400 (2400mm ID). Routes via manhole_type=precast_monolithic attribute discrimination through CESMM4 Class K.1.2.x, NRM2 33.7.5, MMHW 500.5.5-.8 (SHW Cl. 507), and SMM7 R12.3.1.x. Example params: invert_depth=3.5 m (0.5–12), bedding_thickness_mm=150 mm (100–300), bedding_overhang_m=0.15 m (0.1–0.3). Example call: {"params": {"invert_depth": 3.5, "bedding_thickness_mm": 150, "bedding_overhang_m": 0.15}, "standard": "MMHW"}. Omitted parameters use sensible engineering defaults. Pass deliverables=["xlsx","dxf","pdf"] (any subset) to also receive one-shot download URLs in the same call: Excel BoQ (both tiers, watermarked free) plus the dimensioned DXF (CAD) and PDF drawing sheets (paid tier).

ParametersJSON Schema
NameRequiredDescriptionDefault
paramsYesParameter form for a fully monolithic precast concrete manhole. Catalogue-driven: pick a ``size`` and the chamber's nominal dimensions, masses, and ring heights are read from ``_CATALOGUE``. Override individual fields if a specific manufacturer differs.
standardNoMMHW
output_modeNofull_json
deliverablesNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.6/5.0
Behavior5/5

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

Discloses authentication requirements (paid tier), default parameter behavior, and one-shot delivery of downloadable files (Excel, DXF, PDF). No contradiction with readOnlyHint annotation, as the tool is a stateless computation generating results, not mutating external state.

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

Conciseness3/5

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

The description is verbose, covering paid tier warning, construction details, standards, example parameters, and deliverables in a single block. While informative, it could be more concise (e.g., separating authentication guidance from parameter details).

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

Completeness4/5

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

Given the tool's complexity (multiple standards, nested params, deliverables), the description provides adequate context: purpose, usage caveats, example call, and output options. With an output schema present (as per context signals), it does not need to detail return values.

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?

With only 25% schema coverage, the description compensates by explaining catalogue-driven sizing (PMC_1200–PMC_2400), giving example parameters with ranges, and noting that omitted parameters use sensible defaults. However, not all 20+ parameters are individually clarified, leaving some ambiguity.

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?

Description explicitly defines the tool as computing a BoQ for a precast monolithic manhole, details the construction type (BS 5911-3), and contrasts with sibling 'compute_manhole' for free-tier alternative. The verb 'compute' and resource 'manhole precast' are specific and differentiated.

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?

Clearly states 'Paid tier only' and directs users to the free alternative 'compute_manhole' if they lack an authenticated CivilQuants account. Provides example parameters and standards (e.g., MMHW), giving agents clear context for invocation.

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

compute_multi_section_assemblyCompute multi-section assembly BoQA
Read-only
Inspect

Compute one sectioned/linear assembly across multiple sections in a single call and return a combined Bill of Quantities plus per-section results. Each section sets its own run_length and geometry; shared_params apply to all sections. Use for a wall, kerb run, drain or barrier that changes along its length. assembly_slug must be a sectioned assembly (e.g. cantilever_wall, kerb_run, edge_drain); non-linear items return INVALID_INPUT. Free tier: MMHW only, each section consumes one daily slot. Example: {"assembly_slug":"cantilever_wall","standard":"MMHW","sections":[{"label":"Bay 1","run_length":20,"stem_height":1.5},{"label":"Bay 2","run_length":15,"stem_height":2.4}]}.

ParametersJSON Schema
NameRequiredDescriptionDefault
sectionsYes
standardNoMMHW
deliverablesNo
aggregate_boqNo
assembly_slugYes
shared_paramsNo
include_backupNo
include_section_boqNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.6/5.0
Behavior5/5

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

Annotations provide readOnlyHint, and the description adds important behavioral context: each section consumes one daily slot, and non-linear items return INVALID_INPUT. No contradiction with annotations.

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

Conciseness5/5

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

The description is a single paragraph but well-structured: starts with core function, lists use cases, constraints, free tier info, and an example. Every sentence adds value, no fluff.

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

Completeness4/5

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

Given the complexity (8 parameters, nested sections) and the presence of an output schema, the description covers the essential concept, constraints, and provides an example. Some optional parameters are not detailed, but core usage is fully explained.

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?

With 0% schema coverage, the description compensates by explaining critical parameters: assembly_slug must be a sectioned assembly, sections array with labels and run lengths, shared_params applied to all. An example illustrates usage. However, some parameters (deliverables, aggregate_boq, include_backup, include_section_boq) are not explicitly explained.

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?

The description clearly states the verb ('compute'), the resource ('sectioned/linear assembly across multiple sections'), and the output ('combined Bill of Quantities plus per-section results'). It distinguishes from siblings by specifying that it is for multi-section assemblies like walls and drains, and notes that non-linear items return INVALID_INPUT.

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

Usage Guidelines4/5

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

It explicitly says to use for walls, kerb runs, drains, or barriers that change length, and implies not for single-section assemblies. It also mentions free tier limitation. However, no explicit alternatives or when-not-to-use are stated, though the context of single-section compute tools is clear from sibling names.

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

compute_pad_foundationCompute Concrete Pad Foundation BoQA
Read-only
Inspect

Paid tier only. Calling this without an authenticated CivilQuants account returns TIER_INSUFFICIENT — sign up at https://civilquants.com/pricing or use the free-tier alternative compute_cantilever_wall. Single isolated reinforced concrete pad foundation with optional pedestal. Demonstrates BS 8666:2020 reinforcement scheduling integrated with the four-standard rendering invariant. Example params: length=2 m (0.5–10), width=2 m (0.5–10), thickness=0.45 m (0.15–2). Example call: {"params": {"length": 2, "width": 2, "thickness": 0.45}, "standard": "MMHW"}. Omitted parameters use sensible engineering defaults. Pass deliverables=["xlsx","dxf","pdf"] (any subset) to also receive one-shot download URLs in the same call: Excel BoQ (both tiers, watermarked free) plus the dimensioned DXF (CAD) and PDF drawing sheets (paid tier).

ParametersJSON Schema
NameRequiredDescriptionDefault
paramsYes
standardNoMMHW
output_modeNofull_json
deliverablesNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4/5.0
Behavior4/5

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

The description transparently discloses authentication requirements and returns TIER_INSUFFICIENT error, aligning with readOnlyHint annotation (no state change). It mentions behavior for deliverables parameter (one-shot download URLs). No contradictions with 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?

The description is well-structured: starts with critical tier info, then purpose, example parameters, and deliverables. It is slightly lengthy but every sentence adds value. Front-loads key information.

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

Completeness3/5

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

Given the high number of parameters and options (deliverables, output modes), the description provides essential guidance but lacks explanation of less common parameters and output schema. However, the output schema exists separately. Overall adequate for basic usage.

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

Parameters3/5

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

Schema has 0% description coverage, but the description compensates by giving example parameters with ranges and explaining the deliverables parameter. However, many parameters (e.g., top_mat, cover_mm, working_space) are not explained beyond schema defaults. The description adds value but does not cover all parameters.

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?

The description clearly states it computes a BoQ for a single isolated reinforced concrete pad foundation with optional pedestal, and mentions integration with reinforcement scheduling. The title 'Compute Concrete Pad Foundation BoQ' matches. It distinguishes from sibling tool compute_cantilever_wall as a free-tier alternative.

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

Usage Guidelines4/5

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

The description explicitly says 'Paid tier only' and mentions the error for unauthenticated users, providing a free-tier alternative. It includes example parameters and a call example, and explains the deliverables parameter. It gives clear context but does not explicitly list when to not use this tool.

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

compute_parapetCompute Parapet (Bridge / Structural Deck) BoQA
Read-only
Inspect

Paid tier only. Calling this without an authenticated CivilQuants account returns TIER_INSUFFICIENT — sign up at https://civilquants.com/pricing or use the free-tier alternative compute_end_area_earthworks. Bridge / structural-deck parapet installation per BS 6779-1 + BS EN 1317-2 + SHW Cl. 408. Discriminates between four UK parapet system classifications via the parapet_type enum (pedestrian_only per BS 7818; vehicle_p1_p2 — low-containment BS EN 1317-2; vehicle_h1_h2_h3 — higher-containment; combined_pedestrian_vehicle — composite design). Plus parallel discriminators on two further WorkCategory entries: same parapet_type on PARAPET_POST, transition_type on PARAPET_TRANSITION (to_vrs / to_abutment / expansion_joint). The MMHW Series 400 _parapet handler is the platform's SEVENTH 1D-banded handler — code 400.4.1.{c} bands by containment_level (4 bands per BS EN 1317-2). 1D choice is disciplined — second principled rejection of forced 2D banding (after S38 road_marking). LAUNCH-COMPLETING 45TH ASSEMBLY — opens highway_bridge_edge L2 leaf, closing the highway suite at 5/5 populated leaves and the platform at 45/45 launch target. SMM7 routes BACK to Q40 (sibling slot to VRS at Q40.5) — preserves UK trade reality. Example params: parapet_height_mm=1100 mm (900–1800), parapet_length_m=25 m (1–2000), post_count=0 Nr (0–200). Example call: {"params": {"parapet_height_mm": 1100, "parapet_length_m": 25, "post_count": 0}, "standard": "MMHW"}. Omitted parameters use sensible engineering defaults. Pass deliverables=["xlsx","dxf","pdf"] (any subset) to also receive one-shot download URLs in the same call: Excel BoQ (both tiers, watermarked free) plus the dimensioned DXF (CAD) and PDF drawing sheets (paid tier).

ParametersJSON Schema
NameRequiredDescriptionDefault
paramsYesInputs for the parapet assembly. Required: parapet_type — ParapetType enum (or string equivalent) containment_level — ContainmentLevel enum (or string) parapet_height_mm — nominal parapet height above deck in mm parapet_length_m — parapet run length in metres Optional: post_count — number of enumerated posts (default 0 — posts deemed-included in parapet m-rate). Set > 0 only for contracts requiring specialist per-post pricing. transition_type — TransitionType enum (or string). Required if transition_count > 0. transition_count — number of transition pieces (default 0).
standardNoMMHW
output_modeNofull_json
deliverablesNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.6/5.0
Behavior5/5

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

Annotations only provide readOnlyHint: true. The description adds crucial behavioral information: authentication constraints (paid tier), error code for insufficient tier, defaulting of parameters, and the ability to receive one-shot download URLs for deliverables. No contradiction with annotations.

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

Conciseness2/5

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

The description is overly verbose with extraneous details like 'LAUNCH-COMPLETING 45TH ASSEMBLY', 'SEVENTH 1D-banded handler', and 'second principled rejection of forced 2D banding'. While packed with information, it lacks structure and front-loading for an agent. Could be streamlined to focus on invocation-critical info.

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

Completeness4/5

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

Given complexity (4 parameters, enums, nested objects) and the existence of an output schema, the description covers parameter semantics, usage constraints, and deliverables. However, it misses explicit guidance on when to use this tool vs the many sibling tools beyond the one free-tier alternative, and it includes extraneous project status. Still, it is largely complete.

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

Parameters5/5

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

Schema description coverage is only 25%, but the description provides extensive meaning for all parameters, including detailed explanations of enum values (four parapet_type classifications, nine containment_level values), constraints (height 900-1800 mm, length 1-2000 m), and the role of transition_type and post_count. It compensates fully for low schema coverage.

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?

The description clearly states it computes BoQ for bridge/structural deck parapet installation per UK standards (BS 6779-1, BS EN 1317-2, SHW Cl. 408). It distinguishes from siblings by mentioning the free-tier alternative compute_end_area_earthworks and by being a specific parapet handler. No sibling tool duplicates this purpose.

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?

Explicitly states 'Paid tier only' and that unauthenticated calls return TIER_INSUFFICIENT, with a sign-up URL and a free-tier alternative (compute_end_area_earthworks). It also gives an example call and notes omitted parameters use sensible defaults. Clear when-to-use and when-not-to.

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

compute_permeable_pavementCompute Permeable Pavement (CIRIA C753 SuDS) BoQA
Read-only
Inspect

Paid tier only. Calling this without an authenticated CivilQuants account returns TIER_INSUFFICIENT — sign up at https://civilquants.com/pricing or use the free-tier alternative compute_end_area_earthworks. Permeable pavement build-up per CIRIA C753 — The SuDS Manual Chapter 20. Covers the three principal UK permeable surface types (Permeable Block Paving per BS 7533-13; Porous Asphalt per SHW Cl. 938; Porous no-fines Concrete per CIRIA C753) and the three CIRIA infiltration regimes (System A full infiltration; System B partial / sides-tanked; System C no infiltration / fully tanked). Emits excavation + formation prep + tanking liner (Systems B/C) + geotextile separator + Class 3 open-graded reservoir sub-base + laying course (PBP) + permeable surface + perforated outlet pipe (Systems B/C) + disposal. Routes the reservoir sub-base, the tanking liner, and the permeable surface through three parallel classed-then-legacy discriminators (is_reservoir_sub_base, is_pavement_tanking, pavement_family) across all four standards. SMM7 PBP routes to Q25 (block pavings — different trade) while PA/PC stay at Q22 (asphalt trade) — UK trade-boundary platform principle. First launch-class assembly built entirely on existing WorkCategory vocabulary. Example params: length=12 m (0.5–500), width=5 m (0.5–100), reservoir_thickness_mm=350 mm (150–1000). Example call: {"params": {"length": 12, "width": 5, "reservoir_thickness_mm": 350}, "standard": "MMHW"}. Omitted parameters use sensible engineering defaults. Pass deliverables=["xlsx","dxf","pdf"] (any subset) to also receive one-shot download URLs in the same call: Excel BoQ (both tiers, watermarked free) plus the dimensioned DXF (CAD) and PDF drawing sheets (paid tier).

ParametersJSON Schema
NameRequiredDescriptionDefault
paramsYesInput parameters for a permeable pavement assembly. Geometric defaults match a 12m × 5m residential drive with PBP surface and System A (full infiltration) — the dominant UK small-civils SuDS use case.
standardNoMMHW
output_modeNofull_json
deliverablesNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.5/5.0
Behavior4/5

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

Discloses paid tier, error response (TIER_INSUFFICIENT), deliverables behavior (watermarked for free tier), and UK trade-boundary platform principle. Does not reveal error handling for invalid inputs, but annotations (readOnlyHint=true) are consistent. Minor gap: no mention of performance or rate limits.

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

Conciseness4/5

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

The description is structured with clear sentences covering tier, standards, parameters, and example. It is slightly lengthy but each sentence adds value. Could be more concise, but effectively communicates necessary info without fluff.

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

Completeness4/5

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

Given the tool has an output schema (not shown, but context says true), the description does not need to detail return values. It covers purpose, inputs, tier, and deliverables adequately. Missing: explanation of output_mode and standard options, but that is mitigated by output schema and sibling context.

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?

The description adds meaning beyond the schema by explaining defaults (e.g., length=12m, width=5m, reservoir_thickness_mm=350) and providing an example call. It clarifies the deliverables parameter and the 'params' object structure. Schema descriptions exist for many inner properties, so description complements well.

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?

The description clearly specifies the tool computes permeable pavement BoQ per CIRIA C753, covering three UK surface types and infiltration regimes. It distinguishes itself from siblings like compute_flexible_pavement and compute_rigid_pavement by its specific domain, and even names a free-tier alternative (compute_end_area_earthworks).

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?

Explicitly states paid tier requirement, provides a free alternative, and includes example parameters and a full example call. It also mentions omitted parameters use sensible defaults, guiding usage. No ambiguity about when to use this tool.

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

compute_petrol_oil_interceptorCompute Prefabricated Petrol/Oil Interceptor (Separator) BoQA
Read-only
Inspect

Paid tier only. Calling this without an authenticated CivilQuants account returns TIER_INSUFFICIENT — sign up at https://civilquants.com/pricing or use the free-tier alternative compute_manhole. Prefabricated petrol/oil interceptor (separator) per BS EN 858-1:2002 / BS EN 858-2:2003 and SHW Cl. 519. Catalogue-driven on three axes: Class (1 with coalescer + auto-closure for ≤5 mg/l surface-water discharge, or 2 for ≤100 mg/l foul-sewer discharge), Type (full retention NSF for high-spill-risk forecourts, or bypass NSB for low-spill-risk car parks), and Nominal Size (NS3 to NS100 l/s flow rating — 7 catalogue entries). Composite of the procured interceptor unit (Nr, default supply route CONTRACTOR_INSTALL_PC_SUPPLY for engineer-specified prefab), concrete blinding bedding, granular surround per SHW Cl. 803, geotextile separator, and foundation excavation with optional sheet pile support. Oil storage capacity derived per BS EN 858-2 cl. 4.3.6 (V = NS×10 for full retention, NSB×15 for bypass). Opens drainage_treatment leaf; the canonical pre-treatment for hot-spot catchments draining to soakaway, watercourse, or foul sewer. Routes via CESMM4 K.5.x.n (size-banded), NRM2 33.9.x, MMHW 500.13.x (SHW Cl. 519), SMM7 R12.5.x. Example params: bedding_blinding_thickness_mm=150 mm (100–300), bedding_overhang_m=0.3 m (0.15–0.5), surround_thickness_each_side_m=0.3 m (0.15–0.5). Example call: {"params": {"bedding_blinding_thickness_mm": 150, "bedding_overhang_m": 0.3, "surround_thickness_each_side_m": 0.3}, "standard": "MMHW"}. Omitted parameters use sensible engineering defaults. Pass deliverables=["xlsx","dxf","pdf"] (any subset) to also receive one-shot download URLs in the same call: Excel BoQ (both tiers, watermarked free) plus the dimensioned DXF (CAD) and PDF drawing sheets (paid tier).

ParametersJSON Schema
NameRequiredDescriptionDefault
paramsYesParameter form for a petrol/oil interceptor installation. Catalogue-driven on three axes: size (NS rating, catalogue lookup for dimensions/mass/silt), class (performance — CLASS_1/CLASS_2), and type (full retention vs bypass).
standardNoMMHW
output_modeNofull_json
deliverablesNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4/5.0
Behavior1/5

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

The description describes generating deliverables (Excel, DXF, PDF) and opening a drainage_treatment leaf, implying write-side effects or document creation, which contradicts the readOnlyHint annotation indicating a read-only operation.

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

Conciseness4/5

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

The description is lengthy but front-loaded with critical access info (paid tier) and structured with technical details, examples, and output options. Some redundancy with schema defaults, but overall efficient.

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?

Given the tool's complexity (multiple parameters, standards, output modes, deliverables), the description covers all essential aspects: standards, catalogue selection, engineering assumptions, output options, and example usage. Output schema exists, so return values need not be detailed.

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?

With only 25% schema description coverage, the description compensates well by explaining the three catalogue axes (size, class, type), providing example parameters and an example call, and clarifying engineering defaults.

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?

The description clearly states the tool computes a BoQ for a prefabricated petrol/oil interceptor, specifying standards (BS EN 858, SHW) and differentiating from sibling compute_manhole as a free-tier alternative.

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?

Explicitly states paid-tier requirement, returns TIER_INSUFFICIENT error without authentication, and recommends free-tier alternative compute_manhole. Provides clear context on when to use this tool.

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

compute_pipe_beddingCompute Pipe Bedding and Surround BoQA
Read-only
Inspect

Paid tier only. Calling this without an authenticated CivilQuants account returns TIER_INSUFFICIENT — sign up at https://civilquants.com/pricing or use the free-tier alternative compute_manhole. Linear pipe trench with class-driven bedding and surround. Strategy pattern on (BeddingContext × BeddingClass): Highway (HA 40/01 / MMHW Series 500) vs Building (BS EN 1610 / NRM2 §33), Class N/F/B/S/A/Z. Emits trench excavation, granular bed, surround or concrete cradle/encasement, selected backfill, disposal and pipework. All four standards render with class and clause references. Example params: pipe_internal_diameter_mm=300 mm (100–1800), pipe_wall_thickness_mm=50 mm (10–200), pipe_length=25 m (1–500). Example call: {"params": {"pipe_internal_diameter_mm": 300, "pipe_wall_thickness_mm": 50, "pipe_length": 25}, "standard": "MMHW"}. Omitted parameters use sensible engineering defaults. Pass deliverables=["xlsx","dxf","pdf"] (any subset) to also receive one-shot download URLs in the same call: Excel BoQ (both tiers, watermarked free) plus the dimensioned DXF (CAD) and PDF drawing sheets (paid tier).

ParametersJSON Schema
NameRequiredDescriptionDefault
paramsYes
standardNoMMHW
output_modeNofull_json
deliverablesNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.5/5.0
Behavior4/5

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

Annotations declare readOnlyHint=true. Description adds behavioral context: paid tier, authentication requirement (TIER_INSUFFICIENT), and one-shot download URLs for deliverables. Does not contradict annotations. Lacks explicit mention of side effects beyond computation.

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?

Description is comprehensive but somewhat lengthy. Front-loaded with critical info (paid tier, alternative). Well-structured with logical flow: constraints, strategy, standards, example, deliverables. Could trim redundant phrases but overall efficient for the complexity.

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

Completeness4/5

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

Covers most necessary aspects: purpose, limitations, standards, defaults, example, outputs. Missing detailed return value description but output schema likely provides that. Adequate for a complex tool with many parameters and deliverables.

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 0% (many parameters lack descriptions). Description compensates by explaining the strategy pattern (BeddingContext × BeddingClass), providing example parameter ranges and values, and detailing deliverables. Adds meaning beyond schema enums with usage context.

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?

Clearly states the tool computes pipe bedding and surround BoQ. Differentiates from sibling 'compute_manhole' by specifying it's the paid-tier alternative. Includes specific verb ('compute') and resource ('pipe bedding and surround BoQ').

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?

Explicitly states paid-tier requirement, mentions the free-tier alternative ('compute_manhole'), and describes when to use (linear pipe trench). Provides example parameters and call syntax. Clearly guides the agent on prerequisites and alternatives.

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

compute_pipework_testingCompute Pipework Testing (drainage) BoQA
Read-only
Inspect

Paid tier only. Calling this without an authenticated CivilQuants account returns TIER_INSUFFICIENT — sign up at https://civilquants.com/pricing or use the free-tier alternative compute_manhole. Linear measurement of testing on new drainage pipework — CCTV survey, air pressure test, water pressure test, or mandrel pull-through. Routes via CESMM4 Class I §I.8 (Tests on new pipework), NRM2 Group 33.18 (Testing of drainage) as priceable lines; via MMHW Series 500.7 (per SHW Cl. 507 deemed included in pipe-run rate) and SMM7 R12.7 (R12 coverage rules deemed included) as zero-priceable annotated lines for tender transparency. Introduces the platform's third named maturity pattern: deemed-included extra-over annotation (joining classed-then-legacy and declared-then-banded). Eight variant presets cover all four test methods x two bore scenarios each. Unit: M. Third member of the drainage_ancillaries L2 leaf. 21st use of the discriminator pattern via test_method. Example params: length_tested_m=100 m (1–2000), diameter_mm=225 mm (100–2400). Example call: {"params": {"length_tested_m": 100, "diameter_mm": 225}, "standard": "MMHW"}. Omitted parameters use sensible engineering defaults. Pass deliverables=["xlsx","dxf","pdf"] (any subset) to also receive one-shot download URLs in the same call: Excel BoQ (both tiers, watermarked free) plus the dimensioned DXF (CAD) and PDF drawing sheets (paid tier).

ParametersJSON Schema
NameRequiredDescriptionDefault
paramsYesParameters for a single pipework testing measurement.
standardNoMMHW
output_modeNofull_json
deliverablesNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.6/5.0
Behavior4/5

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

Annotations declare readOnlyHint: true; description adds that it returns deliverables (Excel, DXF, PDF) and can raise TIER_INSUFFICIENT error. Does not contradict annotations and adds useful behavioral context beyond read-only nature.

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?

Front-loaded with critical info (tier restriction, purpose), but the description is verbose. Every sentence adds value, yet could be more streamlined for readability.

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?

Given the complexity (multiple standards, four parameters, nested input, various output modes/deliverables), the description is comprehensive. It explains standards, variants, example calls, error conditions, and output formats. Output schema exists but description provides additional context.

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 25% (only test_method has a detailed description). The tool description compensates by explaining the discriminator pattern, eight variant presets, example params with ranges, and default usage info, adding significant meaning.

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?

The description clearly states the tool's purpose: linear measurement of testing on new drainage pipework (CCTV, air/water pressure, mandrel pull) with specific CESMM4/NRM2/MMHW/SMM7 references. It distinguishes itself as 'third member of the drainage_ancillaries L2 leaf' and '21st use of the discriminator pattern via test_method', setting it apart from siblings.

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?

Explicitly states 'Paid tier only' and directs free-tier users to 'compute_manhole' as an alternative. Provides examples, parameter defaults, and variant presets, making usage conditions clear.

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

compute_reinforced_soil_wallCompute Reinforced Soil Wall (RSW) BoQA
Read-only
Inspect

Paid tier only. Calling this without an authenticated CivilQuants account returns TIER_INSUFFICIENT — sign up at https://civilquants.com/pricing or use the free-tier alternative compute_cantilever_wall. Reinforced soil retaining wall (RSW) using granular fill reinforced with horizontal layers of geogrid or steel tie strips, with one of four facing systems: precast concrete panels (Reinforced Earth™ / VSL Retained Earth style), segmental modular blocks (Allan Block / Keystone), wraparound soft face (vegetated or biodegradable mat), or Terramesh-style steel mesh face (re-using the S29 gabion vocabulary). The SECOND member of the earth_structures L1 leaf (after gabion_wall at S29), the SIXTH member of the wall family, the FIFTH structural system, and the FIRST wall family member with a face-area-primary measurement basis (m² of face + m² × layers of geogrid, both m²; every prior wall body was m³). 17th use of the classed-then-legacy attribute discrimination pattern. Routes via four new WorkCategory entries (RSW_FACING_PANEL, RSW_MODULAR_BLOCK, RSW_WRAPAROUND_FACE, RSW_TIE_STRIP) plus the GEOGRID category (whose handler is gap-filled in CESMM4/NRM2/MMHW this session) plus re-use of GABION_BASKET on the STEEL_MESH_FACE variant. Codes: CESMM4 E.8.4-8 (Class E Earthworks §E.8 stabilisation), NRM2 5.23-27 (Group 5 Excavating and filling), MMHW 600.15-19 (Series 600 Earthworks; SHW Cl. 624 reinforced earth retaining structures), and SMM7 D41.3/D41.4/D41.5/D20.21/D20.14.2 (D41 — Crib walls / gabions / REINFORCED EARTH — the NAMED home, now serving TWO wall families). Eight variant presets exercise all four RSWFacing values (2/2/2/2 split). Example params: wall_height=6 m (0.5–12), wall_length=40 m (5–200), depth_into_fill_m=4.5 m (0.35–15). Example call: {"params": {"wall_height": 6, "wall_length": 40, "depth_into_fill_m": 4.5}, "standard": "MMHW"}. Omitted parameters use sensible engineering defaults. Pass deliverables=["xlsx","dxf","pdf"] (any subset) to also receive one-shot download URLs in the same call: Excel BoQ (both tiers, watermarked free) plus the dimensioned DXF (CAD) and PDF drawing sheets (paid tier).

ParametersJSON Schema
NameRequiredDescriptionDefault
paramsYesParameter form for a reinforced soil wall. A single dataclass that — through combinations of its fields and the ``rsw_facing`` discriminator — produces all eight VARIANT_PRESETS plus arbitrary user-specified geometries across all four RSWFacing options. Sensible defaults yield a 6m highway-approach PRECAST_PANEL wall.
standardNoMMHW
output_modeNofull_json
deliverablesNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.4/5.0
Behavior4/5

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

Annotations declare readOnlyHint=true, and the description confirms this is a compute operation. Additionally, it discloses tier requirements, authentication needs, omitted parameter defaults, and the ability to request deliverables like xlsx/dxf/pdf, adding value beyond annotations.

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

Conciseness2/5

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

The description is overly verbose, containing esoteric details like '17th use of the classed-then-legacy attribute discrimination pattern' that are irrelevant for tool selection. While the first sentence is front-loaded, the length detracts from clarity.

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?

Given the tool's complexity (nested parameters, multiple standards, facing variants, deliverables), the description covers purpose, usage, parameters, defaults, codes, and example calls. The presence of an output schema means return values need not be described, so completeness is high.

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?

Despite low schema coverage (25%), the description extensively explains the parameter structure, default values, and facing variants. It gives example parameters and sensible defaults, compensating for the missing schema descriptions at the top level.

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?

The title and description clearly state this tool computes a Bill of Quantities for reinforced soil walls. It distinguishes itself from siblings by specifying the wall type, facing systems, and referencing a free-tier alternative (compute_cantilever_wall). The purpose is specific and unambiguous.

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?

The description explicitly notes this is paid tier only and directs users to the free alternative compute_cantilever_wall if authentication is lacking. It also provides typical use cases, standards, and example parameters, giving clear when-to-use guidance.

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

compute_rigid_pavementCompute Rigid (Concrete) Pavement Build-Up BoQA
Read-only
Inspect

Paid tier only. Calling this without an authenticated CivilQuants account returns TIER_INSUFFICIENT — sign up at https://civilquants.com/pricing or use the free-tier alternative compute_end_area_earthworks. Rigid pavement build-up: optional capping (Class 6F) + Type 1 (Class 1A) granular sub-base + optional separation membrane + PQC slab (URC, JRC, or CRCP variant) with joint formwork (transverse contraction, longitudinal construction, expansion) and reinforcement (dowel bars + tie bars + optional fabric mesh for JRC, continuous longitudinal for CRCP). Routes the slab and its joints/reinforcement through the v12 is_pavement_slab discrimination to pavement-specific codes across all four standards (CESMM4 Class R, NRM2 Group 34.7, MMHW Series 1000, SMM7 Q21). Sub-base and capping route through the v8 FILL_SUB_BASE/FILL_CAPPING SHW-class-aware handlers. Three pavement-type defaults (URC/JRC/CRCP) per DMRB CD 226. Reinforcement scheduled per BS 8666:2020 (shape 00 dowels and tie bars; mass-only mesh and CRCP continuous). Example params: length=50 m (0.5–2000), width=7 m (0.5–30), sub_base_thickness_mm=150 mm (100–500). Example call: {"params": {"length": 50, "width": 7, "sub_base_thickness_mm": 150}, "standard": "MMHW"}. Omitted parameters use sensible engineering defaults. Pass deliverables=["xlsx","dxf","pdf"] (any subset) to also receive one-shot download URLs in the same call: Excel BoQ (both tiers, watermarked free) plus the dimensioned DXF (CAD) and PDF drawing sheets (paid tier).

ParametersJSON Schema
NameRequiredDescriptionDefault
paramsYesInput parameters for a rigid pavement assembly. Defaults: 50m × 7m urban distributor — JRC with 25m bay length, 230mm slab on 150mm Type 1 sub-base, A393 mesh mid-depth. Tie bars at 3.5m lane boundary. No capping by default.
standardNoMMHW
output_modeNofull_json
deliverablesNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.3/5.0
Behavior4/5

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

Annotations declare readOnlyHint=true, consistent with the description's focus on computation (no mutations). Description adds detail about internal routing logic (v12 slab discrimination, v8 fill handlers) and deliverables (xlsx, dxf, pdf), which goes beyond the annotation. No contradictions.

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?

Description is lengthy but well-structured: starts with tier info, then components, example, and deliverables. Each sentence adds value. Could be slightly more concise, but for a complex tool with many parameters, the detail is warranted.

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

Completeness4/5

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

Given the complexity (many parameters, nested object, output schema exists), the description covers the essential aspects: pavement types, reinforcement standards, deliverables, and tier restrictions. The output schema handles return value details. Minor gaps exist (e.g., interaction of certain parameters), but overall sufficient.

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 25% (low), but the description compensates by explaining key parameters with example values and ranges (e.g., length=50m, width=7m, sub_base_thickness_mm=150mm). It also discusses defaults and sensible engineering defaults for omitted parameters. Not every parameter is covered in detail, but the overall semantics are clear.

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?

The description clearly states it computes rigid pavement build-up BoQ, lists components (capping, sub-base, membrane, slab, reinforcement) and standards (CESMM4, NRM2, MMHW, SMM7). It differentiates from siblings like compute_flexible_pavement and compute_permeable_pavement by specifying 'rigid (concrete)' and mentioning a free-tier alternative compute_end_area_earthworks.

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

Usage Guidelines4/5

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

Explicitly states 'Paid tier only' and describes authentication requirement. Provides example parameters and defaults, and mentions free-tier alternative. Does not explicitly contrast with other pavement tools, but the specificity of 'rigid pavement' and mention of DMRB CD 226 guidelines provides sufficient context.

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

compute_road_markingCompute Road Marking BoQA
Read-only
Inspect

Paid tier only. Calling this without an authenticated CivilQuants account returns TIER_INSUFFICIENT — sign up at https://civilquants.com/pricing or use the free-tier alternative compute_end_area_earthworks. Road marking installation per SHW Cl. 1207-1215 and TSRGD 2016. Discriminates between five UK marking-line classifications via the marking_line_type enum: continuous, broken_short, broken_long, double_continuous, lane_line. Plus parallel discriminators on three further WorkCategory entries: area_marking_type on ROAD_MARKING_AREA, symbol_type on ROAD_MARKING_SYMBOL, and stud_type on ROAD_STUD. THIRD member of the highway L1 leaf (after S36 VRS, S37 traffic_sign) and SECOND member of the highway_signs_markings L2 leaf — 42nd assembly. The highway_signs_markings L2 leaf becomes the first L2 leaf in the highway L1 to reach 2 members. Five variant presets cover the principal UK commercial scenarios: urban continuous white line, rural broken centreline with hazard, motorway hatched chevron, junction give-way with triangle, and motorway lane line with studs. Routes via four new WorkCategory entries (ROAD_MARKING_LINE, ROAD_MARKING_AREA, ROAD_MARKING_SYMBOL, ROAD_STUD). Codes: CESMM4 X.5 (Class X §5 — road markings), NRM2 34.9 (Site works — markings), MMHW 1200.1.{w} (Series 1200 — Traffic Signs and Road Markings, with 1D banding by line_width_class), SMM7 Q40.7 (Section Q40 — Fencing/site furniture). 26th use of classed-then-legacy attribute discrimination pattern; 7th use of declared-then-banded (remains 1D — material rejected as a banding axis). Broadest unit-mix in any single CivilQuants assembly: m of line + m² of area + nr of symbol + nr of stud. Example params: actual_line_width_mm=100 mm (50–450), line_length_m=200 m (0–10000), secondary_line_length_m=0 m (0–10000). Example call: {"params": {"actual_line_width_mm": 100, "line_length_m": 200, "secondary_line_length_m": 0}, "standard": "MMHW"}. Omitted parameters use sensible engineering defaults. Pass deliverables=["xlsx","dxf","pdf"] (any subset) to also receive one-shot download URLs in the same call: Excel BoQ (both tiers, watermarked free) plus the dimensioned DXF (CAD) and PDF drawing sheets (paid tier).

ParametersJSON Schema
NameRequiredDescriptionDefault
paramsYesParameters for a single road marking installation. Defaults anchored to URBAN_CONTINUOUS_WHITE_LINE — 200 m of continuous 100 mm thermoplastic edge/centre line. Required-field defaults added per G.6.7.24 precedent — non-breaking API enrichment opens the slug to schema-driven workspace defaults and defaults- based parity-fixture regen. Geometry interpretation: - ``line_length_m`` is the linear length of the primary marking line (continuous edge/centre line, broken pattern, etc.). UK practice measures along the line centreline. Set to 0 if no primary line is part of the installation. - ``secondary_line_length_m`` is for installations with two distinct line types (e.g. broken_short main centreline + broken_long hazard section). Set to 0 to omit. The secondary line shares the same width_class and material as the primary line. - ``area_m2`` is the m² of painted area marking (hatched chevron, ghost island, box junction, etc.). Set to 0 if no area is present. - ``symbol_count`` is the number of distinct painted symbol occurrences (arrows, words, give-way triangles). Set to 0 if no symbols are present. - ``stud_count`` is the number of reflective road studs. Set to 0 if no studs are present. Discrimination & banding: - ``marking_line_type`` discriminates the description text for the ROAD_MARKING_LINE WorkItem(s). Required if line_length_m > 0. - ``line_width_class`` discriminates the BANDED CODE in MMHW (1D-banding axis) and the description text in other standards. - ``area_marking_type`` discriminates description for the ROAD_MARKING_AREA WorkItem. Required if area_m2 > 0. - ``symbol_type`` discriminates description for the ROAD_MARKING_SYMBOL WorkItem. Required if symbol_count > 0. - ``stud_type`` and ``reflective_colour`` discriminate description for the ROAD_STUD WorkItem. Required if stud_count > 0. - ``marking_material`` is carried on every description but is NOT a discriminator or banding axis (UK QS convention).
standardNoMMHW
output_modeNofull_json
deliverablesNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.7/5.0
Behavior5/5

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

Discloses authentication requirements, output formats (xlsx, dxf, pdf with download URLs), internal item routing, and material treatment. Adds significant context beyond the annotations (readOnlyHint: true) without contradiction.

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

Conciseness2/5

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

Overly verbose with internal taxonomy details (e.g., 'THIRD member of the highway L1 leaf') and repetitive parameter descriptions. The essential guidance is buried in a dense paragraph. Not concise.

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?

Covers all aspects: authentication, standards, alternatives, parameter semantics, output modes, deliverable formats, and example. Despite complexity (4 parameters, nested object, output schema), the description leaves no gaps.

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

Parameters5/5

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

Adds extensive meaning beyond the schema: geometry interpretation, discrimination rules, defaults anchored to a real scenario, and explanations for each parameter's role. Low schema coverage (25%) is compensated by rich description.

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?

The description clearly states it computes a Road Marking BoQ with specific UK standards and discriminators. It distinguishes from siblings by naming the free-tier alternative compute_end_area_earthworks and providing internal taxonomy context.

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?

Explicitly notes paid tier and free alternative, provides example parameters and call, explains when to set parameters to zero, and offers default behavior. No ambiguity about prerequisites or context.

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

compute_single_service_runCompute Single Service Run BoQA
Read-only
Inspect

Paid tier only. Calling this without an authenticated CivilQuants account returns TIER_INSUFFICIENT — sign up at https://civilquants.com/pricing or use the free-tier alternative compute_manhole. Single-service utility run per NJUG Volume 1 — one water main OR one gas main OR one electricity cable duct OR one telecoms duct (or fibre / street-lighting / HV cable duct) in a dedicated trench. Wraps the combined-services-trench engine with a single-band envelope and re-tags emissions back to this assembly. Renders through CESMM4 Class I / NRM2 Group 41 / MMHW Series 1300 / SMM7 Group T (services) on top of the shared earthworks / drainage handlers (excavation, disposal, bedding, surround, fill, tape). Example params: bedding_thickness_m=0.1 m (0.05–0.3), surround_above_crown_m=0.15 m (0–0.5), trench_length_m=50 m (1–1000). Example call: {"params": {"bedding_thickness_m": 0.1, "surround_above_crown_m": 0.15, "trench_length_m": 50}, "standard": "MMHW"}. Omitted parameters use sensible engineering defaults. Pass deliverables=["xlsx","dxf","pdf"] (any subset) to also receive one-shot download URLs in the same call: Excel BoQ (both tiers, watermarked free) plus the dimensioned DXF (CAD) and PDF drawing sheets (paid tier).

ParametersJSON Schema
NameRequiredDescriptionDefault
paramsYesParameters for a single-service utility run. Maps neatly to a one-column UI form: the user picks a service type from a dropdown, optionally tweaks cover/OD/material, sets length and trench width, and that's it. The wrapper builds the equivalent ``ServiceBand`` + single-band ``CombinedServicesTrenchParameters`` internally. All defaults align with NJUG 7 minimum-cover guidance for the selected service type (resolved at compute-time via the same ``_NJUG_DEFAULTS`` table that CST consumes).
standardNoMMHW
output_modeNofull_json
deliverablesNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.6/5.0
Behavior5/5

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

The description discloses authentication behavior (returns TIER_INSUFFICIENT if not authenticated), output modes (summary, material_schedule, boq, etc.), and optional deliverables (xlsx, dxf, pdf). These add context beyond the readOnlyHint annotation, which is consistent with a compute operation. No contradictions.

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

Conciseness4/5

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

The description is somewhat long but well-structured, starting with the paid-tier warning and moving through purpose, example, and output options. It is front-loaded with critical information but could be more concise by reducing redundancy.

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?

Given the tool's complexity (4 top-level parameters, nested objects, multiple standards, deliverables), the description covers authentication, purpose, standards, parameters, and output formats. The presence of an output schema reduces the need to describe return values.

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?

With low schema description coverage (25%), the description compensates by providing example parameter values, ranges, and an example call. It explains important parameters like bedding_thickness_m and service_type. However, many parameters still rely on the schema for their semantics.

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?

The description clearly states 'Single-service utility run per NJUG Volume 1' and enumerates the specific utilities (water main, gas main, etc.). It distinguishes itself from sibling tools like compute_combined_services_trench by noting it wraps the combined engine with a single-band envelope.

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

Usage Guidelines4/5

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

The description explicitly states 'Paid tier only' and mentions a free alternative (compute_manhole). It gives context about when to use this tool (single-service runs) and implies alternatives for multi-service or free-tier use. However, it does not explicitly contrast with similar siblings like compute_combined_services_trench.

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

compute_soakawayCompute Infiltration Soakaway (CIRIA C753) BoQA
Read-only
Inspect

Paid tier only. Calling this without an authenticated CivilQuants account returns TIER_INSUFFICIENT — sign up at https://civilquants.com/pricing or use the free-tier alternative compute_attenuation_tank. Infiltration soakaway per CIRIA C753 Chapter 25. Granular-fill or modular-crate storage envelope with infiltration discharge through the base and side walls. Wraps attenuation_tank for the storage envelope and emits an INFILTRATION_SURFACE item plus optional PERFORATED_DISTRIBUTION_PIPE on top. Includes the C753 rational-method sizing engine with hot-spot and cold-spot factors of safety per C753 Tables 25.4 / 25.5; the engine refuses to size for VERY_HIGH hot-spot catchments (fuel forecourts, lorry parks) which C753 prohibits from direct infiltration without pre-treatment. Half-emptying time checked against the 24h C753 §25.4 limit. Renders cleanly across CESMM4 / NRM2 / MMHW / SMM7 using existing earthworks / drainage handlers plus the two new categories (INFILTRATION_SURFACE, PERFORATED_DISTRIBUTION_PIPE) added in S22. Example params: catchment_area_m2=500 m² (10–10000), rainfall_depth_mm=60 mm (10–300), measured_infiltration_rate_m_per_s=0.0001 m/s (1e-07–0.01). Example call: {"params": {"catchment_area_m2": 500, "rainfall_depth_mm": 60, "measured_infiltration_rate_m_per_s": 0.0001}, "standard": "MMHW"}. Omitted parameters use sensible engineering defaults. Pass deliverables=["xlsx","dxf","pdf"] (any subset) to also receive one-shot download URLs in the same call: Excel BoQ (both tiers, watermarked free) plus the dimensioned DXF (CAD) and PDF drawing sheets (paid tier).

ParametersJSON Schema
NameRequiredDescriptionDefault
paramsYesParameters for a CIRIA C753 infiltration soakaway. Two ways to specify the design storm: (a) ``design_storm_volume_m3`` directly (from an upstream MicroDrainage / InfoWorks ICM model) — preferred for any catchment > 1 ha or where the upstream model is the design-of-record. (b) ``catchment_area_m2`` + ``rainfall_depth_mm`` + ``runoff_surface_type`` (or ``runoff_coefficient_override``) — the rational-method shortcut, appropriate for small-catchment soakaways (housing estate, supermarket forecourt, small commercial yard) where a senior QS / drainage engineer would sketch the design from these three numbers. If both are specified, ``design_storm_volume_m3`` wins. Soil characterisation: - ``measured_infiltration_rate_m_per_s``: from a BRE 365 falling-head soakage test on site - ``confidence``: per C753 Table 25.4 — LOW (single test, FoS=10), MEDIUM (2-3 tests, FoS=4), HIGH (≥3 tests + groundwater monitoring, FoS=2) - ``hot_spot``: per C753 §25.5 — LOW (residential / amenity), MEDIUM (car parks, minor roads), HIGH (A-roads, large car parks), VERY_HIGH (forecourts, lorry parks — not permitted without pre-treatment) Geometry: Rectangular plan, prismatic depth. The depth here is the effective storage depth (water level at design fill); the attenuation_tank's ``cover_to_tank_top`` covers the soil cover above the granular surround. The granular fill type is governed by the underlying attenuation_tank delegate — pick ``tank_type=CRATE`` for modular geocellular soakaways (typical for high storage / low footprint) or ``tank_type=PIPES`` for large-bore concrete pipe soakaways (typical for highway and industrial). The ``void_ratio`` here applies to the granular-fill case (TankType.CRATE with ``crate_void_ratio`` becomes a free user choice; for the pipe case the pipes themselves provide the storage volume).
standardNoMMHW
output_modeNofull_json
deliverablesNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true, so the description goes beyond by detailing the paid tier requirement, error response (TIER_INSUFFICIENT), the computational engine (rational-method sizing, factors of safety, half-emptying time check), and the wrapping of attenuation_tank. This adds valuable context without contradicting the annotations, though it does not cover rate limits or auth steps beyond the initial check.

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

Conciseness4/5

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

The description is relatively long but well-organized, front-loading the critical paid-tier warning and then systematically covering the tool's standard, sizing engine, output items, and example usage. It avoids redundancy and each sentence contributes information, though it could be slightly more concise without losing clarity.

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

Completeness4/5

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

Given the tool's complexity (many parameters, nested input schema, and an output schema that is present but not shown here), the description covers the key usage context: the two ways to specify the design storm, soil characterization factors, geometry considerations, and deliverables (xlsx, dxf, pdf). It does not describe the output structure in detail, but the existence of an output schema reduces the burden. The description is mostly complete for an agent to understand how to invoke the tool correctly.

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

Parameters3/5

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

With only 25% schema description coverage, the tool description provides some parameter context through example values and a brief explanation of key parameters (catchment_area_m2, rainfall_depth_mm, measured_infiltration_rate_m_per_s). However, it does not elaborate on every parameter, leaving many details to the schema's own description for the 'params' object. This partially compensates for the low coverage but not fully, resulting in a score of 3.

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?

Description clearly states the tool computes infiltration soakaways per CIRIA C753. It specifies the storage envelope types (granular-fill or modular-crate) and mentions the sizing engine. It distinguishes itself from the sibling 'compute_attenuation_tank' by noting it as a free-tier alternative, thus clarifying the tool's specific scope.

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?

The description provides explicit guidance on when to use this tool (for infiltration soakaways under CIRIA C753) and when not to, by naming the free-tier alternative 'compute_attenuation_tank'. It also includes constraints like the prohibition of VERY_HIGH hot-spot catchments without pre-treatment, and example parameters and calls that help the agent understand typical usage scenarios.

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

compute_soil_nailed_slopeCompute Soil-Nailed Slope BoQA
Read-only
Inspect

Paid tier only. Calling this without an authenticated CivilQuants account returns TIER_INSUFFICIENT — sign up at https://civilquants.com/pricing or use the free-tier alternative compute_cantilever_wall. Cut slope stabilised by passively-stressed soil nails with an applied face system. Discriminates between four face systems via the face_system enum: SHOTCRETE_MESH (dominant UK highway-cutting choice per SHW Cl. 644), HARD_FACING_PANEL (premium permanent works), FLEXIBLE_MESH (weathered rock drape), and VEGETATED_GEOGRID (landscape-sensitive schemes). Third member of the earth_structures L1 leaf (after gabion_wall S29 and reinforced_soil_wall S30). Eight variant presets cover all four face systems × representative slope geometries. Routes via three new WorkCategory entries (SOIL_NAIL, SHOTCRETE_FACE, FACE_MESH_REINFORCEMENT) plus reuse of EXCAVATION_GENERAL, DISPOSAL, CONCRETE_REINFORCED, GEOTEXTILE_FILTER, GEOGRID, and TOPSOIL_PLACE. Codes: CESMM4 C.5.X (soil nail) + E.8.10 (shotcrete) + G.5.8 (mesh), NRM2 7.7.X + 5.28.1 + 11.6.1, MMHW 600.20.X + 600.21.1 + 600.22.1 (SHW Cl. 638-639 / Cl. 644), SMM7 D32.3.X (steel piling — soil nails) + D41.6/D41.7 (the NAMED home for the three earth-structures families now). 23rd use of the classed-then-legacy attribute discrimination pattern; 4th use of the declared-then-banded pattern (nail_length_m bands the C.5.X / 7.7.X / 600.20.X / D32.3.X third digit). Example params: slope_height_m=8 m (0.5–25), slope_angle_deg=65 ° (10–89), slope_length_m=30 m (2–500). Example call: {"params": {"slope_height_m": 8, "slope_angle_deg": 65, "slope_length_m": 30}, "standard": "MMHW"}. Omitted parameters use sensible engineering defaults. Pass deliverables=["xlsx","dxf","pdf"] (any subset) to also receive one-shot download URLs in the same call: Excel BoQ (both tiers, watermarked free) plus the dimensioned DXF (CAD) and PDF drawing sheets (paid tier).

ParametersJSON Schema
NameRequiredDescriptionDefault
paramsYesParameters for a single soil-nailed slope. Geometry interpretation: - ``slope_height_m`` is the vertical extent of the cut slope (top of crest to toe of slope). - ``slope_angle_deg`` is the slope angle from horizontal (typically 50-80° for soil-nailed cuts). - ``slope_length_m`` is the horizontal length along the slope crest — the spatial extent of the assembly along the highway alignment. - ``nail_rows`` is the number of horizontal rows of nails; ``nail_horizontal_spacing_m`` and ``nail_vertical_spacing_m`` give the in-row and between-row centres (m). - ``nail_length_m`` is the design nail length (excavation + bond length; same for all nails in this assembly — for variable-length schemes, instantiate multiple assemblies). - ``nail_inclination_deg`` is the angle below horizontal of the nail axis (typically 10-20°). Face-system attributes (used only if relevant to ``face_system``): - ``shotcrete_thickness_mm`` / ``shotcrete_grade`` / ``face_mesh_designation`` — SHOTCRETE_MESH only. - ``panel_thickness_mm`` / ``panel_concrete_grade`` — HARD_FACING_PANEL only. - ``geogrid_grade`` / ``topsoil_thickness_mm`` — VEGETATED_GEOGRID only.
standardNoMMHW
output_modeNofull_json
deliverablesNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.2/5.0
Behavior4/5

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

Annotations indicate readOnlyHint=true, so the tool is read-only. The description adds behavioral context: paid-tier restriction, computation and return of BoQ files, output formats (xlsx, dxf, pdf), and default parameter handling. It also details the face system enum extensively. No contradictions with annotations. However, some internal jargon ('classed-then-legacy pattern') may be unnecessary, but overall transparency is high.

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

Conciseness3/5

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

The description is lengthy (~600 words) and includes many technical details and numbering (e.g., '23rd use of pattern'). While it front-loads the tier restriction and alternative, the later parts become dense with specific standards and code references. It could be more concise and better structured (e.g., separate sections). It earns its sentences but could be trimmed.

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

Completeness4/5

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

Given the tool's complexity (nested parameters, multiple enums, output schema exists), the description covers the core purpose, key parameters, face system options, and output deliverables. It provides example calls and explains default behaviors. Missing detailed descriptions for some sub-parameters (e.g., steel_grade, geogrid_grade) and does not explain the output schema, but the latter is not required. Overall, it is fairly complete for an agent to use.

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

Parameters3/5

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

Schema description coverage is low (25%), but the description compensates by providing detailed meanings for key parameters like face_system, nail_permanence, and the geometry interpretation of the params object. Example param values are given. However, many sub-parameters (e.g., steel_grade, geogrid_grade) lack description. The description adds value beyond the schema but is incomplete for all parameters.

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?

The title and description clearly state it computes the Bill of Quantities for soil-nailed slopes, with specific verb 'compute' and resource 'soil-nailed slope BoQ'. It explicitly distinguishes from the sibling tool compute_cantilever_wall, noting it as a free-tier alternative. The description also details the four face systems and standards, making the tool's specific purpose unambiguous.

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?

The description clearly states the tool is paid tier only, requiring an authenticated CivilQuants account, and returns TIER_INSUFFICIENT otherwise. It directs users to the free-tier alternative compute_cantilever_wall. This provides explicit when-to-use and when-not-to-use guidance.

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

compute_strip_foundationCompute Concrete Strip Foundation BoQA
Read-only
Inspect

Paid tier only. Calling this without an authenticated CivilQuants account returns TIER_INSUFFICIENT — sign up at https://civilquants.com/pricing or use the free-tier alternative compute_cantilever_wall. Linear reinforced concrete strip foundation, level or stepped. Closes the P1 launch set alongside pad_foundation. Integrates BS 8666:2020 reinforcement scheduling. Stepping is the v10 demonstration of cross-cutting standards-handler discrimination. Example params: length=10 m (1–100), width=0.75 m (0.3–2.5), thickness=0.35 m (0.15–1.5). Example call: {"params": {"length": 10, "width": 0.75, "thickness": 0.35}, "standard": "MMHW"}. Omitted parameters use sensible engineering defaults. Pass deliverables=["xlsx","dxf","pdf"] (any subset) to also receive one-shot download URLs in the same call: Excel BoQ (both tiers, watermarked free) plus the dimensioned DXF (CAD) and PDF drawing sheets (paid tier).

ParametersJSON Schema
NameRequiredDescriptionDefault
paramsYesParameters for the strip foundation assembly. Defaults are tuned to a typical UK domestic / light commercial strip: 750mm wide, 350mm deep, 10m long, founded ~700mm below GL on 75mm blinding. Reinforcement is 2T16 bottom + 2T12 top with T8 transverse distribution at 250 centres — a conservative starting point refineable per loading.
standardNoMMHW
output_modeNofull_json
deliverablesNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.5/5.0
Behavior1/5

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

The annotation readOnlyHint=true contradicts the description which claims computation (creates BoQ, requires auth, returns error if not). The description itself is clear about behavior (paid tier, error handling), but the contradiction with annotations reduces trust. Per guidelines, a score of 1 is given due to contradiction.

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

Conciseness4/5

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

The description is front-loaded with critical access information and provides context, examples, and deliverables. It is relatively long but each sentence adds value. Some technical phrasing (e.g., 'cross-cutting standards-handler discrimination') may be unnecessary for most agents.

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

Completeness4/5

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

Given the complexity (many parameters, nested object, output schema exists), the description covers key aspects: paid tier, alternative, example call, default behavior, and deliverable options. It does not detail return values, but the output schema is available. It is sufficiently complete for a competent agent.

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

Parameters3/5

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

Schema description coverage is low (25%), but the description provides example parameters with ranges (e.g., length 1–100 m) and defaults tuned to UK domestic. However, only three of many nested parameters are exemplified, so compensation is partial. The description adds value but not comprehensive coverage.

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?

The description uses specific verb 'compute' and resource 'strip foundation BoQ'. It distinguishes from sibling 'compute_cantilever_wall' as a free-tier alternative and mentions it completes the P1 launch set with 'pad_foundation'. The purpose is clear and differentiated.

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

Usage Guidelines4/5

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

The description explicitly states the paid-tier requirement, provides a free alternative (compute_cantilever_wall), and gives an example call with parameter settings. However, it does not explicitly state when not to use this tool versus other similar tools, though the mention of 'strip foundation' implies scope.

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

compute_swaleCompute SuDS Swale (CIRIA C753) BoQA
Read-only
Inspect

Paid tier only. Calling this without an authenticated CivilQuants account returns TIER_INSUFFICIENT — sign up at https://civilquants.com/pricing or use the free-tier alternative compute_attenuation_tank. Vegetated, geotextile-reinforced or rip-rap-lined linear drainage swale per CIRIA C753. Trapezoidal prismatic channel with three lining strategies covering the UK design palette from low-velocity amenity grass channels (1V:3H, 1-3% gradient) to high-velocity rip-rap-lined stretches. Optional check-dams (stone or concrete) for steeper sections. Renders cleanly across all four standards using existing earthworks / geosynthetics / concrete handlers — no PC items, all contractor-full supply route. Example params: bed_width=0.5 m (0.2–3), left_side_slope_h_per_v=3 (1.5–6), right_side_slope_h_per_v=3 (1.5–6). Example call: {"params": {"bed_width": 0.5, "left_side_slope_h_per_v": 3, "right_side_slope_h_per_v": 3}, "standard": "MMHW"}. Omitted parameters use sensible engineering defaults. Pass deliverables=["xlsx","dxf","pdf"] (any subset) to also receive one-shot download URLs in the same call: Excel BoQ (both tiers, watermarked free) plus the dimensioned DXF (CAD) and PDF drawing sheets (paid tier).

ParametersJSON Schema
NameRequiredDescriptionDefault
paramsYes
standardNoMMHW
output_modeNofull_json
deliverablesNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.9/5.0
Behavior5/5

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

Discloses tier restrictions (TIER_INSUFFICIENT error), watermarking for free tier, and that DXF/PDF require paid tier. readOnlyHint annotation is consistent with compute behavior. No contradictions.

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?

Well-structured and information-dense, with tier info first, then purpose, parameter details, example. Could be slightly more concise but every sentence adds value.

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?

Given tool complexity (many parameters, nested objects, output schema exists), description covers usage, tier restrictions, defaults, deliverables, and example. Output schema handles return values, so no need to describe them.

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

Parameters5/5

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

Schema covers only 0% of parameters (no descriptions in schema for most properties). Description compensates by explaining parameter ranges (e.g., bed_width 0.2–3), slopes, lining strategies, check dams, and defaults. Example call adds clarity.

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?

Description clearly states the tool computes a SuDS swale BoQ per CIRIA C753, covering three lining types. It distinguishes from sibling tool compute_attenuation_tank as a free alternative, and the purpose is specific and unambiguous.

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?

Explicitly states 'Paid tier only' and provides the free alternative compute_attenuation_tank. Includes example params and call, explains omitted parameters use defaults, and describes deliverables. Guidance is clear and comprehensive.

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

compute_traffic_signCompute Traffic Sign BoQA
Read-only
Inspect

Paid tier only. Calling this without an authenticated CivilQuants account returns TIER_INSUFFICIENT — sign up at https://civilquants.com/pricing or use the free-tier alternative compute_end_area_earthworks. Traffic sign installation per SHW Cl. 1201-1206 and TSRGD 2016. Discriminates between five TSRGD sign classifications via the sign_type enum: warning triangular, regulatory circular, regulatory rectangular, directional rectangular, and information rectangular. SECOND member of the highway L1 leaf (after S36 VRS) and FIRST member of the highway_signs_markings L2 leaf — 41st assembly. Five variant presets cover the principal UK commercial scenarios: rural warning triangle on single post, urban regulatory circular, rural advance directional on twin posts, motorway gantry ADS, and urban information rectangle. Routes via three new WorkCategory entries (TRAFFIC_SIGN_POST, TRAFFIC_SIGN_FACE, SIGN_FOUNDATION). Codes: CESMM4 X.4 (Class X §4 — traffic signs), NRM2 34.8 (Site works — signs), MMHW 1300.1.{a}.{h} (Series 1300 — Road Lighting/Traffic Signs/Bollards, with 2D banding by face_area × mounting_height), SMM7 Q40.6 (Section Q40 — Fencing/site furniture). 25th use of classed-then-legacy attribute discrimination pattern; 6th use of declared-then-banded AND the SECOND 2D-banded handler (MMHW 1300.1.{a}.{h} bands by both axes simultaneously). Example params: post_length_m=3 m (1.5–12), post_count=1 Nr (1–4), faces=1 Nr (1–6). Example call: {"params": {"post_length_m": 3, "post_count": 1, "faces": 1}, "standard": "MMHW"}. Omitted parameters use sensible engineering defaults. Pass deliverables=["xlsx","dxf","pdf"] (any subset) to also receive one-shot download URLs in the same call: Excel BoQ (both tiers, watermarked free) plus the dimensioned DXF (CAD) and PDF drawing sheets (paid tier).

ParametersJSON Schema
NameRequiredDescriptionDefault
paramsYesParameters for a single traffic sign installation. Geometry interpretation: - ``post_length_m`` is the length of the supporting post above ground (UK convention measures the *above-ground* length, not the often-greater driven/embedded length). For gantry signs, this is the height of each gantry leg. - ``post_count`` is the number of supporting posts. Typical values: 1 (small warning/regulatory), 2 (twin-post directional, gantry legs). - ``faces`` is the number of distinct sign faces on the assembly. A single gantry can carry 1-3 distinct sign faces (one per lane); a twin-post directional can carry advance and confirmation faces. Face geometry: - ``actual_face_area_m2`` is the m² of a single face (used for face-area descriptions; the WorkItem quantity is enumerated per face). Foundation: - ``foundation_type`` carries the SHW Cl. 1204 classification. - ``concrete_grade`` is for description text — concrete is deemed-included in the foundation unit rate (no separate CONCRETE line emitted). - ``approximate_foundation_volume_m3`` is for description text only — UK QS convention does not measure sign-foundation concrete separately (see SHW Cl. 1204).
standardNoMMHW
output_modeNofull_json
deliverablesNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.1/5.0
Behavior4/5

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

Discloses authentication requirements, tier insuffiency error, and deliverable URLs. Annotations already set readOnlyHint=true, so the description adds value by detailing the paid-tier restriction and error behavior without contradiction.

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

Conciseness2/5

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

The description is extremely verbose, listing numerous codes, standards, and leaf relationships. While informative, it lacks conciseness and could be better structured with bullet points or sections.

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

Completeness4/5

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

Covers authentication, standards, sign types, presets, codes, example calls, and deliverables. With a complex input schema and output schema, the description provides comprehensive context, though it could be more streamlined.

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

Parameters3/5

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

Schema description coverage is 25%, but the schema itself has extensive descriptions for each parameter. The tool description adds some additional context (e.g., leaf membership, codes) but not significant parameter-level details beyond what the schema provides.

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?

The description clearly states the tool computes a traffic sign BoQ, distinguishing it from the free-tier alternative compute_end_area_earthworks. It also provides context on sign classifications and standards, making the purpose unmistakable.

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?

Explicitly states 'Paid tier only' and directs users to the free alternative. Describes when to use different sign types and presets, and mentions deliverables options. Provides clear guidance for correct invocation.

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

compute_utility_chamberCompute Utility Access Chamber BoQA
Read-only
Inspect

Paid tier only. Calling this without an authenticated CivilQuants account returns TIER_INSUFFICIENT — sign up at https://civilquants.com/pricing or use the free-tier alternative compute_manhole. Catalogue-driven utility access chamber covering ten standard UK types: BT/Openreach jointing chambers JC1-JC4 (defaulting to UTILITY_PROVIDER_SUPPLY routing), water meter chamber (FW6), wastewater inspection chamber (RW9), valve chamber, gas Emergency Control Valve pit (ECV), LV electrical link box, and cable draw pit. Composite emission: precast chamber unit + BS EN 124 cover & frame (PC supply) + excavation + bedding (SHW Cl. 803) + granular surround + optional geotextile + selected fill + disposal. Routes via manhole_type=utility_chamber attribute discrimination through CESMM4 Class K.1.5.x, NRM2 33.7.11-.13, MMHW 500.5.13-.15 (SHW Cl. 507), and SMM7 R12.3.10-.12. JC types route their chamber unit through the v18 statutory-undertaker supply route infrastructure (CESMM4 Class A.4.3, NRM2 Group 1, MMHW Series 100, SMM7 A53) as a PC sum plus contractor attendance line. Example params: bedding_thickness_mm=150 mm (75–300), bedding_overhang_m=0.1 m (0.075–0.3), surround_thickness_m=0.15 m (0.1–0.3). Example call: {"params": {"bedding_thickness_mm": 150, "bedding_overhang_m": 0.1, "surround_thickness_m": 0.15}, "standard": "MMHW"}. Omitted parameters use sensible engineering defaults. Pass deliverables=["xlsx","dxf","pdf"] (any subset) to also receive one-shot download URLs in the same call: Excel BoQ (both tiers, watermarked free) plus the dimensioned DXF (CAD) and PDF drawing sheets (paid tier).

ParametersJSON Schema
NameRequiredDescriptionDefault
paramsYesParameter form for a utility access chamber. Catalogue-driven: pick a ``chamber_type`` and the chamber's nominal plan dimensions, depth, wall thickness, cover loading and supply route default are read from ``_CATALOGUE``. Any field left as ``None`` resolves to the catalogue default at ``__post_init__`` time; an explicit value wins. The ``supply_route`` parameter follows the same rule: ``None`` → catalogue default (UTILITY_PROVIDER_SUPPLY for JC1–JC4, CONTRACTOR_FULL for the other six). Setting an explicit value overrides — e.g. setting ``SupplyRoute.CONTRACTOR_FULL`` on a JC2 captures the private-estate case where the chamber is contractor- supplied rather than Openreach-supplied.
standardNoMMHW
output_modeNofull_json
deliverablesNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.8/5.0
Behavior5/5

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

Discloses authentication requirement, error code, default behavior for parameters, and one-shot download URLs for deliverables. No contradiction with 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?

The description is comprehensive but not excessively verbose; front-loaded with critical info (paid tier, alternatives). Some redundancy in enumerating standards could be trimmed.

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?

Covers authentication, alternatives, catalogue details, standard routing, example params, and deliverables. Output schema exists for return values, so no gap.

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?

While schema coverage is low (25%), the description adds meaning for key parameters like chamber_type and supply_route defaults, and provides example values for bedding and surround. Could mention standard and output_mode explicitly.

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?

The description clearly states the tool computes a Bill of Quantities for utility access chambers, specifies the ten chamber types, and distinguishes from the free-tier alternative compute_manhole.

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?

Explicitly states paid tier requirement, provides alternative for free tier, and includes example call with standard parameters.

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

compute_utility_kiosk_baseCompute Utility Kiosk Base BoQA
Read-only
Inspect

Paid tier only. Calling this without an authenticated CivilQuants account returns TIER_INSUFFICIENT — sign up at https://civilquants.com/pricing or use the free-tier alternative compute_manhole. Foundation + kiosk hardware composite for utility cabinets — LV electricity feeder pillars (DNO-supplied), Openreach FTTC cabinets (PIA-supplied), EV rapid-charging plinths, packaged DNO substations, and generic precast plinths. Light-wrapper delegation around pad_foundation for the substructure (excavation, RC pad with pedestal, reinforcement), plus kiosk-specific PC-supply hardware (1 complete unit on UPS route, 4 components — body / door / lock / base-plate — on Employer-PC route). Catalogue-driven supply-route defaults encode that LV pillars and FTTC cabinets are normally utility-provider-supplied complete units, while EV chargers, DNO substations, and generic plinths are normally Employer-PC-nominated per component. Example params: quantity=1 Nr (1–100), blinding_thickness_m=0.075 m (0.05–0.15), working_space_m=0.3 m (0–1). Example call: {"params": {"quantity": 1, "blinding_thickness_m": 0.075, "working_space_m": 0.3}, "standard": "MMHW"}. Omitted parameters use sensible engineering defaults. Pass deliverables=["xlsx","dxf","pdf"] (any subset) to also receive one-shot download URLs in the same call: Excel BoQ (both tiers, watermarked free) plus the dimensioned DXF (CAD) and PDF drawing sheets (paid tier).

ParametersJSON Schema
NameRequiredDescriptionDefault
paramsYesParameters for a utility kiosk base. Fields marked "(None → catalogue)" resolve from the catalogue entry at ``__post_init__`` time; an explicit non-None value always wins.
standardNoMMHW
output_modeNofull_json
deliverablesNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.4/5.0
Behavior4/5

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

Discloses paid-tier requirement, delegation to pad_foundation, and catalogue-driven defaults. Does not contradict readOnlyHint annotation. Adds value beyond annotations by explaining the composite structure and engineering defaults.

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

Conciseness3/5

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

The description is verbose and contains multiple technical sentences. While front-loaded with critical info, it could be more concise without losing essential details.

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

Completeness4/5

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

For a complex tool with many parameters and a nested input schema, the description covers usage, defaults, output options, and sibling alternatives. Output schema exists so return values are not required. Adequately complete.

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?

Describes key parameters (quantity, blinding_thickness_m, working_space_m) with example ranges and explains kiosk_type enum values. Adds meaning beyond the schema, though not all parameters are covered.

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?

The description clearly states it computes a Bill of Quantities for utility kiosk bases, listing the specific kiosk types it covers. It distinguishes itself from siblings by mentioning the free-tier alternative compute_manhole.

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?

Explicitly states paid-tier-only and provides a free alternative. Offers example parameters and call, explains defaults, and describes how to request deliverables. Gives clear when-to-use and when-not-to-use guidance.

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

compute_vehicle_restraint_systemCompute Vehicle Restraint System (VRS) BoQA
Read-only
Inspect

Paid tier only. Calling this without an authenticated CivilQuants account returns TIER_INSUFFICIENT — sign up at https://civilquants.com/pricing or use the free-tier alternative compute_end_area_earthworks. Vehicle restraint system (VRS) for highway works per SHW Cl. 401-419 and BS EN 1317. Discriminates between six structural system types via the vrs_system_type enum: tensioned and untensioned corrugated steel beam, wire rope, in-situ concrete step barrier, precast concrete single-slope, and combined heavy-duty (corrugated beam over concrete kerb upstand). FIRST member of the highway_restraint L2 leaf — opens the brand-new highway L1 category as the 40th assembly. Six variant presets cover the principal UK commercial scenarios: motorway verge TCB N2/W4, motorway central wire rope N2/W6, urban untensioned N2/W2, bridge approach concrete step H2/W1, median precast single-slope H2/W2, and high-containment verge H4a/W4. Routes via three new WorkCategory entries (VEHICLE_RESTRAINT_SYSTEM, VRS_TERMINAL, VRS_TRANSITION) plus reuse of CONCRETE_REINFORCED, REINFORCEMENT, FORMWORK and EXCAVATION_TRENCH for the concrete variants. Codes: CESMM4 X.3 (Class X §3 — crash barriers), NRM2 34.7 (Site works — crash barriers), MMHW 400.1.{ww}.{cl} (Series 400 — Road Restraint Systems, with 2D banding by working_width × containment), SMM7 Q40.5 (Section Q40 — Fencing, crash barriers). 24th use of the classed-then-legacy attribute discrimination pattern; 5th use of the declared-then-banded pattern AND the FIRST 2D-banded handler (MMHW 400.1.{ww}.{cl} bands by both axes simultaneously). Example params: length_m=100 m (12–10000), post_spacing_m=2 m (0.5–8), foundation_width_m=0.9 m (0.2–2). Example call: {"params": {"length_m": 100, "post_spacing_m": 2, "foundation_width_m": 0.9}, "standard": "MMHW"}. Omitted parameters use sensible engineering defaults. Pass deliverables=["xlsx","dxf","pdf"] (any subset) to also receive one-shot download URLs in the same call: Excel BoQ (both tiers, watermarked free) plus the dimensioned DXF (CAD) and PDF drawing sheets (paid tier).

ParametersJSON Schema
NameRequiredDescriptionDefault
paramsYesParameters for a single vehicle restraint system run. Geometry interpretation: - ``length_m`` is the run length along the highway alignment. - ``post_spacing_m`` is the centre-to-centre spacing of supporting steel posts (irrelevant for INSITU and PRECAST_SLAB foundation types). Typical UK values: 2.0m (TCB), 4.0m (TCB W6 variant), 3.2m (wire rope), 1.5m (high-containment hybrid). - ``terminals_per_run`` is typically 2 (one at each end of a continuous run); can be 1 for a barrier that returns into a structure at one end. - ``transitions`` is the number of system-type transitions within the run (e.g. to a parapet or to a different VRS type). Zero is normal for a single-system run. System-type-specific attributes (set only those relevant to the variant's ``vrs_system_type``): - ``beam_thickness_mm`` — corrugated-beam variants only. - ``wire_strands`` / ``wire_tension_kn`` — wire rope only. - ``concrete_grade`` / ``concrete_cross_section_m2`` / ``reinforcement_kg_per_m`` — concrete variants only. - ``foundation_width_m`` / ``foundation_depth_m`` — INSITU_FOUND foundation only. - ``precast_unit_length_m`` — precast variants only.
standardNoMMHW
output_modeNofull_json
deliverablesNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.9/5.0
Behavior5/5

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

The description discloses authentication requirements (paid tier), output modes including downloadable deliverables, and the first-time use of a 2D-banded pattern. It adds context beyond the readOnlyHint annotation, which is consistent with a compute-only operation. No contradiction with 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?

The description is front-loaded with critical info (paid tier, authentication, alternative) and is well-organized, but it is verbose, containing extensive details that could be shortened. Still, every sentence provides value, so it earns a 4 rather than a 5.

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?

The description covers all aspects: purpose, usage constraints, system types, variant presets, work categories, standard codes, example call, deliverables, and output behavior. It is fully complete for a complex tool with many parameters and enums.

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

Parameters5/5

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

Despite low schema description coverage (25%), the tool description thoroughly explains each system type, the meaning of key parameters like post_spacing_m and terminals_per_run, and provides example parameter values and an example call. It compensates fully for missing schema descriptions.

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

Purpose5/5

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

The description clearly states the tool computes Vehicle Restraint System (VRS) BoQ per SHW and BS EN 1317, with specific verb 'compute' and resource 'VRS BoQ'. It distinguishes from siblings by mentioning it is the first member of a new highway category and explicitly names the free-tier alternative compute_end_area_earthworks.

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?

The description explicitly states 'Paid tier only' and provides the exact error message for unauthenticated users, along with a link to sign up and an alternative free tool. It also mentions that omitted parameters use sensible engineering defaults, giving clear when-to-use and when-not-to-use guidance.

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

get_document_pipelineGet the customer-side document pipelineA
Read-only
Inspect

Obtain the CivilQuants customer-side document pipeline — the toolkit the document-heavy skills (tender review, geotechnical / geo-environmental interpretation) use to chunk a tender pack and render a Word pack on the user's machine. Returns the self-unpacking chunking package, the pipeline discipline, and the python-docx render helpers. Universal (free + paid). NOTE: running the pipeline over real documents requires a code-execution client (Claude Code / Codex / VS Code) — a chat connector can read the toolkit but cannot execute it. The full kit is large (~60 KB); pass component='chunking'|'discipline'|'render' for one part (~20 KB each), or omit it for the whole kit.

ParametersJSON Schema
NameRequiredDescriptionDefault
componentNoWhich part to fetch; omit for the whole kit.all

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true. Description adds further behavioral context: explains that a chat connector can read but not execute, and provides details on component sizes and self-unpacking nature.

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?

Two main sentences plus a note. Information is front-loaded with purpose, then components, then usage constraint. Efficient but could slightly trim the list of skill types in the first sentence.

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

Completeness4/5

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

Given only one optional parameter and presence of output schema, the description covers the tool comprehensively. Mentions return values (chunking package, discipline, render helpers) and size details. No missing critical context.

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 coverage is 100%, but the description adds value by explaining the component enum values with size estimates and clarifying that omitting gets the whole kit.

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?

Description clearly states the tool obtains the CivilQuants customer-side document pipeline, used by document-heavy skills. It distinguishes itself from computational sibling tools by explicitly listing its purpose and components.

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

Usage Guidelines4/5

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

Provides explicit usage guidance including that running the pipeline requires a code-execution client, and a chat connector can only read but not execute. Does not explicitly name alternatives, but given sibling tools are compute-focused, the context is clear.

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

get_projectGet projectA
Read-only
Inspect

Fetch a previously saved CivilQuants project by project_id. When the id is not in context (e.g. a new conversation reopening 'Demo - Cantilever Wall'), pass the project's exact display name in the project_id field instead. If several projects share the name, the error envelope lists the candidate project_ids; call list_projects to browse everything saved. Paid tier only — anonymous callers receive a TIER_INSUFFICIENT envelope.

ParametersJSON Schema
NameRequiredDescriptionDefault
project_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A5/5.0
Behavior5/5

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

Adds behavioral info beyond readOnlyHint annotation: error envelopes with candidate IDs when names conflict, tier restriction for anonymous callers.

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

Conciseness5/5

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

Three concise sentences front-loading core purpose, then alternatives and constraints. No wasted words.

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?

Covers parameter semantics, failure modes, tier requirements, and alternative tools comprehensively for a simple fetch tool.

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

Parameters5/5

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

With 0% schema description coverage, the description fully compensates by explaining the single parameter accepts both ID and exact display name.

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?

Clearly states the tool fetches a project by project_id, with explicit alternative usage (display name). Distinguishes from siblings like list_projects and recompute_project.

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?

Provides explicit guidance on when to use project_id vs display name, handles naming conflicts by referring to list_projects, and mentions paid tier restriction.

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

get_skillGet senior-QS skill methodologyA
Read-only
Inspect

Paid tier only. Fetch a senior-QS skill methodology by slug (see list_skills) and APPLY it to the user's documents — the returned body is the system instruction for you to run the methodology on the customer's tokens; CivilQuants does not run inference. Paid callers get the full methodology; anonymous/free callers get a TIER_INSUFFICIENT upsell body; a rejected token gets an INVALID_TOKEN re-authenticate body. The document-heavy skills assume you can chunk/parse the customer's files and render a Word pack locally — that needs a code-execution client (Claude Code / Codex / VS Code) and the pack from get_document_pipeline; on a chat connector you can still read and reason with the methodology. Sign up at https://civilquants.com/pricing. Example: get_skill(skill="tender_risk_assessment").

ParametersJSON Schema
NameRequiredDescriptionDefault
skillYesSkill slug from list_skills.

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.5/5.0
Behavior5/5

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

Beyond the readOnlyHint annotation, the description details that no inference is run by CivilQuants, the returned body is a system instruction, and different response bodies (TIER_INSUFFICIENT, INVALID_TOKEN) occur based on caller status. It also explains prerequisites for document-heavy skills, adding significant behavioral context.

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

Conciseness5/5

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

The description is concise yet comprehensive, front-loading critical info ('Paid tier only'). Each sentence adds necessary context, including example usage, and there is no verbosity. Ideal structure for quick agent comprehension.

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?

Given the tool's complexity and existing output schema, the description covers all essential aspects: what is returned, different response scenarios, prerequisites, related tools (list_skills, get_document_pipeline), and usage constraints. No gaps remain.

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

Parameters3/5

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

The input schema already describes the 'skill' parameter as 'Skill slug from list_skills' with 100% coverage. The description adds an example and confirms the slug source, but does not substantially improve meaning beyond the schema. Baseline of 3 is appropriate.

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

Purpose5/5

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

The description clearly states the tool fetches a senior-QS skill methodology by slug and returns system instructions for the agent to apply. It distinguishes from siblings like list_skills (listing) and get_document_pipeline (document pack) by specifying its unique role.

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

Usage Guidelines4/5

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

The description specifies 'Paid tier only', advises to see list_skills for the slug, and explains different response bodies for free/anonymous/rejected callers. It also mentions when code-execution is needed versus chat usage, providing clear context for when to invoke this tool.

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

list_projectsList projectsA
Read-only
Inspect

List every project saved by the calling subscriber — project_id, name, client, status, default standard, assembly count, timestamps. Use this to re-find a saved project from a new conversation when its project_id is no longer in context, then pass the project_id to get_project or recompute_project. Paid tier only — anonymous callers receive a TIER_INSUFFICIENT envelope.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.9/5.0
Behavior5/5

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

The description discloses behavior beyond the readOnlyHint annotation: it specifies that the tool returns all projects for the calling subscriber, lists the exact fields returned, and explains the tier restriction (anonymous callers get a 'TIER_INSUFFICIENT' envelope). There is no contradiction with the annotation.

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

Conciseness5/5

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

The description is concise (three sentences) and front-loaded: the first sentence states the purpose and outputs, the second provides usage context, and the third states restrictions. Every sentence adds necessary information without redundancy.

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?

Given the tool has no parameters and an output schema (implied by context signals), the description is complete: it explains what the tool does, when to use it, what data it returns, and who can use it. No additional information is needed.

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?

With zero parameters and 100% schema coverage, the baseline is 4. The description does not need to add parameter information since there are none. It adds value by describing the return fields, which complements the missing output schema.

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?

The description clearly states the action ('List every project saved by the calling subscriber') and the resource ('projects'). It distinguishes itself from sibling tools like 'get_project' and 'recompute_project' by targeting a different use case (listing vs. fetching or computing). The inclusion of specific fields enhances clarity.

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?

The description explicitly tells when to use the tool: 'Use this to re-find a saved project from a new conversation when its project_id is no longer in context.' It also provides guidance on subsequent steps ('pass the project_id to get_project or recompute_project') and warns about tier restrictions ('Paid tier only'), effectively excluding unauthorized users.

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

list_skillsList senior-QS skillsA
Read-only
Inspect

List the 10 senior-QS skill methodologies CivilQuants exposes (tender review, risk assessment, QS measurement/contract advice, geotechnical + geo-environmental interpretation, earthworks, preliminaries, pavement design, subcontract analysis). Universal discovery — both tiers see the full list. Returns each skill's slug, title, one-line summary and tier; then call get_skill(skill=) to fetch the methodology body. The skills are paid-tier; a free caller gets a sign-up prompt from get_skill. NOTE: the document-heavy skills (tender review, the interpretation skills) need a code-execution client (Claude Code / Codex / VS Code) plus the chunking pack from get_document_pipeline to run a real tender pack — on a chat connector you can read the methodology but cannot chunk/parse files.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.9/5.0
Behavior5/5

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

Annotations declare readOnlyHint=true, and the description confirms a read operation. It adds context: both tiers see the full list, the specific return fields (slug, title, summary, tier), and the caveat about needing a code-execution client for certain skills. No contradictions.

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

Conciseness5/5

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

The description is highly concise: two sentences plus a note, with the purpose front-loaded. Every sentence serves a purpose, and there is no redundant information.

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?

Given zero parameters and the presence of an output schema, the description provides all necessary context: what is listed, what fields are returned, how to proceed with get_skill, free-tier behavior, and special requirements for document-heavy skills. It is fully adequate.

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?

The input schema has zero parameters (100% coverage), so baseline is 4. The description adds value by listing the exact skills and indicating the return structure, which helps the agent understand the output without needing to inspect the output schema.

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?

The description clearly states it lists the 10 senior-QS skill methodologies, provides specific examples, and distinguishes from the sibling tool get_skill. The verb 'list' is specific, and the resource is well-defined.

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?

Explicitly instructs to call this tool first for discovery, then use get_skill for detailed methodology. Also notes that free-tier users will encounter a sign-up prompt from get_skill, and that document-heavy skills require a code-execution client, providing clear when-to-use guidance.

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

recompute_projectRecompute projectA
Read-only
Inspect

Re-run every enabled assembly in a saved project and render aggregated BoQs across the requested measurement standards. recompute_project takes no parameter overrides — it re-runs the saved assemblies exactly as stored. To revise a parameter, save an amended copy with save_project (see its description for the recipe) and recompute the new project_id. Paid tier only — anonymous callers receive a TIER_INSUFFICIENT envelope.

ParametersJSON Schema
NameRequiredDescriptionDefault
requestNo
project_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.6/5.0
Behavior4/5

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

Annotations declare readOnlyHint=true, consistent with the tool. The description adds useful context: it takes no parameter overrides, and paid tier required with a specific error envelope for anonymous callers. It doesn't fully detail if the project state changes, but readOnlyHint covers that.

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

Conciseness5/5

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

Three clear, front-loaded sentences. First sentence states purpose, second clarifies constraints, third provides guidance and tier info. No wasted words.

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

Completeness4/5

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

Covers purpose, parameters, constraints, and tier requirement. With an output schema present, the return values are handled. Could mention error cases like invalid project_id, but overall sufficient for a recompute tool.

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 0%, but the description explains the request parameter's purpose: filtering by measurement standards. It also clarifies that no parameter overrides are taken, which adds context beyond the schema.

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?

The description clearly states it re-runs every enabled assembly and renders aggregated BoQs across requested measurement standards. It distinguishes itself from sibling compute_* tools by explicitly noting it takes no parameter overrides.

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?

The description explicitly says when to use (re-run a saved project) and when not to (to revise parameters, use save_project instead). It also mentions the paid tier restriction, which guides proper usage.

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

render_skill_reportRender Bill of Quantities deliverableA
Read-only
Inspect

Render previously-computed BoQ results into a deliverable (Excel workbook or Word report). Excel is free with watermark + sheet protection; Word is paid-tier only and returns a TIER_INSUFFICIENT envelope for anonymous callers. The wire shape matches POST /api/v1/mcp/render exactly.

ParametersJSON Schema
NameRequiredDescriptionDefault
requestYesWire shape for POST /api/v1/mcp/render.

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.6/5.0
Behavior1/5

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

The description describes a write operation (rendering a deliverable) but the annotation readOnlyHint=true indicates it is read-only. This is a direct contradiction. Beyond the contradiction, it adds tier constraints and wire shape details, but the contradiction severely undermines transparency.

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

Conciseness5/5

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

The description is two sentences that efficiently cover the core purpose, tier differences, and wire shape. No extraneous information.

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

Completeness4/5

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

Given the complex input schema and existence of output schema, the description covers key aspects: rendering action, deliverable types, tier restrictions, and endpoint match. It does not explain the return value, but that's handled by the output schema.

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

Parameters3/5

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

The schema has 100% description coverage for all parameters, so the description adds marginal value. It reiterates the wire shape and tier constraints but does not explain individual fields beyond what the schema already provides. Baseline 3 is appropriate.

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

Purpose5/5

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

The description clearly states it renders previously-computed BoQ results into Excel or Word deliverables. It specifies the tier differences: Excel is free with watermark and sheet protection, Word is paid-only. This distinguishes it from sibling compute tools.

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

Usage Guidelines4/5

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

The description implies that compute results must be obtained first ("previously-computed BoQ results") and provides tier-specific guidance (Excel vs Word). It does not explicitly state when not to use or name alternatives, but the purpose is clear enough for appropriate selection.

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

resolve_assembly_from_descriptionResolve assembly from descriptionA
Read-only
Inspect

Resolve a plain-English job description to candidate catalogue assemblies and the fields you'll need to compute one. Deterministic router — it does NOT return a Bill of Quantities and NEVER guesses parameter values; it returns candidate slugs (plural when ambiguous, with clarifying questions), each assembly's tier, whether it supports compute_multi_section_assembly, and per-field metadata (unit, min/max, default). Then call compute_ (or compute_multi_section_assembly) with the values you fill in. Also known as compute_from_description. Example: {"description":"a 3 m deep manhole","preferred_standard":"MMHW"}.

ParametersJSON Schema
NameRequiredDescriptionDefault
descriptionYes
preferred_standardNo
return_resolution_logNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4/5.0
Behavior4/5

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

Description goes beyond the readOnlyHint annotation by detailing deterministic behavior, what it returns (slugs, tier, etc.), and what it never does (compute or guess). This provides rich behavioral context not covered by 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?

The description is well-structured with a clear first sentence, then clarifying details, next steps, and an example. It is informative without being overly verbose, though a slight reduction would be possible.

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

Completeness4/5

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

Given the output schema exists, the description covers the key return elements. It addresses ambiguity and next steps, and mentions the alias. It is complete for the tool's purpose, though could briefly note error cases.

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

Parameters2/5

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

Schema has 0% description coverage, so the description must compensate. It implies the 'description' param meaning and gives an example for 'preferred_standard', but the 'return_resolution_log' param is not mentioned at all, leaving a coverage gap.

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?

The description clearly states it resolves a plain-English description to candidate assemblies and fields. It explicitly distinguishes from compute tools by stating it does not return a Bill of Quantities or guess values, making the purpose unambiguous.

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

Usage Guidelines4/5

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

The description tells when to use: to get candidate slugs and fields from a description. It then instructs to call compute_<slug> next. It does not explicitly list when not to use, but the context is clear enough given the sibling compute tools.

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

save_projectSave projectAInspect

Persist a CivilQuants project with its assembly list. Each call creates a new project — it never overwrites an existing one. To revise a saved project's parameters: call get_project to recover its assemblies, amend the values, then call save_project again with the amended list (a revision-suffixed name like 'Pump Station R02' keeps the history browsable) and run recompute_project on the new project_id — recompute_project takes no parameter overrides. To measure a different assembly type instead, route via resolve_assembly_from_description. Re-find saved work in a later conversation with list_projects or get_project by exact name. Paid tier only — anonymous callers receive a TIER_INSUFFICIENT envelope pointing at https://civilquants.com/pricing.

ParametersJSON Schema
NameRequiredDescriptionDefault
requestYesBody for ``POST /api/v1/mcp/project/save``.

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.6/5.0
Behavior4/5

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

Annotations already indicate non-destructive write. Description adds behavioral context: never overwrites, uses revision naming, and mentions paid-tier restriction. No contradiction.

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?

Single dense paragraph that front-loads the purpose. Every sentence provides value, though could be more structured for readability. No wasted words.

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?

Given tool complexity, sibling context, and existing output schema, the description covers creation, revision workflow, alternative tools, and re-finding. Also addresses payment restrictions.

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 coverage is 100%, so baseline 3. Description adds value by explaining how to use the name parameter for revision and mentioning assemblies array, but does not detail each field.

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?

The description clearly states the tool persists a project with its assembly list and explicitly notes each call creates a new project, never overwriting. This distinguishes it from siblings like get_project or recompute_project.

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?

Provides explicit guidance on when to use: for revision, call get_project first, amend, then save with a revision-suffixed name; for a different assembly type, use resolve_assembly_from_description. Also notes paid tier requirement.

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

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 53 tool updates
    • Changedcompute_anchored_wall2 fields changed
      • changedInput schema / properties / output_mode / enum
        Previous value: -[
        -  "summary",
        -  "boq",
        -  "boq_with_backup",
        -  "full_json"
        -]New value: +[
        +  "summary",
        +  "material_schedule",
        +  "boq",
        +  "boq_with_backup",
        +  "full_json"
        +]
      • changedOutput schema / properties / result / anyOf
        Previous value: -[
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "_meta": {
        -        "additionalProperties": false,
        -        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        -        "properties": {
        -          "deliverables": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        -                "properties": {
        -                  "docx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "dxf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "expires_at": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  },
        -                  "pdf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "xlsx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "expires_at"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "document_id": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "issued_at": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "output_mode": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Surfaces what a trimmed ``output_mode`` withheld from ``data``.\n\nA trimmed mode (``summary`` / ``boq`` / ``boq_with_backup``) withholds\nalready-computed fields to keep the chat payload small. The withheld value\nreads to a client agent as \"capability missing\" (the box-culvert \"geometry\nbuilder isn't firing\" scare) rather than \"pared for size\": ``drawing`` and\n``audit_trail`` appear as ``null``, ``boq_rows`` as an empty list ``[]``\n(its type forbids ``null``) — both indistinguishable from a genuine absent\nresult. This names the withheld fields and the exact mode that brings each\nback, so the value is unambiguous. Absent on the default ``full_json`` mode\n— nothing is withheld, nothing to point at.",
        -                "properties": {
        -                  "mode": {
        -                    "enum": [
        -                      "summary",
        -                      "boq",
        -                      "boq_with_backup"
        -                    ],
        -                    "type": "string"
        -                  },
        -                  "omitted_fields": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "minItems": 1,
        -                    "type": "array"
        -                  },
        -                  "retrieve_with": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "mode",
        -                  "omitted_fields",
        -                  "retrieve_with"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "rate_limit_remaining": {
        -            "anyOf": [
        -              {
        -                "minimum": 0,
        -                "type": "integer"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "request_id": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "schema_version": {
        -            "const": "1.0.0",
        -            "default": "1.0.0",
        -            "type": "string"
        -          },
        -          "scope_boundary": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        -                "properties": {
        -                  "not_in_scope": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "produced": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "recommended_companions": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "type": "string"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "produced",
        -                  "not_in_scope"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tier": {
        -            "enum": [
        -              "free",
        -              "paid"
        -            ],
        -            "type": "string"
        -          },
        -          "tier_upgrade": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        -                "properties": {
        -                  "available_tiers": {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        -                      "properties": {
        -                        "billing": {
        -                          "enum": [
        -                            "one_off",
        -                            "monthly",
        -                            "annual"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "currency": {
        -                          "enum": [
        -                            "GBP",
        -                            "SGD",
        -                            "EUR",
        -                            "USD",
        -                            "CAD",
        -                            "AUD",
        -                            "NZD",
        -                            "MYR"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "display_name": {
        -                          "type": "string"
        -                        },
        -                        "price_local": {
        -                          "type": "number"
        -                        },
        -                        "tier_slug": {
        -                          "enum": [
        -                            "7_day_pass",
        -                            "solo",
        -                            "studio",
        -                            "practice"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "unlock_summary": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "tier_slug",
        -                        "display_name",
        -                        "price_local",
        -                        "currency",
        -                        "billing",
        -                        "unlock_summary"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "current_tier": {
        -                    "const": "free",
        -                    "default": "free",
        -                    "type": "string"
        -                  },
        -                  "pass_credit": {
        -                    "anyOf": [
        -                      {
        -                        "additionalProperties": false,
        -                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        -                        "properties": {
        -                          "amount_local": {
        -                            "type": "number"
        -                          },
        -                          "applies_to": {
        -                            "const": "solo_first_month",
        -                            "default": "solo_first_month",
        -                            "type": "string"
        -                          },
        -                          "currency": {
        -                            "type": "string"
        -                          },
        -                          "redeemable_until": {
        -                            "type": "string"
        -                          }
        -                        },
        -                        "required": [
        -                          "amount_local",
        -                          "currency",
        -                          "redeemable_until"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "pricing_url": {
        -                    "default": "https://civilquants.com/pricing",
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "available_tiers"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tos_url": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "upgrade_hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "warranty_disclaimer": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          }
        -        },
        -        "required": [
        -          "request_id",
        -          "issued_at",
        -          "tier"
        -        ],
        -        "type": "object"
        -      },
        -      "data": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Schema § 1.1 — the typed payload returned inside `MCPResponse[ComputeResult]`.\n\nFree-tier responses omit `drawings` (the downloadable CAD artefact\npointers — the paid differentiator); the bridge enforces this. The\n`audit_trail` and the inline `drawing` preview are present on BOTH tiers\n(V1 ALIGN / 60th-fire D + C). `text_summary` is bounded to 2000 chars —\nkeeps the LLM-facing summary token-cheap and forces longer narrative into\nBoQ row descriptions where it belongs. `warnings` is the non-fatal\ngeometry advisory list (both tiers).",
        -            "properties": {
        -              "assembly_slug": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "audit_trail": {
        -                "anyOf": [
        -                  {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.7 — paid-tier audit-trail entry.\n\nOne entry per BoQ row; `boq_row_index` ties to the row position in\n`ComputeResult.boq_rows`. `derivation` is the human-readable formula\nwalk-through; `formula` is the optional formal expression.",
        -                      "properties": {
        -                        "boq_row_index": {
        -                          "minimum": 0,
        -                          "type": "integer"
        -                        },
        -                        "derivation": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "formula": {
        -                          "anyOf": [
        -                            {
        -                              "type": "string"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ],
        -                          "default": null
        -                        },
        -                        "id": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "parameters_referenced": {
        -                          "items": {
        -                            "type": "string"
        -                          },
        -                          "type": "array"
        -                        }
        -                      },
        -                      "required": [
        -                        "id",
        -                        "boq_row_index",
        -                        "derivation"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "boq_rows": {
        -                "items": {
        -                  "additionalProperties": false,
        -                  "description": "Schema § 1.3 — a single bill row in the requested standard's format.\n\n`description` is the non-verbatim functional description per spec § 13.9 /\n§ 15 invariant — NEVER reproduces a standard's verbatim clause text.\n`rate` / `amount` ship null because rates are commodity data the customer\nowns; the engine's job is the measurement, not the pricing.",
        -                  "properties": {
        -                    "amount": {
        -                      "anyOf": [
        -                        {
        -                          "type": "number"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "attribution": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "audit_id": {
        -                      "anyOf": [
        -                        {
        -                          "type": "string"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "description": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "quantity": {
        -                      "minimum": 0,
        -                      "type": "number"
        -                    },
        -                    "rate": {
        -                      "anyOf": [
        -                        {
        -                          "type": "number"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "unit": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "work_section": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    }
        -                  },
        -                  "required": [
        -                    "work_section",
        -                    "description",
        -                    "quantity",
        -                    "unit",
        -                    "attribution"
        -                  ],
        -                  "type": "object"
        -                },
        -                "type": "array"
        -              },
        -              "drawing": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": false,
        -                    "description": "Schema § 1.6a — inline server-rendered SVG preview of the geometry.\n\nThe MCP mirror of the web ``/compute`` response's ``drawing`` field\n(``api.schemas.compute.DrawingRef``): the same on-screen dimensioned\ndrawing both tiers see in the workspace, surfaced on the MCP compute\nresponse so a chat client can render it inline (60th-fire item C). This\nis the on-screen preview — present on BOTH tiers per the free/paid\nboundary; the downloadable CAD artefacts (DXF / dimensioned PDF) remain\nthe paid differentiator via the export tools.\n\nDefined here rather than importing ``DrawingRef`` because the web\n``schemas`` package imports back into this module (``schemas.render``),\nso reusing it would create an import cycle — the MCP wire contract keeps\nits own copy, the same pattern as ``BoQRow`` / ``DrawingReference``.",
        -                    "properties": {
        -                      "entity_count": {
        -                        "minimum": 0,
        -                        "type": "integer"
        -                      },
        -                      "svg_b64": {
        -                        "minLength": 1,
        -                        "type": "string"
        -                      },
        -                      "unit_of_drawing": {
        -                        "const": "m",
        -                        "default": "m",
        -                        "type": "string"
        -                      },
        -                      "viewbox_height": {
        -                        "exclusiveMinimum": 0,
        -                        "type": "number"
        -                      },
        -                      "viewbox_width": {
        -                        "exclusiveMinimum": 0,
        -                        "type": "number"
        -                      },
        -                      "viewbox_x": {
        -                        "type": "number"
        -                      },
        -                      "viewbox_y": {
        -                        "type": "number"
        -                      }
        -                    },
        -                    "required": [
        -                      "svg_b64",
        -                      "viewbox_x",
        -                      "viewbox_y",
        -                      "viewbox_width",
        -                      "viewbox_height",
        -                      "entity_count"
        -                    ],
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "drawings": {
        -                "anyOf": [
        -                  {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.6 — paid-tier drawing artefact pointer.\n\n`url` is an R2-signed URL; expiry is carried in `_meta.deliverables.expires_at`\non the envelope (not duplicated here). `layers` is DXF-only; PDF/SVG\ncallers omit it.",
        -                      "properties": {
        -                        "drawing_type": {
        -                          "enum": [
        -                            "section",
        -                            "plan",
        -                            "elevation",
        -                            "isometric",
        -                            "detail"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "format": {
        -                          "enum": [
        -                            "DXF",
        -                            "PDF",
        -                            "SVG"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "layers": {
        -                          "anyOf": [
        -                            {
        -                              "items": {
        -                                "type": "string"
        -                              },
        -                              "type": "array"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ],
        -                          "default": null
        -                        },
        -                        "scale": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "sheet_size": {
        -                          "enum": [
        -                            "A1",
        -                            "A2",
        -                            "A3",
        -                            "A4"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "url": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "drawing_type",
        -                        "format",
        -                        "url",
        -                        "sheet_size",
        -                        "scale"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "parameters_used": {
        -                "additionalProperties": false,
        -                "description": "Schema § 1.2 — the parameter snapshot the engine actually used.\n\nSplits user-supplied values from engine defaults so customers can see\nwhich numbers came from them and which the engine filled in. Every\ndefaulted parameter SHOULD have a corresponding entry in `assumptions`\n— the bridge layer enforces this when wrapping engine output.",
        -                "properties": {
        -                  "assumptions": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "engine_defaults": {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  "user_supplied": {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  }
        -                },
        -                "type": "object"
        -              },
        -              "standard": {
        -                "enum": [
        -                  "CESMM4",
        -                  "NRM2",
        -                  "SMM7",
        -                  "MMHW"
        -                ],
        -                "type": "string"
        -              },
        -              "text_summary": {
        -                "maxLength": 2000,
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "totals_summary": {
        -                "additionalProperties": false,
        -                "description": "Schema § 1.4 — totals_summary as a typed wrapper around the free-form dict.\n\nWire shape is a flat object (`{\"concrete_m3\": {...}, \"rebar_t\": {...}}`).\nWe model it as `RootModel`-equivalent via `model_config(extra=\"allow\")`\n+ a single `__root__`-style `entries` dict. Pydantic v2 recommends\n`RootModel` for free-form roots; using a wrapper class keeps the import\nsurface uniform with the rest of this module.",
        -                "properties": {
        -                  "entries": {
        -                    "additionalProperties": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.4 — single material/work-class total entry.",
        -                      "properties": {
        -                        "quantity": {
        -                          "minimum": 0,
        -                          "type": "number"
        -                        },
        -                        "unit": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "quantity",
        -                        "unit"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "object"
        -                  }
        -                },
        -                "type": "object"
        -              },
        -              "warnings": {
        -                "items": {
        -                  "additionalProperties": false,
        -                  "description": "Schema § 1.8 — a non-fatal geometry advisory (56th-fire T2).\n\nThe wire projection of the engine's `core.GeometryWarning`. Advisory only:\na warning NEVER changes a measured quantity — it flags geometry that is\nvalid but likely a mistake (e.g. a stale dependent-height default). Present\non BOTH tiers — a correctness/safety signal, not a paid feature.",
        -                  "properties": {
        -                    "affected_params": {
        -                      "items": {
        -                        "type": "string"
        -                      },
        -                      "type": "array"
        -                    },
        -                    "code": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "detail": {
        -                      "additionalProperties": {
        -                        "type": "number"
        -                      },
        -                      "type": "object"
        -                    },
        -                    "message": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "severity": {
        -                      "enum": [
        -                        "info",
        -                        "advisory",
        -                        "caution"
        -                      ],
        -                      "type": "string"
        -                    }
        -                  },
        -                  "required": [
        -                    "code",
        -                    "severity",
        -                    "message"
        -                  ],
        -                  "type": "object"
        -                },
        -                "type": "array"
        -              }
        -            },
        -            "required": [
        -              "assembly_slug",
        -              "standard",
        -              "parameters_used",
        -              "boq_rows",
        -              "totals_summary",
        -              "text_summary"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      },
        -      "error": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        -            "properties": {
        -              "code": {
        -                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        -                "enum": [
        -                  "RATE_LIMIT_EXCEEDED",
        -                  "TIER_INSUFFICIENT",
        -                  "INVALID_INPUT",
        -                  "SCHEMA_VERSION_MISMATCH",
        -                  "SCHEMA_INVARIANT_VIOLATION",
        -                  "UPSTREAM_TIMEOUT",
        -                  "BACKEND_FAILURE",
        -                  "IP_BLOCKED",
        -                  "RESOURCE_NOT_FOUND",
        -                  "RENDER_FAILURE",
        -                  "OCR_LOW_CONFIDENCE",
        -                  "MANUAL_REVIEW_REQUIRED",
        -                  "ACCEPTANCE_REQUIRED",
        -                  "INVALID_TOKEN"
        -                ],
        -                "type": "string"
        -              },
        -              "details": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "message": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "recoverable": {
        -                "type": "boolean"
        -              },
        -              "retry_after_seconds": {
        -                "anyOf": [
        -                  {
        -                    "minimum": 0,
        -                    "type": "integer"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              }
        -            },
        -            "required": [
        -              "code",
        -              "message",
        -              "recoverable"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      }
        -    },
        -    "required": [
        -      "_meta"
        -    ],
        -    "type": "object"
        -  },
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "_meta": {
        -        "additionalProperties": false,
        -        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        -        "properties": {
        -          "deliverables": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        -                "properties": {
        -                  "docx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "dxf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "expires_at": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  },
        -                  "pdf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "xlsx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "expires_at"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "document_id": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "issued_at": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "output_mode": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Surfaces what a trimmed ``output_mode`` withheld from ``data``.\n\nA trimmed mode (``summary`` / ``boq`` / ``boq_with_backup``) withholds\nalready-computed fields to keep the chat payload small. The withheld value\nreads to a client agent as \"capability missing\" (the box-culvert \"geometry\nbuilder isn't firing\" scare) rather than \"pared for size\": ``drawing`` and\n``audit_trail`` appear as ``null``, ``boq_rows`` as an empty list ``[]``\n(its type forbids ``null``) — both indistinguishable from a genuine absent\nresult. This names the withheld fields and the exact mode that brings each\nback, so the value is unambiguous. Absent on the default ``full_json`` mode\n— nothing is withheld, nothing to point at.",
        -                "properties": {
        -                  "mode": {
        -                    "enum": [
        -                      "summary",
        -                      "boq",
        -                      "boq_with_backup"
        -                    ],
        -                    "type": "string"
        -                  },
        -                  "omitted_fields": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "minItems": 1,
        -                    "type": "array"
        -                  },
        -                  "retrieve_with": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "mode",
        -                  "omitted_fields",
        -                  "retrieve_with"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "rate_limit_remaining": {
        -            "anyOf": [
        -              {
        -                "minimum": 0,
        -                "type": "integer"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "request_id": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "schema_version": {
        -            "const": "1.0.0",
        -            "default": "1.0.0",
        -            "type": "string"
        -          },
        -          "scope_boundary": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        -                "properties": {
        -                  "not_in_scope": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "produced": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "recommended_companions": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "type": "string"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "produced",
        -                  "not_in_scope"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tier": {
        -            "enum": [
        -              "free",
        -              "paid"
        -            ],
        -            "type": "string"
        -          },
        -          "tier_upgrade": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        -                "properties": {
        -                  "available_tiers": {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        -                      "properties": {
        -                        "billing": {
        -                          "enum": [
        -                            "one_off",
        -                            "monthly",
        -                            "annual"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "currency": {
        -                          "enum": [
        -                            "GBP",
        -                            "SGD",
        -                            "EUR",
        -                            "USD",
        -                            "CAD",
        -                            "AUD",
        -                            "NZD",
        -                            "MYR"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "display_name": {
        -                          "type": "string"
        -                        },
        -                        "price_local": {
        -                          "type": "number"
        -                        },
        -                        "tier_slug": {
        -                          "enum": [
        -                            "7_day_pass",
        -                            "solo",
        -                            "studio",
        -                            "practice"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "unlock_summary": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "tier_slug",
        -                        "display_name",
        -                        "price_local",
        -                        "currency",
        -                        "billing",
        -                        "unlock_summary"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "current_tier": {
        -                    "const": "free",
        -                    "default": "free",
        -                    "type": "string"
        -                  },
        -                  "pass_credit": {
        -                    "anyOf": [
        -                      {
        -                        "additionalProperties": false,
        -                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        -                        "properties": {
        -                          "amount_local": {
        -                            "type": "number"
        -                          },
        -                          "applies_to": {
        -                            "const": "solo_first_month",
        -                            "default": "solo_first_month",
        -                            "type": "string"
        -                          },
        -                          "currency": {
        -                            "type": "string"
        -                          },
        -                          "redeemable_until": {
        -                            "type": "string"
        -                          }
        -                        },
        -                        "required": [
        -                          "amount_local",
        -                          "currency",
        -                          "redeemable_until"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "pricing_url": {
        -                    "default": "https://civilquants.com/pricing",
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "available_tiers"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tos_url": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "upgrade_hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "warranty_disclaimer": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          }
        -        },
        -        "required": [
        -          "request_id",
        -          "issued_at",
        -          "tier"
        -        ],
        -        "type": "object"
        -      },
        -      "data": {
        -        "default": null,
        -        "title": "Data"
        -      },
        -      "error": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        -            "properties": {
        -              "code": {
        -                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        -                "enum": [
        -                  "RATE_LIMIT_EXCEEDED",
        -                  "TIER_INSUFFICIENT",
        -                  "INVALID_INPUT",
        -                  "SCHEMA_VERSION_MISMATCH",
        -                  "SCHEMA_INVARIANT_VIOLATION",
        -                  "UPSTREAM_TIMEOUT",
        -                  "BACKEND_FAILURE",
        -                  "IP_BLOCKED",
        -                  "RESOURCE_NOT_FOUND",
        -                  "RENDER_FAILURE",
        -                  "OCR_LOW_CONFIDENCE",
        -                  "MANUAL_REVIEW_REQUIRED",
        -                  "ACCEPTANCE_REQUIRED",
        -                  "INVALID_TOKEN"
        -                ],
        -                "type": "string"
        -              },
        -              "details": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "message": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "recoverable": {
        -                "type": "boolean"
        -              },
        -              "retry_after_seconds": {
        -                "anyOf": [
        -                  {
        -                    "minimum": 0,
        -                    "type": "integer"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              }
        -            },
        -            "required": [
        -              "code",
        -              "message",
        -              "recoverable"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      }
        -    },
        -    "required": [
        -      "_meta"
        -    ],
        -    "type": "object"
        -  }
        -]New value: +[
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "_meta": {
        +        "additionalProperties": false,
        +        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        +        "properties": {
        +          "deliverables": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        +                "properties": {
        +                  "docx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "dxf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "expires_at": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  },
        +                  "pdf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "xlsx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "expires_at"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "document_id": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "issued_at": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "output_mode": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Surfaces what a trimmed ``output_mode`` withheld from ``data``.\n\nA trimmed mode (``summary`` / ``material_schedule`` / ``boq`` /\n``boq_with_backup``) withholds\nalready-computed fields to keep the chat payload small. The withheld value\nreads to a client agent as \"capability missing\" (the box-culvert \"geometry\nbuilder isn't firing\" scare) rather than \"pared for size\": ``drawing`` and\n``audit_trail`` appear as ``null``, ``boq_rows`` as an empty list ``[]``\n(its type forbids ``null``) — both indistinguishable from a genuine absent\nresult. This names the withheld fields and the exact mode that brings each\nback, so the value is unambiguous. Absent on the default ``full_json`` mode\n— nothing is withheld, nothing to point at.",
        +                "properties": {
        +                  "mode": {
        +                    "enum": [
        +                      "summary",
        +                      "material_schedule",
        +                      "boq",
        +                      "boq_with_backup"
        +                    ],
        +                    "type": "string"
        +                  },
        +                  "omitted_fields": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "minItems": 1,
        +                    "type": "array"
        +                  },
        +                  "retrieve_with": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "mode",
        +                  "omitted_fields",
        +                  "retrieve_with"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "rate_limit_remaining": {
        +            "anyOf": [
        +              {
        +                "minimum": 0,
        +                "type": "integer"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "request_id": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "schema_version": {
        +            "const": "1.0.0",
        +            "default": "1.0.0",
        +            "type": "string"
        +          },
        +          "scope_boundary": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        +                "properties": {
        +                  "not_in_scope": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "produced": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "recommended_companions": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "type": "string"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "produced",
        +                  "not_in_scope"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tier": {
        +            "enum": [
        +              "free",
        +              "paid"
        +            ],
        +            "type": "string"
        +          },
        +          "tier_upgrade": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        +                "properties": {
        +                  "available_tiers": {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        +                      "properties": {
        +                        "billing": {
        +                          "enum": [
        +                            "one_off",
        +                            "monthly",
        +                            "annual"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "currency": {
        +                          "enum": [
        +                            "GBP",
        +                            "SGD",
        +                            "EUR",
        +                            "USD",
        +                            "CAD",
        +                            "AUD",
        +                            "NZD",
        +                            "MYR"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "display_name": {
        +                          "type": "string"
        +                        },
        +                        "price_local": {
        +                          "type": "number"
        +                        },
        +                        "tier_slug": {
        +                          "enum": [
        +                            "7_day_pass",
        +                            "solo",
        +                            "studio",
        +                            "practice"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "unlock_summary": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "tier_slug",
        +                        "display_name",
        +                        "price_local",
        +                        "currency",
        +                        "billing",
        +                        "unlock_summary"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "current_tier": {
        +                    "const": "free",
        +                    "default": "free",
        +                    "type": "string"
        +                  },
        +                  "pass_credit": {
        +                    "anyOf": [
        +                      {
        +                        "additionalProperties": false,
        +                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        +                        "properties": {
        +                          "amount_local": {
        +                            "type": "number"
        +                          },
        +                          "applies_to": {
        +                            "const": "solo_first_month",
        +                            "default": "solo_first_month",
        +                            "type": "string"
        +                          },
        +                          "currency": {
        +                            "type": "string"
        +                          },
        +                          "redeemable_until": {
        +                            "type": "string"
        +                          }
        +                        },
        +                        "required": [
        +                          "amount_local",
        +                          "currency",
        +                          "redeemable_until"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "pricing_url": {
        +                    "default": "https://civilquants.com/pricing",
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "available_tiers"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tos_url": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "upgrade_hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "warranty_disclaimer": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          }
        +        },
        +        "required": [
        +          "request_id",
        +          "issued_at",
        +          "tier"
        +        ],
        +        "type": "object"
        +      },
        +      "data": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Schema § 1.1 — the typed payload returned inside `MCPResponse[ComputeResult]`.\n\nFree-tier responses omit `drawings` (the downloadable CAD artefact\npointers — the paid differentiator); the bridge enforces this. The\n`audit_trail` and the inline `drawing` preview are present on BOTH tiers\n(V1 ALIGN / 60th-fire D + C). `text_summary` is bounded to 2000 chars —\nkeeps the LLM-facing summary token-cheap and forces longer narrative into\nBoQ row descriptions where it belongs. `warnings` is the non-fatal\ngeometry advisory list (both tiers).",
        +            "properties": {
        +              "assembly_slug": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "audit_trail": {
        +                "anyOf": [
        +                  {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.7 — paid-tier audit-trail entry.\n\nOne entry per BoQ row; `boq_row_index` ties to the row position in\n`ComputeResult.boq_rows`. `derivation` is the human-readable formula\nwalk-through; `formula` is the optional formal expression.",
        +                      "properties": {
        +                        "boq_row_index": {
        +                          "minimum": 0,
        +                          "type": "integer"
        +                        },
        +                        "derivation": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "formula": {
        +                          "anyOf": [
        +                            {
        +                              "type": "string"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ],
        +                          "default": null
        +                        },
        +                        "id": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "parameters_referenced": {
        +                          "items": {
        +                            "type": "string"
        +                          },
        +                          "type": "array"
        +                        }
        +                      },
        +                      "required": [
        +                        "id",
        +                        "boq_row_index",
        +                        "derivation"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "boq_rows": {
        +                "items": {
        +                  "additionalProperties": false,
        +                  "description": "Schema § 1.3 — a single bill row in the requested standard's format.\n\n`description` is the non-verbatim functional description per spec § 13.9 /\n§ 15 invariant — NEVER reproduces a standard's verbatim clause text.\n`rate` / `amount` ship null because rates are commodity data the customer\nowns; the engine's job is the measurement, not the pricing.",
        +                  "properties": {
        +                    "amount": {
        +                      "anyOf": [
        +                        {
        +                          "type": "number"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "attribution": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "audit_id": {
        +                      "anyOf": [
        +                        {
        +                          "type": "string"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "description": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "quantity": {
        +                      "minimum": 0,
        +                      "type": "number"
        +                    },
        +                    "rate": {
        +                      "anyOf": [
        +                        {
        +                          "type": "number"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "unit": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "work_section": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    }
        +                  },
        +                  "required": [
        +                    "work_section",
        +                    "description",
        +                    "quantity",
        +                    "unit",
        +                    "attribution"
        +                  ],
        +                  "type": "object"
        +                },
        +                "type": "array"
        +              },
        +              "drawing": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": false,
        +                    "description": "Schema § 1.6a — inline server-rendered SVG preview of the geometry.\n\nThe MCP mirror of the web ``/compute`` response's ``drawing`` field\n(``api.schemas.compute.DrawingRef``): the same on-screen dimensioned\ndrawing both tiers see in the workspace, surfaced on the MCP compute\nresponse so a chat client can render it inline (60th-fire item C). This\nis the on-screen preview — present on BOTH tiers per the free/paid\nboundary; the downloadable CAD artefacts (DXF / dimensioned PDF) remain\nthe paid differentiator via the export tools.\n\nDefined here rather than importing ``DrawingRef`` because the web\n``schemas`` package imports back into this module (``schemas.render``),\nso reusing it would create an import cycle — the MCP wire contract keeps\nits own copy, the same pattern as ``BoQRow`` / ``DrawingReference``.",
        +                    "properties": {
        +                      "entity_count": {
        +                        "minimum": 0,
        +                        "type": "integer"
        +                      },
        +                      "svg_b64": {
        +                        "minLength": 1,
        +                        "type": "string"
        +                      },
        +                      "unit_of_drawing": {
        +                        "const": "m",
        +                        "default": "m",
        +                        "type": "string"
        +                      },
        +                      "viewbox_height": {
        +                        "exclusiveMinimum": 0,
        +                        "type": "number"
        +                      },
        +                      "viewbox_width": {
        +                        "exclusiveMinimum": 0,
        +                        "type": "number"
        +                      },
        +                      "viewbox_x": {
        +                        "type": "number"
        +                      },
        +                      "viewbox_y": {
        +                        "type": "number"
        +                      }
        +                    },
        +                    "required": [
        +                      "svg_b64",
        +                      "viewbox_x",
        +                      "viewbox_y",
        +                      "viewbox_width",
        +                      "viewbox_height",
        +                      "entity_count"
        +                    ],
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "drawings": {
        +                "anyOf": [
        +                  {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.6 — paid-tier drawing artefact pointer.\n\n`url` is an R2-signed URL; expiry is carried in `_meta.deliverables.expires_at`\non the envelope (not duplicated here). `layers` is DXF-only; PDF/SVG\ncallers omit it.",
        +                      "properties": {
        +                        "drawing_type": {
        +                          "enum": [
        +                            "section",
        +                            "plan",
        +                            "elevation",
        +                            "isometric",
        +                            "detail"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "format": {
        +                          "enum": [
        +                            "DXF",
        +                            "PDF",
        +                            "SVG"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "layers": {
        +                          "anyOf": [
        +                            {
        +                              "items": {
        +                                "type": "string"
        +                              },
        +                              "type": "array"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ],
        +                          "default": null
        +                        },
        +                        "scale": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "sheet_size": {
        +                          "enum": [
        +                            "A1",
        +                            "A2",
        +                            "A3",
        +                            "A4"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "url": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "drawing_type",
        +                        "format",
        +                        "url",
        +                        "sheet_size",
        +                        "scale"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "parameters_used": {
        +                "additionalProperties": false,
        +                "description": "Schema § 1.2 — the parameter snapshot the engine actually used.\n\nSplits user-supplied values from engine defaults so customers can see\nwhich numbers came from them and which the engine filled in. Every\ndefaulted parameter SHOULD have a corresponding entry in `assumptions`\n— the bridge layer enforces this when wrapping engine output.",
        +                "properties": {
        +                  "assumptions": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "engine_defaults": {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  "user_supplied": {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  }
        +                },
        +                "type": "object"
        +              },
        +              "standard": {
        +                "enum": [
        +                  "CESMM4",
        +                  "NRM2",
        +                  "SMM7",
        +                  "MMHW"
        +                ],
        +                "type": "string"
        +              },
        +              "text_summary": {
        +                "maxLength": 2000,
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "totals_summary": {
        +                "additionalProperties": false,
        +                "description": "Schema § 1.4 — totals_summary as a typed wrapper around the free-form dict.\n\nWire shape is a flat object (`{\"concrete_m3\": {...}, \"rebar_t\": {...}}`).\nWe model it as `RootModel`-equivalent via `model_config(extra=\"allow\")`\n+ a single `__root__`-style `entries` dict. Pydantic v2 recommends\n`RootModel` for free-form roots; using a wrapper class keeps the import\nsurface uniform with the rest of this module.",
        +                "properties": {
        +                  "entries": {
        +                    "additionalProperties": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.4 — single material/work-class total entry.",
        +                      "properties": {
        +                        "quantity": {
        +                          "minimum": 0,
        +                          "type": "number"
        +                        },
        +                        "unit": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "quantity",
        +                        "unit"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "object"
        +                  }
        +                },
        +                "type": "object"
        +              },
        +              "warnings": {
        +                "items": {
        +                  "additionalProperties": false,
        +                  "description": "Schema § 1.8 — a non-fatal geometry advisory (56th-fire T2).\n\nThe wire projection of the engine's `core.GeometryWarning`. Advisory only:\na warning NEVER changes a measured quantity — it flags geometry that is\nvalid but likely a mistake (e.g. a stale dependent-height default). Present\non BOTH tiers — a correctness/safety signal, not a paid feature.",
        +                  "properties": {
        +                    "affected_params": {
        +                      "items": {
        +                        "type": "string"
        +                      },
        +                      "type": "array"
        +                    },
        +                    "code": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "detail": {
        +                      "additionalProperties": {
        +                        "type": "number"
        +                      },
        +                      "type": "object"
        +                    },
        +                    "message": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "severity": {
        +                      "enum": [
        +                        "info",
        +                        "advisory",
        +                        "caution"
        +                      ],
        +                      "type": "string"
        +                    }
        +                  },
        +                  "required": [
        +                    "code",
        +                    "severity",
        +                    "message"
        +                  ],
        +                  "type": "object"
        +                },
        +                "type": "array"
        +              }
        +            },
        +            "required": [
        +              "assembly_slug",
        +              "standard",
        +              "parameters_used",
        +              "boq_rows",
        +              "totals_summary",
        +              "text_summary"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      },
        +      "error": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        +            "properties": {
        +              "code": {
        +                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        +                "enum": [
        +                  "RATE_LIMIT_EXCEEDED",
        +                  "TIER_INSUFFICIENT",
        +                  "INVALID_INPUT",
        +                  "SCHEMA_VERSION_MISMATCH",
        +                  "SCHEMA_INVARIANT_VIOLATION",
        +                  "UPSTREAM_TIMEOUT",
        +                  "BACKEND_FAILURE",
        +                  "IP_BLOCKED",
        +                  "RESOURCE_NOT_FOUND",
        +                  "RENDER_FAILURE",
        +                  "OCR_LOW_CONFIDENCE",
        +                  "MANUAL_REVIEW_REQUIRED",
        +                  "ACCEPTANCE_REQUIRED",
        +                  "INVALID_TOKEN"
        +                ],
        +                "type": "string"
        +              },
        +              "details": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "message": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "recoverable": {
        +                "type": "boolean"
        +              },
        +              "retry_after_seconds": {
        +                "anyOf": [
        +                  {
        +                    "minimum": 0,
        +                    "type": "integer"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              }
        +            },
        +            "required": [
        +              "code",
        +              "message",
        +              "recoverable"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      }
        +    },
        +    "required": [
        +      "_meta"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "_meta": {
        +        "additionalProperties": false,
        +        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        +        "properties": {
        +          "deliverables": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        +                "properties": {
        +                  "docx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "dxf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "expires_at": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  },
        +                  "pdf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "xlsx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "expires_at"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "document_id": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "issued_at": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "output_mode": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Surfaces what a trimmed ``output_mode`` withheld from ``data``.\n\nA trimmed mode (``summary`` / ``material_schedule`` / ``boq`` /\n``boq_with_backup``) withholds\nalready-computed fields to keep the chat payload small. The withheld value\nreads to a client agent as \"capability missing\" (the box-culvert \"geometry\nbuilder isn't firing\" scare) rather than \"pared for size\": ``drawing`` and\n``audit_trail`` appear as ``null``, ``boq_rows`` as an empty list ``[]``\n(its type forbids ``null``) — both indistinguishable from a genuine absent\nresult. This names the withheld fields and the exact mode that brings each\nback, so the value is unambiguous. Absent on the default ``full_json`` mode\n— nothing is withheld, nothing to point at.",
        +                "properties": {
        +                  "mode": {
        +                    "enum": [
        +                      "summary",
        +                      "material_schedule",
        +                      "boq",
        +                      "boq_with_backup"
        +                    ],
        +                    "type": "string"
        +                  },
        +                  "omitted_fields": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "minItems": 1,
        +                    "type": "array"
        +                  },
        +                  "retrieve_with": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "mode",
        +                  "omitted_fields",
        +                  "retrieve_with"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "rate_limit_remaining": {
        +            "anyOf": [
        +              {
        +                "minimum": 0,
        +                "type": "integer"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "request_id": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "schema_version": {
        +            "const": "1.0.0",
        +            "default": "1.0.0",
        +            "type": "string"
        +          },
        +          "scope_boundary": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        +                "properties": {
        +                  "not_in_scope": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "produced": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "recommended_companions": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "type": "string"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "produced",
        +                  "not_in_scope"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tier": {
        +            "enum": [
        +              "free",
        +              "paid"
        +            ],
        +            "type": "string"
        +          },
        +          "tier_upgrade": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        +                "properties": {
        +                  "available_tiers": {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        +                      "properties": {
        +                        "billing": {
        +                          "enum": [
        +                            "one_off",
        +                            "monthly",
        +                            "annual"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "currency": {
        +                          "enum": [
        +                            "GBP",
        +                            "SGD",
        +                            "EUR",
        +                            "USD",
        +                            "CAD",
        +                            "AUD",
        +                            "NZD",
        +                            "MYR"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "display_name": {
        +                          "type": "string"
        +                        },
        +                        "price_local": {
        +                          "type": "number"
        +                        },
        +                        "tier_slug": {
        +                          "enum": [
        +                            "7_day_pass",
        +                            "solo",
        +                            "studio",
        +                            "practice"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "unlock_summary": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "tier_slug",
        +                        "display_name",
        +                        "price_local",
        +                        "currency",
        +                        "billing",
        +                        "unlock_summary"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "current_tier": {
        +                    "const": "free",
        +                    "default": "free",
        +                    "type": "string"
        +                  },
        +                  "pass_credit": {
        +                    "anyOf": [
        +                      {
        +                        "additionalProperties": false,
        +                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        +                        "properties": {
        +                          "amount_local": {
        +                            "type": "number"
        +                          },
        +                          "applies_to": {
        +                            "const": "solo_first_month",
        +                            "default": "solo_first_month",
        +                            "type": "string"
        +                          },
        +                          "currency": {
        +                            "type": "string"
        +                          },
        +                          "redeemable_until": {
        +                            "type": "string"
        +                          }
        +                        },
        +                        "required": [
        +                          "amount_local",
        +                          "currency",
        +                          "redeemable_until"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "pricing_url": {
        +                    "default": "https://civilquants.com/pricing",
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "available_tiers"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tos_url": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "upgrade_hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "warranty_disclaimer": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          }
        +        },
        +        "required": [
        +          "request_id",
        +          "issued_at",
        +          "tier"
        +        ],
        +        "type": "object"
        +      },
        +      "data": {
        +        "default": null,
        +        "title": "Data"
        +      },
        +      "error": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        +            "properties": {
        +              "code": {
        +                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        +                "enum": [
        +                  "RATE_LIMIT_EXCEEDED",
        +                  "TIER_INSUFFICIENT",
        +                  "INVALID_INPUT",
        +                  "SCHEMA_VERSION_MISMATCH",
        +                  "SCHEMA_INVARIANT_VIOLATION",
        +                  "UPSTREAM_TIMEOUT",
        +                  "BACKEND_FAILURE",
        +                  "IP_BLOCKED",
        +                  "RESOURCE_NOT_FOUND",
        +                  "RENDER_FAILURE",
        +                  "OCR_LOW_CONFIDENCE",
        +                  "MANUAL_REVIEW_REQUIRED",
        +                  "ACCEPTANCE_REQUIRED",
        +                  "INVALID_TOKEN"
        +                ],
        +                "type": "string"
        +              },
        +              "details": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "message": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "recoverable": {
        +                "type": "boolean"
        +              },
        +              "retry_after_seconds": {
        +                "anyOf": [
        +                  {
        +                    "minimum": 0,
        +                    "type": "integer"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              }
        +            },
        +            "required": [
        +              "code",
        +              "message",
        +              "recoverable"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      }
        +    },
        +    "required": [
        +      "_meta"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedcompute_attenuation_tank2 fields changed
      • changedInput schema / properties / output_mode / enum
        Previous value: -[
        -  "summary",
        -  "boq",
        -  "boq_with_backup",
        -  "full_json"
        -]New value: +[
        +  "summary",
        +  "material_schedule",
        +  "boq",
        +  "boq_with_backup",
        +  "full_json"
        +]
      • changedOutput schema / properties / result / anyOf
        Previous value: -[
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "_meta": {
        -        "additionalProperties": false,
        -        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        -        "properties": {
        -          "deliverables": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        -                "properties": {
        -                  "docx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "dxf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "expires_at": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  },
        -                  "pdf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "xlsx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "expires_at"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "document_id": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "issued_at": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "output_mode": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Surfaces what a trimmed ``output_mode`` withheld from ``data``.\n\nA trimmed mode (``summary`` / ``boq`` / ``boq_with_backup``) withholds\nalready-computed fields to keep the chat payload small. The withheld value\nreads to a client agent as \"capability missing\" (the box-culvert \"geometry\nbuilder isn't firing\" scare) rather than \"pared for size\": ``drawing`` and\n``audit_trail`` appear as ``null``, ``boq_rows`` as an empty list ``[]``\n(its type forbids ``null``) — both indistinguishable from a genuine absent\nresult. This names the withheld fields and the exact mode that brings each\nback, so the value is unambiguous. Absent on the default ``full_json`` mode\n— nothing is withheld, nothing to point at.",
        -                "properties": {
        -                  "mode": {
        -                    "enum": [
        -                      "summary",
        -                      "boq",
        -                      "boq_with_backup"
        -                    ],
        -                    "type": "string"
        -                  },
        -                  "omitted_fields": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "minItems": 1,
        -                    "type": "array"
        -                  },
        -                  "retrieve_with": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "mode",
        -                  "omitted_fields",
        -                  "retrieve_with"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "rate_limit_remaining": {
        -            "anyOf": [
        -              {
        -                "minimum": 0,
        -                "type": "integer"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "request_id": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "schema_version": {
        -            "const": "1.0.0",
        -            "default": "1.0.0",
        -            "type": "string"
        -          },
        -          "scope_boundary": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        -                "properties": {
        -                  "not_in_scope": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "produced": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "recommended_companions": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "type": "string"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "produced",
        -                  "not_in_scope"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tier": {
        -            "enum": [
        -              "free",
        -              "paid"
        -            ],
        -            "type": "string"
        -          },
        -          "tier_upgrade": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        -                "properties": {
        -                  "available_tiers": {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        -                      "properties": {
        -                        "billing": {
        -                          "enum": [
        -                            "one_off",
        -                            "monthly",
        -                            "annual"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "currency": {
        -                          "enum": [
        -                            "GBP",
        -                            "SGD",
        -                            "EUR",
        -                            "USD",
        -                            "CAD",
        -                            "AUD",
        -                            "NZD",
        -                            "MYR"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "display_name": {
        -                          "type": "string"
        -                        },
        -                        "price_local": {
        -                          "type": "number"
        -                        },
        -                        "tier_slug": {
        -                          "enum": [
        -                            "7_day_pass",
        -                            "solo",
        -                            "studio",
        -                            "practice"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "unlock_summary": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "tier_slug",
        -                        "display_name",
        -                        "price_local",
        -                        "currency",
        -                        "billing",
        -                        "unlock_summary"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "current_tier": {
        -                    "const": "free",
        -                    "default": "free",
        -                    "type": "string"
        -                  },
        -                  "pass_credit": {
        -                    "anyOf": [
        -                      {
        -                        "additionalProperties": false,
        -                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        -                        "properties": {
        -                          "amount_local": {
        -                            "type": "number"
        -                          },
        -                          "applies_to": {
        -                            "const": "solo_first_month",
        -                            "default": "solo_first_month",
        -                            "type": "string"
        -                          },
        -                          "currency": {
        -                            "type": "string"
        -                          },
        -                          "redeemable_until": {
        -                            "type": "string"
        -                          }
        -                        },
        -                        "required": [
        -                          "amount_local",
        -                          "currency",
        -                          "redeemable_until"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "pricing_url": {
        -                    "default": "https://civilquants.com/pricing",
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "available_tiers"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tos_url": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "upgrade_hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "warranty_disclaimer": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          }
        -        },
        -        "required": [
        -          "request_id",
        -          "issued_at",
        -          "tier"
        -        ],
        -        "type": "object"
        -      },
        -      "data": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Schema § 1.1 — the typed payload returned inside `MCPResponse[ComputeResult]`.\n\nFree-tier responses omit `drawings` (the downloadable CAD artefact\npointers — the paid differentiator); the bridge enforces this. The\n`audit_trail` and the inline `drawing` preview are present on BOTH tiers\n(V1 ALIGN / 60th-fire D + C). `text_summary` is bounded to 2000 chars —\nkeeps the LLM-facing summary token-cheap and forces longer narrative into\nBoQ row descriptions where it belongs. `warnings` is the non-fatal\ngeometry advisory list (both tiers).",
        -            "properties": {
        -              "assembly_slug": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "audit_trail": {
        -                "anyOf": [
        -                  {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.7 — paid-tier audit-trail entry.\n\nOne entry per BoQ row; `boq_row_index` ties to the row position in\n`ComputeResult.boq_rows`. `derivation` is the human-readable formula\nwalk-through; `formula` is the optional formal expression.",
        -                      "properties": {
        -                        "boq_row_index": {
        -                          "minimum": 0,
        -                          "type": "integer"
        -                        },
        -                        "derivation": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "formula": {
        -                          "anyOf": [
        -                            {
        -                              "type": "string"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ],
        -                          "default": null
        -                        },
        -                        "id": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "parameters_referenced": {
        -                          "items": {
        -                            "type": "string"
        -                          },
        -                          "type": "array"
        -                        }
        -                      },
        -                      "required": [
        -                        "id",
        -                        "boq_row_index",
        -                        "derivation"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "boq_rows": {
        -                "items": {
        -                  "additionalProperties": false,
        -                  "description": "Schema § 1.3 — a single bill row in the requested standard's format.\n\n`description` is the non-verbatim functional description per spec § 13.9 /\n§ 15 invariant — NEVER reproduces a standard's verbatim clause text.\n`rate` / `amount` ship null because rates are commodity data the customer\nowns; the engine's job is the measurement, not the pricing.",
        -                  "properties": {
        -                    "amount": {
        -                      "anyOf": [
        -                        {
        -                          "type": "number"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "attribution": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "audit_id": {
        -                      "anyOf": [
        -                        {
        -                          "type": "string"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "description": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "quantity": {
        -                      "minimum": 0,
        -                      "type": "number"
        -                    },
        -                    "rate": {
        -                      "anyOf": [
        -                        {
        -                          "type": "number"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "unit": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "work_section": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    }
        -                  },
        -                  "required": [
        -                    "work_section",
        -                    "description",
        -                    "quantity",
        -                    "unit",
        -                    "attribution"
        -                  ],
        -                  "type": "object"
        -                },
        -                "type": "array"
        -              },
        -              "drawing": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": false,
        -                    "description": "Schema § 1.6a — inline server-rendered SVG preview of the geometry.\n\nThe MCP mirror of the web ``/compute`` response's ``drawing`` field\n(``api.schemas.compute.DrawingRef``): the same on-screen dimensioned\ndrawing both tiers see in the workspace, surfaced on the MCP compute\nresponse so a chat client can render it inline (60th-fire item C). This\nis the on-screen preview — present on BOTH tiers per the free/paid\nboundary; the downloadable CAD artefacts (DXF / dimensioned PDF) remain\nthe paid differentiator via the export tools.\n\nDefined here rather than importing ``DrawingRef`` because the web\n``schemas`` package imports back into this module (``schemas.render``),\nso reusing it would create an import cycle — the MCP wire contract keeps\nits own copy, the same pattern as ``BoQRow`` / ``DrawingReference``.",
        -                    "properties": {
        -                      "entity_count": {
        -                        "minimum": 0,
        -                        "type": "integer"
        -                      },
        -                      "svg_b64": {
        -                        "minLength": 1,
        -                        "type": "string"
        -                      },
        -                      "unit_of_drawing": {
        -                        "const": "m",
        -                        "default": "m",
        -                        "type": "string"
        -                      },
        -                      "viewbox_height": {
        -                        "exclusiveMinimum": 0,
        -                        "type": "number"
        -                      },
        -                      "viewbox_width": {
        -                        "exclusiveMinimum": 0,
        -                        "type": "number"
        -                      },
        -                      "viewbox_x": {
        -                        "type": "number"
        -                      },
        -                      "viewbox_y": {
        -                        "type": "number"
        -                      }
        -                    },
        -                    "required": [
        -                      "svg_b64",
        -                      "viewbox_x",
        -                      "viewbox_y",
        -                      "viewbox_width",
        -                      "viewbox_height",
        -                      "entity_count"
        -                    ],
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "drawings": {
        -                "anyOf": [
        -                  {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.6 — paid-tier drawing artefact pointer.\n\n`url` is an R2-signed URL; expiry is carried in `_meta.deliverables.expires_at`\non the envelope (not duplicated here). `layers` is DXF-only; PDF/SVG\ncallers omit it.",
        -                      "properties": {
        -                        "drawing_type": {
        -                          "enum": [
        -                            "section",
        -                            "plan",
        -                            "elevation",
        -                            "isometric",
        -                            "detail"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "format": {
        -                          "enum": [
        -                            "DXF",
        -                            "PDF",
        -                            "SVG"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "layers": {
        -                          "anyOf": [
        -                            {
        -                              "items": {
        -                                "type": "string"
        -                              },
        -                              "type": "array"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ],
        -                          "default": null
        -                        },
        -                        "scale": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "sheet_size": {
        -                          "enum": [
        -                            "A1",
        -                            "A2",
        -                            "A3",
        -                            "A4"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "url": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "drawing_type",
        -                        "format",
        -                        "url",
        -                        "sheet_size",
        -                        "scale"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "parameters_used": {
        -                "additionalProperties": false,
        -                "description": "Schema § 1.2 — the parameter snapshot the engine actually used.\n\nSplits user-supplied values from engine defaults so customers can see\nwhich numbers came from them and which the engine filled in. Every\ndefaulted parameter SHOULD have a corresponding entry in `assumptions`\n— the bridge layer enforces this when wrapping engine output.",
        -                "properties": {
        -                  "assumptions": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "engine_defaults": {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  "user_supplied": {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  }
        -                },
        -                "type": "object"
        -              },
        -              "standard": {
        -                "enum": [
        -                  "CESMM4",
        -                  "NRM2",
        -                  "SMM7",
        -                  "MMHW"
        -                ],
        -                "type": "string"
        -              },
        -              "text_summary": {
        -                "maxLength": 2000,
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "totals_summary": {
        -                "additionalProperties": false,
        -                "description": "Schema § 1.4 — totals_summary as a typed wrapper around the free-form dict.\n\nWire shape is a flat object (`{\"concrete_m3\": {...}, \"rebar_t\": {...}}`).\nWe model it as `RootModel`-equivalent via `model_config(extra=\"allow\")`\n+ a single `__root__`-style `entries` dict. Pydantic v2 recommends\n`RootModel` for free-form roots; using a wrapper class keeps the import\nsurface uniform with the rest of this module.",
        -                "properties": {
        -                  "entries": {
        -                    "additionalProperties": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.4 — single material/work-class total entry.",
        -                      "properties": {
        -                        "quantity": {
        -                          "minimum": 0,
        -                          "type": "number"
        -                        },
        -                        "unit": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "quantity",
        -                        "unit"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "object"
        -                  }
        -                },
        -                "type": "object"
        -              },
        -              "warnings": {
        -                "items": {
        -                  "additionalProperties": false,
        -                  "description": "Schema § 1.8 — a non-fatal geometry advisory (56th-fire T2).\n\nThe wire projection of the engine's `core.GeometryWarning`. Advisory only:\na warning NEVER changes a measured quantity — it flags geometry that is\nvalid but likely a mistake (e.g. a stale dependent-height default). Present\non BOTH tiers — a correctness/safety signal, not a paid feature.",
        -                  "properties": {
        -                    "affected_params": {
        -                      "items": {
        -                        "type": "string"
        -                      },
        -                      "type": "array"
        -                    },
        -                    "code": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "detail": {
        -                      "additionalProperties": {
        -                        "type": "number"
        -                      },
        -                      "type": "object"
        -                    },
        -                    "message": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "severity": {
        -                      "enum": [
        -                        "info",
        -                        "advisory",
        -                        "caution"
        -                      ],
        -                      "type": "string"
        -                    }
        -                  },
        -                  "required": [
        -                    "code",
        -                    "severity",
        -                    "message"
        -                  ],
        -                  "type": "object"
        -                },
        -                "type": "array"
        -              }
        -            },
        -            "required": [
        -              "assembly_slug",
        -              "standard",
        -              "parameters_used",
        -              "boq_rows",
        -              "totals_summary",
        -              "text_summary"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      },
        -      "error": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        -            "properties": {
        -              "code": {
        -                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        -                "enum": [
        -                  "RATE_LIMIT_EXCEEDED",
        -                  "TIER_INSUFFICIENT",
        -                  "INVALID_INPUT",
        -                  "SCHEMA_VERSION_MISMATCH",
        -                  "SCHEMA_INVARIANT_VIOLATION",
        -                  "UPSTREAM_TIMEOUT",
        -                  "BACKEND_FAILURE",
        -                  "IP_BLOCKED",
        -                  "RESOURCE_NOT_FOUND",
        -                  "RENDER_FAILURE",
        -                  "OCR_LOW_CONFIDENCE",
        -                  "MANUAL_REVIEW_REQUIRED",
        -                  "ACCEPTANCE_REQUIRED",
        -                  "INVALID_TOKEN"
        -                ],
        -                "type": "string"
        -              },
        -              "details": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "message": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "recoverable": {
        -                "type": "boolean"
        -              },
        -              "retry_after_seconds": {
        -                "anyOf": [
        -                  {
        -                    "minimum": 0,
        -                    "type": "integer"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              }
        -            },
        -            "required": [
        -              "code",
        -              "message",
        -              "recoverable"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      }
        -    },
        -    "required": [
        -      "_meta"
        -    ],
        -    "type": "object"
        -  },
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "_meta": {
        -        "additionalProperties": false,
        -        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        -        "properties": {
        -          "deliverables": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        -                "properties": {
        -                  "docx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "dxf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "expires_at": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  },
        -                  "pdf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "xlsx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "expires_at"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "document_id": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "issued_at": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "output_mode": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Surfaces what a trimmed ``output_mode`` withheld from ``data``.\n\nA trimmed mode (``summary`` / ``boq`` / ``boq_with_backup``) withholds\nalready-computed fields to keep the chat payload small. The withheld value\nreads to a client agent as \"capability missing\" (the box-culvert \"geometry\nbuilder isn't firing\" scare) rather than \"pared for size\": ``drawing`` and\n``audit_trail`` appear as ``null``, ``boq_rows`` as an empty list ``[]``\n(its type forbids ``null``) — both indistinguishable from a genuine absent\nresult. This names the withheld fields and the exact mode that brings each\nback, so the value is unambiguous. Absent on the default ``full_json`` mode\n— nothing is withheld, nothing to point at.",
        -                "properties": {
        -                  "mode": {
        -                    "enum": [
        -                      "summary",
        -                      "boq",
        -                      "boq_with_backup"
        -                    ],
        -                    "type": "string"
        -                  },
        -                  "omitted_fields": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "minItems": 1,
        -                    "type": "array"
        -                  },
        -                  "retrieve_with": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "mode",
        -                  "omitted_fields",
        -                  "retrieve_with"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "rate_limit_remaining": {
        -            "anyOf": [
        -              {
        -                "minimum": 0,
        -                "type": "integer"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "request_id": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "schema_version": {
        -            "const": "1.0.0",
        -            "default": "1.0.0",
        -            "type": "string"
        -          },
        -          "scope_boundary": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        -                "properties": {
        -                  "not_in_scope": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "produced": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "recommended_companions": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "type": "string"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "produced",
        -                  "not_in_scope"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tier": {
        -            "enum": [
        -              "free",
        -              "paid"
        -            ],
        -            "type": "string"
        -          },
        -          "tier_upgrade": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        -                "properties": {
        -                  "available_tiers": {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        -                      "properties": {
        -                        "billing": {
        -                          "enum": [
        -                            "one_off",
        -                            "monthly",
        -                            "annual"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "currency": {
        -                          "enum": [
        -                            "GBP",
        -                            "SGD",
        -                            "EUR",
        -                            "USD",
        -                            "CAD",
        -                            "AUD",
        -                            "NZD",
        -                            "MYR"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "display_name": {
        -                          "type": "string"
        -                        },
        -                        "price_local": {
        -                          "type": "number"
        -                        },
        -                        "tier_slug": {
        -                          "enum": [
        -                            "7_day_pass",
        -                            "solo",
        -                            "studio",
        -                            "practice"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "unlock_summary": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "tier_slug",
        -                        "display_name",
        -                        "price_local",
        -                        "currency",
        -                        "billing",
        -                        "unlock_summary"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "current_tier": {
        -                    "const": "free",
        -                    "default": "free",
        -                    "type": "string"
        -                  },
        -                  "pass_credit": {
        -                    "anyOf": [
        -                      {
        -                        "additionalProperties": false,
        -                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        -                        "properties": {
        -                          "amount_local": {
        -                            "type": "number"
        -                          },
        -                          "applies_to": {
        -                            "const": "solo_first_month",
        -                            "default": "solo_first_month",
        -                            "type": "string"
        -                          },
        -                          "currency": {
        -                            "type": "string"
        -                          },
        -                          "redeemable_until": {
        -                            "type": "string"
        -                          }
        -                        },
        -                        "required": [
        -                          "amount_local",
        -                          "currency",
        -                          "redeemable_until"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "pricing_url": {
        -                    "default": "https://civilquants.com/pricing",
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "available_tiers"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tos_url": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "upgrade_hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "warranty_disclaimer": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          }
        -        },
        -        "required": [
        -          "request_id",
        -          "issued_at",
        -          "tier"
        -        ],
        -        "type": "object"
        -      },
        -      "data": {
        -        "default": null,
        -        "title": "Data"
        -      },
        -      "error": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        -            "properties": {
        -              "code": {
        -                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        -                "enum": [
        -                  "RATE_LIMIT_EXCEEDED",
        -                  "TIER_INSUFFICIENT",
        -                  "INVALID_INPUT",
        -                  "SCHEMA_VERSION_MISMATCH",
        -                  "SCHEMA_INVARIANT_VIOLATION",
        -                  "UPSTREAM_TIMEOUT",
        -                  "BACKEND_FAILURE",
        -                  "IP_BLOCKED",
        -                  "RESOURCE_NOT_FOUND",
        -                  "RENDER_FAILURE",
        -                  "OCR_LOW_CONFIDENCE",
        -                  "MANUAL_REVIEW_REQUIRED",
        -                  "ACCEPTANCE_REQUIRED",
        -                  "INVALID_TOKEN"
        -                ],
        -                "type": "string"
        -              },
        -              "details": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "message": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "recoverable": {
        -                "type": "boolean"
        -              },
        -              "retry_after_seconds": {
        -                "anyOf": [
        -                  {
        -                    "minimum": 0,
        -                    "type": "integer"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              }
        -            },
        -            "required": [
        -              "code",
        -              "message",
        -              "recoverable"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      }
        -    },
        -    "required": [
        -      "_meta"
        -    ],
        -    "type": "object"
        -  }
        -]New value: +[
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "_meta": {
        +        "additionalProperties": false,
        +        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        +        "properties": {
        +          "deliverables": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        +                "properties": {
        +                  "docx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "dxf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "expires_at": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  },
        +                  "pdf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "xlsx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "expires_at"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "document_id": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "issued_at": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "output_mode": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Surfaces what a trimmed ``output_mode`` withheld from ``data``.\n\nA trimmed mode (``summary`` / ``material_schedule`` / ``boq`` /\n``boq_with_backup``) withholds\nalready-computed fields to keep the chat payload small. The withheld value\nreads to a client agent as \"capability missing\" (the box-culvert \"geometry\nbuilder isn't firing\" scare) rather than \"pared for size\": ``drawing`` and\n``audit_trail`` appear as ``null``, ``boq_rows`` as an empty list ``[]``\n(its type forbids ``null``) — both indistinguishable from a genuine absent\nresult. This names the withheld fields and the exact mode that brings each\nback, so the value is unambiguous. Absent on the default ``full_json`` mode\n— nothing is withheld, nothing to point at.",
        +                "properties": {
        +                  "mode": {
        +                    "enum": [
        +                      "summary",
        +                      "material_schedule",
        +                      "boq",
        +                      "boq_with_backup"
        +                    ],
        +                    "type": "string"
        +                  },
        +                  "omitted_fields": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "minItems": 1,
        +                    "type": "array"
        +                  },
        +                  "retrieve_with": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "mode",
        +                  "omitted_fields",
        +                  "retrieve_with"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "rate_limit_remaining": {
        +            "anyOf": [
        +              {
        +                "minimum": 0,
        +                "type": "integer"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "request_id": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "schema_version": {
        +            "const": "1.0.0",
        +            "default": "1.0.0",
        +            "type": "string"
        +          },
        +          "scope_boundary": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        +                "properties": {
        +                  "not_in_scope": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "produced": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "recommended_companions": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "type": "string"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "produced",
        +                  "not_in_scope"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tier": {
        +            "enum": [
        +              "free",
        +              "paid"
        +            ],
        +            "type": "string"
        +          },
        +          "tier_upgrade": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        +                "properties": {
        +                  "available_tiers": {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        +                      "properties": {
        +                        "billing": {
        +                          "enum": [
        +                            "one_off",
        +                            "monthly",
        +                            "annual"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "currency": {
        +                          "enum": [
        +                            "GBP",
        +                            "SGD",
        +                            "EUR",
        +                            "USD",
        +                            "CAD",
        +                            "AUD",
        +                            "NZD",
        +                            "MYR"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "display_name": {
        +                          "type": "string"
        +                        },
        +                        "price_local": {
        +                          "type": "number"
        +                        },
        +                        "tier_slug": {
        +                          "enum": [
        +                            "7_day_pass",
        +                            "solo",
        +                            "studio",
        +                            "practice"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "unlock_summary": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "tier_slug",
        +                        "display_name",
        +                        "price_local",
        +                        "currency",
        +                        "billing",
        +                        "unlock_summary"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "current_tier": {
        +                    "const": "free",
        +                    "default": "free",
        +                    "type": "string"
        +                  },
        +                  "pass_credit": {
        +                    "anyOf": [
        +                      {
        +                        "additionalProperties": false,
        +                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        +                        "properties": {
        +                          "amount_local": {
        +                            "type": "number"
        +                          },
        +                          "applies_to": {
        +                            "const": "solo_first_month",
        +                            "default": "solo_first_month",
        +                            "type": "string"
        +                          },
        +                          "currency": {
        +                            "type": "string"
        +                          },
        +                          "redeemable_until": {
        +                            "type": "string"
        +                          }
        +                        },
        +                        "required": [
        +                          "amount_local",
        +                          "currency",
        +                          "redeemable_until"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "pricing_url": {
        +                    "default": "https://civilquants.com/pricing",
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "available_tiers"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tos_url": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "upgrade_hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "warranty_disclaimer": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          }
        +        },
        +        "required": [
        +          "request_id",
        +          "issued_at",
        +          "tier"
        +        ],
        +        "type": "object"
        +      },
        +      "data": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Schema § 1.1 — the typed payload returned inside `MCPResponse[ComputeResult]`.\n\nFree-tier responses omit `drawings` (the downloadable CAD artefact\npointers — the paid differentiator); the bridge enforces this. The\n`audit_trail` and the inline `drawing` preview are present on BOTH tiers\n(V1 ALIGN / 60th-fire D + C). `text_summary` is bounded to 2000 chars —\nkeeps the LLM-facing summary token-cheap and forces longer narrative into\nBoQ row descriptions where it belongs. `warnings` is the non-fatal\ngeometry advisory list (both tiers).",
        +            "properties": {
        +              "assembly_slug": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "audit_trail": {
        +                "anyOf": [
        +                  {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.7 — paid-tier audit-trail entry.\n\nOne entry per BoQ row; `boq_row_index` ties to the row position in\n`ComputeResult.boq_rows`. `derivation` is the human-readable formula\nwalk-through; `formula` is the optional formal expression.",
        +                      "properties": {
        +                        "boq_row_index": {
        +                          "minimum": 0,
        +                          "type": "integer"
        +                        },
        +                        "derivation": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "formula": {
        +                          "anyOf": [
        +                            {
        +                              "type": "string"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ],
        +                          "default": null
        +                        },
        +                        "id": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "parameters_referenced": {
        +                          "items": {
        +                            "type": "string"
        +                          },
        +                          "type": "array"
        +                        }
        +                      },
        +                      "required": [
        +                        "id",
        +                        "boq_row_index",
        +                        "derivation"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "boq_rows": {
        +                "items": {
        +                  "additionalProperties": false,
        +                  "description": "Schema § 1.3 — a single bill row in the requested standard's format.\n\n`description` is the non-verbatim functional description per spec § 13.9 /\n§ 15 invariant — NEVER reproduces a standard's verbatim clause text.\n`rate` / `amount` ship null because rates are commodity data the customer\nowns; the engine's job is the measurement, not the pricing.",
        +                  "properties": {
        +                    "amount": {
        +                      "anyOf": [
        +                        {
        +                          "type": "number"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "attribution": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "audit_id": {
        +                      "anyOf": [
        +                        {
        +                          "type": "string"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "description": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "quantity": {
        +                      "minimum": 0,
        +                      "type": "number"
        +                    },
        +                    "rate": {
        +                      "anyOf": [
        +                        {
        +                          "type": "number"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "unit": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "work_section": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    }
        +                  },
        +                  "required": [
        +                    "work_section",
        +                    "description",
        +                    "quantity",
        +                    "unit",
        +                    "attribution"
        +                  ],
        +                  "type": "object"
        +                },
        +                "type": "array"
        +              },
        +              "drawing": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": false,
        +                    "description": "Schema § 1.6a — inline server-rendered SVG preview of the geometry.\n\nThe MCP mirror of the web ``/compute`` response's ``drawing`` field\n(``api.schemas.compute.DrawingRef``): the same on-screen dimensioned\ndrawing both tiers see in the workspace, surfaced on the MCP compute\nresponse so a chat client can render it inline (60th-fire item C). This\nis the on-screen preview — present on BOTH tiers per the free/paid\nboundary; the downloadable CAD artefacts (DXF / dimensioned PDF) remain\nthe paid differentiator via the export tools.\n\nDefined here rather than importing ``DrawingRef`` because the web\n``schemas`` package imports back into this module (``schemas.render``),\nso reusing it would create an import cycle — the MCP wire contract keeps\nits own copy, the same pattern as ``BoQRow`` / ``DrawingReference``.",
        +                    "properties": {
        +                      "entity_count": {
        +                        "minimum": 0,
        +                        "type": "integer"
        +                      },
        +                      "svg_b64": {
        +                        "minLength": 1,
        +                        "type": "string"
        +                      },
        +                      "unit_of_drawing": {
        +                        "const": "m",
        +                        "default": "m",
        +                        "type": "string"
        +                      },
        +                      "viewbox_height": {
        +                        "exclusiveMinimum": 0,
        +                        "type": "number"
        +                      },
        +                      "viewbox_width": {
        +                        "exclusiveMinimum": 0,
        +                        "type": "number"
        +                      },
        +                      "viewbox_x": {
        +                        "type": "number"
        +                      },
        +                      "viewbox_y": {
        +                        "type": "number"
        +                      }
        +                    },
        +                    "required": [
        +                      "svg_b64",
        +                      "viewbox_x",
        +                      "viewbox_y",
        +                      "viewbox_width",
        +                      "viewbox_height",
        +                      "entity_count"
        +                    ],
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "drawings": {
        +                "anyOf": [
        +                  {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.6 — paid-tier drawing artefact pointer.\n\n`url` is an R2-signed URL; expiry is carried in `_meta.deliverables.expires_at`\non the envelope (not duplicated here). `layers` is DXF-only; PDF/SVG\ncallers omit it.",
        +                      "properties": {
        +                        "drawing_type": {
        +                          "enum": [
        +                            "section",
        +                            "plan",
        +                            "elevation",
        +                            "isometric",
        +                            "detail"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "format": {
        +                          "enum": [
        +                            "DXF",
        +                            "PDF",
        +                            "SVG"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "layers": {
        +                          "anyOf": [
        +                            {
        +                              "items": {
        +                                "type": "string"
        +                              },
        +                              "type": "array"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ],
        +                          "default": null
        +                        },
        +                        "scale": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "sheet_size": {
        +                          "enum": [
        +                            "A1",
        +                            "A2",
        +                            "A3",
        +                            "A4"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "url": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "drawing_type",
        +                        "format",
        +                        "url",
        +                        "sheet_size",
        +                        "scale"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "parameters_used": {
        +                "additionalProperties": false,
        +                "description": "Schema § 1.2 — the parameter snapshot the engine actually used.\n\nSplits user-supplied values from engine defaults so customers can see\nwhich numbers came from them and which the engine filled in. Every\ndefaulted parameter SHOULD have a corresponding entry in `assumptions`\n— the bridge layer enforces this when wrapping engine output.",
        +                "properties": {
        +                  "assumptions": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "engine_defaults": {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  "user_supplied": {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  }
        +                },
        +                "type": "object"
        +              },
        +              "standard": {
        +                "enum": [
        +                  "CESMM4",
        +                  "NRM2",
        +                  "SMM7",
        +                  "MMHW"
        +                ],
        +                "type": "string"
        +              },
        +              "text_summary": {
        +                "maxLength": 2000,
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "totals_summary": {
        +                "additionalProperties": false,
        +                "description": "Schema § 1.4 — totals_summary as a typed wrapper around the free-form dict.\n\nWire shape is a flat object (`{\"concrete_m3\": {...}, \"rebar_t\": {...}}`).\nWe model it as `RootModel`-equivalent via `model_config(extra=\"allow\")`\n+ a single `__root__`-style `entries` dict. Pydantic v2 recommends\n`RootModel` for free-form roots; using a wrapper class keeps the import\nsurface uniform with the rest of this module.",
        +                "properties": {
        +                  "entries": {
        +                    "additionalProperties": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.4 — single material/work-class total entry.",
        +                      "properties": {
        +                        "quantity": {
        +                          "minimum": 0,
        +                          "type": "number"
        +                        },
        +                        "unit": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "quantity",
        +                        "unit"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "object"
        +                  }
        +                },
        +                "type": "object"
        +              },
        +              "warnings": {
        +                "items": {
        +                  "additionalProperties": false,
        +                  "description": "Schema § 1.8 — a non-fatal geometry advisory (56th-fire T2).\n\nThe wire projection of the engine's `core.GeometryWarning`. Advisory only:\na warning NEVER changes a measured quantity — it flags geometry that is\nvalid but likely a mistake (e.g. a stale dependent-height default). Present\non BOTH tiers — a correctness/safety signal, not a paid feature.",
        +                  "properties": {
        +                    "affected_params": {
        +                      "items": {
        +                        "type": "string"
        +                      },
        +                      "type": "array"
        +                    },
        +                    "code": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "detail": {
        +                      "additionalProperties": {
        +                        "type": "number"
        +                      },
        +                      "type": "object"
        +                    },
        +                    "message": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "severity": {
        +                      "enum": [
        +                        "info",
        +                        "advisory",
        +                        "caution"
        +                      ],
        +                      "type": "string"
        +                    }
        +                  },
        +                  "required": [
        +                    "code",
        +                    "severity",
        +                    "message"
        +                  ],
        +                  "type": "object"
        +                },
        +                "type": "array"
        +              }
        +            },
        +            "required": [
        +              "assembly_slug",
        +              "standard",
        +              "parameters_used",
        +              "boq_rows",
        +              "totals_summary",
        +              "text_summary"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      },
        +      "error": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        +            "properties": {
        +              "code": {
        +                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        +                "enum": [
        +                  "RATE_LIMIT_EXCEEDED",
        +                  "TIER_INSUFFICIENT",
        +                  "INVALID_INPUT",
        +                  "SCHEMA_VERSION_MISMATCH",
        +                  "SCHEMA_INVARIANT_VIOLATION",
        +                  "UPSTREAM_TIMEOUT",
        +                  "BACKEND_FAILURE",
        +                  "IP_BLOCKED",
        +                  "RESOURCE_NOT_FOUND",
        +                  "RENDER_FAILURE",
        +                  "OCR_LOW_CONFIDENCE",
        +                  "MANUAL_REVIEW_REQUIRED",
        +                  "ACCEPTANCE_REQUIRED",
        +                  "INVALID_TOKEN"
        +                ],
        +                "type": "string"
        +              },
        +              "details": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "message": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "recoverable": {
        +                "type": "boolean"
        +              },
        +              "retry_after_seconds": {
        +                "anyOf": [
        +                  {
        +                    "minimum": 0,
        +                    "type": "integer"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              }
        +            },
        +            "required": [
        +              "code",
        +              "message",
        +              "recoverable"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      }
        +    },
        +    "required": [
        +      "_meta"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "_meta": {
        +        "additionalProperties": false,
        +        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        +        "properties": {
        +          "deliverables": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        +                "properties": {
        +                  "docx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "dxf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "expires_at": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  },
        +                  "pdf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "xlsx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "expires_at"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "document_id": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "issued_at": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "output_mode": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Surfaces what a trimmed ``output_mode`` withheld from ``data``.\n\nA trimmed mode (``summary`` / ``material_schedule`` / ``boq`` /\n``boq_with_backup``) withholds\nalready-computed fields to keep the chat payload small. The withheld value\nreads to a client agent as \"capability missing\" (the box-culvert \"geometry\nbuilder isn't firing\" scare) rather than \"pared for size\": ``drawing`` and\n``audit_trail`` appear as ``null``, ``boq_rows`` as an empty list ``[]``\n(its type forbids ``null``) — both indistinguishable from a genuine absent\nresult. This names the withheld fields and the exact mode that brings each\nback, so the value is unambiguous. Absent on the default ``full_json`` mode\n— nothing is withheld, nothing to point at.",
        +                "properties": {
        +                  "mode": {
        +                    "enum": [
        +                      "summary",
        +                      "material_schedule",
        +                      "boq",
        +                      "boq_with_backup"
        +                    ],
        +                    "type": "string"
        +                  },
        +                  "omitted_fields": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "minItems": 1,
        +                    "type": "array"
        +                  },
        +                  "retrieve_with": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "mode",
        +                  "omitted_fields",
        +                  "retrieve_with"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "rate_limit_remaining": {
        +            "anyOf": [
        +              {
        +                "minimum": 0,
        +                "type": "integer"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "request_id": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "schema_version": {
        +            "const": "1.0.0",
        +            "default": "1.0.0",
        +            "type": "string"
        +          },
        +          "scope_boundary": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        +                "properties": {
        +                  "not_in_scope": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "produced": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "recommended_companions": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "type": "string"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "produced",
        +                  "not_in_scope"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tier": {
        +            "enum": [
        +              "free",
        +              "paid"
        +            ],
        +            "type": "string"
        +          },
        +          "tier_upgrade": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        +                "properties": {
        +                  "available_tiers": {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        +                      "properties": {
        +                        "billing": {
        +                          "enum": [
        +                            "one_off",
        +                            "monthly",
        +                            "annual"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "currency": {
        +                          "enum": [
        +                            "GBP",
        +                            "SGD",
        +                            "EUR",
        +                            "USD",
        +                            "CAD",
        +                            "AUD",
        +                            "NZD",
        +                            "MYR"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "display_name": {
        +                          "type": "string"
        +                        },
        +                        "price_local": {
        +                          "type": "number"
        +                        },
        +                        "tier_slug": {
        +                          "enum": [
        +                            "7_day_pass",
        +                            "solo",
        +                            "studio",
        +                            "practice"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "unlock_summary": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "tier_slug",
        +                        "display_name",
        +                        "price_local",
        +                        "currency",
        +                        "billing",
        +                        "unlock_summary"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "current_tier": {
        +                    "const": "free",
        +                    "default": "free",
        +                    "type": "string"
        +                  },
        +                  "pass_credit": {
        +                    "anyOf": [
        +                      {
        +                        "additionalProperties": false,
        +                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        +                        "properties": {
        +                          "amount_local": {
        +                            "type": "number"
        +                          },
        +                          "applies_to": {
        +                            "const": "solo_first_month",
        +                            "default": "solo_first_month",
        +                            "type": "string"
        +                          },
        +                          "currency": {
        +                            "type": "string"
        +                          },
        +                          "redeemable_until": {
        +                            "type": "string"
        +                          }
        +                        },
        +                        "required": [
        +                          "amount_local",
        +                          "currency",
        +                          "redeemable_until"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "pricing_url": {
        +                    "default": "https://civilquants.com/pricing",
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "available_tiers"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tos_url": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "upgrade_hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "warranty_disclaimer": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          }
        +        },
        +        "required": [
        +          "request_id",
        +          "issued_at",
        +          "tier"
        +        ],
        +        "type": "object"
        +      },
        +      "data": {
        +        "default": null,
        +        "title": "Data"
        +      },
        +      "error": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        +            "properties": {
        +              "code": {
        +                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        +                "enum": [
        +                  "RATE_LIMIT_EXCEEDED",
        +                  "TIER_INSUFFICIENT",
        +                  "INVALID_INPUT",
        +                  "SCHEMA_VERSION_MISMATCH",
        +                  "SCHEMA_INVARIANT_VIOLATION",
        +                  "UPSTREAM_TIMEOUT",
        +                  "BACKEND_FAILURE",
        +                  "IP_BLOCKED",
        +                  "RESOURCE_NOT_FOUND",
        +                  "RENDER_FAILURE",
        +                  "OCR_LOW_CONFIDENCE",
        +                  "MANUAL_REVIEW_REQUIRED",
        +                  "ACCEPTANCE_REQUIRED",
        +                  "INVALID_TOKEN"
        +                ],
        +                "type": "string"
        +              },
        +              "details": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "message": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "recoverable": {
        +                "type": "boolean"
        +              },
        +              "retry_after_seconds": {
        +                "anyOf": [
        +                  {
        +                    "minimum": 0,
        +                    "type": "integer"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              }
        +            },
        +            "required": [
        +              "code",
        +              "message",
        +              "recoverable"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      }
        +    },
        +    "required": [
        +      "_meta"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedcompute_bored_pile_wall2 fields changed
      • changedInput schema / properties / output_mode / enum
        Previous value: -[
        -  "summary",
        -  "boq",
        -  "boq_with_backup",
        -  "full_json"
        -]New value: +[
        +  "summary",
        +  "material_schedule",
        +  "boq",
        +  "boq_with_backup",
        +  "full_json"
        +]
      • changedOutput schema / properties / result / anyOf
        Previous value: -[
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "_meta": {
        -        "additionalProperties": false,
        -        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        -        "properties": {
        -          "deliverables": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        -                "properties": {
        -                  "docx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "dxf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "expires_at": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  },
        -                  "pdf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "xlsx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "expires_at"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "document_id": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "issued_at": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "output_mode": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Surfaces what a trimmed ``output_mode`` withheld from ``data``.\n\nA trimmed mode (``summary`` / ``boq`` / ``boq_with_backup``) withholds\nalready-computed fields to keep the chat payload small. The withheld value\nreads to a client agent as \"capability missing\" (the box-culvert \"geometry\nbuilder isn't firing\" scare) rather than \"pared for size\": ``drawing`` and\n``audit_trail`` appear as ``null``, ``boq_rows`` as an empty list ``[]``\n(its type forbids ``null``) — both indistinguishable from a genuine absent\nresult. This names the withheld fields and the exact mode that brings each\nback, so the value is unambiguous. Absent on the default ``full_json`` mode\n— nothing is withheld, nothing to point at.",
        -                "properties": {
        -                  "mode": {
        -                    "enum": [
        -                      "summary",
        -                      "boq",
        -                      "boq_with_backup"
        -                    ],
        -                    "type": "string"
        -                  },
        -                  "omitted_fields": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "minItems": 1,
        -                    "type": "array"
        -                  },
        -                  "retrieve_with": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "mode",
        -                  "omitted_fields",
        -                  "retrieve_with"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "rate_limit_remaining": {
        -            "anyOf": [
        -              {
        -                "minimum": 0,
        -                "type": "integer"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "request_id": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "schema_version": {
        -            "const": "1.0.0",
        -            "default": "1.0.0",
        -            "type": "string"
        -          },
        -          "scope_boundary": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        -                "properties": {
        -                  "not_in_scope": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "produced": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "recommended_companions": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "type": "string"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "produced",
        -                  "not_in_scope"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tier": {
        -            "enum": [
        -              "free",
        -              "paid"
        -            ],
        -            "type": "string"
        -          },
        -          "tier_upgrade": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        -                "properties": {
        -                  "available_tiers": {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        -                      "properties": {
        -                        "billing": {
        -                          "enum": [
        -                            "one_off",
        -                            "monthly",
        -                            "annual"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "currency": {
        -                          "enum": [
        -                            "GBP",
        -                            "SGD",
        -                            "EUR",
        -                            "USD",
        -                            "CAD",
        -                            "AUD",
        -                            "NZD",
        -                            "MYR"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "display_name": {
        -                          "type": "string"
        -                        },
        -                        "price_local": {
        -                          "type": "number"
        -                        },
        -                        "tier_slug": {
        -                          "enum": [
        -                            "7_day_pass",
        -                            "solo",
        -                            "studio",
        -                            "practice"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "unlock_summary": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "tier_slug",
        -                        "display_name",
        -                        "price_local",
        -                        "currency",
        -                        "billing",
        -                        "unlock_summary"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "current_tier": {
        -                    "const": "free",
        -                    "default": "free",
        -                    "type": "string"
        -                  },
        -                  "pass_credit": {
        -                    "anyOf": [
        -                      {
        -                        "additionalProperties": false,
        -                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        -                        "properties": {
        -                          "amount_local": {
        -                            "type": "number"
        -                          },
        -                          "applies_to": {
        -                            "const": "solo_first_month",
        -                            "default": "solo_first_month",
        -                            "type": "string"
        -                          },
        -                          "currency": {
        -                            "type": "string"
        -                          },
        -                          "redeemable_until": {
        -                            "type": "string"
        -                          }
        -                        },
        -                        "required": [
        -                          "amount_local",
        -                          "currency",
        -                          "redeemable_until"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "pricing_url": {
        -                    "default": "https://civilquants.com/pricing",
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "available_tiers"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tos_url": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "upgrade_hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "warranty_disclaimer": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          }
        -        },
        -        "required": [
        -          "request_id",
        -          "issued_at",
        -          "tier"
        -        ],
        -        "type": "object"
        -      },
        -      "data": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Schema § 1.1 — the typed payload returned inside `MCPResponse[ComputeResult]`.\n\nFree-tier responses omit `drawings` (the downloadable CAD artefact\npointers — the paid differentiator); the bridge enforces this. The\n`audit_trail` and the inline `drawing` preview are present on BOTH tiers\n(V1 ALIGN / 60th-fire D + C). `text_summary` is bounded to 2000 chars —\nkeeps the LLM-facing summary token-cheap and forces longer narrative into\nBoQ row descriptions where it belongs. `warnings` is the non-fatal\ngeometry advisory list (both tiers).",
        -            "properties": {
        -              "assembly_slug": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "audit_trail": {
        -                "anyOf": [
        -                  {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.7 — paid-tier audit-trail entry.\n\nOne entry per BoQ row; `boq_row_index` ties to the row position in\n`ComputeResult.boq_rows`. `derivation` is the human-readable formula\nwalk-through; `formula` is the optional formal expression.",
        -                      "properties": {
        -                        "boq_row_index": {
        -                          "minimum": 0,
        -                          "type": "integer"
        -                        },
        -                        "derivation": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "formula": {
        -                          "anyOf": [
        -                            {
        -                              "type": "string"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ],
        -                          "default": null
        -                        },
        -                        "id": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "parameters_referenced": {
        -                          "items": {
        -                            "type": "string"
        -                          },
        -                          "type": "array"
        -                        }
        -                      },
        -                      "required": [
        -                        "id",
        -                        "boq_row_index",
        -                        "derivation"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "boq_rows": {
        -                "items": {
        -                  "additionalProperties": false,
        -                  "description": "Schema § 1.3 — a single bill row in the requested standard's format.\n\n`description` is the non-verbatim functional description per spec § 13.9 /\n§ 15 invariant — NEVER reproduces a standard's verbatim clause text.\n`rate` / `amount` ship null because rates are commodity data the customer\nowns; the engine's job is the measurement, not the pricing.",
        -                  "properties": {
        -                    "amount": {
        -                      "anyOf": [
        -                        {
        -                          "type": "number"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "attribution": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "audit_id": {
        -                      "anyOf": [
        -                        {
        -                          "type": "string"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "description": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "quantity": {
        -                      "minimum": 0,
        -                      "type": "number"
        -                    },
        -                    "rate": {
        -                      "anyOf": [
        -                        {
        -                          "type": "number"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "unit": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "work_section": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    }
        -                  },
        -                  "required": [
        -                    "work_section",
        -                    "description",
        -                    "quantity",
        -                    "unit",
        -                    "attribution"
        -                  ],
        -                  "type": "object"
        -                },
        -                "type": "array"
        -              },
        -              "drawing": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": false,
        -                    "description": "Schema § 1.6a — inline server-rendered SVG preview of the geometry.\n\nThe MCP mirror of the web ``/compute`` response's ``drawing`` field\n(``api.schemas.compute.DrawingRef``): the same on-screen dimensioned\ndrawing both tiers see in the workspace, surfaced on the MCP compute\nresponse so a chat client can render it inline (60th-fire item C). This\nis the on-screen preview — present on BOTH tiers per the free/paid\nboundary; the downloadable CAD artefacts (DXF / dimensioned PDF) remain\nthe paid differentiator via the export tools.\n\nDefined here rather than importing ``DrawingRef`` because the web\n``schemas`` package imports back into this module (``schemas.render``),\nso reusing it would create an import cycle — the MCP wire contract keeps\nits own copy, the same pattern as ``BoQRow`` / ``DrawingReference``.",
        -                    "properties": {
        -                      "entity_count": {
        -                        "minimum": 0,
        -                        "type": "integer"
        -                      },
        -                      "svg_b64": {
        -                        "minLength": 1,
        -                        "type": "string"
        -                      },
        -                      "unit_of_drawing": {
        -                        "const": "m",
        -                        "default": "m",
        -                        "type": "string"
        -                      },
        -                      "viewbox_height": {
        -                        "exclusiveMinimum": 0,
        -                        "type": "number"
        -                      },
        -                      "viewbox_width": {
        -                        "exclusiveMinimum": 0,
        -                        "type": "number"
        -                      },
        -                      "viewbox_x": {
        -                        "type": "number"
        -                      },
        -                      "viewbox_y": {
        -                        "type": "number"
        -                      }
        -                    },
        -                    "required": [
        -                      "svg_b64",
        -                      "viewbox_x",
        -                      "viewbox_y",
        -                      "viewbox_width",
        -                      "viewbox_height",
        -                      "entity_count"
        -                    ],
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "drawings": {
        -                "anyOf": [
        -                  {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.6 — paid-tier drawing artefact pointer.\n\n`url` is an R2-signed URL; expiry is carried in `_meta.deliverables.expires_at`\non the envelope (not duplicated here). `layers` is DXF-only; PDF/SVG\ncallers omit it.",
        -                      "properties": {
        -                        "drawing_type": {
        -                          "enum": [
        -                            "section",
        -                            "plan",
        -                            "elevation",
        -                            "isometric",
        -                            "detail"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "format": {
        -                          "enum": [
        -                            "DXF",
        -                            "PDF",
        -                            "SVG"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "layers": {
        -                          "anyOf": [
        -                            {
        -                              "items": {
        -                                "type": "string"
        -                              },
        -                              "type": "array"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ],
        -                          "default": null
        -                        },
        -                        "scale": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "sheet_size": {
        -                          "enum": [
        -                            "A1",
        -                            "A2",
        -                            "A3",
        -                            "A4"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "url": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "drawing_type",
        -                        "format",
        -                        "url",
        -                        "sheet_size",
        -                        "scale"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "parameters_used": {
        -                "additionalProperties": false,
        -                "description": "Schema § 1.2 — the parameter snapshot the engine actually used.\n\nSplits user-supplied values from engine defaults so customers can see\nwhich numbers came from them and which the engine filled in. Every\ndefaulted parameter SHOULD have a corresponding entry in `assumptions`\n— the bridge layer enforces this when wrapping engine output.",
        -                "properties": {
        -                  "assumptions": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "engine_defaults": {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  "user_supplied": {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  }
        -                },
        -                "type": "object"
        -              },
        -              "standard": {
        -                "enum": [
        -                  "CESMM4",
        -                  "NRM2",
        -                  "SMM7",
        -                  "MMHW"
        -                ],
        -                "type": "string"
        -              },
        -              "text_summary": {
        -                "maxLength": 2000,
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "totals_summary": {
        -                "additionalProperties": false,
        -                "description": "Schema § 1.4 — totals_summary as a typed wrapper around the free-form dict.\n\nWire shape is a flat object (`{\"concrete_m3\": {...}, \"rebar_t\": {...}}`).\nWe model it as `RootModel`-equivalent via `model_config(extra=\"allow\")`\n+ a single `__root__`-style `entries` dict. Pydantic v2 recommends\n`RootModel` for free-form roots; using a wrapper class keeps the import\nsurface uniform with the rest of this module.",
        -                "properties": {
        -                  "entries": {
        -                    "additionalProperties": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.4 — single material/work-class total entry.",
        -                      "properties": {
        -                        "quantity": {
        -                          "minimum": 0,
        -                          "type": "number"
        -                        },
        -                        "unit": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "quantity",
        -                        "unit"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "object"
        -                  }
        -                },
        -                "type": "object"
        -              },
        -              "warnings": {
        -                "items": {
        -                  "additionalProperties": false,
        -                  "description": "Schema § 1.8 — a non-fatal geometry advisory (56th-fire T2).\n\nThe wire projection of the engine's `core.GeometryWarning`. Advisory only:\na warning NEVER changes a measured quantity — it flags geometry that is\nvalid but likely a mistake (e.g. a stale dependent-height default). Present\non BOTH tiers — a correctness/safety signal, not a paid feature.",
        -                  "properties": {
        -                    "affected_params": {
        -                      "items": {
        -                        "type": "string"
        -                      },
        -                      "type": "array"
        -                    },
        -                    "code": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "detail": {
        -                      "additionalProperties": {
        -                        "type": "number"
        -                      },
        -                      "type": "object"
        -                    },
        -                    "message": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "severity": {
        -                      "enum": [
        -                        "info",
        -                        "advisory",
        -                        "caution"
        -                      ],
        -                      "type": "string"
        -                    }
        -                  },
        -                  "required": [
        -                    "code",
        -                    "severity",
        -                    "message"
        -                  ],
        -                  "type": "object"
        -                },
        -                "type": "array"
        -              }
        -            },
        -            "required": [
        -              "assembly_slug",
        -              "standard",
        -              "parameters_used",
        -              "boq_rows",
        -              "totals_summary",
        -              "text_summary"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      },
        -      "error": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        -            "properties": {
        -              "code": {
        -                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        -                "enum": [
        -                  "RATE_LIMIT_EXCEEDED",
        -                  "TIER_INSUFFICIENT",
        -                  "INVALID_INPUT",
        -                  "SCHEMA_VERSION_MISMATCH",
        -                  "SCHEMA_INVARIANT_VIOLATION",
        -                  "UPSTREAM_TIMEOUT",
        -                  "BACKEND_FAILURE",
        -                  "IP_BLOCKED",
        -                  "RESOURCE_NOT_FOUND",
        -                  "RENDER_FAILURE",
        -                  "OCR_LOW_CONFIDENCE",
        -                  "MANUAL_REVIEW_REQUIRED",
        -                  "ACCEPTANCE_REQUIRED",
        -                  "INVALID_TOKEN"
        -                ],
        -                "type": "string"
        -              },
        -              "details": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "message": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "recoverable": {
        -                "type": "boolean"
        -              },
        -              "retry_after_seconds": {
        -                "anyOf": [
        -                  {
        -                    "minimum": 0,
        -                    "type": "integer"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              }
        -            },
        -            "required": [
        -              "code",
        -              "message",
        -              "recoverable"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      }
        -    },
        -    "required": [
        -      "_meta"
        -    ],
        -    "type": "object"
        -  },
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "_meta": {
        -        "additionalProperties": false,
        -        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        -        "properties": {
        -          "deliverables": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        -                "properties": {
        -                  "docx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "dxf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "expires_at": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  },
        -                  "pdf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "xlsx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "expires_at"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "document_id": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "issued_at": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "output_mode": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Surfaces what a trimmed ``output_mode`` withheld from ``data``.\n\nA trimmed mode (``summary`` / ``boq`` / ``boq_with_backup``) withholds\nalready-computed fields to keep the chat payload small. The withheld value\nreads to a client agent as \"capability missing\" (the box-culvert \"geometry\nbuilder isn't firing\" scare) rather than \"pared for size\": ``drawing`` and\n``audit_trail`` appear as ``null``, ``boq_rows`` as an empty list ``[]``\n(its type forbids ``null``) — both indistinguishable from a genuine absent\nresult. This names the withheld fields and the exact mode that brings each\nback, so the value is unambiguous. Absent on the default ``full_json`` mode\n— nothing is withheld, nothing to point at.",
        -                "properties": {
        -                  "mode": {
        -                    "enum": [
        -                      "summary",
        -                      "boq",
        -                      "boq_with_backup"
        -                    ],
        -                    "type": "string"
        -                  },
        -                  "omitted_fields": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "minItems": 1,
        -                    "type": "array"
        -                  },
        -                  "retrieve_with": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "mode",
        -                  "omitted_fields",
        -                  "retrieve_with"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "rate_limit_remaining": {
        -            "anyOf": [
        -              {
        -                "minimum": 0,
        -                "type": "integer"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "request_id": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "schema_version": {
        -            "const": "1.0.0",
        -            "default": "1.0.0",
        -            "type": "string"
        -          },
        -          "scope_boundary": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        -                "properties": {
        -                  "not_in_scope": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "produced": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "recommended_companions": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "type": "string"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "produced",
        -                  "not_in_scope"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tier": {
        -            "enum": [
        -              "free",
        -              "paid"
        -            ],
        -            "type": "string"
        -          },
        -          "tier_upgrade": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        -                "properties": {
        -                  "available_tiers": {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        -                      "properties": {
        -                        "billing": {
        -                          "enum": [
        -                            "one_off",
        -                            "monthly",
        -                            "annual"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "currency": {
        -                          "enum": [
        -                            "GBP",
        -                            "SGD",
        -                            "EUR",
        -                            "USD",
        -                            "CAD",
        -                            "AUD",
        -                            "NZD",
        -                            "MYR"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "display_name": {
        -                          "type": "string"
        -                        },
        -                        "price_local": {
        -                          "type": "number"
        -                        },
        -                        "tier_slug": {
        -                          "enum": [
        -                            "7_day_pass",
        -                            "solo",
        -                            "studio",
        -                            "practice"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "unlock_summary": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "tier_slug",
        -                        "display_name",
        -                        "price_local",
        -                        "currency",
        -                        "billing",
        -                        "unlock_summary"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "current_tier": {
        -                    "const": "free",
        -                    "default": "free",
        -                    "type": "string"
        -                  },
        -                  "pass_credit": {
        -                    "anyOf": [
        -                      {
        -                        "additionalProperties": false,
        -                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        -                        "properties": {
        -                          "amount_local": {
        -                            "type": "number"
        -                          },
        -                          "applies_to": {
        -                            "const": "solo_first_month",
        -                            "default": "solo_first_month",
        -                            "type": "string"
        -                          },
        -                          "currency": {
        -                            "type": "string"
        -                          },
        -                          "redeemable_until": {
        -                            "type": "string"
        -                          }
        -                        },
        -                        "required": [
        -                          "amount_local",
        -                          "currency",
        -                          "redeemable_until"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "pricing_url": {
        -                    "default": "https://civilquants.com/pricing",
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "available_tiers"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tos_url": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "upgrade_hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "warranty_disclaimer": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          }
        -        },
        -        "required": [
        -          "request_id",
        -          "issued_at",
        -          "tier"
        -        ],
        -        "type": "object"
        -      },
        -      "data": {
        -        "default": null,
        -        "title": "Data"
        -      },
        -      "error": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        -            "properties": {
        -              "code": {
        -                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        -                "enum": [
        -                  "RATE_LIMIT_EXCEEDED",
        -                  "TIER_INSUFFICIENT",
        -                  "INVALID_INPUT",
        -                  "SCHEMA_VERSION_MISMATCH",
        -                  "SCHEMA_INVARIANT_VIOLATION",
        -                  "UPSTREAM_TIMEOUT",
        -                  "BACKEND_FAILURE",
        -                  "IP_BLOCKED",
        -                  "RESOURCE_NOT_FOUND",
        -                  "RENDER_FAILURE",
        -                  "OCR_LOW_CONFIDENCE",
        -                  "MANUAL_REVIEW_REQUIRED",
        -                  "ACCEPTANCE_REQUIRED",
        -                  "INVALID_TOKEN"
        -                ],
        -                "type": "string"
        -              },
        -              "details": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "message": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "recoverable": {
        -                "type": "boolean"
        -              },
        -              "retry_after_seconds": {
        -                "anyOf": [
        -                  {
        -                    "minimum": 0,
        -                    "type": "integer"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              }
        -            },
        -            "required": [
        -              "code",
        -              "message",
        -              "recoverable"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      }
        -    },
        -    "required": [
        -      "_meta"
        -    ],
        -    "type": "object"
        -  }
        -]New value: +[
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "_meta": {
        +        "additionalProperties": false,
        +        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        +        "properties": {
        +          "deliverables": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        +                "properties": {
        +                  "docx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "dxf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "expires_at": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  },
        +                  "pdf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "xlsx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "expires_at"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "document_id": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "issued_at": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "output_mode": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Surfaces what a trimmed ``output_mode`` withheld from ``data``.\n\nA trimmed mode (``summary`` / ``material_schedule`` / ``boq`` /\n``boq_with_backup``) withholds\nalready-computed fields to keep the chat payload small. The withheld value\nreads to a client agent as \"capability missing\" (the box-culvert \"geometry\nbuilder isn't firing\" scare) rather than \"pared for size\": ``drawing`` and\n``audit_trail`` appear as ``null``, ``boq_rows`` as an empty list ``[]``\n(its type forbids ``null``) — both indistinguishable from a genuine absent\nresult. This names the withheld fields and the exact mode that brings each\nback, so the value is unambiguous. Absent on the default ``full_json`` mode\n— nothing is withheld, nothing to point at.",
        +                "properties": {
        +                  "mode": {
        +                    "enum": [
        +                      "summary",
        +                      "material_schedule",
        +                      "boq",
        +                      "boq_with_backup"
        +                    ],
        +                    "type": "string"
        +                  },
        +                  "omitted_fields": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "minItems": 1,
        +                    "type": "array"
        +                  },
        +                  "retrieve_with": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "mode",
        +                  "omitted_fields",
        +                  "retrieve_with"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "rate_limit_remaining": {
        +            "anyOf": [
        +              {
        +                "minimum": 0,
        +                "type": "integer"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "request_id": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "schema_version": {
        +            "const": "1.0.0",
        +            "default": "1.0.0",
        +            "type": "string"
        +          },
        +          "scope_boundary": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        +                "properties": {
        +                  "not_in_scope": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "produced": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "recommended_companions": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "type": "string"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "produced",
        +                  "not_in_scope"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tier": {
        +            "enum": [
        +              "free",
        +              "paid"
        +            ],
        +            "type": "string"
        +          },
        +          "tier_upgrade": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        +                "properties": {
        +                  "available_tiers": {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        +                      "properties": {
        +                        "billing": {
        +                          "enum": [
        +                            "one_off",
        +                            "monthly",
        +                            "annual"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "currency": {
        +                          "enum": [
        +                            "GBP",
        +                            "SGD",
        +                            "EUR",
        +                            "USD",
        +                            "CAD",
        +                            "AUD",
        +                            "NZD",
        +                            "MYR"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "display_name": {
        +                          "type": "string"
        +                        },
        +                        "price_local": {
        +                          "type": "number"
        +                        },
        +                        "tier_slug": {
        +                          "enum": [
        +                            "7_day_pass",
        +                            "solo",
        +                            "studio",
        +                            "practice"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "unlock_summary": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "tier_slug",
        +                        "display_name",
        +                        "price_local",
        +                        "currency",
        +                        "billing",
        +                        "unlock_summary"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "current_tier": {
        +                    "const": "free",
        +                    "default": "free",
        +                    "type": "string"
        +                  },
        +                  "pass_credit": {
        +                    "anyOf": [
        +                      {
        +                        "additionalProperties": false,
        +                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        +                        "properties": {
        +                          "amount_local": {
        +                            "type": "number"
        +                          },
        +                          "applies_to": {
        +                            "const": "solo_first_month",
        +                            "default": "solo_first_month",
        +                            "type": "string"
        +                          },
        +                          "currency": {
        +                            "type": "string"
        +                          },
        +                          "redeemable_until": {
        +                            "type": "string"
        +                          }
        +                        },
        +                        "required": [
        +                          "amount_local",
        +                          "currency",
        +                          "redeemable_until"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "pricing_url": {
        +                    "default": "https://civilquants.com/pricing",
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "available_tiers"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tos_url": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "upgrade_hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "warranty_disclaimer": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          }
        +        },
        +        "required": [
        +          "request_id",
        +          "issued_at",
        +          "tier"
        +        ],
        +        "type": "object"
        +      },
        +      "data": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Schema § 1.1 — the typed payload returned inside `MCPResponse[ComputeResult]`.\n\nFree-tier responses omit `drawings` (the downloadable CAD artefact\npointers — the paid differentiator); the bridge enforces this. The\n`audit_trail` and the inline `drawing` preview are present on BOTH tiers\n(V1 ALIGN / 60th-fire D + C). `text_summary` is bounded to 2000 chars —\nkeeps the LLM-facing summary token-cheap and forces longer narrative into\nBoQ row descriptions where it belongs. `warnings` is the non-fatal\ngeometry advisory list (both tiers).",
        +            "properties": {
        +              "assembly_slug": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "audit_trail": {
        +                "anyOf": [
        +                  {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.7 — paid-tier audit-trail entry.\n\nOne entry per BoQ row; `boq_row_index` ties to the row position in\n`ComputeResult.boq_rows`. `derivation` is the human-readable formula\nwalk-through; `formula` is the optional formal expression.",
        +                      "properties": {
        +                        "boq_row_index": {
        +                          "minimum": 0,
        +                          "type": "integer"
        +                        },
        +                        "derivation": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "formula": {
        +                          "anyOf": [
        +                            {
        +                              "type": "string"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ],
        +                          "default": null
        +                        },
        +                        "id": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "parameters_referenced": {
        +                          "items": {
        +                            "type": "string"
        +                          },
        +                          "type": "array"
        +                        }
        +                      },
        +                      "required": [
        +                        "id",
        +                        "boq_row_index",
        +                        "derivation"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "boq_rows": {
        +                "items": {
        +                  "additionalProperties": false,
        +                  "description": "Schema § 1.3 — a single bill row in the requested standard's format.\n\n`description` is the non-verbatim functional description per spec § 13.9 /\n§ 15 invariant — NEVER reproduces a standard's verbatim clause text.\n`rate` / `amount` ship null because rates are commodity data the customer\nowns; the engine's job is the measurement, not the pricing.",
        +                  "properties": {
        +                    "amount": {
        +                      "anyOf": [
        +                        {
        +                          "type": "number"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "attribution": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "audit_id": {
        +                      "anyOf": [
        +                        {
        +                          "type": "string"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "description": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "quantity": {
        +                      "minimum": 0,
        +                      "type": "number"
        +                    },
        +                    "rate": {
        +                      "anyOf": [
        +                        {
        +                          "type": "number"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "unit": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "work_section": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    }
        +                  },
        +                  "required": [
        +                    "work_section",
        +                    "description",
        +                    "quantity",
        +                    "unit",
        +                    "attribution"
        +                  ],
        +                  "type": "object"
        +                },
        +                "type": "array"
        +              },
        +              "drawing": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": false,
        +                    "description": "Schema § 1.6a — inline server-rendered SVG preview of the geometry.\n\nThe MCP mirror of the web ``/compute`` response's ``drawing`` field\n(``api.schemas.compute.DrawingRef``): the same on-screen dimensioned\ndrawing both tiers see in the workspace, surfaced on the MCP compute\nresponse so a chat client can render it inline (60th-fire item C). This\nis the on-screen preview — present on BOTH tiers per the free/paid\nboundary; the downloadable CAD artefacts (DXF / dimensioned PDF) remain\nthe paid differentiator via the export tools.\n\nDefined here rather than importing ``DrawingRef`` because the web\n``schemas`` package imports back into this module (``schemas.render``),\nso reusing it would create an import cycle — the MCP wire contract keeps\nits own copy, the same pattern as ``BoQRow`` / ``DrawingReference``.",
        +                    "properties": {
        +                      "entity_count": {
        +                        "minimum": 0,
        +                        "type": "integer"
        +                      },
        +                      "svg_b64": {
        +                        "minLength": 1,
        +                        "type": "string"
        +                      },
        +                      "unit_of_drawing": {
        +                        "const": "m",
        +                        "default": "m",
        +                        "type": "string"
        +                      },
        +                      "viewbox_height": {
        +                        "exclusiveMinimum": 0,
        +                        "type": "number"
        +                      },
        +                      "viewbox_width": {
        +                        "exclusiveMinimum": 0,
        +                        "type": "number"
        +                      },
        +                      "viewbox_x": {
        +                        "type": "number"
        +                      },
        +                      "viewbox_y": {
        +                        "type": "number"
        +                      }
        +                    },
        +                    "required": [
        +                      "svg_b64",
        +                      "viewbox_x",
        +                      "viewbox_y",
        +                      "viewbox_width",
        +                      "viewbox_height",
        +                      "entity_count"
        +                    ],
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "drawings": {
        +                "anyOf": [
        +                  {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.6 — paid-tier drawing artefact pointer.\n\n`url` is an R2-signed URL; expiry is carried in `_meta.deliverables.expires_at`\non the envelope (not duplicated here). `layers` is DXF-only; PDF/SVG\ncallers omit it.",
        +                      "properties": {
        +                        "drawing_type": {
        +                          "enum": [
        +                            "section",
        +                            "plan",
        +                            "elevation",
        +                            "isometric",
        +                            "detail"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "format": {
        +                          "enum": [
        +                            "DXF",
        +                            "PDF",
        +                            "SVG"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "layers": {
        +                          "anyOf": [
        +                            {
        +                              "items": {
        +                                "type": "string"
        +                              },
        +                              "type": "array"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ],
        +                          "default": null
        +                        },
        +                        "scale": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "sheet_size": {
        +                          "enum": [
        +                            "A1",
        +                            "A2",
        +                            "A3",
        +                            "A4"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "url": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "drawing_type",
        +                        "format",
        +                        "url",
        +                        "sheet_size",
        +                        "scale"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "parameters_used": {
        +                "additionalProperties": false,
        +                "description": "Schema § 1.2 — the parameter snapshot the engine actually used.\n\nSplits user-supplied values from engine defaults so customers can see\nwhich numbers came from them and which the engine filled in. Every\ndefaulted parameter SHOULD have a corresponding entry in `assumptions`\n— the bridge layer enforces this when wrapping engine output.",
        +                "properties": {
        +                  "assumptions": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "engine_defaults": {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  "user_supplied": {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  }
        +                },
        +                "type": "object"
        +              },
        +              "standard": {
        +                "enum": [
        +                  "CESMM4",
        +                  "NRM2",
        +                  "SMM7",
        +                  "MMHW"
        +                ],
        +                "type": "string"
        +              },
        +              "text_summary": {
        +                "maxLength": 2000,
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "totals_summary": {
        +                "additionalProperties": false,
        +                "description": "Schema § 1.4 — totals_summary as a typed wrapper around the free-form dict.\n\nWire shape is a flat object (`{\"concrete_m3\": {...}, \"rebar_t\": {...}}`).\nWe model it as `RootModel`-equivalent via `model_config(extra=\"allow\")`\n+ a single `__root__`-style `entries` dict. Pydantic v2 recommends\n`RootModel` for free-form roots; using a wrapper class keeps the import\nsurface uniform with the rest of this module.",
        +                "properties": {
        +                  "entries": {
        +                    "additionalProperties": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.4 — single material/work-class total entry.",
        +                      "properties": {
        +                        "quantity": {
        +                          "minimum": 0,
        +                          "type": "number"
        +                        },
        +                        "unit": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "quantity",
        +                        "unit"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "object"
        +                  }
        +                },
        +                "type": "object"
        +              },
        +              "warnings": {
        +                "items": {
        +                  "additionalProperties": false,
        +                  "description": "Schema § 1.8 — a non-fatal geometry advisory (56th-fire T2).\n\nThe wire projection of the engine's `core.GeometryWarning`. Advisory only:\na warning NEVER changes a measured quantity — it flags geometry that is\nvalid but likely a mistake (e.g. a stale dependent-height default). Present\non BOTH tiers — a correctness/safety signal, not a paid feature.",
        +                  "properties": {
        +                    "affected_params": {
        +                      "items": {
        +                        "type": "string"
        +                      },
        +                      "type": "array"
        +                    },
        +                    "code": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "detail": {
        +                      "additionalProperties": {
        +                        "type": "number"
        +                      },
        +                      "type": "object"
        +                    },
        +                    "message": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "severity": {
        +                      "enum": [
        +                        "info",
        +                        "advisory",
        +                        "caution"
        +                      ],
        +                      "type": "string"
        +                    }
        +                  },
        +                  "required": [
        +                    "code",
        +                    "severity",
        +                    "message"
        +                  ],
        +                  "type": "object"
        +                },
        +                "type": "array"
        +              }
        +            },
        +            "required": [
        +              "assembly_slug",
        +              "standard",
        +              "parameters_used",
        +              "boq_rows",
        +              "totals_summary",
        +              "text_summary"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      },
        +      "error": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        +            "properties": {
        +              "code": {
        +                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        +                "enum": [
        +                  "RATE_LIMIT_EXCEEDED",
        +                  "TIER_INSUFFICIENT",
        +                  "INVALID_INPUT",
        +                  "SCHEMA_VERSION_MISMATCH",
        +                  "SCHEMA_INVARIANT_VIOLATION",
        +                  "UPSTREAM_TIMEOUT",
        +                  "BACKEND_FAILURE",
        +                  "IP_BLOCKED",
        +                  "RESOURCE_NOT_FOUND",
        +                  "RENDER_FAILURE",
        +                  "OCR_LOW_CONFIDENCE",
        +                  "MANUAL_REVIEW_REQUIRED",
        +                  "ACCEPTANCE_REQUIRED",
        +                  "INVALID_TOKEN"
        +                ],
        +                "type": "string"
        +              },
        +              "details": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "message": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "recoverable": {
        +                "type": "boolean"
        +              },
        +              "retry_after_seconds": {
        +                "anyOf": [
        +                  {
        +                    "minimum": 0,
        +                    "type": "integer"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              }
        +            },
        +            "required": [
        +              "code",
        +              "message",
        +              "recoverable"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      }
        +    },
        +    "required": [
        +      "_meta"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "_meta": {
        +        "additionalProperties": false,
        +        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        +        "properties": {
        +          "deliverables": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        +                "properties": {
        +                  "docx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "dxf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "expires_at": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  },
        +                  "pdf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "xlsx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "expires_at"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "document_id": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "issued_at": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "output_mode": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Surfaces what a trimmed ``output_mode`` withheld from ``data``.\n\nA trimmed mode (``summary`` / ``material_schedule`` / ``boq`` /\n``boq_with_backup``) withholds\nalready-computed fields to keep the chat payload small. The withheld value\nreads to a client agent as \"capability missing\" (the box-culvert \"geometry\nbuilder isn't firing\" scare) rather than \"pared for size\": ``drawing`` and\n``audit_trail`` appear as ``null``, ``boq_rows`` as an empty list ``[]``\n(its type forbids ``null``) — both indistinguishable from a genuine absent\nresult. This names the withheld fields and the exact mode that brings each\nback, so the value is unambiguous. Absent on the default ``full_json`` mode\n— nothing is withheld, nothing to point at.",
        +                "properties": {
        +                  "mode": {
        +                    "enum": [
        +                      "summary",
        +                      "material_schedule",
        +                      "boq",
        +                      "boq_with_backup"
        +                    ],
        +                    "type": "string"
        +                  },
        +                  "omitted_fields": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "minItems": 1,
        +                    "type": "array"
        +                  },
        +                  "retrieve_with": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "mode",
        +                  "omitted_fields",
        +                  "retrieve_with"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "rate_limit_remaining": {
        +            "anyOf": [
        +              {
        +                "minimum": 0,
        +                "type": "integer"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "request_id": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "schema_version": {
        +            "const": "1.0.0",
        +            "default": "1.0.0",
        +            "type": "string"
        +          },
        +          "scope_boundary": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        +                "properties": {
        +                  "not_in_scope": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "produced": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "recommended_companions": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "type": "string"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "produced",
        +                  "not_in_scope"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tier": {
        +            "enum": [
        +              "free",
        +              "paid"
        +            ],
        +            "type": "string"
        +          },
        +          "tier_upgrade": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        +                "properties": {
        +                  "available_tiers": {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        +                      "properties": {
        +                        "billing": {
        +                          "enum": [
        +                            "one_off",
        +                            "monthly",
        +                            "annual"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "currency": {
        +                          "enum": [
        +                            "GBP",
        +                            "SGD",
        +                            "EUR",
        +                            "USD",
        +                            "CAD",
        +                            "AUD",
        +                            "NZD",
        +                            "MYR"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "display_name": {
        +                          "type": "string"
        +                        },
        +                        "price_local": {
        +                          "type": "number"
        +                        },
        +                        "tier_slug": {
        +                          "enum": [
        +                            "7_day_pass",
        +                            "solo",
        +                            "studio",
        +                            "practice"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "unlock_summary": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "tier_slug",
        +                        "display_name",
        +                        "price_local",
        +                        "currency",
        +                        "billing",
        +                        "unlock_summary"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "current_tier": {
        +                    "const": "free",
        +                    "default": "free",
        +                    "type": "string"
        +                  },
        +                  "pass_credit": {
        +                    "anyOf": [
        +                      {
        +                        "additionalProperties": false,
        +                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        +                        "properties": {
        +                          "amount_local": {
        +                            "type": "number"
        +                          },
        +                          "applies_to": {
        +                            "const": "solo_first_month",
        +                            "default": "solo_first_month",
        +                            "type": "string"
        +                          },
        +                          "currency": {
        +                            "type": "string"
        +                          },
        +                          "redeemable_until": {
        +                            "type": "string"
        +                          }
        +                        },
        +                        "required": [
        +                          "amount_local",
        +                          "currency",
        +                          "redeemable_until"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "pricing_url": {
        +                    "default": "https://civilquants.com/pricing",
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "available_tiers"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tos_url": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "upgrade_hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "warranty_disclaimer": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          }
        +        },
        +        "required": [
        +          "request_id",
        +          "issued_at",
        +          "tier"
        +        ],
        +        "type": "object"
        +      },
        +      "data": {
        +        "default": null,
        +        "title": "Data"
        +      },
        +      "error": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        +            "properties": {
        +              "code": {
        +                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        +                "enum": [
        +                  "RATE_LIMIT_EXCEEDED",
        +                  "TIER_INSUFFICIENT",
        +                  "INVALID_INPUT",
        +                  "SCHEMA_VERSION_MISMATCH",
        +                  "SCHEMA_INVARIANT_VIOLATION",
        +                  "UPSTREAM_TIMEOUT",
        +                  "BACKEND_FAILURE",
        +                  "IP_BLOCKED",
        +                  "RESOURCE_NOT_FOUND",
        +                  "RENDER_FAILURE",
        +                  "OCR_LOW_CONFIDENCE",
        +                  "MANUAL_REVIEW_REQUIRED",
        +                  "ACCEPTANCE_REQUIRED",
        +                  "INVALID_TOKEN"
        +                ],
        +                "type": "string"
        +              },
        +              "details": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "message": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "recoverable": {
        +                "type": "boolean"
        +              },
        +              "retry_after_seconds": {
        +                "anyOf": [
        +                  {
        +                    "minimum": 0,
        +                    "type": "integer"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              }
        +            },
        +            "required": [
        +              "code",
        +              "message",
        +              "recoverable"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      }
        +    },
        +    "required": [
        +      "_meta"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedcompute_box_culvert2 fields changed
      • changedInput schema / properties / output_mode / enum
        Previous value: -[
        -  "summary",
        -  "boq",
        -  "boq_with_backup",
        -  "full_json"
        -]New value: +[
        +  "summary",
        +  "material_schedule",
        +  "boq",
        +  "boq_with_backup",
        +  "full_json"
        +]
      • changedOutput schema / properties / result / anyOf
        Previous value: -[
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "_meta": {
        -        "additionalProperties": false,
        -        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        -        "properties": {
        -          "deliverables": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        -                "properties": {
        -                  "docx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "dxf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "expires_at": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  },
        -                  "pdf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "xlsx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "expires_at"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "document_id": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "issued_at": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "output_mode": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Surfaces what a trimmed ``output_mode`` withheld from ``data``.\n\nA trimmed mode (``summary`` / ``boq`` / ``boq_with_backup``) withholds\nalready-computed fields to keep the chat payload small. The withheld value\nreads to a client agent as \"capability missing\" (the box-culvert \"geometry\nbuilder isn't firing\" scare) rather than \"pared for size\": ``drawing`` and\n``audit_trail`` appear as ``null``, ``boq_rows`` as an empty list ``[]``\n(its type forbids ``null``) — both indistinguishable from a genuine absent\nresult. This names the withheld fields and the exact mode that brings each\nback, so the value is unambiguous. Absent on the default ``full_json`` mode\n— nothing is withheld, nothing to point at.",
        -                "properties": {
        -                  "mode": {
        -                    "enum": [
        -                      "summary",
        -                      "boq",
        -                      "boq_with_backup"
        -                    ],
        -                    "type": "string"
        -                  },
        -                  "omitted_fields": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "minItems": 1,
        -                    "type": "array"
        -                  },
        -                  "retrieve_with": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "mode",
        -                  "omitted_fields",
        -                  "retrieve_with"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "rate_limit_remaining": {
        -            "anyOf": [
        -              {
        -                "minimum": 0,
        -                "type": "integer"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "request_id": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "schema_version": {
        -            "const": "1.0.0",
        -            "default": "1.0.0",
        -            "type": "string"
        -          },
        -          "scope_boundary": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        -                "properties": {
        -                  "not_in_scope": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "produced": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "recommended_companions": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "type": "string"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "produced",
        -                  "not_in_scope"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tier": {
        -            "enum": [
        -              "free",
        -              "paid"
        -            ],
        -            "type": "string"
        -          },
        -          "tier_upgrade": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        -                "properties": {
        -                  "available_tiers": {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        -                      "properties": {
        -                        "billing": {
        -                          "enum": [
        -                            "one_off",
        -                            "monthly",
        -                            "annual"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "currency": {
        -                          "enum": [
        -                            "GBP",
        -                            "SGD",
        -                            "EUR",
        -                            "USD",
        -                            "CAD",
        -                            "AUD",
        -                            "NZD",
        -                            "MYR"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "display_name": {
        -                          "type": "string"
        -                        },
        -                        "price_local": {
        -                          "type": "number"
        -                        },
        -                        "tier_slug": {
        -                          "enum": [
        -                            "7_day_pass",
        -                            "solo",
        -                            "studio",
        -                            "practice"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "unlock_summary": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "tier_slug",
        -                        "display_name",
        -                        "price_local",
        -                        "currency",
        -                        "billing",
        -                        "unlock_summary"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "current_tier": {
        -                    "const": "free",
        -                    "default": "free",
        -                    "type": "string"
        -                  },
        -                  "pass_credit": {
        -                    "anyOf": [
        -                      {
        -                        "additionalProperties": false,
        -                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        -                        "properties": {
        -                          "amount_local": {
        -                            "type": "number"
        -                          },
        -                          "applies_to": {
        -                            "const": "solo_first_month",
        -                            "default": "solo_first_month",
        -                            "type": "string"
        -                          },
        -                          "currency": {
        -                            "type": "string"
        -                          },
        -                          "redeemable_until": {
        -                            "type": "string"
        -                          }
        -                        },
        -                        "required": [
        -                          "amount_local",
        -                          "currency",
        -                          "redeemable_until"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "pricing_url": {
        -                    "default": "https://civilquants.com/pricing",
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "available_tiers"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tos_url": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "upgrade_hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "warranty_disclaimer": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          }
        -        },
        -        "required": [
        -          "request_id",
        -          "issued_at",
        -          "tier"
        -        ],
        -        "type": "object"
        -      },
        -      "data": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Schema § 1.1 — the typed payload returned inside `MCPResponse[ComputeResult]`.\n\nFree-tier responses omit `drawings` (the downloadable CAD artefact\npointers — the paid differentiator); the bridge enforces this. The\n`audit_trail` and the inline `drawing` preview are present on BOTH tiers\n(V1 ALIGN / 60th-fire D + C). `text_summary` is bounded to 2000 chars —\nkeeps the LLM-facing summary token-cheap and forces longer narrative into\nBoQ row descriptions where it belongs. `warnings` is the non-fatal\ngeometry advisory list (both tiers).",
        -            "properties": {
        -              "assembly_slug": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "audit_trail": {
        -                "anyOf": [
        -                  {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.7 — paid-tier audit-trail entry.\n\nOne entry per BoQ row; `boq_row_index` ties to the row position in\n`ComputeResult.boq_rows`. `derivation` is the human-readable formula\nwalk-through; `formula` is the optional formal expression.",
        -                      "properties": {
        -                        "boq_row_index": {
        -                          "minimum": 0,
        -                          "type": "integer"
        -                        },
        -                        "derivation": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "formula": {
        -                          "anyOf": [
        -                            {
        -                              "type": "string"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ],
        -                          "default": null
        -                        },
        -                        "id": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "parameters_referenced": {
        -                          "items": {
        -                            "type": "string"
        -                          },
        -                          "type": "array"
        -                        }
        -                      },
        -                      "required": [
        -                        "id",
        -                        "boq_row_index",
        -                        "derivation"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "boq_rows": {
        -                "items": {
        -                  "additionalProperties": false,
        -                  "description": "Schema § 1.3 — a single bill row in the requested standard's format.\n\n`description` is the non-verbatim functional description per spec § 13.9 /\n§ 15 invariant — NEVER reproduces a standard's verbatim clause text.\n`rate` / `amount` ship null because rates are commodity data the customer\nowns; the engine's job is the measurement, not the pricing.",
        -                  "properties": {
        -                    "amount": {
        -                      "anyOf": [
        -                        {
        -                          "type": "number"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "attribution": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "audit_id": {
        -                      "anyOf": [
        -                        {
        -                          "type": "string"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "description": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "quantity": {
        -                      "minimum": 0,
        -                      "type": "number"
        -                    },
        -                    "rate": {
        -                      "anyOf": [
        -                        {
        -                          "type": "number"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "unit": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "work_section": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    }
        -                  },
        -                  "required": [
        -                    "work_section",
        -                    "description",
        -                    "quantity",
        -                    "unit",
        -                    "attribution"
        -                  ],
        -                  "type": "object"
        -                },
        -                "type": "array"
        -              },
        -              "drawing": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": false,
        -                    "description": "Schema § 1.6a — inline server-rendered SVG preview of the geometry.\n\nThe MCP mirror of the web ``/compute`` response's ``drawing`` field\n(``api.schemas.compute.DrawingRef``): the same on-screen dimensioned\ndrawing both tiers see in the workspace, surfaced on the MCP compute\nresponse so a chat client can render it inline (60th-fire item C). This\nis the on-screen preview — present on BOTH tiers per the free/paid\nboundary; the downloadable CAD artefacts (DXF / dimensioned PDF) remain\nthe paid differentiator via the export tools.\n\nDefined here rather than importing ``DrawingRef`` because the web\n``schemas`` package imports back into this module (``schemas.render``),\nso reusing it would create an import cycle — the MCP wire contract keeps\nits own copy, the same pattern as ``BoQRow`` / ``DrawingReference``.",
        -                    "properties": {
        -                      "entity_count": {
        -                        "minimum": 0,
        -                        "type": "integer"
        -                      },
        -                      "svg_b64": {
        -                        "minLength": 1,
        -                        "type": "string"
        -                      },
        -                      "unit_of_drawing": {
        -                        "const": "m",
        -                        "default": "m",
        -                        "type": "string"
        -                      },
        -                      "viewbox_height": {
        -                        "exclusiveMinimum": 0,
        -                        "type": "number"
        -                      },
        -                      "viewbox_width": {
        -                        "exclusiveMinimum": 0,
        -                        "type": "number"
        -                      },
        -                      "viewbox_x": {
        -                        "type": "number"
        -                      },
        -                      "viewbox_y": {
        -                        "type": "number"
        -                      }
        -                    },
        -                    "required": [
        -                      "svg_b64",
        -                      "viewbox_x",
        -                      "viewbox_y",
        -                      "viewbox_width",
        -                      "viewbox_height",
        -                      "entity_count"
        -                    ],
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "drawings": {
        -                "anyOf": [
        -                  {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.6 — paid-tier drawing artefact pointer.\n\n`url` is an R2-signed URL; expiry is carried in `_meta.deliverables.expires_at`\non the envelope (not duplicated here). `layers` is DXF-only; PDF/SVG\ncallers omit it.",
        -                      "properties": {
        -                        "drawing_type": {
        -                          "enum": [
        -                            "section",
        -                            "plan",
        -                            "elevation",
        -                            "isometric",
        -                            "detail"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "format": {
        -                          "enum": [
        -                            "DXF",
        -                            "PDF",
        -                            "SVG"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "layers": {
        -                          "anyOf": [
        -                            {
        -                              "items": {
        -                                "type": "string"
        -                              },
        -                              "type": "array"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ],
        -                          "default": null
        -                        },
        -                        "scale": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "sheet_size": {
        -                          "enum": [
        -                            "A1",
        -                            "A2",
        -                            "A3",
        -                            "A4"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "url": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "drawing_type",
        -                        "format",
        -                        "url",
        -                        "sheet_size",
        -                        "scale"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "parameters_used": {
        -                "additionalProperties": false,
        -                "description": "Schema § 1.2 — the parameter snapshot the engine actually used.\n\nSplits user-supplied values from engine defaults so customers can see\nwhich numbers came from them and which the engine filled in. Every\ndefaulted parameter SHOULD have a corresponding entry in `assumptions`\n— the bridge layer enforces this when wrapping engine output.",
        -                "properties": {
        -                  "assumptions": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "engine_defaults": {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  "user_supplied": {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  }
        -                },
        -                "type": "object"
        -              },
        -              "standard": {
        -                "enum": [
        -                  "CESMM4",
        -                  "NRM2",
        -                  "SMM7",
        -                  "MMHW"
        -                ],
        -                "type": "string"
        -              },
        -              "text_summary": {
        -                "maxLength": 2000,
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "totals_summary": {
        -                "additionalProperties": false,
        -                "description": "Schema § 1.4 — totals_summary as a typed wrapper around the free-form dict.\n\nWire shape is a flat object (`{\"concrete_m3\": {...}, \"rebar_t\": {...}}`).\nWe model it as `RootModel`-equivalent via `model_config(extra=\"allow\")`\n+ a single `__root__`-style `entries` dict. Pydantic v2 recommends\n`RootModel` for free-form roots; using a wrapper class keeps the import\nsurface uniform with the rest of this module.",
        -                "properties": {
        -                  "entries": {
        -                    "additionalProperties": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.4 — single material/work-class total entry.",
        -                      "properties": {
        -                        "quantity": {
        -                          "minimum": 0,
        -                          "type": "number"
        -                        },
        -                        "unit": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "quantity",
        -                        "unit"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "object"
        -                  }
        -                },
        -                "type": "object"
        -              },
        -              "warnings": {
        -                "items": {
        -                  "additionalProperties": false,
        -                  "description": "Schema § 1.8 — a non-fatal geometry advisory (56th-fire T2).\n\nThe wire projection of the engine's `core.GeometryWarning`. Advisory only:\na warning NEVER changes a measured quantity — it flags geometry that is\nvalid but likely a mistake (e.g. a stale dependent-height default). Present\non BOTH tiers — a correctness/safety signal, not a paid feature.",
        -                  "properties": {
        -                    "affected_params": {
        -                      "items": {
        -                        "type": "string"
        -                      },
        -                      "type": "array"
        -                    },
        -                    "code": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "detail": {
        -                      "additionalProperties": {
        -                        "type": "number"
        -                      },
        -                      "type": "object"
        -                    },
        -                    "message": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "severity": {
        -                      "enum": [
        -                        "info",
        -                        "advisory",
        -                        "caution"
        -                      ],
        -                      "type": "string"
        -                    }
        -                  },
        -                  "required": [
        -                    "code",
        -                    "severity",
        -                    "message"
        -                  ],
        -                  "type": "object"
        -                },
        -                "type": "array"
        -              }
        -            },
        -            "required": [
        -              "assembly_slug",
        -              "standard",
        -              "parameters_used",
        -              "boq_rows",
        -              "totals_summary",
        -              "text_summary"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      },
        -      "error": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        -            "properties": {
        -              "code": {
        -                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        -                "enum": [
        -                  "RATE_LIMIT_EXCEEDED",
        -                  "TIER_INSUFFICIENT",
        -                  "INVALID_INPUT",
        -                  "SCHEMA_VERSION_MISMATCH",
        -                  "SCHEMA_INVARIANT_VIOLATION",
        -                  "UPSTREAM_TIMEOUT",
        -                  "BACKEND_FAILURE",
        -                  "IP_BLOCKED",
        -                  "RESOURCE_NOT_FOUND",
        -                  "RENDER_FAILURE",
        -                  "OCR_LOW_CONFIDENCE",
        -                  "MANUAL_REVIEW_REQUIRED",
        -                  "ACCEPTANCE_REQUIRED",
        -                  "INVALID_TOKEN"
        -                ],
        -                "type": "string"
        -              },
        -              "details": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "message": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "recoverable": {
        -                "type": "boolean"
        -              },
        -              "retry_after_seconds": {
        -                "anyOf": [
        -                  {
        -                    "minimum": 0,
        -                    "type": "integer"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              }
        -            },
        -            "required": [
        -              "code",
        -              "message",
        -              "recoverable"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      }
        -    },
        -    "required": [
        -      "_meta"
        -    ],
        -    "type": "object"
        -  },
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "_meta": {
        -        "additionalProperties": false,
        -        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        -        "properties": {
        -          "deliverables": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        -                "properties": {
        -                  "docx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "dxf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "expires_at": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  },
        -                  "pdf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "xlsx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "expires_at"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "document_id": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "issued_at": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "output_mode": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Surfaces what a trimmed ``output_mode`` withheld from ``data``.\n\nA trimmed mode (``summary`` / ``boq`` / ``boq_with_backup``) withholds\nalready-computed fields to keep the chat payload small. The withheld value\nreads to a client agent as \"capability missing\" (the box-culvert \"geometry\nbuilder isn't firing\" scare) rather than \"pared for size\": ``drawing`` and\n``audit_trail`` appear as ``null``, ``boq_rows`` as an empty list ``[]``\n(its type forbids ``null``) — both indistinguishable from a genuine absent\nresult. This names the withheld fields and the exact mode that brings each\nback, so the value is unambiguous. Absent on the default ``full_json`` mode\n— nothing is withheld, nothing to point at.",
        -                "properties": {
        -                  "mode": {
        -                    "enum": [
        -                      "summary",
        -                      "boq",
        -                      "boq_with_backup"
        -                    ],
        -                    "type": "string"
        -                  },
        -                  "omitted_fields": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "minItems": 1,
        -                    "type": "array"
        -                  },
        -                  "retrieve_with": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "mode",
        -                  "omitted_fields",
        -                  "retrieve_with"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "rate_limit_remaining": {
        -            "anyOf": [
        -              {
        -                "minimum": 0,
        -                "type": "integer"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "request_id": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "schema_version": {
        -            "const": "1.0.0",
        -            "default": "1.0.0",
        -            "type": "string"
        -          },
        -          "scope_boundary": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        -                "properties": {
        -                  "not_in_scope": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "produced": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "recommended_companions": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "type": "string"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "produced",
        -                  "not_in_scope"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tier": {
        -            "enum": [
        -              "free",
        -              "paid"
        -            ],
        -            "type": "string"
        -          },
        -          "tier_upgrade": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        -                "properties": {
        -                  "available_tiers": {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        -                      "properties": {
        -                        "billing": {
        -                          "enum": [
        -                            "one_off",
        -                            "monthly",
        -                            "annual"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "currency": {
        -                          "enum": [
        -                            "GBP",
        -                            "SGD",
        -                            "EUR",
        -                            "USD",
        -                            "CAD",
        -                            "AUD",
        -                            "NZD",
        -                            "MYR"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "display_name": {
        -                          "type": "string"
        -                        },
        -                        "price_local": {
        -                          "type": "number"
        -                        },
        -                        "tier_slug": {
        -                          "enum": [
        -                            "7_day_pass",
        -                            "solo",
        -                            "studio",
        -                            "practice"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "unlock_summary": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "tier_slug",
        -                        "display_name",
        -                        "price_local",
        -                        "currency",
        -                        "billing",
        -                        "unlock_summary"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "current_tier": {
        -                    "const": "free",
        -                    "default": "free",
        -                    "type": "string"
        -                  },
        -                  "pass_credit": {
        -                    "anyOf": [
        -                      {
        -                        "additionalProperties": false,
        -                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        -                        "properties": {
        -                          "amount_local": {
        -                            "type": "number"
        -                          },
        -                          "applies_to": {
        -                            "const": "solo_first_month",
        -                            "default": "solo_first_month",
        -                            "type": "string"
        -                          },
        -                          "currency": {
        -                            "type": "string"
        -                          },
        -                          "redeemable_until": {
        -                            "type": "string"
        -                          }
        -                        },
        -                        "required": [
        -                          "amount_local",
        -                          "currency",
        -                          "redeemable_until"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "pricing_url": {
        -                    "default": "https://civilquants.com/pricing",
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "available_tiers"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tos_url": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "upgrade_hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "warranty_disclaimer": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          }
        -        },
        -        "required": [
        -          "request_id",
        -          "issued_at",
        -          "tier"
        -        ],
        -        "type": "object"
        -      },
        -      "data": {
        -        "default": null,
        -        "title": "Data"
        -      },
        -      "error": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        -            "properties": {
        -              "code": {
        -                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        -                "enum": [
        -                  "RATE_LIMIT_EXCEEDED",
        -                  "TIER_INSUFFICIENT",
        -                  "INVALID_INPUT",
        -                  "SCHEMA_VERSION_MISMATCH",
        -                  "SCHEMA_INVARIANT_VIOLATION",
        -                  "UPSTREAM_TIMEOUT",
        -                  "BACKEND_FAILURE",
        -                  "IP_BLOCKED",
        -                  "RESOURCE_NOT_FOUND",
        -                  "RENDER_FAILURE",
        -                  "OCR_LOW_CONFIDENCE",
        -                  "MANUAL_REVIEW_REQUIRED",
        -                  "ACCEPTANCE_REQUIRED",
        -                  "INVALID_TOKEN"
        -                ],
        -                "type": "string"
        -              },
        -              "details": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "message": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "recoverable": {
        -                "type": "boolean"
        -              },
        -              "retry_after_seconds": {
        -                "anyOf": [
        -                  {
        -                    "minimum": 0,
        -                    "type": "integer"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              }
        -            },
        -            "required": [
        -              "code",
        -              "message",
        -              "recoverable"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      }
        -    },
        -    "required": [
        -      "_meta"
        -    ],
        -    "type": "object"
        -  }
        -]New value: +[
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "_meta": {
        +        "additionalProperties": false,
        +        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        +        "properties": {
        +          "deliverables": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        +                "properties": {
        +                  "docx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "dxf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "expires_at": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  },
        +                  "pdf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "xlsx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "expires_at"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "document_id": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "issued_at": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "output_mode": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Surfaces what a trimmed ``output_mode`` withheld from ``data``.\n\nA trimmed mode (``summary`` / ``material_schedule`` / ``boq`` /\n``boq_with_backup``) withholds\nalready-computed fields to keep the chat payload small. The withheld value\nreads to a client agent as \"capability missing\" (the box-culvert \"geometry\nbuilder isn't firing\" scare) rather than \"pared for size\": ``drawing`` and\n``audit_trail`` appear as ``null``, ``boq_rows`` as an empty list ``[]``\n(its type forbids ``null``) — both indistinguishable from a genuine absent\nresult. This names the withheld fields and the exact mode that brings each\nback, so the value is unambiguous. Absent on the default ``full_json`` mode\n— nothing is withheld, nothing to point at.",
        +                "properties": {
        +                  "mode": {
        +                    "enum": [
        +                      "summary",
        +                      "material_schedule",
        +                      "boq",
        +                      "boq_with_backup"
        +                    ],
        +                    "type": "string"
        +                  },
        +                  "omitted_fields": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "minItems": 1,
        +                    "type": "array"
        +                  },
        +                  "retrieve_with": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "mode",
        +                  "omitted_fields",
        +                  "retrieve_with"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "rate_limit_remaining": {
        +            "anyOf": [
        +              {
        +                "minimum": 0,
        +                "type": "integer"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "request_id": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "schema_version": {
        +            "const": "1.0.0",
        +            "default": "1.0.0",
        +            "type": "string"
        +          },
        +          "scope_boundary": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        +                "properties": {
        +                  "not_in_scope": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "produced": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "recommended_companions": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "type": "string"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "produced",
        +                  "not_in_scope"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tier": {
        +            "enum": [
        +              "free",
        +              "paid"
        +            ],
        +            "type": "string"
        +          },
        +          "tier_upgrade": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        +                "properties": {
        +                  "available_tiers": {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        +                      "properties": {
        +                        "billing": {
        +                          "enum": [
        +                            "one_off",
        +                            "monthly",
        +                            "annual"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "currency": {
        +                          "enum": [
        +                            "GBP",
        +                            "SGD",
        +                            "EUR",
        +                            "USD",
        +                            "CAD",
        +                            "AUD",
        +                            "NZD",
        +                            "MYR"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "display_name": {
        +                          "type": "string"
        +                        },
        +                        "price_local": {
        +                          "type": "number"
        +                        },
        +                        "tier_slug": {
        +                          "enum": [
        +                            "7_day_pass",
        +                            "solo",
        +                            "studio",
        +                            "practice"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "unlock_summary": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "tier_slug",
        +                        "display_name",
        +                        "price_local",
        +                        "currency",
        +                        "billing",
        +                        "unlock_summary"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "current_tier": {
        +                    "const": "free",
        +                    "default": "free",
        +                    "type": "string"
        +                  },
        +                  "pass_credit": {
        +                    "anyOf": [
        +                      {
        +                        "additionalProperties": false,
        +                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        +                        "properties": {
        +                          "amount_local": {
        +                            "type": "number"
        +                          },
        +                          "applies_to": {
        +                            "const": "solo_first_month",
        +                            "default": "solo_first_month",
        +                            "type": "string"
        +                          },
        +                          "currency": {
        +                            "type": "string"
        +                          },
        +                          "redeemable_until": {
        +                            "type": "string"
        +                          }
        +                        },
        +                        "required": [
        +                          "amount_local",
        +                          "currency",
        +                          "redeemable_until"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "pricing_url": {
        +                    "default": "https://civilquants.com/pricing",
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "available_tiers"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tos_url": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "upgrade_hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "warranty_disclaimer": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          }
        +        },
        +        "required": [
        +          "request_id",
        +          "issued_at",
        +          "tier"
        +        ],
        +        "type": "object"
        +      },
        +      "data": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Schema § 1.1 — the typed payload returned inside `MCPResponse[ComputeResult]`.\n\nFree-tier responses omit `drawings` (the downloadable CAD artefact\npointers — the paid differentiator); the bridge enforces this. The\n`audit_trail` and the inline `drawing` preview are present on BOTH tiers\n(V1 ALIGN / 60th-fire D + C). `text_summary` is bounded to 2000 chars —\nkeeps the LLM-facing summary token-cheap and forces longer narrative into\nBoQ row descriptions where it belongs. `warnings` is the non-fatal\ngeometry advisory list (both tiers).",
        +            "properties": {
        +              "assembly_slug": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "audit_trail": {
        +                "anyOf": [
        +                  {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.7 — paid-tier audit-trail entry.\n\nOne entry per BoQ row; `boq_row_index` ties to the row position in\n`ComputeResult.boq_rows`. `derivation` is the human-readable formula\nwalk-through; `formula` is the optional formal expression.",
        +                      "properties": {
        +                        "boq_row_index": {
        +                          "minimum": 0,
        +                          "type": "integer"
        +                        },
        +                        "derivation": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "formula": {
        +                          "anyOf": [
        +                            {
        +                              "type": "string"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ],
        +                          "default": null
        +                        },
        +                        "id": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "parameters_referenced": {
        +                          "items": {
        +                            "type": "string"
        +                          },
        +                          "type": "array"
        +                        }
        +                      },
        +                      "required": [
        +                        "id",
        +                        "boq_row_index",
        +                        "derivation"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "boq_rows": {
        +                "items": {
        +                  "additionalProperties": false,
        +                  "description": "Schema § 1.3 — a single bill row in the requested standard's format.\n\n`description` is the non-verbatim functional description per spec § 13.9 /\n§ 15 invariant — NEVER reproduces a standard's verbatim clause text.\n`rate` / `amount` ship null because rates are commodity data the customer\nowns; the engine's job is the measurement, not the pricing.",
        +                  "properties": {
        +                    "amount": {
        +                      "anyOf": [
        +                        {
        +                          "type": "number"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "attribution": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "audit_id": {
        +                      "anyOf": [
        +                        {
        +                          "type": "string"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "description": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "quantity": {
        +                      "minimum": 0,
        +                      "type": "number"
        +                    },
        +                    "rate": {
        +                      "anyOf": [
        +                        {
        +                          "type": "number"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "unit": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "work_section": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    }
        +                  },
        +                  "required": [
        +                    "work_section",
        +                    "description",
        +                    "quantity",
        +                    "unit",
        +                    "attribution"
        +                  ],
        +                  "type": "object"
        +                },
        +                "type": "array"
        +              },
        +              "drawing": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": false,
        +                    "description": "Schema § 1.6a — inline server-rendered SVG preview of the geometry.\n\nThe MCP mirror of the web ``/compute`` response's ``drawing`` field\n(``api.schemas.compute.DrawingRef``): the same on-screen dimensioned\ndrawing both tiers see in the workspace, surfaced on the MCP compute\nresponse so a chat client can render it inline (60th-fire item C). This\nis the on-screen preview — present on BOTH tiers per the free/paid\nboundary; the downloadable CAD artefacts (DXF / dimensioned PDF) remain\nthe paid differentiator via the export tools.\n\nDefined here rather than importing ``DrawingRef`` because the web\n``schemas`` package imports back into this module (``schemas.render``),\nso reusing it would create an import cycle — the MCP wire contract keeps\nits own copy, the same pattern as ``BoQRow`` / ``DrawingReference``.",
        +                    "properties": {
        +                      "entity_count": {
        +                        "minimum": 0,
        +                        "type": "integer"
        +                      },
        +                      "svg_b64": {
        +                        "minLength": 1,
        +                        "type": "string"
        +                      },
        +                      "unit_of_drawing": {
        +                        "const": "m",
        +                        "default": "m",
        +                        "type": "string"
        +                      },
        +                      "viewbox_height": {
        +                        "exclusiveMinimum": 0,
        +                        "type": "number"
        +                      },
        +                      "viewbox_width": {
        +                        "exclusiveMinimum": 0,
        +                        "type": "number"
        +                      },
        +                      "viewbox_x": {
        +                        "type": "number"
        +                      },
        +                      "viewbox_y": {
        +                        "type": "number"
        +                      }
        +                    },
        +                    "required": [
        +                      "svg_b64",
        +                      "viewbox_x",
        +                      "viewbox_y",
        +                      "viewbox_width",
        +                      "viewbox_height",
        +                      "entity_count"
        +                    ],
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "drawings": {
        +                "anyOf": [
        +                  {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.6 — paid-tier drawing artefact pointer.\n\n`url` is an R2-signed URL; expiry is carried in `_meta.deliverables.expires_at`\non the envelope (not duplicated here). `layers` is DXF-only; PDF/SVG\ncallers omit it.",
        +                      "properties": {
        +                        "drawing_type": {
        +                          "enum": [
        +                            "section",
        +                            "plan",
        +                            "elevation",
        +                            "isometric",
        +                            "detail"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "format": {
        +                          "enum": [
        +                            "DXF",
        +                            "PDF",
        +                            "SVG"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "layers": {
        +                          "anyOf": [
        +                            {
        +                              "items": {
        +                                "type": "string"
        +                              },
        +                              "type": "array"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ],
        +                          "default": null
        +                        },
        +                        "scale": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "sheet_size": {
        +                          "enum": [
        +                            "A1",
        +                            "A2",
        +                            "A3",
        +                            "A4"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "url": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "drawing_type",
        +                        "format",
        +                        "url",
        +                        "sheet_size",
        +                        "scale"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "parameters_used": {
        +                "additionalProperties": false,
        +                "description": "Schema § 1.2 — the parameter snapshot the engine actually used.\n\nSplits user-supplied values from engine defaults so customers can see\nwhich numbers came from them and which the engine filled in. Every\ndefaulted parameter SHOULD have a corresponding entry in `assumptions`\n— the bridge layer enforces this when wrapping engine output.",
        +                "properties": {
        +                  "assumptions": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "engine_defaults": {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  "user_supplied": {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  }
        +                },
        +                "type": "object"
        +              },
        +              "standard": {
        +                "enum": [
        +                  "CESMM4",
        +                  "NRM2",
        +                  "SMM7",
        +                  "MMHW"
        +                ],
        +                "type": "string"
        +              },
        +              "text_summary": {
        +                "maxLength": 2000,
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "totals_summary": {
        +                "additionalProperties": false,
        +                "description": "Schema § 1.4 — totals_summary as a typed wrapper around the free-form dict.\n\nWire shape is a flat object (`{\"concrete_m3\": {...}, \"rebar_t\": {...}}`).\nWe model it as `RootModel`-equivalent via `model_config(extra=\"allow\")`\n+ a single `__root__`-style `entries` dict. Pydantic v2 recommends\n`RootModel` for free-form roots; using a wrapper class keeps the import\nsurface uniform with the rest of this module.",
        +                "properties": {
        +                  "entries": {
        +                    "additionalProperties": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.4 — single material/work-class total entry.",
        +                      "properties": {
        +                        "quantity": {
        +                          "minimum": 0,
        +                          "type": "number"
        +                        },
        +                        "unit": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "quantity",
        +                        "unit"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "object"
        +                  }
        +                },
        +                "type": "object"
        +              },
        +              "warnings": {
        +                "items": {
        +                  "additionalProperties": false,
        +                  "description": "Schema § 1.8 — a non-fatal geometry advisory (56th-fire T2).\n\nThe wire projection of the engine's `core.GeometryWarning`. Advisory only:\na warning NEVER changes a measured quantity — it flags geometry that is\nvalid but likely a mistake (e.g. a stale dependent-height default). Present\non BOTH tiers — a correctness/safety signal, not a paid feature.",
        +                  "properties": {
        +                    "affected_params": {
        +                      "items": {
        +                        "type": "string"
        +                      },
        +                      "type": "array"
        +                    },
        +                    "code": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "detail": {
        +                      "additionalProperties": {
        +                        "type": "number"
        +                      },
        +                      "type": "object"
        +                    },
        +                    "message": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "severity": {
        +                      "enum": [
        +                        "info",
        +                        "advisory",
        +                        "caution"
        +                      ],
        +                      "type": "string"
        +                    }
        +                  },
        +                  "required": [
        +                    "code",
        +                    "severity",
        +                    "message"
        +                  ],
        +                  "type": "object"
        +                },
        +                "type": "array"
        +              }
        +            },
        +            "required": [
        +              "assembly_slug",
        +              "standard",
        +              "parameters_used",
        +              "boq_rows",
        +              "totals_summary",
        +              "text_summary"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      },
        +      "error": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        +            "properties": {
        +              "code": {
        +                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        +                "enum": [
        +                  "RATE_LIMIT_EXCEEDED",
        +                  "TIER_INSUFFICIENT",
        +                  "INVALID_INPUT",
        +                  "SCHEMA_VERSION_MISMATCH",
        +                  "SCHEMA_INVARIANT_VIOLATION",
        +                  "UPSTREAM_TIMEOUT",
        +                  "BACKEND_FAILURE",
        +                  "IP_BLOCKED",
        +                  "RESOURCE_NOT_FOUND",
        +                  "RENDER_FAILURE",
        +                  "OCR_LOW_CONFIDENCE",
        +                  "MANUAL_REVIEW_REQUIRED",
        +                  "ACCEPTANCE_REQUIRED",
        +                  "INVALID_TOKEN"
        +                ],
        +                "type": "string"
        +              },
        +              "details": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "message": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "recoverable": {
        +                "type": "boolean"
        +              },
        +              "retry_after_seconds": {
        +                "anyOf": [
        +                  {
        +                    "minimum": 0,
        +                    "type": "integer"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              }
        +            },
        +            "required": [
        +              "code",
        +              "message",
        +              "recoverable"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      }
        +    },
        +    "required": [
        +      "_meta"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "_meta": {
        +        "additionalProperties": false,
        +        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        +        "properties": {
        +          "deliverables": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        +                "properties": {
        +                  "docx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "dxf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "expires_at": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  },
        +                  "pdf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "xlsx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "expires_at"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "document_id": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "issued_at": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "output_mode": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Surfaces what a trimmed ``output_mode`` withheld from ``data``.\n\nA trimmed mode (``summary`` / ``material_schedule`` / ``boq`` /\n``boq_with_backup``) withholds\nalready-computed fields to keep the chat payload small. The withheld value\nreads to a client agent as \"capability missing\" (the box-culvert \"geometry\nbuilder isn't firing\" scare) rather than \"pared for size\": ``drawing`` and\n``audit_trail`` appear as ``null``, ``boq_rows`` as an empty list ``[]``\n(its type forbids ``null``) — both indistinguishable from a genuine absent\nresult. This names the withheld fields and the exact mode that brings each\nback, so the value is unambiguous. Absent on the default ``full_json`` mode\n— nothing is withheld, nothing to point at.",
        +                "properties": {
        +                  "mode": {
        +                    "enum": [
        +                      "summary",
        +                      "material_schedule",
        +                      "boq",
        +                      "boq_with_backup"
        +                    ],
        +                    "type": "string"
        +                  },
        +                  "omitted_fields": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "minItems": 1,
        +                    "type": "array"
        +                  },
        +                  "retrieve_with": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "mode",
        +                  "omitted_fields",
        +                  "retrieve_with"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "rate_limit_remaining": {
        +            "anyOf": [
        +              {
        +                "minimum": 0,
        +                "type": "integer"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "request_id": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "schema_version": {
        +            "const": "1.0.0",
        +            "default": "1.0.0",
        +            "type": "string"
        +          },
        +          "scope_boundary": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        +                "properties": {
        +                  "not_in_scope": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "produced": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "recommended_companions": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "type": "string"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "produced",
        +                  "not_in_scope"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tier": {
        +            "enum": [
        +              "free",
        +              "paid"
        +            ],
        +            "type": "string"
        +          },
        +          "tier_upgrade": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        +                "properties": {
        +                  "available_tiers": {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        +                      "properties": {
        +                        "billing": {
        +                          "enum": [
        +                            "one_off",
        +                            "monthly",
        +                            "annual"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "currency": {
        +                          "enum": [
        +                            "GBP",
        +                            "SGD",
        +                            "EUR",
        +                            "USD",
        +                            "CAD",
        +                            "AUD",
        +                            "NZD",
        +                            "MYR"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "display_name": {
        +                          "type": "string"
        +                        },
        +                        "price_local": {
        +                          "type": "number"
        +                        },
        +                        "tier_slug": {
        +                          "enum": [
        +                            "7_day_pass",
        +                            "solo",
        +                            "studio",
        +                            "practice"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "unlock_summary": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "tier_slug",
        +                        "display_name",
        +                        "price_local",
        +                        "currency",
        +                        "billing",
        +                        "unlock_summary"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "current_tier": {
        +                    "const": "free",
        +                    "default": "free",
        +                    "type": "string"
        +                  },
        +                  "pass_credit": {
        +                    "anyOf": [
        +                      {
        +                        "additionalProperties": false,
        +                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        +                        "properties": {
        +                          "amount_local": {
        +                            "type": "number"
        +                          },
        +                          "applies_to": {
        +                            "const": "solo_first_month",
        +                            "default": "solo_first_month",
        +                            "type": "string"
        +                          },
        +                          "currency": {
        +                            "type": "string"
        +                          },
        +                          "redeemable_until": {
        +                            "type": "string"
        +                          }
        +                        },
        +                        "required": [
        +                          "amount_local",
        +                          "currency",
        +                          "redeemable_until"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "pricing_url": {
        +                    "default": "https://civilquants.com/pricing",
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "available_tiers"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tos_url": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "upgrade_hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "warranty_disclaimer": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          }
        +        },
        +        "required": [
        +          "request_id",
        +          "issued_at",
        +          "tier"
        +        ],
        +        "type": "object"
        +      },
        +      "data": {
        +        "default": null,
        +        "title": "Data"
        +      },
        +      "error": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        +            "properties": {
        +              "code": {
        +                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        +                "enum": [
        +                  "RATE_LIMIT_EXCEEDED",
        +                  "TIER_INSUFFICIENT",
        +                  "INVALID_INPUT",
        +                  "SCHEMA_VERSION_MISMATCH",
        +                  "SCHEMA_INVARIANT_VIOLATION",
        +                  "UPSTREAM_TIMEOUT",
        +                  "BACKEND_FAILURE",
        +                  "IP_BLOCKED",
        +                  "RESOURCE_NOT_FOUND",
        +                  "RENDER_FAILURE",
        +                  "OCR_LOW_CONFIDENCE",
        +                  "MANUAL_REVIEW_REQUIRED",
        +                  "ACCEPTANCE_REQUIRED",
        +                  "INVALID_TOKEN"
        +                ],
        +                "type": "string"
        +              },
        +              "details": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "message": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "recoverable": {
        +                "type": "boolean"
        +              },
        +              "retry_after_seconds": {
        +                "anyOf": [
        +                  {
        +                    "minimum": 0,
        +                    "type": "integer"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              }
        +            },
        +            "required": [
        +              "code",
        +              "message",
        +              "recoverable"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      }
        +    },
        +    "required": [
        +      "_meta"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedcompute_cantilever_wall2 fields changed
      • changedInput schema / properties / output_mode / enum
        Previous value: -[
        -  "summary",
        -  "boq",
        -  "boq_with_backup",
        -  "full_json"
        -]New value: +[
        +  "summary",
        +  "material_schedule",
        +  "boq",
        +  "boq_with_backup",
        +  "full_json"
        +]
      • changedOutput schema / properties / result / anyOf
        Previous value: -[
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "_meta": {
        -        "additionalProperties": false,
        -        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        -        "properties": {
        -          "deliverables": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        -                "properties": {
        -                  "docx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "dxf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "expires_at": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  },
        -                  "pdf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "xlsx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "expires_at"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "document_id": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "issued_at": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "output_mode": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Surfaces what a trimmed ``output_mode`` withheld from ``data``.\n\nA trimmed mode (``summary`` / ``boq`` / ``boq_with_backup``) withholds\nalready-computed fields to keep the chat payload small. The withheld value\nreads to a client agent as \"capability missing\" (the box-culvert \"geometry\nbuilder isn't firing\" scare) rather than \"pared for size\": ``drawing`` and\n``audit_trail`` appear as ``null``, ``boq_rows`` as an empty list ``[]``\n(its type forbids ``null``) — both indistinguishable from a genuine absent\nresult. This names the withheld fields and the exact mode that brings each\nback, so the value is unambiguous. Absent on the default ``full_json`` mode\n— nothing is withheld, nothing to point at.",
        -                "properties": {
        -                  "mode": {
        -                    "enum": [
        -                      "summary",
        -                      "boq",
        -                      "boq_with_backup"
        -                    ],
        -                    "type": "string"
        -                  },
        -                  "omitted_fields": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "minItems": 1,
        -                    "type": "array"
        -                  },
        -                  "retrieve_with": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "mode",
        -                  "omitted_fields",
        -                  "retrieve_with"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "rate_limit_remaining": {
        -            "anyOf": [
        -              {
        -                "minimum": 0,
        -                "type": "integer"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "request_id": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "schema_version": {
        -            "const": "1.0.0",
        -            "default": "1.0.0",
        -            "type": "string"
        -          },
        -          "scope_boundary": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        -                "properties": {
        -                  "not_in_scope": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "produced": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "recommended_companions": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "type": "string"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "produced",
        -                  "not_in_scope"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tier": {
        -            "enum": [
        -              "free",
        -              "paid"
        -            ],
        -            "type": "string"
        -          },
        -          "tier_upgrade": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        -                "properties": {
        -                  "available_tiers": {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        -                      "properties": {
        -                        "billing": {
        -                          "enum": [
        -                            "one_off",
        -                            "monthly",
        -                            "annual"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "currency": {
        -                          "enum": [
        -                            "GBP",
        -                            "SGD",
        -                            "EUR",
        -                            "USD",
        -                            "CAD",
        -                            "AUD",
        -                            "NZD",
        -                            "MYR"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "display_name": {
        -                          "type": "string"
        -                        },
        -                        "price_local": {
        -                          "type": "number"
        -                        },
        -                        "tier_slug": {
        -                          "enum": [
        -                            "7_day_pass",
        -                            "solo",
        -                            "studio",
        -                            "practice"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "unlock_summary": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "tier_slug",
        -                        "display_name",
        -                        "price_local",
        -                        "currency",
        -                        "billing",
        -                        "unlock_summary"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "current_tier": {
        -                    "const": "free",
        -                    "default": "free",
        -                    "type": "string"
        -                  },
        -                  "pass_credit": {
        -                    "anyOf": [
        -                      {
        -                        "additionalProperties": false,
        -                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        -                        "properties": {
        -                          "amount_local": {
        -                            "type": "number"
        -                          },
        -                          "applies_to": {
        -                            "const": "solo_first_month",
        -                            "default": "solo_first_month",
        -                            "type": "string"
        -                          },
        -                          "currency": {
        -                            "type": "string"
        -                          },
        -                          "redeemable_until": {
        -                            "type": "string"
        -                          }
        -                        },
        -                        "required": [
        -                          "amount_local",
        -                          "currency",
        -                          "redeemable_until"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "pricing_url": {
        -                    "default": "https://civilquants.com/pricing",
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "available_tiers"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tos_url": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "upgrade_hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "warranty_disclaimer": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          }
        -        },
        -        "required": [
        -          "request_id",
        -          "issued_at",
        -          "tier"
        -        ],
        -        "type": "object"
        -      },
        -      "data": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Schema § 1.1 — the typed payload returned inside `MCPResponse[ComputeResult]`.\n\nFree-tier responses omit `drawings` (the downloadable CAD artefact\npointers — the paid differentiator); the bridge enforces this. The\n`audit_trail` and the inline `drawing` preview are present on BOTH tiers\n(V1 ALIGN / 60th-fire D + C). `text_summary` is bounded to 2000 chars —\nkeeps the LLM-facing summary token-cheap and forces longer narrative into\nBoQ row descriptions where it belongs. `warnings` is the non-fatal\ngeometry advisory list (both tiers).",
        -            "properties": {
        -              "assembly_slug": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "audit_trail": {
        -                "anyOf": [
        -                  {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.7 — paid-tier audit-trail entry.\n\nOne entry per BoQ row; `boq_row_index` ties to the row position in\n`ComputeResult.boq_rows`. `derivation` is the human-readable formula\nwalk-through; `formula` is the optional formal expression.",
        -                      "properties": {
        -                        "boq_row_index": {
        -                          "minimum": 0,
        -                          "type": "integer"
        -                        },
        -                        "derivation": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "formula": {
        -                          "anyOf": [
        -                            {
        -                              "type": "string"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ],
        -                          "default": null
        -                        },
        -                        "id": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "parameters_referenced": {
        -                          "items": {
        -                            "type": "string"
        -                          },
        -                          "type": "array"
        -                        }
        -                      },
        -                      "required": [
        -                        "id",
        -                        "boq_row_index",
        -                        "derivation"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "boq_rows": {
        -                "items": {
        -                  "additionalProperties": false,
        -                  "description": "Schema § 1.3 — a single bill row in the requested standard's format.\n\n`description` is the non-verbatim functional description per spec § 13.9 /\n§ 15 invariant — NEVER reproduces a standard's verbatim clause text.\n`rate` / `amount` ship null because rates are commodity data the customer\nowns; the engine's job is the measurement, not the pricing.",
        -                  "properties": {
        -                    "amount": {
        -                      "anyOf": [
        -                        {
        -                          "type": "number"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "attribution": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "audit_id": {
        -                      "anyOf": [
        -                        {
        -                          "type": "string"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "description": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "quantity": {
        -                      "minimum": 0,
        -                      "type": "number"
        -                    },
        -                    "rate": {
        -                      "anyOf": [
        -                        {
        -                          "type": "number"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "unit": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "work_section": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    }
        -                  },
        -                  "required": [
        -                    "work_section",
        -                    "description",
        -                    "quantity",
        -                    "unit",
        -                    "attribution"
        -                  ],
        -                  "type": "object"
        -                },
        -                "type": "array"
        -              },
        -              "drawing": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": false,
        -                    "description": "Schema § 1.6a — inline server-rendered SVG preview of the geometry.\n\nThe MCP mirror of the web ``/compute`` response's ``drawing`` field\n(``api.schemas.compute.DrawingRef``): the same on-screen dimensioned\ndrawing both tiers see in the workspace, surfaced on the MCP compute\nresponse so a chat client can render it inline (60th-fire item C). This\nis the on-screen preview — present on BOTH tiers per the free/paid\nboundary; the downloadable CAD artefacts (DXF / dimensioned PDF) remain\nthe paid differentiator via the export tools.\n\nDefined here rather than importing ``DrawingRef`` because the web\n``schemas`` package imports back into this module (``schemas.render``),\nso reusing it would create an import cycle — the MCP wire contract keeps\nits own copy, the same pattern as ``BoQRow`` / ``DrawingReference``.",
        -                    "properties": {
        -                      "entity_count": {
        -                        "minimum": 0,
        -                        "type": "integer"
        -                      },
        -                      "svg_b64": {
        -                        "minLength": 1,
        -                        "type": "string"
        -                      },
        -                      "unit_of_drawing": {
        -                        "const": "m",
        -                        "default": "m",
        -                        "type": "string"
        -                      },
        -                      "viewbox_height": {
        -                        "exclusiveMinimum": 0,
        -                        "type": "number"
        -                      },
        -                      "viewbox_width": {
        -                        "exclusiveMinimum": 0,
        -                        "type": "number"
        -                      },
        -                      "viewbox_x": {
        -                        "type": "number"
        -                      },
        -                      "viewbox_y": {
        -                        "type": "number"
        -                      }
        -                    },
        -                    "required": [
        -                      "svg_b64",
        -                      "viewbox_x",
        -                      "viewbox_y",
        -                      "viewbox_width",
        -                      "viewbox_height",
        -                      "entity_count"
        -                    ],
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "drawings": {
        -                "anyOf": [
        -                  {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.6 — paid-tier drawing artefact pointer.\n\n`url` is an R2-signed URL; expiry is carried in `_meta.deliverables.expires_at`\non the envelope (not duplicated here). `layers` is DXF-only; PDF/SVG\ncallers omit it.",
        -                      "properties": {
        -                        "drawing_type": {
        -                          "enum": [
        -                            "section",
        -                            "plan",
        -                            "elevation",
        -                            "isometric",
        -                            "detail"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "format": {
        -                          "enum": [
        -                            "DXF",
        -                            "PDF",
        -                            "SVG"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "layers": {
        -                          "anyOf": [
        -                            {
        -                              "items": {
        -                                "type": "string"
        -                              },
        -                              "type": "array"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ],
        -                          "default": null
        -                        },
        -                        "scale": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "sheet_size": {
        -                          "enum": [
        -                            "A1",
        -                            "A2",
        -                            "A3",
        -                            "A4"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "url": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "drawing_type",
        -                        "format",
        -                        "url",
        -                        "sheet_size",
        -                        "scale"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "parameters_used": {
        -                "additionalProperties": false,
        -                "description": "Schema § 1.2 — the parameter snapshot the engine actually used.\n\nSplits user-supplied values from engine defaults so customers can see\nwhich numbers came from them and which the engine filled in. Every\ndefaulted parameter SHOULD have a corresponding entry in `assumptions`\n— the bridge layer enforces this when wrapping engine output.",
        -                "properties": {
        -                  "assumptions": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "engine_defaults": {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  "user_supplied": {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  }
        -                },
        -                "type": "object"
        -              },
        -              "standard": {
        -                "enum": [
        -                  "CESMM4",
        -                  "NRM2",
        -                  "SMM7",
        -                  "MMHW"
        -                ],
        -                "type": "string"
        -              },
        -              "text_summary": {
        -                "maxLength": 2000,
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "totals_summary": {
        -                "additionalProperties": false,
        -                "description": "Schema § 1.4 — totals_summary as a typed wrapper around the free-form dict.\n\nWire shape is a flat object (`{\"concrete_m3\": {...}, \"rebar_t\": {...}}`).\nWe model it as `RootModel`-equivalent via `model_config(extra=\"allow\")`\n+ a single `__root__`-style `entries` dict. Pydantic v2 recommends\n`RootModel` for free-form roots; using a wrapper class keeps the import\nsurface uniform with the rest of this module.",
        -                "properties": {
        -                  "entries": {
        -                    "additionalProperties": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.4 — single material/work-class total entry.",
        -                      "properties": {
        -                        "quantity": {
        -                          "minimum": 0,
        -                          "type": "number"
        -                        },
        -                        "unit": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "quantity",
        -                        "unit"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "object"
        -                  }
        -                },
        -                "type": "object"
        -              },
        -              "warnings": {
        -                "items": {
        -                  "additionalProperties": false,
        -                  "description": "Schema § 1.8 — a non-fatal geometry advisory (56th-fire T2).\n\nThe wire projection of the engine's `core.GeometryWarning`. Advisory only:\na warning NEVER changes a measured quantity — it flags geometry that is\nvalid but likely a mistake (e.g. a stale dependent-height default). Present\non BOTH tiers — a correctness/safety signal, not a paid feature.",
        -                  "properties": {
        -                    "affected_params": {
        -                      "items": {
        -                        "type": "string"
        -                      },
        -                      "type": "array"
        -                    },
        -                    "code": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "detail": {
        -                      "additionalProperties": {
        -                        "type": "number"
        -                      },
        -                      "type": "object"
        -                    },
        -                    "message": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "severity": {
        -                      "enum": [
        -                        "info",
        -                        "advisory",
        -                        "caution"
        -                      ],
        -                      "type": "string"
        -                    }
        -                  },
        -                  "required": [
        -                    "code",
        -                    "severity",
        -                    "message"
        -                  ],
        -                  "type": "object"
        -                },
        -                "type": "array"
        -              }
        -            },
        -            "required": [
        -              "assembly_slug",
        -              "standard",
        -              "parameters_used",
        -              "boq_rows",
        -              "totals_summary",
        -              "text_summary"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      },
        -      "error": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        -            "properties": {
        -              "code": {
        -                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        -                "enum": [
        -                  "RATE_LIMIT_EXCEEDED",
        -                  "TIER_INSUFFICIENT",
        -                  "INVALID_INPUT",
        -                  "SCHEMA_VERSION_MISMATCH",
        -                  "SCHEMA_INVARIANT_VIOLATION",
        -                  "UPSTREAM_TIMEOUT",
        -                  "BACKEND_FAILURE",
        -                  "IP_BLOCKED",
        -                  "RESOURCE_NOT_FOUND",
        -                  "RENDER_FAILURE",
        -                  "OCR_LOW_CONFIDENCE",
        -                  "MANUAL_REVIEW_REQUIRED",
        -                  "ACCEPTANCE_REQUIRED",
        -                  "INVALID_TOKEN"
        -                ],
        -                "type": "string"
        -              },
        -              "details": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "message": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "recoverable": {
        -                "type": "boolean"
        -              },
        -              "retry_after_seconds": {
        -                "anyOf": [
        -                  {
        -                    "minimum": 0,
        -                    "type": "integer"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              }
        -            },
        -            "required": [
        -              "code",
        -              "message",
        -              "recoverable"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      }
        -    },
        -    "required": [
        -      "_meta"
        -    ],
        -    "type": "object"
        -  },
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "_meta": {
        -        "additionalProperties": false,
        -        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        -        "properties": {
        -          "deliverables": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        -                "properties": {
        -                  "docx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "dxf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "expires_at": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  },
        -                  "pdf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "xlsx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "expires_at"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "document_id": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "issued_at": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "output_mode": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Surfaces what a trimmed ``output_mode`` withheld from ``data``.\n\nA trimmed mode (``summary`` / ``boq`` / ``boq_with_backup``) withholds\nalready-computed fields to keep the chat payload small. The withheld value\nreads to a client agent as \"capability missing\" (the box-culvert \"geometry\nbuilder isn't firing\" scare) rather than \"pared for size\": ``drawing`` and\n``audit_trail`` appear as ``null``, ``boq_rows`` as an empty list ``[]``\n(its type forbids ``null``) — both indistinguishable from a genuine absent\nresult. This names the withheld fields and the exact mode that brings each\nback, so the value is unambiguous. Absent on the default ``full_json`` mode\n— nothing is withheld, nothing to point at.",
        -                "properties": {
        -                  "mode": {
        -                    "enum": [
        -                      "summary",
        -                      "boq",
        -                      "boq_with_backup"
        -                    ],
        -                    "type": "string"
        -                  },
        -                  "omitted_fields": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "minItems": 1,
        -                    "type": "array"
        -                  },
        -                  "retrieve_with": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "mode",
        -                  "omitted_fields",
        -                  "retrieve_with"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "rate_limit_remaining": {
        -            "anyOf": [
        -              {
        -                "minimum": 0,
        -                "type": "integer"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "request_id": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "schema_version": {
        -            "const": "1.0.0",
        -            "default": "1.0.0",
        -            "type": "string"
        -          },
        -          "scope_boundary": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        -                "properties": {
        -                  "not_in_scope": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "produced": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "recommended_companions": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "type": "string"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "produced",
        -                  "not_in_scope"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tier": {
        -            "enum": [
        -              "free",
        -              "paid"
        -            ],
        -            "type": "string"
        -          },
        -          "tier_upgrade": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        -                "properties": {
        -                  "available_tiers": {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        -                      "properties": {
        -                        "billing": {
        -                          "enum": [
        -                            "one_off",
        -                            "monthly",
        -                            "annual"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "currency": {
        -                          "enum": [
        -                            "GBP",
        -                            "SGD",
        -                            "EUR",
        -                            "USD",
        -                            "CAD",
        -                            "AUD",
        -                            "NZD",
        -                            "MYR"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "display_name": {
        -                          "type": "string"
        -                        },
        -                        "price_local": {
        -                          "type": "number"
        -                        },
        -                        "tier_slug": {
        -                          "enum": [
        -                            "7_day_pass",
        -                            "solo",
        -                            "studio",
        -                            "practice"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "unlock_summary": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "tier_slug",
        -                        "display_name",
        -                        "price_local",
        -                        "currency",
        -                        "billing",
        -                        "unlock_summary"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "current_tier": {
        -                    "const": "free",
        -                    "default": "free",
        -                    "type": "string"
        -                  },
        -                  "pass_credit": {
        -                    "anyOf": [
        -                      {
        -                        "additionalProperties": false,
        -                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        -                        "properties": {
        -                          "amount_local": {
        -                            "type": "number"
        -                          },
        -                          "applies_to": {
        -                            "const": "solo_first_month",
        -                            "default": "solo_first_month",
        -                            "type": "string"
        -                          },
        -                          "currency": {
        -                            "type": "string"
        -                          },
        -                          "redeemable_until": {
        -                            "type": "string"
        -                          }
        -                        },
        -                        "required": [
        -                          "amount_local",
        -                          "currency",
        -                          "redeemable_until"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "pricing_url": {
        -                    "default": "https://civilquants.com/pricing",
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "available_tiers"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tos_url": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "upgrade_hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "warranty_disclaimer": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          }
        -        },
        -        "required": [
        -          "request_id",
        -          "issued_at",
        -          "tier"
        -        ],
        -        "type": "object"
        -      },
        -      "data": {
        -        "default": null,
        -        "title": "Data"
        -      },
        -      "error": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        -            "properties": {
        -              "code": {
        -                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        -                "enum": [
        -                  "RATE_LIMIT_EXCEEDED",
        -                  "TIER_INSUFFICIENT",
        -                  "INVALID_INPUT",
        -                  "SCHEMA_VERSION_MISMATCH",
        -                  "SCHEMA_INVARIANT_VIOLATION",
        -                  "UPSTREAM_TIMEOUT",
        -                  "BACKEND_FAILURE",
        -                  "IP_BLOCKED",
        -                  "RESOURCE_NOT_FOUND",
        -                  "RENDER_FAILURE",
        -                  "OCR_LOW_CONFIDENCE",
        -                  "MANUAL_REVIEW_REQUIRED",
        -                  "ACCEPTANCE_REQUIRED",
        -                  "INVALID_TOKEN"
        -                ],
        -                "type": "string"
        -              },
        -              "details": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "message": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "recoverable": {
        -                "type": "boolean"
        -              },
        -              "retry_after_seconds": {
        -                "anyOf": [
        -                  {
        -                    "minimum": 0,
        -                    "type": "integer"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              }
        -            },
        -            "required": [
        -              "code",
        -              "message",
        -              "recoverable"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      }
        -    },
        -    "required": [
        -      "_meta"
        -    ],
        -    "type": "object"
        -  }
        -]New value: +[
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "_meta": {
        +        "additionalProperties": false,
        +        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        +        "properties": {
        +          "deliverables": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        +                "properties": {
        +                  "docx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "dxf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "expires_at": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  },
        +                  "pdf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "xlsx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "expires_at"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "document_id": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "issued_at": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "output_mode": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Surfaces what a trimmed ``output_mode`` withheld from ``data``.\n\nA trimmed mode (``summary`` / ``material_schedule`` / ``boq`` /\n``boq_with_backup``) withholds\nalready-computed fields to keep the chat payload small. The withheld value\nreads to a client agent as \"capability missing\" (the box-culvert \"geometry\nbuilder isn't firing\" scare) rather than \"pared for size\": ``drawing`` and\n``audit_trail`` appear as ``null``, ``boq_rows`` as an empty list ``[]``\n(its type forbids ``null``) — both indistinguishable from a genuine absent\nresult. This names the withheld fields and the exact mode that brings each\nback, so the value is unambiguous. Absent on the default ``full_json`` mode\n— nothing is withheld, nothing to point at.",
        +                "properties": {
        +                  "mode": {
        +                    "enum": [
        +                      "summary",
        +                      "material_schedule",
        +                      "boq",
        +                      "boq_with_backup"
        +                    ],
        +                    "type": "string"
        +                  },
        +                  "omitted_fields": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "minItems": 1,
        +                    "type": "array"
        +                  },
        +                  "retrieve_with": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "mode",
        +                  "omitted_fields",
        +                  "retrieve_with"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "rate_limit_remaining": {
        +            "anyOf": [
        +              {
        +                "minimum": 0,
        +                "type": "integer"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "request_id": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "schema_version": {
        +            "const": "1.0.0",
        +            "default": "1.0.0",
        +            "type": "string"
        +          },
        +          "scope_boundary": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        +                "properties": {
        +                  "not_in_scope": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "produced": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "recommended_companions": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "type": "string"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "produced",
        +                  "not_in_scope"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tier": {
        +            "enum": [
        +              "free",
        +              "paid"
        +            ],
        +            "type": "string"
        +          },
        +          "tier_upgrade": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        +                "properties": {
        +                  "available_tiers": {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        +                      "properties": {
        +                        "billing": {
        +                          "enum": [
        +                            "one_off",
        +                            "monthly",
        +                            "annual"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "currency": {
        +                          "enum": [
        +                            "GBP",
        +                            "SGD",
        +                            "EUR",
        +                            "USD",
        +                            "CAD",
        +                            "AUD",
        +                            "NZD",
        +                            "MYR"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "display_name": {
        +                          "type": "string"
        +                        },
        +                        "price_local": {
        +                          "type": "number"
        +                        },
        +                        "tier_slug": {
        +                          "enum": [
        +                            "7_day_pass",
        +                            "solo",
        +                            "studio",
        +                            "practice"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "unlock_summary": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "tier_slug",
        +                        "display_name",
        +                        "price_local",
        +                        "currency",
        +                        "billing",
        +                        "unlock_summary"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "current_tier": {
        +                    "const": "free",
        +                    "default": "free",
        +                    "type": "string"
        +                  },
        +                  "pass_credit": {
        +                    "anyOf": [
        +                      {
        +                        "additionalProperties": false,
        +                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        +                        "properties": {
        +                          "amount_local": {
        +                            "type": "number"
        +                          },
        +                          "applies_to": {
        +                            "const": "solo_first_month",
        +                            "default": "solo_first_month",
        +                            "type": "string"
        +                          },
        +                          "currency": {
        +                            "type": "string"
        +                          },
        +                          "redeemable_until": {
        +                            "type": "string"
        +                          }
        +                        },
        +                        "required": [
        +                          "amount_local",
        +                          "currency",
        +                          "redeemable_until"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "pricing_url": {
        +                    "default": "https://civilquants.com/pricing",
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "available_tiers"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tos_url": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "upgrade_hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "warranty_disclaimer": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          }
        +        },
        +        "required": [
        +          "request_id",
        +          "issued_at",
        +          "tier"
        +        ],
        +        "type": "object"
        +      },
        +      "data": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Schema § 1.1 — the typed payload returned inside `MCPResponse[ComputeResult]`.\n\nFree-tier responses omit `drawings` (the downloadable CAD artefact\npointers — the paid differentiator); the bridge enforces this. The\n`audit_trail` and the inline `drawing` preview are present on BOTH tiers\n(V1 ALIGN / 60th-fire D + C). `text_summary` is bounded to 2000 chars —\nkeeps the LLM-facing summary token-cheap and forces longer narrative into\nBoQ row descriptions where it belongs. `warnings` is the non-fatal\ngeometry advisory list (both tiers).",
        +            "properties": {
        +              "assembly_slug": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "audit_trail": {
        +                "anyOf": [
        +                  {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.7 — paid-tier audit-trail entry.\n\nOne entry per BoQ row; `boq_row_index` ties to the row position in\n`ComputeResult.boq_rows`. `derivation` is the human-readable formula\nwalk-through; `formula` is the optional formal expression.",
        +                      "properties": {
        +                        "boq_row_index": {
        +                          "minimum": 0,
        +                          "type": "integer"
        +                        },
        +                        "derivation": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "formula": {
        +                          "anyOf": [
        +                            {
        +                              "type": "string"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ],
        +                          "default": null
        +                        },
        +                        "id": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "parameters_referenced": {
        +                          "items": {
        +                            "type": "string"
        +                          },
        +                          "type": "array"
        +                        }
        +                      },
        +                      "required": [
        +                        "id",
        +                        "boq_row_index",
        +                        "derivation"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "boq_rows": {
        +                "items": {
        +                  "additionalProperties": false,
        +                  "description": "Schema § 1.3 — a single bill row in the requested standard's format.\n\n`description` is the non-verbatim functional description per spec § 13.9 /\n§ 15 invariant — NEVER reproduces a standard's verbatim clause text.\n`rate` / `amount` ship null because rates are commodity data the customer\nowns; the engine's job is the measurement, not the pricing.",
        +                  "properties": {
        +                    "amount": {
        +                      "anyOf": [
        +                        {
        +                          "type": "number"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "attribution": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "audit_id": {
        +                      "anyOf": [
        +                        {
        +                          "type": "string"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "description": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "quantity": {
        +                      "minimum": 0,
        +                      "type": "number"
        +                    },
        +                    "rate": {
        +                      "anyOf": [
        +                        {
        +                          "type": "number"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "unit": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "work_section": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    }
        +                  },
        +                  "required": [
        +                    "work_section",
        +                    "description",
        +                    "quantity",
        +                    "unit",
        +                    "attribution"
        +                  ],
        +                  "type": "object"
        +                },
        +                "type": "array"
        +              },
        +              "drawing": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": false,
        +                    "description": "Schema § 1.6a — inline server-rendered SVG preview of the geometry.\n\nThe MCP mirror of the web ``/compute`` response's ``drawing`` field\n(``api.schemas.compute.DrawingRef``): the same on-screen dimensioned\ndrawing both tiers see in the workspace, surfaced on the MCP compute\nresponse so a chat client can render it inline (60th-fire item C). This\nis the on-screen preview — present on BOTH tiers per the free/paid\nboundary; the downloadable CAD artefacts (DXF / dimensioned PDF) remain\nthe paid differentiator via the export tools.\n\nDefined here rather than importing ``DrawingRef`` because the web\n``schemas`` package imports back into this module (``schemas.render``),\nso reusing it would create an import cycle — the MCP wire contract keeps\nits own copy, the same pattern as ``BoQRow`` / ``DrawingReference``.",
        +                    "properties": {
        +                      "entity_count": {
        +                        "minimum": 0,
        +                        "type": "integer"
        +                      },
        +                      "svg_b64": {
        +                        "minLength": 1,
        +                        "type": "string"
        +                      },
        +                      "unit_of_drawing": {
        +                        "const": "m",
        +                        "default": "m",
        +                        "type": "string"
        +                      },
        +                      "viewbox_height": {
        +                        "exclusiveMinimum": 0,
        +                        "type": "number"
        +                      },
        +                      "viewbox_width": {
        +                        "exclusiveMinimum": 0,
        +                        "type": "number"
        +                      },
        +                      "viewbox_x": {
        +                        "type": "number"
        +                      },
        +                      "viewbox_y": {
        +                        "type": "number"
        +                      }
        +                    },
        +                    "required": [
        +                      "svg_b64",
        +                      "viewbox_x",
        +                      "viewbox_y",
        +                      "viewbox_width",
        +                      "viewbox_height",
        +                      "entity_count"
        +                    ],
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "drawings": {
        +                "anyOf": [
        +                  {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.6 — paid-tier drawing artefact pointer.\n\n`url` is an R2-signed URL; expiry is carried in `_meta.deliverables.expires_at`\non the envelope (not duplicated here). `layers` is DXF-only; PDF/SVG\ncallers omit it.",
        +                      "properties": {
        +                        "drawing_type": {
        +                          "enum": [
        +                            "section",
        +                            "plan",
        +                            "elevation",
        +                            "isometric",
        +                            "detail"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "format": {
        +                          "enum": [
        +                            "DXF",
        +                            "PDF",
        +                            "SVG"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "layers": {
        +                          "anyOf": [
        +                            {
        +                              "items": {
        +                                "type": "string"
        +                              },
        +                              "type": "array"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ],
        +                          "default": null
        +                        },
        +                        "scale": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "sheet_size": {
        +                          "enum": [
        +                            "A1",
        +                            "A2",
        +                            "A3",
        +                            "A4"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "url": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "drawing_type",
        +                        "format",
        +                        "url",
        +                        "sheet_size",
        +                        "scale"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "parameters_used": {
        +                "additionalProperties": false,
        +                "description": "Schema § 1.2 — the parameter snapshot the engine actually used.\n\nSplits user-supplied values from engine defaults so customers can see\nwhich numbers came from them and which the engine filled in. Every\ndefaulted parameter SHOULD have a corresponding entry in `assumptions`\n— the bridge layer enforces this when wrapping engine output.",
        +                "properties": {
        +                  "assumptions": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "engine_defaults": {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  "user_supplied": {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  }
        +                },
        +                "type": "object"
        +              },
        +              "standard": {
        +                "enum": [
        +                  "CESMM4",
        +                  "NRM2",
        +                  "SMM7",
        +                  "MMHW"
        +                ],
        +                "type": "string"
        +              },
        +              "text_summary": {
        +                "maxLength": 2000,
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "totals_summary": {
        +                "additionalProperties": false,
        +                "description": "Schema § 1.4 — totals_summary as a typed wrapper around the free-form dict.\n\nWire shape is a flat object (`{\"concrete_m3\": {...}, \"rebar_t\": {...}}`).\nWe model it as `RootModel`-equivalent via `model_config(extra=\"allow\")`\n+ a single `__root__`-style `entries` dict. Pydantic v2 recommends\n`RootModel` for free-form roots; using a wrapper class keeps the import\nsurface uniform with the rest of this module.",
        +                "properties": {
        +                  "entries": {
        +                    "additionalProperties": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.4 — single material/work-class total entry.",
        +                      "properties": {
        +                        "quantity": {
        +                          "minimum": 0,
        +                          "type": "number"
        +                        },
        +                        "unit": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "quantity",
        +                        "unit"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "object"
        +                  }
        +                },
        +                "type": "object"
        +              },
        +              "warnings": {
        +                "items": {
        +                  "additionalProperties": false,
        +                  "description": "Schema § 1.8 — a non-fatal geometry advisory (56th-fire T2).\n\nThe wire projection of the engine's `core.GeometryWarning`. Advisory only:\na warning NEVER changes a measured quantity — it flags geometry that is\nvalid but likely a mistake (e.g. a stale dependent-height default). Present\non BOTH tiers — a correctness/safety signal, not a paid feature.",
        +                  "properties": {
        +                    "affected_params": {
        +                      "items": {
        +                        "type": "string"
        +                      },
        +                      "type": "array"
        +                    },
        +                    "code": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "detail": {
        +                      "additionalProperties": {
        +                        "type": "number"
        +                      },
        +                      "type": "object"
        +                    },
        +                    "message": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "severity": {
        +                      "enum": [
        +                        "info",
        +                        "advisory",
        +                        "caution"
        +                      ],
        +                      "type": "string"
        +                    }
        +                  },
        +                  "required": [
        +                    "code",
        +                    "severity",
        +                    "message"
        +                  ],
        +                  "type": "object"
        +                },
        +                "type": "array"
        +              }
        +            },
        +            "required": [
        +              "assembly_slug",
        +              "standard",
        +              "parameters_used",
        +              "boq_rows",
        +              "totals_summary",
        +              "text_summary"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      },
        +      "error": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        +            "properties": {
        +              "code": {
        +                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        +                "enum": [
        +                  "RATE_LIMIT_EXCEEDED",
        +                  "TIER_INSUFFICIENT",
        +                  "INVALID_INPUT",
        +                  "SCHEMA_VERSION_MISMATCH",
        +                  "SCHEMA_INVARIANT_VIOLATION",
        +                  "UPSTREAM_TIMEOUT",
        +                  "BACKEND_FAILURE",
        +                  "IP_BLOCKED",
        +                  "RESOURCE_NOT_FOUND",
        +                  "RENDER_FAILURE",
        +                  "OCR_LOW_CONFIDENCE",
        +                  "MANUAL_REVIEW_REQUIRED",
        +                  "ACCEPTANCE_REQUIRED",
        +                  "INVALID_TOKEN"
        +                ],
        +                "type": "string"
        +              },
        +              "details": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "message": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "recoverable": {
        +                "type": "boolean"
        +              },
        +              "retry_after_seconds": {
        +                "anyOf": [
        +                  {
        +                    "minimum": 0,
        +                    "type": "integer"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              }
        +            },
        +            "required": [
        +              "code",
        +              "message",
        +              "recoverable"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      }
        +    },
        +    "required": [
        +      "_meta"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "_meta": {
        +        "additionalProperties": false,
        +        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        +        "properties": {
        +          "deliverables": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        +                "properties": {
        +                  "docx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "dxf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "expires_at": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  },
        +                  "pdf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "xlsx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "expires_at"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "document_id": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "issued_at": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "output_mode": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Surfaces what a trimmed ``output_mode`` withheld from ``data``.\n\nA trimmed mode (``summary`` / ``material_schedule`` / ``boq`` /\n``boq_with_backup``) withholds\nalready-computed fields to keep the chat payload small. The withheld value\nreads to a client agent as \"capability missing\" (the box-culvert \"geometry\nbuilder isn't firing\" scare) rather than \"pared for size\": ``drawing`` and\n``audit_trail`` appear as ``null``, ``boq_rows`` as an empty list ``[]``\n(its type forbids ``null``) — both indistinguishable from a genuine absent\nresult. This names the withheld fields and the exact mode that brings each\nback, so the value is unambiguous. Absent on the default ``full_json`` mode\n— nothing is withheld, nothing to point at.",
        +                "properties": {
        +                  "mode": {
        +                    "enum": [
        +                      "summary",
        +                      "material_schedule",
        +                      "boq",
        +                      "boq_with_backup"
        +                    ],
        +                    "type": "string"
        +                  },
        +                  "omitted_fields": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "minItems": 1,
        +                    "type": "array"
        +                  },
        +                  "retrieve_with": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "mode",
        +                  "omitted_fields",
        +                  "retrieve_with"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "rate_limit_remaining": {
        +            "anyOf": [
        +              {
        +                "minimum": 0,
        +                "type": "integer"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "request_id": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "schema_version": {
        +            "const": "1.0.0",
        +            "default": "1.0.0",
        +            "type": "string"
        +          },
        +          "scope_boundary": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        +                "properties": {
        +                  "not_in_scope": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "produced": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "recommended_companions": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "type": "string"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "produced",
        +                  "not_in_scope"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tier": {
        +            "enum": [
        +              "free",
        +              "paid"
        +            ],
        +            "type": "string"
        +          },
        +          "tier_upgrade": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        +                "properties": {
        +                  "available_tiers": {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        +                      "properties": {
        +                        "billing": {
        +                          "enum": [
        +                            "one_off",
        +                            "monthly",
        +                            "annual"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "currency": {
        +                          "enum": [
        +                            "GBP",
        +                            "SGD",
        +                            "EUR",
        +                            "USD",
        +                            "CAD",
        +                            "AUD",
        +                            "NZD",
        +                            "MYR"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "display_name": {
        +                          "type": "string"
        +                        },
        +                        "price_local": {
        +                          "type": "number"
        +                        },
        +                        "tier_slug": {
        +                          "enum": [
        +                            "7_day_pass",
        +                            "solo",
        +                            "studio",
        +                            "practice"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "unlock_summary": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "tier_slug",
        +                        "display_name",
        +                        "price_local",
        +                        "currency",
        +                        "billing",
        +                        "unlock_summary"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "current_tier": {
        +                    "const": "free",
        +                    "default": "free",
        +                    "type": "string"
        +                  },
        +                  "pass_credit": {
        +                    "anyOf": [
        +                      {
        +                        "additionalProperties": false,
        +                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        +                        "properties": {
        +                          "amount_local": {
        +                            "type": "number"
        +                          },
        +                          "applies_to": {
        +                            "const": "solo_first_month",
        +                            "default": "solo_first_month",
        +                            "type": "string"
        +                          },
        +                          "currency": {
        +                            "type": "string"
        +                          },
        +                          "redeemable_until": {
        +                            "type": "string"
        +                          }
        +                        },
        +                        "required": [
        +                          "amount_local",
        +                          "currency",
        +                          "redeemable_until"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "pricing_url": {
        +                    "default": "https://civilquants.com/pricing",
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "available_tiers"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tos_url": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "upgrade_hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "warranty_disclaimer": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          }
        +        },
        +        "required": [
        +          "request_id",
        +          "issued_at",
        +          "tier"
        +        ],
        +        "type": "object"
        +      },
        +      "data": {
        +        "default": null,
        +        "title": "Data"
        +      },
        +      "error": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        +            "properties": {
        +              "code": {
        +                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        +                "enum": [
        +                  "RATE_LIMIT_EXCEEDED",
        +                  "TIER_INSUFFICIENT",
        +                  "INVALID_INPUT",
        +                  "SCHEMA_VERSION_MISMATCH",
        +                  "SCHEMA_INVARIANT_VIOLATION",
        +                  "UPSTREAM_TIMEOUT",
        +                  "BACKEND_FAILURE",
        +                  "IP_BLOCKED",
        +                  "RESOURCE_NOT_FOUND",
        +                  "RENDER_FAILURE",
        +                  "OCR_LOW_CONFIDENCE",
        +                  "MANUAL_REVIEW_REQUIRED",
        +                  "ACCEPTANCE_REQUIRED",
        +                  "INVALID_TOKEN"
        +                ],
        +                "type": "string"
        +              },
        +              "details": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "message": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "recoverable": {
        +                "type": "boolean"
        +              },
        +              "retry_after_seconds": {
        +                "anyOf": [
        +                  {
        +                    "minimum": 0,
        +                    "type": "integer"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              }
        +            },
        +            "required": [
        +              "code",
        +              "message",
        +              "recoverable"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      }
        +    },
        +    "required": [
        +      "_meta"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedcompute_carrier_pipe_run2 fields changed
      • changedInput schema / properties / output_mode / enum
        Previous value: -[
        -  "summary",
        -  "boq",
        -  "boq_with_backup",
        -  "full_json"
        -]New value: +[
        +  "summary",
        +  "material_schedule",
        +  "boq",
        +  "boq_with_backup",
        +  "full_json"
        +]
      • changedOutput schema / properties / result / anyOf
        Previous value: -[
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "_meta": {
        -        "additionalProperties": false,
        -        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        -        "properties": {
        -          "deliverables": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        -                "properties": {
        -                  "docx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "dxf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "expires_at": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  },
        -                  "pdf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "xlsx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "expires_at"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "document_id": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "issued_at": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "output_mode": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Surfaces what a trimmed ``output_mode`` withheld from ``data``.\n\nA trimmed mode (``summary`` / ``boq`` / ``boq_with_backup``) withholds\nalready-computed fields to keep the chat payload small. The withheld value\nreads to a client agent as \"capability missing\" (the box-culvert \"geometry\nbuilder isn't firing\" scare) rather than \"pared for size\": ``drawing`` and\n``audit_trail`` appear as ``null``, ``boq_rows`` as an empty list ``[]``\n(its type forbids ``null``) — both indistinguishable from a genuine absent\nresult. This names the withheld fields and the exact mode that brings each\nback, so the value is unambiguous. Absent on the default ``full_json`` mode\n— nothing is withheld, nothing to point at.",
        -                "properties": {
        -                  "mode": {
        -                    "enum": [
        -                      "summary",
        -                      "boq",
        -                      "boq_with_backup"
        -                    ],
        -                    "type": "string"
        -                  },
        -                  "omitted_fields": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "minItems": 1,
        -                    "type": "array"
        -                  },
        -                  "retrieve_with": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "mode",
        -                  "omitted_fields",
        -                  "retrieve_with"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "rate_limit_remaining": {
        -            "anyOf": [
        -              {
        -                "minimum": 0,
        -                "type": "integer"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "request_id": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "schema_version": {
        -            "const": "1.0.0",
        -            "default": "1.0.0",
        -            "type": "string"
        -          },
        -          "scope_boundary": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        -                "properties": {
        -                  "not_in_scope": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "produced": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "recommended_companions": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "type": "string"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "produced",
        -                  "not_in_scope"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tier": {
        -            "enum": [
        -              "free",
        -              "paid"
        -            ],
        -            "type": "string"
        -          },
        -          "tier_upgrade": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        -                "properties": {
        -                  "available_tiers": {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        -                      "properties": {
        -                        "billing": {
        -                          "enum": [
        -                            "one_off",
        -                            "monthly",
        -                            "annual"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "currency": {
        -                          "enum": [
        -                            "GBP",
        -                            "SGD",
        -                            "EUR",
        -                            "USD",
        -                            "CAD",
        -                            "AUD",
        -                            "NZD",
        -                            "MYR"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "display_name": {
        -                          "type": "string"
        -                        },
        -                        "price_local": {
        -                          "type": "number"
        -                        },
        -                        "tier_slug": {
        -                          "enum": [
        -                            "7_day_pass",
        -                            "solo",
        -                            "studio",
        -                            "practice"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "unlock_summary": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "tier_slug",
        -                        "display_name",
        -                        "price_local",
        -                        "currency",
        -                        "billing",
        -                        "unlock_summary"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "current_tier": {
        -                    "const": "free",
        -                    "default": "free",
        -                    "type": "string"
        -                  },
        -                  "pass_credit": {
        -                    "anyOf": [
        -                      {
        -                        "additionalProperties": false,
        -                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        -                        "properties": {
        -                          "amount_local": {
        -                            "type": "number"
        -                          },
        -                          "applies_to": {
        -                            "const": "solo_first_month",
        -                            "default": "solo_first_month",
        -                            "type": "string"
        -                          },
        -                          "currency": {
        -                            "type": "string"
        -                          },
        -                          "redeemable_until": {
        -                            "type": "string"
        -                          }
        -                        },
        -                        "required": [
        -                          "amount_local",
        -                          "currency",
        -                          "redeemable_until"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "pricing_url": {
        -                    "default": "https://civilquants.com/pricing",
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "available_tiers"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tos_url": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "upgrade_hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "warranty_disclaimer": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          }
        -        },
        -        "required": [
        -          "request_id",
        -          "issued_at",
        -          "tier"
        -        ],
        -        "type": "object"
        -      },
        -      "data": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Schema § 1.1 — the typed payload returned inside `MCPResponse[ComputeResult]`.\n\nFree-tier responses omit `drawings` (the downloadable CAD artefact\npointers — the paid differentiator); the bridge enforces this. The\n`audit_trail` and the inline `drawing` preview are present on BOTH tiers\n(V1 ALIGN / 60th-fire D + C). `text_summary` is bounded to 2000 chars —\nkeeps the LLM-facing summary token-cheap and forces longer narrative into\nBoQ row descriptions where it belongs. `warnings` is the non-fatal\ngeometry advisory list (both tiers).",
        -            "properties": {
        -              "assembly_slug": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "audit_trail": {
        -                "anyOf": [
        -                  {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.7 — paid-tier audit-trail entry.\n\nOne entry per BoQ row; `boq_row_index` ties to the row position in\n`ComputeResult.boq_rows`. `derivation` is the human-readable formula\nwalk-through; `formula` is the optional formal expression.",
        -                      "properties": {
        -                        "boq_row_index": {
        -                          "minimum": 0,
        -                          "type": "integer"
        -                        },
        -                        "derivation": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "formula": {
        -                          "anyOf": [
        -                            {
        -                              "type": "string"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ],
        -                          "default": null
        -                        },
        -                        "id": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "parameters_referenced": {
        -                          "items": {
        -                            "type": "string"
        -                          },
        -                          "type": "array"
        -                        }
        -                      },
        -                      "required": [
        -                        "id",
        -                        "boq_row_index",
        -                        "derivation"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "boq_rows": {
        -                "items": {
        -                  "additionalProperties": false,
        -                  "description": "Schema § 1.3 — a single bill row in the requested standard's format.\n\n`description` is the non-verbatim functional description per spec § 13.9 /\n§ 15 invariant — NEVER reproduces a standard's verbatim clause text.\n`rate` / `amount` ship null because rates are commodity data the customer\nowns; the engine's job is the measurement, not the pricing.",
        -                  "properties": {
        -                    "amount": {
        -                      "anyOf": [
        -                        {
        -                          "type": "number"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "attribution": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "audit_id": {
        -                      "anyOf": [
        -                        {
        -                          "type": "string"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "description": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "quantity": {
        -                      "minimum": 0,
        -                      "type": "number"
        -                    },
        -                    "rate": {
        -                      "anyOf": [
        -                        {
        -                          "type": "number"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "unit": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "work_section": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    }
        -                  },
        -                  "required": [
        -                    "work_section",
        -                    "description",
        -                    "quantity",
        -                    "unit",
        -                    "attribution"
        -                  ],
        -                  "type": "object"
        -                },
        -                "type": "array"
        -              },
        -              "drawing": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": false,
        -                    "description": "Schema § 1.6a — inline server-rendered SVG preview of the geometry.\n\nThe MCP mirror of the web ``/compute`` response's ``drawing`` field\n(``api.schemas.compute.DrawingRef``): the same on-screen dimensioned\ndrawing both tiers see in the workspace, surfaced on the MCP compute\nresponse so a chat client can render it inline (60th-fire item C). This\nis the on-screen preview — present on BOTH tiers per the free/paid\nboundary; the downloadable CAD artefacts (DXF / dimensioned PDF) remain\nthe paid differentiator via the export tools.\n\nDefined here rather than importing ``DrawingRef`` because the web\n``schemas`` package imports back into this module (``schemas.render``),\nso reusing it would create an import cycle — the MCP wire contract keeps\nits own copy, the same pattern as ``BoQRow`` / ``DrawingReference``.",
        -                    "properties": {
        -                      "entity_count": {
        -                        "minimum": 0,
        -                        "type": "integer"
        -                      },
        -                      "svg_b64": {
        -                        "minLength": 1,
        -                        "type": "string"
        -                      },
        -                      "unit_of_drawing": {
        -                        "const": "m",
        -                        "default": "m",
        -                        "type": "string"
        -                      },
        -                      "viewbox_height": {
        -                        "exclusiveMinimum": 0,
        -                        "type": "number"
        -                      },
        -                      "viewbox_width": {
        -                        "exclusiveMinimum": 0,
        -                        "type": "number"
        -                      },
        -                      "viewbox_x": {
        -                        "type": "number"
        -                      },
        -                      "viewbox_y": {
        -                        "type": "number"
        -                      }
        -                    },
        -                    "required": [
        -                      "svg_b64",
        -                      "viewbox_x",
        -                      "viewbox_y",
        -                      "viewbox_width",
        -                      "viewbox_height",
        -                      "entity_count"
        -                    ],
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "drawings": {
        -                "anyOf": [
        -                  {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.6 — paid-tier drawing artefact pointer.\n\n`url` is an R2-signed URL; expiry is carried in `_meta.deliverables.expires_at`\non the envelope (not duplicated here). `layers` is DXF-only; PDF/SVG\ncallers omit it.",
        -                      "properties": {
        -                        "drawing_type": {
        -                          "enum": [
        -                            "section",
        -                            "plan",
        -                            "elevation",
        -                            "isometric",
        -                            "detail"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "format": {
        -                          "enum": [
        -                            "DXF",
        -                            "PDF",
        -                            "SVG"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "layers": {
        -                          "anyOf": [
        -                            {
        -                              "items": {
        -                                "type": "string"
        -                              },
        -                              "type": "array"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ],
        -                          "default": null
        -                        },
        -                        "scale": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "sheet_size": {
        -                          "enum": [
        -                            "A1",
        -                            "A2",
        -                            "A3",
        -                            "A4"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "url": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "drawing_type",
        -                        "format",
        -                        "url",
        -                        "sheet_size",
        -                        "scale"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "parameters_used": {
        -                "additionalProperties": false,
        -                "description": "Schema § 1.2 — the parameter snapshot the engine actually used.\n\nSplits user-supplied values from engine defaults so customers can see\nwhich numbers came from them and which the engine filled in. Every\ndefaulted parameter SHOULD have a corresponding entry in `assumptions`\n— the bridge layer enforces this when wrapping engine output.",
        -                "properties": {
        -                  "assumptions": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "engine_defaults": {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  "user_supplied": {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  }
        -                },
        -                "type": "object"
        -              },
        -              "standard": {
        -                "enum": [
        -                  "CESMM4",
        -                  "NRM2",
        -                  "SMM7",
        -                  "MMHW"
        -                ],
        -                "type": "string"
        -              },
        -              "text_summary": {
        -                "maxLength": 2000,
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "totals_summary": {
        -                "additionalProperties": false,
        -                "description": "Schema § 1.4 — totals_summary as a typed wrapper around the free-form dict.\n\nWire shape is a flat object (`{\"concrete_m3\": {...}, \"rebar_t\": {...}}`).\nWe model it as `RootModel`-equivalent via `model_config(extra=\"allow\")`\n+ a single `__root__`-style `entries` dict. Pydantic v2 recommends\n`RootModel` for free-form roots; using a wrapper class keeps the import\nsurface uniform with the rest of this module.",
        -                "properties": {
        -                  "entries": {
        -                    "additionalProperties": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.4 — single material/work-class total entry.",
        -                      "properties": {
        -                        "quantity": {
        -                          "minimum": 0,
        -                          "type": "number"
        -                        },
        -                        "unit": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "quantity",
        -                        "unit"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "object"
        -                  }
        -                },
        -                "type": "object"
        -              },
        -              "warnings": {
        -                "items": {
        -                  "additionalProperties": false,
        -                  "description": "Schema § 1.8 — a non-fatal geometry advisory (56th-fire T2).\n\nThe wire projection of the engine's `core.GeometryWarning`. Advisory only:\na warning NEVER changes a measured quantity — it flags geometry that is\nvalid but likely a mistake (e.g. a stale dependent-height default). Present\non BOTH tiers — a correctness/safety signal, not a paid feature.",
        -                  "properties": {
        -                    "affected_params": {
        -                      "items": {
        -                        "type": "string"
        -                      },
        -                      "type": "array"
        -                    },
        -                    "code": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "detail": {
        -                      "additionalProperties": {
        -                        "type": "number"
        -                      },
        -                      "type": "object"
        -                    },
        -                    "message": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "severity": {
        -                      "enum": [
        -                        "info",
        -                        "advisory",
        -                        "caution"
        -                      ],
        -                      "type": "string"
        -                    }
        -                  },
        -                  "required": [
        -                    "code",
        -                    "severity",
        -                    "message"
        -                  ],
        -                  "type": "object"
        -                },
        -                "type": "array"
        -              }
        -            },
        -            "required": [
        -              "assembly_slug",
        -              "standard",
        -              "parameters_used",
        -              "boq_rows",
        -              "totals_summary",
        -              "text_summary"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      },
        -      "error": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        -            "properties": {
        -              "code": {
        -                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        -                "enum": [
        -                  "RATE_LIMIT_EXCEEDED",
        -                  "TIER_INSUFFICIENT",
        -                  "INVALID_INPUT",
        -                  "SCHEMA_VERSION_MISMATCH",
        -                  "SCHEMA_INVARIANT_VIOLATION",
        -                  "UPSTREAM_TIMEOUT",
        -                  "BACKEND_FAILURE",
        -                  "IP_BLOCKED",
        -                  "RESOURCE_NOT_FOUND",
        -                  "RENDER_FAILURE",
        -                  "OCR_LOW_CONFIDENCE",
        -                  "MANUAL_REVIEW_REQUIRED",
        -                  "ACCEPTANCE_REQUIRED",
        -                  "INVALID_TOKEN"
        -                ],
        -                "type": "string"
        -              },
        -              "details": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "message": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "recoverable": {
        -                "type": "boolean"
        -              },
        -              "retry_after_seconds": {
        -                "anyOf": [
        -                  {
        -                    "minimum": 0,
        -                    "type": "integer"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              }
        -            },
        -            "required": [
        -              "code",
        -              "message",
        -              "recoverable"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      }
        -    },
        -    "required": [
        -      "_meta"
        -    ],
        -    "type": "object"
        -  },
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "_meta": {
        -        "additionalProperties": false,
        -        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        -        "properties": {
        -          "deliverables": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        -                "properties": {
        -                  "docx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "dxf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "expires_at": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  },
        -                  "pdf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "xlsx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "expires_at"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "document_id": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "issued_at": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "output_mode": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Surfaces what a trimmed ``output_mode`` withheld from ``data``.\n\nA trimmed mode (``summary`` / ``boq`` / ``boq_with_backup``) withholds\nalready-computed fields to keep the chat payload small. The withheld value\nreads to a client agent as \"capability missing\" (the box-culvert \"geometry\nbuilder isn't firing\" scare) rather than \"pared for size\": ``drawing`` and\n``audit_trail`` appear as ``null``, ``boq_rows`` as an empty list ``[]``\n(its type forbids ``null``) — both indistinguishable from a genuine absent\nresult. This names the withheld fields and the exact mode that brings each\nback, so the value is unambiguous. Absent on the default ``full_json`` mode\n— nothing is withheld, nothing to point at.",
        -                "properties": {
        -                  "mode": {
        -                    "enum": [
        -                      "summary",
        -                      "boq",
        -                      "boq_with_backup"
        -                    ],
        -                    "type": "string"
        -                  },
        -                  "omitted_fields": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "minItems": 1,
        -                    "type": "array"
        -                  },
        -                  "retrieve_with": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "mode",
        -                  "omitted_fields",
        -                  "retrieve_with"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "rate_limit_remaining": {
        -            "anyOf": [
        -              {
        -                "minimum": 0,
        -                "type": "integer"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "request_id": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "schema_version": {
        -            "const": "1.0.0",
        -            "default": "1.0.0",
        -            "type": "string"
        -          },
        -          "scope_boundary": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        -                "properties": {
        -                  "not_in_scope": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "produced": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "recommended_companions": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "type": "string"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "produced",
        -                  "not_in_scope"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tier": {
        -            "enum": [
        -              "free",
        -              "paid"
        -            ],
        -            "type": "string"
        -          },
        -          "tier_upgrade": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        -                "properties": {
        -                  "available_tiers": {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        -                      "properties": {
        -                        "billing": {
        -                          "enum": [
        -                            "one_off",
        -                            "monthly",
        -                            "annual"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "currency": {
        -                          "enum": [
        -                            "GBP",
        -                            "SGD",
        -                            "EUR",
        -                            "USD",
        -                            "CAD",
        -                            "AUD",
        -                            "NZD",
        -                            "MYR"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "display_name": {
        -                          "type": "string"
        -                        },
        -                        "price_local": {
        -                          "type": "number"
        -                        },
        -                        "tier_slug": {
        -                          "enum": [
        -                            "7_day_pass",
        -                            "solo",
        -                            "studio",
        -                            "practice"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "unlock_summary": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "tier_slug",
        -                        "display_name",
        -                        "price_local",
        -                        "currency",
        -                        "billing",
        -                        "unlock_summary"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "current_tier": {
        -                    "const": "free",
        -                    "default": "free",
        -                    "type": "string"
        -                  },
        -                  "pass_credit": {
        -                    "anyOf": [
        -                      {
        -                        "additionalProperties": false,
        -                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        -                        "properties": {
        -                          "amount_local": {
        -                            "type": "number"
        -                          },
        -                          "applies_to": {
        -                            "const": "solo_first_month",
        -                            "default": "solo_first_month",
        -                            "type": "string"
        -                          },
        -                          "currency": {
        -                            "type": "string"
        -                          },
        -                          "redeemable_until": {
        -                            "type": "string"
        -                          }
        -                        },
        -                        "required": [
        -                          "amount_local",
        -                          "currency",
        -                          "redeemable_until"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "pricing_url": {
        -                    "default": "https://civilquants.com/pricing",
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "available_tiers"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tos_url": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "upgrade_hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "warranty_disclaimer": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          }
        -        },
        -        "required": [
        -          "request_id",
        -          "issued_at",
        -          "tier"
        -        ],
        -        "type": "object"
        -      },
        -      "data": {
        -        "default": null,
        -        "title": "Data"
        -      },
        -      "error": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        -            "properties": {
        -              "code": {
        -                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        -                "enum": [
        -                  "RATE_LIMIT_EXCEEDED",
        -                  "TIER_INSUFFICIENT",
        -                  "INVALID_INPUT",
        -                  "SCHEMA_VERSION_MISMATCH",
        -                  "SCHEMA_INVARIANT_VIOLATION",
        -                  "UPSTREAM_TIMEOUT",
        -                  "BACKEND_FAILURE",
        -                  "IP_BLOCKED",
        -                  "RESOURCE_NOT_FOUND",
        -                  "RENDER_FAILURE",
        -                  "OCR_LOW_CONFIDENCE",
        -                  "MANUAL_REVIEW_REQUIRED",
        -                  "ACCEPTANCE_REQUIRED",
        -                  "INVALID_TOKEN"
        -                ],
        -                "type": "string"
        -              },
        -              "details": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "message": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "recoverable": {
        -                "type": "boolean"
        -              },
        -              "retry_after_seconds": {
        -                "anyOf": [
        -                  {
        -                    "minimum": 0,
        -                    "type": "integer"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              }
        -            },
        -            "required": [
        -              "code",
        -              "message",
        -              "recoverable"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      }
        -    },
        -    "required": [
        -      "_meta"
        -    ],
        -    "type": "object"
        -  }
        -]New value: +[
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "_meta": {
        +        "additionalProperties": false,
        +        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        +        "properties": {
        +          "deliverables": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        +                "properties": {
        +                  "docx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "dxf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "expires_at": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  },
        +                  "pdf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "xlsx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "expires_at"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "document_id": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "issued_at": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "output_mode": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Surfaces what a trimmed ``output_mode`` withheld from ``data``.\n\nA trimmed mode (``summary`` / ``material_schedule`` / ``boq`` /\n``boq_with_backup``) withholds\nalready-computed fields to keep the chat payload small. The withheld value\nreads to a client agent as \"capability missing\" (the box-culvert \"geometry\nbuilder isn't firing\" scare) rather than \"pared for size\": ``drawing`` and\n``audit_trail`` appear as ``null``, ``boq_rows`` as an empty list ``[]``\n(its type forbids ``null``) — both indistinguishable from a genuine absent\nresult. This names the withheld fields and the exact mode that brings each\nback, so the value is unambiguous. Absent on the default ``full_json`` mode\n— nothing is withheld, nothing to point at.",
        +                "properties": {
        +                  "mode": {
        +                    "enum": [
        +                      "summary",
        +                      "material_schedule",
        +                      "boq",
        +                      "boq_with_backup"
        +                    ],
        +                    "type": "string"
        +                  },
        +                  "omitted_fields": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "minItems": 1,
        +                    "type": "array"
        +                  },
        +                  "retrieve_with": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "mode",
        +                  "omitted_fields",
        +                  "retrieve_with"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "rate_limit_remaining": {
        +            "anyOf": [
        +              {
        +                "minimum": 0,
        +                "type": "integer"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "request_id": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "schema_version": {
        +            "const": "1.0.0",
        +            "default": "1.0.0",
        +            "type": "string"
        +          },
        +          "scope_boundary": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        +                "properties": {
        +                  "not_in_scope": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "produced": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "recommended_companions": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "type": "string"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "produced",
        +                  "not_in_scope"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tier": {
        +            "enum": [
        +              "free",
        +              "paid"
        +            ],
        +            "type": "string"
        +          },
        +          "tier_upgrade": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        +                "properties": {
        +                  "available_tiers": {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        +                      "properties": {
        +                        "billing": {
        +                          "enum": [
        +                            "one_off",
        +                            "monthly",
        +                            "annual"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "currency": {
        +                          "enum": [
        +                            "GBP",
        +                            "SGD",
        +                            "EUR",
        +                            "USD",
        +                            "CAD",
        +                            "AUD",
        +                            "NZD",
        +                            "MYR"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "display_name": {
        +                          "type": "string"
        +                        },
        +                        "price_local": {
        +                          "type": "number"
        +                        },
        +                        "tier_slug": {
        +                          "enum": [
        +                            "7_day_pass",
        +                            "solo",
        +                            "studio",
        +                            "practice"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "unlock_summary": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "tier_slug",
        +                        "display_name",
        +                        "price_local",
        +                        "currency",
        +                        "billing",
        +                        "unlock_summary"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "current_tier": {
        +                    "const": "free",
        +                    "default": "free",
        +                    "type": "string"
        +                  },
        +                  "pass_credit": {
        +                    "anyOf": [
        +                      {
        +                        "additionalProperties": false,
        +                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        +                        "properties": {
        +                          "amount_local": {
        +                            "type": "number"
        +                          },
        +                          "applies_to": {
        +                            "const": "solo_first_month",
        +                            "default": "solo_first_month",
        +                            "type": "string"
        +                          },
        +                          "currency": {
        +                            "type": "string"
        +                          },
        +                          "redeemable_until": {
        +                            "type": "string"
        +                          }
        +                        },
        +                        "required": [
        +                          "amount_local",
        +                          "currency",
        +                          "redeemable_until"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "pricing_url": {
        +                    "default": "https://civilquants.com/pricing",
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "available_tiers"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tos_url": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "upgrade_hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "warranty_disclaimer": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          }
        +        },
        +        "required": [
        +          "request_id",
        +          "issued_at",
        +          "tier"
        +        ],
        +        "type": "object"
        +      },
        +      "data": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Schema § 1.1 — the typed payload returned inside `MCPResponse[ComputeResult]`.\n\nFree-tier responses omit `drawings` (the downloadable CAD artefact\npointers — the paid differentiator); the bridge enforces this. The\n`audit_trail` and the inline `drawing` preview are present on BOTH tiers\n(V1 ALIGN / 60th-fire D + C). `text_summary` is bounded to 2000 chars —\nkeeps the LLM-facing summary token-cheap and forces longer narrative into\nBoQ row descriptions where it belongs. `warnings` is the non-fatal\ngeometry advisory list (both tiers).",
        +            "properties": {
        +              "assembly_slug": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "audit_trail": {
        +                "anyOf": [
        +                  {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.7 — paid-tier audit-trail entry.\n\nOne entry per BoQ row; `boq_row_index` ties to the row position in\n`ComputeResult.boq_rows`. `derivation` is the human-readable formula\nwalk-through; `formula` is the optional formal expression.",
        +                      "properties": {
        +                        "boq_row_index": {
        +                          "minimum": 0,
        +                          "type": "integer"
        +                        },
        +                        "derivation": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "formula": {
        +                          "anyOf": [
        +                            {
        +                              "type": "string"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ],
        +                          "default": null
        +                        },
        +                        "id": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "parameters_referenced": {
        +                          "items": {
        +                            "type": "string"
        +                          },
        +                          "type": "array"
        +                        }
        +                      },
        +                      "required": [
        +                        "id",
        +                        "boq_row_index",
        +                        "derivation"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "boq_rows": {
        +                "items": {
        +                  "additionalProperties": false,
        +                  "description": "Schema § 1.3 — a single bill row in the requested standard's format.\n\n`description` is the non-verbatim functional description per spec § 13.9 /\n§ 15 invariant — NEVER reproduces a standard's verbatim clause text.\n`rate` / `amount` ship null because rates are commodity data the customer\nowns; the engine's job is the measurement, not the pricing.",
        +                  "properties": {
        +                    "amount": {
        +                      "anyOf": [
        +                        {
        +                          "type": "number"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "attribution": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "audit_id": {
        +                      "anyOf": [
        +                        {
        +                          "type": "string"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "description": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "quantity": {
        +                      "minimum": 0,
        +                      "type": "number"
        +                    },
        +                    "rate": {
        +                      "anyOf": [
        +                        {
        +                          "type": "number"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "unit": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "work_section": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    }
        +                  },
        +                  "required": [
        +                    "work_section",
        +                    "description",
        +                    "quantity",
        +                    "unit",
        +                    "attribution"
        +                  ],
        +                  "type": "object"
        +                },
        +                "type": "array"
        +              },
        +              "drawing": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": false,
        +                    "description": "Schema § 1.6a — inline server-rendered SVG preview of the geometry.\n\nThe MCP mirror of the web ``/compute`` response's ``drawing`` field\n(``api.schemas.compute.DrawingRef``): the same on-screen dimensioned\ndrawing both tiers see in the workspace, surfaced on the MCP compute\nresponse so a chat client can render it inline (60th-fire item C). This\nis the on-screen preview — present on BOTH tiers per the free/paid\nboundary; the downloadable CAD artefacts (DXF / dimensioned PDF) remain\nthe paid differentiator via the export tools.\n\nDefined here rather than importing ``DrawingRef`` because the web\n``schemas`` package imports back into this module (``schemas.render``),\nso reusing it would create an import cycle — the MCP wire contract keeps\nits own copy, the same pattern as ``BoQRow`` / ``DrawingReference``.",
        +                    "properties": {
        +                      "entity_count": {
        +                        "minimum": 0,
        +                        "type": "integer"
        +                      },
        +                      "svg_b64": {
        +                        "minLength": 1,
        +                        "type": "string"
        +                      },
        +                      "unit_of_drawing": {
        +                        "const": "m",
        +                        "default": "m",
        +                        "type": "string"
        +                      },
        +                      "viewbox_height": {
        +                        "exclusiveMinimum": 0,
        +                        "type": "number"
        +                      },
        +                      "viewbox_width": {
        +                        "exclusiveMinimum": 0,
        +                        "type": "number"
        +                      },
        +                      "viewbox_x": {
        +                        "type": "number"
        +                      },
        +                      "viewbox_y": {
        +                        "type": "number"
        +                      }
        +                    },
        +                    "required": [
        +                      "svg_b64",
        +                      "viewbox_x",
        +                      "viewbox_y",
        +                      "viewbox_width",
        +                      "viewbox_height",
        +                      "entity_count"
        +                    ],
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "drawings": {
        +                "anyOf": [
        +                  {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.6 — paid-tier drawing artefact pointer.\n\n`url` is an R2-signed URL; expiry is carried in `_meta.deliverables.expires_at`\non the envelope (not duplicated here). `layers` is DXF-only; PDF/SVG\ncallers omit it.",
        +                      "properties": {
        +                        "drawing_type": {
        +                          "enum": [
        +                            "section",
        +                            "plan",
        +                            "elevation",
        +                            "isometric",
        +                            "detail"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "format": {
        +                          "enum": [
        +                            "DXF",
        +                            "PDF",
        +                            "SVG"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "layers": {
        +                          "anyOf": [
        +                            {
        +                              "items": {
        +                                "type": "string"
        +                              },
        +                              "type": "array"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ],
        +                          "default": null
        +                        },
        +                        "scale": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "sheet_size": {
        +                          "enum": [
        +                            "A1",
        +                            "A2",
        +                            "A3",
        +                            "A4"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "url": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "drawing_type",
        +                        "format",
        +                        "url",
        +                        "sheet_size",
        +                        "scale"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "parameters_used": {
        +                "additionalProperties": false,
        +                "description": "Schema § 1.2 — the parameter snapshot the engine actually used.\n\nSplits user-supplied values from engine defaults so customers can see\nwhich numbers came from them and which the engine filled in. Every\ndefaulted parameter SHOULD have a corresponding entry in `assumptions`\n— the bridge layer enforces this when wrapping engine output.",
        +                "properties": {
        +                  "assumptions": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "engine_defaults": {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  "user_supplied": {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  }
        +                },
        +                "type": "object"
        +              },
        +              "standard": {
        +                "enum": [
        +                  "CESMM4",
        +                  "NRM2",
        +                  "SMM7",
        +                  "MMHW"
        +                ],
        +                "type": "string"
        +              },
        +              "text_summary": {
        +                "maxLength": 2000,
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "totals_summary": {
        +                "additionalProperties": false,
        +                "description": "Schema § 1.4 — totals_summary as a typed wrapper around the free-form dict.\n\nWire shape is a flat object (`{\"concrete_m3\": {...}, \"rebar_t\": {...}}`).\nWe model it as `RootModel`-equivalent via `model_config(extra=\"allow\")`\n+ a single `__root__`-style `entries` dict. Pydantic v2 recommends\n`RootModel` for free-form roots; using a wrapper class keeps the import\nsurface uniform with the rest of this module.",
        +                "properties": {
        +                  "entries": {
        +                    "additionalProperties": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.4 — single material/work-class total entry.",
        +                      "properties": {
        +                        "quantity": {
        +                          "minimum": 0,
        +                          "type": "number"
        +                        },
        +                        "unit": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "quantity",
        +                        "unit"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "object"
        +                  }
        +                },
        +                "type": "object"
        +              },
        +              "warnings": {
        +                "items": {
        +                  "additionalProperties": false,
        +                  "description": "Schema § 1.8 — a non-fatal geometry advisory (56th-fire T2).\n\nThe wire projection of the engine's `core.GeometryWarning`. Advisory only:\na warning NEVER changes a measured quantity — it flags geometry that is\nvalid but likely a mistake (e.g. a stale dependent-height default). Present\non BOTH tiers — a correctness/safety signal, not a paid feature.",
        +                  "properties": {
        +                    "affected_params": {
        +                      "items": {
        +                        "type": "string"
        +                      },
        +                      "type": "array"
        +                    },
        +                    "code": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "detail": {
        +                      "additionalProperties": {
        +                        "type": "number"
        +                      },
        +                      "type": "object"
        +                    },
        +                    "message": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "severity": {
        +                      "enum": [
        +                        "info",
        +                        "advisory",
        +                        "caution"
        +                      ],
        +                      "type": "string"
        +                    }
        +                  },
        +                  "required": [
        +                    "code",
        +                    "severity",
        +                    "message"
        +                  ],
        +                  "type": "object"
        +                },
        +                "type": "array"
        +              }
        +            },
        +            "required": [
        +              "assembly_slug",
        +              "standard",
        +              "parameters_used",
        +              "boq_rows",
        +              "totals_summary",
        +              "text_summary"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      },
        +      "error": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        +            "properties": {
        +              "code": {
        +                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        +                "enum": [
        +                  "RATE_LIMIT_EXCEEDED",
        +                  "TIER_INSUFFICIENT",
        +                  "INVALID_INPUT",
        +                  "SCHEMA_VERSION_MISMATCH",
        +                  "SCHEMA_INVARIANT_VIOLATION",
        +                  "UPSTREAM_TIMEOUT",
        +                  "BACKEND_FAILURE",
        +                  "IP_BLOCKED",
        +                  "RESOURCE_NOT_FOUND",
        +                  "RENDER_FAILURE",
        +                  "OCR_LOW_CONFIDENCE",
        +                  "MANUAL_REVIEW_REQUIRED",
        +                  "ACCEPTANCE_REQUIRED",
        +                  "INVALID_TOKEN"
        +                ],
        +                "type": "string"
        +              },
        +              "details": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "message": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "recoverable": {
        +                "type": "boolean"
        +              },
        +              "retry_after_seconds": {
        +                "anyOf": [
        +                  {
        +                    "minimum": 0,
        +                    "type": "integer"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              }
        +            },
        +            "required": [
        +              "code",
        +              "message",
        +              "recoverable"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      }
        +    },
        +    "required": [
        +      "_meta"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "_meta": {
        +        "additionalProperties": false,
        +        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        +        "properties": {
        +          "deliverables": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        +                "properties": {
        +                  "docx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "dxf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "expires_at": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  },
        +                  "pdf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "xlsx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "expires_at"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "document_id": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "issued_at": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "output_mode": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Surfaces what a trimmed ``output_mode`` withheld from ``data``.\n\nA trimmed mode (``summary`` / ``material_schedule`` / ``boq`` /\n``boq_with_backup``) withholds\nalready-computed fields to keep the chat payload small. The withheld value\nreads to a client agent as \"capability missing\" (the box-culvert \"geometry\nbuilder isn't firing\" scare) rather than \"pared for size\": ``drawing`` and\n``audit_trail`` appear as ``null``, ``boq_rows`` as an empty list ``[]``\n(its type forbids ``null``) — both indistinguishable from a genuine absent\nresult. This names the withheld fields and the exact mode that brings each\nback, so the value is unambiguous. Absent on the default ``full_json`` mode\n— nothing is withheld, nothing to point at.",
        +                "properties": {
        +                  "mode": {
        +                    "enum": [
        +                      "summary",
        +                      "material_schedule",
        +                      "boq",
        +                      "boq_with_backup"
        +                    ],
        +                    "type": "string"
        +                  },
        +                  "omitted_fields": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "minItems": 1,
        +                    "type": "array"
        +                  },
        +                  "retrieve_with": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "mode",
        +                  "omitted_fields",
        +                  "retrieve_with"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "rate_limit_remaining": {
        +            "anyOf": [
        +              {
        +                "minimum": 0,
        +                "type": "integer"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "request_id": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "schema_version": {
        +            "const": "1.0.0",
        +            "default": "1.0.0",
        +            "type": "string"
        +          },
        +          "scope_boundary": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        +                "properties": {
        +                  "not_in_scope": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "produced": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "recommended_companions": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "type": "string"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "produced",
        +                  "not_in_scope"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tier": {
        +            "enum": [
        +              "free",
        +              "paid"
        +            ],
        +            "type": "string"
        +          },
        +          "tier_upgrade": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        +                "properties": {
        +                  "available_tiers": {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        +                      "properties": {
        +                        "billing": {
        +                          "enum": [
        +                            "one_off",
        +                            "monthly",
        +                            "annual"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "currency": {
        +                          "enum": [
        +                            "GBP",
        +                            "SGD",
        +                            "EUR",
        +                            "USD",
        +                            "CAD",
        +                            "AUD",
        +                            "NZD",
        +                            "MYR"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "display_name": {
        +                          "type": "string"
        +                        },
        +                        "price_local": {
        +                          "type": "number"
        +                        },
        +                        "tier_slug": {
        +                          "enum": [
        +                            "7_day_pass",
        +                            "solo",
        +                            "studio",
        +                            "practice"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "unlock_summary": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "tier_slug",
        +                        "display_name",
        +                        "price_local",
        +                        "currency",
        +                        "billing",
        +                        "unlock_summary"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "current_tier": {
        +                    "const": "free",
        +                    "default": "free",
        +                    "type": "string"
        +                  },
        +                  "pass_credit": {
        +                    "anyOf": [
        +                      {
        +                        "additionalProperties": false,
        +                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        +                        "properties": {
        +                          "amount_local": {
        +                            "type": "number"
        +                          },
        +                          "applies_to": {
        +                            "const": "solo_first_month",
        +                            "default": "solo_first_month",
        +                            "type": "string"
        +                          },
        +                          "currency": {
        +                            "type": "string"
        +                          },
        +                          "redeemable_until": {
        +                            "type": "string"
        +                          }
        +                        },
        +                        "required": [
        +                          "amount_local",
        +                          "currency",
        +                          "redeemable_until"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "pricing_url": {
        +                    "default": "https://civilquants.com/pricing",
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "available_tiers"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tos_url": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "upgrade_hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "warranty_disclaimer": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          }
        +        },
        +        "required": [
        +          "request_id",
        +          "issued_at",
        +          "tier"
        +        ],
        +        "type": "object"
        +      },
        +      "data": {
        +        "default": null,
        +        "title": "Data"
        +      },
        +      "error": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        +            "properties": {
        +              "code": {
        +                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        +                "enum": [
        +                  "RATE_LIMIT_EXCEEDED",
        +                  "TIER_INSUFFICIENT",
        +                  "INVALID_INPUT",
        +                  "SCHEMA_VERSION_MISMATCH",
        +                  "SCHEMA_INVARIANT_VIOLATION",
        +                  "UPSTREAM_TIMEOUT",
        +                  "BACKEND_FAILURE",
        +                  "IP_BLOCKED",
        +                  "RESOURCE_NOT_FOUND",
        +                  "RENDER_FAILURE",
        +                  "OCR_LOW_CONFIDENCE",
        +                  "MANUAL_REVIEW_REQUIRED",
        +                  "ACCEPTANCE_REQUIRED",
        +                  "INVALID_TOKEN"
        +                ],
        +                "type": "string"
        +              },
        +              "details": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "message": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "recoverable": {
        +                "type": "boolean"
        +              },
        +              "retry_after_seconds": {
        +                "anyOf": [
        +                  {
        +                    "minimum": 0,
        +                    "type": "integer"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              }
        +            },
        +            "required": [
        +              "code",
        +              "message",
        +              "recoverable"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      }
        +    },
        +    "required": [
        +      "_meta"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedcompute_catchpit2 fields changed
      • changedInput schema / properties / output_mode / enum
        Previous value: -[
        -  "summary",
        -  "boq",
        -  "boq_with_backup",
        -  "full_json"
        -]New value: +[
        +  "summary",
        +  "material_schedule",
        +  "boq",
        +  "boq_with_backup",
        +  "full_json"
        +]
      • changedOutput schema / properties / result / anyOf
        Previous value: -[
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "_meta": {
        -        "additionalProperties": false,
        -        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        -        "properties": {
        -          "deliverables": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        -                "properties": {
        -                  "docx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "dxf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "expires_at": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  },
        -                  "pdf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "xlsx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "expires_at"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "document_id": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "issued_at": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "output_mode": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Surfaces what a trimmed ``output_mode`` withheld from ``data``.\n\nA trimmed mode (``summary`` / ``boq`` / ``boq_with_backup``) withholds\nalready-computed fields to keep the chat payload small. The withheld value\nreads to a client agent as \"capability missing\" (the box-culvert \"geometry\nbuilder isn't firing\" scare) rather than \"pared for size\": ``drawing`` and\n``audit_trail`` appear as ``null``, ``boq_rows`` as an empty list ``[]``\n(its type forbids ``null``) — both indistinguishable from a genuine absent\nresult. This names the withheld fields and the exact mode that brings each\nback, so the value is unambiguous. Absent on the default ``full_json`` mode\n— nothing is withheld, nothing to point at.",
        -                "properties": {
        -                  "mode": {
        -                    "enum": [
        -                      "summary",
        -                      "boq",
        -                      "boq_with_backup"
        -                    ],
        -                    "type": "string"
        -                  },
        -                  "omitted_fields": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "minItems": 1,
        -                    "type": "array"
        -                  },
        -                  "retrieve_with": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "mode",
        -                  "omitted_fields",
        -                  "retrieve_with"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "rate_limit_remaining": {
        -            "anyOf": [
        -              {
        -                "minimum": 0,
        -                "type": "integer"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "request_id": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "schema_version": {
        -            "const": "1.0.0",
        -            "default": "1.0.0",
        -            "type": "string"
        -          },
        -          "scope_boundary": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        -                "properties": {
        -                  "not_in_scope": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "produced": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "recommended_companions": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "type": "string"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "produced",
        -                  "not_in_scope"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tier": {
        -            "enum": [
        -              "free",
        -              "paid"
        -            ],
        -            "type": "string"
        -          },
        -          "tier_upgrade": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        -                "properties": {
        -                  "available_tiers": {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        -                      "properties": {
        -                        "billing": {
        -                          "enum": [
        -                            "one_off",
        -                            "monthly",
        -                            "annual"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "currency": {
        -                          "enum": [
        -                            "GBP",
        -                            "SGD",
        -                            "EUR",
        -                            "USD",
        -                            "CAD",
        -                            "AUD",
        -                            "NZD",
        -                            "MYR"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "display_name": {
        -                          "type": "string"
        -                        },
        -                        "price_local": {
        -                          "type": "number"
        -                        },
        -                        "tier_slug": {
        -                          "enum": [
        -                            "7_day_pass",
        -                            "solo",
        -                            "studio",
        -                            "practice"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "unlock_summary": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "tier_slug",
        -                        "display_name",
        -                        "price_local",
        -                        "currency",
        -                        "billing",
        -                        "unlock_summary"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "current_tier": {
        -                    "const": "free",
        -                    "default": "free",
        -                    "type": "string"
        -                  },
        -                  "pass_credit": {
        -                    "anyOf": [
        -                      {
        -                        "additionalProperties": false,
        -                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        -                        "properties": {
        -                          "amount_local": {
        -                            "type": "number"
        -                          },
        -                          "applies_to": {
        -                            "const": "solo_first_month",
        -                            "default": "solo_first_month",
        -                            "type": "string"
        -                          },
        -                          "currency": {
        -                            "type": "string"
        -                          },
        -                          "redeemable_until": {
        -                            "type": "string"
        -                          }
        -                        },
        -                        "required": [
        -                          "amount_local",
        -                          "currency",
        -                          "redeemable_until"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "pricing_url": {
        -                    "default": "https://civilquants.com/pricing",
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "available_tiers"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tos_url": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "upgrade_hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "warranty_disclaimer": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          }
        -        },
        -        "required": [
        -          "request_id",
        -          "issued_at",
        -          "tier"
        -        ],
        -        "type": "object"
        -      },
        -      "data": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Schema § 1.1 — the typed payload returned inside `MCPResponse[ComputeResult]`.\n\nFree-tier responses omit `drawings` (the downloadable CAD artefact\npointers — the paid differentiator); the bridge enforces this. The\n`audit_trail` and the inline `drawing` preview are present on BOTH tiers\n(V1 ALIGN / 60th-fire D + C). `text_summary` is bounded to 2000 chars —\nkeeps the LLM-facing summary token-cheap and forces longer narrative into\nBoQ row descriptions where it belongs. `warnings` is the non-fatal\ngeometry advisory list (both tiers).",
        -            "properties": {
        -              "assembly_slug": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "audit_trail": {
        -                "anyOf": [
        -                  {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.7 — paid-tier audit-trail entry.\n\nOne entry per BoQ row; `boq_row_index` ties to the row position in\n`ComputeResult.boq_rows`. `derivation` is the human-readable formula\nwalk-through; `formula` is the optional formal expression.",
        -                      "properties": {
        -                        "boq_row_index": {
        -                          "minimum": 0,
        -                          "type": "integer"
        -                        },
        -                        "derivation": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "formula": {
        -                          "anyOf": [
        -                            {
        -                              "type": "string"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ],
        -                          "default": null
        -                        },
        -                        "id": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "parameters_referenced": {
        -                          "items": {
        -                            "type": "string"
        -                          },
        -                          "type": "array"
        -                        }
        -                      },
        -                      "required": [
        -                        "id",
        -                        "boq_row_index",
        -                        "derivation"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "boq_rows": {
        -                "items": {
        -                  "additionalProperties": false,
        -                  "description": "Schema § 1.3 — a single bill row in the requested standard's format.\n\n`description` is the non-verbatim functional description per spec § 13.9 /\n§ 15 invariant — NEVER reproduces a standard's verbatim clause text.\n`rate` / `amount` ship null because rates are commodity data the customer\nowns; the engine's job is the measurement, not the pricing.",
        -                  "properties": {
        -                    "amount": {
        -                      "anyOf": [
        -                        {
        -                          "type": "number"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "attribution": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "audit_id": {
        -                      "anyOf": [
        -                        {
        -                          "type": "string"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "description": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "quantity": {
        -                      "minimum": 0,
        -                      "type": "number"
        -                    },
        -                    "rate": {
        -                      "anyOf": [
        -                        {
        -                          "type": "number"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "unit": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "work_section": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    }
        -                  },
        -                  "required": [
        -                    "work_section",
        -                    "description",
        -                    "quantity",
        -                    "unit",
        -                    "attribution"
        -                  ],
        -                  "type": "object"
        -                },
        -                "type": "array"
        -              },
        -              "drawing": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": false,
        -                    "description": "Schema § 1.6a — inline server-rendered SVG preview of the geometry.\n\nThe MCP mirror of the web ``/compute`` response's ``drawing`` field\n(``api.schemas.compute.DrawingRef``): the same on-screen dimensioned\ndrawing both tiers see in the workspace, surfaced on the MCP compute\nresponse so a chat client can render it inline (60th-fire item C). This\nis the on-screen preview — present on BOTH tiers per the free/paid\nboundary; the downloadable CAD artefacts (DXF / dimensioned PDF) remain\nthe paid differentiator via the export tools.\n\nDefined here rather than importing ``DrawingRef`` because the web\n``schemas`` package imports back into this module (``schemas.render``),\nso reusing it would create an import cycle — the MCP wire contract keeps\nits own copy, the same pattern as ``BoQRow`` / ``DrawingReference``.",
        -                    "properties": {
        -                      "entity_count": {
        -                        "minimum": 0,
        -                        "type": "integer"
        -                      },
        -                      "svg_b64": {
        -                        "minLength": 1,
        -                        "type": "string"
        -                      },
        -                      "unit_of_drawing": {
        -                        "const": "m",
        -                        "default": "m",
        -                        "type": "string"
        -                      },
        -                      "viewbox_height": {
        -                        "exclusiveMinimum": 0,
        -                        "type": "number"
        -                      },
        -                      "viewbox_width": {
        -                        "exclusiveMinimum": 0,
        -                        "type": "number"
        -                      },
        -                      "viewbox_x": {
        -                        "type": "number"
        -                      },
        -                      "viewbox_y": {
        -                        "type": "number"
        -                      }
        -                    },
        -                    "required": [
        -                      "svg_b64",
        -                      "viewbox_x",
        -                      "viewbox_y",
        -                      "viewbox_width",
        -                      "viewbox_height",
        -                      "entity_count"
        -                    ],
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "drawings": {
        -                "anyOf": [
        -                  {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.6 — paid-tier drawing artefact pointer.\n\n`url` is an R2-signed URL; expiry is carried in `_meta.deliverables.expires_at`\non the envelope (not duplicated here). `layers` is DXF-only; PDF/SVG\ncallers omit it.",
        -                      "properties": {
        -                        "drawing_type": {
        -                          "enum": [
        -                            "section",
        -                            "plan",
        -                            "elevation",
        -                            "isometric",
        -                            "detail"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "format": {
        -                          "enum": [
        -                            "DXF",
        -                            "PDF",
        -                            "SVG"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "layers": {
        -                          "anyOf": [
        -                            {
        -                              "items": {
        -                                "type": "string"
        -                              },
        -                              "type": "array"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ],
        -                          "default": null
        -                        },
        -                        "scale": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "sheet_size": {
        -                          "enum": [
        -                            "A1",
        -                            "A2",
        -                            "A3",
        -                            "A4"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "url": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "drawing_type",
        -                        "format",
        -                        "url",
        -                        "sheet_size",
        -                        "scale"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "parameters_used": {
        -                "additionalProperties": false,
        -                "description": "Schema § 1.2 — the parameter snapshot the engine actually used.\n\nSplits user-supplied values from engine defaults so customers can see\nwhich numbers came from them and which the engine filled in. Every\ndefaulted parameter SHOULD have a corresponding entry in `assumptions`\n— the bridge layer enforces this when wrapping engine output.",
        -                "properties": {
        -                  "assumptions": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "engine_defaults": {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  "user_supplied": {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  }
        -                },
        -                "type": "object"
        -              },
        -              "standard": {
        -                "enum": [
        -                  "CESMM4",
        -                  "NRM2",
        -                  "SMM7",
        -                  "MMHW"
        -                ],
        -                "type": "string"
        -              },
        -              "text_summary": {
        -                "maxLength": 2000,
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "totals_summary": {
        -                "additionalProperties": false,
        -                "description": "Schema § 1.4 — totals_summary as a typed wrapper around the free-form dict.\n\nWire shape is a flat object (`{\"concrete_m3\": {...}, \"rebar_t\": {...}}`).\nWe model it as `RootModel`-equivalent via `model_config(extra=\"allow\")`\n+ a single `__root__`-style `entries` dict. Pydantic v2 recommends\n`RootModel` for free-form roots; using a wrapper class keeps the import\nsurface uniform with the rest of this module.",
        -                "properties": {
        -                  "entries": {
        -                    "additionalProperties": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.4 — single material/work-class total entry.",
        -                      "properties": {
        -                        "quantity": {
        -                          "minimum": 0,
        -                          "type": "number"
        -                        },
        -                        "unit": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "quantity",
        -                        "unit"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "object"
        -                  }
        -                },
        -                "type": "object"
        -              },
        -              "warnings": {
        -                "items": {
        -                  "additionalProperties": false,
        -                  "description": "Schema § 1.8 — a non-fatal geometry advisory (56th-fire T2).\n\nThe wire projection of the engine's `core.GeometryWarning`. Advisory only:\na warning NEVER changes a measured quantity — it flags geometry that is\nvalid but likely a mistake (e.g. a stale dependent-height default). Present\non BOTH tiers — a correctness/safety signal, not a paid feature.",
        -                  "properties": {
        -                    "affected_params": {
        -                      "items": {
        -                        "type": "string"
        -                      },
        -                      "type": "array"
        -                    },
        -                    "code": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "detail": {
        -                      "additionalProperties": {
        -                        "type": "number"
        -                      },
        -                      "type": "object"
        -                    },
        -                    "message": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "severity": {
        -                      "enum": [
        -                        "info",
        -                        "advisory",
        -                        "caution"
        -                      ],
        -                      "type": "string"
        -                    }
        -                  },
        -                  "required": [
        -                    "code",
        -                    "severity",
        -                    "message"
        -                  ],
        -                  "type": "object"
        -                },
        -                "type": "array"
        -              }
        -            },
        -            "required": [
        -              "assembly_slug",
        -              "standard",
        -              "parameters_used",
        -              "boq_rows",
        -              "totals_summary",
        -              "text_summary"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      },
        -      "error": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        -            "properties": {
        -              "code": {
        -                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        -                "enum": [
        -                  "RATE_LIMIT_EXCEEDED",
        -                  "TIER_INSUFFICIENT",
        -                  "INVALID_INPUT",
        -                  "SCHEMA_VERSION_MISMATCH",
        -                  "SCHEMA_INVARIANT_VIOLATION",
        -                  "UPSTREAM_TIMEOUT",
        -                  "BACKEND_FAILURE",
        -                  "IP_BLOCKED",
        -                  "RESOURCE_NOT_FOUND",
        -                  "RENDER_FAILURE",
        -                  "OCR_LOW_CONFIDENCE",
        -                  "MANUAL_REVIEW_REQUIRED",
        -                  "ACCEPTANCE_REQUIRED",
        -                  "INVALID_TOKEN"
        -                ],
        -                "type": "string"
        -              },
        -              "details": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "message": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "recoverable": {
        -                "type": "boolean"
        -              },
        -              "retry_after_seconds": {
        -                "anyOf": [
        -                  {
        -                    "minimum": 0,
        -                    "type": "integer"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              }
        -            },
        -            "required": [
        -              "code",
        -              "message",
        -              "recoverable"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      }
        -    },
        -    "required": [
        -      "_meta"
        -    ],
        -    "type": "object"
        -  },
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "_meta": {
        -        "additionalProperties": false,
        -        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        -        "properties": {
        -          "deliverables": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        -                "properties": {
        -                  "docx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "dxf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "expires_at": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  },
        -                  "pdf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "xlsx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "expires_at"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "document_id": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "issued_at": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "output_mode": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Surfaces what a trimmed ``output_mode`` withheld from ``data``.\n\nA trimmed mode (``summary`` / ``boq`` / ``boq_with_backup``) withholds\nalready-computed fields to keep the chat payload small. The withheld value\nreads to a client agent as \"capability missing\" (the box-culvert \"geometry\nbuilder isn't firing\" scare) rather than \"pared for size\": ``drawing`` and\n``audit_trail`` appear as ``null``, ``boq_rows`` as an empty list ``[]``\n(its type forbids ``null``) — both indistinguishable from a genuine absent\nresult. This names the withheld fields and the exact mode that brings each\nback, so the value is unambiguous. Absent on the default ``full_json`` mode\n— nothing is withheld, nothing to point at.",
        -                "properties": {
        -                  "mode": {
        -                    "enum": [
        -                      "summary",
        -                      "boq",
        -                      "boq_with_backup"
        -                    ],
        -                    "type": "string"
        -                  },
        -                  "omitted_fields": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "minItems": 1,
        -                    "type": "array"
        -                  },
        -                  "retrieve_with": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "mode",
        -                  "omitted_fields",
        -                  "retrieve_with"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "rate_limit_remaining": {
        -            "anyOf": [
        -              {
        -                "minimum": 0,
        -                "type": "integer"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "request_id": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "schema_version": {
        -            "const": "1.0.0",
        -            "default": "1.0.0",
        -            "type": "string"
        -          },
        -          "scope_boundary": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        -                "properties": {
        -                  "not_in_scope": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "produced": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "recommended_companions": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "type": "string"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "produced",
        -                  "not_in_scope"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tier": {
        -            "enum": [
        -              "free",
        -              "paid"
        -            ],
        -            "type": "string"
        -          },
        -          "tier_upgrade": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        -                "properties": {
        -                  "available_tiers": {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        -                      "properties": {
        -                        "billing": {
        -                          "enum": [
        -                            "one_off",
        -                            "monthly",
        -                            "annual"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "currency": {
        -                          "enum": [
        -                            "GBP",
        -                            "SGD",
        -                            "EUR",
        -                            "USD",
        -                            "CAD",
        -                            "AUD",
        -                            "NZD",
        -                            "MYR"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "display_name": {
        -                          "type": "string"
        -                        },
        -                        "price_local": {
        -                          "type": "number"
        -                        },
        -                        "tier_slug": {
        -                          "enum": [
        -                            "7_day_pass",
        -                            "solo",
        -                            "studio",
        -                            "practice"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "unlock_summary": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "tier_slug",
        -                        "display_name",
        -                        "price_local",
        -                        "currency",
        -                        "billing",
        -                        "unlock_summary"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "current_tier": {
        -                    "const": "free",
        -                    "default": "free",
        -                    "type": "string"
        -                  },
        -                  "pass_credit": {
        -                    "anyOf": [
        -                      {
        -                        "additionalProperties": false,
        -                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        -                        "properties": {
        -                          "amount_local": {
        -                            "type": "number"
        -                          },
        -                          "applies_to": {
        -                            "const": "solo_first_month",
        -                            "default": "solo_first_month",
        -                            "type": "string"
        -                          },
        -                          "currency": {
        -                            "type": "string"
        -                          },
        -                          "redeemable_until": {
        -                            "type": "string"
        -                          }
        -                        },
        -                        "required": [
        -                          "amount_local",
        -                          "currency",
        -                          "redeemable_until"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "pricing_url": {
        -                    "default": "https://civilquants.com/pricing",
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "available_tiers"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tos_url": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "upgrade_hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "warranty_disclaimer": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          }
        -        },
        -        "required": [
        -          "request_id",
        -          "issued_at",
        -          "tier"
        -        ],
        -        "type": "object"
        -      },
        -      "data": {
        -        "default": null,
        -        "title": "Data"
        -      },
        -      "error": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        -            "properties": {
        -              "code": {
        -                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        -                "enum": [
        -                  "RATE_LIMIT_EXCEEDED",
        -                  "TIER_INSUFFICIENT",
        -                  "INVALID_INPUT",
        -                  "SCHEMA_VERSION_MISMATCH",
        -                  "SCHEMA_INVARIANT_VIOLATION",
        -                  "UPSTREAM_TIMEOUT",
        -                  "BACKEND_FAILURE",
        -                  "IP_BLOCKED",
        -                  "RESOURCE_NOT_FOUND",
        -                  "RENDER_FAILURE",
        -                  "OCR_LOW_CONFIDENCE",
        -                  "MANUAL_REVIEW_REQUIRED",
        -                  "ACCEPTANCE_REQUIRED",
        -                  "INVALID_TOKEN"
        -                ],
        -                "type": "string"
        -              },
        -              "details": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "message": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "recoverable": {
        -                "type": "boolean"
        -              },
        -              "retry_after_seconds": {
        -                "anyOf": [
        -                  {
        -                    "minimum": 0,
        -                    "type": "integer"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              }
        -            },
        -            "required": [
        -              "code",
        -              "message",
        -              "recoverable"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      }
        -    },
        -    "required": [
        -      "_meta"
        -    ],
        -    "type": "object"
        -  }
        -]New value: +[
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "_meta": {
        +        "additionalProperties": false,
        +        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        +        "properties": {
        +          "deliverables": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        +                "properties": {
        +                  "docx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "dxf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "expires_at": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  },
        +                  "pdf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "xlsx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "expires_at"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "document_id": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "issued_at": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "output_mode": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Surfaces what a trimmed ``output_mode`` withheld from ``data``.\n\nA trimmed mode (``summary`` / ``material_schedule`` / ``boq`` /\n``boq_with_backup``) withholds\nalready-computed fields to keep the chat payload small. The withheld value\nreads to a client agent as \"capability missing\" (the box-culvert \"geometry\nbuilder isn't firing\" scare) rather than \"pared for size\": ``drawing`` and\n``audit_trail`` appear as ``null``, ``boq_rows`` as an empty list ``[]``\n(its type forbids ``null``) — both indistinguishable from a genuine absent\nresult. This names the withheld fields and the exact mode that brings each\nback, so the value is unambiguous. Absent on the default ``full_json`` mode\n— nothing is withheld, nothing to point at.",
        +                "properties": {
        +                  "mode": {
        +                    "enum": [
        +                      "summary",
        +                      "material_schedule",
        +                      "boq",
        +                      "boq_with_backup"
        +                    ],
        +                    "type": "string"
        +                  },
        +                  "omitted_fields": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "minItems": 1,
        +                    "type": "array"
        +                  },
        +                  "retrieve_with": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "mode",
        +                  "omitted_fields",
        +                  "retrieve_with"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "rate_limit_remaining": {
        +            "anyOf": [
        +              {
        +                "minimum": 0,
        +                "type": "integer"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "request_id": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "schema_version": {
        +            "const": "1.0.0",
        +            "default": "1.0.0",
        +            "type": "string"
        +          },
        +          "scope_boundary": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        +                "properties": {
        +                  "not_in_scope": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "produced": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "recommended_companions": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "type": "string"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "produced",
        +                  "not_in_scope"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tier": {
        +            "enum": [
        +              "free",
        +              "paid"
        +            ],
        +            "type": "string"
        +          },
        +          "tier_upgrade": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        +                "properties": {
        +                  "available_tiers": {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        +                      "properties": {
        +                        "billing": {
        +                          "enum": [
        +                            "one_off",
        +                            "monthly",
        +                            "annual"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "currency": {
        +                          "enum": [
        +                            "GBP",
        +                            "SGD",
        +                            "EUR",
        +                            "USD",
        +                            "CAD",
        +                            "AUD",
        +                            "NZD",
        +                            "MYR"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "display_name": {
        +                          "type": "string"
        +                        },
        +                        "price_local": {
        +                          "type": "number"
        +                        },
        +                        "tier_slug": {
        +                          "enum": [
        +                            "7_day_pass",
        +                            "solo",
        +                            "studio",
        +                            "practice"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "unlock_summary": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "tier_slug",
        +                        "display_name",
        +                        "price_local",
        +                        "currency",
        +                        "billing",
        +                        "unlock_summary"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "current_tier": {
        +                    "const": "free",
        +                    "default": "free",
        +                    "type": "string"
        +                  },
        +                  "pass_credit": {
        +                    "anyOf": [
        +                      {
        +                        "additionalProperties": false,
        +                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        +                        "properties": {
        +                          "amount_local": {
        +                            "type": "number"
        +                          },
        +                          "applies_to": {
        +                            "const": "solo_first_month",
        +                            "default": "solo_first_month",
        +                            "type": "string"
        +                          },
        +                          "currency": {
        +                            "type": "string"
        +                          },
        +                          "redeemable_until": {
        +                            "type": "string"
        +                          }
        +                        },
        +                        "required": [
        +                          "amount_local",
        +                          "currency",
        +                          "redeemable_until"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "pricing_url": {
        +                    "default": "https://civilquants.com/pricing",
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "available_tiers"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tos_url": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "upgrade_hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "warranty_disclaimer": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          }
        +        },
        +        "required": [
        +          "request_id",
        +          "issued_at",
        +          "tier"
        +        ],
        +        "type": "object"
        +      },
        +      "data": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Schema § 1.1 — the typed payload returned inside `MCPResponse[ComputeResult]`.\n\nFree-tier responses omit `drawings` (the downloadable CAD artefact\npointers — the paid differentiator); the bridge enforces this. The\n`audit_trail` and the inline `drawing` preview are present on BOTH tiers\n(V1 ALIGN / 60th-fire D + C). `text_summary` is bounded to 2000 chars —\nkeeps the LLM-facing summary token-cheap and forces longer narrative into\nBoQ row descriptions where it belongs. `warnings` is the non-fatal\ngeometry advisory list (both tiers).",
        +            "properties": {
        +              "assembly_slug": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "audit_trail": {
        +                "anyOf": [
        +                  {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.7 — paid-tier audit-trail entry.\n\nOne entry per BoQ row; `boq_row_index` ties to the row position in\n`ComputeResult.boq_rows`. `derivation` is the human-readable formula\nwalk-through; `formula` is the optional formal expression.",
        +                      "properties": {
        +                        "boq_row_index": {
        +                          "minimum": 0,
        +                          "type": "integer"
        +                        },
        +                        "derivation": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "formula": {
        +                          "anyOf": [
        +                            {
        +                              "type": "string"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ],
        +                          "default": null
        +                        },
        +                        "id": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "parameters_referenced": {
        +                          "items": {
        +                            "type": "string"
        +                          },
        +                          "type": "array"
        +                        }
        +                      },
        +                      "required": [
        +                        "id",
        +                        "boq_row_index",
        +                        "derivation"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "boq_rows": {
        +                "items": {
        +                  "additionalProperties": false,
        +                  "description": "Schema § 1.3 — a single bill row in the requested standard's format.\n\n`description` is the non-verbatim functional description per spec § 13.9 /\n§ 15 invariant — NEVER reproduces a standard's verbatim clause text.\n`rate` / `amount` ship null because rates are commodity data the customer\nowns; the engine's job is the measurement, not the pricing.",
        +                  "properties": {
        +                    "amount": {
        +                      "anyOf": [
        +                        {
        +                          "type": "number"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "attribution": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "audit_id": {
        +                      "anyOf": [
        +                        {
        +                          "type": "string"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "description": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "quantity": {
        +                      "minimum": 0,
        +                      "type": "number"
        +                    },
        +                    "rate": {
        +                      "anyOf": [
        +                        {
        +                          "type": "number"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "unit": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "work_section": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    }
        +                  },
        +                  "required": [
        +                    "work_section",
        +                    "description",
        +                    "quantity",
        +                    "unit",
        +                    "attribution"
        +                  ],
        +                  "type": "object"
        +                },
        +                "type": "array"
        +              },
        +              "drawing": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": false,
        +                    "description": "Schema § 1.6a — inline server-rendered SVG preview of the geometry.\n\nThe MCP mirror of the web ``/compute`` response's ``drawing`` field\n(``api.schemas.compute.DrawingRef``): the same on-screen dimensioned\ndrawing both tiers see in the workspace, surfaced on the MCP compute\nresponse so a chat client can render it inline (60th-fire item C). This\nis the on-screen preview — present on BOTH tiers per the free/paid\nboundary; the downloadable CAD artefacts (DXF / dimensioned PDF) remain\nthe paid differentiator via the export tools.\n\nDefined here rather than importing ``DrawingRef`` because the web\n``schemas`` package imports back into this module (``schemas.render``),\nso reusing it would create an import cycle — the MCP wire contract keeps\nits own copy, the same pattern as ``BoQRow`` / ``DrawingReference``.",
        +                    "properties": {
        +                      "entity_count": {
        +                        "minimum": 0,
        +                        "type": "integer"
        +                      },
        +                      "svg_b64": {
        +                        "minLength": 1,
        +                        "type": "string"
        +                      },
        +                      "unit_of_drawing": {
        +                        "const": "m",
        +                        "default": "m",
        +                        "type": "string"
        +                      },
        +                      "viewbox_height": {
        +                        "exclusiveMinimum": 0,
        +                        "type": "number"
        +                      },
        +                      "viewbox_width": {
        +                        "exclusiveMinimum": 0,
        +                        "type": "number"
        +                      },
        +                      "viewbox_x": {
        +                        "type": "number"
        +                      },
        +                      "viewbox_y": {
        +                        "type": "number"
        +                      }
        +                    },
        +                    "required": [
        +                      "svg_b64",
        +                      "viewbox_x",
        +                      "viewbox_y",
        +                      "viewbox_width",
        +                      "viewbox_height",
        +                      "entity_count"
        +                    ],
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "drawings": {
        +                "anyOf": [
        +                  {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.6 — paid-tier drawing artefact pointer.\n\n`url` is an R2-signed URL; expiry is carried in `_meta.deliverables.expires_at`\non the envelope (not duplicated here). `layers` is DXF-only; PDF/SVG\ncallers omit it.",
        +                      "properties": {
        +                        "drawing_type": {
        +                          "enum": [
        +                            "section",
        +                            "plan",
        +                            "elevation",
        +                            "isometric",
        +                            "detail"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "format": {
        +                          "enum": [
        +                            "DXF",
        +                            "PDF",
        +                            "SVG"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "layers": {
        +                          "anyOf": [
        +                            {
        +                              "items": {
        +                                "type": "string"
        +                              },
        +                              "type": "array"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ],
        +                          "default": null
        +                        },
        +                        "scale": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "sheet_size": {
        +                          "enum": [
        +                            "A1",
        +                            "A2",
        +                            "A3",
        +                            "A4"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "url": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "drawing_type",
        +                        "format",
        +                        "url",
        +                        "sheet_size",
        +                        "scale"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "parameters_used": {
        +                "additionalProperties": false,
        +                "description": "Schema § 1.2 — the parameter snapshot the engine actually used.\n\nSplits user-supplied values from engine defaults so customers can see\nwhich numbers came from them and which the engine filled in. Every\ndefaulted parameter SHOULD have a corresponding entry in `assumptions`\n— the bridge layer enforces this when wrapping engine output.",
        +                "properties": {
        +                  "assumptions": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "engine_defaults": {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  "user_supplied": {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  }
        +                },
        +                "type": "object"
        +              },
        +              "standard": {
        +                "enum": [
        +                  "CESMM4",
        +                  "NRM2",
        +                  "SMM7",
        +                  "MMHW"
        +                ],
        +                "type": "string"
        +              },
        +              "text_summary": {
        +                "maxLength": 2000,
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "totals_summary": {
        +                "additionalProperties": false,
        +                "description": "Schema § 1.4 — totals_summary as a typed wrapper around the free-form dict.\n\nWire shape is a flat object (`{\"concrete_m3\": {...}, \"rebar_t\": {...}}`).\nWe model it as `RootModel`-equivalent via `model_config(extra=\"allow\")`\n+ a single `__root__`-style `entries` dict. Pydantic v2 recommends\n`RootModel` for free-form roots; using a wrapper class keeps the import\nsurface uniform with the rest of this module.",
        +                "properties": {
        +                  "entries": {
        +                    "additionalProperties": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.4 — single material/work-class total entry.",
        +                      "properties": {
        +                        "quantity": {
        +                          "minimum": 0,
        +                          "type": "number"
        +                        },
        +                        "unit": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "quantity",
        +                        "unit"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "object"
        +                  }
        +                },
        +                "type": "object"
        +              },
        +              "warnings": {
        +                "items": {
        +                  "additionalProperties": false,
        +                  "description": "Schema § 1.8 — a non-fatal geometry advisory (56th-fire T2).\n\nThe wire projection of the engine's `core.GeometryWarning`. Advisory only:\na warning NEVER changes a measured quantity — it flags geometry that is\nvalid but likely a mistake (e.g. a stale dependent-height default). Present\non BOTH tiers — a correctness/safety signal, not a paid feature.",
        +                  "properties": {
        +                    "affected_params": {
        +                      "items": {
        +                        "type": "string"
        +                      },
        +                      "type": "array"
        +                    },
        +                    "code": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "detail": {
        +                      "additionalProperties": {
        +                        "type": "number"
        +                      },
        +                      "type": "object"
        +                    },
        +                    "message": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "severity": {
        +                      "enum": [
        +                        "info",
        +                        "advisory",
        +                        "caution"
        +                      ],
        +                      "type": "string"
        +                    }
        +                  },
        +                  "required": [
        +                    "code",
        +                    "severity",
        +                    "message"
        +                  ],
        +                  "type": "object"
        +                },
        +                "type": "array"
        +              }
        +            },
        +            "required": [
        +              "assembly_slug",
        +              "standard",
        +              "parameters_used",
        +              "boq_rows",
        +              "totals_summary",
        +              "text_summary"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      },
        +      "error": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        +            "properties": {
        +              "code": {
        +                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        +                "enum": [
        +                  "RATE_LIMIT_EXCEEDED",
        +                  "TIER_INSUFFICIENT",
        +                  "INVALID_INPUT",
        +                  "SCHEMA_VERSION_MISMATCH",
        +                  "SCHEMA_INVARIANT_VIOLATION",
        +                  "UPSTREAM_TIMEOUT",
        +                  "BACKEND_FAILURE",
        +                  "IP_BLOCKED",
        +                  "RESOURCE_NOT_FOUND",
        +                  "RENDER_FAILURE",
        +                  "OCR_LOW_CONFIDENCE",
        +                  "MANUAL_REVIEW_REQUIRED",
        +                  "ACCEPTANCE_REQUIRED",
        +                  "INVALID_TOKEN"
        +                ],
        +                "type": "string"
        +              },
        +              "details": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "message": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "recoverable": {
        +                "type": "boolean"
        +              },
        +              "retry_after_seconds": {
        +                "anyOf": [
        +                  {
        +                    "minimum": 0,
        +                    "type": "integer"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              }
        +            },
        +            "required": [
        +              "code",
        +              "message",
        +              "recoverable"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      }
        +    },
        +    "required": [
        +      "_meta"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "_meta": {
        +        "additionalProperties": false,
        +        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        +        "properties": {
        +          "deliverables": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        +                "properties": {
        +                  "docx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "dxf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "expires_at": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  },
        +                  "pdf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "xlsx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "expires_at"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "document_id": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "issued_at": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "output_mode": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Surfaces what a trimmed ``output_mode`` withheld from ``data``.\n\nA trimmed mode (``summary`` / ``material_schedule`` / ``boq`` /\n``boq_with_backup``) withholds\nalready-computed fields to keep the chat payload small. The withheld value\nreads to a client agent as \"capability missing\" (the box-culvert \"geometry\nbuilder isn't firing\" scare) rather than \"pared for size\": ``drawing`` and\n``audit_trail`` appear as ``null``, ``boq_rows`` as an empty list ``[]``\n(its type forbids ``null``) — both indistinguishable from a genuine absent\nresult. This names the withheld fields and the exact mode that brings each\nback, so the value is unambiguous. Absent on the default ``full_json`` mode\n— nothing is withheld, nothing to point at.",
        +                "properties": {
        +                  "mode": {
        +                    "enum": [
        +                      "summary",
        +                      "material_schedule",
        +                      "boq",
        +                      "boq_with_backup"
        +                    ],
        +                    "type": "string"
        +                  },
        +                  "omitted_fields": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "minItems": 1,
        +                    "type": "array"
        +                  },
        +                  "retrieve_with": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "mode",
        +                  "omitted_fields",
        +                  "retrieve_with"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "rate_limit_remaining": {
        +            "anyOf": [
        +              {
        +                "minimum": 0,
        +                "type": "integer"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "request_id": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "schema_version": {
        +            "const": "1.0.0",
        +            "default": "1.0.0",
        +            "type": "string"
        +          },
        +          "scope_boundary": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        +                "properties": {
        +                  "not_in_scope": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "produced": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "recommended_companions": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "type": "string"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "produced",
        +                  "not_in_scope"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tier": {
        +            "enum": [
        +              "free",
        +              "paid"
        +            ],
        +            "type": "string"
        +          },
        +          "tier_upgrade": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        +                "properties": {
        +                  "available_tiers": {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        +                      "properties": {
        +                        "billing": {
        +                          "enum": [
        +                            "one_off",
        +                            "monthly",
        +                            "annual"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "currency": {
        +                          "enum": [
        +                            "GBP",
        +                            "SGD",
        +                            "EUR",
        +                            "USD",
        +                            "CAD",
        +                            "AUD",
        +                            "NZD",
        +                            "MYR"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "display_name": {
        +                          "type": "string"
        +                        },
        +                        "price_local": {
        +                          "type": "number"
        +                        },
        +                        "tier_slug": {
        +                          "enum": [
        +                            "7_day_pass",
        +                            "solo",
        +                            "studio",
        +                            "practice"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "unlock_summary": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "tier_slug",
        +                        "display_name",
        +                        "price_local",
        +                        "currency",
        +                        "billing",
        +                        "unlock_summary"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "current_tier": {
        +                    "const": "free",
        +                    "default": "free",
        +                    "type": "string"
        +                  },
        +                  "pass_credit": {
        +                    "anyOf": [
        +                      {
        +                        "additionalProperties": false,
        +                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        +                        "properties": {
        +                          "amount_local": {
        +                            "type": "number"
        +                          },
        +                          "applies_to": {
        +                            "const": "solo_first_month",
        +                            "default": "solo_first_month",
        +                            "type": "string"
        +                          },
        +                          "currency": {
        +                            "type": "string"
        +                          },
        +                          "redeemable_until": {
        +                            "type": "string"
        +                          }
        +                        },
        +                        "required": [
        +                          "amount_local",
        +                          "currency",
        +                          "redeemable_until"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "pricing_url": {
        +                    "default": "https://civilquants.com/pricing",
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "available_tiers"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tos_url": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "upgrade_hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "warranty_disclaimer": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          }
        +        },
        +        "required": [
        +          "request_id",
        +          "issued_at",
        +          "tier"
        +        ],
        +        "type": "object"
        +      },
        +      "data": {
        +        "default": null,
        +        "title": "Data"
        +      },
        +      "error": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        +            "properties": {
        +              "code": {
        +                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        +                "enum": [
        +                  "RATE_LIMIT_EXCEEDED",
        +                  "TIER_INSUFFICIENT",
        +                  "INVALID_INPUT",
        +                  "SCHEMA_VERSION_MISMATCH",
        +                  "SCHEMA_INVARIANT_VIOLATION",
        +                  "UPSTREAM_TIMEOUT",
        +                  "BACKEND_FAILURE",
        +                  "IP_BLOCKED",
        +                  "RESOURCE_NOT_FOUND",
        +                  "RENDER_FAILURE",
        +                  "OCR_LOW_CONFIDENCE",
        +                  "MANUAL_REVIEW_REQUIRED",
        +                  "ACCEPTANCE_REQUIRED",
        +                  "INVALID_TOKEN"
        +                ],
        +                "type": "string"
        +              },
        +              "details": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "message": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "recoverable": {
        +                "type": "boolean"
        +              },
        +              "retry_after_seconds": {
        +                "anyOf": [
        +                  {
        +                    "minimum": 0,
        +                    "type": "integer"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              }
        +            },
        +            "required": [
        +              "code",
        +              "message",
        +              "recoverable"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      }
        +    },
        +    "required": [
        +      "_meta"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedcompute_combined_services_trench2 fields changed
      • changedInput schema / properties / output_mode / enum
        Previous value: -[
        -  "summary",
        -  "boq",
        -  "boq_with_backup",
        -  "full_json"
        -]New value: +[
        +  "summary",
        +  "material_schedule",
        +  "boq",
        +  "boq_with_backup",
        +  "full_json"
        +]
      • changedOutput schema / properties / result / anyOf
        Previous value: -[
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "_meta": {
        -        "additionalProperties": false,
        -        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        -        "properties": {
        -          "deliverables": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        -                "properties": {
        -                  "docx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "dxf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "expires_at": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  },
        -                  "pdf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "xlsx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "expires_at"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "document_id": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "issued_at": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "output_mode": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Surfaces what a trimmed ``output_mode`` withheld from ``data``.\n\nA trimmed mode (``summary`` / ``boq`` / ``boq_with_backup``) withholds\nalready-computed fields to keep the chat payload small. The withheld value\nreads to a client agent as \"capability missing\" (the box-culvert \"geometry\nbuilder isn't firing\" scare) rather than \"pared for size\": ``drawing`` and\n``audit_trail`` appear as ``null``, ``boq_rows`` as an empty list ``[]``\n(its type forbids ``null``) — both indistinguishable from a genuine absent\nresult. This names the withheld fields and the exact mode that brings each\nback, so the value is unambiguous. Absent on the default ``full_json`` mode\n— nothing is withheld, nothing to point at.",
        -                "properties": {
        -                  "mode": {
        -                    "enum": [
        -                      "summary",
        -                      "boq",
        -                      "boq_with_backup"
        -                    ],
        -                    "type": "string"
        -                  },
        -                  "omitted_fields": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "minItems": 1,
        -                    "type": "array"
        -                  },
        -                  "retrieve_with": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "mode",
        -                  "omitted_fields",
        -                  "retrieve_with"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "rate_limit_remaining": {
        -            "anyOf": [
        -              {
        -                "minimum": 0,
        -                "type": "integer"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "request_id": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "schema_version": {
        -            "const": "1.0.0",
        -            "default": "1.0.0",
        -            "type": "string"
        -          },
        -          "scope_boundary": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        -                "properties": {
        -                  "not_in_scope": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "produced": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "recommended_companions": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "type": "string"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "produced",
        -                  "not_in_scope"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tier": {
        -            "enum": [
        -              "free",
        -              "paid"
        -            ],
        -            "type": "string"
        -          },
        -          "tier_upgrade": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        -                "properties": {
        -                  "available_tiers": {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        -                      "properties": {
        -                        "billing": {
        -                          "enum": [
        -                            "one_off",
        -                            "monthly",
        -                            "annual"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "currency": {
        -                          "enum": [
        -                            "GBP",
        -                            "SGD",
        -                            "EUR",
        -                            "USD",
        -                            "CAD",
        -                            "AUD",
        -                            "NZD",
        -                            "MYR"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "display_name": {
        -                          "type": "string"
        -                        },
        -                        "price_local": {
        -                          "type": "number"
        -                        },
        -                        "tier_slug": {
        -                          "enum": [
        -                            "7_day_pass",
        -                            "solo",
        -                            "studio",
        -                            "practice"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "unlock_summary": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "tier_slug",
        -                        "display_name",
        -                        "price_local",
        -                        "currency",
        -                        "billing",
        -                        "unlock_summary"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "current_tier": {
        -                    "const": "free",
        -                    "default": "free",
        -                    "type": "string"
        -                  },
        -                  "pass_credit": {
        -                    "anyOf": [
        -                      {
        -                        "additionalProperties": false,
        -                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        -                        "properties": {
        -                          "amount_local": {
        -                            "type": "number"
        -                          },
        -                          "applies_to": {
        -                            "const": "solo_first_month",
        -                            "default": "solo_first_month",
        -                            "type": "string"
        -                          },
        -                          "currency": {
        -                            "type": "string"
        -                          },
        -                          "redeemable_until": {
        -                            "type": "string"
        -                          }
        -                        },
        -                        "required": [
        -                          "amount_local",
        -                          "currency",
        -                          "redeemable_until"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "pricing_url": {
        -                    "default": "https://civilquants.com/pricing",
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "available_tiers"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tos_url": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "upgrade_hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "warranty_disclaimer": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          }
        -        },
        -        "required": [
        -          "request_id",
        -          "issued_at",
        -          "tier"
        -        ],
        -        "type": "object"
        -      },
        -      "data": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Schema § 1.1 — the typed payload returned inside `MCPResponse[ComputeResult]`.\n\nFree-tier responses omit `drawings` (the downloadable CAD artefact\npointers — the paid differentiator); the bridge enforces this. The\n`audit_trail` and the inline `drawing` preview are present on BOTH tiers\n(V1 ALIGN / 60th-fire D + C). `text_summary` is bounded to 2000 chars —\nkeeps the LLM-facing summary token-cheap and forces longer narrative into\nBoQ row descriptions where it belongs. `warnings` is the non-fatal\ngeometry advisory list (both tiers).",
        -            "properties": {
        -              "assembly_slug": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "audit_trail": {
        -                "anyOf": [
        -                  {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.7 — paid-tier audit-trail entry.\n\nOne entry per BoQ row; `boq_row_index` ties to the row position in\n`ComputeResult.boq_rows`. `derivation` is the human-readable formula\nwalk-through; `formula` is the optional formal expression.",
        -                      "properties": {
        -                        "boq_row_index": {
        -                          "minimum": 0,
        -                          "type": "integer"
        -                        },
        -                        "derivation": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "formula": {
        -                          "anyOf": [
        -                            {
        -                              "type": "string"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ],
        -                          "default": null
        -                        },
        -                        "id": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "parameters_referenced": {
        -                          "items": {
        -                            "type": "string"
        -                          },
        -                          "type": "array"
        -                        }
        -                      },
        -                      "required": [
        -                        "id",
        -                        "boq_row_index",
        -                        "derivation"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "boq_rows": {
        -                "items": {
        -                  "additionalProperties": false,
        -                  "description": "Schema § 1.3 — a single bill row in the requested standard's format.\n\n`description` is the non-verbatim functional description per spec § 13.9 /\n§ 15 invariant — NEVER reproduces a standard's verbatim clause text.\n`rate` / `amount` ship null because rates are commodity data the customer\nowns; the engine's job is the measurement, not the pricing.",
        -                  "properties": {
        -                    "amount": {
        -                      "anyOf": [
        -                        {
        -                          "type": "number"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "attribution": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "audit_id": {
        -                      "anyOf": [
        -                        {
        -                          "type": "string"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "description": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "quantity": {
        -                      "minimum": 0,
        -                      "type": "number"
        -                    },
        -                    "rate": {
        -                      "anyOf": [
        -                        {
        -                          "type": "number"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "unit": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "work_section": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    }
        -                  },
        -                  "required": [
        -                    "work_section",
        -                    "description",
        -                    "quantity",
        -                    "unit",
        -                    "attribution"
        -                  ],
        -                  "type": "object"
        -                },
        -                "type": "array"
        -              },
        -              "drawing": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": false,
        -                    "description": "Schema § 1.6a — inline server-rendered SVG preview of the geometry.\n\nThe MCP mirror of the web ``/compute`` response's ``drawing`` field\n(``api.schemas.compute.DrawingRef``): the same on-screen dimensioned\ndrawing both tiers see in the workspace, surfaced on the MCP compute\nresponse so a chat client can render it inline (60th-fire item C). This\nis the on-screen preview — present on BOTH tiers per the free/paid\nboundary; the downloadable CAD artefacts (DXF / dimensioned PDF) remain\nthe paid differentiator via the export tools.\n\nDefined here rather than importing ``DrawingRef`` because the web\n``schemas`` package imports back into this module (``schemas.render``),\nso reusing it would create an import cycle — the MCP wire contract keeps\nits own copy, the same pattern as ``BoQRow`` / ``DrawingReference``.",
        -                    "properties": {
        -                      "entity_count": {
        -                        "minimum": 0,
        -                        "type": "integer"
        -                      },
        -                      "svg_b64": {
        -                        "minLength": 1,
        -                        "type": "string"
        -                      },
        -                      "unit_of_drawing": {
        -                        "const": "m",
        -                        "default": "m",
        -                        "type": "string"
        -                      },
        -                      "viewbox_height": {
        -                        "exclusiveMinimum": 0,
        -                        "type": "number"
        -                      },
        -                      "viewbox_width": {
        -                        "exclusiveMinimum": 0,
        -                        "type": "number"
        -                      },
        -                      "viewbox_x": {
        -                        "type": "number"
        -                      },
        -                      "viewbox_y": {
        -                        "type": "number"
        -                      }
        -                    },
        -                    "required": [
        -                      "svg_b64",
        -                      "viewbox_x",
        -                      "viewbox_y",
        -                      "viewbox_width",
        -                      "viewbox_height",
        -                      "entity_count"
        -                    ],
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "drawings": {
        -                "anyOf": [
        -                  {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.6 — paid-tier drawing artefact pointer.\n\n`url` is an R2-signed URL; expiry is carried in `_meta.deliverables.expires_at`\non the envelope (not duplicated here). `layers` is DXF-only; PDF/SVG\ncallers omit it.",
        -                      "properties": {
        -                        "drawing_type": {
        -                          "enum": [
        -                            "section",
        -                            "plan",
        -                            "elevation",
        -                            "isometric",
        -                            "detail"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "format": {
        -                          "enum": [
        -                            "DXF",
        -                            "PDF",
        -                            "SVG"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "layers": {
        -                          "anyOf": [
        -                            {
        -                              "items": {
        -                                "type": "string"
        -                              },
        -                              "type": "array"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ],
        -                          "default": null
        -                        },
        -                        "scale": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "sheet_size": {
        -                          "enum": [
        -                            "A1",
        -                            "A2",
        -                            "A3",
        -                            "A4"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "url": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "drawing_type",
        -                        "format",
        -                        "url",
        -                        "sheet_size",
        -                        "scale"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "parameters_used": {
        -                "additionalProperties": false,
        -                "description": "Schema § 1.2 — the parameter snapshot the engine actually used.\n\nSplits user-supplied values from engine defaults so customers can see\nwhich numbers came from them and which the engine filled in. Every\ndefaulted parameter SHOULD have a corresponding entry in `assumptions`\n— the bridge layer enforces this when wrapping engine output.",
        -                "properties": {
        -                  "assumptions": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "engine_defaults": {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  "user_supplied": {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  }
        -                },
        -                "type": "object"
        -              },
        -              "standard": {
        -                "enum": [
        -                  "CESMM4",
        -                  "NRM2",
        -                  "SMM7",
        -                  "MMHW"
        -                ],
        -                "type": "string"
        -              },
        -              "text_summary": {
        -                "maxLength": 2000,
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "totals_summary": {
        -                "additionalProperties": false,
        -                "description": "Schema § 1.4 — totals_summary as a typed wrapper around the free-form dict.\n\nWire shape is a flat object (`{\"concrete_m3\": {...}, \"rebar_t\": {...}}`).\nWe model it as `RootModel`-equivalent via `model_config(extra=\"allow\")`\n+ a single `__root__`-style `entries` dict. Pydantic v2 recommends\n`RootModel` for free-form roots; using a wrapper class keeps the import\nsurface uniform with the rest of this module.",
        -                "properties": {
        -                  "entries": {
        -                    "additionalProperties": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.4 — single material/work-class total entry.",
        -                      "properties": {
        -                        "quantity": {
        -                          "minimum": 0,
        -                          "type": "number"
        -                        },
        -                        "unit": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "quantity",
        -                        "unit"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "object"
        -                  }
        -                },
        -                "type": "object"
        -              },
        -              "warnings": {
        -                "items": {
        -                  "additionalProperties": false,
        -                  "description": "Schema § 1.8 — a non-fatal geometry advisory (56th-fire T2).\n\nThe wire projection of the engine's `core.GeometryWarning`. Advisory only:\na warning NEVER changes a measured quantity — it flags geometry that is\nvalid but likely a mistake (e.g. a stale dependent-height default). Present\non BOTH tiers — a correctness/safety signal, not a paid feature.",
        -                  "properties": {
        -                    "affected_params": {
        -                      "items": {
        -                        "type": "string"
        -                      },
        -                      "type": "array"
        -                    },
        -                    "code": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "detail": {
        -                      "additionalProperties": {
        -                        "type": "number"
        -                      },
        -                      "type": "object"
        -                    },
        -                    "message": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "severity": {
        -                      "enum": [
        -                        "info",
        -                        "advisory",
        -                        "caution"
        -                      ],
        -                      "type": "string"
        -                    }
        -                  },
        -                  "required": [
        -                    "code",
        -                    "severity",
        -                    "message"
        -                  ],
        -                  "type": "object"
        -                },
        -                "type": "array"
        -              }
        -            },
        -            "required": [
        -              "assembly_slug",
        -              "standard",
        -              "parameters_used",
        -              "boq_rows",
        -              "totals_summary",
        -              "text_summary"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      },
        -      "error": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        -            "properties": {
        -              "code": {
        -                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        -                "enum": [
        -                  "RATE_LIMIT_EXCEEDED",
        -                  "TIER_INSUFFICIENT",
        -                  "INVALID_INPUT",
        -                  "SCHEMA_VERSION_MISMATCH",
        -                  "SCHEMA_INVARIANT_VIOLATION",
        -                  "UPSTREAM_TIMEOUT",
        -                  "BACKEND_FAILURE",
        -                  "IP_BLOCKED",
        -                  "RESOURCE_NOT_FOUND",
        -                  "RENDER_FAILURE",
        -                  "OCR_LOW_CONFIDENCE",
        -                  "MANUAL_REVIEW_REQUIRED",
        -                  "ACCEPTANCE_REQUIRED",
        -                  "INVALID_TOKEN"
        -                ],
        -                "type": "string"
        -              },
        -              "details": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "message": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "recoverable": {
        -                "type": "boolean"
        -              },
        -              "retry_after_seconds": {
        -                "anyOf": [
        -                  {
        -                    "minimum": 0,
        -                    "type": "integer"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              }
        -            },
        -            "required": [
        -              "code",
        -              "message",
        -              "recoverable"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      }
        -    },
        -    "required": [
        -      "_meta"
        -    ],
        -    "type": "object"
        -  },
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "_meta": {
        -        "additionalProperties": false,
        -        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        -        "properties": {
        -          "deliverables": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        -                "properties": {
        -                  "docx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "dxf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "expires_at": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  },
        -                  "pdf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "xlsx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "expires_at"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "document_id": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "issued_at": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "output_mode": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Surfaces what a trimmed ``output_mode`` withheld from ``data``.\n\nA trimmed mode (``summary`` / ``boq`` / ``boq_with_backup``) withholds\nalready-computed fields to keep the chat payload small. The withheld value\nreads to a client agent as \"capability missing\" (the box-culvert \"geometry\nbuilder isn't firing\" scare) rather than \"pared for size\": ``drawing`` and\n``audit_trail`` appear as ``null``, ``boq_rows`` as an empty list ``[]``\n(its type forbids ``null``) — both indistinguishable from a genuine absent\nresult. This names the withheld fields and the exact mode that brings each\nback, so the value is unambiguous. Absent on the default ``full_json`` mode\n— nothing is withheld, nothing to point at.",
        -                "properties": {
        -                  "mode": {
        -                    "enum": [
        -                      "summary",
        -                      "boq",
        -                      "boq_with_backup"
        -                    ],
        -                    "type": "string"
        -                  },
        -                  "omitted_fields": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "minItems": 1,
        -                    "type": "array"
        -                  },
        -                  "retrieve_with": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "mode",
        -                  "omitted_fields",
        -                  "retrieve_with"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "rate_limit_remaining": {
        -            "anyOf": [
        -              {
        -                "minimum": 0,
        -                "type": "integer"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "request_id": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "schema_version": {
        -            "const": "1.0.0",
        -            "default": "1.0.0",
        -            "type": "string"
        -          },
        -          "scope_boundary": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        -                "properties": {
        -                  "not_in_scope": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "produced": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "recommended_companions": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "type": "string"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "produced",
        -                  "not_in_scope"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tier": {
        -            "enum": [
        -              "free",
        -              "paid"
        -            ],
        -            "type": "string"
        -          },
        -          "tier_upgrade": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        -                "properties": {
        -                  "available_tiers": {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        -                      "properties": {
        -                        "billing": {
        -                          "enum": [
        -                            "one_off",
        -                            "monthly",
        -                            "annual"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "currency": {
        -                          "enum": [
        -                            "GBP",
        -                            "SGD",
        -                            "EUR",
        -                            "USD",
        -                            "CAD",
        -                            "AUD",
        -                            "NZD",
        -                            "MYR"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "display_name": {
        -                          "type": "string"
        -                        },
        -                        "price_local": {
        -                          "type": "number"
        -                        },
        -                        "tier_slug": {
        -                          "enum": [
        -                            "7_day_pass",
        -                            "solo",
        -                            "studio",
        -                            "practice"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "unlock_summary": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "tier_slug",
        -                        "display_name",
        -                        "price_local",
        -                        "currency",
        -                        "billing",
        -                        "unlock_summary"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "current_tier": {
        -                    "const": "free",
        -                    "default": "free",
        -                    "type": "string"
        -                  },
        -                  "pass_credit": {
        -                    "anyOf": [
        -                      {
        -                        "additionalProperties": false,
        -                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        -                        "properties": {
        -                          "amount_local": {
        -                            "type": "number"
        -                          },
        -                          "applies_to": {
        -                            "const": "solo_first_month",
        -                            "default": "solo_first_month",
        -                            "type": "string"
        -                          },
        -                          "currency": {
        -                            "type": "string"
        -                          },
        -                          "redeemable_until": {
        -                            "type": "string"
        -                          }
        -                        },
        -                        "required": [
        -                          "amount_local",
        -                          "currency",
        -                          "redeemable_until"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "pricing_url": {
        -                    "default": "https://civilquants.com/pricing",
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "available_tiers"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tos_url": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "upgrade_hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "warranty_disclaimer": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          }
        -        },
        -        "required": [
        -          "request_id",
        -          "issued_at",
        -          "tier"
        -        ],
        -        "type": "object"
        -      },
        -      "data": {
        -        "default": null,
        -        "title": "Data"
        -      },
        -      "error": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        -            "properties": {
        -              "code": {
        -                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        -                "enum": [
        -                  "RATE_LIMIT_EXCEEDED",
        -                  "TIER_INSUFFICIENT",
        -                  "INVALID_INPUT",
        -                  "SCHEMA_VERSION_MISMATCH",
        -                  "SCHEMA_INVARIANT_VIOLATION",
        -                  "UPSTREAM_TIMEOUT",
        -                  "BACKEND_FAILURE",
        -                  "IP_BLOCKED",
        -                  "RESOURCE_NOT_FOUND",
        -                  "RENDER_FAILURE",
        -                  "OCR_LOW_CONFIDENCE",
        -                  "MANUAL_REVIEW_REQUIRED",
        -                  "ACCEPTANCE_REQUIRED",
        -                  "INVALID_TOKEN"
        -                ],
        -                "type": "string"
        -              },
        -              "details": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "message": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "recoverable": {
        -                "type": "boolean"
        -              },
        -              "retry_after_seconds": {
        -                "anyOf": [
        -                  {
        -                    "minimum": 0,
        -                    "type": "integer"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              }
        -            },
        -            "required": [
        -              "code",
        -              "message",
        -              "recoverable"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      }
        -    },
        -    "required": [
        -      "_meta"
        -    ],
        -    "type": "object"
        -  }
        -]New value: +[
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "_meta": {
        +        "additionalProperties": false,
        +        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        +        "properties": {
        +          "deliverables": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        +                "properties": {
        +                  "docx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "dxf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "expires_at": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  },
        +                  "pdf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "xlsx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "expires_at"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "document_id": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "issued_at": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "output_mode": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Surfaces what a trimmed ``output_mode`` withheld from ``data``.\n\nA trimmed mode (``summary`` / ``material_schedule`` / ``boq`` /\n``boq_with_backup``) withholds\nalready-computed fields to keep the chat payload small. The withheld value\nreads to a client agent as \"capability missing\" (the box-culvert \"geometry\nbuilder isn't firing\" scare) rather than \"pared for size\": ``drawing`` and\n``audit_trail`` appear as ``null``, ``boq_rows`` as an empty list ``[]``\n(its type forbids ``null``) — both indistinguishable from a genuine absent\nresult. This names the withheld fields and the exact mode that brings each\nback, so the value is unambiguous. Absent on the default ``full_json`` mode\n— nothing is withheld, nothing to point at.",
        +                "properties": {
        +                  "mode": {
        +                    "enum": [
        +                      "summary",
        +                      "material_schedule",
        +                      "boq",
        +                      "boq_with_backup"
        +                    ],
        +                    "type": "string"
        +                  },
        +                  "omitted_fields": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "minItems": 1,
        +                    "type": "array"
        +                  },
        +                  "retrieve_with": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "mode",
        +                  "omitted_fields",
        +                  "retrieve_with"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "rate_limit_remaining": {
        +            "anyOf": [
        +              {
        +                "minimum": 0,
        +                "type": "integer"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "request_id": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "schema_version": {
        +            "const": "1.0.0",
        +            "default": "1.0.0",
        +            "type": "string"
        +          },
        +          "scope_boundary": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        +                "properties": {
        +                  "not_in_scope": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "produced": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "recommended_companions": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "type": "string"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "produced",
        +                  "not_in_scope"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tier": {
        +            "enum": [
        +              "free",
        +              "paid"
        +            ],
        +            "type": "string"
        +          },
        +          "tier_upgrade": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        +                "properties": {
        +                  "available_tiers": {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        +                      "properties": {
        +                        "billing": {
        +                          "enum": [
        +                            "one_off",
        +                            "monthly",
        +                            "annual"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "currency": {
        +                          "enum": [
        +                            "GBP",
        +                            "SGD",
        +                            "EUR",
        +                            "USD",
        +                            "CAD",
        +                            "AUD",
        +                            "NZD",
        +                            "MYR"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "display_name": {
        +                          "type": "string"
        +                        },
        +                        "price_local": {
        +                          "type": "number"
        +                        },
        +                        "tier_slug": {
        +                          "enum": [
        +                            "7_day_pass",
        +                            "solo",
        +                            "studio",
        +                            "practice"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "unlock_summary": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "tier_slug",
        +                        "display_name",
        +                        "price_local",
        +                        "currency",
        +                        "billing",
        +                        "unlock_summary"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "current_tier": {
        +                    "const": "free",
        +                    "default": "free",
        +                    "type": "string"
        +                  },
        +                  "pass_credit": {
        +                    "anyOf": [
        +                      {
        +                        "additionalProperties": false,
        +                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        +                        "properties": {
        +                          "amount_local": {
        +                            "type": "number"
        +                          },
        +                          "applies_to": {
        +                            "const": "solo_first_month",
        +                            "default": "solo_first_month",
        +                            "type": "string"
        +                          },
        +                          "currency": {
        +                            "type": "string"
        +                          },
        +                          "redeemable_until": {
        +                            "type": "string"
        +                          }
        +                        },
        +                        "required": [
        +                          "amount_local",
        +                          "currency",
        +                          "redeemable_until"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "pricing_url": {
        +                    "default": "https://civilquants.com/pricing",
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "available_tiers"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tos_url": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "upgrade_hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "warranty_disclaimer": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          }
        +        },
        +        "required": [
        +          "request_id",
        +          "issued_at",
        +          "tier"
        +        ],
        +        "type": "object"
        +      },
        +      "data": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Schema § 1.1 — the typed payload returned inside `MCPResponse[ComputeResult]`.\n\nFree-tier responses omit `drawings` (the downloadable CAD artefact\npointers — the paid differentiator); the bridge enforces this. The\n`audit_trail` and the inline `drawing` preview are present on BOTH tiers\n(V1 ALIGN / 60th-fire D + C). `text_summary` is bounded to 2000 chars —\nkeeps the LLM-facing summary token-cheap and forces longer narrative into\nBoQ row descriptions where it belongs. `warnings` is the non-fatal\ngeometry advisory list (both tiers).",
        +            "properties": {
        +              "assembly_slug": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "audit_trail": {
        +                "anyOf": [
        +                  {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.7 — paid-tier audit-trail entry.\n\nOne entry per BoQ row; `boq_row_index` ties to the row position in\n`ComputeResult.boq_rows`. `derivation` is the human-readable formula\nwalk-through; `formula` is the optional formal expression.",
        +                      "properties": {
        +                        "boq_row_index": {
        +                          "minimum": 0,
        +                          "type": "integer"
        +                        },
        +                        "derivation": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "formula": {
        +                          "anyOf": [
        +                            {
        +                              "type": "string"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ],
        +                          "default": null
        +                        },
        +                        "id": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "parameters_referenced": {
        +                          "items": {
        +                            "type": "string"
        +                          },
        +                          "type": "array"
        +                        }
        +                      },
        +                      "required": [
        +                        "id",
        +                        "boq_row_index",
        +                        "derivation"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "boq_rows": {
        +                "items": {
        +                  "additionalProperties": false,
        +                  "description": "Schema § 1.3 — a single bill row in the requested standard's format.\n\n`description` is the non-verbatim functional description per spec § 13.9 /\n§ 15 invariant — NEVER reproduces a standard's verbatim clause text.\n`rate` / `amount` ship null because rates are commodity data the customer\nowns; the engine's job is the measurement, not the pricing.",
        +                  "properties": {
        +                    "amount": {
        +                      "anyOf": [
        +                        {
        +                          "type": "number"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "attribution": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "audit_id": {
        +                      "anyOf": [
        +                        {
        +                          "type": "string"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "description": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "quantity": {
        +                      "minimum": 0,
        +                      "type": "number"
        +                    },
        +                    "rate": {
        +                      "anyOf": [
        +                        {
        +                          "type": "number"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "unit": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "work_section": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    }
        +                  },
        +                  "required": [
        +                    "work_section",
        +                    "description",
        +                    "quantity",
        +                    "unit",
        +                    "attribution"
        +                  ],
        +                  "type": "object"
        +                },
        +                "type": "array"
        +              },
        +              "drawing": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": false,
        +                    "description": "Schema § 1.6a — inline server-rendered SVG preview of the geometry.\n\nThe MCP mirror of the web ``/compute`` response's ``drawing`` field\n(``api.schemas.compute.DrawingRef``): the same on-screen dimensioned\ndrawing both tiers see in the workspace, surfaced on the MCP compute\nresponse so a chat client can render it inline (60th-fire item C). This\nis the on-screen preview — present on BOTH tiers per the free/paid\nboundary; the downloadable CAD artefacts (DXF / dimensioned PDF) remain\nthe paid differentiator via the export tools.\n\nDefined here rather than importing ``DrawingRef`` because the web\n``schemas`` package imports back into this module (``schemas.render``),\nso reusing it would create an import cycle — the MCP wire contract keeps\nits own copy, the same pattern as ``BoQRow`` / ``DrawingReference``.",
        +                    "properties": {
        +                      "entity_count": {
        +                        "minimum": 0,
        +                        "type": "integer"
        +                      },
        +                      "svg_b64": {
        +                        "minLength": 1,
        +                        "type": "string"
        +                      },
        +                      "unit_of_drawing": {
        +                        "const": "m",
        +                        "default": "m",
        +                        "type": "string"
        +                      },
        +                      "viewbox_height": {
        +                        "exclusiveMinimum": 0,
        +                        "type": "number"
        +                      },
        +                      "viewbox_width": {
        +                        "exclusiveMinimum": 0,
        +                        "type": "number"
        +                      },
        +                      "viewbox_x": {
        +                        "type": "number"
        +                      },
        +                      "viewbox_y": {
        +                        "type": "number"
        +                      }
        +                    },
        +                    "required": [
        +                      "svg_b64",
        +                      "viewbox_x",
        +                      "viewbox_y",
        +                      "viewbox_width",
        +                      "viewbox_height",
        +                      "entity_count"
        +                    ],
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "drawings": {
        +                "anyOf": [
        +                  {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.6 — paid-tier drawing artefact pointer.\n\n`url` is an R2-signed URL; expiry is carried in `_meta.deliverables.expires_at`\non the envelope (not duplicated here). `layers` is DXF-only; PDF/SVG\ncallers omit it.",
        +                      "properties": {
        +                        "drawing_type": {
        +                          "enum": [
        +                            "section",
        +                            "plan",
        +                            "elevation",
        +                            "isometric",
        +                            "detail"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "format": {
        +                          "enum": [
        +                            "DXF",
        +                            "PDF",
        +                            "SVG"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "layers": {
        +                          "anyOf": [
        +                            {
        +                              "items": {
        +                                "type": "string"
        +                              },
        +                              "type": "array"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ],
        +                          "default": null
        +                        },
        +                        "scale": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "sheet_size": {
        +                          "enum": [
        +                            "A1",
        +                            "A2",
        +                            "A3",
        +                            "A4"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "url": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "drawing_type",
        +                        "format",
        +                        "url",
        +                        "sheet_size",
        +                        "scale"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "parameters_used": {
        +                "additionalProperties": false,
        +                "description": "Schema § 1.2 — the parameter snapshot the engine actually used.\n\nSplits user-supplied values from engine defaults so customers can see\nwhich numbers came from them and which the engine filled in. Every\ndefaulted parameter SHOULD have a corresponding entry in `assumptions`\n— the bridge layer enforces this when wrapping engine output.",
        +                "properties": {
        +                  "assumptions": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "engine_defaults": {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  "user_supplied": {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  }
        +                },
        +                "type": "object"
        +              },
        +              "standard": {
        +                "enum": [
        +                  "CESMM4",
        +                  "NRM2",
        +                  "SMM7",
        +                  "MMHW"
        +                ],
        +                "type": "string"
        +              },
        +              "text_summary": {
        +                "maxLength": 2000,
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "totals_summary": {
        +                "additionalProperties": false,
        +                "description": "Schema § 1.4 — totals_summary as a typed wrapper around the free-form dict.\n\nWire shape is a flat object (`{\"concrete_m3\": {...}, \"rebar_t\": {...}}`).\nWe model it as `RootModel`-equivalent via `model_config(extra=\"allow\")`\n+ a single `__root__`-style `entries` dict. Pydantic v2 recommends\n`RootModel` for free-form roots; using a wrapper class keeps the import\nsurface uniform with the rest of this module.",
        +                "properties": {
        +                  "entries": {
        +                    "additionalProperties": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.4 — single material/work-class total entry.",
        +                      "properties": {
        +                        "quantity": {
        +                          "minimum": 0,
        +                          "type": "number"
        +                        },
        +                        "unit": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "quantity",
        +                        "unit"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "object"
        +                  }
        +                },
        +                "type": "object"
        +              },
        +              "warnings": {
        +                "items": {
        +                  "additionalProperties": false,
        +                  "description": "Schema § 1.8 — a non-fatal geometry advisory (56th-fire T2).\n\nThe wire projection of the engine's `core.GeometryWarning`. Advisory only:\na warning NEVER changes a measured quantity — it flags geometry that is\nvalid but likely a mistake (e.g. a stale dependent-height default). Present\non BOTH tiers — a correctness/safety signal, not a paid feature.",
        +                  "properties": {
        +                    "affected_params": {
        +                      "items": {
        +                        "type": "string"
        +                      },
        +                      "type": "array"
        +                    },
        +                    "code": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "detail": {
        +                      "additionalProperties": {
        +                        "type": "number"
        +                      },
        +                      "type": "object"
        +                    },
        +                    "message": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "severity": {
        +                      "enum": [
        +                        "info",
        +                        "advisory",
        +                        "caution"
        +                      ],
        +                      "type": "string"
        +                    }
        +                  },
        +                  "required": [
        +                    "code",
        +                    "severity",
        +                    "message"
        +                  ],
        +                  "type": "object"
        +                },
        +                "type": "array"
        +              }
        +            },
        +            "required": [
        +              "assembly_slug",
        +              "standard",
        +              "parameters_used",
        +              "boq_rows",
        +              "totals_summary",
        +              "text_summary"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      },
        +      "error": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        +            "properties": {
        +              "code": {
        +                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        +                "enum": [
        +                  "RATE_LIMIT_EXCEEDED",
        +                  "TIER_INSUFFICIENT",
        +                  "INVALID_INPUT",
        +                  "SCHEMA_VERSION_MISMATCH",
        +                  "SCHEMA_INVARIANT_VIOLATION",
        +                  "UPSTREAM_TIMEOUT",
        +                  "BACKEND_FAILURE",
        +                  "IP_BLOCKED",
        +                  "RESOURCE_NOT_FOUND",
        +                  "RENDER_FAILURE",
        +                  "OCR_LOW_CONFIDENCE",
        +                  "MANUAL_REVIEW_REQUIRED",
        +                  "ACCEPTANCE_REQUIRED",
        +                  "INVALID_TOKEN"
        +                ],
        +                "type": "string"
        +              },
        +              "details": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "message": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "recoverable": {
        +                "type": "boolean"
        +              },
        +              "retry_after_seconds": {
        +                "anyOf": [
        +                  {
        +                    "minimum": 0,
        +                    "type": "integer"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              }
        +            },
        +            "required": [
        +              "code",
        +              "message",
        +              "recoverable"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      }
        +    },
        +    "required": [
        +      "_meta"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "_meta": {
        +        "additionalProperties": false,
        +        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        +        "properties": {
        +          "deliverables": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        +                "properties": {
        +                  "docx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "dxf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "expires_at": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  },
        +                  "pdf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "xlsx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "expires_at"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "document_id": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "issued_at": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "output_mode": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Surfaces what a trimmed ``output_mode`` withheld from ``data``.\n\nA trimmed mode (``summary`` / ``material_schedule`` / ``boq`` /\n``boq_with_backup``) withholds\nalready-computed fields to keep the chat payload small. The withheld value\nreads to a client agent as \"capability missing\" (the box-culvert \"geometry\nbuilder isn't firing\" scare) rather than \"pared for size\": ``drawing`` and\n``audit_trail`` appear as ``null``, ``boq_rows`` as an empty list ``[]``\n(its type forbids ``null``) — both indistinguishable from a genuine absent\nresult. This names the withheld fields and the exact mode that brings each\nback, so the value is unambiguous. Absent on the default ``full_json`` mode\n— nothing is withheld, nothing to point at.",
        +                "properties": {
        +                  "mode": {
        +                    "enum": [
        +                      "summary",
        +                      "material_schedule",
        +                      "boq",
        +                      "boq_with_backup"
        +                    ],
        +                    "type": "string"
        +                  },
        +                  "omitted_fields": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "minItems": 1,
        +                    "type": "array"
        +                  },
        +                  "retrieve_with": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "mode",
        +                  "omitted_fields",
        +                  "retrieve_with"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "rate_limit_remaining": {
        +            "anyOf": [
        +              {
        +                "minimum": 0,
        +                "type": "integer"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "request_id": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "schema_version": {
        +            "const": "1.0.0",
        +            "default": "1.0.0",
        +            "type": "string"
        +          },
        +          "scope_boundary": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        +                "properties": {
        +                  "not_in_scope": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "produced": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "recommended_companions": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "type": "string"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "produced",
        +                  "not_in_scope"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tier": {
        +            "enum": [
        +              "free",
        +              "paid"
        +            ],
        +            "type": "string"
        +          },
        +          "tier_upgrade": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        +                "properties": {
        +                  "available_tiers": {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        +                      "properties": {
        +                        "billing": {
        +                          "enum": [
        +                            "one_off",
        +                            "monthly",
        +                            "annual"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "currency": {
        +                          "enum": [
        +                            "GBP",
        +                            "SGD",
        +                            "EUR",
        +                            "USD",
        +                            "CAD",
        +                            "AUD",
        +                            "NZD",
        +                            "MYR"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "display_name": {
        +                          "type": "string"
        +                        },
        +                        "price_local": {
        +                          "type": "number"
        +                        },
        +                        "tier_slug": {
        +                          "enum": [
        +                            "7_day_pass",
        +                            "solo",
        +                            "studio",
        +                            "practice"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "unlock_summary": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "tier_slug",
        +                        "display_name",
        +                        "price_local",
        +                        "currency",
        +                        "billing",
        +                        "unlock_summary"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "current_tier": {
        +                    "const": "free",
        +                    "default": "free",
        +                    "type": "string"
        +                  },
        +                  "pass_credit": {
        +                    "anyOf": [
        +                      {
        +                        "additionalProperties": false,
        +                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        +                        "properties": {
        +                          "amount_local": {
        +                            "type": "number"
        +                          },
        +                          "applies_to": {
        +                            "const": "solo_first_month",
        +                            "default": "solo_first_month",
        +                            "type": "string"
        +                          },
        +                          "currency": {
        +                            "type": "string"
        +                          },
        +                          "redeemable_until": {
        +                            "type": "string"
        +                          }
        +                        },
        +                        "required": [
        +                          "amount_local",
        +                          "currency",
        +                          "redeemable_until"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "pricing_url": {
        +                    "default": "https://civilquants.com/pricing",
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "available_tiers"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tos_url": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "upgrade_hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "warranty_disclaimer": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          }
        +        },
        +        "required": [
        +          "request_id",
        +          "issued_at",
        +          "tier"
        +        ],
        +        "type": "object"
        +      },
        +      "data": {
        +        "default": null,
        +        "title": "Data"
        +      },
        +      "error": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        +            "properties": {
        +              "code": {
        +                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        +                "enum": [
        +                  "RATE_LIMIT_EXCEEDED",
        +                  "TIER_INSUFFICIENT",
        +                  "INVALID_INPUT",
        +                  "SCHEMA_VERSION_MISMATCH",
        +                  "SCHEMA_INVARIANT_VIOLATION",
        +                  "UPSTREAM_TIMEOUT",
        +                  "BACKEND_FAILURE",
        +                  "IP_BLOCKED",
        +                  "RESOURCE_NOT_FOUND",
        +                  "RENDER_FAILURE",
        +                  "OCR_LOW_CONFIDENCE",
        +                  "MANUAL_REVIEW_REQUIRED",
        +                  "ACCEPTANCE_REQUIRED",
        +                  "INVALID_TOKEN"
        +                ],
        +                "type": "string"
        +              },
        +              "details": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "message": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "recoverable": {
        +                "type": "boolean"
        +              },
        +              "retry_after_seconds": {
        +                "anyOf": [
        +                  {
        +                    "minimum": 0,
        +                    "type": "integer"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              }
        +            },
        +            "required": [
        +              "code",
        +              "message",
        +              "recoverable"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      }
        +    },
        +    "required": [
        +      "_meta"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedcompute_connection_to_existing2 fields changed
      • changedInput schema / properties / output_mode / enum
        Previous value: -[
        -  "summary",
        -  "boq",
        -  "boq_with_backup",
        -  "full_json"
        -]New value: +[
        +  "summary",
        +  "material_schedule",
        +  "boq",
        +  "boq_with_backup",
        +  "full_json"
        +]
      • changedOutput schema / properties / result / anyOf
        Previous value: -[
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "_meta": {
        -        "additionalProperties": false,
        -        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        -        "properties": {
        -          "deliverables": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        -                "properties": {
        -                  "docx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "dxf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "expires_at": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  },
        -                  "pdf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "xlsx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "expires_at"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "document_id": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "issued_at": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "output_mode": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Surfaces what a trimmed ``output_mode`` withheld from ``data``.\n\nA trimmed mode (``summary`` / ``boq`` / ``boq_with_backup``) withholds\nalready-computed fields to keep the chat payload small. The withheld value\nreads to a client agent as \"capability missing\" (the box-culvert \"geometry\nbuilder isn't firing\" scare) rather than \"pared for size\": ``drawing`` and\n``audit_trail`` appear as ``null``, ``boq_rows`` as an empty list ``[]``\n(its type forbids ``null``) — both indistinguishable from a genuine absent\nresult. This names the withheld fields and the exact mode that brings each\nback, so the value is unambiguous. Absent on the default ``full_json`` mode\n— nothing is withheld, nothing to point at.",
        -                "properties": {
        -                  "mode": {
        -                    "enum": [
        -                      "summary",
        -                      "boq",
        -                      "boq_with_backup"
        -                    ],
        -                    "type": "string"
        -                  },
        -                  "omitted_fields": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "minItems": 1,
        -                    "type": "array"
        -                  },
        -                  "retrieve_with": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "mode",
        -                  "omitted_fields",
        -                  "retrieve_with"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "rate_limit_remaining": {
        -            "anyOf": [
        -              {
        -                "minimum": 0,
        -                "type": "integer"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "request_id": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "schema_version": {
        -            "const": "1.0.0",
        -            "default": "1.0.0",
        -            "type": "string"
        -          },
        -          "scope_boundary": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        -                "properties": {
        -                  "not_in_scope": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "produced": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "recommended_companions": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "type": "string"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "produced",
        -                  "not_in_scope"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tier": {
        -            "enum": [
        -              "free",
        -              "paid"
        -            ],
        -            "type": "string"
        -          },
        -          "tier_upgrade": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        -                "properties": {
        -                  "available_tiers": {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        -                      "properties": {
        -                        "billing": {
        -                          "enum": [
        -                            "one_off",
        -                            "monthly",
        -                            "annual"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "currency": {
        -                          "enum": [
        -                            "GBP",
        -                            "SGD",
        -                            "EUR",
        -                            "USD",
        -                            "CAD",
        -                            "AUD",
        -                            "NZD",
        -                            "MYR"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "display_name": {
        -                          "type": "string"
        -                        },
        -                        "price_local": {
        -                          "type": "number"
        -                        },
        -                        "tier_slug": {
        -                          "enum": [
        -                            "7_day_pass",
        -                            "solo",
        -                            "studio",
        -                            "practice"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "unlock_summary": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "tier_slug",
        -                        "display_name",
        -                        "price_local",
        -                        "currency",
        -                        "billing",
        -                        "unlock_summary"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "current_tier": {
        -                    "const": "free",
        -                    "default": "free",
        -                    "type": "string"
        -                  },
        -                  "pass_credit": {
        -                    "anyOf": [
        -                      {
        -                        "additionalProperties": false,
        -                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        -                        "properties": {
        -                          "amount_local": {
        -                            "type": "number"
        -                          },
        -                          "applies_to": {
        -                            "const": "solo_first_month",
        -                            "default": "solo_first_month",
        -                            "type": "string"
        -                          },
        -                          "currency": {
        -                            "type": "string"
        -                          },
        -                          "redeemable_until": {
        -                            "type": "string"
        -                          }
        -                        },
        -                        "required": [
        -                          "amount_local",
        -                          "currency",
        -                          "redeemable_until"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "pricing_url": {
        -                    "default": "https://civilquants.com/pricing",
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "available_tiers"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tos_url": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "upgrade_hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "warranty_disclaimer": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          }
        -        },
        -        "required": [
        -          "request_id",
        -          "issued_at",
        -          "tier"
        -        ],
        -        "type": "object"
        -      },
        -      "data": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Schema § 1.1 — the typed payload returned inside `MCPResponse[ComputeResult]`.\n\nFree-tier responses omit `drawings` (the downloadable CAD artefact\npointers — the paid differentiator); the bridge enforces this. The\n`audit_trail` and the inline `drawing` preview are present on BOTH tiers\n(V1 ALIGN / 60th-fire D + C). `text_summary` is bounded to 2000 chars —\nkeeps the LLM-facing summary token-cheap and forces longer narrative into\nBoQ row descriptions where it belongs. `warnings` is the non-fatal\ngeometry advisory list (both tiers).",
        -            "properties": {
        -              "assembly_slug": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "audit_trail": {
        -                "anyOf": [
        -                  {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.7 — paid-tier audit-trail entry.\n\nOne entry per BoQ row; `boq_row_index` ties to the row position in\n`ComputeResult.boq_rows`. `derivation` is the human-readable formula\nwalk-through; `formula` is the optional formal expression.",
        -                      "properties": {
        -                        "boq_row_index": {
        -                          "minimum": 0,
        -                          "type": "integer"
        -                        },
        -                        "derivation": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "formula": {
        -                          "anyOf": [
        -                            {
        -                              "type": "string"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ],
        -                          "default": null
        -                        },
        -                        "id": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "parameters_referenced": {
        -                          "items": {
        -                            "type": "string"
        -                          },
        -                          "type": "array"
        -                        }
        -                      },
        -                      "required": [
        -                        "id",
        -                        "boq_row_index",
        -                        "derivation"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "boq_rows": {
        -                "items": {
        -                  "additionalProperties": false,
        -                  "description": "Schema § 1.3 — a single bill row in the requested standard's format.\n\n`description` is the non-verbatim functional description per spec § 13.9 /\n§ 15 invariant — NEVER reproduces a standard's verbatim clause text.\n`rate` / `amount` ship null because rates are commodity data the customer\nowns; the engine's job is the measurement, not the pricing.",
        -                  "properties": {
        -                    "amount": {
        -                      "anyOf": [
        -                        {
        -                          "type": "number"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "attribution": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "audit_id": {
        -                      "anyOf": [
        -                        {
        -                          "type": "string"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "description": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "quantity": {
        -                      "minimum": 0,
        -                      "type": "number"
        -                    },
        -                    "rate": {
        -                      "anyOf": [
        -                        {
        -                          "type": "number"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "unit": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "work_section": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    }
        -                  },
        -                  "required": [
        -                    "work_section",
        -                    "description",
        -                    "quantity",
        -                    "unit",
        -                    "attribution"
        -                  ],
        -                  "type": "object"
        -                },
        -                "type": "array"
        -              },
        -              "drawing": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": false,
        -                    "description": "Schema § 1.6a — inline server-rendered SVG preview of the geometry.\n\nThe MCP mirror of the web ``/compute`` response's ``drawing`` field\n(``api.schemas.compute.DrawingRef``): the same on-screen dimensioned\ndrawing both tiers see in the workspace, surfaced on the MCP compute\nresponse so a chat client can render it inline (60th-fire item C). This\nis the on-screen preview — present on BOTH tiers per the free/paid\nboundary; the downloadable CAD artefacts (DXF / dimensioned PDF) remain\nthe paid differentiator via the export tools.\n\nDefined here rather than importing ``DrawingRef`` because the web\n``schemas`` package imports back into this module (``schemas.render``),\nso reusing it would create an import cycle — the MCP wire contract keeps\nits own copy, the same pattern as ``BoQRow`` / ``DrawingReference``.",
        -                    "properties": {
        -                      "entity_count": {
        -                        "minimum": 0,
        -                        "type": "integer"
        -                      },
        -                      "svg_b64": {
        -                        "minLength": 1,
        -                        "type": "string"
        -                      },
        -                      "unit_of_drawing": {
        -                        "const": "m",
        -                        "default": "m",
        -                        "type": "string"
        -                      },
        -                      "viewbox_height": {
        -                        "exclusiveMinimum": 0,
        -                        "type": "number"
        -                      },
        -                      "viewbox_width": {
        -                        "exclusiveMinimum": 0,
        -                        "type": "number"
        -                      },
        -                      "viewbox_x": {
        -                        "type": "number"
        -                      },
        -                      "viewbox_y": {
        -                        "type": "number"
        -                      }
        -                    },
        -                    "required": [
        -                      "svg_b64",
        -                      "viewbox_x",
        -                      "viewbox_y",
        -                      "viewbox_width",
        -                      "viewbox_height",
        -                      "entity_count"
        -                    ],
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "drawings": {
        -                "anyOf": [
        -                  {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.6 — paid-tier drawing artefact pointer.\n\n`url` is an R2-signed URL; expiry is carried in `_meta.deliverables.expires_at`\non the envelope (not duplicated here). `layers` is DXF-only; PDF/SVG\ncallers omit it.",
        -                      "properties": {
        -                        "drawing_type": {
        -                          "enum": [
        -                            "section",
        -                            "plan",
        -                            "elevation",
        -                            "isometric",
        -                            "detail"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "format": {
        -                          "enum": [
        -                            "DXF",
        -                            "PDF",
        -                            "SVG"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "layers": {
        -                          "anyOf": [
        -                            {
        -                              "items": {
        -                                "type": "string"
        -                              },
        -                              "type": "array"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ],
        -                          "default": null
        -                        },
        -                        "scale": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "sheet_size": {
        -                          "enum": [
        -                            "A1",
        -                            "A2",
        -                            "A3",
        -                            "A4"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "url": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "drawing_type",
        -                        "format",
        -                        "url",
        -                        "sheet_size",
        -                        "scale"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "parameters_used": {
        -                "additionalProperties": false,
        -                "description": "Schema § 1.2 — the parameter snapshot the engine actually used.\n\nSplits user-supplied values from engine defaults so customers can see\nwhich numbers came from them and which the engine filled in. Every\ndefaulted parameter SHOULD have a corresponding entry in `assumptions`\n— the bridge layer enforces this when wrapping engine output.",
        -                "properties": {
        -                  "assumptions": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "engine_defaults": {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  "user_supplied": {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  }
        -                },
        -                "type": "object"
        -              },
        -              "standard": {
        -                "enum": [
        -                  "CESMM4",
        -                  "NRM2",
        -                  "SMM7",
        -                  "MMHW"
        -                ],
        -                "type": "string"
        -              },
        -              "text_summary": {
        -                "maxLength": 2000,
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "totals_summary": {
        -                "additionalProperties": false,
        -                "description": "Schema § 1.4 — totals_summary as a typed wrapper around the free-form dict.\n\nWire shape is a flat object (`{\"concrete_m3\": {...}, \"rebar_t\": {...}}`).\nWe model it as `RootModel`-equivalent via `model_config(extra=\"allow\")`\n+ a single `__root__`-style `entries` dict. Pydantic v2 recommends\n`RootModel` for free-form roots; using a wrapper class keeps the import\nsurface uniform with the rest of this module.",
        -                "properties": {
        -                  "entries": {
        -                    "additionalProperties": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.4 — single material/work-class total entry.",
        -                      "properties": {
        -                        "quantity": {
        -                          "minimum": 0,
        -                          "type": "number"
        -                        },
        -                        "unit": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "quantity",
        -                        "unit"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "object"
        -                  }
        -                },
        -                "type": "object"
        -              },
        -              "warnings": {
        -                "items": {
        -                  "additionalProperties": false,
        -                  "description": "Schema § 1.8 — a non-fatal geometry advisory (56th-fire T2).\n\nThe wire projection of the engine's `core.GeometryWarning`. Advisory only:\na warning NEVER changes a measured quantity — it flags geometry that is\nvalid but likely a mistake (e.g. a stale dependent-height default). Present\non BOTH tiers — a correctness/safety signal, not a paid feature.",
        -                  "properties": {
        -                    "affected_params": {
        -                      "items": {
        -                        "type": "string"
        -                      },
        -                      "type": "array"
        -                    },
        -                    "code": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "detail": {
        -                      "additionalProperties": {
        -                        "type": "number"
        -                      },
        -                      "type": "object"
        -                    },
        -                    "message": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "severity": {
        -                      "enum": [
        -                        "info",
        -                        "advisory",
        -                        "caution"
        -                      ],
        -                      "type": "string"
        -                    }
        -                  },
        -                  "required": [
        -                    "code",
        -                    "severity",
        -                    "message"
        -                  ],
        -                  "type": "object"
        -                },
        -                "type": "array"
        -              }
        -            },
        -            "required": [
        -              "assembly_slug",
        -              "standard",
        -              "parameters_used",
        -              "boq_rows",
        -              "totals_summary",
        -              "text_summary"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      },
        -      "error": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        -            "properties": {
        -              "code": {
        -                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        -                "enum": [
        -                  "RATE_LIMIT_EXCEEDED",
        -                  "TIER_INSUFFICIENT",
        -                  "INVALID_INPUT",
        -                  "SCHEMA_VERSION_MISMATCH",
        -                  "SCHEMA_INVARIANT_VIOLATION",
        -                  "UPSTREAM_TIMEOUT",
        -                  "BACKEND_FAILURE",
        -                  "IP_BLOCKED",
        -                  "RESOURCE_NOT_FOUND",
        -                  "RENDER_FAILURE",
        -                  "OCR_LOW_CONFIDENCE",
        -                  "MANUAL_REVIEW_REQUIRED",
        -                  "ACCEPTANCE_REQUIRED",
        -                  "INVALID_TOKEN"
        -                ],
        -                "type": "string"
        -              },
        -              "details": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "message": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "recoverable": {
        -                "type": "boolean"
        -              },
        -              "retry_after_seconds": {
        -                "anyOf": [
        -                  {
        -                    "minimum": 0,
        -                    "type": "integer"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              }
        -            },
        -            "required": [
        -              "code",
        -              "message",
        -              "recoverable"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      }
        -    },
        -    "required": [
        -      "_meta"
        -    ],
        -    "type": "object"
        -  },
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "_meta": {
        -        "additionalProperties": false,
        -        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        -        "properties": {
        -          "deliverables": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        -                "properties": {
        -                  "docx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "dxf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "expires_at": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  },
        -                  "pdf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "xlsx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "expires_at"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "document_id": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "issued_at": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "output_mode": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Surfaces what a trimmed ``output_mode`` withheld from ``data``.\n\nA trimmed mode (``summary`` / ``boq`` / ``boq_with_backup``) withholds\nalready-computed fields to keep the chat payload small. The withheld value\nreads to a client agent as \"capability missing\" (the box-culvert \"geometry\nbuilder isn't firing\" scare) rather than \"pared for size\": ``drawing`` and\n``audit_trail`` appear as ``null``, ``boq_rows`` as an empty list ``[]``\n(its type forbids ``null``) — both indistinguishable from a genuine absent\nresult. This names the withheld fields and the exact mode that brings each\nback, so the value is unambiguous. Absent on the default ``full_json`` mode\n— nothing is withheld, nothing to point at.",
        -                "properties": {
        -                  "mode": {
        -                    "enum": [
        -                      "summary",
        -                      "boq",
        -                      "boq_with_backup"
        -                    ],
        -                    "type": "string"
        -                  },
        -                  "omitted_fields": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "minItems": 1,
        -                    "type": "array"
        -                  },
        -                  "retrieve_with": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "mode",
        -                  "omitted_fields",
        -                  "retrieve_with"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "rate_limit_remaining": {
        -            "anyOf": [
        -              {
        -                "minimum": 0,
        -                "type": "integer"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "request_id": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "schema_version": {
        -            "const": "1.0.0",
        -            "default": "1.0.0",
        -            "type": "string"
        -          },
        -          "scope_boundary": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        -                "properties": {
        -                  "not_in_scope": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "produced": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "recommended_companions": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "type": "string"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "produced",
        -                  "not_in_scope"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tier": {
        -            "enum": [
        -              "free",
        -              "paid"
        -            ],
        -            "type": "string"
        -          },
        -          "tier_upgrade": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        -                "properties": {
        -                  "available_tiers": {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        -                      "properties": {
        -                        "billing": {
        -                          "enum": [
        -                            "one_off",
        -                            "monthly",
        -                            "annual"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "currency": {
        -                          "enum": [
        -                            "GBP",
        -                            "SGD",
        -                            "EUR",
        -                            "USD",
        -                            "CAD",
        -                            "AUD",
        -                            "NZD",
        -                            "MYR"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "display_name": {
        -                          "type": "string"
        -                        },
        -                        "price_local": {
        -                          "type": "number"
        -                        },
        -                        "tier_slug": {
        -                          "enum": [
        -                            "7_day_pass",
        -                            "solo",
        -                            "studio",
        -                            "practice"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "unlock_summary": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "tier_slug",
        -                        "display_name",
        -                        "price_local",
        -                        "currency",
        -                        "billing",
        -                        "unlock_summary"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "current_tier": {
        -                    "const": "free",
        -                    "default": "free",
        -                    "type": "string"
        -                  },
        -                  "pass_credit": {
        -                    "anyOf": [
        -                      {
        -                        "additionalProperties": false,
        -                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        -                        "properties": {
        -                          "amount_local": {
        -                            "type": "number"
        -                          },
        -                          "applies_to": {
        -                            "const": "solo_first_month",
        -                            "default": "solo_first_month",
        -                            "type": "string"
        -                          },
        -                          "currency": {
        -                            "type": "string"
        -                          },
        -                          "redeemable_until": {
        -                            "type": "string"
        -                          }
        -                        },
        -                        "required": [
        -                          "amount_local",
        -                          "currency",
        -                          "redeemable_until"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "pricing_url": {
        -                    "default": "https://civilquants.com/pricing",
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "available_tiers"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tos_url": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "upgrade_hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "warranty_disclaimer": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          }
        -        },
        -        "required": [
        -          "request_id",
        -          "issued_at",
        -          "tier"
        -        ],
        -        "type": "object"
        -      },
        -      "data": {
        -        "default": null,
        -        "title": "Data"
        -      },
        -      "error": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        -            "properties": {
        -              "code": {
        -                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        -                "enum": [
        -                  "RATE_LIMIT_EXCEEDED",
        -                  "TIER_INSUFFICIENT",
        -                  "INVALID_INPUT",
        -                  "SCHEMA_VERSION_MISMATCH",
        -                  "SCHEMA_INVARIANT_VIOLATION",
        -                  "UPSTREAM_TIMEOUT",
        -                  "BACKEND_FAILURE",
        -                  "IP_BLOCKED",
        -                  "RESOURCE_NOT_FOUND",
        -                  "RENDER_FAILURE",
        -                  "OCR_LOW_CONFIDENCE",
        -                  "MANUAL_REVIEW_REQUIRED",
        -                  "ACCEPTANCE_REQUIRED",
        -                  "INVALID_TOKEN"
        -                ],
        -                "type": "string"
        -              },
        -              "details": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "message": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "recoverable": {
        -                "type": "boolean"
        -              },
        -              "retry_after_seconds": {
        -                "anyOf": [
        -                  {
        -                    "minimum": 0,
        -                    "type": "integer"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              }
        -            },
        -            "required": [
        -              "code",
        -              "message",
        -              "recoverable"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      }
        -    },
        -    "required": [
        -      "_meta"
        -    ],
        -    "type": "object"
        -  }
        -]New value: +[
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "_meta": {
        +        "additionalProperties": false,
        +        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        +        "properties": {
        +          "deliverables": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        +                "properties": {
        +                  "docx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "dxf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "expires_at": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  },
        +                  "pdf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "xlsx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "expires_at"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "document_id": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "issued_at": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "output_mode": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Surfaces what a trimmed ``output_mode`` withheld from ``data``.\n\nA trimmed mode (``summary`` / ``material_schedule`` / ``boq`` /\n``boq_with_backup``) withholds\nalready-computed fields to keep the chat payload small. The withheld value\nreads to a client agent as \"capability missing\" (the box-culvert \"geometry\nbuilder isn't firing\" scare) rather than \"pared for size\": ``drawing`` and\n``audit_trail`` appear as ``null``, ``boq_rows`` as an empty list ``[]``\n(its type forbids ``null``) — both indistinguishable from a genuine absent\nresult. This names the withheld fields and the exact mode that brings each\nback, so the value is unambiguous. Absent on the default ``full_json`` mode\n— nothing is withheld, nothing to point at.",
        +                "properties": {
        +                  "mode": {
        +                    "enum": [
        +                      "summary",
        +                      "material_schedule",
        +                      "boq",
        +                      "boq_with_backup"
        +                    ],
        +                    "type": "string"
        +                  },
        +                  "omitted_fields": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "minItems": 1,
        +                    "type": "array"
        +                  },
        +                  "retrieve_with": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "mode",
        +                  "omitted_fields",
        +                  "retrieve_with"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "rate_limit_remaining": {
        +            "anyOf": [
        +              {
        +                "minimum": 0,
        +                "type": "integer"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "request_id": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "schema_version": {
        +            "const": "1.0.0",
        +            "default": "1.0.0",
        +            "type": "string"
        +          },
        +          "scope_boundary": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        +                "properties": {
        +                  "not_in_scope": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "produced": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "recommended_companions": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "type": "string"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "produced",
        +                  "not_in_scope"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tier": {
        +            "enum": [
        +              "free",
        +              "paid"
        +            ],
        +            "type": "string"
        +          },
        +          "tier_upgrade": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        +                "properties": {
        +                  "available_tiers": {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        +                      "properties": {
        +                        "billing": {
        +                          "enum": [
        +                            "one_off",
        +                            "monthly",
        +                            "annual"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "currency": {
        +                          "enum": [
        +                            "GBP",
        +                            "SGD",
        +                            "EUR",
        +                            "USD",
        +                            "CAD",
        +                            "AUD",
        +                            "NZD",
        +                            "MYR"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "display_name": {
        +                          "type": "string"
        +                        },
        +                        "price_local": {
        +                          "type": "number"
        +                        },
        +                        "tier_slug": {
        +                          "enum": [
        +                            "7_day_pass",
        +                            "solo",
        +                            "studio",
        +                            "practice"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "unlock_summary": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "tier_slug",
        +                        "display_name",
        +                        "price_local",
        +                        "currency",
        +                        "billing",
        +                        "unlock_summary"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "current_tier": {
        +                    "const": "free",
        +                    "default": "free",
        +                    "type": "string"
        +                  },
        +                  "pass_credit": {
        +                    "anyOf": [
        +                      {
        +                        "additionalProperties": false,
        +                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        +                        "properties": {
        +                          "amount_local": {
        +                            "type": "number"
        +                          },
        +                          "applies_to": {
        +                            "const": "solo_first_month",
        +                            "default": "solo_first_month",
        +                            "type": "string"
        +                          },
        +                          "currency": {
        +                            "type": "string"
        +                          },
        +                          "redeemable_until": {
        +                            "type": "string"
        +                          }
        +                        },
        +                        "required": [
        +                          "amount_local",
        +                          "currency",
        +                          "redeemable_until"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "pricing_url": {
        +                    "default": "https://civilquants.com/pricing",
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "available_tiers"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tos_url": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "upgrade_hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "warranty_disclaimer": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          }
        +        },
        +        "required": [
        +          "request_id",
        +          "issued_at",
        +          "tier"
        +        ],
        +        "type": "object"
        +      },
        +      "data": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Schema § 1.1 — the typed payload returned inside `MCPResponse[ComputeResult]`.\n\nFree-tier responses omit `drawings` (the downloadable CAD artefact\npointers — the paid differentiator); the bridge enforces this. The\n`audit_trail` and the inline `drawing` preview are present on BOTH tiers\n(V1 ALIGN / 60th-fire D + C). `text_summary` is bounded to 2000 chars —\nkeeps the LLM-facing summary token-cheap and forces longer narrative into\nBoQ row descriptions where it belongs. `warnings` is the non-fatal\ngeometry advisory list (both tiers).",
        +            "properties": {
        +              "assembly_slug": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "audit_trail": {
        +                "anyOf": [
        +                  {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.7 — paid-tier audit-trail entry.\n\nOne entry per BoQ row; `boq_row_index` ties to the row position in\n`ComputeResult.boq_rows`. `derivation` is the human-readable formula\nwalk-through; `formula` is the optional formal expression.",
        +                      "properties": {
        +                        "boq_row_index": {
        +                          "minimum": 0,
        +                          "type": "integer"
        +                        },
        +                        "derivation": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "formula": {
        +                          "anyOf": [
        +                            {
        +                              "type": "string"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ],
        +                          "default": null
        +                        },
        +                        "id": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "parameters_referenced": {
        +                          "items": {
        +                            "type": "string"
        +                          },
        +                          "type": "array"
        +                        }
        +                      },
        +                      "required": [
        +                        "id",
        +                        "boq_row_index",
        +                        "derivation"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "boq_rows": {
        +                "items": {
        +                  "additionalProperties": false,
        +                  "description": "Schema § 1.3 — a single bill row in the requested standard's format.\n\n`description` is the non-verbatim functional description per spec § 13.9 /\n§ 15 invariant — NEVER reproduces a standard's verbatim clause text.\n`rate` / `amount` ship null because rates are commodity data the customer\nowns; the engine's job is the measurement, not the pricing.",
        +                  "properties": {
        +                    "amount": {
        +                      "anyOf": [
        +                        {
        +                          "type": "number"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "attribution": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "audit_id": {
        +                      "anyOf": [
        +                        {
        +                          "type": "string"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "description": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "quantity": {
        +                      "minimum": 0,
        +                      "type": "number"
        +                    },
        +                    "rate": {
        +                      "anyOf": [
        +                        {
        +                          "type": "number"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "unit": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "work_section": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    }
        +                  },
        +                  "required": [
        +                    "work_section",
        +                    "description",
        +                    "quantity",
        +                    "unit",
        +                    "attribution"
        +                  ],
        +                  "type": "object"
        +                },
        +                "type": "array"
        +              },
        +              "drawing": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": false,
        +                    "description": "Schema § 1.6a — inline server-rendered SVG preview of the geometry.\n\nThe MCP mirror of the web ``/compute`` response's ``drawing`` field\n(``api.schemas.compute.DrawingRef``): the same on-screen dimensioned\ndrawing both tiers see in the workspace, surfaced on the MCP compute\nresponse so a chat client can render it inline (60th-fire item C). This\nis the on-screen preview — present on BOTH tiers per the free/paid\nboundary; the downloadable CAD artefacts (DXF / dimensioned PDF) remain\nthe paid differentiator via the export tools.\n\nDefined here rather than importing ``DrawingRef`` because the web\n``schemas`` package imports back into this module (``schemas.render``),\nso reusing it would create an import cycle — the MCP wire contract keeps\nits own copy, the same pattern as ``BoQRow`` / ``DrawingReference``.",
        +                    "properties": {
        +                      "entity_count": {
        +                        "minimum": 0,
        +                        "type": "integer"
        +                      },
        +                      "svg_b64": {
        +                        "minLength": 1,
        +                        "type": "string"
        +                      },
        +                      "unit_of_drawing": {
        +                        "const": "m",
        +                        "default": "m",
        +                        "type": "string"
        +                      },
        +                      "viewbox_height": {
        +                        "exclusiveMinimum": 0,
        +                        "type": "number"
        +                      },
        +                      "viewbox_width": {
        +                        "exclusiveMinimum": 0,
        +                        "type": "number"
        +                      },
        +                      "viewbox_x": {
        +                        "type": "number"
        +                      },
        +                      "viewbox_y": {
        +                        "type": "number"
        +                      }
        +                    },
        +                    "required": [
        +                      "svg_b64",
        +                      "viewbox_x",
        +                      "viewbox_y",
        +                      "viewbox_width",
        +                      "viewbox_height",
        +                      "entity_count"
        +                    ],
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "drawings": {
        +                "anyOf": [
        +                  {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.6 — paid-tier drawing artefact pointer.\n\n`url` is an R2-signed URL; expiry is carried in `_meta.deliverables.expires_at`\non the envelope (not duplicated here). `layers` is DXF-only; PDF/SVG\ncallers omit it.",
        +                      "properties": {
        +                        "drawing_type": {
        +                          "enum": [
        +                            "section",
        +                            "plan",
        +                            "elevation",
        +                            "isometric",
        +                            "detail"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "format": {
        +                          "enum": [
        +                            "DXF",
        +                            "PDF",
        +                            "SVG"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "layers": {
        +                          "anyOf": [
        +                            {
        +                              "items": {
        +                                "type": "string"
        +                              },
        +                              "type": "array"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ],
        +                          "default": null
        +                        },
        +                        "scale": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "sheet_size": {
        +                          "enum": [
        +                            "A1",
        +                            "A2",
        +                            "A3",
        +                            "A4"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "url": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "drawing_type",
        +                        "format",
        +                        "url",
        +                        "sheet_size",
        +                        "scale"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "parameters_used": {
        +                "additionalProperties": false,
        +                "description": "Schema § 1.2 — the parameter snapshot the engine actually used.\n\nSplits user-supplied values from engine defaults so customers can see\nwhich numbers came from them and which the engine filled in. Every\ndefaulted parameter SHOULD have a corresponding entry in `assumptions`\n— the bridge layer enforces this when wrapping engine output.",
        +                "properties": {
        +                  "assumptions": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "engine_defaults": {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  "user_supplied": {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  }
        +                },
        +                "type": "object"
        +              },
        +              "standard": {
        +                "enum": [
        +                  "CESMM4",
        +                  "NRM2",
        +                  "SMM7",
        +                  "MMHW"
        +                ],
        +                "type": "string"
        +              },
        +              "text_summary": {
        +                "maxLength": 2000,
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "totals_summary": {
        +                "additionalProperties": false,
        +                "description": "Schema § 1.4 — totals_summary as a typed wrapper around the free-form dict.\n\nWire shape is a flat object (`{\"concrete_m3\": {...}, \"rebar_t\": {...}}`).\nWe model it as `RootModel`-equivalent via `model_config(extra=\"allow\")`\n+ a single `__root__`-style `entries` dict. Pydantic v2 recommends\n`RootModel` for free-form roots; using a wrapper class keeps the import\nsurface uniform with the rest of this module.",
        +                "properties": {
        +                  "entries": {
        +                    "additionalProperties": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.4 — single material/work-class total entry.",
        +                      "properties": {
        +                        "quantity": {
        +                          "minimum": 0,
        +                          "type": "number"
        +                        },
        +                        "unit": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "quantity",
        +                        "unit"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "object"
        +                  }
        +                },
        +                "type": "object"
        +              },
        +              "warnings": {
        +                "items": {
        +                  "additionalProperties": false,
        +                  "description": "Schema § 1.8 — a non-fatal geometry advisory (56th-fire T2).\n\nThe wire projection of the engine's `core.GeometryWarning`. Advisory only:\na warning NEVER changes a measured quantity — it flags geometry that is\nvalid but likely a mistake (e.g. a stale dependent-height default). Present\non BOTH tiers — a correctness/safety signal, not a paid feature.",
        +                  "properties": {
        +                    "affected_params": {
        +                      "items": {
        +                        "type": "string"
        +                      },
        +                      "type": "array"
        +                    },
        +                    "code": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "detail": {
        +                      "additionalProperties": {
        +                        "type": "number"
        +                      },
        +                      "type": "object"
        +                    },
        +                    "message": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "severity": {
        +                      "enum": [
        +                        "info",
        +                        "advisory",
        +                        "caution"
        +                      ],
        +                      "type": "string"
        +                    }
        +                  },
        +                  "required": [
        +                    "code",
        +                    "severity",
        +                    "message"
        +                  ],
        +                  "type": "object"
        +                },
        +                "type": "array"
        +              }
        +            },
        +            "required": [
        +              "assembly_slug",
        +              "standard",
        +              "parameters_used",
        +              "boq_rows",
        +              "totals_summary",
        +              "text_summary"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      },
        +      "error": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        +            "properties": {
        +              "code": {
        +                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        +                "enum": [
        +                  "RATE_LIMIT_EXCEEDED",
        +                  "TIER_INSUFFICIENT",
        +                  "INVALID_INPUT",
        +                  "SCHEMA_VERSION_MISMATCH",
        +                  "SCHEMA_INVARIANT_VIOLATION",
        +                  "UPSTREAM_TIMEOUT",
        +                  "BACKEND_FAILURE",
        +                  "IP_BLOCKED",
        +                  "RESOURCE_NOT_FOUND",
        +                  "RENDER_FAILURE",
        +                  "OCR_LOW_CONFIDENCE",
        +                  "MANUAL_REVIEW_REQUIRED",
        +                  "ACCEPTANCE_REQUIRED",
        +                  "INVALID_TOKEN"
        +                ],
        +                "type": "string"
        +              },
        +              "details": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "message": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "recoverable": {
        +                "type": "boolean"
        +              },
        +              "retry_after_seconds": {
        +                "anyOf": [
        +                  {
        +                    "minimum": 0,
        +                    "type": "integer"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              }
        +            },
        +            "required": [
        +              "code",
        +              "message",
        +              "recoverable"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      }
        +    },
        +    "required": [
        +      "_meta"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "_meta": {
        +        "additionalProperties": false,
        +        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        +        "properties": {
        +          "deliverables": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        +                "properties": {
        +                  "docx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "dxf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "expires_at": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  },
        +                  "pdf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "xlsx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "expires_at"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "document_id": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "issued_at": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "output_mode": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Surfaces what a trimmed ``output_mode`` withheld from ``data``.\n\nA trimmed mode (``summary`` / ``material_schedule`` / ``boq`` /\n``boq_with_backup``) withholds\nalready-computed fields to keep the chat payload small. The withheld value\nreads to a client agent as \"capability missing\" (the box-culvert \"geometry\nbuilder isn't firing\" scare) rather than \"pared for size\": ``drawing`` and\n``audit_trail`` appear as ``null``, ``boq_rows`` as an empty list ``[]``\n(its type forbids ``null``) — both indistinguishable from a genuine absent\nresult. This names the withheld fields and the exact mode that brings each\nback, so the value is unambiguous. Absent on the default ``full_json`` mode\n— nothing is withheld, nothing to point at.",
        +                "properties": {
        +                  "mode": {
        +                    "enum": [
        +                      "summary",
        +                      "material_schedule",
        +                      "boq",
        +                      "boq_with_backup"
        +                    ],
        +                    "type": "string"
        +                  },
        +                  "omitted_fields": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "minItems": 1,
        +                    "type": "array"
        +                  },
        +                  "retrieve_with": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "mode",
        +                  "omitted_fields",
        +                  "retrieve_with"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "rate_limit_remaining": {
        +            "anyOf": [
        +              {
        +                "minimum": 0,
        +                "type": "integer"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "request_id": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "schema_version": {
        +            "const": "1.0.0",
        +            "default": "1.0.0",
        +            "type": "string"
        +          },
        +          "scope_boundary": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        +                "properties": {
        +                  "not_in_scope": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "produced": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "recommended_companions": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "type": "string"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "produced",
        +                  "not_in_scope"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tier": {
        +            "enum": [
        +              "free",
        +              "paid"
        +            ],
        +            "type": "string"
        +          },
        +          "tier_upgrade": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        +                "properties": {
        +                  "available_tiers": {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        +                      "properties": {
        +                        "billing": {
        +                          "enum": [
        +                            "one_off",
        +                            "monthly",
        +                            "annual"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "currency": {
        +                          "enum": [
        +                            "GBP",
        +                            "SGD",
        +                            "EUR",
        +                            "USD",
        +                            "CAD",
        +                            "AUD",
        +                            "NZD",
        +                            "MYR"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "display_name": {
        +                          "type": "string"
        +                        },
        +                        "price_local": {
        +                          "type": "number"
        +                        },
        +                        "tier_slug": {
        +                          "enum": [
        +                            "7_day_pass",
        +                            "solo",
        +                            "studio",
        +                            "practice"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "unlock_summary": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "tier_slug",
        +                        "display_name",
        +                        "price_local",
        +                        "currency",
        +                        "billing",
        +                        "unlock_summary"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "current_tier": {
        +                    "const": "free",
        +                    "default": "free",
        +                    "type": "string"
        +                  },
        +                  "pass_credit": {
        +                    "anyOf": [
        +                      {
        +                        "additionalProperties": false,
        +                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        +                        "properties": {
        +                          "amount_local": {
        +                            "type": "number"
        +                          },
        +                          "applies_to": {
        +                            "const": "solo_first_month",
        +                            "default": "solo_first_month",
        +                            "type": "string"
        +                          },
        +                          "currency": {
        +                            "type": "string"
        +                          },
        +                          "redeemable_until": {
        +                            "type": "string"
        +                          }
        +                        },
        +                        "required": [
        +                          "amount_local",
        +                          "currency",
        +                          "redeemable_until"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "pricing_url": {
        +                    "default": "https://civilquants.com/pricing",
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "available_tiers"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tos_url": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "upgrade_hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "warranty_disclaimer": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          }
        +        },
        +        "required": [
        +          "request_id",
        +          "issued_at",
        +          "tier"
        +        ],
        +        "type": "object"
        +      },
        +      "data": {
        +        "default": null,
        +        "title": "Data"
        +      },
        +      "error": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        +            "properties": {
        +              "code": {
        +                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        +                "enum": [
        +                  "RATE_LIMIT_EXCEEDED",
        +                  "TIER_INSUFFICIENT",
        +                  "INVALID_INPUT",
        +                  "SCHEMA_VERSION_MISMATCH",
        +                  "SCHEMA_INVARIANT_VIOLATION",
        +                  "UPSTREAM_TIMEOUT",
        +                  "BACKEND_FAILURE",
        +                  "IP_BLOCKED",
        +                  "RESOURCE_NOT_FOUND",
        +                  "RENDER_FAILURE",
        +                  "OCR_LOW_CONFIDENCE",
        +                  "MANUAL_REVIEW_REQUIRED",
        +                  "ACCEPTANCE_REQUIRED",
        +                  "INVALID_TOKEN"
        +                ],
        +                "type": "string"
        +              },
        +              "details": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "message": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "recoverable": {
        +                "type": "boolean"
        +              },
        +              "retry_after_seconds": {
        +                "anyOf": [
        +                  {
        +                    "minimum": 0,
        +                    "type": "integer"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              }
        +            },
        +            "required": [
        +              "code",
        +              "message",
        +              "recoverable"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      }
        +    },
        +    "required": [
        +      "_meta"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedcompute_counterfort_wall2 fields changed
      • changedInput schema / properties / output_mode / enum
        Previous value: -[
        -  "summary",
        -  "boq",
        -  "boq_with_backup",
        -  "full_json"
        -]New value: +[
        +  "summary",
        +  "material_schedule",
        +  "boq",
        +  "boq_with_backup",
        +  "full_json"
        +]
      • changedOutput schema / properties / result / anyOf
        Previous value: -[
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "_meta": {
        -        "additionalProperties": false,
        -        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        -        "properties": {
        -          "deliverables": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        -                "properties": {
        -                  "docx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "dxf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "expires_at": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  },
        -                  "pdf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "xlsx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "expires_at"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "document_id": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "issued_at": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "output_mode": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Surfaces what a trimmed ``output_mode`` withheld from ``data``.\n\nA trimmed mode (``summary`` / ``boq`` / ``boq_with_backup``) withholds\nalready-computed fields to keep the chat payload small. The withheld value\nreads to a client agent as \"capability missing\" (the box-culvert \"geometry\nbuilder isn't firing\" scare) rather than \"pared for size\": ``drawing`` and\n``audit_trail`` appear as ``null``, ``boq_rows`` as an empty list ``[]``\n(its type forbids ``null``) — both indistinguishable from a genuine absent\nresult. This names the withheld fields and the exact mode that brings each\nback, so the value is unambiguous. Absent on the default ``full_json`` mode\n— nothing is withheld, nothing to point at.",
        -                "properties": {
        -                  "mode": {
        -                    "enum": [
        -                      "summary",
        -                      "boq",
        -                      "boq_with_backup"
        -                    ],
        -                    "type": "string"
        -                  },
        -                  "omitted_fields": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "minItems": 1,
        -                    "type": "array"
        -                  },
        -                  "retrieve_with": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "mode",
        -                  "omitted_fields",
        -                  "retrieve_with"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "rate_limit_remaining": {
        -            "anyOf": [
        -              {
        -                "minimum": 0,
        -                "type": "integer"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "request_id": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "schema_version": {
        -            "const": "1.0.0",
        -            "default": "1.0.0",
        -            "type": "string"
        -          },
        -          "scope_boundary": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        -                "properties": {
        -                  "not_in_scope": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "produced": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "recommended_companions": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "type": "string"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "produced",
        -                  "not_in_scope"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tier": {
        -            "enum": [
        -              "free",
        -              "paid"
        -            ],
        -            "type": "string"
        -          },
        -          "tier_upgrade": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        -                "properties": {
        -                  "available_tiers": {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        -                      "properties": {
        -                        "billing": {
        -                          "enum": [
        -                            "one_off",
        -                            "monthly",
        -                            "annual"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "currency": {
        -                          "enum": [
        -                            "GBP",
        -                            "SGD",
        -                            "EUR",
        -                            "USD",
        -                            "CAD",
        -                            "AUD",
        -                            "NZD",
        -                            "MYR"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "display_name": {
        -                          "type": "string"
        -                        },
        -                        "price_local": {
        -                          "type": "number"
        -                        },
        -                        "tier_slug": {
        -                          "enum": [
        -                            "7_day_pass",
        -                            "solo",
        -                            "studio",
        -                            "practice"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "unlock_summary": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "tier_slug",
        -                        "display_name",
        -                        "price_local",
        -                        "currency",
        -                        "billing",
        -                        "unlock_summary"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "current_tier": {
        -                    "const": "free",
        -                    "default": "free",
        -                    "type": "string"
        -                  },
        -                  "pass_credit": {
        -                    "anyOf": [
        -                      {
        -                        "additionalProperties": false,
        -                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        -                        "properties": {
        -                          "amount_local": {
        -                            "type": "number"
        -                          },
        -                          "applies_to": {
        -                            "const": "solo_first_month",
        -                            "default": "solo_first_month",
        -                            "type": "string"
        -                          },
        -                          "currency": {
        -                            "type": "string"
        -                          },
        -                          "redeemable_until": {
        -                            "type": "string"
        -                          }
        -                        },
        -                        "required": [
        -                          "amount_local",
        -                          "currency",
        -                          "redeemable_until"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "pricing_url": {
        -                    "default": "https://civilquants.com/pricing",
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "available_tiers"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tos_url": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "upgrade_hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "warranty_disclaimer": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          }
        -        },
        -        "required": [
        -          "request_id",
        -          "issued_at",
        -          "tier"
        -        ],
        -        "type": "object"
        -      },
        -      "data": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Schema § 1.1 — the typed payload returned inside `MCPResponse[ComputeResult]`.\n\nFree-tier responses omit `drawings` (the downloadable CAD artefact\npointers — the paid differentiator); the bridge enforces this. The\n`audit_trail` and the inline `drawing` preview are present on BOTH tiers\n(V1 ALIGN / 60th-fire D + C). `text_summary` is bounded to 2000 chars —\nkeeps the LLM-facing summary token-cheap and forces longer narrative into\nBoQ row descriptions where it belongs. `warnings` is the non-fatal\ngeometry advisory list (both tiers).",
        -            "properties": {
        -              "assembly_slug": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "audit_trail": {
        -                "anyOf": [
        -                  {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.7 — paid-tier audit-trail entry.\n\nOne entry per BoQ row; `boq_row_index` ties to the row position in\n`ComputeResult.boq_rows`. `derivation` is the human-readable formula\nwalk-through; `formula` is the optional formal expression.",
        -                      "properties": {
        -                        "boq_row_index": {
        -                          "minimum": 0,
        -                          "type": "integer"
        -                        },
        -                        "derivation": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "formula": {
        -                          "anyOf": [
        -                            {
        -                              "type": "string"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ],
        -                          "default": null
        -                        },
        -                        "id": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "parameters_referenced": {
        -                          "items": {
        -                            "type": "string"
        -                          },
        -                          "type": "array"
        -                        }
        -                      },
        -                      "required": [
        -                        "id",
        -                        "boq_row_index",
        -                        "derivation"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "boq_rows": {
        -                "items": {
        -                  "additionalProperties": false,
        -                  "description": "Schema § 1.3 — a single bill row in the requested standard's format.\n\n`description` is the non-verbatim functional description per spec § 13.9 /\n§ 15 invariant — NEVER reproduces a standard's verbatim clause text.\n`rate` / `amount` ship null because rates are commodity data the customer\nowns; the engine's job is the measurement, not the pricing.",
        -                  "properties": {
        -                    "amount": {
        -                      "anyOf": [
        -                        {
        -                          "type": "number"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "attribution": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "audit_id": {
        -                      "anyOf": [
        -                        {
        -                          "type": "string"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "description": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "quantity": {
        -                      "minimum": 0,
        -                      "type": "number"
        -                    },
        -                    "rate": {
        -                      "anyOf": [
        -                        {
        -                          "type": "number"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "unit": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "work_section": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    }
        -                  },
        -                  "required": [
        -                    "work_section",
        -                    "description",
        -                    "quantity",
        -                    "unit",
        -                    "attribution"
        -                  ],
        -                  "type": "object"
        -                },
        -                "type": "array"
        -              },
        -              "drawing": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": false,
        -                    "description": "Schema § 1.6a — inline server-rendered SVG preview of the geometry.\n\nThe MCP mirror of the web ``/compute`` response's ``drawing`` field\n(``api.schemas.compute.DrawingRef``): the same on-screen dimensioned\ndrawing both tiers see in the workspace, surfaced on the MCP compute\nresponse so a chat client can render it inline (60th-fire item C). This\nis the on-screen preview — present on BOTH tiers per the free/paid\nboundary; the downloadable CAD artefacts (DXF / dimensioned PDF) remain\nthe paid differentiator via the export tools.\n\nDefined here rather than importing ``DrawingRef`` because the web\n``schemas`` package imports back into this module (``schemas.render``),\nso reusing it would create an import cycle — the MCP wire contract keeps\nits own copy, the same pattern as ``BoQRow`` / ``DrawingReference``.",
        -                    "properties": {
        -                      "entity_count": {
        -                        "minimum": 0,
        -                        "type": "integer"
        -                      },
        -                      "svg_b64": {
        -                        "minLength": 1,
        -                        "type": "string"
        -                      },
        -                      "unit_of_drawing": {
        -                        "const": "m",
        -                        "default": "m",
        -                        "type": "string"
        -                      },
        -                      "viewbox_height": {
        -                        "exclusiveMinimum": 0,
        -                        "type": "number"
        -                      },
        -                      "viewbox_width": {
        -                        "exclusiveMinimum": 0,
        -                        "type": "number"
        -                      },
        -                      "viewbox_x": {
        -                        "type": "number"
        -                      },
        -                      "viewbox_y": {
        -                        "type": "number"
        -                      }
        -                    },
        -                    "required": [
        -                      "svg_b64",
        -                      "viewbox_x",
        -                      "viewbox_y",
        -                      "viewbox_width",
        -                      "viewbox_height",
        -                      "entity_count"
        -                    ],
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "drawings": {
        -                "anyOf": [
        -                  {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.6 — paid-tier drawing artefact pointer.\n\n`url` is an R2-signed URL; expiry is carried in `_meta.deliverables.expires_at`\non the envelope (not duplicated here). `layers` is DXF-only; PDF/SVG\ncallers omit it.",
        -                      "properties": {
        -                        "drawing_type": {
        -                          "enum": [
        -                            "section",
        -                            "plan",
        -                            "elevation",
        -                            "isometric",
        -                            "detail"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "format": {
        -                          "enum": [
        -                            "DXF",
        -                            "PDF",
        -                            "SVG"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "layers": {
        -                          "anyOf": [
        -                            {
        -                              "items": {
        -                                "type": "string"
        -                              },
        -                              "type": "array"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ],
        -                          "default": null
        -                        },
        -                        "scale": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "sheet_size": {
        -                          "enum": [
        -                            "A1",
        -                            "A2",
        -                            "A3",
        -                            "A4"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "url": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "drawing_type",
        -                        "format",
        -                        "url",
        -                        "sheet_size",
        -                        "scale"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "parameters_used": {
        -                "additionalProperties": false,
        -                "description": "Schema § 1.2 — the parameter snapshot the engine actually used.\n\nSplits user-supplied values from engine defaults so customers can see\nwhich numbers came from them and which the engine filled in. Every\ndefaulted parameter SHOULD have a corresponding entry in `assumptions`\n— the bridge layer enforces this when wrapping engine output.",
        -                "properties": {
        -                  "assumptions": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "engine_defaults": {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  "user_supplied": {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  }
        -                },
        -                "type": "object"
        -              },
        -              "standard": {
        -                "enum": [
        -                  "CESMM4",
        -                  "NRM2",
        -                  "SMM7",
        -                  "MMHW"
        -                ],
        -                "type": "string"
        -              },
        -              "text_summary": {
        -                "maxLength": 2000,
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "totals_summary": {
        -                "additionalProperties": false,
        -                "description": "Schema § 1.4 — totals_summary as a typed wrapper around the free-form dict.\n\nWire shape is a flat object (`{\"concrete_m3\": {...}, \"rebar_t\": {...}}`).\nWe model it as `RootModel`-equivalent via `model_config(extra=\"allow\")`\n+ a single `__root__`-style `entries` dict. Pydantic v2 recommends\n`RootModel` for free-form roots; using a wrapper class keeps the import\nsurface uniform with the rest of this module.",
        -                "properties": {
        -                  "entries": {
        -                    "additionalProperties": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.4 — single material/work-class total entry.",
        -                      "properties": {
        -                        "quantity": {
        -                          "minimum": 0,
        -                          "type": "number"
        -                        },
        -                        "unit": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "quantity",
        -                        "unit"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "object"
        -                  }
        -                },
        -                "type": "object"
        -              },
        -              "warnings": {
        -                "items": {
        -                  "additionalProperties": false,
        -                  "description": "Schema § 1.8 — a non-fatal geometry advisory (56th-fire T2).\n\nThe wire projection of the engine's `core.GeometryWarning`. Advisory only:\na warning NEVER changes a measured quantity — it flags geometry that is\nvalid but likely a mistake (e.g. a stale dependent-height default). Present\non BOTH tiers — a correctness/safety signal, not a paid feature.",
        -                  "properties": {
        -                    "affected_params": {
        -                      "items": {
        -                        "type": "string"
        -                      },
        -                      "type": "array"
        -                    },
        -                    "code": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "detail": {
        -                      "additionalProperties": {
        -                        "type": "number"
        -                      },
        -                      "type": "object"
        -                    },
        -                    "message": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "severity": {
        -                      "enum": [
        -                        "info",
        -                        "advisory",
        -                        "caution"
        -                      ],
        -                      "type": "string"
        -                    }
        -                  },
        -                  "required": [
        -                    "code",
        -                    "severity",
        -                    "message"
        -                  ],
        -                  "type": "object"
        -                },
        -                "type": "array"
        -              }
        -            },
        -            "required": [
        -              "assembly_slug",
        -              "standard",
        -              "parameters_used",
        -              "boq_rows",
        -              "totals_summary",
        -              "text_summary"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      },
        -      "error": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        -            "properties": {
        -              "code": {
        -                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        -                "enum": [
        -                  "RATE_LIMIT_EXCEEDED",
        -                  "TIER_INSUFFICIENT",
        -                  "INVALID_INPUT",
        -                  "SCHEMA_VERSION_MISMATCH",
        -                  "SCHEMA_INVARIANT_VIOLATION",
        -                  "UPSTREAM_TIMEOUT",
        -                  "BACKEND_FAILURE",
        -                  "IP_BLOCKED",
        -                  "RESOURCE_NOT_FOUND",
        -                  "RENDER_FAILURE",
        -                  "OCR_LOW_CONFIDENCE",
        -                  "MANUAL_REVIEW_REQUIRED",
        -                  "ACCEPTANCE_REQUIRED",
        -                  "INVALID_TOKEN"
        -                ],
        -                "type": "string"
        -              },
        -              "details": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "message": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "recoverable": {
        -                "type": "boolean"
        -              },
        -              "retry_after_seconds": {
        -                "anyOf": [
        -                  {
        -                    "minimum": 0,
        -                    "type": "integer"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              }
        -            },
        -            "required": [
        -              "code",
        -              "message",
        -              "recoverable"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      }
        -    },
        -    "required": [
        -      "_meta"
        -    ],
        -    "type": "object"
        -  },
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "_meta": {
        -        "additionalProperties": false,
        -        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        -        "properties": {
        -          "deliverables": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        -                "properties": {
        -                  "docx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "dxf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "expires_at": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  },
        -                  "pdf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "xlsx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "expires_at"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "document_id": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "issued_at": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "output_mode": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Surfaces what a trimmed ``output_mode`` withheld from ``data``.\n\nA trimmed mode (``summary`` / ``boq`` / ``boq_with_backup``) withholds\nalready-computed fields to keep the chat payload small. The withheld value\nreads to a client agent as \"capability missing\" (the box-culvert \"geometry\nbuilder isn't firing\" scare) rather than \"pared for size\": ``drawing`` and\n``audit_trail`` appear as ``null``, ``boq_rows`` as an empty list ``[]``\n(its type forbids ``null``) — both indistinguishable from a genuine absent\nresult. This names the withheld fields and the exact mode that brings each\nback, so the value is unambiguous. Absent on the default ``full_json`` mode\n— nothing is withheld, nothing to point at.",
        -                "properties": {
        -                  "mode": {
        -                    "enum": [
        -                      "summary",
        -                      "boq",
        -                      "boq_with_backup"
        -                    ],
        -                    "type": "string"
        -                  },
        -                  "omitted_fields": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "minItems": 1,
        -                    "type": "array"
        -                  },
        -                  "retrieve_with": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "mode",
        -                  "omitted_fields",
        -                  "retrieve_with"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "rate_limit_remaining": {
        -            "anyOf": [
        -              {
        -                "minimum": 0,
        -                "type": "integer"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "request_id": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "schema_version": {
        -            "const": "1.0.0",
        -            "default": "1.0.0",
        -            "type": "string"
        -          },
        -          "scope_boundary": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        -                "properties": {
        -                  "not_in_scope": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "produced": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "recommended_companions": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "type": "string"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "produced",
        -                  "not_in_scope"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tier": {
        -            "enum": [
        -              "free",
        -              "paid"
        -            ],
        -            "type": "string"
        -          },
        -          "tier_upgrade": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        -                "properties": {
        -                  "available_tiers": {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        -                      "properties": {
        -                        "billing": {
        -                          "enum": [
        -                            "one_off",
        -                            "monthly",
        -                            "annual"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "currency": {
        -                          "enum": [
        -                            "GBP",
        -                            "SGD",
        -                            "EUR",
        -                            "USD",
        -                            "CAD",
        -                            "AUD",
        -                            "NZD",
        -                            "MYR"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "display_name": {
        -                          "type": "string"
        -                        },
        -                        "price_local": {
        -                          "type": "number"
        -                        },
        -                        "tier_slug": {
        -                          "enum": [
        -                            "7_day_pass",
        -                            "solo",
        -                            "studio",
        -                            "practice"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "unlock_summary": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "tier_slug",
        -                        "display_name",
        -                        "price_local",
        -                        "currency",
        -                        "billing",
        -                        "unlock_summary"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "current_tier": {
        -                    "const": "free",
        -                    "default": "free",
        -                    "type": "string"
        -                  },
        -                  "pass_credit": {
        -                    "anyOf": [
        -                      {
        -                        "additionalProperties": false,
        -                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        -                        "properties": {
        -                          "amount_local": {
        -                            "type": "number"
        -                          },
        -                          "applies_to": {
        -                            "const": "solo_first_month",
        -                            "default": "solo_first_month",
        -                            "type": "string"
        -                          },
        -                          "currency": {
        -                            "type": "string"
        -                          },
        -                          "redeemable_until": {
        -                            "type": "string"
        -                          }
        -                        },
        -                        "required": [
        -                          "amount_local",
        -                          "currency",
        -                          "redeemable_until"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "pricing_url": {
        -                    "default": "https://civilquants.com/pricing",
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "available_tiers"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tos_url": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "upgrade_hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "warranty_disclaimer": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          }
        -        },
        -        "required": [
        -          "request_id",
        -          "issued_at",
        -          "tier"
        -        ],
        -        "type": "object"
        -      },
        -      "data": {
        -        "default": null,
        -        "title": "Data"
        -      },
        -      "error": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        -            "properties": {
        -              "code": {
        -                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        -                "enum": [
        -                  "RATE_LIMIT_EXCEEDED",
        -                  "TIER_INSUFFICIENT",
        -                  "INVALID_INPUT",
        -                  "SCHEMA_VERSION_MISMATCH",
        -                  "SCHEMA_INVARIANT_VIOLATION",
        -                  "UPSTREAM_TIMEOUT",
        -                  "BACKEND_FAILURE",
        -                  "IP_BLOCKED",
        -                  "RESOURCE_NOT_FOUND",
        -                  "RENDER_FAILURE",
        -                  "OCR_LOW_CONFIDENCE",
        -                  "MANUAL_REVIEW_REQUIRED",
        -                  "ACCEPTANCE_REQUIRED",
        -                  "INVALID_TOKEN"
        -                ],
        -                "type": "string"
        -              },
        -              "details": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "message": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "recoverable": {
        -                "type": "boolean"
        -              },
        -              "retry_after_seconds": {
        -                "anyOf": [
        -                  {
        -                    "minimum": 0,
        -                    "type": "integer"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              }
        -            },
        -            "required": [
        -              "code",
        -              "message",
        -              "recoverable"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      }
        -    },
        -    "required": [
        -      "_meta"
        -    ],
        -    "type": "object"
        -  }
        -]New value: +[
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "_meta": {
        +        "additionalProperties": false,
        +        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        +        "properties": {
        +          "deliverables": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        +                "properties": {
        +                  "docx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "dxf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "expires_at": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  },
        +                  "pdf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "xlsx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "expires_at"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "document_id": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "issued_at": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "output_mode": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Surfaces what a trimmed ``output_mode`` withheld from ``data``.\n\nA trimmed mode (``summary`` / ``material_schedule`` / ``boq`` /\n``boq_with_backup``) withholds\nalready-computed fields to keep the chat payload small. The withheld value\nreads to a client agent as \"capability missing\" (the box-culvert \"geometry\nbuilder isn't firing\" scare) rather than \"pared for size\": ``drawing`` and\n``audit_trail`` appear as ``null``, ``boq_rows`` as an empty list ``[]``\n(its type forbids ``null``) — both indistinguishable from a genuine absent\nresult. This names the withheld fields and the exact mode that brings each\nback, so the value is unambiguous. Absent on the default ``full_json`` mode\n— nothing is withheld, nothing to point at.",
        +                "properties": {
        +                  "mode": {
        +                    "enum": [
        +                      "summary",
        +                      "material_schedule",
        +                      "boq",
        +                      "boq_with_backup"
        +                    ],
        +                    "type": "string"
        +                  },
        +                  "omitted_fields": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "minItems": 1,
        +                    "type": "array"
        +                  },
        +                  "retrieve_with": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "mode",
        +                  "omitted_fields",
        +                  "retrieve_with"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "rate_limit_remaining": {
        +            "anyOf": [
        +              {
        +                "minimum": 0,
        +                "type": "integer"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "request_id": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "schema_version": {
        +            "const": "1.0.0",
        +            "default": "1.0.0",
        +            "type": "string"
        +          },
        +          "scope_boundary": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        +                "properties": {
        +                  "not_in_scope": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "produced": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "recommended_companions": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "type": "string"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "produced",
        +                  "not_in_scope"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tier": {
        +            "enum": [
        +              "free",
        +              "paid"
        +            ],
        +            "type": "string"
        +          },
        +          "tier_upgrade": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        +                "properties": {
        +                  "available_tiers": {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        +                      "properties": {
        +                        "billing": {
        +                          "enum": [
        +                            "one_off",
        +                            "monthly",
        +                            "annual"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "currency": {
        +                          "enum": [
        +                            "GBP",
        +                            "SGD",
        +                            "EUR",
        +                            "USD",
        +                            "CAD",
        +                            "AUD",
        +                            "NZD",
        +                            "MYR"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "display_name": {
        +                          "type": "string"
        +                        },
        +                        "price_local": {
        +                          "type": "number"
        +                        },
        +                        "tier_slug": {
        +                          "enum": [
        +                            "7_day_pass",
        +                            "solo",
        +                            "studio",
        +                            "practice"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "unlock_summary": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "tier_slug",
        +                        "display_name",
        +                        "price_local",
        +                        "currency",
        +                        "billing",
        +                        "unlock_summary"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "current_tier": {
        +                    "const": "free",
        +                    "default": "free",
        +                    "type": "string"
        +                  },
        +                  "pass_credit": {
        +                    "anyOf": [
        +                      {
        +                        "additionalProperties": false,
        +                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        +                        "properties": {
        +                          "amount_local": {
        +                            "type": "number"
        +                          },
        +                          "applies_to": {
        +                            "const": "solo_first_month",
        +                            "default": "solo_first_month",
        +                            "type": "string"
        +                          },
        +                          "currency": {
        +                            "type": "string"
        +                          },
        +                          "redeemable_until": {
        +                            "type": "string"
        +                          }
        +                        },
        +                        "required": [
        +                          "amount_local",
        +                          "currency",
        +                          "redeemable_until"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "pricing_url": {
        +                    "default": "https://civilquants.com/pricing",
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "available_tiers"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tos_url": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "upgrade_hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "warranty_disclaimer": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          }
        +        },
        +        "required": [
        +          "request_id",
        +          "issued_at",
        +          "tier"
        +        ],
        +        "type": "object"
        +      },
        +      "data": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Schema § 1.1 — the typed payload returned inside `MCPResponse[ComputeResult]`.\n\nFree-tier responses omit `drawings` (the downloadable CAD artefact\npointers — the paid differentiator); the bridge enforces this. The\n`audit_trail` and the inline `drawing` preview are present on BOTH tiers\n(V1 ALIGN / 60th-fire D + C). `text_summary` is bounded to 2000 chars —\nkeeps the LLM-facing summary token-cheap and forces longer narrative into\nBoQ row descriptions where it belongs. `warnings` is the non-fatal\ngeometry advisory list (both tiers).",
        +            "properties": {
        +              "assembly_slug": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "audit_trail": {
        +                "anyOf": [
        +                  {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.7 — paid-tier audit-trail entry.\n\nOne entry per BoQ row; `boq_row_index` ties to the row position in\n`ComputeResult.boq_rows`. `derivation` is the human-readable formula\nwalk-through; `formula` is the optional formal expression.",
        +                      "properties": {
        +                        "boq_row_index": {
        +                          "minimum": 0,
        +                          "type": "integer"
        +                        },
        +                        "derivation": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "formula": {
        +                          "anyOf": [
        +                            {
        +                              "type": "string"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ],
        +                          "default": null
        +                        },
        +                        "id": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "parameters_referenced": {
        +                          "items": {
        +                            "type": "string"
        +                          },
        +                          "type": "array"
        +                        }
        +                      },
        +                      "required": [
        +                        "id",
        +                        "boq_row_index",
        +                        "derivation"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "boq_rows": {
        +                "items": {
        +                  "additionalProperties": false,
        +                  "description": "Schema § 1.3 — a single bill row in the requested standard's format.\n\n`description` is the non-verbatim functional description per spec § 13.9 /\n§ 15 invariant — NEVER reproduces a standard's verbatim clause text.\n`rate` / `amount` ship null because rates are commodity data the customer\nowns; the engine's job is the measurement, not the pricing.",
        +                  "properties": {
        +                    "amount": {
        +                      "anyOf": [
        +                        {
        +                          "type": "number"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "attribution": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "audit_id": {
        +                      "anyOf": [
        +                        {
        +                          "type": "string"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "description": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "quantity": {
        +                      "minimum": 0,
        +                      "type": "number"
        +                    },
        +                    "rate": {
        +                      "anyOf": [
        +                        {
        +                          "type": "number"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "unit": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "work_section": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    }
        +                  },
        +                  "required": [
        +                    "work_section",
        +                    "description",
        +                    "quantity",
        +                    "unit",
        +                    "attribution"
        +                  ],
        +                  "type": "object"
        +                },
        +                "type": "array"
        +              },
        +              "drawing": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": false,
        +                    "description": "Schema § 1.6a — inline server-rendered SVG preview of the geometry.\n\nThe MCP mirror of the web ``/compute`` response's ``drawing`` field\n(``api.schemas.compute.DrawingRef``): the same on-screen dimensioned\ndrawing both tiers see in the workspace, surfaced on the MCP compute\nresponse so a chat client can render it inline (60th-fire item C). This\nis the on-screen preview — present on BOTH tiers per the free/paid\nboundary; the downloadable CAD artefacts (DXF / dimensioned PDF) remain\nthe paid differentiator via the export tools.\n\nDefined here rather than importing ``DrawingRef`` because the web\n``schemas`` package imports back into this module (``schemas.render``),\nso reusing it would create an import cycle — the MCP wire contract keeps\nits own copy, the same pattern as ``BoQRow`` / ``DrawingReference``.",
        +                    "properties": {
        +                      "entity_count": {
        +                        "minimum": 0,
        +                        "type": "integer"
        +                      },
        +                      "svg_b64": {
        +                        "minLength": 1,
        +                        "type": "string"
        +                      },
        +                      "unit_of_drawing": {
        +                        "const": "m",
        +                        "default": "m",
        +                        "type": "string"
        +                      },
        +                      "viewbox_height": {
        +                        "exclusiveMinimum": 0,
        +                        "type": "number"
        +                      },
        +                      "viewbox_width": {
        +                        "exclusiveMinimum": 0,
        +                        "type": "number"
        +                      },
        +                      "viewbox_x": {
        +                        "type": "number"
        +                      },
        +                      "viewbox_y": {
        +                        "type": "number"
        +                      }
        +                    },
        +                    "required": [
        +                      "svg_b64",
        +                      "viewbox_x",
        +                      "viewbox_y",
        +                      "viewbox_width",
        +                      "viewbox_height",
        +                      "entity_count"
        +                    ],
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "drawings": {
        +                "anyOf": [
        +                  {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.6 — paid-tier drawing artefact pointer.\n\n`url` is an R2-signed URL; expiry is carried in `_meta.deliverables.expires_at`\non the envelope (not duplicated here). `layers` is DXF-only; PDF/SVG\ncallers omit it.",
        +                      "properties": {
        +                        "drawing_type": {
        +                          "enum": [
        +                            "section",
        +                            "plan",
        +                            "elevation",
        +                            "isometric",
        +                            "detail"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "format": {
        +                          "enum": [
        +                            "DXF",
        +                            "PDF",
        +                            "SVG"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "layers": {
        +                          "anyOf": [
        +                            {
        +                              "items": {
        +                                "type": "string"
        +                              },
        +                              "type": "array"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ],
        +                          "default": null
        +                        },
        +                        "scale": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "sheet_size": {
        +                          "enum": [
        +                            "A1",
        +                            "A2",
        +                            "A3",
        +                            "A4"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "url": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "drawing_type",
        +                        "format",
        +                        "url",
        +                        "sheet_size",
        +                        "scale"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "parameters_used": {
        +                "additionalProperties": false,
        +                "description": "Schema § 1.2 — the parameter snapshot the engine actually used.\n\nSplits user-supplied values from engine defaults so customers can see\nwhich numbers came from them and which the engine filled in. Every\ndefaulted parameter SHOULD have a corresponding entry in `assumptions`\n— the bridge layer enforces this when wrapping engine output.",
        +                "properties": {
        +                  "assumptions": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "engine_defaults": {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  "user_supplied": {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  }
        +                },
        +                "type": "object"
        +              },
        +              "standard": {
        +                "enum": [
        +                  "CESMM4",
        +                  "NRM2",
        +                  "SMM7",
        +                  "MMHW"
        +                ],
        +                "type": "string"
        +              },
        +              "text_summary": {
        +                "maxLength": 2000,
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "totals_summary": {
        +                "additionalProperties": false,
        +                "description": "Schema § 1.4 — totals_summary as a typed wrapper around the free-form dict.\n\nWire shape is a flat object (`{\"concrete_m3\": {...}, \"rebar_t\": {...}}`).\nWe model it as `RootModel`-equivalent via `model_config(extra=\"allow\")`\n+ a single `__root__`-style `entries` dict. Pydantic v2 recommends\n`RootModel` for free-form roots; using a wrapper class keeps the import\nsurface uniform with the rest of this module.",
        +                "properties": {
        +                  "entries": {
        +                    "additionalProperties": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.4 — single material/work-class total entry.",
        +                      "properties": {
        +                        "quantity": {
        +                          "minimum": 0,
        +                          "type": "number"
        +                        },
        +                        "unit": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "quantity",
        +                        "unit"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "object"
        +                  }
        +                },
        +                "type": "object"
        +              },
        +              "warnings": {
        +                "items": {
        +                  "additionalProperties": false,
        +                  "description": "Schema § 1.8 — a non-fatal geometry advisory (56th-fire T2).\n\nThe wire projection of the engine's `core.GeometryWarning`. Advisory only:\na warning NEVER changes a measured quantity — it flags geometry that is\nvalid but likely a mistake (e.g. a stale dependent-height default). Present\non BOTH tiers — a correctness/safety signal, not a paid feature.",
        +                  "properties": {
        +                    "affected_params": {
        +                      "items": {
        +                        "type": "string"
        +                      },
        +                      "type": "array"
        +                    },
        +                    "code": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "detail": {
        +                      "additionalProperties": {
        +                        "type": "number"
        +                      },
        +                      "type": "object"
        +                    },
        +                    "message": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "severity": {
        +                      "enum": [
        +                        "info",
        +                        "advisory",
        +                        "caution"
        +                      ],
        +                      "type": "string"
        +                    }
        +                  },
        +                  "required": [
        +                    "code",
        +                    "severity",
        +                    "message"
        +                  ],
        +                  "type": "object"
        +                },
        +                "type": "array"
        +              }
        +            },
        +            "required": [
        +              "assembly_slug",
        +              "standard",
        +              "parameters_used",
        +              "boq_rows",
        +              "totals_summary",
        +              "text_summary"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      },
        +      "error": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        +            "properties": {
        +              "code": {
        +                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        +                "enum": [
        +                  "RATE_LIMIT_EXCEEDED",
        +                  "TIER_INSUFFICIENT",
        +                  "INVALID_INPUT",
        +                  "SCHEMA_VERSION_MISMATCH",
        +                  "SCHEMA_INVARIANT_VIOLATION",
        +                  "UPSTREAM_TIMEOUT",
        +                  "BACKEND_FAILURE",
        +                  "IP_BLOCKED",
        +                  "RESOURCE_NOT_FOUND",
        +                  "RENDER_FAILURE",
        +                  "OCR_LOW_CONFIDENCE",
        +                  "MANUAL_REVIEW_REQUIRED",
        +                  "ACCEPTANCE_REQUIRED",
        +                  "INVALID_TOKEN"
        +                ],
        +                "type": "string"
        +              },
        +              "details": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "message": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "recoverable": {
        +                "type": "boolean"
        +              },
        +              "retry_after_seconds": {
        +                "anyOf": [
        +                  {
        +                    "minimum": 0,
        +                    "type": "integer"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              }
        +            },
        +            "required": [
        +              "code",
        +              "message",
        +              "recoverable"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      }
        +    },
        +    "required": [
        +      "_meta"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "_meta": {
        +        "additionalProperties": false,
        +        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        +        "properties": {
        +          "deliverables": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        +                "properties": {
        +                  "docx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "dxf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "expires_at": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  },
        +                  "pdf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "xlsx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "expires_at"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "document_id": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "issued_at": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "output_mode": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Surfaces what a trimmed ``output_mode`` withheld from ``data``.\n\nA trimmed mode (``summary`` / ``material_schedule`` / ``boq`` /\n``boq_with_backup``) withholds\nalready-computed fields to keep the chat payload small. The withheld value\nreads to a client agent as \"capability missing\" (the box-culvert \"geometry\nbuilder isn't firing\" scare) rather than \"pared for size\": ``drawing`` and\n``audit_trail`` appear as ``null``, ``boq_rows`` as an empty list ``[]``\n(its type forbids ``null``) — both indistinguishable from a genuine absent\nresult. This names the withheld fields and the exact mode that brings each\nback, so the value is unambiguous. Absent on the default ``full_json`` mode\n— nothing is withheld, nothing to point at.",
        +                "properties": {
        +                  "mode": {
        +                    "enum": [
        +                      "summary",
        +                      "material_schedule",
        +                      "boq",
        +                      "boq_with_backup"
        +                    ],
        +                    "type": "string"
        +                  },
        +                  "omitted_fields": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "minItems": 1,
        +                    "type": "array"
        +                  },
        +                  "retrieve_with": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "mode",
        +                  "omitted_fields",
        +                  "retrieve_with"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "rate_limit_remaining": {
        +            "anyOf": [
        +              {
        +                "minimum": 0,
        +                "type": "integer"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "request_id": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "schema_version": {
        +            "const": "1.0.0",
        +            "default": "1.0.0",
        +            "type": "string"
        +          },
        +          "scope_boundary": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        +                "properties": {
        +                  "not_in_scope": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "produced": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "recommended_companions": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "type": "string"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "produced",
        +                  "not_in_scope"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tier": {
        +            "enum": [
        +              "free",
        +              "paid"
        +            ],
        +            "type": "string"
        +          },
        +          "tier_upgrade": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        +                "properties": {
        +                  "available_tiers": {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        +                      "properties": {
        +                        "billing": {
        +                          "enum": [
        +                            "one_off",
        +                            "monthly",
        +                            "annual"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "currency": {
        +                          "enum": [
        +                            "GBP",
        +                            "SGD",
        +                            "EUR",
        +                            "USD",
        +                            "CAD",
        +                            "AUD",
        +                            "NZD",
        +                            "MYR"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "display_name": {
        +                          "type": "string"
        +                        },
        +                        "price_local": {
        +                          "type": "number"
        +                        },
        +                        "tier_slug": {
        +                          "enum": [
        +                            "7_day_pass",
        +                            "solo",
        +                            "studio",
        +                            "practice"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "unlock_summary": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "tier_slug",
        +                        "display_name",
        +                        "price_local",
        +                        "currency",
        +                        "billing",
        +                        "unlock_summary"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "current_tier": {
        +                    "const": "free",
        +                    "default": "free",
        +                    "type": "string"
        +                  },
        +                  "pass_credit": {
        +                    "anyOf": [
        +                      {
        +                        "additionalProperties": false,
        +                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        +                        "properties": {
        +                          "amount_local": {
        +                            "type": "number"
        +                          },
        +                          "applies_to": {
        +                            "const": "solo_first_month",
        +                            "default": "solo_first_month",
        +                            "type": "string"
        +                          },
        +                          "currency": {
        +                            "type": "string"
        +                          },
        +                          "redeemable_until": {
        +                            "type": "string"
        +                          }
        +                        },
        +                        "required": [
        +                          "amount_local",
        +                          "currency",
        +                          "redeemable_until"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "pricing_url": {
        +                    "default": "https://civilquants.com/pricing",
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "available_tiers"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tos_url": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "upgrade_hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "warranty_disclaimer": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          }
        +        },
        +        "required": [
        +          "request_id",
        +          "issued_at",
        +          "tier"
        +        ],
        +        "type": "object"
        +      },
        +      "data": {
        +        "default": null,
        +        "title": "Data"
        +      },
        +      "error": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        +            "properties": {
        +              "code": {
        +                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        +                "enum": [
        +                  "RATE_LIMIT_EXCEEDED",
        +                  "TIER_INSUFFICIENT",
        +                  "INVALID_INPUT",
        +                  "SCHEMA_VERSION_MISMATCH",
        +                  "SCHEMA_INVARIANT_VIOLATION",
        +                  "UPSTREAM_TIMEOUT",
        +                  "BACKEND_FAILURE",
        +                  "IP_BLOCKED",
        +                  "RESOURCE_NOT_FOUND",
        +                  "RENDER_FAILURE",
        +                  "OCR_LOW_CONFIDENCE",
        +                  "MANUAL_REVIEW_REQUIRED",
        +                  "ACCEPTANCE_REQUIRED",
        +                  "INVALID_TOKEN"
        +                ],
        +                "type": "string"
        +              },
        +              "details": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "message": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "recoverable": {
        +                "type": "boolean"
        +              },
        +              "retry_after_seconds": {
        +                "anyOf": [
        +                  {
        +                    "minimum": 0,
        +                    "type": "integer"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              }
        +            },
        +            "required": [
        +              "code",
        +              "message",
        +              "recoverable"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      }
        +    },
        +    "required": [
        +      "_meta"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedcompute_ditch2 fields changed
      • changedInput schema / properties / output_mode / enum
        Previous value: -[
        -  "summary",
        -  "boq",
        -  "boq_with_backup",
        -  "full_json"
        -]New value: +[
        +  "summary",
        +  "material_schedule",
        +  "boq",
        +  "boq_with_backup",
        +  "full_json"
        +]
      • changedOutput schema / properties / result / anyOf
        Previous value: -[
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "_meta": {
        -        "additionalProperties": false,
        -        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        -        "properties": {
        -          "deliverables": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        -                "properties": {
        -                  "docx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "dxf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "expires_at": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  },
        -                  "pdf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "xlsx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "expires_at"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "document_id": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "issued_at": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "output_mode": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Surfaces what a trimmed ``output_mode`` withheld from ``data``.\n\nA trimmed mode (``summary`` / ``boq`` / ``boq_with_backup``) withholds\nalready-computed fields to keep the chat payload small. The withheld value\nreads to a client agent as \"capability missing\" (the box-culvert \"geometry\nbuilder isn't firing\" scare) rather than \"pared for size\": ``drawing`` and\n``audit_trail`` appear as ``null``, ``boq_rows`` as an empty list ``[]``\n(its type forbids ``null``) — both indistinguishable from a genuine absent\nresult. This names the withheld fields and the exact mode that brings each\nback, so the value is unambiguous. Absent on the default ``full_json`` mode\n— nothing is withheld, nothing to point at.",
        -                "properties": {
        -                  "mode": {
        -                    "enum": [
        -                      "summary",
        -                      "boq",
        -                      "boq_with_backup"
        -                    ],
        -                    "type": "string"
        -                  },
        -                  "omitted_fields": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "minItems": 1,
        -                    "type": "array"
        -                  },
        -                  "retrieve_with": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "mode",
        -                  "omitted_fields",
        -                  "retrieve_with"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "rate_limit_remaining": {
        -            "anyOf": [
        -              {
        -                "minimum": 0,
        -                "type": "integer"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "request_id": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "schema_version": {
        -            "const": "1.0.0",
        -            "default": "1.0.0",
        -            "type": "string"
        -          },
        -          "scope_boundary": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        -                "properties": {
        -                  "not_in_scope": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "produced": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "recommended_companions": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "type": "string"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "produced",
        -                  "not_in_scope"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tier": {
        -            "enum": [
        -              "free",
        -              "paid"
        -            ],
        -            "type": "string"
        -          },
        -          "tier_upgrade": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        -                "properties": {
        -                  "available_tiers": {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        -                      "properties": {
        -                        "billing": {
        -                          "enum": [
        -                            "one_off",
        -                            "monthly",
        -                            "annual"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "currency": {
        -                          "enum": [
        -                            "GBP",
        -                            "SGD",
        -                            "EUR",
        -                            "USD",
        -                            "CAD",
        -                            "AUD",
        -                            "NZD",
        -                            "MYR"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "display_name": {
        -                          "type": "string"
        -                        },
        -                        "price_local": {
        -                          "type": "number"
        -                        },
        -                        "tier_slug": {
        -                          "enum": [
        -                            "7_day_pass",
        -                            "solo",
        -                            "studio",
        -                            "practice"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "unlock_summary": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "tier_slug",
        -                        "display_name",
        -                        "price_local",
        -                        "currency",
        -                        "billing",
        -                        "unlock_summary"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "current_tier": {
        -                    "const": "free",
        -                    "default": "free",
        -                    "type": "string"
        -                  },
        -                  "pass_credit": {
        -                    "anyOf": [
        -                      {
        -                        "additionalProperties": false,
        -                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        -                        "properties": {
        -                          "amount_local": {
        -                            "type": "number"
        -                          },
        -                          "applies_to": {
        -                            "const": "solo_first_month",
        -                            "default": "solo_first_month",
        -                            "type": "string"
        -                          },
        -                          "currency": {
        -                            "type": "string"
        -                          },
        -                          "redeemable_until": {
        -                            "type": "string"
        -                          }
        -                        },
        -                        "required": [
        -                          "amount_local",
        -                          "currency",
        -                          "redeemable_until"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "pricing_url": {
        -                    "default": "https://civilquants.com/pricing",
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "available_tiers"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tos_url": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "upgrade_hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "warranty_disclaimer": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          }
        -        },
        -        "required": [
        -          "request_id",
        -          "issued_at",
        -          "tier"
        -        ],
        -        "type": "object"
        -      },
        -      "data": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Schema § 1.1 — the typed payload returned inside `MCPResponse[ComputeResult]`.\n\nFree-tier responses omit `drawings` (the downloadable CAD artefact\npointers — the paid differentiator); the bridge enforces this. The\n`audit_trail` and the inline `drawing` preview are present on BOTH tiers\n(V1 ALIGN / 60th-fire D + C). `text_summary` is bounded to 2000 chars —\nkeeps the LLM-facing summary token-cheap and forces longer narrative into\nBoQ row descriptions where it belongs. `warnings` is the non-fatal\ngeometry advisory list (both tiers).",
        -            "properties": {
        -              "assembly_slug": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "audit_trail": {
        -                "anyOf": [
        -                  {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.7 — paid-tier audit-trail entry.\n\nOne entry per BoQ row; `boq_row_index` ties to the row position in\n`ComputeResult.boq_rows`. `derivation` is the human-readable formula\nwalk-through; `formula` is the optional formal expression.",
        -                      "properties": {
        -                        "boq_row_index": {
        -                          "minimum": 0,
        -                          "type": "integer"
        -                        },
        -                        "derivation": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "formula": {
        -                          "anyOf": [
        -                            {
        -                              "type": "string"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ],
        -                          "default": null
        -                        },
        -                        "id": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "parameters_referenced": {
        -                          "items": {
        -                            "type": "string"
        -                          },
        -                          "type": "array"
        -                        }
        -                      },
        -                      "required": [
        -                        "id",
        -                        "boq_row_index",
        -                        "derivation"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "boq_rows": {
        -                "items": {
        -                  "additionalProperties": false,
        -                  "description": "Schema § 1.3 — a single bill row in the requested standard's format.\n\n`description` is the non-verbatim functional description per spec § 13.9 /\n§ 15 invariant — NEVER reproduces a standard's verbatim clause text.\n`rate` / `amount` ship null because rates are commodity data the customer\nowns; the engine's job is the measurement, not the pricing.",
        -                  "properties": {
        -                    "amount": {
        -                      "anyOf": [
        -                        {
        -                          "type": "number"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "attribution": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "audit_id": {
        -                      "anyOf": [
        -                        {
        -                          "type": "string"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "description": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "quantity": {
        -                      "minimum": 0,
        -                      "type": "number"
        -                    },
        -                    "rate": {
        -                      "anyOf": [
        -                        {
        -                          "type": "number"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "unit": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "work_section": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    }
        -                  },
        -                  "required": [
        -                    "work_section",
        -                    "description",
        -                    "quantity",
        -                    "unit",
        -                    "attribution"
        -                  ],
        -                  "type": "object"
        -                },
        -                "type": "array"
        -              },
        -              "drawing": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": false,
        -                    "description": "Schema § 1.6a — inline server-rendered SVG preview of the geometry.\n\nThe MCP mirror of the web ``/compute`` response's ``drawing`` field\n(``api.schemas.compute.DrawingRef``): the same on-screen dimensioned\ndrawing both tiers see in the workspace, surfaced on the MCP compute\nresponse so a chat client can render it inline (60th-fire item C). This\nis the on-screen preview — present on BOTH tiers per the free/paid\nboundary; the downloadable CAD artefacts (DXF / dimensioned PDF) remain\nthe paid differentiator via the export tools.\n\nDefined here rather than importing ``DrawingRef`` because the web\n``schemas`` package imports back into this module (``schemas.render``),\nso reusing it would create an import cycle — the MCP wire contract keeps\nits own copy, the same pattern as ``BoQRow`` / ``DrawingReference``.",
        -                    "properties": {
        -                      "entity_count": {
        -                        "minimum": 0,
        -                        "type": "integer"
        -                      },
        -                      "svg_b64": {
        -                        "minLength": 1,
        -                        "type": "string"
        -                      },
        -                      "unit_of_drawing": {
        -                        "const": "m",
        -                        "default": "m",
        -                        "type": "string"
        -                      },
        -                      "viewbox_height": {
        -                        "exclusiveMinimum": 0,
        -                        "type": "number"
        -                      },
        -                      "viewbox_width": {
        -                        "exclusiveMinimum": 0,
        -                        "type": "number"
        -                      },
        -                      "viewbox_x": {
        -                        "type": "number"
        -                      },
        -                      "viewbox_y": {
        -                        "type": "number"
        -                      }
        -                    },
        -                    "required": [
        -                      "svg_b64",
        -                      "viewbox_x",
        -                      "viewbox_y",
        -                      "viewbox_width",
        -                      "viewbox_height",
        -                      "entity_count"
        -                    ],
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "drawings": {
        -                "anyOf": [
        -                  {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.6 — paid-tier drawing artefact pointer.\n\n`url` is an R2-signed URL; expiry is carried in `_meta.deliverables.expires_at`\non the envelope (not duplicated here). `layers` is DXF-only; PDF/SVG\ncallers omit it.",
        -                      "properties": {
        -                        "drawing_type": {
        -                          "enum": [
        -                            "section",
        -                            "plan",
        -                            "elevation",
        -                            "isometric",
        -                            "detail"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "format": {
        -                          "enum": [
        -                            "DXF",
        -                            "PDF",
        -                            "SVG"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "layers": {
        -                          "anyOf": [
        -                            {
        -                              "items": {
        -                                "type": "string"
        -                              },
        -                              "type": "array"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ],
        -                          "default": null
        -                        },
        -                        "scale": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "sheet_size": {
        -                          "enum": [
        -                            "A1",
        -                            "A2",
        -                            "A3",
        -                            "A4"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "url": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "drawing_type",
        -                        "format",
        -                        "url",
        -                        "sheet_size",
        -                        "scale"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "parameters_used": {
        -                "additionalProperties": false,
        -                "description": "Schema § 1.2 — the parameter snapshot the engine actually used.\n\nSplits user-supplied values from engine defaults so customers can see\nwhich numbers came from them and which the engine filled in. Every\ndefaulted parameter SHOULD have a corresponding entry in `assumptions`\n— the bridge layer enforces this when wrapping engine output.",
        -                "properties": {
        -                  "assumptions": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "engine_defaults": {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  "user_supplied": {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  }
        -                },
        -                "type": "object"
        -              },
        -              "standard": {
        -                "enum": [
        -                  "CESMM4",
        -                  "NRM2",
        -                  "SMM7",
        -                  "MMHW"
        -                ],
        -                "type": "string"
        -              },
        -              "text_summary": {
        -                "maxLength": 2000,
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "totals_summary": {
        -                "additionalProperties": false,
        -                "description": "Schema § 1.4 — totals_summary as a typed wrapper around the free-form dict.\n\nWire shape is a flat object (`{\"concrete_m3\": {...}, \"rebar_t\": {...}}`).\nWe model it as `RootModel`-equivalent via `model_config(extra=\"allow\")`\n+ a single `__root__`-style `entries` dict. Pydantic v2 recommends\n`RootModel` for free-form roots; using a wrapper class keeps the import\nsurface uniform with the rest of this module.",
        -                "properties": {
        -                  "entries": {
        -                    "additionalProperties": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.4 — single material/work-class total entry.",
        -                      "properties": {
        -                        "quantity": {
        -                          "minimum": 0,
        -                          "type": "number"
        -                        },
        -                        "unit": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "quantity",
        -                        "unit"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "object"
        -                  }
        -                },
        -                "type": "object"
        -              },
        -              "warnings": {
        -                "items": {
        -                  "additionalProperties": false,
        -                  "description": "Schema § 1.8 — a non-fatal geometry advisory (56th-fire T2).\n\nThe wire projection of the engine's `core.GeometryWarning`. Advisory only:\na warning NEVER changes a measured quantity — it flags geometry that is\nvalid but likely a mistake (e.g. a stale dependent-height default). Present\non BOTH tiers — a correctness/safety signal, not a paid feature.",
        -                  "properties": {
        -                    "affected_params": {
        -                      "items": {
        -                        "type": "string"
        -                      },
        -                      "type": "array"
        -                    },
        -                    "code": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "detail": {
        -                      "additionalProperties": {
        -                        "type": "number"
        -                      },
        -                      "type": "object"
        -                    },
        -                    "message": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "severity": {
        -                      "enum": [
        -                        "info",
        -                        "advisory",
        -                        "caution"
        -                      ],
        -                      "type": "string"
        -                    }
        -                  },
        -                  "required": [
        -                    "code",
        -                    "severity",
        -                    "message"
        -                  ],
        -                  "type": "object"
        -                },
        -                "type": "array"
        -              }
        -            },
        -            "required": [
        -              "assembly_slug",
        -              "standard",
        -              "parameters_used",
        -              "boq_rows",
        -              "totals_summary",
        -              "text_summary"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      },
        -      "error": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        -            "properties": {
        -              "code": {
        -                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        -                "enum": [
        -                  "RATE_LIMIT_EXCEEDED",
        -                  "TIER_INSUFFICIENT",
        -                  "INVALID_INPUT",
        -                  "SCHEMA_VERSION_MISMATCH",
        -                  "SCHEMA_INVARIANT_VIOLATION",
        -                  "UPSTREAM_TIMEOUT",
        -                  "BACKEND_FAILURE",
        -                  "IP_BLOCKED",
        -                  "RESOURCE_NOT_FOUND",
        -                  "RENDER_FAILURE",
        -                  "OCR_LOW_CONFIDENCE",
        -                  "MANUAL_REVIEW_REQUIRED",
        -                  "ACCEPTANCE_REQUIRED",
        -                  "INVALID_TOKEN"
        -                ],
        -                "type": "string"
        -              },
        -              "details": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "message": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "recoverable": {
        -                "type": "boolean"
        -              },
        -              "retry_after_seconds": {
        -                "anyOf": [
        -                  {
        -                    "minimum": 0,
        -                    "type": "integer"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              }
        -            },
        -            "required": [
        -              "code",
        -              "message",
        -              "recoverable"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      }
        -    },
        -    "required": [
        -      "_meta"
        -    ],
        -    "type": "object"
        -  },
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "_meta": {
        -        "additionalProperties": false,
        -        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        -        "properties": {
        -          "deliverables": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        -                "properties": {
        -                  "docx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "dxf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "expires_at": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  },
        -                  "pdf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "xlsx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "expires_at"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "document_id": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "issued_at": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "output_mode": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Surfaces what a trimmed ``output_mode`` withheld from ``data``.\n\nA trimmed mode (``summary`` / ``boq`` / ``boq_with_backup``) withholds\nalready-computed fields to keep the chat payload small. The withheld value\nreads to a client agent as \"capability missing\" (the box-culvert \"geometry\nbuilder isn't firing\" scare) rather than \"pared for size\": ``drawing`` and\n``audit_trail`` appear as ``null``, ``boq_rows`` as an empty list ``[]``\n(its type forbids ``null``) — both indistinguishable from a genuine absent\nresult. This names the withheld fields and the exact mode that brings each\nback, so the value is unambiguous. Absent on the default ``full_json`` mode\n— nothing is withheld, nothing to point at.",
        -                "properties": {
        -                  "mode": {
        -                    "enum": [
        -                      "summary",
        -                      "boq",
        -                      "boq_with_backup"
        -                    ],
        -                    "type": "string"
        -                  },
        -                  "omitted_fields": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "minItems": 1,
        -                    "type": "array"
        -                  },
        -                  "retrieve_with": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "mode",
        -                  "omitted_fields",
        -                  "retrieve_with"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "rate_limit_remaining": {
        -            "anyOf": [
        -              {
        -                "minimum": 0,
        -                "type": "integer"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "request_id": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "schema_version": {
        -            "const": "1.0.0",
        -            "default": "1.0.0",
        -            "type": "string"
        -          },
        -          "scope_boundary": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        -                "properties": {
        -                  "not_in_scope": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "produced": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "recommended_companions": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "type": "string"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "produced",
        -                  "not_in_scope"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tier": {
        -            "enum": [
        -              "free",
        -              "paid"
        -            ],
        -            "type": "string"
        -          },
        -          "tier_upgrade": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        -                "properties": {
        -                  "available_tiers": {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        -                      "properties": {
        -                        "billing": {
        -                          "enum": [
        -                            "one_off",
        -                            "monthly",
        -                            "annual"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "currency": {
        -                          "enum": [
        -                            "GBP",
        -                            "SGD",
        -                            "EUR",
        -                            "USD",
        -                            "CAD",
        -                            "AUD",
        -                            "NZD",
        -                            "MYR"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "display_name": {
        -                          "type": "string"
        -                        },
        -                        "price_local": {
        -                          "type": "number"
        -                        },
        -                        "tier_slug": {
        -                          "enum": [
        -                            "7_day_pass",
        -                            "solo",
        -                            "studio",
        -                            "practice"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "unlock_summary": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "tier_slug",
        -                        "display_name",
        -                        "price_local",
        -                        "currency",
        -                        "billing",
        -                        "unlock_summary"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "current_tier": {
        -                    "const": "free",
        -                    "default": "free",
        -                    "type": "string"
        -                  },
        -                  "pass_credit": {
        -                    "anyOf": [
        -                      {
        -                        "additionalProperties": false,
        -                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        -                        "properties": {
        -                          "amount_local": {
        -                            "type": "number"
        -                          },
        -                          "applies_to": {
        -                            "const": "solo_first_month",
        -                            "default": "solo_first_month",
        -                            "type": "string"
        -                          },
        -                          "currency": {
        -                            "type": "string"
        -                          },
        -                          "redeemable_until": {
        -                            "type": "string"
        -                          }
        -                        },
        -                        "required": [
        -                          "amount_local",
        -                          "currency",
        -                          "redeemable_until"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "pricing_url": {
        -                    "default": "https://civilquants.com/pricing",
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "available_tiers"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tos_url": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "upgrade_hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "warranty_disclaimer": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          }
        -        },
        -        "required": [
        -          "request_id",
        -          "issued_at",
        -          "tier"
        -        ],
        -        "type": "object"
        -      },
        -      "data": {
        -        "default": null,
        -        "title": "Data"
        -      },
        -      "error": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        -            "properties": {
        -              "code": {
        -                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        -                "enum": [
        -                  "RATE_LIMIT_EXCEEDED",
        -                  "TIER_INSUFFICIENT",
        -                  "INVALID_INPUT",
        -                  "SCHEMA_VERSION_MISMATCH",
        -                  "SCHEMA_INVARIANT_VIOLATION",
        -                  "UPSTREAM_TIMEOUT",
        -                  "BACKEND_FAILURE",
        -                  "IP_BLOCKED",
        -                  "RESOURCE_NOT_FOUND",
        -                  "RENDER_FAILURE",
        -                  "OCR_LOW_CONFIDENCE",
        -                  "MANUAL_REVIEW_REQUIRED",
        -                  "ACCEPTANCE_REQUIRED",
        -                  "INVALID_TOKEN"
        -                ],
        -                "type": "string"
        -              },
        -              "details": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "message": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "recoverable": {
        -                "type": "boolean"
        -              },
        -              "retry_after_seconds": {
        -                "anyOf": [
        -                  {
        -                    "minimum": 0,
        -                    "type": "integer"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              }
        -            },
        -            "required": [
        -              "code",
        -              "message",
        -              "recoverable"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      }
        -    },
        -    "required": [
        -      "_meta"
        -    ],
        -    "type": "object"
        -  }
        -]New value: +[
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "_meta": {
        +        "additionalProperties": false,
        +        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        +        "properties": {
        +          "deliverables": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        +                "properties": {
        +                  "docx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "dxf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "expires_at": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  },
        +                  "pdf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "xlsx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "expires_at"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "document_id": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "issued_at": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "output_mode": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Surfaces what a trimmed ``output_mode`` withheld from ``data``.\n\nA trimmed mode (``summary`` / ``material_schedule`` / ``boq`` /\n``boq_with_backup``) withholds\nalready-computed fields to keep the chat payload small. The withheld value\nreads to a client agent as \"capability missing\" (the box-culvert \"geometry\nbuilder isn't firing\" scare) rather than \"pared for size\": ``drawing`` and\n``audit_trail`` appear as ``null``, ``boq_rows`` as an empty list ``[]``\n(its type forbids ``null``) — both indistinguishable from a genuine absent\nresult. This names the withheld fields and the exact mode that brings each\nback, so the value is unambiguous. Absent on the default ``full_json`` mode\n— nothing is withheld, nothing to point at.",
        +                "properties": {
        +                  "mode": {
        +                    "enum": [
        +                      "summary",
        +                      "material_schedule",
        +                      "boq",
        +                      "boq_with_backup"
        +                    ],
        +                    "type": "string"
        +                  },
        +                  "omitted_fields": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "minItems": 1,
        +                    "type": "array"
        +                  },
        +                  "retrieve_with": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "mode",
        +                  "omitted_fields",
        +                  "retrieve_with"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "rate_limit_remaining": {
        +            "anyOf": [
        +              {
        +                "minimum": 0,
        +                "type": "integer"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "request_id": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "schema_version": {
        +            "const": "1.0.0",
        +            "default": "1.0.0",
        +            "type": "string"
        +          },
        +          "scope_boundary": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        +                "properties": {
        +                  "not_in_scope": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "produced": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "recommended_companions": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "type": "string"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "produced",
        +                  "not_in_scope"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tier": {
        +            "enum": [
        +              "free",
        +              "paid"
        +            ],
        +            "type": "string"
        +          },
        +          "tier_upgrade": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        +                "properties": {
        +                  "available_tiers": {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        +                      "properties": {
        +                        "billing": {
        +                          "enum": [
        +                            "one_off",
        +                            "monthly",
        +                            "annual"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "currency": {
        +                          "enum": [
        +                            "GBP",
        +                            "SGD",
        +                            "EUR",
        +                            "USD",
        +                            "CAD",
        +                            "AUD",
        +                            "NZD",
        +                            "MYR"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "display_name": {
        +                          "type": "string"
        +                        },
        +                        "price_local": {
        +                          "type": "number"
        +                        },
        +                        "tier_slug": {
        +                          "enum": [
        +                            "7_day_pass",
        +                            "solo",
        +                            "studio",
        +                            "practice"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "unlock_summary": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "tier_slug",
        +                        "display_name",
        +                        "price_local",
        +                        "currency",
        +                        "billing",
        +                        "unlock_summary"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "current_tier": {
        +                    "const": "free",
        +                    "default": "free",
        +                    "type": "string"
        +                  },
        +                  "pass_credit": {
        +                    "anyOf": [
        +                      {
        +                        "additionalProperties": false,
        +                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        +                        "properties": {
        +                          "amount_local": {
        +                            "type": "number"
        +                          },
        +                          "applies_to": {
        +                            "const": "solo_first_month",
        +                            "default": "solo_first_month",
        +                            "type": "string"
        +                          },
        +                          "currency": {
        +                            "type": "string"
        +                          },
        +                          "redeemable_until": {
        +                            "type": "string"
        +                          }
        +                        },
        +                        "required": [
        +                          "amount_local",
        +                          "currency",
        +                          "redeemable_until"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "pricing_url": {
        +                    "default": "https://civilquants.com/pricing",
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "available_tiers"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tos_url": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "upgrade_hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "warranty_disclaimer": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          }
        +        },
        +        "required": [
        +          "request_id",
        +          "issued_at",
        +          "tier"
        +        ],
        +        "type": "object"
        +      },
        +      "data": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Schema § 1.1 — the typed payload returned inside `MCPResponse[ComputeResult]`.\n\nFree-tier responses omit `drawings` (the downloadable CAD artefact\npointers — the paid differentiator); the bridge enforces this. The\n`audit_trail` and the inline `drawing` preview are present on BOTH tiers\n(V1 ALIGN / 60th-fire D + C). `text_summary` is bounded to 2000 chars —\nkeeps the LLM-facing summary token-cheap and forces longer narrative into\nBoQ row descriptions where it belongs. `warnings` is the non-fatal\ngeometry advisory list (both tiers).",
        +            "properties": {
        +              "assembly_slug": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "audit_trail": {
        +                "anyOf": [
        +                  {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.7 — paid-tier audit-trail entry.\n\nOne entry per BoQ row; `boq_row_index` ties to the row position in\n`ComputeResult.boq_rows`. `derivation` is the human-readable formula\nwalk-through; `formula` is the optional formal expression.",
        +                      "properties": {
        +                        "boq_row_index": {
        +                          "minimum": 0,
        +                          "type": "integer"
        +                        },
        +                        "derivation": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "formula": {
        +                          "anyOf": [
        +                            {
        +                              "type": "string"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ],
        +                          "default": null
        +                        },
        +                        "id": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "parameters_referenced": {
        +                          "items": {
        +                            "type": "string"
        +                          },
        +                          "type": "array"
        +                        }
        +                      },
        +                      "required": [
        +                        "id",
        +                        "boq_row_index",
        +                        "derivation"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "boq_rows": {
        +                "items": {
        +                  "additionalProperties": false,
        +                  "description": "Schema § 1.3 — a single bill row in the requested standard's format.\n\n`description` is the non-verbatim functional description per spec § 13.9 /\n§ 15 invariant — NEVER reproduces a standard's verbatim clause text.\n`rate` / `amount` ship null because rates are commodity data the customer\nowns; the engine's job is the measurement, not the pricing.",
        +                  "properties": {
        +                    "amount": {
        +                      "anyOf": [
        +                        {
        +                          "type": "number"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "attribution": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "audit_id": {
        +                      "anyOf": [
        +                        {
        +                          "type": "string"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "description": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "quantity": {
        +                      "minimum": 0,
        +                      "type": "number"
        +                    },
        +                    "rate": {
        +                      "anyOf": [
        +                        {
        +                          "type": "number"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "unit": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "work_section": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    }
        +                  },
        +                  "required": [
        +                    "work_section",
        +                    "description",
        +                    "quantity",
        +                    "unit",
        +                    "attribution"
        +                  ],
        +                  "type": "object"
        +                },
        +                "type": "array"
        +              },
        +              "drawing": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": false,
        +                    "description": "Schema § 1.6a — inline server-rendered SVG preview of the geometry.\n\nThe MCP mirror of the web ``/compute`` response's ``drawing`` field\n(``api.schemas.compute.DrawingRef``): the same on-screen dimensioned\ndrawing both tiers see in the workspace, surfaced on the MCP compute\nresponse so a chat client can render it inline (60th-fire item C). This\nis the on-screen preview — present on BOTH tiers per the free/paid\nboundary; the downloadable CAD artefacts (DXF / dimensioned PDF) remain\nthe paid differentiator via the export tools.\n\nDefined here rather than importing ``DrawingRef`` because the web\n``schemas`` package imports back into this module (``schemas.render``),\nso reusing it would create an import cycle — the MCP wire contract keeps\nits own copy, the same pattern as ``BoQRow`` / ``DrawingReference``.",
        +                    "properties": {
        +                      "entity_count": {
        +                        "minimum": 0,
        +                        "type": "integer"
        +                      },
        +                      "svg_b64": {
        +                        "minLength": 1,
        +                        "type": "string"
        +                      },
        +                      "unit_of_drawing": {
        +                        "const": "m",
        +                        "default": "m",
        +                        "type": "string"
        +                      },
        +                      "viewbox_height": {
        +                        "exclusiveMinimum": 0,
        +                        "type": "number"
        +                      },
        +                      "viewbox_width": {
        +                        "exclusiveMinimum": 0,
        +                        "type": "number"
        +                      },
        +                      "viewbox_x": {
        +                        "type": "number"
        +                      },
        +                      "viewbox_y": {
        +                        "type": "number"
        +                      }
        +                    },
        +                    "required": [
        +                      "svg_b64",
        +                      "viewbox_x",
        +                      "viewbox_y",
        +                      "viewbox_width",
        +                      "viewbox_height",
        +                      "entity_count"
        +                    ],
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "drawings": {
        +                "anyOf": [
        +                  {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.6 — paid-tier drawing artefact pointer.\n\n`url` is an R2-signed URL; expiry is carried in `_meta.deliverables.expires_at`\non the envelope (not duplicated here). `layers` is DXF-only; PDF/SVG\ncallers omit it.",
        +                      "properties": {
        +                        "drawing_type": {
        +                          "enum": [
        +                            "section",
        +                            "plan",
        +                            "elevation",
        +                            "isometric",
        +                            "detail"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "format": {
        +                          "enum": [
        +                            "DXF",
        +                            "PDF",
        +                            "SVG"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "layers": {
        +                          "anyOf": [
        +                            {
        +                              "items": {
        +                                "type": "string"
        +                              },
        +                              "type": "array"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ],
        +                          "default": null
        +                        },
        +                        "scale": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "sheet_size": {
        +                          "enum": [
        +                            "A1",
        +                            "A2",
        +                            "A3",
        +                            "A4"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "url": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "drawing_type",
        +                        "format",
        +                        "url",
        +                        "sheet_size",
        +                        "scale"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "parameters_used": {
        +                "additionalProperties": false,
        +                "description": "Schema § 1.2 — the parameter snapshot the engine actually used.\n\nSplits user-supplied values from engine defaults so customers can see\nwhich numbers came from them and which the engine filled in. Every\ndefaulted parameter SHOULD have a corresponding entry in `assumptions`\n— the bridge layer enforces this when wrapping engine output.",
        +                "properties": {
        +                  "assumptions": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "engine_defaults": {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  "user_supplied": {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  }
        +                },
        +                "type": "object"
        +              },
        +              "standard": {
        +                "enum": [
        +                  "CESMM4",
        +                  "NRM2",
        +                  "SMM7",
        +                  "MMHW"
        +                ],
        +                "type": "string"
        +              },
        +              "text_summary": {
        +                "maxLength": 2000,
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "totals_summary": {
        +                "additionalProperties": false,
        +                "description": "Schema § 1.4 — totals_summary as a typed wrapper around the free-form dict.\n\nWire shape is a flat object (`{\"concrete_m3\": {...}, \"rebar_t\": {...}}`).\nWe model it as `RootModel`-equivalent via `model_config(extra=\"allow\")`\n+ a single `__root__`-style `entries` dict. Pydantic v2 recommends\n`RootModel` for free-form roots; using a wrapper class keeps the import\nsurface uniform with the rest of this module.",
        +                "properties": {
        +                  "entries": {
        +                    "additionalProperties": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.4 — single material/work-class total entry.",
        +                      "properties": {
        +                        "quantity": {
        +                          "minimum": 0,
        +                          "type": "number"
        +                        },
        +                        "unit": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "quantity",
        +                        "unit"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "object"
        +                  }
        +                },
        +                "type": "object"
        +              },
        +              "warnings": {
        +                "items": {
        +                  "additionalProperties": false,
        +                  "description": "Schema § 1.8 — a non-fatal geometry advisory (56th-fire T2).\n\nThe wire projection of the engine's `core.GeometryWarning`. Advisory only:\na warning NEVER changes a measured quantity — it flags geometry that is\nvalid but likely a mistake (e.g. a stale dependent-height default). Present\non BOTH tiers — a correctness/safety signal, not a paid feature.",
        +                  "properties": {
        +                    "affected_params": {
        +                      "items": {
        +                        "type": "string"
        +                      },
        +                      "type": "array"
        +                    },
        +                    "code": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "detail": {
        +                      "additionalProperties": {
        +                        "type": "number"
        +                      },
        +                      "type": "object"
        +                    },
        +                    "message": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "severity": {
        +                      "enum": [
        +                        "info",
        +                        "advisory",
        +                        "caution"
        +                      ],
        +                      "type": "string"
        +                    }
        +                  },
        +                  "required": [
        +                    "code",
        +                    "severity",
        +                    "message"
        +                  ],
        +                  "type": "object"
        +                },
        +                "type": "array"
        +              }
        +            },
        +            "required": [
        +              "assembly_slug",
        +              "standard",
        +              "parameters_used",
        +              "boq_rows",
        +              "totals_summary",
        +              "text_summary"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      },
        +      "error": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        +            "properties": {
        +              "code": {
        +                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        +                "enum": [
        +                  "RATE_LIMIT_EXCEEDED",
        +                  "TIER_INSUFFICIENT",
        +                  "INVALID_INPUT",
        +                  "SCHEMA_VERSION_MISMATCH",
        +                  "SCHEMA_INVARIANT_VIOLATION",
        +                  "UPSTREAM_TIMEOUT",
        +                  "BACKEND_FAILURE",
        +                  "IP_BLOCKED",
        +                  "RESOURCE_NOT_FOUND",
        +                  "RENDER_FAILURE",
        +                  "OCR_LOW_CONFIDENCE",
        +                  "MANUAL_REVIEW_REQUIRED",
        +                  "ACCEPTANCE_REQUIRED",
        +                  "INVALID_TOKEN"
        +                ],
        +                "type": "string"
        +              },
        +              "details": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "message": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "recoverable": {
        +                "type": "boolean"
        +              },
        +              "retry_after_seconds": {
        +                "anyOf": [
        +                  {
        +                    "minimum": 0,
        +                    "type": "integer"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              }
        +            },
        +            "required": [
        +              "code",
        +              "message",
        +              "recoverable"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      }
        +    },
        +    "required": [
        +      "_meta"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "_meta": {
        +        "additionalProperties": false,
        +        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        +        "properties": {
        +          "deliverables": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        +                "properties": {
        +                  "docx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "dxf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "expires_at": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  },
        +                  "pdf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "xlsx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "expires_at"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "document_id": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "issued_at": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "output_mode": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Surfaces what a trimmed ``output_mode`` withheld from ``data``.\n\nA trimmed mode (``summary`` / ``material_schedule`` / ``boq`` /\n``boq_with_backup``) withholds\nalready-computed fields to keep the chat payload small. The withheld value\nreads to a client agent as \"capability missing\" (the box-culvert \"geometry\nbuilder isn't firing\" scare) rather than \"pared for size\": ``drawing`` and\n``audit_trail`` appear as ``null``, ``boq_rows`` as an empty list ``[]``\n(its type forbids ``null``) — both indistinguishable from a genuine absent\nresult. This names the withheld fields and the exact mode that brings each\nback, so the value is unambiguous. Absent on the default ``full_json`` mode\n— nothing is withheld, nothing to point at.",
        +                "properties": {
        +                  "mode": {
        +                    "enum": [
        +                      "summary",
        +                      "material_schedule",
        +                      "boq",
        +                      "boq_with_backup"
        +                    ],
        +                    "type": "string"
        +                  },
        +                  "omitted_fields": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "minItems": 1,
        +                    "type": "array"
        +                  },
        +                  "retrieve_with": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "mode",
        +                  "omitted_fields",
        +                  "retrieve_with"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "rate_limit_remaining": {
        +            "anyOf": [
        +              {
        +                "minimum": 0,
        +                "type": "integer"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "request_id": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "schema_version": {
        +            "const": "1.0.0",
        +            "default": "1.0.0",
        +            "type": "string"
        +          },
        +          "scope_boundary": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        +                "properties": {
        +                  "not_in_scope": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "produced": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "recommended_companions": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "type": "string"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "produced",
        +                  "not_in_scope"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tier": {
        +            "enum": [
        +              "free",
        +              "paid"
        +            ],
        +            "type": "string"
        +          },
        +          "tier_upgrade": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        +                "properties": {
        +                  "available_tiers": {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        +                      "properties": {
        +                        "billing": {
        +                          "enum": [
        +                            "one_off",
        +                            "monthly",
        +                            "annual"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "currency": {
        +                          "enum": [
        +                            "GBP",
        +                            "SGD",
        +                            "EUR",
        +                            "USD",
        +                            "CAD",
        +                            "AUD",
        +                            "NZD",
        +                            "MYR"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "display_name": {
        +                          "type": "string"
        +                        },
        +                        "price_local": {
        +                          "type": "number"
        +                        },
        +                        "tier_slug": {
        +                          "enum": [
        +                            "7_day_pass",
        +                            "solo",
        +                            "studio",
        +                            "practice"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "unlock_summary": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "tier_slug",
        +                        "display_name",
        +                        "price_local",
        +                        "currency",
        +                        "billing",
        +                        "unlock_summary"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "current_tier": {
        +                    "const": "free",
        +                    "default": "free",
        +                    "type": "string"
        +                  },
        +                  "pass_credit": {
        +                    "anyOf": [
        +                      {
        +                        "additionalProperties": false,
        +                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        +                        "properties": {
        +                          "amount_local": {
        +                            "type": "number"
        +                          },
        +                          "applies_to": {
        +                            "const": "solo_first_month",
        +                            "default": "solo_first_month",
        +                            "type": "string"
        +                          },
        +                          "currency": {
        +                            "type": "string"
        +                          },
        +                          "redeemable_until": {
        +                            "type": "string"
        +                          }
        +                        },
        +                        "required": [
        +                          "amount_local",
        +                          "currency",
        +                          "redeemable_until"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "pricing_url": {
        +                    "default": "https://civilquants.com/pricing",
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "available_tiers"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tos_url": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "upgrade_hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "warranty_disclaimer": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          }
        +        },
        +        "required": [
        +          "request_id",
        +          "issued_at",
        +          "tier"
        +        ],
        +        "type": "object"
        +      },
        +      "data": {
        +        "default": null,
        +        "title": "Data"
        +      },
        +      "error": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        +            "properties": {
        +              "code": {
        +                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        +                "enum": [
        +                  "RATE_LIMIT_EXCEEDED",
        +                  "TIER_INSUFFICIENT",
        +                  "INVALID_INPUT",
        +                  "SCHEMA_VERSION_MISMATCH",
        +                  "SCHEMA_INVARIANT_VIOLATION",
        +                  "UPSTREAM_TIMEOUT",
        +                  "BACKEND_FAILURE",
        +                  "IP_BLOCKED",
        +                  "RESOURCE_NOT_FOUND",
        +                  "RENDER_FAILURE",
        +                  "OCR_LOW_CONFIDENCE",
        +                  "MANUAL_REVIEW_REQUIRED",
        +                  "ACCEPTANCE_REQUIRED",
        +                  "INVALID_TOKEN"
        +                ],
        +                "type": "string"
        +              },
        +              "details": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "message": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "recoverable": {
        +                "type": "boolean"
        +              },
        +              "retry_after_seconds": {
        +                "anyOf": [
        +                  {
        +                    "minimum": 0,
        +                    "type": "integer"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              }
        +            },
        +            "required": [
        +              "code",
        +              "message",
        +              "recoverable"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      }
        +    },
        +    "required": [
        +      "_meta"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedcompute_edge_drain2 fields changed
      • changedInput schema / properties / output_mode / enum
        Previous value: -[
        -  "summary",
        -  "boq",
        -  "boq_with_backup",
        -  "full_json"
        -]New value: +[
        +  "summary",
        +  "material_schedule",
        +  "boq",
        +  "boq_with_backup",
        +  "full_json"
        +]
      • changedOutput schema / properties / result / anyOf
        Previous value: -[
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "_meta": {
        -        "additionalProperties": false,
        -        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        -        "properties": {
        -          "deliverables": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        -                "properties": {
        -                  "docx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "dxf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "expires_at": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  },
        -                  "pdf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "xlsx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "expires_at"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "document_id": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "issued_at": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "output_mode": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Surfaces what a trimmed ``output_mode`` withheld from ``data``.\n\nA trimmed mode (``summary`` / ``boq`` / ``boq_with_backup``) withholds\nalready-computed fields to keep the chat payload small. The withheld value\nreads to a client agent as \"capability missing\" (the box-culvert \"geometry\nbuilder isn't firing\" scare) rather than \"pared for size\": ``drawing`` and\n``audit_trail`` appear as ``null``, ``boq_rows`` as an empty list ``[]``\n(its type forbids ``null``) — both indistinguishable from a genuine absent\nresult. This names the withheld fields and the exact mode that brings each\nback, so the value is unambiguous. Absent on the default ``full_json`` mode\n— nothing is withheld, nothing to point at.",
        -                "properties": {
        -                  "mode": {
        -                    "enum": [
        -                      "summary",
        -                      "boq",
        -                      "boq_with_backup"
        -                    ],
        -                    "type": "string"
        -                  },
        -                  "omitted_fields": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "minItems": 1,
        -                    "type": "array"
        -                  },
        -                  "retrieve_with": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "mode",
        -                  "omitted_fields",
        -                  "retrieve_with"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "rate_limit_remaining": {
        -            "anyOf": [
        -              {
        -                "minimum": 0,
        -                "type": "integer"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "request_id": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "schema_version": {
        -            "const": "1.0.0",
        -            "default": "1.0.0",
        -            "type": "string"
        -          },
        -          "scope_boundary": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        -                "properties": {
        -                  "not_in_scope": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "produced": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "recommended_companions": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "type": "string"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "produced",
        -                  "not_in_scope"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tier": {
        -            "enum": [
        -              "free",
        -              "paid"
        -            ],
        -            "type": "string"
        -          },
        -          "tier_upgrade": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        -                "properties": {
        -                  "available_tiers": {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        -                      "properties": {
        -                        "billing": {
        -                          "enum": [
        -                            "one_off",
        -                            "monthly",
        -                            "annual"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "currency": {
        -                          "enum": [
        -                            "GBP",
        -                            "SGD",
        -                            "EUR",
        -                            "USD",
        -                            "CAD",
        -                            "AUD",
        -                            "NZD",
        -                            "MYR"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "display_name": {
        -                          "type": "string"
        -                        },
        -                        "price_local": {
        -                          "type": "number"
        -                        },
        -                        "tier_slug": {
        -                          "enum": [
        -                            "7_day_pass",
        -                            "solo",
        -                            "studio",
        -                            "practice"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "unlock_summary": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "tier_slug",
        -                        "display_name",
        -                        "price_local",
        -                        "currency",
        -                        "billing",
        -                        "unlock_summary"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "current_tier": {
        -                    "const": "free",
        -                    "default": "free",
        -                    "type": "string"
        -                  },
        -                  "pass_credit": {
        -                    "anyOf": [
        -                      {
        -                        "additionalProperties": false,
        -                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        -                        "properties": {
        -                          "amount_local": {
        -                            "type": "number"
        -                          },
        -                          "applies_to": {
        -                            "const": "solo_first_month",
        -                            "default": "solo_first_month",
        -                            "type": "string"
        -                          },
        -                          "currency": {
        -                            "type": "string"
        -                          },
        -                          "redeemable_until": {
        -                            "type": "string"
        -                          }
        -                        },
        -                        "required": [
        -                          "amount_local",
        -                          "currency",
        -                          "redeemable_until"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "pricing_url": {
        -                    "default": "https://civilquants.com/pricing",
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "available_tiers"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tos_url": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "upgrade_hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "warranty_disclaimer": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          }
        -        },
        -        "required": [
        -          "request_id",
        -          "issued_at",
        -          "tier"
        -        ],
        -        "type": "object"
        -      },
        -      "data": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Schema § 1.1 — the typed payload returned inside `MCPResponse[ComputeResult]`.\n\nFree-tier responses omit `drawings` (the downloadable CAD artefact\npointers — the paid differentiator); the bridge enforces this. The\n`audit_trail` and the inline `drawing` preview are present on BOTH tiers\n(V1 ALIGN / 60th-fire D + C). `text_summary` is bounded to 2000 chars —\nkeeps the LLM-facing summary token-cheap and forces longer narrative into\nBoQ row descriptions where it belongs. `warnings` is the non-fatal\ngeometry advisory list (both tiers).",
        -            "properties": {
        -              "assembly_slug": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "audit_trail": {
        -                "anyOf": [
        -                  {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.7 — paid-tier audit-trail entry.\n\nOne entry per BoQ row; `boq_row_index` ties to the row position in\n`ComputeResult.boq_rows`. `derivation` is the human-readable formula\nwalk-through; `formula` is the optional formal expression.",
        -                      "properties": {
        -                        "boq_row_index": {
        -                          "minimum": 0,
        -                          "type": "integer"
        -                        },
        -                        "derivation": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "formula": {
        -                          "anyOf": [
        -                            {
        -                              "type": "string"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ],
        -                          "default": null
        -                        },
        -                        "id": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "parameters_referenced": {
        -                          "items": {
        -                            "type": "string"
        -                          },
        -                          "type": "array"
        -                        }
        -                      },
        -                      "required": [
        -                        "id",
        -                        "boq_row_index",
        -                        "derivation"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "boq_rows": {
        -                "items": {
        -                  "additionalProperties": false,
        -                  "description": "Schema § 1.3 — a single bill row in the requested standard's format.\n\n`description` is the non-verbatim functional description per spec § 13.9 /\n§ 15 invariant — NEVER reproduces a standard's verbatim clause text.\n`rate` / `amount` ship null because rates are commodity data the customer\nowns; the engine's job is the measurement, not the pricing.",
        -                  "properties": {
        -                    "amount": {
        -                      "anyOf": [
        -                        {
        -                          "type": "number"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "attribution": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "audit_id": {
        -                      "anyOf": [
        -                        {
        -                          "type": "string"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "description": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "quantity": {
        -                      "minimum": 0,
        -                      "type": "number"
        -                    },
        -                    "rate": {
        -                      "anyOf": [
        -                        {
        -                          "type": "number"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "unit": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "work_section": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    }
        -                  },
        -                  "required": [
        -                    "work_section",
        -                    "description",
        -                    "quantity",
        -                    "unit",
        -                    "attribution"
        -                  ],
        -                  "type": "object"
        -                },
        -                "type": "array"
        -              },
        -              "drawing": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": false,
        -                    "description": "Schema § 1.6a — inline server-rendered SVG preview of the geometry.\n\nThe MCP mirror of the web ``/compute`` response's ``drawing`` field\n(``api.schemas.compute.DrawingRef``): the same on-screen dimensioned\ndrawing both tiers see in the workspace, surfaced on the MCP compute\nresponse so a chat client can render it inline (60th-fire item C). This\nis the on-screen preview — present on BOTH tiers per the free/paid\nboundary; the downloadable CAD artefacts (DXF / dimensioned PDF) remain\nthe paid differentiator via the export tools.\n\nDefined here rather than importing ``DrawingRef`` because the web\n``schemas`` package imports back into this module (``schemas.render``),\nso reusing it would create an import cycle — the MCP wire contract keeps\nits own copy, the same pattern as ``BoQRow`` / ``DrawingReference``.",
        -                    "properties": {
        -                      "entity_count": {
        -                        "minimum": 0,
        -                        "type": "integer"
        -                      },
        -                      "svg_b64": {
        -                        "minLength": 1,
        -                        "type": "string"
        -                      },
        -                      "unit_of_drawing": {
        -                        "const": "m",
        -                        "default": "m",
        -                        "type": "string"
        -                      },
        -                      "viewbox_height": {
        -                        "exclusiveMinimum": 0,
        -                        "type": "number"
        -                      },
        -                      "viewbox_width": {
        -                        "exclusiveMinimum": 0,
        -                        "type": "number"
        -                      },
        -                      "viewbox_x": {
        -                        "type": "number"
        -                      },
        -                      "viewbox_y": {
        -                        "type": "number"
        -                      }
        -                    },
        -                    "required": [
        -                      "svg_b64",
        -                      "viewbox_x",
        -                      "viewbox_y",
        -                      "viewbox_width",
        -                      "viewbox_height",
        -                      "entity_count"
        -                    ],
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "drawings": {
        -                "anyOf": [
        -                  {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.6 — paid-tier drawing artefact pointer.\n\n`url` is an R2-signed URL; expiry is carried in `_meta.deliverables.expires_at`\non the envelope (not duplicated here). `layers` is DXF-only; PDF/SVG\ncallers omit it.",
        -                      "properties": {
        -                        "drawing_type": {
        -                          "enum": [
        -                            "section",
        -                            "plan",
        -                            "elevation",
        -                            "isometric",
        -                            "detail"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "format": {
        -                          "enum": [
        -                            "DXF",
        -                            "PDF",
        -                            "SVG"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "layers": {
        -                          "anyOf": [
        -                            {
        -                              "items": {
        -                                "type": "string"
        -                              },
        -                              "type": "array"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ],
        -                          "default": null
        -                        },
        -                        "scale": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "sheet_size": {
        -                          "enum": [
        -                            "A1",
        -                            "A2",
        -                            "A3",
        -                            "A4"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "url": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "drawing_type",
        -                        "format",
        -                        "url",
        -                        "sheet_size",
        -                        "scale"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "parameters_used": {
        -                "additionalProperties": false,
        -                "description": "Schema § 1.2 — the parameter snapshot the engine actually used.\n\nSplits user-supplied values from engine defaults so customers can see\nwhich numbers came from them and which the engine filled in. Every\ndefaulted parameter SHOULD have a corresponding entry in `assumptions`\n— the bridge layer enforces this when wrapping engine output.",
        -                "properties": {
        -                  "assumptions": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "engine_defaults": {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  "user_supplied": {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  }
        -                },
        -                "type": "object"
        -              },
        -              "standard": {
        -                "enum": [
        -                  "CESMM4",
        -                  "NRM2",
        -                  "SMM7",
        -                  "MMHW"
        -                ],
        -                "type": "string"
        -              },
        -              "text_summary": {
        -                "maxLength": 2000,
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "totals_summary": {
        -                "additionalProperties": false,
        -                "description": "Schema § 1.4 — totals_summary as a typed wrapper around the free-form dict.\n\nWire shape is a flat object (`{\"concrete_m3\": {...}, \"rebar_t\": {...}}`).\nWe model it as `RootModel`-equivalent via `model_config(extra=\"allow\")`\n+ a single `__root__`-style `entries` dict. Pydantic v2 recommends\n`RootModel` for free-form roots; using a wrapper class keeps the import\nsurface uniform with the rest of this module.",
        -                "properties": {
        -                  "entries": {
        -                    "additionalProperties": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.4 — single material/work-class total entry.",
        -                      "properties": {
        -                        "quantity": {
        -                          "minimum": 0,
        -                          "type": "number"
        -                        },
        -                        "unit": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "quantity",
        -                        "unit"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "object"
        -                  }
        -                },
        -                "type": "object"
        -              },
        -              "warnings": {
        -                "items": {
        -                  "additionalProperties": false,
        -                  "description": "Schema § 1.8 — a non-fatal geometry advisory (56th-fire T2).\n\nThe wire projection of the engine's `core.GeometryWarning`. Advisory only:\na warning NEVER changes a measured quantity — it flags geometry that is\nvalid but likely a mistake (e.g. a stale dependent-height default). Present\non BOTH tiers — a correctness/safety signal, not a paid feature.",
        -                  "properties": {
        -                    "affected_params": {
        -                      "items": {
        -                        "type": "string"
        -                      },
        -                      "type": "array"
        -                    },
        -                    "code": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "detail": {
        -                      "additionalProperties": {
        -                        "type": "number"
        -                      },
        -                      "type": "object"
        -                    },
        -                    "message": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "severity": {
        -                      "enum": [
        -                        "info",
        -                        "advisory",
        -                        "caution"
        -                      ],
        -                      "type": "string"
        -                    }
        -                  },
        -                  "required": [
        -                    "code",
        -                    "severity",
        -                    "message"
        -                  ],
        -                  "type": "object"
        -                },
        -                "type": "array"
        -              }
        -            },
        -            "required": [
        -              "assembly_slug",
        -              "standard",
        -              "parameters_used",
        -              "boq_rows",
        -              "totals_summary",
        -              "text_summary"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      },
        -      "error": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        -            "properties": {
        -              "code": {
        -                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        -                "enum": [
        -                  "RATE_LIMIT_EXCEEDED",
        -                  "TIER_INSUFFICIENT",
        -                  "INVALID_INPUT",
        -                  "SCHEMA_VERSION_MISMATCH",
        -                  "SCHEMA_INVARIANT_VIOLATION",
        -                  "UPSTREAM_TIMEOUT",
        -                  "BACKEND_FAILURE",
        -                  "IP_BLOCKED",
        -                  "RESOURCE_NOT_FOUND",
        -                  "RENDER_FAILURE",
        -                  "OCR_LOW_CONFIDENCE",
        -                  "MANUAL_REVIEW_REQUIRED",
        -                  "ACCEPTANCE_REQUIRED",
        -                  "INVALID_TOKEN"
        -                ],
        -                "type": "string"
        -              },
        -              "details": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "message": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "recoverable": {
        -                "type": "boolean"
        -              },
        -              "retry_after_seconds": {
        -                "anyOf": [
        -                  {
        -                    "minimum": 0,
        -                    "type": "integer"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              }
        -            },
        -            "required": [
        -              "code",
        -              "message",
        -              "recoverable"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      }
        -    },
        -    "required": [
        -      "_meta"
        -    ],
        -    "type": "object"
        -  },
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "_meta": {
        -        "additionalProperties": false,
        -        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        -        "properties": {
        -          "deliverables": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        -                "properties": {
        -                  "docx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "dxf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "expires_at": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  },
        -                  "pdf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "xlsx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "expires_at"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "document_id": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "issued_at": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "output_mode": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Surfaces what a trimmed ``output_mode`` withheld from ``data``.\n\nA trimmed mode (``summary`` / ``boq`` / ``boq_with_backup``) withholds\nalready-computed fields to keep the chat payload small. The withheld value\nreads to a client agent as \"capability missing\" (the box-culvert \"geometry\nbuilder isn't firing\" scare) rather than \"pared for size\": ``drawing`` and\n``audit_trail`` appear as ``null``, ``boq_rows`` as an empty list ``[]``\n(its type forbids ``null``) — both indistinguishable from a genuine absent\nresult. This names the withheld fields and the exact mode that brings each\nback, so the value is unambiguous. Absent on the default ``full_json`` mode\n— nothing is withheld, nothing to point at.",
        -                "properties": {
        -                  "mode": {
        -                    "enum": [
        -                      "summary",
        -                      "boq",
        -                      "boq_with_backup"
        -                    ],
        -                    "type": "string"
        -                  },
        -                  "omitted_fields": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "minItems": 1,
        -                    "type": "array"
        -                  },
        -                  "retrieve_with": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "mode",
        -                  "omitted_fields",
        -                  "retrieve_with"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "rate_limit_remaining": {
        -            "anyOf": [
        -              {
        -                "minimum": 0,
        -                "type": "integer"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "request_id": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "schema_version": {
        -            "const": "1.0.0",
        -            "default": "1.0.0",
        -            "type": "string"
        -          },
        -          "scope_boundary": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        -                "properties": {
        -                  "not_in_scope": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "produced": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "recommended_companions": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "type": "string"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "produced",
        -                  "not_in_scope"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tier": {
        -            "enum": [
        -              "free",
        -              "paid"
        -            ],
        -            "type": "string"
        -          },
        -          "tier_upgrade": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        -                "properties": {
        -                  "available_tiers": {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        -                      "properties": {
        -                        "billing": {
        -                          "enum": [
        -                            "one_off",
        -                            "monthly",
        -                            "annual"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "currency": {
        -                          "enum": [
        -                            "GBP",
        -                            "SGD",
        -                            "EUR",
        -                            "USD",
        -                            "CAD",
        -                            "AUD",
        -                            "NZD",
        -                            "MYR"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "display_name": {
        -                          "type": "string"
        -                        },
        -                        "price_local": {
        -                          "type": "number"
        -                        },
        -                        "tier_slug": {
        -                          "enum": [
        -                            "7_day_pass",
        -                            "solo",
        -                            "studio",
        -                            "practice"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "unlock_summary": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "tier_slug",
        -                        "display_name",
        -                        "price_local",
        -                        "currency",
        -                        "billing",
        -                        "unlock_summary"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "current_tier": {
        -                    "const": "free",
        -                    "default": "free",
        -                    "type": "string"
        -                  },
        -                  "pass_credit": {
        -                    "anyOf": [
        -                      {
        -                        "additionalProperties": false,
        -                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        -                        "properties": {
        -                          "amount_local": {
        -                            "type": "number"
        -                          },
        -                          "applies_to": {
        -                            "const": "solo_first_month",
        -                            "default": "solo_first_month",
        -                            "type": "string"
        -                          },
        -                          "currency": {
        -                            "type": "string"
        -                          },
        -                          "redeemable_until": {
        -                            "type": "string"
        -                          }
        -                        },
        -                        "required": [
        -                          "amount_local",
        -                          "currency",
        -                          "redeemable_until"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "pricing_url": {
        -                    "default": "https://civilquants.com/pricing",
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "available_tiers"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tos_url": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "upgrade_hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "warranty_disclaimer": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          }
        -        },
        -        "required": [
        -          "request_id",
        -          "issued_at",
        -          "tier"
        -        ],
        -        "type": "object"
        -      },
        -      "data": {
        -        "default": null,
        -        "title": "Data"
        -      },
        -      "error": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        -            "properties": {
        -              "code": {
        -                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        -                "enum": [
        -                  "RATE_LIMIT_EXCEEDED",
        -                  "TIER_INSUFFICIENT",
        -                  "INVALID_INPUT",
        -                  "SCHEMA_VERSION_MISMATCH",
        -                  "SCHEMA_INVARIANT_VIOLATION",
        -                  "UPSTREAM_TIMEOUT",
        -                  "BACKEND_FAILURE",
        -                  "IP_BLOCKED",
        -                  "RESOURCE_NOT_FOUND",
        -                  "RENDER_FAILURE",
        -                  "OCR_LOW_CONFIDENCE",
        -                  "MANUAL_REVIEW_REQUIRED",
        -                  "ACCEPTANCE_REQUIRED",
        -                  "INVALID_TOKEN"
        -                ],
        -                "type": "string"
        -              },
        -              "details": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "message": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "recoverable": {
        -                "type": "boolean"
        -              },
        -              "retry_after_seconds": {
        -                "anyOf": [
        -                  {
        -                    "minimum": 0,
        -                    "type": "integer"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              }
        -            },
        -            "required": [
        -              "code",
        -              "message",
        -              "recoverable"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      }
        -    },
        -    "required": [
        -      "_meta"
        -    ],
        -    "type": "object"
        -  }
        -]New value: +[
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "_meta": {
        +        "additionalProperties": false,
        +        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        +        "properties": {
        +          "deliverables": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        +                "properties": {
        +                  "docx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "dxf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "expires_at": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  },
        +                  "pdf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "xlsx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "expires_at"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "document_id": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "issued_at": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "output_mode": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Surfaces what a trimmed ``output_mode`` withheld from ``data``.\n\nA trimmed mode (``summary`` / ``material_schedule`` / ``boq`` /\n``boq_with_backup``) withholds\nalready-computed fields to keep the chat payload small. The withheld value\nreads to a client agent as \"capability missing\" (the box-culvert \"geometry\nbuilder isn't firing\" scare) rather than \"pared for size\": ``drawing`` and\n``audit_trail`` appear as ``null``, ``boq_rows`` as an empty list ``[]``\n(its type forbids ``null``) — both indistinguishable from a genuine absent\nresult. This names the withheld fields and the exact mode that brings each\nback, so the value is unambiguous. Absent on the default ``full_json`` mode\n— nothing is withheld, nothing to point at.",
        +                "properties": {
        +                  "mode": {
        +                    "enum": [
        +                      "summary",
        +                      "material_schedule",
        +                      "boq",
        +                      "boq_with_backup"
        +                    ],
        +                    "type": "string"
        +                  },
        +                  "omitted_fields": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "minItems": 1,
        +                    "type": "array"
        +                  },
        +                  "retrieve_with": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "mode",
        +                  "omitted_fields",
        +                  "retrieve_with"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "rate_limit_remaining": {
        +            "anyOf": [
        +              {
        +                "minimum": 0,
        +                "type": "integer"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "request_id": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "schema_version": {
        +            "const": "1.0.0",
        +            "default": "1.0.0",
        +            "type": "string"
        +          },
        +          "scope_boundary": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        +                "properties": {
        +                  "not_in_scope": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "produced": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "recommended_companions": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "type": "string"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "produced",
        +                  "not_in_scope"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tier": {
        +            "enum": [
        +              "free",
        +              "paid"
        +            ],
        +            "type": "string"
        +          },
        +          "tier_upgrade": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        +                "properties": {
        +                  "available_tiers": {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        +                      "properties": {
        +                        "billing": {
        +                          "enum": [
        +                            "one_off",
        +                            "monthly",
        +                            "annual"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "currency": {
        +                          "enum": [
        +                            "GBP",
        +                            "SGD",
        +                            "EUR",
        +                            "USD",
        +                            "CAD",
        +                            "AUD",
        +                            "NZD",
        +                            "MYR"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "display_name": {
        +                          "type": "string"
        +                        },
        +                        "price_local": {
        +                          "type": "number"
        +                        },
        +                        "tier_slug": {
        +                          "enum": [
        +                            "7_day_pass",
        +                            "solo",
        +                            "studio",
        +                            "practice"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "unlock_summary": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "tier_slug",
        +                        "display_name",
        +                        "price_local",
        +                        "currency",
        +                        "billing",
        +                        "unlock_summary"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "current_tier": {
        +                    "const": "free",
        +                    "default": "free",
        +                    "type": "string"
        +                  },
        +                  "pass_credit": {
        +                    "anyOf": [
        +                      {
        +                        "additionalProperties": false,
        +                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        +                        "properties": {
        +                          "amount_local": {
        +                            "type": "number"
        +                          },
        +                          "applies_to": {
        +                            "const": "solo_first_month",
        +                            "default": "solo_first_month",
        +                            "type": "string"
        +                          },
        +                          "currency": {
        +                            "type": "string"
        +                          },
        +                          "redeemable_until": {
        +                            "type": "string"
        +                          }
        +                        },
        +                        "required": [
        +                          "amount_local",
        +                          "currency",
        +                          "redeemable_until"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "pricing_url": {
        +                    "default": "https://civilquants.com/pricing",
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "available_tiers"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tos_url": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "upgrade_hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "warranty_disclaimer": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          }
        +        },
        +        "required": [
        +          "request_id",
        +          "issued_at",
        +          "tier"
        +        ],
        +        "type": "object"
        +      },
        +      "data": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Schema § 1.1 — the typed payload returned inside `MCPResponse[ComputeResult]`.\n\nFree-tier responses omit `drawings` (the downloadable CAD artefact\npointers — the paid differentiator); the bridge enforces this. The\n`audit_trail` and the inline `drawing` preview are present on BOTH tiers\n(V1 ALIGN / 60th-fire D + C). `text_summary` is bounded to 2000 chars —\nkeeps the LLM-facing summary token-cheap and forces longer narrative into\nBoQ row descriptions where it belongs. `warnings` is the non-fatal\ngeometry advisory list (both tiers).",
        +            "properties": {
        +              "assembly_slug": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "audit_trail": {
        +                "anyOf": [
        +                  {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.7 — paid-tier audit-trail entry.\n\nOne entry per BoQ row; `boq_row_index` ties to the row position in\n`ComputeResult.boq_rows`. `derivation` is the human-readable formula\nwalk-through; `formula` is the optional formal expression.",
        +                      "properties": {
        +                        "boq_row_index": {
        +                          "minimum": 0,
        +                          "type": "integer"
        +                        },
        +                        "derivation": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "formula": {
        +                          "anyOf": [
        +                            {
        +                              "type": "string"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ],
        +                          "default": null
        +                        },
        +                        "id": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "parameters_referenced": {
        +                          "items": {
        +                            "type": "string"
        +                          },
        +                          "type": "array"
        +                        }
        +                      },
        +                      "required": [
        +                        "id",
        +                        "boq_row_index",
        +                        "derivation"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "boq_rows": {
        +                "items": {
        +                  "additionalProperties": false,
        +                  "description": "Schema § 1.3 — a single bill row in the requested standard's format.\n\n`description` is the non-verbatim functional description per spec § 13.9 /\n§ 15 invariant — NEVER reproduces a standard's verbatim clause text.\n`rate` / `amount` ship null because rates are commodity data the customer\nowns; the engine's job is the measurement, not the pricing.",
        +                  "properties": {
        +                    "amount": {
        +                      "anyOf": [
        +                        {
        +                          "type": "number"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "attribution": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "audit_id": {
        +                      "anyOf": [
        +                        {
        +                          "type": "string"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "description": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "quantity": {
        +                      "minimum": 0,
        +                      "type": "number"
        +                    },
        +                    "rate": {
        +                      "anyOf": [
        +                        {
        +                          "type": "number"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "unit": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "work_section": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    }
        +                  },
        +                  "required": [
        +                    "work_section",
        +                    "description",
        +                    "quantity",
        +                    "unit",
        +                    "attribution"
        +                  ],
        +                  "type": "object"
        +                },
        +                "type": "array"
        +              },
        +              "drawing": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": false,
        +                    "description": "Schema § 1.6a — inline server-rendered SVG preview of the geometry.\n\nThe MCP mirror of the web ``/compute`` response's ``drawing`` field\n(``api.schemas.compute.DrawingRef``): the same on-screen dimensioned\ndrawing both tiers see in the workspace, surfaced on the MCP compute\nresponse so a chat client can render it inline (60th-fire item C). This\nis the on-screen preview — present on BOTH tiers per the free/paid\nboundary; the downloadable CAD artefacts (DXF / dimensioned PDF) remain\nthe paid differentiator via the export tools.\n\nDefined here rather than importing ``DrawingRef`` because the web\n``schemas`` package imports back into this module (``schemas.render``),\nso reusing it would create an import cycle — the MCP wire contract keeps\nits own copy, the same pattern as ``BoQRow`` / ``DrawingReference``.",
        +                    "properties": {
        +                      "entity_count": {
        +                        "minimum": 0,
        +                        "type": "integer"
        +                      },
        +                      "svg_b64": {
        +                        "minLength": 1,
        +                        "type": "string"
        +                      },
        +                      "unit_of_drawing": {
        +                        "const": "m",
        +                        "default": "m",
        +                        "type": "string"
        +                      },
        +                      "viewbox_height": {
        +                        "exclusiveMinimum": 0,
        +                        "type": "number"
        +                      },
        +                      "viewbox_width": {
        +                        "exclusiveMinimum": 0,
        +                        "type": "number"
        +                      },
        +                      "viewbox_x": {
        +                        "type": "number"
        +                      },
        +                      "viewbox_y": {
        +                        "type": "number"
        +                      }
        +                    },
        +                    "required": [
        +                      "svg_b64",
        +                      "viewbox_x",
        +                      "viewbox_y",
        +                      "viewbox_width",
        +                      "viewbox_height",
        +                      "entity_count"
        +                    ],
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "drawings": {
        +                "anyOf": [
        +                  {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.6 — paid-tier drawing artefact pointer.\n\n`url` is an R2-signed URL; expiry is carried in `_meta.deliverables.expires_at`\non the envelope (not duplicated here). `layers` is DXF-only; PDF/SVG\ncallers omit it.",
        +                      "properties": {
        +                        "drawing_type": {
        +                          "enum": [
        +                            "section",
        +                            "plan",
        +                            "elevation",
        +                            "isometric",
        +                            "detail"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "format": {
        +                          "enum": [
        +                            "DXF",
        +                            "PDF",
        +                            "SVG"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "layers": {
        +                          "anyOf": [
        +                            {
        +                              "items": {
        +                                "type": "string"
        +                              },
        +                              "type": "array"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ],
        +                          "default": null
        +                        },
        +                        "scale": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "sheet_size": {
        +                          "enum": [
        +                            "A1",
        +                            "A2",
        +                            "A3",
        +                            "A4"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "url": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "drawing_type",
        +                        "format",
        +                        "url",
        +                        "sheet_size",
        +                        "scale"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "parameters_used": {
        +                "additionalProperties": false,
        +                "description": "Schema § 1.2 — the parameter snapshot the engine actually used.\n\nSplits user-supplied values from engine defaults so customers can see\nwhich numbers came from them and which the engine filled in. Every\ndefaulted parameter SHOULD have a corresponding entry in `assumptions`\n— the bridge layer enforces this when wrapping engine output.",
        +                "properties": {
        +                  "assumptions": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "engine_defaults": {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  "user_supplied": {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  }
        +                },
        +                "type": "object"
        +              },
        +              "standard": {
        +                "enum": [
        +                  "CESMM4",
        +                  "NRM2",
        +                  "SMM7",
        +                  "MMHW"
        +                ],
        +                "type": "string"
        +              },
        +              "text_summary": {
        +                "maxLength": 2000,
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "totals_summary": {
        +                "additionalProperties": false,
        +                "description": "Schema § 1.4 — totals_summary as a typed wrapper around the free-form dict.\n\nWire shape is a flat object (`{\"concrete_m3\": {...}, \"rebar_t\": {...}}`).\nWe model it as `RootModel`-equivalent via `model_config(extra=\"allow\")`\n+ a single `__root__`-style `entries` dict. Pydantic v2 recommends\n`RootModel` for free-form roots; using a wrapper class keeps the import\nsurface uniform with the rest of this module.",
        +                "properties": {
        +                  "entries": {
        +                    "additionalProperties": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.4 — single material/work-class total entry.",
        +                      "properties": {
        +                        "quantity": {
        +                          "minimum": 0,
        +                          "type": "number"
        +                        },
        +                        "unit": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "quantity",
        +                        "unit"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "object"
        +                  }
        +                },
        +                "type": "object"
        +              },
        +              "warnings": {
        +                "items": {
        +                  "additionalProperties": false,
        +                  "description": "Schema § 1.8 — a non-fatal geometry advisory (56th-fire T2).\n\nThe wire projection of the engine's `core.GeometryWarning`. Advisory only:\na warning NEVER changes a measured quantity — it flags geometry that is\nvalid but likely a mistake (e.g. a stale dependent-height default). Present\non BOTH tiers — a correctness/safety signal, not a paid feature.",
        +                  "properties": {
        +                    "affected_params": {
        +                      "items": {
        +                        "type": "string"
        +                      },
        +                      "type": "array"
        +                    },
        +                    "code": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "detail": {
        +                      "additionalProperties": {
        +                        "type": "number"
        +                      },
        +                      "type": "object"
        +                    },
        +                    "message": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "severity": {
        +                      "enum": [
        +                        "info",
        +                        "advisory",
        +                        "caution"
        +                      ],
        +                      "type": "string"
        +                    }
        +                  },
        +                  "required": [
        +                    "code",
        +                    "severity",
        +                    "message"
        +                  ],
        +                  "type": "object"
        +                },
        +                "type": "array"
        +              }
        +            },
        +            "required": [
        +              "assembly_slug",
        +              "standard",
        +              "parameters_used",
        +              "boq_rows",
        +              "totals_summary",
        +              "text_summary"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      },
        +      "error": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        +            "properties": {
        +              "code": {
        +                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        +                "enum": [
        +                  "RATE_LIMIT_EXCEEDED",
        +                  "TIER_INSUFFICIENT",
        +                  "INVALID_INPUT",
        +                  "SCHEMA_VERSION_MISMATCH",
        +                  "SCHEMA_INVARIANT_VIOLATION",
        +                  "UPSTREAM_TIMEOUT",
        +                  "BACKEND_FAILURE",
        +                  "IP_BLOCKED",
        +                  "RESOURCE_NOT_FOUND",
        +                  "RENDER_FAILURE",
        +                  "OCR_LOW_CONFIDENCE",
        +                  "MANUAL_REVIEW_REQUIRED",
        +                  "ACCEPTANCE_REQUIRED",
        +                  "INVALID_TOKEN"
        +                ],
        +                "type": "string"
        +              },
        +              "details": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "message": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "recoverable": {
        +                "type": "boolean"
        +              },
        +              "retry_after_seconds": {
        +                "anyOf": [
        +                  {
        +                    "minimum": 0,
        +                    "type": "integer"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              }
        +            },
        +            "required": [
        +              "code",
        +              "message",
        +              "recoverable"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      }
        +    },
        +    "required": [
        +      "_meta"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "_meta": {
        +        "additionalProperties": false,
        +        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        +        "properties": {
        +          "deliverables": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        +                "properties": {
        +                  "docx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "dxf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "expires_at": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  },
        +                  "pdf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "xlsx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "expires_at"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "document_id": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "issued_at": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "output_mode": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Surfaces what a trimmed ``output_mode`` withheld from ``data``.\n\nA trimmed mode (``summary`` / ``material_schedule`` / ``boq`` /\n``boq_with_backup``) withholds\nalready-computed fields to keep the chat payload small. The withheld value\nreads to a client agent as \"capability missing\" (the box-culvert \"geometry\nbuilder isn't firing\" scare) rather than \"pared for size\": ``drawing`` and\n``audit_trail`` appear as ``null``, ``boq_rows`` as an empty list ``[]``\n(its type forbids ``null``) — both indistinguishable from a genuine absent\nresult. This names the withheld fields and the exact mode that brings each\nback, so the value is unambiguous. Absent on the default ``full_json`` mode\n— nothing is withheld, nothing to point at.",
        +                "properties": {
        +                  "mode": {
        +                    "enum": [
        +                      "summary",
        +                      "material_schedule",
        +                      "boq",
        +                      "boq_with_backup"
        +                    ],
        +                    "type": "string"
        +                  },
        +                  "omitted_fields": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "minItems": 1,
        +                    "type": "array"
        +                  },
        +                  "retrieve_with": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "mode",
        +                  "omitted_fields",
        +                  "retrieve_with"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "rate_limit_remaining": {
        +            "anyOf": [
        +              {
        +                "minimum": 0,
        +                "type": "integer"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "request_id": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "schema_version": {
        +            "const": "1.0.0",
        +            "default": "1.0.0",
        +            "type": "string"
        +          },
        +          "scope_boundary": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        +                "properties": {
        +                  "not_in_scope": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "produced": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "recommended_companions": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "type": "string"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "produced",
        +                  "not_in_scope"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tier": {
        +            "enum": [
        +              "free",
        +              "paid"
        +            ],
        +            "type": "string"
        +          },
        +          "tier_upgrade": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        +                "properties": {
        +                  "available_tiers": {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        +                      "properties": {
        +                        "billing": {
        +                          "enum": [
        +                            "one_off",
        +                            "monthly",
        +                            "annual"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "currency": {
        +                          "enum": [
        +                            "GBP",
        +                            "SGD",
        +                            "EUR",
        +                            "USD",
        +                            "CAD",
        +                            "AUD",
        +                            "NZD",
        +                            "MYR"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "display_name": {
        +                          "type": "string"
        +                        },
        +                        "price_local": {
        +                          "type": "number"
        +                        },
        +                        "tier_slug": {
        +                          "enum": [
        +                            "7_day_pass",
        +                            "solo",
        +                            "studio",
        +                            "practice"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "unlock_summary": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "tier_slug",
        +                        "display_name",
        +                        "price_local",
        +                        "currency",
        +                        "billing",
        +                        "unlock_summary"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "current_tier": {
        +                    "const": "free",
        +                    "default": "free",
        +                    "type": "string"
        +                  },
        +                  "pass_credit": {
        +                    "anyOf": [
        +                      {
        +                        "additionalProperties": false,
        +                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        +                        "properties": {
        +                          "amount_local": {
        +                            "type": "number"
        +                          },
        +                          "applies_to": {
        +                            "const": "solo_first_month",
        +                            "default": "solo_first_month",
        +                            "type": "string"
        +                          },
        +                          "currency": {
        +                            "type": "string"
        +                          },
        +                          "redeemable_until": {
        +                            "type": "string"
        +                          }
        +                        },
        +                        "required": [
        +                          "amount_local",
        +                          "currency",
        +                          "redeemable_until"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "pricing_url": {
        +                    "default": "https://civilquants.com/pricing",
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "available_tiers"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tos_url": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "upgrade_hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "warranty_disclaimer": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          }
        +        },
        +        "required": [
        +          "request_id",
        +          "issued_at",
        +          "tier"
        +        ],
        +        "type": "object"
        +      },
        +      "data": {
        +        "default": null,
        +        "title": "Data"
        +      },
        +      "error": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        +            "properties": {
        +              "code": {
        +                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        +                "enum": [
        +                  "RATE_LIMIT_EXCEEDED",
        +                  "TIER_INSUFFICIENT",
        +                  "INVALID_INPUT",
        +                  "SCHEMA_VERSION_MISMATCH",
        +                  "SCHEMA_INVARIANT_VIOLATION",
        +                  "UPSTREAM_TIMEOUT",
        +                  "BACKEND_FAILURE",
        +                  "IP_BLOCKED",
        +                  "RESOURCE_NOT_FOUND",
        +                  "RENDER_FAILURE",
        +                  "OCR_LOW_CONFIDENCE",
        +                  "MANUAL_REVIEW_REQUIRED",
        +                  "ACCEPTANCE_REQUIRED",
        +                  "INVALID_TOKEN"
        +                ],
        +                "type": "string"
        +              },
        +              "details": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "message": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "recoverable": {
        +                "type": "boolean"
        +              },
        +              "retry_after_seconds": {
        +                "anyOf": [
        +                  {
        +                    "minimum": 0,
        +                    "type": "integer"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              }
        +            },
        +            "required": [
        +              "code",
        +              "message",
        +              "recoverable"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      }
        +    },
        +    "required": [
        +      "_meta"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedcompute_embankment_cross_section2 fields changed
      • changedInput schema / properties / output_mode / enum
        Previous value: -[
        -  "summary",
        -  "boq",
        -  "boq_with_backup",
        -  "full_json"
        -]New value: +[
        +  "summary",
        +  "material_schedule",
        +  "boq",
        +  "boq_with_backup",
        +  "full_json"
        +]
      • changedOutput schema / properties / result / anyOf
        Previous value: -[
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "_meta": {
        -        "additionalProperties": false,
        -        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        -        "properties": {
        -          "deliverables": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        -                "properties": {
        -                  "docx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "dxf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "expires_at": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  },
        -                  "pdf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "xlsx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "expires_at"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "document_id": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "issued_at": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "output_mode": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Surfaces what a trimmed ``output_mode`` withheld from ``data``.\n\nA trimmed mode (``summary`` / ``boq`` / ``boq_with_backup``) withholds\nalready-computed fields to keep the chat payload small. The withheld value\nreads to a client agent as \"capability missing\" (the box-culvert \"geometry\nbuilder isn't firing\" scare) rather than \"pared for size\": ``drawing`` and\n``audit_trail`` appear as ``null``, ``boq_rows`` as an empty list ``[]``\n(its type forbids ``null``) — both indistinguishable from a genuine absent\nresult. This names the withheld fields and the exact mode that brings each\nback, so the value is unambiguous. Absent on the default ``full_json`` mode\n— nothing is withheld, nothing to point at.",
        -                "properties": {
        -                  "mode": {
        -                    "enum": [
        -                      "summary",
        -                      "boq",
        -                      "boq_with_backup"
        -                    ],
        -                    "type": "string"
        -                  },
        -                  "omitted_fields": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "minItems": 1,
        -                    "type": "array"
        -                  },
        -                  "retrieve_with": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "mode",
        -                  "omitted_fields",
        -                  "retrieve_with"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "rate_limit_remaining": {
        -            "anyOf": [
        -              {
        -                "minimum": 0,
        -                "type": "integer"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "request_id": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "schema_version": {
        -            "const": "1.0.0",
        -            "default": "1.0.0",
        -            "type": "string"
        -          },
        -          "scope_boundary": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        -                "properties": {
        -                  "not_in_scope": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "produced": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "recommended_companions": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "type": "string"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "produced",
        -                  "not_in_scope"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tier": {
        -            "enum": [
        -              "free",
        -              "paid"
        -            ],
        -            "type": "string"
        -          },
        -          "tier_upgrade": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        -                "properties": {
        -                  "available_tiers": {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        -                      "properties": {
        -                        "billing": {
        -                          "enum": [
        -                            "one_off",
        -                            "monthly",
        -                            "annual"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "currency": {
        -                          "enum": [
        -                            "GBP",
        -                            "SGD",
        -                            "EUR",
        -                            "USD",
        -                            "CAD",
        -                            "AUD",
        -                            "NZD",
        -                            "MYR"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "display_name": {
        -                          "type": "string"
        -                        },
        -                        "price_local": {
        -                          "type": "number"
        -                        },
        -                        "tier_slug": {
        -                          "enum": [
        -                            "7_day_pass",
        -                            "solo",
        -                            "studio",
        -                            "practice"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "unlock_summary": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "tier_slug",
        -                        "display_name",
        -                        "price_local",
        -                        "currency",
        -                        "billing",
        -                        "unlock_summary"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "current_tier": {
        -                    "const": "free",
        -                    "default": "free",
        -                    "type": "string"
        -                  },
        -                  "pass_credit": {
        -                    "anyOf": [
        -                      {
        -                        "additionalProperties": false,
        -                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        -                        "properties": {
        -                          "amount_local": {
        -                            "type": "number"
        -                          },
        -                          "applies_to": {
        -                            "const": "solo_first_month",
        -                            "default": "solo_first_month",
        -                            "type": "string"
        -                          },
        -                          "currency": {
        -                            "type": "string"
        -                          },
        -                          "redeemable_until": {
        -                            "type": "string"
        -                          }
        -                        },
        -                        "required": [
        -                          "amount_local",
        -                          "currency",
        -                          "redeemable_until"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "pricing_url": {
        -                    "default": "https://civilquants.com/pricing",
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "available_tiers"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tos_url": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "upgrade_hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "warranty_disclaimer": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          }
        -        },
        -        "required": [
        -          "request_id",
        -          "issued_at",
        -          "tier"
        -        ],
        -        "type": "object"
        -      },
        -      "data": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Schema § 1.1 — the typed payload returned inside `MCPResponse[ComputeResult]`.\n\nFree-tier responses omit `drawings` (the downloadable CAD artefact\npointers — the paid differentiator); the bridge enforces this. The\n`audit_trail` and the inline `drawing` preview are present on BOTH tiers\n(V1 ALIGN / 60th-fire D + C). `text_summary` is bounded to 2000 chars —\nkeeps the LLM-facing summary token-cheap and forces longer narrative into\nBoQ row descriptions where it belongs. `warnings` is the non-fatal\ngeometry advisory list (both tiers).",
        -            "properties": {
        -              "assembly_slug": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "audit_trail": {
        -                "anyOf": [
        -                  {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.7 — paid-tier audit-trail entry.\n\nOne entry per BoQ row; `boq_row_index` ties to the row position in\n`ComputeResult.boq_rows`. `derivation` is the human-readable formula\nwalk-through; `formula` is the optional formal expression.",
        -                      "properties": {
        -                        "boq_row_index": {
        -                          "minimum": 0,
        -                          "type": "integer"
        -                        },
        -                        "derivation": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "formula": {
        -                          "anyOf": [
        -                            {
        -                              "type": "string"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ],
        -                          "default": null
        -                        },
        -                        "id": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "parameters_referenced": {
        -                          "items": {
        -                            "type": "string"
        -                          },
        -                          "type": "array"
        -                        }
        -                      },
        -                      "required": [
        -                        "id",
        -                        "boq_row_index",
        -                        "derivation"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "boq_rows": {
        -                "items": {
        -                  "additionalProperties": false,
        -                  "description": "Schema § 1.3 — a single bill row in the requested standard's format.\n\n`description` is the non-verbatim functional description per spec § 13.9 /\n§ 15 invariant — NEVER reproduces a standard's verbatim clause text.\n`rate` / `amount` ship null because rates are commodity data the customer\nowns; the engine's job is the measurement, not the pricing.",
        -                  "properties": {
        -                    "amount": {
        -                      "anyOf": [
        -                        {
        -                          "type": "number"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "attribution": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "audit_id": {
        -                      "anyOf": [
        -                        {
        -                          "type": "string"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "description": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "quantity": {
        -                      "minimum": 0,
        -                      "type": "number"
        -                    },
        -                    "rate": {
        -                      "anyOf": [
        -                        {
        -                          "type": "number"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "unit": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "work_section": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    }
        -                  },
        -                  "required": [
        -                    "work_section",
        -                    "description",
        -                    "quantity",
        -                    "unit",
        -                    "attribution"
        -                  ],
        -                  "type": "object"
        -                },
        -                "type": "array"
        -              },
        -              "drawing": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": false,
        -                    "description": "Schema § 1.6a — inline server-rendered SVG preview of the geometry.\n\nThe MCP mirror of the web ``/compute`` response's ``drawing`` field\n(``api.schemas.compute.DrawingRef``): the same on-screen dimensioned\ndrawing both tiers see in the workspace, surfaced on the MCP compute\nresponse so a chat client can render it inline (60th-fire item C). This\nis the on-screen preview — present on BOTH tiers per the free/paid\nboundary; the downloadable CAD artefacts (DXF / dimensioned PDF) remain\nthe paid differentiator via the export tools.\n\nDefined here rather than importing ``DrawingRef`` because the web\n``schemas`` package imports back into this module (``schemas.render``),\nso reusing it would create an import cycle — the MCP wire contract keeps\nits own copy, the same pattern as ``BoQRow`` / ``DrawingReference``.",
        -                    "properties": {
        -                      "entity_count": {
        -                        "minimum": 0,
        -                        "type": "integer"
        -                      },
        -                      "svg_b64": {
        -                        "minLength": 1,
        -                        "type": "string"
        -                      },
        -                      "unit_of_drawing": {
        -                        "const": "m",
        -                        "default": "m",
        -                        "type": "string"
        -                      },
        -                      "viewbox_height": {
        -                        "exclusiveMinimum": 0,
        -                        "type": "number"
        -                      },
        -                      "viewbox_width": {
        -                        "exclusiveMinimum": 0,
        -                        "type": "number"
        -                      },
        -                      "viewbox_x": {
        -                        "type": "number"
        -                      },
        -                      "viewbox_y": {
        -                        "type": "number"
        -                      }
        -                    },
        -                    "required": [
        -                      "svg_b64",
        -                      "viewbox_x",
        -                      "viewbox_y",
        -                      "viewbox_width",
        -                      "viewbox_height",
        -                      "entity_count"
        -                    ],
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "drawings": {
        -                "anyOf": [
        -                  {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.6 — paid-tier drawing artefact pointer.\n\n`url` is an R2-signed URL; expiry is carried in `_meta.deliverables.expires_at`\non the envelope (not duplicated here). `layers` is DXF-only; PDF/SVG\ncallers omit it.",
        -                      "properties": {
        -                        "drawing_type": {
        -                          "enum": [
        -                            "section",
        -                            "plan",
        -                            "elevation",
        -                            "isometric",
        -                            "detail"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "format": {
        -                          "enum": [
        -                            "DXF",
        -                            "PDF",
        -                            "SVG"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "layers": {
        -                          "anyOf": [
        -                            {
        -                              "items": {
        -                                "type": "string"
        -                              },
        -                              "type": "array"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ],
        -                          "default": null
        -                        },
        -                        "scale": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "sheet_size": {
        -                          "enum": [
        -                            "A1",
        -                            "A2",
        -                            "A3",
        -                            "A4"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "url": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "drawing_type",
        -                        "format",
        -                        "url",
        -                        "sheet_size",
        -                        "scale"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "parameters_used": {
        -                "additionalProperties": false,
        -                "description": "Schema § 1.2 — the parameter snapshot the engine actually used.\n\nSplits user-supplied values from engine defaults so customers can see\nwhich numbers came from them and which the engine filled in. Every\ndefaulted parameter SHOULD have a corresponding entry in `assumptions`\n— the bridge layer enforces this when wrapping engine output.",
        -                "properties": {
        -                  "assumptions": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "engine_defaults": {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  "user_supplied": {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  }
        -                },
        -                "type": "object"
        -              },
        -              "standard": {
        -                "enum": [
        -                  "CESMM4",
        -                  "NRM2",
        -                  "SMM7",
        -                  "MMHW"
        -                ],
        -                "type": "string"
        -              },
        -              "text_summary": {
        -                "maxLength": 2000,
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "totals_summary": {
        -                "additionalProperties": false,
        -                "description": "Schema § 1.4 — totals_summary as a typed wrapper around the free-form dict.\n\nWire shape is a flat object (`{\"concrete_m3\": {...}, \"rebar_t\": {...}}`).\nWe model it as `RootModel`-equivalent via `model_config(extra=\"allow\")`\n+ a single `__root__`-style `entries` dict. Pydantic v2 recommends\n`RootModel` for free-form roots; using a wrapper class keeps the import\nsurface uniform with the rest of this module.",
        -                "properties": {
        -                  "entries": {
        -                    "additionalProperties": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.4 — single material/work-class total entry.",
        -                      "properties": {
        -                        "quantity": {
        -                          "minimum": 0,
        -                          "type": "number"
        -                        },
        -                        "unit": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "quantity",
        -                        "unit"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "object"
        -                  }
        -                },
        -                "type": "object"
        -              },
        -              "warnings": {
        -                "items": {
        -                  "additionalProperties": false,
        -                  "description": "Schema § 1.8 — a non-fatal geometry advisory (56th-fire T2).\n\nThe wire projection of the engine's `core.GeometryWarning`. Advisory only:\na warning NEVER changes a measured quantity — it flags geometry that is\nvalid but likely a mistake (e.g. a stale dependent-height default). Present\non BOTH tiers — a correctness/safety signal, not a paid feature.",
        -                  "properties": {
        -                    "affected_params": {
        -                      "items": {
        -                        "type": "string"
        -                      },
        -                      "type": "array"
        -                    },
        -                    "code": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "detail": {
        -                      "additionalProperties": {
        -                        "type": "number"
        -                      },
        -                      "type": "object"
        -                    },
        -                    "message": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "severity": {
        -                      "enum": [
        -                        "info",
        -                        "advisory",
        -                        "caution"
        -                      ],
        -                      "type": "string"
        -                    }
        -                  },
        -                  "required": [
        -                    "code",
        -                    "severity",
        -                    "message"
        -                  ],
        -                  "type": "object"
        -                },
        -                "type": "array"
        -              }
        -            },
        -            "required": [
        -              "assembly_slug",
        -              "standard",
        -              "parameters_used",
        -              "boq_rows",
        -              "totals_summary",
        -              "text_summary"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      },
        -      "error": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        -            "properties": {
        -              "code": {
        -                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        -                "enum": [
        -                  "RATE_LIMIT_EXCEEDED",
        -                  "TIER_INSUFFICIENT",
        -                  "INVALID_INPUT",
        -                  "SCHEMA_VERSION_MISMATCH",
        -                  "SCHEMA_INVARIANT_VIOLATION",
        -                  "UPSTREAM_TIMEOUT",
        -                  "BACKEND_FAILURE",
        -                  "IP_BLOCKED",
        -                  "RESOURCE_NOT_FOUND",
        -                  "RENDER_FAILURE",
        -                  "OCR_LOW_CONFIDENCE",
        -                  "MANUAL_REVIEW_REQUIRED",
        -                  "ACCEPTANCE_REQUIRED",
        -                  "INVALID_TOKEN"
        -                ],
        -                "type": "string"
        -              },
        -              "details": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "message": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "recoverable": {
        -                "type": "boolean"
        -              },
        -              "retry_after_seconds": {
        -                "anyOf": [
        -                  {
        -                    "minimum": 0,
        -                    "type": "integer"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              }
        -            },
        -            "required": [
        -              "code",
        -              "message",
        -              "recoverable"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      }
        -    },
        -    "required": [
        -      "_meta"
        -    ],
        -    "type": "object"
        -  },
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "_meta": {
        -        "additionalProperties": false,
        -        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        -        "properties": {
        -          "deliverables": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        -                "properties": {
        -                  "docx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "dxf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "expires_at": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  },
        -                  "pdf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "xlsx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "expires_at"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "document_id": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "issued_at": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "output_mode": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Surfaces what a trimmed ``output_mode`` withheld from ``data``.\n\nA trimmed mode (``summary`` / ``boq`` / ``boq_with_backup``) withholds\nalready-computed fields to keep the chat payload small. The withheld value\nreads to a client agent as \"capability missing\" (the box-culvert \"geometry\nbuilder isn't firing\" scare) rather than \"pared for size\": ``drawing`` and\n``audit_trail`` appear as ``null``, ``boq_rows`` as an empty list ``[]``\n(its type forbids ``null``) — both indistinguishable from a genuine absent\nresult. This names the withheld fields and the exact mode that brings each\nback, so the value is unambiguous. Absent on the default ``full_json`` mode\n— nothing is withheld, nothing to point at.",
        -                "properties": {
        -                  "mode": {
        -                    "enum": [
        -                      "summary",
        -                      "boq",
        -                      "boq_with_backup"
        -                    ],
        -                    "type": "string"
        -                  },
        -                  "omitted_fields": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "minItems": 1,
        -                    "type": "array"
        -                  },
        -                  "retrieve_with": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "mode",
        -                  "omitted_fields",
        -                  "retrieve_with"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "rate_limit_remaining": {
        -            "anyOf": [
        -              {
        -                "minimum": 0,
        -                "type": "integer"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "request_id": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "schema_version": {
        -            "const": "1.0.0",
        -            "default": "1.0.0",
        -            "type": "string"
        -          },
        -          "scope_boundary": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        -                "properties": {
        -                  "not_in_scope": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "produced": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "recommended_companions": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "type": "string"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "produced",
        -                  "not_in_scope"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tier": {
        -            "enum": [
        -              "free",
        -              "paid"
        -            ],
        -            "type": "string"
        -          },
        -          "tier_upgrade": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        -                "properties": {
        -                  "available_tiers": {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        -                      "properties": {
        -                        "billing": {
        -                          "enum": [
        -                            "one_off",
        -                            "monthly",
        -                            "annual"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "currency": {
        -                          "enum": [
        -                            "GBP",
        -                            "SGD",
        -                            "EUR",
        -                            "USD",
        -                            "CAD",
        -                            "AUD",
        -                            "NZD",
        -                            "MYR"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "display_name": {
        -                          "type": "string"
        -                        },
        -                        "price_local": {
        -                          "type": "number"
        -                        },
        -                        "tier_slug": {
        -                          "enum": [
        -                            "7_day_pass",
        -                            "solo",
        -                            "studio",
        -                            "practice"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "unlock_summary": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "tier_slug",
        -                        "display_name",
        -                        "price_local",
        -                        "currency",
        -                        "billing",
        -                        "unlock_summary"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "current_tier": {
        -                    "const": "free",
        -                    "default": "free",
        -                    "type": "string"
        -                  },
        -                  "pass_credit": {
        -                    "anyOf": [
        -                      {
        -                        "additionalProperties": false,
        -                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        -                        "properties": {
        -                          "amount_local": {
        -                            "type": "number"
        -                          },
        -                          "applies_to": {
        -                            "const": "solo_first_month",
        -                            "default": "solo_first_month",
        -                            "type": "string"
        -                          },
        -                          "currency": {
        -                            "type": "string"
        -                          },
        -                          "redeemable_until": {
        -                            "type": "string"
        -                          }
        -                        },
        -                        "required": [
        -                          "amount_local",
        -                          "currency",
        -                          "redeemable_until"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "pricing_url": {
        -                    "default": "https://civilquants.com/pricing",
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "available_tiers"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tos_url": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "upgrade_hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "warranty_disclaimer": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          }
        -        },
        -        "required": [
        -          "request_id",
        -          "issued_at",
        -          "tier"
        -        ],
        -        "type": "object"
        -      },
        -      "data": {
        -        "default": null,
        -        "title": "Data"
        -      },
        -      "error": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        -            "properties": {
        -              "code": {
        -                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        -                "enum": [
        -                  "RATE_LIMIT_EXCEEDED",
        -                  "TIER_INSUFFICIENT",
        -                  "INVALID_INPUT",
        -                  "SCHEMA_VERSION_MISMATCH",
        -                  "SCHEMA_INVARIANT_VIOLATION",
        -                  "UPSTREAM_TIMEOUT",
        -                  "BACKEND_FAILURE",
        -                  "IP_BLOCKED",
        -                  "RESOURCE_NOT_FOUND",
        -                  "RENDER_FAILURE",
        -                  "OCR_LOW_CONFIDENCE",
        -                  "MANUAL_REVIEW_REQUIRED",
        -                  "ACCEPTANCE_REQUIRED",
        -                  "INVALID_TOKEN"
        -                ],
        -                "type": "string"
        -              },
        -              "details": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "message": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "recoverable": {
        -                "type": "boolean"
        -              },
        -              "retry_after_seconds": {
        -                "anyOf": [
        -                  {
        -                    "minimum": 0,
        -                    "type": "integer"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              }
        -            },
        -            "required": [
        -              "code",
        -              "message",
        -              "recoverable"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      }
        -    },
        -    "required": [
        -      "_meta"
        -    ],
        -    "type": "object"
        -  }
        -]New value: +[
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "_meta": {
        +        "additionalProperties": false,
        +        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        +        "properties": {
        +          "deliverables": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        +                "properties": {
        +                  "docx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "dxf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "expires_at": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  },
        +                  "pdf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "xlsx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "expires_at"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "document_id": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "issued_at": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "output_mode": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Surfaces what a trimmed ``output_mode`` withheld from ``data``.\n\nA trimmed mode (``summary`` / ``material_schedule`` / ``boq`` /\n``boq_with_backup``) withholds\nalready-computed fields to keep the chat payload small. The withheld value\nreads to a client agent as \"capability missing\" (the box-culvert \"geometry\nbuilder isn't firing\" scare) rather than \"pared for size\": ``drawing`` and\n``audit_trail`` appear as ``null``, ``boq_rows`` as an empty list ``[]``\n(its type forbids ``null``) — both indistinguishable from a genuine absent\nresult. This names the withheld fields and the exact mode that brings each\nback, so the value is unambiguous. Absent on the default ``full_json`` mode\n— nothing is withheld, nothing to point at.",
        +                "properties": {
        +                  "mode": {
        +                    "enum": [
        +                      "summary",
        +                      "material_schedule",
        +                      "boq",
        +                      "boq_with_backup"
        +                    ],
        +                    "type": "string"
        +                  },
        +                  "omitted_fields": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "minItems": 1,
        +                    "type": "array"
        +                  },
        +                  "retrieve_with": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "mode",
        +                  "omitted_fields",
        +                  "retrieve_with"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "rate_limit_remaining": {
        +            "anyOf": [
        +              {
        +                "minimum": 0,
        +                "type": "integer"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "request_id": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "schema_version": {
        +            "const": "1.0.0",
        +            "default": "1.0.0",
        +            "type": "string"
        +          },
        +          "scope_boundary": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        +                "properties": {
        +                  "not_in_scope": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "produced": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "recommended_companions": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "type": "string"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "produced",
        +                  "not_in_scope"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tier": {
        +            "enum": [
        +              "free",
        +              "paid"
        +            ],
        +            "type": "string"
        +          },
        +          "tier_upgrade": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        +                "properties": {
        +                  "available_tiers": {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        +                      "properties": {
        +                        "billing": {
        +                          "enum": [
        +                            "one_off",
        +                            "monthly",
        +                            "annual"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "currency": {
        +                          "enum": [
        +                            "GBP",
        +                            "SGD",
        +                            "EUR",
        +                            "USD",
        +                            "CAD",
        +                            "AUD",
        +                            "NZD",
        +                            "MYR"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "display_name": {
        +                          "type": "string"
        +                        },
        +                        "price_local": {
        +                          "type": "number"
        +                        },
        +                        "tier_slug": {
        +                          "enum": [
        +                            "7_day_pass",
        +                            "solo",
        +                            "studio",
        +                            "practice"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "unlock_summary": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "tier_slug",
        +                        "display_name",
        +                        "price_local",
        +                        "currency",
        +                        "billing",
        +                        "unlock_summary"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "current_tier": {
        +                    "const": "free",
        +                    "default": "free",
        +                    "type": "string"
        +                  },
        +                  "pass_credit": {
        +                    "anyOf": [
        +                      {
        +                        "additionalProperties": false,
        +                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        +                        "properties": {
        +                          "amount_local": {
        +                            "type": "number"
        +                          },
        +                          "applies_to": {
        +                            "const": "solo_first_month",
        +                            "default": "solo_first_month",
        +                            "type": "string"
        +                          },
        +                          "currency": {
        +                            "type": "string"
        +                          },
        +                          "redeemable_until": {
        +                            "type": "string"
        +                          }
        +                        },
        +                        "required": [
        +                          "amount_local",
        +                          "currency",
        +                          "redeemable_until"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "pricing_url": {
        +                    "default": "https://civilquants.com/pricing",
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "available_tiers"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tos_url": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "upgrade_hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "warranty_disclaimer": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          }
        +        },
        +        "required": [
        +          "request_id",
        +          "issued_at",
        +          "tier"
        +        ],
        +        "type": "object"
        +      },
        +      "data": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Schema § 1.1 — the typed payload returned inside `MCPResponse[ComputeResult]`.\n\nFree-tier responses omit `drawings` (the downloadable CAD artefact\npointers — the paid differentiator); the bridge enforces this. The\n`audit_trail` and the inline `drawing` preview are present on BOTH tiers\n(V1 ALIGN / 60th-fire D + C). `text_summary` is bounded to 2000 chars —\nkeeps the LLM-facing summary token-cheap and forces longer narrative into\nBoQ row descriptions where it belongs. `warnings` is the non-fatal\ngeometry advisory list (both tiers).",
        +            "properties": {
        +              "assembly_slug": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "audit_trail": {
        +                "anyOf": [
        +                  {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.7 — paid-tier audit-trail entry.\n\nOne entry per BoQ row; `boq_row_index` ties to the row position in\n`ComputeResult.boq_rows`. `derivation` is the human-readable formula\nwalk-through; `formula` is the optional formal expression.",
        +                      "properties": {
        +                        "boq_row_index": {
        +                          "minimum": 0,
        +                          "type": "integer"
        +                        },
        +                        "derivation": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "formula": {
        +                          "anyOf": [
        +                            {
        +                              "type": "string"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ],
        +                          "default": null
        +                        },
        +                        "id": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "parameters_referenced": {
        +                          "items": {
        +                            "type": "string"
        +                          },
        +                          "type": "array"
        +                        }
        +                      },
        +                      "required": [
        +                        "id",
        +                        "boq_row_index",
        +                        "derivation"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "boq_rows": {
        +                "items": {
        +                  "additionalProperties": false,
        +                  "description": "Schema § 1.3 — a single bill row in the requested standard's format.\n\n`description` is the non-verbatim functional description per spec § 13.9 /\n§ 15 invariant — NEVER reproduces a standard's verbatim clause text.\n`rate` / `amount` ship null because rates are commodity data the customer\nowns; the engine's job is the measurement, not the pricing.",
        +                  "properties": {
        +                    "amount": {
        +                      "anyOf": [
        +                        {
        +                          "type": "number"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "attribution": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "audit_id": {
        +                      "anyOf": [
        +                        {
        +                          "type": "string"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "description": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "quantity": {
        +                      "minimum": 0,
        +                      "type": "number"
        +                    },
        +                    "rate": {
        +                      "anyOf": [
        +                        {
        +                          "type": "number"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "unit": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "work_section": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    }
        +                  },
        +                  "required": [
        +                    "work_section",
        +                    "description",
        +                    "quantity",
        +                    "unit",
        +                    "attribution"
        +                  ],
        +                  "type": "object"
        +                },
        +                "type": "array"
        +              },
        +              "drawing": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": false,
        +                    "description": "Schema § 1.6a — inline server-rendered SVG preview of the geometry.\n\nThe MCP mirror of the web ``/compute`` response's ``drawing`` field\n(``api.schemas.compute.DrawingRef``): the same on-screen dimensioned\ndrawing both tiers see in the workspace, surfaced on the MCP compute\nresponse so a chat client can render it inline (60th-fire item C). This\nis the on-screen preview — present on BOTH tiers per the free/paid\nboundary; the downloadable CAD artefacts (DXF / dimensioned PDF) remain\nthe paid differentiator via the export tools.\n\nDefined here rather than importing ``DrawingRef`` because the web\n``schemas`` package imports back into this module (``schemas.render``),\nso reusing it would create an import cycle — the MCP wire contract keeps\nits own copy, the same pattern as ``BoQRow`` / ``DrawingReference``.",
        +                    "properties": {
        +                      "entity_count": {
        +                        "minimum": 0,
        +                        "type": "integer"
        +                      },
        +                      "svg_b64": {
        +                        "minLength": 1,
        +                        "type": "string"
        +                      },
        +                      "unit_of_drawing": {
        +                        "const": "m",
        +                        "default": "m",
        +                        "type": "string"
        +                      },
        +                      "viewbox_height": {
        +                        "exclusiveMinimum": 0,
        +                        "type": "number"
        +                      },
        +                      "viewbox_width": {
        +                        "exclusiveMinimum": 0,
        +                        "type": "number"
        +                      },
        +                      "viewbox_x": {
        +                        "type": "number"
        +                      },
        +                      "viewbox_y": {
        +                        "type": "number"
        +                      }
        +                    },
        +                    "required": [
        +                      "svg_b64",
        +                      "viewbox_x",
        +                      "viewbox_y",
        +                      "viewbox_width",
        +                      "viewbox_height",
        +                      "entity_count"
        +                    ],
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "drawings": {
        +                "anyOf": [
        +                  {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.6 — paid-tier drawing artefact pointer.\n\n`url` is an R2-signed URL; expiry is carried in `_meta.deliverables.expires_at`\non the envelope (not duplicated here). `layers` is DXF-only; PDF/SVG\ncallers omit it.",
        +                      "properties": {
        +                        "drawing_type": {
        +                          "enum": [
        +                            "section",
        +                            "plan",
        +                            "elevation",
        +                            "isometric",
        +                            "detail"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "format": {
        +                          "enum": [
        +                            "DXF",
        +                            "PDF",
        +                            "SVG"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "layers": {
        +                          "anyOf": [
        +                            {
        +                              "items": {
        +                                "type": "string"
        +                              },
        +                              "type": "array"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ],
        +                          "default": null
        +                        },
        +                        "scale": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "sheet_size": {
        +                          "enum": [
        +                            "A1",
        +                            "A2",
        +                            "A3",
        +                            "A4"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "url": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "drawing_type",
        +                        "format",
        +                        "url",
        +                        "sheet_size",
        +                        "scale"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "parameters_used": {
        +                "additionalProperties": false,
        +                "description": "Schema § 1.2 — the parameter snapshot the engine actually used.\n\nSplits user-supplied values from engine defaults so customers can see\nwhich numbers came from them and which the engine filled in. Every\ndefaulted parameter SHOULD have a corresponding entry in `assumptions`\n— the bridge layer enforces this when wrapping engine output.",
        +                "properties": {
        +                  "assumptions": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "engine_defaults": {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  "user_supplied": {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  }
        +                },
        +                "type": "object"
        +              },
        +              "standard": {
        +                "enum": [
        +                  "CESMM4",
        +                  "NRM2",
        +                  "SMM7",
        +                  "MMHW"
        +                ],
        +                "type": "string"
        +              },
        +              "text_summary": {
        +                "maxLength": 2000,
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "totals_summary": {
        +                "additionalProperties": false,
        +                "description": "Schema § 1.4 — totals_summary as a typed wrapper around the free-form dict.\n\nWire shape is a flat object (`{\"concrete_m3\": {...}, \"rebar_t\": {...}}`).\nWe model it as `RootModel`-equivalent via `model_config(extra=\"allow\")`\n+ a single `__root__`-style `entries` dict. Pydantic v2 recommends\n`RootModel` for free-form roots; using a wrapper class keeps the import\nsurface uniform with the rest of this module.",
        +                "properties": {
        +                  "entries": {
        +                    "additionalProperties": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.4 — single material/work-class total entry.",
        +                      "properties": {
        +                        "quantity": {
        +                          "minimum": 0,
        +                          "type": "number"
        +                        },
        +                        "unit": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "quantity",
        +                        "unit"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "object"
        +                  }
        +                },
        +                "type": "object"
        +              },
        +              "warnings": {
        +                "items": {
        +                  "additionalProperties": false,
        +                  "description": "Schema § 1.8 — a non-fatal geometry advisory (56th-fire T2).\n\nThe wire projection of the engine's `core.GeometryWarning`. Advisory only:\na warning NEVER changes a measured quantity — it flags geometry that is\nvalid but likely a mistake (e.g. a stale dependent-height default). Present\non BOTH tiers — a correctness/safety signal, not a paid feature.",
        +                  "properties": {
        +                    "affected_params": {
        +                      "items": {
        +                        "type": "string"
        +                      },
        +                      "type": "array"
        +                    },
        +                    "code": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "detail": {
        +                      "additionalProperties": {
        +                        "type": "number"
        +                      },
        +                      "type": "object"
        +                    },
        +                    "message": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "severity": {
        +                      "enum": [
        +                        "info",
        +                        "advisory",
        +                        "caution"
        +                      ],
        +                      "type": "string"
        +                    }
        +                  },
        +                  "required": [
        +                    "code",
        +                    "severity",
        +                    "message"
        +                  ],
        +                  "type": "object"
        +                },
        +                "type": "array"
        +              }
        +            },
        +            "required": [
        +              "assembly_slug",
        +              "standard",
        +              "parameters_used",
        +              "boq_rows",
        +              "totals_summary",
        +              "text_summary"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      },
        +      "error": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        +            "properties": {
        +              "code": {
        +                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        +                "enum": [
        +                  "RATE_LIMIT_EXCEEDED",
        +                  "TIER_INSUFFICIENT",
        +                  "INVALID_INPUT",
        +                  "SCHEMA_VERSION_MISMATCH",
        +                  "SCHEMA_INVARIANT_VIOLATION",
        +                  "UPSTREAM_TIMEOUT",
        +                  "BACKEND_FAILURE",
        +                  "IP_BLOCKED",
        +                  "RESOURCE_NOT_FOUND",
        +                  "RENDER_FAILURE",
        +                  "OCR_LOW_CONFIDENCE",
        +                  "MANUAL_REVIEW_REQUIRED",
        +                  "ACCEPTANCE_REQUIRED",
        +                  "INVALID_TOKEN"
        +                ],
        +                "type": "string"
        +              },
        +              "details": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "message": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "recoverable": {
        +                "type": "boolean"
        +              },
        +              "retry_after_seconds": {
        +                "anyOf": [
        +                  {
        +                    "minimum": 0,
        +                    "type": "integer"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              }
        +            },
        +            "required": [
        +              "code",
        +              "message",
        +              "recoverable"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      }
        +    },
        +    "required": [
        +      "_meta"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "_meta": {
        +        "additionalProperties": false,
        +        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        +        "properties": {
        +          "deliverables": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        +                "properties": {
        +                  "docx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "dxf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "expires_at": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  },
        +                  "pdf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "xlsx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "expires_at"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "document_id": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "issued_at": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "output_mode": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Surfaces what a trimmed ``output_mode`` withheld from ``data``.\n\nA trimmed mode (``summary`` / ``material_schedule`` / ``boq`` /\n``boq_with_backup``) withholds\nalready-computed fields to keep the chat payload small. The withheld value\nreads to a client agent as \"capability missing\" (the box-culvert \"geometry\nbuilder isn't firing\" scare) rather than \"pared for size\": ``drawing`` and\n``audit_trail`` appear as ``null``, ``boq_rows`` as an empty list ``[]``\n(its type forbids ``null``) — both indistinguishable from a genuine absent\nresult. This names the withheld fields and the exact mode that brings each\nback, so the value is unambiguous. Absent on the default ``full_json`` mode\n— nothing is withheld, nothing to point at.",
        +                "properties": {
        +                  "mode": {
        +                    "enum": [
        +                      "summary",
        +                      "material_schedule",
        +                      "boq",
        +                      "boq_with_backup"
        +                    ],
        +                    "type": "string"
        +                  },
        +                  "omitted_fields": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "minItems": 1,
        +                    "type": "array"
        +                  },
        +                  "retrieve_with": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "mode",
        +                  "omitted_fields",
        +                  "retrieve_with"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "rate_limit_remaining": {
        +            "anyOf": [
        +              {
        +                "minimum": 0,
        +                "type": "integer"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "request_id": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "schema_version": {
        +            "const": "1.0.0",
        +            "default": "1.0.0",
        +            "type": "string"
        +          },
        +          "scope_boundary": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        +                "properties": {
        +                  "not_in_scope": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "produced": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "recommended_companions": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "type": "string"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "produced",
        +                  "not_in_scope"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tier": {
        +            "enum": [
        +              "free",
        +              "paid"
        +            ],
        +            "type": "string"
        +          },
        +          "tier_upgrade": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        +                "properties": {
        +                  "available_tiers": {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        +                      "properties": {
        +                        "billing": {
        +                          "enum": [
        +                            "one_off",
        +                            "monthly",
        +                            "annual"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "currency": {
        +                          "enum": [
        +                            "GBP",
        +                            "SGD",
        +                            "EUR",
        +                            "USD",
        +                            "CAD",
        +                            "AUD",
        +                            "NZD",
        +                            "MYR"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "display_name": {
        +                          "type": "string"
        +                        },
        +                        "price_local": {
        +                          "type": "number"
        +                        },
        +                        "tier_slug": {
        +                          "enum": [
        +                            "7_day_pass",
        +                            "solo",
        +                            "studio",
        +                            "practice"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "unlock_summary": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "tier_slug",
        +                        "display_name",
        +                        "price_local",
        +                        "currency",
        +                        "billing",
        +                        "unlock_summary"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "current_tier": {
        +                    "const": "free",
        +                    "default": "free",
        +                    "type": "string"
        +                  },
        +                  "pass_credit": {
        +                    "anyOf": [
        +                      {
        +                        "additionalProperties": false,
        +                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        +                        "properties": {
        +                          "amount_local": {
        +                            "type": "number"
        +                          },
        +                          "applies_to": {
        +                            "const": "solo_first_month",
        +                            "default": "solo_first_month",
        +                            "type": "string"
        +                          },
        +                          "currency": {
        +                            "type": "string"
        +                          },
        +                          "redeemable_until": {
        +                            "type": "string"
        +                          }
        +                        },
        +                        "required": [
        +                          "amount_local",
        +                          "currency",
        +                          "redeemable_until"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "pricing_url": {
        +                    "default": "https://civilquants.com/pricing",
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "available_tiers"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tos_url": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "upgrade_hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "warranty_disclaimer": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          }
        +        },
        +        "required": [
        +          "request_id",
        +          "issued_at",
        +          "tier"
        +        ],
        +        "type": "object"
        +      },
        +      "data": {
        +        "default": null,
        +        "title": "Data"
        +      },
        +      "error": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        +            "properties": {
        +              "code": {
        +                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        +                "enum": [
        +                  "RATE_LIMIT_EXCEEDED",
        +                  "TIER_INSUFFICIENT",
        +                  "INVALID_INPUT",
        +                  "SCHEMA_VERSION_MISMATCH",
        +                  "SCHEMA_INVARIANT_VIOLATION",
        +                  "UPSTREAM_TIMEOUT",
        +                  "BACKEND_FAILURE",
        +                  "IP_BLOCKED",
        +                  "RESOURCE_NOT_FOUND",
        +                  "RENDER_FAILURE",
        +                  "OCR_LOW_CONFIDENCE",
        +                  "MANUAL_REVIEW_REQUIRED",
        +                  "ACCEPTANCE_REQUIRED",
        +                  "INVALID_TOKEN"
        +                ],
        +                "type": "string"
        +              },
        +              "details": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "message": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "recoverable": {
        +                "type": "boolean"
        +              },
        +              "retry_after_seconds": {
        +                "anyOf": [
        +                  {
        +                    "minimum": 0,
        +                    "type": "integer"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              }
        +            },
        +            "required": [
        +              "code",
        +              "message",
        +              "recoverable"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      }
        +    },
        +    "required": [
        +      "_meta"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedcompute_end_area_earthworks2 fields changed
      • changedInput schema / properties / output_mode / enum
        Previous value: -[
        -  "summary",
        -  "boq",
        -  "boq_with_backup",
        -  "full_json"
        -]New value: +[
        +  "summary",
        +  "material_schedule",
        +  "boq",
        +  "boq_with_backup",
        +  "full_json"
        +]
      • changedOutput schema / properties / result / anyOf
        Previous value: -[
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "_meta": {
        -        "additionalProperties": false,
        -        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        -        "properties": {
        -          "deliverables": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        -                "properties": {
        -                  "docx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "dxf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "expires_at": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  },
        -                  "pdf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "xlsx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "expires_at"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "document_id": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "issued_at": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "output_mode": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Surfaces what a trimmed ``output_mode`` withheld from ``data``.\n\nA trimmed mode (``summary`` / ``boq`` / ``boq_with_backup``) withholds\nalready-computed fields to keep the chat payload small. The withheld value\nreads to a client agent as \"capability missing\" (the box-culvert \"geometry\nbuilder isn't firing\" scare) rather than \"pared for size\": ``drawing`` and\n``audit_trail`` appear as ``null``, ``boq_rows`` as an empty list ``[]``\n(its type forbids ``null``) — both indistinguishable from a genuine absent\nresult. This names the withheld fields and the exact mode that brings each\nback, so the value is unambiguous. Absent on the default ``full_json`` mode\n— nothing is withheld, nothing to point at.",
        -                "properties": {
        -                  "mode": {
        -                    "enum": [
        -                      "summary",
        -                      "boq",
        -                      "boq_with_backup"
        -                    ],
        -                    "type": "string"
        -                  },
        -                  "omitted_fields": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "minItems": 1,
        -                    "type": "array"
        -                  },
        -                  "retrieve_with": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "mode",
        -                  "omitted_fields",
        -                  "retrieve_with"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "rate_limit_remaining": {
        -            "anyOf": [
        -              {
        -                "minimum": 0,
        -                "type": "integer"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "request_id": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "schema_version": {
        -            "const": "1.0.0",
        -            "default": "1.0.0",
        -            "type": "string"
        -          },
        -          "scope_boundary": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        -                "properties": {
        -                  "not_in_scope": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "produced": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "recommended_companions": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "type": "string"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "produced",
        -                  "not_in_scope"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tier": {
        -            "enum": [
        -              "free",
        -              "paid"
        -            ],
        -            "type": "string"
        -          },
        -          "tier_upgrade": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        -                "properties": {
        -                  "available_tiers": {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        -                      "properties": {
        -                        "billing": {
        -                          "enum": [
        -                            "one_off",
        -                            "monthly",
        -                            "annual"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "currency": {
        -                          "enum": [
        -                            "GBP",
        -                            "SGD",
        -                            "EUR",
        -                            "USD",
        -                            "CAD",
        -                            "AUD",
        -                            "NZD",
        -                            "MYR"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "display_name": {
        -                          "type": "string"
        -                        },
        -                        "price_local": {
        -                          "type": "number"
        -                        },
        -                        "tier_slug": {
        -                          "enum": [
        -                            "7_day_pass",
        -                            "solo",
        -                            "studio",
        -                            "practice"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "unlock_summary": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "tier_slug",
        -                        "display_name",
        -                        "price_local",
        -                        "currency",
        -                        "billing",
        -                        "unlock_summary"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "current_tier": {
        -                    "const": "free",
        -                    "default": "free",
        -                    "type": "string"
        -                  },
        -                  "pass_credit": {
        -                    "anyOf": [
        -                      {
        -                        "additionalProperties": false,
        -                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        -                        "properties": {
        -                          "amount_local": {
        -                            "type": "number"
        -                          },
        -                          "applies_to": {
        -                            "const": "solo_first_month",
        -                            "default": "solo_first_month",
        -                            "type": "string"
        -                          },
        -                          "currency": {
        -                            "type": "string"
        -                          },
        -                          "redeemable_until": {
        -                            "type": "string"
        -                          }
        -                        },
        -                        "required": [
        -                          "amount_local",
        -                          "currency",
        -                          "redeemable_until"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "pricing_url": {
        -                    "default": "https://civilquants.com/pricing",
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "available_tiers"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tos_url": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "upgrade_hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "warranty_disclaimer": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          }
        -        },
        -        "required": [
        -          "request_id",
        -          "issued_at",
        -          "tier"
        -        ],
        -        "type": "object"
        -      },
        -      "data": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Schema § 1.1 — the typed payload returned inside `MCPResponse[ComputeResult]`.\n\nFree-tier responses omit `drawings` (the downloadable CAD artefact\npointers — the paid differentiator); the bridge enforces this. The\n`audit_trail` and the inline `drawing` preview are present on BOTH tiers\n(V1 ALIGN / 60th-fire D + C). `text_summary` is bounded to 2000 chars —\nkeeps the LLM-facing summary token-cheap and forces longer narrative into\nBoQ row descriptions where it belongs. `warnings` is the non-fatal\ngeometry advisory list (both tiers).",
        -            "properties": {
        -              "assembly_slug": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "audit_trail": {
        -                "anyOf": [
        -                  {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.7 — paid-tier audit-trail entry.\n\nOne entry per BoQ row; `boq_row_index` ties to the row position in\n`ComputeResult.boq_rows`. `derivation` is the human-readable formula\nwalk-through; `formula` is the optional formal expression.",
        -                      "properties": {
        -                        "boq_row_index": {
        -                          "minimum": 0,
        -                          "type": "integer"
        -                        },
        -                        "derivation": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "formula": {
        -                          "anyOf": [
        -                            {
        -                              "type": "string"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ],
        -                          "default": null
        -                        },
        -                        "id": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "parameters_referenced": {
        -                          "items": {
        -                            "type": "string"
        -                          },
        -                          "type": "array"
        -                        }
        -                      },
        -                      "required": [
        -                        "id",
        -                        "boq_row_index",
        -                        "derivation"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "boq_rows": {
        -                "items": {
        -                  "additionalProperties": false,
        -                  "description": "Schema § 1.3 — a single bill row in the requested standard's format.\n\n`description` is the non-verbatim functional description per spec § 13.9 /\n§ 15 invariant — NEVER reproduces a standard's verbatim clause text.\n`rate` / `amount` ship null because rates are commodity data the customer\nowns; the engine's job is the measurement, not the pricing.",
        -                  "properties": {
        -                    "amount": {
        -                      "anyOf": [
        -                        {
        -                          "type": "number"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "attribution": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "audit_id": {
        -                      "anyOf": [
        -                        {
        -                          "type": "string"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "description": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "quantity": {
        -                      "minimum": 0,
        -                      "type": "number"
        -                    },
        -                    "rate": {
        -                      "anyOf": [
        -                        {
        -                          "type": "number"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "unit": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "work_section": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    }
        -                  },
        -                  "required": [
        -                    "work_section",
        -                    "description",
        -                    "quantity",
        -                    "unit",
        -                    "attribution"
        -                  ],
        -                  "type": "object"
        -                },
        -                "type": "array"
        -              },
        -              "drawing": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": false,
        -                    "description": "Schema § 1.6a — inline server-rendered SVG preview of the geometry.\n\nThe MCP mirror of the web ``/compute`` response's ``drawing`` field\n(``api.schemas.compute.DrawingRef``): the same on-screen dimensioned\ndrawing both tiers see in the workspace, surfaced on the MCP compute\nresponse so a chat client can render it inline (60th-fire item C). This\nis the on-screen preview — present on BOTH tiers per the free/paid\nboundary; the downloadable CAD artefacts (DXF / dimensioned PDF) remain\nthe paid differentiator via the export tools.\n\nDefined here rather than importing ``DrawingRef`` because the web\n``schemas`` package imports back into this module (``schemas.render``),\nso reusing it would create an import cycle — the MCP wire contract keeps\nits own copy, the same pattern as ``BoQRow`` / ``DrawingReference``.",
        -                    "properties": {
        -                      "entity_count": {
        -                        "minimum": 0,
        -                        "type": "integer"
        -                      },
        -                      "svg_b64": {
        -                        "minLength": 1,
        -                        "type": "string"
        -                      },
        -                      "unit_of_drawing": {
        -                        "const": "m",
        -                        "default": "m",
        -                        "type": "string"
        -                      },
        -                      "viewbox_height": {
        -                        "exclusiveMinimum": 0,
        -                        "type": "number"
        -                      },
        -                      "viewbox_width": {
        -                        "exclusiveMinimum": 0,
        -                        "type": "number"
        -                      },
        -                      "viewbox_x": {
        -                        "type": "number"
        -                      },
        -                      "viewbox_y": {
        -                        "type": "number"
        -                      }
        -                    },
        -                    "required": [
        -                      "svg_b64",
        -                      "viewbox_x",
        -                      "viewbox_y",
        -                      "viewbox_width",
        -                      "viewbox_height",
        -                      "entity_count"
        -                    ],
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "drawings": {
        -                "anyOf": [
        -                  {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.6 — paid-tier drawing artefact pointer.\n\n`url` is an R2-signed URL; expiry is carried in `_meta.deliverables.expires_at`\non the envelope (not duplicated here). `layers` is DXF-only; PDF/SVG\ncallers omit it.",
        -                      "properties": {
        -                        "drawing_type": {
        -                          "enum": [
        -                            "section",
        -                            "plan",
        -                            "elevation",
        -                            "isometric",
        -                            "detail"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "format": {
        -                          "enum": [
        -                            "DXF",
        -                            "PDF",
        -                            "SVG"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "layers": {
        -                          "anyOf": [
        -                            {
        -                              "items": {
        -                                "type": "string"
        -                              },
        -                              "type": "array"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ],
        -                          "default": null
        -                        },
        -                        "scale": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "sheet_size": {
        -                          "enum": [
        -                            "A1",
        -                            "A2",
        -                            "A3",
        -                            "A4"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "url": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "drawing_type",
        -                        "format",
        -                        "url",
        -                        "sheet_size",
        -                        "scale"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "parameters_used": {
        -                "additionalProperties": false,
        -                "description": "Schema § 1.2 — the parameter snapshot the engine actually used.\n\nSplits user-supplied values from engine defaults so customers can see\nwhich numbers came from them and which the engine filled in. Every\ndefaulted parameter SHOULD have a corresponding entry in `assumptions`\n— the bridge layer enforces this when wrapping engine output.",
        -                "properties": {
        -                  "assumptions": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "engine_defaults": {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  "user_supplied": {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  }
        -                },
        -                "type": "object"
        -              },
        -              "standard": {
        -                "enum": [
        -                  "CESMM4",
        -                  "NRM2",
        -                  "SMM7",
        -                  "MMHW"
        -                ],
        -                "type": "string"
        -              },
        -              "text_summary": {
        -                "maxLength": 2000,
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "totals_summary": {
        -                "additionalProperties": false,
        -                "description": "Schema § 1.4 — totals_summary as a typed wrapper around the free-form dict.\n\nWire shape is a flat object (`{\"concrete_m3\": {...}, \"rebar_t\": {...}}`).\nWe model it as `RootModel`-equivalent via `model_config(extra=\"allow\")`\n+ a single `__root__`-style `entries` dict. Pydantic v2 recommends\n`RootModel` for free-form roots; using a wrapper class keeps the import\nsurface uniform with the rest of this module.",
        -                "properties": {
        -                  "entries": {
        -                    "additionalProperties": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.4 — single material/work-class total entry.",
        -                      "properties": {
        -                        "quantity": {
        -                          "minimum": 0,
        -                          "type": "number"
        -                        },
        -                        "unit": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "quantity",
        -                        "unit"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "object"
        -                  }
        -                },
        -                "type": "object"
        -              },
        -              "warnings": {
        -                "items": {
        -                  "additionalProperties": false,
        -                  "description": "Schema § 1.8 — a non-fatal geometry advisory (56th-fire T2).\n\nThe wire projection of the engine's `core.GeometryWarning`. Advisory only:\na warning NEVER changes a measured quantity — it flags geometry that is\nvalid but likely a mistake (e.g. a stale dependent-height default). Present\non BOTH tiers — a correctness/safety signal, not a paid feature.",
        -                  "properties": {
        -                    "affected_params": {
        -                      "items": {
        -                        "type": "string"
        -                      },
        -                      "type": "array"
        -                    },
        -                    "code": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "detail": {
        -                      "additionalProperties": {
        -                        "type": "number"
        -                      },
        -                      "type": "object"
        -                    },
        -                    "message": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "severity": {
        -                      "enum": [
        -                        "info",
        -                        "advisory",
        -                        "caution"
        -                      ],
        -                      "type": "string"
        -                    }
        -                  },
        -                  "required": [
        -                    "code",
        -                    "severity",
        -                    "message"
        -                  ],
        -                  "type": "object"
        -                },
        -                "type": "array"
        -              }
        -            },
        -            "required": [
        -              "assembly_slug",
        -              "standard",
        -              "parameters_used",
        -              "boq_rows",
        -              "totals_summary",
        -              "text_summary"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      },
        -      "error": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        -            "properties": {
        -              "code": {
        -                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        -                "enum": [
        -                  "RATE_LIMIT_EXCEEDED",
        -                  "TIER_INSUFFICIENT",
        -                  "INVALID_INPUT",
        -                  "SCHEMA_VERSION_MISMATCH",
        -                  "SCHEMA_INVARIANT_VIOLATION",
        -                  "UPSTREAM_TIMEOUT",
        -                  "BACKEND_FAILURE",
        -                  "IP_BLOCKED",
        -                  "RESOURCE_NOT_FOUND",
        -                  "RENDER_FAILURE",
        -                  "OCR_LOW_CONFIDENCE",
        -                  "MANUAL_REVIEW_REQUIRED",
        -                  "ACCEPTANCE_REQUIRED",
        -                  "INVALID_TOKEN"
        -                ],
        -                "type": "string"
        -              },
        -              "details": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "message": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "recoverable": {
        -                "type": "boolean"
        -              },
        -              "retry_after_seconds": {
        -                "anyOf": [
        -                  {
        -                    "minimum": 0,
        -                    "type": "integer"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              }
        -            },
        -            "required": [
        -              "code",
        -              "message",
        -              "recoverable"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      }
        -    },
        -    "required": [
        -      "_meta"
        -    ],
        -    "type": "object"
        -  },
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "_meta": {
        -        "additionalProperties": false,
        -        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        -        "properties": {
        -          "deliverables": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        -                "properties": {
        -                  "docx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "dxf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "expires_at": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  },
        -                  "pdf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "xlsx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "expires_at"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "document_id": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "issued_at": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "output_mode": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Surfaces what a trimmed ``output_mode`` withheld from ``data``.\n\nA trimmed mode (``summary`` / ``boq`` / ``boq_with_backup``) withholds\nalready-computed fields to keep the chat payload small. The withheld value\nreads to a client agent as \"capability missing\" (the box-culvert \"geometry\nbuilder isn't firing\" scare) rather than \"pared for size\": ``drawing`` and\n``audit_trail`` appear as ``null``, ``boq_rows`` as an empty list ``[]``\n(its type forbids ``null``) — both indistinguishable from a genuine absent\nresult. This names the withheld fields and the exact mode that brings each\nback, so the value is unambiguous. Absent on the default ``full_json`` mode\n— nothing is withheld, nothing to point at.",
        -                "properties": {
        -                  "mode": {
        -                    "enum": [
        -                      "summary",
        -                      "boq",
        -                      "boq_with_backup"
        -                    ],
        -                    "type": "string"
        -                  },
        -                  "omitted_fields": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "minItems": 1,
        -                    "type": "array"
        -                  },
        -                  "retrieve_with": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "mode",
        -                  "omitted_fields",
        -                  "retrieve_with"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "rate_limit_remaining": {
        -            "anyOf": [
        -              {
        -                "minimum": 0,
        -                "type": "integer"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "request_id": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "schema_version": {
        -            "const": "1.0.0",
        -            "default": "1.0.0",
        -            "type": "string"
        -          },
        -          "scope_boundary": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        -                "properties": {
        -                  "not_in_scope": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "produced": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "recommended_companions": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "type": "string"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "produced",
        -                  "not_in_scope"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tier": {
        -            "enum": [
        -              "free",
        -              "paid"
        -            ],
        -            "type": "string"
        -          },
        -          "tier_upgrade": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        -                "properties": {
        -                  "available_tiers": {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        -                      "properties": {
        -                        "billing": {
        -                          "enum": [
        -                            "one_off",
        -                            "monthly",
        -                            "annual"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "currency": {
        -                          "enum": [
        -                            "GBP",
        -                            "SGD",
        -                            "EUR",
        -                            "USD",
        -                            "CAD",
        -                            "AUD",
        -                            "NZD",
        -                            "MYR"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "display_name": {
        -                          "type": "string"
        -                        },
        -                        "price_local": {
        -                          "type": "number"
        -                        },
        -                        "tier_slug": {
        -                          "enum": [
        -                            "7_day_pass",
        -                            "solo",
        -                            "studio",
        -                            "practice"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "unlock_summary": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "tier_slug",
        -                        "display_name",
        -                        "price_local",
        -                        "currency",
        -                        "billing",
        -                        "unlock_summary"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "current_tier": {
        -                    "const": "free",
        -                    "default": "free",
        -                    "type": "string"
        -                  },
        -                  "pass_credit": {
        -                    "anyOf": [
        -                      {
        -                        "additionalProperties": false,
        -                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        -                        "properties": {
        -                          "amount_local": {
        -                            "type": "number"
        -                          },
        -                          "applies_to": {
        -                            "const": "solo_first_month",
        -                            "default": "solo_first_month",
        -                            "type": "string"
        -                          },
        -                          "currency": {
        -                            "type": "string"
        -                          },
        -                          "redeemable_until": {
        -                            "type": "string"
        -                          }
        -                        },
        -                        "required": [
        -                          "amount_local",
        -                          "currency",
        -                          "redeemable_until"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "pricing_url": {
        -                    "default": "https://civilquants.com/pricing",
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "available_tiers"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tos_url": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "upgrade_hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "warranty_disclaimer": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          }
        -        },
        -        "required": [
        -          "request_id",
        -          "issued_at",
        -          "tier"
        -        ],
        -        "type": "object"
        -      },
        -      "data": {
        -        "default": null,
        -        "title": "Data"
        -      },
        -      "error": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        -            "properties": {
        -              "code": {
        -                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        -                "enum": [
        -                  "RATE_LIMIT_EXCEEDED",
        -                  "TIER_INSUFFICIENT",
        -                  "INVALID_INPUT",
        -                  "SCHEMA_VERSION_MISMATCH",
        -                  "SCHEMA_INVARIANT_VIOLATION",
        -                  "UPSTREAM_TIMEOUT",
        -                  "BACKEND_FAILURE",
        -                  "IP_BLOCKED",
        -                  "RESOURCE_NOT_FOUND",
        -                  "RENDER_FAILURE",
        -                  "OCR_LOW_CONFIDENCE",
        -                  "MANUAL_REVIEW_REQUIRED",
        -                  "ACCEPTANCE_REQUIRED",
        -                  "INVALID_TOKEN"
        -                ],
        -                "type": "string"
        -              },
        -              "details": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "message": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "recoverable": {
        -                "type": "boolean"
        -              },
        -              "retry_after_seconds": {
        -                "anyOf": [
        -                  {
        -                    "minimum": 0,
        -                    "type": "integer"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              }
        -            },
        -            "required": [
        -              "code",
        -              "message",
        -              "recoverable"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      }
        -    },
        -    "required": [
        -      "_meta"
        -    ],
        -    "type": "object"
        -  }
        -]New value: +[
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "_meta": {
        +        "additionalProperties": false,
        +        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        +        "properties": {
        +          "deliverables": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        +                "properties": {
        +                  "docx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "dxf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "expires_at": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  },
        +                  "pdf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "xlsx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "expires_at"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "document_id": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "issued_at": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "output_mode": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Surfaces what a trimmed ``output_mode`` withheld from ``data``.\n\nA trimmed mode (``summary`` / ``material_schedule`` / ``boq`` /\n``boq_with_backup``) withholds\nalready-computed fields to keep the chat payload small. The withheld value\nreads to a client agent as \"capability missing\" (the box-culvert \"geometry\nbuilder isn't firing\" scare) rather than \"pared for size\": ``drawing`` and\n``audit_trail`` appear as ``null``, ``boq_rows`` as an empty list ``[]``\n(its type forbids ``null``) — both indistinguishable from a genuine absent\nresult. This names the withheld fields and the exact mode that brings each\nback, so the value is unambiguous. Absent on the default ``full_json`` mode\n— nothing is withheld, nothing to point at.",
        +                "properties": {
        +                  "mode": {
        +                    "enum": [
        +                      "summary",
        +                      "material_schedule",
        +                      "boq",
        +                      "boq_with_backup"
        +                    ],
        +                    "type": "string"
        +                  },
        +                  "omitted_fields": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "minItems": 1,
        +                    "type": "array"
        +                  },
        +                  "retrieve_with": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "mode",
        +                  "omitted_fields",
        +                  "retrieve_with"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "rate_limit_remaining": {
        +            "anyOf": [
        +              {
        +                "minimum": 0,
        +                "type": "integer"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "request_id": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "schema_version": {
        +            "const": "1.0.0",
        +            "default": "1.0.0",
        +            "type": "string"
        +          },
        +          "scope_boundary": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        +                "properties": {
        +                  "not_in_scope": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "produced": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "recommended_companions": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "type": "string"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "produced",
        +                  "not_in_scope"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tier": {
        +            "enum": [
        +              "free",
        +              "paid"
        +            ],
        +            "type": "string"
        +          },
        +          "tier_upgrade": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        +                "properties": {
        +                  "available_tiers": {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        +                      "properties": {
        +                        "billing": {
        +                          "enum": [
        +                            "one_off",
        +                            "monthly",
        +                            "annual"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "currency": {
        +                          "enum": [
        +                            "GBP",
        +                            "SGD",
        +                            "EUR",
        +                            "USD",
        +                            "CAD",
        +                            "AUD",
        +                            "NZD",
        +                            "MYR"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "display_name": {
        +                          "type": "string"
        +                        },
        +                        "price_local": {
        +                          "type": "number"
        +                        },
        +                        "tier_slug": {
        +                          "enum": [
        +                            "7_day_pass",
        +                            "solo",
        +                            "studio",
        +                            "practice"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "unlock_summary": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "tier_slug",
        +                        "display_name",
        +                        "price_local",
        +                        "currency",
        +                        "billing",
        +                        "unlock_summary"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "current_tier": {
        +                    "const": "free",
        +                    "default": "free",
        +                    "type": "string"
        +                  },
        +                  "pass_credit": {
        +                    "anyOf": [
        +                      {
        +                        "additionalProperties": false,
        +                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        +                        "properties": {
        +                          "amount_local": {
        +                            "type": "number"
        +                          },
        +                          "applies_to": {
        +                            "const": "solo_first_month",
        +                            "default": "solo_first_month",
        +                            "type": "string"
        +                          },
        +                          "currency": {
        +                            "type": "string"
        +                          },
        +                          "redeemable_until": {
        +                            "type": "string"
        +                          }
        +                        },
        +                        "required": [
        +                          "amount_local",
        +                          "currency",
        +                          "redeemable_until"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "pricing_url": {
        +                    "default": "https://civilquants.com/pricing",
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "available_tiers"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tos_url": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "upgrade_hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "warranty_disclaimer": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          }
        +        },
        +        "required": [
        +          "request_id",
        +          "issued_at",
        +          "tier"
        +        ],
        +        "type": "object"
        +      },
        +      "data": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Schema § 1.1 — the typed payload returned inside `MCPResponse[ComputeResult]`.\n\nFree-tier responses omit `drawings` (the downloadable CAD artefact\npointers — the paid differentiator); the bridge enforces this. The\n`audit_trail` and the inline `drawing` preview are present on BOTH tiers\n(V1 ALIGN / 60th-fire D + C). `text_summary` is bounded to 2000 chars —\nkeeps the LLM-facing summary token-cheap and forces longer narrative into\nBoQ row descriptions where it belongs. `warnings` is the non-fatal\ngeometry advisory list (both tiers).",
        +            "properties": {
        +              "assembly_slug": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "audit_trail": {
        +                "anyOf": [
        +                  {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.7 — paid-tier audit-trail entry.\n\nOne entry per BoQ row; `boq_row_index` ties to the row position in\n`ComputeResult.boq_rows`. `derivation` is the human-readable formula\nwalk-through; `formula` is the optional formal expression.",
        +                      "properties": {
        +                        "boq_row_index": {
        +                          "minimum": 0,
        +                          "type": "integer"
        +                        },
        +                        "derivation": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "formula": {
        +                          "anyOf": [
        +                            {
        +                              "type": "string"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ],
        +                          "default": null
        +                        },
        +                        "id": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "parameters_referenced": {
        +                          "items": {
        +                            "type": "string"
        +                          },
        +                          "type": "array"
        +                        }
        +                      },
        +                      "required": [
        +                        "id",
        +                        "boq_row_index",
        +                        "derivation"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "boq_rows": {
        +                "items": {
        +                  "additionalProperties": false,
        +                  "description": "Schema § 1.3 — a single bill row in the requested standard's format.\n\n`description` is the non-verbatim functional description per spec § 13.9 /\n§ 15 invariant — NEVER reproduces a standard's verbatim clause text.\n`rate` / `amount` ship null because rates are commodity data the customer\nowns; the engine's job is the measurement, not the pricing.",
        +                  "properties": {
        +                    "amount": {
        +                      "anyOf": [
        +                        {
        +                          "type": "number"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "attribution": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "audit_id": {
        +                      "anyOf": [
        +                        {
        +                          "type": "string"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "description": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "quantity": {
        +                      "minimum": 0,
        +                      "type": "number"
        +                    },
        +                    "rate": {
        +                      "anyOf": [
        +                        {
        +                          "type": "number"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "unit": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "work_section": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    }
        +                  },
        +                  "required": [
        +                    "work_section",
        +                    "description",
        +                    "quantity",
        +                    "unit",
        +                    "attribution"
        +                  ],
        +                  "type": "object"
        +                },
        +                "type": "array"
        +              },
        +              "drawing": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": false,
        +                    "description": "Schema § 1.6a — inline server-rendered SVG preview of the geometry.\n\nThe MCP mirror of the web ``/compute`` response's ``drawing`` field\n(``api.schemas.compute.DrawingRef``): the same on-screen dimensioned\ndrawing both tiers see in the workspace, surfaced on the MCP compute\nresponse so a chat client can render it inline (60th-fire item C). This\nis the on-screen preview — present on BOTH tiers per the free/paid\nboundary; the downloadable CAD artefacts (DXF / dimensioned PDF) remain\nthe paid differentiator via the export tools.\n\nDefined here rather than importing ``DrawingRef`` because the web\n``schemas`` package imports back into this module (``schemas.render``),\nso reusing it would create an import cycle — the MCP wire contract keeps\nits own copy, the same pattern as ``BoQRow`` / ``DrawingReference``.",
        +                    "properties": {
        +                      "entity_count": {
        +                        "minimum": 0,
        +                        "type": "integer"
        +                      },
        +                      "svg_b64": {
        +                        "minLength": 1,
        +                        "type": "string"
        +                      },
        +                      "unit_of_drawing": {
        +                        "const": "m",
        +                        "default": "m",
        +                        "type": "string"
        +                      },
        +                      "viewbox_height": {
        +                        "exclusiveMinimum": 0,
        +                        "type": "number"
        +                      },
        +                      "viewbox_width": {
        +                        "exclusiveMinimum": 0,
        +                        "type": "number"
        +                      },
        +                      "viewbox_x": {
        +                        "type": "number"
        +                      },
        +                      "viewbox_y": {
        +                        "type": "number"
        +                      }
        +                    },
        +                    "required": [
        +                      "svg_b64",
        +                      "viewbox_x",
        +                      "viewbox_y",
        +                      "viewbox_width",
        +                      "viewbox_height",
        +                      "entity_count"
        +                    ],
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "drawings": {
        +                "anyOf": [
        +                  {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.6 — paid-tier drawing artefact pointer.\n\n`url` is an R2-signed URL; expiry is carried in `_meta.deliverables.expires_at`\non the envelope (not duplicated here). `layers` is DXF-only; PDF/SVG\ncallers omit it.",
        +                      "properties": {
        +                        "drawing_type": {
        +                          "enum": [
        +                            "section",
        +                            "plan",
        +                            "elevation",
        +                            "isometric",
        +                            "detail"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "format": {
        +                          "enum": [
        +                            "DXF",
        +                            "PDF",
        +                            "SVG"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "layers": {
        +                          "anyOf": [
        +                            {
        +                              "items": {
        +                                "type": "string"
        +                              },
        +                              "type": "array"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ],
        +                          "default": null
        +                        },
        +                        "scale": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "sheet_size": {
        +                          "enum": [
        +                            "A1",
        +                            "A2",
        +                            "A3",
        +                            "A4"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "url": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "drawing_type",
        +                        "format",
        +                        "url",
        +                        "sheet_size",
        +                        "scale"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "parameters_used": {
        +                "additionalProperties": false,
        +                "description": "Schema § 1.2 — the parameter snapshot the engine actually used.\n\nSplits user-supplied values from engine defaults so customers can see\nwhich numbers came from them and which the engine filled in. Every\ndefaulted parameter SHOULD have a corresponding entry in `assumptions`\n— the bridge layer enforces this when wrapping engine output.",
        +                "properties": {
        +                  "assumptions": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "engine_defaults": {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  "user_supplied": {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  }
        +                },
        +                "type": "object"
        +              },
        +              "standard": {
        +                "enum": [
        +                  "CESMM4",
        +                  "NRM2",
        +                  "SMM7",
        +                  "MMHW"
        +                ],
        +                "type": "string"
        +              },
        +              "text_summary": {
        +                "maxLength": 2000,
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "totals_summary": {
        +                "additionalProperties": false,
        +                "description": "Schema § 1.4 — totals_summary as a typed wrapper around the free-form dict.\n\nWire shape is a flat object (`{\"concrete_m3\": {...}, \"rebar_t\": {...}}`).\nWe model it as `RootModel`-equivalent via `model_config(extra=\"allow\")`\n+ a single `__root__`-style `entries` dict. Pydantic v2 recommends\n`RootModel` for free-form roots; using a wrapper class keeps the import\nsurface uniform with the rest of this module.",
        +                "properties": {
        +                  "entries": {
        +                    "additionalProperties": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.4 — single material/work-class total entry.",
        +                      "properties": {
        +                        "quantity": {
        +                          "minimum": 0,
        +                          "type": "number"
        +                        },
        +                        "unit": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "quantity",
        +                        "unit"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "object"
        +                  }
        +                },
        +                "type": "object"
        +              },
        +              "warnings": {
        +                "items": {
        +                  "additionalProperties": false,
        +                  "description": "Schema § 1.8 — a non-fatal geometry advisory (56th-fire T2).\n\nThe wire projection of the engine's `core.GeometryWarning`. Advisory only:\na warning NEVER changes a measured quantity — it flags geometry that is\nvalid but likely a mistake (e.g. a stale dependent-height default). Present\non BOTH tiers — a correctness/safety signal, not a paid feature.",
        +                  "properties": {
        +                    "affected_params": {
        +                      "items": {
        +                        "type": "string"
        +                      },
        +                      "type": "array"
        +                    },
        +                    "code": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "detail": {
        +                      "additionalProperties": {
        +                        "type": "number"
        +                      },
        +                      "type": "object"
        +                    },
        +                    "message": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "severity": {
        +                      "enum": [
        +                        "info",
        +                        "advisory",
        +                        "caution"
        +                      ],
        +                      "type": "string"
        +                    }
        +                  },
        +                  "required": [
        +                    "code",
        +                    "severity",
        +                    "message"
        +                  ],
        +                  "type": "object"
        +                },
        +                "type": "array"
        +              }
        +            },
        +            "required": [
        +              "assembly_slug",
        +              "standard",
        +              "parameters_used",
        +              "boq_rows",
        +              "totals_summary",
        +              "text_summary"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      },
        +      "error": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        +            "properties": {
        +              "code": {
        +                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        +                "enum": [
        +                  "RATE_LIMIT_EXCEEDED",
        +                  "TIER_INSUFFICIENT",
        +                  "INVALID_INPUT",
        +                  "SCHEMA_VERSION_MISMATCH",
        +                  "SCHEMA_INVARIANT_VIOLATION",
        +                  "UPSTREAM_TIMEOUT",
        +                  "BACKEND_FAILURE",
        +                  "IP_BLOCKED",
        +                  "RESOURCE_NOT_FOUND",
        +                  "RENDER_FAILURE",
        +                  "OCR_LOW_CONFIDENCE",
        +                  "MANUAL_REVIEW_REQUIRED",
        +                  "ACCEPTANCE_REQUIRED",
        +                  "INVALID_TOKEN"
        +                ],
        +                "type": "string"
        +              },
        +              "details": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "message": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "recoverable": {
        +                "type": "boolean"
        +              },
        +              "retry_after_seconds": {
        +                "anyOf": [
        +                  {
        +                    "minimum": 0,
        +                    "type": "integer"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              }
        +            },
        +            "required": [
        +              "code",
        +              "message",
        +              "recoverable"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      }
        +    },
        +    "required": [
        +      "_meta"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "_meta": {
        +        "additionalProperties": false,
        +        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        +        "properties": {
        +          "deliverables": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        +                "properties": {
        +                  "docx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "dxf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "expires_at": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  },
        +                  "pdf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "xlsx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "expires_at"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "document_id": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "issued_at": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "output_mode": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Surfaces what a trimmed ``output_mode`` withheld from ``data``.\n\nA trimmed mode (``summary`` / ``material_schedule`` / ``boq`` /\n``boq_with_backup``) withholds\nalready-computed fields to keep the chat payload small. The withheld value\nreads to a client agent as \"capability missing\" (the box-culvert \"geometry\nbuilder isn't firing\" scare) rather than \"pared for size\": ``drawing`` and\n``audit_trail`` appear as ``null``, ``boq_rows`` as an empty list ``[]``\n(its type forbids ``null``) — both indistinguishable from a genuine absent\nresult. This names the withheld fields and the exact mode that brings each\nback, so the value is unambiguous. Absent on the default ``full_json`` mode\n— nothing is withheld, nothing to point at.",
        +                "properties": {
        +                  "mode": {
        +                    "enum": [
        +                      "summary",
        +                      "material_schedule",
        +                      "boq",
        +                      "boq_with_backup"
        +                    ],
        +                    "type": "string"
        +                  },
        +                  "omitted_fields": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "minItems": 1,
        +                    "type": "array"
        +                  },
        +                  "retrieve_with": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "mode",
        +                  "omitted_fields",
        +                  "retrieve_with"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "rate_limit_remaining": {
        +            "anyOf": [
        +              {
        +                "minimum": 0,
        +                "type": "integer"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "request_id": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "schema_version": {
        +            "const": "1.0.0",
        +            "default": "1.0.0",
        +            "type": "string"
        +          },
        +          "scope_boundary": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        +                "properties": {
        +                  "not_in_scope": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "produced": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "recommended_companions": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "type": "string"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "produced",
        +                  "not_in_scope"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tier": {
        +            "enum": [
        +              "free",
        +              "paid"
        +            ],
        +            "type": "string"
        +          },
        +          "tier_upgrade": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        +                "properties": {
        +                  "available_tiers": {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        +                      "properties": {
        +                        "billing": {
        +                          "enum": [
        +                            "one_off",
        +                            "monthly",
        +                            "annual"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "currency": {
        +                          "enum": [
        +                            "GBP",
        +                            "SGD",
        +                            "EUR",
        +                            "USD",
        +                            "CAD",
        +                            "AUD",
        +                            "NZD",
        +                            "MYR"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "display_name": {
        +                          "type": "string"
        +                        },
        +                        "price_local": {
        +                          "type": "number"
        +                        },
        +                        "tier_slug": {
        +                          "enum": [
        +                            "7_day_pass",
        +                            "solo",
        +                            "studio",
        +                            "practice"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "unlock_summary": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "tier_slug",
        +                        "display_name",
        +                        "price_local",
        +                        "currency",
        +                        "billing",
        +                        "unlock_summary"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "current_tier": {
        +                    "const": "free",
        +                    "default": "free",
        +                    "type": "string"
        +                  },
        +                  "pass_credit": {
        +                    "anyOf": [
        +                      {
        +                        "additionalProperties": false,
        +                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        +                        "properties": {
        +                          "amount_local": {
        +                            "type": "number"
        +                          },
        +                          "applies_to": {
        +                            "const": "solo_first_month",
        +                            "default": "solo_first_month",
        +                            "type": "string"
        +                          },
        +                          "currency": {
        +                            "type": "string"
        +                          },
        +                          "redeemable_until": {
        +                            "type": "string"
        +                          }
        +                        },
        +                        "required": [
        +                          "amount_local",
        +                          "currency",
        +                          "redeemable_until"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "pricing_url": {
        +                    "default": "https://civilquants.com/pricing",
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "available_tiers"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tos_url": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "upgrade_hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "warranty_disclaimer": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          }
        +        },
        +        "required": [
        +          "request_id",
        +          "issued_at",
        +          "tier"
        +        ],
        +        "type": "object"
        +      },
        +      "data": {
        +        "default": null,
        +        "title": "Data"
        +      },
        +      "error": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        +            "properties": {
        +              "code": {
        +                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        +                "enum": [
        +                  "RATE_LIMIT_EXCEEDED",
        +                  "TIER_INSUFFICIENT",
        +                  "INVALID_INPUT",
        +                  "SCHEMA_VERSION_MISMATCH",
        +                  "SCHEMA_INVARIANT_VIOLATION",
        +                  "UPSTREAM_TIMEOUT",
        +                  "BACKEND_FAILURE",
        +                  "IP_BLOCKED",
        +                  "RESOURCE_NOT_FOUND",
        +                  "RENDER_FAILURE",
        +                  "OCR_LOW_CONFIDENCE",
        +                  "MANUAL_REVIEW_REQUIRED",
        +                  "ACCEPTANCE_REQUIRED",
        +                  "INVALID_TOKEN"
        +                ],
        +                "type": "string"
        +              },
        +              "details": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "message": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "recoverable": {
        +                "type": "boolean"
        +              },
        +              "retry_after_seconds": {
        +                "anyOf": [
        +                  {
        +                    "minimum": 0,
        +                    "type": "integer"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              }
        +            },
        +            "required": [
        +              "code",
        +              "message",
        +              "recoverable"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      }
        +    },
        +    "required": [
        +      "_meta"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedcompute_flexible_pavement2 fields changed
      • changedInput schema / properties / output_mode / enum
        Previous value: -[
        -  "summary",
        -  "boq",
        -  "boq_with_backup",
        -  "full_json"
        -]New value: +[
        +  "summary",
        +  "material_schedule",
        +  "boq",
        +  "boq_with_backup",
        +  "full_json"
        +]
      • changedOutput schema / properties / result / anyOf
        Previous value: -[
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "_meta": {
        -        "additionalProperties": false,
        -        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        -        "properties": {
        -          "deliverables": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        -                "properties": {
        -                  "docx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "dxf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "expires_at": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  },
        -                  "pdf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "xlsx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "expires_at"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "document_id": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "issued_at": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "output_mode": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Surfaces what a trimmed ``output_mode`` withheld from ``data``.\n\nA trimmed mode (``summary`` / ``boq`` / ``boq_with_backup``) withholds\nalready-computed fields to keep the chat payload small. The withheld value\nreads to a client agent as \"capability missing\" (the box-culvert \"geometry\nbuilder isn't firing\" scare) rather than \"pared for size\": ``drawing`` and\n``audit_trail`` appear as ``null``, ``boq_rows`` as an empty list ``[]``\n(its type forbids ``null``) — both indistinguishable from a genuine absent\nresult. This names the withheld fields and the exact mode that brings each\nback, so the value is unambiguous. Absent on the default ``full_json`` mode\n— nothing is withheld, nothing to point at.",
        -                "properties": {
        -                  "mode": {
        -                    "enum": [
        -                      "summary",
        -                      "boq",
        -                      "boq_with_backup"
        -                    ],
        -                    "type": "string"
        -                  },
        -                  "omitted_fields": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "minItems": 1,
        -                    "type": "array"
        -                  },
        -                  "retrieve_with": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "mode",
        -                  "omitted_fields",
        -                  "retrieve_with"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "rate_limit_remaining": {
        -            "anyOf": [
        -              {
        -                "minimum": 0,
        -                "type": "integer"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "request_id": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "schema_version": {
        -            "const": "1.0.0",
        -            "default": "1.0.0",
        -            "type": "string"
        -          },
        -          "scope_boundary": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        -                "properties": {
        -                  "not_in_scope": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "produced": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "recommended_companions": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "type": "string"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "produced",
        -                  "not_in_scope"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tier": {
        -            "enum": [
        -              "free",
        -              "paid"
        -            ],
        -            "type": "string"
        -          },
        -          "tier_upgrade": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        -                "properties": {
        -                  "available_tiers": {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        -                      "properties": {
        -                        "billing": {
        -                          "enum": [
        -                            "one_off",
        -                            "monthly",
        -                            "annual"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "currency": {
        -                          "enum": [
        -                            "GBP",
        -                            "SGD",
        -                            "EUR",
        -                            "USD",
        -                            "CAD",
        -                            "AUD",
        -                            "NZD",
        -                            "MYR"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "display_name": {
        -                          "type": "string"
        -                        },
        -                        "price_local": {
        -                          "type": "number"
        -                        },
        -                        "tier_slug": {
        -                          "enum": [
        -                            "7_day_pass",
        -                            "solo",
        -                            "studio",
        -                            "practice"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "unlock_summary": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "tier_slug",
        -                        "display_name",
        -                        "price_local",
        -                        "currency",
        -                        "billing",
        -                        "unlock_summary"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "current_tier": {
        -                    "const": "free",
        -                    "default": "free",
        -                    "type": "string"
        -                  },
        -                  "pass_credit": {
        -                    "anyOf": [
        -                      {
        -                        "additionalProperties": false,
        -                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        -                        "properties": {
        -                          "amount_local": {
        -                            "type": "number"
        -                          },
        -                          "applies_to": {
        -                            "const": "solo_first_month",
        -                            "default": "solo_first_month",
        -                            "type": "string"
        -                          },
        -                          "currency": {
        -                            "type": "string"
        -                          },
        -                          "redeemable_until": {
        -                            "type": "string"
        -                          }
        -                        },
        -                        "required": [
        -                          "amount_local",
        -                          "currency",
        -                          "redeemable_until"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "pricing_url": {
        -                    "default": "https://civilquants.com/pricing",
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "available_tiers"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tos_url": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "upgrade_hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "warranty_disclaimer": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          }
        -        },
        -        "required": [
        -          "request_id",
        -          "issued_at",
        -          "tier"
        -        ],
        -        "type": "object"
        -      },
        -      "data": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Schema § 1.1 — the typed payload returned inside `MCPResponse[ComputeResult]`.\n\nFree-tier responses omit `drawings` (the downloadable CAD artefact\npointers — the paid differentiator); the bridge enforces this. The\n`audit_trail` and the inline `drawing` preview are present on BOTH tiers\n(V1 ALIGN / 60th-fire D + C). `text_summary` is bounded to 2000 chars —\nkeeps the LLM-facing summary token-cheap and forces longer narrative into\nBoQ row descriptions where it belongs. `warnings` is the non-fatal\ngeometry advisory list (both tiers).",
        -            "properties": {
        -              "assembly_slug": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "audit_trail": {
        -                "anyOf": [
        -                  {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.7 — paid-tier audit-trail entry.\n\nOne entry per BoQ row; `boq_row_index` ties to the row position in\n`ComputeResult.boq_rows`. `derivation` is the human-readable formula\nwalk-through; `formula` is the optional formal expression.",
        -                      "properties": {
        -                        "boq_row_index": {
        -                          "minimum": 0,
        -                          "type": "integer"
        -                        },
        -                        "derivation": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "formula": {
        -                          "anyOf": [
        -                            {
        -                              "type": "string"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ],
        -                          "default": null
        -                        },
        -                        "id": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "parameters_referenced": {
        -                          "items": {
        -                            "type": "string"
        -                          },
        -                          "type": "array"
        -                        }
        -                      },
        -                      "required": [
        -                        "id",
        -                        "boq_row_index",
        -                        "derivation"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "boq_rows": {
        -                "items": {
        -                  "additionalProperties": false,
        -                  "description": "Schema § 1.3 — a single bill row in the requested standard's format.\n\n`description` is the non-verbatim functional description per spec § 13.9 /\n§ 15 invariant — NEVER reproduces a standard's verbatim clause text.\n`rate` / `amount` ship null because rates are commodity data the customer\nowns; the engine's job is the measurement, not the pricing.",
        -                  "properties": {
        -                    "amount": {
        -                      "anyOf": [
        -                        {
        -                          "type": "number"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "attribution": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "audit_id": {
        -                      "anyOf": [
        -                        {
        -                          "type": "string"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "description": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "quantity": {
        -                      "minimum": 0,
        -                      "type": "number"
        -                    },
        -                    "rate": {
        -                      "anyOf": [
        -                        {
        -                          "type": "number"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "unit": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "work_section": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    }
        -                  },
        -                  "required": [
        -                    "work_section",
        -                    "description",
        -                    "quantity",
        -                    "unit",
        -                    "attribution"
        -                  ],
        -                  "type": "object"
        -                },
        -                "type": "array"
        -              },
        -              "drawing": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": false,
        -                    "description": "Schema § 1.6a — inline server-rendered SVG preview of the geometry.\n\nThe MCP mirror of the web ``/compute`` response's ``drawing`` field\n(``api.schemas.compute.DrawingRef``): the same on-screen dimensioned\ndrawing both tiers see in the workspace, surfaced on the MCP compute\nresponse so a chat client can render it inline (60th-fire item C). This\nis the on-screen preview — present on BOTH tiers per the free/paid\nboundary; the downloadable CAD artefacts (DXF / dimensioned PDF) remain\nthe paid differentiator via the export tools.\n\nDefined here rather than importing ``DrawingRef`` because the web\n``schemas`` package imports back into this module (``schemas.render``),\nso reusing it would create an import cycle — the MCP wire contract keeps\nits own copy, the same pattern as ``BoQRow`` / ``DrawingReference``.",
        -                    "properties": {
        -                      "entity_count": {
        -                        "minimum": 0,
        -                        "type": "integer"
        -                      },
        -                      "svg_b64": {
        -                        "minLength": 1,
        -                        "type": "string"
        -                      },
        -                      "unit_of_drawing": {
        -                        "const": "m",
        -                        "default": "m",
        -                        "type": "string"
        -                      },
        -                      "viewbox_height": {
        -                        "exclusiveMinimum": 0,
        -                        "type": "number"
        -                      },
        -                      "viewbox_width": {
        -                        "exclusiveMinimum": 0,
        -                        "type": "number"
        -                      },
        -                      "viewbox_x": {
        -                        "type": "number"
        -                      },
        -                      "viewbox_y": {
        -                        "type": "number"
        -                      }
        -                    },
        -                    "required": [
        -                      "svg_b64",
        -                      "viewbox_x",
        -                      "viewbox_y",
        -                      "viewbox_width",
        -                      "viewbox_height",
        -                      "entity_count"
        -                    ],
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "drawings": {
        -                "anyOf": [
        -                  {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.6 — paid-tier drawing artefact pointer.\n\n`url` is an R2-signed URL; expiry is carried in `_meta.deliverables.expires_at`\non the envelope (not duplicated here). `layers` is DXF-only; PDF/SVG\ncallers omit it.",
        -                      "properties": {
        -                        "drawing_type": {
        -                          "enum": [
        -                            "section",
        -                            "plan",
        -                            "elevation",
        -                            "isometric",
        -                            "detail"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "format": {
        -                          "enum": [
        -                            "DXF",
        -                            "PDF",
        -                            "SVG"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "layers": {
        -                          "anyOf": [
        -                            {
        -                              "items": {
        -                                "type": "string"
        -                              },
        -                              "type": "array"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ],
        -                          "default": null
        -                        },
        -                        "scale": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "sheet_size": {
        -                          "enum": [
        -                            "A1",
        -                            "A2",
        -                            "A3",
        -                            "A4"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "url": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "drawing_type",
        -                        "format",
        -                        "url",
        -                        "sheet_size",
        -                        "scale"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "parameters_used": {
        -                "additionalProperties": false,
        -                "description": "Schema § 1.2 — the parameter snapshot the engine actually used.\n\nSplits user-supplied values from engine defaults so customers can see\nwhich numbers came from them and which the engine filled in. Every\ndefaulted parameter SHOULD have a corresponding entry in `assumptions`\n— the bridge layer enforces this when wrapping engine output.",
        -                "properties": {
        -                  "assumptions": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "engine_defaults": {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  "user_supplied": {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  }
        -                },
        -                "type": "object"
        -              },
        -              "standard": {
        -                "enum": [
        -                  "CESMM4",
        -                  "NRM2",
        -                  "SMM7",
        -                  "MMHW"
        -                ],
        -                "type": "string"
        -              },
        -              "text_summary": {
        -                "maxLength": 2000,
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "totals_summary": {
        -                "additionalProperties": false,
        -                "description": "Schema § 1.4 — totals_summary as a typed wrapper around the free-form dict.\n\nWire shape is a flat object (`{\"concrete_m3\": {...}, \"rebar_t\": {...}}`).\nWe model it as `RootModel`-equivalent via `model_config(extra=\"allow\")`\n+ a single `__root__`-style `entries` dict. Pydantic v2 recommends\n`RootModel` for free-form roots; using a wrapper class keeps the import\nsurface uniform with the rest of this module.",
        -                "properties": {
        -                  "entries": {
        -                    "additionalProperties": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.4 — single material/work-class total entry.",
        -                      "properties": {
        -                        "quantity": {
        -                          "minimum": 0,
        -                          "type": "number"
        -                        },
        -                        "unit": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "quantity",
        -                        "unit"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "object"
        -                  }
        -                },
        -                "type": "object"
        -              },
        -              "warnings": {
        -                "items": {
        -                  "additionalProperties": false,
        -                  "description": "Schema § 1.8 — a non-fatal geometry advisory (56th-fire T2).\n\nThe wire projection of the engine's `core.GeometryWarning`. Advisory only:\na warning NEVER changes a measured quantity — it flags geometry that is\nvalid but likely a mistake (e.g. a stale dependent-height default). Present\non BOTH tiers — a correctness/safety signal, not a paid feature.",
        -                  "properties": {
        -                    "affected_params": {
        -                      "items": {
        -                        "type": "string"
        -                      },
        -                      "type": "array"
        -                    },
        -                    "code": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "detail": {
        -                      "additionalProperties": {
        -                        "type": "number"
        -                      },
        -                      "type": "object"
        -                    },
        -                    "message": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "severity": {
        -                      "enum": [
        -                        "info",
        -                        "advisory",
        -                        "caution"
        -                      ],
        -                      "type": "string"
        -                    }
        -                  },
        -                  "required": [
        -                    "code",
        -                    "severity",
        -                    "message"
        -                  ],
        -                  "type": "object"
        -                },
        -                "type": "array"
        -              }
        -            },
        -            "required": [
        -              "assembly_slug",
        -              "standard",
        -              "parameters_used",
        -              "boq_rows",
        -              "totals_summary",
        -              "text_summary"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      },
        -      "error": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        -            "properties": {
        -              "code": {
        -                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        -                "enum": [
        -                  "RATE_LIMIT_EXCEEDED",
        -                  "TIER_INSUFFICIENT",
        -                  "INVALID_INPUT",
        -                  "SCHEMA_VERSION_MISMATCH",
        -                  "SCHEMA_INVARIANT_VIOLATION",
        -                  "UPSTREAM_TIMEOUT",
        -                  "BACKEND_FAILURE",
        -                  "IP_BLOCKED",
        -                  "RESOURCE_NOT_FOUND",
        -                  "RENDER_FAILURE",
        -                  "OCR_LOW_CONFIDENCE",
        -                  "MANUAL_REVIEW_REQUIRED",
        -                  "ACCEPTANCE_REQUIRED",
        -                  "INVALID_TOKEN"
        -                ],
        -                "type": "string"
        -              },
        -              "details": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "message": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "recoverable": {
        -                "type": "boolean"
        -              },
        -              "retry_after_seconds": {
        -                "anyOf": [
        -                  {
        -                    "minimum": 0,
        -                    "type": "integer"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              }
        -            },
        -            "required": [
        -              "code",
        -              "message",
        -              "recoverable"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      }
        -    },
        -    "required": [
        -      "_meta"
        -    ],
        -    "type": "object"
        -  },
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "_meta": {
        -        "additionalProperties": false,
        -        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        -        "properties": {
        -          "deliverables": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        -                "properties": {
        -                  "docx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "dxf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "expires_at": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  },
        -                  "pdf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "xlsx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "expires_at"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "document_id": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "issued_at": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "output_mode": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Surfaces what a trimmed ``output_mode`` withheld from ``data``.\n\nA trimmed mode (``summary`` / ``boq`` / ``boq_with_backup``) withholds\nalready-computed fields to keep the chat payload small. The withheld value\nreads to a client agent as \"capability missing\" (the box-culvert \"geometry\nbuilder isn't firing\" scare) rather than \"pared for size\": ``drawing`` and\n``audit_trail`` appear as ``null``, ``boq_rows`` as an empty list ``[]``\n(its type forbids ``null``) — both indistinguishable from a genuine absent\nresult. This names the withheld fields and the exact mode that brings each\nback, so the value is unambiguous. Absent on the default ``full_json`` mode\n— nothing is withheld, nothing to point at.",
        -                "properties": {
        -                  "mode": {
        -                    "enum": [
        -                      "summary",
        -                      "boq",
        -                      "boq_with_backup"
        -                    ],
        -                    "type": "string"
        -                  },
        -                  "omitted_fields": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "minItems": 1,
        -                    "type": "array"
        -                  },
        -                  "retrieve_with": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "mode",
        -                  "omitted_fields",
        -                  "retrieve_with"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "rate_limit_remaining": {
        -            "anyOf": [
        -              {
        -                "minimum": 0,
        -                "type": "integer"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "request_id": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "schema_version": {
        -            "const": "1.0.0",
        -            "default": "1.0.0",
        -            "type": "string"
        -          },
        -          "scope_boundary": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        -                "properties": {
        -                  "not_in_scope": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "produced": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "recommended_companions": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "type": "string"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "produced",
        -                  "not_in_scope"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tier": {
        -            "enum": [
        -              "free",
        -              "paid"
        -            ],
        -            "type": "string"
        -          },
        -          "tier_upgrade": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        -                "properties": {
        -                  "available_tiers": {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        -                      "properties": {
        -                        "billing": {
        -                          "enum": [
        -                            "one_off",
        -                            "monthly",
        -                            "annual"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "currency": {
        -                          "enum": [
        -                            "GBP",
        -                            "SGD",
        -                            "EUR",
        -                            "USD",
        -                            "CAD",
        -                            "AUD",
        -                            "NZD",
        -                            "MYR"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "display_name": {
        -                          "type": "string"
        -                        },
        -                        "price_local": {
        -                          "type": "number"
        -                        },
        -                        "tier_slug": {
        -                          "enum": [
        -                            "7_day_pass",
        -                            "solo",
        -                            "studio",
        -                            "practice"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "unlock_summary": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "tier_slug",
        -                        "display_name",
        -                        "price_local",
        -                        "currency",
        -                        "billing",
        -                        "unlock_summary"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "current_tier": {
        -                    "const": "free",
        -                    "default": "free",
        -                    "type": "string"
        -                  },
        -                  "pass_credit": {
        -                    "anyOf": [
        -                      {
        -                        "additionalProperties": false,
        -                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        -                        "properties": {
        -                          "amount_local": {
        -                            "type": "number"
        -                          },
        -                          "applies_to": {
        -                            "const": "solo_first_month",
        -                            "default": "solo_first_month",
        -                            "type": "string"
        -                          },
        -                          "currency": {
        -                            "type": "string"
        -                          },
        -                          "redeemable_until": {
        -                            "type": "string"
        -                          }
        -                        },
        -                        "required": [
        -                          "amount_local",
        -                          "currency",
        -                          "redeemable_until"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "pricing_url": {
        -                    "default": "https://civilquants.com/pricing",
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "available_tiers"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tos_url": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "upgrade_hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "warranty_disclaimer": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          }
        -        },
        -        "required": [
        -          "request_id",
        -          "issued_at",
        -          "tier"
        -        ],
        -        "type": "object"
        -      },
        -      "data": {
        -        "default": null,
        -        "title": "Data"
        -      },
        -      "error": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        -            "properties": {
        -              "code": {
        -                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        -                "enum": [
        -                  "RATE_LIMIT_EXCEEDED",
        -                  "TIER_INSUFFICIENT",
        -                  "INVALID_INPUT",
        -                  "SCHEMA_VERSION_MISMATCH",
        -                  "SCHEMA_INVARIANT_VIOLATION",
        -                  "UPSTREAM_TIMEOUT",
        -                  "BACKEND_FAILURE",
        -                  "IP_BLOCKED",
        -                  "RESOURCE_NOT_FOUND",
        -                  "RENDER_FAILURE",
        -                  "OCR_LOW_CONFIDENCE",
        -                  "MANUAL_REVIEW_REQUIRED",
        -                  "ACCEPTANCE_REQUIRED",
        -                  "INVALID_TOKEN"
        -                ],
        -                "type": "string"
        -              },
        -              "details": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "message": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "recoverable": {
        -                "type": "boolean"
        -              },
        -              "retry_after_seconds": {
        -                "anyOf": [
        -                  {
        -                    "minimum": 0,
        -                    "type": "integer"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              }
        -            },
        -            "required": [
        -              "code",
        -              "message",
        -              "recoverable"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      }
        -    },
        -    "required": [
        -      "_meta"
        -    ],
        -    "type": "object"
        -  }
        -]New value: +[
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "_meta": {
        +        "additionalProperties": false,
        +        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        +        "properties": {
        +          "deliverables": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        +                "properties": {
        +                  "docx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "dxf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "expires_at": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  },
        +                  "pdf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "xlsx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "expires_at"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "document_id": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "issued_at": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "output_mode": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Surfaces what a trimmed ``output_mode`` withheld from ``data``.\n\nA trimmed mode (``summary`` / ``material_schedule`` / ``boq`` /\n``boq_with_backup``) withholds\nalready-computed fields to keep the chat payload small. The withheld value\nreads to a client agent as \"capability missing\" (the box-culvert \"geometry\nbuilder isn't firing\" scare) rather than \"pared for size\": ``drawing`` and\n``audit_trail`` appear as ``null``, ``boq_rows`` as an empty list ``[]``\n(its type forbids ``null``) — both indistinguishable from a genuine absent\nresult. This names the withheld fields and the exact mode that brings each\nback, so the value is unambiguous. Absent on the default ``full_json`` mode\n— nothing is withheld, nothing to point at.",
        +                "properties": {
        +                  "mode": {
        +                    "enum": [
        +                      "summary",
        +                      "material_schedule",
        +                      "boq",
        +                      "boq_with_backup"
        +                    ],
        +                    "type": "string"
        +                  },
        +                  "omitted_fields": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "minItems": 1,
        +                    "type": "array"
        +                  },
        +                  "retrieve_with": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "mode",
        +                  "omitted_fields",
        +                  "retrieve_with"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "rate_limit_remaining": {
        +            "anyOf": [
        +              {
        +                "minimum": 0,
        +                "type": "integer"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "request_id": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "schema_version": {
        +            "const": "1.0.0",
        +            "default": "1.0.0",
        +            "type": "string"
        +          },
        +          "scope_boundary": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        +                "properties": {
        +                  "not_in_scope": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "produced": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "recommended_companions": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "type": "string"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "produced",
        +                  "not_in_scope"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tier": {
        +            "enum": [
        +              "free",
        +              "paid"
        +            ],
        +            "type": "string"
        +          },
        +          "tier_upgrade": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        +                "properties": {
        +                  "available_tiers": {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        +                      "properties": {
        +                        "billing": {
        +                          "enum": [
        +                            "one_off",
        +                            "monthly",
        +                            "annual"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "currency": {
        +                          "enum": [
        +                            "GBP",
        +                            "SGD",
        +                            "EUR",
        +                            "USD",
        +                            "CAD",
        +                            "AUD",
        +                            "NZD",
        +                            "MYR"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "display_name": {
        +                          "type": "string"
        +                        },
        +                        "price_local": {
        +                          "type": "number"
        +                        },
        +                        "tier_slug": {
        +                          "enum": [
        +                            "7_day_pass",
        +                            "solo",
        +                            "studio",
        +                            "practice"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "unlock_summary": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "tier_slug",
        +                        "display_name",
        +                        "price_local",
        +                        "currency",
        +                        "billing",
        +                        "unlock_summary"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "current_tier": {
        +                    "const": "free",
        +                    "default": "free",
        +                    "type": "string"
        +                  },
        +                  "pass_credit": {
        +                    "anyOf": [
        +                      {
        +                        "additionalProperties": false,
        +                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        +                        "properties": {
        +                          "amount_local": {
        +                            "type": "number"
        +                          },
        +                          "applies_to": {
        +                            "const": "solo_first_month",
        +                            "default": "solo_first_month",
        +                            "type": "string"
        +                          },
        +                          "currency": {
        +                            "type": "string"
        +                          },
        +                          "redeemable_until": {
        +                            "type": "string"
        +                          }
        +                        },
        +                        "required": [
        +                          "amount_local",
        +                          "currency",
        +                          "redeemable_until"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "pricing_url": {
        +                    "default": "https://civilquants.com/pricing",
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "available_tiers"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tos_url": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "upgrade_hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "warranty_disclaimer": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          }
        +        },
        +        "required": [
        +          "request_id",
        +          "issued_at",
        +          "tier"
        +        ],
        +        "type": "object"
        +      },
        +      "data": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Schema § 1.1 — the typed payload returned inside `MCPResponse[ComputeResult]`.\n\nFree-tier responses omit `drawings` (the downloadable CAD artefact\npointers — the paid differentiator); the bridge enforces this. The\n`audit_trail` and the inline `drawing` preview are present on BOTH tiers\n(V1 ALIGN / 60th-fire D + C). `text_summary` is bounded to 2000 chars —\nkeeps the LLM-facing summary token-cheap and forces longer narrative into\nBoQ row descriptions where it belongs. `warnings` is the non-fatal\ngeometry advisory list (both tiers).",
        +            "properties": {
        +              "assembly_slug": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "audit_trail": {
        +                "anyOf": [
        +                  {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.7 — paid-tier audit-trail entry.\n\nOne entry per BoQ row; `boq_row_index` ties to the row position in\n`ComputeResult.boq_rows`. `derivation` is the human-readable formula\nwalk-through; `formula` is the optional formal expression.",
        +                      "properties": {
        +                        "boq_row_index": {
        +                          "minimum": 0,
        +                          "type": "integer"
        +                        },
        +                        "derivation": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "formula": {
        +                          "anyOf": [
        +                            {
        +                              "type": "string"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ],
        +                          "default": null
        +                        },
        +                        "id": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "parameters_referenced": {
        +                          "items": {
        +                            "type": "string"
        +                          },
        +                          "type": "array"
        +                        }
        +                      },
        +                      "required": [
        +                        "id",
        +                        "boq_row_index",
        +                        "derivation"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "boq_rows": {
        +                "items": {
        +                  "additionalProperties": false,
        +                  "description": "Schema § 1.3 — a single bill row in the requested standard's format.\n\n`description` is the non-verbatim functional description per spec § 13.9 /\n§ 15 invariant — NEVER reproduces a standard's verbatim clause text.\n`rate` / `amount` ship null because rates are commodity data the customer\nowns; the engine's job is the measurement, not the pricing.",
        +                  "properties": {
        +                    "amount": {
        +                      "anyOf": [
        +                        {
        +                          "type": "number"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "attribution": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "audit_id": {
        +                      "anyOf": [
        +                        {
        +                          "type": "string"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "description": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "quantity": {
        +                      "minimum": 0,
        +                      "type": "number"
        +                    },
        +                    "rate": {
        +                      "anyOf": [
        +                        {
        +                          "type": "number"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "unit": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "work_section": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    }
        +                  },
        +                  "required": [
        +                    "work_section",
        +                    "description",
        +                    "quantity",
        +                    "unit",
        +                    "attribution"
        +                  ],
        +                  "type": "object"
        +                },
        +                "type": "array"
        +              },
        +              "drawing": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": false,
        +                    "description": "Schema § 1.6a — inline server-rendered SVG preview of the geometry.\n\nThe MCP mirror of the web ``/compute`` response's ``drawing`` field\n(``api.schemas.compute.DrawingRef``): the same on-screen dimensioned\ndrawing both tiers see in the workspace, surfaced on the MCP compute\nresponse so a chat client can render it inline (60th-fire item C). This\nis the on-screen preview — present on BOTH tiers per the free/paid\nboundary; the downloadable CAD artefacts (DXF / dimensioned PDF) remain\nthe paid differentiator via the export tools.\n\nDefined here rather than importing ``DrawingRef`` because the web\n``schemas`` package imports back into this module (``schemas.render``),\nso reusing it would create an import cycle — the MCP wire contract keeps\nits own copy, the same pattern as ``BoQRow`` / ``DrawingReference``.",
        +                    "properties": {
        +                      "entity_count": {
        +                        "minimum": 0,
        +                        "type": "integer"
        +                      },
        +                      "svg_b64": {
        +                        "minLength": 1,
        +                        "type": "string"
        +                      },
        +                      "unit_of_drawing": {
        +                        "const": "m",
        +                        "default": "m",
        +                        "type": "string"
        +                      },
        +                      "viewbox_height": {
        +                        "exclusiveMinimum": 0,
        +                        "type": "number"
        +                      },
        +                      "viewbox_width": {
        +                        "exclusiveMinimum": 0,
        +                        "type": "number"
        +                      },
        +                      "viewbox_x": {
        +                        "type": "number"
        +                      },
        +                      "viewbox_y": {
        +                        "type": "number"
        +                      }
        +                    },
        +                    "required": [
        +                      "svg_b64",
        +                      "viewbox_x",
        +                      "viewbox_y",
        +                      "viewbox_width",
        +                      "viewbox_height",
        +                      "entity_count"
        +                    ],
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "drawings": {
        +                "anyOf": [
        +                  {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.6 — paid-tier drawing artefact pointer.\n\n`url` is an R2-signed URL; expiry is carried in `_meta.deliverables.expires_at`\non the envelope (not duplicated here). `layers` is DXF-only; PDF/SVG\ncallers omit it.",
        +                      "properties": {
        +                        "drawing_type": {
        +                          "enum": [
        +                            "section",
        +                            "plan",
        +                            "elevation",
        +                            "isometric",
        +                            "detail"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "format": {
        +                          "enum": [
        +                            "DXF",
        +                            "PDF",
        +                            "SVG"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "layers": {
        +                          "anyOf": [
        +                            {
        +                              "items": {
        +                                "type": "string"
        +                              },
        +                              "type": "array"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ],
        +                          "default": null
        +                        },
        +                        "scale": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "sheet_size": {
        +                          "enum": [
        +                            "A1",
        +                            "A2",
        +                            "A3",
        +                            "A4"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "url": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "drawing_type",
        +                        "format",
        +                        "url",
        +                        "sheet_size",
        +                        "scale"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "parameters_used": {
        +                "additionalProperties": false,
        +                "description": "Schema § 1.2 — the parameter snapshot the engine actually used.\n\nSplits user-supplied values from engine defaults so customers can see\nwhich numbers came from them and which the engine filled in. Every\ndefaulted parameter SHOULD have a corresponding entry in `assumptions`\n— the bridge layer enforces this when wrapping engine output.",
        +                "properties": {
        +                  "assumptions": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "engine_defaults": {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  "user_supplied": {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  }
        +                },
        +                "type": "object"
        +              },
        +              "standard": {
        +                "enum": [
        +                  "CESMM4",
        +                  "NRM2",
        +                  "SMM7",
        +                  "MMHW"
        +                ],
        +                "type": "string"
        +              },
        +              "text_summary": {
        +                "maxLength": 2000,
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "totals_summary": {
        +                "additionalProperties": false,
        +                "description": "Schema § 1.4 — totals_summary as a typed wrapper around the free-form dict.\n\nWire shape is a flat object (`{\"concrete_m3\": {...}, \"rebar_t\": {...}}`).\nWe model it as `RootModel`-equivalent via `model_config(extra=\"allow\")`\n+ a single `__root__`-style `entries` dict. Pydantic v2 recommends\n`RootModel` for free-form roots; using a wrapper class keeps the import\nsurface uniform with the rest of this module.",
        +                "properties": {
        +                  "entries": {
        +                    "additionalProperties": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.4 — single material/work-class total entry.",
        +                      "properties": {
        +                        "quantity": {
        +                          "minimum": 0,
        +                          "type": "number"
        +                        },
        +                        "unit": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "quantity",
        +                        "unit"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "object"
        +                  }
        +                },
        +                "type": "object"
        +              },
        +              "warnings": {
        +                "items": {
        +                  "additionalProperties": false,
        +                  "description": "Schema § 1.8 — a non-fatal geometry advisory (56th-fire T2).\n\nThe wire projection of the engine's `core.GeometryWarning`. Advisory only:\na warning NEVER changes a measured quantity — it flags geometry that is\nvalid but likely a mistake (e.g. a stale dependent-height default). Present\non BOTH tiers — a correctness/safety signal, not a paid feature.",
        +                  "properties": {
        +                    "affected_params": {
        +                      "items": {
        +                        "type": "string"
        +                      },
        +                      "type": "array"
        +                    },
        +                    "code": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "detail": {
        +                      "additionalProperties": {
        +                        "type": "number"
        +                      },
        +                      "type": "object"
        +                    },
        +                    "message": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "severity": {
        +                      "enum": [
        +                        "info",
        +                        "advisory",
        +                        "caution"
        +                      ],
        +                      "type": "string"
        +                    }
        +                  },
        +                  "required": [
        +                    "code",
        +                    "severity",
        +                    "message"
        +                  ],
        +                  "type": "object"
        +                },
        +                "type": "array"
        +              }
        +            },
        +            "required": [
        +              "assembly_slug",
        +              "standard",
        +              "parameters_used",
        +              "boq_rows",
        +              "totals_summary",
        +              "text_summary"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      },
        +      "error": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        +            "properties": {
        +              "code": {
        +                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        +                "enum": [
        +                  "RATE_LIMIT_EXCEEDED",
        +                  "TIER_INSUFFICIENT",
        +                  "INVALID_INPUT",
        +                  "SCHEMA_VERSION_MISMATCH",
        +                  "SCHEMA_INVARIANT_VIOLATION",
        +                  "UPSTREAM_TIMEOUT",
        +                  "BACKEND_FAILURE",
        +                  "IP_BLOCKED",
        +                  "RESOURCE_NOT_FOUND",
        +                  "RENDER_FAILURE",
        +                  "OCR_LOW_CONFIDENCE",
        +                  "MANUAL_REVIEW_REQUIRED",
        +                  "ACCEPTANCE_REQUIRED",
        +                  "INVALID_TOKEN"
        +                ],
        +                "type": "string"
        +              },
        +              "details": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "message": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "recoverable": {
        +                "type": "boolean"
        +              },
        +              "retry_after_seconds": {
        +                "anyOf": [
        +                  {
        +                    "minimum": 0,
        +                    "type": "integer"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              }
        +            },
        +            "required": [
        +              "code",
        +              "message",
        +              "recoverable"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      }
        +    },
        +    "required": [
        +      "_meta"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "_meta": {
        +        "additionalProperties": false,
        +        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        +        "properties": {
        +          "deliverables": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        +                "properties": {
        +                  "docx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "dxf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "expires_at": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  },
        +                  "pdf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "xlsx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "expires_at"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "document_id": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "issued_at": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "output_mode": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Surfaces what a trimmed ``output_mode`` withheld from ``data``.\n\nA trimmed mode (``summary`` / ``material_schedule`` / ``boq`` /\n``boq_with_backup``) withholds\nalready-computed fields to keep the chat payload small. The withheld value\nreads to a client agent as \"capability missing\" (the box-culvert \"geometry\nbuilder isn't firing\" scare) rather than \"pared for size\": ``drawing`` and\n``audit_trail`` appear as ``null``, ``boq_rows`` as an empty list ``[]``\n(its type forbids ``null``) — both indistinguishable from a genuine absent\nresult. This names the withheld fields and the exact mode that brings each\nback, so the value is unambiguous. Absent on the default ``full_json`` mode\n— nothing is withheld, nothing to point at.",
        +                "properties": {
        +                  "mode": {
        +                    "enum": [
        +                      "summary",
        +                      "material_schedule",
        +                      "boq",
        +                      "boq_with_backup"
        +                    ],
        +                    "type": "string"
        +                  },
        +                  "omitted_fields": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "minItems": 1,
        +                    "type": "array"
        +                  },
        +                  "retrieve_with": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "mode",
        +                  "omitted_fields",
        +                  "retrieve_with"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "rate_limit_remaining": {
        +            "anyOf": [
        +              {
        +                "minimum": 0,
        +                "type": "integer"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "request_id": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "schema_version": {
        +            "const": "1.0.0",
        +            "default": "1.0.0",
        +            "type": "string"
        +          },
        +          "scope_boundary": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        +                "properties": {
        +                  "not_in_scope": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "produced": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "recommended_companions": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "type": "string"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "produced",
        +                  "not_in_scope"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tier": {
        +            "enum": [
        +              "free",
        +              "paid"
        +            ],
        +            "type": "string"
        +          },
        +          "tier_upgrade": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        +                "properties": {
        +                  "available_tiers": {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        +                      "properties": {
        +                        "billing": {
        +                          "enum": [
        +                            "one_off",
        +                            "monthly",
        +                            "annual"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "currency": {
        +                          "enum": [
        +                            "GBP",
        +                            "SGD",
        +                            "EUR",
        +                            "USD",
        +                            "CAD",
        +                            "AUD",
        +                            "NZD",
        +                            "MYR"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "display_name": {
        +                          "type": "string"
        +                        },
        +                        "price_local": {
        +                          "type": "number"
        +                        },
        +                        "tier_slug": {
        +                          "enum": [
        +                            "7_day_pass",
        +                            "solo",
        +                            "studio",
        +                            "practice"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "unlock_summary": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "tier_slug",
        +                        "display_name",
        +                        "price_local",
        +                        "currency",
        +                        "billing",
        +                        "unlock_summary"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "current_tier": {
        +                    "const": "free",
        +                    "default": "free",
        +                    "type": "string"
        +                  },
        +                  "pass_credit": {
        +                    "anyOf": [
        +                      {
        +                        "additionalProperties": false,
        +                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        +                        "properties": {
        +                          "amount_local": {
        +                            "type": "number"
        +                          },
        +                          "applies_to": {
        +                            "const": "solo_first_month",
        +                            "default": "solo_first_month",
        +                            "type": "string"
        +                          },
        +                          "currency": {
        +                            "type": "string"
        +                          },
        +                          "redeemable_until": {
        +                            "type": "string"
        +                          }
        +                        },
        +                        "required": [
        +                          "amount_local",
        +                          "currency",
        +                          "redeemable_until"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "pricing_url": {
        +                    "default": "https://civilquants.com/pricing",
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "available_tiers"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tos_url": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "upgrade_hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "warranty_disclaimer": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          }
        +        },
        +        "required": [
        +          "request_id",
        +          "issued_at",
        +          "tier"
        +        ],
        +        "type": "object"
        +      },
        +      "data": {
        +        "default": null,
        +        "title": "Data"
        +      },
        +      "error": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        +            "properties": {
        +              "code": {
        +                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        +                "enum": [
        +                  "RATE_LIMIT_EXCEEDED",
        +                  "TIER_INSUFFICIENT",
        +                  "INVALID_INPUT",
        +                  "SCHEMA_VERSION_MISMATCH",
        +                  "SCHEMA_INVARIANT_VIOLATION",
        +                  "UPSTREAM_TIMEOUT",
        +                  "BACKEND_FAILURE",
        +                  "IP_BLOCKED",
        +                  "RESOURCE_NOT_FOUND",
        +                  "RENDER_FAILURE",
        +                  "OCR_LOW_CONFIDENCE",
        +                  "MANUAL_REVIEW_REQUIRED",
        +                  "ACCEPTANCE_REQUIRED",
        +                  "INVALID_TOKEN"
        +                ],
        +                "type": "string"
        +              },
        +              "details": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "message": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "recoverable": {
        +                "type": "boolean"
        +              },
        +              "retry_after_seconds": {
        +                "anyOf": [
        +                  {
        +                    "minimum": 0,
        +                    "type": "integer"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              }
        +            },
        +            "required": [
        +              "code",
        +              "message",
        +              "recoverable"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      }
        +    },
        +    "required": [
        +      "_meta"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedcompute_french_drain2 fields changed
      • changedInput schema / properties / output_mode / enum
        Previous value: -[
        -  "summary",
        -  "boq",
        -  "boq_with_backup",
        -  "full_json"
        -]New value: +[
        +  "summary",
        +  "material_schedule",
        +  "boq",
        +  "boq_with_backup",
        +  "full_json"
        +]
      • changedOutput schema / properties / result / anyOf
        Previous value: -[
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "_meta": {
        -        "additionalProperties": false,
        -        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        -        "properties": {
        -          "deliverables": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        -                "properties": {
        -                  "docx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "dxf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "expires_at": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  },
        -                  "pdf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "xlsx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "expires_at"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "document_id": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "issued_at": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "output_mode": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Surfaces what a trimmed ``output_mode`` withheld from ``data``.\n\nA trimmed mode (``summary`` / ``boq`` / ``boq_with_backup``) withholds\nalready-computed fields to keep the chat payload small. The withheld value\nreads to a client agent as \"capability missing\" (the box-culvert \"geometry\nbuilder isn't firing\" scare) rather than \"pared for size\": ``drawing`` and\n``audit_trail`` appear as ``null``, ``boq_rows`` as an empty list ``[]``\n(its type forbids ``null``) — both indistinguishable from a genuine absent\nresult. This names the withheld fields and the exact mode that brings each\nback, so the value is unambiguous. Absent on the default ``full_json`` mode\n— nothing is withheld, nothing to point at.",
        -                "properties": {
        -                  "mode": {
        -                    "enum": [
        -                      "summary",
        -                      "boq",
        -                      "boq_with_backup"
        -                    ],
        -                    "type": "string"
        -                  },
        -                  "omitted_fields": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "minItems": 1,
        -                    "type": "array"
        -                  },
        -                  "retrieve_with": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "mode",
        -                  "omitted_fields",
        -                  "retrieve_with"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "rate_limit_remaining": {
        -            "anyOf": [
        -              {
        -                "minimum": 0,
        -                "type": "integer"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "request_id": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "schema_version": {
        -            "const": "1.0.0",
        -            "default": "1.0.0",
        -            "type": "string"
        -          },
        -          "scope_boundary": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        -                "properties": {
        -                  "not_in_scope": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "produced": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "recommended_companions": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "type": "string"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "produced",
        -                  "not_in_scope"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tier": {
        -            "enum": [
        -              "free",
        -              "paid"
        -            ],
        -            "type": "string"
        -          },
        -          "tier_upgrade": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        -                "properties": {
        -                  "available_tiers": {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        -                      "properties": {
        -                        "billing": {
        -                          "enum": [
        -                            "one_off",
        -                            "monthly",
        -                            "annual"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "currency": {
        -                          "enum": [
        -                            "GBP",
        -                            "SGD",
        -                            "EUR",
        -                            "USD",
        -                            "CAD",
        -                            "AUD",
        -                            "NZD",
        -                            "MYR"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "display_name": {
        -                          "type": "string"
        -                        },
        -                        "price_local": {
        -                          "type": "number"
        -                        },
        -                        "tier_slug": {
        -                          "enum": [
        -                            "7_day_pass",
        -                            "solo",
        -                            "studio",
        -                            "practice"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "unlock_summary": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "tier_slug",
        -                        "display_name",
        -                        "price_local",
        -                        "currency",
        -                        "billing",
        -                        "unlock_summary"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "current_tier": {
        -                    "const": "free",
        -                    "default": "free",
        -                    "type": "string"
        -                  },
        -                  "pass_credit": {
        -                    "anyOf": [
        -                      {
        -                        "additionalProperties": false,
        -                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        -                        "properties": {
        -                          "amount_local": {
        -                            "type": "number"
        -                          },
        -                          "applies_to": {
        -                            "const": "solo_first_month",
        -                            "default": "solo_first_month",
        -                            "type": "string"
        -                          },
        -                          "currency": {
        -                            "type": "string"
        -                          },
        -                          "redeemable_until": {
        -                            "type": "string"
        -                          }
        -                        },
        -                        "required": [
        -                          "amount_local",
        -                          "currency",
        -                          "redeemable_until"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "pricing_url": {
        -                    "default": "https://civilquants.com/pricing",
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "available_tiers"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tos_url": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "upgrade_hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "warranty_disclaimer": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          }
        -        },
        -        "required": [
        -          "request_id",
        -          "issued_at",
        -          "tier"
        -        ],
        -        "type": "object"
        -      },
        -      "data": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Schema § 1.1 — the typed payload returned inside `MCPResponse[ComputeResult]`.\n\nFree-tier responses omit `drawings` (the downloadable CAD artefact\npointers — the paid differentiator); the bridge enforces this. The\n`audit_trail` and the inline `drawing` preview are present on BOTH tiers\n(V1 ALIGN / 60th-fire D + C). `text_summary` is bounded to 2000 chars —\nkeeps the LLM-facing summary token-cheap and forces longer narrative into\nBoQ row descriptions where it belongs. `warnings` is the non-fatal\ngeometry advisory list (both tiers).",
        -            "properties": {
        -              "assembly_slug": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "audit_trail": {
        -                "anyOf": [
        -                  {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.7 — paid-tier audit-trail entry.\n\nOne entry per BoQ row; `boq_row_index` ties to the row position in\n`ComputeResult.boq_rows`. `derivation` is the human-readable formula\nwalk-through; `formula` is the optional formal expression.",
        -                      "properties": {
        -                        "boq_row_index": {
        -                          "minimum": 0,
        -                          "type": "integer"
        -                        },
        -                        "derivation": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "formula": {
        -                          "anyOf": [
        -                            {
        -                              "type": "string"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ],
        -                          "default": null
        -                        },
        -                        "id": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "parameters_referenced": {
        -                          "items": {
        -                            "type": "string"
        -                          },
        -                          "type": "array"
        -                        }
        -                      },
        -                      "required": [
        -                        "id",
        -                        "boq_row_index",
        -                        "derivation"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "boq_rows": {
        -                "items": {
        -                  "additionalProperties": false,
        -                  "description": "Schema § 1.3 — a single bill row in the requested standard's format.\n\n`description` is the non-verbatim functional description per spec § 13.9 /\n§ 15 invariant — NEVER reproduces a standard's verbatim clause text.\n`rate` / `amount` ship null because rates are commodity data the customer\nowns; the engine's job is the measurement, not the pricing.",
        -                  "properties": {
        -                    "amount": {
        -                      "anyOf": [
        -                        {
        -                          "type": "number"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "attribution": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "audit_id": {
        -                      "anyOf": [
        -                        {
        -                          "type": "string"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "description": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "quantity": {
        -                      "minimum": 0,
        -                      "type": "number"
        -                    },
        -                    "rate": {
        -                      "anyOf": [
        -                        {
        -                          "type": "number"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "unit": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "work_section": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    }
        -                  },
        -                  "required": [
        -                    "work_section",
        -                    "description",
        -                    "quantity",
        -                    "unit",
        -                    "attribution"
        -                  ],
        -                  "type": "object"
        -                },
        -                "type": "array"
        -              },
        -              "drawing": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": false,
        -                    "description": "Schema § 1.6a — inline server-rendered SVG preview of the geometry.\n\nThe MCP mirror of the web ``/compute`` response's ``drawing`` field\n(``api.schemas.compute.DrawingRef``): the same on-screen dimensioned\ndrawing both tiers see in the workspace, surfaced on the MCP compute\nresponse so a chat client can render it inline (60th-fire item C). This\nis the on-screen preview — present on BOTH tiers per the free/paid\nboundary; the downloadable CAD artefacts (DXF / dimensioned PDF) remain\nthe paid differentiator via the export tools.\n\nDefined here rather than importing ``DrawingRef`` because the web\n``schemas`` package imports back into this module (``schemas.render``),\nso reusing it would create an import cycle — the MCP wire contract keeps\nits own copy, the same pattern as ``BoQRow`` / ``DrawingReference``.",
        -                    "properties": {
        -                      "entity_count": {
        -                        "minimum": 0,
        -                        "type": "integer"
        -                      },
        -                      "svg_b64": {
        -                        "minLength": 1,
        -                        "type": "string"
        -                      },
        -                      "unit_of_drawing": {
        -                        "const": "m",
        -                        "default": "m",
        -                        "type": "string"
        -                      },
        -                      "viewbox_height": {
        -                        "exclusiveMinimum": 0,
        -                        "type": "number"
        -                      },
        -                      "viewbox_width": {
        -                        "exclusiveMinimum": 0,
        -                        "type": "number"
        -                      },
        -                      "viewbox_x": {
        -                        "type": "number"
        -                      },
        -                      "viewbox_y": {
        -                        "type": "number"
        -                      }
        -                    },
        -                    "required": [
        -                      "svg_b64",
        -                      "viewbox_x",
        -                      "viewbox_y",
        -                      "viewbox_width",
        -                      "viewbox_height",
        -                      "entity_count"
        -                    ],
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "drawings": {
        -                "anyOf": [
        -                  {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.6 — paid-tier drawing artefact pointer.\n\n`url` is an R2-signed URL; expiry is carried in `_meta.deliverables.expires_at`\non the envelope (not duplicated here). `layers` is DXF-only; PDF/SVG\ncallers omit it.",
        -                      "properties": {
        -                        "drawing_type": {
        -                          "enum": [
        -                            "section",
        -                            "plan",
        -                            "elevation",
        -                            "isometric",
        -                            "detail"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "format": {
        -                          "enum": [
        -                            "DXF",
        -                            "PDF",
        -                            "SVG"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "layers": {
        -                          "anyOf": [
        -                            {
        -                              "items": {
        -                                "type": "string"
        -                              },
        -                              "type": "array"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ],
        -                          "default": null
        -                        },
        -                        "scale": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "sheet_size": {
        -                          "enum": [
        -                            "A1",
        -                            "A2",
        -                            "A3",
        -                            "A4"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "url": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "drawing_type",
        -                        "format",
        -                        "url",
        -                        "sheet_size",
        -                        "scale"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "parameters_used": {
        -                "additionalProperties": false,
        -                "description": "Schema § 1.2 — the parameter snapshot the engine actually used.\n\nSplits user-supplied values from engine defaults so customers can see\nwhich numbers came from them and which the engine filled in. Every\ndefaulted parameter SHOULD have a corresponding entry in `assumptions`\n— the bridge layer enforces this when wrapping engine output.",
        -                "properties": {
        -                  "assumptions": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "engine_defaults": {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  "user_supplied": {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  }
        -                },
        -                "type": "object"
        -              },
        -              "standard": {
        -                "enum": [
        -                  "CESMM4",
        -                  "NRM2",
        -                  "SMM7",
        -                  "MMHW"
        -                ],
        -                "type": "string"
        -              },
        -              "text_summary": {
        -                "maxLength": 2000,
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "totals_summary": {
        -                "additionalProperties": false,
        -                "description": "Schema § 1.4 — totals_summary as a typed wrapper around the free-form dict.\n\nWire shape is a flat object (`{\"concrete_m3\": {...}, \"rebar_t\": {...}}`).\nWe model it as `RootModel`-equivalent via `model_config(extra=\"allow\")`\n+ a single `__root__`-style `entries` dict. Pydantic v2 recommends\n`RootModel` for free-form roots; using a wrapper class keeps the import\nsurface uniform with the rest of this module.",
        -                "properties": {
        -                  "entries": {
        -                    "additionalProperties": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.4 — single material/work-class total entry.",
        -                      "properties": {
        -                        "quantity": {
        -                          "minimum": 0,
        -                          "type": "number"
        -                        },
        -                        "unit": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "quantity",
        -                        "unit"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "object"
        -                  }
        -                },
        -                "type": "object"
        -              },
        -              "warnings": {
        -                "items": {
        -                  "additionalProperties": false,
        -                  "description": "Schema § 1.8 — a non-fatal geometry advisory (56th-fire T2).\n\nThe wire projection of the engine's `core.GeometryWarning`. Advisory only:\na warning NEVER changes a measured quantity — it flags geometry that is\nvalid but likely a mistake (e.g. a stale dependent-height default). Present\non BOTH tiers — a correctness/safety signal, not a paid feature.",
        -                  "properties": {
        -                    "affected_params": {
        -                      "items": {
        -                        "type": "string"
        -                      },
        -                      "type": "array"
        -                    },
        -                    "code": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "detail": {
        -                      "additionalProperties": {
        -                        "type": "number"
        -                      },
        -                      "type": "object"
        -                    },
        -                    "message": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "severity": {
        -                      "enum": [
        -                        "info",
        -                        "advisory",
        -                        "caution"
        -                      ],
        -                      "type": "string"
        -                    }
        -                  },
        -                  "required": [
        -                    "code",
        -                    "severity",
        -                    "message"
        -                  ],
        -                  "type": "object"
        -                },
        -                "type": "array"
        -              }
        -            },
        -            "required": [
        -              "assembly_slug",
        -              "standard",
        -              "parameters_used",
        -              "boq_rows",
        -              "totals_summary",
        -              "text_summary"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      },
        -      "error": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        -            "properties": {
        -              "code": {
        -                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        -                "enum": [
        -                  "RATE_LIMIT_EXCEEDED",
        -                  "TIER_INSUFFICIENT",
        -                  "INVALID_INPUT",
        -                  "SCHEMA_VERSION_MISMATCH",
        -                  "SCHEMA_INVARIANT_VIOLATION",
        -                  "UPSTREAM_TIMEOUT",
        -                  "BACKEND_FAILURE",
        -                  "IP_BLOCKED",
        -                  "RESOURCE_NOT_FOUND",
        -                  "RENDER_FAILURE",
        -                  "OCR_LOW_CONFIDENCE",
        -                  "MANUAL_REVIEW_REQUIRED",
        -                  "ACCEPTANCE_REQUIRED",
        -                  "INVALID_TOKEN"
        -                ],
        -                "type": "string"
        -              },
        -              "details": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "message": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "recoverable": {
        -                "type": "boolean"
        -              },
        -              "retry_after_seconds": {
        -                "anyOf": [
        -                  {
        -                    "minimum": 0,
        -                    "type": "integer"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              }
        -            },
        -            "required": [
        -              "code",
        -              "message",
        -              "recoverable"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      }
        -    },
        -    "required": [
        -      "_meta"
        -    ],
        -    "type": "object"
        -  },
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "_meta": {
        -        "additionalProperties": false,
        -        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        -        "properties": {
        -          "deliverables": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        -                "properties": {
        -                  "docx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "dxf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "expires_at": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  },
        -                  "pdf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "xlsx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "expires_at"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "document_id": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "issued_at": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "output_mode": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Surfaces what a trimmed ``output_mode`` withheld from ``data``.\n\nA trimmed mode (``summary`` / ``boq`` / ``boq_with_backup``) withholds\nalready-computed fields to keep the chat payload small. The withheld value\nreads to a client agent as \"capability missing\" (the box-culvert \"geometry\nbuilder isn't firing\" scare) rather than \"pared for size\": ``drawing`` and\n``audit_trail`` appear as ``null``, ``boq_rows`` as an empty list ``[]``\n(its type forbids ``null``) — both indistinguishable from a genuine absent\nresult. This names the withheld fields and the exact mode that brings each\nback, so the value is unambiguous. Absent on the default ``full_json`` mode\n— nothing is withheld, nothing to point at.",
        -                "properties": {
        -                  "mode": {
        -                    "enum": [
        -                      "summary",
        -                      "boq",
        -                      "boq_with_backup"
        -                    ],
        -                    "type": "string"
        -                  },
        -                  "omitted_fields": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "minItems": 1,
        -                    "type": "array"
        -                  },
        -                  "retrieve_with": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "mode",
        -                  "omitted_fields",
        -                  "retrieve_with"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "rate_limit_remaining": {
        -            "anyOf": [
        -              {
        -                "minimum": 0,
        -                "type": "integer"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "request_id": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "schema_version": {
        -            "const": "1.0.0",
        -            "default": "1.0.0",
        -            "type": "string"
        -          },
        -          "scope_boundary": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        -                "properties": {
        -                  "not_in_scope": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "produced": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "recommended_companions": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "type": "string"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "produced",
        -                  "not_in_scope"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tier": {
        -            "enum": [
        -              "free",
        -              "paid"
        -            ],
        -            "type": "string"
        -          },
        -          "tier_upgrade": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        -                "properties": {
        -                  "available_tiers": {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        -                      "properties": {
        -                        "billing": {
        -                          "enum": [
        -                            "one_off",
        -                            "monthly",
        -                            "annual"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "currency": {
        -                          "enum": [
        -                            "GBP",
        -                            "SGD",
        -                            "EUR",
        -                            "USD",
        -                            "CAD",
        -                            "AUD",
        -                            "NZD",
        -                            "MYR"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "display_name": {
        -                          "type": "string"
        -                        },
        -                        "price_local": {
        -                          "type": "number"
        -                        },
        -                        "tier_slug": {
        -                          "enum": [
        -                            "7_day_pass",
        -                            "solo",
        -                            "studio",
        -                            "practice"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "unlock_summary": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "tier_slug",
        -                        "display_name",
        -                        "price_local",
        -                        "currency",
        -                        "billing",
        -                        "unlock_summary"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "current_tier": {
        -                    "const": "free",
        -                    "default": "free",
        -                    "type": "string"
        -                  },
        -                  "pass_credit": {
        -                    "anyOf": [
        -                      {
        -                        "additionalProperties": false,
        -                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        -                        "properties": {
        -                          "amount_local": {
        -                            "type": "number"
        -                          },
        -                          "applies_to": {
        -                            "const": "solo_first_month",
        -                            "default": "solo_first_month",
        -                            "type": "string"
        -                          },
        -                          "currency": {
        -                            "type": "string"
        -                          },
        -                          "redeemable_until": {
        -                            "type": "string"
        -                          }
        -                        },
        -                        "required": [
        -                          "amount_local",
        -                          "currency",
        -                          "redeemable_until"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "pricing_url": {
        -                    "default": "https://civilquants.com/pricing",
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "available_tiers"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tos_url": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "upgrade_hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "warranty_disclaimer": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          }
        -        },
        -        "required": [
        -          "request_id",
        -          "issued_at",
        -          "tier"
        -        ],
        -        "type": "object"
        -      },
        -      "data": {
        -        "default": null,
        -        "title": "Data"
        -      },
        -      "error": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        -            "properties": {
        -              "code": {
        -                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        -                "enum": [
        -                  "RATE_LIMIT_EXCEEDED",
        -                  "TIER_INSUFFICIENT",
        -                  "INVALID_INPUT",
        -                  "SCHEMA_VERSION_MISMATCH",
        -                  "SCHEMA_INVARIANT_VIOLATION",
        -                  "UPSTREAM_TIMEOUT",
        -                  "BACKEND_FAILURE",
        -                  "IP_BLOCKED",
        -                  "RESOURCE_NOT_FOUND",
        -                  "RENDER_FAILURE",
        -                  "OCR_LOW_CONFIDENCE",
        -                  "MANUAL_REVIEW_REQUIRED",
        -                  "ACCEPTANCE_REQUIRED",
        -                  "INVALID_TOKEN"
        -                ],
        -                "type": "string"
        -              },
        -              "details": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "message": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "recoverable": {
        -                "type": "boolean"
        -              },
        -              "retry_after_seconds": {
        -                "anyOf": [
        -                  {
        -                    "minimum": 0,
        -                    "type": "integer"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              }
        -            },
        -            "required": [
        -              "code",
        -              "message",
        -              "recoverable"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      }
        -    },
        -    "required": [
        -      "_meta"
        -    ],
        -    "type": "object"
        -  }
        -]New value: +[
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "_meta": {
        +        "additionalProperties": false,
        +        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        +        "properties": {
        +          "deliverables": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        +                "properties": {
        +                  "docx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "dxf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "expires_at": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  },
        +                  "pdf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "xlsx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "expires_at"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "document_id": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "issued_at": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "output_mode": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Surfaces what a trimmed ``output_mode`` withheld from ``data``.\n\nA trimmed mode (``summary`` / ``material_schedule`` / ``boq`` /\n``boq_with_backup``) withholds\nalready-computed fields to keep the chat payload small. The withheld value\nreads to a client agent as \"capability missing\" (the box-culvert \"geometry\nbuilder isn't firing\" scare) rather than \"pared for size\": ``drawing`` and\n``audit_trail`` appear as ``null``, ``boq_rows`` as an empty list ``[]``\n(its type forbids ``null``) — both indistinguishable from a genuine absent\nresult. This names the withheld fields and the exact mode that brings each\nback, so the value is unambiguous. Absent on the default ``full_json`` mode\n— nothing is withheld, nothing to point at.",
        +                "properties": {
        +                  "mode": {
        +                    "enum": [
        +                      "summary",
        +                      "material_schedule",
        +                      "boq",
        +                      "boq_with_backup"
        +                    ],
        +                    "type": "string"
        +                  },
        +                  "omitted_fields": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "minItems": 1,
        +                    "type": "array"
        +                  },
        +                  "retrieve_with": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "mode",
        +                  "omitted_fields",
        +                  "retrieve_with"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "rate_limit_remaining": {
        +            "anyOf": [
        +              {
        +                "minimum": 0,
        +                "type": "integer"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "request_id": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "schema_version": {
        +            "const": "1.0.0",
        +            "default": "1.0.0",
        +            "type": "string"
        +          },
        +          "scope_boundary": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        +                "properties": {
        +                  "not_in_scope": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "produced": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "recommended_companions": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "type": "string"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "produced",
        +                  "not_in_scope"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tier": {
        +            "enum": [
        +              "free",
        +              "paid"
        +            ],
        +            "type": "string"
        +          },
        +          "tier_upgrade": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        +                "properties": {
        +                  "available_tiers": {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        +                      "properties": {
        +                        "billing": {
        +                          "enum": [
        +                            "one_off",
        +                            "monthly",
        +                            "annual"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "currency": {
        +                          "enum": [
        +                            "GBP",
        +                            "SGD",
        +                            "EUR",
        +                            "USD",
        +                            "CAD",
        +                            "AUD",
        +                            "NZD",
        +                            "MYR"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "display_name": {
        +                          "type": "string"
        +                        },
        +                        "price_local": {
        +                          "type": "number"
        +                        },
        +                        "tier_slug": {
        +                          "enum": [
        +                            "7_day_pass",
        +                            "solo",
        +                            "studio",
        +                            "practice"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "unlock_summary": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "tier_slug",
        +                        "display_name",
        +                        "price_local",
        +                        "currency",
        +                        "billing",
        +                        "unlock_summary"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "current_tier": {
        +                    "const": "free",
        +                    "default": "free",
        +                    "type": "string"
        +                  },
        +                  "pass_credit": {
        +                    "anyOf": [
        +                      {
        +                        "additionalProperties": false,
        +                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        +                        "properties": {
        +                          "amount_local": {
        +                            "type": "number"
        +                          },
        +                          "applies_to": {
        +                            "const": "solo_first_month",
        +                            "default": "solo_first_month",
        +                            "type": "string"
        +                          },
        +                          "currency": {
        +                            "type": "string"
        +                          },
        +                          "redeemable_until": {
        +                            "type": "string"
        +                          }
        +                        },
        +                        "required": [
        +                          "amount_local",
        +                          "currency",
        +                          "redeemable_until"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "pricing_url": {
        +                    "default": "https://civilquants.com/pricing",
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "available_tiers"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tos_url": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "upgrade_hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "warranty_disclaimer": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          }
        +        },
        +        "required": [
        +          "request_id",
        +          "issued_at",
        +          "tier"
        +        ],
        +        "type": "object"
        +      },
        +      "data": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Schema § 1.1 — the typed payload returned inside `MCPResponse[ComputeResult]`.\n\nFree-tier responses omit `drawings` (the downloadable CAD artefact\npointers — the paid differentiator); the bridge enforces this. The\n`audit_trail` and the inline `drawing` preview are present on BOTH tiers\n(V1 ALIGN / 60th-fire D + C). `text_summary` is bounded to 2000 chars —\nkeeps the LLM-facing summary token-cheap and forces longer narrative into\nBoQ row descriptions where it belongs. `warnings` is the non-fatal\ngeometry advisory list (both tiers).",
        +            "properties": {
        +              "assembly_slug": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "audit_trail": {
        +                "anyOf": [
        +                  {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.7 — paid-tier audit-trail entry.\n\nOne entry per BoQ row; `boq_row_index` ties to the row position in\n`ComputeResult.boq_rows`. `derivation` is the human-readable formula\nwalk-through; `formula` is the optional formal expression.",
        +                      "properties": {
        +                        "boq_row_index": {
        +                          "minimum": 0,
        +                          "type": "integer"
        +                        },
        +                        "derivation": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "formula": {
        +                          "anyOf": [
        +                            {
        +                              "type": "string"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ],
        +                          "default": null
        +                        },
        +                        "id": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "parameters_referenced": {
        +                          "items": {
        +                            "type": "string"
        +                          },
        +                          "type": "array"
        +                        }
        +                      },
        +                      "required": [
        +                        "id",
        +                        "boq_row_index",
        +                        "derivation"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "boq_rows": {
        +                "items": {
        +                  "additionalProperties": false,
        +                  "description": "Schema § 1.3 — a single bill row in the requested standard's format.\n\n`description` is the non-verbatim functional description per spec § 13.9 /\n§ 15 invariant — NEVER reproduces a standard's verbatim clause text.\n`rate` / `amount` ship null because rates are commodity data the customer\nowns; the engine's job is the measurement, not the pricing.",
        +                  "properties": {
        +                    "amount": {
        +                      "anyOf": [
        +                        {
        +                          "type": "number"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "attribution": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "audit_id": {
        +                      "anyOf": [
        +                        {
        +                          "type": "string"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "description": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "quantity": {
        +                      "minimum": 0,
        +                      "type": "number"
        +                    },
        +                    "rate": {
        +                      "anyOf": [
        +                        {
        +                          "type": "number"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "unit": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "work_section": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    }
        +                  },
        +                  "required": [
        +                    "work_section",
        +                    "description",
        +                    "quantity",
        +                    "unit",
        +                    "attribution"
        +                  ],
        +                  "type": "object"
        +                },
        +                "type": "array"
        +              },
        +              "drawing": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": false,
        +                    "description": "Schema § 1.6a — inline server-rendered SVG preview of the geometry.\n\nThe MCP mirror of the web ``/compute`` response's ``drawing`` field\n(``api.schemas.compute.DrawingRef``): the same on-screen dimensioned\ndrawing both tiers see in the workspace, surfaced on the MCP compute\nresponse so a chat client can render it inline (60th-fire item C). This\nis the on-screen preview — present on BOTH tiers per the free/paid\nboundary; the downloadable CAD artefacts (DXF / dimensioned PDF) remain\nthe paid differentiator via the export tools.\n\nDefined here rather than importing ``DrawingRef`` because the web\n``schemas`` package imports back into this module (``schemas.render``),\nso reusing it would create an import cycle — the MCP wire contract keeps\nits own copy, the same pattern as ``BoQRow`` / ``DrawingReference``.",
        +                    "properties": {
        +                      "entity_count": {
        +                        "minimum": 0,
        +                        "type": "integer"
        +                      },
        +                      "svg_b64": {
        +                        "minLength": 1,
        +                        "type": "string"
        +                      },
        +                      "unit_of_drawing": {
        +                        "const": "m",
        +                        "default": "m",
        +                        "type": "string"
        +                      },
        +                      "viewbox_height": {
        +                        "exclusiveMinimum": 0,
        +                        "type": "number"
        +                      },
        +                      "viewbox_width": {
        +                        "exclusiveMinimum": 0,
        +                        "type": "number"
        +                      },
        +                      "viewbox_x": {
        +                        "type": "number"
        +                      },
        +                      "viewbox_y": {
        +                        "type": "number"
        +                      }
        +                    },
        +                    "required": [
        +                      "svg_b64",
        +                      "viewbox_x",
        +                      "viewbox_y",
        +                      "viewbox_width",
        +                      "viewbox_height",
        +                      "entity_count"
        +                    ],
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "drawings": {
        +                "anyOf": [
        +                  {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.6 — paid-tier drawing artefact pointer.\n\n`url` is an R2-signed URL; expiry is carried in `_meta.deliverables.expires_at`\non the envelope (not duplicated here). `layers` is DXF-only; PDF/SVG\ncallers omit it.",
        +                      "properties": {
        +                        "drawing_type": {
        +                          "enum": [
        +                            "section",
        +                            "plan",
        +                            "elevation",
        +                            "isometric",
        +                            "detail"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "format": {
        +                          "enum": [
        +                            "DXF",
        +                            "PDF",
        +                            "SVG"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "layers": {
        +                          "anyOf": [
        +                            {
        +                              "items": {
        +                                "type": "string"
        +                              },
        +                              "type": "array"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ],
        +                          "default": null
        +                        },
        +                        "scale": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "sheet_size": {
        +                          "enum": [
        +                            "A1",
        +                            "A2",
        +                            "A3",
        +                            "A4"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "url": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "drawing_type",
        +                        "format",
        +                        "url",
        +                        "sheet_size",
        +                        "scale"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "parameters_used": {
        +                "additionalProperties": false,
        +                "description": "Schema § 1.2 — the parameter snapshot the engine actually used.\n\nSplits user-supplied values from engine defaults so customers can see\nwhich numbers came from them and which the engine filled in. Every\ndefaulted parameter SHOULD have a corresponding entry in `assumptions`\n— the bridge layer enforces this when wrapping engine output.",
        +                "properties": {
        +                  "assumptions": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "engine_defaults": {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  "user_supplied": {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  }
        +                },
        +                "type": "object"
        +              },
        +              "standard": {
        +                "enum": [
        +                  "CESMM4",
        +                  "NRM2",
        +                  "SMM7",
        +                  "MMHW"
        +                ],
        +                "type": "string"
        +              },
        +              "text_summary": {
        +                "maxLength": 2000,
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "totals_summary": {
        +                "additionalProperties": false,
        +                "description": "Schema § 1.4 — totals_summary as a typed wrapper around the free-form dict.\n\nWire shape is a flat object (`{\"concrete_m3\": {...}, \"rebar_t\": {...}}`).\nWe model it as `RootModel`-equivalent via `model_config(extra=\"allow\")`\n+ a single `__root__`-style `entries` dict. Pydantic v2 recommends\n`RootModel` for free-form roots; using a wrapper class keeps the import\nsurface uniform with the rest of this module.",
        +                "properties": {
        +                  "entries": {
        +                    "additionalProperties": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.4 — single material/work-class total entry.",
        +                      "properties": {
        +                        "quantity": {
        +                          "minimum": 0,
        +                          "type": "number"
        +                        },
        +                        "unit": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "quantity",
        +                        "unit"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "object"
        +                  }
        +                },
        +                "type": "object"
        +              },
        +              "warnings": {
        +                "items": {
        +                  "additionalProperties": false,
        +                  "description": "Schema § 1.8 — a non-fatal geometry advisory (56th-fire T2).\n\nThe wire projection of the engine's `core.GeometryWarning`. Advisory only:\na warning NEVER changes a measured quantity — it flags geometry that is\nvalid but likely a mistake (e.g. a stale dependent-height default). Present\non BOTH tiers — a correctness/safety signal, not a paid feature.",
        +                  "properties": {
        +                    "affected_params": {
        +                      "items": {
        +                        "type": "string"
        +                      },
        +                      "type": "array"
        +                    },
        +                    "code": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "detail": {
        +                      "additionalProperties": {
        +                        "type": "number"
        +                      },
        +                      "type": "object"
        +                    },
        +                    "message": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "severity": {
        +                      "enum": [
        +                        "info",
        +                        "advisory",
        +                        "caution"
        +                      ],
        +                      "type": "string"
        +                    }
        +                  },
        +                  "required": [
        +                    "code",
        +                    "severity",
        +                    "message"
        +                  ],
        +                  "type": "object"
        +                },
        +                "type": "array"
        +              }
        +            },
        +            "required": [
        +              "assembly_slug",
        +              "standard",
        +              "parameters_used",
        +              "boq_rows",
        +              "totals_summary",
        +              "text_summary"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      },
        +      "error": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        +            "properties": {
        +              "code": {
        +                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        +                "enum": [
        +                  "RATE_LIMIT_EXCEEDED",
        +                  "TIER_INSUFFICIENT",
        +                  "INVALID_INPUT",
        +                  "SCHEMA_VERSION_MISMATCH",
        +                  "SCHEMA_INVARIANT_VIOLATION",
        +                  "UPSTREAM_TIMEOUT",
        +                  "BACKEND_FAILURE",
        +                  "IP_BLOCKED",
        +                  "RESOURCE_NOT_FOUND",
        +                  "RENDER_FAILURE",
        +                  "OCR_LOW_CONFIDENCE",
        +                  "MANUAL_REVIEW_REQUIRED",
        +                  "ACCEPTANCE_REQUIRED",
        +                  "INVALID_TOKEN"
        +                ],
        +                "type": "string"
        +              },
        +              "details": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "message": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "recoverable": {
        +                "type": "boolean"
        +              },
        +              "retry_after_seconds": {
        +                "anyOf": [
        +                  {
        +                    "minimum": 0,
        +                    "type": "integer"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              }
        +            },
        +            "required": [
        +              "code",
        +              "message",
        +              "recoverable"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      }
        +    },
        +    "required": [
        +      "_meta"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "_meta": {
        +        "additionalProperties": false,
        +        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        +        "properties": {
        +          "deliverables": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        +                "properties": {
        +                  "docx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "dxf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "expires_at": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  },
        +                  "pdf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "xlsx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "expires_at"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "document_id": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "issued_at": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "output_mode": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Surfaces what a trimmed ``output_mode`` withheld from ``data``.\n\nA trimmed mode (``summary`` / ``material_schedule`` / ``boq`` /\n``boq_with_backup``) withholds\nalready-computed fields to keep the chat payload small. The withheld value\nreads to a client agent as \"capability missing\" (the box-culvert \"geometry\nbuilder isn't firing\" scare) rather than \"pared for size\": ``drawing`` and\n``audit_trail`` appear as ``null``, ``boq_rows`` as an empty list ``[]``\n(its type forbids ``null``) — both indistinguishable from a genuine absent\nresult. This names the withheld fields and the exact mode that brings each\nback, so the value is unambiguous. Absent on the default ``full_json`` mode\n— nothing is withheld, nothing to point at.",
        +                "properties": {
        +                  "mode": {
        +                    "enum": [
        +                      "summary",
        +                      "material_schedule",
        +                      "boq",
        +                      "boq_with_backup"
        +                    ],
        +                    "type": "string"
        +                  },
        +                  "omitted_fields": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "minItems": 1,
        +                    "type": "array"
        +                  },
        +                  "retrieve_with": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "mode",
        +                  "omitted_fields",
        +                  "retrieve_with"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "rate_limit_remaining": {
        +            "anyOf": [
        +              {
        +                "minimum": 0,
        +                "type": "integer"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "request_id": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "schema_version": {
        +            "const": "1.0.0",
        +            "default": "1.0.0",
        +            "type": "string"
        +          },
        +          "scope_boundary": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        +                "properties": {
        +                  "not_in_scope": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "produced": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "recommended_companions": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "type": "string"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "produced",
        +                  "not_in_scope"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tier": {
        +            "enum": [
        +              "free",
        +              "paid"
        +            ],
        +            "type": "string"
        +          },
        +          "tier_upgrade": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        +                "properties": {
        +                  "available_tiers": {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        +                      "properties": {
        +                        "billing": {
        +                          "enum": [
        +                            "one_off",
        +                            "monthly",
        +                            "annual"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "currency": {
        +                          "enum": [
        +                            "GBP",
        +                            "SGD",
        +                            "EUR",
        +                            "USD",
        +                            "CAD",
        +                            "AUD",
        +                            "NZD",
        +                            "MYR"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "display_name": {
        +                          "type": "string"
        +                        },
        +                        "price_local": {
        +                          "type": "number"
        +                        },
        +                        "tier_slug": {
        +                          "enum": [
        +                            "7_day_pass",
        +                            "solo",
        +                            "studio",
        +                            "practice"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "unlock_summary": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "tier_slug",
        +                        "display_name",
        +                        "price_local",
        +                        "currency",
        +                        "billing",
        +                        "unlock_summary"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "current_tier": {
        +                    "const": "free",
        +                    "default": "free",
        +                    "type": "string"
        +                  },
        +                  "pass_credit": {
        +                    "anyOf": [
        +                      {
        +                        "additionalProperties": false,
        +                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        +                        "properties": {
        +                          "amount_local": {
        +                            "type": "number"
        +                          },
        +                          "applies_to": {
        +                            "const": "solo_first_month",
        +                            "default": "solo_first_month",
        +                            "type": "string"
        +                          },
        +                          "currency": {
        +                            "type": "string"
        +                          },
        +                          "redeemable_until": {
        +                            "type": "string"
        +                          }
        +                        },
        +                        "required": [
        +                          "amount_local",
        +                          "currency",
        +                          "redeemable_until"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "pricing_url": {
        +                    "default": "https://civilquants.com/pricing",
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "available_tiers"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tos_url": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "upgrade_hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "warranty_disclaimer": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          }
        +        },
        +        "required": [
        +          "request_id",
        +          "issued_at",
        +          "tier"
        +        ],
        +        "type": "object"
        +      },
        +      "data": {
        +        "default": null,
        +        "title": "Data"
        +      },
        +      "error": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        +            "properties": {
        +              "code": {
        +                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        +                "enum": [
        +                  "RATE_LIMIT_EXCEEDED",
        +                  "TIER_INSUFFICIENT",
        +                  "INVALID_INPUT",
        +                  "SCHEMA_VERSION_MISMATCH",
        +                  "SCHEMA_INVARIANT_VIOLATION",
        +                  "UPSTREAM_TIMEOUT",
        +                  "BACKEND_FAILURE",
        +                  "IP_BLOCKED",
        +                  "RESOURCE_NOT_FOUND",
        +                  "RENDER_FAILURE",
        +                  "OCR_LOW_CONFIDENCE",
        +                  "MANUAL_REVIEW_REQUIRED",
        +                  "ACCEPTANCE_REQUIRED",
        +                  "INVALID_TOKEN"
        +                ],
        +                "type": "string"
        +              },
        +              "details": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "message": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "recoverable": {
        +                "type": "boolean"
        +              },
        +              "retry_after_seconds": {
        +                "anyOf": [
        +                  {
        +                    "minimum": 0,
        +                    "type": "integer"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              }
        +            },
        +            "required": [
        +              "code",
        +              "message",
        +              "recoverable"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      }
        +    },
        +    "required": [
        +      "_meta"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedcompute_gabion_wall2 fields changed
      • changedInput schema / properties / output_mode / enum
        Previous value: -[
        -  "summary",
        -  "boq",
        -  "boq_with_backup",
        -  "full_json"
        -]New value: +[
        +  "summary",
        +  "material_schedule",
        +  "boq",
        +  "boq_with_backup",
        +  "full_json"
        +]
      • changedOutput schema / properties / result / anyOf
        Previous value: -[
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "_meta": {
        -        "additionalProperties": false,
        -        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        -        "properties": {
        -          "deliverables": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        -                "properties": {
        -                  "docx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "dxf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "expires_at": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  },
        -                  "pdf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "xlsx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "expires_at"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "document_id": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "issued_at": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "output_mode": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Surfaces what a trimmed ``output_mode`` withheld from ``data``.\n\nA trimmed mode (``summary`` / ``boq`` / ``boq_with_backup``) withholds\nalready-computed fields to keep the chat payload small. The withheld value\nreads to a client agent as \"capability missing\" (the box-culvert \"geometry\nbuilder isn't firing\" scare) rather than \"pared for size\": ``drawing`` and\n``audit_trail`` appear as ``null``, ``boq_rows`` as an empty list ``[]``\n(its type forbids ``null``) — both indistinguishable from a genuine absent\nresult. This names the withheld fields and the exact mode that brings each\nback, so the value is unambiguous. Absent on the default ``full_json`` mode\n— nothing is withheld, nothing to point at.",
        -                "properties": {
        -                  "mode": {
        -                    "enum": [
        -                      "summary",
        -                      "boq",
        -                      "boq_with_backup"
        -                    ],
        -                    "type": "string"
        -                  },
        -                  "omitted_fields": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "minItems": 1,
        -                    "type": "array"
        -                  },
        -                  "retrieve_with": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "mode",
        -                  "omitted_fields",
        -                  "retrieve_with"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "rate_limit_remaining": {
        -            "anyOf": [
        -              {
        -                "minimum": 0,
        -                "type": "integer"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "request_id": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "schema_version": {
        -            "const": "1.0.0",
        -            "default": "1.0.0",
        -            "type": "string"
        -          },
        -          "scope_boundary": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        -                "properties": {
        -                  "not_in_scope": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "produced": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "recommended_companions": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "type": "string"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "produced",
        -                  "not_in_scope"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tier": {
        -            "enum": [
        -              "free",
        -              "paid"
        -            ],
        -            "type": "string"
        -          },
        -          "tier_upgrade": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        -                "properties": {
        -                  "available_tiers": {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        -                      "properties": {
        -                        "billing": {
        -                          "enum": [
        -                            "one_off",
        -                            "monthly",
        -                            "annual"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "currency": {
        -                          "enum": [
        -                            "GBP",
        -                            "SGD",
        -                            "EUR",
        -                            "USD",
        -                            "CAD",
        -                            "AUD",
        -                            "NZD",
        -                            "MYR"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "display_name": {
        -                          "type": "string"
        -                        },
        -                        "price_local": {
        -                          "type": "number"
        -                        },
        -                        "tier_slug": {
        -                          "enum": [
        -                            "7_day_pass",
        -                            "solo",
        -                            "studio",
        -                            "practice"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "unlock_summary": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "tier_slug",
        -                        "display_name",
        -                        "price_local",
        -                        "currency",
        -                        "billing",
        -                        "unlock_summary"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "current_tier": {
        -                    "const": "free",
        -                    "default": "free",
        -                    "type": "string"
        -                  },
        -                  "pass_credit": {
        -                    "anyOf": [
        -                      {
        -                        "additionalProperties": false,
        -                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        -                        "properties": {
        -                          "amount_local": {
        -                            "type": "number"
        -                          },
        -                          "applies_to": {
        -                            "const": "solo_first_month",
        -                            "default": "solo_first_month",
        -                            "type": "string"
        -                          },
        -                          "currency": {
        -                            "type": "string"
        -                          },
        -                          "redeemable_until": {
        -                            "type": "string"
        -                          }
        -                        },
        -                        "required": [
        -                          "amount_local",
        -                          "currency",
        -                          "redeemable_until"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "pricing_url": {
        -                    "default": "https://civilquants.com/pricing",
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "available_tiers"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tos_url": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "upgrade_hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "warranty_disclaimer": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          }
        -        },
        -        "required": [
        -          "request_id",
        -          "issued_at",
        -          "tier"
        -        ],
        -        "type": "object"
        -      },
        -      "data": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Schema § 1.1 — the typed payload returned inside `MCPResponse[ComputeResult]`.\n\nFree-tier responses omit `drawings` (the downloadable CAD artefact\npointers — the paid differentiator); the bridge enforces this. The\n`audit_trail` and the inline `drawing` preview are present on BOTH tiers\n(V1 ALIGN / 60th-fire D + C). `text_summary` is bounded to 2000 chars —\nkeeps the LLM-facing summary token-cheap and forces longer narrative into\nBoQ row descriptions where it belongs. `warnings` is the non-fatal\ngeometry advisory list (both tiers).",
        -            "properties": {
        -              "assembly_slug": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "audit_trail": {
        -                "anyOf": [
        -                  {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.7 — paid-tier audit-trail entry.\n\nOne entry per BoQ row; `boq_row_index` ties to the row position in\n`ComputeResult.boq_rows`. `derivation` is the human-readable formula\nwalk-through; `formula` is the optional formal expression.",
        -                      "properties": {
        -                        "boq_row_index": {
        -                          "minimum": 0,
        -                          "type": "integer"
        -                        },
        -                        "derivation": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "formula": {
        -                          "anyOf": [
        -                            {
        -                              "type": "string"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ],
        -                          "default": null
        -                        },
        -                        "id": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "parameters_referenced": {
        -                          "items": {
        -                            "type": "string"
        -                          },
        -                          "type": "array"
        -                        }
        -                      },
        -                      "required": [
        -                        "id",
        -                        "boq_row_index",
        -                        "derivation"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "boq_rows": {
        -                "items": {
        -                  "additionalProperties": false,
        -                  "description": "Schema § 1.3 — a single bill row in the requested standard's format.\n\n`description` is the non-verbatim functional description per spec § 13.9 /\n§ 15 invariant — NEVER reproduces a standard's verbatim clause text.\n`rate` / `amount` ship null because rates are commodity data the customer\nowns; the engine's job is the measurement, not the pricing.",
        -                  "properties": {
        -                    "amount": {
        -                      "anyOf": [
        -                        {
        -                          "type": "number"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "attribution": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "audit_id": {
        -                      "anyOf": [
        -                        {
        -                          "type": "string"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "description": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "quantity": {
        -                      "minimum": 0,
        -                      "type": "number"
        -                    },
        -                    "rate": {
        -                      "anyOf": [
        -                        {
        -                          "type": "number"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "unit": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "work_section": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    }
        -                  },
        -                  "required": [
        -                    "work_section",
        -                    "description",
        -                    "quantity",
        -                    "unit",
        -                    "attribution"
        -                  ],
        -                  "type": "object"
        -                },
        -                "type": "array"
        -              },
        -              "drawing": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": false,
        -                    "description": "Schema § 1.6a — inline server-rendered SVG preview of the geometry.\n\nThe MCP mirror of the web ``/compute`` response's ``drawing`` field\n(``api.schemas.compute.DrawingRef``): the same on-screen dimensioned\ndrawing both tiers see in the workspace, surfaced on the MCP compute\nresponse so a chat client can render it inline (60th-fire item C). This\nis the on-screen preview — present on BOTH tiers per the free/paid\nboundary; the downloadable CAD artefacts (DXF / dimensioned PDF) remain\nthe paid differentiator via the export tools.\n\nDefined here rather than importing ``DrawingRef`` because the web\n``schemas`` package imports back into this module (``schemas.render``),\nso reusing it would create an import cycle — the MCP wire contract keeps\nits own copy, the same pattern as ``BoQRow`` / ``DrawingReference``.",
        -                    "properties": {
        -                      "entity_count": {
        -                        "minimum": 0,
        -                        "type": "integer"
        -                      },
        -                      "svg_b64": {
        -                        "minLength": 1,
        -                        "type": "string"
        -                      },
        -                      "unit_of_drawing": {
        -                        "const": "m",
        -                        "default": "m",
        -                        "type": "string"
        -                      },
        -                      "viewbox_height": {
        -                        "exclusiveMinimum": 0,
        -                        "type": "number"
        -                      },
        -                      "viewbox_width": {
        -                        "exclusiveMinimum": 0,
        -                        "type": "number"
        -                      },
        -                      "viewbox_x": {
        -                        "type": "number"
        -                      },
        -                      "viewbox_y": {
        -                        "type": "number"
        -                      }
        -                    },
        -                    "required": [
        -                      "svg_b64",
        -                      "viewbox_x",
        -                      "viewbox_y",
        -                      "viewbox_width",
        -                      "viewbox_height",
        -                      "entity_count"
        -                    ],
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "drawings": {
        -                "anyOf": [
        -                  {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.6 — paid-tier drawing artefact pointer.\n\n`url` is an R2-signed URL; expiry is carried in `_meta.deliverables.expires_at`\non the envelope (not duplicated here). `layers` is DXF-only; PDF/SVG\ncallers omit it.",
        -                      "properties": {
        -                        "drawing_type": {
        -                          "enum": [
        -                            "section",
        -                            "plan",
        -                            "elevation",
        -                            "isometric",
        -                            "detail"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "format": {
        -                          "enum": [
        -                            "DXF",
        -                            "PDF",
        -                            "SVG"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "layers": {
        -                          "anyOf": [
        -                            {
        -                              "items": {
        -                                "type": "string"
        -                              },
        -                              "type": "array"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ],
        -                          "default": null
        -                        },
        -                        "scale": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "sheet_size": {
        -                          "enum": [
        -                            "A1",
        -                            "A2",
        -                            "A3",
        -                            "A4"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "url": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "drawing_type",
        -                        "format",
        -                        "url",
        -                        "sheet_size",
        -                        "scale"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "parameters_used": {
        -                "additionalProperties": false,
        -                "description": "Schema § 1.2 — the parameter snapshot the engine actually used.\n\nSplits user-supplied values from engine defaults so customers can see\nwhich numbers came from them and which the engine filled in. Every\ndefaulted parameter SHOULD have a corresponding entry in `assumptions`\n— the bridge layer enforces this when wrapping engine output.",
        -                "properties": {
        -                  "assumptions": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "engine_defaults": {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  "user_supplied": {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  }
        -                },
        -                "type": "object"
        -              },
        -              "standard": {
        -                "enum": [
        -                  "CESMM4",
        -                  "NRM2",
        -                  "SMM7",
        -                  "MMHW"
        -                ],
        -                "type": "string"
        -              },
        -              "text_summary": {
        -                "maxLength": 2000,
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "totals_summary": {
        -                "additionalProperties": false,
        -                "description": "Schema § 1.4 — totals_summary as a typed wrapper around the free-form dict.\n\nWire shape is a flat object (`{\"concrete_m3\": {...}, \"rebar_t\": {...}}`).\nWe model it as `RootModel`-equivalent via `model_config(extra=\"allow\")`\n+ a single `__root__`-style `entries` dict. Pydantic v2 recommends\n`RootModel` for free-form roots; using a wrapper class keeps the import\nsurface uniform with the rest of this module.",
        -                "properties": {
        -                  "entries": {
        -                    "additionalProperties": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.4 — single material/work-class total entry.",
        -                      "properties": {
        -                        "quantity": {
        -                          "minimum": 0,
        -                          "type": "number"
        -                        },
        -                        "unit": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "quantity",
        -                        "unit"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "object"
        -                  }
        -                },
        -                "type": "object"
        -              },
        -              "warnings": {
        -                "items": {
        -                  "additionalProperties": false,
        -                  "description": "Schema § 1.8 — a non-fatal geometry advisory (56th-fire T2).\n\nThe wire projection of the engine's `core.GeometryWarning`. Advisory only:\na warning NEVER changes a measured quantity — it flags geometry that is\nvalid but likely a mistake (e.g. a stale dependent-height default). Present\non BOTH tiers — a correctness/safety signal, not a paid feature.",
        -                  "properties": {
        -                    "affected_params": {
        -                      "items": {
        -                        "type": "string"
        -                      },
        -                      "type": "array"
        -                    },
        -                    "code": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "detail": {
        -                      "additionalProperties": {
        -                        "type": "number"
        -                      },
        -                      "type": "object"
        -                    },
        -                    "message": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "severity": {
        -                      "enum": [
        -                        "info",
        -                        "advisory",
        -                        "caution"
        -                      ],
        -                      "type": "string"
        -                    }
        -                  },
        -                  "required": [
        -                    "code",
        -                    "severity",
        -                    "message"
        -                  ],
        -                  "type": "object"
        -                },
        -                "type": "array"
        -              }
        -            },
        -            "required": [
        -              "assembly_slug",
        -              "standard",
        -              "parameters_used",
        -              "boq_rows",
        -              "totals_summary",
        -              "text_summary"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      },
        -      "error": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        -            "properties": {
        -              "code": {
        -                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        -                "enum": [
        -                  "RATE_LIMIT_EXCEEDED",
        -                  "TIER_INSUFFICIENT",
        -                  "INVALID_INPUT",
        -                  "SCHEMA_VERSION_MISMATCH",
        -                  "SCHEMA_INVARIANT_VIOLATION",
        -                  "UPSTREAM_TIMEOUT",
        -                  "BACKEND_FAILURE",
        -                  "IP_BLOCKED",
        -                  "RESOURCE_NOT_FOUND",
        -                  "RENDER_FAILURE",
        -                  "OCR_LOW_CONFIDENCE",
        -                  "MANUAL_REVIEW_REQUIRED",
        -                  "ACCEPTANCE_REQUIRED",
        -                  "INVALID_TOKEN"
        -                ],
        -                "type": "string"
        -              },
        -              "details": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "message": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "recoverable": {
        -                "type": "boolean"
        -              },
        -              "retry_after_seconds": {
        -                "anyOf": [
        -                  {
        -                    "minimum": 0,
        -                    "type": "integer"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              }
        -            },
        -            "required": [
        -              "code",
        -              "message",
        -              "recoverable"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      }
        -    },
        -    "required": [
        -      "_meta"
        -    ],
        -    "type": "object"
        -  },
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "_meta": {
        -        "additionalProperties": false,
        -        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        -        "properties": {
        -          "deliverables": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        -                "properties": {
        -                  "docx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "dxf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "expires_at": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  },
        -                  "pdf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "xlsx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "expires_at"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "document_id": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "issued_at": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "output_mode": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Surfaces what a trimmed ``output_mode`` withheld from ``data``.\n\nA trimmed mode (``summary`` / ``boq`` / ``boq_with_backup``) withholds\nalready-computed fields to keep the chat payload small. The withheld value\nreads to a client agent as \"capability missing\" (the box-culvert \"geometry\nbuilder isn't firing\" scare) rather than \"pared for size\": ``drawing`` and\n``audit_trail`` appear as ``null``, ``boq_rows`` as an empty list ``[]``\n(its type forbids ``null``) — both indistinguishable from a genuine absent\nresult. This names the withheld fields and the exact mode that brings each\nback, so the value is unambiguous. Absent on the default ``full_json`` mode\n— nothing is withheld, nothing to point at.",
        -                "properties": {
        -                  "mode": {
        -                    "enum": [
        -                      "summary",
        -                      "boq",
        -                      "boq_with_backup"
        -                    ],
        -                    "type": "string"
        -                  },
        -                  "omitted_fields": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "minItems": 1,
        -                    "type": "array"
        -                  },
        -                  "retrieve_with": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "mode",
        -                  "omitted_fields",
        -                  "retrieve_with"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "rate_limit_remaining": {
        -            "anyOf": [
        -              {
        -                "minimum": 0,
        -                "type": "integer"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "request_id": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "schema_version": {
        -            "const": "1.0.0",
        -            "default": "1.0.0",
        -            "type": "string"
        -          },
        -          "scope_boundary": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        -                "properties": {
        -                  "not_in_scope": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "produced": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "recommended_companions": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "type": "string"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "produced",
        -                  "not_in_scope"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tier": {
        -            "enum": [
        -              "free",
        -              "paid"
        -            ],
        -            "type": "string"
        -          },
        -          "tier_upgrade": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        -                "properties": {
        -                  "available_tiers": {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        -                      "properties": {
        -                        "billing": {
        -                          "enum": [
        -                            "one_off",
        -                            "monthly",
        -                            "annual"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "currency": {
        -                          "enum": [
        -                            "GBP",
        -                            "SGD",
        -                            "EUR",
        -                            "USD",
        -                            "CAD",
        -                            "AUD",
        -                            "NZD",
        -                            "MYR"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "display_name": {
        -                          "type": "string"
        -                        },
        -                        "price_local": {
        -                          "type": "number"
        -                        },
        -                        "tier_slug": {
        -                          "enum": [
        -                            "7_day_pass",
        -                            "solo",
        -                            "studio",
        -                            "practice"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "unlock_summary": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "tier_slug",
        -                        "display_name",
        -                        "price_local",
        -                        "currency",
        -                        "billing",
        -                        "unlock_summary"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "current_tier": {
        -                    "const": "free",
        -                    "default": "free",
        -                    "type": "string"
        -                  },
        -                  "pass_credit": {
        -                    "anyOf": [
        -                      {
        -                        "additionalProperties": false,
        -                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        -                        "properties": {
        -                          "amount_local": {
        -                            "type": "number"
        -                          },
        -                          "applies_to": {
        -                            "const": "solo_first_month",
        -                            "default": "solo_first_month",
        -                            "type": "string"
        -                          },
        -                          "currency": {
        -                            "type": "string"
        -                          },
        -                          "redeemable_until": {
        -                            "type": "string"
        -                          }
        -                        },
        -                        "required": [
        -                          "amount_local",
        -                          "currency",
        -                          "redeemable_until"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "pricing_url": {
        -                    "default": "https://civilquants.com/pricing",
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "available_tiers"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tos_url": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "upgrade_hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "warranty_disclaimer": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          }
        -        },
        -        "required": [
        -          "request_id",
        -          "issued_at",
        -          "tier"
        -        ],
        -        "type": "object"
        -      },
        -      "data": {
        -        "default": null,
        -        "title": "Data"
        -      },
        -      "error": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        -            "properties": {
        -              "code": {
        -                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        -                "enum": [
        -                  "RATE_LIMIT_EXCEEDED",
        -                  "TIER_INSUFFICIENT",
        -                  "INVALID_INPUT",
        -                  "SCHEMA_VERSION_MISMATCH",
        -                  "SCHEMA_INVARIANT_VIOLATION",
        -                  "UPSTREAM_TIMEOUT",
        -                  "BACKEND_FAILURE",
        -                  "IP_BLOCKED",
        -                  "RESOURCE_NOT_FOUND",
        -                  "RENDER_FAILURE",
        -                  "OCR_LOW_CONFIDENCE",
        -                  "MANUAL_REVIEW_REQUIRED",
        -                  "ACCEPTANCE_REQUIRED",
        -                  "INVALID_TOKEN"
        -                ],
        -                "type": "string"
        -              },
        -              "details": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "message": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "recoverable": {
        -                "type": "boolean"
        -              },
        -              "retry_after_seconds": {
        -                "anyOf": [
        -                  {
        -                    "minimum": 0,
        -                    "type": "integer"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              }
        -            },
        -            "required": [
        -              "code",
        -              "message",
        -              "recoverable"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      }
        -    },
        -    "required": [
        -      "_meta"
        -    ],
        -    "type": "object"
        -  }
        -]New value: +[
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "_meta": {
        +        "additionalProperties": false,
        +        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        +        "properties": {
        +          "deliverables": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        +                "properties": {
        +                  "docx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "dxf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "expires_at": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  },
        +                  "pdf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "xlsx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "expires_at"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "document_id": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "issued_at": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "output_mode": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Surfaces what a trimmed ``output_mode`` withheld from ``data``.\n\nA trimmed mode (``summary`` / ``material_schedule`` / ``boq`` /\n``boq_with_backup``) withholds\nalready-computed fields to keep the chat payload small. The withheld value\nreads to a client agent as \"capability missing\" (the box-culvert \"geometry\nbuilder isn't firing\" scare) rather than \"pared for size\": ``drawing`` and\n``audit_trail`` appear as ``null``, ``boq_rows`` as an empty list ``[]``\n(its type forbids ``null``) — both indistinguishable from a genuine absent\nresult. This names the withheld fields and the exact mode that brings each\nback, so the value is unambiguous. Absent on the default ``full_json`` mode\n— nothing is withheld, nothing to point at.",
        +                "properties": {
        +                  "mode": {
        +                    "enum": [
        +                      "summary",
        +                      "material_schedule",
        +                      "boq",
        +                      "boq_with_backup"
        +                    ],
        +                    "type": "string"
        +                  },
        +                  "omitted_fields": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "minItems": 1,
        +                    "type": "array"
        +                  },
        +                  "retrieve_with": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "mode",
        +                  "omitted_fields",
        +                  "retrieve_with"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "rate_limit_remaining": {
        +            "anyOf": [
        +              {
        +                "minimum": 0,
        +                "type": "integer"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "request_id": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "schema_version": {
        +            "const": "1.0.0",
        +            "default": "1.0.0",
        +            "type": "string"
        +          },
        +          "scope_boundary": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        +                "properties": {
        +                  "not_in_scope": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "produced": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "recommended_companions": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "type": "string"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "produced",
        +                  "not_in_scope"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tier": {
        +            "enum": [
        +              "free",
        +              "paid"
        +            ],
        +            "type": "string"
        +          },
        +          "tier_upgrade": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        +                "properties": {
        +                  "available_tiers": {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        +                      "properties": {
        +                        "billing": {
        +                          "enum": [
        +                            "one_off",
        +                            "monthly",
        +                            "annual"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "currency": {
        +                          "enum": [
        +                            "GBP",
        +                            "SGD",
        +                            "EUR",
        +                            "USD",
        +                            "CAD",
        +                            "AUD",
        +                            "NZD",
        +                            "MYR"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "display_name": {
        +                          "type": "string"
        +                        },
        +                        "price_local": {
        +                          "type": "number"
        +                        },
        +                        "tier_slug": {
        +                          "enum": [
        +                            "7_day_pass",
        +                            "solo",
        +                            "studio",
        +                            "practice"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "unlock_summary": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "tier_slug",
        +                        "display_name",
        +                        "price_local",
        +                        "currency",
        +                        "billing",
        +                        "unlock_summary"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "current_tier": {
        +                    "const": "free",
        +                    "default": "free",
        +                    "type": "string"
        +                  },
        +                  "pass_credit": {
        +                    "anyOf": [
        +                      {
        +                        "additionalProperties": false,
        +                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        +                        "properties": {
        +                          "amount_local": {
        +                            "type": "number"
        +                          },
        +                          "applies_to": {
        +                            "const": "solo_first_month",
        +                            "default": "solo_first_month",
        +                            "type": "string"
        +                          },
        +                          "currency": {
        +                            "type": "string"
        +                          },
        +                          "redeemable_until": {
        +                            "type": "string"
        +                          }
        +                        },
        +                        "required": [
        +                          "amount_local",
        +                          "currency",
        +                          "redeemable_until"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "pricing_url": {
        +                    "default": "https://civilquants.com/pricing",
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "available_tiers"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tos_url": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "upgrade_hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "warranty_disclaimer": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          }
        +        },
        +        "required": [
        +          "request_id",
        +          "issued_at",
        +          "tier"
        +        ],
        +        "type": "object"
        +      },
        +      "data": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Schema § 1.1 — the typed payload returned inside `MCPResponse[ComputeResult]`.\n\nFree-tier responses omit `drawings` (the downloadable CAD artefact\npointers — the paid differentiator); the bridge enforces this. The\n`audit_trail` and the inline `drawing` preview are present on BOTH tiers\n(V1 ALIGN / 60th-fire D + C). `text_summary` is bounded to 2000 chars —\nkeeps the LLM-facing summary token-cheap and forces longer narrative into\nBoQ row descriptions where it belongs. `warnings` is the non-fatal\ngeometry advisory list (both tiers).",
        +            "properties": {
        +              "assembly_slug": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "audit_trail": {
        +                "anyOf": [
        +                  {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.7 — paid-tier audit-trail entry.\n\nOne entry per BoQ row; `boq_row_index` ties to the row position in\n`ComputeResult.boq_rows`. `derivation` is the human-readable formula\nwalk-through; `formula` is the optional formal expression.",
        +                      "properties": {
        +                        "boq_row_index": {
        +                          "minimum": 0,
        +                          "type": "integer"
        +                        },
        +                        "derivation": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "formula": {
        +                          "anyOf": [
        +                            {
        +                              "type": "string"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ],
        +                          "default": null
        +                        },
        +                        "id": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "parameters_referenced": {
        +                          "items": {
        +                            "type": "string"
        +                          },
        +                          "type": "array"
        +                        }
        +                      },
        +                      "required": [
        +                        "id",
        +                        "boq_row_index",
        +                        "derivation"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "boq_rows": {
        +                "items": {
        +                  "additionalProperties": false,
        +                  "description": "Schema § 1.3 — a single bill row in the requested standard's format.\n\n`description` is the non-verbatim functional description per spec § 13.9 /\n§ 15 invariant — NEVER reproduces a standard's verbatim clause text.\n`rate` / `amount` ship null because rates are commodity data the customer\nowns; the engine's job is the measurement, not the pricing.",
        +                  "properties": {
        +                    "amount": {
        +                      "anyOf": [
        +                        {
        +                          "type": "number"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "attribution": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "audit_id": {
        +                      "anyOf": [
        +                        {
        +                          "type": "string"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "description": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "quantity": {
        +                      "minimum": 0,
        +                      "type": "number"
        +                    },
        +                    "rate": {
        +                      "anyOf": [
        +                        {
        +                          "type": "number"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "unit": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "work_section": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    }
        +                  },
        +                  "required": [
        +                    "work_section",
        +                    "description",
        +                    "quantity",
        +                    "unit",
        +                    "attribution"
        +                  ],
        +                  "type": "object"
        +                },
        +                "type": "array"
        +              },
        +              "drawing": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": false,
        +                    "description": "Schema § 1.6a — inline server-rendered SVG preview of the geometry.\n\nThe MCP mirror of the web ``/compute`` response's ``drawing`` field\n(``api.schemas.compute.DrawingRef``): the same on-screen dimensioned\ndrawing both tiers see in the workspace, surfaced on the MCP compute\nresponse so a chat client can render it inline (60th-fire item C). This\nis the on-screen preview — present on BOTH tiers per the free/paid\nboundary; the downloadable CAD artefacts (DXF / dimensioned PDF) remain\nthe paid differentiator via the export tools.\n\nDefined here rather than importing ``DrawingRef`` because the web\n``schemas`` package imports back into this module (``schemas.render``),\nso reusing it would create an import cycle — the MCP wire contract keeps\nits own copy, the same pattern as ``BoQRow`` / ``DrawingReference``.",
        +                    "properties": {
        +                      "entity_count": {
        +                        "minimum": 0,
        +                        "type": "integer"
        +                      },
        +                      "svg_b64": {
        +                        "minLength": 1,
        +                        "type": "string"
        +                      },
        +                      "unit_of_drawing": {
        +                        "const": "m",
        +                        "default": "m",
        +                        "type": "string"
        +                      },
        +                      "viewbox_height": {
        +                        "exclusiveMinimum": 0,
        +                        "type": "number"
        +                      },
        +                      "viewbox_width": {
        +                        "exclusiveMinimum": 0,
        +                        "type": "number"
        +                      },
        +                      "viewbox_x": {
        +                        "type": "number"
        +                      },
        +                      "viewbox_y": {
        +                        "type": "number"
        +                      }
        +                    },
        +                    "required": [
        +                      "svg_b64",
        +                      "viewbox_x",
        +                      "viewbox_y",
        +                      "viewbox_width",
        +                      "viewbox_height",
        +                      "entity_count"
        +                    ],
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "drawings": {
        +                "anyOf": [
        +                  {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.6 — paid-tier drawing artefact pointer.\n\n`url` is an R2-signed URL; expiry is carried in `_meta.deliverables.expires_at`\non the envelope (not duplicated here). `layers` is DXF-only; PDF/SVG\ncallers omit it.",
        +                      "properties": {
        +                        "drawing_type": {
        +                          "enum": [
        +                            "section",
        +                            "plan",
        +                            "elevation",
        +                            "isometric",
        +                            "detail"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "format": {
        +                          "enum": [
        +                            "DXF",
        +                            "PDF",
        +                            "SVG"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "layers": {
        +                          "anyOf": [
        +                            {
        +                              "items": {
        +                                "type": "string"
        +                              },
        +                              "type": "array"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ],
        +                          "default": null
        +                        },
        +                        "scale": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "sheet_size": {
        +                          "enum": [
        +                            "A1",
        +                            "A2",
        +                            "A3",
        +                            "A4"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "url": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "drawing_type",
        +                        "format",
        +                        "url",
        +                        "sheet_size",
        +                        "scale"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "parameters_used": {
        +                "additionalProperties": false,
        +                "description": "Schema § 1.2 — the parameter snapshot the engine actually used.\n\nSplits user-supplied values from engine defaults so customers can see\nwhich numbers came from them and which the engine filled in. Every\ndefaulted parameter SHOULD have a corresponding entry in `assumptions`\n— the bridge layer enforces this when wrapping engine output.",
        +                "properties": {
        +                  "assumptions": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "engine_defaults": {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  "user_supplied": {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  }
        +                },
        +                "type": "object"
        +              },
        +              "standard": {
        +                "enum": [
        +                  "CESMM4",
        +                  "NRM2",
        +                  "SMM7",
        +                  "MMHW"
        +                ],
        +                "type": "string"
        +              },
        +              "text_summary": {
        +                "maxLength": 2000,
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "totals_summary": {
        +                "additionalProperties": false,
        +                "description": "Schema § 1.4 — totals_summary as a typed wrapper around the free-form dict.\n\nWire shape is a flat object (`{\"concrete_m3\": {...}, \"rebar_t\": {...}}`).\nWe model it as `RootModel`-equivalent via `model_config(extra=\"allow\")`\n+ a single `__root__`-style `entries` dict. Pydantic v2 recommends\n`RootModel` for free-form roots; using a wrapper class keeps the import\nsurface uniform with the rest of this module.",
        +                "properties": {
        +                  "entries": {
        +                    "additionalProperties": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.4 — single material/work-class total entry.",
        +                      "properties": {
        +                        "quantity": {
        +                          "minimum": 0,
        +                          "type": "number"
        +                        },
        +                        "unit": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "quantity",
        +                        "unit"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "object"
        +                  }
        +                },
        +                "type": "object"
        +              },
        +              "warnings": {
        +                "items": {
        +                  "additionalProperties": false,
        +                  "description": "Schema § 1.8 — a non-fatal geometry advisory (56th-fire T2).\n\nThe wire projection of the engine's `core.GeometryWarning`. Advisory only:\na warning NEVER changes a measured quantity — it flags geometry that is\nvalid but likely a mistake (e.g. a stale dependent-height default). Present\non BOTH tiers — a correctness/safety signal, not a paid feature.",
        +                  "properties": {
        +                    "affected_params": {
        +                      "items": {
        +                        "type": "string"
        +                      },
        +                      "type": "array"
        +                    },
        +                    "code": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "detail": {
        +                      "additionalProperties": {
        +                        "type": "number"
        +                      },
        +                      "type": "object"
        +                    },
        +                    "message": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "severity": {
        +                      "enum": [
        +                        "info",
        +                        "advisory",
        +                        "caution"
        +                      ],
        +                      "type": "string"
        +                    }
        +                  },
        +                  "required": [
        +                    "code",
        +                    "severity",
        +                    "message"
        +                  ],
        +                  "type": "object"
        +                },
        +                "type": "array"
        +              }
        +            },
        +            "required": [
        +              "assembly_slug",
        +              "standard",
        +              "parameters_used",
        +              "boq_rows",
        +              "totals_summary",
        +              "text_summary"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      },
        +      "error": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        +            "properties": {
        +              "code": {
        +                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        +                "enum": [
        +                  "RATE_LIMIT_EXCEEDED",
        +                  "TIER_INSUFFICIENT",
        +                  "INVALID_INPUT",
        +                  "SCHEMA_VERSION_MISMATCH",
        +                  "SCHEMA_INVARIANT_VIOLATION",
        +                  "UPSTREAM_TIMEOUT",
        +                  "BACKEND_FAILURE",
        +                  "IP_BLOCKED",
        +                  "RESOURCE_NOT_FOUND",
        +                  "RENDER_FAILURE",
        +                  "OCR_LOW_CONFIDENCE",
        +                  "MANUAL_REVIEW_REQUIRED",
        +                  "ACCEPTANCE_REQUIRED",
        +                  "INVALID_TOKEN"
        +                ],
        +                "type": "string"
        +              },
        +              "details": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "message": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "recoverable": {
        +                "type": "boolean"
        +              },
        +              "retry_after_seconds": {
        +                "anyOf": [
        +                  {
        +                    "minimum": 0,
        +                    "type": "integer"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              }
        +            },
        +            "required": [
        +              "code",
        +              "message",
        +              "recoverable"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      }
        +    },
        +    "required": [
        +      "_meta"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "_meta": {
        +        "additionalProperties": false,
        +        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        +        "properties": {
        +          "deliverables": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        +                "properties": {
        +                  "docx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "dxf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "expires_at": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  },
        +                  "pdf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "xlsx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "expires_at"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "document_id": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "issued_at": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "output_mode": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Surfaces what a trimmed ``output_mode`` withheld from ``data``.\n\nA trimmed mode (``summary`` / ``material_schedule`` / ``boq`` /\n``boq_with_backup``) withholds\nalready-computed fields to keep the chat payload small. The withheld value\nreads to a client agent as \"capability missing\" (the box-culvert \"geometry\nbuilder isn't firing\" scare) rather than \"pared for size\": ``drawing`` and\n``audit_trail`` appear as ``null``, ``boq_rows`` as an empty list ``[]``\n(its type forbids ``null``) — both indistinguishable from a genuine absent\nresult. This names the withheld fields and the exact mode that brings each\nback, so the value is unambiguous. Absent on the default ``full_json`` mode\n— nothing is withheld, nothing to point at.",
        +                "properties": {
        +                  "mode": {
        +                    "enum": [
        +                      "summary",
        +                      "material_schedule",
        +                      "boq",
        +                      "boq_with_backup"
        +                    ],
        +                    "type": "string"
        +                  },
        +                  "omitted_fields": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "minItems": 1,
        +                    "type": "array"
        +                  },
        +                  "retrieve_with": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "mode",
        +                  "omitted_fields",
        +                  "retrieve_with"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "rate_limit_remaining": {
        +            "anyOf": [
        +              {
        +                "minimum": 0,
        +                "type": "integer"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "request_id": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "schema_version": {
        +            "const": "1.0.0",
        +            "default": "1.0.0",
        +            "type": "string"
        +          },
        +          "scope_boundary": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        +                "properties": {
        +                  "not_in_scope": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "produced": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "recommended_companions": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "type": "string"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "produced",
        +                  "not_in_scope"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tier": {
        +            "enum": [
        +              "free",
        +              "paid"
        +            ],
        +            "type": "string"
        +          },
        +          "tier_upgrade": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        +                "properties": {
        +                  "available_tiers": {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        +                      "properties": {
        +                        "billing": {
        +                          "enum": [
        +                            "one_off",
        +                            "monthly",
        +                            "annual"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "currency": {
        +                          "enum": [
        +                            "GBP",
        +                            "SGD",
        +                            "EUR",
        +                            "USD",
        +                            "CAD",
        +                            "AUD",
        +                            "NZD",
        +                            "MYR"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "display_name": {
        +                          "type": "string"
        +                        },
        +                        "price_local": {
        +                          "type": "number"
        +                        },
        +                        "tier_slug": {
        +                          "enum": [
        +                            "7_day_pass",
        +                            "solo",
        +                            "studio",
        +                            "practice"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "unlock_summary": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "tier_slug",
        +                        "display_name",
        +                        "price_local",
        +                        "currency",
        +                        "billing",
        +                        "unlock_summary"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "current_tier": {
        +                    "const": "free",
        +                    "default": "free",
        +                    "type": "string"
        +                  },
        +                  "pass_credit": {
        +                    "anyOf": [
        +                      {
        +                        "additionalProperties": false,
        +                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        +                        "properties": {
        +                          "amount_local": {
        +                            "type": "number"
        +                          },
        +                          "applies_to": {
        +                            "const": "solo_first_month",
        +                            "default": "solo_first_month",
        +                            "type": "string"
        +                          },
        +                          "currency": {
        +                            "type": "string"
        +                          },
        +                          "redeemable_until": {
        +                            "type": "string"
        +                          }
        +                        },
        +                        "required": [
        +                          "amount_local",
        +                          "currency",
        +                          "redeemable_until"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "pricing_url": {
        +                    "default": "https://civilquants.com/pricing",
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "available_tiers"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tos_url": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "upgrade_hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "warranty_disclaimer": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          }
        +        },
        +        "required": [
        +          "request_id",
        +          "issued_at",
        +          "tier"
        +        ],
        +        "type": "object"
        +      },
        +      "data": {
        +        "default": null,
        +        "title": "Data"
        +      },
        +      "error": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        +            "properties": {
        +              "code": {
        +                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        +                "enum": [
        +                  "RATE_LIMIT_EXCEEDED",
        +                  "TIER_INSUFFICIENT",
        +                  "INVALID_INPUT",
        +                  "SCHEMA_VERSION_MISMATCH",
        +                  "SCHEMA_INVARIANT_VIOLATION",
        +                  "UPSTREAM_TIMEOUT",
        +                  "BACKEND_FAILURE",
        +                  "IP_BLOCKED",
        +                  "RESOURCE_NOT_FOUND",
        +                  "RENDER_FAILURE",
        +                  "OCR_LOW_CONFIDENCE",
        +                  "MANUAL_REVIEW_REQUIRED",
        +                  "ACCEPTANCE_REQUIRED",
        +                  "INVALID_TOKEN"
        +                ],
        +                "type": "string"
        +              },
        +              "details": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "message": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "recoverable": {
        +                "type": "boolean"
        +              },
        +              "retry_after_seconds": {
        +                "anyOf": [
        +                  {
        +                    "minimum": 0,
        +                    "type": "integer"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              }
        +            },
        +            "required": [
        +              "code",
        +              "message",
        +              "recoverable"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      }
        +    },
        +    "required": [
        +      "_meta"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedcompute_gravity_wall2 fields changed
      • changedInput schema / properties / output_mode / enum
        Previous value: -[
        -  "summary",
        -  "boq",
        -  "boq_with_backup",
        -  "full_json"
        -]New value: +[
        +  "summary",
        +  "material_schedule",
        +  "boq",
        +  "boq_with_backup",
        +  "full_json"
        +]
      • changedOutput schema / properties / result / anyOf
        Previous value: -[
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "_meta": {
        -        "additionalProperties": false,
        -        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        -        "properties": {
        -          "deliverables": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        -                "properties": {
        -                  "docx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "dxf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "expires_at": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  },
        -                  "pdf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "xlsx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "expires_at"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "document_id": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "issued_at": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "output_mode": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Surfaces what a trimmed ``output_mode`` withheld from ``data``.\n\nA trimmed mode (``summary`` / ``boq`` / ``boq_with_backup``) withholds\nalready-computed fields to keep the chat payload small. The withheld value\nreads to a client agent as \"capability missing\" (the box-culvert \"geometry\nbuilder isn't firing\" scare) rather than \"pared for size\": ``drawing`` and\n``audit_trail`` appear as ``null``, ``boq_rows`` as an empty list ``[]``\n(its type forbids ``null``) — both indistinguishable from a genuine absent\nresult. This names the withheld fields and the exact mode that brings each\nback, so the value is unambiguous. Absent on the default ``full_json`` mode\n— nothing is withheld, nothing to point at.",
        -                "properties": {
        -                  "mode": {
        -                    "enum": [
        -                      "summary",
        -                      "boq",
        -                      "boq_with_backup"
        -                    ],
        -                    "type": "string"
        -                  },
        -                  "omitted_fields": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "minItems": 1,
        -                    "type": "array"
        -                  },
        -                  "retrieve_with": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "mode",
        -                  "omitted_fields",
        -                  "retrieve_with"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "rate_limit_remaining": {
        -            "anyOf": [
        -              {
        -                "minimum": 0,
        -                "type": "integer"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "request_id": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "schema_version": {
        -            "const": "1.0.0",
        -            "default": "1.0.0",
        -            "type": "string"
        -          },
        -          "scope_boundary": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        -                "properties": {
        -                  "not_in_scope": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "produced": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "recommended_companions": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "type": "string"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "produced",
        -                  "not_in_scope"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tier": {
        -            "enum": [
        -              "free",
        -              "paid"
        -            ],
        -            "type": "string"
        -          },
        -          "tier_upgrade": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        -                "properties": {
        -                  "available_tiers": {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        -                      "properties": {
        -                        "billing": {
        -                          "enum": [
        -                            "one_off",
        -                            "monthly",
        -                            "annual"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "currency": {
        -                          "enum": [
        -                            "GBP",
        -                            "SGD",
        -                            "EUR",
        -                            "USD",
        -                            "CAD",
        -                            "AUD",
        -                            "NZD",
        -                            "MYR"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "display_name": {
        -                          "type": "string"
        -                        },
        -                        "price_local": {
        -                          "type": "number"
        -                        },
        -                        "tier_slug": {
        -                          "enum": [
        -                            "7_day_pass",
        -                            "solo",
        -                            "studio",
        -                            "practice"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "unlock_summary": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "tier_slug",
        -                        "display_name",
        -                        "price_local",
        -                        "currency",
        -                        "billing",
        -                        "unlock_summary"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "current_tier": {
        -                    "const": "free",
        -                    "default": "free",
        -                    "type": "string"
        -                  },
        -                  "pass_credit": {
        -                    "anyOf": [
        -                      {
        -                        "additionalProperties": false,
        -                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        -                        "properties": {
        -                          "amount_local": {
        -                            "type": "number"
        -                          },
        -                          "applies_to": {
        -                            "const": "solo_first_month",
        -                            "default": "solo_first_month",
        -                            "type": "string"
        -                          },
        -                          "currency": {
        -                            "type": "string"
        -                          },
        -                          "redeemable_until": {
        -                            "type": "string"
        -                          }
        -                        },
        -                        "required": [
        -                          "amount_local",
        -                          "currency",
        -                          "redeemable_until"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "pricing_url": {
        -                    "default": "https://civilquants.com/pricing",
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "available_tiers"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tos_url": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "upgrade_hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "warranty_disclaimer": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          }
        -        },
        -        "required": [
        -          "request_id",
        -          "issued_at",
        -          "tier"
        -        ],
        -        "type": "object"
        -      },
        -      "data": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Schema § 1.1 — the typed payload returned inside `MCPResponse[ComputeResult]`.\n\nFree-tier responses omit `drawings` (the downloadable CAD artefact\npointers — the paid differentiator); the bridge enforces this. The\n`audit_trail` and the inline `drawing` preview are present on BOTH tiers\n(V1 ALIGN / 60th-fire D + C). `text_summary` is bounded to 2000 chars —\nkeeps the LLM-facing summary token-cheap and forces longer narrative into\nBoQ row descriptions where it belongs. `warnings` is the non-fatal\ngeometry advisory list (both tiers).",
        -            "properties": {
        -              "assembly_slug": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "audit_trail": {
        -                "anyOf": [
        -                  {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.7 — paid-tier audit-trail entry.\n\nOne entry per BoQ row; `boq_row_index` ties to the row position in\n`ComputeResult.boq_rows`. `derivation` is the human-readable formula\nwalk-through; `formula` is the optional formal expression.",
        -                      "properties": {
        -                        "boq_row_index": {
        -                          "minimum": 0,
        -                          "type": "integer"
        -                        },
        -                        "derivation": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "formula": {
        -                          "anyOf": [
        -                            {
        -                              "type": "string"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ],
        -                          "default": null
        -                        },
        -                        "id": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "parameters_referenced": {
        -                          "items": {
        -                            "type": "string"
        -                          },
        -                          "type": "array"
        -                        }
        -                      },
        -                      "required": [
        -                        "id",
        -                        "boq_row_index",
        -                        "derivation"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "boq_rows": {
        -                "items": {
        -                  "additionalProperties": false,
        -                  "description": "Schema § 1.3 — a single bill row in the requested standard's format.\n\n`description` is the non-verbatim functional description per spec § 13.9 /\n§ 15 invariant — NEVER reproduces a standard's verbatim clause text.\n`rate` / `amount` ship null because rates are commodity data the customer\nowns; the engine's job is the measurement, not the pricing.",
        -                  "properties": {
        -                    "amount": {
        -                      "anyOf": [
        -                        {
        -                          "type": "number"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "attribution": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "audit_id": {
        -                      "anyOf": [
        -                        {
        -                          "type": "string"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "description": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "quantity": {
        -                      "minimum": 0,
        -                      "type": "number"
        -                    },
        -                    "rate": {
        -                      "anyOf": [
        -                        {
        -                          "type": "number"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "unit": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "work_section": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    }
        -                  },
        -                  "required": [
        -                    "work_section",
        -                    "description",
        -                    "quantity",
        -                    "unit",
        -                    "attribution"
        -                  ],
        -                  "type": "object"
        -                },
        -                "type": "array"
        -              },
        -              "drawing": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": false,
        -                    "description": "Schema § 1.6a — inline server-rendered SVG preview of the geometry.\n\nThe MCP mirror of the web ``/compute`` response's ``drawing`` field\n(``api.schemas.compute.DrawingRef``): the same on-screen dimensioned\ndrawing both tiers see in the workspace, surfaced on the MCP compute\nresponse so a chat client can render it inline (60th-fire item C). This\nis the on-screen preview — present on BOTH tiers per the free/paid\nboundary; the downloadable CAD artefacts (DXF / dimensioned PDF) remain\nthe paid differentiator via the export tools.\n\nDefined here rather than importing ``DrawingRef`` because the web\n``schemas`` package imports back into this module (``schemas.render``),\nso reusing it would create an import cycle — the MCP wire contract keeps\nits own copy, the same pattern as ``BoQRow`` / ``DrawingReference``.",
        -                    "properties": {
        -                      "entity_count": {
        -                        "minimum": 0,
        -                        "type": "integer"
        -                      },
        -                      "svg_b64": {
        -                        "minLength": 1,
        -                        "type": "string"
        -                      },
        -                      "unit_of_drawing": {
        -                        "const": "m",
        -                        "default": "m",
        -                        "type": "string"
        -                      },
        -                      "viewbox_height": {
        -                        "exclusiveMinimum": 0,
        -                        "type": "number"
        -                      },
        -                      "viewbox_width": {
        -                        "exclusiveMinimum": 0,
        -                        "type": "number"
        -                      },
        -                      "viewbox_x": {
        -                        "type": "number"
        -                      },
        -                      "viewbox_y": {
        -                        "type": "number"
        -                      }
        -                    },
        -                    "required": [
        -                      "svg_b64",
        -                      "viewbox_x",
        -                      "viewbox_y",
        -                      "viewbox_width",
        -                      "viewbox_height",
        -                      "entity_count"
        -                    ],
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "drawings": {
        -                "anyOf": [
        -                  {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.6 — paid-tier drawing artefact pointer.\n\n`url` is an R2-signed URL; expiry is carried in `_meta.deliverables.expires_at`\non the envelope (not duplicated here). `layers` is DXF-only; PDF/SVG\ncallers omit it.",
        -                      "properties": {
        -                        "drawing_type": {
        -                          "enum": [
        -                            "section",
        -                            "plan",
        -                            "elevation",
        -                            "isometric",
        -                            "detail"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "format": {
        -                          "enum": [
        -                            "DXF",
        -                            "PDF",
        -                            "SVG"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "layers": {
        -                          "anyOf": [
        -                            {
        -                              "items": {
        -                                "type": "string"
        -                              },
        -                              "type": "array"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ],
        -                          "default": null
        -                        },
        -                        "scale": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "sheet_size": {
        -                          "enum": [
        -                            "A1",
        -                            "A2",
        -                            "A3",
        -                            "A4"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "url": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "drawing_type",
        -                        "format",
        -                        "url",
        -                        "sheet_size",
        -                        "scale"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "parameters_used": {
        -                "additionalProperties": false,
        -                "description": "Schema § 1.2 — the parameter snapshot the engine actually used.\n\nSplits user-supplied values from engine defaults so customers can see\nwhich numbers came from them and which the engine filled in. Every\ndefaulted parameter SHOULD have a corresponding entry in `assumptions`\n— the bridge layer enforces this when wrapping engine output.",
        -                "properties": {
        -                  "assumptions": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "engine_defaults": {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  "user_supplied": {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  }
        -                },
        -                "type": "object"
        -              },
        -              "standard": {
        -                "enum": [
        -                  "CESMM4",
        -                  "NRM2",
        -                  "SMM7",
        -                  "MMHW"
        -                ],
        -                "type": "string"
        -              },
        -              "text_summary": {
        -                "maxLength": 2000,
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "totals_summary": {
        -                "additionalProperties": false,
        -                "description": "Schema § 1.4 — totals_summary as a typed wrapper around the free-form dict.\n\nWire shape is a flat object (`{\"concrete_m3\": {...}, \"rebar_t\": {...}}`).\nWe model it as `RootModel`-equivalent via `model_config(extra=\"allow\")`\n+ a single `__root__`-style `entries` dict. Pydantic v2 recommends\n`RootModel` for free-form roots; using a wrapper class keeps the import\nsurface uniform with the rest of this module.",
        -                "properties": {
        -                  "entries": {
        -                    "additionalProperties": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.4 — single material/work-class total entry.",
        -                      "properties": {
        -                        "quantity": {
        -                          "minimum": 0,
        -                          "type": "number"
        -                        },
        -                        "unit": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "quantity",
        -                        "unit"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "object"
        -                  }
        -                },
        -                "type": "object"
        -              },
        -              "warnings": {
        -                "items": {
        -                  "additionalProperties": false,
        -                  "description": "Schema § 1.8 — a non-fatal geometry advisory (56th-fire T2).\n\nThe wire projection of the engine's `core.GeometryWarning`. Advisory only:\na warning NEVER changes a measured quantity — it flags geometry that is\nvalid but likely a mistake (e.g. a stale dependent-height default). Present\non BOTH tiers — a correctness/safety signal, not a paid feature.",
        -                  "properties": {
        -                    "affected_params": {
        -                      "items": {
        -                        "type": "string"
        -                      },
        -                      "type": "array"
        -                    },
        -                    "code": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "detail": {
        -                      "additionalProperties": {
        -                        "type": "number"
        -                      },
        -                      "type": "object"
        -                    },
        -                    "message": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "severity": {
        -                      "enum": [
        -                        "info",
        -                        "advisory",
        -                        "caution"
        -                      ],
        -                      "type": "string"
        -                    }
        -                  },
        -                  "required": [
        -                    "code",
        -                    "severity",
        -                    "message"
        -                  ],
        -                  "type": "object"
        -                },
        -                "type": "array"
        -              }
        -            },
        -            "required": [
        -              "assembly_slug",
        -              "standard",
        -              "parameters_used",
        -              "boq_rows",
        -              "totals_summary",
        -              "text_summary"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      },
        -      "error": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        -            "properties": {
        -              "code": {
        -                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        -                "enum": [
        -                  "RATE_LIMIT_EXCEEDED",
        -                  "TIER_INSUFFICIENT",
        -                  "INVALID_INPUT",
        -                  "SCHEMA_VERSION_MISMATCH",
        -                  "SCHEMA_INVARIANT_VIOLATION",
        -                  "UPSTREAM_TIMEOUT",
        -                  "BACKEND_FAILURE",
        -                  "IP_BLOCKED",
        -                  "RESOURCE_NOT_FOUND",
        -                  "RENDER_FAILURE",
        -                  "OCR_LOW_CONFIDENCE",
        -                  "MANUAL_REVIEW_REQUIRED",
        -                  "ACCEPTANCE_REQUIRED",
        -                  "INVALID_TOKEN"
        -                ],
        -                "type": "string"
        -              },
        -              "details": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "message": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "recoverable": {
        -                "type": "boolean"
        -              },
        -              "retry_after_seconds": {
        -                "anyOf": [
        -                  {
        -                    "minimum": 0,
        -                    "type": "integer"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              }
        -            },
        -            "required": [
        -              "code",
        -              "message",
        -              "recoverable"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      }
        -    },
        -    "required": [
        -      "_meta"
        -    ],
        -    "type": "object"
        -  },
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "_meta": {
        -        "additionalProperties": false,
        -        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        -        "properties": {
        -          "deliverables": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        -                "properties": {
        -                  "docx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "dxf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "expires_at": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  },
        -                  "pdf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "xlsx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "expires_at"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "document_id": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "issued_at": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "output_mode": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Surfaces what a trimmed ``output_mode`` withheld from ``data``.\n\nA trimmed mode (``summary`` / ``boq`` / ``boq_with_backup``) withholds\nalready-computed fields to keep the chat payload small. The withheld value\nreads to a client agent as \"capability missing\" (the box-culvert \"geometry\nbuilder isn't firing\" scare) rather than \"pared for size\": ``drawing`` and\n``audit_trail`` appear as ``null``, ``boq_rows`` as an empty list ``[]``\n(its type forbids ``null``) — both indistinguishable from a genuine absent\nresult. This names the withheld fields and the exact mode that brings each\nback, so the value is unambiguous. Absent on the default ``full_json`` mode\n— nothing is withheld, nothing to point at.",
        -                "properties": {
        -                  "mode": {
        -                    "enum": [
        -                      "summary",
        -                      "boq",
        -                      "boq_with_backup"
        -                    ],
        -                    "type": "string"
        -                  },
        -                  "omitted_fields": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "minItems": 1,
        -                    "type": "array"
        -                  },
        -                  "retrieve_with": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "mode",
        -                  "omitted_fields",
        -                  "retrieve_with"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "rate_limit_remaining": {
        -            "anyOf": [
        -              {
        -                "minimum": 0,
        -                "type": "integer"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "request_id": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "schema_version": {
        -            "const": "1.0.0",
        -            "default": "1.0.0",
        -            "type": "string"
        -          },
        -          "scope_boundary": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        -                "properties": {
        -                  "not_in_scope": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "produced": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "recommended_companions": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "type": "string"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "produced",
        -                  "not_in_scope"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tier": {
        -            "enum": [
        -              "free",
        -              "paid"
        -            ],
        -            "type": "string"
        -          },
        -          "tier_upgrade": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        -                "properties": {
        -                  "available_tiers": {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        -                      "properties": {
        -                        "billing": {
        -                          "enum": [
        -                            "one_off",
        -                            "monthly",
        -                            "annual"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "currency": {
        -                          "enum": [
        -                            "GBP",
        -                            "SGD",
        -                            "EUR",
        -                            "USD",
        -                            "CAD",
        -                            "AUD",
        -                            "NZD",
        -                            "MYR"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "display_name": {
        -                          "type": "string"
        -                        },
        -                        "price_local": {
        -                          "type": "number"
        -                        },
        -                        "tier_slug": {
        -                          "enum": [
        -                            "7_day_pass",
        -                            "solo",
        -                            "studio",
        -                            "practice"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "unlock_summary": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "tier_slug",
        -                        "display_name",
        -                        "price_local",
        -                        "currency",
        -                        "billing",
        -                        "unlock_summary"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "current_tier": {
        -                    "const": "free",
        -                    "default": "free",
        -                    "type": "string"
        -                  },
        -                  "pass_credit": {
        -                    "anyOf": [
        -                      {
        -                        "additionalProperties": false,
        -                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        -                        "properties": {
        -                          "amount_local": {
        -                            "type": "number"
        -                          },
        -                          "applies_to": {
        -                            "const": "solo_first_month",
        -                            "default": "solo_first_month",
        -                            "type": "string"
        -                          },
        -                          "currency": {
        -                            "type": "string"
        -                          },
        -                          "redeemable_until": {
        -                            "type": "string"
        -                          }
        -                        },
        -                        "required": [
        -                          "amount_local",
        -                          "currency",
        -                          "redeemable_until"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "pricing_url": {
        -                    "default": "https://civilquants.com/pricing",
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "available_tiers"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tos_url": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "upgrade_hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "warranty_disclaimer": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          }
        -        },
        -        "required": [
        -          "request_id",
        -          "issued_at",
        -          "tier"
        -        ],
        -        "type": "object"
        -      },
        -      "data": {
        -        "default": null,
        -        "title": "Data"
        -      },
        -      "error": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        -            "properties": {
        -              "code": {
        -                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        -                "enum": [
        -                  "RATE_LIMIT_EXCEEDED",
        -                  "TIER_INSUFFICIENT",
        -                  "INVALID_INPUT",
        -                  "SCHEMA_VERSION_MISMATCH",
        -                  "SCHEMA_INVARIANT_VIOLATION",
        -                  "UPSTREAM_TIMEOUT",
        -                  "BACKEND_FAILURE",
        -                  "IP_BLOCKED",
        -                  "RESOURCE_NOT_FOUND",
        -                  "RENDER_FAILURE",
        -                  "OCR_LOW_CONFIDENCE",
        -                  "MANUAL_REVIEW_REQUIRED",
        -                  "ACCEPTANCE_REQUIRED",
        -                  "INVALID_TOKEN"
        -                ],
        -                "type": "string"
        -              },
        -              "details": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "message": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "recoverable": {
        -                "type": "boolean"
        -              },
        -              "retry_after_seconds": {
        -                "anyOf": [
        -                  {
        -                    "minimum": 0,
        -                    "type": "integer"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              }
        -            },
        -            "required": [
        -              "code",
        -              "message",
        -              "recoverable"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      }
        -    },
        -    "required": [
        -      "_meta"
        -    ],
        -    "type": "object"
        -  }
        -]New value: +[
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "_meta": {
        +        "additionalProperties": false,
        +        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        +        "properties": {
        +          "deliverables": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        +                "properties": {
        +                  "docx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "dxf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "expires_at": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  },
        +                  "pdf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "xlsx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "expires_at"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "document_id": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "issued_at": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "output_mode": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Surfaces what a trimmed ``output_mode`` withheld from ``data``.\n\nA trimmed mode (``summary`` / ``material_schedule`` / ``boq`` /\n``boq_with_backup``) withholds\nalready-computed fields to keep the chat payload small. The withheld value\nreads to a client agent as \"capability missing\" (the box-culvert \"geometry\nbuilder isn't firing\" scare) rather than \"pared for size\": ``drawing`` and\n``audit_trail`` appear as ``null``, ``boq_rows`` as an empty list ``[]``\n(its type forbids ``null``) — both indistinguishable from a genuine absent\nresult. This names the withheld fields and the exact mode that brings each\nback, so the value is unambiguous. Absent on the default ``full_json`` mode\n— nothing is withheld, nothing to point at.",
        +                "properties": {
        +                  "mode": {
        +                    "enum": [
        +                      "summary",
        +                      "material_schedule",
        +                      "boq",
        +                      "boq_with_backup"
        +                    ],
        +                    "type": "string"
        +                  },
        +                  "omitted_fields": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "minItems": 1,
        +                    "type": "array"
        +                  },
        +                  "retrieve_with": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "mode",
        +                  "omitted_fields",
        +                  "retrieve_with"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "rate_limit_remaining": {
        +            "anyOf": [
        +              {
        +                "minimum": 0,
        +                "type": "integer"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "request_id": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "schema_version": {
        +            "const": "1.0.0",
        +            "default": "1.0.0",
        +            "type": "string"
        +          },
        +          "scope_boundary": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        +                "properties": {
        +                  "not_in_scope": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "produced": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "recommended_companions": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "type": "string"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "produced",
        +                  "not_in_scope"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tier": {
        +            "enum": [
        +              "free",
        +              "paid"
        +            ],
        +            "type": "string"
        +          },
        +          "tier_upgrade": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        +                "properties": {
        +                  "available_tiers": {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        +                      "properties": {
        +                        "billing": {
        +                          "enum": [
        +                            "one_off",
        +                            "monthly",
        +                            "annual"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "currency": {
        +                          "enum": [
        +                            "GBP",
        +                            "SGD",
        +                            "EUR",
        +                            "USD",
        +                            "CAD",
        +                            "AUD",
        +                            "NZD",
        +                            "MYR"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "display_name": {
        +                          "type": "string"
        +                        },
        +                        "price_local": {
        +                          "type": "number"
        +                        },
        +                        "tier_slug": {
        +                          "enum": [
        +                            "7_day_pass",
        +                            "solo",
        +                            "studio",
        +                            "practice"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "unlock_summary": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "tier_slug",
        +                        "display_name",
        +                        "price_local",
        +                        "currency",
        +                        "billing",
        +                        "unlock_summary"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "current_tier": {
        +                    "const": "free",
        +                    "default": "free",
        +                    "type": "string"
        +                  },
        +                  "pass_credit": {
        +                    "anyOf": [
        +                      {
        +                        "additionalProperties": false,
        +                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        +                        "properties": {
        +                          "amount_local": {
        +                            "type": "number"
        +                          },
        +                          "applies_to": {
        +                            "const": "solo_first_month",
        +                            "default": "solo_first_month",
        +                            "type": "string"
        +                          },
        +                          "currency": {
        +                            "type": "string"
        +                          },
        +                          "redeemable_until": {
        +                            "type": "string"
        +                          }
        +                        },
        +                        "required": [
        +                          "amount_local",
        +                          "currency",
        +                          "redeemable_until"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "pricing_url": {
        +                    "default": "https://civilquants.com/pricing",
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "available_tiers"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tos_url": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "upgrade_hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "warranty_disclaimer": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          }
        +        },
        +        "required": [
        +          "request_id",
        +          "issued_at",
        +          "tier"
        +        ],
        +        "type": "object"
        +      },
        +      "data": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Schema § 1.1 — the typed payload returned inside `MCPResponse[ComputeResult]`.\n\nFree-tier responses omit `drawings` (the downloadable CAD artefact\npointers — the paid differentiator); the bridge enforces this. The\n`audit_trail` and the inline `drawing` preview are present on BOTH tiers\n(V1 ALIGN / 60th-fire D + C). `text_summary` is bounded to 2000 chars —\nkeeps the LLM-facing summary token-cheap and forces longer narrative into\nBoQ row descriptions where it belongs. `warnings` is the non-fatal\ngeometry advisory list (both tiers).",
        +            "properties": {
        +              "assembly_slug": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "audit_trail": {
        +                "anyOf": [
        +                  {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.7 — paid-tier audit-trail entry.\n\nOne entry per BoQ row; `boq_row_index` ties to the row position in\n`ComputeResult.boq_rows`. `derivation` is the human-readable formula\nwalk-through; `formula` is the optional formal expression.",
        +                      "properties": {
        +                        "boq_row_index": {
        +                          "minimum": 0,
        +                          "type": "integer"
        +                        },
        +                        "derivation": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "formula": {
        +                          "anyOf": [
        +                            {
        +                              "type": "string"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ],
        +                          "default": null
        +                        },
        +                        "id": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "parameters_referenced": {
        +                          "items": {
        +                            "type": "string"
        +                          },
        +                          "type": "array"
        +                        }
        +                      },
        +                      "required": [
        +                        "id",
        +                        "boq_row_index",
        +                        "derivation"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "boq_rows": {
        +                "items": {
        +                  "additionalProperties": false,
        +                  "description": "Schema § 1.3 — a single bill row in the requested standard's format.\n\n`description` is the non-verbatim functional description per spec § 13.9 /\n§ 15 invariant — NEVER reproduces a standard's verbatim clause text.\n`rate` / `amount` ship null because rates are commodity data the customer\nowns; the engine's job is the measurement, not the pricing.",
        +                  "properties": {
        +                    "amount": {
        +                      "anyOf": [
        +                        {
        +                          "type": "number"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "attribution": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "audit_id": {
        +                      "anyOf": [
        +                        {
        +                          "type": "string"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "description": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "quantity": {
        +                      "minimum": 0,
        +                      "type": "number"
        +                    },
        +                    "rate": {
        +                      "anyOf": [
        +                        {
        +                          "type": "number"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "unit": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "work_section": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    }
        +                  },
        +                  "required": [
        +                    "work_section",
        +                    "description",
        +                    "quantity",
        +                    "unit",
        +                    "attribution"
        +                  ],
        +                  "type": "object"
        +                },
        +                "type": "array"
        +              },
        +              "drawing": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": false,
        +                    "description": "Schema § 1.6a — inline server-rendered SVG preview of the geometry.\n\nThe MCP mirror of the web ``/compute`` response's ``drawing`` field\n(``api.schemas.compute.DrawingRef``): the same on-screen dimensioned\ndrawing both tiers see in the workspace, surfaced on the MCP compute\nresponse so a chat client can render it inline (60th-fire item C). This\nis the on-screen preview — present on BOTH tiers per the free/paid\nboundary; the downloadable CAD artefacts (DXF / dimensioned PDF) remain\nthe paid differentiator via the export tools.\n\nDefined here rather than importing ``DrawingRef`` because the web\n``schemas`` package imports back into this module (``schemas.render``),\nso reusing it would create an import cycle — the MCP wire contract keeps\nits own copy, the same pattern as ``BoQRow`` / ``DrawingReference``.",
        +                    "properties": {
        +                      "entity_count": {
        +                        "minimum": 0,
        +                        "type": "integer"
        +                      },
        +                      "svg_b64": {
        +                        "minLength": 1,
        +                        "type": "string"
        +                      },
        +                      "unit_of_drawing": {
        +                        "const": "m",
        +                        "default": "m",
        +                        "type": "string"
        +                      },
        +                      "viewbox_height": {
        +                        "exclusiveMinimum": 0,
        +                        "type": "number"
        +                      },
        +                      "viewbox_width": {
        +                        "exclusiveMinimum": 0,
        +                        "type": "number"
        +                      },
        +                      "viewbox_x": {
        +                        "type": "number"
        +                      },
        +                      "viewbox_y": {
        +                        "type": "number"
        +                      }
        +                    },
        +                    "required": [
        +                      "svg_b64",
        +                      "viewbox_x",
        +                      "viewbox_y",
        +                      "viewbox_width",
        +                      "viewbox_height",
        +                      "entity_count"
        +                    ],
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "drawings": {
        +                "anyOf": [
        +                  {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.6 — paid-tier drawing artefact pointer.\n\n`url` is an R2-signed URL; expiry is carried in `_meta.deliverables.expires_at`\non the envelope (not duplicated here). `layers` is DXF-only; PDF/SVG\ncallers omit it.",
        +                      "properties": {
        +                        "drawing_type": {
        +                          "enum": [
        +                            "section",
        +                            "plan",
        +                            "elevation",
        +                            "isometric",
        +                            "detail"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "format": {
        +                          "enum": [
        +                            "DXF",
        +                            "PDF",
        +                            "SVG"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "layers": {
        +                          "anyOf": [
        +                            {
        +                              "items": {
        +                                "type": "string"
        +                              },
        +                              "type": "array"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ],
        +                          "default": null
        +                        },
        +                        "scale": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "sheet_size": {
        +                          "enum": [
        +                            "A1",
        +                            "A2",
        +                            "A3",
        +                            "A4"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "url": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "drawing_type",
        +                        "format",
        +                        "url",
        +                        "sheet_size",
        +                        "scale"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "parameters_used": {
        +                "additionalProperties": false,
        +                "description": "Schema § 1.2 — the parameter snapshot the engine actually used.\n\nSplits user-supplied values from engine defaults so customers can see\nwhich numbers came from them and which the engine filled in. Every\ndefaulted parameter SHOULD have a corresponding entry in `assumptions`\n— the bridge layer enforces this when wrapping engine output.",
        +                "properties": {
        +                  "assumptions": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "engine_defaults": {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  "user_supplied": {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  }
        +                },
        +                "type": "object"
        +              },
        +              "standard": {
        +                "enum": [
        +                  "CESMM4",
        +                  "NRM2",
        +                  "SMM7",
        +                  "MMHW"
        +                ],
        +                "type": "string"
        +              },
        +              "text_summary": {
        +                "maxLength": 2000,
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "totals_summary": {
        +                "additionalProperties": false,
        +                "description": "Schema § 1.4 — totals_summary as a typed wrapper around the free-form dict.\n\nWire shape is a flat object (`{\"concrete_m3\": {...}, \"rebar_t\": {...}}`).\nWe model it as `RootModel`-equivalent via `model_config(extra=\"allow\")`\n+ a single `__root__`-style `entries` dict. Pydantic v2 recommends\n`RootModel` for free-form roots; using a wrapper class keeps the import\nsurface uniform with the rest of this module.",
        +                "properties": {
        +                  "entries": {
        +                    "additionalProperties": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.4 — single material/work-class total entry.",
        +                      "properties": {
        +                        "quantity": {
        +                          "minimum": 0,
        +                          "type": "number"
        +                        },
        +                        "unit": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "quantity",
        +                        "unit"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "object"
        +                  }
        +                },
        +                "type": "object"
        +              },
        +              "warnings": {
        +                "items": {
        +                  "additionalProperties": false,
        +                  "description": "Schema § 1.8 — a non-fatal geometry advisory (56th-fire T2).\n\nThe wire projection of the engine's `core.GeometryWarning`. Advisory only:\na warning NEVER changes a measured quantity — it flags geometry that is\nvalid but likely a mistake (e.g. a stale dependent-height default). Present\non BOTH tiers — a correctness/safety signal, not a paid feature.",
        +                  "properties": {
        +                    "affected_params": {
        +                      "items": {
        +                        "type": "string"
        +                      },
        +                      "type": "array"
        +                    },
        +                    "code": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "detail": {
        +                      "additionalProperties": {
        +                        "type": "number"
        +                      },
        +                      "type": "object"
        +                    },
        +                    "message": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "severity": {
        +                      "enum": [
        +                        "info",
        +                        "advisory",
        +                        "caution"
        +                      ],
        +                      "type": "string"
        +                    }
        +                  },
        +                  "required": [
        +                    "code",
        +                    "severity",
        +                    "message"
        +                  ],
        +                  "type": "object"
        +                },
        +                "type": "array"
        +              }
        +            },
        +            "required": [
        +              "assembly_slug",
        +              "standard",
        +              "parameters_used",
        +              "boq_rows",
        +              "totals_summary",
        +              "text_summary"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      },
        +      "error": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        +            "properties": {
        +              "code": {
        +                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        +                "enum": [
        +                  "RATE_LIMIT_EXCEEDED",
        +                  "TIER_INSUFFICIENT",
        +                  "INVALID_INPUT",
        +                  "SCHEMA_VERSION_MISMATCH",
        +                  "SCHEMA_INVARIANT_VIOLATION",
        +                  "UPSTREAM_TIMEOUT",
        +                  "BACKEND_FAILURE",
        +                  "IP_BLOCKED",
        +                  "RESOURCE_NOT_FOUND",
        +                  "RENDER_FAILURE",
        +                  "OCR_LOW_CONFIDENCE",
        +                  "MANUAL_REVIEW_REQUIRED",
        +                  "ACCEPTANCE_REQUIRED",
        +                  "INVALID_TOKEN"
        +                ],
        +                "type": "string"
        +              },
        +              "details": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "message": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "recoverable": {
        +                "type": "boolean"
        +              },
        +              "retry_after_seconds": {
        +                "anyOf": [
        +                  {
        +                    "minimum": 0,
        +                    "type": "integer"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              }
        +            },
        +            "required": [
        +              "code",
        +              "message",
        +              "recoverable"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      }
        +    },
        +    "required": [
        +      "_meta"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "_meta": {
        +        "additionalProperties": false,
        +        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        +        "properties": {
        +          "deliverables": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        +                "properties": {
        +                  "docx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "dxf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "expires_at": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  },
        +                  "pdf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "xlsx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "expires_at"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "document_id": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "issued_at": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "output_mode": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Surfaces what a trimmed ``output_mode`` withheld from ``data``.\n\nA trimmed mode (``summary`` / ``material_schedule`` / ``boq`` /\n``boq_with_backup``) withholds\nalready-computed fields to keep the chat payload small. The withheld value\nreads to a client agent as \"capability missing\" (the box-culvert \"geometry\nbuilder isn't firing\" scare) rather than \"pared for size\": ``drawing`` and\n``audit_trail`` appear as ``null``, ``boq_rows`` as an empty list ``[]``\n(its type forbids ``null``) — both indistinguishable from a genuine absent\nresult. This names the withheld fields and the exact mode that brings each\nback, so the value is unambiguous. Absent on the default ``full_json`` mode\n— nothing is withheld, nothing to point at.",
        +                "properties": {
        +                  "mode": {
        +                    "enum": [
        +                      "summary",
        +                      "material_schedule",
        +                      "boq",
        +                      "boq_with_backup"
        +                    ],
        +                    "type": "string"
        +                  },
        +                  "omitted_fields": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "minItems": 1,
        +                    "type": "array"
        +                  },
        +                  "retrieve_with": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "mode",
        +                  "omitted_fields",
        +                  "retrieve_with"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "rate_limit_remaining": {
        +            "anyOf": [
        +              {
        +                "minimum": 0,
        +                "type": "integer"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "request_id": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "schema_version": {
        +            "const": "1.0.0",
        +            "default": "1.0.0",
        +            "type": "string"
        +          },
        +          "scope_boundary": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        +                "properties": {
        +                  "not_in_scope": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "produced": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "recommended_companions": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "type": "string"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "produced",
        +                  "not_in_scope"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tier": {
        +            "enum": [
        +              "free",
        +              "paid"
        +            ],
        +            "type": "string"
        +          },
        +          "tier_upgrade": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        +                "properties": {
        +                  "available_tiers": {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        +                      "properties": {
        +                        "billing": {
        +                          "enum": [
        +                            "one_off",
        +                            "monthly",
        +                            "annual"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "currency": {
        +                          "enum": [
        +                            "GBP",
        +                            "SGD",
        +                            "EUR",
        +                            "USD",
        +                            "CAD",
        +                            "AUD",
        +                            "NZD",
        +                            "MYR"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "display_name": {
        +                          "type": "string"
        +                        },
        +                        "price_local": {
        +                          "type": "number"
        +                        },
        +                        "tier_slug": {
        +                          "enum": [
        +                            "7_day_pass",
        +                            "solo",
        +                            "studio",
        +                            "practice"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "unlock_summary": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "tier_slug",
        +                        "display_name",
        +                        "price_local",
        +                        "currency",
        +                        "billing",
        +                        "unlock_summary"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "current_tier": {
        +                    "const": "free",
        +                    "default": "free",
        +                    "type": "string"
        +                  },
        +                  "pass_credit": {
        +                    "anyOf": [
        +                      {
        +                        "additionalProperties": false,
        +                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        +                        "properties": {
        +                          "amount_local": {
        +                            "type": "number"
        +                          },
        +                          "applies_to": {
        +                            "const": "solo_first_month",
        +                            "default": "solo_first_month",
        +                            "type": "string"
        +                          },
        +                          "currency": {
        +                            "type": "string"
        +                          },
        +                          "redeemable_until": {
        +                            "type": "string"
        +                          }
        +                        },
        +                        "required": [
        +                          "amount_local",
        +                          "currency",
        +                          "redeemable_until"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "pricing_url": {
        +                    "default": "https://civilquants.com/pricing",
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "available_tiers"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tos_url": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "upgrade_hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "warranty_disclaimer": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          }
        +        },
        +        "required": [
        +          "request_id",
        +          "issued_at",
        +          "tier"
        +        ],
        +        "type": "object"
        +      },
        +      "data": {
        +        "default": null,
        +        "title": "Data"
        +      },
        +      "error": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        +            "properties": {
        +              "code": {
        +                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        +                "enum": [
        +                  "RATE_LIMIT_EXCEEDED",
        +                  "TIER_INSUFFICIENT",
        +                  "INVALID_INPUT",
        +                  "SCHEMA_VERSION_MISMATCH",
        +                  "SCHEMA_INVARIANT_VIOLATION",
        +                  "UPSTREAM_TIMEOUT",
        +                  "BACKEND_FAILURE",
        +                  "IP_BLOCKED",
        +                  "RESOURCE_NOT_FOUND",
        +                  "RENDER_FAILURE",
        +                  "OCR_LOW_CONFIDENCE",
        +                  "MANUAL_REVIEW_REQUIRED",
        +                  "ACCEPTANCE_REQUIRED",
        +                  "INVALID_TOKEN"
        +                ],
        +                "type": "string"
        +              },
        +              "details": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "message": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "recoverable": {
        +                "type": "boolean"
        +              },
        +              "retry_after_seconds": {
        +                "anyOf": [
        +                  {
        +                    "minimum": 0,
        +                    "type": "integer"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              }
        +            },
        +            "required": [
        +              "code",
        +              "message",
        +              "recoverable"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      }
        +    },
        +    "required": [
        +      "_meta"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedcompute_gully2 fields changed
      • changedInput schema / properties / output_mode / enum
        Previous value: -[
        -  "summary",
        -  "boq",
        -  "boq_with_backup",
        -  "full_json"
        -]New value: +[
        +  "summary",
        +  "material_schedule",
        +  "boq",
        +  "boq_with_backup",
        +  "full_json"
        +]
      • changedOutput schema / properties / result / anyOf
        Previous value: -[
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "_meta": {
        -        "additionalProperties": false,
        -        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        -        "properties": {
        -          "deliverables": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        -                "properties": {
        -                  "docx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "dxf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "expires_at": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  },
        -                  "pdf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "xlsx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "expires_at"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "document_id": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "issued_at": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "output_mode": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Surfaces what a trimmed ``output_mode`` withheld from ``data``.\n\nA trimmed mode (``summary`` / ``boq`` / ``boq_with_backup``) withholds\nalready-computed fields to keep the chat payload small. The withheld value\nreads to a client agent as \"capability missing\" (the box-culvert \"geometry\nbuilder isn't firing\" scare) rather than \"pared for size\": ``drawing`` and\n``audit_trail`` appear as ``null``, ``boq_rows`` as an empty list ``[]``\n(its type forbids ``null``) — both indistinguishable from a genuine absent\nresult. This names the withheld fields and the exact mode that brings each\nback, so the value is unambiguous. Absent on the default ``full_json`` mode\n— nothing is withheld, nothing to point at.",
        -                "properties": {
        -                  "mode": {
        -                    "enum": [
        -                      "summary",
        -                      "boq",
        -                      "boq_with_backup"
        -                    ],
        -                    "type": "string"
        -                  },
        -                  "omitted_fields": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "minItems": 1,
        -                    "type": "array"
        -                  },
        -                  "retrieve_with": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "mode",
        -                  "omitted_fields",
        -                  "retrieve_with"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "rate_limit_remaining": {
        -            "anyOf": [
        -              {
        -                "minimum": 0,
        -                "type": "integer"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "request_id": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "schema_version": {
        -            "const": "1.0.0",
        -            "default": "1.0.0",
        -            "type": "string"
        -          },
        -          "scope_boundary": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        -                "properties": {
        -                  "not_in_scope": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "produced": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "recommended_companions": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "type": "string"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "produced",
        -                  "not_in_scope"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tier": {
        -            "enum": [
        -              "free",
        -              "paid"
        -            ],
        -            "type": "string"
        -          },
        -          "tier_upgrade": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        -                "properties": {
        -                  "available_tiers": {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        -                      "properties": {
        -                        "billing": {
        -                          "enum": [
        -                            "one_off",
        -                            "monthly",
        -                            "annual"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "currency": {
        -                          "enum": [
        -                            "GBP",
        -                            "SGD",
        -                            "EUR",
        -                            "USD",
        -                            "CAD",
        -                            "AUD",
        -                            "NZD",
        -                            "MYR"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "display_name": {
        -                          "type": "string"
        -                        },
        -                        "price_local": {
        -                          "type": "number"
        -                        },
        -                        "tier_slug": {
        -                          "enum": [
        -                            "7_day_pass",
        -                            "solo",
        -                            "studio",
        -                            "practice"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "unlock_summary": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "tier_slug",
        -                        "display_name",
        -                        "price_local",
        -                        "currency",
        -                        "billing",
        -                        "unlock_summary"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "current_tier": {
        -                    "const": "free",
        -                    "default": "free",
        -                    "type": "string"
        -                  },
        -                  "pass_credit": {
        -                    "anyOf": [
        -                      {
        -                        "additionalProperties": false,
        -                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        -                        "properties": {
        -                          "amount_local": {
        -                            "type": "number"
        -                          },
        -                          "applies_to": {
        -                            "const": "solo_first_month",
        -                            "default": "solo_first_month",
        -                            "type": "string"
        -                          },
        -                          "currency": {
        -                            "type": "string"
        -                          },
        -                          "redeemable_until": {
        -                            "type": "string"
        -                          }
        -                        },
        -                        "required": [
        -                          "amount_local",
        -                          "currency",
        -                          "redeemable_until"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "pricing_url": {
        -                    "default": "https://civilquants.com/pricing",
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "available_tiers"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tos_url": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "upgrade_hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "warranty_disclaimer": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          }
        -        },
        -        "required": [
        -          "request_id",
        -          "issued_at",
        -          "tier"
        -        ],
        -        "type": "object"
        -      },
        -      "data": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Schema § 1.1 — the typed payload returned inside `MCPResponse[ComputeResult]`.\n\nFree-tier responses omit `drawings` (the downloadable CAD artefact\npointers — the paid differentiator); the bridge enforces this. The\n`audit_trail` and the inline `drawing` preview are present on BOTH tiers\n(V1 ALIGN / 60th-fire D + C). `text_summary` is bounded to 2000 chars —\nkeeps the LLM-facing summary token-cheap and forces longer narrative into\nBoQ row descriptions where it belongs. `warnings` is the non-fatal\ngeometry advisory list (both tiers).",
        -            "properties": {
        -              "assembly_slug": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "audit_trail": {
        -                "anyOf": [
        -                  {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.7 — paid-tier audit-trail entry.\n\nOne entry per BoQ row; `boq_row_index` ties to the row position in\n`ComputeResult.boq_rows`. `derivation` is the human-readable formula\nwalk-through; `formula` is the optional formal expression.",
        -                      "properties": {
        -                        "boq_row_index": {
        -                          "minimum": 0,
        -                          "type": "integer"
        -                        },
        -                        "derivation": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "formula": {
        -                          "anyOf": [
        -                            {
        -                              "type": "string"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ],
        -                          "default": null
        -                        },
        -                        "id": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "parameters_referenced": {
        -                          "items": {
        -                            "type": "string"
        -                          },
        -                          "type": "array"
        -                        }
        -                      },
        -                      "required": [
        -                        "id",
        -                        "boq_row_index",
        -                        "derivation"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "boq_rows": {
        -                "items": {
        -                  "additionalProperties": false,
        -                  "description": "Schema § 1.3 — a single bill row in the requested standard's format.\n\n`description` is the non-verbatim functional description per spec § 13.9 /\n§ 15 invariant — NEVER reproduces a standard's verbatim clause text.\n`rate` / `amount` ship null because rates are commodity data the customer\nowns; the engine's job is the measurement, not the pricing.",
        -                  "properties": {
        -                    "amount": {
        -                      "anyOf": [
        -                        {
        -                          "type": "number"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "attribution": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "audit_id": {
        -                      "anyOf": [
        -                        {
        -                          "type": "string"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "description": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "quantity": {
        -                      "minimum": 0,
        -                      "type": "number"
        -                    },
        -                    "rate": {
        -                      "anyOf": [
        -                        {
        -                          "type": "number"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "unit": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "work_section": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    }
        -                  },
        -                  "required": [
        -                    "work_section",
        -                    "description",
        -                    "quantity",
        -                    "unit",
        -                    "attribution"
        -                  ],
        -                  "type": "object"
        -                },
        -                "type": "array"
        -              },
        -              "drawing": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": false,
        -                    "description": "Schema § 1.6a — inline server-rendered SVG preview of the geometry.\n\nThe MCP mirror of the web ``/compute`` response's ``drawing`` field\n(``api.schemas.compute.DrawingRef``): the same on-screen dimensioned\ndrawing both tiers see in the workspace, surfaced on the MCP compute\nresponse so a chat client can render it inline (60th-fire item C). This\nis the on-screen preview — present on BOTH tiers per the free/paid\nboundary; the downloadable CAD artefacts (DXF / dimensioned PDF) remain\nthe paid differentiator via the export tools.\n\nDefined here rather than importing ``DrawingRef`` because the web\n``schemas`` package imports back into this module (``schemas.render``),\nso reusing it would create an import cycle — the MCP wire contract keeps\nits own copy, the same pattern as ``BoQRow`` / ``DrawingReference``.",
        -                    "properties": {
        -                      "entity_count": {
        -                        "minimum": 0,
        -                        "type": "integer"
        -                      },
        -                      "svg_b64": {
        -                        "minLength": 1,
        -                        "type": "string"
        -                      },
        -                      "unit_of_drawing": {
        -                        "const": "m",
        -                        "default": "m",
        -                        "type": "string"
        -                      },
        -                      "viewbox_height": {
        -                        "exclusiveMinimum": 0,
        -                        "type": "number"
        -                      },
        -                      "viewbox_width": {
        -                        "exclusiveMinimum": 0,
        -                        "type": "number"
        -                      },
        -                      "viewbox_x": {
        -                        "type": "number"
        -                      },
        -                      "viewbox_y": {
        -                        "type": "number"
        -                      }
        -                    },
        -                    "required": [
        -                      "svg_b64",
        -                      "viewbox_x",
        -                      "viewbox_y",
        -                      "viewbox_width",
        -                      "viewbox_height",
        -                      "entity_count"
        -                    ],
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "drawings": {
        -                "anyOf": [
        -                  {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.6 — paid-tier drawing artefact pointer.\n\n`url` is an R2-signed URL; expiry is carried in `_meta.deliverables.expires_at`\non the envelope (not duplicated here). `layers` is DXF-only; PDF/SVG\ncallers omit it.",
        -                      "properties": {
        -                        "drawing_type": {
        -                          "enum": [
        -                            "section",
        -                            "plan",
        -                            "elevation",
        -                            "isometric",
        -                            "detail"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "format": {
        -                          "enum": [
        -                            "DXF",
        -                            "PDF",
        -                            "SVG"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "layers": {
        -                          "anyOf": [
        -                            {
        -                              "items": {
        -                                "type": "string"
        -                              },
        -                              "type": "array"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ],
        -                          "default": null
        -                        },
        -                        "scale": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "sheet_size": {
        -                          "enum": [
        -                            "A1",
        -                            "A2",
        -                            "A3",
        -                            "A4"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "url": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "drawing_type",
        -                        "format",
        -                        "url",
        -                        "sheet_size",
        -                        "scale"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "parameters_used": {
        -                "additionalProperties": false,
        -                "description": "Schema § 1.2 — the parameter snapshot the engine actually used.\n\nSplits user-supplied values from engine defaults so customers can see\nwhich numbers came from them and which the engine filled in. Every\ndefaulted parameter SHOULD have a corresponding entry in `assumptions`\n— the bridge layer enforces this when wrapping engine output.",
        -                "properties": {
        -                  "assumptions": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "engine_defaults": {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  "user_supplied": {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  }
        -                },
        -                "type": "object"
        -              },
        -              "standard": {
        -                "enum": [
        -                  "CESMM4",
        -                  "NRM2",
        -                  "SMM7",
        -                  "MMHW"
        -                ],
        -                "type": "string"
        -              },
        -              "text_summary": {
        -                "maxLength": 2000,
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "totals_summary": {
        -                "additionalProperties": false,
        -                "description": "Schema § 1.4 — totals_summary as a typed wrapper around the free-form dict.\n\nWire shape is a flat object (`{\"concrete_m3\": {...}, \"rebar_t\": {...}}`).\nWe model it as `RootModel`-equivalent via `model_config(extra=\"allow\")`\n+ a single `__root__`-style `entries` dict. Pydantic v2 recommends\n`RootModel` for free-form roots; using a wrapper class keeps the import\nsurface uniform with the rest of this module.",
        -                "properties": {
        -                  "entries": {
        -                    "additionalProperties": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.4 — single material/work-class total entry.",
        -                      "properties": {
        -                        "quantity": {
        -                          "minimum": 0,
        -                          "type": "number"
        -                        },
        -                        "unit": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "quantity",
        -                        "unit"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "object"
        -                  }
        -                },
        -                "type": "object"
        -              },
        -              "warnings": {
        -                "items": {
        -                  "additionalProperties": false,
        -                  "description": "Schema § 1.8 — a non-fatal geometry advisory (56th-fire T2).\n\nThe wire projection of the engine's `core.GeometryWarning`. Advisory only:\na warning NEVER changes a measured quantity — it flags geometry that is\nvalid but likely a mistake (e.g. a stale dependent-height default). Present\non BOTH tiers — a correctness/safety signal, not a paid feature.",
        -                  "properties": {
        -                    "affected_params": {
        -                      "items": {
        -                        "type": "string"
        -                      },
        -                      "type": "array"
        -                    },
        -                    "code": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "detail": {
        -                      "additionalProperties": {
        -                        "type": "number"
        -                      },
        -                      "type": "object"
        -                    },
        -                    "message": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "severity": {
        -                      "enum": [
        -                        "info",
        -                        "advisory",
        -                        "caution"
        -                      ],
        -                      "type": "string"
        -                    }
        -                  },
        -                  "required": [
        -                    "code",
        -                    "severity",
        -                    "message"
        -                  ],
        -                  "type": "object"
        -                },
        -                "type": "array"
        -              }
        -            },
        -            "required": [
        -              "assembly_slug",
        -              "standard",
        -              "parameters_used",
        -              "boq_rows",
        -              "totals_summary",
        -              "text_summary"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      },
        -      "error": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        -            "properties": {
        -              "code": {
        -                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        -                "enum": [
        -                  "RATE_LIMIT_EXCEEDED",
        -                  "TIER_INSUFFICIENT",
        -                  "INVALID_INPUT",
        -                  "SCHEMA_VERSION_MISMATCH",
        -                  "SCHEMA_INVARIANT_VIOLATION",
        -                  "UPSTREAM_TIMEOUT",
        -                  "BACKEND_FAILURE",
        -                  "IP_BLOCKED",
        -                  "RESOURCE_NOT_FOUND",
        -                  "RENDER_FAILURE",
        -                  "OCR_LOW_CONFIDENCE",
        -                  "MANUAL_REVIEW_REQUIRED",
        -                  "ACCEPTANCE_REQUIRED",
        -                  "INVALID_TOKEN"
        -                ],
        -                "type": "string"
        -              },
        -              "details": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "message": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "recoverable": {
        -                "type": "boolean"
        -              },
        -              "retry_after_seconds": {
        -                "anyOf": [
        -                  {
        -                    "minimum": 0,
        -                    "type": "integer"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              }
        -            },
        -            "required": [
        -              "code",
        -              "message",
        -              "recoverable"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      }
        -    },
        -    "required": [
        -      "_meta"
        -    ],
        -    "type": "object"
        -  },
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "_meta": {
        -        "additionalProperties": false,
        -        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        -        "properties": {
        -          "deliverables": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        -                "properties": {
        -                  "docx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "dxf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "expires_at": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  },
        -                  "pdf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "xlsx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "expires_at"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "document_id": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "issued_at": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "output_mode": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Surfaces what a trimmed ``output_mode`` withheld from ``data``.\n\nA trimmed mode (``summary`` / ``boq`` / ``boq_with_backup``) withholds\nalready-computed fields to keep the chat payload small. The withheld value\nreads to a client agent as \"capability missing\" (the box-culvert \"geometry\nbuilder isn't firing\" scare) rather than \"pared for size\": ``drawing`` and\n``audit_trail`` appear as ``null``, ``boq_rows`` as an empty list ``[]``\n(its type forbids ``null``) — both indistinguishable from a genuine absent\nresult. This names the withheld fields and the exact mode that brings each\nback, so the value is unambiguous. Absent on the default ``full_json`` mode\n— nothing is withheld, nothing to point at.",
        -                "properties": {
        -                  "mode": {
        -                    "enum": [
        -                      "summary",
        -                      "boq",
        -                      "boq_with_backup"
        -                    ],
        -                    "type": "string"
        -                  },
        -                  "omitted_fields": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "minItems": 1,
        -                    "type": "array"
        -                  },
        -                  "retrieve_with": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "mode",
        -                  "omitted_fields",
        -                  "retrieve_with"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "rate_limit_remaining": {
        -            "anyOf": [
        -              {
        -                "minimum": 0,
        -                "type": "integer"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "request_id": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "schema_version": {
        -            "const": "1.0.0",
        -            "default": "1.0.0",
        -            "type": "string"
        -          },
        -          "scope_boundary": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        -                "properties": {
        -                  "not_in_scope": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "produced": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "recommended_companions": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "type": "string"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "produced",
        -                  "not_in_scope"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tier": {
        -            "enum": [
        -              "free",
        -              "paid"
        -            ],
        -            "type": "string"
        -          },
        -          "tier_upgrade": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        -                "properties": {
        -                  "available_tiers": {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        -                      "properties": {
        -                        "billing": {
        -                          "enum": [
        -                            "one_off",
        -                            "monthly",
        -                            "annual"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "currency": {
        -                          "enum": [
        -                            "GBP",
        -                            "SGD",
        -                            "EUR",
        -                            "USD",
        -                            "CAD",
        -                            "AUD",
        -                            "NZD",
        -                            "MYR"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "display_name": {
        -                          "type": "string"
        -                        },
        -                        "price_local": {
        -                          "type": "number"
        -                        },
        -                        "tier_slug": {
        -                          "enum": [
        -                            "7_day_pass",
        -                            "solo",
        -                            "studio",
        -                            "practice"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "unlock_summary": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "tier_slug",
        -                        "display_name",
        -                        "price_local",
        -                        "currency",
        -                        "billing",
        -                        "unlock_summary"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "current_tier": {
        -                    "const": "free",
        -                    "default": "free",
        -                    "type": "string"
        -                  },
        -                  "pass_credit": {
        -                    "anyOf": [
        -                      {
        -                        "additionalProperties": false,
        -                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        -                        "properties": {
        -                          "amount_local": {
        -                            "type": "number"
        -                          },
        -                          "applies_to": {
        -                            "const": "solo_first_month",
        -                            "default": "solo_first_month",
        -                            "type": "string"
        -                          },
        -                          "currency": {
        -                            "type": "string"
        -                          },
        -                          "redeemable_until": {
        -                            "type": "string"
        -                          }
        -                        },
        -                        "required": [
        -                          "amount_local",
        -                          "currency",
        -                          "redeemable_until"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "pricing_url": {
        -                    "default": "https://civilquants.com/pricing",
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "available_tiers"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tos_url": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "upgrade_hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "warranty_disclaimer": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          }
        -        },
        -        "required": [
        -          "request_id",
        -          "issued_at",
        -          "tier"
        -        ],
        -        "type": "object"
        -      },
        -      "data": {
        -        "default": null,
        -        "title": "Data"
        -      },
        -      "error": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        -            "properties": {
        -              "code": {
        -                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        -                "enum": [
        -                  "RATE_LIMIT_EXCEEDED",
        -                  "TIER_INSUFFICIENT",
        -                  "INVALID_INPUT",
        -                  "SCHEMA_VERSION_MISMATCH",
        -                  "SCHEMA_INVARIANT_VIOLATION",
        -                  "UPSTREAM_TIMEOUT",
        -                  "BACKEND_FAILURE",
        -                  "IP_BLOCKED",
        -                  "RESOURCE_NOT_FOUND",
        -                  "RENDER_FAILURE",
        -                  "OCR_LOW_CONFIDENCE",
        -                  "MANUAL_REVIEW_REQUIRED",
        -                  "ACCEPTANCE_REQUIRED",
        -                  "INVALID_TOKEN"
        -                ],
        -                "type": "string"
        -              },
        -              "details": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "message": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "recoverable": {
        -                "type": "boolean"
        -              },
        -              "retry_after_seconds": {
        -                "anyOf": [
        -                  {
        -                    "minimum": 0,
        -                    "type": "integer"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              }
        -            },
        -            "required": [
        -              "code",
        -              "message",
        -              "recoverable"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      }
        -    },
        -    "required": [
        -      "_meta"
        -    ],
        -    "type": "object"
        -  }
        -]New value: +[
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "_meta": {
        +        "additionalProperties": false,
        +        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        +        "properties": {
        +          "deliverables": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        +                "properties": {
        +                  "docx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "dxf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "expires_at": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  },
        +                  "pdf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "xlsx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "expires_at"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "document_id": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "issued_at": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "output_mode": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Surfaces what a trimmed ``output_mode`` withheld from ``data``.\n\nA trimmed mode (``summary`` / ``material_schedule`` / ``boq`` /\n``boq_with_backup``) withholds\nalready-computed fields to keep the chat payload small. The withheld value\nreads to a client agent as \"capability missing\" (the box-culvert \"geometry\nbuilder isn't firing\" scare) rather than \"pared for size\": ``drawing`` and\n``audit_trail`` appear as ``null``, ``boq_rows`` as an empty list ``[]``\n(its type forbids ``null``) — both indistinguishable from a genuine absent\nresult. This names the withheld fields and the exact mode that brings each\nback, so the value is unambiguous. Absent on the default ``full_json`` mode\n— nothing is withheld, nothing to point at.",
        +                "properties": {
        +                  "mode": {
        +                    "enum": [
        +                      "summary",
        +                      "material_schedule",
        +                      "boq",
        +                      "boq_with_backup"
        +                    ],
        +                    "type": "string"
        +                  },
        +                  "omitted_fields": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "minItems": 1,
        +                    "type": "array"
        +                  },
        +                  "retrieve_with": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "mode",
        +                  "omitted_fields",
        +                  "retrieve_with"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "rate_limit_remaining": {
        +            "anyOf": [
        +              {
        +                "minimum": 0,
        +                "type": "integer"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "request_id": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "schema_version": {
        +            "const": "1.0.0",
        +            "default": "1.0.0",
        +            "type": "string"
        +          },
        +          "scope_boundary": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        +                "properties": {
        +                  "not_in_scope": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "produced": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "recommended_companions": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "type": "string"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "produced",
        +                  "not_in_scope"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tier": {
        +            "enum": [
        +              "free",
        +              "paid"
        +            ],
        +            "type": "string"
        +          },
        +          "tier_upgrade": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        +                "properties": {
        +                  "available_tiers": {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        +                      "properties": {
        +                        "billing": {
        +                          "enum": [
        +                            "one_off",
        +                            "monthly",
        +                            "annual"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "currency": {
        +                          "enum": [
        +                            "GBP",
        +                            "SGD",
        +                            "EUR",
        +                            "USD",
        +                            "CAD",
        +                            "AUD",
        +                            "NZD",
        +                            "MYR"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "display_name": {
        +                          "type": "string"
        +                        },
        +                        "price_local": {
        +                          "type": "number"
        +                        },
        +                        "tier_slug": {
        +                          "enum": [
        +                            "7_day_pass",
        +                            "solo",
        +                            "studio",
        +                            "practice"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "unlock_summary": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "tier_slug",
        +                        "display_name",
        +                        "price_local",
        +                        "currency",
        +                        "billing",
        +                        "unlock_summary"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "current_tier": {
        +                    "const": "free",
        +                    "default": "free",
        +                    "type": "string"
        +                  },
        +                  "pass_credit": {
        +                    "anyOf": [
        +                      {
        +                        "additionalProperties": false,
        +                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        +                        "properties": {
        +                          "amount_local": {
        +                            "type": "number"
        +                          },
        +                          "applies_to": {
        +                            "const": "solo_first_month",
        +                            "default": "solo_first_month",
        +                            "type": "string"
        +                          },
        +                          "currency": {
        +                            "type": "string"
        +                          },
        +                          "redeemable_until": {
        +                            "type": "string"
        +                          }
        +                        },
        +                        "required": [
        +                          "amount_local",
        +                          "currency",
        +                          "redeemable_until"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "pricing_url": {
        +                    "default": "https://civilquants.com/pricing",
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "available_tiers"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tos_url": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "upgrade_hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "warranty_disclaimer": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          }
        +        },
        +        "required": [
        +          "request_id",
        +          "issued_at",
        +          "tier"
        +        ],
        +        "type": "object"
        +      },
        +      "data": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Schema § 1.1 — the typed payload returned inside `MCPResponse[ComputeResult]`.\n\nFree-tier responses omit `drawings` (the downloadable CAD artefact\npointers — the paid differentiator); the bridge enforces this. The\n`audit_trail` and the inline `drawing` preview are present on BOTH tiers\n(V1 ALIGN / 60th-fire D + C). `text_summary` is bounded to 2000 chars —\nkeeps the LLM-facing summary token-cheap and forces longer narrative into\nBoQ row descriptions where it belongs. `warnings` is the non-fatal\ngeometry advisory list (both tiers).",
        +            "properties": {
        +              "assembly_slug": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "audit_trail": {
        +                "anyOf": [
        +                  {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.7 — paid-tier audit-trail entry.\n\nOne entry per BoQ row; `boq_row_index` ties to the row position in\n`ComputeResult.boq_rows`. `derivation` is the human-readable formula\nwalk-through; `formula` is the optional formal expression.",
        +                      "properties": {
        +                        "boq_row_index": {
        +                          "minimum": 0,
        +                          "type": "integer"
        +                        },
        +                        "derivation": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "formula": {
        +                          "anyOf": [
        +                            {
        +                              "type": "string"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ],
        +                          "default": null
        +                        },
        +                        "id": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "parameters_referenced": {
        +                          "items": {
        +                            "type": "string"
        +                          },
        +                          "type": "array"
        +                        }
        +                      },
        +                      "required": [
        +                        "id",
        +                        "boq_row_index",
        +                        "derivation"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "boq_rows": {
        +                "items": {
        +                  "additionalProperties": false,
        +                  "description": "Schema § 1.3 — a single bill row in the requested standard's format.\n\n`description` is the non-verbatim functional description per spec § 13.9 /\n§ 15 invariant — NEVER reproduces a standard's verbatim clause text.\n`rate` / `amount` ship null because rates are commodity data the customer\nowns; the engine's job is the measurement, not the pricing.",
        +                  "properties": {
        +                    "amount": {
        +                      "anyOf": [
        +                        {
        +                          "type": "number"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "attribution": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "audit_id": {
        +                      "anyOf": [
        +                        {
        +                          "type": "string"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "description": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "quantity": {
        +                      "minimum": 0,
        +                      "type": "number"
        +                    },
        +                    "rate": {
        +                      "anyOf": [
        +                        {
        +                          "type": "number"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "unit": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "work_section": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    }
        +                  },
        +                  "required": [
        +                    "work_section",
        +                    "description",
        +                    "quantity",
        +                    "unit",
        +                    "attribution"
        +                  ],
        +                  "type": "object"
        +                },
        +                "type": "array"
        +              },
        +              "drawing": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": false,
        +                    "description": "Schema § 1.6a — inline server-rendered SVG preview of the geometry.\n\nThe MCP mirror of the web ``/compute`` response's ``drawing`` field\n(``api.schemas.compute.DrawingRef``): the same on-screen dimensioned\ndrawing both tiers see in the workspace, surfaced on the MCP compute\nresponse so a chat client can render it inline (60th-fire item C). This\nis the on-screen preview — present on BOTH tiers per the free/paid\nboundary; the downloadable CAD artefacts (DXF / dimensioned PDF) remain\nthe paid differentiator via the export tools.\n\nDefined here rather than importing ``DrawingRef`` because the web\n``schemas`` package imports back into this module (``schemas.render``),\nso reusing it would create an import cycle — the MCP wire contract keeps\nits own copy, the same pattern as ``BoQRow`` / ``DrawingReference``.",
        +                    "properties": {
        +                      "entity_count": {
        +                        "minimum": 0,
        +                        "type": "integer"
        +                      },
        +                      "svg_b64": {
        +                        "minLength": 1,
        +                        "type": "string"
        +                      },
        +                      "unit_of_drawing": {
        +                        "const": "m",
        +                        "default": "m",
        +                        "type": "string"
        +                      },
        +                      "viewbox_height": {
        +                        "exclusiveMinimum": 0,
        +                        "type": "number"
        +                      },
        +                      "viewbox_width": {
        +                        "exclusiveMinimum": 0,
        +                        "type": "number"
        +                      },
        +                      "viewbox_x": {
        +                        "type": "number"
        +                      },
        +                      "viewbox_y": {
        +                        "type": "number"
        +                      }
        +                    },
        +                    "required": [
        +                      "svg_b64",
        +                      "viewbox_x",
        +                      "viewbox_y",
        +                      "viewbox_width",
        +                      "viewbox_height",
        +                      "entity_count"
        +                    ],
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "drawings": {
        +                "anyOf": [
        +                  {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.6 — paid-tier drawing artefact pointer.\n\n`url` is an R2-signed URL; expiry is carried in `_meta.deliverables.expires_at`\non the envelope (not duplicated here). `layers` is DXF-only; PDF/SVG\ncallers omit it.",
        +                      "properties": {
        +                        "drawing_type": {
        +                          "enum": [
        +                            "section",
        +                            "plan",
        +                            "elevation",
        +                            "isometric",
        +                            "detail"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "format": {
        +                          "enum": [
        +                            "DXF",
        +                            "PDF",
        +                            "SVG"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "layers": {
        +                          "anyOf": [
        +                            {
        +                              "items": {
        +                                "type": "string"
        +                              },
        +                              "type": "array"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ],
        +                          "default": null
        +                        },
        +                        "scale": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "sheet_size": {
        +                          "enum": [
        +                            "A1",
        +                            "A2",
        +                            "A3",
        +                            "A4"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "url": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "drawing_type",
        +                        "format",
        +                        "url",
        +                        "sheet_size",
        +                        "scale"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "parameters_used": {
        +                "additionalProperties": false,
        +                "description": "Schema § 1.2 — the parameter snapshot the engine actually used.\n\nSplits user-supplied values from engine defaults so customers can see\nwhich numbers came from them and which the engine filled in. Every\ndefaulted parameter SHOULD have a corresponding entry in `assumptions`\n— the bridge layer enforces this when wrapping engine output.",
        +                "properties": {
        +                  "assumptions": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "engine_defaults": {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  "user_supplied": {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  }
        +                },
        +                "type": "object"
        +              },
        +              "standard": {
        +                "enum": [
        +                  "CESMM4",
        +                  "NRM2",
        +                  "SMM7",
        +                  "MMHW"
        +                ],
        +                "type": "string"
        +              },
        +              "text_summary": {
        +                "maxLength": 2000,
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "totals_summary": {
        +                "additionalProperties": false,
        +                "description": "Schema § 1.4 — totals_summary as a typed wrapper around the free-form dict.\n\nWire shape is a flat object (`{\"concrete_m3\": {...}, \"rebar_t\": {...}}`).\nWe model it as `RootModel`-equivalent via `model_config(extra=\"allow\")`\n+ a single `__root__`-style `entries` dict. Pydantic v2 recommends\n`RootModel` for free-form roots; using a wrapper class keeps the import\nsurface uniform with the rest of this module.",
        +                "properties": {
        +                  "entries": {
        +                    "additionalProperties": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.4 — single material/work-class total entry.",
        +                      "properties": {
        +                        "quantity": {
        +                          "minimum": 0,
        +                          "type": "number"
        +                        },
        +                        "unit": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "quantity",
        +                        "unit"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "object"
        +                  }
        +                },
        +                "type": "object"
        +              },
        +              "warnings": {
        +                "items": {
        +                  "additionalProperties": false,
        +                  "description": "Schema § 1.8 — a non-fatal geometry advisory (56th-fire T2).\n\nThe wire projection of the engine's `core.GeometryWarning`. Advisory only:\na warning NEVER changes a measured quantity — it flags geometry that is\nvalid but likely a mistake (e.g. a stale dependent-height default). Present\non BOTH tiers — a correctness/safety signal, not a paid feature.",
        +                  "properties": {
        +                    "affected_params": {
        +                      "items": {
        +                        "type": "string"
        +                      },
        +                      "type": "array"
        +                    },
        +                    "code": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "detail": {
        +                      "additionalProperties": {
        +                        "type": "number"
        +                      },
        +                      "type": "object"
        +                    },
        +                    "message": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "severity": {
        +                      "enum": [
        +                        "info",
        +                        "advisory",
        +                        "caution"
        +                      ],
        +                      "type": "string"
        +                    }
        +                  },
        +                  "required": [
        +                    "code",
        +                    "severity",
        +                    "message"
        +                  ],
        +                  "type": "object"
        +                },
        +                "type": "array"
        +              }
        +            },
        +            "required": [
        +              "assembly_slug",
        +              "standard",
        +              "parameters_used",
        +              "boq_rows",
        +              "totals_summary",
        +              "text_summary"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      },
        +      "error": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        +            "properties": {
        +              "code": {
        +                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        +                "enum": [
        +                  "RATE_LIMIT_EXCEEDED",
        +                  "TIER_INSUFFICIENT",
        +                  "INVALID_INPUT",
        +                  "SCHEMA_VERSION_MISMATCH",
        +                  "SCHEMA_INVARIANT_VIOLATION",
        +                  "UPSTREAM_TIMEOUT",
        +                  "BACKEND_FAILURE",
        +                  "IP_BLOCKED",
        +                  "RESOURCE_NOT_FOUND",
        +                  "RENDER_FAILURE",
        +                  "OCR_LOW_CONFIDENCE",
        +                  "MANUAL_REVIEW_REQUIRED",
        +                  "ACCEPTANCE_REQUIRED",
        +                  "INVALID_TOKEN"
        +                ],
        +                "type": "string"
        +              },
        +              "details": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "message": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "recoverable": {
        +                "type": "boolean"
        +              },
        +              "retry_after_seconds": {
        +                "anyOf": [
        +                  {
        +                    "minimum": 0,
        +                    "type": "integer"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              }
        +            },
        +            "required": [
        +              "code",
        +              "message",
        +              "recoverable"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      }
        +    },
        +    "required": [
        +      "_meta"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "_meta": {
        +        "additionalProperties": false,
        +        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        +        "properties": {
        +          "deliverables": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        +                "properties": {
        +                  "docx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "dxf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "expires_at": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  },
        +                  "pdf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "xlsx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "expires_at"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "document_id": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "issued_at": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "output_mode": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Surfaces what a trimmed ``output_mode`` withheld from ``data``.\n\nA trimmed mode (``summary`` / ``material_schedule`` / ``boq`` /\n``boq_with_backup``) withholds\nalready-computed fields to keep the chat payload small. The withheld value\nreads to a client agent as \"capability missing\" (the box-culvert \"geometry\nbuilder isn't firing\" scare) rather than \"pared for size\": ``drawing`` and\n``audit_trail`` appear as ``null``, ``boq_rows`` as an empty list ``[]``\n(its type forbids ``null``) — both indistinguishable from a genuine absent\nresult. This names the withheld fields and the exact mode that brings each\nback, so the value is unambiguous. Absent on the default ``full_json`` mode\n— nothing is withheld, nothing to point at.",
        +                "properties": {
        +                  "mode": {
        +                    "enum": [
        +                      "summary",
        +                      "material_schedule",
        +                      "boq",
        +                      "boq_with_backup"
        +                    ],
        +                    "type": "string"
        +                  },
        +                  "omitted_fields": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "minItems": 1,
        +                    "type": "array"
        +                  },
        +                  "retrieve_with": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "mode",
        +                  "omitted_fields",
        +                  "retrieve_with"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "rate_limit_remaining": {
        +            "anyOf": [
        +              {
        +                "minimum": 0,
        +                "type": "integer"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "request_id": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "schema_version": {
        +            "const": "1.0.0",
        +            "default": "1.0.0",
        +            "type": "string"
        +          },
        +          "scope_boundary": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        +                "properties": {
        +                  "not_in_scope": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "produced": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "recommended_companions": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "type": "string"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "produced",
        +                  "not_in_scope"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tier": {
        +            "enum": [
        +              "free",
        +              "paid"
        +            ],
        +            "type": "string"
        +          },
        +          "tier_upgrade": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        +                "properties": {
        +                  "available_tiers": {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        +                      "properties": {
        +                        "billing": {
        +                          "enum": [
        +                            "one_off",
        +                            "monthly",
        +                            "annual"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "currency": {
        +                          "enum": [
        +                            "GBP",
        +                            "SGD",
        +                            "EUR",
        +                            "USD",
        +                            "CAD",
        +                            "AUD",
        +                            "NZD",
        +                            "MYR"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "display_name": {
        +                          "type": "string"
        +                        },
        +                        "price_local": {
        +                          "type": "number"
        +                        },
        +                        "tier_slug": {
        +                          "enum": [
        +                            "7_day_pass",
        +                            "solo",
        +                            "studio",
        +                            "practice"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "unlock_summary": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "tier_slug",
        +                        "display_name",
        +                        "price_local",
        +                        "currency",
        +                        "billing",
        +                        "unlock_summary"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "current_tier": {
        +                    "const": "free",
        +                    "default": "free",
        +                    "type": "string"
        +                  },
        +                  "pass_credit": {
        +                    "anyOf": [
        +                      {
        +                        "additionalProperties": false,
        +                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        +                        "properties": {
        +                          "amount_local": {
        +                            "type": "number"
        +                          },
        +                          "applies_to": {
        +                            "const": "solo_first_month",
        +                            "default": "solo_first_month",
        +                            "type": "string"
        +                          },
        +                          "currency": {
        +                            "type": "string"
        +                          },
        +                          "redeemable_until": {
        +                            "type": "string"
        +                          }
        +                        },
        +                        "required": [
        +                          "amount_local",
        +                          "currency",
        +                          "redeemable_until"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "pricing_url": {
        +                    "default": "https://civilquants.com/pricing",
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "available_tiers"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tos_url": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "upgrade_hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "warranty_disclaimer": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          }
        +        },
        +        "required": [
        +          "request_id",
        +          "issued_at",
        +          "tier"
        +        ],
        +        "type": "object"
        +      },
        +      "data": {
        +        "default": null,
        +        "title": "Data"
        +      },
        +      "error": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        +            "properties": {
        +              "code": {
        +                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        +                "enum": [
        +                  "RATE_LIMIT_EXCEEDED",
        +                  "TIER_INSUFFICIENT",
        +                  "INVALID_INPUT",
        +                  "SCHEMA_VERSION_MISMATCH",
        +                  "SCHEMA_INVARIANT_VIOLATION",
        +                  "UPSTREAM_TIMEOUT",
        +                  "BACKEND_FAILURE",
        +                  "IP_BLOCKED",
        +                  "RESOURCE_NOT_FOUND",
        +                  "RENDER_FAILURE",
        +                  "OCR_LOW_CONFIDENCE",
        +                  "MANUAL_REVIEW_REQUIRED",
        +                  "ACCEPTANCE_REQUIRED",
        +                  "INVALID_TOKEN"
        +                ],
        +                "type": "string"
        +              },
        +              "details": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "message": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "recoverable": {
        +                "type": "boolean"
        +              },
        +              "retry_after_seconds": {
        +                "anyOf": [
        +                  {
        +                    "minimum": 0,
        +                    "type": "integer"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              }
        +            },
        +            "required": [
        +              "code",
        +              "message",
        +              "recoverable"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      }
        +    },
        +    "required": [
        +      "_meta"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedcompute_hard_material_in_trench2 fields changed
      • changedInput schema / properties / output_mode / enum
        Previous value: -[
        -  "summary",
        -  "boq",
        -  "boq_with_backup",
        -  "full_json"
        -]New value: +[
        +  "summary",
        +  "material_schedule",
        +  "boq",
        +  "boq_with_backup",
        +  "full_json"
        +]
      • changedOutput schema / properties / result / anyOf
        Previous value: -[
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "_meta": {
        -        "additionalProperties": false,
        -        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        -        "properties": {
        -          "deliverables": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        -                "properties": {
        -                  "docx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "dxf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "expires_at": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  },
        -                  "pdf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "xlsx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "expires_at"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "document_id": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "issued_at": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "output_mode": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Surfaces what a trimmed ``output_mode`` withheld from ``data``.\n\nA trimmed mode (``summary`` / ``boq`` / ``boq_with_backup``) withholds\nalready-computed fields to keep the chat payload small. The withheld value\nreads to a client agent as \"capability missing\" (the box-culvert \"geometry\nbuilder isn't firing\" scare) rather than \"pared for size\": ``drawing`` and\n``audit_trail`` appear as ``null``, ``boq_rows`` as an empty list ``[]``\n(its type forbids ``null``) — both indistinguishable from a genuine absent\nresult. This names the withheld fields and the exact mode that brings each\nback, so the value is unambiguous. Absent on the default ``full_json`` mode\n— nothing is withheld, nothing to point at.",
        -                "properties": {
        -                  "mode": {
        -                    "enum": [
        -                      "summary",
        -                      "boq",
        -                      "boq_with_backup"
        -                    ],
        -                    "type": "string"
        -                  },
        -                  "omitted_fields": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "minItems": 1,
        -                    "type": "array"
        -                  },
        -                  "retrieve_with": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "mode",
        -                  "omitted_fields",
        -                  "retrieve_with"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "rate_limit_remaining": {
        -            "anyOf": [
        -              {
        -                "minimum": 0,
        -                "type": "integer"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "request_id": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "schema_version": {
        -            "const": "1.0.0",
        -            "default": "1.0.0",
        -            "type": "string"
        -          },
        -          "scope_boundary": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        -                "properties": {
        -                  "not_in_scope": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "produced": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "recommended_companions": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "type": "string"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "produced",
        -                  "not_in_scope"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tier": {
        -            "enum": [
        -              "free",
        -              "paid"
        -            ],
        -            "type": "string"
        -          },
        -          "tier_upgrade": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        -                "properties": {
        -                  "available_tiers": {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        -                      "properties": {
        -                        "billing": {
        -                          "enum": [
        -                            "one_off",
        -                            "monthly",
        -                            "annual"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "currency": {
        -                          "enum": [
        -                            "GBP",
        -                            "SGD",
        -                            "EUR",
        -                            "USD",
        -                            "CAD",
        -                            "AUD",
        -                            "NZD",
        -                            "MYR"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "display_name": {
        -                          "type": "string"
        -                        },
        -                        "price_local": {
        -                          "type": "number"
        -                        },
        -                        "tier_slug": {
        -                          "enum": [
        -                            "7_day_pass",
        -                            "solo",
        -                            "studio",
        -                            "practice"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "unlock_summary": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "tier_slug",
        -                        "display_name",
        -                        "price_local",
        -                        "currency",
        -                        "billing",
        -                        "unlock_summary"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "current_tier": {
        -                    "const": "free",
        -                    "default": "free",
        -                    "type": "string"
        -                  },
        -                  "pass_credit": {
        -                    "anyOf": [
        -                      {
        -                        "additionalProperties": false,
        -                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        -                        "properties": {
        -                          "amount_local": {
        -                            "type": "number"
        -                          },
        -                          "applies_to": {
        -                            "const": "solo_first_month",
        -                            "default": "solo_first_month",
        -                            "type": "string"
        -                          },
        -                          "currency": {
        -                            "type": "string"
        -                          },
        -                          "redeemable_until": {
        -                            "type": "string"
        -                          }
        -                        },
        -                        "required": [
        -                          "amount_local",
        -                          "currency",
        -                          "redeemable_until"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "pricing_url": {
        -                    "default": "https://civilquants.com/pricing",
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "available_tiers"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tos_url": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "upgrade_hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "warranty_disclaimer": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          }
        -        },
        -        "required": [
        -          "request_id",
        -          "issued_at",
        -          "tier"
        -        ],
        -        "type": "object"
        -      },
        -      "data": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Schema § 1.1 — the typed payload returned inside `MCPResponse[ComputeResult]`.\n\nFree-tier responses omit `drawings` (the downloadable CAD artefact\npointers — the paid differentiator); the bridge enforces this. The\n`audit_trail` and the inline `drawing` preview are present on BOTH tiers\n(V1 ALIGN / 60th-fire D + C). `text_summary` is bounded to 2000 chars —\nkeeps the LLM-facing summary token-cheap and forces longer narrative into\nBoQ row descriptions where it belongs. `warnings` is the non-fatal\ngeometry advisory list (both tiers).",
        -            "properties": {
        -              "assembly_slug": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "audit_trail": {
        -                "anyOf": [
        -                  {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.7 — paid-tier audit-trail entry.\n\nOne entry per BoQ row; `boq_row_index` ties to the row position in\n`ComputeResult.boq_rows`. `derivation` is the human-readable formula\nwalk-through; `formula` is the optional formal expression.",
        -                      "properties": {
        -                        "boq_row_index": {
        -                          "minimum": 0,
        -                          "type": "integer"
        -                        },
        -                        "derivation": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "formula": {
        -                          "anyOf": [
        -                            {
        -                              "type": "string"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ],
        -                          "default": null
        -                        },
        -                        "id": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "parameters_referenced": {
        -                          "items": {
        -                            "type": "string"
        -                          },
        -                          "type": "array"
        -                        }
        -                      },
        -                      "required": [
        -                        "id",
        -                        "boq_row_index",
        -                        "derivation"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "boq_rows": {
        -                "items": {
        -                  "additionalProperties": false,
        -                  "description": "Schema § 1.3 — a single bill row in the requested standard's format.\n\n`description` is the non-verbatim functional description per spec § 13.9 /\n§ 15 invariant — NEVER reproduces a standard's verbatim clause text.\n`rate` / `amount` ship null because rates are commodity data the customer\nowns; the engine's job is the measurement, not the pricing.",
        -                  "properties": {
        -                    "amount": {
        -                      "anyOf": [
        -                        {
        -                          "type": "number"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "attribution": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "audit_id": {
        -                      "anyOf": [
        -                        {
        -                          "type": "string"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "description": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "quantity": {
        -                      "minimum": 0,
        -                      "type": "number"
        -                    },
        -                    "rate": {
        -                      "anyOf": [
        -                        {
        -                          "type": "number"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "unit": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "work_section": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    }
        -                  },
        -                  "required": [
        -                    "work_section",
        -                    "description",
        -                    "quantity",
        -                    "unit",
        -                    "attribution"
        -                  ],
        -                  "type": "object"
        -                },
        -                "type": "array"
        -              },
        -              "drawing": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": false,
        -                    "description": "Schema § 1.6a — inline server-rendered SVG preview of the geometry.\n\nThe MCP mirror of the web ``/compute`` response's ``drawing`` field\n(``api.schemas.compute.DrawingRef``): the same on-screen dimensioned\ndrawing both tiers see in the workspace, surfaced on the MCP compute\nresponse so a chat client can render it inline (60th-fire item C). This\nis the on-screen preview — present on BOTH tiers per the free/paid\nboundary; the downloadable CAD artefacts (DXF / dimensioned PDF) remain\nthe paid differentiator via the export tools.\n\nDefined here rather than importing ``DrawingRef`` because the web\n``schemas`` package imports back into this module (``schemas.render``),\nso reusing it would create an import cycle — the MCP wire contract keeps\nits own copy, the same pattern as ``BoQRow`` / ``DrawingReference``.",
        -                    "properties": {
        -                      "entity_count": {
        -                        "minimum": 0,
        -                        "type": "integer"
        -                      },
        -                      "svg_b64": {
        -                        "minLength": 1,
        -                        "type": "string"
        -                      },
        -                      "unit_of_drawing": {
        -                        "const": "m",
        -                        "default": "m",
        -                        "type": "string"
        -                      },
        -                      "viewbox_height": {
        -                        "exclusiveMinimum": 0,
        -                        "type": "number"
        -                      },
        -                      "viewbox_width": {
        -                        "exclusiveMinimum": 0,
        -                        "type": "number"
        -                      },
        -                      "viewbox_x": {
        -                        "type": "number"
        -                      },
        -                      "viewbox_y": {
        -                        "type": "number"
        -                      }
        -                    },
        -                    "required": [
        -                      "svg_b64",
        -                      "viewbox_x",
        -                      "viewbox_y",
        -                      "viewbox_width",
        -                      "viewbox_height",
        -                      "entity_count"
        -                    ],
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "drawings": {
        -                "anyOf": [
        -                  {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.6 — paid-tier drawing artefact pointer.\n\n`url` is an R2-signed URL; expiry is carried in `_meta.deliverables.expires_at`\non the envelope (not duplicated here). `layers` is DXF-only; PDF/SVG\ncallers omit it.",
        -                      "properties": {
        -                        "drawing_type": {
        -                          "enum": [
        -                            "section",
        -                            "plan",
        -                            "elevation",
        -                            "isometric",
        -                            "detail"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "format": {
        -                          "enum": [
        -                            "DXF",
        -                            "PDF",
        -                            "SVG"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "layers": {
        -                          "anyOf": [
        -                            {
        -                              "items": {
        -                                "type": "string"
        -                              },
        -                              "type": "array"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ],
        -                          "default": null
        -                        },
        -                        "scale": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "sheet_size": {
        -                          "enum": [
        -                            "A1",
        -                            "A2",
        -                            "A3",
        -                            "A4"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "url": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "drawing_type",
        -                        "format",
        -                        "url",
        -                        "sheet_size",
        -                        "scale"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "parameters_used": {
        -                "additionalProperties": false,
        -                "description": "Schema § 1.2 — the parameter snapshot the engine actually used.\n\nSplits user-supplied values from engine defaults so customers can see\nwhich numbers came from them and which the engine filled in. Every\ndefaulted parameter SHOULD have a corresponding entry in `assumptions`\n— the bridge layer enforces this when wrapping engine output.",
        -                "properties": {
        -                  "assumptions": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "engine_defaults": {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  "user_supplied": {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  }
        -                },
        -                "type": "object"
        -              },
        -              "standard": {
        -                "enum": [
        -                  "CESMM4",
        -                  "NRM2",
        -                  "SMM7",
        -                  "MMHW"
        -                ],
        -                "type": "string"
        -              },
        -              "text_summary": {
        -                "maxLength": 2000,
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "totals_summary": {
        -                "additionalProperties": false,
        -                "description": "Schema § 1.4 — totals_summary as a typed wrapper around the free-form dict.\n\nWire shape is a flat object (`{\"concrete_m3\": {...}, \"rebar_t\": {...}}`).\nWe model it as `RootModel`-equivalent via `model_config(extra=\"allow\")`\n+ a single `__root__`-style `entries` dict. Pydantic v2 recommends\n`RootModel` for free-form roots; using a wrapper class keeps the import\nsurface uniform with the rest of this module.",
        -                "properties": {
        -                  "entries": {
        -                    "additionalProperties": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.4 — single material/work-class total entry.",
        -                      "properties": {
        -                        "quantity": {
        -                          "minimum": 0,
        -                          "type": "number"
        -                        },
        -                        "unit": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "quantity",
        -                        "unit"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "object"
        -                  }
        -                },
        -                "type": "object"
        -              },
        -              "warnings": {
        -                "items": {
        -                  "additionalProperties": false,
        -                  "description": "Schema § 1.8 — a non-fatal geometry advisory (56th-fire T2).\n\nThe wire projection of the engine's `core.GeometryWarning`. Advisory only:\na warning NEVER changes a measured quantity — it flags geometry that is\nvalid but likely a mistake (e.g. a stale dependent-height default). Present\non BOTH tiers — a correctness/safety signal, not a paid feature.",
        -                  "properties": {
        -                    "affected_params": {
        -                      "items": {
        -                        "type": "string"
        -                      },
        -                      "type": "array"
        -                    },
        -                    "code": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "detail": {
        -                      "additionalProperties": {
        -                        "type": "number"
        -                      },
        -                      "type": "object"
        -                    },
        -                    "message": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "severity": {
        -                      "enum": [
        -                        "info",
        -                        "advisory",
        -                        "caution"
        -                      ],
        -                      "type": "string"
        -                    }
        -                  },
        -                  "required": [
        -                    "code",
        -                    "severity",
        -                    "message"
        -                  ],
        -                  "type": "object"
        -                },
        -                "type": "array"
        -              }
        -            },
        -            "required": [
        -              "assembly_slug",
        -              "standard",
        -              "parameters_used",
        -              "boq_rows",
        -              "totals_summary",
        -              "text_summary"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      },
        -      "error": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        -            "properties": {
        -              "code": {
        -                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        -                "enum": [
        -                  "RATE_LIMIT_EXCEEDED",
        -                  "TIER_INSUFFICIENT",
        -                  "INVALID_INPUT",
        -                  "SCHEMA_VERSION_MISMATCH",
        -                  "SCHEMA_INVARIANT_VIOLATION",
        -                  "UPSTREAM_TIMEOUT",
        -                  "BACKEND_FAILURE",
        -                  "IP_BLOCKED",
        -                  "RESOURCE_NOT_FOUND",
        -                  "RENDER_FAILURE",
        -                  "OCR_LOW_CONFIDENCE",
        -                  "MANUAL_REVIEW_REQUIRED",
        -                  "ACCEPTANCE_REQUIRED",
        -                  "INVALID_TOKEN"
        -                ],
        -                "type": "string"
        -              },
        -              "details": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "message": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "recoverable": {
        -                "type": "boolean"
        -              },
        -              "retry_after_seconds": {
        -                "anyOf": [
        -                  {
        -                    "minimum": 0,
        -                    "type": "integer"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              }
        -            },
        -            "required": [
        -              "code",
        -              "message",
        -              "recoverable"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      }
        -    },
        -    "required": [
        -      "_meta"
        -    ],
        -    "type": "object"
        -  },
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "_meta": {
        -        "additionalProperties": false,
        -        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        -        "properties": {
        -          "deliverables": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        -                "properties": {
        -                  "docx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "dxf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "expires_at": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  },
        -                  "pdf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "xlsx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "expires_at"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "document_id": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "issued_at": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "output_mode": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Surfaces what a trimmed ``output_mode`` withheld from ``data``.\n\nA trimmed mode (``summary`` / ``boq`` / ``boq_with_backup``) withholds\nalready-computed fields to keep the chat payload small. The withheld value\nreads to a client agent as \"capability missing\" (the box-culvert \"geometry\nbuilder isn't firing\" scare) rather than \"pared for size\": ``drawing`` and\n``audit_trail`` appear as ``null``, ``boq_rows`` as an empty list ``[]``\n(its type forbids ``null``) — both indistinguishable from a genuine absent\nresult. This names the withheld fields and the exact mode that brings each\nback, so the value is unambiguous. Absent on the default ``full_json`` mode\n— nothing is withheld, nothing to point at.",
        -                "properties": {
        -                  "mode": {
        -                    "enum": [
        -                      "summary",
        -                      "boq",
        -                      "boq_with_backup"
        -                    ],
        -                    "type": "string"
        -                  },
        -                  "omitted_fields": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "minItems": 1,
        -                    "type": "array"
        -                  },
        -                  "retrieve_with": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "mode",
        -                  "omitted_fields",
        -                  "retrieve_with"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "rate_limit_remaining": {
        -            "anyOf": [
        -              {
        -                "minimum": 0,
        -                "type": "integer"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "request_id": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "schema_version": {
        -            "const": "1.0.0",
        -            "default": "1.0.0",
        -            "type": "string"
        -          },
        -          "scope_boundary": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        -                "properties": {
        -                  "not_in_scope": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "produced": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "recommended_companions": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "type": "string"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "produced",
        -                  "not_in_scope"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tier": {
        -            "enum": [
        -              "free",
        -              "paid"
        -            ],
        -            "type": "string"
        -          },
        -          "tier_upgrade": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        -                "properties": {
        -                  "available_tiers": {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        -                      "properties": {
        -                        "billing": {
        -                          "enum": [
        -                            "one_off",
        -                            "monthly",
        -                            "annual"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "currency": {
        -                          "enum": [
        -                            "GBP",
        -                            "SGD",
        -                            "EUR",
        -                            "USD",
        -                            "CAD",
        -                            "AUD",
        -                            "NZD",
        -                            "MYR"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "display_name": {
        -                          "type": "string"
        -                        },
        -                        "price_local": {
        -                          "type": "number"
        -                        },
        -                        "tier_slug": {
        -                          "enum": [
        -                            "7_day_pass",
        -                            "solo",
        -                            "studio",
        -                            "practice"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "unlock_summary": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "tier_slug",
        -                        "display_name",
        -                        "price_local",
        -                        "currency",
        -                        "billing",
        -                        "unlock_summary"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "current_tier": {
        -                    "const": "free",
        -                    "default": "free",
        -                    "type": "string"
        -                  },
        -                  "pass_credit": {
        -                    "anyOf": [
        -                      {
        -                        "additionalProperties": false,
        -                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        -                        "properties": {
        -                          "amount_local": {
        -                            "type": "number"
        -                          },
        -                          "applies_to": {
        -                            "const": "solo_first_month",
        -                            "default": "solo_first_month",
        -                            "type": "string"
        -                          },
        -                          "currency": {
        -                            "type": "string"
        -                          },
        -                          "redeemable_until": {
        -                            "type": "string"
        -                          }
        -                        },
        -                        "required": [
        -                          "amount_local",
        -                          "currency",
        -                          "redeemable_until"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "pricing_url": {
        -                    "default": "https://civilquants.com/pricing",
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "available_tiers"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tos_url": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "upgrade_hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "warranty_disclaimer": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          }
        -        },
        -        "required": [
        -          "request_id",
        -          "issued_at",
        -          "tier"
        -        ],
        -        "type": "object"
        -      },
        -      "data": {
        -        "default": null,
        -        "title": "Data"
        -      },
        -      "error": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        -            "properties": {
        -              "code": {
        -                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        -                "enum": [
        -                  "RATE_LIMIT_EXCEEDED",
        -                  "TIER_INSUFFICIENT",
        -                  "INVALID_INPUT",
        -                  "SCHEMA_VERSION_MISMATCH",
        -                  "SCHEMA_INVARIANT_VIOLATION",
        -                  "UPSTREAM_TIMEOUT",
        -                  "BACKEND_FAILURE",
        -                  "IP_BLOCKED",
        -                  "RESOURCE_NOT_FOUND",
        -                  "RENDER_FAILURE",
        -                  "OCR_LOW_CONFIDENCE",
        -                  "MANUAL_REVIEW_REQUIRED",
        -                  "ACCEPTANCE_REQUIRED",
        -                  "INVALID_TOKEN"
        -                ],
        -                "type": "string"
        -              },
        -              "details": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "message": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "recoverable": {
        -                "type": "boolean"
        -              },
        -              "retry_after_seconds": {
        -                "anyOf": [
        -                  {
        -                    "minimum": 0,
        -                    "type": "integer"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              }
        -            },
        -            "required": [
        -              "code",
        -              "message",
        -              "recoverable"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      }
        -    },
        -    "required": [
        -      "_meta"
        -    ],
        -    "type": "object"
        -  }
        -]New value: +[
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "_meta": {
        +        "additionalProperties": false,
        +        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        +        "properties": {
        +          "deliverables": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        +                "properties": {
        +                  "docx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "dxf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "expires_at": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  },
        +                  "pdf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "xlsx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "expires_at"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "document_id": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "issued_at": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "output_mode": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Surfaces what a trimmed ``output_mode`` withheld from ``data``.\n\nA trimmed mode (``summary`` / ``material_schedule`` / ``boq`` /\n``boq_with_backup``) withholds\nalready-computed fields to keep the chat payload small. The withheld value\nreads to a client agent as \"capability missing\" (the box-culvert \"geometry\nbuilder isn't firing\" scare) rather than \"pared for size\": ``drawing`` and\n``audit_trail`` appear as ``null``, ``boq_rows`` as an empty list ``[]``\n(its type forbids ``null``) — both indistinguishable from a genuine absent\nresult. This names the withheld fields and the exact mode that brings each\nback, so the value is unambiguous. Absent on the default ``full_json`` mode\n— nothing is withheld, nothing to point at.",
        +                "properties": {
        +                  "mode": {
        +                    "enum": [
        +                      "summary",
        +                      "material_schedule",
        +                      "boq",
        +                      "boq_with_backup"
        +                    ],
        +                    "type": "string"
        +                  },
        +                  "omitted_fields": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "minItems": 1,
        +                    "type": "array"
        +                  },
        +                  "retrieve_with": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "mode",
        +                  "omitted_fields",
        +                  "retrieve_with"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "rate_limit_remaining": {
        +            "anyOf": [
        +              {
        +                "minimum": 0,
        +                "type": "integer"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "request_id": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "schema_version": {
        +            "const": "1.0.0",
        +            "default": "1.0.0",
        +            "type": "string"
        +          },
        +          "scope_boundary": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        +                "properties": {
        +                  "not_in_scope": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "produced": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "recommended_companions": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "type": "string"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "produced",
        +                  "not_in_scope"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tier": {
        +            "enum": [
        +              "free",
        +              "paid"
        +            ],
        +            "type": "string"
        +          },
        +          "tier_upgrade": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        +                "properties": {
        +                  "available_tiers": {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        +                      "properties": {
        +                        "billing": {
        +                          "enum": [
        +                            "one_off",
        +                            "monthly",
        +                            "annual"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "currency": {
        +                          "enum": [
        +                            "GBP",
        +                            "SGD",
        +                            "EUR",
        +                            "USD",
        +                            "CAD",
        +                            "AUD",
        +                            "NZD",
        +                            "MYR"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "display_name": {
        +                          "type": "string"
        +                        },
        +                        "price_local": {
        +                          "type": "number"
        +                        },
        +                        "tier_slug": {
        +                          "enum": [
        +                            "7_day_pass",
        +                            "solo",
        +                            "studio",
        +                            "practice"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "unlock_summary": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "tier_slug",
        +                        "display_name",
        +                        "price_local",
        +                        "currency",
        +                        "billing",
        +                        "unlock_summary"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "current_tier": {
        +                    "const": "free",
        +                    "default": "free",
        +                    "type": "string"
        +                  },
        +                  "pass_credit": {
        +                    "anyOf": [
        +                      {
        +                        "additionalProperties": false,
        +                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        +                        "properties": {
        +                          "amount_local": {
        +                            "type": "number"
        +                          },
        +                          "applies_to": {
        +                            "const": "solo_first_month",
        +                            "default": "solo_first_month",
        +                            "type": "string"
        +                          },
        +                          "currency": {
        +                            "type": "string"
        +                          },
        +                          "redeemable_until": {
        +                            "type": "string"
        +                          }
        +                        },
        +                        "required": [
        +                          "amount_local",
        +                          "currency",
        +                          "redeemable_until"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "pricing_url": {
        +                    "default": "https://civilquants.com/pricing",
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "available_tiers"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tos_url": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "upgrade_hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "warranty_disclaimer": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          }
        +        },
        +        "required": [
        +          "request_id",
        +          "issued_at",
        +          "tier"
        +        ],
        +        "type": "object"
        +      },
        +      "data": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Schema § 1.1 — the typed payload returned inside `MCPResponse[ComputeResult]`.\n\nFree-tier responses omit `drawings` (the downloadable CAD artefact\npointers — the paid differentiator); the bridge enforces this. The\n`audit_trail` and the inline `drawing` preview are present on BOTH tiers\n(V1 ALIGN / 60th-fire D + C). `text_summary` is bounded to 2000 chars —\nkeeps the LLM-facing summary token-cheap and forces longer narrative into\nBoQ row descriptions where it belongs. `warnings` is the non-fatal\ngeometry advisory list (both tiers).",
        +            "properties": {
        +              "assembly_slug": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "audit_trail": {
        +                "anyOf": [
        +                  {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.7 — paid-tier audit-trail entry.\n\nOne entry per BoQ row; `boq_row_index` ties to the row position in\n`ComputeResult.boq_rows`. `derivation` is the human-readable formula\nwalk-through; `formula` is the optional formal expression.",
        +                      "properties": {
        +                        "boq_row_index": {
        +                          "minimum": 0,
        +                          "type": "integer"
        +                        },
        +                        "derivation": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "formula": {
        +                          "anyOf": [
        +                            {
        +                              "type": "string"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ],
        +                          "default": null
        +                        },
        +                        "id": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "parameters_referenced": {
        +                          "items": {
        +                            "type": "string"
        +                          },
        +                          "type": "array"
        +                        }
        +                      },
        +                      "required": [
        +                        "id",
        +                        "boq_row_index",
        +                        "derivation"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "boq_rows": {
        +                "items": {
        +                  "additionalProperties": false,
        +                  "description": "Schema § 1.3 — a single bill row in the requested standard's format.\n\n`description` is the non-verbatim functional description per spec § 13.9 /\n§ 15 invariant — NEVER reproduces a standard's verbatim clause text.\n`rate` / `amount` ship null because rates are commodity data the customer\nowns; the engine's job is the measurement, not the pricing.",
        +                  "properties": {
        +                    "amount": {
        +                      "anyOf": [
        +                        {
        +                          "type": "number"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "attribution": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "audit_id": {
        +                      "anyOf": [
        +                        {
        +                          "type": "string"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "description": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "quantity": {
        +                      "minimum": 0,
        +                      "type": "number"
        +                    },
        +                    "rate": {
        +                      "anyOf": [
        +                        {
        +                          "type": "number"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "unit": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "work_section": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    }
        +                  },
        +                  "required": [
        +                    "work_section",
        +                    "description",
        +                    "quantity",
        +                    "unit",
        +                    "attribution"
        +                  ],
        +                  "type": "object"
        +                },
        +                "type": "array"
        +              },
        +              "drawing": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": false,
        +                    "description": "Schema § 1.6a — inline server-rendered SVG preview of the geometry.\n\nThe MCP mirror of the web ``/compute`` response's ``drawing`` field\n(``api.schemas.compute.DrawingRef``): the same on-screen dimensioned\ndrawing both tiers see in the workspace, surfaced on the MCP compute\nresponse so a chat client can render it inline (60th-fire item C). This\nis the on-screen preview — present on BOTH tiers per the free/paid\nboundary; the downloadable CAD artefacts (DXF / dimensioned PDF) remain\nthe paid differentiator via the export tools.\n\nDefined here rather than importing ``DrawingRef`` because the web\n``schemas`` package imports back into this module (``schemas.render``),\nso reusing it would create an import cycle — the MCP wire contract keeps\nits own copy, the same pattern as ``BoQRow`` / ``DrawingReference``.",
        +                    "properties": {
        +                      "entity_count": {
        +                        "minimum": 0,
        +                        "type": "integer"
        +                      },
        +                      "svg_b64": {
        +                        "minLength": 1,
        +                        "type": "string"
        +                      },
        +                      "unit_of_drawing": {
        +                        "const": "m",
        +                        "default": "m",
        +                        "type": "string"
        +                      },
        +                      "viewbox_height": {
        +                        "exclusiveMinimum": 0,
        +                        "type": "number"
        +                      },
        +                      "viewbox_width": {
        +                        "exclusiveMinimum": 0,
        +                        "type": "number"
        +                      },
        +                      "viewbox_x": {
        +                        "type": "number"
        +                      },
        +                      "viewbox_y": {
        +                        "type": "number"
        +                      }
        +                    },
        +                    "required": [
        +                      "svg_b64",
        +                      "viewbox_x",
        +                      "viewbox_y",
        +                      "viewbox_width",
        +                      "viewbox_height",
        +                      "entity_count"
        +                    ],
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "drawings": {
        +                "anyOf": [
        +                  {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.6 — paid-tier drawing artefact pointer.\n\n`url` is an R2-signed URL; expiry is carried in `_meta.deliverables.expires_at`\non the envelope (not duplicated here). `layers` is DXF-only; PDF/SVG\ncallers omit it.",
        +                      "properties": {
        +                        "drawing_type": {
        +                          "enum": [
        +                            "section",
        +                            "plan",
        +                            "elevation",
        +                            "isometric",
        +                            "detail"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "format": {
        +                          "enum": [
        +                            "DXF",
        +                            "PDF",
        +                            "SVG"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "layers": {
        +                          "anyOf": [
        +                            {
        +                              "items": {
        +                                "type": "string"
        +                              },
        +                              "type": "array"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ],
        +                          "default": null
        +                        },
        +                        "scale": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "sheet_size": {
        +                          "enum": [
        +                            "A1",
        +                            "A2",
        +                            "A3",
        +                            "A4"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "url": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "drawing_type",
        +                        "format",
        +                        "url",
        +                        "sheet_size",
        +                        "scale"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "parameters_used": {
        +                "additionalProperties": false,
        +                "description": "Schema § 1.2 — the parameter snapshot the engine actually used.\n\nSplits user-supplied values from engine defaults so customers can see\nwhich numbers came from them and which the engine filled in. Every\ndefaulted parameter SHOULD have a corresponding entry in `assumptions`\n— the bridge layer enforces this when wrapping engine output.",
        +                "properties": {
        +                  "assumptions": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "engine_defaults": {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  "user_supplied": {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  }
        +                },
        +                "type": "object"
        +              },
        +              "standard": {
        +                "enum": [
        +                  "CESMM4",
        +                  "NRM2",
        +                  "SMM7",
        +                  "MMHW"
        +                ],
        +                "type": "string"
        +              },
        +              "text_summary": {
        +                "maxLength": 2000,
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "totals_summary": {
        +                "additionalProperties": false,
        +                "description": "Schema § 1.4 — totals_summary as a typed wrapper around the free-form dict.\n\nWire shape is a flat object (`{\"concrete_m3\": {...}, \"rebar_t\": {...}}`).\nWe model it as `RootModel`-equivalent via `model_config(extra=\"allow\")`\n+ a single `__root__`-style `entries` dict. Pydantic v2 recommends\n`RootModel` for free-form roots; using a wrapper class keeps the import\nsurface uniform with the rest of this module.",
        +                "properties": {
        +                  "entries": {
        +                    "additionalProperties": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.4 — single material/work-class total entry.",
        +                      "properties": {
        +                        "quantity": {
        +                          "minimum": 0,
        +                          "type": "number"
        +                        },
        +                        "unit": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "quantity",
        +                        "unit"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "object"
        +                  }
        +                },
        +                "type": "object"
        +              },
        +              "warnings": {
        +                "items": {
        +                  "additionalProperties": false,
        +                  "description": "Schema § 1.8 — a non-fatal geometry advisory (56th-fire T2).\n\nThe wire projection of the engine's `core.GeometryWarning`. Advisory only:\na warning NEVER changes a measured quantity — it flags geometry that is\nvalid but likely a mistake (e.g. a stale dependent-height default). Present\non BOTH tiers — a correctness/safety signal, not a paid feature.",
        +                  "properties": {
        +                    "affected_params": {
        +                      "items": {
        +                        "type": "string"
        +                      },
        +                      "type": "array"
        +                    },
        +                    "code": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "detail": {
        +                      "additionalProperties": {
        +                        "type": "number"
        +                      },
        +                      "type": "object"
        +                    },
        +                    "message": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "severity": {
        +                      "enum": [
        +                        "info",
        +                        "advisory",
        +                        "caution"
        +                      ],
        +                      "type": "string"
        +                    }
        +                  },
        +                  "required": [
        +                    "code",
        +                    "severity",
        +                    "message"
        +                  ],
        +                  "type": "object"
        +                },
        +                "type": "array"
        +              }
        +            },
        +            "required": [
        +              "assembly_slug",
        +              "standard",
        +              "parameters_used",
        +              "boq_rows",
        +              "totals_summary",
        +              "text_summary"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      },
        +      "error": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        +            "properties": {
        +              "code": {
        +                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        +                "enum": [
        +                  "RATE_LIMIT_EXCEEDED",
        +                  "TIER_INSUFFICIENT",
        +                  "INVALID_INPUT",
        +                  "SCHEMA_VERSION_MISMATCH",
        +                  "SCHEMA_INVARIANT_VIOLATION",
        +                  "UPSTREAM_TIMEOUT",
        +                  "BACKEND_FAILURE",
        +                  "IP_BLOCKED",
        +                  "RESOURCE_NOT_FOUND",
        +                  "RENDER_FAILURE",
        +                  "OCR_LOW_CONFIDENCE",
        +                  "MANUAL_REVIEW_REQUIRED",
        +                  "ACCEPTANCE_REQUIRED",
        +                  "INVALID_TOKEN"
        +                ],
        +                "type": "string"
        +              },
        +              "details": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "message": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "recoverable": {
        +                "type": "boolean"
        +              },
        +              "retry_after_seconds": {
        +                "anyOf": [
        +                  {
        +                    "minimum": 0,
        +                    "type": "integer"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              }
        +            },
        +            "required": [
        +              "code",
        +              "message",
        +              "recoverable"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      }
        +    },
        +    "required": [
        +      "_meta"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "_meta": {
        +        "additionalProperties": false,
        +        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        +        "properties": {
        +          "deliverables": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        +                "properties": {
        +                  "docx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "dxf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "expires_at": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  },
        +                  "pdf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "xlsx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "expires_at"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "document_id": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "issued_at": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "output_mode": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Surfaces what a trimmed ``output_mode`` withheld from ``data``.\n\nA trimmed mode (``summary`` / ``material_schedule`` / ``boq`` /\n``boq_with_backup``) withholds\nalready-computed fields to keep the chat payload small. The withheld value\nreads to a client agent as \"capability missing\" (the box-culvert \"geometry\nbuilder isn't firing\" scare) rather than \"pared for size\": ``drawing`` and\n``audit_trail`` appear as ``null``, ``boq_rows`` as an empty list ``[]``\n(its type forbids ``null``) — both indistinguishable from a genuine absent\nresult. This names the withheld fields and the exact mode that brings each\nback, so the value is unambiguous. Absent on the default ``full_json`` mode\n— nothing is withheld, nothing to point at.",
        +                "properties": {
        +                  "mode": {
        +                    "enum": [
        +                      "summary",
        +                      "material_schedule",
        +                      "boq",
        +                      "boq_with_backup"
        +                    ],
        +                    "type": "string"
        +                  },
        +                  "omitted_fields": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "minItems": 1,
        +                    "type": "array"
        +                  },
        +                  "retrieve_with": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "mode",
        +                  "omitted_fields",
        +                  "retrieve_with"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "rate_limit_remaining": {
        +            "anyOf": [
        +              {
        +                "minimum": 0,
        +                "type": "integer"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "request_id": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "schema_version": {
        +            "const": "1.0.0",
        +            "default": "1.0.0",
        +            "type": "string"
        +          },
        +          "scope_boundary": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        +                "properties": {
        +                  "not_in_scope": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "produced": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "recommended_companions": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "type": "string"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "produced",
        +                  "not_in_scope"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tier": {
        +            "enum": [
        +              "free",
        +              "paid"
        +            ],
        +            "type": "string"
        +          },
        +          "tier_upgrade": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        +                "properties": {
        +                  "available_tiers": {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        +                      "properties": {
        +                        "billing": {
        +                          "enum": [
        +                            "one_off",
        +                            "monthly",
        +                            "annual"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "currency": {
        +                          "enum": [
        +                            "GBP",
        +                            "SGD",
        +                            "EUR",
        +                            "USD",
        +                            "CAD",
        +                            "AUD",
        +                            "NZD",
        +                            "MYR"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "display_name": {
        +                          "type": "string"
        +                        },
        +                        "price_local": {
        +                          "type": "number"
        +                        },
        +                        "tier_slug": {
        +                          "enum": [
        +                            "7_day_pass",
        +                            "solo",
        +                            "studio",
        +                            "practice"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "unlock_summary": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "tier_slug",
        +                        "display_name",
        +                        "price_local",
        +                        "currency",
        +                        "billing",
        +                        "unlock_summary"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "current_tier": {
        +                    "const": "free",
        +                    "default": "free",
        +                    "type": "string"
        +                  },
        +                  "pass_credit": {
        +                    "anyOf": [
        +                      {
        +                        "additionalProperties": false,
        +                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        +                        "properties": {
        +                          "amount_local": {
        +                            "type": "number"
        +                          },
        +                          "applies_to": {
        +                            "const": "solo_first_month",
        +                            "default": "solo_first_month",
        +                            "type": "string"
        +                          },
        +                          "currency": {
        +                            "type": "string"
        +                          },
        +                          "redeemable_until": {
        +                            "type": "string"
        +                          }
        +                        },
        +                        "required": [
        +                          "amount_local",
        +                          "currency",
        +                          "redeemable_until"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "pricing_url": {
        +                    "default": "https://civilquants.com/pricing",
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "available_tiers"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tos_url": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "upgrade_hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "warranty_disclaimer": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          }
        +        },
        +        "required": [
        +          "request_id",
        +          "issued_at",
        +          "tier"
        +        ],
        +        "type": "object"
        +      },
        +      "data": {
        +        "default": null,
        +        "title": "Data"
        +      },
        +      "error": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        +            "properties": {
        +              "code": {
        +                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        +                "enum": [
        +                  "RATE_LIMIT_EXCEEDED",
        +                  "TIER_INSUFFICIENT",
        +                  "INVALID_INPUT",
        +                  "SCHEMA_VERSION_MISMATCH",
        +                  "SCHEMA_INVARIANT_VIOLATION",
        +                  "UPSTREAM_TIMEOUT",
        +                  "BACKEND_FAILURE",
        +                  "IP_BLOCKED",
        +                  "RESOURCE_NOT_FOUND",
        +                  "RENDER_FAILURE",
        +                  "OCR_LOW_CONFIDENCE",
        +                  "MANUAL_REVIEW_REQUIRED",
        +                  "ACCEPTANCE_REQUIRED",
        +                  "INVALID_TOKEN"
        +                ],
        +                "type": "string"
        +              },
        +              "details": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "message": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "recoverable": {
        +                "type": "boolean"
        +              },
        +              "retry_after_seconds": {
        +                "anyOf": [
        +                  {
        +                    "minimum": 0,
        +                    "type": "integer"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              }
        +            },
        +            "required": [
        +              "code",
        +              "message",
        +              "recoverable"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      }
        +    },
        +    "required": [
        +      "_meta"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedcompute_headwall2 fields changed
      • changedInput schema / properties / output_mode / enum
        Previous value: -[
        -  "summary",
        -  "boq",
        -  "boq_with_backup",
        -  "full_json"
        -]New value: +[
        +  "summary",
        +  "material_schedule",
        +  "boq",
        +  "boq_with_backup",
        +  "full_json"
        +]
      • changedOutput schema / properties / result / anyOf
        Previous value: -[
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "_meta": {
        -        "additionalProperties": false,
        -        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        -        "properties": {
        -          "deliverables": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        -                "properties": {
        -                  "docx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "dxf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "expires_at": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  },
        -                  "pdf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "xlsx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "expires_at"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "document_id": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "issued_at": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "output_mode": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Surfaces what a trimmed ``output_mode`` withheld from ``data``.\n\nA trimmed mode (``summary`` / ``boq`` / ``boq_with_backup``) withholds\nalready-computed fields to keep the chat payload small. The withheld value\nreads to a client agent as \"capability missing\" (the box-culvert \"geometry\nbuilder isn't firing\" scare) rather than \"pared for size\": ``drawing`` and\n``audit_trail`` appear as ``null``, ``boq_rows`` as an empty list ``[]``\n(its type forbids ``null``) — both indistinguishable from a genuine absent\nresult. This names the withheld fields and the exact mode that brings each\nback, so the value is unambiguous. Absent on the default ``full_json`` mode\n— nothing is withheld, nothing to point at.",
        -                "properties": {
        -                  "mode": {
        -                    "enum": [
        -                      "summary",
        -                      "boq",
        -                      "boq_with_backup"
        -                    ],
        -                    "type": "string"
        -                  },
        -                  "omitted_fields": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "minItems": 1,
        -                    "type": "array"
        -                  },
        -                  "retrieve_with": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "mode",
        -                  "omitted_fields",
        -                  "retrieve_with"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "rate_limit_remaining": {
        -            "anyOf": [
        -              {
        -                "minimum": 0,
        -                "type": "integer"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "request_id": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "schema_version": {
        -            "const": "1.0.0",
        -            "default": "1.0.0",
        -            "type": "string"
        -          },
        -          "scope_boundary": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        -                "properties": {
        -                  "not_in_scope": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "produced": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "recommended_companions": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "type": "string"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "produced",
        -                  "not_in_scope"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tier": {
        -            "enum": [
        -              "free",
        -              "paid"
        -            ],
        -            "type": "string"
        -          },
        -          "tier_upgrade": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        -                "properties": {
        -                  "available_tiers": {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        -                      "properties": {
        -                        "billing": {
        -                          "enum": [
        -                            "one_off",
        -                            "monthly",
        -                            "annual"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "currency": {
        -                          "enum": [
        -                            "GBP",
        -                            "SGD",
        -                            "EUR",
        -                            "USD",
        -                            "CAD",
        -                            "AUD",
        -                            "NZD",
        -                            "MYR"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "display_name": {
        -                          "type": "string"
        -                        },
        -                        "price_local": {
        -                          "type": "number"
        -                        },
        -                        "tier_slug": {
        -                          "enum": [
        -                            "7_day_pass",
        -                            "solo",
        -                            "studio",
        -                            "practice"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "unlock_summary": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "tier_slug",
        -                        "display_name",
        -                        "price_local",
        -                        "currency",
        -                        "billing",
        -                        "unlock_summary"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "current_tier": {
        -                    "const": "free",
        -                    "default": "free",
        -                    "type": "string"
        -                  },
        -                  "pass_credit": {
        -                    "anyOf": [
        -                      {
        -                        "additionalProperties": false,
        -                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        -                        "properties": {
        -                          "amount_local": {
        -                            "type": "number"
        -                          },
        -                          "applies_to": {
        -                            "const": "solo_first_month",
        -                            "default": "solo_first_month",
        -                            "type": "string"
        -                          },
        -                          "currency": {
        -                            "type": "string"
        -                          },
        -                          "redeemable_until": {
        -                            "type": "string"
        -                          }
        -                        },
        -                        "required": [
        -                          "amount_local",
        -                          "currency",
        -                          "redeemable_until"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "pricing_url": {
        -                    "default": "https://civilquants.com/pricing",
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "available_tiers"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tos_url": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "upgrade_hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "warranty_disclaimer": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          }
        -        },
        -        "required": [
        -          "request_id",
        -          "issued_at",
        -          "tier"
        -        ],
        -        "type": "object"
        -      },
        -      "data": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Schema § 1.1 — the typed payload returned inside `MCPResponse[ComputeResult]`.\n\nFree-tier responses omit `drawings` (the downloadable CAD artefact\npointers — the paid differentiator); the bridge enforces this. The\n`audit_trail` and the inline `drawing` preview are present on BOTH tiers\n(V1 ALIGN / 60th-fire D + C). `text_summary` is bounded to 2000 chars —\nkeeps the LLM-facing summary token-cheap and forces longer narrative into\nBoQ row descriptions where it belongs. `warnings` is the non-fatal\ngeometry advisory list (both tiers).",
        -            "properties": {
        -              "assembly_slug": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "audit_trail": {
        -                "anyOf": [
        -                  {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.7 — paid-tier audit-trail entry.\n\nOne entry per BoQ row; `boq_row_index` ties to the row position in\n`ComputeResult.boq_rows`. `derivation` is the human-readable formula\nwalk-through; `formula` is the optional formal expression.",
        -                      "properties": {
        -                        "boq_row_index": {
        -                          "minimum": 0,
        -                          "type": "integer"
        -                        },
        -                        "derivation": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "formula": {
        -                          "anyOf": [
        -                            {
        -                              "type": "string"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ],
        -                          "default": null
        -                        },
        -                        "id": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "parameters_referenced": {
        -                          "items": {
        -                            "type": "string"
        -                          },
        -                          "type": "array"
        -                        }
        -                      },
        -                      "required": [
        -                        "id",
        -                        "boq_row_index",
        -                        "derivation"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "boq_rows": {
        -                "items": {
        -                  "additionalProperties": false,
        -                  "description": "Schema § 1.3 — a single bill row in the requested standard's format.\n\n`description` is the non-verbatim functional description per spec § 13.9 /\n§ 15 invariant — NEVER reproduces a standard's verbatim clause text.\n`rate` / `amount` ship null because rates are commodity data the customer\nowns; the engine's job is the measurement, not the pricing.",
        -                  "properties": {
        -                    "amount": {
        -                      "anyOf": [
        -                        {
        -                          "type": "number"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "attribution": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "audit_id": {
        -                      "anyOf": [
        -                        {
        -                          "type": "string"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "description": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "quantity": {
        -                      "minimum": 0,
        -                      "type": "number"
        -                    },
        -                    "rate": {
        -                      "anyOf": [
        -                        {
        -                          "type": "number"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "unit": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "work_section": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    }
        -                  },
        -                  "required": [
        -                    "work_section",
        -                    "description",
        -                    "quantity",
        -                    "unit",
        -                    "attribution"
        -                  ],
        -                  "type": "object"
        -                },
        -                "type": "array"
        -              },
        -              "drawing": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": false,
        -                    "description": "Schema § 1.6a — inline server-rendered SVG preview of the geometry.\n\nThe MCP mirror of the web ``/compute`` response's ``drawing`` field\n(``api.schemas.compute.DrawingRef``): the same on-screen dimensioned\ndrawing both tiers see in the workspace, surfaced on the MCP compute\nresponse so a chat client can render it inline (60th-fire item C). This\nis the on-screen preview — present on BOTH tiers per the free/paid\nboundary; the downloadable CAD artefacts (DXF / dimensioned PDF) remain\nthe paid differentiator via the export tools.\n\nDefined here rather than importing ``DrawingRef`` because the web\n``schemas`` package imports back into this module (``schemas.render``),\nso reusing it would create an import cycle — the MCP wire contract keeps\nits own copy, the same pattern as ``BoQRow`` / ``DrawingReference``.",
        -                    "properties": {
        -                      "entity_count": {
        -                        "minimum": 0,
        -                        "type": "integer"
        -                      },
        -                      "svg_b64": {
        -                        "minLength": 1,
        -                        "type": "string"
        -                      },
        -                      "unit_of_drawing": {
        -                        "const": "m",
        -                        "default": "m",
        -                        "type": "string"
        -                      },
        -                      "viewbox_height": {
        -                        "exclusiveMinimum": 0,
        -                        "type": "number"
        -                      },
        -                      "viewbox_width": {
        -                        "exclusiveMinimum": 0,
        -                        "type": "number"
        -                      },
        -                      "viewbox_x": {
        -                        "type": "number"
        -                      },
        -                      "viewbox_y": {
        -                        "type": "number"
        -                      }
        -                    },
        -                    "required": [
        -                      "svg_b64",
        -                      "viewbox_x",
        -                      "viewbox_y",
        -                      "viewbox_width",
        -                      "viewbox_height",
        -                      "entity_count"
        -                    ],
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "drawings": {
        -                "anyOf": [
        -                  {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.6 — paid-tier drawing artefact pointer.\n\n`url` is an R2-signed URL; expiry is carried in `_meta.deliverables.expires_at`\non the envelope (not duplicated here). `layers` is DXF-only; PDF/SVG\ncallers omit it.",
        -                      "properties": {
        -                        "drawing_type": {
        -                          "enum": [
        -                            "section",
        -                            "plan",
        -                            "elevation",
        -                            "isometric",
        -                            "detail"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "format": {
        -                          "enum": [
        -                            "DXF",
        -                            "PDF",
        -                            "SVG"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "layers": {
        -                          "anyOf": [
        -                            {
        -                              "items": {
        -                                "type": "string"
        -                              },
        -                              "type": "array"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ],
        -                          "default": null
        -                        },
        -                        "scale": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "sheet_size": {
        -                          "enum": [
        -                            "A1",
        -                            "A2",
        -                            "A3",
        -                            "A4"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "url": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "drawing_type",
        -                        "format",
        -                        "url",
        -                        "sheet_size",
        -                        "scale"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "parameters_used": {
        -                "additionalProperties": false,
        -                "description": "Schema § 1.2 — the parameter snapshot the engine actually used.\n\nSplits user-supplied values from engine defaults so customers can see\nwhich numbers came from them and which the engine filled in. Every\ndefaulted parameter SHOULD have a corresponding entry in `assumptions`\n— the bridge layer enforces this when wrapping engine output.",
        -                "properties": {
        -                  "assumptions": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "engine_defaults": {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  "user_supplied": {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  }
        -                },
        -                "type": "object"
        -              },
        -              "standard": {
        -                "enum": [
        -                  "CESMM4",
        -                  "NRM2",
        -                  "SMM7",
        -                  "MMHW"
        -                ],
        -                "type": "string"
        -              },
        -              "text_summary": {
        -                "maxLength": 2000,
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "totals_summary": {
        -                "additionalProperties": false,
        -                "description": "Schema § 1.4 — totals_summary as a typed wrapper around the free-form dict.\n\nWire shape is a flat object (`{\"concrete_m3\": {...}, \"rebar_t\": {...}}`).\nWe model it as `RootModel`-equivalent via `model_config(extra=\"allow\")`\n+ a single `__root__`-style `entries` dict. Pydantic v2 recommends\n`RootModel` for free-form roots; using a wrapper class keeps the import\nsurface uniform with the rest of this module.",
        -                "properties": {
        -                  "entries": {
        -                    "additionalProperties": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.4 — single material/work-class total entry.",
        -                      "properties": {
        -                        "quantity": {
        -                          "minimum": 0,
        -                          "type": "number"
        -                        },
        -                        "unit": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "quantity",
        -                        "unit"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "object"
        -                  }
        -                },
        -                "type": "object"
        -              },
        -              "warnings": {
        -                "items": {
        -                  "additionalProperties": false,
        -                  "description": "Schema § 1.8 — a non-fatal geometry advisory (56th-fire T2).\n\nThe wire projection of the engine's `core.GeometryWarning`. Advisory only:\na warning NEVER changes a measured quantity — it flags geometry that is\nvalid but likely a mistake (e.g. a stale dependent-height default). Present\non BOTH tiers — a correctness/safety signal, not a paid feature.",
        -                  "properties": {
        -                    "affected_params": {
        -                      "items": {
        -                        "type": "string"
        -                      },
        -                      "type": "array"
        -                    },
        -                    "code": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "detail": {
        -                      "additionalProperties": {
        -                        "type": "number"
        -                      },
        -                      "type": "object"
        -                    },
        -                    "message": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "severity": {
        -                      "enum": [
        -                        "info",
        -                        "advisory",
        -                        "caution"
        -                      ],
        -                      "type": "string"
        -                    }
        -                  },
        -                  "required": [
        -                    "code",
        -                    "severity",
        -                    "message"
        -                  ],
        -                  "type": "object"
        -                },
        -                "type": "array"
        -              }
        -            },
        -            "required": [
        -              "assembly_slug",
        -              "standard",
        -              "parameters_used",
        -              "boq_rows",
        -              "totals_summary",
        -              "text_summary"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      },
        -      "error": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        -            "properties": {
        -              "code": {
        -                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        -                "enum": [
        -                  "RATE_LIMIT_EXCEEDED",
        -                  "TIER_INSUFFICIENT",
        -                  "INVALID_INPUT",
        -                  "SCHEMA_VERSION_MISMATCH",
        -                  "SCHEMA_INVARIANT_VIOLATION",
        -                  "UPSTREAM_TIMEOUT",
        -                  "BACKEND_FAILURE",
        -                  "IP_BLOCKED",
        -                  "RESOURCE_NOT_FOUND",
        -                  "RENDER_FAILURE",
        -                  "OCR_LOW_CONFIDENCE",
        -                  "MANUAL_REVIEW_REQUIRED",
        -                  "ACCEPTANCE_REQUIRED",
        -                  "INVALID_TOKEN"
        -                ],
        -                "type": "string"
        -              },
        -              "details": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "message": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "recoverable": {
        -                "type": "boolean"
        -              },
        -              "retry_after_seconds": {
        -                "anyOf": [
        -                  {
        -                    "minimum": 0,
        -                    "type": "integer"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              }
        -            },
        -            "required": [
        -              "code",
        -              "message",
        -              "recoverable"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      }
        -    },
        -    "required": [
        -      "_meta"
        -    ],
        -    "type": "object"
        -  },
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "_meta": {
        -        "additionalProperties": false,
        -        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        -        "properties": {
        -          "deliverables": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        -                "properties": {
        -                  "docx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "dxf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "expires_at": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  },
        -                  "pdf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "xlsx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "expires_at"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "document_id": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "issued_at": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "output_mode": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Surfaces what a trimmed ``output_mode`` withheld from ``data``.\n\nA trimmed mode (``summary`` / ``boq`` / ``boq_with_backup``) withholds\nalready-computed fields to keep the chat payload small. The withheld value\nreads to a client agent as \"capability missing\" (the box-culvert \"geometry\nbuilder isn't firing\" scare) rather than \"pared for size\": ``drawing`` and\n``audit_trail`` appear as ``null``, ``boq_rows`` as an empty list ``[]``\n(its type forbids ``null``) — both indistinguishable from a genuine absent\nresult. This names the withheld fields and the exact mode that brings each\nback, so the value is unambiguous. Absent on the default ``full_json`` mode\n— nothing is withheld, nothing to point at.",
        -                "properties": {
        -                  "mode": {
        -                    "enum": [
        -                      "summary",
        -                      "boq",
        -                      "boq_with_backup"
        -                    ],
        -                    "type": "string"
        -                  },
        -                  "omitted_fields": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "minItems": 1,
        -                    "type": "array"
        -                  },
        -                  "retrieve_with": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "mode",
        -                  "omitted_fields",
        -                  "retrieve_with"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "rate_limit_remaining": {
        -            "anyOf": [
        -              {
        -                "minimum": 0,
        -                "type": "integer"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "request_id": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "schema_version": {
        -            "const": "1.0.0",
        -            "default": "1.0.0",
        -            "type": "string"
        -          },
        -          "scope_boundary": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        -                "properties": {
        -                  "not_in_scope": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "produced": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "recommended_companions": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "type": "string"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "produced",
        -                  "not_in_scope"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tier": {
        -            "enum": [
        -              "free",
        -              "paid"
        -            ],
        -            "type": "string"
        -          },
        -          "tier_upgrade": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        -                "properties": {
        -                  "available_tiers": {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        -                      "properties": {
        -                        "billing": {
        -                          "enum": [
        -                            "one_off",
        -                            "monthly",
        -                            "annual"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "currency": {
        -                          "enum": [
        -                            "GBP",
        -                            "SGD",
        -                            "EUR",
        -                            "USD",
        -                            "CAD",
        -                            "AUD",
        -                            "NZD",
        -                            "MYR"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "display_name": {
        -                          "type": "string"
        -                        },
        -                        "price_local": {
        -                          "type": "number"
        -                        },
        -                        "tier_slug": {
        -                          "enum": [
        -                            "7_day_pass",
        -                            "solo",
        -                            "studio",
        -                            "practice"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "unlock_summary": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "tier_slug",
        -                        "display_name",
        -                        "price_local",
        -                        "currency",
        -                        "billing",
        -                        "unlock_summary"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "current_tier": {
        -                    "const": "free",
        -                    "default": "free",
        -                    "type": "string"
        -                  },
        -                  "pass_credit": {
        -                    "anyOf": [
        -                      {
        -                        "additionalProperties": false,
        -                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        -                        "properties": {
        -                          "amount_local": {
        -                            "type": "number"
        -                          },
        -                          "applies_to": {
        -                            "const": "solo_first_month",
        -                            "default": "solo_first_month",
        -                            "type": "string"
        -                          },
        -                          "currency": {
        -                            "type": "string"
        -                          },
        -                          "redeemable_until": {
        -                            "type": "string"
        -                          }
        -                        },
        -                        "required": [
        -                          "amount_local",
        -                          "currency",
        -                          "redeemable_until"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "pricing_url": {
        -                    "default": "https://civilquants.com/pricing",
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "available_tiers"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tos_url": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "upgrade_hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "warranty_disclaimer": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          }
        -        },
        -        "required": [
        -          "request_id",
        -          "issued_at",
        -          "tier"
        -        ],
        -        "type": "object"
        -      },
        -      "data": {
        -        "default": null,
        -        "title": "Data"
        -      },
        -      "error": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        -            "properties": {
        -              "code": {
        -                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        -                "enum": [
        -                  "RATE_LIMIT_EXCEEDED",
        -                  "TIER_INSUFFICIENT",
        -                  "INVALID_INPUT",
        -                  "SCHEMA_VERSION_MISMATCH",
        -                  "SCHEMA_INVARIANT_VIOLATION",
        -                  "UPSTREAM_TIMEOUT",
        -                  "BACKEND_FAILURE",
        -                  "IP_BLOCKED",
        -                  "RESOURCE_NOT_FOUND",
        -                  "RENDER_FAILURE",
        -                  "OCR_LOW_CONFIDENCE",
        -                  "MANUAL_REVIEW_REQUIRED",
        -                  "ACCEPTANCE_REQUIRED",
        -                  "INVALID_TOKEN"
        -                ],
        -                "type": "string"
        -              },
        -              "details": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "message": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "recoverable": {
        -                "type": "boolean"
        -              },
        -              "retry_after_seconds": {
        -                "anyOf": [
        -                  {
        -                    "minimum": 0,
        -                    "type": "integer"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              }
        -            },
        -            "required": [
        -              "code",
        -              "message",
        -              "recoverable"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      }
        -    },
        -    "required": [
        -      "_meta"
        -    ],
        -    "type": "object"
        -  }
        -]New value: +[
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "_meta": {
        +        "additionalProperties": false,
        +        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        +        "properties": {
        +          "deliverables": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        +                "properties": {
        +                  "docx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "dxf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "expires_at": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  },
        +                  "pdf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "xlsx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "expires_at"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "document_id": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "issued_at": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "output_mode": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Surfaces what a trimmed ``output_mode`` withheld from ``data``.\n\nA trimmed mode (``summary`` / ``material_schedule`` / ``boq`` /\n``boq_with_backup``) withholds\nalready-computed fields to keep the chat payload small. The withheld value\nreads to a client agent as \"capability missing\" (the box-culvert \"geometry\nbuilder isn't firing\" scare) rather than \"pared for size\": ``drawing`` and\n``audit_trail`` appear as ``null``, ``boq_rows`` as an empty list ``[]``\n(its type forbids ``null``) — both indistinguishable from a genuine absent\nresult. This names the withheld fields and the exact mode that brings each\nback, so the value is unambiguous. Absent on the default ``full_json`` mode\n— nothing is withheld, nothing to point at.",
        +                "properties": {
        +                  "mode": {
        +                    "enum": [
        +                      "summary",
        +                      "material_schedule",
        +                      "boq",
        +                      "boq_with_backup"
        +                    ],
        +                    "type": "string"
        +                  },
        +                  "omitted_fields": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "minItems": 1,
        +                    "type": "array"
        +                  },
        +                  "retrieve_with": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "mode",
        +                  "omitted_fields",
        +                  "retrieve_with"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "rate_limit_remaining": {
        +            "anyOf": [
        +              {
        +                "minimum": 0,
        +                "type": "integer"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "request_id": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "schema_version": {
        +            "const": "1.0.0",
        +            "default": "1.0.0",
        +            "type": "string"
        +          },
        +          "scope_boundary": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        +                "properties": {
        +                  "not_in_scope": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "produced": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "recommended_companions": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "type": "string"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "produced",
        +                  "not_in_scope"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tier": {
        +            "enum": [
        +              "free",
        +              "paid"
        +            ],
        +            "type": "string"
        +          },
        +          "tier_upgrade": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        +                "properties": {
        +                  "available_tiers": {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        +                      "properties": {
        +                        "billing": {
        +                          "enum": [
        +                            "one_off",
        +                            "monthly",
        +                            "annual"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "currency": {
        +                          "enum": [
        +                            "GBP",
        +                            "SGD",
        +                            "EUR",
        +                            "USD",
        +                            "CAD",
        +                            "AUD",
        +                            "NZD",
        +                            "MYR"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "display_name": {
        +                          "type": "string"
        +                        },
        +                        "price_local": {
        +                          "type": "number"
        +                        },
        +                        "tier_slug": {
        +                          "enum": [
        +                            "7_day_pass",
        +                            "solo",
        +                            "studio",
        +                            "practice"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "unlock_summary": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "tier_slug",
        +                        "display_name",
        +                        "price_local",
        +                        "currency",
        +                        "billing",
        +                        "unlock_summary"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "current_tier": {
        +                    "const": "free",
        +                    "default": "free",
        +                    "type": "string"
        +                  },
        +                  "pass_credit": {
        +                    "anyOf": [
        +                      {
        +                        "additionalProperties": false,
        +                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        +                        "properties": {
        +                          "amount_local": {
        +                            "type": "number"
        +                          },
        +                          "applies_to": {
        +                            "const": "solo_first_month",
        +                            "default": "solo_first_month",
        +                            "type": "string"
        +                          },
        +                          "currency": {
        +                            "type": "string"
        +                          },
        +                          "redeemable_until": {
        +                            "type": "string"
        +                          }
        +                        },
        +                        "required": [
        +                          "amount_local",
        +                          "currency",
        +                          "redeemable_until"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "pricing_url": {
        +                    "default": "https://civilquants.com/pricing",
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "available_tiers"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tos_url": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "upgrade_hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "warranty_disclaimer": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          }
        +        },
        +        "required": [
        +          "request_id",
        +          "issued_at",
        +          "tier"
        +        ],
        +        "type": "object"
        +      },
        +      "data": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Schema § 1.1 — the typed payload returned inside `MCPResponse[ComputeResult]`.\n\nFree-tier responses omit `drawings` (the downloadable CAD artefact\npointers — the paid differentiator); the bridge enforces this. The\n`audit_trail` and the inline `drawing` preview are present on BOTH tiers\n(V1 ALIGN / 60th-fire D + C). `text_summary` is bounded to 2000 chars —\nkeeps the LLM-facing summary token-cheap and forces longer narrative into\nBoQ row descriptions where it belongs. `warnings` is the non-fatal\ngeometry advisory list (both tiers).",
        +            "properties": {
        +              "assembly_slug": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "audit_trail": {
        +                "anyOf": [
        +                  {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.7 — paid-tier audit-trail entry.\n\nOne entry per BoQ row; `boq_row_index` ties to the row position in\n`ComputeResult.boq_rows`. `derivation` is the human-readable formula\nwalk-through; `formula` is the optional formal expression.",
        +                      "properties": {
        +                        "boq_row_index": {
        +                          "minimum": 0,
        +                          "type": "integer"
        +                        },
        +                        "derivation": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "formula": {
        +                          "anyOf": [
        +                            {
        +                              "type": "string"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ],
        +                          "default": null
        +                        },
        +                        "id": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "parameters_referenced": {
        +                          "items": {
        +                            "type": "string"
        +                          },
        +                          "type": "array"
        +                        }
        +                      },
        +                      "required": [
        +                        "id",
        +                        "boq_row_index",
        +                        "derivation"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "boq_rows": {
        +                "items": {
        +                  "additionalProperties": false,
        +                  "description": "Schema § 1.3 — a single bill row in the requested standard's format.\n\n`description` is the non-verbatim functional description per spec § 13.9 /\n§ 15 invariant — NEVER reproduces a standard's verbatim clause text.\n`rate` / `amount` ship null because rates are commodity data the customer\nowns; the engine's job is the measurement, not the pricing.",
        +                  "properties": {
        +                    "amount": {
        +                      "anyOf": [
        +                        {
        +                          "type": "number"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "attribution": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "audit_id": {
        +                      "anyOf": [
        +                        {
        +                          "type": "string"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "description": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "quantity": {
        +                      "minimum": 0,
        +                      "type": "number"
        +                    },
        +                    "rate": {
        +                      "anyOf": [
        +                        {
        +                          "type": "number"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "unit": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "work_section": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    }
        +                  },
        +                  "required": [
        +                    "work_section",
        +                    "description",
        +                    "quantity",
        +                    "unit",
        +                    "attribution"
        +                  ],
        +                  "type": "object"
        +                },
        +                "type": "array"
        +              },
        +              "drawing": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": false,
        +                    "description": "Schema § 1.6a — inline server-rendered SVG preview of the geometry.\n\nThe MCP mirror of the web ``/compute`` response's ``drawing`` field\n(``api.schemas.compute.DrawingRef``): the same on-screen dimensioned\ndrawing both tiers see in the workspace, surfaced on the MCP compute\nresponse so a chat client can render it inline (60th-fire item C). This\nis the on-screen preview — present on BOTH tiers per the free/paid\nboundary; the downloadable CAD artefacts (DXF / dimensioned PDF) remain\nthe paid differentiator via the export tools.\n\nDefined here rather than importing ``DrawingRef`` because the web\n``schemas`` package imports back into this module (``schemas.render``),\nso reusing it would create an import cycle — the MCP wire contract keeps\nits own copy, the same pattern as ``BoQRow`` / ``DrawingReference``.",
        +                    "properties": {
        +                      "entity_count": {
        +                        "minimum": 0,
        +                        "type": "integer"
        +                      },
        +                      "svg_b64": {
        +                        "minLength": 1,
        +                        "type": "string"
        +                      },
        +                      "unit_of_drawing": {
        +                        "const": "m",
        +                        "default": "m",
        +                        "type": "string"
        +                      },
        +                      "viewbox_height": {
        +                        "exclusiveMinimum": 0,
        +                        "type": "number"
        +                      },
        +                      "viewbox_width": {
        +                        "exclusiveMinimum": 0,
        +                        "type": "number"
        +                      },
        +                      "viewbox_x": {
        +                        "type": "number"
        +                      },
        +                      "viewbox_y": {
        +                        "type": "number"
        +                      }
        +                    },
        +                    "required": [
        +                      "svg_b64",
        +                      "viewbox_x",
        +                      "viewbox_y",
        +                      "viewbox_width",
        +                      "viewbox_height",
        +                      "entity_count"
        +                    ],
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "drawings": {
        +                "anyOf": [
        +                  {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.6 — paid-tier drawing artefact pointer.\n\n`url` is an R2-signed URL; expiry is carried in `_meta.deliverables.expires_at`\non the envelope (not duplicated here). `layers` is DXF-only; PDF/SVG\ncallers omit it.",
        +                      "properties": {
        +                        "drawing_type": {
        +                          "enum": [
        +                            "section",
        +                            "plan",
        +                            "elevation",
        +                            "isometric",
        +                            "detail"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "format": {
        +                          "enum": [
        +                            "DXF",
        +                            "PDF",
        +                            "SVG"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "layers": {
        +                          "anyOf": [
        +                            {
        +                              "items": {
        +                                "type": "string"
        +                              },
        +                              "type": "array"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ],
        +                          "default": null
        +                        },
        +                        "scale": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "sheet_size": {
        +                          "enum": [
        +                            "A1",
        +                            "A2",
        +                            "A3",
        +                            "A4"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "url": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "drawing_type",
        +                        "format",
        +                        "url",
        +                        "sheet_size",
        +                        "scale"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "parameters_used": {
        +                "additionalProperties": false,
        +                "description": "Schema § 1.2 — the parameter snapshot the engine actually used.\n\nSplits user-supplied values from engine defaults so customers can see\nwhich numbers came from them and which the engine filled in. Every\ndefaulted parameter SHOULD have a corresponding entry in `assumptions`\n— the bridge layer enforces this when wrapping engine output.",
        +                "properties": {
        +                  "assumptions": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "engine_defaults": {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  "user_supplied": {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  }
        +                },
        +                "type": "object"
        +              },
        +              "standard": {
        +                "enum": [
        +                  "CESMM4",
        +                  "NRM2",
        +                  "SMM7",
        +                  "MMHW"
        +                ],
        +                "type": "string"
        +              },
        +              "text_summary": {
        +                "maxLength": 2000,
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "totals_summary": {
        +                "additionalProperties": false,
        +                "description": "Schema § 1.4 — totals_summary as a typed wrapper around the free-form dict.\n\nWire shape is a flat object (`{\"concrete_m3\": {...}, \"rebar_t\": {...}}`).\nWe model it as `RootModel`-equivalent via `model_config(extra=\"allow\")`\n+ a single `__root__`-style `entries` dict. Pydantic v2 recommends\n`RootModel` for free-form roots; using a wrapper class keeps the import\nsurface uniform with the rest of this module.",
        +                "properties": {
        +                  "entries": {
        +                    "additionalProperties": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.4 — single material/work-class total entry.",
        +                      "properties": {
        +                        "quantity": {
        +                          "minimum": 0,
        +                          "type": "number"
        +                        },
        +                        "unit": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "quantity",
        +                        "unit"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "object"
        +                  }
        +                },
        +                "type": "object"
        +              },
        +              "warnings": {
        +                "items": {
        +                  "additionalProperties": false,
        +                  "description": "Schema § 1.8 — a non-fatal geometry advisory (56th-fire T2).\n\nThe wire projection of the engine's `core.GeometryWarning`. Advisory only:\na warning NEVER changes a measured quantity — it flags geometry that is\nvalid but likely a mistake (e.g. a stale dependent-height default). Present\non BOTH tiers — a correctness/safety signal, not a paid feature.",
        +                  "properties": {
        +                    "affected_params": {
        +                      "items": {
        +                        "type": "string"
        +                      },
        +                      "type": "array"
        +                    },
        +                    "code": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "detail": {
        +                      "additionalProperties": {
        +                        "type": "number"
        +                      },
        +                      "type": "object"
        +                    },
        +                    "message": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "severity": {
        +                      "enum": [
        +                        "info",
        +                        "advisory",
        +                        "caution"
        +                      ],
        +                      "type": "string"
        +                    }
        +                  },
        +                  "required": [
        +                    "code",
        +                    "severity",
        +                    "message"
        +                  ],
        +                  "type": "object"
        +                },
        +                "type": "array"
        +              }
        +            },
        +            "required": [
        +              "assembly_slug",
        +              "standard",
        +              "parameters_used",
        +              "boq_rows",
        +              "totals_summary",
        +              "text_summary"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      },
        +      "error": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        +            "properties": {
        +              "code": {
        +                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        +                "enum": [
        +                  "RATE_LIMIT_EXCEEDED",
        +                  "TIER_INSUFFICIENT",
        +                  "INVALID_INPUT",
        +                  "SCHEMA_VERSION_MISMATCH",
        +                  "SCHEMA_INVARIANT_VIOLATION",
        +                  "UPSTREAM_TIMEOUT",
        +                  "BACKEND_FAILURE",
        +                  "IP_BLOCKED",
        +                  "RESOURCE_NOT_FOUND",
        +                  "RENDER_FAILURE",
        +                  "OCR_LOW_CONFIDENCE",
        +                  "MANUAL_REVIEW_REQUIRED",
        +                  "ACCEPTANCE_REQUIRED",
        +                  "INVALID_TOKEN"
        +                ],
        +                "type": "string"
        +              },
        +              "details": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "message": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "recoverable": {
        +                "type": "boolean"
        +              },
        +              "retry_after_seconds": {
        +                "anyOf": [
        +                  {
        +                    "minimum": 0,
        +                    "type": "integer"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              }
        +            },
        +            "required": [
        +              "code",
        +              "message",
        +              "recoverable"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      }
        +    },
        +    "required": [
        +      "_meta"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "_meta": {
        +        "additionalProperties": false,
        +        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        +        "properties": {
        +          "deliverables": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        +                "properties": {
        +                  "docx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "dxf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "expires_at": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  },
        +                  "pdf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "xlsx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "expires_at"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "document_id": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "issued_at": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "output_mode": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Surfaces what a trimmed ``output_mode`` withheld from ``data``.\n\nA trimmed mode (``summary`` / ``material_schedule`` / ``boq`` /\n``boq_with_backup``) withholds\nalready-computed fields to keep the chat payload small. The withheld value\nreads to a client agent as \"capability missing\" (the box-culvert \"geometry\nbuilder isn't firing\" scare) rather than \"pared for size\": ``drawing`` and\n``audit_trail`` appear as ``null``, ``boq_rows`` as an empty list ``[]``\n(its type forbids ``null``) — both indistinguishable from a genuine absent\nresult. This names the withheld fields and the exact mode that brings each\nback, so the value is unambiguous. Absent on the default ``full_json`` mode\n— nothing is withheld, nothing to point at.",
        +                "properties": {
        +                  "mode": {
        +                    "enum": [
        +                      "summary",
        +                      "material_schedule",
        +                      "boq",
        +                      "boq_with_backup"
        +                    ],
        +                    "type": "string"
        +                  },
        +                  "omitted_fields": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "minItems": 1,
        +                    "type": "array"
        +                  },
        +                  "retrieve_with": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "mode",
        +                  "omitted_fields",
        +                  "retrieve_with"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "rate_limit_remaining": {
        +            "anyOf": [
        +              {
        +                "minimum": 0,
        +                "type": "integer"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "request_id": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "schema_version": {
        +            "const": "1.0.0",
        +            "default": "1.0.0",
        +            "type": "string"
        +          },
        +          "scope_boundary": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        +                "properties": {
        +                  "not_in_scope": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "produced": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "recommended_companions": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "type": "string"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "produced",
        +                  "not_in_scope"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tier": {
        +            "enum": [
        +              "free",
        +              "paid"
        +            ],
        +            "type": "string"
        +          },
        +          "tier_upgrade": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        +                "properties": {
        +                  "available_tiers": {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        +                      "properties": {
        +                        "billing": {
        +                          "enum": [
        +                            "one_off",
        +                            "monthly",
        +                            "annual"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "currency": {
        +                          "enum": [
        +                            "GBP",
        +                            "SGD",
        +                            "EUR",
        +                            "USD",
        +                            "CAD",
        +                            "AUD",
        +                            "NZD",
        +                            "MYR"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "display_name": {
        +                          "type": "string"
        +                        },
        +                        "price_local": {
        +                          "type": "number"
        +                        },
        +                        "tier_slug": {
        +                          "enum": [
        +                            "7_day_pass",
        +                            "solo",
        +                            "studio",
        +                            "practice"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "unlock_summary": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "tier_slug",
        +                        "display_name",
        +                        "price_local",
        +                        "currency",
        +                        "billing",
        +                        "unlock_summary"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "current_tier": {
        +                    "const": "free",
        +                    "default": "free",
        +                    "type": "string"
        +                  },
        +                  "pass_credit": {
        +                    "anyOf": [
        +                      {
        +                        "additionalProperties": false,
        +                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        +                        "properties": {
        +                          "amount_local": {
        +                            "type": "number"
        +                          },
        +                          "applies_to": {
        +                            "const": "solo_first_month",
        +                            "default": "solo_first_month",
        +                            "type": "string"
        +                          },
        +                          "currency": {
        +                            "type": "string"
        +                          },
        +                          "redeemable_until": {
        +                            "type": "string"
        +                          }
        +                        },
        +                        "required": [
        +                          "amount_local",
        +                          "currency",
        +                          "redeemable_until"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "pricing_url": {
        +                    "default": "https://civilquants.com/pricing",
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "available_tiers"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tos_url": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "upgrade_hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "warranty_disclaimer": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          }
        +        },
        +        "required": [
        +          "request_id",
        +          "issued_at",
        +          "tier"
        +        ],
        +        "type": "object"
        +      },
        +      "data": {
        +        "default": null,
        +        "title": "Data"
        +      },
        +      "error": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        +            "properties": {
        +              "code": {
        +                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        +                "enum": [
        +                  "RATE_LIMIT_EXCEEDED",
        +                  "TIER_INSUFFICIENT",
        +                  "INVALID_INPUT",
        +                  "SCHEMA_VERSION_MISMATCH",
        +                  "SCHEMA_INVARIANT_VIOLATION",
        +                  "UPSTREAM_TIMEOUT",
        +                  "BACKEND_FAILURE",
        +                  "IP_BLOCKED",
        +                  "RESOURCE_NOT_FOUND",
        +                  "RENDER_FAILURE",
        +                  "OCR_LOW_CONFIDENCE",
        +                  "MANUAL_REVIEW_REQUIRED",
        +                  "ACCEPTANCE_REQUIRED",
        +                  "INVALID_TOKEN"
        +                ],
        +                "type": "string"
        +              },
        +              "details": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "message": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "recoverable": {
        +                "type": "boolean"
        +              },
        +              "retry_after_seconds": {
        +                "anyOf": [
        +                  {
        +                    "minimum": 0,
        +                    "type": "integer"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              }
        +            },
        +            "required": [
        +              "code",
        +              "message",
        +              "recoverable"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      }
        +    },
        +    "required": [
        +      "_meta"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedcompute_headwall_attenuation_outlet2 fields changed
      • changedInput schema / properties / output_mode / enum
        Previous value: -[
        -  "summary",
        -  "boq",
        -  "boq_with_backup",
        -  "full_json"
        -]New value: +[
        +  "summary",
        +  "material_schedule",
        +  "boq",
        +  "boq_with_backup",
        +  "full_json"
        +]
      • changedOutput schema / properties / result / anyOf
        Previous value: -[
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "_meta": {
        -        "additionalProperties": false,
        -        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        -        "properties": {
        -          "deliverables": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        -                "properties": {
        -                  "docx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "dxf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "expires_at": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  },
        -                  "pdf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "xlsx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "expires_at"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "document_id": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "issued_at": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "output_mode": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Surfaces what a trimmed ``output_mode`` withheld from ``data``.\n\nA trimmed mode (``summary`` / ``boq`` / ``boq_with_backup``) withholds\nalready-computed fields to keep the chat payload small. The withheld value\nreads to a client agent as \"capability missing\" (the box-culvert \"geometry\nbuilder isn't firing\" scare) rather than \"pared for size\": ``drawing`` and\n``audit_trail`` appear as ``null``, ``boq_rows`` as an empty list ``[]``\n(its type forbids ``null``) — both indistinguishable from a genuine absent\nresult. This names the withheld fields and the exact mode that brings each\nback, so the value is unambiguous. Absent on the default ``full_json`` mode\n— nothing is withheld, nothing to point at.",
        -                "properties": {
        -                  "mode": {
        -                    "enum": [
        -                      "summary",
        -                      "boq",
        -                      "boq_with_backup"
        -                    ],
        -                    "type": "string"
        -                  },
        -                  "omitted_fields": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "minItems": 1,
        -                    "type": "array"
        -                  },
        -                  "retrieve_with": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "mode",
        -                  "omitted_fields",
        -                  "retrieve_with"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "rate_limit_remaining": {
        -            "anyOf": [
        -              {
        -                "minimum": 0,
        -                "type": "integer"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "request_id": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "schema_version": {
        -            "const": "1.0.0",
        -            "default": "1.0.0",
        -            "type": "string"
        -          },
        -          "scope_boundary": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        -                "properties": {
        -                  "not_in_scope": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "produced": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "recommended_companions": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "type": "string"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "produced",
        -                  "not_in_scope"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tier": {
        -            "enum": [
        -              "free",
        -              "paid"
        -            ],
        -            "type": "string"
        -          },
        -          "tier_upgrade": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        -                "properties": {
        -                  "available_tiers": {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        -                      "properties": {
        -                        "billing": {
        -                          "enum": [
        -                            "one_off",
        -                            "monthly",
        -                            "annual"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "currency": {
        -                          "enum": [
        -                            "GBP",
        -                            "SGD",
        -                            "EUR",
        -                            "USD",
        -                            "CAD",
        -                            "AUD",
        -                            "NZD",
        -                            "MYR"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "display_name": {
        -                          "type": "string"
        -                        },
        -                        "price_local": {
        -                          "type": "number"
        -                        },
        -                        "tier_slug": {
        -                          "enum": [
        -                            "7_day_pass",
        -                            "solo",
        -                            "studio",
        -                            "practice"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "unlock_summary": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "tier_slug",
        -                        "display_name",
        -                        "price_local",
        -                        "currency",
        -                        "billing",
        -                        "unlock_summary"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "current_tier": {
        -                    "const": "free",
        -                    "default": "free",
        -                    "type": "string"
        -                  },
        -                  "pass_credit": {
        -                    "anyOf": [
        -                      {
        -                        "additionalProperties": false,
        -                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        -                        "properties": {
        -                          "amount_local": {
        -                            "type": "number"
        -                          },
        -                          "applies_to": {
        -                            "const": "solo_first_month",
        -                            "default": "solo_first_month",
        -                            "type": "string"
        -                          },
        -                          "currency": {
        -                            "type": "string"
        -                          },
        -                          "redeemable_until": {
        -                            "type": "string"
        -                          }
        -                        },
        -                        "required": [
        -                          "amount_local",
        -                          "currency",
        -                          "redeemable_until"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "pricing_url": {
        -                    "default": "https://civilquants.com/pricing",
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "available_tiers"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tos_url": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "upgrade_hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "warranty_disclaimer": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          }
        -        },
        -        "required": [
        -          "request_id",
        -          "issued_at",
        -          "tier"
        -        ],
        -        "type": "object"
        -      },
        -      "data": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Schema § 1.1 — the typed payload returned inside `MCPResponse[ComputeResult]`.\n\nFree-tier responses omit `drawings` (the downloadable CAD artefact\npointers — the paid differentiator); the bridge enforces this. The\n`audit_trail` and the inline `drawing` preview are present on BOTH tiers\n(V1 ALIGN / 60th-fire D + C). `text_summary` is bounded to 2000 chars —\nkeeps the LLM-facing summary token-cheap and forces longer narrative into\nBoQ row descriptions where it belongs. `warnings` is the non-fatal\ngeometry advisory list (both tiers).",
        -            "properties": {
        -              "assembly_slug": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "audit_trail": {
        -                "anyOf": [
        -                  {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.7 — paid-tier audit-trail entry.\n\nOne entry per BoQ row; `boq_row_index` ties to the row position in\n`ComputeResult.boq_rows`. `derivation` is the human-readable formula\nwalk-through; `formula` is the optional formal expression.",
        -                      "properties": {
        -                        "boq_row_index": {
        -                          "minimum": 0,
        -                          "type": "integer"
        -                        },
        -                        "derivation": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "formula": {
        -                          "anyOf": [
        -                            {
        -                              "type": "string"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ],
        -                          "default": null
        -                        },
        -                        "id": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "parameters_referenced": {
        -                          "items": {
        -                            "type": "string"
        -                          },
        -                          "type": "array"
        -                        }
        -                      },
        -                      "required": [
        -                        "id",
        -                        "boq_row_index",
        -                        "derivation"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "boq_rows": {
        -                "items": {
        -                  "additionalProperties": false,
        -                  "description": "Schema § 1.3 — a single bill row in the requested standard's format.\n\n`description` is the non-verbatim functional description per spec § 13.9 /\n§ 15 invariant — NEVER reproduces a standard's verbatim clause text.\n`rate` / `amount` ship null because rates are commodity data the customer\nowns; the engine's job is the measurement, not the pricing.",
        -                  "properties": {
        -                    "amount": {
        -                      "anyOf": [
        -                        {
        -                          "type": "number"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "attribution": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "audit_id": {
        -                      "anyOf": [
        -                        {
        -                          "type": "string"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "description": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "quantity": {
        -                      "minimum": 0,
        -                      "type": "number"
        -                    },
        -                    "rate": {
        -                      "anyOf": [
        -                        {
        -                          "type": "number"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "unit": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "work_section": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    }
        -                  },
        -                  "required": [
        -                    "work_section",
        -                    "description",
        -                    "quantity",
        -                    "unit",
        -                    "attribution"
        -                  ],
        -                  "type": "object"
        -                },
        -                "type": "array"
        -              },
        -              "drawing": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": false,
        -                    "description": "Schema § 1.6a — inline server-rendered SVG preview of the geometry.\n\nThe MCP mirror of the web ``/compute`` response's ``drawing`` field\n(``api.schemas.compute.DrawingRef``): the same on-screen dimensioned\ndrawing both tiers see in the workspace, surfaced on the MCP compute\nresponse so a chat client can render it inline (60th-fire item C). This\nis the on-screen preview — present on BOTH tiers per the free/paid\nboundary; the downloadable CAD artefacts (DXF / dimensioned PDF) remain\nthe paid differentiator via the export tools.\n\nDefined here rather than importing ``DrawingRef`` because the web\n``schemas`` package imports back into this module (``schemas.render``),\nso reusing it would create an import cycle — the MCP wire contract keeps\nits own copy, the same pattern as ``BoQRow`` / ``DrawingReference``.",
        -                    "properties": {
        -                      "entity_count": {
        -                        "minimum": 0,
        -                        "type": "integer"
        -                      },
        -                      "svg_b64": {
        -                        "minLength": 1,
        -                        "type": "string"
        -                      },
        -                      "unit_of_drawing": {
        -                        "const": "m",
        -                        "default": "m",
        -                        "type": "string"
        -                      },
        -                      "viewbox_height": {
        -                        "exclusiveMinimum": 0,
        -                        "type": "number"
        -                      },
        -                      "viewbox_width": {
        -                        "exclusiveMinimum": 0,
        -                        "type": "number"
        -                      },
        -                      "viewbox_x": {
        -                        "type": "number"
        -                      },
        -                      "viewbox_y": {
        -                        "type": "number"
        -                      }
        -                    },
        -                    "required": [
        -                      "svg_b64",
        -                      "viewbox_x",
        -                      "viewbox_y",
        -                      "viewbox_width",
        -                      "viewbox_height",
        -                      "entity_count"
        -                    ],
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "drawings": {
        -                "anyOf": [
        -                  {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.6 — paid-tier drawing artefact pointer.\n\n`url` is an R2-signed URL; expiry is carried in `_meta.deliverables.expires_at`\non the envelope (not duplicated here). `layers` is DXF-only; PDF/SVG\ncallers omit it.",
        -                      "properties": {
        -                        "drawing_type": {
        -                          "enum": [
        -                            "section",
        -                            "plan",
        -                            "elevation",
        -                            "isometric",
        -                            "detail"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "format": {
        -                          "enum": [
        -                            "DXF",
        -                            "PDF",
        -                            "SVG"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "layers": {
        -                          "anyOf": [
        -                            {
        -                              "items": {
        -                                "type": "string"
        -                              },
        -                              "type": "array"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ],
        -                          "default": null
        -                        },
        -                        "scale": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "sheet_size": {
        -                          "enum": [
        -                            "A1",
        -                            "A2",
        -                            "A3",
        -                            "A4"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "url": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "drawing_type",
        -                        "format",
        -                        "url",
        -                        "sheet_size",
        -                        "scale"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "parameters_used": {
        -                "additionalProperties": false,
        -                "description": "Schema § 1.2 — the parameter snapshot the engine actually used.\n\nSplits user-supplied values from engine defaults so customers can see\nwhich numbers came from them and which the engine filled in. Every\ndefaulted parameter SHOULD have a corresponding entry in `assumptions`\n— the bridge layer enforces this when wrapping engine output.",
        -                "properties": {
        -                  "assumptions": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "engine_defaults": {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  "user_supplied": {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  }
        -                },
        -                "type": "object"
        -              },
        -              "standard": {
        -                "enum": [
        -                  "CESMM4",
        -                  "NRM2",
        -                  "SMM7",
        -                  "MMHW"
        -                ],
        -                "type": "string"
        -              },
        -              "text_summary": {
        -                "maxLength": 2000,
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "totals_summary": {
        -                "additionalProperties": false,
        -                "description": "Schema § 1.4 — totals_summary as a typed wrapper around the free-form dict.\n\nWire shape is a flat object (`{\"concrete_m3\": {...}, \"rebar_t\": {...}}`).\nWe model it as `RootModel`-equivalent via `model_config(extra=\"allow\")`\n+ a single `__root__`-style `entries` dict. Pydantic v2 recommends\n`RootModel` for free-form roots; using a wrapper class keeps the import\nsurface uniform with the rest of this module.",
        -                "properties": {
        -                  "entries": {
        -                    "additionalProperties": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.4 — single material/work-class total entry.",
        -                      "properties": {
        -                        "quantity": {
        -                          "minimum": 0,
        -                          "type": "number"
        -                        },
        -                        "unit": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "quantity",
        -                        "unit"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "object"
        -                  }
        -                },
        -                "type": "object"
        -              },
        -              "warnings": {
        -                "items": {
        -                  "additionalProperties": false,
        -                  "description": "Schema § 1.8 — a non-fatal geometry advisory (56th-fire T2).\n\nThe wire projection of the engine's `core.GeometryWarning`. Advisory only:\na warning NEVER changes a measured quantity — it flags geometry that is\nvalid but likely a mistake (e.g. a stale dependent-height default). Present\non BOTH tiers — a correctness/safety signal, not a paid feature.",
        -                  "properties": {
        -                    "affected_params": {
        -                      "items": {
        -                        "type": "string"
        -                      },
        -                      "type": "array"
        -                    },
        -                    "code": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "detail": {
        -                      "additionalProperties": {
        -                        "type": "number"
        -                      },
        -                      "type": "object"
        -                    },
        -                    "message": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "severity": {
        -                      "enum": [
        -                        "info",
        -                        "advisory",
        -                        "caution"
        -                      ],
        -                      "type": "string"
        -                    }
        -                  },
        -                  "required": [
        -                    "code",
        -                    "severity",
        -                    "message"
        -                  ],
        -                  "type": "object"
        -                },
        -                "type": "array"
        -              }
        -            },
        -            "required": [
        -              "assembly_slug",
        -              "standard",
        -              "parameters_used",
        -              "boq_rows",
        -              "totals_summary",
        -              "text_summary"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      },
        -      "error": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        -            "properties": {
        -              "code": {
        -                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        -                "enum": [
        -                  "RATE_LIMIT_EXCEEDED",
        -                  "TIER_INSUFFICIENT",
        -                  "INVALID_INPUT",
        -                  "SCHEMA_VERSION_MISMATCH",
        -                  "SCHEMA_INVARIANT_VIOLATION",
        -                  "UPSTREAM_TIMEOUT",
        -                  "BACKEND_FAILURE",
        -                  "IP_BLOCKED",
        -                  "RESOURCE_NOT_FOUND",
        -                  "RENDER_FAILURE",
        -                  "OCR_LOW_CONFIDENCE",
        -                  "MANUAL_REVIEW_REQUIRED",
        -                  "ACCEPTANCE_REQUIRED",
        -                  "INVALID_TOKEN"
        -                ],
        -                "type": "string"
        -              },
        -              "details": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "message": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "recoverable": {
        -                "type": "boolean"
        -              },
        -              "retry_after_seconds": {
        -                "anyOf": [
        -                  {
        -                    "minimum": 0,
        -                    "type": "integer"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              }
        -            },
        -            "required": [
        -              "code",
        -              "message",
        -              "recoverable"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      }
        -    },
        -    "required": [
        -      "_meta"
        -    ],
        -    "type": "object"
        -  },
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "_meta": {
        -        "additionalProperties": false,
        -        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        -        "properties": {
        -          "deliverables": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        -                "properties": {
        -                  "docx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "dxf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "expires_at": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  },
        -                  "pdf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "xlsx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "expires_at"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "document_id": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "issued_at": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "output_mode": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Surfaces what a trimmed ``output_mode`` withheld from ``data``.\n\nA trimmed mode (``summary`` / ``boq`` / ``boq_with_backup``) withholds\nalready-computed fields to keep the chat payload small. The withheld value\nreads to a client agent as \"capability missing\" (the box-culvert \"geometry\nbuilder isn't firing\" scare) rather than \"pared for size\": ``drawing`` and\n``audit_trail`` appear as ``null``, ``boq_rows`` as an empty list ``[]``\n(its type forbids ``null``) — both indistinguishable from a genuine absent\nresult. This names the withheld fields and the exact mode that brings each\nback, so the value is unambiguous. Absent on the default ``full_json`` mode\n— nothing is withheld, nothing to point at.",
        -                "properties": {
        -                  "mode": {
        -                    "enum": [
        -                      "summary",
        -                      "boq",
        -                      "boq_with_backup"
        -                    ],
        -                    "type": "string"
        -                  },
        -                  "omitted_fields": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "minItems": 1,
        -                    "type": "array"
        -                  },
        -                  "retrieve_with": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "mode",
        -                  "omitted_fields",
        -                  "retrieve_with"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "rate_limit_remaining": {
        -            "anyOf": [
        -              {
        -                "minimum": 0,
        -                "type": "integer"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "request_id": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "schema_version": {
        -            "const": "1.0.0",
        -            "default": "1.0.0",
        -            "type": "string"
        -          },
        -          "scope_boundary": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        -                "properties": {
        -                  "not_in_scope": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "produced": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "recommended_companions": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "type": "string"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "produced",
        -                  "not_in_scope"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tier": {
        -            "enum": [
        -              "free",
        -              "paid"
        -            ],
        -            "type": "string"
        -          },
        -          "tier_upgrade": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        -                "properties": {
        -                  "available_tiers": {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        -                      "properties": {
        -                        "billing": {
        -                          "enum": [
        -                            "one_off",
        -                            "monthly",
        -                            "annual"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "currency": {
        -                          "enum": [
        -                            "GBP",
        -                            "SGD",
        -                            "EUR",
        -                            "USD",
        -                            "CAD",
        -                            "AUD",
        -                            "NZD",
        -                            "MYR"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "display_name": {
        -                          "type": "string"
        -                        },
        -                        "price_local": {
        -                          "type": "number"
        -                        },
        -                        "tier_slug": {
        -                          "enum": [
        -                            "7_day_pass",
        -                            "solo",
        -                            "studio",
        -                            "practice"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "unlock_summary": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "tier_slug",
        -                        "display_name",
        -                        "price_local",
        -                        "currency",
        -                        "billing",
        -                        "unlock_summary"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "current_tier": {
        -                    "const": "free",
        -                    "default": "free",
        -                    "type": "string"
        -                  },
        -                  "pass_credit": {
        -                    "anyOf": [
        -                      {
        -                        "additionalProperties": false,
        -                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        -                        "properties": {
        -                          "amount_local": {
        -                            "type": "number"
        -                          },
        -                          "applies_to": {
        -                            "const": "solo_first_month",
        -                            "default": "solo_first_month",
        -                            "type": "string"
        -                          },
        -                          "currency": {
        -                            "type": "string"
        -                          },
        -                          "redeemable_until": {
        -                            "type": "string"
        -                          }
        -                        },
        -                        "required": [
        -                          "amount_local",
        -                          "currency",
        -                          "redeemable_until"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "pricing_url": {
        -                    "default": "https://civilquants.com/pricing",
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "available_tiers"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tos_url": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "upgrade_hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "warranty_disclaimer": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          }
        -        },
        -        "required": [
        -          "request_id",
        -          "issued_at",
        -          "tier"
        -        ],
        -        "type": "object"
        -      },
        -      "data": {
        -        "default": null,
        -        "title": "Data"
        -      },
        -      "error": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        -            "properties": {
        -              "code": {
        -                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        -                "enum": [
        -                  "RATE_LIMIT_EXCEEDED",
        -                  "TIER_INSUFFICIENT",
        -                  "INVALID_INPUT",
        -                  "SCHEMA_VERSION_MISMATCH",
        -                  "SCHEMA_INVARIANT_VIOLATION",
        -                  "UPSTREAM_TIMEOUT",
        -                  "BACKEND_FAILURE",
        -                  "IP_BLOCKED",
        -                  "RESOURCE_NOT_FOUND",
        -                  "RENDER_FAILURE",
        -                  "OCR_LOW_CONFIDENCE",
        -                  "MANUAL_REVIEW_REQUIRED",
        -                  "ACCEPTANCE_REQUIRED",
        -                  "INVALID_TOKEN"
        -                ],
        -                "type": "string"
        -              },
        -              "details": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "message": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "recoverable": {
        -                "type": "boolean"
        -              },
        -              "retry_after_seconds": {
        -                "anyOf": [
        -                  {
        -                    "minimum": 0,
        -                    "type": "integer"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              }
        -            },
        -            "required": [
        -              "code",
        -              "message",
        -              "recoverable"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      }
        -    },
        -    "required": [
        -      "_meta"
        -    ],
        -    "type": "object"
        -  }
        -]New value: +[
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "_meta": {
        +        "additionalProperties": false,
        +        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        +        "properties": {
        +          "deliverables": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        +                "properties": {
        +                  "docx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "dxf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "expires_at": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  },
        +                  "pdf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "xlsx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "expires_at"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "document_id": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "issued_at": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "output_mode": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Surfaces what a trimmed ``output_mode`` withheld from ``data``.\n\nA trimmed mode (``summary`` / ``material_schedule`` / ``boq`` /\n``boq_with_backup``) withholds\nalready-computed fields to keep the chat payload small. The withheld value\nreads to a client agent as \"capability missing\" (the box-culvert \"geometry\nbuilder isn't firing\" scare) rather than \"pared for size\": ``drawing`` and\n``audit_trail`` appear as ``null``, ``boq_rows`` as an empty list ``[]``\n(its type forbids ``null``) — both indistinguishable from a genuine absent\nresult. This names the withheld fields and the exact mode that brings each\nback, so the value is unambiguous. Absent on the default ``full_json`` mode\n— nothing is withheld, nothing to point at.",
        +                "properties": {
        +                  "mode": {
        +                    "enum": [
        +                      "summary",
        +                      "material_schedule",
        +                      "boq",
        +                      "boq_with_backup"
        +                    ],
        +                    "type": "string"
        +                  },
        +                  "omitted_fields": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "minItems": 1,
        +                    "type": "array"
        +                  },
        +                  "retrieve_with": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "mode",
        +                  "omitted_fields",
        +                  "retrieve_with"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "rate_limit_remaining": {
        +            "anyOf": [
        +              {
        +                "minimum": 0,
        +                "type": "integer"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "request_id": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "schema_version": {
        +            "const": "1.0.0",
        +            "default": "1.0.0",
        +            "type": "string"
        +          },
        +          "scope_boundary": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        +                "properties": {
        +                  "not_in_scope": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "produced": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "recommended_companions": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "type": "string"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "produced",
        +                  "not_in_scope"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tier": {
        +            "enum": [
        +              "free",
        +              "paid"
        +            ],
        +            "type": "string"
        +          },
        +          "tier_upgrade": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        +                "properties": {
        +                  "available_tiers": {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        +                      "properties": {
        +                        "billing": {
        +                          "enum": [
        +                            "one_off",
        +                            "monthly",
        +                            "annual"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "currency": {
        +                          "enum": [
        +                            "GBP",
        +                            "SGD",
        +                            "EUR",
        +                            "USD",
        +                            "CAD",
        +                            "AUD",
        +                            "NZD",
        +                            "MYR"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "display_name": {
        +                          "type": "string"
        +                        },
        +                        "price_local": {
        +                          "type": "number"
        +                        },
        +                        "tier_slug": {
        +                          "enum": [
        +                            "7_day_pass",
        +                            "solo",
        +                            "studio",
        +                            "practice"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "unlock_summary": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "tier_slug",
        +                        "display_name",
        +                        "price_local",
        +                        "currency",
        +                        "billing",
        +                        "unlock_summary"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "current_tier": {
        +                    "const": "free",
        +                    "default": "free",
        +                    "type": "string"
        +                  },
        +                  "pass_credit": {
        +                    "anyOf": [
        +                      {
        +                        "additionalProperties": false,
        +                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        +                        "properties": {
        +                          "amount_local": {
        +                            "type": "number"
        +                          },
        +                          "applies_to": {
        +                            "const": "solo_first_month",
        +                            "default": "solo_first_month",
        +                            "type": "string"
        +                          },
        +                          "currency": {
        +                            "type": "string"
        +                          },
        +                          "redeemable_until": {
        +                            "type": "string"
        +                          }
        +                        },
        +                        "required": [
        +                          "amount_local",
        +                          "currency",
        +                          "redeemable_until"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "pricing_url": {
        +                    "default": "https://civilquants.com/pricing",
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "available_tiers"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tos_url": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "upgrade_hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "warranty_disclaimer": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          }
        +        },
        +        "required": [
        +          "request_id",
        +          "issued_at",
        +          "tier"
        +        ],
        +        "type": "object"
        +      },
        +      "data": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Schema § 1.1 — the typed payload returned inside `MCPResponse[ComputeResult]`.\n\nFree-tier responses omit `drawings` (the downloadable CAD artefact\npointers — the paid differentiator); the bridge enforces this. The\n`audit_trail` and the inline `drawing` preview are present on BOTH tiers\n(V1 ALIGN / 60th-fire D + C). `text_summary` is bounded to 2000 chars —\nkeeps the LLM-facing summary token-cheap and forces longer narrative into\nBoQ row descriptions where it belongs. `warnings` is the non-fatal\ngeometry advisory list (both tiers).",
        +            "properties": {
        +              "assembly_slug": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "audit_trail": {
        +                "anyOf": [
        +                  {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.7 — paid-tier audit-trail entry.\n\nOne entry per BoQ row; `boq_row_index` ties to the row position in\n`ComputeResult.boq_rows`. `derivation` is the human-readable formula\nwalk-through; `formula` is the optional formal expression.",
        +                      "properties": {
        +                        "boq_row_index": {
        +                          "minimum": 0,
        +                          "type": "integer"
        +                        },
        +                        "derivation": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "formula": {
        +                          "anyOf": [
        +                            {
        +                              "type": "string"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ],
        +                          "default": null
        +                        },
        +                        "id": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "parameters_referenced": {
        +                          "items": {
        +                            "type": "string"
        +                          },
        +                          "type": "array"
        +                        }
        +                      },
        +                      "required": [
        +                        "id",
        +                        "boq_row_index",
        +                        "derivation"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "boq_rows": {
        +                "items": {
        +                  "additionalProperties": false,
        +                  "description": "Schema § 1.3 — a single bill row in the requested standard's format.\n\n`description` is the non-verbatim functional description per spec § 13.9 /\n§ 15 invariant — NEVER reproduces a standard's verbatim clause text.\n`rate` / `amount` ship null because rates are commodity data the customer\nowns; the engine's job is the measurement, not the pricing.",
        +                  "properties": {
        +                    "amount": {
        +                      "anyOf": [
        +                        {
        +                          "type": "number"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "attribution": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "audit_id": {
        +                      "anyOf": [
        +                        {
        +                          "type": "string"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "description": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "quantity": {
        +                      "minimum": 0,
        +                      "type": "number"
        +                    },
        +                    "rate": {
        +                      "anyOf": [
        +                        {
        +                          "type": "number"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "unit": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "work_section": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    }
        +                  },
        +                  "required": [
        +                    "work_section",
        +                    "description",
        +                    "quantity",
        +                    "unit",
        +                    "attribution"
        +                  ],
        +                  "type": "object"
        +                },
        +                "type": "array"
        +              },
        +              "drawing": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": false,
        +                    "description": "Schema § 1.6a — inline server-rendered SVG preview of the geometry.\n\nThe MCP mirror of the web ``/compute`` response's ``drawing`` field\n(``api.schemas.compute.DrawingRef``): the same on-screen dimensioned\ndrawing both tiers see in the workspace, surfaced on the MCP compute\nresponse so a chat client can render it inline (60th-fire item C). This\nis the on-screen preview — present on BOTH tiers per the free/paid\nboundary; the downloadable CAD artefacts (DXF / dimensioned PDF) remain\nthe paid differentiator via the export tools.\n\nDefined here rather than importing ``DrawingRef`` because the web\n``schemas`` package imports back into this module (``schemas.render``),\nso reusing it would create an import cycle — the MCP wire contract keeps\nits own copy, the same pattern as ``BoQRow`` / ``DrawingReference``.",
        +                    "properties": {
        +                      "entity_count": {
        +                        "minimum": 0,
        +                        "type": "integer"
        +                      },
        +                      "svg_b64": {
        +                        "minLength": 1,
        +                        "type": "string"
        +                      },
        +                      "unit_of_drawing": {
        +                        "const": "m",
        +                        "default": "m",
        +                        "type": "string"
        +                      },
        +                      "viewbox_height": {
        +                        "exclusiveMinimum": 0,
        +                        "type": "number"
        +                      },
        +                      "viewbox_width": {
        +                        "exclusiveMinimum": 0,
        +                        "type": "number"
        +                      },
        +                      "viewbox_x": {
        +                        "type": "number"
        +                      },
        +                      "viewbox_y": {
        +                        "type": "number"
        +                      }
        +                    },
        +                    "required": [
        +                      "svg_b64",
        +                      "viewbox_x",
        +                      "viewbox_y",
        +                      "viewbox_width",
        +                      "viewbox_height",
        +                      "entity_count"
        +                    ],
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "drawings": {
        +                "anyOf": [
        +                  {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.6 — paid-tier drawing artefact pointer.\n\n`url` is an R2-signed URL; expiry is carried in `_meta.deliverables.expires_at`\non the envelope (not duplicated here). `layers` is DXF-only; PDF/SVG\ncallers omit it.",
        +                      "properties": {
        +                        "drawing_type": {
        +                          "enum": [
        +                            "section",
        +                            "plan",
        +                            "elevation",
        +                            "isometric",
        +                            "detail"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "format": {
        +                          "enum": [
        +                            "DXF",
        +                            "PDF",
        +                            "SVG"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "layers": {
        +                          "anyOf": [
        +                            {
        +                              "items": {
        +                                "type": "string"
        +                              },
        +                              "type": "array"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ],
        +                          "default": null
        +                        },
        +                        "scale": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "sheet_size": {
        +                          "enum": [
        +                            "A1",
        +                            "A2",
        +                            "A3",
        +                            "A4"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "url": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "drawing_type",
        +                        "format",
        +                        "url",
        +                        "sheet_size",
        +                        "scale"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "parameters_used": {
        +                "additionalProperties": false,
        +                "description": "Schema § 1.2 — the parameter snapshot the engine actually used.\n\nSplits user-supplied values from engine defaults so customers can see\nwhich numbers came from them and which the engine filled in. Every\ndefaulted parameter SHOULD have a corresponding entry in `assumptions`\n— the bridge layer enforces this when wrapping engine output.",
        +                "properties": {
        +                  "assumptions": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "engine_defaults": {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  "user_supplied": {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  }
        +                },
        +                "type": "object"
        +              },
        +              "standard": {
        +                "enum": [
        +                  "CESMM4",
        +                  "NRM2",
        +                  "SMM7",
        +                  "MMHW"
        +                ],
        +                "type": "string"
        +              },
        +              "text_summary": {
        +                "maxLength": 2000,
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "totals_summary": {
        +                "additionalProperties": false,
        +                "description": "Schema § 1.4 — totals_summary as a typed wrapper around the free-form dict.\n\nWire shape is a flat object (`{\"concrete_m3\": {...}, \"rebar_t\": {...}}`).\nWe model it as `RootModel`-equivalent via `model_config(extra=\"allow\")`\n+ a single `__root__`-style `entries` dict. Pydantic v2 recommends\n`RootModel` for free-form roots; using a wrapper class keeps the import\nsurface uniform with the rest of this module.",
        +                "properties": {
        +                  "entries": {
        +                    "additionalProperties": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.4 — single material/work-class total entry.",
        +                      "properties": {
        +                        "quantity": {
        +                          "minimum": 0,
        +                          "type": "number"
        +                        },
        +                        "unit": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "quantity",
        +                        "unit"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "object"
        +                  }
        +                },
        +                "type": "object"
        +              },
        +              "warnings": {
        +                "items": {
        +                  "additionalProperties": false,
        +                  "description": "Schema § 1.8 — a non-fatal geometry advisory (56th-fire T2).\n\nThe wire projection of the engine's `core.GeometryWarning`. Advisory only:\na warning NEVER changes a measured quantity — it flags geometry that is\nvalid but likely a mistake (e.g. a stale dependent-height default). Present\non BOTH tiers — a correctness/safety signal, not a paid feature.",
        +                  "properties": {
        +                    "affected_params": {
        +                      "items": {
        +                        "type": "string"
        +                      },
        +                      "type": "array"
        +                    },
        +                    "code": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "detail": {
        +                      "additionalProperties": {
        +                        "type": "number"
        +                      },
        +                      "type": "object"
        +                    },
        +                    "message": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "severity": {
        +                      "enum": [
        +                        "info",
        +                        "advisory",
        +                        "caution"
        +                      ],
        +                      "type": "string"
        +                    }
        +                  },
        +                  "required": [
        +                    "code",
        +                    "severity",
        +                    "message"
        +                  ],
        +                  "type": "object"
        +                },
        +                "type": "array"
        +              }
        +            },
        +            "required": [
        +              "assembly_slug",
        +              "standard",
        +              "parameters_used",
        +              "boq_rows",
        +              "totals_summary",
        +              "text_summary"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      },
        +      "error": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        +            "properties": {
        +              "code": {
        +                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        +                "enum": [
        +                  "RATE_LIMIT_EXCEEDED",
        +                  "TIER_INSUFFICIENT",
        +                  "INVALID_INPUT",
        +                  "SCHEMA_VERSION_MISMATCH",
        +                  "SCHEMA_INVARIANT_VIOLATION",
        +                  "UPSTREAM_TIMEOUT",
        +                  "BACKEND_FAILURE",
        +                  "IP_BLOCKED",
        +                  "RESOURCE_NOT_FOUND",
        +                  "RENDER_FAILURE",
        +                  "OCR_LOW_CONFIDENCE",
        +                  "MANUAL_REVIEW_REQUIRED",
        +                  "ACCEPTANCE_REQUIRED",
        +                  "INVALID_TOKEN"
        +                ],
        +                "type": "string"
        +              },
        +              "details": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "message": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "recoverable": {
        +                "type": "boolean"
        +              },
        +              "retry_after_seconds": {
        +                "anyOf": [
        +                  {
        +                    "minimum": 0,
        +                    "type": "integer"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              }
        +            },
        +            "required": [
        +              "code",
        +              "message",
        +              "recoverable"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      }
        +    },
        +    "required": [
        +      "_meta"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "_meta": {
        +        "additionalProperties": false,
        +        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        +        "properties": {
        +          "deliverables": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        +                "properties": {
        +                  "docx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "dxf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "expires_at": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  },
        +                  "pdf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "xlsx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "expires_at"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "document_id": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "issued_at": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "output_mode": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Surfaces what a trimmed ``output_mode`` withheld from ``data``.\n\nA trimmed mode (``summary`` / ``material_schedule`` / ``boq`` /\n``boq_with_backup``) withholds\nalready-computed fields to keep the chat payload small. The withheld value\nreads to a client agent as \"capability missing\" (the box-culvert \"geometry\nbuilder isn't firing\" scare) rather than \"pared for size\": ``drawing`` and\n``audit_trail`` appear as ``null``, ``boq_rows`` as an empty list ``[]``\n(its type forbids ``null``) — both indistinguishable from a genuine absent\nresult. This names the withheld fields and the exact mode that brings each\nback, so the value is unambiguous. Absent on the default ``full_json`` mode\n— nothing is withheld, nothing to point at.",
        +                "properties": {
        +                  "mode": {
        +                    "enum": [
        +                      "summary",
        +                      "material_schedule",
        +                      "boq",
        +                      "boq_with_backup"
        +                    ],
        +                    "type": "string"
        +                  },
        +                  "omitted_fields": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "minItems": 1,
        +                    "type": "array"
        +                  },
        +                  "retrieve_with": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "mode",
        +                  "omitted_fields",
        +                  "retrieve_with"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "rate_limit_remaining": {
        +            "anyOf": [
        +              {
        +                "minimum": 0,
        +                "type": "integer"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "request_id": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "schema_version": {
        +            "const": "1.0.0",
        +            "default": "1.0.0",
        +            "type": "string"
        +          },
        +          "scope_boundary": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        +                "properties": {
        +                  "not_in_scope": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "produced": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "recommended_companions": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "type": "string"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "produced",
        +                  "not_in_scope"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tier": {
        +            "enum": [
        +              "free",
        +              "paid"
        +            ],
        +            "type": "string"
        +          },
        +          "tier_upgrade": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        +                "properties": {
        +                  "available_tiers": {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        +                      "properties": {
        +                        "billing": {
        +                          "enum": [
        +                            "one_off",
        +                            "monthly",
        +                            "annual"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "currency": {
        +                          "enum": [
        +                            "GBP",
        +                            "SGD",
        +                            "EUR",
        +                            "USD",
        +                            "CAD",
        +                            "AUD",
        +                            "NZD",
        +                            "MYR"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "display_name": {
        +                          "type": "string"
        +                        },
        +                        "price_local": {
        +                          "type": "number"
        +                        },
        +                        "tier_slug": {
        +                          "enum": [
        +                            "7_day_pass",
        +                            "solo",
        +                            "studio",
        +                            "practice"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "unlock_summary": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "tier_slug",
        +                        "display_name",
        +                        "price_local",
        +                        "currency",
        +                        "billing",
        +                        "unlock_summary"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "current_tier": {
        +                    "const": "free",
        +                    "default": "free",
        +                    "type": "string"
        +                  },
        +                  "pass_credit": {
        +                    "anyOf": [
        +                      {
        +                        "additionalProperties": false,
        +                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        +                        "properties": {
        +                          "amount_local": {
        +                            "type": "number"
        +                          },
        +                          "applies_to": {
        +                            "const": "solo_first_month",
        +                            "default": "solo_first_month",
        +                            "type": "string"
        +                          },
        +                          "currency": {
        +                            "type": "string"
        +                          },
        +                          "redeemable_until": {
        +                            "type": "string"
        +                          }
        +                        },
        +                        "required": [
        +                          "amount_local",
        +                          "currency",
        +                          "redeemable_until"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "pricing_url": {
        +                    "default": "https://civilquants.com/pricing",
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "available_tiers"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tos_url": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "upgrade_hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "warranty_disclaimer": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          }
        +        },
        +        "required": [
        +          "request_id",
        +          "issued_at",
        +          "tier"
        +        ],
        +        "type": "object"
        +      },
        +      "data": {
        +        "default": null,
        +        "title": "Data"
        +      },
        +      "error": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        +            "properties": {
        +              "code": {
        +                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        +                "enum": [
        +                  "RATE_LIMIT_EXCEEDED",
        +                  "TIER_INSUFFICIENT",
        +                  "INVALID_INPUT",
        +                  "SCHEMA_VERSION_MISMATCH",
        +                  "SCHEMA_INVARIANT_VIOLATION",
        +                  "UPSTREAM_TIMEOUT",
        +                  "BACKEND_FAILURE",
        +                  "IP_BLOCKED",
        +                  "RESOURCE_NOT_FOUND",
        +                  "RENDER_FAILURE",
        +                  "OCR_LOW_CONFIDENCE",
        +                  "MANUAL_REVIEW_REQUIRED",
        +                  "ACCEPTANCE_REQUIRED",
        +                  "INVALID_TOKEN"
        +                ],
        +                "type": "string"
        +              },
        +              "details": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "message": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "recoverable": {
        +                "type": "boolean"
        +              },
        +              "retry_after_seconds": {
        +                "anyOf": [
        +                  {
        +                    "minimum": 0,
        +                    "type": "integer"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              }
        +            },
        +            "required": [
        +              "code",
        +              "message",
        +              "recoverable"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      }
        +    },
        +    "required": [
        +      "_meta"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedcompute_headwall_precast2 fields changed
      • changedInput schema / properties / output_mode / enum
        Previous value: -[
        -  "summary",
        -  "boq",
        -  "boq_with_backup",
        -  "full_json"
        -]New value: +[
        +  "summary",
        +  "material_schedule",
        +  "boq",
        +  "boq_with_backup",
        +  "full_json"
        +]
      • changedOutput schema / properties / result / anyOf
        Previous value: -[
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "_meta": {
        -        "additionalProperties": false,
        -        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        -        "properties": {
        -          "deliverables": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        -                "properties": {
        -                  "docx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "dxf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "expires_at": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  },
        -                  "pdf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "xlsx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "expires_at"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "document_id": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "issued_at": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "output_mode": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Surfaces what a trimmed ``output_mode`` withheld from ``data``.\n\nA trimmed mode (``summary`` / ``boq`` / ``boq_with_backup``) withholds\nalready-computed fields to keep the chat payload small. The withheld value\nreads to a client agent as \"capability missing\" (the box-culvert \"geometry\nbuilder isn't firing\" scare) rather than \"pared for size\": ``drawing`` and\n``audit_trail`` appear as ``null``, ``boq_rows`` as an empty list ``[]``\n(its type forbids ``null``) — both indistinguishable from a genuine absent\nresult. This names the withheld fields and the exact mode that brings each\nback, so the value is unambiguous. Absent on the default ``full_json`` mode\n— nothing is withheld, nothing to point at.",
        -                "properties": {
        -                  "mode": {
        -                    "enum": [
        -                      "summary",
        -                      "boq",
        -                      "boq_with_backup"
        -                    ],
        -                    "type": "string"
        -                  },
        -                  "omitted_fields": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "minItems": 1,
        -                    "type": "array"
        -                  },
        -                  "retrieve_with": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "mode",
        -                  "omitted_fields",
        -                  "retrieve_with"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "rate_limit_remaining": {
        -            "anyOf": [
        -              {
        -                "minimum": 0,
        -                "type": "integer"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "request_id": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "schema_version": {
        -            "const": "1.0.0",
        -            "default": "1.0.0",
        -            "type": "string"
        -          },
        -          "scope_boundary": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        -                "properties": {
        -                  "not_in_scope": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "produced": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "recommended_companions": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "type": "string"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "produced",
        -                  "not_in_scope"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tier": {
        -            "enum": [
        -              "free",
        -              "paid"
        -            ],
        -            "type": "string"
        -          },
        -          "tier_upgrade": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        -                "properties": {
        -                  "available_tiers": {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        -                      "properties": {
        -                        "billing": {
        -                          "enum": [
        -                            "one_off",
        -                            "monthly",
        -                            "annual"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "currency": {
        -                          "enum": [
        -                            "GBP",
        -                            "SGD",
        -                            "EUR",
        -                            "USD",
        -                            "CAD",
        -                            "AUD",
        -                            "NZD",
        -                            "MYR"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "display_name": {
        -                          "type": "string"
        -                        },
        -                        "price_local": {
        -                          "type": "number"
        -                        },
        -                        "tier_slug": {
        -                          "enum": [
        -                            "7_day_pass",
        -                            "solo",
        -                            "studio",
        -                            "practice"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "unlock_summary": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "tier_slug",
        -                        "display_name",
        -                        "price_local",
        -                        "currency",
        -                        "billing",
        -                        "unlock_summary"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "current_tier": {
        -                    "const": "free",
        -                    "default": "free",
        -                    "type": "string"
        -                  },
        -                  "pass_credit": {
        -                    "anyOf": [
        -                      {
        -                        "additionalProperties": false,
        -                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        -                        "properties": {
        -                          "amount_local": {
        -                            "type": "number"
        -                          },
        -                          "applies_to": {
        -                            "const": "solo_first_month",
        -                            "default": "solo_first_month",
        -                            "type": "string"
        -                          },
        -                          "currency": {
        -                            "type": "string"
        -                          },
        -                          "redeemable_until": {
        -                            "type": "string"
        -                          }
        -                        },
        -                        "required": [
        -                          "amount_local",
        -                          "currency",
        -                          "redeemable_until"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "pricing_url": {
        -                    "default": "https://civilquants.com/pricing",
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "available_tiers"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tos_url": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "upgrade_hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "warranty_disclaimer": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          }
        -        },
        -        "required": [
        -          "request_id",
        -          "issued_at",
        -          "tier"
        -        ],
        -        "type": "object"
        -      },
        -      "data": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Schema § 1.1 — the typed payload returned inside `MCPResponse[ComputeResult]`.\n\nFree-tier responses omit `drawings` (the downloadable CAD artefact\npointers — the paid differentiator); the bridge enforces this. The\n`audit_trail` and the inline `drawing` preview are present on BOTH tiers\n(V1 ALIGN / 60th-fire D + C). `text_summary` is bounded to 2000 chars —\nkeeps the LLM-facing summary token-cheap and forces longer narrative into\nBoQ row descriptions where it belongs. `warnings` is the non-fatal\ngeometry advisory list (both tiers).",
        -            "properties": {
        -              "assembly_slug": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "audit_trail": {
        -                "anyOf": [
        -                  {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.7 — paid-tier audit-trail entry.\n\nOne entry per BoQ row; `boq_row_index` ties to the row position in\n`ComputeResult.boq_rows`. `derivation` is the human-readable formula\nwalk-through; `formula` is the optional formal expression.",
        -                      "properties": {
        -                        "boq_row_index": {
        -                          "minimum": 0,
        -                          "type": "integer"
        -                        },
        -                        "derivation": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "formula": {
        -                          "anyOf": [
        -                            {
        -                              "type": "string"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ],
        -                          "default": null
        -                        },
        -                        "id": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "parameters_referenced": {
        -                          "items": {
        -                            "type": "string"
        -                          },
        -                          "type": "array"
        -                        }
        -                      },
        -                      "required": [
        -                        "id",
        -                        "boq_row_index",
        -                        "derivation"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "boq_rows": {
        -                "items": {
        -                  "additionalProperties": false,
        -                  "description": "Schema § 1.3 — a single bill row in the requested standard's format.\n\n`description` is the non-verbatim functional description per spec § 13.9 /\n§ 15 invariant — NEVER reproduces a standard's verbatim clause text.\n`rate` / `amount` ship null because rates are commodity data the customer\nowns; the engine's job is the measurement, not the pricing.",
        -                  "properties": {
        -                    "amount": {
        -                      "anyOf": [
        -                        {
        -                          "type": "number"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "attribution": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "audit_id": {
        -                      "anyOf": [
        -                        {
        -                          "type": "string"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "description": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "quantity": {
        -                      "minimum": 0,
        -                      "type": "number"
        -                    },
        -                    "rate": {
        -                      "anyOf": [
        -                        {
        -                          "type": "number"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "unit": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "work_section": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    }
        -                  },
        -                  "required": [
        -                    "work_section",
        -                    "description",
        -                    "quantity",
        -                    "unit",
        -                    "attribution"
        -                  ],
        -                  "type": "object"
        -                },
        -                "type": "array"
        -              },
        -              "drawing": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": false,
        -                    "description": "Schema § 1.6a — inline server-rendered SVG preview of the geometry.\n\nThe MCP mirror of the web ``/compute`` response's ``drawing`` field\n(``api.schemas.compute.DrawingRef``): the same on-screen dimensioned\ndrawing both tiers see in the workspace, surfaced on the MCP compute\nresponse so a chat client can render it inline (60th-fire item C). This\nis the on-screen preview — present on BOTH tiers per the free/paid\nboundary; the downloadable CAD artefacts (DXF / dimensioned PDF) remain\nthe paid differentiator via the export tools.\n\nDefined here rather than importing ``DrawingRef`` because the web\n``schemas`` package imports back into this module (``schemas.render``),\nso reusing it would create an import cycle — the MCP wire contract keeps\nits own copy, the same pattern as ``BoQRow`` / ``DrawingReference``.",
        -                    "properties": {
        -                      "entity_count": {
        -                        "minimum": 0,
        -                        "type": "integer"
        -                      },
        -                      "svg_b64": {
        -                        "minLength": 1,
        -                        "type": "string"
        -                      },
        -                      "unit_of_drawing": {
        -                        "const": "m",
        -                        "default": "m",
        -                        "type": "string"
        -                      },
        -                      "viewbox_height": {
        -                        "exclusiveMinimum": 0,
        -                        "type": "number"
        -                      },
        -                      "viewbox_width": {
        -                        "exclusiveMinimum": 0,
        -                        "type": "number"
        -                      },
        -                      "viewbox_x": {
        -                        "type": "number"
        -                      },
        -                      "viewbox_y": {
        -                        "type": "number"
        -                      }
        -                    },
        -                    "required": [
        -                      "svg_b64",
        -                      "viewbox_x",
        -                      "viewbox_y",
        -                      "viewbox_width",
        -                      "viewbox_height",
        -                      "entity_count"
        -                    ],
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "drawings": {
        -                "anyOf": [
        -                  {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.6 — paid-tier drawing artefact pointer.\n\n`url` is an R2-signed URL; expiry is carried in `_meta.deliverables.expires_at`\non the envelope (not duplicated here). `layers` is DXF-only; PDF/SVG\ncallers omit it.",
        -                      "properties": {
        -                        "drawing_type": {
        -                          "enum": [
        -                            "section",
        -                            "plan",
        -                            "elevation",
        -                            "isometric",
        -                            "detail"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "format": {
        -                          "enum": [
        -                            "DXF",
        -                            "PDF",
        -                            "SVG"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "layers": {
        -                          "anyOf": [
        -                            {
        -                              "items": {
        -                                "type": "string"
        -                              },
        -                              "type": "array"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ],
        -                          "default": null
        -                        },
        -                        "scale": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "sheet_size": {
        -                          "enum": [
        -                            "A1",
        -                            "A2",
        -                            "A3",
        -                            "A4"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "url": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "drawing_type",
        -                        "format",
        -                        "url",
        -                        "sheet_size",
        -                        "scale"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "parameters_used": {
        -                "additionalProperties": false,
        -                "description": "Schema § 1.2 — the parameter snapshot the engine actually used.\n\nSplits user-supplied values from engine defaults so customers can see\nwhich numbers came from them and which the engine filled in. Every\ndefaulted parameter SHOULD have a corresponding entry in `assumptions`\n— the bridge layer enforces this when wrapping engine output.",
        -                "properties": {
        -                  "assumptions": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "engine_defaults": {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  "user_supplied": {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  }
        -                },
        -                "type": "object"
        -              },
        -              "standard": {
        -                "enum": [
        -                  "CESMM4",
        -                  "NRM2",
        -                  "SMM7",
        -                  "MMHW"
        -                ],
        -                "type": "string"
        -              },
        -              "text_summary": {
        -                "maxLength": 2000,
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "totals_summary": {
        -                "additionalProperties": false,
        -                "description": "Schema § 1.4 — totals_summary as a typed wrapper around the free-form dict.\n\nWire shape is a flat object (`{\"concrete_m3\": {...}, \"rebar_t\": {...}}`).\nWe model it as `RootModel`-equivalent via `model_config(extra=\"allow\")`\n+ a single `__root__`-style `entries` dict. Pydantic v2 recommends\n`RootModel` for free-form roots; using a wrapper class keeps the import\nsurface uniform with the rest of this module.",
        -                "properties": {
        -                  "entries": {
        -                    "additionalProperties": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.4 — single material/work-class total entry.",
        -                      "properties": {
        -                        "quantity": {
        -                          "minimum": 0,
        -                          "type": "number"
        -                        },
        -                        "unit": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "quantity",
        -                        "unit"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "object"
        -                  }
        -                },
        -                "type": "object"
        -              },
        -              "warnings": {
        -                "items": {
        -                  "additionalProperties": false,
        -                  "description": "Schema § 1.8 — a non-fatal geometry advisory (56th-fire T2).\n\nThe wire projection of the engine's `core.GeometryWarning`. Advisory only:\na warning NEVER changes a measured quantity — it flags geometry that is\nvalid but likely a mistake (e.g. a stale dependent-height default). Present\non BOTH tiers — a correctness/safety signal, not a paid feature.",
        -                  "properties": {
        -                    "affected_params": {
        -                      "items": {
        -                        "type": "string"
        -                      },
        -                      "type": "array"
        -                    },
        -                    "code": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "detail": {
        -                      "additionalProperties": {
        -                        "type": "number"
        -                      },
        -                      "type": "object"
        -                    },
        -                    "message": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "severity": {
        -                      "enum": [
        -                        "info",
        -                        "advisory",
        -                        "caution"
        -                      ],
        -                      "type": "string"
        -                    }
        -                  },
        -                  "required": [
        -                    "code",
        -                    "severity",
        -                    "message"
        -                  ],
        -                  "type": "object"
        -                },
        -                "type": "array"
        -              }
        -            },
        -            "required": [
        -              "assembly_slug",
        -              "standard",
        -              "parameters_used",
        -              "boq_rows",
        -              "totals_summary",
        -              "text_summary"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      },
        -      "error": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        -            "properties": {
        -              "code": {
        -                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        -                "enum": [
        -                  "RATE_LIMIT_EXCEEDED",
        -                  "TIER_INSUFFICIENT",
        -                  "INVALID_INPUT",
        -                  "SCHEMA_VERSION_MISMATCH",
        -                  "SCHEMA_INVARIANT_VIOLATION",
        -                  "UPSTREAM_TIMEOUT",
        -                  "BACKEND_FAILURE",
        -                  "IP_BLOCKED",
        -                  "RESOURCE_NOT_FOUND",
        -                  "RENDER_FAILURE",
        -                  "OCR_LOW_CONFIDENCE",
        -                  "MANUAL_REVIEW_REQUIRED",
        -                  "ACCEPTANCE_REQUIRED",
        -                  "INVALID_TOKEN"
        -                ],
        -                "type": "string"
        -              },
        -              "details": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "message": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "recoverable": {
        -                "type": "boolean"
        -              },
        -              "retry_after_seconds": {
        -                "anyOf": [
        -                  {
        -                    "minimum": 0,
        -                    "type": "integer"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              }
        -            },
        -            "required": [
        -              "code",
        -              "message",
        -              "recoverable"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      }
        -    },
        -    "required": [
        -      "_meta"
        -    ],
        -    "type": "object"
        -  },
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "_meta": {
        -        "additionalProperties": false,
        -        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        -        "properties": {
        -          "deliverables": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        -                "properties": {
        -                  "docx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "dxf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "expires_at": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  },
        -                  "pdf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "xlsx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "expires_at"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "document_id": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "issued_at": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "output_mode": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Surfaces what a trimmed ``output_mode`` withheld from ``data``.\n\nA trimmed mode (``summary`` / ``boq`` / ``boq_with_backup``) withholds\nalready-computed fields to keep the chat payload small. The withheld value\nreads to a client agent as \"capability missing\" (the box-culvert \"geometry\nbuilder isn't firing\" scare) rather than \"pared for size\": ``drawing`` and\n``audit_trail`` appear as ``null``, ``boq_rows`` as an empty list ``[]``\n(its type forbids ``null``) — both indistinguishable from a genuine absent\nresult. This names the withheld fields and the exact mode that brings each\nback, so the value is unambiguous. Absent on the default ``full_json`` mode\n— nothing is withheld, nothing to point at.",
        -                "properties": {
        -                  "mode": {
        -                    "enum": [
        -                      "summary",
        -                      "boq",
        -                      "boq_with_backup"
        -                    ],
        -                    "type": "string"
        -                  },
        -                  "omitted_fields": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "minItems": 1,
        -                    "type": "array"
        -                  },
        -                  "retrieve_with": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "mode",
        -                  "omitted_fields",
        -                  "retrieve_with"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "rate_limit_remaining": {
        -            "anyOf": [
        -              {
        -                "minimum": 0,
        -                "type": "integer"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "request_id": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "schema_version": {
        -            "const": "1.0.0",
        -            "default": "1.0.0",
        -            "type": "string"
        -          },
        -          "scope_boundary": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        -                "properties": {
        -                  "not_in_scope": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "produced": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "recommended_companions": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "type": "string"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "produced",
        -                  "not_in_scope"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tier": {
        -            "enum": [
        -              "free",
        -              "paid"
        -            ],
        -            "type": "string"
        -          },
        -          "tier_upgrade": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        -                "properties": {
        -                  "available_tiers": {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        -                      "properties": {
        -                        "billing": {
        -                          "enum": [
        -                            "one_off",
        -                            "monthly",
        -                            "annual"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "currency": {
        -                          "enum": [
        -                            "GBP",
        -                            "SGD",
        -                            "EUR",
        -                            "USD",
        -                            "CAD",
        -                            "AUD",
        -                            "NZD",
        -                            "MYR"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "display_name": {
        -                          "type": "string"
        -                        },
        -                        "price_local": {
        -                          "type": "number"
        -                        },
        -                        "tier_slug": {
        -                          "enum": [
        -                            "7_day_pass",
        -                            "solo",
        -                            "studio",
        -                            "practice"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "unlock_summary": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "tier_slug",
        -                        "display_name",
        -                        "price_local",
        -                        "currency",
        -                        "billing",
        -                        "unlock_summary"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "current_tier": {
        -                    "const": "free",
        -                    "default": "free",
        -                    "type": "string"
        -                  },
        -                  "pass_credit": {
        -                    "anyOf": [
        -                      {
        -                        "additionalProperties": false,
        -                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        -                        "properties": {
        -                          "amount_local": {
        -                            "type": "number"
        -                          },
        -                          "applies_to": {
        -                            "const": "solo_first_month",
        -                            "default": "solo_first_month",
        -                            "type": "string"
        -                          },
        -                          "currency": {
        -                            "type": "string"
        -                          },
        -                          "redeemable_until": {
        -                            "type": "string"
        -                          }
        -                        },
        -                        "required": [
        -                          "amount_local",
        -                          "currency",
        -                          "redeemable_until"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "pricing_url": {
        -                    "default": "https://civilquants.com/pricing",
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "available_tiers"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tos_url": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "upgrade_hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "warranty_disclaimer": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          }
        -        },
        -        "required": [
        -          "request_id",
        -          "issued_at",
        -          "tier"
        -        ],
        -        "type": "object"
        -      },
        -      "data": {
        -        "default": null,
        -        "title": "Data"
        -      },
        -      "error": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        -            "properties": {
        -              "code": {
        -                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        -                "enum": [
        -                  "RATE_LIMIT_EXCEEDED",
        -                  "TIER_INSUFFICIENT",
        -                  "INVALID_INPUT",
        -                  "SCHEMA_VERSION_MISMATCH",
        -                  "SCHEMA_INVARIANT_VIOLATION",
        -                  "UPSTREAM_TIMEOUT",
        -                  "BACKEND_FAILURE",
        -                  "IP_BLOCKED",
        -                  "RESOURCE_NOT_FOUND",
        -                  "RENDER_FAILURE",
        -                  "OCR_LOW_CONFIDENCE",
        -                  "MANUAL_REVIEW_REQUIRED",
        -                  "ACCEPTANCE_REQUIRED",
        -                  "INVALID_TOKEN"
        -                ],
        -                "type": "string"
        -              },
        -              "details": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "message": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "recoverable": {
        -                "type": "boolean"
        -              },
        -              "retry_after_seconds": {
        -                "anyOf": [
        -                  {
        -                    "minimum": 0,
        -                    "type": "integer"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              }
        -            },
        -            "required": [
        -              "code",
        -              "message",
        -              "recoverable"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      }
        -    },
        -    "required": [
        -      "_meta"
        -    ],
        -    "type": "object"
        -  }
        -]New value: +[
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "_meta": {
        +        "additionalProperties": false,
        +        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        +        "properties": {
        +          "deliverables": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        +                "properties": {
        +                  "docx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "dxf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "expires_at": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  },
        +                  "pdf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "xlsx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "expires_at"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "document_id": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "issued_at": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "output_mode": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Surfaces what a trimmed ``output_mode`` withheld from ``data``.\n\nA trimmed mode (``summary`` / ``material_schedule`` / ``boq`` /\n``boq_with_backup``) withholds\nalready-computed fields to keep the chat payload small. The withheld value\nreads to a client agent as \"capability missing\" (the box-culvert \"geometry\nbuilder isn't firing\" scare) rather than \"pared for size\": ``drawing`` and\n``audit_trail`` appear as ``null``, ``boq_rows`` as an empty list ``[]``\n(its type forbids ``null``) — both indistinguishable from a genuine absent\nresult. This names the withheld fields and the exact mode that brings each\nback, so the value is unambiguous. Absent on the default ``full_json`` mode\n— nothing is withheld, nothing to point at.",
        +                "properties": {
        +                  "mode": {
        +                    "enum": [
        +                      "summary",
        +                      "material_schedule",
        +                      "boq",
        +                      "boq_with_backup"
        +                    ],
        +                    "type": "string"
        +                  },
        +                  "omitted_fields": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "minItems": 1,
        +                    "type": "array"
        +                  },
        +                  "retrieve_with": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "mode",
        +                  "omitted_fields",
        +                  "retrieve_with"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "rate_limit_remaining": {
        +            "anyOf": [
        +              {
        +                "minimum": 0,
        +                "type": "integer"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "request_id": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "schema_version": {
        +            "const": "1.0.0",
        +            "default": "1.0.0",
        +            "type": "string"
        +          },
        +          "scope_boundary": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        +                "properties": {
        +                  "not_in_scope": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "produced": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "recommended_companions": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "type": "string"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "produced",
        +                  "not_in_scope"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tier": {
        +            "enum": [
        +              "free",
        +              "paid"
        +            ],
        +            "type": "string"
        +          },
        +          "tier_upgrade": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        +                "properties": {
        +                  "available_tiers": {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        +                      "properties": {
        +                        "billing": {
        +                          "enum": [
        +                            "one_off",
        +                            "monthly",
        +                            "annual"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "currency": {
        +                          "enum": [
        +                            "GBP",
        +                            "SGD",
        +                            "EUR",
        +                            "USD",
        +                            "CAD",
        +                            "AUD",
        +                            "NZD",
        +                            "MYR"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "display_name": {
        +                          "type": "string"
        +                        },
        +                        "price_local": {
        +                          "type": "number"
        +                        },
        +                        "tier_slug": {
        +                          "enum": [
        +                            "7_day_pass",
        +                            "solo",
        +                            "studio",
        +                            "practice"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "unlock_summary": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "tier_slug",
        +                        "display_name",
        +                        "price_local",
        +                        "currency",
        +                        "billing",
        +                        "unlock_summary"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "current_tier": {
        +                    "const": "free",
        +                    "default": "free",
        +                    "type": "string"
        +                  },
        +                  "pass_credit": {
        +                    "anyOf": [
        +                      {
        +                        "additionalProperties": false,
        +                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        +                        "properties": {
        +                          "amount_local": {
        +                            "type": "number"
        +                          },
        +                          "applies_to": {
        +                            "const": "solo_first_month",
        +                            "default": "solo_first_month",
        +                            "type": "string"
        +                          },
        +                          "currency": {
        +                            "type": "string"
        +                          },
        +                          "redeemable_until": {
        +                            "type": "string"
        +                          }
        +                        },
        +                        "required": [
        +                          "amount_local",
        +                          "currency",
        +                          "redeemable_until"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "pricing_url": {
        +                    "default": "https://civilquants.com/pricing",
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "available_tiers"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tos_url": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "upgrade_hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "warranty_disclaimer": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          }
        +        },
        +        "required": [
        +          "request_id",
        +          "issued_at",
        +          "tier"
        +        ],
        +        "type": "object"
        +      },
        +      "data": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Schema § 1.1 — the typed payload returned inside `MCPResponse[ComputeResult]`.\n\nFree-tier responses omit `drawings` (the downloadable CAD artefact\npointers — the paid differentiator); the bridge enforces this. The\n`audit_trail` and the inline `drawing` preview are present on BOTH tiers\n(V1 ALIGN / 60th-fire D + C). `text_summary` is bounded to 2000 chars —\nkeeps the LLM-facing summary token-cheap and forces longer narrative into\nBoQ row descriptions where it belongs. `warnings` is the non-fatal\ngeometry advisory list (both tiers).",
        +            "properties": {
        +              "assembly_slug": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "audit_trail": {
        +                "anyOf": [
        +                  {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.7 — paid-tier audit-trail entry.\n\nOne entry per BoQ row; `boq_row_index` ties to the row position in\n`ComputeResult.boq_rows`. `derivation` is the human-readable formula\nwalk-through; `formula` is the optional formal expression.",
        +                      "properties": {
        +                        "boq_row_index": {
        +                          "minimum": 0,
        +                          "type": "integer"
        +                        },
        +                        "derivation": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "formula": {
        +                          "anyOf": [
        +                            {
        +                              "type": "string"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ],
        +                          "default": null
        +                        },
        +                        "id": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "parameters_referenced": {
        +                          "items": {
        +                            "type": "string"
        +                          },
        +                          "type": "array"
        +                        }
        +                      },
        +                      "required": [
        +                        "id",
        +                        "boq_row_index",
        +                        "derivation"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "boq_rows": {
        +                "items": {
        +                  "additionalProperties": false,
        +                  "description": "Schema § 1.3 — a single bill row in the requested standard's format.\n\n`description` is the non-verbatim functional description per spec § 13.9 /\n§ 15 invariant — NEVER reproduces a standard's verbatim clause text.\n`rate` / `amount` ship null because rates are commodity data the customer\nowns; the engine's job is the measurement, not the pricing.",
        +                  "properties": {
        +                    "amount": {
        +                      "anyOf": [
        +                        {
        +                          "type": "number"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "attribution": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "audit_id": {
        +                      "anyOf": [
        +                        {
        +                          "type": "string"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "description": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "quantity": {
        +                      "minimum": 0,
        +                      "type": "number"
        +                    },
        +                    "rate": {
        +                      "anyOf": [
        +                        {
        +                          "type": "number"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "unit": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "work_section": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    }
        +                  },
        +                  "required": [
        +                    "work_section",
        +                    "description",
        +                    "quantity",
        +                    "unit",
        +                    "attribution"
        +                  ],
        +                  "type": "object"
        +                },
        +                "type": "array"
        +              },
        +              "drawing": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": false,
        +                    "description": "Schema § 1.6a — inline server-rendered SVG preview of the geometry.\n\nThe MCP mirror of the web ``/compute`` response's ``drawing`` field\n(``api.schemas.compute.DrawingRef``): the same on-screen dimensioned\ndrawing both tiers see in the workspace, surfaced on the MCP compute\nresponse so a chat client can render it inline (60th-fire item C). This\nis the on-screen preview — present on BOTH tiers per the free/paid\nboundary; the downloadable CAD artefacts (DXF / dimensioned PDF) remain\nthe paid differentiator via the export tools.\n\nDefined here rather than importing ``DrawingRef`` because the web\n``schemas`` package imports back into this module (``schemas.render``),\nso reusing it would create an import cycle — the MCP wire contract keeps\nits own copy, the same pattern as ``BoQRow`` / ``DrawingReference``.",
        +                    "properties": {
        +                      "entity_count": {
        +                        "minimum": 0,
        +                        "type": "integer"
        +                      },
        +                      "svg_b64": {
        +                        "minLength": 1,
        +                        "type": "string"
        +                      },
        +                      "unit_of_drawing": {
        +                        "const": "m",
        +                        "default": "m",
        +                        "type": "string"
        +                      },
        +                      "viewbox_height": {
        +                        "exclusiveMinimum": 0,
        +                        "type": "number"
        +                      },
        +                      "viewbox_width": {
        +                        "exclusiveMinimum": 0,
        +                        "type": "number"
        +                      },
        +                      "viewbox_x": {
        +                        "type": "number"
        +                      },
        +                      "viewbox_y": {
        +                        "type": "number"
        +                      }
        +                    },
        +                    "required": [
        +                      "svg_b64",
        +                      "viewbox_x",
        +                      "viewbox_y",
        +                      "viewbox_width",
        +                      "viewbox_height",
        +                      "entity_count"
        +                    ],
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "drawings": {
        +                "anyOf": [
        +                  {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.6 — paid-tier drawing artefact pointer.\n\n`url` is an R2-signed URL; expiry is carried in `_meta.deliverables.expires_at`\non the envelope (not duplicated here). `layers` is DXF-only; PDF/SVG\ncallers omit it.",
        +                      "properties": {
        +                        "drawing_type": {
        +                          "enum": [
        +                            "section",
        +                            "plan",
        +                            "elevation",
        +                            "isometric",
        +                            "detail"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "format": {
        +                          "enum": [
        +                            "DXF",
        +                            "PDF",
        +                            "SVG"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "layers": {
        +                          "anyOf": [
        +                            {
        +                              "items": {
        +                                "type": "string"
        +                              },
        +                              "type": "array"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ],
        +                          "default": null
        +                        },
        +                        "scale": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "sheet_size": {
        +                          "enum": [
        +                            "A1",
        +                            "A2",
        +                            "A3",
        +                            "A4"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "url": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "drawing_type",
        +                        "format",
        +                        "url",
        +                        "sheet_size",
        +                        "scale"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "parameters_used": {
        +                "additionalProperties": false,
        +                "description": "Schema § 1.2 — the parameter snapshot the engine actually used.\n\nSplits user-supplied values from engine defaults so customers can see\nwhich numbers came from them and which the engine filled in. Every\ndefaulted parameter SHOULD have a corresponding entry in `assumptions`\n— the bridge layer enforces this when wrapping engine output.",
        +                "properties": {
        +                  "assumptions": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "engine_defaults": {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  "user_supplied": {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  }
        +                },
        +                "type": "object"
        +              },
        +              "standard": {
        +                "enum": [
        +                  "CESMM4",
        +                  "NRM2",
        +                  "SMM7",
        +                  "MMHW"
        +                ],
        +                "type": "string"
        +              },
        +              "text_summary": {
        +                "maxLength": 2000,
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "totals_summary": {
        +                "additionalProperties": false,
        +                "description": "Schema § 1.4 — totals_summary as a typed wrapper around the free-form dict.\n\nWire shape is a flat object (`{\"concrete_m3\": {...}, \"rebar_t\": {...}}`).\nWe model it as `RootModel`-equivalent via `model_config(extra=\"allow\")`\n+ a single `__root__`-style `entries` dict. Pydantic v2 recommends\n`RootModel` for free-form roots; using a wrapper class keeps the import\nsurface uniform with the rest of this module.",
        +                "properties": {
        +                  "entries": {
        +                    "additionalProperties": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.4 — single material/work-class total entry.",
        +                      "properties": {
        +                        "quantity": {
        +                          "minimum": 0,
        +                          "type": "number"
        +                        },
        +                        "unit": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "quantity",
        +                        "unit"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "object"
        +                  }
        +                },
        +                "type": "object"
        +              },
        +              "warnings": {
        +                "items": {
        +                  "additionalProperties": false,
        +                  "description": "Schema § 1.8 — a non-fatal geometry advisory (56th-fire T2).\n\nThe wire projection of the engine's `core.GeometryWarning`. Advisory only:\na warning NEVER changes a measured quantity — it flags geometry that is\nvalid but likely a mistake (e.g. a stale dependent-height default). Present\non BOTH tiers — a correctness/safety signal, not a paid feature.",
        +                  "properties": {
        +                    "affected_params": {
        +                      "items": {
        +                        "type": "string"
        +                      },
        +                      "type": "array"
        +                    },
        +                    "code": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "detail": {
        +                      "additionalProperties": {
        +                        "type": "number"
        +                      },
        +                      "type": "object"
        +                    },
        +                    "message": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "severity": {
        +                      "enum": [
        +                        "info",
        +                        "advisory",
        +                        "caution"
        +                      ],
        +                      "type": "string"
        +                    }
        +                  },
        +                  "required": [
        +                    "code",
        +                    "severity",
        +                    "message"
        +                  ],
        +                  "type": "object"
        +                },
        +                "type": "array"
        +              }
        +            },
        +            "required": [
        +              "assembly_slug",
        +              "standard",
        +              "parameters_used",
        +              "boq_rows",
        +              "totals_summary",
        +              "text_summary"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      },
        +      "error": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        +            "properties": {
        +              "code": {
        +                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        +                "enum": [
        +                  "RATE_LIMIT_EXCEEDED",
        +                  "TIER_INSUFFICIENT",
        +                  "INVALID_INPUT",
        +                  "SCHEMA_VERSION_MISMATCH",
        +                  "SCHEMA_INVARIANT_VIOLATION",
        +                  "UPSTREAM_TIMEOUT",
        +                  "BACKEND_FAILURE",
        +                  "IP_BLOCKED",
        +                  "RESOURCE_NOT_FOUND",
        +                  "RENDER_FAILURE",
        +                  "OCR_LOW_CONFIDENCE",
        +                  "MANUAL_REVIEW_REQUIRED",
        +                  "ACCEPTANCE_REQUIRED",
        +                  "INVALID_TOKEN"
        +                ],
        +                "type": "string"
        +              },
        +              "details": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "message": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "recoverable": {
        +                "type": "boolean"
        +              },
        +              "retry_after_seconds": {
        +                "anyOf": [
        +                  {
        +                    "minimum": 0,
        +                    "type": "integer"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              }
        +            },
        +            "required": [
        +              "code",
        +              "message",
        +              "recoverable"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      }
        +    },
        +    "required": [
        +      "_meta"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "_meta": {
        +        "additionalProperties": false,
        +        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        +        "properties": {
        +          "deliverables": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        +                "properties": {
        +                  "docx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "dxf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "expires_at": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  },
        +                  "pdf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "xlsx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "expires_at"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "document_id": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "issued_at": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "output_mode": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Surfaces what a trimmed ``output_mode`` withheld from ``data``.\n\nA trimmed mode (``summary`` / ``material_schedule`` / ``boq`` /\n``boq_with_backup``) withholds\nalready-computed fields to keep the chat payload small. The withheld value\nreads to a client agent as \"capability missing\" (the box-culvert \"geometry\nbuilder isn't firing\" scare) rather than \"pared for size\": ``drawing`` and\n``audit_trail`` appear as ``null``, ``boq_rows`` as an empty list ``[]``\n(its type forbids ``null``) — both indistinguishable from a genuine absent\nresult. This names the withheld fields and the exact mode that brings each\nback, so the value is unambiguous. Absent on the default ``full_json`` mode\n— nothing is withheld, nothing to point at.",
        +                "properties": {
        +                  "mode": {
        +                    "enum": [
        +                      "summary",
        +                      "material_schedule",
        +                      "boq",
        +                      "boq_with_backup"
        +                    ],
        +                    "type": "string"
        +                  },
        +                  "omitted_fields": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "minItems": 1,
        +                    "type": "array"
        +                  },
        +                  "retrieve_with": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "mode",
        +                  "omitted_fields",
        +                  "retrieve_with"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "rate_limit_remaining": {
        +            "anyOf": [
        +              {
        +                "minimum": 0,
        +                "type": "integer"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "request_id": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "schema_version": {
        +            "const": "1.0.0",
        +            "default": "1.0.0",
        +            "type": "string"
        +          },
        +          "scope_boundary": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        +                "properties": {
        +                  "not_in_scope": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "produced": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "recommended_companions": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "type": "string"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "produced",
        +                  "not_in_scope"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tier": {
        +            "enum": [
        +              "free",
        +              "paid"
        +            ],
        +            "type": "string"
        +          },
        +          "tier_upgrade": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        +                "properties": {
        +                  "available_tiers": {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        +                      "properties": {
        +                        "billing": {
        +                          "enum": [
        +                            "one_off",
        +                            "monthly",
        +                            "annual"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "currency": {
        +                          "enum": [
        +                            "GBP",
        +                            "SGD",
        +                            "EUR",
        +                            "USD",
        +                            "CAD",
        +                            "AUD",
        +                            "NZD",
        +                            "MYR"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "display_name": {
        +                          "type": "string"
        +                        },
        +                        "price_local": {
        +                          "type": "number"
        +                        },
        +                        "tier_slug": {
        +                          "enum": [
        +                            "7_day_pass",
        +                            "solo",
        +                            "studio",
        +                            "practice"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "unlock_summary": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "tier_slug",
        +                        "display_name",
        +                        "price_local",
        +                        "currency",
        +                        "billing",
        +                        "unlock_summary"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "current_tier": {
        +                    "const": "free",
        +                    "default": "free",
        +                    "type": "string"
        +                  },
        +                  "pass_credit": {
        +                    "anyOf": [
        +                      {
        +                        "additionalProperties": false,
        +                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        +                        "properties": {
        +                          "amount_local": {
        +                            "type": "number"
        +                          },
        +                          "applies_to": {
        +                            "const": "solo_first_month",
        +                            "default": "solo_first_month",
        +                            "type": "string"
        +                          },
        +                          "currency": {
        +                            "type": "string"
        +                          },
        +                          "redeemable_until": {
        +                            "type": "string"
        +                          }
        +                        },
        +                        "required": [
        +                          "amount_local",
        +                          "currency",
        +                          "redeemable_until"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "pricing_url": {
        +                    "default": "https://civilquants.com/pricing",
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "available_tiers"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tos_url": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "upgrade_hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "warranty_disclaimer": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          }
        +        },
        +        "required": [
        +          "request_id",
        +          "issued_at",
        +          "tier"
        +        ],
        +        "type": "object"
        +      },
        +      "data": {
        +        "default": null,
        +        "title": "Data"
        +      },
        +      "error": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        +            "properties": {
        +              "code": {
        +                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        +                "enum": [
        +                  "RATE_LIMIT_EXCEEDED",
        +                  "TIER_INSUFFICIENT",
        +                  "INVALID_INPUT",
        +                  "SCHEMA_VERSION_MISMATCH",
        +                  "SCHEMA_INVARIANT_VIOLATION",
        +                  "UPSTREAM_TIMEOUT",
        +                  "BACKEND_FAILURE",
        +                  "IP_BLOCKED",
        +                  "RESOURCE_NOT_FOUND",
        +                  "RENDER_FAILURE",
        +                  "OCR_LOW_CONFIDENCE",
        +                  "MANUAL_REVIEW_REQUIRED",
        +                  "ACCEPTANCE_REQUIRED",
        +                  "INVALID_TOKEN"
        +                ],
        +                "type": "string"
        +              },
        +              "details": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "message": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "recoverable": {
        +                "type": "boolean"
        +              },
        +              "retry_after_seconds": {
        +                "anyOf": [
        +                  {
        +                    "minimum": 0,
        +                    "type": "integer"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              }
        +            },
        +            "required": [
        +              "code",
        +              "message",
        +              "recoverable"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      }
        +    },
        +    "required": [
        +      "_meta"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedcompute_highway_drainage_channel2 fields changed
      • changedInput schema / properties / output_mode / enum
        Previous value: -[
        -  "summary",
        -  "boq",
        -  "boq_with_backup",
        -  "full_json"
        -]New value: +[
        +  "summary",
        +  "material_schedule",
        +  "boq",
        +  "boq_with_backup",
        +  "full_json"
        +]
      • changedOutput schema / properties / result / anyOf
        Previous value: -[
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "_meta": {
        -        "additionalProperties": false,
        -        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        -        "properties": {
        -          "deliverables": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        -                "properties": {
        -                  "docx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "dxf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "expires_at": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  },
        -                  "pdf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "xlsx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "expires_at"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "document_id": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "issued_at": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "output_mode": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Surfaces what a trimmed ``output_mode`` withheld from ``data``.\n\nA trimmed mode (``summary`` / ``boq`` / ``boq_with_backup``) withholds\nalready-computed fields to keep the chat payload small. The withheld value\nreads to a client agent as \"capability missing\" (the box-culvert \"geometry\nbuilder isn't firing\" scare) rather than \"pared for size\": ``drawing`` and\n``audit_trail`` appear as ``null``, ``boq_rows`` as an empty list ``[]``\n(its type forbids ``null``) — both indistinguishable from a genuine absent\nresult. This names the withheld fields and the exact mode that brings each\nback, so the value is unambiguous. Absent on the default ``full_json`` mode\n— nothing is withheld, nothing to point at.",
        -                "properties": {
        -                  "mode": {
        -                    "enum": [
        -                      "summary",
        -                      "boq",
        -                      "boq_with_backup"
        -                    ],
        -                    "type": "string"
        -                  },
        -                  "omitted_fields": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "minItems": 1,
        -                    "type": "array"
        -                  },
        -                  "retrieve_with": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "mode",
        -                  "omitted_fields",
        -                  "retrieve_with"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "rate_limit_remaining": {
        -            "anyOf": [
        -              {
        -                "minimum": 0,
        -                "type": "integer"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "request_id": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "schema_version": {
        -            "const": "1.0.0",
        -            "default": "1.0.0",
        -            "type": "string"
        -          },
        -          "scope_boundary": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        -                "properties": {
        -                  "not_in_scope": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "produced": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "recommended_companions": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "type": "string"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "produced",
        -                  "not_in_scope"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tier": {
        -            "enum": [
        -              "free",
        -              "paid"
        -            ],
        -            "type": "string"
        -          },
        -          "tier_upgrade": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        -                "properties": {
        -                  "available_tiers": {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        -                      "properties": {
        -                        "billing": {
        -                          "enum": [
        -                            "one_off",
        -                            "monthly",
        -                            "annual"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "currency": {
        -                          "enum": [
        -                            "GBP",
        -                            "SGD",
        -                            "EUR",
        -                            "USD",
        -                            "CAD",
        -                            "AUD",
        -                            "NZD",
        -                            "MYR"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "display_name": {
        -                          "type": "string"
        -                        },
        -                        "price_local": {
        -                          "type": "number"
        -                        },
        -                        "tier_slug": {
        -                          "enum": [
        -                            "7_day_pass",
        -                            "solo",
        -                            "studio",
        -                            "practice"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "unlock_summary": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "tier_slug",
        -                        "display_name",
        -                        "price_local",
        -                        "currency",
        -                        "billing",
        -                        "unlock_summary"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "current_tier": {
        -                    "const": "free",
        -                    "default": "free",
        -                    "type": "string"
        -                  },
        -                  "pass_credit": {
        -                    "anyOf": [
        -                      {
        -                        "additionalProperties": false,
        -                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        -                        "properties": {
        -                          "amount_local": {
        -                            "type": "number"
        -                          },
        -                          "applies_to": {
        -                            "const": "solo_first_month",
        -                            "default": "solo_first_month",
        -                            "type": "string"
        -                          },
        -                          "currency": {
        -                            "type": "string"
        -                          },
        -                          "redeemable_until": {
        -                            "type": "string"
        -                          }
        -                        },
        -                        "required": [
        -                          "amount_local",
        -                          "currency",
        -                          "redeemable_until"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "pricing_url": {
        -                    "default": "https://civilquants.com/pricing",
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "available_tiers"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tos_url": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "upgrade_hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "warranty_disclaimer": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          }
        -        },
        -        "required": [
        -          "request_id",
        -          "issued_at",
        -          "tier"
        -        ],
        -        "type": "object"
        -      },
        -      "data": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Schema § 1.1 — the typed payload returned inside `MCPResponse[ComputeResult]`.\n\nFree-tier responses omit `drawings` (the downloadable CAD artefact\npointers — the paid differentiator); the bridge enforces this. The\n`audit_trail` and the inline `drawing` preview are present on BOTH tiers\n(V1 ALIGN / 60th-fire D + C). `text_summary` is bounded to 2000 chars —\nkeeps the LLM-facing summary token-cheap and forces longer narrative into\nBoQ row descriptions where it belongs. `warnings` is the non-fatal\ngeometry advisory list (both tiers).",
        -            "properties": {
        -              "assembly_slug": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "audit_trail": {
        -                "anyOf": [
        -                  {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.7 — paid-tier audit-trail entry.\n\nOne entry per BoQ row; `boq_row_index` ties to the row position in\n`ComputeResult.boq_rows`. `derivation` is the human-readable formula\nwalk-through; `formula` is the optional formal expression.",
        -                      "properties": {
        -                        "boq_row_index": {
        -                          "minimum": 0,
        -                          "type": "integer"
        -                        },
        -                        "derivation": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "formula": {
        -                          "anyOf": [
        -                            {
        -                              "type": "string"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ],
        -                          "default": null
        -                        },
        -                        "id": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "parameters_referenced": {
        -                          "items": {
        -                            "type": "string"
        -                          },
        -                          "type": "array"
        -                        }
        -                      },
        -                      "required": [
        -                        "id",
        -                        "boq_row_index",
        -                        "derivation"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "boq_rows": {
        -                "items": {
        -                  "additionalProperties": false,
        -                  "description": "Schema § 1.3 — a single bill row in the requested standard's format.\n\n`description` is the non-verbatim functional description per spec § 13.9 /\n§ 15 invariant — NEVER reproduces a standard's verbatim clause text.\n`rate` / `amount` ship null because rates are commodity data the customer\nowns; the engine's job is the measurement, not the pricing.",
        -                  "properties": {
        -                    "amount": {
        -                      "anyOf": [
        -                        {
        -                          "type": "number"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "attribution": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "audit_id": {
        -                      "anyOf": [
        -                        {
        -                          "type": "string"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "description": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "quantity": {
        -                      "minimum": 0,
        -                      "type": "number"
        -                    },
        -                    "rate": {
        -                      "anyOf": [
        -                        {
        -                          "type": "number"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "unit": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "work_section": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    }
        -                  },
        -                  "required": [
        -                    "work_section",
        -                    "description",
        -                    "quantity",
        -                    "unit",
        -                    "attribution"
        -                  ],
        -                  "type": "object"
        -                },
        -                "type": "array"
        -              },
        -              "drawing": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": false,
        -                    "description": "Schema § 1.6a — inline server-rendered SVG preview of the geometry.\n\nThe MCP mirror of the web ``/compute`` response's ``drawing`` field\n(``api.schemas.compute.DrawingRef``): the same on-screen dimensioned\ndrawing both tiers see in the workspace, surfaced on the MCP compute\nresponse so a chat client can render it inline (60th-fire item C). This\nis the on-screen preview — present on BOTH tiers per the free/paid\nboundary; the downloadable CAD artefacts (DXF / dimensioned PDF) remain\nthe paid differentiator via the export tools.\n\nDefined here rather than importing ``DrawingRef`` because the web\n``schemas`` package imports back into this module (``schemas.render``),\nso reusing it would create an import cycle — the MCP wire contract keeps\nits own copy, the same pattern as ``BoQRow`` / ``DrawingReference``.",
        -                    "properties": {
        -                      "entity_count": {
        -                        "minimum": 0,
        -                        "type": "integer"
        -                      },
        -                      "svg_b64": {
        -                        "minLength": 1,
        -                        "type": "string"
        -                      },
        -                      "unit_of_drawing": {
        -                        "const": "m",
        -                        "default": "m",
        -                        "type": "string"
        -                      },
        -                      "viewbox_height": {
        -                        "exclusiveMinimum": 0,
        -                        "type": "number"
        -                      },
        -                      "viewbox_width": {
        -                        "exclusiveMinimum": 0,
        -                        "type": "number"
        -                      },
        -                      "viewbox_x": {
        -                        "type": "number"
        -                      },
        -                      "viewbox_y": {
        -                        "type": "number"
        -                      }
        -                    },
        -                    "required": [
        -                      "svg_b64",
        -                      "viewbox_x",
        -                      "viewbox_y",
        -                      "viewbox_width",
        -                      "viewbox_height",
        -                      "entity_count"
        -                    ],
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "drawings": {
        -                "anyOf": [
        -                  {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.6 — paid-tier drawing artefact pointer.\n\n`url` is an R2-signed URL; expiry is carried in `_meta.deliverables.expires_at`\non the envelope (not duplicated here). `layers` is DXF-only; PDF/SVG\ncallers omit it.",
        -                      "properties": {
        -                        "drawing_type": {
        -                          "enum": [
        -                            "section",
        -                            "plan",
        -                            "elevation",
        -                            "isometric",
        -                            "detail"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "format": {
        -                          "enum": [
        -                            "DXF",
        -                            "PDF",
        -                            "SVG"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "layers": {
        -                          "anyOf": [
        -                            {
        -                              "items": {
        -                                "type": "string"
        -                              },
        -                              "type": "array"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ],
        -                          "default": null
        -                        },
        -                        "scale": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "sheet_size": {
        -                          "enum": [
        -                            "A1",
        -                            "A2",
        -                            "A3",
        -                            "A4"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "url": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "drawing_type",
        -                        "format",
        -                        "url",
        -                        "sheet_size",
        -                        "scale"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "parameters_used": {
        -                "additionalProperties": false,
        -                "description": "Schema § 1.2 — the parameter snapshot the engine actually used.\n\nSplits user-supplied values from engine defaults so customers can see\nwhich numbers came from them and which the engine filled in. Every\ndefaulted parameter SHOULD have a corresponding entry in `assumptions`\n— the bridge layer enforces this when wrapping engine output.",
        -                "properties": {
        -                  "assumptions": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "engine_defaults": {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  "user_supplied": {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  }
        -                },
        -                "type": "object"
        -              },
        -              "standard": {
        -                "enum": [
        -                  "CESMM4",
        -                  "NRM2",
        -                  "SMM7",
        -                  "MMHW"
        -                ],
        -                "type": "string"
        -              },
        -              "text_summary": {
        -                "maxLength": 2000,
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "totals_summary": {
        -                "additionalProperties": false,
        -                "description": "Schema § 1.4 — totals_summary as a typed wrapper around the free-form dict.\n\nWire shape is a flat object (`{\"concrete_m3\": {...}, \"rebar_t\": {...}}`).\nWe model it as `RootModel`-equivalent via `model_config(extra=\"allow\")`\n+ a single `__root__`-style `entries` dict. Pydantic v2 recommends\n`RootModel` for free-form roots; using a wrapper class keeps the import\nsurface uniform with the rest of this module.",
        -                "properties": {
        -                  "entries": {
        -                    "additionalProperties": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.4 — single material/work-class total entry.",
        -                      "properties": {
        -                        "quantity": {
        -                          "minimum": 0,
        -                          "type": "number"
        -                        },
        -                        "unit": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "quantity",
        -                        "unit"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "object"
        -                  }
        -                },
        -                "type": "object"
        -              },
        -              "warnings": {
        -                "items": {
        -                  "additionalProperties": false,
        -                  "description": "Schema § 1.8 — a non-fatal geometry advisory (56th-fire T2).\n\nThe wire projection of the engine's `core.GeometryWarning`. Advisory only:\na warning NEVER changes a measured quantity — it flags geometry that is\nvalid but likely a mistake (e.g. a stale dependent-height default). Present\non BOTH tiers — a correctness/safety signal, not a paid feature.",
        -                  "properties": {
        -                    "affected_params": {
        -                      "items": {
        -                        "type": "string"
        -                      },
        -                      "type": "array"
        -                    },
        -                    "code": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "detail": {
        -                      "additionalProperties": {
        -                        "type": "number"
        -                      },
        -                      "type": "object"
        -                    },
        -                    "message": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "severity": {
        -                      "enum": [
        -                        "info",
        -                        "advisory",
        -                        "caution"
        -                      ],
        -                      "type": "string"
        -                    }
        -                  },
        -                  "required": [
        -                    "code",
        -                    "severity",
        -                    "message"
        -                  ],
        -                  "type": "object"
        -                },
        -                "type": "array"
        -              }
        -            },
        -            "required": [
        -              "assembly_slug",
        -              "standard",
        -              "parameters_used",
        -              "boq_rows",
        -              "totals_summary",
        -              "text_summary"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      },
        -      "error": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        -            "properties": {
        -              "code": {
        -                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        -                "enum": [
        -                  "RATE_LIMIT_EXCEEDED",
        -                  "TIER_INSUFFICIENT",
        -                  "INVALID_INPUT",
        -                  "SCHEMA_VERSION_MISMATCH",
        -                  "SCHEMA_INVARIANT_VIOLATION",
        -                  "UPSTREAM_TIMEOUT",
        -                  "BACKEND_FAILURE",
        -                  "IP_BLOCKED",
        -                  "RESOURCE_NOT_FOUND",
        -                  "RENDER_FAILURE",
        -                  "OCR_LOW_CONFIDENCE",
        -                  "MANUAL_REVIEW_REQUIRED",
        -                  "ACCEPTANCE_REQUIRED",
        -                  "INVALID_TOKEN"
        -                ],
        -                "type": "string"
        -              },
        -              "details": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "message": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "recoverable": {
        -                "type": "boolean"
        -              },
        -              "retry_after_seconds": {
        -                "anyOf": [
        -                  {
        -                    "minimum": 0,
        -                    "type": "integer"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              }
        -            },
        -            "required": [
        -              "code",
        -              "message",
        -              "recoverable"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      }
        -    },
        -    "required": [
        -      "_meta"
        -    ],
        -    "type": "object"
        -  },
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "_meta": {
        -        "additionalProperties": false,
        -        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        -        "properties": {
        -          "deliverables": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        -                "properties": {
        -                  "docx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "dxf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "expires_at": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  },
        -                  "pdf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "xlsx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "expires_at"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "document_id": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "issued_at": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "output_mode": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Surfaces what a trimmed ``output_mode`` withheld from ``data``.\n\nA trimmed mode (``summary`` / ``boq`` / ``boq_with_backup``) withholds\nalready-computed fields to keep the chat payload small. The withheld value\nreads to a client agent as \"capability missing\" (the box-culvert \"geometry\nbuilder isn't firing\" scare) rather than \"pared for size\": ``drawing`` and\n``audit_trail`` appear as ``null``, ``boq_rows`` as an empty list ``[]``\n(its type forbids ``null``) — both indistinguishable from a genuine absent\nresult. This names the withheld fields and the exact mode that brings each\nback, so the value is unambiguous. Absent on the default ``full_json`` mode\n— nothing is withheld, nothing to point at.",
        -                "properties": {
        -                  "mode": {
        -                    "enum": [
        -                      "summary",
        -                      "boq",
        -                      "boq_with_backup"
        -                    ],
        -                    "type": "string"
        -                  },
        -                  "omitted_fields": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "minItems": 1,
        -                    "type": "array"
        -                  },
        -                  "retrieve_with": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "mode",
        -                  "omitted_fields",
        -                  "retrieve_with"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "rate_limit_remaining": {
        -            "anyOf": [
        -              {
        -                "minimum": 0,
        -                "type": "integer"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "request_id": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "schema_version": {
        -            "const": "1.0.0",
        -            "default": "1.0.0",
        -            "type": "string"
        -          },
        -          "scope_boundary": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        -                "properties": {
        -                  "not_in_scope": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "produced": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "recommended_companions": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "type": "string"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "produced",
        -                  "not_in_scope"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tier": {
        -            "enum": [
        -              "free",
        -              "paid"
        -            ],
        -            "type": "string"
        -          },
        -          "tier_upgrade": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        -                "properties": {
        -                  "available_tiers": {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        -                      "properties": {
        -                        "billing": {
        -                          "enum": [
        -                            "one_off",
        -                            "monthly",
        -                            "annual"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "currency": {
        -                          "enum": [
        -                            "GBP",
        -                            "SGD",
        -                            "EUR",
        -                            "USD",
        -                            "CAD",
        -                            "AUD",
        -                            "NZD",
        -                            "MYR"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "display_name": {
        -                          "type": "string"
        -                        },
        -                        "price_local": {
        -                          "type": "number"
        -                        },
        -                        "tier_slug": {
        -                          "enum": [
        -                            "7_day_pass",
        -                            "solo",
        -                            "studio",
        -                            "practice"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "unlock_summary": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "tier_slug",
        -                        "display_name",
        -                        "price_local",
        -                        "currency",
        -                        "billing",
        -                        "unlock_summary"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "current_tier": {
        -                    "const": "free",
        -                    "default": "free",
        -                    "type": "string"
        -                  },
        -                  "pass_credit": {
        -                    "anyOf": [
        -                      {
        -                        "additionalProperties": false,
        -                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        -                        "properties": {
        -                          "amount_local": {
        -                            "type": "number"
        -                          },
        -                          "applies_to": {
        -                            "const": "solo_first_month",
        -                            "default": "solo_first_month",
        -                            "type": "string"
        -                          },
        -                          "currency": {
        -                            "type": "string"
        -                          },
        -                          "redeemable_until": {
        -                            "type": "string"
        -                          }
        -                        },
        -                        "required": [
        -                          "amount_local",
        -                          "currency",
        -                          "redeemable_until"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "pricing_url": {
        -                    "default": "https://civilquants.com/pricing",
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "available_tiers"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tos_url": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "upgrade_hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "warranty_disclaimer": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          }
        -        },
        -        "required": [
        -          "request_id",
        -          "issued_at",
        -          "tier"
        -        ],
        -        "type": "object"
        -      },
        -      "data": {
        -        "default": null,
        -        "title": "Data"
        -      },
        -      "error": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        -            "properties": {
        -              "code": {
        -                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        -                "enum": [
        -                  "RATE_LIMIT_EXCEEDED",
        -                  "TIER_INSUFFICIENT",
        -                  "INVALID_INPUT",
        -                  "SCHEMA_VERSION_MISMATCH",
        -                  "SCHEMA_INVARIANT_VIOLATION",
        -                  "UPSTREAM_TIMEOUT",
        -                  "BACKEND_FAILURE",
        -                  "IP_BLOCKED",
        -                  "RESOURCE_NOT_FOUND",
        -                  "RENDER_FAILURE",
        -                  "OCR_LOW_CONFIDENCE",
        -                  "MANUAL_REVIEW_REQUIRED",
        -                  "ACCEPTANCE_REQUIRED",
        -                  "INVALID_TOKEN"
        -                ],
        -                "type": "string"
        -              },
        -              "details": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "message": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "recoverable": {
        -                "type": "boolean"
        -              },
        -              "retry_after_seconds": {
        -                "anyOf": [
        -                  {
        -                    "minimum": 0,
        -                    "type": "integer"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              }
        -            },
        -            "required": [
        -              "code",
        -              "message",
        -              "recoverable"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      }
        -    },
        -    "required": [
        -      "_meta"
        -    ],
        -    "type": "object"
        -  }
        -]New value: +[
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "_meta": {
        +        "additionalProperties": false,
        +        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        +        "properties": {
        +          "deliverables": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        +                "properties": {
        +                  "docx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "dxf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "expires_at": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  },
        +                  "pdf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "xlsx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "expires_at"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "document_id": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "issued_at": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "output_mode": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Surfaces what a trimmed ``output_mode`` withheld from ``data``.\n\nA trimmed mode (``summary`` / ``material_schedule`` / ``boq`` /\n``boq_with_backup``) withholds\nalready-computed fields to keep the chat payload small. The withheld value\nreads to a client agent as \"capability missing\" (the box-culvert \"geometry\nbuilder isn't firing\" scare) rather than \"pared for size\": ``drawing`` and\n``audit_trail`` appear as ``null``, ``boq_rows`` as an empty list ``[]``\n(its type forbids ``null``) — both indistinguishable from a genuine absent\nresult. This names the withheld fields and the exact mode that brings each\nback, so the value is unambiguous. Absent on the default ``full_json`` mode\n— nothing is withheld, nothing to point at.",
        +                "properties": {
        +                  "mode": {
        +                    "enum": [
        +                      "summary",
        +                      "material_schedule",
        +                      "boq",
        +                      "boq_with_backup"
        +                    ],
        +                    "type": "string"
        +                  },
        +                  "omitted_fields": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "minItems": 1,
        +                    "type": "array"
        +                  },
        +                  "retrieve_with": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "mode",
        +                  "omitted_fields",
        +                  "retrieve_with"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "rate_limit_remaining": {
        +            "anyOf": [
        +              {
        +                "minimum": 0,
        +                "type": "integer"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "request_id": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "schema_version": {
        +            "const": "1.0.0",
        +            "default": "1.0.0",
        +            "type": "string"
        +          },
        +          "scope_boundary": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        +                "properties": {
        +                  "not_in_scope": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "produced": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "recommended_companions": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "type": "string"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "produced",
        +                  "not_in_scope"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tier": {
        +            "enum": [
        +              "free",
        +              "paid"
        +            ],
        +            "type": "string"
        +          },
        +          "tier_upgrade": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        +                "properties": {
        +                  "available_tiers": {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        +                      "properties": {
        +                        "billing": {
        +                          "enum": [
        +                            "one_off",
        +                            "monthly",
        +                            "annual"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "currency": {
        +                          "enum": [
        +                            "GBP",
        +                            "SGD",
        +                            "EUR",
        +                            "USD",
        +                            "CAD",
        +                            "AUD",
        +                            "NZD",
        +                            "MYR"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "display_name": {
        +                          "type": "string"
        +                        },
        +                        "price_local": {
        +                          "type": "number"
        +                        },
        +                        "tier_slug": {
        +                          "enum": [
        +                            "7_day_pass",
        +                            "solo",
        +                            "studio",
        +                            "practice"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "unlock_summary": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "tier_slug",
        +                        "display_name",
        +                        "price_local",
        +                        "currency",
        +                        "billing",
        +                        "unlock_summary"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "current_tier": {
        +                    "const": "free",
        +                    "default": "free",
        +                    "type": "string"
        +                  },
        +                  "pass_credit": {
        +                    "anyOf": [
        +                      {
        +                        "additionalProperties": false,
        +                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        +                        "properties": {
        +                          "amount_local": {
        +                            "type": "number"
        +                          },
        +                          "applies_to": {
        +                            "const": "solo_first_month",
        +                            "default": "solo_first_month",
        +                            "type": "string"
        +                          },
        +                          "currency": {
        +                            "type": "string"
        +                          },
        +                          "redeemable_until": {
        +                            "type": "string"
        +                          }
        +                        },
        +                        "required": [
        +                          "amount_local",
        +                          "currency",
        +                          "redeemable_until"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "pricing_url": {
        +                    "default": "https://civilquants.com/pricing",
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "available_tiers"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tos_url": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "upgrade_hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "warranty_disclaimer": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          }
        +        },
        +        "required": [
        +          "request_id",
        +          "issued_at",
        +          "tier"
        +        ],
        +        "type": "object"
        +      },
        +      "data": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Schema § 1.1 — the typed payload returned inside `MCPResponse[ComputeResult]`.\n\nFree-tier responses omit `drawings` (the downloadable CAD artefact\npointers — the paid differentiator); the bridge enforces this. The\n`audit_trail` and the inline `drawing` preview are present on BOTH tiers\n(V1 ALIGN / 60th-fire D + C). `text_summary` is bounded to 2000 chars —\nkeeps the LLM-facing summary token-cheap and forces longer narrative into\nBoQ row descriptions where it belongs. `warnings` is the non-fatal\ngeometry advisory list (both tiers).",
        +            "properties": {
        +              "assembly_slug": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "audit_trail": {
        +                "anyOf": [
        +                  {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.7 — paid-tier audit-trail entry.\n\nOne entry per BoQ row; `boq_row_index` ties to the row position in\n`ComputeResult.boq_rows`. `derivation` is the human-readable formula\nwalk-through; `formula` is the optional formal expression.",
        +                      "properties": {
        +                        "boq_row_index": {
        +                          "minimum": 0,
        +                          "type": "integer"
        +                        },
        +                        "derivation": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "formula": {
        +                          "anyOf": [
        +                            {
        +                              "type": "string"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ],
        +                          "default": null
        +                        },
        +                        "id": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "parameters_referenced": {
        +                          "items": {
        +                            "type": "string"
        +                          },
        +                          "type": "array"
        +                        }
        +                      },
        +                      "required": [
        +                        "id",
        +                        "boq_row_index",
        +                        "derivation"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "boq_rows": {
        +                "items": {
        +                  "additionalProperties": false,
        +                  "description": "Schema § 1.3 — a single bill row in the requested standard's format.\n\n`description` is the non-verbatim functional description per spec § 13.9 /\n§ 15 invariant — NEVER reproduces a standard's verbatim clause text.\n`rate` / `amount` ship null because rates are commodity data the customer\nowns; the engine's job is the measurement, not the pricing.",
        +                  "properties": {
        +                    "amount": {
        +                      "anyOf": [
        +                        {
        +                          "type": "number"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "attribution": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "audit_id": {
        +                      "anyOf": [
        +                        {
        +                          "type": "string"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "description": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "quantity": {
        +                      "minimum": 0,
        +                      "type": "number"
        +                    },
        +                    "rate": {
        +                      "anyOf": [
        +                        {
        +                          "type": "number"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "unit": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "work_section": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    }
        +                  },
        +                  "required": [
        +                    "work_section",
        +                    "description",
        +                    "quantity",
        +                    "unit",
        +                    "attribution"
        +                  ],
        +                  "type": "object"
        +                },
        +                "type": "array"
        +              },
        +              "drawing": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": false,
        +                    "description": "Schema § 1.6a — inline server-rendered SVG preview of the geometry.\n\nThe MCP mirror of the web ``/compute`` response's ``drawing`` field\n(``api.schemas.compute.DrawingRef``): the same on-screen dimensioned\ndrawing both tiers see in the workspace, surfaced on the MCP compute\nresponse so a chat client can render it inline (60th-fire item C). This\nis the on-screen preview — present on BOTH tiers per the free/paid\nboundary; the downloadable CAD artefacts (DXF / dimensioned PDF) remain\nthe paid differentiator via the export tools.\n\nDefined here rather than importing ``DrawingRef`` because the web\n``schemas`` package imports back into this module (``schemas.render``),\nso reusing it would create an import cycle — the MCP wire contract keeps\nits own copy, the same pattern as ``BoQRow`` / ``DrawingReference``.",
        +                    "properties": {
        +                      "entity_count": {
        +                        "minimum": 0,
        +                        "type": "integer"
        +                      },
        +                      "svg_b64": {
        +                        "minLength": 1,
        +                        "type": "string"
        +                      },
        +                      "unit_of_drawing": {
        +                        "const": "m",
        +                        "default": "m",
        +                        "type": "string"
        +                      },
        +                      "viewbox_height": {
        +                        "exclusiveMinimum": 0,
        +                        "type": "number"
        +                      },
        +                      "viewbox_width": {
        +                        "exclusiveMinimum": 0,
        +                        "type": "number"
        +                      },
        +                      "viewbox_x": {
        +                        "type": "number"
        +                      },
        +                      "viewbox_y": {
        +                        "type": "number"
        +                      }
        +                    },
        +                    "required": [
        +                      "svg_b64",
        +                      "viewbox_x",
        +                      "viewbox_y",
        +                      "viewbox_width",
        +                      "viewbox_height",
        +                      "entity_count"
        +                    ],
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "drawings": {
        +                "anyOf": [
        +                  {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.6 — paid-tier drawing artefact pointer.\n\n`url` is an R2-signed URL; expiry is carried in `_meta.deliverables.expires_at`\non the envelope (not duplicated here). `layers` is DXF-only; PDF/SVG\ncallers omit it.",
        +                      "properties": {
        +                        "drawing_type": {
        +                          "enum": [
        +                            "section",
        +                            "plan",
        +                            "elevation",
        +                            "isometric",
        +                            "detail"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "format": {
        +                          "enum": [
        +                            "DXF",
        +                            "PDF",
        +                            "SVG"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "layers": {
        +                          "anyOf": [
        +                            {
        +                              "items": {
        +                                "type": "string"
        +                              },
        +                              "type": "array"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ],
        +                          "default": null
        +                        },
        +                        "scale": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "sheet_size": {
        +                          "enum": [
        +                            "A1",
        +                            "A2",
        +                            "A3",
        +                            "A4"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "url": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "drawing_type",
        +                        "format",
        +                        "url",
        +                        "sheet_size",
        +                        "scale"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "parameters_used": {
        +                "additionalProperties": false,
        +                "description": "Schema § 1.2 — the parameter snapshot the engine actually used.\n\nSplits user-supplied values from engine defaults so customers can see\nwhich numbers came from them and which the engine filled in. Every\ndefaulted parameter SHOULD have a corresponding entry in `assumptions`\n— the bridge layer enforces this when wrapping engine output.",
        +                "properties": {
        +                  "assumptions": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "engine_defaults": {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  "user_supplied": {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  }
        +                },
        +                "type": "object"
        +              },
        +              "standard": {
        +                "enum": [
        +                  "CESMM4",
        +                  "NRM2",
        +                  "SMM7",
        +                  "MMHW"
        +                ],
        +                "type": "string"
        +              },
        +              "text_summary": {
        +                "maxLength": 2000,
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "totals_summary": {
        +                "additionalProperties": false,
        +                "description": "Schema § 1.4 — totals_summary as a typed wrapper around the free-form dict.\n\nWire shape is a flat object (`{\"concrete_m3\": {...}, \"rebar_t\": {...}}`).\nWe model it as `RootModel`-equivalent via `model_config(extra=\"allow\")`\n+ a single `__root__`-style `entries` dict. Pydantic v2 recommends\n`RootModel` for free-form roots; using a wrapper class keeps the import\nsurface uniform with the rest of this module.",
        +                "properties": {
        +                  "entries": {
        +                    "additionalProperties": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.4 — single material/work-class total entry.",
        +                      "properties": {
        +                        "quantity": {
        +                          "minimum": 0,
        +                          "type": "number"
        +                        },
        +                        "unit": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "quantity",
        +                        "unit"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "object"
        +                  }
        +                },
        +                "type": "object"
        +              },
        +              "warnings": {
        +                "items": {
        +                  "additionalProperties": false,
        +                  "description": "Schema § 1.8 — a non-fatal geometry advisory (56th-fire T2).\n\nThe wire projection of the engine's `core.GeometryWarning`. Advisory only:\na warning NEVER changes a measured quantity — it flags geometry that is\nvalid but likely a mistake (e.g. a stale dependent-height default). Present\non BOTH tiers — a correctness/safety signal, not a paid feature.",
        +                  "properties": {
        +                    "affected_params": {
        +                      "items": {
        +                        "type": "string"
        +                      },
        +                      "type": "array"
        +                    },
        +                    "code": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "detail": {
        +                      "additionalProperties": {
        +                        "type": "number"
        +                      },
        +                      "type": "object"
        +                    },
        +                    "message": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "severity": {
        +                      "enum": [
        +                        "info",
        +                        "advisory",
        +                        "caution"
        +                      ],
        +                      "type": "string"
        +                    }
        +                  },
        +                  "required": [
        +                    "code",
        +                    "severity",
        +                    "message"
        +                  ],
        +                  "type": "object"
        +                },
        +                "type": "array"
        +              }
        +            },
        +            "required": [
        +              "assembly_slug",
        +              "standard",
        +              "parameters_used",
        +              "boq_rows",
        +              "totals_summary",
        +              "text_summary"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      },
        +      "error": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        +            "properties": {
        +              "code": {
        +                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        +                "enum": [
        +                  "RATE_LIMIT_EXCEEDED",
        +                  "TIER_INSUFFICIENT",
        +                  "INVALID_INPUT",
        +                  "SCHEMA_VERSION_MISMATCH",
        +                  "SCHEMA_INVARIANT_VIOLATION",
        +                  "UPSTREAM_TIMEOUT",
        +                  "BACKEND_FAILURE",
        +                  "IP_BLOCKED",
        +                  "RESOURCE_NOT_FOUND",
        +                  "RENDER_FAILURE",
        +                  "OCR_LOW_CONFIDENCE",
        +                  "MANUAL_REVIEW_REQUIRED",
        +                  "ACCEPTANCE_REQUIRED",
        +                  "INVALID_TOKEN"
        +                ],
        +                "type": "string"
        +              },
        +              "details": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "message": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "recoverable": {
        +                "type": "boolean"
        +              },
        +              "retry_after_seconds": {
        +                "anyOf": [
        +                  {
        +                    "minimum": 0,
        +                    "type": "integer"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              }
        +            },
        +            "required": [
        +              "code",
        +              "message",
        +              "recoverable"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      }
        +    },
        +    "required": [
        +      "_meta"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "_meta": {
        +        "additionalProperties": false,
        +        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        +        "properties": {
        +          "deliverables": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        +                "properties": {
        +                  "docx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "dxf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "expires_at": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  },
        +                  "pdf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "xlsx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "expires_at"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "document_id": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "issued_at": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "output_mode": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Surfaces what a trimmed ``output_mode`` withheld from ``data``.\n\nA trimmed mode (``summary`` / ``material_schedule`` / ``boq`` /\n``boq_with_backup``) withholds\nalready-computed fields to keep the chat payload small. The withheld value\nreads to a client agent as \"capability missing\" (the box-culvert \"geometry\nbuilder isn't firing\" scare) rather than \"pared for size\": ``drawing`` and\n``audit_trail`` appear as ``null``, ``boq_rows`` as an empty list ``[]``\n(its type forbids ``null``) — both indistinguishable from a genuine absent\nresult. This names the withheld fields and the exact mode that brings each\nback, so the value is unambiguous. Absent on the default ``full_json`` mode\n— nothing is withheld, nothing to point at.",
        +                "properties": {
        +                  "mode": {
        +                    "enum": [
        +                      "summary",
        +                      "material_schedule",
        +                      "boq",
        +                      "boq_with_backup"
        +                    ],
        +                    "type": "string"
        +                  },
        +                  "omitted_fields": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "minItems": 1,
        +                    "type": "array"
        +                  },
        +                  "retrieve_with": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "mode",
        +                  "omitted_fields",
        +                  "retrieve_with"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "rate_limit_remaining": {
        +            "anyOf": [
        +              {
        +                "minimum": 0,
        +                "type": "integer"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "request_id": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "schema_version": {
        +            "const": "1.0.0",
        +            "default": "1.0.0",
        +            "type": "string"
        +          },
        +          "scope_boundary": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        +                "properties": {
        +                  "not_in_scope": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "produced": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "recommended_companions": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "type": "string"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "produced",
        +                  "not_in_scope"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tier": {
        +            "enum": [
        +              "free",
        +              "paid"
        +            ],
        +            "type": "string"
        +          },
        +          "tier_upgrade": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        +                "properties": {
        +                  "available_tiers": {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        +                      "properties": {
        +                        "billing": {
        +                          "enum": [
        +                            "one_off",
        +                            "monthly",
        +                            "annual"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "currency": {
        +                          "enum": [
        +                            "GBP",
        +                            "SGD",
        +                            "EUR",
        +                            "USD",
        +                            "CAD",
        +                            "AUD",
        +                            "NZD",
        +                            "MYR"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "display_name": {
        +                          "type": "string"
        +                        },
        +                        "price_local": {
        +                          "type": "number"
        +                        },
        +                        "tier_slug": {
        +                          "enum": [
        +                            "7_day_pass",
        +                            "solo",
        +                            "studio",
        +                            "practice"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "unlock_summary": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "tier_slug",
        +                        "display_name",
        +                        "price_local",
        +                        "currency",
        +                        "billing",
        +                        "unlock_summary"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "current_tier": {
        +                    "const": "free",
        +                    "default": "free",
        +                    "type": "string"
        +                  },
        +                  "pass_credit": {
        +                    "anyOf": [
        +                      {
        +                        "additionalProperties": false,
        +                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        +                        "properties": {
        +                          "amount_local": {
        +                            "type": "number"
        +                          },
        +                          "applies_to": {
        +                            "const": "solo_first_month",
        +                            "default": "solo_first_month",
        +                            "type": "string"
        +                          },
        +                          "currency": {
        +                            "type": "string"
        +                          },
        +                          "redeemable_until": {
        +                            "type": "string"
        +                          }
        +                        },
        +                        "required": [
        +                          "amount_local",
        +                          "currency",
        +                          "redeemable_until"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "pricing_url": {
        +                    "default": "https://civilquants.com/pricing",
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "available_tiers"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tos_url": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "upgrade_hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "warranty_disclaimer": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          }
        +        },
        +        "required": [
        +          "request_id",
        +          "issued_at",
        +          "tier"
        +        ],
        +        "type": "object"
        +      },
        +      "data": {
        +        "default": null,
        +        "title": "Data"
        +      },
        +      "error": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        +            "properties": {
        +              "code": {
        +                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        +                "enum": [
        +                  "RATE_LIMIT_EXCEEDED",
        +                  "TIER_INSUFFICIENT",
        +                  "INVALID_INPUT",
        +                  "SCHEMA_VERSION_MISMATCH",
        +                  "SCHEMA_INVARIANT_VIOLATION",
        +                  "UPSTREAM_TIMEOUT",
        +                  "BACKEND_FAILURE",
        +                  "IP_BLOCKED",
        +                  "RESOURCE_NOT_FOUND",
        +                  "RENDER_FAILURE",
        +                  "OCR_LOW_CONFIDENCE",
        +                  "MANUAL_REVIEW_REQUIRED",
        +                  "ACCEPTANCE_REQUIRED",
        +                  "INVALID_TOKEN"
        +                ],
        +                "type": "string"
        +              },
        +              "details": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "message": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "recoverable": {
        +                "type": "boolean"
        +              },
        +              "retry_after_seconds": {
        +                "anyOf": [
        +                  {
        +                    "minimum": 0,
        +                    "type": "integer"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              }
        +            },
        +            "required": [
        +              "code",
        +              "message",
        +              "recoverable"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      }
        +    },
        +    "required": [
        +      "_meta"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedcompute_kerb_run2 fields changed
      • changedInput schema / properties / output_mode / enum
        Previous value: -[
        -  "summary",
        -  "boq",
        -  "boq_with_backup",
        -  "full_json"
        -]New value: +[
        +  "summary",
        +  "material_schedule",
        +  "boq",
        +  "boq_with_backup",
        +  "full_json"
        +]
      • changedOutput schema / properties / result / anyOf
        Previous value: -[
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "_meta": {
        -        "additionalProperties": false,
        -        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        -        "properties": {
        -          "deliverables": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        -                "properties": {
        -                  "docx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "dxf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "expires_at": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  },
        -                  "pdf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "xlsx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "expires_at"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "document_id": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "issued_at": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "output_mode": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Surfaces what a trimmed ``output_mode`` withheld from ``data``.\n\nA trimmed mode (``summary`` / ``boq`` / ``boq_with_backup``) withholds\nalready-computed fields to keep the chat payload small. The withheld value\nreads to a client agent as \"capability missing\" (the box-culvert \"geometry\nbuilder isn't firing\" scare) rather than \"pared for size\": ``drawing`` and\n``audit_trail`` appear as ``null``, ``boq_rows`` as an empty list ``[]``\n(its type forbids ``null``) — both indistinguishable from a genuine absent\nresult. This names the withheld fields and the exact mode that brings each\nback, so the value is unambiguous. Absent on the default ``full_json`` mode\n— nothing is withheld, nothing to point at.",
        -                "properties": {
        -                  "mode": {
        -                    "enum": [
        -                      "summary",
        -                      "boq",
        -                      "boq_with_backup"
        -                    ],
        -                    "type": "string"
        -                  },
        -                  "omitted_fields": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "minItems": 1,
        -                    "type": "array"
        -                  },
        -                  "retrieve_with": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "mode",
        -                  "omitted_fields",
        -                  "retrieve_with"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "rate_limit_remaining": {
        -            "anyOf": [
        -              {
        -                "minimum": 0,
        -                "type": "integer"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "request_id": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "schema_version": {
        -            "const": "1.0.0",
        -            "default": "1.0.0",
        -            "type": "string"
        -          },
        -          "scope_boundary": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        -                "properties": {
        -                  "not_in_scope": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "produced": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "recommended_companions": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "type": "string"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "produced",
        -                  "not_in_scope"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tier": {
        -            "enum": [
        -              "free",
        -              "paid"
        -            ],
        -            "type": "string"
        -          },
        -          "tier_upgrade": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        -                "properties": {
        -                  "available_tiers": {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        -                      "properties": {
        -                        "billing": {
        -                          "enum": [
        -                            "one_off",
        -                            "monthly",
        -                            "annual"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "currency": {
        -                          "enum": [
        -                            "GBP",
        -                            "SGD",
        -                            "EUR",
        -                            "USD",
        -                            "CAD",
        -                            "AUD",
        -                            "NZD",
        -                            "MYR"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "display_name": {
        -                          "type": "string"
        -                        },
        -                        "price_local": {
        -                          "type": "number"
        -                        },
        -                        "tier_slug": {
        -                          "enum": [
        -                            "7_day_pass",
        -                            "solo",
        -                            "studio",
        -                            "practice"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "unlock_summary": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "tier_slug",
        -                        "display_name",
        -                        "price_local",
        -                        "currency",
        -                        "billing",
        -                        "unlock_summary"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "current_tier": {
        -                    "const": "free",
        -                    "default": "free",
        -                    "type": "string"
        -                  },
        -                  "pass_credit": {
        -                    "anyOf": [
        -                      {
        -                        "additionalProperties": false,
        -                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        -                        "properties": {
        -                          "amount_local": {
        -                            "type": "number"
        -                          },
        -                          "applies_to": {
        -                            "const": "solo_first_month",
        -                            "default": "solo_first_month",
        -                            "type": "string"
        -                          },
        -                          "currency": {
        -                            "type": "string"
        -                          },
        -                          "redeemable_until": {
        -                            "type": "string"
        -                          }
        -                        },
        -                        "required": [
        -                          "amount_local",
        -                          "currency",
        -                          "redeemable_until"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "pricing_url": {
        -                    "default": "https://civilquants.com/pricing",
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "available_tiers"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tos_url": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "upgrade_hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "warranty_disclaimer": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          }
        -        },
        -        "required": [
        -          "request_id",
        -          "issued_at",
        -          "tier"
        -        ],
        -        "type": "object"
        -      },
        -      "data": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Schema § 1.1 — the typed payload returned inside `MCPResponse[ComputeResult]`.\n\nFree-tier responses omit `drawings` (the downloadable CAD artefact\npointers — the paid differentiator); the bridge enforces this. The\n`audit_trail` and the inline `drawing` preview are present on BOTH tiers\n(V1 ALIGN / 60th-fire D + C). `text_summary` is bounded to 2000 chars —\nkeeps the LLM-facing summary token-cheap and forces longer narrative into\nBoQ row descriptions where it belongs. `warnings` is the non-fatal\ngeometry advisory list (both tiers).",
        -            "properties": {
        -              "assembly_slug": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "audit_trail": {
        -                "anyOf": [
        -                  {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.7 — paid-tier audit-trail entry.\n\nOne entry per BoQ row; `boq_row_index` ties to the row position in\n`ComputeResult.boq_rows`. `derivation` is the human-readable formula\nwalk-through; `formula` is the optional formal expression.",
        -                      "properties": {
        -                        "boq_row_index": {
        -                          "minimum": 0,
        -                          "type": "integer"
        -                        },
        -                        "derivation": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "formula": {
        -                          "anyOf": [
        -                            {
        -                              "type": "string"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ],
        -                          "default": null
        -                        },
        -                        "id": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "parameters_referenced": {
        -                          "items": {
        -                            "type": "string"
        -                          },
        -                          "type": "array"
        -                        }
        -                      },
        -                      "required": [
        -                        "id",
        -                        "boq_row_index",
        -                        "derivation"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "boq_rows": {
        -                "items": {
        -                  "additionalProperties": false,
        -                  "description": "Schema § 1.3 — a single bill row in the requested standard's format.\n\n`description` is the non-verbatim functional description per spec § 13.9 /\n§ 15 invariant — NEVER reproduces a standard's verbatim clause text.\n`rate` / `amount` ship null because rates are commodity data the customer\nowns; the engine's job is the measurement, not the pricing.",
        -                  "properties": {
        -                    "amount": {
        -                      "anyOf": [
        -                        {
        -                          "type": "number"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "attribution": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "audit_id": {
        -                      "anyOf": [
        -                        {
        -                          "type": "string"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "description": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "quantity": {
        -                      "minimum": 0,
        -                      "type": "number"
        -                    },
        -                    "rate": {
        -                      "anyOf": [
        -                        {
        -                          "type": "number"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "unit": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "work_section": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    }
        -                  },
        -                  "required": [
        -                    "work_section",
        -                    "description",
        -                    "quantity",
        -                    "unit",
        -                    "attribution"
        -                  ],
        -                  "type": "object"
        -                },
        -                "type": "array"
        -              },
        -              "drawing": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": false,
        -                    "description": "Schema § 1.6a — inline server-rendered SVG preview of the geometry.\n\nThe MCP mirror of the web ``/compute`` response's ``drawing`` field\n(``api.schemas.compute.DrawingRef``): the same on-screen dimensioned\ndrawing both tiers see in the workspace, surfaced on the MCP compute\nresponse so a chat client can render it inline (60th-fire item C). This\nis the on-screen preview — present on BOTH tiers per the free/paid\nboundary; the downloadable CAD artefacts (DXF / dimensioned PDF) remain\nthe paid differentiator via the export tools.\n\nDefined here rather than importing ``DrawingRef`` because the web\n``schemas`` package imports back into this module (``schemas.render``),\nso reusing it would create an import cycle — the MCP wire contract keeps\nits own copy, the same pattern as ``BoQRow`` / ``DrawingReference``.",
        -                    "properties": {
        -                      "entity_count": {
        -                        "minimum": 0,
        -                        "type": "integer"
        -                      },
        -                      "svg_b64": {
        -                        "minLength": 1,
        -                        "type": "string"
        -                      },
        -                      "unit_of_drawing": {
        -                        "const": "m",
        -                        "default": "m",
        -                        "type": "string"
        -                      },
        -                      "viewbox_height": {
        -                        "exclusiveMinimum": 0,
        -                        "type": "number"
        -                      },
        -                      "viewbox_width": {
        -                        "exclusiveMinimum": 0,
        -                        "type": "number"
        -                      },
        -                      "viewbox_x": {
        -                        "type": "number"
        -                      },
        -                      "viewbox_y": {
        -                        "type": "number"
        -                      }
        -                    },
        -                    "required": [
        -                      "svg_b64",
        -                      "viewbox_x",
        -                      "viewbox_y",
        -                      "viewbox_width",
        -                      "viewbox_height",
        -                      "entity_count"
        -                    ],
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "drawings": {
        -                "anyOf": [
        -                  {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.6 — paid-tier drawing artefact pointer.\n\n`url` is an R2-signed URL; expiry is carried in `_meta.deliverables.expires_at`\non the envelope (not duplicated here). `layers` is DXF-only; PDF/SVG\ncallers omit it.",
        -                      "properties": {
        -                        "drawing_type": {
        -                          "enum": [
        -                            "section",
        -                            "plan",
        -                            "elevation",
        -                            "isometric",
        -                            "detail"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "format": {
        -                          "enum": [
        -                            "DXF",
        -                            "PDF",
        -                            "SVG"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "layers": {
        -                          "anyOf": [
        -                            {
        -                              "items": {
        -                                "type": "string"
        -                              },
        -                              "type": "array"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ],
        -                          "default": null
        -                        },
        -                        "scale": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "sheet_size": {
        -                          "enum": [
        -                            "A1",
        -                            "A2",
        -                            "A3",
        -                            "A4"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "url": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "drawing_type",
        -                        "format",
        -                        "url",
        -                        "sheet_size",
        -                        "scale"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "parameters_used": {
        -                "additionalProperties": false,
        -                "description": "Schema § 1.2 — the parameter snapshot the engine actually used.\n\nSplits user-supplied values from engine defaults so customers can see\nwhich numbers came from them and which the engine filled in. Every\ndefaulted parameter SHOULD have a corresponding entry in `assumptions`\n— the bridge layer enforces this when wrapping engine output.",
        -                "properties": {
        -                  "assumptions": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "engine_defaults": {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  "user_supplied": {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  }
        -                },
        -                "type": "object"
        -              },
        -              "standard": {
        -                "enum": [
        -                  "CESMM4",
        -                  "NRM2",
        -                  "SMM7",
        -                  "MMHW"
        -                ],
        -                "type": "string"
        -              },
        -              "text_summary": {
        -                "maxLength": 2000,
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "totals_summary": {
        -                "additionalProperties": false,
        -                "description": "Schema § 1.4 — totals_summary as a typed wrapper around the free-form dict.\n\nWire shape is a flat object (`{\"concrete_m3\": {...}, \"rebar_t\": {...}}`).\nWe model it as `RootModel`-equivalent via `model_config(extra=\"allow\")`\n+ a single `__root__`-style `entries` dict. Pydantic v2 recommends\n`RootModel` for free-form roots; using a wrapper class keeps the import\nsurface uniform with the rest of this module.",
        -                "properties": {
        -                  "entries": {
        -                    "additionalProperties": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.4 — single material/work-class total entry.",
        -                      "properties": {
        -                        "quantity": {
        -                          "minimum": 0,
        -                          "type": "number"
        -                        },
        -                        "unit": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "quantity",
        -                        "unit"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "object"
        -                  }
        -                },
        -                "type": "object"
        -              },
        -              "warnings": {
        -                "items": {
        -                  "additionalProperties": false,
        -                  "description": "Schema § 1.8 — a non-fatal geometry advisory (56th-fire T2).\n\nThe wire projection of the engine's `core.GeometryWarning`. Advisory only:\na warning NEVER changes a measured quantity — it flags geometry that is\nvalid but likely a mistake (e.g. a stale dependent-height default). Present\non BOTH tiers — a correctness/safety signal, not a paid feature.",
        -                  "properties": {
        -                    "affected_params": {
        -                      "items": {
        -                        "type": "string"
        -                      },
        -                      "type": "array"
        -                    },
        -                    "code": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "detail": {
        -                      "additionalProperties": {
        -                        "type": "number"
        -                      },
        -                      "type": "object"
        -                    },
        -                    "message": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "severity": {
        -                      "enum": [
        -                        "info",
        -                        "advisory",
        -                        "caution"
        -                      ],
        -                      "type": "string"
        -                    }
        -                  },
        -                  "required": [
        -                    "code",
        -                    "severity",
        -                    "message"
        -                  ],
        -                  "type": "object"
        -                },
        -                "type": "array"
        -              }
        -            },
        -            "required": [
        -              "assembly_slug",
        -              "standard",
        -              "parameters_used",
        -              "boq_rows",
        -              "totals_summary",
        -              "text_summary"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      },
        -      "error": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        -            "properties": {
        -              "code": {
        -                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        -                "enum": [
        -                  "RATE_LIMIT_EXCEEDED",
        -                  "TIER_INSUFFICIENT",
        -                  "INVALID_INPUT",
        -                  "SCHEMA_VERSION_MISMATCH",
        -                  "SCHEMA_INVARIANT_VIOLATION",
        -                  "UPSTREAM_TIMEOUT",
        -                  "BACKEND_FAILURE",
        -                  "IP_BLOCKED",
        -                  "RESOURCE_NOT_FOUND",
        -                  "RENDER_FAILURE",
        -                  "OCR_LOW_CONFIDENCE",
        -                  "MANUAL_REVIEW_REQUIRED",
        -                  "ACCEPTANCE_REQUIRED",
        -                  "INVALID_TOKEN"
        -                ],
        -                "type": "string"
        -              },
        -              "details": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "message": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "recoverable": {
        -                "type": "boolean"
        -              },
        -              "retry_after_seconds": {
        -                "anyOf": [
        -                  {
        -                    "minimum": 0,
        -                    "type": "integer"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              }
        -            },
        -            "required": [
        -              "code",
        -              "message",
        -              "recoverable"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      }
        -    },
        -    "required": [
        -      "_meta"
        -    ],
        -    "type": "object"
        -  },
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "_meta": {
        -        "additionalProperties": false,
        -        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        -        "properties": {
        -          "deliverables": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        -                "properties": {
        -                  "docx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "dxf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "expires_at": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  },
        -                  "pdf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "xlsx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "expires_at"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "document_id": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "issued_at": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "output_mode": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Surfaces what a trimmed ``output_mode`` withheld from ``data``.\n\nA trimmed mode (``summary`` / ``boq`` / ``boq_with_backup``) withholds\nalready-computed fields to keep the chat payload small. The withheld value\nreads to a client agent as \"capability missing\" (the box-culvert \"geometry\nbuilder isn't firing\" scare) rather than \"pared for size\": ``drawing`` and\n``audit_trail`` appear as ``null``, ``boq_rows`` as an empty list ``[]``\n(its type forbids ``null``) — both indistinguishable from a genuine absent\nresult. This names the withheld fields and the exact mode that brings each\nback, so the value is unambiguous. Absent on the default ``full_json`` mode\n— nothing is withheld, nothing to point at.",
        -                "properties": {
        -                  "mode": {
        -                    "enum": [
        -                      "summary",
        -                      "boq",
        -                      "boq_with_backup"
        -                    ],
        -                    "type": "string"
        -                  },
        -                  "omitted_fields": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "minItems": 1,
        -                    "type": "array"
        -                  },
        -                  "retrieve_with": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "mode",
        -                  "omitted_fields",
        -                  "retrieve_with"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "rate_limit_remaining": {
        -            "anyOf": [
        -              {
        -                "minimum": 0,
        -                "type": "integer"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "request_id": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "schema_version": {
        -            "const": "1.0.0",
        -            "default": "1.0.0",
        -            "type": "string"
        -          },
        -          "scope_boundary": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        -                "properties": {
        -                  "not_in_scope": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "produced": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "recommended_companions": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "type": "string"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "produced",
        -                  "not_in_scope"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tier": {
        -            "enum": [
        -              "free",
        -              "paid"
        -            ],
        -            "type": "string"
        -          },
        -          "tier_upgrade": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        -                "properties": {
        -                  "available_tiers": {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        -                      "properties": {
        -                        "billing": {
        -                          "enum": [
        -                            "one_off",
        -                            "monthly",
        -                            "annual"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "currency": {
        -                          "enum": [
        -                            "GBP",
        -                            "SGD",
        -                            "EUR",
        -                            "USD",
        -                            "CAD",
        -                            "AUD",
        -                            "NZD",
        -                            "MYR"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "display_name": {
        -                          "type": "string"
        -                        },
        -                        "price_local": {
        -                          "type": "number"
        -                        },
        -                        "tier_slug": {
        -                          "enum": [
        -                            "7_day_pass",
        -                            "solo",
        -                            "studio",
        -                            "practice"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "unlock_summary": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "tier_slug",
        -                        "display_name",
        -                        "price_local",
        -                        "currency",
        -                        "billing",
        -                        "unlock_summary"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "current_tier": {
        -                    "const": "free",
        -                    "default": "free",
        -                    "type": "string"
        -                  },
        -                  "pass_credit": {
        -                    "anyOf": [
        -                      {
        -                        "additionalProperties": false,
        -                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        -                        "properties": {
        -                          "amount_local": {
        -                            "type": "number"
        -                          },
        -                          "applies_to": {
        -                            "const": "solo_first_month",
        -                            "default": "solo_first_month",
        -                            "type": "string"
        -                          },
        -                          "currency": {
        -                            "type": "string"
        -                          },
        -                          "redeemable_until": {
        -                            "type": "string"
        -                          }
        -                        },
        -                        "required": [
        -                          "amount_local",
        -                          "currency",
        -                          "redeemable_until"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "pricing_url": {
        -                    "default": "https://civilquants.com/pricing",
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "available_tiers"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tos_url": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "upgrade_hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "warranty_disclaimer": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          }
        -        },
        -        "required": [
        -          "request_id",
        -          "issued_at",
        -          "tier"
        -        ],
        -        "type": "object"
        -      },
        -      "data": {
        -        "default": null,
        -        "title": "Data"
        -      },
        -      "error": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        -            "properties": {
        -              "code": {
        -                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        -                "enum": [
        -                  "RATE_LIMIT_EXCEEDED",
        -                  "TIER_INSUFFICIENT",
        -                  "INVALID_INPUT",
        -                  "SCHEMA_VERSION_MISMATCH",
        -                  "SCHEMA_INVARIANT_VIOLATION",
        -                  "UPSTREAM_TIMEOUT",
        -                  "BACKEND_FAILURE",
        -                  "IP_BLOCKED",
        -                  "RESOURCE_NOT_FOUND",
        -                  "RENDER_FAILURE",
        -                  "OCR_LOW_CONFIDENCE",
        -                  "MANUAL_REVIEW_REQUIRED",
        -                  "ACCEPTANCE_REQUIRED",
        -                  "INVALID_TOKEN"
        -                ],
        -                "type": "string"
        -              },
        -              "details": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "message": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "recoverable": {
        -                "type": "boolean"
        -              },
        -              "retry_after_seconds": {
        -                "anyOf": [
        -                  {
        -                    "minimum": 0,
        -                    "type": "integer"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              }
        -            },
        -            "required": [
        -              "code",
        -              "message",
        -              "recoverable"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      }
        -    },
        -    "required": [
        -      "_meta"
        -    ],
        -    "type": "object"
        -  }
        -]New value: +[
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "_meta": {
        +        "additionalProperties": false,
        +        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        +        "properties": {
        +          "deliverables": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        +                "properties": {
        +                  "docx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "dxf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "expires_at": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  },
        +                  "pdf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "xlsx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "expires_at"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "document_id": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "issued_at": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "output_mode": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Surfaces what a trimmed ``output_mode`` withheld from ``data``.\n\nA trimmed mode (``summary`` / ``material_schedule`` / ``boq`` /\n``boq_with_backup``) withholds\nalready-computed fields to keep the chat payload small. The withheld value\nreads to a client agent as \"capability missing\" (the box-culvert \"geometry\nbuilder isn't firing\" scare) rather than \"pared for size\": ``drawing`` and\n``audit_trail`` appear as ``null``, ``boq_rows`` as an empty list ``[]``\n(its type forbids ``null``) — both indistinguishable from a genuine absent\nresult. This names the withheld fields and the exact mode that brings each\nback, so the value is unambiguous. Absent on the default ``full_json`` mode\n— nothing is withheld, nothing to point at.",
        +                "properties": {
        +                  "mode": {
        +                    "enum": [
        +                      "summary",
        +                      "material_schedule",
        +                      "boq",
        +                      "boq_with_backup"
        +                    ],
        +                    "type": "string"
        +                  },
        +                  "omitted_fields": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "minItems": 1,
        +                    "type": "array"
        +                  },
        +                  "retrieve_with": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "mode",
        +                  "omitted_fields",
        +                  "retrieve_with"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "rate_limit_remaining": {
        +            "anyOf": [
        +              {
        +                "minimum": 0,
        +                "type": "integer"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "request_id": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "schema_version": {
        +            "const": "1.0.0",
        +            "default": "1.0.0",
        +            "type": "string"
        +          },
        +          "scope_boundary": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        +                "properties": {
        +                  "not_in_scope": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "produced": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "recommended_companions": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "type": "string"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "produced",
        +                  "not_in_scope"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tier": {
        +            "enum": [
        +              "free",
        +              "paid"
        +            ],
        +            "type": "string"
        +          },
        +          "tier_upgrade": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        +                "properties": {
        +                  "available_tiers": {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        +                      "properties": {
        +                        "billing": {
        +                          "enum": [
        +                            "one_off",
        +                            "monthly",
        +                            "annual"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "currency": {
        +                          "enum": [
        +                            "GBP",
        +                            "SGD",
        +                            "EUR",
        +                            "USD",
        +                            "CAD",
        +                            "AUD",
        +                            "NZD",
        +                            "MYR"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "display_name": {
        +                          "type": "string"
        +                        },
        +                        "price_local": {
        +                          "type": "number"
        +                        },
        +                        "tier_slug": {
        +                          "enum": [
        +                            "7_day_pass",
        +                            "solo",
        +                            "studio",
        +                            "practice"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "unlock_summary": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "tier_slug",
        +                        "display_name",
        +                        "price_local",
        +                        "currency",
        +                        "billing",
        +                        "unlock_summary"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "current_tier": {
        +                    "const": "free",
        +                    "default": "free",
        +                    "type": "string"
        +                  },
        +                  "pass_credit": {
        +                    "anyOf": [
        +                      {
        +                        "additionalProperties": false,
        +                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        +                        "properties": {
        +                          "amount_local": {
        +                            "type": "number"
        +                          },
        +                          "applies_to": {
        +                            "const": "solo_first_month",
        +                            "default": "solo_first_month",
        +                            "type": "string"
        +                          },
        +                          "currency": {
        +                            "type": "string"
        +                          },
        +                          "redeemable_until": {
        +                            "type": "string"
        +                          }
        +                        },
        +                        "required": [
        +                          "amount_local",
        +                          "currency",
        +                          "redeemable_until"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "pricing_url": {
        +                    "default": "https://civilquants.com/pricing",
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "available_tiers"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tos_url": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "upgrade_hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "warranty_disclaimer": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          }
        +        },
        +        "required": [
        +          "request_id",
        +          "issued_at",
        +          "tier"
        +        ],
        +        "type": "object"
        +      },
        +      "data": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Schema § 1.1 — the typed payload returned inside `MCPResponse[ComputeResult]`.\n\nFree-tier responses omit `drawings` (the downloadable CAD artefact\npointers — the paid differentiator); the bridge enforces this. The\n`audit_trail` and the inline `drawing` preview are present on BOTH tiers\n(V1 ALIGN / 60th-fire D + C). `text_summary` is bounded to 2000 chars —\nkeeps the LLM-facing summary token-cheap and forces longer narrative into\nBoQ row descriptions where it belongs. `warnings` is the non-fatal\ngeometry advisory list (both tiers).",
        +            "properties": {
        +              "assembly_slug": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "audit_trail": {
        +                "anyOf": [
        +                  {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.7 — paid-tier audit-trail entry.\n\nOne entry per BoQ row; `boq_row_index` ties to the row position in\n`ComputeResult.boq_rows`. `derivation` is the human-readable formula\nwalk-through; `formula` is the optional formal expression.",
        +                      "properties": {
        +                        "boq_row_index": {
        +                          "minimum": 0,
        +                          "type": "integer"
        +                        },
        +                        "derivation": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "formula": {
        +                          "anyOf": [
        +                            {
        +                              "type": "string"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ],
        +                          "default": null
        +                        },
        +                        "id": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "parameters_referenced": {
        +                          "items": {
        +                            "type": "string"
        +                          },
        +                          "type": "array"
        +                        }
        +                      },
        +                      "required": [
        +                        "id",
        +                        "boq_row_index",
        +                        "derivation"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "boq_rows": {
        +                "items": {
        +                  "additionalProperties": false,
        +                  "description": "Schema § 1.3 — a single bill row in the requested standard's format.\n\n`description` is the non-verbatim functional description per spec § 13.9 /\n§ 15 invariant — NEVER reproduces a standard's verbatim clause text.\n`rate` / `amount` ship null because rates are commodity data the customer\nowns; the engine's job is the measurement, not the pricing.",
        +                  "properties": {
        +                    "amount": {
        +                      "anyOf": [
        +                        {
        +                          "type": "number"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "attribution": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "audit_id": {
        +                      "anyOf": [
        +                        {
        +                          "type": "string"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "description": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "quantity": {
        +                      "minimum": 0,
        +                      "type": "number"
        +                    },
        +                    "rate": {
        +                      "anyOf": [
        +                        {
        +                          "type": "number"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "unit": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "work_section": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    }
        +                  },
        +                  "required": [
        +                    "work_section",
        +                    "description",
        +                    "quantity",
        +                    "unit",
        +                    "attribution"
        +                  ],
        +                  "type": "object"
        +                },
        +                "type": "array"
        +              },
        +              "drawing": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": false,
        +                    "description": "Schema § 1.6a — inline server-rendered SVG preview of the geometry.\n\nThe MCP mirror of the web ``/compute`` response's ``drawing`` field\n(``api.schemas.compute.DrawingRef``): the same on-screen dimensioned\ndrawing both tiers see in the workspace, surfaced on the MCP compute\nresponse so a chat client can render it inline (60th-fire item C). This\nis the on-screen preview — present on BOTH tiers per the free/paid\nboundary; the downloadable CAD artefacts (DXF / dimensioned PDF) remain\nthe paid differentiator via the export tools.\n\nDefined here rather than importing ``DrawingRef`` because the web\n``schemas`` package imports back into this module (``schemas.render``),\nso reusing it would create an import cycle — the MCP wire contract keeps\nits own copy, the same pattern as ``BoQRow`` / ``DrawingReference``.",
        +                    "properties": {
        +                      "entity_count": {
        +                        "minimum": 0,
        +                        "type": "integer"
        +                      },
        +                      "svg_b64": {
        +                        "minLength": 1,
        +                        "type": "string"
        +                      },
        +                      "unit_of_drawing": {
        +                        "const": "m",
        +                        "default": "m",
        +                        "type": "string"
        +                      },
        +                      "viewbox_height": {
        +                        "exclusiveMinimum": 0,
        +                        "type": "number"
        +                      },
        +                      "viewbox_width": {
        +                        "exclusiveMinimum": 0,
        +                        "type": "number"
        +                      },
        +                      "viewbox_x": {
        +                        "type": "number"
        +                      },
        +                      "viewbox_y": {
        +                        "type": "number"
        +                      }
        +                    },
        +                    "required": [
        +                      "svg_b64",
        +                      "viewbox_x",
        +                      "viewbox_y",
        +                      "viewbox_width",
        +                      "viewbox_height",
        +                      "entity_count"
        +                    ],
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "drawings": {
        +                "anyOf": [
        +                  {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.6 — paid-tier drawing artefact pointer.\n\n`url` is an R2-signed URL; expiry is carried in `_meta.deliverables.expires_at`\non the envelope (not duplicated here). `layers` is DXF-only; PDF/SVG\ncallers omit it.",
        +                      "properties": {
        +                        "drawing_type": {
        +                          "enum": [
        +                            "section",
        +                            "plan",
        +                            "elevation",
        +                            "isometric",
        +                            "detail"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "format": {
        +                          "enum": [
        +                            "DXF",
        +                            "PDF",
        +                            "SVG"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "layers": {
        +                          "anyOf": [
        +                            {
        +                              "items": {
        +                                "type": "string"
        +                              },
        +                              "type": "array"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ],
        +                          "default": null
        +                        },
        +                        "scale": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "sheet_size": {
        +                          "enum": [
        +                            "A1",
        +                            "A2",
        +                            "A3",
        +                            "A4"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "url": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "drawing_type",
        +                        "format",
        +                        "url",
        +                        "sheet_size",
        +                        "scale"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "parameters_used": {
        +                "additionalProperties": false,
        +                "description": "Schema § 1.2 — the parameter snapshot the engine actually used.\n\nSplits user-supplied values from engine defaults so customers can see\nwhich numbers came from them and which the engine filled in. Every\ndefaulted parameter SHOULD have a corresponding entry in `assumptions`\n— the bridge layer enforces this when wrapping engine output.",
        +                "properties": {
        +                  "assumptions": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "engine_defaults": {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  "user_supplied": {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  }
        +                },
        +                "type": "object"
        +              },
        +              "standard": {
        +                "enum": [
        +                  "CESMM4",
        +                  "NRM2",
        +                  "SMM7",
        +                  "MMHW"
        +                ],
        +                "type": "string"
        +              },
        +              "text_summary": {
        +                "maxLength": 2000,
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "totals_summary": {
        +                "additionalProperties": false,
        +                "description": "Schema § 1.4 — totals_summary as a typed wrapper around the free-form dict.\n\nWire shape is a flat object (`{\"concrete_m3\": {...}, \"rebar_t\": {...}}`).\nWe model it as `RootModel`-equivalent via `model_config(extra=\"allow\")`\n+ a single `__root__`-style `entries` dict. Pydantic v2 recommends\n`RootModel` for free-form roots; using a wrapper class keeps the import\nsurface uniform with the rest of this module.",
        +                "properties": {
        +                  "entries": {
        +                    "additionalProperties": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.4 — single material/work-class total entry.",
        +                      "properties": {
        +                        "quantity": {
        +                          "minimum": 0,
        +                          "type": "number"
        +                        },
        +                        "unit": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "quantity",
        +                        "unit"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "object"
        +                  }
        +                },
        +                "type": "object"
        +              },
        +              "warnings": {
        +                "items": {
        +                  "additionalProperties": false,
        +                  "description": "Schema § 1.8 — a non-fatal geometry advisory (56th-fire T2).\n\nThe wire projection of the engine's `core.GeometryWarning`. Advisory only:\na warning NEVER changes a measured quantity — it flags geometry that is\nvalid but likely a mistake (e.g. a stale dependent-height default). Present\non BOTH tiers — a correctness/safety signal, not a paid feature.",
        +                  "properties": {
        +                    "affected_params": {
        +                      "items": {
        +                        "type": "string"
        +                      },
        +                      "type": "array"
        +                    },
        +                    "code": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "detail": {
        +                      "additionalProperties": {
        +                        "type": "number"
        +                      },
        +                      "type": "object"
        +                    },
        +                    "message": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "severity": {
        +                      "enum": [
        +                        "info",
        +                        "advisory",
        +                        "caution"
        +                      ],
        +                      "type": "string"
        +                    }
        +                  },
        +                  "required": [
        +                    "code",
        +                    "severity",
        +                    "message"
        +                  ],
        +                  "type": "object"
        +                },
        +                "type": "array"
        +              }
        +            },
        +            "required": [
        +              "assembly_slug",
        +              "standard",
        +              "parameters_used",
        +              "boq_rows",
        +              "totals_summary",
        +              "text_summary"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      },
        +      "error": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        +            "properties": {
        +              "code": {
        +                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        +                "enum": [
        +                  "RATE_LIMIT_EXCEEDED",
        +                  "TIER_INSUFFICIENT",
        +                  "INVALID_INPUT",
        +                  "SCHEMA_VERSION_MISMATCH",
        +                  "SCHEMA_INVARIANT_VIOLATION",
        +                  "UPSTREAM_TIMEOUT",
        +                  "BACKEND_FAILURE",
        +                  "IP_BLOCKED",
        +                  "RESOURCE_NOT_FOUND",
        +                  "RENDER_FAILURE",
        +                  "OCR_LOW_CONFIDENCE",
        +                  "MANUAL_REVIEW_REQUIRED",
        +                  "ACCEPTANCE_REQUIRED",
        +                  "INVALID_TOKEN"
        +                ],
        +                "type": "string"
        +              },
        +              "details": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "message": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "recoverable": {
        +                "type": "boolean"
        +              },
        +              "retry_after_seconds": {
        +                "anyOf": [
        +                  {
        +                    "minimum": 0,
        +                    "type": "integer"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              }
        +            },
        +            "required": [
        +              "code",
        +              "message",
        +              "recoverable"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      }
        +    },
        +    "required": [
        +      "_meta"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "_meta": {
        +        "additionalProperties": false,
        +        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        +        "properties": {
        +          "deliverables": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        +                "properties": {
        +                  "docx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "dxf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "expires_at": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  },
        +                  "pdf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "xlsx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "expires_at"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "document_id": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "issued_at": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "output_mode": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Surfaces what a trimmed ``output_mode`` withheld from ``data``.\n\nA trimmed mode (``summary`` / ``material_schedule`` / ``boq`` /\n``boq_with_backup``) withholds\nalready-computed fields to keep the chat payload small. The withheld value\nreads to a client agent as \"capability missing\" (the box-culvert \"geometry\nbuilder isn't firing\" scare) rather than \"pared for size\": ``drawing`` and\n``audit_trail`` appear as ``null``, ``boq_rows`` as an empty list ``[]``\n(its type forbids ``null``) — both indistinguishable from a genuine absent\nresult. This names the withheld fields and the exact mode that brings each\nback, so the value is unambiguous. Absent on the default ``full_json`` mode\n— nothing is withheld, nothing to point at.",
        +                "properties": {
        +                  "mode": {
        +                    "enum": [
        +                      "summary",
        +                      "material_schedule",
        +                      "boq",
        +                      "boq_with_backup"
        +                    ],
        +                    "type": "string"
        +                  },
        +                  "omitted_fields": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "minItems": 1,
        +                    "type": "array"
        +                  },
        +                  "retrieve_with": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "mode",
        +                  "omitted_fields",
        +                  "retrieve_with"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "rate_limit_remaining": {
        +            "anyOf": [
        +              {
        +                "minimum": 0,
        +                "type": "integer"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "request_id": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "schema_version": {
        +            "const": "1.0.0",
        +            "default": "1.0.0",
        +            "type": "string"
        +          },
        +          "scope_boundary": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        +                "properties": {
        +                  "not_in_scope": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "produced": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "recommended_companions": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "type": "string"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "produced",
        +                  "not_in_scope"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tier": {
        +            "enum": [
        +              "free",
        +              "paid"
        +            ],
        +            "type": "string"
        +          },
        +          "tier_upgrade": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        +                "properties": {
        +                  "available_tiers": {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        +                      "properties": {
        +                        "billing": {
        +                          "enum": [
        +                            "one_off",
        +                            "monthly",
        +                            "annual"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "currency": {
        +                          "enum": [
        +                            "GBP",
        +                            "SGD",
        +                            "EUR",
        +                            "USD",
        +                            "CAD",
        +                            "AUD",
        +                            "NZD",
        +                            "MYR"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "display_name": {
        +                          "type": "string"
        +                        },
        +                        "price_local": {
        +                          "type": "number"
        +                        },
        +                        "tier_slug": {
        +                          "enum": [
        +                            "7_day_pass",
        +                            "solo",
        +                            "studio",
        +                            "practice"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "unlock_summary": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "tier_slug",
        +                        "display_name",
        +                        "price_local",
        +                        "currency",
        +                        "billing",
        +                        "unlock_summary"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "current_tier": {
        +                    "const": "free",
        +                    "default": "free",
        +                    "type": "string"
        +                  },
        +                  "pass_credit": {
        +                    "anyOf": [
        +                      {
        +                        "additionalProperties": false,
        +                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        +                        "properties": {
        +                          "amount_local": {
        +                            "type": "number"
        +                          },
        +                          "applies_to": {
        +                            "const": "solo_first_month",
        +                            "default": "solo_first_month",
        +                            "type": "string"
        +                          },
        +                          "currency": {
        +                            "type": "string"
        +                          },
        +                          "redeemable_until": {
        +                            "type": "string"
        +                          }
        +                        },
        +                        "required": [
        +                          "amount_local",
        +                          "currency",
        +                          "redeemable_until"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "pricing_url": {
        +                    "default": "https://civilquants.com/pricing",
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "available_tiers"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tos_url": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "upgrade_hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "warranty_disclaimer": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          }
        +        },
        +        "required": [
        +          "request_id",
        +          "issued_at",
        +          "tier"
        +        ],
        +        "type": "object"
        +      },
        +      "data": {
        +        "default": null,
        +        "title": "Data"
        +      },
        +      "error": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        +            "properties": {
        +              "code": {
        +                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        +                "enum": [
        +                  "RATE_LIMIT_EXCEEDED",
        +                  "TIER_INSUFFICIENT",
        +                  "INVALID_INPUT",
        +                  "SCHEMA_VERSION_MISMATCH",
        +                  "SCHEMA_INVARIANT_VIOLATION",
        +                  "UPSTREAM_TIMEOUT",
        +                  "BACKEND_FAILURE",
        +                  "IP_BLOCKED",
        +                  "RESOURCE_NOT_FOUND",
        +                  "RENDER_FAILURE",
        +                  "OCR_LOW_CONFIDENCE",
        +                  "MANUAL_REVIEW_REQUIRED",
        +                  "ACCEPTANCE_REQUIRED",
        +                  "INVALID_TOKEN"
        +                ],
        +                "type": "string"
        +              },
        +              "details": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "message": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "recoverable": {
        +                "type": "boolean"
        +              },
        +              "retry_after_seconds": {
        +                "anyOf": [
        +                  {
        +                    "minimum": 0,
        +                    "type": "integer"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              }
        +            },
        +            "required": [
        +              "code",
        +              "message",
        +              "recoverable"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      }
        +    },
        +    "required": [
        +      "_meta"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedcompute_lighting_column2 fields changed
      • changedInput schema / properties / output_mode / enum
        Previous value: -[
        -  "summary",
        -  "boq",
        -  "boq_with_backup",
        -  "full_json"
        -]New value: +[
        +  "summary",
        +  "material_schedule",
        +  "boq",
        +  "boq_with_backup",
        +  "full_json"
        +]
      • changedOutput schema / properties / result / anyOf
        Previous value: -[
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "_meta": {
        -        "additionalProperties": false,
        -        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        -        "properties": {
        -          "deliverables": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        -                "properties": {
        -                  "docx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "dxf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "expires_at": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  },
        -                  "pdf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "xlsx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "expires_at"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "document_id": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "issued_at": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "output_mode": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Surfaces what a trimmed ``output_mode`` withheld from ``data``.\n\nA trimmed mode (``summary`` / ``boq`` / ``boq_with_backup``) withholds\nalready-computed fields to keep the chat payload small. The withheld value\nreads to a client agent as \"capability missing\" (the box-culvert \"geometry\nbuilder isn't firing\" scare) rather than \"pared for size\": ``drawing`` and\n``audit_trail`` appear as ``null``, ``boq_rows`` as an empty list ``[]``\n(its type forbids ``null``) — both indistinguishable from a genuine absent\nresult. This names the withheld fields and the exact mode that brings each\nback, so the value is unambiguous. Absent on the default ``full_json`` mode\n— nothing is withheld, nothing to point at.",
        -                "properties": {
        -                  "mode": {
        -                    "enum": [
        -                      "summary",
        -                      "boq",
        -                      "boq_with_backup"
        -                    ],
        -                    "type": "string"
        -                  },
        -                  "omitted_fields": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "minItems": 1,
        -                    "type": "array"
        -                  },
        -                  "retrieve_with": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "mode",
        -                  "omitted_fields",
        -                  "retrieve_with"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "rate_limit_remaining": {
        -            "anyOf": [
        -              {
        -                "minimum": 0,
        -                "type": "integer"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "request_id": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "schema_version": {
        -            "const": "1.0.0",
        -            "default": "1.0.0",
        -            "type": "string"
        -          },
        -          "scope_boundary": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        -                "properties": {
        -                  "not_in_scope": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "produced": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "recommended_companions": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "type": "string"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "produced",
        -                  "not_in_scope"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tier": {
        -            "enum": [
        -              "free",
        -              "paid"
        -            ],
        -            "type": "string"
        -          },
        -          "tier_upgrade": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        -                "properties": {
        -                  "available_tiers": {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        -                      "properties": {
        -                        "billing": {
        -                          "enum": [
        -                            "one_off",
        -                            "monthly",
        -                            "annual"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "currency": {
        -                          "enum": [
        -                            "GBP",
        -                            "SGD",
        -                            "EUR",
        -                            "USD",
        -                            "CAD",
        -                            "AUD",
        -                            "NZD",
        -                            "MYR"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "display_name": {
        -                          "type": "string"
        -                        },
        -                        "price_local": {
        -                          "type": "number"
        -                        },
        -                        "tier_slug": {
        -                          "enum": [
        -                            "7_day_pass",
        -                            "solo",
        -                            "studio",
        -                            "practice"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "unlock_summary": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "tier_slug",
        -                        "display_name",
        -                        "price_local",
        -                        "currency",
        -                        "billing",
        -                        "unlock_summary"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "current_tier": {
        -                    "const": "free",
        -                    "default": "free",
        -                    "type": "string"
        -                  },
        -                  "pass_credit": {
        -                    "anyOf": [
        -                      {
        -                        "additionalProperties": false,
        -                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        -                        "properties": {
        -                          "amount_local": {
        -                            "type": "number"
        -                          },
        -                          "applies_to": {
        -                            "const": "solo_first_month",
        -                            "default": "solo_first_month",
        -                            "type": "string"
        -                          },
        -                          "currency": {
        -                            "type": "string"
        -                          },
        -                          "redeemable_until": {
        -                            "type": "string"
        -                          }
        -                        },
        -                        "required": [
        -                          "amount_local",
        -                          "currency",
        -                          "redeemable_until"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "pricing_url": {
        -                    "default": "https://civilquants.com/pricing",
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "available_tiers"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tos_url": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "upgrade_hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "warranty_disclaimer": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          }
        -        },
        -        "required": [
        -          "request_id",
        -          "issued_at",
        -          "tier"
        -        ],
        -        "type": "object"
        -      },
        -      "data": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Schema § 1.1 — the typed payload returned inside `MCPResponse[ComputeResult]`.\n\nFree-tier responses omit `drawings` (the downloadable CAD artefact\npointers — the paid differentiator); the bridge enforces this. The\n`audit_trail` and the inline `drawing` preview are present on BOTH tiers\n(V1 ALIGN / 60th-fire D + C). `text_summary` is bounded to 2000 chars —\nkeeps the LLM-facing summary token-cheap and forces longer narrative into\nBoQ row descriptions where it belongs. `warnings` is the non-fatal\ngeometry advisory list (both tiers).",
        -            "properties": {
        -              "assembly_slug": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "audit_trail": {
        -                "anyOf": [
        -                  {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.7 — paid-tier audit-trail entry.\n\nOne entry per BoQ row; `boq_row_index` ties to the row position in\n`ComputeResult.boq_rows`. `derivation` is the human-readable formula\nwalk-through; `formula` is the optional formal expression.",
        -                      "properties": {
        -                        "boq_row_index": {
        -                          "minimum": 0,
        -                          "type": "integer"
        -                        },
        -                        "derivation": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "formula": {
        -                          "anyOf": [
        -                            {
        -                              "type": "string"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ],
        -                          "default": null
        -                        },
        -                        "id": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "parameters_referenced": {
        -                          "items": {
        -                            "type": "string"
        -                          },
        -                          "type": "array"
        -                        }
        -                      },
        -                      "required": [
        -                        "id",
        -                        "boq_row_index",
        -                        "derivation"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "boq_rows": {
        -                "items": {
        -                  "additionalProperties": false,
        -                  "description": "Schema § 1.3 — a single bill row in the requested standard's format.\n\n`description` is the non-verbatim functional description per spec § 13.9 /\n§ 15 invariant — NEVER reproduces a standard's verbatim clause text.\n`rate` / `amount` ship null because rates are commodity data the customer\nowns; the engine's job is the measurement, not the pricing.",
        -                  "properties": {
        -                    "amount": {
        -                      "anyOf": [
        -                        {
        -                          "type": "number"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "attribution": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "audit_id": {
        -                      "anyOf": [
        -                        {
        -                          "type": "string"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "description": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "quantity": {
        -                      "minimum": 0,
        -                      "type": "number"
        -                    },
        -                    "rate": {
        -                      "anyOf": [
        -                        {
        -                          "type": "number"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "unit": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "work_section": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    }
        -                  },
        -                  "required": [
        -                    "work_section",
        -                    "description",
        -                    "quantity",
        -                    "unit",
        -                    "attribution"
        -                  ],
        -                  "type": "object"
        -                },
        -                "type": "array"
        -              },
        -              "drawing": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": false,
        -                    "description": "Schema § 1.6a — inline server-rendered SVG preview of the geometry.\n\nThe MCP mirror of the web ``/compute`` response's ``drawing`` field\n(``api.schemas.compute.DrawingRef``): the same on-screen dimensioned\ndrawing both tiers see in the workspace, surfaced on the MCP compute\nresponse so a chat client can render it inline (60th-fire item C). This\nis the on-screen preview — present on BOTH tiers per the free/paid\nboundary; the downloadable CAD artefacts (DXF / dimensioned PDF) remain\nthe paid differentiator via the export tools.\n\nDefined here rather than importing ``DrawingRef`` because the web\n``schemas`` package imports back into this module (``schemas.render``),\nso reusing it would create an import cycle — the MCP wire contract keeps\nits own copy, the same pattern as ``BoQRow`` / ``DrawingReference``.",
        -                    "properties": {
        -                      "entity_count": {
        -                        "minimum": 0,
        -                        "type": "integer"
        -                      },
        -                      "svg_b64": {
        -                        "minLength": 1,
        -                        "type": "string"
        -                      },
        -                      "unit_of_drawing": {
        -                        "const": "m",
        -                        "default": "m",
        -                        "type": "string"
        -                      },
        -                      "viewbox_height": {
        -                        "exclusiveMinimum": 0,
        -                        "type": "number"
        -                      },
        -                      "viewbox_width": {
        -                        "exclusiveMinimum": 0,
        -                        "type": "number"
        -                      },
        -                      "viewbox_x": {
        -                        "type": "number"
        -                      },
        -                      "viewbox_y": {
        -                        "type": "number"
        -                      }
        -                    },
        -                    "required": [
        -                      "svg_b64",
        -                      "viewbox_x",
        -                      "viewbox_y",
        -                      "viewbox_width",
        -                      "viewbox_height",
        -                      "entity_count"
        -                    ],
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "drawings": {
        -                "anyOf": [
        -                  {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.6 — paid-tier drawing artefact pointer.\n\n`url` is an R2-signed URL; expiry is carried in `_meta.deliverables.expires_at`\non the envelope (not duplicated here). `layers` is DXF-only; PDF/SVG\ncallers omit it.",
        -                      "properties": {
        -                        "drawing_type": {
        -                          "enum": [
        -                            "section",
        -                            "plan",
        -                            "elevation",
        -                            "isometric",
        -                            "detail"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "format": {
        -                          "enum": [
        -                            "DXF",
        -                            "PDF",
        -                            "SVG"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "layers": {
        -                          "anyOf": [
        -                            {
        -                              "items": {
        -                                "type": "string"
        -                              },
        -                              "type": "array"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ],
        -                          "default": null
        -                        },
        -                        "scale": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "sheet_size": {
        -                          "enum": [
        -                            "A1",
        -                            "A2",
        -                            "A3",
        -                            "A4"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "url": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "drawing_type",
        -                        "format",
        -                        "url",
        -                        "sheet_size",
        -                        "scale"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "parameters_used": {
        -                "additionalProperties": false,
        -                "description": "Schema § 1.2 — the parameter snapshot the engine actually used.\n\nSplits user-supplied values from engine defaults so customers can see\nwhich numbers came from them and which the engine filled in. Every\ndefaulted parameter SHOULD have a corresponding entry in `assumptions`\n— the bridge layer enforces this when wrapping engine output.",
        -                "properties": {
        -                  "assumptions": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "engine_defaults": {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  "user_supplied": {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  }
        -                },
        -                "type": "object"
        -              },
        -              "standard": {
        -                "enum": [
        -                  "CESMM4",
        -                  "NRM2",
        -                  "SMM7",
        -                  "MMHW"
        -                ],
        -                "type": "string"
        -              },
        -              "text_summary": {
        -                "maxLength": 2000,
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "totals_summary": {
        -                "additionalProperties": false,
        -                "description": "Schema § 1.4 — totals_summary as a typed wrapper around the free-form dict.\n\nWire shape is a flat object (`{\"concrete_m3\": {...}, \"rebar_t\": {...}}`).\nWe model it as `RootModel`-equivalent via `model_config(extra=\"allow\")`\n+ a single `__root__`-style `entries` dict. Pydantic v2 recommends\n`RootModel` for free-form roots; using a wrapper class keeps the import\nsurface uniform with the rest of this module.",
        -                "properties": {
        -                  "entries": {
        -                    "additionalProperties": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.4 — single material/work-class total entry.",
        -                      "properties": {
        -                        "quantity": {
        -                          "minimum": 0,
        -                          "type": "number"
        -                        },
        -                        "unit": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "quantity",
        -                        "unit"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "object"
        -                  }
        -                },
        -                "type": "object"
        -              },
        -              "warnings": {
        -                "items": {
        -                  "additionalProperties": false,
        -                  "description": "Schema § 1.8 — a non-fatal geometry advisory (56th-fire T2).\n\nThe wire projection of the engine's `core.GeometryWarning`. Advisory only:\na warning NEVER changes a measured quantity — it flags geometry that is\nvalid but likely a mistake (e.g. a stale dependent-height default). Present\non BOTH tiers — a correctness/safety signal, not a paid feature.",
        -                  "properties": {
        -                    "affected_params": {
        -                      "items": {
        -                        "type": "string"
        -                      },
        -                      "type": "array"
        -                    },
        -                    "code": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "detail": {
        -                      "additionalProperties": {
        -                        "type": "number"
        -                      },
        -                      "type": "object"
        -                    },
        -                    "message": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "severity": {
        -                      "enum": [
        -                        "info",
        -                        "advisory",
        -                        "caution"
        -                      ],
        -                      "type": "string"
        -                    }
        -                  },
        -                  "required": [
        -                    "code",
        -                    "severity",
        -                    "message"
        -                  ],
        -                  "type": "object"
        -                },
        -                "type": "array"
        -              }
        -            },
        -            "required": [
        -              "assembly_slug",
        -              "standard",
        -              "parameters_used",
        -              "boq_rows",
        -              "totals_summary",
        -              "text_summary"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      },
        -      "error": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        -            "properties": {
        -              "code": {
        -                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        -                "enum": [
        -                  "RATE_LIMIT_EXCEEDED",
        -                  "TIER_INSUFFICIENT",
        -                  "INVALID_INPUT",
        -                  "SCHEMA_VERSION_MISMATCH",
        -                  "SCHEMA_INVARIANT_VIOLATION",
        -                  "UPSTREAM_TIMEOUT",
        -                  "BACKEND_FAILURE",
        -                  "IP_BLOCKED",
        -                  "RESOURCE_NOT_FOUND",
        -                  "RENDER_FAILURE",
        -                  "OCR_LOW_CONFIDENCE",
        -                  "MANUAL_REVIEW_REQUIRED",
        -                  "ACCEPTANCE_REQUIRED",
        -                  "INVALID_TOKEN"
        -                ],
        -                "type": "string"
        -              },
        -              "details": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "message": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "recoverable": {
        -                "type": "boolean"
        -              },
        -              "retry_after_seconds": {
        -                "anyOf": [
        -                  {
        -                    "minimum": 0,
        -                    "type": "integer"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              }
        -            },
        -            "required": [
        -              "code",
        -              "message",
        -              "recoverable"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      }
        -    },
        -    "required": [
        -      "_meta"
        -    ],
        -    "type": "object"
        -  },
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "_meta": {
        -        "additionalProperties": false,
        -        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        -        "properties": {
        -          "deliverables": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        -                "properties": {
        -                  "docx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "dxf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "expires_at": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  },
        -                  "pdf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "xlsx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "expires_at"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "document_id": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "issued_at": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "output_mode": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Surfaces what a trimmed ``output_mode`` withheld from ``data``.\n\nA trimmed mode (``summary`` / ``boq`` / ``boq_with_backup``) withholds\nalready-computed fields to keep the chat payload small. The withheld value\nreads to a client agent as \"capability missing\" (the box-culvert \"geometry\nbuilder isn't firing\" scare) rather than \"pared for size\": ``drawing`` and\n``audit_trail`` appear as ``null``, ``boq_rows`` as an empty list ``[]``\n(its type forbids ``null``) — both indistinguishable from a genuine absent\nresult. This names the withheld fields and the exact mode that brings each\nback, so the value is unambiguous. Absent on the default ``full_json`` mode\n— nothing is withheld, nothing to point at.",
        -                "properties": {
        -                  "mode": {
        -                    "enum": [
        -                      "summary",
        -                      "boq",
        -                      "boq_with_backup"
        -                    ],
        -                    "type": "string"
        -                  },
        -                  "omitted_fields": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "minItems": 1,
        -                    "type": "array"
        -                  },
        -                  "retrieve_with": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "mode",
        -                  "omitted_fields",
        -                  "retrieve_with"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "rate_limit_remaining": {
        -            "anyOf": [
        -              {
        -                "minimum": 0,
        -                "type": "integer"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "request_id": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "schema_version": {
        -            "const": "1.0.0",
        -            "default": "1.0.0",
        -            "type": "string"
        -          },
        -          "scope_boundary": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        -                "properties": {
        -                  "not_in_scope": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "produced": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "recommended_companions": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "type": "string"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "produced",
        -                  "not_in_scope"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tier": {
        -            "enum": [
        -              "free",
        -              "paid"
        -            ],
        -            "type": "string"
        -          },
        -          "tier_upgrade": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        -                "properties": {
        -                  "available_tiers": {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        -                      "properties": {
        -                        "billing": {
        -                          "enum": [
        -                            "one_off",
        -                            "monthly",
        -                            "annual"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "currency": {
        -                          "enum": [
        -                            "GBP",
        -                            "SGD",
        -                            "EUR",
        -                            "USD",
        -                            "CAD",
        -                            "AUD",
        -                            "NZD",
        -                            "MYR"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "display_name": {
        -                          "type": "string"
        -                        },
        -                        "price_local": {
        -                          "type": "number"
        -                        },
        -                        "tier_slug": {
        -                          "enum": [
        -                            "7_day_pass",
        -                            "solo",
        -                            "studio",
        -                            "practice"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "unlock_summary": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "tier_slug",
        -                        "display_name",
        -                        "price_local",
        -                        "currency",
        -                        "billing",
        -                        "unlock_summary"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "current_tier": {
        -                    "const": "free",
        -                    "default": "free",
        -                    "type": "string"
        -                  },
        -                  "pass_credit": {
        -                    "anyOf": [
        -                      {
        -                        "additionalProperties": false,
        -                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        -                        "properties": {
        -                          "amount_local": {
        -                            "type": "number"
        -                          },
        -                          "applies_to": {
        -                            "const": "solo_first_month",
        -                            "default": "solo_first_month",
        -                            "type": "string"
        -                          },
        -                          "currency": {
        -                            "type": "string"
        -                          },
        -                          "redeemable_until": {
        -                            "type": "string"
        -                          }
        -                        },
        -                        "required": [
        -                          "amount_local",
        -                          "currency",
        -                          "redeemable_until"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "pricing_url": {
        -                    "default": "https://civilquants.com/pricing",
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "available_tiers"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tos_url": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "upgrade_hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "warranty_disclaimer": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          }
        -        },
        -        "required": [
        -          "request_id",
        -          "issued_at",
        -          "tier"
        -        ],
        -        "type": "object"
        -      },
        -      "data": {
        -        "default": null,
        -        "title": "Data"
        -      },
        -      "error": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        -            "properties": {
        -              "code": {
        -                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        -                "enum": [
        -                  "RATE_LIMIT_EXCEEDED",
        -                  "TIER_INSUFFICIENT",
        -                  "INVALID_INPUT",
        -                  "SCHEMA_VERSION_MISMATCH",
        -                  "SCHEMA_INVARIANT_VIOLATION",
        -                  "UPSTREAM_TIMEOUT",
        -                  "BACKEND_FAILURE",
        -                  "IP_BLOCKED",
        -                  "RESOURCE_NOT_FOUND",
        -                  "RENDER_FAILURE",
        -                  "OCR_LOW_CONFIDENCE",
        -                  "MANUAL_REVIEW_REQUIRED",
        -                  "ACCEPTANCE_REQUIRED",
        -                  "INVALID_TOKEN"
        -                ],
        -                "type": "string"
        -              },
        -              "details": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "message": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "recoverable": {
        -                "type": "boolean"
        -              },
        -              "retry_after_seconds": {
        -                "anyOf": [
        -                  {
        -                    "minimum": 0,
        -                    "type": "integer"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              }
        -            },
        -            "required": [
        -              "code",
        -              "message",
        -              "recoverable"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      }
        -    },
        -    "required": [
        -      "_meta"
        -    ],
        -    "type": "object"
        -  }
        -]New value: +[
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "_meta": {
        +        "additionalProperties": false,
        +        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        +        "properties": {
        +          "deliverables": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        +                "properties": {
        +                  "docx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "dxf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "expires_at": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  },
        +                  "pdf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "xlsx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "expires_at"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "document_id": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "issued_at": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "output_mode": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Surfaces what a trimmed ``output_mode`` withheld from ``data``.\n\nA trimmed mode (``summary`` / ``material_schedule`` / ``boq`` /\n``boq_with_backup``) withholds\nalready-computed fields to keep the chat payload small. The withheld value\nreads to a client agent as \"capability missing\" (the box-culvert \"geometry\nbuilder isn't firing\" scare) rather than \"pared for size\": ``drawing`` and\n``audit_trail`` appear as ``null``, ``boq_rows`` as an empty list ``[]``\n(its type forbids ``null``) — both indistinguishable from a genuine absent\nresult. This names the withheld fields and the exact mode that brings each\nback, so the value is unambiguous. Absent on the default ``full_json`` mode\n— nothing is withheld, nothing to point at.",
        +                "properties": {
        +                  "mode": {
        +                    "enum": [
        +                      "summary",
        +                      "material_schedule",
        +                      "boq",
        +                      "boq_with_backup"
        +                    ],
        +                    "type": "string"
        +                  },
        +                  "omitted_fields": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "minItems": 1,
        +                    "type": "array"
        +                  },
        +                  "retrieve_with": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "mode",
        +                  "omitted_fields",
        +                  "retrieve_with"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "rate_limit_remaining": {
        +            "anyOf": [
        +              {
        +                "minimum": 0,
        +                "type": "integer"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "request_id": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "schema_version": {
        +            "const": "1.0.0",
        +            "default": "1.0.0",
        +            "type": "string"
        +          },
        +          "scope_boundary": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        +                "properties": {
        +                  "not_in_scope": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "produced": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "recommended_companions": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "type": "string"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "produced",
        +                  "not_in_scope"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tier": {
        +            "enum": [
        +              "free",
        +              "paid"
        +            ],
        +            "type": "string"
        +          },
        +          "tier_upgrade": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        +                "properties": {
        +                  "available_tiers": {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        +                      "properties": {
        +                        "billing": {
        +                          "enum": [
        +                            "one_off",
        +                            "monthly",
        +                            "annual"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "currency": {
        +                          "enum": [
        +                            "GBP",
        +                            "SGD",
        +                            "EUR",
        +                            "USD",
        +                            "CAD",
        +                            "AUD",
        +                            "NZD",
        +                            "MYR"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "display_name": {
        +                          "type": "string"
        +                        },
        +                        "price_local": {
        +                          "type": "number"
        +                        },
        +                        "tier_slug": {
        +                          "enum": [
        +                            "7_day_pass",
        +                            "solo",
        +                            "studio",
        +                            "practice"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "unlock_summary": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "tier_slug",
        +                        "display_name",
        +                        "price_local",
        +                        "currency",
        +                        "billing",
        +                        "unlock_summary"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "current_tier": {
        +                    "const": "free",
        +                    "default": "free",
        +                    "type": "string"
        +                  },
        +                  "pass_credit": {
        +                    "anyOf": [
        +                      {
        +                        "additionalProperties": false,
        +                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        +                        "properties": {
        +                          "amount_local": {
        +                            "type": "number"
        +                          },
        +                          "applies_to": {
        +                            "const": "solo_first_month",
        +                            "default": "solo_first_month",
        +                            "type": "string"
        +                          },
        +                          "currency": {
        +                            "type": "string"
        +                          },
        +                          "redeemable_until": {
        +                            "type": "string"
        +                          }
        +                        },
        +                        "required": [
        +                          "amount_local",
        +                          "currency",
        +                          "redeemable_until"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "pricing_url": {
        +                    "default": "https://civilquants.com/pricing",
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "available_tiers"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tos_url": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "upgrade_hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "warranty_disclaimer": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          }
        +        },
        +        "required": [
        +          "request_id",
        +          "issued_at",
        +          "tier"
        +        ],
        +        "type": "object"
        +      },
        +      "data": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Schema § 1.1 — the typed payload returned inside `MCPResponse[ComputeResult]`.\n\nFree-tier responses omit `drawings` (the downloadable CAD artefact\npointers — the paid differentiator); the bridge enforces this. The\n`audit_trail` and the inline `drawing` preview are present on BOTH tiers\n(V1 ALIGN / 60th-fire D + C). `text_summary` is bounded to 2000 chars —\nkeeps the LLM-facing summary token-cheap and forces longer narrative into\nBoQ row descriptions where it belongs. `warnings` is the non-fatal\ngeometry advisory list (both tiers).",
        +            "properties": {
        +              "assembly_slug": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "audit_trail": {
        +                "anyOf": [
        +                  {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.7 — paid-tier audit-trail entry.\n\nOne entry per BoQ row; `boq_row_index` ties to the row position in\n`ComputeResult.boq_rows`. `derivation` is the human-readable formula\nwalk-through; `formula` is the optional formal expression.",
        +                      "properties": {
        +                        "boq_row_index": {
        +                          "minimum": 0,
        +                          "type": "integer"
        +                        },
        +                        "derivation": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "formula": {
        +                          "anyOf": [
        +                            {
        +                              "type": "string"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ],
        +                          "default": null
        +                        },
        +                        "id": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "parameters_referenced": {
        +                          "items": {
        +                            "type": "string"
        +                          },
        +                          "type": "array"
        +                        }
        +                      },
        +                      "required": [
        +                        "id",
        +                        "boq_row_index",
        +                        "derivation"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "boq_rows": {
        +                "items": {
        +                  "additionalProperties": false,
        +                  "description": "Schema § 1.3 — a single bill row in the requested standard's format.\n\n`description` is the non-verbatim functional description per spec § 13.9 /\n§ 15 invariant — NEVER reproduces a standard's verbatim clause text.\n`rate` / `amount` ship null because rates are commodity data the customer\nowns; the engine's job is the measurement, not the pricing.",
        +                  "properties": {
        +                    "amount": {
        +                      "anyOf": [
        +                        {
        +                          "type": "number"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "attribution": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "audit_id": {
        +                      "anyOf": [
        +                        {
        +                          "type": "string"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "description": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "quantity": {
        +                      "minimum": 0,
        +                      "type": "number"
        +                    },
        +                    "rate": {
        +                      "anyOf": [
        +                        {
        +                          "type": "number"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "unit": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "work_section": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    }
        +                  },
        +                  "required": [
        +                    "work_section",
        +                    "description",
        +                    "quantity",
        +                    "unit",
        +                    "attribution"
        +                  ],
        +                  "type": "object"
        +                },
        +                "type": "array"
        +              },
        +              "drawing": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": false,
        +                    "description": "Schema § 1.6a — inline server-rendered SVG preview of the geometry.\n\nThe MCP mirror of the web ``/compute`` response's ``drawing`` field\n(``api.schemas.compute.DrawingRef``): the same on-screen dimensioned\ndrawing both tiers see in the workspace, surfaced on the MCP compute\nresponse so a chat client can render it inline (60th-fire item C). This\nis the on-screen preview — present on BOTH tiers per the free/paid\nboundary; the downloadable CAD artefacts (DXF / dimensioned PDF) remain\nthe paid differentiator via the export tools.\n\nDefined here rather than importing ``DrawingRef`` because the web\n``schemas`` package imports back into this module (``schemas.render``),\nso reusing it would create an import cycle — the MCP wire contract keeps\nits own copy, the same pattern as ``BoQRow`` / ``DrawingReference``.",
        +                    "properties": {
        +                      "entity_count": {
        +                        "minimum": 0,
        +                        "type": "integer"
        +                      },
        +                      "svg_b64": {
        +                        "minLength": 1,
        +                        "type": "string"
        +                      },
        +                      "unit_of_drawing": {
        +                        "const": "m",
        +                        "default": "m",
        +                        "type": "string"
        +                      },
        +                      "viewbox_height": {
        +                        "exclusiveMinimum": 0,
        +                        "type": "number"
        +                      },
        +                      "viewbox_width": {
        +                        "exclusiveMinimum": 0,
        +                        "type": "number"
        +                      },
        +                      "viewbox_x": {
        +                        "type": "number"
        +                      },
        +                      "viewbox_y": {
        +                        "type": "number"
        +                      }
        +                    },
        +                    "required": [
        +                      "svg_b64",
        +                      "viewbox_x",
        +                      "viewbox_y",
        +                      "viewbox_width",
        +                      "viewbox_height",
        +                      "entity_count"
        +                    ],
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "drawings": {
        +                "anyOf": [
        +                  {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.6 — paid-tier drawing artefact pointer.\n\n`url` is an R2-signed URL; expiry is carried in `_meta.deliverables.expires_at`\non the envelope (not duplicated here). `layers` is DXF-only; PDF/SVG\ncallers omit it.",
        +                      "properties": {
        +                        "drawing_type": {
        +                          "enum": [
        +                            "section",
        +                            "plan",
        +                            "elevation",
        +                            "isometric",
        +                            "detail"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "format": {
        +                          "enum": [
        +                            "DXF",
        +                            "PDF",
        +                            "SVG"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "layers": {
        +                          "anyOf": [
        +                            {
        +                              "items": {
        +                                "type": "string"
        +                              },
        +                              "type": "array"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ],
        +                          "default": null
        +                        },
        +                        "scale": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "sheet_size": {
        +                          "enum": [
        +                            "A1",
        +                            "A2",
        +                            "A3",
        +                            "A4"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "url": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "drawing_type",
        +                        "format",
        +                        "url",
        +                        "sheet_size",
        +                        "scale"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "parameters_used": {
        +                "additionalProperties": false,
        +                "description": "Schema § 1.2 — the parameter snapshot the engine actually used.\n\nSplits user-supplied values from engine defaults so customers can see\nwhich numbers came from them and which the engine filled in. Every\ndefaulted parameter SHOULD have a corresponding entry in `assumptions`\n— the bridge layer enforces this when wrapping engine output.",
        +                "properties": {
        +                  "assumptions": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "engine_defaults": {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  "user_supplied": {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  }
        +                },
        +                "type": "object"
        +              },
        +              "standard": {
        +                "enum": [
        +                  "CESMM4",
        +                  "NRM2",
        +                  "SMM7",
        +                  "MMHW"
        +                ],
        +                "type": "string"
        +              },
        +              "text_summary": {
        +                "maxLength": 2000,
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "totals_summary": {
        +                "additionalProperties": false,
        +                "description": "Schema § 1.4 — totals_summary as a typed wrapper around the free-form dict.\n\nWire shape is a flat object (`{\"concrete_m3\": {...}, \"rebar_t\": {...}}`).\nWe model it as `RootModel`-equivalent via `model_config(extra=\"allow\")`\n+ a single `__root__`-style `entries` dict. Pydantic v2 recommends\n`RootModel` for free-form roots; using a wrapper class keeps the import\nsurface uniform with the rest of this module.",
        +                "properties": {
        +                  "entries": {
        +                    "additionalProperties": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.4 — single material/work-class total entry.",
        +                      "properties": {
        +                        "quantity": {
        +                          "minimum": 0,
        +                          "type": "number"
        +                        },
        +                        "unit": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "quantity",
        +                        "unit"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "object"
        +                  }
        +                },
        +                "type": "object"
        +              },
        +              "warnings": {
        +                "items": {
        +                  "additionalProperties": false,
        +                  "description": "Schema § 1.8 — a non-fatal geometry advisory (56th-fire T2).\n\nThe wire projection of the engine's `core.GeometryWarning`. Advisory only:\na warning NEVER changes a measured quantity — it flags geometry that is\nvalid but likely a mistake (e.g. a stale dependent-height default). Present\non BOTH tiers — a correctness/safety signal, not a paid feature.",
        +                  "properties": {
        +                    "affected_params": {
        +                      "items": {
        +                        "type": "string"
        +                      },
        +                      "type": "array"
        +                    },
        +                    "code": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "detail": {
        +                      "additionalProperties": {
        +                        "type": "number"
        +                      },
        +                      "type": "object"
        +                    },
        +                    "message": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "severity": {
        +                      "enum": [
        +                        "info",
        +                        "advisory",
        +                        "caution"
        +                      ],
        +                      "type": "string"
        +                    }
        +                  },
        +                  "required": [
        +                    "code",
        +                    "severity",
        +                    "message"
        +                  ],
        +                  "type": "object"
        +                },
        +                "type": "array"
        +              }
        +            },
        +            "required": [
        +              "assembly_slug",
        +              "standard",
        +              "parameters_used",
        +              "boq_rows",
        +              "totals_summary",
        +              "text_summary"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      },
        +      "error": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        +            "properties": {
        +              "code": {
        +                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        +                "enum": [
        +                  "RATE_LIMIT_EXCEEDED",
        +                  "TIER_INSUFFICIENT",
        +                  "INVALID_INPUT",
        +                  "SCHEMA_VERSION_MISMATCH",
        +                  "SCHEMA_INVARIANT_VIOLATION",
        +                  "UPSTREAM_TIMEOUT",
        +                  "BACKEND_FAILURE",
        +                  "IP_BLOCKED",
        +                  "RESOURCE_NOT_FOUND",
        +                  "RENDER_FAILURE",
        +                  "OCR_LOW_CONFIDENCE",
        +                  "MANUAL_REVIEW_REQUIRED",
        +                  "ACCEPTANCE_REQUIRED",
        +                  "INVALID_TOKEN"
        +                ],
        +                "type": "string"
        +              },
        +              "details": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "message": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "recoverable": {
        +                "type": "boolean"
        +              },
        +              "retry_after_seconds": {
        +                "anyOf": [
        +                  {
        +                    "minimum": 0,
        +                    "type": "integer"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              }
        +            },
        +            "required": [
        +              "code",
        +              "message",
        +              "recoverable"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      }
        +    },
        +    "required": [
        +      "_meta"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "_meta": {
        +        "additionalProperties": false,
        +        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        +        "properties": {
        +          "deliverables": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        +                "properties": {
        +                  "docx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "dxf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "expires_at": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  },
        +                  "pdf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "xlsx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "expires_at"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "document_id": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "issued_at": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "output_mode": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Surfaces what a trimmed ``output_mode`` withheld from ``data``.\n\nA trimmed mode (``summary`` / ``material_schedule`` / ``boq`` /\n``boq_with_backup``) withholds\nalready-computed fields to keep the chat payload small. The withheld value\nreads to a client agent as \"capability missing\" (the box-culvert \"geometry\nbuilder isn't firing\" scare) rather than \"pared for size\": ``drawing`` and\n``audit_trail`` appear as ``null``, ``boq_rows`` as an empty list ``[]``\n(its type forbids ``null``) — both indistinguishable from a genuine absent\nresult. This names the withheld fields and the exact mode that brings each\nback, so the value is unambiguous. Absent on the default ``full_json`` mode\n— nothing is withheld, nothing to point at.",
        +                "properties": {
        +                  "mode": {
        +                    "enum": [
        +                      "summary",
        +                      "material_schedule",
        +                      "boq",
        +                      "boq_with_backup"
        +                    ],
        +                    "type": "string"
        +                  },
        +                  "omitted_fields": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "minItems": 1,
        +                    "type": "array"
        +                  },
        +                  "retrieve_with": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "mode",
        +                  "omitted_fields",
        +                  "retrieve_with"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "rate_limit_remaining": {
        +            "anyOf": [
        +              {
        +                "minimum": 0,
        +                "type": "integer"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "request_id": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "schema_version": {
        +            "const": "1.0.0",
        +            "default": "1.0.0",
        +            "type": "string"
        +          },
        +          "scope_boundary": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        +                "properties": {
        +                  "not_in_scope": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "produced": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "recommended_companions": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "type": "string"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "produced",
        +                  "not_in_scope"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tier": {
        +            "enum": [
        +              "free",
        +              "paid"
        +            ],
        +            "type": "string"
        +          },
        +          "tier_upgrade": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        +                "properties": {
        +                  "available_tiers": {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        +                      "properties": {
        +                        "billing": {
        +                          "enum": [
        +                            "one_off",
        +                            "monthly",
        +                            "annual"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "currency": {
        +                          "enum": [
        +                            "GBP",
        +                            "SGD",
        +                            "EUR",
        +                            "USD",
        +                            "CAD",
        +                            "AUD",
        +                            "NZD",
        +                            "MYR"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "display_name": {
        +                          "type": "string"
        +                        },
        +                        "price_local": {
        +                          "type": "number"
        +                        },
        +                        "tier_slug": {
        +                          "enum": [
        +                            "7_day_pass",
        +                            "solo",
        +                            "studio",
        +                            "practice"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "unlock_summary": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "tier_slug",
        +                        "display_name",
        +                        "price_local",
        +                        "currency",
        +                        "billing",
        +                        "unlock_summary"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "current_tier": {
        +                    "const": "free",
        +                    "default": "free",
        +                    "type": "string"
        +                  },
        +                  "pass_credit": {
        +                    "anyOf": [
        +                      {
        +                        "additionalProperties": false,
        +                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        +                        "properties": {
        +                          "amount_local": {
        +                            "type": "number"
        +                          },
        +                          "applies_to": {
        +                            "const": "solo_first_month",
        +                            "default": "solo_first_month",
        +                            "type": "string"
        +                          },
        +                          "currency": {
        +                            "type": "string"
        +                          },
        +                          "redeemable_until": {
        +                            "type": "string"
        +                          }
        +                        },
        +                        "required": [
        +                          "amount_local",
        +                          "currency",
        +                          "redeemable_until"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "pricing_url": {
        +                    "default": "https://civilquants.com/pricing",
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "available_tiers"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tos_url": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "upgrade_hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "warranty_disclaimer": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          }
        +        },
        +        "required": [
        +          "request_id",
        +          "issued_at",
        +          "tier"
        +        ],
        +        "type": "object"
        +      },
        +      "data": {
        +        "default": null,
        +        "title": "Data"
        +      },
        +      "error": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        +            "properties": {
        +              "code": {
        +                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        +                "enum": [
        +                  "RATE_LIMIT_EXCEEDED",
        +                  "TIER_INSUFFICIENT",
        +                  "INVALID_INPUT",
        +                  "SCHEMA_VERSION_MISMATCH",
        +                  "SCHEMA_INVARIANT_VIOLATION",
        +                  "UPSTREAM_TIMEOUT",
        +                  "BACKEND_FAILURE",
        +                  "IP_BLOCKED",
        +                  "RESOURCE_NOT_FOUND",
        +                  "RENDER_FAILURE",
        +                  "OCR_LOW_CONFIDENCE",
        +                  "MANUAL_REVIEW_REQUIRED",
        +                  "ACCEPTANCE_REQUIRED",
        +                  "INVALID_TOKEN"
        +                ],
        +                "type": "string"
        +              },
        +              "details": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "message": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "recoverable": {
        +                "type": "boolean"
        +              },
        +              "retry_after_seconds": {
        +                "anyOf": [
        +                  {
        +                    "minimum": 0,
        +                    "type": "integer"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              }
        +            },
        +            "required": [
        +              "code",
        +              "message",
        +              "recoverable"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      }
        +    },
        +    "required": [
        +      "_meta"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedcompute_manhole2 fields changed
      • changedInput schema / properties / output_mode / enum
        Previous value: -[
        -  "summary",
        -  "boq",
        -  "boq_with_backup",
        -  "full_json"
        -]New value: +[
        +  "summary",
        +  "material_schedule",
        +  "boq",
        +  "boq_with_backup",
        +  "full_json"
        +]
      • changedOutput schema / properties / result / anyOf
        Previous value: -[
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "_meta": {
        -        "additionalProperties": false,
        -        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        -        "properties": {
        -          "deliverables": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        -                "properties": {
        -                  "docx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "dxf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "expires_at": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  },
        -                  "pdf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "xlsx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "expires_at"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "document_id": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "issued_at": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "output_mode": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Surfaces what a trimmed ``output_mode`` withheld from ``data``.\n\nA trimmed mode (``summary`` / ``boq`` / ``boq_with_backup``) withholds\nalready-computed fields to keep the chat payload small. The withheld value\nreads to a client agent as \"capability missing\" (the box-culvert \"geometry\nbuilder isn't firing\" scare) rather than \"pared for size\": ``drawing`` and\n``audit_trail`` appear as ``null``, ``boq_rows`` as an empty list ``[]``\n(its type forbids ``null``) — both indistinguishable from a genuine absent\nresult. This names the withheld fields and the exact mode that brings each\nback, so the value is unambiguous. Absent on the default ``full_json`` mode\n— nothing is withheld, nothing to point at.",
        -                "properties": {
        -                  "mode": {
        -                    "enum": [
        -                      "summary",
        -                      "boq",
        -                      "boq_with_backup"
        -                    ],
        -                    "type": "string"
        -                  },
        -                  "omitted_fields": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "minItems": 1,
        -                    "type": "array"
        -                  },
        -                  "retrieve_with": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "mode",
        -                  "omitted_fields",
        -                  "retrieve_with"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "rate_limit_remaining": {
        -            "anyOf": [
        -              {
        -                "minimum": 0,
        -                "type": "integer"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "request_id": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "schema_version": {
        -            "const": "1.0.0",
        -            "default": "1.0.0",
        -            "type": "string"
        -          },
        -          "scope_boundary": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        -                "properties": {
        -                  "not_in_scope": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "produced": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "recommended_companions": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "type": "string"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "produced",
        -                  "not_in_scope"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tier": {
        -            "enum": [
        -              "free",
        -              "paid"
        -            ],
        -            "type": "string"
        -          },
        -          "tier_upgrade": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        -                "properties": {
        -                  "available_tiers": {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        -                      "properties": {
        -                        "billing": {
        -                          "enum": [
        -                            "one_off",
        -                            "monthly",
        -                            "annual"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "currency": {
        -                          "enum": [
        -                            "GBP",
        -                            "SGD",
        -                            "EUR",
        -                            "USD",
        -                            "CAD",
        -                            "AUD",
        -                            "NZD",
        -                            "MYR"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "display_name": {
        -                          "type": "string"
        -                        },
        -                        "price_local": {
        -                          "type": "number"
        -                        },
        -                        "tier_slug": {
        -                          "enum": [
        -                            "7_day_pass",
        -                            "solo",
        -                            "studio",
        -                            "practice"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "unlock_summary": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "tier_slug",
        -                        "display_name",
        -                        "price_local",
        -                        "currency",
        -                        "billing",
        -                        "unlock_summary"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "current_tier": {
        -                    "const": "free",
        -                    "default": "free",
        -                    "type": "string"
        -                  },
        -                  "pass_credit": {
        -                    "anyOf": [
        -                      {
        -                        "additionalProperties": false,
        -                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        -                        "properties": {
        -                          "amount_local": {
        -                            "type": "number"
        -                          },
        -                          "applies_to": {
        -                            "const": "solo_first_month",
        -                            "default": "solo_first_month",
        -                            "type": "string"
        -                          },
        -                          "currency": {
        -                            "type": "string"
        -                          },
        -                          "redeemable_until": {
        -                            "type": "string"
        -                          }
        -                        },
        -                        "required": [
        -                          "amount_local",
        -                          "currency",
        -                          "redeemable_until"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "pricing_url": {
        -                    "default": "https://civilquants.com/pricing",
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "available_tiers"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tos_url": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "upgrade_hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "warranty_disclaimer": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          }
        -        },
        -        "required": [
        -          "request_id",
        -          "issued_at",
        -          "tier"
        -        ],
        -        "type": "object"
        -      },
        -      "data": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Schema § 1.1 — the typed payload returned inside `MCPResponse[ComputeResult]`.\n\nFree-tier responses omit `drawings` (the downloadable CAD artefact\npointers — the paid differentiator); the bridge enforces this. The\n`audit_trail` and the inline `drawing` preview are present on BOTH tiers\n(V1 ALIGN / 60th-fire D + C). `text_summary` is bounded to 2000 chars —\nkeeps the LLM-facing summary token-cheap and forces longer narrative into\nBoQ row descriptions where it belongs. `warnings` is the non-fatal\ngeometry advisory list (both tiers).",
        -            "properties": {
        -              "assembly_slug": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "audit_trail": {
        -                "anyOf": [
        -                  {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.7 — paid-tier audit-trail entry.\n\nOne entry per BoQ row; `boq_row_index` ties to the row position in\n`ComputeResult.boq_rows`. `derivation` is the human-readable formula\nwalk-through; `formula` is the optional formal expression.",
        -                      "properties": {
        -                        "boq_row_index": {
        -                          "minimum": 0,
        -                          "type": "integer"
        -                        },
        -                        "derivation": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "formula": {
        -                          "anyOf": [
        -                            {
        -                              "type": "string"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ],
        -                          "default": null
        -                        },
        -                        "id": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "parameters_referenced": {
        -                          "items": {
        -                            "type": "string"
        -                          },
        -                          "type": "array"
        -                        }
        -                      },
        -                      "required": [
        -                        "id",
        -                        "boq_row_index",
        -                        "derivation"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "boq_rows": {
        -                "items": {
        -                  "additionalProperties": false,
        -                  "description": "Schema § 1.3 — a single bill row in the requested standard's format.\n\n`description` is the non-verbatim functional description per spec § 13.9 /\n§ 15 invariant — NEVER reproduces a standard's verbatim clause text.\n`rate` / `amount` ship null because rates are commodity data the customer\nowns; the engine's job is the measurement, not the pricing.",
        -                  "properties": {
        -                    "amount": {
        -                      "anyOf": [
        -                        {
        -                          "type": "number"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "attribution": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "audit_id": {
        -                      "anyOf": [
        -                        {
        -                          "type": "string"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "description": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "quantity": {
        -                      "minimum": 0,
        -                      "type": "number"
        -                    },
        -                    "rate": {
        -                      "anyOf": [
        -                        {
        -                          "type": "number"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "unit": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "work_section": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    }
        -                  },
        -                  "required": [
        -                    "work_section",
        -                    "description",
        -                    "quantity",
        -                    "unit",
        -                    "attribution"
        -                  ],
        -                  "type": "object"
        -                },
        -                "type": "array"
        -              },
        -              "drawing": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": false,
        -                    "description": "Schema § 1.6a — inline server-rendered SVG preview of the geometry.\n\nThe MCP mirror of the web ``/compute`` response's ``drawing`` field\n(``api.schemas.compute.DrawingRef``): the same on-screen dimensioned\ndrawing both tiers see in the workspace, surfaced on the MCP compute\nresponse so a chat client can render it inline (60th-fire item C). This\nis the on-screen preview — present on BOTH tiers per the free/paid\nboundary; the downloadable CAD artefacts (DXF / dimensioned PDF) remain\nthe paid differentiator via the export tools.\n\nDefined here rather than importing ``DrawingRef`` because the web\n``schemas`` package imports back into this module (``schemas.render``),\nso reusing it would create an import cycle — the MCP wire contract keeps\nits own copy, the same pattern as ``BoQRow`` / ``DrawingReference``.",
        -                    "properties": {
        -                      "entity_count": {
        -                        "minimum": 0,
        -                        "type": "integer"
        -                      },
        -                      "svg_b64": {
        -                        "minLength": 1,
        -                        "type": "string"
        -                      },
        -                      "unit_of_drawing": {
        -                        "const": "m",
        -                        "default": "m",
        -                        "type": "string"
        -                      },
        -                      "viewbox_height": {
        -                        "exclusiveMinimum": 0,
        -                        "type": "number"
        -                      },
        -                      "viewbox_width": {
        -                        "exclusiveMinimum": 0,
        -                        "type": "number"
        -                      },
        -                      "viewbox_x": {
        -                        "type": "number"
        -                      },
        -                      "viewbox_y": {
        -                        "type": "number"
        -                      }
        -                    },
        -                    "required": [
        -                      "svg_b64",
        -                      "viewbox_x",
        -                      "viewbox_y",
        -                      "viewbox_width",
        -                      "viewbox_height",
        -                      "entity_count"
        -                    ],
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "drawings": {
        -                "anyOf": [
        -                  {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.6 — paid-tier drawing artefact pointer.\n\n`url` is an R2-signed URL; expiry is carried in `_meta.deliverables.expires_at`\non the envelope (not duplicated here). `layers` is DXF-only; PDF/SVG\ncallers omit it.",
        -                      "properties": {
        -                        "drawing_type": {
        -                          "enum": [
        -                            "section",
        -                            "plan",
        -                            "elevation",
        -                            "isometric",
        -                            "detail"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "format": {
        -                          "enum": [
        -                            "DXF",
        -                            "PDF",
        -                            "SVG"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "layers": {
        -                          "anyOf": [
        -                            {
        -                              "items": {
        -                                "type": "string"
        -                              },
        -                              "type": "array"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ],
        -                          "default": null
        -                        },
        -                        "scale": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "sheet_size": {
        -                          "enum": [
        -                            "A1",
        -                            "A2",
        -                            "A3",
        -                            "A4"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "url": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "drawing_type",
        -                        "format",
        -                        "url",
        -                        "sheet_size",
        -                        "scale"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "parameters_used": {
        -                "additionalProperties": false,
        -                "description": "Schema § 1.2 — the parameter snapshot the engine actually used.\n\nSplits user-supplied values from engine defaults so customers can see\nwhich numbers came from them and which the engine filled in. Every\ndefaulted parameter SHOULD have a corresponding entry in `assumptions`\n— the bridge layer enforces this when wrapping engine output.",
        -                "properties": {
        -                  "assumptions": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "engine_defaults": {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  "user_supplied": {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  }
        -                },
        -                "type": "object"
        -              },
        -              "standard": {
        -                "enum": [
        -                  "CESMM4",
        -                  "NRM2",
        -                  "SMM7",
        -                  "MMHW"
        -                ],
        -                "type": "string"
        -              },
        -              "text_summary": {
        -                "maxLength": 2000,
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "totals_summary": {
        -                "additionalProperties": false,
        -                "description": "Schema § 1.4 — totals_summary as a typed wrapper around the free-form dict.\n\nWire shape is a flat object (`{\"concrete_m3\": {...}, \"rebar_t\": {...}}`).\nWe model it as `RootModel`-equivalent via `model_config(extra=\"allow\")`\n+ a single `__root__`-style `entries` dict. Pydantic v2 recommends\n`RootModel` for free-form roots; using a wrapper class keeps the import\nsurface uniform with the rest of this module.",
        -                "properties": {
        -                  "entries": {
        -                    "additionalProperties": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.4 — single material/work-class total entry.",
        -                      "properties": {
        -                        "quantity": {
        -                          "minimum": 0,
        -                          "type": "number"
        -                        },
        -                        "unit": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "quantity",
        -                        "unit"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "object"
        -                  }
        -                },
        -                "type": "object"
        -              },
        -              "warnings": {
        -                "items": {
        -                  "additionalProperties": false,
        -                  "description": "Schema § 1.8 — a non-fatal geometry advisory (56th-fire T2).\n\nThe wire projection of the engine's `core.GeometryWarning`. Advisory only:\na warning NEVER changes a measured quantity — it flags geometry that is\nvalid but likely a mistake (e.g. a stale dependent-height default). Present\non BOTH tiers — a correctness/safety signal, not a paid feature.",
        -                  "properties": {
        -                    "affected_params": {
        -                      "items": {
        -                        "type": "string"
        -                      },
        -                      "type": "array"
        -                    },
        -                    "code": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "detail": {
        -                      "additionalProperties": {
        -                        "type": "number"
        -                      },
        -                      "type": "object"
        -                    },
        -                    "message": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "severity": {
        -                      "enum": [
        -                        "info",
        -                        "advisory",
        -                        "caution"
        -                      ],
        -                      "type": "string"
        -                    }
        -                  },
        -                  "required": [
        -                    "code",
        -                    "severity",
        -                    "message"
        -                  ],
        -                  "type": "object"
        -                },
        -                "type": "array"
        -              }
        -            },
        -            "required": [
        -              "assembly_slug",
        -              "standard",
        -              "parameters_used",
        -              "boq_rows",
        -              "totals_summary",
        -              "text_summary"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      },
        -      "error": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        -            "properties": {
        -              "code": {
        -                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        -                "enum": [
        -                  "RATE_LIMIT_EXCEEDED",
        -                  "TIER_INSUFFICIENT",
        -                  "INVALID_INPUT",
        -                  "SCHEMA_VERSION_MISMATCH",
        -                  "SCHEMA_INVARIANT_VIOLATION",
        -                  "UPSTREAM_TIMEOUT",
        -                  "BACKEND_FAILURE",
        -                  "IP_BLOCKED",
        -                  "RESOURCE_NOT_FOUND",
        -                  "RENDER_FAILURE",
        -                  "OCR_LOW_CONFIDENCE",
        -                  "MANUAL_REVIEW_REQUIRED",
        -                  "ACCEPTANCE_REQUIRED",
        -                  "INVALID_TOKEN"
        -                ],
        -                "type": "string"
        -              },
        -              "details": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "message": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "recoverable": {
        -                "type": "boolean"
        -              },
        -              "retry_after_seconds": {
        -                "anyOf": [
        -                  {
        -                    "minimum": 0,
        -                    "type": "integer"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              }
        -            },
        -            "required": [
        -              "code",
        -              "message",
        -              "recoverable"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      }
        -    },
        -    "required": [
        -      "_meta"
        -    ],
        -    "type": "object"
        -  },
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "_meta": {
        -        "additionalProperties": false,
        -        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        -        "properties": {
        -          "deliverables": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        -                "properties": {
        -                  "docx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "dxf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "expires_at": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  },
        -                  "pdf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "xlsx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "expires_at"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "document_id": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "issued_at": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "output_mode": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Surfaces what a trimmed ``output_mode`` withheld from ``data``.\n\nA trimmed mode (``summary`` / ``boq`` / ``boq_with_backup``) withholds\nalready-computed fields to keep the chat payload small. The withheld value\nreads to a client agent as \"capability missing\" (the box-culvert \"geometry\nbuilder isn't firing\" scare) rather than \"pared for size\": ``drawing`` and\n``audit_trail`` appear as ``null``, ``boq_rows`` as an empty list ``[]``\n(its type forbids ``null``) — both indistinguishable from a genuine absent\nresult. This names the withheld fields and the exact mode that brings each\nback, so the value is unambiguous. Absent on the default ``full_json`` mode\n— nothing is withheld, nothing to point at.",
        -                "properties": {
        -                  "mode": {
        -                    "enum": [
        -                      "summary",
        -                      "boq",
        -                      "boq_with_backup"
        -                    ],
        -                    "type": "string"
        -                  },
        -                  "omitted_fields": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "minItems": 1,
        -                    "type": "array"
        -                  },
        -                  "retrieve_with": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "mode",
        -                  "omitted_fields",
        -                  "retrieve_with"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "rate_limit_remaining": {
        -            "anyOf": [
        -              {
        -                "minimum": 0,
        -                "type": "integer"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "request_id": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "schema_version": {
        -            "const": "1.0.0",
        -            "default": "1.0.0",
        -            "type": "string"
        -          },
        -          "scope_boundary": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        -                "properties": {
        -                  "not_in_scope": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "produced": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "recommended_companions": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "type": "string"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "produced",
        -                  "not_in_scope"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tier": {
        -            "enum": [
        -              "free",
        -              "paid"
        -            ],
        -            "type": "string"
        -          },
        -          "tier_upgrade": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        -                "properties": {
        -                  "available_tiers": {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        -                      "properties": {
        -                        "billing": {
        -                          "enum": [
        -                            "one_off",
        -                            "monthly",
        -                            "annual"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "currency": {
        -                          "enum": [
        -                            "GBP",
        -                            "SGD",
        -                            "EUR",
        -                            "USD",
        -                            "CAD",
        -                            "AUD",
        -                            "NZD",
        -                            "MYR"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "display_name": {
        -                          "type": "string"
        -                        },
        -                        "price_local": {
        -                          "type": "number"
        -                        },
        -                        "tier_slug": {
        -                          "enum": [
        -                            "7_day_pass",
        -                            "solo",
        -                            "studio",
        -                            "practice"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "unlock_summary": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "tier_slug",
        -                        "display_name",
        -                        "price_local",
        -                        "currency",
        -                        "billing",
        -                        "unlock_summary"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "current_tier": {
        -                    "const": "free",
        -                    "default": "free",
        -                    "type": "string"
        -                  },
        -                  "pass_credit": {
        -                    "anyOf": [
        -                      {
        -                        "additionalProperties": false,
        -                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        -                        "properties": {
        -                          "amount_local": {
        -                            "type": "number"
        -                          },
        -                          "applies_to": {
        -                            "const": "solo_first_month",
        -                            "default": "solo_first_month",
        -                            "type": "string"
        -                          },
        -                          "currency": {
        -                            "type": "string"
        -                          },
        -                          "redeemable_until": {
        -                            "type": "string"
        -                          }
        -                        },
        -                        "required": [
        -                          "amount_local",
        -                          "currency",
        -                          "redeemable_until"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "pricing_url": {
        -                    "default": "https://civilquants.com/pricing",
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "available_tiers"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tos_url": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "upgrade_hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "warranty_disclaimer": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          }
        -        },
        -        "required": [
        -          "request_id",
        -          "issued_at",
        -          "tier"
        -        ],
        -        "type": "object"
        -      },
        -      "data": {
        -        "default": null,
        -        "title": "Data"
        -      },
        -      "error": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        -            "properties": {
        -              "code": {
        -                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        -                "enum": [
        -                  "RATE_LIMIT_EXCEEDED",
        -                  "TIER_INSUFFICIENT",
        -                  "INVALID_INPUT",
        -                  "SCHEMA_VERSION_MISMATCH",
        -                  "SCHEMA_INVARIANT_VIOLATION",
        -                  "UPSTREAM_TIMEOUT",
        -                  "BACKEND_FAILURE",
        -                  "IP_BLOCKED",
        -                  "RESOURCE_NOT_FOUND",
        -                  "RENDER_FAILURE",
        -                  "OCR_LOW_CONFIDENCE",
        -                  "MANUAL_REVIEW_REQUIRED",
        -                  "ACCEPTANCE_REQUIRED",
        -                  "INVALID_TOKEN"
        -                ],
        -                "type": "string"
        -              },
        -              "details": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "message": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "recoverable": {
        -                "type": "boolean"
        -              },
        -              "retry_after_seconds": {
        -                "anyOf": [
        -                  {
        -                    "minimum": 0,
        -                    "type": "integer"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              }
        -            },
        -            "required": [
        -              "code",
        -              "message",
        -              "recoverable"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      }
        -    },
        -    "required": [
        -      "_meta"
        -    ],
        -    "type": "object"
        -  }
        -]New value: +[
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "_meta": {
        +        "additionalProperties": false,
        +        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        +        "properties": {
        +          "deliverables": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        +                "properties": {
        +                  "docx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "dxf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "expires_at": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  },
        +                  "pdf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "xlsx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "expires_at"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "document_id": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "issued_at": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "output_mode": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Surfaces what a trimmed ``output_mode`` withheld from ``data``.\n\nA trimmed mode (``summary`` / ``material_schedule`` / ``boq`` /\n``boq_with_backup``) withholds\nalready-computed fields to keep the chat payload small. The withheld value\nreads to a client agent as \"capability missing\" (the box-culvert \"geometry\nbuilder isn't firing\" scare) rather than \"pared for size\": ``drawing`` and\n``audit_trail`` appear as ``null``, ``boq_rows`` as an empty list ``[]``\n(its type forbids ``null``) — both indistinguishable from a genuine absent\nresult. This names the withheld fields and the exact mode that brings each\nback, so the value is unambiguous. Absent on the default ``full_json`` mode\n— nothing is withheld, nothing to point at.",
        +                "properties": {
        +                  "mode": {
        +                    "enum": [
        +                      "summary",
        +                      "material_schedule",
        +                      "boq",
        +                      "boq_with_backup"
        +                    ],
        +                    "type": "string"
        +                  },
        +                  "omitted_fields": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "minItems": 1,
        +                    "type": "array"
        +                  },
        +                  "retrieve_with": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "mode",
        +                  "omitted_fields",
        +                  "retrieve_with"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "rate_limit_remaining": {
        +            "anyOf": [
        +              {
        +                "minimum": 0,
        +                "type": "integer"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "request_id": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "schema_version": {
        +            "const": "1.0.0",
        +            "default": "1.0.0",
        +            "type": "string"
        +          },
        +          "scope_boundary": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        +                "properties": {
        +                  "not_in_scope": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "produced": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "recommended_companions": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "type": "string"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "produced",
        +                  "not_in_scope"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tier": {
        +            "enum": [
        +              "free",
        +              "paid"
        +            ],
        +            "type": "string"
        +          },
        +          "tier_upgrade": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        +                "properties": {
        +                  "available_tiers": {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        +                      "properties": {
        +                        "billing": {
        +                          "enum": [
        +                            "one_off",
        +                            "monthly",
        +                            "annual"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "currency": {
        +                          "enum": [
        +                            "GBP",
        +                            "SGD",
        +                            "EUR",
        +                            "USD",
        +                            "CAD",
        +                            "AUD",
        +                            "NZD",
        +                            "MYR"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "display_name": {
        +                          "type": "string"
        +                        },
        +                        "price_local": {
        +                          "type": "number"
        +                        },
        +                        "tier_slug": {
        +                          "enum": [
        +                            "7_day_pass",
        +                            "solo",
        +                            "studio",
        +                            "practice"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "unlock_summary": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "tier_slug",
        +                        "display_name",
        +                        "price_local",
        +                        "currency",
        +                        "billing",
        +                        "unlock_summary"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "current_tier": {
        +                    "const": "free",
        +                    "default": "free",
        +                    "type": "string"
        +                  },
        +                  "pass_credit": {
        +                    "anyOf": [
        +                      {
        +                        "additionalProperties": false,
        +                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        +                        "properties": {
        +                          "amount_local": {
        +                            "type": "number"
        +                          },
        +                          "applies_to": {
        +                            "const": "solo_first_month",
        +                            "default": "solo_first_month",
        +                            "type": "string"
        +                          },
        +                          "currency": {
        +                            "type": "string"
        +                          },
        +                          "redeemable_until": {
        +                            "type": "string"
        +                          }
        +                        },
        +                        "required": [
        +                          "amount_local",
        +                          "currency",
        +                          "redeemable_until"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "pricing_url": {
        +                    "default": "https://civilquants.com/pricing",
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "available_tiers"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tos_url": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "upgrade_hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "warranty_disclaimer": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          }
        +        },
        +        "required": [
        +          "request_id",
        +          "issued_at",
        +          "tier"
        +        ],
        +        "type": "object"
        +      },
        +      "data": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Schema § 1.1 — the typed payload returned inside `MCPResponse[ComputeResult]`.\n\nFree-tier responses omit `drawings` (the downloadable CAD artefact\npointers — the paid differentiator); the bridge enforces this. The\n`audit_trail` and the inline `drawing` preview are present on BOTH tiers\n(V1 ALIGN / 60th-fire D + C). `text_summary` is bounded to 2000 chars —\nkeeps the LLM-facing summary token-cheap and forces longer narrative into\nBoQ row descriptions where it belongs. `warnings` is the non-fatal\ngeometry advisory list (both tiers).",
        +            "properties": {
        +              "assembly_slug": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "audit_trail": {
        +                "anyOf": [
        +                  {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.7 — paid-tier audit-trail entry.\n\nOne entry per BoQ row; `boq_row_index` ties to the row position in\n`ComputeResult.boq_rows`. `derivation` is the human-readable formula\nwalk-through; `formula` is the optional formal expression.",
        +                      "properties": {
        +                        "boq_row_index": {
        +                          "minimum": 0,
        +                          "type": "integer"
        +                        },
        +                        "derivation": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "formula": {
        +                          "anyOf": [
        +                            {
        +                              "type": "string"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ],
        +                          "default": null
        +                        },
        +                        "id": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "parameters_referenced": {
        +                          "items": {
        +                            "type": "string"
        +                          },
        +                          "type": "array"
        +                        }
        +                      },
        +                      "required": [
        +                        "id",
        +                        "boq_row_index",
        +                        "derivation"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "boq_rows": {
        +                "items": {
        +                  "additionalProperties": false,
        +                  "description": "Schema § 1.3 — a single bill row in the requested standard's format.\n\n`description` is the non-verbatim functional description per spec § 13.9 /\n§ 15 invariant — NEVER reproduces a standard's verbatim clause text.\n`rate` / `amount` ship null because rates are commodity data the customer\nowns; the engine's job is the measurement, not the pricing.",
        +                  "properties": {
        +                    "amount": {
        +                      "anyOf": [
        +                        {
        +                          "type": "number"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "attribution": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "audit_id": {
        +                      "anyOf": [
        +                        {
        +                          "type": "string"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "description": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "quantity": {
        +                      "minimum": 0,
        +                      "type": "number"
        +                    },
        +                    "rate": {
        +                      "anyOf": [
        +                        {
        +                          "type": "number"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "unit": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "work_section": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    }
        +                  },
        +                  "required": [
        +                    "work_section",
        +                    "description",
        +                    "quantity",
        +                    "unit",
        +                    "attribution"
        +                  ],
        +                  "type": "object"
        +                },
        +                "type": "array"
        +              },
        +              "drawing": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": false,
        +                    "description": "Schema § 1.6a — inline server-rendered SVG preview of the geometry.\n\nThe MCP mirror of the web ``/compute`` response's ``drawing`` field\n(``api.schemas.compute.DrawingRef``): the same on-screen dimensioned\ndrawing both tiers see in the workspace, surfaced on the MCP compute\nresponse so a chat client can render it inline (60th-fire item C). This\nis the on-screen preview — present on BOTH tiers per the free/paid\nboundary; the downloadable CAD artefacts (DXF / dimensioned PDF) remain\nthe paid differentiator via the export tools.\n\nDefined here rather than importing ``DrawingRef`` because the web\n``schemas`` package imports back into this module (``schemas.render``),\nso reusing it would create an import cycle — the MCP wire contract keeps\nits own copy, the same pattern as ``BoQRow`` / ``DrawingReference``.",
        +                    "properties": {
        +                      "entity_count": {
        +                        "minimum": 0,
        +                        "type": "integer"
        +                      },
        +                      "svg_b64": {
        +                        "minLength": 1,
        +                        "type": "string"
        +                      },
        +                      "unit_of_drawing": {
        +                        "const": "m",
        +                        "default": "m",
        +                        "type": "string"
        +                      },
        +                      "viewbox_height": {
        +                        "exclusiveMinimum": 0,
        +                        "type": "number"
        +                      },
        +                      "viewbox_width": {
        +                        "exclusiveMinimum": 0,
        +                        "type": "number"
        +                      },
        +                      "viewbox_x": {
        +                        "type": "number"
        +                      },
        +                      "viewbox_y": {
        +                        "type": "number"
        +                      }
        +                    },
        +                    "required": [
        +                      "svg_b64",
        +                      "viewbox_x",
        +                      "viewbox_y",
        +                      "viewbox_width",
        +                      "viewbox_height",
        +                      "entity_count"
        +                    ],
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "drawings": {
        +                "anyOf": [
        +                  {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.6 — paid-tier drawing artefact pointer.\n\n`url` is an R2-signed URL; expiry is carried in `_meta.deliverables.expires_at`\non the envelope (not duplicated here). `layers` is DXF-only; PDF/SVG\ncallers omit it.",
        +                      "properties": {
        +                        "drawing_type": {
        +                          "enum": [
        +                            "section",
        +                            "plan",
        +                            "elevation",
        +                            "isometric",
        +                            "detail"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "format": {
        +                          "enum": [
        +                            "DXF",
        +                            "PDF",
        +                            "SVG"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "layers": {
        +                          "anyOf": [
        +                            {
        +                              "items": {
        +                                "type": "string"
        +                              },
        +                              "type": "array"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ],
        +                          "default": null
        +                        },
        +                        "scale": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "sheet_size": {
        +                          "enum": [
        +                            "A1",
        +                            "A2",
        +                            "A3",
        +                            "A4"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "url": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "drawing_type",
        +                        "format",
        +                        "url",
        +                        "sheet_size",
        +                        "scale"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "parameters_used": {
        +                "additionalProperties": false,
        +                "description": "Schema § 1.2 — the parameter snapshot the engine actually used.\n\nSplits user-supplied values from engine defaults so customers can see\nwhich numbers came from them and which the engine filled in. Every\ndefaulted parameter SHOULD have a corresponding entry in `assumptions`\n— the bridge layer enforces this when wrapping engine output.",
        +                "properties": {
        +                  "assumptions": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "engine_defaults": {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  "user_supplied": {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  }
        +                },
        +                "type": "object"
        +              },
        +              "standard": {
        +                "enum": [
        +                  "CESMM4",
        +                  "NRM2",
        +                  "SMM7",
        +                  "MMHW"
        +                ],
        +                "type": "string"
        +              },
        +              "text_summary": {
        +                "maxLength": 2000,
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "totals_summary": {
        +                "additionalProperties": false,
        +                "description": "Schema § 1.4 — totals_summary as a typed wrapper around the free-form dict.\n\nWire shape is a flat object (`{\"concrete_m3\": {...}, \"rebar_t\": {...}}`).\nWe model it as `RootModel`-equivalent via `model_config(extra=\"allow\")`\n+ a single `__root__`-style `entries` dict. Pydantic v2 recommends\n`RootModel` for free-form roots; using a wrapper class keeps the import\nsurface uniform with the rest of this module.",
        +                "properties": {
        +                  "entries": {
        +                    "additionalProperties": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.4 — single material/work-class total entry.",
        +                      "properties": {
        +                        "quantity": {
        +                          "minimum": 0,
        +                          "type": "number"
        +                        },
        +                        "unit": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "quantity",
        +                        "unit"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "object"
        +                  }
        +                },
        +                "type": "object"
        +              },
        +              "warnings": {
        +                "items": {
        +                  "additionalProperties": false,
        +                  "description": "Schema § 1.8 — a non-fatal geometry advisory (56th-fire T2).\n\nThe wire projection of the engine's `core.GeometryWarning`. Advisory only:\na warning NEVER changes a measured quantity — it flags geometry that is\nvalid but likely a mistake (e.g. a stale dependent-height default). Present\non BOTH tiers — a correctness/safety signal, not a paid feature.",
        +                  "properties": {
        +                    "affected_params": {
        +                      "items": {
        +                        "type": "string"
        +                      },
        +                      "type": "array"
        +                    },
        +                    "code": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "detail": {
        +                      "additionalProperties": {
        +                        "type": "number"
        +                      },
        +                      "type": "object"
        +                    },
        +                    "message": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "severity": {
        +                      "enum": [
        +                        "info",
        +                        "advisory",
        +                        "caution"
        +                      ],
        +                      "type": "string"
        +                    }
        +                  },
        +                  "required": [
        +                    "code",
        +                    "severity",
        +                    "message"
        +                  ],
        +                  "type": "object"
        +                },
        +                "type": "array"
        +              }
        +            },
        +            "required": [
        +              "assembly_slug",
        +              "standard",
        +              "parameters_used",
        +              "boq_rows",
        +              "totals_summary",
        +              "text_summary"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      },
        +      "error": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        +            "properties": {
        +              "code": {
        +                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        +                "enum": [
        +                  "RATE_LIMIT_EXCEEDED",
        +                  "TIER_INSUFFICIENT",
        +                  "INVALID_INPUT",
        +                  "SCHEMA_VERSION_MISMATCH",
        +                  "SCHEMA_INVARIANT_VIOLATION",
        +                  "UPSTREAM_TIMEOUT",
        +                  "BACKEND_FAILURE",
        +                  "IP_BLOCKED",
        +                  "RESOURCE_NOT_FOUND",
        +                  "RENDER_FAILURE",
        +                  "OCR_LOW_CONFIDENCE",
        +                  "MANUAL_REVIEW_REQUIRED",
        +                  "ACCEPTANCE_REQUIRED",
        +                  "INVALID_TOKEN"
        +                ],
        +                "type": "string"
        +              },
        +              "details": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "message": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "recoverable": {
        +                "type": "boolean"
        +              },
        +              "retry_after_seconds": {
        +                "anyOf": [
        +                  {
        +                    "minimum": 0,
        +                    "type": "integer"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              }
        +            },
        +            "required": [
        +              "code",
        +              "message",
        +              "recoverable"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      }
        +    },
        +    "required": [
        +      "_meta"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "_meta": {
        +        "additionalProperties": false,
        +        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        +        "properties": {
        +          "deliverables": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        +                "properties": {
        +                  "docx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "dxf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "expires_at": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  },
        +                  "pdf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "xlsx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "expires_at"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "document_id": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "issued_at": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "output_mode": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Surfaces what a trimmed ``output_mode`` withheld from ``data``.\n\nA trimmed mode (``summary`` / ``material_schedule`` / ``boq`` /\n``boq_with_backup``) withholds\nalready-computed fields to keep the chat payload small. The withheld value\nreads to a client agent as \"capability missing\" (the box-culvert \"geometry\nbuilder isn't firing\" scare) rather than \"pared for size\": ``drawing`` and\n``audit_trail`` appear as ``null``, ``boq_rows`` as an empty list ``[]``\n(its type forbids ``null``) — both indistinguishable from a genuine absent\nresult. This names the withheld fields and the exact mode that brings each\nback, so the value is unambiguous. Absent on the default ``full_json`` mode\n— nothing is withheld, nothing to point at.",
        +                "properties": {
        +                  "mode": {
        +                    "enum": [
        +                      "summary",
        +                      "material_schedule",
        +                      "boq",
        +                      "boq_with_backup"
        +                    ],
        +                    "type": "string"
        +                  },
        +                  "omitted_fields": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "minItems": 1,
        +                    "type": "array"
        +                  },
        +                  "retrieve_with": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "mode",
        +                  "omitted_fields",
        +                  "retrieve_with"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "rate_limit_remaining": {
        +            "anyOf": [
        +              {
        +                "minimum": 0,
        +                "type": "integer"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "request_id": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "schema_version": {
        +            "const": "1.0.0",
        +            "default": "1.0.0",
        +            "type": "string"
        +          },
        +          "scope_boundary": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        +                "properties": {
        +                  "not_in_scope": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "produced": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "recommended_companions": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "type": "string"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "produced",
        +                  "not_in_scope"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tier": {
        +            "enum": [
        +              "free",
        +              "paid"
        +            ],
        +            "type": "string"
        +          },
        +          "tier_upgrade": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        +                "properties": {
        +                  "available_tiers": {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        +                      "properties": {
        +                        "billing": {
        +                          "enum": [
        +                            "one_off",
        +                            "monthly",
        +                            "annual"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "currency": {
        +                          "enum": [
        +                            "GBP",
        +                            "SGD",
        +                            "EUR",
        +                            "USD",
        +                            "CAD",
        +                            "AUD",
        +                            "NZD",
        +                            "MYR"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "display_name": {
        +                          "type": "string"
        +                        },
        +                        "price_local": {
        +                          "type": "number"
        +                        },
        +                        "tier_slug": {
        +                          "enum": [
        +                            "7_day_pass",
        +                            "solo",
        +                            "studio",
        +                            "practice"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "unlock_summary": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "tier_slug",
        +                        "display_name",
        +                        "price_local",
        +                        "currency",
        +                        "billing",
        +                        "unlock_summary"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "current_tier": {
        +                    "const": "free",
        +                    "default": "free",
        +                    "type": "string"
        +                  },
        +                  "pass_credit": {
        +                    "anyOf": [
        +                      {
        +                        "additionalProperties": false,
        +                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        +                        "properties": {
        +                          "amount_local": {
        +                            "type": "number"
        +                          },
        +                          "applies_to": {
        +                            "const": "solo_first_month",
        +                            "default": "solo_first_month",
        +                            "type": "string"
        +                          },
        +                          "currency": {
        +                            "type": "string"
        +                          },
        +                          "redeemable_until": {
        +                            "type": "string"
        +                          }
        +                        },
        +                        "required": [
        +                          "amount_local",
        +                          "currency",
        +                          "redeemable_until"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "pricing_url": {
        +                    "default": "https://civilquants.com/pricing",
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "available_tiers"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tos_url": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "upgrade_hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "warranty_disclaimer": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          }
        +        },
        +        "required": [
        +          "request_id",
        +          "issued_at",
        +          "tier"
        +        ],
        +        "type": "object"
        +      },
        +      "data": {
        +        "default": null,
        +        "title": "Data"
        +      },
        +      "error": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        +            "properties": {
        +              "code": {
        +                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        +                "enum": [
        +                  "RATE_LIMIT_EXCEEDED",
        +                  "TIER_INSUFFICIENT",
        +                  "INVALID_INPUT",
        +                  "SCHEMA_VERSION_MISMATCH",
        +                  "SCHEMA_INVARIANT_VIOLATION",
        +                  "UPSTREAM_TIMEOUT",
        +                  "BACKEND_FAILURE",
        +                  "IP_BLOCKED",
        +                  "RESOURCE_NOT_FOUND",
        +                  "RENDER_FAILURE",
        +                  "OCR_LOW_CONFIDENCE",
        +                  "MANUAL_REVIEW_REQUIRED",
        +                  "ACCEPTANCE_REQUIRED",
        +                  "INVALID_TOKEN"
        +                ],
        +                "type": "string"
        +              },
        +              "details": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "message": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "recoverable": {
        +                "type": "boolean"
        +              },
        +              "retry_after_seconds": {
        +                "anyOf": [
        +                  {
        +                    "minimum": 0,
        +                    "type": "integer"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              }
        +            },
        +            "required": [
        +              "code",
        +              "message",
        +              "recoverable"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      }
        +    },
        +    "required": [
        +      "_meta"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedcompute_manhole_precast2 fields changed
      • changedInput schema / properties / output_mode / enum
        Previous value: -[
        -  "summary",
        -  "boq",
        -  "boq_with_backup",
        -  "full_json"
        -]New value: +[
        +  "summary",
        +  "material_schedule",
        +  "boq",
        +  "boq_with_backup",
        +  "full_json"
        +]
      • changedOutput schema / properties / result / anyOf
        Previous value: -[
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "_meta": {
        -        "additionalProperties": false,
        -        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        -        "properties": {
        -          "deliverables": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        -                "properties": {
        -                  "docx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "dxf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "expires_at": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  },
        -                  "pdf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "xlsx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "expires_at"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "document_id": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "issued_at": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "output_mode": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Surfaces what a trimmed ``output_mode`` withheld from ``data``.\n\nA trimmed mode (``summary`` / ``boq`` / ``boq_with_backup``) withholds\nalready-computed fields to keep the chat payload small. The withheld value\nreads to a client agent as \"capability missing\" (the box-culvert \"geometry\nbuilder isn't firing\" scare) rather than \"pared for size\": ``drawing`` and\n``audit_trail`` appear as ``null``, ``boq_rows`` as an empty list ``[]``\n(its type forbids ``null``) — both indistinguishable from a genuine absent\nresult. This names the withheld fields and the exact mode that brings each\nback, so the value is unambiguous. Absent on the default ``full_json`` mode\n— nothing is withheld, nothing to point at.",
        -                "properties": {
        -                  "mode": {
        -                    "enum": [
        -                      "summary",
        -                      "boq",
        -                      "boq_with_backup"
        -                    ],
        -                    "type": "string"
        -                  },
        -                  "omitted_fields": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "minItems": 1,
        -                    "type": "array"
        -                  },
        -                  "retrieve_with": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "mode",
        -                  "omitted_fields",
        -                  "retrieve_with"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "rate_limit_remaining": {
        -            "anyOf": [
        -              {
        -                "minimum": 0,
        -                "type": "integer"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "request_id": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "schema_version": {
        -            "const": "1.0.0",
        -            "default": "1.0.0",
        -            "type": "string"
        -          },
        -          "scope_boundary": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        -                "properties": {
        -                  "not_in_scope": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "produced": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "recommended_companions": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "type": "string"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "produced",
        -                  "not_in_scope"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tier": {
        -            "enum": [
        -              "free",
        -              "paid"
        -            ],
        -            "type": "string"
        -          },
        -          "tier_upgrade": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        -                "properties": {
        -                  "available_tiers": {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        -                      "properties": {
        -                        "billing": {
        -                          "enum": [
        -                            "one_off",
        -                            "monthly",
        -                            "annual"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "currency": {
        -                          "enum": [
        -                            "GBP",
        -                            "SGD",
        -                            "EUR",
        -                            "USD",
        -                            "CAD",
        -                            "AUD",
        -                            "NZD",
        -                            "MYR"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "display_name": {
        -                          "type": "string"
        -                        },
        -                        "price_local": {
        -                          "type": "number"
        -                        },
        -                        "tier_slug": {
        -                          "enum": [
        -                            "7_day_pass",
        -                            "solo",
        -                            "studio",
        -                            "practice"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "unlock_summary": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "tier_slug",
        -                        "display_name",
        -                        "price_local",
        -                        "currency",
        -                        "billing",
        -                        "unlock_summary"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "current_tier": {
        -                    "const": "free",
        -                    "default": "free",
        -                    "type": "string"
        -                  },
        -                  "pass_credit": {
        -                    "anyOf": [
        -                      {
        -                        "additionalProperties": false,
        -                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        -                        "properties": {
        -                          "amount_local": {
        -                            "type": "number"
        -                          },
        -                          "applies_to": {
        -                            "const": "solo_first_month",
        -                            "default": "solo_first_month",
        -                            "type": "string"
        -                          },
        -                          "currency": {
        -                            "type": "string"
        -                          },
        -                          "redeemable_until": {
        -                            "type": "string"
        -                          }
        -                        },
        -                        "required": [
        -                          "amount_local",
        -                          "currency",
        -                          "redeemable_until"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "pricing_url": {
        -                    "default": "https://civilquants.com/pricing",
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "available_tiers"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tos_url": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "upgrade_hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "warranty_disclaimer": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          }
        -        },
        -        "required": [
        -          "request_id",
        -          "issued_at",
        -          "tier"
        -        ],
        -        "type": "object"
        -      },
        -      "data": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Schema § 1.1 — the typed payload returned inside `MCPResponse[ComputeResult]`.\n\nFree-tier responses omit `drawings` (the downloadable CAD artefact\npointers — the paid differentiator); the bridge enforces this. The\n`audit_trail` and the inline `drawing` preview are present on BOTH tiers\n(V1 ALIGN / 60th-fire D + C). `text_summary` is bounded to 2000 chars —\nkeeps the LLM-facing summary token-cheap and forces longer narrative into\nBoQ row descriptions where it belongs. `warnings` is the non-fatal\ngeometry advisory list (both tiers).",
        -            "properties": {
        -              "assembly_slug": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "audit_trail": {
        -                "anyOf": [
        -                  {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.7 — paid-tier audit-trail entry.\n\nOne entry per BoQ row; `boq_row_index` ties to the row position in\n`ComputeResult.boq_rows`. `derivation` is the human-readable formula\nwalk-through; `formula` is the optional formal expression.",
        -                      "properties": {
        -                        "boq_row_index": {
        -                          "minimum": 0,
        -                          "type": "integer"
        -                        },
        -                        "derivation": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "formula": {
        -                          "anyOf": [
        -                            {
        -                              "type": "string"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ],
        -                          "default": null
        -                        },
        -                        "id": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "parameters_referenced": {
        -                          "items": {
        -                            "type": "string"
        -                          },
        -                          "type": "array"
        -                        }
        -                      },
        -                      "required": [
        -                        "id",
        -                        "boq_row_index",
        -                        "derivation"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "boq_rows": {
        -                "items": {
        -                  "additionalProperties": false,
        -                  "description": "Schema § 1.3 — a single bill row in the requested standard's format.\n\n`description` is the non-verbatim functional description per spec § 13.9 /\n§ 15 invariant — NEVER reproduces a standard's verbatim clause text.\n`rate` / `amount` ship null because rates are commodity data the customer\nowns; the engine's job is the measurement, not the pricing.",
        -                  "properties": {
        -                    "amount": {
        -                      "anyOf": [
        -                        {
        -                          "type": "number"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "attribution": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "audit_id": {
        -                      "anyOf": [
        -                        {
        -                          "type": "string"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "description": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "quantity": {
        -                      "minimum": 0,
        -                      "type": "number"
        -                    },
        -                    "rate": {
        -                      "anyOf": [
        -                        {
        -                          "type": "number"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "unit": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "work_section": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    }
        -                  },
        -                  "required": [
        -                    "work_section",
        -                    "description",
        -                    "quantity",
        -                    "unit",
        -                    "attribution"
        -                  ],
        -                  "type": "object"
        -                },
        -                "type": "array"
        -              },
        -              "drawing": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": false,
        -                    "description": "Schema § 1.6a — inline server-rendered SVG preview of the geometry.\n\nThe MCP mirror of the web ``/compute`` response's ``drawing`` field\n(``api.schemas.compute.DrawingRef``): the same on-screen dimensioned\ndrawing both tiers see in the workspace, surfaced on the MCP compute\nresponse so a chat client can render it inline (60th-fire item C). This\nis the on-screen preview — present on BOTH tiers per the free/paid\nboundary; the downloadable CAD artefacts (DXF / dimensioned PDF) remain\nthe paid differentiator via the export tools.\n\nDefined here rather than importing ``DrawingRef`` because the web\n``schemas`` package imports back into this module (``schemas.render``),\nso reusing it would create an import cycle — the MCP wire contract keeps\nits own copy, the same pattern as ``BoQRow`` / ``DrawingReference``.",
        -                    "properties": {
        -                      "entity_count": {
        -                        "minimum": 0,
        -                        "type": "integer"
        -                      },
        -                      "svg_b64": {
        -                        "minLength": 1,
        -                        "type": "string"
        -                      },
        -                      "unit_of_drawing": {
        -                        "const": "m",
        -                        "default": "m",
        -                        "type": "string"
        -                      },
        -                      "viewbox_height": {
        -                        "exclusiveMinimum": 0,
        -                        "type": "number"
        -                      },
        -                      "viewbox_width": {
        -                        "exclusiveMinimum": 0,
        -                        "type": "number"
        -                      },
        -                      "viewbox_x": {
        -                        "type": "number"
        -                      },
        -                      "viewbox_y": {
        -                        "type": "number"
        -                      }
        -                    },
        -                    "required": [
        -                      "svg_b64",
        -                      "viewbox_x",
        -                      "viewbox_y",
        -                      "viewbox_width",
        -                      "viewbox_height",
        -                      "entity_count"
        -                    ],
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "drawings": {
        -                "anyOf": [
        -                  {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.6 — paid-tier drawing artefact pointer.\n\n`url` is an R2-signed URL; expiry is carried in `_meta.deliverables.expires_at`\non the envelope (not duplicated here). `layers` is DXF-only; PDF/SVG\ncallers omit it.",
        -                      "properties": {
        -                        "drawing_type": {
        -                          "enum": [
        -                            "section",
        -                            "plan",
        -                            "elevation",
        -                            "isometric",
        -                            "detail"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "format": {
        -                          "enum": [
        -                            "DXF",
        -                            "PDF",
        -                            "SVG"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "layers": {
        -                          "anyOf": [
        -                            {
        -                              "items": {
        -                                "type": "string"
        -                              },
        -                              "type": "array"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ],
        -                          "default": null
        -                        },
        -                        "scale": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "sheet_size": {
        -                          "enum": [
        -                            "A1",
        -                            "A2",
        -                            "A3",
        -                            "A4"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "url": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "drawing_type",
        -                        "format",
        -                        "url",
        -                        "sheet_size",
        -                        "scale"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "parameters_used": {
        -                "additionalProperties": false,
        -                "description": "Schema § 1.2 — the parameter snapshot the engine actually used.\n\nSplits user-supplied values from engine defaults so customers can see\nwhich numbers came from them and which the engine filled in. Every\ndefaulted parameter SHOULD have a corresponding entry in `assumptions`\n— the bridge layer enforces this when wrapping engine output.",
        -                "properties": {
        -                  "assumptions": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "engine_defaults": {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  "user_supplied": {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  }
        -                },
        -                "type": "object"
        -              },
        -              "standard": {
        -                "enum": [
        -                  "CESMM4",
        -                  "NRM2",
        -                  "SMM7",
        -                  "MMHW"
        -                ],
        -                "type": "string"
        -              },
        -              "text_summary": {
        -                "maxLength": 2000,
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "totals_summary": {
        -                "additionalProperties": false,
        -                "description": "Schema § 1.4 — totals_summary as a typed wrapper around the free-form dict.\n\nWire shape is a flat object (`{\"concrete_m3\": {...}, \"rebar_t\": {...}}`).\nWe model it as `RootModel`-equivalent via `model_config(extra=\"allow\")`\n+ a single `__root__`-style `entries` dict. Pydantic v2 recommends\n`RootModel` for free-form roots; using a wrapper class keeps the import\nsurface uniform with the rest of this module.",
        -                "properties": {
        -                  "entries": {
        -                    "additionalProperties": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.4 — single material/work-class total entry.",
        -                      "properties": {
        -                        "quantity": {
        -                          "minimum": 0,
        -                          "type": "number"
        -                        },
        -                        "unit": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "quantity",
        -                        "unit"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "object"
        -                  }
        -                },
        -                "type": "object"
        -              },
        -              "warnings": {
        -                "items": {
        -                  "additionalProperties": false,
        -                  "description": "Schema § 1.8 — a non-fatal geometry advisory (56th-fire T2).\n\nThe wire projection of the engine's `core.GeometryWarning`. Advisory only:\na warning NEVER changes a measured quantity — it flags geometry that is\nvalid but likely a mistake (e.g. a stale dependent-height default). Present\non BOTH tiers — a correctness/safety signal, not a paid feature.",
        -                  "properties": {
        -                    "affected_params": {
        -                      "items": {
        -                        "type": "string"
        -                      },
        -                      "type": "array"
        -                    },
        -                    "code": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "detail": {
        -                      "additionalProperties": {
        -                        "type": "number"
        -                      },
        -                      "type": "object"
        -                    },
        -                    "message": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "severity": {
        -                      "enum": [
        -                        "info",
        -                        "advisory",
        -                        "caution"
        -                      ],
        -                      "type": "string"
        -                    }
        -                  },
        -                  "required": [
        -                    "code",
        -                    "severity",
        -                    "message"
        -                  ],
        -                  "type": "object"
        -                },
        -                "type": "array"
        -              }
        -            },
        -            "required": [
        -              "assembly_slug",
        -              "standard",
        -              "parameters_used",
        -              "boq_rows",
        -              "totals_summary",
        -              "text_summary"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      },
        -      "error": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        -            "properties": {
        -              "code": {
        -                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        -                "enum": [
        -                  "RATE_LIMIT_EXCEEDED",
        -                  "TIER_INSUFFICIENT",
        -                  "INVALID_INPUT",
        -                  "SCHEMA_VERSION_MISMATCH",
        -                  "SCHEMA_INVARIANT_VIOLATION",
        -                  "UPSTREAM_TIMEOUT",
        -                  "BACKEND_FAILURE",
        -                  "IP_BLOCKED",
        -                  "RESOURCE_NOT_FOUND",
        -                  "RENDER_FAILURE",
        -                  "OCR_LOW_CONFIDENCE",
        -                  "MANUAL_REVIEW_REQUIRED",
        -                  "ACCEPTANCE_REQUIRED",
        -                  "INVALID_TOKEN"
        -                ],
        -                "type": "string"
        -              },
        -              "details": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "message": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "recoverable": {
        -                "type": "boolean"
        -              },
        -              "retry_after_seconds": {
        -                "anyOf": [
        -                  {
        -                    "minimum": 0,
        -                    "type": "integer"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              }
        -            },
        -            "required": [
        -              "code",
        -              "message",
        -              "recoverable"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      }
        -    },
        -    "required": [
        -      "_meta"
        -    ],
        -    "type": "object"
        -  },
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "_meta": {
        -        "additionalProperties": false,
        -        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        -        "properties": {
        -          "deliverables": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        -                "properties": {
        -                  "docx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "dxf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "expires_at": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  },
        -                  "pdf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "xlsx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "expires_at"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "document_id": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "issued_at": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "output_mode": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Surfaces what a trimmed ``output_mode`` withheld from ``data``.\n\nA trimmed mode (``summary`` / ``boq`` / ``boq_with_backup``) withholds\nalready-computed fields to keep the chat payload small. The withheld value\nreads to a client agent as \"capability missing\" (the box-culvert \"geometry\nbuilder isn't firing\" scare) rather than \"pared for size\": ``drawing`` and\n``audit_trail`` appear as ``null``, ``boq_rows`` as an empty list ``[]``\n(its type forbids ``null``) — both indistinguishable from a genuine absent\nresult. This names the withheld fields and the exact mode that brings each\nback, so the value is unambiguous. Absent on the default ``full_json`` mode\n— nothing is withheld, nothing to point at.",
        -                "properties": {
        -                  "mode": {
        -                    "enum": [
        -                      "summary",
        -                      "boq",
        -                      "boq_with_backup"
        -                    ],
        -                    "type": "string"
        -                  },
        -                  "omitted_fields": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "minItems": 1,
        -                    "type": "array"
        -                  },
        -                  "retrieve_with": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "mode",
        -                  "omitted_fields",
        -                  "retrieve_with"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "rate_limit_remaining": {
        -            "anyOf": [
        -              {
        -                "minimum": 0,
        -                "type": "integer"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "request_id": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "schema_version": {
        -            "const": "1.0.0",
        -            "default": "1.0.0",
        -            "type": "string"
        -          },
        -          "scope_boundary": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        -                "properties": {
        -                  "not_in_scope": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "produced": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "recommended_companions": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "type": "string"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "produced",
        -                  "not_in_scope"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tier": {
        -            "enum": [
        -              "free",
        -              "paid"
        -            ],
        -            "type": "string"
        -          },
        -          "tier_upgrade": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        -                "properties": {
        -                  "available_tiers": {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        -                      "properties": {
        -                        "billing": {
        -                          "enum": [
        -                            "one_off",
        -                            "monthly",
        -                            "annual"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "currency": {
        -                          "enum": [
        -                            "GBP",
        -                            "SGD",
        -                            "EUR",
        -                            "USD",
        -                            "CAD",
        -                            "AUD",
        -                            "NZD",
        -                            "MYR"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "display_name": {
        -                          "type": "string"
        -                        },
        -                        "price_local": {
        -                          "type": "number"
        -                        },
        -                        "tier_slug": {
        -                          "enum": [
        -                            "7_day_pass",
        -                            "solo",
        -                            "studio",
        -                            "practice"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "unlock_summary": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "tier_slug",
        -                        "display_name",
        -                        "price_local",
        -                        "currency",
        -                        "billing",
        -                        "unlock_summary"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "current_tier": {
        -                    "const": "free",
        -                    "default": "free",
        -                    "type": "string"
        -                  },
        -                  "pass_credit": {
        -                    "anyOf": [
        -                      {
        -                        "additionalProperties": false,
        -                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        -                        "properties": {
        -                          "amount_local": {
        -                            "type": "number"
        -                          },
        -                          "applies_to": {
        -                            "const": "solo_first_month",
        -                            "default": "solo_first_month",
        -                            "type": "string"
        -                          },
        -                          "currency": {
        -                            "type": "string"
        -                          },
        -                          "redeemable_until": {
        -                            "type": "string"
        -                          }
        -                        },
        -                        "required": [
        -                          "amount_local",
        -                          "currency",
        -                          "redeemable_until"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "pricing_url": {
        -                    "default": "https://civilquants.com/pricing",
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "available_tiers"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tos_url": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "upgrade_hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "warranty_disclaimer": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          }
        -        },
        -        "required": [
        -          "request_id",
        -          "issued_at",
        -          "tier"
        -        ],
        -        "type": "object"
        -      },
        -      "data": {
        -        "default": null,
        -        "title": "Data"
        -      },
        -      "error": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        -            "properties": {
        -              "code": {
        -                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        -                "enum": [
        -                  "RATE_LIMIT_EXCEEDED",
        -                  "TIER_INSUFFICIENT",
        -                  "INVALID_INPUT",
        -                  "SCHEMA_VERSION_MISMATCH",
        -                  "SCHEMA_INVARIANT_VIOLATION",
        -                  "UPSTREAM_TIMEOUT",
        -                  "BACKEND_FAILURE",
        -                  "IP_BLOCKED",
        -                  "RESOURCE_NOT_FOUND",
        -                  "RENDER_FAILURE",
        -                  "OCR_LOW_CONFIDENCE",
        -                  "MANUAL_REVIEW_REQUIRED",
        -                  "ACCEPTANCE_REQUIRED",
        -                  "INVALID_TOKEN"
        -                ],
        -                "type": "string"
        -              },
        -              "details": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "message": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "recoverable": {
        -                "type": "boolean"
        -              },
        -              "retry_after_seconds": {
        -                "anyOf": [
        -                  {
        -                    "minimum": 0,
        -                    "type": "integer"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              }
        -            },
        -            "required": [
        -              "code",
        -              "message",
        -              "recoverable"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      }
        -    },
        -    "required": [
        -      "_meta"
        -    ],
        -    "type": "object"
        -  }
        -]New value: +[
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "_meta": {
        +        "additionalProperties": false,
        +        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        +        "properties": {
        +          "deliverables": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        +                "properties": {
        +                  "docx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "dxf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "expires_at": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  },
        +                  "pdf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "xlsx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "expires_at"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "document_id": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "issued_at": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "output_mode": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Surfaces what a trimmed ``output_mode`` withheld from ``data``.\n\nA trimmed mode (``summary`` / ``material_schedule`` / ``boq`` /\n``boq_with_backup``) withholds\nalready-computed fields to keep the chat payload small. The withheld value\nreads to a client agent as \"capability missing\" (the box-culvert \"geometry\nbuilder isn't firing\" scare) rather than \"pared for size\": ``drawing`` and\n``audit_trail`` appear as ``null``, ``boq_rows`` as an empty list ``[]``\n(its type forbids ``null``) — both indistinguishable from a genuine absent\nresult. This names the withheld fields and the exact mode that brings each\nback, so the value is unambiguous. Absent on the default ``full_json`` mode\n— nothing is withheld, nothing to point at.",
        +                "properties": {
        +                  "mode": {
        +                    "enum": [
        +                      "summary",
        +                      "material_schedule",
        +                      "boq",
        +                      "boq_with_backup"
        +                    ],
        +                    "type": "string"
        +                  },
        +                  "omitted_fields": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "minItems": 1,
        +                    "type": "array"
        +                  },
        +                  "retrieve_with": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "mode",
        +                  "omitted_fields",
        +                  "retrieve_with"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "rate_limit_remaining": {
        +            "anyOf": [
        +              {
        +                "minimum": 0,
        +                "type": "integer"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "request_id": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "schema_version": {
        +            "const": "1.0.0",
        +            "default": "1.0.0",
        +            "type": "string"
        +          },
        +          "scope_boundary": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        +                "properties": {
        +                  "not_in_scope": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "produced": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "recommended_companions": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "type": "string"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "produced",
        +                  "not_in_scope"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tier": {
        +            "enum": [
        +              "free",
        +              "paid"
        +            ],
        +            "type": "string"
        +          },
        +          "tier_upgrade": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        +                "properties": {
        +                  "available_tiers": {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        +                      "properties": {
        +                        "billing": {
        +                          "enum": [
        +                            "one_off",
        +                            "monthly",
        +                            "annual"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "currency": {
        +                          "enum": [
        +                            "GBP",
        +                            "SGD",
        +                            "EUR",
        +                            "USD",
        +                            "CAD",
        +                            "AUD",
        +                            "NZD",
        +                            "MYR"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "display_name": {
        +                          "type": "string"
        +                        },
        +                        "price_local": {
        +                          "type": "number"
        +                        },
        +                        "tier_slug": {
        +                          "enum": [
        +                            "7_day_pass",
        +                            "solo",
        +                            "studio",
        +                            "practice"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "unlock_summary": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "tier_slug",
        +                        "display_name",
        +                        "price_local",
        +                        "currency",
        +                        "billing",
        +                        "unlock_summary"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "current_tier": {
        +                    "const": "free",
        +                    "default": "free",
        +                    "type": "string"
        +                  },
        +                  "pass_credit": {
        +                    "anyOf": [
        +                      {
        +                        "additionalProperties": false,
        +                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        +                        "properties": {
        +                          "amount_local": {
        +                            "type": "number"
        +                          },
        +                          "applies_to": {
        +                            "const": "solo_first_month",
        +                            "default": "solo_first_month",
        +                            "type": "string"
        +                          },
        +                          "currency": {
        +                            "type": "string"
        +                          },
        +                          "redeemable_until": {
        +                            "type": "string"
        +                          }
        +                        },
        +                        "required": [
        +                          "amount_local",
        +                          "currency",
        +                          "redeemable_until"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "pricing_url": {
        +                    "default": "https://civilquants.com/pricing",
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "available_tiers"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tos_url": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "upgrade_hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "warranty_disclaimer": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          }
        +        },
        +        "required": [
        +          "request_id",
        +          "issued_at",
        +          "tier"
        +        ],
        +        "type": "object"
        +      },
        +      "data": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Schema § 1.1 — the typed payload returned inside `MCPResponse[ComputeResult]`.\n\nFree-tier responses omit `drawings` (the downloadable CAD artefact\npointers — the paid differentiator); the bridge enforces this. The\n`audit_trail` and the inline `drawing` preview are present on BOTH tiers\n(V1 ALIGN / 60th-fire D + C). `text_summary` is bounded to 2000 chars —\nkeeps the LLM-facing summary token-cheap and forces longer narrative into\nBoQ row descriptions where it belongs. `warnings` is the non-fatal\ngeometry advisory list (both tiers).",
        +            "properties": {
        +              "assembly_slug": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "audit_trail": {
        +                "anyOf": [
        +                  {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.7 — paid-tier audit-trail entry.\n\nOne entry per BoQ row; `boq_row_index` ties to the row position in\n`ComputeResult.boq_rows`. `derivation` is the human-readable formula\nwalk-through; `formula` is the optional formal expression.",
        +                      "properties": {
        +                        "boq_row_index": {
        +                          "minimum": 0,
        +                          "type": "integer"
        +                        },
        +                        "derivation": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "formula": {
        +                          "anyOf": [
        +                            {
        +                              "type": "string"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ],
        +                          "default": null
        +                        },
        +                        "id": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "parameters_referenced": {
        +                          "items": {
        +                            "type": "string"
        +                          },
        +                          "type": "array"
        +                        }
        +                      },
        +                      "required": [
        +                        "id",
        +                        "boq_row_index",
        +                        "derivation"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "boq_rows": {
        +                "items": {
        +                  "additionalProperties": false,
        +                  "description": "Schema § 1.3 — a single bill row in the requested standard's format.\n\n`description` is the non-verbatim functional description per spec § 13.9 /\n§ 15 invariant — NEVER reproduces a standard's verbatim clause text.\n`rate` / `amount` ship null because rates are commodity data the customer\nowns; the engine's job is the measurement, not the pricing.",
        +                  "properties": {
        +                    "amount": {
        +                      "anyOf": [
        +                        {
        +                          "type": "number"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "attribution": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "audit_id": {
        +                      "anyOf": [
        +                        {
        +                          "type": "string"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "description": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "quantity": {
        +                      "minimum": 0,
        +                      "type": "number"
        +                    },
        +                    "rate": {
        +                      "anyOf": [
        +                        {
        +                          "type": "number"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "unit": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "work_section": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    }
        +                  },
        +                  "required": [
        +                    "work_section",
        +                    "description",
        +                    "quantity",
        +                    "unit",
        +                    "attribution"
        +                  ],
        +                  "type": "object"
        +                },
        +                "type": "array"
        +              },
        +              "drawing": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": false,
        +                    "description": "Schema § 1.6a — inline server-rendered SVG preview of the geometry.\n\nThe MCP mirror of the web ``/compute`` response's ``drawing`` field\n(``api.schemas.compute.DrawingRef``): the same on-screen dimensioned\ndrawing both tiers see in the workspace, surfaced on the MCP compute\nresponse so a chat client can render it inline (60th-fire item C). This\nis the on-screen preview — present on BOTH tiers per the free/paid\nboundary; the downloadable CAD artefacts (DXF / dimensioned PDF) remain\nthe paid differentiator via the export tools.\n\nDefined here rather than importing ``DrawingRef`` because the web\n``schemas`` package imports back into this module (``schemas.render``),\nso reusing it would create an import cycle — the MCP wire contract keeps\nits own copy, the same pattern as ``BoQRow`` / ``DrawingReference``.",
        +                    "properties": {
        +                      "entity_count": {
        +                        "minimum": 0,
        +                        "type": "integer"
        +                      },
        +                      "svg_b64": {
        +                        "minLength": 1,
        +                        "type": "string"
        +                      },
        +                      "unit_of_drawing": {
        +                        "const": "m",
        +                        "default": "m",
        +                        "type": "string"
        +                      },
        +                      "viewbox_height": {
        +                        "exclusiveMinimum": 0,
        +                        "type": "number"
        +                      },
        +                      "viewbox_width": {
        +                        "exclusiveMinimum": 0,
        +                        "type": "number"
        +                      },
        +                      "viewbox_x": {
        +                        "type": "number"
        +                      },
        +                      "viewbox_y": {
        +                        "type": "number"
        +                      }
        +                    },
        +                    "required": [
        +                      "svg_b64",
        +                      "viewbox_x",
        +                      "viewbox_y",
        +                      "viewbox_width",
        +                      "viewbox_height",
        +                      "entity_count"
        +                    ],
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "drawings": {
        +                "anyOf": [
        +                  {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.6 — paid-tier drawing artefact pointer.\n\n`url` is an R2-signed URL; expiry is carried in `_meta.deliverables.expires_at`\non the envelope (not duplicated here). `layers` is DXF-only; PDF/SVG\ncallers omit it.",
        +                      "properties": {
        +                        "drawing_type": {
        +                          "enum": [
        +                            "section",
        +                            "plan",
        +                            "elevation",
        +                            "isometric",
        +                            "detail"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "format": {
        +                          "enum": [
        +                            "DXF",
        +                            "PDF",
        +                            "SVG"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "layers": {
        +                          "anyOf": [
        +                            {
        +                              "items": {
        +                                "type": "string"
        +                              },
        +                              "type": "array"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ],
        +                          "default": null
        +                        },
        +                        "scale": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "sheet_size": {
        +                          "enum": [
        +                            "A1",
        +                            "A2",
        +                            "A3",
        +                            "A4"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "url": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "drawing_type",
        +                        "format",
        +                        "url",
        +                        "sheet_size",
        +                        "scale"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "parameters_used": {
        +                "additionalProperties": false,
        +                "description": "Schema § 1.2 — the parameter snapshot the engine actually used.\n\nSplits user-supplied values from engine defaults so customers can see\nwhich numbers came from them and which the engine filled in. Every\ndefaulted parameter SHOULD have a corresponding entry in `assumptions`\n— the bridge layer enforces this when wrapping engine output.",
        +                "properties": {
        +                  "assumptions": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "engine_defaults": {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  "user_supplied": {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  }
        +                },
        +                "type": "object"
        +              },
        +              "standard": {
        +                "enum": [
        +                  "CESMM4",
        +                  "NRM2",
        +                  "SMM7",
        +                  "MMHW"
        +                ],
        +                "type": "string"
        +              },
        +              "text_summary": {
        +                "maxLength": 2000,
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "totals_summary": {
        +                "additionalProperties": false,
        +                "description": "Schema § 1.4 — totals_summary as a typed wrapper around the free-form dict.\n\nWire shape is a flat object (`{\"concrete_m3\": {...}, \"rebar_t\": {...}}`).\nWe model it as `RootModel`-equivalent via `model_config(extra=\"allow\")`\n+ a single `__root__`-style `entries` dict. Pydantic v2 recommends\n`RootModel` for free-form roots; using a wrapper class keeps the import\nsurface uniform with the rest of this module.",
        +                "properties": {
        +                  "entries": {
        +                    "additionalProperties": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.4 — single material/work-class total entry.",
        +                      "properties": {
        +                        "quantity": {
        +                          "minimum": 0,
        +                          "type": "number"
        +                        },
        +                        "unit": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "quantity",
        +                        "unit"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "object"
        +                  }
        +                },
        +                "type": "object"
        +              },
        +              "warnings": {
        +                "items": {
        +                  "additionalProperties": false,
        +                  "description": "Schema § 1.8 — a non-fatal geometry advisory (56th-fire T2).\n\nThe wire projection of the engine's `core.GeometryWarning`. Advisory only:\na warning NEVER changes a measured quantity — it flags geometry that is\nvalid but likely a mistake (e.g. a stale dependent-height default). Present\non BOTH tiers — a correctness/safety signal, not a paid feature.",
        +                  "properties": {
        +                    "affected_params": {
        +                      "items": {
        +                        "type": "string"
        +                      },
        +                      "type": "array"
        +                    },
        +                    "code": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "detail": {
        +                      "additionalProperties": {
        +                        "type": "number"
        +                      },
        +                      "type": "object"
        +                    },
        +                    "message": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "severity": {
        +                      "enum": [
        +                        "info",
        +                        "advisory",
        +                        "caution"
        +                      ],
        +                      "type": "string"
        +                    }
        +                  },
        +                  "required": [
        +                    "code",
        +                    "severity",
        +                    "message"
        +                  ],
        +                  "type": "object"
        +                },
        +                "type": "array"
        +              }
        +            },
        +            "required": [
        +              "assembly_slug",
        +              "standard",
        +              "parameters_used",
        +              "boq_rows",
        +              "totals_summary",
        +              "text_summary"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      },
        +      "error": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        +            "properties": {
        +              "code": {
        +                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        +                "enum": [
        +                  "RATE_LIMIT_EXCEEDED",
        +                  "TIER_INSUFFICIENT",
        +                  "INVALID_INPUT",
        +                  "SCHEMA_VERSION_MISMATCH",
        +                  "SCHEMA_INVARIANT_VIOLATION",
        +                  "UPSTREAM_TIMEOUT",
        +                  "BACKEND_FAILURE",
        +                  "IP_BLOCKED",
        +                  "RESOURCE_NOT_FOUND",
        +                  "RENDER_FAILURE",
        +                  "OCR_LOW_CONFIDENCE",
        +                  "MANUAL_REVIEW_REQUIRED",
        +                  "ACCEPTANCE_REQUIRED",
        +                  "INVALID_TOKEN"
        +                ],
        +                "type": "string"
        +              },
        +              "details": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "message": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "recoverable": {
        +                "type": "boolean"
        +              },
        +              "retry_after_seconds": {
        +                "anyOf": [
        +                  {
        +                    "minimum": 0,
        +                    "type": "integer"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              }
        +            },
        +            "required": [
        +              "code",
        +              "message",
        +              "recoverable"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      }
        +    },
        +    "required": [
        +      "_meta"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "_meta": {
        +        "additionalProperties": false,
        +        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        +        "properties": {
        +          "deliverables": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        +                "properties": {
        +                  "docx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "dxf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "expires_at": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  },
        +                  "pdf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "xlsx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "expires_at"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "document_id": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "issued_at": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "output_mode": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Surfaces what a trimmed ``output_mode`` withheld from ``data``.\n\nA trimmed mode (``summary`` / ``material_schedule`` / ``boq`` /\n``boq_with_backup``) withholds\nalready-computed fields to keep the chat payload small. The withheld value\nreads to a client agent as \"capability missing\" (the box-culvert \"geometry\nbuilder isn't firing\" scare) rather than \"pared for size\": ``drawing`` and\n``audit_trail`` appear as ``null``, ``boq_rows`` as an empty list ``[]``\n(its type forbids ``null``) — both indistinguishable from a genuine absent\nresult. This names the withheld fields and the exact mode that brings each\nback, so the value is unambiguous. Absent on the default ``full_json`` mode\n— nothing is withheld, nothing to point at.",
        +                "properties": {
        +                  "mode": {
        +                    "enum": [
        +                      "summary",
        +                      "material_schedule",
        +                      "boq",
        +                      "boq_with_backup"
        +                    ],
        +                    "type": "string"
        +                  },
        +                  "omitted_fields": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "minItems": 1,
        +                    "type": "array"
        +                  },
        +                  "retrieve_with": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "mode",
        +                  "omitted_fields",
        +                  "retrieve_with"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "rate_limit_remaining": {
        +            "anyOf": [
        +              {
        +                "minimum": 0,
        +                "type": "integer"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "request_id": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "schema_version": {
        +            "const": "1.0.0",
        +            "default": "1.0.0",
        +            "type": "string"
        +          },
        +          "scope_boundary": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        +                "properties": {
        +                  "not_in_scope": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "produced": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "recommended_companions": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "type": "string"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "produced",
        +                  "not_in_scope"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tier": {
        +            "enum": [
        +              "free",
        +              "paid"
        +            ],
        +            "type": "string"
        +          },
        +          "tier_upgrade": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        +                "properties": {
        +                  "available_tiers": {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        +                      "properties": {
        +                        "billing": {
        +                          "enum": [
        +                            "one_off",
        +                            "monthly",
        +                            "annual"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "currency": {
        +                          "enum": [
        +                            "GBP",
        +                            "SGD",
        +                            "EUR",
        +                            "USD",
        +                            "CAD",
        +                            "AUD",
        +                            "NZD",
        +                            "MYR"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "display_name": {
        +                          "type": "string"
        +                        },
        +                        "price_local": {
        +                          "type": "number"
        +                        },
        +                        "tier_slug": {
        +                          "enum": [
        +                            "7_day_pass",
        +                            "solo",
        +                            "studio",
        +                            "practice"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "unlock_summary": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "tier_slug",
        +                        "display_name",
        +                        "price_local",
        +                        "currency",
        +                        "billing",
        +                        "unlock_summary"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "current_tier": {
        +                    "const": "free",
        +                    "default": "free",
        +                    "type": "string"
        +                  },
        +                  "pass_credit": {
        +                    "anyOf": [
        +                      {
        +                        "additionalProperties": false,
        +                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        +                        "properties": {
        +                          "amount_local": {
        +                            "type": "number"
        +                          },
        +                          "applies_to": {
        +                            "const": "solo_first_month",
        +                            "default": "solo_first_month",
        +                            "type": "string"
        +                          },
        +                          "currency": {
        +                            "type": "string"
        +                          },
        +                          "redeemable_until": {
        +                            "type": "string"
        +                          }
        +                        },
        +                        "required": [
        +                          "amount_local",
        +                          "currency",
        +                          "redeemable_until"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "pricing_url": {
        +                    "default": "https://civilquants.com/pricing",
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "available_tiers"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tos_url": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "upgrade_hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "warranty_disclaimer": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          }
        +        },
        +        "required": [
        +          "request_id",
        +          "issued_at",
        +          "tier"
        +        ],
        +        "type": "object"
        +      },
        +      "data": {
        +        "default": null,
        +        "title": "Data"
        +      },
        +      "error": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        +            "properties": {
        +              "code": {
        +                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        +                "enum": [
        +                  "RATE_LIMIT_EXCEEDED",
        +                  "TIER_INSUFFICIENT",
        +                  "INVALID_INPUT",
        +                  "SCHEMA_VERSION_MISMATCH",
        +                  "SCHEMA_INVARIANT_VIOLATION",
        +                  "UPSTREAM_TIMEOUT",
        +                  "BACKEND_FAILURE",
        +                  "IP_BLOCKED",
        +                  "RESOURCE_NOT_FOUND",
        +                  "RENDER_FAILURE",
        +                  "OCR_LOW_CONFIDENCE",
        +                  "MANUAL_REVIEW_REQUIRED",
        +                  "ACCEPTANCE_REQUIRED",
        +                  "INVALID_TOKEN"
        +                ],
        +                "type": "string"
        +              },
        +              "details": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "message": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "recoverable": {
        +                "type": "boolean"
        +              },
        +              "retry_after_seconds": {
        +                "anyOf": [
        +                  {
        +                    "minimum": 0,
        +                    "type": "integer"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              }
        +            },
        +            "required": [
        +              "code",
        +              "message",
        +              "recoverable"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      }
        +    },
        +    "required": [
        +      "_meta"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedcompute_multi_section_assembly1 field changed
      • changedOutput schema / properties / result / anyOf
        Previous value: -[
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "_meta": {
        -        "additionalProperties": false,
        -        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        -        "properties": {
        -          "deliverables": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        -                "properties": {
        -                  "docx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "dxf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "expires_at": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  },
        -                  "pdf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "xlsx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "expires_at"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "document_id": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "issued_at": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "output_mode": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Surfaces what a trimmed ``output_mode`` withheld from ``data``.\n\nA trimmed mode (``summary`` / ``boq`` / ``boq_with_backup``) withholds\nalready-computed fields to keep the chat payload small. The withheld value\nreads to a client agent as \"capability missing\" (the box-culvert \"geometry\nbuilder isn't firing\" scare) rather than \"pared for size\": ``drawing`` and\n``audit_trail`` appear as ``null``, ``boq_rows`` as an empty list ``[]``\n(its type forbids ``null``) — both indistinguishable from a genuine absent\nresult. This names the withheld fields and the exact mode that brings each\nback, so the value is unambiguous. Absent on the default ``full_json`` mode\n— nothing is withheld, nothing to point at.",
        -                "properties": {
        -                  "mode": {
        -                    "enum": [
        -                      "summary",
        -                      "boq",
        -                      "boq_with_backup"
        -                    ],
        -                    "type": "string"
        -                  },
        -                  "omitted_fields": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "minItems": 1,
        -                    "type": "array"
        -                  },
        -                  "retrieve_with": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "mode",
        -                  "omitted_fields",
        -                  "retrieve_with"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "rate_limit_remaining": {
        -            "anyOf": [
        -              {
        -                "minimum": 0,
        -                "type": "integer"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "request_id": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "schema_version": {
        -            "const": "1.0.0",
        -            "default": "1.0.0",
        -            "type": "string"
        -          },
        -          "scope_boundary": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        -                "properties": {
        -                  "not_in_scope": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "produced": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "recommended_companions": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "type": "string"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "produced",
        -                  "not_in_scope"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tier": {
        -            "enum": [
        -              "free",
        -              "paid"
        -            ],
        -            "type": "string"
        -          },
        -          "tier_upgrade": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        -                "properties": {
        -                  "available_tiers": {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        -                      "properties": {
        -                        "billing": {
        -                          "enum": [
        -                            "one_off",
        -                            "monthly",
        -                            "annual"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "currency": {
        -                          "enum": [
        -                            "GBP",
        -                            "SGD",
        -                            "EUR",
        -                            "USD",
        -                            "CAD",
        -                            "AUD",
        -                            "NZD",
        -                            "MYR"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "display_name": {
        -                          "type": "string"
        -                        },
        -                        "price_local": {
        -                          "type": "number"
        -                        },
        -                        "tier_slug": {
        -                          "enum": [
        -                            "7_day_pass",
        -                            "solo",
        -                            "studio",
        -                            "practice"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "unlock_summary": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "tier_slug",
        -                        "display_name",
        -                        "price_local",
        -                        "currency",
        -                        "billing",
        -                        "unlock_summary"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "current_tier": {
        -                    "const": "free",
        -                    "default": "free",
        -                    "type": "string"
        -                  },
        -                  "pass_credit": {
        -                    "anyOf": [
        -                      {
        -                        "additionalProperties": false,
        -                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        -                        "properties": {
        -                          "amount_local": {
        -                            "type": "number"
        -                          },
        -                          "applies_to": {
        -                            "const": "solo_first_month",
        -                            "default": "solo_first_month",
        -                            "type": "string"
        -                          },
        -                          "currency": {
        -                            "type": "string"
        -                          },
        -                          "redeemable_until": {
        -                            "type": "string"
        -                          }
        -                        },
        -                        "required": [
        -                          "amount_local",
        -                          "currency",
        -                          "redeemable_until"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "pricing_url": {
        -                    "default": "https://civilquants.com/pricing",
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "available_tiers"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tos_url": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "upgrade_hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "warranty_disclaimer": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          }
        -        },
        -        "required": [
        -          "request_id",
        -          "issued_at",
        -          "tier"
        -        ],
        -        "type": "object"
        -      },
        -      "data": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Aggregated + per-section result for a sectioned assembly run.",
        -            "properties": {
        -              "aggregated_boq_rows": {
        -                "items": {
        -                  "additionalProperties": false,
        -                  "description": "Schema § 1.3 — a single bill row in the requested standard's format.\n\n`description` is the non-verbatim functional description per spec § 13.9 /\n§ 15 invariant — NEVER reproduces a standard's verbatim clause text.\n`rate` / `amount` ship null because rates are commodity data the customer\nowns; the engine's job is the measurement, not the pricing.",
        -                  "properties": {
        -                    "amount": {
        -                      "anyOf": [
        -                        {
        -                          "type": "number"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "attribution": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "audit_id": {
        -                      "anyOf": [
        -                        {
        -                          "type": "string"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "description": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "quantity": {
        -                      "minimum": 0,
        -                      "type": "number"
        -                    },
        -                    "rate": {
        -                      "anyOf": [
        -                        {
        -                          "type": "number"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "unit": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "work_section": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    }
        -                  },
        -                  "required": [
        -                    "work_section",
        -                    "description",
        -                    "quantity",
        -                    "unit",
        -                    "attribution"
        -                  ],
        -                  "type": "object"
        -                },
        -                "type": "array"
        -              },
        -              "assembly_slug": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "parameters_used": {
        -                "additionalProperties": true,
        -                "type": "object"
        -              },
        -              "section_count": {
        -                "minimum": 1,
        -                "type": "integer"
        -              },
        -              "section_results": {
        -                "anyOf": [
        -                  {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.1 — the typed payload returned inside `MCPResponse[ComputeResult]`.\n\nFree-tier responses omit `drawings` (the downloadable CAD artefact\npointers — the paid differentiator); the bridge enforces this. The\n`audit_trail` and the inline `drawing` preview are present on BOTH tiers\n(V1 ALIGN / 60th-fire D + C). `text_summary` is bounded to 2000 chars —\nkeeps the LLM-facing summary token-cheap and forces longer narrative into\nBoQ row descriptions where it belongs. `warnings` is the non-fatal\ngeometry advisory list (both tiers).",
        -                      "properties": {
        -                        "assembly_slug": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "audit_trail": {
        -                          "anyOf": [
        -                            {
        -                              "items": {
        -                                "additionalProperties": false,
        -                                "description": "Schema § 1.7 — paid-tier audit-trail entry.\n\nOne entry per BoQ row; `boq_row_index` ties to the row position in\n`ComputeResult.boq_rows`. `derivation` is the human-readable formula\nwalk-through; `formula` is the optional formal expression.",
        -                                "properties": {
        -                                  "boq_row_index": {
        -                                    "minimum": 0,
        -                                    "type": "integer"
        -                                  },
        -                                  "derivation": {
        -                                    "minLength": 1,
        -                                    "type": "string"
        -                                  },
        -                                  "formula": {
        -                                    "anyOf": [
        -                                      {
        -                                        "type": "string"
        -                                      },
        -                                      {
        -                                        "type": "null"
        -                                      }
        -                                    ],
        -                                    "default": null
        -                                  },
        -                                  "id": {
        -                                    "minLength": 1,
        -                                    "type": "string"
        -                                  },
        -                                  "parameters_referenced": {
        -                                    "items": {
        -                                      "type": "string"
        -                                    },
        -                                    "type": "array"
        -                                  }
        -                                },
        -                                "required": [
        -                                  "id",
        -                                  "boq_row_index",
        -                                  "derivation"
        -                                ],
        -                                "type": "object"
        -                              },
        -                              "type": "array"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ],
        -                          "default": null
        -                        },
        -                        "boq_rows": {
        -                          "items": {
        -                            "additionalProperties": false,
        -                            "description": "Schema § 1.3 — a single bill row in the requested standard's format.\n\n`description` is the non-verbatim functional description per spec § 13.9 /\n§ 15 invariant — NEVER reproduces a standard's verbatim clause text.\n`rate` / `amount` ship null because rates are commodity data the customer\nowns; the engine's job is the measurement, not the pricing.",
        -                            "properties": {
        -                              "amount": {
        -                                "anyOf": [
        -                                  {
        -                                    "type": "number"
        -                                  },
        -                                  {
        -                                    "type": "null"
        -                                  }
        -                                ],
        -                                "default": null
        -                              },
        -                              "attribution": {
        -                                "minLength": 1,
        -                                "type": "string"
        -                              },
        -                              "audit_id": {
        -                                "anyOf": [
        -                                  {
        -                                    "type": "string"
        -                                  },
        -                                  {
        -                                    "type": "null"
        -                                  }
        -                                ],
        -                                "default": null
        -                              },
        -                              "description": {
        -                                "minLength": 1,
        -                                "type": "string"
        -                              },
        -                              "quantity": {
        -                                "minimum": 0,
        -                                "type": "number"
        -                              },
        -                              "rate": {
        -                                "anyOf": [
        -                                  {
        -                                    "type": "number"
        -                                  },
        -                                  {
        -                                    "type": "null"
        -                                  }
        -                                ],
        -                                "default": null
        -                              },
        -                              "unit": {
        -                                "minLength": 1,
        -                                "type": "string"
        -                              },
        -                              "work_section": {
        -                                "minLength": 1,
        -                                "type": "string"
        -                              }
        -                            },
        -                            "required": [
        -                              "work_section",
        -                              "description",
        -                              "quantity",
        -                              "unit",
        -                              "attribution"
        -                            ],
        -                            "type": "object"
        -                          },
        -                          "type": "array"
        -                        },
        -                        "drawing": {
        -                          "anyOf": [
        -                            {
        -                              "additionalProperties": false,
        -                              "description": "Schema § 1.6a — inline server-rendered SVG preview of the geometry.\n\nThe MCP mirror of the web ``/compute`` response's ``drawing`` field\n(``api.schemas.compute.DrawingRef``): the same on-screen dimensioned\ndrawing both tiers see in the workspace, surfaced on the MCP compute\nresponse so a chat client can render it inline (60th-fire item C). This\nis the on-screen preview — present on BOTH tiers per the free/paid\nboundary; the downloadable CAD artefacts (DXF / dimensioned PDF) remain\nthe paid differentiator via the export tools.\n\nDefined here rather than importing ``DrawingRef`` because the web\n``schemas`` package imports back into this module (``schemas.render``),\nso reusing it would create an import cycle — the MCP wire contract keeps\nits own copy, the same pattern as ``BoQRow`` / ``DrawingReference``.",
        -                              "properties": {
        -                                "entity_count": {
        -                                  "minimum": 0,
        -                                  "type": "integer"
        -                                },
        -                                "svg_b64": {
        -                                  "minLength": 1,
        -                                  "type": "string"
        -                                },
        -                                "unit_of_drawing": {
        -                                  "const": "m",
        -                                  "default": "m",
        -                                  "type": "string"
        -                                },
        -                                "viewbox_height": {
        -                                  "exclusiveMinimum": 0,
        -                                  "type": "number"
        -                                },
        -                                "viewbox_width": {
        -                                  "exclusiveMinimum": 0,
        -                                  "type": "number"
        -                                },
        -                                "viewbox_x": {
        -                                  "type": "number"
        -                                },
        -                                "viewbox_y": {
        -                                  "type": "number"
        -                                }
        -                              },
        -                              "required": [
        -                                "svg_b64",
        -                                "viewbox_x",
        -                                "viewbox_y",
        -                                "viewbox_width",
        -                                "viewbox_height",
        -                                "entity_count"
        -                              ],
        -                              "type": "object"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ],
        -                          "default": null
        -                        },
        -                        "drawings": {
        -                          "anyOf": [
        -                            {
        -                              "items": {
        -                                "additionalProperties": false,
        -                                "description": "Schema § 1.6 — paid-tier drawing artefact pointer.\n\n`url` is an R2-signed URL; expiry is carried in `_meta.deliverables.expires_at`\non the envelope (not duplicated here). `layers` is DXF-only; PDF/SVG\ncallers omit it.",
        -                                "properties": {
        -                                  "drawing_type": {
        -                                    "enum": [
        -                                      "section",
        -                                      "plan",
        -                                      "elevation",
        -                                      "isometric",
        -                                      "detail"
        -                                    ],
        -                                    "type": "string"
        -                                  },
        -                                  "format": {
        -                                    "enum": [
        -                                      "DXF",
        -                                      "PDF",
        -                                      "SVG"
        -                                    ],
        -                                    "type": "string"
        -                                  },
        -                                  "layers": {
        -                                    "anyOf": [
        -                                      {
        -                                        "items": {
        -                                          "type": "string"
        -                                        },
        -                                        "type": "array"
        -                                      },
        -                                      {
        -                                        "type": "null"
        -                                      }
        -                                    ],
        -                                    "default": null
        -                                  },
        -                                  "scale": {
        -                                    "minLength": 1,
        -                                    "type": "string"
        -                                  },
        -                                  "sheet_size": {
        -                                    "enum": [
        -                                      "A1",
        -                                      "A2",
        -                                      "A3",
        -                                      "A4"
        -                                    ],
        -                                    "type": "string"
        -                                  },
        -                                  "url": {
        -                                    "minLength": 1,
        -                                    "type": "string"
        -                                  }
        -                                },
        -                                "required": [
        -                                  "drawing_type",
        -                                  "format",
        -                                  "url",
        -                                  "sheet_size",
        -                                  "scale"
        -                                ],
        -                                "type": "object"
        -                              },
        -                              "type": "array"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ],
        -                          "default": null
        -                        },
        -                        "parameters_used": {
        -                          "additionalProperties": false,
        -                          "description": "Schema § 1.2 — the parameter snapshot the engine actually used.\n\nSplits user-supplied values from engine defaults so customers can see\nwhich numbers came from them and which the engine filled in. Every\ndefaulted parameter SHOULD have a corresponding entry in `assumptions`\n— the bridge layer enforces this when wrapping engine output.",
        -                          "properties": {
        -                            "assumptions": {
        -                              "items": {
        -                                "type": "string"
        -                              },
        -                              "type": "array"
        -                            },
        -                            "engine_defaults": {
        -                              "additionalProperties": true,
        -                              "type": "object"
        -                            },
        -                            "user_supplied": {
        -                              "additionalProperties": true,
        -                              "type": "object"
        -                            }
        -                          },
        -                          "type": "object"
        -                        },
        -                        "standard": {
        -                          "enum": [
        -                            "CESMM4",
        -                            "NRM2",
        -                            "SMM7",
        -                            "MMHW"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "text_summary": {
        -                          "maxLength": 2000,
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "totals_summary": {
        -                          "additionalProperties": false,
        -                          "description": "Schema § 1.4 — totals_summary as a typed wrapper around the free-form dict.\n\nWire shape is a flat object (`{\"concrete_m3\": {...}, \"rebar_t\": {...}}`).\nWe model it as `RootModel`-equivalent via `model_config(extra=\"allow\")`\n+ a single `__root__`-style `entries` dict. Pydantic v2 recommends\n`RootModel` for free-form roots; using a wrapper class keeps the import\nsurface uniform with the rest of this module.",
        -                          "properties": {
        -                            "entries": {
        -                              "additionalProperties": {
        -                                "additionalProperties": false,
        -                                "description": "Schema § 1.4 — single material/work-class total entry.",
        -                                "properties": {
        -                                  "quantity": {
        -                                    "minimum": 0,
        -                                    "type": "number"
        -                                  },
        -                                  "unit": {
        -                                    "minLength": 1,
        -                                    "type": "string"
        -                                  }
        -                                },
        -                                "required": [
        -                                  "quantity",
        -                                  "unit"
        -                                ],
        -                                "type": "object"
        -                              },
        -                              "type": "object"
        -                            }
        -                          },
        -                          "type": "object"
        -                        },
        -                        "warnings": {
        -                          "items": {
        -                            "additionalProperties": false,
        -                            "description": "Schema § 1.8 — a non-fatal geometry advisory (56th-fire T2).\n\nThe wire projection of the engine's `core.GeometryWarning`. Advisory only:\na warning NEVER changes a measured quantity — it flags geometry that is\nvalid but likely a mistake (e.g. a stale dependent-height default). Present\non BOTH tiers — a correctness/safety signal, not a paid feature.",
        -                            "properties": {
        -                              "affected_params": {
        -                                "items": {
        -                                  "type": "string"
        -                                },
        -                                "type": "array"
        -                              },
        -                              "code": {
        -                                "minLength": 1,
        -                                "type": "string"
        -                              },
        -                              "detail": {
        -                                "additionalProperties": {
        -                                  "type": "number"
        -                                },
        -                                "type": "object"
        -                              },
        -                              "message": {
        -                                "minLength": 1,
        -                                "type": "string"
        -                              },
        -                              "severity": {
        -                                "enum": [
        -                                  "info",
        -                                  "advisory",
        -                                  "caution"
        -                                ],
        -                                "type": "string"
        -                              }
        -                            },
        -                            "required": [
        -                              "code",
        -                              "severity",
        -                              "message"
        -                            ],
        -                            "type": "object"
        -                          },
        -                          "type": "array"
        -                        }
        -                      },
        -                      "required": [
        -                        "assembly_slug",
        -                        "standard",
        -                        "parameters_used",
        -                        "boq_rows",
        -                        "totals_summary",
        -                        "text_summary"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "section_summary": {
        -                "items": {
        -                  "additionalProperties": false,
        -                  "description": "Cheap always-on per-section line: label + run length + totals.",
        -                  "properties": {
        -                    "label": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "run_length": {
        -                      "anyOf": [
        -                        {
        -                          "type": "number"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "totals_summary": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.4 — totals_summary as a typed wrapper around the free-form dict.\n\nWire shape is a flat object (`{\"concrete_m3\": {...}, \"rebar_t\": {...}}`).\nWe model it as `RootModel`-equivalent via `model_config(extra=\"allow\")`\n+ a single `__root__`-style `entries` dict. Pydantic v2 recommends\n`RootModel` for free-form roots; using a wrapper class keeps the import\nsurface uniform with the rest of this module.",
        -                      "properties": {
        -                        "entries": {
        -                          "additionalProperties": {
        -                            "additionalProperties": false,
        -                            "description": "Schema § 1.4 — single material/work-class total entry.",
        -                            "properties": {
        -                              "quantity": {
        -                                "minimum": 0,
        -                                "type": "number"
        -                              },
        -                              "unit": {
        -                                "minLength": 1,
        -                                "type": "string"
        -                              }
        -                            },
        -                            "required": [
        -                              "quantity",
        -                              "unit"
        -                            ],
        -                            "type": "object"
        -                          },
        -                          "type": "object"
        -                        }
        -                      },
        -                      "type": "object"
        -                    }
        -                  },
        -                  "required": [
        -                    "label",
        -                    "totals_summary"
        -                  ],
        -                  "type": "object"
        -                },
        -                "type": "array"
        -              },
        -              "standard": {
        -                "enum": [
        -                  "CESMM4",
        -                  "NRM2",
        -                  "SMM7",
        -                  "MMHW"
        -                ],
        -                "type": "string"
        -              },
        -              "warnings": {
        -                "items": {
        -                  "additionalProperties": false,
        -                  "description": "A section-labelled geometry/advisory warning.",
        -                  "properties": {
        -                    "section_label": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "warning": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.8 — a non-fatal geometry advisory (56th-fire T2).\n\nThe wire projection of the engine's `core.GeometryWarning`. Advisory only:\na warning NEVER changes a measured quantity — it flags geometry that is\nvalid but likely a mistake (e.g. a stale dependent-height default). Present\non BOTH tiers — a correctness/safety signal, not a paid feature.",
        -                      "properties": {
        -                        "affected_params": {
        -                          "items": {
        -                            "type": "string"
        -                          },
        -                          "type": "array"
        -                        },
        -                        "code": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "detail": {
        -                          "additionalProperties": {
        -                            "type": "number"
        -                          },
        -                          "type": "object"
        -                        },
        -                        "message": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "severity": {
        -                          "enum": [
        -                            "info",
        -                            "advisory",
        -                            "caution"
        -                          ],
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "code",
        -                        "severity",
        -                        "message"
        -                      ],
        -                      "type": "object"
        -                    }
        -                  },
        -                  "required": [
        -                    "section_label",
        -                    "warning"
        -                  ],
        -                  "type": "object"
        -                },
        -                "type": "array"
        -              }
        -            },
        -            "required": [
        -              "assembly_slug",
        -              "standard",
        -              "section_count",
        -              "section_summary",
        -              "aggregated_boq_rows"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      },
        -      "error": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        -            "properties": {
        -              "code": {
        -                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        -                "enum": [
        -                  "RATE_LIMIT_EXCEEDED",
        -                  "TIER_INSUFFICIENT",
        -                  "INVALID_INPUT",
        -                  "SCHEMA_VERSION_MISMATCH",
        -                  "SCHEMA_INVARIANT_VIOLATION",
        -                  "UPSTREAM_TIMEOUT",
        -                  "BACKEND_FAILURE",
        -                  "IP_BLOCKED",
        -                  "RESOURCE_NOT_FOUND",
        -                  "RENDER_FAILURE",
        -                  "OCR_LOW_CONFIDENCE",
        -                  "MANUAL_REVIEW_REQUIRED",
        -                  "ACCEPTANCE_REQUIRED",
        -                  "INVALID_TOKEN"
        -                ],
        -                "type": "string"
        -              },
        -              "details": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "message": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "recoverable": {
        -                "type": "boolean"
        -              },
        -              "retry_after_seconds": {
        -                "anyOf": [
        -                  {
        -                    "minimum": 0,
        -                    "type": "integer"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              }
        -            },
        -            "required": [
        -              "code",
        -              "message",
        -              "recoverable"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      }
        -    },
        -    "required": [
        -      "_meta"
        -    ],
        -    "type": "object"
        -  },
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "_meta": {
        -        "additionalProperties": false,
        -        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        -        "properties": {
        -          "deliverables": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        -                "properties": {
        -                  "docx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "dxf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "expires_at": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  },
        -                  "pdf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "xlsx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "expires_at"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "document_id": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "issued_at": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "output_mode": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Surfaces what a trimmed ``output_mode`` withheld from ``data``.\n\nA trimmed mode (``summary`` / ``boq`` / ``boq_with_backup``) withholds\nalready-computed fields to keep the chat payload small. The withheld value\nreads to a client agent as \"capability missing\" (the box-culvert \"geometry\nbuilder isn't firing\" scare) rather than \"pared for size\": ``drawing`` and\n``audit_trail`` appear as ``null``, ``boq_rows`` as an empty list ``[]``\n(its type forbids ``null``) — both indistinguishable from a genuine absent\nresult. This names the withheld fields and the exact mode that brings each\nback, so the value is unambiguous. Absent on the default ``full_json`` mode\n— nothing is withheld, nothing to point at.",
        -                "properties": {
        -                  "mode": {
        -                    "enum": [
        -                      "summary",
        -                      "boq",
        -                      "boq_with_backup"
        -                    ],
        -                    "type": "string"
        -                  },
        -                  "omitted_fields": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "minItems": 1,
        -                    "type": "array"
        -                  },
        -                  "retrieve_with": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "mode",
        -                  "omitted_fields",
        -                  "retrieve_with"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "rate_limit_remaining": {
        -            "anyOf": [
        -              {
        -                "minimum": 0,
        -                "type": "integer"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "request_id": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "schema_version": {
        -            "const": "1.0.0",
        -            "default": "1.0.0",
        -            "type": "string"
        -          },
        -          "scope_boundary": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        -                "properties": {
        -                  "not_in_scope": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "produced": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "recommended_companions": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "type": "string"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "produced",
        -                  "not_in_scope"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tier": {
        -            "enum": [
        -              "free",
        -              "paid"
        -            ],
        -            "type": "string"
        -          },
        -          "tier_upgrade": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        -                "properties": {
        -                  "available_tiers": {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        -                      "properties": {
        -                        "billing": {
        -                          "enum": [
        -                            "one_off",
        -                            "monthly",
        -                            "annual"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "currency": {
        -                          "enum": [
        -                            "GBP",
        -                            "SGD",
        -                            "EUR",
        -                            "USD",
        -                            "CAD",
        -                            "AUD",
        -                            "NZD",
        -                            "MYR"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "display_name": {
        -                          "type": "string"
        -                        },
        -                        "price_local": {
        -                          "type": "number"
        -                        },
        -                        "tier_slug": {
        -                          "enum": [
        -                            "7_day_pass",
        -                            "solo",
        -                            "studio",
        -                            "practice"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "unlock_summary": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "tier_slug",
        -                        "display_name",
        -                        "price_local",
        -                        "currency",
        -                        "billing",
        -                        "unlock_summary"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "current_tier": {
        -                    "const": "free",
        -                    "default": "free",
        -                    "type": "string"
        -                  },
        -                  "pass_credit": {
        -                    "anyOf": [
        -                      {
        -                        "additionalProperties": false,
        -                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        -                        "properties": {
        -                          "amount_local": {
        -                            "type": "number"
        -                          },
        -                          "applies_to": {
        -                            "const": "solo_first_month",
        -                            "default": "solo_first_month",
        -                            "type": "string"
        -                          },
        -                          "currency": {
        -                            "type": "string"
        -                          },
        -                          "redeemable_until": {
        -                            "type": "string"
        -                          }
        -                        },
        -                        "required": [
        -                          "amount_local",
        -                          "currency",
        -                          "redeemable_until"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "pricing_url": {
        -                    "default": "https://civilquants.com/pricing",
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "available_tiers"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tos_url": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "upgrade_hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "warranty_disclaimer": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          }
        -        },
        -        "required": [
        -          "request_id",
        -          "issued_at",
        -          "tier"
        -        ],
        -        "type": "object"
        -      },
        -      "data": {
        -        "default": null,
        -        "title": "Data"
        -      },
        -      "error": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        -            "properties": {
        -              "code": {
        -                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        -                "enum": [
        -                  "RATE_LIMIT_EXCEEDED",
        -                  "TIER_INSUFFICIENT",
        -                  "INVALID_INPUT",
        -                  "SCHEMA_VERSION_MISMATCH",
        -                  "SCHEMA_INVARIANT_VIOLATION",
        -                  "UPSTREAM_TIMEOUT",
        -                  "BACKEND_FAILURE",
        -                  "IP_BLOCKED",
        -                  "RESOURCE_NOT_FOUND",
        -                  "RENDER_FAILURE",
        -                  "OCR_LOW_CONFIDENCE",
        -                  "MANUAL_REVIEW_REQUIRED",
        -                  "ACCEPTANCE_REQUIRED",
        -                  "INVALID_TOKEN"
        -                ],
        -                "type": "string"
        -              },
        -              "details": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "message": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "recoverable": {
        -                "type": "boolean"
        -              },
        -              "retry_after_seconds": {
        -                "anyOf": [
        -                  {
        -                    "minimum": 0,
        -                    "type": "integer"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              }
        -            },
        -            "required": [
        -              "code",
        -              "message",
        -              "recoverable"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      }
        -    },
        -    "required": [
        -      "_meta"
        -    ],
        -    "type": "object"
        -  }
        -]New value: +[
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "_meta": {
        +        "additionalProperties": false,
        +        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        +        "properties": {
        +          "deliverables": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        +                "properties": {
        +                  "docx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "dxf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "expires_at": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  },
        +                  "pdf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "xlsx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "expires_at"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "document_id": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "issued_at": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "output_mode": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Surfaces what a trimmed ``output_mode`` withheld from ``data``.\n\nA trimmed mode (``summary`` / ``material_schedule`` / ``boq`` /\n``boq_with_backup``) withholds\nalready-computed fields to keep the chat payload small. The withheld value\nreads to a client agent as \"capability missing\" (the box-culvert \"geometry\nbuilder isn't firing\" scare) rather than \"pared for size\": ``drawing`` and\n``audit_trail`` appear as ``null``, ``boq_rows`` as an empty list ``[]``\n(its type forbids ``null``) — both indistinguishable from a genuine absent\nresult. This names the withheld fields and the exact mode that brings each\nback, so the value is unambiguous. Absent on the default ``full_json`` mode\n— nothing is withheld, nothing to point at.",
        +                "properties": {
        +                  "mode": {
        +                    "enum": [
        +                      "summary",
        +                      "material_schedule",
        +                      "boq",
        +                      "boq_with_backup"
        +                    ],
        +                    "type": "string"
        +                  },
        +                  "omitted_fields": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "minItems": 1,
        +                    "type": "array"
        +                  },
        +                  "retrieve_with": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "mode",
        +                  "omitted_fields",
        +                  "retrieve_with"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "rate_limit_remaining": {
        +            "anyOf": [
        +              {
        +                "minimum": 0,
        +                "type": "integer"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "request_id": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "schema_version": {
        +            "const": "1.0.0",
        +            "default": "1.0.0",
        +            "type": "string"
        +          },
        +          "scope_boundary": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        +                "properties": {
        +                  "not_in_scope": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "produced": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "recommended_companions": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "type": "string"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "produced",
        +                  "not_in_scope"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tier": {
        +            "enum": [
        +              "free",
        +              "paid"
        +            ],
        +            "type": "string"
        +          },
        +          "tier_upgrade": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        +                "properties": {
        +                  "available_tiers": {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        +                      "properties": {
        +                        "billing": {
        +                          "enum": [
        +                            "one_off",
        +                            "monthly",
        +                            "annual"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "currency": {
        +                          "enum": [
        +                            "GBP",
        +                            "SGD",
        +                            "EUR",
        +                            "USD",
        +                            "CAD",
        +                            "AUD",
        +                            "NZD",
        +                            "MYR"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "display_name": {
        +                          "type": "string"
        +                        },
        +                        "price_local": {
        +                          "type": "number"
        +                        },
        +                        "tier_slug": {
        +                          "enum": [
        +                            "7_day_pass",
        +                            "solo",
        +                            "studio",
        +                            "practice"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "unlock_summary": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "tier_slug",
        +                        "display_name",
        +                        "price_local",
        +                        "currency",
        +                        "billing",
        +                        "unlock_summary"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "current_tier": {
        +                    "const": "free",
        +                    "default": "free",
        +                    "type": "string"
        +                  },
        +                  "pass_credit": {
        +                    "anyOf": [
        +                      {
        +                        "additionalProperties": false,
        +                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        +                        "properties": {
        +                          "amount_local": {
        +                            "type": "number"
        +                          },
        +                          "applies_to": {
        +                            "const": "solo_first_month",
        +                            "default": "solo_first_month",
        +                            "type": "string"
        +                          },
        +                          "currency": {
        +                            "type": "string"
        +                          },
        +                          "redeemable_until": {
        +                            "type": "string"
        +                          }
        +                        },
        +                        "required": [
        +                          "amount_local",
        +                          "currency",
        +                          "redeemable_until"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "pricing_url": {
        +                    "default": "https://civilquants.com/pricing",
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "available_tiers"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tos_url": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "upgrade_hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "warranty_disclaimer": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          }
        +        },
        +        "required": [
        +          "request_id",
        +          "issued_at",
        +          "tier"
        +        ],
        +        "type": "object"
        +      },
        +      "data": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Aggregated + per-section result for a sectioned assembly run.",
        +            "properties": {
        +              "aggregated_boq_rows": {
        +                "items": {
        +                  "additionalProperties": false,
        +                  "description": "Schema § 1.3 — a single bill row in the requested standard's format.\n\n`description` is the non-verbatim functional description per spec § 13.9 /\n§ 15 invariant — NEVER reproduces a standard's verbatim clause text.\n`rate` / `amount` ship null because rates are commodity data the customer\nowns; the engine's job is the measurement, not the pricing.",
        +                  "properties": {
        +                    "amount": {
        +                      "anyOf": [
        +                        {
        +                          "type": "number"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "attribution": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "audit_id": {
        +                      "anyOf": [
        +                        {
        +                          "type": "string"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "description": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "quantity": {
        +                      "minimum": 0,
        +                      "type": "number"
        +                    },
        +                    "rate": {
        +                      "anyOf": [
        +                        {
        +                          "type": "number"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "unit": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "work_section": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    }
        +                  },
        +                  "required": [
        +                    "work_section",
        +                    "description",
        +                    "quantity",
        +                    "unit",
        +                    "attribution"
        +                  ],
        +                  "type": "object"
        +                },
        +                "type": "array"
        +              },
        +              "assembly_slug": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "parameters_used": {
        +                "additionalProperties": true,
        +                "type": "object"
        +              },
        +              "section_count": {
        +                "minimum": 1,
        +                "type": "integer"
        +              },
        +              "section_results": {
        +                "anyOf": [
        +                  {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.1 — the typed payload returned inside `MCPResponse[ComputeResult]`.\n\nFree-tier responses omit `drawings` (the downloadable CAD artefact\npointers — the paid differentiator); the bridge enforces this. The\n`audit_trail` and the inline `drawing` preview are present on BOTH tiers\n(V1 ALIGN / 60th-fire D + C). `text_summary` is bounded to 2000 chars —\nkeeps the LLM-facing summary token-cheap and forces longer narrative into\nBoQ row descriptions where it belongs. `warnings` is the non-fatal\ngeometry advisory list (both tiers).",
        +                      "properties": {
        +                        "assembly_slug": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "audit_trail": {
        +                          "anyOf": [
        +                            {
        +                              "items": {
        +                                "additionalProperties": false,
        +                                "description": "Schema § 1.7 — paid-tier audit-trail entry.\n\nOne entry per BoQ row; `boq_row_index` ties to the row position in\n`ComputeResult.boq_rows`. `derivation` is the human-readable formula\nwalk-through; `formula` is the optional formal expression.",
        +                                "properties": {
        +                                  "boq_row_index": {
        +                                    "minimum": 0,
        +                                    "type": "integer"
        +                                  },
        +                                  "derivation": {
        +                                    "minLength": 1,
        +                                    "type": "string"
        +                                  },
        +                                  "formula": {
        +                                    "anyOf": [
        +                                      {
        +                                        "type": "string"
        +                                      },
        +                                      {
        +                                        "type": "null"
        +                                      }
        +                                    ],
        +                                    "default": null
        +                                  },
        +                                  "id": {
        +                                    "minLength": 1,
        +                                    "type": "string"
        +                                  },
        +                                  "parameters_referenced": {
        +                                    "items": {
        +                                      "type": "string"
        +                                    },
        +                                    "type": "array"
        +                                  }
        +                                },
        +                                "required": [
        +                                  "id",
        +                                  "boq_row_index",
        +                                  "derivation"
        +                                ],
        +                                "type": "object"
        +                              },
        +                              "type": "array"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ],
        +                          "default": null
        +                        },
        +                        "boq_rows": {
        +                          "items": {
        +                            "additionalProperties": false,
        +                            "description": "Schema § 1.3 — a single bill row in the requested standard's format.\n\n`description` is the non-verbatim functional description per spec § 13.9 /\n§ 15 invariant — NEVER reproduces a standard's verbatim clause text.\n`rate` / `amount` ship null because rates are commodity data the customer\nowns; the engine's job is the measurement, not the pricing.",
        +                            "properties": {
        +                              "amount": {
        +                                "anyOf": [
        +                                  {
        +                                    "type": "number"
        +                                  },
        +                                  {
        +                                    "type": "null"
        +                                  }
        +                                ],
        +                                "default": null
        +                              },
        +                              "attribution": {
        +                                "minLength": 1,
        +                                "type": "string"
        +                              },
        +                              "audit_id": {
        +                                "anyOf": [
        +                                  {
        +                                    "type": "string"
        +                                  },
        +                                  {
        +                                    "type": "null"
        +                                  }
        +                                ],
        +                                "default": null
        +                              },
        +                              "description": {
        +                                "minLength": 1,
        +                                "type": "string"
        +                              },
        +                              "quantity": {
        +                                "minimum": 0,
        +                                "type": "number"
        +                              },
        +                              "rate": {
        +                                "anyOf": [
        +                                  {
        +                                    "type": "number"
        +                                  },
        +                                  {
        +                                    "type": "null"
        +                                  }
        +                                ],
        +                                "default": null
        +                              },
        +                              "unit": {
        +                                "minLength": 1,
        +                                "type": "string"
        +                              },
        +                              "work_section": {
        +                                "minLength": 1,
        +                                "type": "string"
        +                              }
        +                            },
        +                            "required": [
        +                              "work_section",
        +                              "description",
        +                              "quantity",
        +                              "unit",
        +                              "attribution"
        +                            ],
        +                            "type": "object"
        +                          },
        +                          "type": "array"
        +                        },
        +                        "drawing": {
        +                          "anyOf": [
        +                            {
        +                              "additionalProperties": false,
        +                              "description": "Schema § 1.6a — inline server-rendered SVG preview of the geometry.\n\nThe MCP mirror of the web ``/compute`` response's ``drawing`` field\n(``api.schemas.compute.DrawingRef``): the same on-screen dimensioned\ndrawing both tiers see in the workspace, surfaced on the MCP compute\nresponse so a chat client can render it inline (60th-fire item C). This\nis the on-screen preview — present on BOTH tiers per the free/paid\nboundary; the downloadable CAD artefacts (DXF / dimensioned PDF) remain\nthe paid differentiator via the export tools.\n\nDefined here rather than importing ``DrawingRef`` because the web\n``schemas`` package imports back into this module (``schemas.render``),\nso reusing it would create an import cycle — the MCP wire contract keeps\nits own copy, the same pattern as ``BoQRow`` / ``DrawingReference``.",
        +                              "properties": {
        +                                "entity_count": {
        +                                  "minimum": 0,
        +                                  "type": "integer"
        +                                },
        +                                "svg_b64": {
        +                                  "minLength": 1,
        +                                  "type": "string"
        +                                },
        +                                "unit_of_drawing": {
        +                                  "const": "m",
        +                                  "default": "m",
        +                                  "type": "string"
        +                                },
        +                                "viewbox_height": {
        +                                  "exclusiveMinimum": 0,
        +                                  "type": "number"
        +                                },
        +                                "viewbox_width": {
        +                                  "exclusiveMinimum": 0,
        +                                  "type": "number"
        +                                },
        +                                "viewbox_x": {
        +                                  "type": "number"
        +                                },
        +                                "viewbox_y": {
        +                                  "type": "number"
        +                                }
        +                              },
        +                              "required": [
        +                                "svg_b64",
        +                                "viewbox_x",
        +                                "viewbox_y",
        +                                "viewbox_width",
        +                                "viewbox_height",
        +                                "entity_count"
        +                              ],
        +                              "type": "object"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ],
        +                          "default": null
        +                        },
        +                        "drawings": {
        +                          "anyOf": [
        +                            {
        +                              "items": {
        +                                "additionalProperties": false,
        +                                "description": "Schema § 1.6 — paid-tier drawing artefact pointer.\n\n`url` is an R2-signed URL; expiry is carried in `_meta.deliverables.expires_at`\non the envelope (not duplicated here). `layers` is DXF-only; PDF/SVG\ncallers omit it.",
        +                                "properties": {
        +                                  "drawing_type": {
        +                                    "enum": [
        +                                      "section",
        +                                      "plan",
        +                                      "elevation",
        +                                      "isometric",
        +                                      "detail"
        +                                    ],
        +                                    "type": "string"
        +                                  },
        +                                  "format": {
        +                                    "enum": [
        +                                      "DXF",
        +                                      "PDF",
        +                                      "SVG"
        +                                    ],
        +                                    "type": "string"
        +                                  },
        +                                  "layers": {
        +                                    "anyOf": [
        +                                      {
        +                                        "items": {
        +                                          "type": "string"
        +                                        },
        +                                        "type": "array"
        +                                      },
        +                                      {
        +                                        "type": "null"
        +                                      }
        +                                    ],
        +                                    "default": null
        +                                  },
        +                                  "scale": {
        +                                    "minLength": 1,
        +                                    "type": "string"
        +                                  },
        +                                  "sheet_size": {
        +                                    "enum": [
        +                                      "A1",
        +                                      "A2",
        +                                      "A3",
        +                                      "A4"
        +                                    ],
        +                                    "type": "string"
        +                                  },
        +                                  "url": {
        +                                    "minLength": 1,
        +                                    "type": "string"
        +                                  }
        +                                },
        +                                "required": [
        +                                  "drawing_type",
        +                                  "format",
        +                                  "url",
        +                                  "sheet_size",
        +                                  "scale"
        +                                ],
        +                                "type": "object"
        +                              },
        +                              "type": "array"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ],
        +                          "default": null
        +                        },
        +                        "parameters_used": {
        +                          "additionalProperties": false,
        +                          "description": "Schema § 1.2 — the parameter snapshot the engine actually used.\n\nSplits user-supplied values from engine defaults so customers can see\nwhich numbers came from them and which the engine filled in. Every\ndefaulted parameter SHOULD have a corresponding entry in `assumptions`\n— the bridge layer enforces this when wrapping engine output.",
        +                          "properties": {
        +                            "assumptions": {
        +                              "items": {
        +                                "type": "string"
        +                              },
        +                              "type": "array"
        +                            },
        +                            "engine_defaults": {
        +                              "additionalProperties": true,
        +                              "type": "object"
        +                            },
        +                            "user_supplied": {
        +                              "additionalProperties": true,
        +                              "type": "object"
        +                            }
        +                          },
        +                          "type": "object"
        +                        },
        +                        "standard": {
        +                          "enum": [
        +                            "CESMM4",
        +                            "NRM2",
        +                            "SMM7",
        +                            "MMHW"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "text_summary": {
        +                          "maxLength": 2000,
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "totals_summary": {
        +                          "additionalProperties": false,
        +                          "description": "Schema § 1.4 — totals_summary as a typed wrapper around the free-form dict.\n\nWire shape is a flat object (`{\"concrete_m3\": {...}, \"rebar_t\": {...}}`).\nWe model it as `RootModel`-equivalent via `model_config(extra=\"allow\")`\n+ a single `__root__`-style `entries` dict. Pydantic v2 recommends\n`RootModel` for free-form roots; using a wrapper class keeps the import\nsurface uniform with the rest of this module.",
        +                          "properties": {
        +                            "entries": {
        +                              "additionalProperties": {
        +                                "additionalProperties": false,
        +                                "description": "Schema § 1.4 — single material/work-class total entry.",
        +                                "properties": {
        +                                  "quantity": {
        +                                    "minimum": 0,
        +                                    "type": "number"
        +                                  },
        +                                  "unit": {
        +                                    "minLength": 1,
        +                                    "type": "string"
        +                                  }
        +                                },
        +                                "required": [
        +                                  "quantity",
        +                                  "unit"
        +                                ],
        +                                "type": "object"
        +                              },
        +                              "type": "object"
        +                            }
        +                          },
        +                          "type": "object"
        +                        },
        +                        "warnings": {
        +                          "items": {
        +                            "additionalProperties": false,
        +                            "description": "Schema § 1.8 — a non-fatal geometry advisory (56th-fire T2).\n\nThe wire projection of the engine's `core.GeometryWarning`. Advisory only:\na warning NEVER changes a measured quantity — it flags geometry that is\nvalid but likely a mistake (e.g. a stale dependent-height default). Present\non BOTH tiers — a correctness/safety signal, not a paid feature.",
        +                            "properties": {
        +                              "affected_params": {
        +                                "items": {
        +                                  "type": "string"
        +                                },
        +                                "type": "array"
        +                              },
        +                              "code": {
        +                                "minLength": 1,
        +                                "type": "string"
        +                              },
        +                              "detail": {
        +                                "additionalProperties": {
        +                                  "type": "number"
        +                                },
        +                                "type": "object"
        +                              },
        +                              "message": {
        +                                "minLength": 1,
        +                                "type": "string"
        +                              },
        +                              "severity": {
        +                                "enum": [
        +                                  "info",
        +                                  "advisory",
        +                                  "caution"
        +                                ],
        +                                "type": "string"
        +                              }
        +                            },
        +                            "required": [
        +                              "code",
        +                              "severity",
        +                              "message"
        +                            ],
        +                            "type": "object"
        +                          },
        +                          "type": "array"
        +                        }
        +                      },
        +                      "required": [
        +                        "assembly_slug",
        +                        "standard",
        +                        "parameters_used",
        +                        "boq_rows",
        +                        "totals_summary",
        +                        "text_summary"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "section_summary": {
        +                "items": {
        +                  "additionalProperties": false,
        +                  "description": "Cheap always-on per-section line: label + run length + totals.",
        +                  "properties": {
        +                    "label": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "run_length": {
        +                      "anyOf": [
        +                        {
        +                          "type": "number"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "totals_summary": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.4 — totals_summary as a typed wrapper around the free-form dict.\n\nWire shape is a flat object (`{\"concrete_m3\": {...}, \"rebar_t\": {...}}`).\nWe model it as `RootModel`-equivalent via `model_config(extra=\"allow\")`\n+ a single `__root__`-style `entries` dict. Pydantic v2 recommends\n`RootModel` for free-form roots; using a wrapper class keeps the import\nsurface uniform with the rest of this module.",
        +                      "properties": {
        +                        "entries": {
        +                          "additionalProperties": {
        +                            "additionalProperties": false,
        +                            "description": "Schema § 1.4 — single material/work-class total entry.",
        +                            "properties": {
        +                              "quantity": {
        +                                "minimum": 0,
        +                                "type": "number"
        +                              },
        +                              "unit": {
        +                                "minLength": 1,
        +                                "type": "string"
        +                              }
        +                            },
        +                            "required": [
        +                              "quantity",
        +                              "unit"
        +                            ],
        +                            "type": "object"
        +                          },
        +                          "type": "object"
        +                        }
        +                      },
        +                      "type": "object"
        +                    }
        +                  },
        +                  "required": [
        +                    "label",
        +                    "totals_summary"
        +                  ],
        +                  "type": "object"
        +                },
        +                "type": "array"
        +              },
        +              "standard": {
        +                "enum": [
        +                  "CESMM4",
        +                  "NRM2",
        +                  "SMM7",
        +                  "MMHW"
        +                ],
        +                "type": "string"
        +              },
        +              "warnings": {
        +                "items": {
        +                  "additionalProperties": false,
        +                  "description": "A section-labelled geometry/advisory warning.",
        +                  "properties": {
        +                    "section_label": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "warning": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.8 — a non-fatal geometry advisory (56th-fire T2).\n\nThe wire projection of the engine's `core.GeometryWarning`. Advisory only:\na warning NEVER changes a measured quantity — it flags geometry that is\nvalid but likely a mistake (e.g. a stale dependent-height default). Present\non BOTH tiers — a correctness/safety signal, not a paid feature.",
        +                      "properties": {
        +                        "affected_params": {
        +                          "items": {
        +                            "type": "string"
        +                          },
        +                          "type": "array"
        +                        },
        +                        "code": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "detail": {
        +                          "additionalProperties": {
        +                            "type": "number"
        +                          },
        +                          "type": "object"
        +                        },
        +                        "message": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "severity": {
        +                          "enum": [
        +                            "info",
        +                            "advisory",
        +                            "caution"
        +                          ],
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "code",
        +                        "severity",
        +                        "message"
        +                      ],
        +                      "type": "object"
        +                    }
        +                  },
        +                  "required": [
        +                    "section_label",
        +                    "warning"
        +                  ],
        +                  "type": "object"
        +                },
        +                "type": "array"
        +              }
        +            },
        +            "required": [
        +              "assembly_slug",
        +              "standard",
        +              "section_count",
        +              "section_summary",
        +              "aggregated_boq_rows"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      },
        +      "error": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        +            "properties": {
        +              "code": {
        +                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        +                "enum": [
        +                  "RATE_LIMIT_EXCEEDED",
        +                  "TIER_INSUFFICIENT",
        +                  "INVALID_INPUT",
        +                  "SCHEMA_VERSION_MISMATCH",
        +                  "SCHEMA_INVARIANT_VIOLATION",
        +                  "UPSTREAM_TIMEOUT",
        +                  "BACKEND_FAILURE",
        +                  "IP_BLOCKED",
        +                  "RESOURCE_NOT_FOUND",
        +                  "RENDER_FAILURE",
        +                  "OCR_LOW_CONFIDENCE",
        +                  "MANUAL_REVIEW_REQUIRED",
        +                  "ACCEPTANCE_REQUIRED",
        +                  "INVALID_TOKEN"
        +                ],
        +                "type": "string"
        +              },
        +              "details": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "message": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "recoverable": {
        +                "type": "boolean"
        +              },
        +              "retry_after_seconds": {
        +                "anyOf": [
        +                  {
        +                    "minimum": 0,
        +                    "type": "integer"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              }
        +            },
        +            "required": [
        +              "code",
        +              "message",
        +              "recoverable"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      }
        +    },
        +    "required": [
        +      "_meta"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "_meta": {
        +        "additionalProperties": false,
        +        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        +        "properties": {
        +          "deliverables": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        +                "properties": {
        +                  "docx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "dxf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "expires_at": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  },
        +                  "pdf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "xlsx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "expires_at"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "document_id": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "issued_at": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "output_mode": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Surfaces what a trimmed ``output_mode`` withheld from ``data``.\n\nA trimmed mode (``summary`` / ``material_schedule`` / ``boq`` /\n``boq_with_backup``) withholds\nalready-computed fields to keep the chat payload small. The withheld value\nreads to a client agent as \"capability missing\" (the box-culvert \"geometry\nbuilder isn't firing\" scare) rather than \"pared for size\": ``drawing`` and\n``audit_trail`` appear as ``null``, ``boq_rows`` as an empty list ``[]``\n(its type forbids ``null``) — both indistinguishable from a genuine absent\nresult. This names the withheld fields and the exact mode that brings each\nback, so the value is unambiguous. Absent on the default ``full_json`` mode\n— nothing is withheld, nothing to point at.",
        +                "properties": {
        +                  "mode": {
        +                    "enum": [
        +                      "summary",
        +                      "material_schedule",
        +                      "boq",
        +                      "boq_with_backup"
        +                    ],
        +                    "type": "string"
        +                  },
        +                  "omitted_fields": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "minItems": 1,
        +                    "type": "array"
        +                  },
        +                  "retrieve_with": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "mode",
        +                  "omitted_fields",
        +                  "retrieve_with"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "rate_limit_remaining": {
        +            "anyOf": [
        +              {
        +                "minimum": 0,
        +                "type": "integer"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "request_id": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "schema_version": {
        +            "const": "1.0.0",
        +            "default": "1.0.0",
        +            "type": "string"
        +          },
        +          "scope_boundary": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        +                "properties": {
        +                  "not_in_scope": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "produced": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "recommended_companions": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "type": "string"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "produced",
        +                  "not_in_scope"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tier": {
        +            "enum": [
        +              "free",
        +              "paid"
        +            ],
        +            "type": "string"
        +          },
        +          "tier_upgrade": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        +                "properties": {
        +                  "available_tiers": {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        +                      "properties": {
        +                        "billing": {
        +                          "enum": [
        +                            "one_off",
        +                            "monthly",
        +                            "annual"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "currency": {
        +                          "enum": [
        +                            "GBP",
        +                            "SGD",
        +                            "EUR",
        +                            "USD",
        +                            "CAD",
        +                            "AUD",
        +                            "NZD",
        +                            "MYR"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "display_name": {
        +                          "type": "string"
        +                        },
        +                        "price_local": {
        +                          "type": "number"
        +                        },
        +                        "tier_slug": {
        +                          "enum": [
        +                            "7_day_pass",
        +                            "solo",
        +                            "studio",
        +                            "practice"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "unlock_summary": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "tier_slug",
        +                        "display_name",
        +                        "price_local",
        +                        "currency",
        +                        "billing",
        +                        "unlock_summary"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "current_tier": {
        +                    "const": "free",
        +                    "default": "free",
        +                    "type": "string"
        +                  },
        +                  "pass_credit": {
        +                    "anyOf": [
        +                      {
        +                        "additionalProperties": false,
        +                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        +                        "properties": {
        +                          "amount_local": {
        +                            "type": "number"
        +                          },
        +                          "applies_to": {
        +                            "const": "solo_first_month",
        +                            "default": "solo_first_month",
        +                            "type": "string"
        +                          },
        +                          "currency": {
        +                            "type": "string"
        +                          },
        +                          "redeemable_until": {
        +                            "type": "string"
        +                          }
        +                        },
        +                        "required": [
        +                          "amount_local",
        +                          "currency",
        +                          "redeemable_until"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "pricing_url": {
        +                    "default": "https://civilquants.com/pricing",
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "available_tiers"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tos_url": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "upgrade_hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "warranty_disclaimer": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          }
        +        },
        +        "required": [
        +          "request_id",
        +          "issued_at",
        +          "tier"
        +        ],
        +        "type": "object"
        +      },
        +      "data": {
        +        "default": null,
        +        "title": "Data"
        +      },
        +      "error": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        +            "properties": {
        +              "code": {
        +                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        +                "enum": [
        +                  "RATE_LIMIT_EXCEEDED",
        +                  "TIER_INSUFFICIENT",
        +                  "INVALID_INPUT",
        +                  "SCHEMA_VERSION_MISMATCH",
        +                  "SCHEMA_INVARIANT_VIOLATION",
        +                  "UPSTREAM_TIMEOUT",
        +                  "BACKEND_FAILURE",
        +                  "IP_BLOCKED",
        +                  "RESOURCE_NOT_FOUND",
        +                  "RENDER_FAILURE",
        +                  "OCR_LOW_CONFIDENCE",
        +                  "MANUAL_REVIEW_REQUIRED",
        +                  "ACCEPTANCE_REQUIRED",
        +                  "INVALID_TOKEN"
        +                ],
        +                "type": "string"
        +              },
        +              "details": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "message": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "recoverable": {
        +                "type": "boolean"
        +              },
        +              "retry_after_seconds": {
        +                "anyOf": [
        +                  {
        +                    "minimum": 0,
        +                    "type": "integer"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              }
        +            },
        +            "required": [
        +              "code",
        +              "message",
        +              "recoverable"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      }
        +    },
        +    "required": [
        +      "_meta"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedcompute_pad_foundation2 fields changed
      • changedInput schema / properties / output_mode / enum
        Previous value: -[
        -  "summary",
        -  "boq",
        -  "boq_with_backup",
        -  "full_json"
        -]New value: +[
        +  "summary",
        +  "material_schedule",
        +  "boq",
        +  "boq_with_backup",
        +  "full_json"
        +]
      • changedOutput schema / properties / result / anyOf
        Previous value: -[
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "_meta": {
        -        "additionalProperties": false,
        -        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        -        "properties": {
        -          "deliverables": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        -                "properties": {
        -                  "docx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "dxf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "expires_at": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  },
        -                  "pdf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "xlsx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "expires_at"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "document_id": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "issued_at": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "output_mode": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Surfaces what a trimmed ``output_mode`` withheld from ``data``.\n\nA trimmed mode (``summary`` / ``boq`` / ``boq_with_backup``) withholds\nalready-computed fields to keep the chat payload small. The withheld value\nreads to a client agent as \"capability missing\" (the box-culvert \"geometry\nbuilder isn't firing\" scare) rather than \"pared for size\": ``drawing`` and\n``audit_trail`` appear as ``null``, ``boq_rows`` as an empty list ``[]``\n(its type forbids ``null``) — both indistinguishable from a genuine absent\nresult. This names the withheld fields and the exact mode that brings each\nback, so the value is unambiguous. Absent on the default ``full_json`` mode\n— nothing is withheld, nothing to point at.",
        -                "properties": {
        -                  "mode": {
        -                    "enum": [
        -                      "summary",
        -                      "boq",
        -                      "boq_with_backup"
        -                    ],
        -                    "type": "string"
        -                  },
        -                  "omitted_fields": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "minItems": 1,
        -                    "type": "array"
        -                  },
        -                  "retrieve_with": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "mode",
        -                  "omitted_fields",
        -                  "retrieve_with"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "rate_limit_remaining": {
        -            "anyOf": [
        -              {
        -                "minimum": 0,
        -                "type": "integer"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "request_id": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "schema_version": {
        -            "const": "1.0.0",
        -            "default": "1.0.0",
        -            "type": "string"
        -          },
        -          "scope_boundary": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        -                "properties": {
        -                  "not_in_scope": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "produced": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "recommended_companions": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "type": "string"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "produced",
        -                  "not_in_scope"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tier": {
        -            "enum": [
        -              "free",
        -              "paid"
        -            ],
        -            "type": "string"
        -          },
        -          "tier_upgrade": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        -                "properties": {
        -                  "available_tiers": {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        -                      "properties": {
        -                        "billing": {
        -                          "enum": [
        -                            "one_off",
        -                            "monthly",
        -                            "annual"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "currency": {
        -                          "enum": [
        -                            "GBP",
        -                            "SGD",
        -                            "EUR",
        -                            "USD",
        -                            "CAD",
        -                            "AUD",
        -                            "NZD",
        -                            "MYR"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "display_name": {
        -                          "type": "string"
        -                        },
        -                        "price_local": {
        -                          "type": "number"
        -                        },
        -                        "tier_slug": {
        -                          "enum": [
        -                            "7_day_pass",
        -                            "solo",
        -                            "studio",
        -                            "practice"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "unlock_summary": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "tier_slug",
        -                        "display_name",
        -                        "price_local",
        -                        "currency",
        -                        "billing",
        -                        "unlock_summary"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "current_tier": {
        -                    "const": "free",
        -                    "default": "free",
        -                    "type": "string"
        -                  },
        -                  "pass_credit": {
        -                    "anyOf": [
        -                      {
        -                        "additionalProperties": false,
        -                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        -                        "properties": {
        -                          "amount_local": {
        -                            "type": "number"
        -                          },
        -                          "applies_to": {
        -                            "const": "solo_first_month",
        -                            "default": "solo_first_month",
        -                            "type": "string"
        -                          },
        -                          "currency": {
        -                            "type": "string"
        -                          },
        -                          "redeemable_until": {
        -                            "type": "string"
        -                          }
        -                        },
        -                        "required": [
        -                          "amount_local",
        -                          "currency",
        -                          "redeemable_until"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "pricing_url": {
        -                    "default": "https://civilquants.com/pricing",
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "available_tiers"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tos_url": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "upgrade_hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "warranty_disclaimer": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          }
        -        },
        -        "required": [
        -          "request_id",
        -          "issued_at",
        -          "tier"
        -        ],
        -        "type": "object"
        -      },
        -      "data": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Schema § 1.1 — the typed payload returned inside `MCPResponse[ComputeResult]`.\n\nFree-tier responses omit `drawings` (the downloadable CAD artefact\npointers — the paid differentiator); the bridge enforces this. The\n`audit_trail` and the inline `drawing` preview are present on BOTH tiers\n(V1 ALIGN / 60th-fire D + C). `text_summary` is bounded to 2000 chars —\nkeeps the LLM-facing summary token-cheap and forces longer narrative into\nBoQ row descriptions where it belongs. `warnings` is the non-fatal\ngeometry advisory list (both tiers).",
        -            "properties": {
        -              "assembly_slug": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "audit_trail": {
        -                "anyOf": [
        -                  {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.7 — paid-tier audit-trail entry.\n\nOne entry per BoQ row; `boq_row_index` ties to the row position in\n`ComputeResult.boq_rows`. `derivation` is the human-readable formula\nwalk-through; `formula` is the optional formal expression.",
        -                      "properties": {
        -                        "boq_row_index": {
        -                          "minimum": 0,
        -                          "type": "integer"
        -                        },
        -                        "derivation": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "formula": {
        -                          "anyOf": [
        -                            {
        -                              "type": "string"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ],
        -                          "default": null
        -                        },
        -                        "id": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "parameters_referenced": {
        -                          "items": {
        -                            "type": "string"
        -                          },
        -                          "type": "array"
        -                        }
        -                      },
        -                      "required": [
        -                        "id",
        -                        "boq_row_index",
        -                        "derivation"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "boq_rows": {
        -                "items": {
        -                  "additionalProperties": false,
        -                  "description": "Schema § 1.3 — a single bill row in the requested standard's format.\n\n`description` is the non-verbatim functional description per spec § 13.9 /\n§ 15 invariant — NEVER reproduces a standard's verbatim clause text.\n`rate` / `amount` ship null because rates are commodity data the customer\nowns; the engine's job is the measurement, not the pricing.",
        -                  "properties": {
        -                    "amount": {
        -                      "anyOf": [
        -                        {
        -                          "type": "number"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "attribution": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "audit_id": {
        -                      "anyOf": [
        -                        {
        -                          "type": "string"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "description": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "quantity": {
        -                      "minimum": 0,
        -                      "type": "number"
        -                    },
        -                    "rate": {
        -                      "anyOf": [
        -                        {
        -                          "type": "number"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "unit": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "work_section": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    }
        -                  },
        -                  "required": [
        -                    "work_section",
        -                    "description",
        -                    "quantity",
        -                    "unit",
        -                    "attribution"
        -                  ],
        -                  "type": "object"
        -                },
        -                "type": "array"
        -              },
        -              "drawing": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": false,
        -                    "description": "Schema § 1.6a — inline server-rendered SVG preview of the geometry.\n\nThe MCP mirror of the web ``/compute`` response's ``drawing`` field\n(``api.schemas.compute.DrawingRef``): the same on-screen dimensioned\ndrawing both tiers see in the workspace, surfaced on the MCP compute\nresponse so a chat client can render it inline (60th-fire item C). This\nis the on-screen preview — present on BOTH tiers per the free/paid\nboundary; the downloadable CAD artefacts (DXF / dimensioned PDF) remain\nthe paid differentiator via the export tools.\n\nDefined here rather than importing ``DrawingRef`` because the web\n``schemas`` package imports back into this module (``schemas.render``),\nso reusing it would create an import cycle — the MCP wire contract keeps\nits own copy, the same pattern as ``BoQRow`` / ``DrawingReference``.",
        -                    "properties": {
        -                      "entity_count": {
        -                        "minimum": 0,
        -                        "type": "integer"
        -                      },
        -                      "svg_b64": {
        -                        "minLength": 1,
        -                        "type": "string"
        -                      },
        -                      "unit_of_drawing": {
        -                        "const": "m",
        -                        "default": "m",
        -                        "type": "string"
        -                      },
        -                      "viewbox_height": {
        -                        "exclusiveMinimum": 0,
        -                        "type": "number"
        -                      },
        -                      "viewbox_width": {
        -                        "exclusiveMinimum": 0,
        -                        "type": "number"
        -                      },
        -                      "viewbox_x": {
        -                        "type": "number"
        -                      },
        -                      "viewbox_y": {
        -                        "type": "number"
        -                      }
        -                    },
        -                    "required": [
        -                      "svg_b64",
        -                      "viewbox_x",
        -                      "viewbox_y",
        -                      "viewbox_width",
        -                      "viewbox_height",
        -                      "entity_count"
        -                    ],
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "drawings": {
        -                "anyOf": [
        -                  {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.6 — paid-tier drawing artefact pointer.\n\n`url` is an R2-signed URL; expiry is carried in `_meta.deliverables.expires_at`\non the envelope (not duplicated here). `layers` is DXF-only; PDF/SVG\ncallers omit it.",
        -                      "properties": {
        -                        "drawing_type": {
        -                          "enum": [
        -                            "section",
        -                            "plan",
        -                            "elevation",
        -                            "isometric",
        -                            "detail"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "format": {
        -                          "enum": [
        -                            "DXF",
        -                            "PDF",
        -                            "SVG"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "layers": {
        -                          "anyOf": [
        -                            {
        -                              "items": {
        -                                "type": "string"
        -                              },
        -                              "type": "array"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ],
        -                          "default": null
        -                        },
        -                        "scale": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "sheet_size": {
        -                          "enum": [
        -                            "A1",
        -                            "A2",
        -                            "A3",
        -                            "A4"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "url": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "drawing_type",
        -                        "format",
        -                        "url",
        -                        "sheet_size",
        -                        "scale"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "parameters_used": {
        -                "additionalProperties": false,
        -                "description": "Schema § 1.2 — the parameter snapshot the engine actually used.\n\nSplits user-supplied values from engine defaults so customers can see\nwhich numbers came from them and which the engine filled in. Every\ndefaulted parameter SHOULD have a corresponding entry in `assumptions`\n— the bridge layer enforces this when wrapping engine output.",
        -                "properties": {
        -                  "assumptions": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "engine_defaults": {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  "user_supplied": {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  }
        -                },
        -                "type": "object"
        -              },
        -              "standard": {
        -                "enum": [
        -                  "CESMM4",
        -                  "NRM2",
        -                  "SMM7",
        -                  "MMHW"
        -                ],
        -                "type": "string"
        -              },
        -              "text_summary": {
        -                "maxLength": 2000,
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "totals_summary": {
        -                "additionalProperties": false,
        -                "description": "Schema § 1.4 — totals_summary as a typed wrapper around the free-form dict.\n\nWire shape is a flat object (`{\"concrete_m3\": {...}, \"rebar_t\": {...}}`).\nWe model it as `RootModel`-equivalent via `model_config(extra=\"allow\")`\n+ a single `__root__`-style `entries` dict. Pydantic v2 recommends\n`RootModel` for free-form roots; using a wrapper class keeps the import\nsurface uniform with the rest of this module.",
        -                "properties": {
        -                  "entries": {
        -                    "additionalProperties": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.4 — single material/work-class total entry.",
        -                      "properties": {
        -                        "quantity": {
        -                          "minimum": 0,
        -                          "type": "number"
        -                        },
        -                        "unit": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "quantity",
        -                        "unit"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "object"
        -                  }
        -                },
        -                "type": "object"
        -              },
        -              "warnings": {
        -                "items": {
        -                  "additionalProperties": false,
        -                  "description": "Schema § 1.8 — a non-fatal geometry advisory (56th-fire T2).\n\nThe wire projection of the engine's `core.GeometryWarning`. Advisory only:\na warning NEVER changes a measured quantity — it flags geometry that is\nvalid but likely a mistake (e.g. a stale dependent-height default). Present\non BOTH tiers — a correctness/safety signal, not a paid feature.",
        -                  "properties": {
        -                    "affected_params": {
        -                      "items": {
        -                        "type": "string"
        -                      },
        -                      "type": "array"
        -                    },
        -                    "code": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "detail": {
        -                      "additionalProperties": {
        -                        "type": "number"
        -                      },
        -                      "type": "object"
        -                    },
        -                    "message": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "severity": {
        -                      "enum": [
        -                        "info",
        -                        "advisory",
        -                        "caution"
        -                      ],
        -                      "type": "string"
        -                    }
        -                  },
        -                  "required": [
        -                    "code",
        -                    "severity",
        -                    "message"
        -                  ],
        -                  "type": "object"
        -                },
        -                "type": "array"
        -              }
        -            },
        -            "required": [
        -              "assembly_slug",
        -              "standard",
        -              "parameters_used",
        -              "boq_rows",
        -              "totals_summary",
        -              "text_summary"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      },
        -      "error": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        -            "properties": {
        -              "code": {
        -                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        -                "enum": [
        -                  "RATE_LIMIT_EXCEEDED",
        -                  "TIER_INSUFFICIENT",
        -                  "INVALID_INPUT",
        -                  "SCHEMA_VERSION_MISMATCH",
        -                  "SCHEMA_INVARIANT_VIOLATION",
        -                  "UPSTREAM_TIMEOUT",
        -                  "BACKEND_FAILURE",
        -                  "IP_BLOCKED",
        -                  "RESOURCE_NOT_FOUND",
        -                  "RENDER_FAILURE",
        -                  "OCR_LOW_CONFIDENCE",
        -                  "MANUAL_REVIEW_REQUIRED",
        -                  "ACCEPTANCE_REQUIRED",
        -                  "INVALID_TOKEN"
        -                ],
        -                "type": "string"
        -              },
        -              "details": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "message": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "recoverable": {
        -                "type": "boolean"
        -              },
        -              "retry_after_seconds": {
        -                "anyOf": [
        -                  {
        -                    "minimum": 0,
        -                    "type": "integer"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              }
        -            },
        -            "required": [
        -              "code",
        -              "message",
        -              "recoverable"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      }
        -    },
        -    "required": [
        -      "_meta"
        -    ],
        -    "type": "object"
        -  },
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "_meta": {
        -        "additionalProperties": false,
        -        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        -        "properties": {
        -          "deliverables": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        -                "properties": {
        -                  "docx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "dxf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "expires_at": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  },
        -                  "pdf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "xlsx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "expires_at"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "document_id": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "issued_at": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "output_mode": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Surfaces what a trimmed ``output_mode`` withheld from ``data``.\n\nA trimmed mode (``summary`` / ``boq`` / ``boq_with_backup``) withholds\nalready-computed fields to keep the chat payload small. The withheld value\nreads to a client agent as \"capability missing\" (the box-culvert \"geometry\nbuilder isn't firing\" scare) rather than \"pared for size\": ``drawing`` and\n``audit_trail`` appear as ``null``, ``boq_rows`` as an empty list ``[]``\n(its type forbids ``null``) — both indistinguishable from a genuine absent\nresult. This names the withheld fields and the exact mode that brings each\nback, so the value is unambiguous. Absent on the default ``full_json`` mode\n— nothing is withheld, nothing to point at.",
        -                "properties": {
        -                  "mode": {
        -                    "enum": [
        -                      "summary",
        -                      "boq",
        -                      "boq_with_backup"
        -                    ],
        -                    "type": "string"
        -                  },
        -                  "omitted_fields": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "minItems": 1,
        -                    "type": "array"
        -                  },
        -                  "retrieve_with": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "mode",
        -                  "omitted_fields",
        -                  "retrieve_with"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "rate_limit_remaining": {
        -            "anyOf": [
        -              {
        -                "minimum": 0,
        -                "type": "integer"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "request_id": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "schema_version": {
        -            "const": "1.0.0",
        -            "default": "1.0.0",
        -            "type": "string"
        -          },
        -          "scope_boundary": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        -                "properties": {
        -                  "not_in_scope": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "produced": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "recommended_companions": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "type": "string"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "produced",
        -                  "not_in_scope"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tier": {
        -            "enum": [
        -              "free",
        -              "paid"
        -            ],
        -            "type": "string"
        -          },
        -          "tier_upgrade": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        -                "properties": {
        -                  "available_tiers": {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        -                      "properties": {
        -                        "billing": {
        -                          "enum": [
        -                            "one_off",
        -                            "monthly",
        -                            "annual"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "currency": {
        -                          "enum": [
        -                            "GBP",
        -                            "SGD",
        -                            "EUR",
        -                            "USD",
        -                            "CAD",
        -                            "AUD",
        -                            "NZD",
        -                            "MYR"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "display_name": {
        -                          "type": "string"
        -                        },
        -                        "price_local": {
        -                          "type": "number"
        -                        },
        -                        "tier_slug": {
        -                          "enum": [
        -                            "7_day_pass",
        -                            "solo",
        -                            "studio",
        -                            "practice"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "unlock_summary": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "tier_slug",
        -                        "display_name",
        -                        "price_local",
        -                        "currency",
        -                        "billing",
        -                        "unlock_summary"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "current_tier": {
        -                    "const": "free",
        -                    "default": "free",
        -                    "type": "string"
        -                  },
        -                  "pass_credit": {
        -                    "anyOf": [
        -                      {
        -                        "additionalProperties": false,
        -                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        -                        "properties": {
        -                          "amount_local": {
        -                            "type": "number"
        -                          },
        -                          "applies_to": {
        -                            "const": "solo_first_month",
        -                            "default": "solo_first_month",
        -                            "type": "string"
        -                          },
        -                          "currency": {
        -                            "type": "string"
        -                          },
        -                          "redeemable_until": {
        -                            "type": "string"
        -                          }
        -                        },
        -                        "required": [
        -                          "amount_local",
        -                          "currency",
        -                          "redeemable_until"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "pricing_url": {
        -                    "default": "https://civilquants.com/pricing",
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "available_tiers"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tos_url": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "upgrade_hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "warranty_disclaimer": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          }
        -        },
        -        "required": [
        -          "request_id",
        -          "issued_at",
        -          "tier"
        -        ],
        -        "type": "object"
        -      },
        -      "data": {
        -        "default": null,
        -        "title": "Data"
        -      },
        -      "error": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        -            "properties": {
        -              "code": {
        -                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        -                "enum": [
        -                  "RATE_LIMIT_EXCEEDED",
        -                  "TIER_INSUFFICIENT",
        -                  "INVALID_INPUT",
        -                  "SCHEMA_VERSION_MISMATCH",
        -                  "SCHEMA_INVARIANT_VIOLATION",
        -                  "UPSTREAM_TIMEOUT",
        -                  "BACKEND_FAILURE",
        -                  "IP_BLOCKED",
        -                  "RESOURCE_NOT_FOUND",
        -                  "RENDER_FAILURE",
        -                  "OCR_LOW_CONFIDENCE",
        -                  "MANUAL_REVIEW_REQUIRED",
        -                  "ACCEPTANCE_REQUIRED",
        -                  "INVALID_TOKEN"
        -                ],
        -                "type": "string"
        -              },
        -              "details": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "message": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "recoverable": {
        -                "type": "boolean"
        -              },
        -              "retry_after_seconds": {
        -                "anyOf": [
        -                  {
        -                    "minimum": 0,
        -                    "type": "integer"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              }
        -            },
        -            "required": [
        -              "code",
        -              "message",
        -              "recoverable"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      }
        -    },
        -    "required": [
        -      "_meta"
        -    ],
        -    "type": "object"
        -  }
        -]New value: +[
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "_meta": {
        +        "additionalProperties": false,
        +        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        +        "properties": {
        +          "deliverables": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        +                "properties": {
        +                  "docx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "dxf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "expires_at": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  },
        +                  "pdf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "xlsx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "expires_at"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "document_id": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "issued_at": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "output_mode": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Surfaces what a trimmed ``output_mode`` withheld from ``data``.\n\nA trimmed mode (``summary`` / ``material_schedule`` / ``boq`` /\n``boq_with_backup``) withholds\nalready-computed fields to keep the chat payload small. The withheld value\nreads to a client agent as \"capability missing\" (the box-culvert \"geometry\nbuilder isn't firing\" scare) rather than \"pared for size\": ``drawing`` and\n``audit_trail`` appear as ``null``, ``boq_rows`` as an empty list ``[]``\n(its type forbids ``null``) — both indistinguishable from a genuine absent\nresult. This names the withheld fields and the exact mode that brings each\nback, so the value is unambiguous. Absent on the default ``full_json`` mode\n— nothing is withheld, nothing to point at.",
        +                "properties": {
        +                  "mode": {
        +                    "enum": [
        +                      "summary",
        +                      "material_schedule",
        +                      "boq",
        +                      "boq_with_backup"
        +                    ],
        +                    "type": "string"
        +                  },
        +                  "omitted_fields": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "minItems": 1,
        +                    "type": "array"
        +                  },
        +                  "retrieve_with": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "mode",
        +                  "omitted_fields",
        +                  "retrieve_with"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "rate_limit_remaining": {
        +            "anyOf": [
        +              {
        +                "minimum": 0,
        +                "type": "integer"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "request_id": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "schema_version": {
        +            "const": "1.0.0",
        +            "default": "1.0.0",
        +            "type": "string"
        +          },
        +          "scope_boundary": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        +                "properties": {
        +                  "not_in_scope": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "produced": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "recommended_companions": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "type": "string"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "produced",
        +                  "not_in_scope"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tier": {
        +            "enum": [
        +              "free",
        +              "paid"
        +            ],
        +            "type": "string"
        +          },
        +          "tier_upgrade": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        +                "properties": {
        +                  "available_tiers": {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        +                      "properties": {
        +                        "billing": {
        +                          "enum": [
        +                            "one_off",
        +                            "monthly",
        +                            "annual"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "currency": {
        +                          "enum": [
        +                            "GBP",
        +                            "SGD",
        +                            "EUR",
        +                            "USD",
        +                            "CAD",
        +                            "AUD",
        +                            "NZD",
        +                            "MYR"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "display_name": {
        +                          "type": "string"
        +                        },
        +                        "price_local": {
        +                          "type": "number"
        +                        },
        +                        "tier_slug": {
        +                          "enum": [
        +                            "7_day_pass",
        +                            "solo",
        +                            "studio",
        +                            "practice"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "unlock_summary": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "tier_slug",
        +                        "display_name",
        +                        "price_local",
        +                        "currency",
        +                        "billing",
        +                        "unlock_summary"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "current_tier": {
        +                    "const": "free",
        +                    "default": "free",
        +                    "type": "string"
        +                  },
        +                  "pass_credit": {
        +                    "anyOf": [
        +                      {
        +                        "additionalProperties": false,
        +                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        +                        "properties": {
        +                          "amount_local": {
        +                            "type": "number"
        +                          },
        +                          "applies_to": {
        +                            "const": "solo_first_month",
        +                            "default": "solo_first_month",
        +                            "type": "string"
        +                          },
        +                          "currency": {
        +                            "type": "string"
        +                          },
        +                          "redeemable_until": {
        +                            "type": "string"
        +                          }
        +                        },
        +                        "required": [
        +                          "amount_local",
        +                          "currency",
        +                          "redeemable_until"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "pricing_url": {
        +                    "default": "https://civilquants.com/pricing",
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "available_tiers"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tos_url": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "upgrade_hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "warranty_disclaimer": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          }
        +        },
        +        "required": [
        +          "request_id",
        +          "issued_at",
        +          "tier"
        +        ],
        +        "type": "object"
        +      },
        +      "data": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Schema § 1.1 — the typed payload returned inside `MCPResponse[ComputeResult]`.\n\nFree-tier responses omit `drawings` (the downloadable CAD artefact\npointers — the paid differentiator); the bridge enforces this. The\n`audit_trail` and the inline `drawing` preview are present on BOTH tiers\n(V1 ALIGN / 60th-fire D + C). `text_summary` is bounded to 2000 chars —\nkeeps the LLM-facing summary token-cheap and forces longer narrative into\nBoQ row descriptions where it belongs. `warnings` is the non-fatal\ngeometry advisory list (both tiers).",
        +            "properties": {
        +              "assembly_slug": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "audit_trail": {
        +                "anyOf": [
        +                  {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.7 — paid-tier audit-trail entry.\n\nOne entry per BoQ row; `boq_row_index` ties to the row position in\n`ComputeResult.boq_rows`. `derivation` is the human-readable formula\nwalk-through; `formula` is the optional formal expression.",
        +                      "properties": {
        +                        "boq_row_index": {
        +                          "minimum": 0,
        +                          "type": "integer"
        +                        },
        +                        "derivation": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "formula": {
        +                          "anyOf": [
        +                            {
        +                              "type": "string"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ],
        +                          "default": null
        +                        },
        +                        "id": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "parameters_referenced": {
        +                          "items": {
        +                            "type": "string"
        +                          },
        +                          "type": "array"
        +                        }
        +                      },
        +                      "required": [
        +                        "id",
        +                        "boq_row_index",
        +                        "derivation"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "boq_rows": {
        +                "items": {
        +                  "additionalProperties": false,
        +                  "description": "Schema § 1.3 — a single bill row in the requested standard's format.\n\n`description` is the non-verbatim functional description per spec § 13.9 /\n§ 15 invariant — NEVER reproduces a standard's verbatim clause text.\n`rate` / `amount` ship null because rates are commodity data the customer\nowns; the engine's job is the measurement, not the pricing.",
        +                  "properties": {
        +                    "amount": {
        +                      "anyOf": [
        +                        {
        +                          "type": "number"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "attribution": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "audit_id": {
        +                      "anyOf": [
        +                        {
        +                          "type": "string"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "description": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "quantity": {
        +                      "minimum": 0,
        +                      "type": "number"
        +                    },
        +                    "rate": {
        +                      "anyOf": [
        +                        {
        +                          "type": "number"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "unit": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "work_section": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    }
        +                  },
        +                  "required": [
        +                    "work_section",
        +                    "description",
        +                    "quantity",
        +                    "unit",
        +                    "attribution"
        +                  ],
        +                  "type": "object"
        +                },
        +                "type": "array"
        +              },
        +              "drawing": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": false,
        +                    "description": "Schema § 1.6a — inline server-rendered SVG preview of the geometry.\n\nThe MCP mirror of the web ``/compute`` response's ``drawing`` field\n(``api.schemas.compute.DrawingRef``): the same on-screen dimensioned\ndrawing both tiers see in the workspace, surfaced on the MCP compute\nresponse so a chat client can render it inline (60th-fire item C). This\nis the on-screen preview — present on BOTH tiers per the free/paid\nboundary; the downloadable CAD artefacts (DXF / dimensioned PDF) remain\nthe paid differentiator via the export tools.\n\nDefined here rather than importing ``DrawingRef`` because the web\n``schemas`` package imports back into this module (``schemas.render``),\nso reusing it would create an import cycle — the MCP wire contract keeps\nits own copy, the same pattern as ``BoQRow`` / ``DrawingReference``.",
        +                    "properties": {
        +                      "entity_count": {
        +                        "minimum": 0,
        +                        "type": "integer"
        +                      },
        +                      "svg_b64": {
        +                        "minLength": 1,
        +                        "type": "string"
        +                      },
        +                      "unit_of_drawing": {
        +                        "const": "m",
        +                        "default": "m",
        +                        "type": "string"
        +                      },
        +                      "viewbox_height": {
        +                        "exclusiveMinimum": 0,
        +                        "type": "number"
        +                      },
        +                      "viewbox_width": {
        +                        "exclusiveMinimum": 0,
        +                        "type": "number"
        +                      },
        +                      "viewbox_x": {
        +                        "type": "number"
        +                      },
        +                      "viewbox_y": {
        +                        "type": "number"
        +                      }
        +                    },
        +                    "required": [
        +                      "svg_b64",
        +                      "viewbox_x",
        +                      "viewbox_y",
        +                      "viewbox_width",
        +                      "viewbox_height",
        +                      "entity_count"
        +                    ],
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "drawings": {
        +                "anyOf": [
        +                  {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.6 — paid-tier drawing artefact pointer.\n\n`url` is an R2-signed URL; expiry is carried in `_meta.deliverables.expires_at`\non the envelope (not duplicated here). `layers` is DXF-only; PDF/SVG\ncallers omit it.",
        +                      "properties": {
        +                        "drawing_type": {
        +                          "enum": [
        +                            "section",
        +                            "plan",
        +                            "elevation",
        +                            "isometric",
        +                            "detail"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "format": {
        +                          "enum": [
        +                            "DXF",
        +                            "PDF",
        +                            "SVG"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "layers": {
        +                          "anyOf": [
        +                            {
        +                              "items": {
        +                                "type": "string"
        +                              },
        +                              "type": "array"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ],
        +                          "default": null
        +                        },
        +                        "scale": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "sheet_size": {
        +                          "enum": [
        +                            "A1",
        +                            "A2",
        +                            "A3",
        +                            "A4"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "url": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "drawing_type",
        +                        "format",
        +                        "url",
        +                        "sheet_size",
        +                        "scale"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "parameters_used": {
        +                "additionalProperties": false,
        +                "description": "Schema § 1.2 — the parameter snapshot the engine actually used.\n\nSplits user-supplied values from engine defaults so customers can see\nwhich numbers came from them and which the engine filled in. Every\ndefaulted parameter SHOULD have a corresponding entry in `assumptions`\n— the bridge layer enforces this when wrapping engine output.",
        +                "properties": {
        +                  "assumptions": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "engine_defaults": {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  "user_supplied": {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  }
        +                },
        +                "type": "object"
        +              },
        +              "standard": {
        +                "enum": [
        +                  "CESMM4",
        +                  "NRM2",
        +                  "SMM7",
        +                  "MMHW"
        +                ],
        +                "type": "string"
        +              },
        +              "text_summary": {
        +                "maxLength": 2000,
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "totals_summary": {
        +                "additionalProperties": false,
        +                "description": "Schema § 1.4 — totals_summary as a typed wrapper around the free-form dict.\n\nWire shape is a flat object (`{\"concrete_m3\": {...}, \"rebar_t\": {...}}`).\nWe model it as `RootModel`-equivalent via `model_config(extra=\"allow\")`\n+ a single `__root__`-style `entries` dict. Pydantic v2 recommends\n`RootModel` for free-form roots; using a wrapper class keeps the import\nsurface uniform with the rest of this module.",
        +                "properties": {
        +                  "entries": {
        +                    "additionalProperties": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.4 — single material/work-class total entry.",
        +                      "properties": {
        +                        "quantity": {
        +                          "minimum": 0,
        +                          "type": "number"
        +                        },
        +                        "unit": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "quantity",
        +                        "unit"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "object"
        +                  }
        +                },
        +                "type": "object"
        +              },
        +              "warnings": {
        +                "items": {
        +                  "additionalProperties": false,
        +                  "description": "Schema § 1.8 — a non-fatal geometry advisory (56th-fire T2).\n\nThe wire projection of the engine's `core.GeometryWarning`. Advisory only:\na warning NEVER changes a measured quantity — it flags geometry that is\nvalid but likely a mistake (e.g. a stale dependent-height default). Present\non BOTH tiers — a correctness/safety signal, not a paid feature.",
        +                  "properties": {
        +                    "affected_params": {
        +                      "items": {
        +                        "type": "string"
        +                      },
        +                      "type": "array"
        +                    },
        +                    "code": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "detail": {
        +                      "additionalProperties": {
        +                        "type": "number"
        +                      },
        +                      "type": "object"
        +                    },
        +                    "message": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "severity": {
        +                      "enum": [
        +                        "info",
        +                        "advisory",
        +                        "caution"
        +                      ],
        +                      "type": "string"
        +                    }
        +                  },
        +                  "required": [
        +                    "code",
        +                    "severity",
        +                    "message"
        +                  ],
        +                  "type": "object"
        +                },
        +                "type": "array"
        +              }
        +            },
        +            "required": [
        +              "assembly_slug",
        +              "standard",
        +              "parameters_used",
        +              "boq_rows",
        +              "totals_summary",
        +              "text_summary"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      },
        +      "error": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        +            "properties": {
        +              "code": {
        +                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        +                "enum": [
        +                  "RATE_LIMIT_EXCEEDED",
        +                  "TIER_INSUFFICIENT",
        +                  "INVALID_INPUT",
        +                  "SCHEMA_VERSION_MISMATCH",
        +                  "SCHEMA_INVARIANT_VIOLATION",
        +                  "UPSTREAM_TIMEOUT",
        +                  "BACKEND_FAILURE",
        +                  "IP_BLOCKED",
        +                  "RESOURCE_NOT_FOUND",
        +                  "RENDER_FAILURE",
        +                  "OCR_LOW_CONFIDENCE",
        +                  "MANUAL_REVIEW_REQUIRED",
        +                  "ACCEPTANCE_REQUIRED",
        +                  "INVALID_TOKEN"
        +                ],
        +                "type": "string"
        +              },
        +              "details": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "message": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "recoverable": {
        +                "type": "boolean"
        +              },
        +              "retry_after_seconds": {
        +                "anyOf": [
        +                  {
        +                    "minimum": 0,
        +                    "type": "integer"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              }
        +            },
        +            "required": [
        +              "code",
        +              "message",
        +              "recoverable"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      }
        +    },
        +    "required": [
        +      "_meta"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "_meta": {
        +        "additionalProperties": false,
        +        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        +        "properties": {
        +          "deliverables": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        +                "properties": {
        +                  "docx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "dxf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "expires_at": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  },
        +                  "pdf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "xlsx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "expires_at"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "document_id": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "issued_at": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "output_mode": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Surfaces what a trimmed ``output_mode`` withheld from ``data``.\n\nA trimmed mode (``summary`` / ``material_schedule`` / ``boq`` /\n``boq_with_backup``) withholds\nalready-computed fields to keep the chat payload small. The withheld value\nreads to a client agent as \"capability missing\" (the box-culvert \"geometry\nbuilder isn't firing\" scare) rather than \"pared for size\": ``drawing`` and\n``audit_trail`` appear as ``null``, ``boq_rows`` as an empty list ``[]``\n(its type forbids ``null``) — both indistinguishable from a genuine absent\nresult. This names the withheld fields and the exact mode that brings each\nback, so the value is unambiguous. Absent on the default ``full_json`` mode\n— nothing is withheld, nothing to point at.",
        +                "properties": {
        +                  "mode": {
        +                    "enum": [
        +                      "summary",
        +                      "material_schedule",
        +                      "boq",
        +                      "boq_with_backup"
        +                    ],
        +                    "type": "string"
        +                  },
        +                  "omitted_fields": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "minItems": 1,
        +                    "type": "array"
        +                  },
        +                  "retrieve_with": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "mode",
        +                  "omitted_fields",
        +                  "retrieve_with"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "rate_limit_remaining": {
        +            "anyOf": [
        +              {
        +                "minimum": 0,
        +                "type": "integer"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "request_id": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "schema_version": {
        +            "const": "1.0.0",
        +            "default": "1.0.0",
        +            "type": "string"
        +          },
        +          "scope_boundary": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        +                "properties": {
        +                  "not_in_scope": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "produced": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "recommended_companions": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "type": "string"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "produced",
        +                  "not_in_scope"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tier": {
        +            "enum": [
        +              "free",
        +              "paid"
        +            ],
        +            "type": "string"
        +          },
        +          "tier_upgrade": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        +                "properties": {
        +                  "available_tiers": {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        +                      "properties": {
        +                        "billing": {
        +                          "enum": [
        +                            "one_off",
        +                            "monthly",
        +                            "annual"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "currency": {
        +                          "enum": [
        +                            "GBP",
        +                            "SGD",
        +                            "EUR",
        +                            "USD",
        +                            "CAD",
        +                            "AUD",
        +                            "NZD",
        +                            "MYR"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "display_name": {
        +                          "type": "string"
        +                        },
        +                        "price_local": {
        +                          "type": "number"
        +                        },
        +                        "tier_slug": {
        +                          "enum": [
        +                            "7_day_pass",
        +                            "solo",
        +                            "studio",
        +                            "practice"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "unlock_summary": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "tier_slug",
        +                        "display_name",
        +                        "price_local",
        +                        "currency",
        +                        "billing",
        +                        "unlock_summary"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "current_tier": {
        +                    "const": "free",
        +                    "default": "free",
        +                    "type": "string"
        +                  },
        +                  "pass_credit": {
        +                    "anyOf": [
        +                      {
        +                        "additionalProperties": false,
        +                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        +                        "properties": {
        +                          "amount_local": {
        +                            "type": "number"
        +                          },
        +                          "applies_to": {
        +                            "const": "solo_first_month",
        +                            "default": "solo_first_month",
        +                            "type": "string"
        +                          },
        +                          "currency": {
        +                            "type": "string"
        +                          },
        +                          "redeemable_until": {
        +                            "type": "string"
        +                          }
        +                        },
        +                        "required": [
        +                          "amount_local",
        +                          "currency",
        +                          "redeemable_until"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "pricing_url": {
        +                    "default": "https://civilquants.com/pricing",
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "available_tiers"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tos_url": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "upgrade_hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "warranty_disclaimer": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          }
        +        },
        +        "required": [
        +          "request_id",
        +          "issued_at",
        +          "tier"
        +        ],
        +        "type": "object"
        +      },
        +      "data": {
        +        "default": null,
        +        "title": "Data"
        +      },
        +      "error": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        +            "properties": {
        +              "code": {
        +                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        +                "enum": [
        +                  "RATE_LIMIT_EXCEEDED",
        +                  "TIER_INSUFFICIENT",
        +                  "INVALID_INPUT",
        +                  "SCHEMA_VERSION_MISMATCH",
        +                  "SCHEMA_INVARIANT_VIOLATION",
        +                  "UPSTREAM_TIMEOUT",
        +                  "BACKEND_FAILURE",
        +                  "IP_BLOCKED",
        +                  "RESOURCE_NOT_FOUND",
        +                  "RENDER_FAILURE",
        +                  "OCR_LOW_CONFIDENCE",
        +                  "MANUAL_REVIEW_REQUIRED",
        +                  "ACCEPTANCE_REQUIRED",
        +                  "INVALID_TOKEN"
        +                ],
        +                "type": "string"
        +              },
        +              "details": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "message": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "recoverable": {
        +                "type": "boolean"
        +              },
        +              "retry_after_seconds": {
        +                "anyOf": [
        +                  {
        +                    "minimum": 0,
        +                    "type": "integer"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              }
        +            },
        +            "required": [
        +              "code",
        +              "message",
        +              "recoverable"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      }
        +    },
        +    "required": [
        +      "_meta"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedcompute_parapet2 fields changed
      • changedInput schema / properties / output_mode / enum
        Previous value: -[
        -  "summary",
        -  "boq",
        -  "boq_with_backup",
        -  "full_json"
        -]New value: +[
        +  "summary",
        +  "material_schedule",
        +  "boq",
        +  "boq_with_backup",
        +  "full_json"
        +]
      • changedOutput schema / properties / result / anyOf
        Previous value: -[
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "_meta": {
        -        "additionalProperties": false,
        -        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        -        "properties": {
        -          "deliverables": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        -                "properties": {
        -                  "docx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "dxf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "expires_at": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  },
        -                  "pdf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "xlsx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "expires_at"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "document_id": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "issued_at": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "output_mode": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Surfaces what a trimmed ``output_mode`` withheld from ``data``.\n\nA trimmed mode (``summary`` / ``boq`` / ``boq_with_backup``) withholds\nalready-computed fields to keep the chat payload small. The withheld value\nreads to a client agent as \"capability missing\" (the box-culvert \"geometry\nbuilder isn't firing\" scare) rather than \"pared for size\": ``drawing`` and\n``audit_trail`` appear as ``null``, ``boq_rows`` as an empty list ``[]``\n(its type forbids ``null``) — both indistinguishable from a genuine absent\nresult. This names the withheld fields and the exact mode that brings each\nback, so the value is unambiguous. Absent on the default ``full_json`` mode\n— nothing is withheld, nothing to point at.",
        -                "properties": {
        -                  "mode": {
        -                    "enum": [
        -                      "summary",
        -                      "boq",
        -                      "boq_with_backup"
        -                    ],
        -                    "type": "string"
        -                  },
        -                  "omitted_fields": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "minItems": 1,
        -                    "type": "array"
        -                  },
        -                  "retrieve_with": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "mode",
        -                  "omitted_fields",
        -                  "retrieve_with"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "rate_limit_remaining": {
        -            "anyOf": [
        -              {
        -                "minimum": 0,
        -                "type": "integer"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "request_id": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "schema_version": {
        -            "const": "1.0.0",
        -            "default": "1.0.0",
        -            "type": "string"
        -          },
        -          "scope_boundary": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        -                "properties": {
        -                  "not_in_scope": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "produced": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "recommended_companions": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "type": "string"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "produced",
        -                  "not_in_scope"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tier": {
        -            "enum": [
        -              "free",
        -              "paid"
        -            ],
        -            "type": "string"
        -          },
        -          "tier_upgrade": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        -                "properties": {
        -                  "available_tiers": {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        -                      "properties": {
        -                        "billing": {
        -                          "enum": [
        -                            "one_off",
        -                            "monthly",
        -                            "annual"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "currency": {
        -                          "enum": [
        -                            "GBP",
        -                            "SGD",
        -                            "EUR",
        -                            "USD",
        -                            "CAD",
        -                            "AUD",
        -                            "NZD",
        -                            "MYR"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "display_name": {
        -                          "type": "string"
        -                        },
        -                        "price_local": {
        -                          "type": "number"
        -                        },
        -                        "tier_slug": {
        -                          "enum": [
        -                            "7_day_pass",
        -                            "solo",
        -                            "studio",
        -                            "practice"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "unlock_summary": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "tier_slug",
        -                        "display_name",
        -                        "price_local",
        -                        "currency",
        -                        "billing",
        -                        "unlock_summary"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "current_tier": {
        -                    "const": "free",
        -                    "default": "free",
        -                    "type": "string"
        -                  },
        -                  "pass_credit": {
        -                    "anyOf": [
        -                      {
        -                        "additionalProperties": false,
        -                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        -                        "properties": {
        -                          "amount_local": {
        -                            "type": "number"
        -                          },
        -                          "applies_to": {
        -                            "const": "solo_first_month",
        -                            "default": "solo_first_month",
        -                            "type": "string"
        -                          },
        -                          "currency": {
        -                            "type": "string"
        -                          },
        -                          "redeemable_until": {
        -                            "type": "string"
        -                          }
        -                        },
        -                        "required": [
        -                          "amount_local",
        -                          "currency",
        -                          "redeemable_until"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "pricing_url": {
        -                    "default": "https://civilquants.com/pricing",
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "available_tiers"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tos_url": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "upgrade_hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "warranty_disclaimer": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          }
        -        },
        -        "required": [
        -          "request_id",
        -          "issued_at",
        -          "tier"
        -        ],
        -        "type": "object"
        -      },
        -      "data": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Schema § 1.1 — the typed payload returned inside `MCPResponse[ComputeResult]`.\n\nFree-tier responses omit `drawings` (the downloadable CAD artefact\npointers — the paid differentiator); the bridge enforces this. The\n`audit_trail` and the inline `drawing` preview are present on BOTH tiers\n(V1 ALIGN / 60th-fire D + C). `text_summary` is bounded to 2000 chars —\nkeeps the LLM-facing summary token-cheap and forces longer narrative into\nBoQ row descriptions where it belongs. `warnings` is the non-fatal\ngeometry advisory list (both tiers).",
        -            "properties": {
        -              "assembly_slug": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "audit_trail": {
        -                "anyOf": [
        -                  {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.7 — paid-tier audit-trail entry.\n\nOne entry per BoQ row; `boq_row_index` ties to the row position in\n`ComputeResult.boq_rows`. `derivation` is the human-readable formula\nwalk-through; `formula` is the optional formal expression.",
        -                      "properties": {
        -                        "boq_row_index": {
        -                          "minimum": 0,
        -                          "type": "integer"
        -                        },
        -                        "derivation": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "formula": {
        -                          "anyOf": [
        -                            {
        -                              "type": "string"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ],
        -                          "default": null
        -                        },
        -                        "id": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "parameters_referenced": {
        -                          "items": {
        -                            "type": "string"
        -                          },
        -                          "type": "array"
        -                        }
        -                      },
        -                      "required": [
        -                        "id",
        -                        "boq_row_index",
        -                        "derivation"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "boq_rows": {
        -                "items": {
        -                  "additionalProperties": false,
        -                  "description": "Schema § 1.3 — a single bill row in the requested standard's format.\n\n`description` is the non-verbatim functional description per spec § 13.9 /\n§ 15 invariant — NEVER reproduces a standard's verbatim clause text.\n`rate` / `amount` ship null because rates are commodity data the customer\nowns; the engine's job is the measurement, not the pricing.",
        -                  "properties": {
        -                    "amount": {
        -                      "anyOf": [
        -                        {
        -                          "type": "number"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "attribution": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "audit_id": {
        -                      "anyOf": [
        -                        {
        -                          "type": "string"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "description": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "quantity": {
        -                      "minimum": 0,
        -                      "type": "number"
        -                    },
        -                    "rate": {
        -                      "anyOf": [
        -                        {
        -                          "type": "number"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "unit": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "work_section": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    }
        -                  },
        -                  "required": [
        -                    "work_section",
        -                    "description",
        -                    "quantity",
        -                    "unit",
        -                    "attribution"
        -                  ],
        -                  "type": "object"
        -                },
        -                "type": "array"
        -              },
        -              "drawing": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": false,
        -                    "description": "Schema § 1.6a — inline server-rendered SVG preview of the geometry.\n\nThe MCP mirror of the web ``/compute`` response's ``drawing`` field\n(``api.schemas.compute.DrawingRef``): the same on-screen dimensioned\ndrawing both tiers see in the workspace, surfaced on the MCP compute\nresponse so a chat client can render it inline (60th-fire item C). This\nis the on-screen preview — present on BOTH tiers per the free/paid\nboundary; the downloadable CAD artefacts (DXF / dimensioned PDF) remain\nthe paid differentiator via the export tools.\n\nDefined here rather than importing ``DrawingRef`` because the web\n``schemas`` package imports back into this module (``schemas.render``),\nso reusing it would create an import cycle — the MCP wire contract keeps\nits own copy, the same pattern as ``BoQRow`` / ``DrawingReference``.",
        -                    "properties": {
        -                      "entity_count": {
        -                        "minimum": 0,
        -                        "type": "integer"
        -                      },
        -                      "svg_b64": {
        -                        "minLength": 1,
        -                        "type": "string"
        -                      },
        -                      "unit_of_drawing": {
        -                        "const": "m",
        -                        "default": "m",
        -                        "type": "string"
        -                      },
        -                      "viewbox_height": {
        -                        "exclusiveMinimum": 0,
        -                        "type": "number"
        -                      },
        -                      "viewbox_width": {
        -                        "exclusiveMinimum": 0,
        -                        "type": "number"
        -                      },
        -                      "viewbox_x": {
        -                        "type": "number"
        -                      },
        -                      "viewbox_y": {
        -                        "type": "number"
        -                      }
        -                    },
        -                    "required": [
        -                      "svg_b64",
        -                      "viewbox_x",
        -                      "viewbox_y",
        -                      "viewbox_width",
        -                      "viewbox_height",
        -                      "entity_count"
        -                    ],
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "drawings": {
        -                "anyOf": [
        -                  {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.6 — paid-tier drawing artefact pointer.\n\n`url` is an R2-signed URL; expiry is carried in `_meta.deliverables.expires_at`\non the envelope (not duplicated here). `layers` is DXF-only; PDF/SVG\ncallers omit it.",
        -                      "properties": {
        -                        "drawing_type": {
        -                          "enum": [
        -                            "section",
        -                            "plan",
        -                            "elevation",
        -                            "isometric",
        -                            "detail"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "format": {
        -                          "enum": [
        -                            "DXF",
        -                            "PDF",
        -                            "SVG"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "layers": {
        -                          "anyOf": [
        -                            {
        -                              "items": {
        -                                "type": "string"
        -                              },
        -                              "type": "array"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ],
        -                          "default": null
        -                        },
        -                        "scale": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "sheet_size": {
        -                          "enum": [
        -                            "A1",
        -                            "A2",
        -                            "A3",
        -                            "A4"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "url": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "drawing_type",
        -                        "format",
        -                        "url",
        -                        "sheet_size",
        -                        "scale"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "parameters_used": {
        -                "additionalProperties": false,
        -                "description": "Schema § 1.2 — the parameter snapshot the engine actually used.\n\nSplits user-supplied values from engine defaults so customers can see\nwhich numbers came from them and which the engine filled in. Every\ndefaulted parameter SHOULD have a corresponding entry in `assumptions`\n— the bridge layer enforces this when wrapping engine output.",
        -                "properties": {
        -                  "assumptions": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "engine_defaults": {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  "user_supplied": {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  }
        -                },
        -                "type": "object"
        -              },
        -              "standard": {
        -                "enum": [
        -                  "CESMM4",
        -                  "NRM2",
        -                  "SMM7",
        -                  "MMHW"
        -                ],
        -                "type": "string"
        -              },
        -              "text_summary": {
        -                "maxLength": 2000,
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "totals_summary": {
        -                "additionalProperties": false,
        -                "description": "Schema § 1.4 — totals_summary as a typed wrapper around the free-form dict.\n\nWire shape is a flat object (`{\"concrete_m3\": {...}, \"rebar_t\": {...}}`).\nWe model it as `RootModel`-equivalent via `model_config(extra=\"allow\")`\n+ a single `__root__`-style `entries` dict. Pydantic v2 recommends\n`RootModel` for free-form roots; using a wrapper class keeps the import\nsurface uniform with the rest of this module.",
        -                "properties": {
        -                  "entries": {
        -                    "additionalProperties": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.4 — single material/work-class total entry.",
        -                      "properties": {
        -                        "quantity": {
        -                          "minimum": 0,
        -                          "type": "number"
        -                        },
        -                        "unit": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "quantity",
        -                        "unit"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "object"
        -                  }
        -                },
        -                "type": "object"
        -              },
        -              "warnings": {
        -                "items": {
        -                  "additionalProperties": false,
        -                  "description": "Schema § 1.8 — a non-fatal geometry advisory (56th-fire T2).\n\nThe wire projection of the engine's `core.GeometryWarning`. Advisory only:\na warning NEVER changes a measured quantity — it flags geometry that is\nvalid but likely a mistake (e.g. a stale dependent-height default). Present\non BOTH tiers — a correctness/safety signal, not a paid feature.",
        -                  "properties": {
        -                    "affected_params": {
        -                      "items": {
        -                        "type": "string"
        -                      },
        -                      "type": "array"
        -                    },
        -                    "code": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "detail": {
        -                      "additionalProperties": {
        -                        "type": "number"
        -                      },
        -                      "type": "object"
        -                    },
        -                    "message": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "severity": {
        -                      "enum": [
        -                        "info",
        -                        "advisory",
        -                        "caution"
        -                      ],
        -                      "type": "string"
        -                    }
        -                  },
        -                  "required": [
        -                    "code",
        -                    "severity",
        -                    "message"
        -                  ],
        -                  "type": "object"
        -                },
        -                "type": "array"
        -              }
        -            },
        -            "required": [
        -              "assembly_slug",
        -              "standard",
        -              "parameters_used",
        -              "boq_rows",
        -              "totals_summary",
        -              "text_summary"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      },
        -      "error": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        -            "properties": {
        -              "code": {
        -                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        -                "enum": [
        -                  "RATE_LIMIT_EXCEEDED",
        -                  "TIER_INSUFFICIENT",
        -                  "INVALID_INPUT",
        -                  "SCHEMA_VERSION_MISMATCH",
        -                  "SCHEMA_INVARIANT_VIOLATION",
        -                  "UPSTREAM_TIMEOUT",
        -                  "BACKEND_FAILURE",
        -                  "IP_BLOCKED",
        -                  "RESOURCE_NOT_FOUND",
        -                  "RENDER_FAILURE",
        -                  "OCR_LOW_CONFIDENCE",
        -                  "MANUAL_REVIEW_REQUIRED",
        -                  "ACCEPTANCE_REQUIRED",
        -                  "INVALID_TOKEN"
        -                ],
        -                "type": "string"
        -              },
        -              "details": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "message": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "recoverable": {
        -                "type": "boolean"
        -              },
        -              "retry_after_seconds": {
        -                "anyOf": [
        -                  {
        -                    "minimum": 0,
        -                    "type": "integer"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              }
        -            },
        -            "required": [
        -              "code",
        -              "message",
        -              "recoverable"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      }
        -    },
        -    "required": [
        -      "_meta"
        -    ],
        -    "type": "object"
        -  },
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "_meta": {
        -        "additionalProperties": false,
        -        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        -        "properties": {
        -          "deliverables": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        -                "properties": {
        -                  "docx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "dxf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "expires_at": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  },
        -                  "pdf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "xlsx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "expires_at"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "document_id": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "issued_at": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "output_mode": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Surfaces what a trimmed ``output_mode`` withheld from ``data``.\n\nA trimmed mode (``summary`` / ``boq`` / ``boq_with_backup``) withholds\nalready-computed fields to keep the chat payload small. The withheld value\nreads to a client agent as \"capability missing\" (the box-culvert \"geometry\nbuilder isn't firing\" scare) rather than \"pared for size\": ``drawing`` and\n``audit_trail`` appear as ``null``, ``boq_rows`` as an empty list ``[]``\n(its type forbids ``null``) — both indistinguishable from a genuine absent\nresult. This names the withheld fields and the exact mode that brings each\nback, so the value is unambiguous. Absent on the default ``full_json`` mode\n— nothing is withheld, nothing to point at.",
        -                "properties": {
        -                  "mode": {
        -                    "enum": [
        -                      "summary",
        -                      "boq",
        -                      "boq_with_backup"
        -                    ],
        -                    "type": "string"
        -                  },
        -                  "omitted_fields": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "minItems": 1,
        -                    "type": "array"
        -                  },
        -                  "retrieve_with": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "mode",
        -                  "omitted_fields",
        -                  "retrieve_with"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "rate_limit_remaining": {
        -            "anyOf": [
        -              {
        -                "minimum": 0,
        -                "type": "integer"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "request_id": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "schema_version": {
        -            "const": "1.0.0",
        -            "default": "1.0.0",
        -            "type": "string"
        -          },
        -          "scope_boundary": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        -                "properties": {
        -                  "not_in_scope": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "produced": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "recommended_companions": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "type": "string"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "produced",
        -                  "not_in_scope"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tier": {
        -            "enum": [
        -              "free",
        -              "paid"
        -            ],
        -            "type": "string"
        -          },
        -          "tier_upgrade": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        -                "properties": {
        -                  "available_tiers": {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        -                      "properties": {
        -                        "billing": {
        -                          "enum": [
        -                            "one_off",
        -                            "monthly",
        -                            "annual"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "currency": {
        -                          "enum": [
        -                            "GBP",
        -                            "SGD",
        -                            "EUR",
        -                            "USD",
        -                            "CAD",
        -                            "AUD",
        -                            "NZD",
        -                            "MYR"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "display_name": {
        -                          "type": "string"
        -                        },
        -                        "price_local": {
        -                          "type": "number"
        -                        },
        -                        "tier_slug": {
        -                          "enum": [
        -                            "7_day_pass",
        -                            "solo",
        -                            "studio",
        -                            "practice"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "unlock_summary": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "tier_slug",
        -                        "display_name",
        -                        "price_local",
        -                        "currency",
        -                        "billing",
        -                        "unlock_summary"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "current_tier": {
        -                    "const": "free",
        -                    "default": "free",
        -                    "type": "string"
        -                  },
        -                  "pass_credit": {
        -                    "anyOf": [
        -                      {
        -                        "additionalProperties": false,
        -                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        -                        "properties": {
        -                          "amount_local": {
        -                            "type": "number"
        -                          },
        -                          "applies_to": {
        -                            "const": "solo_first_month",
        -                            "default": "solo_first_month",
        -                            "type": "string"
        -                          },
        -                          "currency": {
        -                            "type": "string"
        -                          },
        -                          "redeemable_until": {
        -                            "type": "string"
        -                          }
        -                        },
        -                        "required": [
        -                          "amount_local",
        -                          "currency",
        -                          "redeemable_until"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "pricing_url": {
        -                    "default": "https://civilquants.com/pricing",
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "available_tiers"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tos_url": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "upgrade_hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "warranty_disclaimer": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          }
        -        },
        -        "required": [
        -          "request_id",
        -          "issued_at",
        -          "tier"
        -        ],
        -        "type": "object"
        -      },
        -      "data": {
        -        "default": null,
        -        "title": "Data"
        -      },
        -      "error": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        -            "properties": {
        -              "code": {
        -                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        -                "enum": [
        -                  "RATE_LIMIT_EXCEEDED",
        -                  "TIER_INSUFFICIENT",
        -                  "INVALID_INPUT",
        -                  "SCHEMA_VERSION_MISMATCH",
        -                  "SCHEMA_INVARIANT_VIOLATION",
        -                  "UPSTREAM_TIMEOUT",
        -                  "BACKEND_FAILURE",
        -                  "IP_BLOCKED",
        -                  "RESOURCE_NOT_FOUND",
        -                  "RENDER_FAILURE",
        -                  "OCR_LOW_CONFIDENCE",
        -                  "MANUAL_REVIEW_REQUIRED",
        -                  "ACCEPTANCE_REQUIRED",
        -                  "INVALID_TOKEN"
        -                ],
        -                "type": "string"
        -              },
        -              "details": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "message": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "recoverable": {
        -                "type": "boolean"
        -              },
        -              "retry_after_seconds": {
        -                "anyOf": [
        -                  {
        -                    "minimum": 0,
        -                    "type": "integer"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              }
        -            },
        -            "required": [
        -              "code",
        -              "message",
        -              "recoverable"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      }
        -    },
        -    "required": [
        -      "_meta"
        -    ],
        -    "type": "object"
        -  }
        -]New value: +[
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "_meta": {
        +        "additionalProperties": false,
        +        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        +        "properties": {
        +          "deliverables": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        +                "properties": {
        +                  "docx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "dxf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "expires_at": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  },
        +                  "pdf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "xlsx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "expires_at"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "document_id": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "issued_at": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "output_mode": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Surfaces what a trimmed ``output_mode`` withheld from ``data``.\n\nA trimmed mode (``summary`` / ``material_schedule`` / ``boq`` /\n``boq_with_backup``) withholds\nalready-computed fields to keep the chat payload small. The withheld value\nreads to a client agent as \"capability missing\" (the box-culvert \"geometry\nbuilder isn't firing\" scare) rather than \"pared for size\": ``drawing`` and\n``audit_trail`` appear as ``null``, ``boq_rows`` as an empty list ``[]``\n(its type forbids ``null``) — both indistinguishable from a genuine absent\nresult. This names the withheld fields and the exact mode that brings each\nback, so the value is unambiguous. Absent on the default ``full_json`` mode\n— nothing is withheld, nothing to point at.",
        +                "properties": {
        +                  "mode": {
        +                    "enum": [
        +                      "summary",
        +                      "material_schedule",
        +                      "boq",
        +                      "boq_with_backup"
        +                    ],
        +                    "type": "string"
        +                  },
        +                  "omitted_fields": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "minItems": 1,
        +                    "type": "array"
        +                  },
        +                  "retrieve_with": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "mode",
        +                  "omitted_fields",
        +                  "retrieve_with"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "rate_limit_remaining": {
        +            "anyOf": [
        +              {
        +                "minimum": 0,
        +                "type": "integer"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "request_id": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "schema_version": {
        +            "const": "1.0.0",
        +            "default": "1.0.0",
        +            "type": "string"
        +          },
        +          "scope_boundary": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        +                "properties": {
        +                  "not_in_scope": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "produced": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "recommended_companions": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "type": "string"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "produced",
        +                  "not_in_scope"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tier": {
        +            "enum": [
        +              "free",
        +              "paid"
        +            ],
        +            "type": "string"
        +          },
        +          "tier_upgrade": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        +                "properties": {
        +                  "available_tiers": {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        +                      "properties": {
        +                        "billing": {
        +                          "enum": [
        +                            "one_off",
        +                            "monthly",
        +                            "annual"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "currency": {
        +                          "enum": [
        +                            "GBP",
        +                            "SGD",
        +                            "EUR",
        +                            "USD",
        +                            "CAD",
        +                            "AUD",
        +                            "NZD",
        +                            "MYR"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "display_name": {
        +                          "type": "string"
        +                        },
        +                        "price_local": {
        +                          "type": "number"
        +                        },
        +                        "tier_slug": {
        +                          "enum": [
        +                            "7_day_pass",
        +                            "solo",
        +                            "studio",
        +                            "practice"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "unlock_summary": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "tier_slug",
        +                        "display_name",
        +                        "price_local",
        +                        "currency",
        +                        "billing",
        +                        "unlock_summary"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "current_tier": {
        +                    "const": "free",
        +                    "default": "free",
        +                    "type": "string"
        +                  },
        +                  "pass_credit": {
        +                    "anyOf": [
        +                      {
        +                        "additionalProperties": false,
        +                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        +                        "properties": {
        +                          "amount_local": {
        +                            "type": "number"
        +                          },
        +                          "applies_to": {
        +                            "const": "solo_first_month",
        +                            "default": "solo_first_month",
        +                            "type": "string"
        +                          },
        +                          "currency": {
        +                            "type": "string"
        +                          },
        +                          "redeemable_until": {
        +                            "type": "string"
        +                          }
        +                        },
        +                        "required": [
        +                          "amount_local",
        +                          "currency",
        +                          "redeemable_until"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "pricing_url": {
        +                    "default": "https://civilquants.com/pricing",
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "available_tiers"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tos_url": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "upgrade_hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "warranty_disclaimer": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          }
        +        },
        +        "required": [
        +          "request_id",
        +          "issued_at",
        +          "tier"
        +        ],
        +        "type": "object"
        +      },
        +      "data": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Schema § 1.1 — the typed payload returned inside `MCPResponse[ComputeResult]`.\n\nFree-tier responses omit `drawings` (the downloadable CAD artefact\npointers — the paid differentiator); the bridge enforces this. The\n`audit_trail` and the inline `drawing` preview are present on BOTH tiers\n(V1 ALIGN / 60th-fire D + C). `text_summary` is bounded to 2000 chars —\nkeeps the LLM-facing summary token-cheap and forces longer narrative into\nBoQ row descriptions where it belongs. `warnings` is the non-fatal\ngeometry advisory list (both tiers).",
        +            "properties": {
        +              "assembly_slug": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "audit_trail": {
        +                "anyOf": [
        +                  {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.7 — paid-tier audit-trail entry.\n\nOne entry per BoQ row; `boq_row_index` ties to the row position in\n`ComputeResult.boq_rows`. `derivation` is the human-readable formula\nwalk-through; `formula` is the optional formal expression.",
        +                      "properties": {
        +                        "boq_row_index": {
        +                          "minimum": 0,
        +                          "type": "integer"
        +                        },
        +                        "derivation": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "formula": {
        +                          "anyOf": [
        +                            {
        +                              "type": "string"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ],
        +                          "default": null
        +                        },
        +                        "id": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "parameters_referenced": {
        +                          "items": {
        +                            "type": "string"
        +                          },
        +                          "type": "array"
        +                        }
        +                      },
        +                      "required": [
        +                        "id",
        +                        "boq_row_index",
        +                        "derivation"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "boq_rows": {
        +                "items": {
        +                  "additionalProperties": false,
        +                  "description": "Schema § 1.3 — a single bill row in the requested standard's format.\n\n`description` is the non-verbatim functional description per spec § 13.9 /\n§ 15 invariant — NEVER reproduces a standard's verbatim clause text.\n`rate` / `amount` ship null because rates are commodity data the customer\nowns; the engine's job is the measurement, not the pricing.",
        +                  "properties": {
        +                    "amount": {
        +                      "anyOf": [
        +                        {
        +                          "type": "number"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "attribution": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "audit_id": {
        +                      "anyOf": [
        +                        {
        +                          "type": "string"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "description": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "quantity": {
        +                      "minimum": 0,
        +                      "type": "number"
        +                    },
        +                    "rate": {
        +                      "anyOf": [
        +                        {
        +                          "type": "number"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "unit": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "work_section": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    }
        +                  },
        +                  "required": [
        +                    "work_section",
        +                    "description",
        +                    "quantity",
        +                    "unit",
        +                    "attribution"
        +                  ],
        +                  "type": "object"
        +                },
        +                "type": "array"
        +              },
        +              "drawing": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": false,
        +                    "description": "Schema § 1.6a — inline server-rendered SVG preview of the geometry.\n\nThe MCP mirror of the web ``/compute`` response's ``drawing`` field\n(``api.schemas.compute.DrawingRef``): the same on-screen dimensioned\ndrawing both tiers see in the workspace, surfaced on the MCP compute\nresponse so a chat client can render it inline (60th-fire item C). This\nis the on-screen preview — present on BOTH tiers per the free/paid\nboundary; the downloadable CAD artefacts (DXF / dimensioned PDF) remain\nthe paid differentiator via the export tools.\n\nDefined here rather than importing ``DrawingRef`` because the web\n``schemas`` package imports back into this module (``schemas.render``),\nso reusing it would create an import cycle — the MCP wire contract keeps\nits own copy, the same pattern as ``BoQRow`` / ``DrawingReference``.",
        +                    "properties": {
        +                      "entity_count": {
        +                        "minimum": 0,
        +                        "type": "integer"
        +                      },
        +                      "svg_b64": {
        +                        "minLength": 1,
        +                        "type": "string"
        +                      },
        +                      "unit_of_drawing": {
        +                        "const": "m",
        +                        "default": "m",
        +                        "type": "string"
        +                      },
        +                      "viewbox_height": {
        +                        "exclusiveMinimum": 0,
        +                        "type": "number"
        +                      },
        +                      "viewbox_width": {
        +                        "exclusiveMinimum": 0,
        +                        "type": "number"
        +                      },
        +                      "viewbox_x": {
        +                        "type": "number"
        +                      },
        +                      "viewbox_y": {
        +                        "type": "number"
        +                      }
        +                    },
        +                    "required": [
        +                      "svg_b64",
        +                      "viewbox_x",
        +                      "viewbox_y",
        +                      "viewbox_width",
        +                      "viewbox_height",
        +                      "entity_count"
        +                    ],
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "drawings": {
        +                "anyOf": [
        +                  {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.6 — paid-tier drawing artefact pointer.\n\n`url` is an R2-signed URL; expiry is carried in `_meta.deliverables.expires_at`\non the envelope (not duplicated here). `layers` is DXF-only; PDF/SVG\ncallers omit it.",
        +                      "properties": {
        +                        "drawing_type": {
        +                          "enum": [
        +                            "section",
        +                            "plan",
        +                            "elevation",
        +                            "isometric",
        +                            "detail"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "format": {
        +                          "enum": [
        +                            "DXF",
        +                            "PDF",
        +                            "SVG"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "layers": {
        +                          "anyOf": [
        +                            {
        +                              "items": {
        +                                "type": "string"
        +                              },
        +                              "type": "array"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ],
        +                          "default": null
        +                        },
        +                        "scale": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "sheet_size": {
        +                          "enum": [
        +                            "A1",
        +                            "A2",
        +                            "A3",
        +                            "A4"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "url": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "drawing_type",
        +                        "format",
        +                        "url",
        +                        "sheet_size",
        +                        "scale"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "parameters_used": {
        +                "additionalProperties": false,
        +                "description": "Schema § 1.2 — the parameter snapshot the engine actually used.\n\nSplits user-supplied values from engine defaults so customers can see\nwhich numbers came from them and which the engine filled in. Every\ndefaulted parameter SHOULD have a corresponding entry in `assumptions`\n— the bridge layer enforces this when wrapping engine output.",
        +                "properties": {
        +                  "assumptions": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "engine_defaults": {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  "user_supplied": {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  }
        +                },
        +                "type": "object"
        +              },
        +              "standard": {
        +                "enum": [
        +                  "CESMM4",
        +                  "NRM2",
        +                  "SMM7",
        +                  "MMHW"
        +                ],
        +                "type": "string"
        +              },
        +              "text_summary": {
        +                "maxLength": 2000,
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "totals_summary": {
        +                "additionalProperties": false,
        +                "description": "Schema § 1.4 — totals_summary as a typed wrapper around the free-form dict.\n\nWire shape is a flat object (`{\"concrete_m3\": {...}, \"rebar_t\": {...}}`).\nWe model it as `RootModel`-equivalent via `model_config(extra=\"allow\")`\n+ a single `__root__`-style `entries` dict. Pydantic v2 recommends\n`RootModel` for free-form roots; using a wrapper class keeps the import\nsurface uniform with the rest of this module.",
        +                "properties": {
        +                  "entries": {
        +                    "additionalProperties": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.4 — single material/work-class total entry.",
        +                      "properties": {
        +                        "quantity": {
        +                          "minimum": 0,
        +                          "type": "number"
        +                        },
        +                        "unit": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "quantity",
        +                        "unit"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "object"
        +                  }
        +                },
        +                "type": "object"
        +              },
        +              "warnings": {
        +                "items": {
        +                  "additionalProperties": false,
        +                  "description": "Schema § 1.8 — a non-fatal geometry advisory (56th-fire T2).\n\nThe wire projection of the engine's `core.GeometryWarning`. Advisory only:\na warning NEVER changes a measured quantity — it flags geometry that is\nvalid but likely a mistake (e.g. a stale dependent-height default). Present\non BOTH tiers — a correctness/safety signal, not a paid feature.",
        +                  "properties": {
        +                    "affected_params": {
        +                      "items": {
        +                        "type": "string"
        +                      },
        +                      "type": "array"
        +                    },
        +                    "code": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "detail": {
        +                      "additionalProperties": {
        +                        "type": "number"
        +                      },
        +                      "type": "object"
        +                    },
        +                    "message": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "severity": {
        +                      "enum": [
        +                        "info",
        +                        "advisory",
        +                        "caution"
        +                      ],
        +                      "type": "string"
        +                    }
        +                  },
        +                  "required": [
        +                    "code",
        +                    "severity",
        +                    "message"
        +                  ],
        +                  "type": "object"
        +                },
        +                "type": "array"
        +              }
        +            },
        +            "required": [
        +              "assembly_slug",
        +              "standard",
        +              "parameters_used",
        +              "boq_rows",
        +              "totals_summary",
        +              "text_summary"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      },
        +      "error": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        +            "properties": {
        +              "code": {
        +                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        +                "enum": [
        +                  "RATE_LIMIT_EXCEEDED",
        +                  "TIER_INSUFFICIENT",
        +                  "INVALID_INPUT",
        +                  "SCHEMA_VERSION_MISMATCH",
        +                  "SCHEMA_INVARIANT_VIOLATION",
        +                  "UPSTREAM_TIMEOUT",
        +                  "BACKEND_FAILURE",
        +                  "IP_BLOCKED",
        +                  "RESOURCE_NOT_FOUND",
        +                  "RENDER_FAILURE",
        +                  "OCR_LOW_CONFIDENCE",
        +                  "MANUAL_REVIEW_REQUIRED",
        +                  "ACCEPTANCE_REQUIRED",
        +                  "INVALID_TOKEN"
        +                ],
        +                "type": "string"
        +              },
        +              "details": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "message": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "recoverable": {
        +                "type": "boolean"
        +              },
        +              "retry_after_seconds": {
        +                "anyOf": [
        +                  {
        +                    "minimum": 0,
        +                    "type": "integer"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              }
        +            },
        +            "required": [
        +              "code",
        +              "message",
        +              "recoverable"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      }
        +    },
        +    "required": [
        +      "_meta"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "_meta": {
        +        "additionalProperties": false,
        +        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        +        "properties": {
        +          "deliverables": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        +                "properties": {
        +                  "docx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "dxf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "expires_at": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  },
        +                  "pdf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "xlsx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "expires_at"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "document_id": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "issued_at": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "output_mode": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Surfaces what a trimmed ``output_mode`` withheld from ``data``.\n\nA trimmed mode (``summary`` / ``material_schedule`` / ``boq`` /\n``boq_with_backup``) withholds\nalready-computed fields to keep the chat payload small. The withheld value\nreads to a client agent as \"capability missing\" (the box-culvert \"geometry\nbuilder isn't firing\" scare) rather than \"pared for size\": ``drawing`` and\n``audit_trail`` appear as ``null``, ``boq_rows`` as an empty list ``[]``\n(its type forbids ``null``) — both indistinguishable from a genuine absent\nresult. This names the withheld fields and the exact mode that brings each\nback, so the value is unambiguous. Absent on the default ``full_json`` mode\n— nothing is withheld, nothing to point at.",
        +                "properties": {
        +                  "mode": {
        +                    "enum": [
        +                      "summary",
        +                      "material_schedule",
        +                      "boq",
        +                      "boq_with_backup"
        +                    ],
        +                    "type": "string"
        +                  },
        +                  "omitted_fields": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "minItems": 1,
        +                    "type": "array"
        +                  },
        +                  "retrieve_with": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "mode",
        +                  "omitted_fields",
        +                  "retrieve_with"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "rate_limit_remaining": {
        +            "anyOf": [
        +              {
        +                "minimum": 0,
        +                "type": "integer"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "request_id": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "schema_version": {
        +            "const": "1.0.0",
        +            "default": "1.0.0",
        +            "type": "string"
        +          },
        +          "scope_boundary": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        +                "properties": {
        +                  "not_in_scope": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "produced": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "recommended_companions": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "type": "string"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "produced",
        +                  "not_in_scope"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tier": {
        +            "enum": [
        +              "free",
        +              "paid"
        +            ],
        +            "type": "string"
        +          },
        +          "tier_upgrade": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        +                "properties": {
        +                  "available_tiers": {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        +                      "properties": {
        +                        "billing": {
        +                          "enum": [
        +                            "one_off",
        +                            "monthly",
        +                            "annual"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "currency": {
        +                          "enum": [
        +                            "GBP",
        +                            "SGD",
        +                            "EUR",
        +                            "USD",
        +                            "CAD",
        +                            "AUD",
        +                            "NZD",
        +                            "MYR"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "display_name": {
        +                          "type": "string"
        +                        },
        +                        "price_local": {
        +                          "type": "number"
        +                        },
        +                        "tier_slug": {
        +                          "enum": [
        +                            "7_day_pass",
        +                            "solo",
        +                            "studio",
        +                            "practice"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "unlock_summary": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "tier_slug",
        +                        "display_name",
        +                        "price_local",
        +                        "currency",
        +                        "billing",
        +                        "unlock_summary"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "current_tier": {
        +                    "const": "free",
        +                    "default": "free",
        +                    "type": "string"
        +                  },
        +                  "pass_credit": {
        +                    "anyOf": [
        +                      {
        +                        "additionalProperties": false,
        +                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        +                        "properties": {
        +                          "amount_local": {
        +                            "type": "number"
        +                          },
        +                          "applies_to": {
        +                            "const": "solo_first_month",
        +                            "default": "solo_first_month",
        +                            "type": "string"
        +                          },
        +                          "currency": {
        +                            "type": "string"
        +                          },
        +                          "redeemable_until": {
        +                            "type": "string"
        +                          }
        +                        },
        +                        "required": [
        +                          "amount_local",
        +                          "currency",
        +                          "redeemable_until"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "pricing_url": {
        +                    "default": "https://civilquants.com/pricing",
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "available_tiers"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tos_url": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "upgrade_hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "warranty_disclaimer": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          }
        +        },
        +        "required": [
        +          "request_id",
        +          "issued_at",
        +          "tier"
        +        ],
        +        "type": "object"
        +      },
        +      "data": {
        +        "default": null,
        +        "title": "Data"
        +      },
        +      "error": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        +            "properties": {
        +              "code": {
        +                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        +                "enum": [
        +                  "RATE_LIMIT_EXCEEDED",
        +                  "TIER_INSUFFICIENT",
        +                  "INVALID_INPUT",
        +                  "SCHEMA_VERSION_MISMATCH",
        +                  "SCHEMA_INVARIANT_VIOLATION",
        +                  "UPSTREAM_TIMEOUT",
        +                  "BACKEND_FAILURE",
        +                  "IP_BLOCKED",
        +                  "RESOURCE_NOT_FOUND",
        +                  "RENDER_FAILURE",
        +                  "OCR_LOW_CONFIDENCE",
        +                  "MANUAL_REVIEW_REQUIRED",
        +                  "ACCEPTANCE_REQUIRED",
        +                  "INVALID_TOKEN"
        +                ],
        +                "type": "string"
        +              },
        +              "details": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "message": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "recoverable": {
        +                "type": "boolean"
        +              },
        +              "retry_after_seconds": {
        +                "anyOf": [
        +                  {
        +                    "minimum": 0,
        +                    "type": "integer"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              }
        +            },
        +            "required": [
        +              "code",
        +              "message",
        +              "recoverable"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      }
        +    },
        +    "required": [
        +      "_meta"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedcompute_permeable_pavement2 fields changed
      • changedInput schema / properties / output_mode / enum
        Previous value: -[
        -  "summary",
        -  "boq",
        -  "boq_with_backup",
        -  "full_json"
        -]New value: +[
        +  "summary",
        +  "material_schedule",
        +  "boq",
        +  "boq_with_backup",
        +  "full_json"
        +]
      • changedOutput schema / properties / result / anyOf
        Previous value: -[
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "_meta": {
        -        "additionalProperties": false,
        -        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        -        "properties": {
        -          "deliverables": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        -                "properties": {
        -                  "docx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "dxf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "expires_at": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  },
        -                  "pdf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "xlsx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "expires_at"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "document_id": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "issued_at": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "output_mode": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Surfaces what a trimmed ``output_mode`` withheld from ``data``.\n\nA trimmed mode (``summary`` / ``boq`` / ``boq_with_backup``) withholds\nalready-computed fields to keep the chat payload small. The withheld value\nreads to a client agent as \"capability missing\" (the box-culvert \"geometry\nbuilder isn't firing\" scare) rather than \"pared for size\": ``drawing`` and\n``audit_trail`` appear as ``null``, ``boq_rows`` as an empty list ``[]``\n(its type forbids ``null``) — both indistinguishable from a genuine absent\nresult. This names the withheld fields and the exact mode that brings each\nback, so the value is unambiguous. Absent on the default ``full_json`` mode\n— nothing is withheld, nothing to point at.",
        -                "properties": {
        -                  "mode": {
        -                    "enum": [
        -                      "summary",
        -                      "boq",
        -                      "boq_with_backup"
        -                    ],
        -                    "type": "string"
        -                  },
        -                  "omitted_fields": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "minItems": 1,
        -                    "type": "array"
        -                  },
        -                  "retrieve_with": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "mode",
        -                  "omitted_fields",
        -                  "retrieve_with"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "rate_limit_remaining": {
        -            "anyOf": [
        -              {
        -                "minimum": 0,
        -                "type": "integer"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "request_id": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "schema_version": {
        -            "const": "1.0.0",
        -            "default": "1.0.0",
        -            "type": "string"
        -          },
        -          "scope_boundary": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        -                "properties": {
        -                  "not_in_scope": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "produced": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "recommended_companions": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "type": "string"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "produced",
        -                  "not_in_scope"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tier": {
        -            "enum": [
        -              "free",
        -              "paid"
        -            ],
        -            "type": "string"
        -          },
        -          "tier_upgrade": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        -                "properties": {
        -                  "available_tiers": {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        -                      "properties": {
        -                        "billing": {
        -                          "enum": [
        -                            "one_off",
        -                            "monthly",
        -                            "annual"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "currency": {
        -                          "enum": [
        -                            "GBP",
        -                            "SGD",
        -                            "EUR",
        -                            "USD",
        -                            "CAD",
        -                            "AUD",
        -                            "NZD",
        -                            "MYR"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "display_name": {
        -                          "type": "string"
        -                        },
        -                        "price_local": {
        -                          "type": "number"
        -                        },
        -                        "tier_slug": {
        -                          "enum": [
        -                            "7_day_pass",
        -                            "solo",
        -                            "studio",
        -                            "practice"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "unlock_summary": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "tier_slug",
        -                        "display_name",
        -                        "price_local",
        -                        "currency",
        -                        "billing",
        -                        "unlock_summary"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "current_tier": {
        -                    "const": "free",
        -                    "default": "free",
        -                    "type": "string"
        -                  },
        -                  "pass_credit": {
        -                    "anyOf": [
        -                      {
        -                        "additionalProperties": false,
        -                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        -                        "properties": {
        -                          "amount_local": {
        -                            "type": "number"
        -                          },
        -                          "applies_to": {
        -                            "const": "solo_first_month",
        -                            "default": "solo_first_month",
        -                            "type": "string"
        -                          },
        -                          "currency": {
        -                            "type": "string"
        -                          },
        -                          "redeemable_until": {
        -                            "type": "string"
        -                          }
        -                        },
        -                        "required": [
        -                          "amount_local",
        -                          "currency",
        -                          "redeemable_until"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "pricing_url": {
        -                    "default": "https://civilquants.com/pricing",
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "available_tiers"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tos_url": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "upgrade_hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "warranty_disclaimer": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          }
        -        },
        -        "required": [
        -          "request_id",
        -          "issued_at",
        -          "tier"
        -        ],
        -        "type": "object"
        -      },
        -      "data": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Schema § 1.1 — the typed payload returned inside `MCPResponse[ComputeResult]`.\n\nFree-tier responses omit `drawings` (the downloadable CAD artefact\npointers — the paid differentiator); the bridge enforces this. The\n`audit_trail` and the inline `drawing` preview are present on BOTH tiers\n(V1 ALIGN / 60th-fire D + C). `text_summary` is bounded to 2000 chars —\nkeeps the LLM-facing summary token-cheap and forces longer narrative into\nBoQ row descriptions where it belongs. `warnings` is the non-fatal\ngeometry advisory list (both tiers).",
        -            "properties": {
        -              "assembly_slug": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "audit_trail": {
        -                "anyOf": [
        -                  {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.7 — paid-tier audit-trail entry.\n\nOne entry per BoQ row; `boq_row_index` ties to the row position in\n`ComputeResult.boq_rows`. `derivation` is the human-readable formula\nwalk-through; `formula` is the optional formal expression.",
        -                      "properties": {
        -                        "boq_row_index": {
        -                          "minimum": 0,
        -                          "type": "integer"
        -                        },
        -                        "derivation": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "formula": {
        -                          "anyOf": [
        -                            {
        -                              "type": "string"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ],
        -                          "default": null
        -                        },
        -                        "id": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "parameters_referenced": {
        -                          "items": {
        -                            "type": "string"
        -                          },
        -                          "type": "array"
        -                        }
        -                      },
        -                      "required": [
        -                        "id",
        -                        "boq_row_index",
        -                        "derivation"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "boq_rows": {
        -                "items": {
        -                  "additionalProperties": false,
        -                  "description": "Schema § 1.3 — a single bill row in the requested standard's format.\n\n`description` is the non-verbatim functional description per spec § 13.9 /\n§ 15 invariant — NEVER reproduces a standard's verbatim clause text.\n`rate` / `amount` ship null because rates are commodity data the customer\nowns; the engine's job is the measurement, not the pricing.",
        -                  "properties": {
        -                    "amount": {
        -                      "anyOf": [
        -                        {
        -                          "type": "number"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "attribution": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "audit_id": {
        -                      "anyOf": [
        -                        {
        -                          "type": "string"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "description": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "quantity": {
        -                      "minimum": 0,
        -                      "type": "number"
        -                    },
        -                    "rate": {
        -                      "anyOf": [
        -                        {
        -                          "type": "number"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "unit": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "work_section": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    }
        -                  },
        -                  "required": [
        -                    "work_section",
        -                    "description",
        -                    "quantity",
        -                    "unit",
        -                    "attribution"
        -                  ],
        -                  "type": "object"
        -                },
        -                "type": "array"
        -              },
        -              "drawing": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": false,
        -                    "description": "Schema § 1.6a — inline server-rendered SVG preview of the geometry.\n\nThe MCP mirror of the web ``/compute`` response's ``drawing`` field\n(``api.schemas.compute.DrawingRef``): the same on-screen dimensioned\ndrawing both tiers see in the workspace, surfaced on the MCP compute\nresponse so a chat client can render it inline (60th-fire item C). This\nis the on-screen preview — present on BOTH tiers per the free/paid\nboundary; the downloadable CAD artefacts (DXF / dimensioned PDF) remain\nthe paid differentiator via the export tools.\n\nDefined here rather than importing ``DrawingRef`` because the web\n``schemas`` package imports back into this module (``schemas.render``),\nso reusing it would create an import cycle — the MCP wire contract keeps\nits own copy, the same pattern as ``BoQRow`` / ``DrawingReference``.",
        -                    "properties": {
        -                      "entity_count": {
        -                        "minimum": 0,
        -                        "type": "integer"
        -                      },
        -                      "svg_b64": {
        -                        "minLength": 1,
        -                        "type": "string"
        -                      },
        -                      "unit_of_drawing": {
        -                        "const": "m",
        -                        "default": "m",
        -                        "type": "string"
        -                      },
        -                      "viewbox_height": {
        -                        "exclusiveMinimum": 0,
        -                        "type": "number"
        -                      },
        -                      "viewbox_width": {
        -                        "exclusiveMinimum": 0,
        -                        "type": "number"
        -                      },
        -                      "viewbox_x": {
        -                        "type": "number"
        -                      },
        -                      "viewbox_y": {
        -                        "type": "number"
        -                      }
        -                    },
        -                    "required": [
        -                      "svg_b64",
        -                      "viewbox_x",
        -                      "viewbox_y",
        -                      "viewbox_width",
        -                      "viewbox_height",
        -                      "entity_count"
        -                    ],
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "drawings": {
        -                "anyOf": [
        -                  {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.6 — paid-tier drawing artefact pointer.\n\n`url` is an R2-signed URL; expiry is carried in `_meta.deliverables.expires_at`\non the envelope (not duplicated here). `layers` is DXF-only; PDF/SVG\ncallers omit it.",
        -                      "properties": {
        -                        "drawing_type": {
        -                          "enum": [
        -                            "section",
        -                            "plan",
        -                            "elevation",
        -                            "isometric",
        -                            "detail"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "format": {
        -                          "enum": [
        -                            "DXF",
        -                            "PDF",
        -                            "SVG"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "layers": {
        -                          "anyOf": [
        -                            {
        -                              "items": {
        -                                "type": "string"
        -                              },
        -                              "type": "array"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ],
        -                          "default": null
        -                        },
        -                        "scale": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "sheet_size": {
        -                          "enum": [
        -                            "A1",
        -                            "A2",
        -                            "A3",
        -                            "A4"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "url": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "drawing_type",
        -                        "format",
        -                        "url",
        -                        "sheet_size",
        -                        "scale"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "parameters_used": {
        -                "additionalProperties": false,
        -                "description": "Schema § 1.2 — the parameter snapshot the engine actually used.\n\nSplits user-supplied values from engine defaults so customers can see\nwhich numbers came from them and which the engine filled in. Every\ndefaulted parameter SHOULD have a corresponding entry in `assumptions`\n— the bridge layer enforces this when wrapping engine output.",
        -                "properties": {
        -                  "assumptions": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "engine_defaults": {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  "user_supplied": {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  }
        -                },
        -                "type": "object"
        -              },
        -              "standard": {
        -                "enum": [
        -                  "CESMM4",
        -                  "NRM2",
        -                  "SMM7",
        -                  "MMHW"
        -                ],
        -                "type": "string"
        -              },
        -              "text_summary": {
        -                "maxLength": 2000,
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "totals_summary": {
        -                "additionalProperties": false,
        -                "description": "Schema § 1.4 — totals_summary as a typed wrapper around the free-form dict.\n\nWire shape is a flat object (`{\"concrete_m3\": {...}, \"rebar_t\": {...}}`).\nWe model it as `RootModel`-equivalent via `model_config(extra=\"allow\")`\n+ a single `__root__`-style `entries` dict. Pydantic v2 recommends\n`RootModel` for free-form roots; using a wrapper class keeps the import\nsurface uniform with the rest of this module.",
        -                "properties": {
        -                  "entries": {
        -                    "additionalProperties": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.4 — single material/work-class total entry.",
        -                      "properties": {
        -                        "quantity": {
        -                          "minimum": 0,
        -                          "type": "number"
        -                        },
        -                        "unit": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "quantity",
        -                        "unit"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "object"
        -                  }
        -                },
        -                "type": "object"
        -              },
        -              "warnings": {
        -                "items": {
        -                  "additionalProperties": false,
        -                  "description": "Schema § 1.8 — a non-fatal geometry advisory (56th-fire T2).\n\nThe wire projection of the engine's `core.GeometryWarning`. Advisory only:\na warning NEVER changes a measured quantity — it flags geometry that is\nvalid but likely a mistake (e.g. a stale dependent-height default). Present\non BOTH tiers — a correctness/safety signal, not a paid feature.",
        -                  "properties": {
        -                    "affected_params": {
        -                      "items": {
        -                        "type": "string"
        -                      },
        -                      "type": "array"
        -                    },
        -                    "code": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "detail": {
        -                      "additionalProperties": {
        -                        "type": "number"
        -                      },
        -                      "type": "object"
        -                    },
        -                    "message": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "severity": {
        -                      "enum": [
        -                        "info",
        -                        "advisory",
        -                        "caution"
        -                      ],
        -                      "type": "string"
        -                    }
        -                  },
        -                  "required": [
        -                    "code",
        -                    "severity",
        -                    "message"
        -                  ],
        -                  "type": "object"
        -                },
        -                "type": "array"
        -              }
        -            },
        -            "required": [
        -              "assembly_slug",
        -              "standard",
        -              "parameters_used",
        -              "boq_rows",
        -              "totals_summary",
        -              "text_summary"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      },
        -      "error": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        -            "properties": {
        -              "code": {
        -                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        -                "enum": [
        -                  "RATE_LIMIT_EXCEEDED",
        -                  "TIER_INSUFFICIENT",
        -                  "INVALID_INPUT",
        -                  "SCHEMA_VERSION_MISMATCH",
        -                  "SCHEMA_INVARIANT_VIOLATION",
        -                  "UPSTREAM_TIMEOUT",
        -                  "BACKEND_FAILURE",
        -                  "IP_BLOCKED",
        -                  "RESOURCE_NOT_FOUND",
        -                  "RENDER_FAILURE",
        -                  "OCR_LOW_CONFIDENCE",
        -                  "MANUAL_REVIEW_REQUIRED",
        -                  "ACCEPTANCE_REQUIRED",
        -                  "INVALID_TOKEN"
        -                ],
        -                "type": "string"
        -              },
        -              "details": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "message": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "recoverable": {
        -                "type": "boolean"
        -              },
        -              "retry_after_seconds": {
        -                "anyOf": [
        -                  {
        -                    "minimum": 0,
        -                    "type": "integer"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              }
        -            },
        -            "required": [
        -              "code",
        -              "message",
        -              "recoverable"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      }
        -    },
        -    "required": [
        -      "_meta"
        -    ],
        -    "type": "object"
        -  },
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "_meta": {
        -        "additionalProperties": false,
        -        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        -        "properties": {
        -          "deliverables": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        -                "properties": {
        -                  "docx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "dxf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "expires_at": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  },
        -                  "pdf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "xlsx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "expires_at"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "document_id": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "issued_at": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "output_mode": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Surfaces what a trimmed ``output_mode`` withheld from ``data``.\n\nA trimmed mode (``summary`` / ``boq`` / ``boq_with_backup``) withholds\nalready-computed fields to keep the chat payload small. The withheld value\nreads to a client agent as \"capability missing\" (the box-culvert \"geometry\nbuilder isn't firing\" scare) rather than \"pared for size\": ``drawing`` and\n``audit_trail`` appear as ``null``, ``boq_rows`` as an empty list ``[]``\n(its type forbids ``null``) — both indistinguishable from a genuine absent\nresult. This names the withheld fields and the exact mode that brings each\nback, so the value is unambiguous. Absent on the default ``full_json`` mode\n— nothing is withheld, nothing to point at.",
        -                "properties": {
        -                  "mode": {
        -                    "enum": [
        -                      "summary",
        -                      "boq",
        -                      "boq_with_backup"
        -                    ],
        -                    "type": "string"
        -                  },
        -                  "omitted_fields": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "minItems": 1,
        -                    "type": "array"
        -                  },
        -                  "retrieve_with": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "mode",
        -                  "omitted_fields",
        -                  "retrieve_with"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "rate_limit_remaining": {
        -            "anyOf": [
        -              {
        -                "minimum": 0,
        -                "type": "integer"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "request_id": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "schema_version": {
        -            "const": "1.0.0",
        -            "default": "1.0.0",
        -            "type": "string"
        -          },
        -          "scope_boundary": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        -                "properties": {
        -                  "not_in_scope": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "produced": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "recommended_companions": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "type": "string"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "produced",
        -                  "not_in_scope"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tier": {
        -            "enum": [
        -              "free",
        -              "paid"
        -            ],
        -            "type": "string"
        -          },
        -          "tier_upgrade": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        -                "properties": {
        -                  "available_tiers": {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        -                      "properties": {
        -                        "billing": {
        -                          "enum": [
        -                            "one_off",
        -                            "monthly",
        -                            "annual"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "currency": {
        -                          "enum": [
        -                            "GBP",
        -                            "SGD",
        -                            "EUR",
        -                            "USD",
        -                            "CAD",
        -                            "AUD",
        -                            "NZD",
        -                            "MYR"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "display_name": {
        -                          "type": "string"
        -                        },
        -                        "price_local": {
        -                          "type": "number"
        -                        },
        -                        "tier_slug": {
        -                          "enum": [
        -                            "7_day_pass",
        -                            "solo",
        -                            "studio",
        -                            "practice"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "unlock_summary": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "tier_slug",
        -                        "display_name",
        -                        "price_local",
        -                        "currency",
        -                        "billing",
        -                        "unlock_summary"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "current_tier": {
        -                    "const": "free",
        -                    "default": "free",
        -                    "type": "string"
        -                  },
        -                  "pass_credit": {
        -                    "anyOf": [
        -                      {
        -                        "additionalProperties": false,
        -                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        -                        "properties": {
        -                          "amount_local": {
        -                            "type": "number"
        -                          },
        -                          "applies_to": {
        -                            "const": "solo_first_month",
        -                            "default": "solo_first_month",
        -                            "type": "string"
        -                          },
        -                          "currency": {
        -                            "type": "string"
        -                          },
        -                          "redeemable_until": {
        -                            "type": "string"
        -                          }
        -                        },
        -                        "required": [
        -                          "amount_local",
        -                          "currency",
        -                          "redeemable_until"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "pricing_url": {
        -                    "default": "https://civilquants.com/pricing",
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "available_tiers"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tos_url": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "upgrade_hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "warranty_disclaimer": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          }
        -        },
        -        "required": [
        -          "request_id",
        -          "issued_at",
        -          "tier"
        -        ],
        -        "type": "object"
        -      },
        -      "data": {
        -        "default": null,
        -        "title": "Data"
        -      },
        -      "error": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        -            "properties": {
        -              "code": {
        -                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        -                "enum": [
        -                  "RATE_LIMIT_EXCEEDED",
        -                  "TIER_INSUFFICIENT",
        -                  "INVALID_INPUT",
        -                  "SCHEMA_VERSION_MISMATCH",
        -                  "SCHEMA_INVARIANT_VIOLATION",
        -                  "UPSTREAM_TIMEOUT",
        -                  "BACKEND_FAILURE",
        -                  "IP_BLOCKED",
        -                  "RESOURCE_NOT_FOUND",
        -                  "RENDER_FAILURE",
        -                  "OCR_LOW_CONFIDENCE",
        -                  "MANUAL_REVIEW_REQUIRED",
        -                  "ACCEPTANCE_REQUIRED",
        -                  "INVALID_TOKEN"
        -                ],
        -                "type": "string"
        -              },
        -              "details": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "message": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "recoverable": {
        -                "type": "boolean"
        -              },
        -              "retry_after_seconds": {
        -                "anyOf": [
        -                  {
        -                    "minimum": 0,
        -                    "type": "integer"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              }
        -            },
        -            "required": [
        -              "code",
        -              "message",
        -              "recoverable"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      }
        -    },
        -    "required": [
        -      "_meta"
        -    ],
        -    "type": "object"
        -  }
        -]New value: +[
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "_meta": {
        +        "additionalProperties": false,
        +        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        +        "properties": {
        +          "deliverables": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        +                "properties": {
        +                  "docx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "dxf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "expires_at": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  },
        +                  "pdf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "xlsx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "expires_at"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "document_id": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "issued_at": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "output_mode": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Surfaces what a trimmed ``output_mode`` withheld from ``data``.\n\nA trimmed mode (``summary`` / ``material_schedule`` / ``boq`` /\n``boq_with_backup``) withholds\nalready-computed fields to keep the chat payload small. The withheld value\nreads to a client agent as \"capability missing\" (the box-culvert \"geometry\nbuilder isn't firing\" scare) rather than \"pared for size\": ``drawing`` and\n``audit_trail`` appear as ``null``, ``boq_rows`` as an empty list ``[]``\n(its type forbids ``null``) — both indistinguishable from a genuine absent\nresult. This names the withheld fields and the exact mode that brings each\nback, so the value is unambiguous. Absent on the default ``full_json`` mode\n— nothing is withheld, nothing to point at.",
        +                "properties": {
        +                  "mode": {
        +                    "enum": [
        +                      "summary",
        +                      "material_schedule",
        +                      "boq",
        +                      "boq_with_backup"
        +                    ],
        +                    "type": "string"
        +                  },
        +                  "omitted_fields": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "minItems": 1,
        +                    "type": "array"
        +                  },
        +                  "retrieve_with": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "mode",
        +                  "omitted_fields",
        +                  "retrieve_with"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "rate_limit_remaining": {
        +            "anyOf": [
        +              {
        +                "minimum": 0,
        +                "type": "integer"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "request_id": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "schema_version": {
        +            "const": "1.0.0",
        +            "default": "1.0.0",
        +            "type": "string"
        +          },
        +          "scope_boundary": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        +                "properties": {
        +                  "not_in_scope": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "produced": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "recommended_companions": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "type": "string"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "produced",
        +                  "not_in_scope"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tier": {
        +            "enum": [
        +              "free",
        +              "paid"
        +            ],
        +            "type": "string"
        +          },
        +          "tier_upgrade": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        +                "properties": {
        +                  "available_tiers": {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        +                      "properties": {
        +                        "billing": {
        +                          "enum": [
        +                            "one_off",
        +                            "monthly",
        +                            "annual"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "currency": {
        +                          "enum": [
        +                            "GBP",
        +                            "SGD",
        +                            "EUR",
        +                            "USD",
        +                            "CAD",
        +                            "AUD",
        +                            "NZD",
        +                            "MYR"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "display_name": {
        +                          "type": "string"
        +                        },
        +                        "price_local": {
        +                          "type": "number"
        +                        },
        +                        "tier_slug": {
        +                          "enum": [
        +                            "7_day_pass",
        +                            "solo",
        +                            "studio",
        +                            "practice"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "unlock_summary": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "tier_slug",
        +                        "display_name",
        +                        "price_local",
        +                        "currency",
        +                        "billing",
        +                        "unlock_summary"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "current_tier": {
        +                    "const": "free",
        +                    "default": "free",
        +                    "type": "string"
        +                  },
        +                  "pass_credit": {
        +                    "anyOf": [
        +                      {
        +                        "additionalProperties": false,
        +                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        +                        "properties": {
        +                          "amount_local": {
        +                            "type": "number"
        +                          },
        +                          "applies_to": {
        +                            "const": "solo_first_month",
        +                            "default": "solo_first_month",
        +                            "type": "string"
        +                          },
        +                          "currency": {
        +                            "type": "string"
        +                          },
        +                          "redeemable_until": {
        +                            "type": "string"
        +                          }
        +                        },
        +                        "required": [
        +                          "amount_local",
        +                          "currency",
        +                          "redeemable_until"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "pricing_url": {
        +                    "default": "https://civilquants.com/pricing",
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "available_tiers"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tos_url": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "upgrade_hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "warranty_disclaimer": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          }
        +        },
        +        "required": [
        +          "request_id",
        +          "issued_at",
        +          "tier"
        +        ],
        +        "type": "object"
        +      },
        +      "data": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Schema § 1.1 — the typed payload returned inside `MCPResponse[ComputeResult]`.\n\nFree-tier responses omit `drawings` (the downloadable CAD artefact\npointers — the paid differentiator); the bridge enforces this. The\n`audit_trail` and the inline `drawing` preview are present on BOTH tiers\n(V1 ALIGN / 60th-fire D + C). `text_summary` is bounded to 2000 chars —\nkeeps the LLM-facing summary token-cheap and forces longer narrative into\nBoQ row descriptions where it belongs. `warnings` is the non-fatal\ngeometry advisory list (both tiers).",
        +            "properties": {
        +              "assembly_slug": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "audit_trail": {
        +                "anyOf": [
        +                  {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.7 — paid-tier audit-trail entry.\n\nOne entry per BoQ row; `boq_row_index` ties to the row position in\n`ComputeResult.boq_rows`. `derivation` is the human-readable formula\nwalk-through; `formula` is the optional formal expression.",
        +                      "properties": {
        +                        "boq_row_index": {
        +                          "minimum": 0,
        +                          "type": "integer"
        +                        },
        +                        "derivation": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "formula": {
        +                          "anyOf": [
        +                            {
        +                              "type": "string"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ],
        +                          "default": null
        +                        },
        +                        "id": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "parameters_referenced": {
        +                          "items": {
        +                            "type": "string"
        +                          },
        +                          "type": "array"
        +                        }
        +                      },
        +                      "required": [
        +                        "id",
        +                        "boq_row_index",
        +                        "derivation"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "boq_rows": {
        +                "items": {
        +                  "additionalProperties": false,
        +                  "description": "Schema § 1.3 — a single bill row in the requested standard's format.\n\n`description` is the non-verbatim functional description per spec § 13.9 /\n§ 15 invariant — NEVER reproduces a standard's verbatim clause text.\n`rate` / `amount` ship null because rates are commodity data the customer\nowns; the engine's job is the measurement, not the pricing.",
        +                  "properties": {
        +                    "amount": {
        +                      "anyOf": [
        +                        {
        +                          "type": "number"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "attribution": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "audit_id": {
        +                      "anyOf": [
        +                        {
        +                          "type": "string"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "description": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "quantity": {
        +                      "minimum": 0,
        +                      "type": "number"
        +                    },
        +                    "rate": {
        +                      "anyOf": [
        +                        {
        +                          "type": "number"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "unit": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "work_section": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    }
        +                  },
        +                  "required": [
        +                    "work_section",
        +                    "description",
        +                    "quantity",
        +                    "unit",
        +                    "attribution"
        +                  ],
        +                  "type": "object"
        +                },
        +                "type": "array"
        +              },
        +              "drawing": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": false,
        +                    "description": "Schema § 1.6a — inline server-rendered SVG preview of the geometry.\n\nThe MCP mirror of the web ``/compute`` response's ``drawing`` field\n(``api.schemas.compute.DrawingRef``): the same on-screen dimensioned\ndrawing both tiers see in the workspace, surfaced on the MCP compute\nresponse so a chat client can render it inline (60th-fire item C). This\nis the on-screen preview — present on BOTH tiers per the free/paid\nboundary; the downloadable CAD artefacts (DXF / dimensioned PDF) remain\nthe paid differentiator via the export tools.\n\nDefined here rather than importing ``DrawingRef`` because the web\n``schemas`` package imports back into this module (``schemas.render``),\nso reusing it would create an import cycle — the MCP wire contract keeps\nits own copy, the same pattern as ``BoQRow`` / ``DrawingReference``.",
        +                    "properties": {
        +                      "entity_count": {
        +                        "minimum": 0,
        +                        "type": "integer"
        +                      },
        +                      "svg_b64": {
        +                        "minLength": 1,
        +                        "type": "string"
        +                      },
        +                      "unit_of_drawing": {
        +                        "const": "m",
        +                        "default": "m",
        +                        "type": "string"
        +                      },
        +                      "viewbox_height": {
        +                        "exclusiveMinimum": 0,
        +                        "type": "number"
        +                      },
        +                      "viewbox_width": {
        +                        "exclusiveMinimum": 0,
        +                        "type": "number"
        +                      },
        +                      "viewbox_x": {
        +                        "type": "number"
        +                      },
        +                      "viewbox_y": {
        +                        "type": "number"
        +                      }
        +                    },
        +                    "required": [
        +                      "svg_b64",
        +                      "viewbox_x",
        +                      "viewbox_y",
        +                      "viewbox_width",
        +                      "viewbox_height",
        +                      "entity_count"
        +                    ],
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "drawings": {
        +                "anyOf": [
        +                  {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.6 — paid-tier drawing artefact pointer.\n\n`url` is an R2-signed URL; expiry is carried in `_meta.deliverables.expires_at`\non the envelope (not duplicated here). `layers` is DXF-only; PDF/SVG\ncallers omit it.",
        +                      "properties": {
        +                        "drawing_type": {
        +                          "enum": [
        +                            "section",
        +                            "plan",
        +                            "elevation",
        +                            "isometric",
        +                            "detail"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "format": {
        +                          "enum": [
        +                            "DXF",
        +                            "PDF",
        +                            "SVG"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "layers": {
        +                          "anyOf": [
        +                            {
        +                              "items": {
        +                                "type": "string"
        +                              },
        +                              "type": "array"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ],
        +                          "default": null
        +                        },
        +                        "scale": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "sheet_size": {
        +                          "enum": [
        +                            "A1",
        +                            "A2",
        +                            "A3",
        +                            "A4"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "url": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "drawing_type",
        +                        "format",
        +                        "url",
        +                        "sheet_size",
        +                        "scale"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "parameters_used": {
        +                "additionalProperties": false,
        +                "description": "Schema § 1.2 — the parameter snapshot the engine actually used.\n\nSplits user-supplied values from engine defaults so customers can see\nwhich numbers came from them and which the engine filled in. Every\ndefaulted parameter SHOULD have a corresponding entry in `assumptions`\n— the bridge layer enforces this when wrapping engine output.",
        +                "properties": {
        +                  "assumptions": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "engine_defaults": {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  "user_supplied": {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  }
        +                },
        +                "type": "object"
        +              },
        +              "standard": {
        +                "enum": [
        +                  "CESMM4",
        +                  "NRM2",
        +                  "SMM7",
        +                  "MMHW"
        +                ],
        +                "type": "string"
        +              },
        +              "text_summary": {
        +                "maxLength": 2000,
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "totals_summary": {
        +                "additionalProperties": false,
        +                "description": "Schema § 1.4 — totals_summary as a typed wrapper around the free-form dict.\n\nWire shape is a flat object (`{\"concrete_m3\": {...}, \"rebar_t\": {...}}`).\nWe model it as `RootModel`-equivalent via `model_config(extra=\"allow\")`\n+ a single `__root__`-style `entries` dict. Pydantic v2 recommends\n`RootModel` for free-form roots; using a wrapper class keeps the import\nsurface uniform with the rest of this module.",
        +                "properties": {
        +                  "entries": {
        +                    "additionalProperties": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.4 — single material/work-class total entry.",
        +                      "properties": {
        +                        "quantity": {
        +                          "minimum": 0,
        +                          "type": "number"
        +                        },
        +                        "unit": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "quantity",
        +                        "unit"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "object"
        +                  }
        +                },
        +                "type": "object"
        +              },
        +              "warnings": {
        +                "items": {
        +                  "additionalProperties": false,
        +                  "description": "Schema § 1.8 — a non-fatal geometry advisory (56th-fire T2).\n\nThe wire projection of the engine's `core.GeometryWarning`. Advisory only:\na warning NEVER changes a measured quantity — it flags geometry that is\nvalid but likely a mistake (e.g. a stale dependent-height default). Present\non BOTH tiers — a correctness/safety signal, not a paid feature.",
        +                  "properties": {
        +                    "affected_params": {
        +                      "items": {
        +                        "type": "string"
        +                      },
        +                      "type": "array"
        +                    },
        +                    "code": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "detail": {
        +                      "additionalProperties": {
        +                        "type": "number"
        +                      },
        +                      "type": "object"
        +                    },
        +                    "message": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "severity": {
        +                      "enum": [
        +                        "info",
        +                        "advisory",
        +                        "caution"
        +                      ],
        +                      "type": "string"
        +                    }
        +                  },
        +                  "required": [
        +                    "code",
        +                    "severity",
        +                    "message"
        +                  ],
        +                  "type": "object"
        +                },
        +                "type": "array"
        +              }
        +            },
        +            "required": [
        +              "assembly_slug",
        +              "standard",
        +              "parameters_used",
        +              "boq_rows",
        +              "totals_summary",
        +              "text_summary"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      },
        +      "error": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        +            "properties": {
        +              "code": {
        +                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        +                "enum": [
        +                  "RATE_LIMIT_EXCEEDED",
        +                  "TIER_INSUFFICIENT",
        +                  "INVALID_INPUT",
        +                  "SCHEMA_VERSION_MISMATCH",
        +                  "SCHEMA_INVARIANT_VIOLATION",
        +                  "UPSTREAM_TIMEOUT",
        +                  "BACKEND_FAILURE",
        +                  "IP_BLOCKED",
        +                  "RESOURCE_NOT_FOUND",
        +                  "RENDER_FAILURE",
        +                  "OCR_LOW_CONFIDENCE",
        +                  "MANUAL_REVIEW_REQUIRED",
        +                  "ACCEPTANCE_REQUIRED",
        +                  "INVALID_TOKEN"
        +                ],
        +                "type": "string"
        +              },
        +              "details": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "message": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "recoverable": {
        +                "type": "boolean"
        +              },
        +              "retry_after_seconds": {
        +                "anyOf": [
        +                  {
        +                    "minimum": 0,
        +                    "type": "integer"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              }
        +            },
        +            "required": [
        +              "code",
        +              "message",
        +              "recoverable"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      }
        +    },
        +    "required": [
        +      "_meta"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "_meta": {
        +        "additionalProperties": false,
        +        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        +        "properties": {
        +          "deliverables": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        +                "properties": {
        +                  "docx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "dxf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "expires_at": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  },
        +                  "pdf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "xlsx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "expires_at"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "document_id": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "issued_at": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "output_mode": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Surfaces what a trimmed ``output_mode`` withheld from ``data``.\n\nA trimmed mode (``summary`` / ``material_schedule`` / ``boq`` /\n``boq_with_backup``) withholds\nalready-computed fields to keep the chat payload small. The withheld value\nreads to a client agent as \"capability missing\" (the box-culvert \"geometry\nbuilder isn't firing\" scare) rather than \"pared for size\": ``drawing`` and\n``audit_trail`` appear as ``null``, ``boq_rows`` as an empty list ``[]``\n(its type forbids ``null``) — both indistinguishable from a genuine absent\nresult. This names the withheld fields and the exact mode that brings each\nback, so the value is unambiguous. Absent on the default ``full_json`` mode\n— nothing is withheld, nothing to point at.",
        +                "properties": {
        +                  "mode": {
        +                    "enum": [
        +                      "summary",
        +                      "material_schedule",
        +                      "boq",
        +                      "boq_with_backup"
        +                    ],
        +                    "type": "string"
        +                  },
        +                  "omitted_fields": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "minItems": 1,
        +                    "type": "array"
        +                  },
        +                  "retrieve_with": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "mode",
        +                  "omitted_fields",
        +                  "retrieve_with"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "rate_limit_remaining": {
        +            "anyOf": [
        +              {
        +                "minimum": 0,
        +                "type": "integer"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "request_id": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "schema_version": {
        +            "const": "1.0.0",
        +            "default": "1.0.0",
        +            "type": "string"
        +          },
        +          "scope_boundary": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        +                "properties": {
        +                  "not_in_scope": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "produced": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "recommended_companions": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "type": "string"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "produced",
        +                  "not_in_scope"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tier": {
        +            "enum": [
        +              "free",
        +              "paid"
        +            ],
        +            "type": "string"
        +          },
        +          "tier_upgrade": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        +                "properties": {
        +                  "available_tiers": {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        +                      "properties": {
        +                        "billing": {
        +                          "enum": [
        +                            "one_off",
        +                            "monthly",
        +                            "annual"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "currency": {
        +                          "enum": [
        +                            "GBP",
        +                            "SGD",
        +                            "EUR",
        +                            "USD",
        +                            "CAD",
        +                            "AUD",
        +                            "NZD",
        +                            "MYR"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "display_name": {
        +                          "type": "string"
        +                        },
        +                        "price_local": {
        +                          "type": "number"
        +                        },
        +                        "tier_slug": {
        +                          "enum": [
        +                            "7_day_pass",
        +                            "solo",
        +                            "studio",
        +                            "practice"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "unlock_summary": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "tier_slug",
        +                        "display_name",
        +                        "price_local",
        +                        "currency",
        +                        "billing",
        +                        "unlock_summary"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "current_tier": {
        +                    "const": "free",
        +                    "default": "free",
        +                    "type": "string"
        +                  },
        +                  "pass_credit": {
        +                    "anyOf": [
        +                      {
        +                        "additionalProperties": false,
        +                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        +                        "properties": {
        +                          "amount_local": {
        +                            "type": "number"
        +                          },
        +                          "applies_to": {
        +                            "const": "solo_first_month",
        +                            "default": "solo_first_month",
        +                            "type": "string"
        +                          },
        +                          "currency": {
        +                            "type": "string"
        +                          },
        +                          "redeemable_until": {
        +                            "type": "string"
        +                          }
        +                        },
        +                        "required": [
        +                          "amount_local",
        +                          "currency",
        +                          "redeemable_until"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "pricing_url": {
        +                    "default": "https://civilquants.com/pricing",
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "available_tiers"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tos_url": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "upgrade_hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "warranty_disclaimer": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          }
        +        },
        +        "required": [
        +          "request_id",
        +          "issued_at",
        +          "tier"
        +        ],
        +        "type": "object"
        +      },
        +      "data": {
        +        "default": null,
        +        "title": "Data"
        +      },
        +      "error": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        +            "properties": {
        +              "code": {
        +                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        +                "enum": [
        +                  "RATE_LIMIT_EXCEEDED",
        +                  "TIER_INSUFFICIENT",
        +                  "INVALID_INPUT",
        +                  "SCHEMA_VERSION_MISMATCH",
        +                  "SCHEMA_INVARIANT_VIOLATION",
        +                  "UPSTREAM_TIMEOUT",
        +                  "BACKEND_FAILURE",
        +                  "IP_BLOCKED",
        +                  "RESOURCE_NOT_FOUND",
        +                  "RENDER_FAILURE",
        +                  "OCR_LOW_CONFIDENCE",
        +                  "MANUAL_REVIEW_REQUIRED",
        +                  "ACCEPTANCE_REQUIRED",
        +                  "INVALID_TOKEN"
        +                ],
        +                "type": "string"
        +              },
        +              "details": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "message": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "recoverable": {
        +                "type": "boolean"
        +              },
        +              "retry_after_seconds": {
        +                "anyOf": [
        +                  {
        +                    "minimum": 0,
        +                    "type": "integer"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              }
        +            },
        +            "required": [
        +              "code",
        +              "message",
        +              "recoverable"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      }
        +    },
        +    "required": [
        +      "_meta"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedcompute_petrol_oil_interceptor2 fields changed
      • changedInput schema / properties / output_mode / enum
        Previous value: -[
        -  "summary",
        -  "boq",
        -  "boq_with_backup",
        -  "full_json"
        -]New value: +[
        +  "summary",
        +  "material_schedule",
        +  "boq",
        +  "boq_with_backup",
        +  "full_json"
        +]
      • changedOutput schema / properties / result / anyOf
        Previous value: -[
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "_meta": {
        -        "additionalProperties": false,
        -        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        -        "properties": {
        -          "deliverables": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        -                "properties": {
        -                  "docx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "dxf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "expires_at": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  },
        -                  "pdf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "xlsx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "expires_at"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "document_id": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "issued_at": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "output_mode": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Surfaces what a trimmed ``output_mode`` withheld from ``data``.\n\nA trimmed mode (``summary`` / ``boq`` / ``boq_with_backup``) withholds\nalready-computed fields to keep the chat payload small. The withheld value\nreads to a client agent as \"capability missing\" (the box-culvert \"geometry\nbuilder isn't firing\" scare) rather than \"pared for size\": ``drawing`` and\n``audit_trail`` appear as ``null``, ``boq_rows`` as an empty list ``[]``\n(its type forbids ``null``) — both indistinguishable from a genuine absent\nresult. This names the withheld fields and the exact mode that brings each\nback, so the value is unambiguous. Absent on the default ``full_json`` mode\n— nothing is withheld, nothing to point at.",
        -                "properties": {
        -                  "mode": {
        -                    "enum": [
        -                      "summary",
        -                      "boq",
        -                      "boq_with_backup"
        -                    ],
        -                    "type": "string"
        -                  },
        -                  "omitted_fields": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "minItems": 1,
        -                    "type": "array"
        -                  },
        -                  "retrieve_with": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "mode",
        -                  "omitted_fields",
        -                  "retrieve_with"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "rate_limit_remaining": {
        -            "anyOf": [
        -              {
        -                "minimum": 0,
        -                "type": "integer"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "request_id": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "schema_version": {
        -            "const": "1.0.0",
        -            "default": "1.0.0",
        -            "type": "string"
        -          },
        -          "scope_boundary": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        -                "properties": {
        -                  "not_in_scope": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "produced": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "recommended_companions": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "type": "string"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "produced",
        -                  "not_in_scope"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tier": {
        -            "enum": [
        -              "free",
        -              "paid"
        -            ],
        -            "type": "string"
        -          },
        -          "tier_upgrade": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        -                "properties": {
        -                  "available_tiers": {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        -                      "properties": {
        -                        "billing": {
        -                          "enum": [
        -                            "one_off",
        -                            "monthly",
        -                            "annual"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "currency": {
        -                          "enum": [
        -                            "GBP",
        -                            "SGD",
        -                            "EUR",
        -                            "USD",
        -                            "CAD",
        -                            "AUD",
        -                            "NZD",
        -                            "MYR"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "display_name": {
        -                          "type": "string"
        -                        },
        -                        "price_local": {
        -                          "type": "number"
        -                        },
        -                        "tier_slug": {
        -                          "enum": [
        -                            "7_day_pass",
        -                            "solo",
        -                            "studio",
        -                            "practice"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "unlock_summary": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "tier_slug",
        -                        "display_name",
        -                        "price_local",
        -                        "currency",
        -                        "billing",
        -                        "unlock_summary"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "current_tier": {
        -                    "const": "free",
        -                    "default": "free",
        -                    "type": "string"
        -                  },
        -                  "pass_credit": {
        -                    "anyOf": [
        -                      {
        -                        "additionalProperties": false,
        -                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        -                        "properties": {
        -                          "amount_local": {
        -                            "type": "number"
        -                          },
        -                          "applies_to": {
        -                            "const": "solo_first_month",
        -                            "default": "solo_first_month",
        -                            "type": "string"
        -                          },
        -                          "currency": {
        -                            "type": "string"
        -                          },
        -                          "redeemable_until": {
        -                            "type": "string"
        -                          }
        -                        },
        -                        "required": [
        -                          "amount_local",
        -                          "currency",
        -                          "redeemable_until"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "pricing_url": {
        -                    "default": "https://civilquants.com/pricing",
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "available_tiers"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tos_url": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "upgrade_hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "warranty_disclaimer": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          }
        -        },
        -        "required": [
        -          "request_id",
        -          "issued_at",
        -          "tier"
        -        ],
        -        "type": "object"
        -      },
        -      "data": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Schema § 1.1 — the typed payload returned inside `MCPResponse[ComputeResult]`.\n\nFree-tier responses omit `drawings` (the downloadable CAD artefact\npointers — the paid differentiator); the bridge enforces this. The\n`audit_trail` and the inline `drawing` preview are present on BOTH tiers\n(V1 ALIGN / 60th-fire D + C). `text_summary` is bounded to 2000 chars —\nkeeps the LLM-facing summary token-cheap and forces longer narrative into\nBoQ row descriptions where it belongs. `warnings` is the non-fatal\ngeometry advisory list (both tiers).",
        -            "properties": {
        -              "assembly_slug": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "audit_trail": {
        -                "anyOf": [
        -                  {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.7 — paid-tier audit-trail entry.\n\nOne entry per BoQ row; `boq_row_index` ties to the row position in\n`ComputeResult.boq_rows`. `derivation` is the human-readable formula\nwalk-through; `formula` is the optional formal expression.",
        -                      "properties": {
        -                        "boq_row_index": {
        -                          "minimum": 0,
        -                          "type": "integer"
        -                        },
        -                        "derivation": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "formula": {
        -                          "anyOf": [
        -                            {
        -                              "type": "string"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ],
        -                          "default": null
        -                        },
        -                        "id": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "parameters_referenced": {
        -                          "items": {
        -                            "type": "string"
        -                          },
        -                          "type": "array"
        -                        }
        -                      },
        -                      "required": [
        -                        "id",
        -                        "boq_row_index",
        -                        "derivation"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "boq_rows": {
        -                "items": {
        -                  "additionalProperties": false,
        -                  "description": "Schema § 1.3 — a single bill row in the requested standard's format.\n\n`description` is the non-verbatim functional description per spec § 13.9 /\n§ 15 invariant — NEVER reproduces a standard's verbatim clause text.\n`rate` / `amount` ship null because rates are commodity data the customer\nowns; the engine's job is the measurement, not the pricing.",
        -                  "properties": {
        -                    "amount": {
        -                      "anyOf": [
        -                        {
        -                          "type": "number"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "attribution": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "audit_id": {
        -                      "anyOf": [
        -                        {
        -                          "type": "string"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "description": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "quantity": {
        -                      "minimum": 0,
        -                      "type": "number"
        -                    },
        -                    "rate": {
        -                      "anyOf": [
        -                        {
        -                          "type": "number"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "unit": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "work_section": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    }
        -                  },
        -                  "required": [
        -                    "work_section",
        -                    "description",
        -                    "quantity",
        -                    "unit",
        -                    "attribution"
        -                  ],
        -                  "type": "object"
        -                },
        -                "type": "array"
        -              },
        -              "drawing": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": false,
        -                    "description": "Schema § 1.6a — inline server-rendered SVG preview of the geometry.\n\nThe MCP mirror of the web ``/compute`` response's ``drawing`` field\n(``api.schemas.compute.DrawingRef``): the same on-screen dimensioned\ndrawing both tiers see in the workspace, surfaced on the MCP compute\nresponse so a chat client can render it inline (60th-fire item C). This\nis the on-screen preview — present on BOTH tiers per the free/paid\nboundary; the downloadable CAD artefacts (DXF / dimensioned PDF) remain\nthe paid differentiator via the export tools.\n\nDefined here rather than importing ``DrawingRef`` because the web\n``schemas`` package imports back into this module (``schemas.render``),\nso reusing it would create an import cycle — the MCP wire contract keeps\nits own copy, the same pattern as ``BoQRow`` / ``DrawingReference``.",
        -                    "properties": {
        -                      "entity_count": {
        -                        "minimum": 0,
        -                        "type": "integer"
        -                      },
        -                      "svg_b64": {
        -                        "minLength": 1,
        -                        "type": "string"
        -                      },
        -                      "unit_of_drawing": {
        -                        "const": "m",
        -                        "default": "m",
        -                        "type": "string"
        -                      },
        -                      "viewbox_height": {
        -                        "exclusiveMinimum": 0,
        -                        "type": "number"
        -                      },
        -                      "viewbox_width": {
        -                        "exclusiveMinimum": 0,
        -                        "type": "number"
        -                      },
        -                      "viewbox_x": {
        -                        "type": "number"
        -                      },
        -                      "viewbox_y": {
        -                        "type": "number"
        -                      }
        -                    },
        -                    "required": [
        -                      "svg_b64",
        -                      "viewbox_x",
        -                      "viewbox_y",
        -                      "viewbox_width",
        -                      "viewbox_height",
        -                      "entity_count"
        -                    ],
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "drawings": {
        -                "anyOf": [
        -                  {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.6 — paid-tier drawing artefact pointer.\n\n`url` is an R2-signed URL; expiry is carried in `_meta.deliverables.expires_at`\non the envelope (not duplicated here). `layers` is DXF-only; PDF/SVG\ncallers omit it.",
        -                      "properties": {
        -                        "drawing_type": {
        -                          "enum": [
        -                            "section",
        -                            "plan",
        -                            "elevation",
        -                            "isometric",
        -                            "detail"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "format": {
        -                          "enum": [
        -                            "DXF",
        -                            "PDF",
        -                            "SVG"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "layers": {
        -                          "anyOf": [
        -                            {
        -                              "items": {
        -                                "type": "string"
        -                              },
        -                              "type": "array"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ],
        -                          "default": null
        -                        },
        -                        "scale": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "sheet_size": {
        -                          "enum": [
        -                            "A1",
        -                            "A2",
        -                            "A3",
        -                            "A4"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "url": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "drawing_type",
        -                        "format",
        -                        "url",
        -                        "sheet_size",
        -                        "scale"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "parameters_used": {
        -                "additionalProperties": false,
        -                "description": "Schema § 1.2 — the parameter snapshot the engine actually used.\n\nSplits user-supplied values from engine defaults so customers can see\nwhich numbers came from them and which the engine filled in. Every\ndefaulted parameter SHOULD have a corresponding entry in `assumptions`\n— the bridge layer enforces this when wrapping engine output.",
        -                "properties": {
        -                  "assumptions": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "engine_defaults": {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  "user_supplied": {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  }
        -                },
        -                "type": "object"
        -              },
        -              "standard": {
        -                "enum": [
        -                  "CESMM4",
        -                  "NRM2",
        -                  "SMM7",
        -                  "MMHW"
        -                ],
        -                "type": "string"
        -              },
        -              "text_summary": {
        -                "maxLength": 2000,
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "totals_summary": {
        -                "additionalProperties": false,
        -                "description": "Schema § 1.4 — totals_summary as a typed wrapper around the free-form dict.\n\nWire shape is a flat object (`{\"concrete_m3\": {...}, \"rebar_t\": {...}}`).\nWe model it as `RootModel`-equivalent via `model_config(extra=\"allow\")`\n+ a single `__root__`-style `entries` dict. Pydantic v2 recommends\n`RootModel` for free-form roots; using a wrapper class keeps the import\nsurface uniform with the rest of this module.",
        -                "properties": {
        -                  "entries": {
        -                    "additionalProperties": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.4 — single material/work-class total entry.",
        -                      "properties": {
        -                        "quantity": {
        -                          "minimum": 0,
        -                          "type": "number"
        -                        },
        -                        "unit": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "quantity",
        -                        "unit"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "object"
        -                  }
        -                },
        -                "type": "object"
        -              },
        -              "warnings": {
        -                "items": {
        -                  "additionalProperties": false,
        -                  "description": "Schema § 1.8 — a non-fatal geometry advisory (56th-fire T2).\n\nThe wire projection of the engine's `core.GeometryWarning`. Advisory only:\na warning NEVER changes a measured quantity — it flags geometry that is\nvalid but likely a mistake (e.g. a stale dependent-height default). Present\non BOTH tiers — a correctness/safety signal, not a paid feature.",
        -                  "properties": {
        -                    "affected_params": {
        -                      "items": {
        -                        "type": "string"
        -                      },
        -                      "type": "array"
        -                    },
        -                    "code": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "detail": {
        -                      "additionalProperties": {
        -                        "type": "number"
        -                      },
        -                      "type": "object"
        -                    },
        -                    "message": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "severity": {
        -                      "enum": [
        -                        "info",
        -                        "advisory",
        -                        "caution"
        -                      ],
        -                      "type": "string"
        -                    }
        -                  },
        -                  "required": [
        -                    "code",
        -                    "severity",
        -                    "message"
        -                  ],
        -                  "type": "object"
        -                },
        -                "type": "array"
        -              }
        -            },
        -            "required": [
        -              "assembly_slug",
        -              "standard",
        -              "parameters_used",
        -              "boq_rows",
        -              "totals_summary",
        -              "text_summary"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      },
        -      "error": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        -            "properties": {
        -              "code": {
        -                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        -                "enum": [
        -                  "RATE_LIMIT_EXCEEDED",
        -                  "TIER_INSUFFICIENT",
        -                  "INVALID_INPUT",
        -                  "SCHEMA_VERSION_MISMATCH",
        -                  "SCHEMA_INVARIANT_VIOLATION",
        -                  "UPSTREAM_TIMEOUT",
        -                  "BACKEND_FAILURE",
        -                  "IP_BLOCKED",
        -                  "RESOURCE_NOT_FOUND",
        -                  "RENDER_FAILURE",
        -                  "OCR_LOW_CONFIDENCE",
        -                  "MANUAL_REVIEW_REQUIRED",
        -                  "ACCEPTANCE_REQUIRED",
        -                  "INVALID_TOKEN"
        -                ],
        -                "type": "string"
        -              },
        -              "details": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "message": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "recoverable": {
        -                "type": "boolean"
        -              },
        -              "retry_after_seconds": {
        -                "anyOf": [
        -                  {
        -                    "minimum": 0,
        -                    "type": "integer"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              }
        -            },
        -            "required": [
        -              "code",
        -              "message",
        -              "recoverable"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      }
        -    },
        -    "required": [
        -      "_meta"
        -    ],
        -    "type": "object"
        -  },
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "_meta": {
        -        "additionalProperties": false,
        -        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        -        "properties": {
        -          "deliverables": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        -                "properties": {
        -                  "docx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "dxf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "expires_at": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  },
        -                  "pdf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "xlsx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "expires_at"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "document_id": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "issued_at": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "output_mode": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Surfaces what a trimmed ``output_mode`` withheld from ``data``.\n\nA trimmed mode (``summary`` / ``boq`` / ``boq_with_backup``) withholds\nalready-computed fields to keep the chat payload small. The withheld value\nreads to a client agent as \"capability missing\" (the box-culvert \"geometry\nbuilder isn't firing\" scare) rather than \"pared for size\": ``drawing`` and\n``audit_trail`` appear as ``null``, ``boq_rows`` as an empty list ``[]``\n(its type forbids ``null``) — both indistinguishable from a genuine absent\nresult. This names the withheld fields and the exact mode that brings each\nback, so the value is unambiguous. Absent on the default ``full_json`` mode\n— nothing is withheld, nothing to point at.",
        -                "properties": {
        -                  "mode": {
        -                    "enum": [
        -                      "summary",
        -                      "boq",
        -                      "boq_with_backup"
        -                    ],
        -                    "type": "string"
        -                  },
        -                  "omitted_fields": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "minItems": 1,
        -                    "type": "array"
        -                  },
        -                  "retrieve_with": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "mode",
        -                  "omitted_fields",
        -                  "retrieve_with"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "rate_limit_remaining": {
        -            "anyOf": [
        -              {
        -                "minimum": 0,
        -                "type": "integer"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "request_id": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "schema_version": {
        -            "const": "1.0.0",
        -            "default": "1.0.0",
        -            "type": "string"
        -          },
        -          "scope_boundary": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        -                "properties": {
        -                  "not_in_scope": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "produced": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "recommended_companions": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "type": "string"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "produced",
        -                  "not_in_scope"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tier": {
        -            "enum": [
        -              "free",
        -              "paid"
        -            ],
        -            "type": "string"
        -          },
        -          "tier_upgrade": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        -                "properties": {
        -                  "available_tiers": {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        -                      "properties": {
        -                        "billing": {
        -                          "enum": [
        -                            "one_off",
        -                            "monthly",
        -                            "annual"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "currency": {
        -                          "enum": [
        -                            "GBP",
        -                            "SGD",
        -                            "EUR",
        -                            "USD",
        -                            "CAD",
        -                            "AUD",
        -                            "NZD",
        -                            "MYR"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "display_name": {
        -                          "type": "string"
        -                        },
        -                        "price_local": {
        -                          "type": "number"
        -                        },
        -                        "tier_slug": {
        -                          "enum": [
        -                            "7_day_pass",
        -                            "solo",
        -                            "studio",
        -                            "practice"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "unlock_summary": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "tier_slug",
        -                        "display_name",
        -                        "price_local",
        -                        "currency",
        -                        "billing",
        -                        "unlock_summary"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "current_tier": {
        -                    "const": "free",
        -                    "default": "free",
        -                    "type": "string"
        -                  },
        -                  "pass_credit": {
        -                    "anyOf": [
        -                      {
        -                        "additionalProperties": false,
        -                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        -                        "properties": {
        -                          "amount_local": {
        -                            "type": "number"
        -                          },
        -                          "applies_to": {
        -                            "const": "solo_first_month",
        -                            "default": "solo_first_month",
        -                            "type": "string"
        -                          },
        -                          "currency": {
        -                            "type": "string"
        -                          },
        -                          "redeemable_until": {
        -                            "type": "string"
        -                          }
        -                        },
        -                        "required": [
        -                          "amount_local",
        -                          "currency",
        -                          "redeemable_until"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "pricing_url": {
        -                    "default": "https://civilquants.com/pricing",
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "available_tiers"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tos_url": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "upgrade_hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "warranty_disclaimer": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          }
        -        },
        -        "required": [
        -          "request_id",
        -          "issued_at",
        -          "tier"
        -        ],
        -        "type": "object"
        -      },
        -      "data": {
        -        "default": null,
        -        "title": "Data"
        -      },
        -      "error": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        -            "properties": {
        -              "code": {
        -                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        -                "enum": [
        -                  "RATE_LIMIT_EXCEEDED",
        -                  "TIER_INSUFFICIENT",
        -                  "INVALID_INPUT",
        -                  "SCHEMA_VERSION_MISMATCH",
        -                  "SCHEMA_INVARIANT_VIOLATION",
        -                  "UPSTREAM_TIMEOUT",
        -                  "BACKEND_FAILURE",
        -                  "IP_BLOCKED",
        -                  "RESOURCE_NOT_FOUND",
        -                  "RENDER_FAILURE",
        -                  "OCR_LOW_CONFIDENCE",
        -                  "MANUAL_REVIEW_REQUIRED",
        -                  "ACCEPTANCE_REQUIRED",
        -                  "INVALID_TOKEN"
        -                ],
        -                "type": "string"
        -              },
        -              "details": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "message": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "recoverable": {
        -                "type": "boolean"
        -              },
        -              "retry_after_seconds": {
        -                "anyOf": [
        -                  {
        -                    "minimum": 0,
        -                    "type": "integer"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              }
        -            },
        -            "required": [
        -              "code",
        -              "message",
        -              "recoverable"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      }
        -    },
        -    "required": [
        -      "_meta"
        -    ],
        -    "type": "object"
        -  }
        -]New value: +[
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "_meta": {
        +        "additionalProperties": false,
        +        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        +        "properties": {
        +          "deliverables": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        +                "properties": {
        +                  "docx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "dxf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "expires_at": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  },
        +                  "pdf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "xlsx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "expires_at"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "document_id": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "issued_at": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "output_mode": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Surfaces what a trimmed ``output_mode`` withheld from ``data``.\n\nA trimmed mode (``summary`` / ``material_schedule`` / ``boq`` /\n``boq_with_backup``) withholds\nalready-computed fields to keep the chat payload small. The withheld value\nreads to a client agent as \"capability missing\" (the box-culvert \"geometry\nbuilder isn't firing\" scare) rather than \"pared for size\": ``drawing`` and\n``audit_trail`` appear as ``null``, ``boq_rows`` as an empty list ``[]``\n(its type forbids ``null``) — both indistinguishable from a genuine absent\nresult. This names the withheld fields and the exact mode that brings each\nback, so the value is unambiguous. Absent on the default ``full_json`` mode\n— nothing is withheld, nothing to point at.",
        +                "properties": {
        +                  "mode": {
        +                    "enum": [
        +                      "summary",
        +                      "material_schedule",
        +                      "boq",
        +                      "boq_with_backup"
        +                    ],
        +                    "type": "string"
        +                  },
        +                  "omitted_fields": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "minItems": 1,
        +                    "type": "array"
        +                  },
        +                  "retrieve_with": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "mode",
        +                  "omitted_fields",
        +                  "retrieve_with"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "rate_limit_remaining": {
        +            "anyOf": [
        +              {
        +                "minimum": 0,
        +                "type": "integer"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "request_id": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "schema_version": {
        +            "const": "1.0.0",
        +            "default": "1.0.0",
        +            "type": "string"
        +          },
        +          "scope_boundary": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        +                "properties": {
        +                  "not_in_scope": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "produced": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "recommended_companions": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "type": "string"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "produced",
        +                  "not_in_scope"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tier": {
        +            "enum": [
        +              "free",
        +              "paid"
        +            ],
        +            "type": "string"
        +          },
        +          "tier_upgrade": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        +                "properties": {
        +                  "available_tiers": {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        +                      "properties": {
        +                        "billing": {
        +                          "enum": [
        +                            "one_off",
        +                            "monthly",
        +                            "annual"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "currency": {
        +                          "enum": [
        +                            "GBP",
        +                            "SGD",
        +                            "EUR",
        +                            "USD",
        +                            "CAD",
        +                            "AUD",
        +                            "NZD",
        +                            "MYR"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "display_name": {
        +                          "type": "string"
        +                        },
        +                        "price_local": {
        +                          "type": "number"
        +                        },
        +                        "tier_slug": {
        +                          "enum": [
        +                            "7_day_pass",
        +                            "solo",
        +                            "studio",
        +                            "practice"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "unlock_summary": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "tier_slug",
        +                        "display_name",
        +                        "price_local",
        +                        "currency",
        +                        "billing",
        +                        "unlock_summary"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "current_tier": {
        +                    "const": "free",
        +                    "default": "free",
        +                    "type": "string"
        +                  },
        +                  "pass_credit": {
        +                    "anyOf": [
        +                      {
        +                        "additionalProperties": false,
        +                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        +                        "properties": {
        +                          "amount_local": {
        +                            "type": "number"
        +                          },
        +                          "applies_to": {
        +                            "const": "solo_first_month",
        +                            "default": "solo_first_month",
        +                            "type": "string"
        +                          },
        +                          "currency": {
        +                            "type": "string"
        +                          },
        +                          "redeemable_until": {
        +                            "type": "string"
        +                          }
        +                        },
        +                        "required": [
        +                          "amount_local",
        +                          "currency",
        +                          "redeemable_until"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "pricing_url": {
        +                    "default": "https://civilquants.com/pricing",
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "available_tiers"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tos_url": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "upgrade_hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "warranty_disclaimer": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          }
        +        },
        +        "required": [
        +          "request_id",
        +          "issued_at",
        +          "tier"
        +        ],
        +        "type": "object"
        +      },
        +      "data": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Schema § 1.1 — the typed payload returned inside `MCPResponse[ComputeResult]`.\n\nFree-tier responses omit `drawings` (the downloadable CAD artefact\npointers — the paid differentiator); the bridge enforces this. The\n`audit_trail` and the inline `drawing` preview are present on BOTH tiers\n(V1 ALIGN / 60th-fire D + C). `text_summary` is bounded to 2000 chars —\nkeeps the LLM-facing summary token-cheap and forces longer narrative into\nBoQ row descriptions where it belongs. `warnings` is the non-fatal\ngeometry advisory list (both tiers).",
        +            "properties": {
        +              "assembly_slug": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "audit_trail": {
        +                "anyOf": [
        +                  {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.7 — paid-tier audit-trail entry.\n\nOne entry per BoQ row; `boq_row_index` ties to the row position in\n`ComputeResult.boq_rows`. `derivation` is the human-readable formula\nwalk-through; `formula` is the optional formal expression.",
        +                      "properties": {
        +                        "boq_row_index": {
        +                          "minimum": 0,
        +                          "type": "integer"
        +                        },
        +                        "derivation": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "formula": {
        +                          "anyOf": [
        +                            {
        +                              "type": "string"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ],
        +                          "default": null
        +                        },
        +                        "id": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "parameters_referenced": {
        +                          "items": {
        +                            "type": "string"
        +                          },
        +                          "type": "array"
        +                        }
        +                      },
        +                      "required": [
        +                        "id",
        +                        "boq_row_index",
        +                        "derivation"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "boq_rows": {
        +                "items": {
        +                  "additionalProperties": false,
        +                  "description": "Schema § 1.3 — a single bill row in the requested standard's format.\n\n`description` is the non-verbatim functional description per spec § 13.9 /\n§ 15 invariant — NEVER reproduces a standard's verbatim clause text.\n`rate` / `amount` ship null because rates are commodity data the customer\nowns; the engine's job is the measurement, not the pricing.",
        +                  "properties": {
        +                    "amount": {
        +                      "anyOf": [
        +                        {
        +                          "type": "number"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "attribution": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "audit_id": {
        +                      "anyOf": [
        +                        {
        +                          "type": "string"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "description": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "quantity": {
        +                      "minimum": 0,
        +                      "type": "number"
        +                    },
        +                    "rate": {
        +                      "anyOf": [
        +                        {
        +                          "type": "number"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "unit": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "work_section": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    }
        +                  },
        +                  "required": [
        +                    "work_section",
        +                    "description",
        +                    "quantity",
        +                    "unit",
        +                    "attribution"
        +                  ],
        +                  "type": "object"
        +                },
        +                "type": "array"
        +              },
        +              "drawing": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": false,
        +                    "description": "Schema § 1.6a — inline server-rendered SVG preview of the geometry.\n\nThe MCP mirror of the web ``/compute`` response's ``drawing`` field\n(``api.schemas.compute.DrawingRef``): the same on-screen dimensioned\ndrawing both tiers see in the workspace, surfaced on the MCP compute\nresponse so a chat client can render it inline (60th-fire item C). This\nis the on-screen preview — present on BOTH tiers per the free/paid\nboundary; the downloadable CAD artefacts (DXF / dimensioned PDF) remain\nthe paid differentiator via the export tools.\n\nDefined here rather than importing ``DrawingRef`` because the web\n``schemas`` package imports back into this module (``schemas.render``),\nso reusing it would create an import cycle — the MCP wire contract keeps\nits own copy, the same pattern as ``BoQRow`` / ``DrawingReference``.",
        +                    "properties": {
        +                      "entity_count": {
        +                        "minimum": 0,
        +                        "type": "integer"
        +                      },
        +                      "svg_b64": {
        +                        "minLength": 1,
        +                        "type": "string"
        +                      },
        +                      "unit_of_drawing": {
        +                        "const": "m",
        +                        "default": "m",
        +                        "type": "string"
        +                      },
        +                      "viewbox_height": {
        +                        "exclusiveMinimum": 0,
        +                        "type": "number"
        +                      },
        +                      "viewbox_width": {
        +                        "exclusiveMinimum": 0,
        +                        "type": "number"
        +                      },
        +                      "viewbox_x": {
        +                        "type": "number"
        +                      },
        +                      "viewbox_y": {
        +                        "type": "number"
        +                      }
        +                    },
        +                    "required": [
        +                      "svg_b64",
        +                      "viewbox_x",
        +                      "viewbox_y",
        +                      "viewbox_width",
        +                      "viewbox_height",
        +                      "entity_count"
        +                    ],
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "drawings": {
        +                "anyOf": [
        +                  {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.6 — paid-tier drawing artefact pointer.\n\n`url` is an R2-signed URL; expiry is carried in `_meta.deliverables.expires_at`\non the envelope (not duplicated here). `layers` is DXF-only; PDF/SVG\ncallers omit it.",
        +                      "properties": {
        +                        "drawing_type": {
        +                          "enum": [
        +                            "section",
        +                            "plan",
        +                            "elevation",
        +                            "isometric",
        +                            "detail"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "format": {
        +                          "enum": [
        +                            "DXF",
        +                            "PDF",
        +                            "SVG"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "layers": {
        +                          "anyOf": [
        +                            {
        +                              "items": {
        +                                "type": "string"
        +                              },
        +                              "type": "array"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ],
        +                          "default": null
        +                        },
        +                        "scale": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "sheet_size": {
        +                          "enum": [
        +                            "A1",
        +                            "A2",
        +                            "A3",
        +                            "A4"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "url": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "drawing_type",
        +                        "format",
        +                        "url",
        +                        "sheet_size",
        +                        "scale"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "parameters_used": {
        +                "additionalProperties": false,
        +                "description": "Schema § 1.2 — the parameter snapshot the engine actually used.\n\nSplits user-supplied values from engine defaults so customers can see\nwhich numbers came from them and which the engine filled in. Every\ndefaulted parameter SHOULD have a corresponding entry in `assumptions`\n— the bridge layer enforces this when wrapping engine output.",
        +                "properties": {
        +                  "assumptions": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "engine_defaults": {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  "user_supplied": {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  }
        +                },
        +                "type": "object"
        +              },
        +              "standard": {
        +                "enum": [
        +                  "CESMM4",
        +                  "NRM2",
        +                  "SMM7",
        +                  "MMHW"
        +                ],
        +                "type": "string"
        +              },
        +              "text_summary": {
        +                "maxLength": 2000,
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "totals_summary": {
        +                "additionalProperties": false,
        +                "description": "Schema § 1.4 — totals_summary as a typed wrapper around the free-form dict.\n\nWire shape is a flat object (`{\"concrete_m3\": {...}, \"rebar_t\": {...}}`).\nWe model it as `RootModel`-equivalent via `model_config(extra=\"allow\")`\n+ a single `__root__`-style `entries` dict. Pydantic v2 recommends\n`RootModel` for free-form roots; using a wrapper class keeps the import\nsurface uniform with the rest of this module.",
        +                "properties": {
        +                  "entries": {
        +                    "additionalProperties": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.4 — single material/work-class total entry.",
        +                      "properties": {
        +                        "quantity": {
        +                          "minimum": 0,
        +                          "type": "number"
        +                        },
        +                        "unit": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "quantity",
        +                        "unit"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "object"
        +                  }
        +                },
        +                "type": "object"
        +              },
        +              "warnings": {
        +                "items": {
        +                  "additionalProperties": false,
        +                  "description": "Schema § 1.8 — a non-fatal geometry advisory (56th-fire T2).\n\nThe wire projection of the engine's `core.GeometryWarning`. Advisory only:\na warning NEVER changes a measured quantity — it flags geometry that is\nvalid but likely a mistake (e.g. a stale dependent-height default). Present\non BOTH tiers — a correctness/safety signal, not a paid feature.",
        +                  "properties": {
        +                    "affected_params": {
        +                      "items": {
        +                        "type": "string"
        +                      },
        +                      "type": "array"
        +                    },
        +                    "code": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "detail": {
        +                      "additionalProperties": {
        +                        "type": "number"
        +                      },
        +                      "type": "object"
        +                    },
        +                    "message": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "severity": {
        +                      "enum": [
        +                        "info",
        +                        "advisory",
        +                        "caution"
        +                      ],
        +                      "type": "string"
        +                    }
        +                  },
        +                  "required": [
        +                    "code",
        +                    "severity",
        +                    "message"
        +                  ],
        +                  "type": "object"
        +                },
        +                "type": "array"
        +              }
        +            },
        +            "required": [
        +              "assembly_slug",
        +              "standard",
        +              "parameters_used",
        +              "boq_rows",
        +              "totals_summary",
        +              "text_summary"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      },
        +      "error": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        +            "properties": {
        +              "code": {
        +                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        +                "enum": [
        +                  "RATE_LIMIT_EXCEEDED",
        +                  "TIER_INSUFFICIENT",
        +                  "INVALID_INPUT",
        +                  "SCHEMA_VERSION_MISMATCH",
        +                  "SCHEMA_INVARIANT_VIOLATION",
        +                  "UPSTREAM_TIMEOUT",
        +                  "BACKEND_FAILURE",
        +                  "IP_BLOCKED",
        +                  "RESOURCE_NOT_FOUND",
        +                  "RENDER_FAILURE",
        +                  "OCR_LOW_CONFIDENCE",
        +                  "MANUAL_REVIEW_REQUIRED",
        +                  "ACCEPTANCE_REQUIRED",
        +                  "INVALID_TOKEN"
        +                ],
        +                "type": "string"
        +              },
        +              "details": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "message": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "recoverable": {
        +                "type": "boolean"
        +              },
        +              "retry_after_seconds": {
        +                "anyOf": [
        +                  {
        +                    "minimum": 0,
        +                    "type": "integer"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              }
        +            },
        +            "required": [
        +              "code",
        +              "message",
        +              "recoverable"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      }
        +    },
        +    "required": [
        +      "_meta"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "_meta": {
        +        "additionalProperties": false,
        +        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        +        "properties": {
        +          "deliverables": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        +                "properties": {
        +                  "docx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "dxf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "expires_at": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  },
        +                  "pdf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "xlsx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "expires_at"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "document_id": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "issued_at": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "output_mode": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Surfaces what a trimmed ``output_mode`` withheld from ``data``.\n\nA trimmed mode (``summary`` / ``material_schedule`` / ``boq`` /\n``boq_with_backup``) withholds\nalready-computed fields to keep the chat payload small. The withheld value\nreads to a client agent as \"capability missing\" (the box-culvert \"geometry\nbuilder isn't firing\" scare) rather than \"pared for size\": ``drawing`` and\n``audit_trail`` appear as ``null``, ``boq_rows`` as an empty list ``[]``\n(its type forbids ``null``) — both indistinguishable from a genuine absent\nresult. This names the withheld fields and the exact mode that brings each\nback, so the value is unambiguous. Absent on the default ``full_json`` mode\n— nothing is withheld, nothing to point at.",
        +                "properties": {
        +                  "mode": {
        +                    "enum": [
        +                      "summary",
        +                      "material_schedule",
        +                      "boq",
        +                      "boq_with_backup"
        +                    ],
        +                    "type": "string"
        +                  },
        +                  "omitted_fields": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "minItems": 1,
        +                    "type": "array"
        +                  },
        +                  "retrieve_with": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "mode",
        +                  "omitted_fields",
        +                  "retrieve_with"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "rate_limit_remaining": {
        +            "anyOf": [
        +              {
        +                "minimum": 0,
        +                "type": "integer"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "request_id": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "schema_version": {
        +            "const": "1.0.0",
        +            "default": "1.0.0",
        +            "type": "string"
        +          },
        +          "scope_boundary": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        +                "properties": {
        +                  "not_in_scope": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "produced": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "recommended_companions": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "type": "string"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "produced",
        +                  "not_in_scope"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tier": {
        +            "enum": [
        +              "free",
        +              "paid"
        +            ],
        +            "type": "string"
        +          },
        +          "tier_upgrade": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        +                "properties": {
        +                  "available_tiers": {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        +                      "properties": {
        +                        "billing": {
        +                          "enum": [
        +                            "one_off",
        +                            "monthly",
        +                            "annual"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "currency": {
        +                          "enum": [
        +                            "GBP",
        +                            "SGD",
        +                            "EUR",
        +                            "USD",
        +                            "CAD",
        +                            "AUD",
        +                            "NZD",
        +                            "MYR"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "display_name": {
        +                          "type": "string"
        +                        },
        +                        "price_local": {
        +                          "type": "number"
        +                        },
        +                        "tier_slug": {
        +                          "enum": [
        +                            "7_day_pass",
        +                            "solo",
        +                            "studio",
        +                            "practice"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "unlock_summary": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "tier_slug",
        +                        "display_name",
        +                        "price_local",
        +                        "currency",
        +                        "billing",
        +                        "unlock_summary"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "current_tier": {
        +                    "const": "free",
        +                    "default": "free",
        +                    "type": "string"
        +                  },
        +                  "pass_credit": {
        +                    "anyOf": [
        +                      {
        +                        "additionalProperties": false,
        +                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        +                        "properties": {
        +                          "amount_local": {
        +                            "type": "number"
        +                          },
        +                          "applies_to": {
        +                            "const": "solo_first_month",
        +                            "default": "solo_first_month",
        +                            "type": "string"
        +                          },
        +                          "currency": {
        +                            "type": "string"
        +                          },
        +                          "redeemable_until": {
        +                            "type": "string"
        +                          }
        +                        },
        +                        "required": [
        +                          "amount_local",
        +                          "currency",
        +                          "redeemable_until"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "pricing_url": {
        +                    "default": "https://civilquants.com/pricing",
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "available_tiers"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tos_url": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "upgrade_hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "warranty_disclaimer": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          }
        +        },
        +        "required": [
        +          "request_id",
        +          "issued_at",
        +          "tier"
        +        ],
        +        "type": "object"
        +      },
        +      "data": {
        +        "default": null,
        +        "title": "Data"
        +      },
        +      "error": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        +            "properties": {
        +              "code": {
        +                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        +                "enum": [
        +                  "RATE_LIMIT_EXCEEDED",
        +                  "TIER_INSUFFICIENT",
        +                  "INVALID_INPUT",
        +                  "SCHEMA_VERSION_MISMATCH",
        +                  "SCHEMA_INVARIANT_VIOLATION",
        +                  "UPSTREAM_TIMEOUT",
        +                  "BACKEND_FAILURE",
        +                  "IP_BLOCKED",
        +                  "RESOURCE_NOT_FOUND",
        +                  "RENDER_FAILURE",
        +                  "OCR_LOW_CONFIDENCE",
        +                  "MANUAL_REVIEW_REQUIRED",
        +                  "ACCEPTANCE_REQUIRED",
        +                  "INVALID_TOKEN"
        +                ],
        +                "type": "string"
        +              },
        +              "details": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "message": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "recoverable": {
        +                "type": "boolean"
        +              },
        +              "retry_after_seconds": {
        +                "anyOf": [
        +                  {
        +                    "minimum": 0,
        +                    "type": "integer"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              }
        +            },
        +            "required": [
        +              "code",
        +              "message",
        +              "recoverable"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      }
        +    },
        +    "required": [
        +      "_meta"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedcompute_pipe_bedding2 fields changed
      • changedInput schema / properties / output_mode / enum
        Previous value: -[
        -  "summary",
        -  "boq",
        -  "boq_with_backup",
        -  "full_json"
        -]New value: +[
        +  "summary",
        +  "material_schedule",
        +  "boq",
        +  "boq_with_backup",
        +  "full_json"
        +]
      • changedOutput schema / properties / result / anyOf
        Previous value: -[
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "_meta": {
        -        "additionalProperties": false,
        -        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        -        "properties": {
        -          "deliverables": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        -                "properties": {
        -                  "docx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "dxf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "expires_at": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  },
        -                  "pdf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "xlsx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "expires_at"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "document_id": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "issued_at": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "output_mode": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Surfaces what a trimmed ``output_mode`` withheld from ``data``.\n\nA trimmed mode (``summary`` / ``boq`` / ``boq_with_backup``) withholds\nalready-computed fields to keep the chat payload small. The withheld value\nreads to a client agent as \"capability missing\" (the box-culvert \"geometry\nbuilder isn't firing\" scare) rather than \"pared for size\": ``drawing`` and\n``audit_trail`` appear as ``null``, ``boq_rows`` as an empty list ``[]``\n(its type forbids ``null``) — both indistinguishable from a genuine absent\nresult. This names the withheld fields and the exact mode that brings each\nback, so the value is unambiguous. Absent on the default ``full_json`` mode\n— nothing is withheld, nothing to point at.",
        -                "properties": {
        -                  "mode": {
        -                    "enum": [
        -                      "summary",
        -                      "boq",
        -                      "boq_with_backup"
        -                    ],
        -                    "type": "string"
        -                  },
        -                  "omitted_fields": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "minItems": 1,
        -                    "type": "array"
        -                  },
        -                  "retrieve_with": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "mode",
        -                  "omitted_fields",
        -                  "retrieve_with"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "rate_limit_remaining": {
        -            "anyOf": [
        -              {
        -                "minimum": 0,
        -                "type": "integer"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "request_id": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "schema_version": {
        -            "const": "1.0.0",
        -            "default": "1.0.0",
        -            "type": "string"
        -          },
        -          "scope_boundary": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        -                "properties": {
        -                  "not_in_scope": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "produced": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "recommended_companions": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "type": "string"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "produced",
        -                  "not_in_scope"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tier": {
        -            "enum": [
        -              "free",
        -              "paid"
        -            ],
        -            "type": "string"
        -          },
        -          "tier_upgrade": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        -                "properties": {
        -                  "available_tiers": {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        -                      "properties": {
        -                        "billing": {
        -                          "enum": [
        -                            "one_off",
        -                            "monthly",
        -                            "annual"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "currency": {
        -                          "enum": [
        -                            "GBP",
        -                            "SGD",
        -                            "EUR",
        -                            "USD",
        -                            "CAD",
        -                            "AUD",
        -                            "NZD",
        -                            "MYR"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "display_name": {
        -                          "type": "string"
        -                        },
        -                        "price_local": {
        -                          "type": "number"
        -                        },
        -                        "tier_slug": {
        -                          "enum": [
        -                            "7_day_pass",
        -                            "solo",
        -                            "studio",
        -                            "practice"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "unlock_summary": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "tier_slug",
        -                        "display_name",
        -                        "price_local",
        -                        "currency",
        -                        "billing",
        -                        "unlock_summary"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "current_tier": {
        -                    "const": "free",
        -                    "default": "free",
        -                    "type": "string"
        -                  },
        -                  "pass_credit": {
        -                    "anyOf": [
        -                      {
        -                        "additionalProperties": false,
        -                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        -                        "properties": {
        -                          "amount_local": {
        -                            "type": "number"
        -                          },
        -                          "applies_to": {
        -                            "const": "solo_first_month",
        -                            "default": "solo_first_month",
        -                            "type": "string"
        -                          },
        -                          "currency": {
        -                            "type": "string"
        -                          },
        -                          "redeemable_until": {
        -                            "type": "string"
        -                          }
        -                        },
        -                        "required": [
        -                          "amount_local",
        -                          "currency",
        -                          "redeemable_until"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "pricing_url": {
        -                    "default": "https://civilquants.com/pricing",
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "available_tiers"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tos_url": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "upgrade_hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "warranty_disclaimer": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          }
        -        },
        -        "required": [
        -          "request_id",
        -          "issued_at",
        -          "tier"
        -        ],
        -        "type": "object"
        -      },
        -      "data": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Schema § 1.1 — the typed payload returned inside `MCPResponse[ComputeResult]`.\n\nFree-tier responses omit `drawings` (the downloadable CAD artefact\npointers — the paid differentiator); the bridge enforces this. The\n`audit_trail` and the inline `drawing` preview are present on BOTH tiers\n(V1 ALIGN / 60th-fire D + C). `text_summary` is bounded to 2000 chars —\nkeeps the LLM-facing summary token-cheap and forces longer narrative into\nBoQ row descriptions where it belongs. `warnings` is the non-fatal\ngeometry advisory list (both tiers).",
        -            "properties": {
        -              "assembly_slug": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "audit_trail": {
        -                "anyOf": [
        -                  {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.7 — paid-tier audit-trail entry.\n\nOne entry per BoQ row; `boq_row_index` ties to the row position in\n`ComputeResult.boq_rows`. `derivation` is the human-readable formula\nwalk-through; `formula` is the optional formal expression.",
        -                      "properties": {
        -                        "boq_row_index": {
        -                          "minimum": 0,
        -                          "type": "integer"
        -                        },
        -                        "derivation": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "formula": {
        -                          "anyOf": [
        -                            {
        -                              "type": "string"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ],
        -                          "default": null
        -                        },
        -                        "id": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "parameters_referenced": {
        -                          "items": {
        -                            "type": "string"
        -                          },
        -                          "type": "array"
        -                        }
        -                      },
        -                      "required": [
        -                        "id",
        -                        "boq_row_index",
        -                        "derivation"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "boq_rows": {
        -                "items": {
        -                  "additionalProperties": false,
        -                  "description": "Schema § 1.3 — a single bill row in the requested standard's format.\n\n`description` is the non-verbatim functional description per spec § 13.9 /\n§ 15 invariant — NEVER reproduces a standard's verbatim clause text.\n`rate` / `amount` ship null because rates are commodity data the customer\nowns; the engine's job is the measurement, not the pricing.",
        -                  "properties": {
        -                    "amount": {
        -                      "anyOf": [
        -                        {
        -                          "type": "number"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "attribution": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "audit_id": {
        -                      "anyOf": [
        -                        {
        -                          "type": "string"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "description": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "quantity": {
        -                      "minimum": 0,
        -                      "type": "number"
        -                    },
        -                    "rate": {
        -                      "anyOf": [
        -                        {
        -                          "type": "number"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "unit": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "work_section": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    }
        -                  },
        -                  "required": [
        -                    "work_section",
        -                    "description",
        -                    "quantity",
        -                    "unit",
        -                    "attribution"
        -                  ],
        -                  "type": "object"
        -                },
        -                "type": "array"
        -              },
        -              "drawing": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": false,
        -                    "description": "Schema § 1.6a — inline server-rendered SVG preview of the geometry.\n\nThe MCP mirror of the web ``/compute`` response's ``drawing`` field\n(``api.schemas.compute.DrawingRef``): the same on-screen dimensioned\ndrawing both tiers see in the workspace, surfaced on the MCP compute\nresponse so a chat client can render it inline (60th-fire item C). This\nis the on-screen preview — present on BOTH tiers per the free/paid\nboundary; the downloadable CAD artefacts (DXF / dimensioned PDF) remain\nthe paid differentiator via the export tools.\n\nDefined here rather than importing ``DrawingRef`` because the web\n``schemas`` package imports back into this module (``schemas.render``),\nso reusing it would create an import cycle — the MCP wire contract keeps\nits own copy, the same pattern as ``BoQRow`` / ``DrawingReference``.",
        -                    "properties": {
        -                      "entity_count": {
        -                        "minimum": 0,
        -                        "type": "integer"
        -                      },
        -                      "svg_b64": {
        -                        "minLength": 1,
        -                        "type": "string"
        -                      },
        -                      "unit_of_drawing": {
        -                        "const": "m",
        -                        "default": "m",
        -                        "type": "string"
        -                      },
        -                      "viewbox_height": {
        -                        "exclusiveMinimum": 0,
        -                        "type": "number"
        -                      },
        -                      "viewbox_width": {
        -                        "exclusiveMinimum": 0,
        -                        "type": "number"
        -                      },
        -                      "viewbox_x": {
        -                        "type": "number"
        -                      },
        -                      "viewbox_y": {
        -                        "type": "number"
        -                      }
        -                    },
        -                    "required": [
        -                      "svg_b64",
        -                      "viewbox_x",
        -                      "viewbox_y",
        -                      "viewbox_width",
        -                      "viewbox_height",
        -                      "entity_count"
        -                    ],
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "drawings": {
        -                "anyOf": [
        -                  {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.6 — paid-tier drawing artefact pointer.\n\n`url` is an R2-signed URL; expiry is carried in `_meta.deliverables.expires_at`\non the envelope (not duplicated here). `layers` is DXF-only; PDF/SVG\ncallers omit it.",
        -                      "properties": {
        -                        "drawing_type": {
        -                          "enum": [
        -                            "section",
        -                            "plan",
        -                            "elevation",
        -                            "isometric",
        -                            "detail"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "format": {
        -                          "enum": [
        -                            "DXF",
        -                            "PDF",
        -                            "SVG"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "layers": {
        -                          "anyOf": [
        -                            {
        -                              "items": {
        -                                "type": "string"
        -                              },
        -                              "type": "array"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ],
        -                          "default": null
        -                        },
        -                        "scale": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "sheet_size": {
        -                          "enum": [
        -                            "A1",
        -                            "A2",
        -                            "A3",
        -                            "A4"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "url": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "drawing_type",
        -                        "format",
        -                        "url",
        -                        "sheet_size",
        -                        "scale"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "parameters_used": {
        -                "additionalProperties": false,
        -                "description": "Schema § 1.2 — the parameter snapshot the engine actually used.\n\nSplits user-supplied values from engine defaults so customers can see\nwhich numbers came from them and which the engine filled in. Every\ndefaulted parameter SHOULD have a corresponding entry in `assumptions`\n— the bridge layer enforces this when wrapping engine output.",
        -                "properties": {
        -                  "assumptions": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "engine_defaults": {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  "user_supplied": {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  }
        -                },
        -                "type": "object"
        -              },
        -              "standard": {
        -                "enum": [
        -                  "CESMM4",
        -                  "NRM2",
        -                  "SMM7",
        -                  "MMHW"
        -                ],
        -                "type": "string"
        -              },
        -              "text_summary": {
        -                "maxLength": 2000,
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "totals_summary": {
        -                "additionalProperties": false,
        -                "description": "Schema § 1.4 — totals_summary as a typed wrapper around the free-form dict.\n\nWire shape is a flat object (`{\"concrete_m3\": {...}, \"rebar_t\": {...}}`).\nWe model it as `RootModel`-equivalent via `model_config(extra=\"allow\")`\n+ a single `__root__`-style `entries` dict. Pydantic v2 recommends\n`RootModel` for free-form roots; using a wrapper class keeps the import\nsurface uniform with the rest of this module.",
        -                "properties": {
        -                  "entries": {
        -                    "additionalProperties": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.4 — single material/work-class total entry.",
        -                      "properties": {
        -                        "quantity": {
        -                          "minimum": 0,
        -                          "type": "number"
        -                        },
        -                        "unit": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "quantity",
        -                        "unit"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "object"
        -                  }
        -                },
        -                "type": "object"
        -              },
        -              "warnings": {
        -                "items": {
        -                  "additionalProperties": false,
        -                  "description": "Schema § 1.8 — a non-fatal geometry advisory (56th-fire T2).\n\nThe wire projection of the engine's `core.GeometryWarning`. Advisory only:\na warning NEVER changes a measured quantity — it flags geometry that is\nvalid but likely a mistake (e.g. a stale dependent-height default). Present\non BOTH tiers — a correctness/safety signal, not a paid feature.",
        -                  "properties": {
        -                    "affected_params": {
        -                      "items": {
        -                        "type": "string"
        -                      },
        -                      "type": "array"
        -                    },
        -                    "code": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "detail": {
        -                      "additionalProperties": {
        -                        "type": "number"
        -                      },
        -                      "type": "object"
        -                    },
        -                    "message": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "severity": {
        -                      "enum": [
        -                        "info",
        -                        "advisory",
        -                        "caution"
        -                      ],
        -                      "type": "string"
        -                    }
        -                  },
        -                  "required": [
        -                    "code",
        -                    "severity",
        -                    "message"
        -                  ],
        -                  "type": "object"
        -                },
        -                "type": "array"
        -              }
        -            },
        -            "required": [
        -              "assembly_slug",
        -              "standard",
        -              "parameters_used",
        -              "boq_rows",
        -              "totals_summary",
        -              "text_summary"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      },
        -      "error": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        -            "properties": {
        -              "code": {
        -                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        -                "enum": [
        -                  "RATE_LIMIT_EXCEEDED",
        -                  "TIER_INSUFFICIENT",
        -                  "INVALID_INPUT",
        -                  "SCHEMA_VERSION_MISMATCH",
        -                  "SCHEMA_INVARIANT_VIOLATION",
        -                  "UPSTREAM_TIMEOUT",
        -                  "BACKEND_FAILURE",
        -                  "IP_BLOCKED",
        -                  "RESOURCE_NOT_FOUND",
        -                  "RENDER_FAILURE",
        -                  "OCR_LOW_CONFIDENCE",
        -                  "MANUAL_REVIEW_REQUIRED",
        -                  "ACCEPTANCE_REQUIRED",
        -                  "INVALID_TOKEN"
        -                ],
        -                "type": "string"
        -              },
        -              "details": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "message": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "recoverable": {
        -                "type": "boolean"
        -              },
        -              "retry_after_seconds": {
        -                "anyOf": [
        -                  {
        -                    "minimum": 0,
        -                    "type": "integer"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              }
        -            },
        -            "required": [
        -              "code",
        -              "message",
        -              "recoverable"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      }
        -    },
        -    "required": [
        -      "_meta"
        -    ],
        -    "type": "object"
        -  },
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "_meta": {
        -        "additionalProperties": false,
        -        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        -        "properties": {
        -          "deliverables": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        -                "properties": {
        -                  "docx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "dxf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "expires_at": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  },
        -                  "pdf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "xlsx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "expires_at"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "document_id": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "issued_at": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "output_mode": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Surfaces what a trimmed ``output_mode`` withheld from ``data``.\n\nA trimmed mode (``summary`` / ``boq`` / ``boq_with_backup``) withholds\nalready-computed fields to keep the chat payload small. The withheld value\nreads to a client agent as \"capability missing\" (the box-culvert \"geometry\nbuilder isn't firing\" scare) rather than \"pared for size\": ``drawing`` and\n``audit_trail`` appear as ``null``, ``boq_rows`` as an empty list ``[]``\n(its type forbids ``null``) — both indistinguishable from a genuine absent\nresult. This names the withheld fields and the exact mode that brings each\nback, so the value is unambiguous. Absent on the default ``full_json`` mode\n— nothing is withheld, nothing to point at.",
        -                "properties": {
        -                  "mode": {
        -                    "enum": [
        -                      "summary",
        -                      "boq",
        -                      "boq_with_backup"
        -                    ],
        -                    "type": "string"
        -                  },
        -                  "omitted_fields": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "minItems": 1,
        -                    "type": "array"
        -                  },
        -                  "retrieve_with": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "mode",
        -                  "omitted_fields",
        -                  "retrieve_with"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "rate_limit_remaining": {
        -            "anyOf": [
        -              {
        -                "minimum": 0,
        -                "type": "integer"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "request_id": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "schema_version": {
        -            "const": "1.0.0",
        -            "default": "1.0.0",
        -            "type": "string"
        -          },
        -          "scope_boundary": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        -                "properties": {
        -                  "not_in_scope": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "produced": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "recommended_companions": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "type": "string"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "produced",
        -                  "not_in_scope"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tier": {
        -            "enum": [
        -              "free",
        -              "paid"
        -            ],
        -            "type": "string"
        -          },
        -          "tier_upgrade": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        -                "properties": {
        -                  "available_tiers": {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        -                      "properties": {
        -                        "billing": {
        -                          "enum": [
        -                            "one_off",
        -                            "monthly",
        -                            "annual"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "currency": {
        -                          "enum": [
        -                            "GBP",
        -                            "SGD",
        -                            "EUR",
        -                            "USD",
        -                            "CAD",
        -                            "AUD",
        -                            "NZD",
        -                            "MYR"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "display_name": {
        -                          "type": "string"
        -                        },
        -                        "price_local": {
        -                          "type": "number"
        -                        },
        -                        "tier_slug": {
        -                          "enum": [
        -                            "7_day_pass",
        -                            "solo",
        -                            "studio",
        -                            "practice"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "unlock_summary": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "tier_slug",
        -                        "display_name",
        -                        "price_local",
        -                        "currency",
        -                        "billing",
        -                        "unlock_summary"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "current_tier": {
        -                    "const": "free",
        -                    "default": "free",
        -                    "type": "string"
        -                  },
        -                  "pass_credit": {
        -                    "anyOf": [
        -                      {
        -                        "additionalProperties": false,
        -                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        -                        "properties": {
        -                          "amount_local": {
        -                            "type": "number"
        -                          },
        -                          "applies_to": {
        -                            "const": "solo_first_month",
        -                            "default": "solo_first_month",
        -                            "type": "string"
        -                          },
        -                          "currency": {
        -                            "type": "string"
        -                          },
        -                          "redeemable_until": {
        -                            "type": "string"
        -                          }
        -                        },
        -                        "required": [
        -                          "amount_local",
        -                          "currency",
        -                          "redeemable_until"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "pricing_url": {
        -                    "default": "https://civilquants.com/pricing",
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "available_tiers"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tos_url": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "upgrade_hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "warranty_disclaimer": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          }
        -        },
        -        "required": [
        -          "request_id",
        -          "issued_at",
        -          "tier"
        -        ],
        -        "type": "object"
        -      },
        -      "data": {
        -        "default": null,
        -        "title": "Data"
        -      },
        -      "error": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        -            "properties": {
        -              "code": {
        -                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        -                "enum": [
        -                  "RATE_LIMIT_EXCEEDED",
        -                  "TIER_INSUFFICIENT",
        -                  "INVALID_INPUT",
        -                  "SCHEMA_VERSION_MISMATCH",
        -                  "SCHEMA_INVARIANT_VIOLATION",
        -                  "UPSTREAM_TIMEOUT",
        -                  "BACKEND_FAILURE",
        -                  "IP_BLOCKED",
        -                  "RESOURCE_NOT_FOUND",
        -                  "RENDER_FAILURE",
        -                  "OCR_LOW_CONFIDENCE",
        -                  "MANUAL_REVIEW_REQUIRED",
        -                  "ACCEPTANCE_REQUIRED",
        -                  "INVALID_TOKEN"
        -                ],
        -                "type": "string"
        -              },
        -              "details": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "message": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "recoverable": {
        -                "type": "boolean"
        -              },
        -              "retry_after_seconds": {
        -                "anyOf": [
        -                  {
        -                    "minimum": 0,
        -                    "type": "integer"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              }
        -            },
        -            "required": [
        -              "code",
        -              "message",
        -              "recoverable"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      }
        -    },
        -    "required": [
        -      "_meta"
        -    ],
        -    "type": "object"
        -  }
        -]New value: +[
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "_meta": {
        +        "additionalProperties": false,
        +        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        +        "properties": {
        +          "deliverables": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        +                "properties": {
        +                  "docx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "dxf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "expires_at": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  },
        +                  "pdf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "xlsx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "expires_at"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "document_id": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "issued_at": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "output_mode": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Surfaces what a trimmed ``output_mode`` withheld from ``data``.\n\nA trimmed mode (``summary`` / ``material_schedule`` / ``boq`` /\n``boq_with_backup``) withholds\nalready-computed fields to keep the chat payload small. The withheld value\nreads to a client agent as \"capability missing\" (the box-culvert \"geometry\nbuilder isn't firing\" scare) rather than \"pared for size\": ``drawing`` and\n``audit_trail`` appear as ``null``, ``boq_rows`` as an empty list ``[]``\n(its type forbids ``null``) — both indistinguishable from a genuine absent\nresult. This names the withheld fields and the exact mode that brings each\nback, so the value is unambiguous. Absent on the default ``full_json`` mode\n— nothing is withheld, nothing to point at.",
        +                "properties": {
        +                  "mode": {
        +                    "enum": [
        +                      "summary",
        +                      "material_schedule",
        +                      "boq",
        +                      "boq_with_backup"
        +                    ],
        +                    "type": "string"
        +                  },
        +                  "omitted_fields": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "minItems": 1,
        +                    "type": "array"
        +                  },
        +                  "retrieve_with": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "mode",
        +                  "omitted_fields",
        +                  "retrieve_with"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "rate_limit_remaining": {
        +            "anyOf": [
        +              {
        +                "minimum": 0,
        +                "type": "integer"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "request_id": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "schema_version": {
        +            "const": "1.0.0",
        +            "default": "1.0.0",
        +            "type": "string"
        +          },
        +          "scope_boundary": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        +                "properties": {
        +                  "not_in_scope": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "produced": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "recommended_companions": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "type": "string"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "produced",
        +                  "not_in_scope"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tier": {
        +            "enum": [
        +              "free",
        +              "paid"
        +            ],
        +            "type": "string"
        +          },
        +          "tier_upgrade": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        +                "properties": {
        +                  "available_tiers": {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        +                      "properties": {
        +                        "billing": {
        +                          "enum": [
        +                            "one_off",
        +                            "monthly",
        +                            "annual"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "currency": {
        +                          "enum": [
        +                            "GBP",
        +                            "SGD",
        +                            "EUR",
        +                            "USD",
        +                            "CAD",
        +                            "AUD",
        +                            "NZD",
        +                            "MYR"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "display_name": {
        +                          "type": "string"
        +                        },
        +                        "price_local": {
        +                          "type": "number"
        +                        },
        +                        "tier_slug": {
        +                          "enum": [
        +                            "7_day_pass",
        +                            "solo",
        +                            "studio",
        +                            "practice"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "unlock_summary": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "tier_slug",
        +                        "display_name",
        +                        "price_local",
        +                        "currency",
        +                        "billing",
        +                        "unlock_summary"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "current_tier": {
        +                    "const": "free",
        +                    "default": "free",
        +                    "type": "string"
        +                  },
        +                  "pass_credit": {
        +                    "anyOf": [
        +                      {
        +                        "additionalProperties": false,
        +                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        +                        "properties": {
        +                          "amount_local": {
        +                            "type": "number"
        +                          },
        +                          "applies_to": {
        +                            "const": "solo_first_month",
        +                            "default": "solo_first_month",
        +                            "type": "string"
        +                          },
        +                          "currency": {
        +                            "type": "string"
        +                          },
        +                          "redeemable_until": {
        +                            "type": "string"
        +                          }
        +                        },
        +                        "required": [
        +                          "amount_local",
        +                          "currency",
        +                          "redeemable_until"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "pricing_url": {
        +                    "default": "https://civilquants.com/pricing",
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "available_tiers"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tos_url": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "upgrade_hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "warranty_disclaimer": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          }
        +        },
        +        "required": [
        +          "request_id",
        +          "issued_at",
        +          "tier"
        +        ],
        +        "type": "object"
        +      },
        +      "data": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Schema § 1.1 — the typed payload returned inside `MCPResponse[ComputeResult]`.\n\nFree-tier responses omit `drawings` (the downloadable CAD artefact\npointers — the paid differentiator); the bridge enforces this. The\n`audit_trail` and the inline `drawing` preview are present on BOTH tiers\n(V1 ALIGN / 60th-fire D + C). `text_summary` is bounded to 2000 chars —\nkeeps the LLM-facing summary token-cheap and forces longer narrative into\nBoQ row descriptions where it belongs. `warnings` is the non-fatal\ngeometry advisory list (both tiers).",
        +            "properties": {
        +              "assembly_slug": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "audit_trail": {
        +                "anyOf": [
        +                  {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.7 — paid-tier audit-trail entry.\n\nOne entry per BoQ row; `boq_row_index` ties to the row position in\n`ComputeResult.boq_rows`. `derivation` is the human-readable formula\nwalk-through; `formula` is the optional formal expression.",
        +                      "properties": {
        +                        "boq_row_index": {
        +                          "minimum": 0,
        +                          "type": "integer"
        +                        },
        +                        "derivation": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "formula": {
        +                          "anyOf": [
        +                            {
        +                              "type": "string"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ],
        +                          "default": null
        +                        },
        +                        "id": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "parameters_referenced": {
        +                          "items": {
        +                            "type": "string"
        +                          },
        +                          "type": "array"
        +                        }
        +                      },
        +                      "required": [
        +                        "id",
        +                        "boq_row_index",
        +                        "derivation"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "boq_rows": {
        +                "items": {
        +                  "additionalProperties": false,
        +                  "description": "Schema § 1.3 — a single bill row in the requested standard's format.\n\n`description` is the non-verbatim functional description per spec § 13.9 /\n§ 15 invariant — NEVER reproduces a standard's verbatim clause text.\n`rate` / `amount` ship null because rates are commodity data the customer\nowns; the engine's job is the measurement, not the pricing.",
        +                  "properties": {
        +                    "amount": {
        +                      "anyOf": [
        +                        {
        +                          "type": "number"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "attribution": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "audit_id": {
        +                      "anyOf": [
        +                        {
        +                          "type": "string"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "description": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "quantity": {
        +                      "minimum": 0,
        +                      "type": "number"
        +                    },
        +                    "rate": {
        +                      "anyOf": [
        +                        {
        +                          "type": "number"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "unit": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "work_section": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    }
        +                  },
        +                  "required": [
        +                    "work_section",
        +                    "description",
        +                    "quantity",
        +                    "unit",
        +                    "attribution"
        +                  ],
        +                  "type": "object"
        +                },
        +                "type": "array"
        +              },
        +              "drawing": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": false,
        +                    "description": "Schema § 1.6a — inline server-rendered SVG preview of the geometry.\n\nThe MCP mirror of the web ``/compute`` response's ``drawing`` field\n(``api.schemas.compute.DrawingRef``): the same on-screen dimensioned\ndrawing both tiers see in the workspace, surfaced on the MCP compute\nresponse so a chat client can render it inline (60th-fire item C). This\nis the on-screen preview — present on BOTH tiers per the free/paid\nboundary; the downloadable CAD artefacts (DXF / dimensioned PDF) remain\nthe paid differentiator via the export tools.\n\nDefined here rather than importing ``DrawingRef`` because the web\n``schemas`` package imports back into this module (``schemas.render``),\nso reusing it would create an import cycle — the MCP wire contract keeps\nits own copy, the same pattern as ``BoQRow`` / ``DrawingReference``.",
        +                    "properties": {
        +                      "entity_count": {
        +                        "minimum": 0,
        +                        "type": "integer"
        +                      },
        +                      "svg_b64": {
        +                        "minLength": 1,
        +                        "type": "string"
        +                      },
        +                      "unit_of_drawing": {
        +                        "const": "m",
        +                        "default": "m",
        +                        "type": "string"
        +                      },
        +                      "viewbox_height": {
        +                        "exclusiveMinimum": 0,
        +                        "type": "number"
        +                      },
        +                      "viewbox_width": {
        +                        "exclusiveMinimum": 0,
        +                        "type": "number"
        +                      },
        +                      "viewbox_x": {
        +                        "type": "number"
        +                      },
        +                      "viewbox_y": {
        +                        "type": "number"
        +                      }
        +                    },
        +                    "required": [
        +                      "svg_b64",
        +                      "viewbox_x",
        +                      "viewbox_y",
        +                      "viewbox_width",
        +                      "viewbox_height",
        +                      "entity_count"
        +                    ],
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "drawings": {
        +                "anyOf": [
        +                  {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.6 — paid-tier drawing artefact pointer.\n\n`url` is an R2-signed URL; expiry is carried in `_meta.deliverables.expires_at`\non the envelope (not duplicated here). `layers` is DXF-only; PDF/SVG\ncallers omit it.",
        +                      "properties": {
        +                        "drawing_type": {
        +                          "enum": [
        +                            "section",
        +                            "plan",
        +                            "elevation",
        +                            "isometric",
        +                            "detail"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "format": {
        +                          "enum": [
        +                            "DXF",
        +                            "PDF",
        +                            "SVG"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "layers": {
        +                          "anyOf": [
        +                            {
        +                              "items": {
        +                                "type": "string"
        +                              },
        +                              "type": "array"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ],
        +                          "default": null
        +                        },
        +                        "scale": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "sheet_size": {
        +                          "enum": [
        +                            "A1",
        +                            "A2",
        +                            "A3",
        +                            "A4"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "url": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "drawing_type",
        +                        "format",
        +                        "url",
        +                        "sheet_size",
        +                        "scale"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "parameters_used": {
        +                "additionalProperties": false,
        +                "description": "Schema § 1.2 — the parameter snapshot the engine actually used.\n\nSplits user-supplied values from engine defaults so customers can see\nwhich numbers came from them and which the engine filled in. Every\ndefaulted parameter SHOULD have a corresponding entry in `assumptions`\n— the bridge layer enforces this when wrapping engine output.",
        +                "properties": {
        +                  "assumptions": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "engine_defaults": {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  "user_supplied": {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  }
        +                },
        +                "type": "object"
        +              },
        +              "standard": {
        +                "enum": [
        +                  "CESMM4",
        +                  "NRM2",
        +                  "SMM7",
        +                  "MMHW"
        +                ],
        +                "type": "string"
        +              },
        +              "text_summary": {
        +                "maxLength": 2000,
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "totals_summary": {
        +                "additionalProperties": false,
        +                "description": "Schema § 1.4 — totals_summary as a typed wrapper around the free-form dict.\n\nWire shape is a flat object (`{\"concrete_m3\": {...}, \"rebar_t\": {...}}`).\nWe model it as `RootModel`-equivalent via `model_config(extra=\"allow\")`\n+ a single `__root__`-style `entries` dict. Pydantic v2 recommends\n`RootModel` for free-form roots; using a wrapper class keeps the import\nsurface uniform with the rest of this module.",
        +                "properties": {
        +                  "entries": {
        +                    "additionalProperties": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.4 — single material/work-class total entry.",
        +                      "properties": {
        +                        "quantity": {
        +                          "minimum": 0,
        +                          "type": "number"
        +                        },
        +                        "unit": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "quantity",
        +                        "unit"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "object"
        +                  }
        +                },
        +                "type": "object"
        +              },
        +              "warnings": {
        +                "items": {
        +                  "additionalProperties": false,
        +                  "description": "Schema § 1.8 — a non-fatal geometry advisory (56th-fire T2).\n\nThe wire projection of the engine's `core.GeometryWarning`. Advisory only:\na warning NEVER changes a measured quantity — it flags geometry that is\nvalid but likely a mistake (e.g. a stale dependent-height default). Present\non BOTH tiers — a correctness/safety signal, not a paid feature.",
        +                  "properties": {
        +                    "affected_params": {
        +                      "items": {
        +                        "type": "string"
        +                      },
        +                      "type": "array"
        +                    },
        +                    "code": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "detail": {
        +                      "additionalProperties": {
        +                        "type": "number"
        +                      },
        +                      "type": "object"
        +                    },
        +                    "message": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "severity": {
        +                      "enum": [
        +                        "info",
        +                        "advisory",
        +                        "caution"
        +                      ],
        +                      "type": "string"
        +                    }
        +                  },
        +                  "required": [
        +                    "code",
        +                    "severity",
        +                    "message"
        +                  ],
        +                  "type": "object"
        +                },
        +                "type": "array"
        +              }
        +            },
        +            "required": [
        +              "assembly_slug",
        +              "standard",
        +              "parameters_used",
        +              "boq_rows",
        +              "totals_summary",
        +              "text_summary"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      },
        +      "error": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        +            "properties": {
        +              "code": {
        +                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        +                "enum": [
        +                  "RATE_LIMIT_EXCEEDED",
        +                  "TIER_INSUFFICIENT",
        +                  "INVALID_INPUT",
        +                  "SCHEMA_VERSION_MISMATCH",
        +                  "SCHEMA_INVARIANT_VIOLATION",
        +                  "UPSTREAM_TIMEOUT",
        +                  "BACKEND_FAILURE",
        +                  "IP_BLOCKED",
        +                  "RESOURCE_NOT_FOUND",
        +                  "RENDER_FAILURE",
        +                  "OCR_LOW_CONFIDENCE",
        +                  "MANUAL_REVIEW_REQUIRED",
        +                  "ACCEPTANCE_REQUIRED",
        +                  "INVALID_TOKEN"
        +                ],
        +                "type": "string"
        +              },
        +              "details": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "message": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "recoverable": {
        +                "type": "boolean"
        +              },
        +              "retry_after_seconds": {
        +                "anyOf": [
        +                  {
        +                    "minimum": 0,
        +                    "type": "integer"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              }
        +            },
        +            "required": [
        +              "code",
        +              "message",
        +              "recoverable"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      }
        +    },
        +    "required": [
        +      "_meta"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "_meta": {
        +        "additionalProperties": false,
        +        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        +        "properties": {
        +          "deliverables": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        +                "properties": {
        +                  "docx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "dxf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "expires_at": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  },
        +                  "pdf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "xlsx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "expires_at"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "document_id": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "issued_at": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "output_mode": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Surfaces what a trimmed ``output_mode`` withheld from ``data``.\n\nA trimmed mode (``summary`` / ``material_schedule`` / ``boq`` /\n``boq_with_backup``) withholds\nalready-computed fields to keep the chat payload small. The withheld value\nreads to a client agent as \"capability missing\" (the box-culvert \"geometry\nbuilder isn't firing\" scare) rather than \"pared for size\": ``drawing`` and\n``audit_trail`` appear as ``null``, ``boq_rows`` as an empty list ``[]``\n(its type forbids ``null``) — both indistinguishable from a genuine absent\nresult. This names the withheld fields and the exact mode that brings each\nback, so the value is unambiguous. Absent on the default ``full_json`` mode\n— nothing is withheld, nothing to point at.",
        +                "properties": {
        +                  "mode": {
        +                    "enum": [
        +                      "summary",
        +                      "material_schedule",
        +                      "boq",
        +                      "boq_with_backup"
        +                    ],
        +                    "type": "string"
        +                  },
        +                  "omitted_fields": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "minItems": 1,
        +                    "type": "array"
        +                  },
        +                  "retrieve_with": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "mode",
        +                  "omitted_fields",
        +                  "retrieve_with"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "rate_limit_remaining": {
        +            "anyOf": [
        +              {
        +                "minimum": 0,
        +                "type": "integer"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "request_id": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "schema_version": {
        +            "const": "1.0.0",
        +            "default": "1.0.0",
        +            "type": "string"
        +          },
        +          "scope_boundary": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        +                "properties": {
        +                  "not_in_scope": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "produced": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "recommended_companions": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "type": "string"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "produced",
        +                  "not_in_scope"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tier": {
        +            "enum": [
        +              "free",
        +              "paid"
        +            ],
        +            "type": "string"
        +          },
        +          "tier_upgrade": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        +                "properties": {
        +                  "available_tiers": {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        +                      "properties": {
        +                        "billing": {
        +                          "enum": [
        +                            "one_off",
        +                            "monthly",
        +                            "annual"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "currency": {
        +                          "enum": [
        +                            "GBP",
        +                            "SGD",
        +                            "EUR",
        +                            "USD",
        +                            "CAD",
        +                            "AUD",
        +                            "NZD",
        +                            "MYR"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "display_name": {
        +                          "type": "string"
        +                        },
        +                        "price_local": {
        +                          "type": "number"
        +                        },
        +                        "tier_slug": {
        +                          "enum": [
        +                            "7_day_pass",
        +                            "solo",
        +                            "studio",
        +                            "practice"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "unlock_summary": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "tier_slug",
        +                        "display_name",
        +                        "price_local",
        +                        "currency",
        +                        "billing",
        +                        "unlock_summary"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "current_tier": {
        +                    "const": "free",
        +                    "default": "free",
        +                    "type": "string"
        +                  },
        +                  "pass_credit": {
        +                    "anyOf": [
        +                      {
        +                        "additionalProperties": false,
        +                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        +                        "properties": {
        +                          "amount_local": {
        +                            "type": "number"
        +                          },
        +                          "applies_to": {
        +                            "const": "solo_first_month",
        +                            "default": "solo_first_month",
        +                            "type": "string"
        +                          },
        +                          "currency": {
        +                            "type": "string"
        +                          },
        +                          "redeemable_until": {
        +                            "type": "string"
        +                          }
        +                        },
        +                        "required": [
        +                          "amount_local",
        +                          "currency",
        +                          "redeemable_until"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "pricing_url": {
        +                    "default": "https://civilquants.com/pricing",
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "available_tiers"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tos_url": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "upgrade_hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "warranty_disclaimer": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          }
        +        },
        +        "required": [
        +          "request_id",
        +          "issued_at",
        +          "tier"
        +        ],
        +        "type": "object"
        +      },
        +      "data": {
        +        "default": null,
        +        "title": "Data"
        +      },
        +      "error": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        +            "properties": {
        +              "code": {
        +                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        +                "enum": [
        +                  "RATE_LIMIT_EXCEEDED",
        +                  "TIER_INSUFFICIENT",
        +                  "INVALID_INPUT",
        +                  "SCHEMA_VERSION_MISMATCH",
        +                  "SCHEMA_INVARIANT_VIOLATION",
        +                  "UPSTREAM_TIMEOUT",
        +                  "BACKEND_FAILURE",
        +                  "IP_BLOCKED",
        +                  "RESOURCE_NOT_FOUND",
        +                  "RENDER_FAILURE",
        +                  "OCR_LOW_CONFIDENCE",
        +                  "MANUAL_REVIEW_REQUIRED",
        +                  "ACCEPTANCE_REQUIRED",
        +                  "INVALID_TOKEN"
        +                ],
        +                "type": "string"
        +              },
        +              "details": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "message": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "recoverable": {
        +                "type": "boolean"
        +              },
        +              "retry_after_seconds": {
        +                "anyOf": [
        +                  {
        +                    "minimum": 0,
        +                    "type": "integer"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              }
        +            },
        +            "required": [
        +              "code",
        +              "message",
        +              "recoverable"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      }
        +    },
        +    "required": [
        +      "_meta"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedcompute_pipework_testing2 fields changed
      • changedInput schema / properties / output_mode / enum
        Previous value: -[
        -  "summary",
        -  "boq",
        -  "boq_with_backup",
        -  "full_json"
        -]New value: +[
        +  "summary",
        +  "material_schedule",
        +  "boq",
        +  "boq_with_backup",
        +  "full_json"
        +]
      • changedOutput schema / properties / result / anyOf
        Previous value: -[
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "_meta": {
        -        "additionalProperties": false,
        -        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        -        "properties": {
        -          "deliverables": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        -                "properties": {
        -                  "docx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "dxf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "expires_at": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  },
        -                  "pdf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "xlsx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "expires_at"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "document_id": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "issued_at": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "output_mode": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Surfaces what a trimmed ``output_mode`` withheld from ``data``.\n\nA trimmed mode (``summary`` / ``boq`` / ``boq_with_backup``) withholds\nalready-computed fields to keep the chat payload small. The withheld value\nreads to a client agent as \"capability missing\" (the box-culvert \"geometry\nbuilder isn't firing\" scare) rather than \"pared for size\": ``drawing`` and\n``audit_trail`` appear as ``null``, ``boq_rows`` as an empty list ``[]``\n(its type forbids ``null``) — both indistinguishable from a genuine absent\nresult. This names the withheld fields and the exact mode that brings each\nback, so the value is unambiguous. Absent on the default ``full_json`` mode\n— nothing is withheld, nothing to point at.",
        -                "properties": {
        -                  "mode": {
        -                    "enum": [
        -                      "summary",
        -                      "boq",
        -                      "boq_with_backup"
        -                    ],
        -                    "type": "string"
        -                  },
        -                  "omitted_fields": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "minItems": 1,
        -                    "type": "array"
        -                  },
        -                  "retrieve_with": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "mode",
        -                  "omitted_fields",
        -                  "retrieve_with"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "rate_limit_remaining": {
        -            "anyOf": [
        -              {
        -                "minimum": 0,
        -                "type": "integer"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "request_id": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "schema_version": {
        -            "const": "1.0.0",
        -            "default": "1.0.0",
        -            "type": "string"
        -          },
        -          "scope_boundary": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        -                "properties": {
        -                  "not_in_scope": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "produced": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "recommended_companions": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "type": "string"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "produced",
        -                  "not_in_scope"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tier": {
        -            "enum": [
        -              "free",
        -              "paid"
        -            ],
        -            "type": "string"
        -          },
        -          "tier_upgrade": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        -                "properties": {
        -                  "available_tiers": {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        -                      "properties": {
        -                        "billing": {
        -                          "enum": [
        -                            "one_off",
        -                            "monthly",
        -                            "annual"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "currency": {
        -                          "enum": [
        -                            "GBP",
        -                            "SGD",
        -                            "EUR",
        -                            "USD",
        -                            "CAD",
        -                            "AUD",
        -                            "NZD",
        -                            "MYR"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "display_name": {
        -                          "type": "string"
        -                        },
        -                        "price_local": {
        -                          "type": "number"
        -                        },
        -                        "tier_slug": {
        -                          "enum": [
        -                            "7_day_pass",
        -                            "solo",
        -                            "studio",
        -                            "practice"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "unlock_summary": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "tier_slug",
        -                        "display_name",
        -                        "price_local",
        -                        "currency",
        -                        "billing",
        -                        "unlock_summary"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "current_tier": {
        -                    "const": "free",
        -                    "default": "free",
        -                    "type": "string"
        -                  },
        -                  "pass_credit": {
        -                    "anyOf": [
        -                      {
        -                        "additionalProperties": false,
        -                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        -                        "properties": {
        -                          "amount_local": {
        -                            "type": "number"
        -                          },
        -                          "applies_to": {
        -                            "const": "solo_first_month",
        -                            "default": "solo_first_month",
        -                            "type": "string"
        -                          },
        -                          "currency": {
        -                            "type": "string"
        -                          },
        -                          "redeemable_until": {
        -                            "type": "string"
        -                          }
        -                        },
        -                        "required": [
        -                          "amount_local",
        -                          "currency",
        -                          "redeemable_until"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "pricing_url": {
        -                    "default": "https://civilquants.com/pricing",
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "available_tiers"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tos_url": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "upgrade_hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "warranty_disclaimer": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          }
        -        },
        -        "required": [
        -          "request_id",
        -          "issued_at",
        -          "tier"
        -        ],
        -        "type": "object"
        -      },
        -      "data": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Schema § 1.1 — the typed payload returned inside `MCPResponse[ComputeResult]`.\n\nFree-tier responses omit `drawings` (the downloadable CAD artefact\npointers — the paid differentiator); the bridge enforces this. The\n`audit_trail` and the inline `drawing` preview are present on BOTH tiers\n(V1 ALIGN / 60th-fire D + C). `text_summary` is bounded to 2000 chars —\nkeeps the LLM-facing summary token-cheap and forces longer narrative into\nBoQ row descriptions where it belongs. `warnings` is the non-fatal\ngeometry advisory list (both tiers).",
        -            "properties": {
        -              "assembly_slug": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "audit_trail": {
        -                "anyOf": [
        -                  {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.7 — paid-tier audit-trail entry.\n\nOne entry per BoQ row; `boq_row_index` ties to the row position in\n`ComputeResult.boq_rows`. `derivation` is the human-readable formula\nwalk-through; `formula` is the optional formal expression.",
        -                      "properties": {
        -                        "boq_row_index": {
        -                          "minimum": 0,
        -                          "type": "integer"
        -                        },
        -                        "derivation": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "formula": {
        -                          "anyOf": [
        -                            {
        -                              "type": "string"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ],
        -                          "default": null
        -                        },
        -                        "id": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "parameters_referenced": {
        -                          "items": {
        -                            "type": "string"
        -                          },
        -                          "type": "array"
        -                        }
        -                      },
        -                      "required": [
        -                        "id",
        -                        "boq_row_index",
        -                        "derivation"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "boq_rows": {
        -                "items": {
        -                  "additionalProperties": false,
        -                  "description": "Schema § 1.3 — a single bill row in the requested standard's format.\n\n`description` is the non-verbatim functional description per spec § 13.9 /\n§ 15 invariant — NEVER reproduces a standard's verbatim clause text.\n`rate` / `amount` ship null because rates are commodity data the customer\nowns; the engine's job is the measurement, not the pricing.",
        -                  "properties": {
        -                    "amount": {
        -                      "anyOf": [
        -                        {
        -                          "type": "number"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "attribution": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "audit_id": {
        -                      "anyOf": [
        -                        {
        -                          "type": "string"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "description": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "quantity": {
        -                      "minimum": 0,
        -                      "type": "number"
        -                    },
        -                    "rate": {
        -                      "anyOf": [
        -                        {
        -                          "type": "number"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "unit": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "work_section": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    }
        -                  },
        -                  "required": [
        -                    "work_section",
        -                    "description",
        -                    "quantity",
        -                    "unit",
        -                    "attribution"
        -                  ],
        -                  "type": "object"
        -                },
        -                "type": "array"
        -              },
        -              "drawing": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": false,
        -                    "description": "Schema § 1.6a — inline server-rendered SVG preview of the geometry.\n\nThe MCP mirror of the web ``/compute`` response's ``drawing`` field\n(``api.schemas.compute.DrawingRef``): the same on-screen dimensioned\ndrawing both tiers see in the workspace, surfaced on the MCP compute\nresponse so a chat client can render it inline (60th-fire item C). This\nis the on-screen preview — present on BOTH tiers per the free/paid\nboundary; the downloadable CAD artefacts (DXF / dimensioned PDF) remain\nthe paid differentiator via the export tools.\n\nDefined here rather than importing ``DrawingRef`` because the web\n``schemas`` package imports back into this module (``schemas.render``),\nso reusing it would create an import cycle — the MCP wire contract keeps\nits own copy, the same pattern as ``BoQRow`` / ``DrawingReference``.",
        -                    "properties": {
        -                      "entity_count": {
        -                        "minimum": 0,
        -                        "type": "integer"
        -                      },
        -                      "svg_b64": {
        -                        "minLength": 1,
        -                        "type": "string"
        -                      },
        -                      "unit_of_drawing": {
        -                        "const": "m",
        -                        "default": "m",
        -                        "type": "string"
        -                      },
        -                      "viewbox_height": {
        -                        "exclusiveMinimum": 0,
        -                        "type": "number"
        -                      },
        -                      "viewbox_width": {
        -                        "exclusiveMinimum": 0,
        -                        "type": "number"
        -                      },
        -                      "viewbox_x": {
        -                        "type": "number"
        -                      },
        -                      "viewbox_y": {
        -                        "type": "number"
        -                      }
        -                    },
        -                    "required": [
        -                      "svg_b64",
        -                      "viewbox_x",
        -                      "viewbox_y",
        -                      "viewbox_width",
        -                      "viewbox_height",
        -                      "entity_count"
        -                    ],
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "drawings": {
        -                "anyOf": [
        -                  {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.6 — paid-tier drawing artefact pointer.\n\n`url` is an R2-signed URL; expiry is carried in `_meta.deliverables.expires_at`\non the envelope (not duplicated here). `layers` is DXF-only; PDF/SVG\ncallers omit it.",
        -                      "properties": {
        -                        "drawing_type": {
        -                          "enum": [
        -                            "section",
        -                            "plan",
        -                            "elevation",
        -                            "isometric",
        -                            "detail"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "format": {
        -                          "enum": [
        -                            "DXF",
        -                            "PDF",
        -                            "SVG"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "layers": {
        -                          "anyOf": [
        -                            {
        -                              "items": {
        -                                "type": "string"
        -                              },
        -                              "type": "array"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ],
        -                          "default": null
        -                        },
        -                        "scale": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "sheet_size": {
        -                          "enum": [
        -                            "A1",
        -                            "A2",
        -                            "A3",
        -                            "A4"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "url": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "drawing_type",
        -                        "format",
        -                        "url",
        -                        "sheet_size",
        -                        "scale"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "parameters_used": {
        -                "additionalProperties": false,
        -                "description": "Schema § 1.2 — the parameter snapshot the engine actually used.\n\nSplits user-supplied values from engine defaults so customers can see\nwhich numbers came from them and which the engine filled in. Every\ndefaulted parameter SHOULD have a corresponding entry in `assumptions`\n— the bridge layer enforces this when wrapping engine output.",
        -                "properties": {
        -                  "assumptions": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "engine_defaults": {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  "user_supplied": {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  }
        -                },
        -                "type": "object"
        -              },
        -              "standard": {
        -                "enum": [
        -                  "CESMM4",
        -                  "NRM2",
        -                  "SMM7",
        -                  "MMHW"
        -                ],
        -                "type": "string"
        -              },
        -              "text_summary": {
        -                "maxLength": 2000,
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "totals_summary": {
        -                "additionalProperties": false,
        -                "description": "Schema § 1.4 — totals_summary as a typed wrapper around the free-form dict.\n\nWire shape is a flat object (`{\"concrete_m3\": {...}, \"rebar_t\": {...}}`).\nWe model it as `RootModel`-equivalent via `model_config(extra=\"allow\")`\n+ a single `__root__`-style `entries` dict. Pydantic v2 recommends\n`RootModel` for free-form roots; using a wrapper class keeps the import\nsurface uniform with the rest of this module.",
        -                "properties": {
        -                  "entries": {
        -                    "additionalProperties": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.4 — single material/work-class total entry.",
        -                      "properties": {
        -                        "quantity": {
        -                          "minimum": 0,
        -                          "type": "number"
        -                        },
        -                        "unit": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "quantity",
        -                        "unit"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "object"
        -                  }
        -                },
        -                "type": "object"
        -              },
        -              "warnings": {
        -                "items": {
        -                  "additionalProperties": false,
        -                  "description": "Schema § 1.8 — a non-fatal geometry advisory (56th-fire T2).\n\nThe wire projection of the engine's `core.GeometryWarning`. Advisory only:\na warning NEVER changes a measured quantity — it flags geometry that is\nvalid but likely a mistake (e.g. a stale dependent-height default). Present\non BOTH tiers — a correctness/safety signal, not a paid feature.",
        -                  "properties": {
        -                    "affected_params": {
        -                      "items": {
        -                        "type": "string"
        -                      },
        -                      "type": "array"
        -                    },
        -                    "code": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "detail": {
        -                      "additionalProperties": {
        -                        "type": "number"
        -                      },
        -                      "type": "object"
        -                    },
        -                    "message": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "severity": {
        -                      "enum": [
        -                        "info",
        -                        "advisory",
        -                        "caution"
        -                      ],
        -                      "type": "string"
        -                    }
        -                  },
        -                  "required": [
        -                    "code",
        -                    "severity",
        -                    "message"
        -                  ],
        -                  "type": "object"
        -                },
        -                "type": "array"
        -              }
        -            },
        -            "required": [
        -              "assembly_slug",
        -              "standard",
        -              "parameters_used",
        -              "boq_rows",
        -              "totals_summary",
        -              "text_summary"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      },
        -      "error": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        -            "properties": {
        -              "code": {
        -                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        -                "enum": [
        -                  "RATE_LIMIT_EXCEEDED",
        -                  "TIER_INSUFFICIENT",
        -                  "INVALID_INPUT",
        -                  "SCHEMA_VERSION_MISMATCH",
        -                  "SCHEMA_INVARIANT_VIOLATION",
        -                  "UPSTREAM_TIMEOUT",
        -                  "BACKEND_FAILURE",
        -                  "IP_BLOCKED",
        -                  "RESOURCE_NOT_FOUND",
        -                  "RENDER_FAILURE",
        -                  "OCR_LOW_CONFIDENCE",
        -                  "MANUAL_REVIEW_REQUIRED",
        -                  "ACCEPTANCE_REQUIRED",
        -                  "INVALID_TOKEN"
        -                ],
        -                "type": "string"
        -              },
        -              "details": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "message": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "recoverable": {
        -                "type": "boolean"
        -              },
        -              "retry_after_seconds": {
        -                "anyOf": [
        -                  {
        -                    "minimum": 0,
        -                    "type": "integer"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              }
        -            },
        -            "required": [
        -              "code",
        -              "message",
        -              "recoverable"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      }
        -    },
        -    "required": [
        -      "_meta"
        -    ],
        -    "type": "object"
        -  },
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "_meta": {
        -        "additionalProperties": false,
        -        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        -        "properties": {
        -          "deliverables": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        -                "properties": {
        -                  "docx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "dxf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "expires_at": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  },
        -                  "pdf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "xlsx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "expires_at"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "document_id": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "issued_at": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "output_mode": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Surfaces what a trimmed ``output_mode`` withheld from ``data``.\n\nA trimmed mode (``summary`` / ``boq`` / ``boq_with_backup``) withholds\nalready-computed fields to keep the chat payload small. The withheld value\nreads to a client agent as \"capability missing\" (the box-culvert \"geometry\nbuilder isn't firing\" scare) rather than \"pared for size\": ``drawing`` and\n``audit_trail`` appear as ``null``, ``boq_rows`` as an empty list ``[]``\n(its type forbids ``null``) — both indistinguishable from a genuine absent\nresult. This names the withheld fields and the exact mode that brings each\nback, so the value is unambiguous. Absent on the default ``full_json`` mode\n— nothing is withheld, nothing to point at.",
        -                "properties": {
        -                  "mode": {
        -                    "enum": [
        -                      "summary",
        -                      "boq",
        -                      "boq_with_backup"
        -                    ],
        -                    "type": "string"
        -                  },
        -                  "omitted_fields": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "minItems": 1,
        -                    "type": "array"
        -                  },
        -                  "retrieve_with": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "mode",
        -                  "omitted_fields",
        -                  "retrieve_with"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "rate_limit_remaining": {
        -            "anyOf": [
        -              {
        -                "minimum": 0,
        -                "type": "integer"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "request_id": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "schema_version": {
        -            "const": "1.0.0",
        -            "default": "1.0.0",
        -            "type": "string"
        -          },
        -          "scope_boundary": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        -                "properties": {
        -                  "not_in_scope": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "produced": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "recommended_companions": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "type": "string"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "produced",
        -                  "not_in_scope"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tier": {
        -            "enum": [
        -              "free",
        -              "paid"
        -            ],
        -            "type": "string"
        -          },
        -          "tier_upgrade": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        -                "properties": {
        -                  "available_tiers": {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        -                      "properties": {
        -                        "billing": {
        -                          "enum": [
        -                            "one_off",
        -                            "monthly",
        -                            "annual"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "currency": {
        -                          "enum": [
        -                            "GBP",
        -                            "SGD",
        -                            "EUR",
        -                            "USD",
        -                            "CAD",
        -                            "AUD",
        -                            "NZD",
        -                            "MYR"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "display_name": {
        -                          "type": "string"
        -                        },
        -                        "price_local": {
        -                          "type": "number"
        -                        },
        -                        "tier_slug": {
        -                          "enum": [
        -                            "7_day_pass",
        -                            "solo",
        -                            "studio",
        -                            "practice"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "unlock_summary": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "tier_slug",
        -                        "display_name",
        -                        "price_local",
        -                        "currency",
        -                        "billing",
        -                        "unlock_summary"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "current_tier": {
        -                    "const": "free",
        -                    "default": "free",
        -                    "type": "string"
        -                  },
        -                  "pass_credit": {
        -                    "anyOf": [
        -                      {
        -                        "additionalProperties": false,
        -                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        -                        "properties": {
        -                          "amount_local": {
        -                            "type": "number"
        -                          },
        -                          "applies_to": {
        -                            "const": "solo_first_month",
        -                            "default": "solo_first_month",
        -                            "type": "string"
        -                          },
        -                          "currency": {
        -                            "type": "string"
        -                          },
        -                          "redeemable_until": {
        -                            "type": "string"
        -                          }
        -                        },
        -                        "required": [
        -                          "amount_local",
        -                          "currency",
        -                          "redeemable_until"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "pricing_url": {
        -                    "default": "https://civilquants.com/pricing",
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "available_tiers"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tos_url": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "upgrade_hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "warranty_disclaimer": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          }
        -        },
        -        "required": [
        -          "request_id",
        -          "issued_at",
        -          "tier"
        -        ],
        -        "type": "object"
        -      },
        -      "data": {
        -        "default": null,
        -        "title": "Data"
        -      },
        -      "error": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        -            "properties": {
        -              "code": {
        -                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        -                "enum": [
        -                  "RATE_LIMIT_EXCEEDED",
        -                  "TIER_INSUFFICIENT",
        -                  "INVALID_INPUT",
        -                  "SCHEMA_VERSION_MISMATCH",
        -                  "SCHEMA_INVARIANT_VIOLATION",
        -                  "UPSTREAM_TIMEOUT",
        -                  "BACKEND_FAILURE",
        -                  "IP_BLOCKED",
        -                  "RESOURCE_NOT_FOUND",
        -                  "RENDER_FAILURE",
        -                  "OCR_LOW_CONFIDENCE",
        -                  "MANUAL_REVIEW_REQUIRED",
        -                  "ACCEPTANCE_REQUIRED",
        -                  "INVALID_TOKEN"
        -                ],
        -                "type": "string"
        -              },
        -              "details": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "message": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "recoverable": {
        -                "type": "boolean"
        -              },
        -              "retry_after_seconds": {
        -                "anyOf": [
        -                  {
        -                    "minimum": 0,
        -                    "type": "integer"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              }
        -            },
        -            "required": [
        -              "code",
        -              "message",
        -              "recoverable"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      }
        -    },
        -    "required": [
        -      "_meta"
        -    ],
        -    "type": "object"
        -  }
        -]New value: +[
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "_meta": {
        +        "additionalProperties": false,
        +        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        +        "properties": {
        +          "deliverables": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        +                "properties": {
        +                  "docx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "dxf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "expires_at": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  },
        +                  "pdf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "xlsx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "expires_at"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "document_id": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "issued_at": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "output_mode": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Surfaces what a trimmed ``output_mode`` withheld from ``data``.\n\nA trimmed mode (``summary`` / ``material_schedule`` / ``boq`` /\n``boq_with_backup``) withholds\nalready-computed fields to keep the chat payload small. The withheld value\nreads to a client agent as \"capability missing\" (the box-culvert \"geometry\nbuilder isn't firing\" scare) rather than \"pared for size\": ``drawing`` and\n``audit_trail`` appear as ``null``, ``boq_rows`` as an empty list ``[]``\n(its type forbids ``null``) — both indistinguishable from a genuine absent\nresult. This names the withheld fields and the exact mode that brings each\nback, so the value is unambiguous. Absent on the default ``full_json`` mode\n— nothing is withheld, nothing to point at.",
        +                "properties": {
        +                  "mode": {
        +                    "enum": [
        +                      "summary",
        +                      "material_schedule",
        +                      "boq",
        +                      "boq_with_backup"
        +                    ],
        +                    "type": "string"
        +                  },
        +                  "omitted_fields": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "minItems": 1,
        +                    "type": "array"
        +                  },
        +                  "retrieve_with": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "mode",
        +                  "omitted_fields",
        +                  "retrieve_with"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "rate_limit_remaining": {
        +            "anyOf": [
        +              {
        +                "minimum": 0,
        +                "type": "integer"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "request_id": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "schema_version": {
        +            "const": "1.0.0",
        +            "default": "1.0.0",
        +            "type": "string"
        +          },
        +          "scope_boundary": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        +                "properties": {
        +                  "not_in_scope": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "produced": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "recommended_companions": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "type": "string"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "produced",
        +                  "not_in_scope"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tier": {
        +            "enum": [
        +              "free",
        +              "paid"
        +            ],
        +            "type": "string"
        +          },
        +          "tier_upgrade": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        +                "properties": {
        +                  "available_tiers": {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        +                      "properties": {
        +                        "billing": {
        +                          "enum": [
        +                            "one_off",
        +                            "monthly",
        +                            "annual"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "currency": {
        +                          "enum": [
        +                            "GBP",
        +                            "SGD",
        +                            "EUR",
        +                            "USD",
        +                            "CAD",
        +                            "AUD",
        +                            "NZD",
        +                            "MYR"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "display_name": {
        +                          "type": "string"
        +                        },
        +                        "price_local": {
        +                          "type": "number"
        +                        },
        +                        "tier_slug": {
        +                          "enum": [
        +                            "7_day_pass",
        +                            "solo",
        +                            "studio",
        +                            "practice"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "unlock_summary": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "tier_slug",
        +                        "display_name",
        +                        "price_local",
        +                        "currency",
        +                        "billing",
        +                        "unlock_summary"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "current_tier": {
        +                    "const": "free",
        +                    "default": "free",
        +                    "type": "string"
        +                  },
        +                  "pass_credit": {
        +                    "anyOf": [
        +                      {
        +                        "additionalProperties": false,
        +                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        +                        "properties": {
        +                          "amount_local": {
        +                            "type": "number"
        +                          },
        +                          "applies_to": {
        +                            "const": "solo_first_month",
        +                            "default": "solo_first_month",
        +                            "type": "string"
        +                          },
        +                          "currency": {
        +                            "type": "string"
        +                          },
        +                          "redeemable_until": {
        +                            "type": "string"
        +                          }
        +                        },
        +                        "required": [
        +                          "amount_local",
        +                          "currency",
        +                          "redeemable_until"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "pricing_url": {
        +                    "default": "https://civilquants.com/pricing",
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "available_tiers"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tos_url": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "upgrade_hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "warranty_disclaimer": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          }
        +        },
        +        "required": [
        +          "request_id",
        +          "issued_at",
        +          "tier"
        +        ],
        +        "type": "object"
        +      },
        +      "data": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Schema § 1.1 — the typed payload returned inside `MCPResponse[ComputeResult]`.\n\nFree-tier responses omit `drawings` (the downloadable CAD artefact\npointers — the paid differentiator); the bridge enforces this. The\n`audit_trail` and the inline `drawing` preview are present on BOTH tiers\n(V1 ALIGN / 60th-fire D + C). `text_summary` is bounded to 2000 chars —\nkeeps the LLM-facing summary token-cheap and forces longer narrative into\nBoQ row descriptions where it belongs. `warnings` is the non-fatal\ngeometry advisory list (both tiers).",
        +            "properties": {
        +              "assembly_slug": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "audit_trail": {
        +                "anyOf": [
        +                  {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.7 — paid-tier audit-trail entry.\n\nOne entry per BoQ row; `boq_row_index` ties to the row position in\n`ComputeResult.boq_rows`. `derivation` is the human-readable formula\nwalk-through; `formula` is the optional formal expression.",
        +                      "properties": {
        +                        "boq_row_index": {
        +                          "minimum": 0,
        +                          "type": "integer"
        +                        },
        +                        "derivation": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "formula": {
        +                          "anyOf": [
        +                            {
        +                              "type": "string"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ],
        +                          "default": null
        +                        },
        +                        "id": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "parameters_referenced": {
        +                          "items": {
        +                            "type": "string"
        +                          },
        +                          "type": "array"
        +                        }
        +                      },
        +                      "required": [
        +                        "id",
        +                        "boq_row_index",
        +                        "derivation"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "boq_rows": {
        +                "items": {
        +                  "additionalProperties": false,
        +                  "description": "Schema § 1.3 — a single bill row in the requested standard's format.\n\n`description` is the non-verbatim functional description per spec § 13.9 /\n§ 15 invariant — NEVER reproduces a standard's verbatim clause text.\n`rate` / `amount` ship null because rates are commodity data the customer\nowns; the engine's job is the measurement, not the pricing.",
        +                  "properties": {
        +                    "amount": {
        +                      "anyOf": [
        +                        {
        +                          "type": "number"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "attribution": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "audit_id": {
        +                      "anyOf": [
        +                        {
        +                          "type": "string"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "description": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "quantity": {
        +                      "minimum": 0,
        +                      "type": "number"
        +                    },
        +                    "rate": {
        +                      "anyOf": [
        +                        {
        +                          "type": "number"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "unit": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "work_section": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    }
        +                  },
        +                  "required": [
        +                    "work_section",
        +                    "description",
        +                    "quantity",
        +                    "unit",
        +                    "attribution"
        +                  ],
        +                  "type": "object"
        +                },
        +                "type": "array"
        +              },
        +              "drawing": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": false,
        +                    "description": "Schema § 1.6a — inline server-rendered SVG preview of the geometry.\n\nThe MCP mirror of the web ``/compute`` response's ``drawing`` field\n(``api.schemas.compute.DrawingRef``): the same on-screen dimensioned\ndrawing both tiers see in the workspace, surfaced on the MCP compute\nresponse so a chat client can render it inline (60th-fire item C). This\nis the on-screen preview — present on BOTH tiers per the free/paid\nboundary; the downloadable CAD artefacts (DXF / dimensioned PDF) remain\nthe paid differentiator via the export tools.\n\nDefined here rather than importing ``DrawingRef`` because the web\n``schemas`` package imports back into this module (``schemas.render``),\nso reusing it would create an import cycle — the MCP wire contract keeps\nits own copy, the same pattern as ``BoQRow`` / ``DrawingReference``.",
        +                    "properties": {
        +                      "entity_count": {
        +                        "minimum": 0,
        +                        "type": "integer"
        +                      },
        +                      "svg_b64": {
        +                        "minLength": 1,
        +                        "type": "string"
        +                      },
        +                      "unit_of_drawing": {
        +                        "const": "m",
        +                        "default": "m",
        +                        "type": "string"
        +                      },
        +                      "viewbox_height": {
        +                        "exclusiveMinimum": 0,
        +                        "type": "number"
        +                      },
        +                      "viewbox_width": {
        +                        "exclusiveMinimum": 0,
        +                        "type": "number"
        +                      },
        +                      "viewbox_x": {
        +                        "type": "number"
        +                      },
        +                      "viewbox_y": {
        +                        "type": "number"
        +                      }
        +                    },
        +                    "required": [
        +                      "svg_b64",
        +                      "viewbox_x",
        +                      "viewbox_y",
        +                      "viewbox_width",
        +                      "viewbox_height",
        +                      "entity_count"
        +                    ],
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "drawings": {
        +                "anyOf": [
        +                  {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.6 — paid-tier drawing artefact pointer.\n\n`url` is an R2-signed URL; expiry is carried in `_meta.deliverables.expires_at`\non the envelope (not duplicated here). `layers` is DXF-only; PDF/SVG\ncallers omit it.",
        +                      "properties": {
        +                        "drawing_type": {
        +                          "enum": [
        +                            "section",
        +                            "plan",
        +                            "elevation",
        +                            "isometric",
        +                            "detail"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "format": {
        +                          "enum": [
        +                            "DXF",
        +                            "PDF",
        +                            "SVG"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "layers": {
        +                          "anyOf": [
        +                            {
        +                              "items": {
        +                                "type": "string"
        +                              },
        +                              "type": "array"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ],
        +                          "default": null
        +                        },
        +                        "scale": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "sheet_size": {
        +                          "enum": [
        +                            "A1",
        +                            "A2",
        +                            "A3",
        +                            "A4"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "url": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "drawing_type",
        +                        "format",
        +                        "url",
        +                        "sheet_size",
        +                        "scale"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "parameters_used": {
        +                "additionalProperties": false,
        +                "description": "Schema § 1.2 — the parameter snapshot the engine actually used.\n\nSplits user-supplied values from engine defaults so customers can see\nwhich numbers came from them and which the engine filled in. Every\ndefaulted parameter SHOULD have a corresponding entry in `assumptions`\n— the bridge layer enforces this when wrapping engine output.",
        +                "properties": {
        +                  "assumptions": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "engine_defaults": {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  "user_supplied": {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  }
        +                },
        +                "type": "object"
        +              },
        +              "standard": {
        +                "enum": [
        +                  "CESMM4",
        +                  "NRM2",
        +                  "SMM7",
        +                  "MMHW"
        +                ],
        +                "type": "string"
        +              },
        +              "text_summary": {
        +                "maxLength": 2000,
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "totals_summary": {
        +                "additionalProperties": false,
        +                "description": "Schema § 1.4 — totals_summary as a typed wrapper around the free-form dict.\n\nWire shape is a flat object (`{\"concrete_m3\": {...}, \"rebar_t\": {...}}`).\nWe model it as `RootModel`-equivalent via `model_config(extra=\"allow\")`\n+ a single `__root__`-style `entries` dict. Pydantic v2 recommends\n`RootModel` for free-form roots; using a wrapper class keeps the import\nsurface uniform with the rest of this module.",
        +                "properties": {
        +                  "entries": {
        +                    "additionalProperties": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.4 — single material/work-class total entry.",
        +                      "properties": {
        +                        "quantity": {
        +                          "minimum": 0,
        +                          "type": "number"
        +                        },
        +                        "unit": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "quantity",
        +                        "unit"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "object"
        +                  }
        +                },
        +                "type": "object"
        +              },
        +              "warnings": {
        +                "items": {
        +                  "additionalProperties": false,
        +                  "description": "Schema § 1.8 — a non-fatal geometry advisory (56th-fire T2).\n\nThe wire projection of the engine's `core.GeometryWarning`. Advisory only:\na warning NEVER changes a measured quantity — it flags geometry that is\nvalid but likely a mistake (e.g. a stale dependent-height default). Present\non BOTH tiers — a correctness/safety signal, not a paid feature.",
        +                  "properties": {
        +                    "affected_params": {
        +                      "items": {
        +                        "type": "string"
        +                      },
        +                      "type": "array"
        +                    },
        +                    "code": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "detail": {
        +                      "additionalProperties": {
        +                        "type": "number"
        +                      },
        +                      "type": "object"
        +                    },
        +                    "message": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "severity": {
        +                      "enum": [
        +                        "info",
        +                        "advisory",
        +                        "caution"
        +                      ],
        +                      "type": "string"
        +                    }
        +                  },
        +                  "required": [
        +                    "code",
        +                    "severity",
        +                    "message"
        +                  ],
        +                  "type": "object"
        +                },
        +                "type": "array"
        +              }
        +            },
        +            "required": [
        +              "assembly_slug",
        +              "standard",
        +              "parameters_used",
        +              "boq_rows",
        +              "totals_summary",
        +              "text_summary"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      },
        +      "error": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        +            "properties": {
        +              "code": {
        +                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        +                "enum": [
        +                  "RATE_LIMIT_EXCEEDED",
        +                  "TIER_INSUFFICIENT",
        +                  "INVALID_INPUT",
        +                  "SCHEMA_VERSION_MISMATCH",
        +                  "SCHEMA_INVARIANT_VIOLATION",
        +                  "UPSTREAM_TIMEOUT",
        +                  "BACKEND_FAILURE",
        +                  "IP_BLOCKED",
        +                  "RESOURCE_NOT_FOUND",
        +                  "RENDER_FAILURE",
        +                  "OCR_LOW_CONFIDENCE",
        +                  "MANUAL_REVIEW_REQUIRED",
        +                  "ACCEPTANCE_REQUIRED",
        +                  "INVALID_TOKEN"
        +                ],
        +                "type": "string"
        +              },
        +              "details": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "message": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "recoverable": {
        +                "type": "boolean"
        +              },
        +              "retry_after_seconds": {
        +                "anyOf": [
        +                  {
        +                    "minimum": 0,
        +                    "type": "integer"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              }
        +            },
        +            "required": [
        +              "code",
        +              "message",
        +              "recoverable"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      }
        +    },
        +    "required": [
        +      "_meta"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "_meta": {
        +        "additionalProperties": false,
        +        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        +        "properties": {
        +          "deliverables": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        +                "properties": {
        +                  "docx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "dxf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "expires_at": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  },
        +                  "pdf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "xlsx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "expires_at"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "document_id": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "issued_at": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "output_mode": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Surfaces what a trimmed ``output_mode`` withheld from ``data``.\n\nA trimmed mode (``summary`` / ``material_schedule`` / ``boq`` /\n``boq_with_backup``) withholds\nalready-computed fields to keep the chat payload small. The withheld value\nreads to a client agent as \"capability missing\" (the box-culvert \"geometry\nbuilder isn't firing\" scare) rather than \"pared for size\": ``drawing`` and\n``audit_trail`` appear as ``null``, ``boq_rows`` as an empty list ``[]``\n(its type forbids ``null``) — both indistinguishable from a genuine absent\nresult. This names the withheld fields and the exact mode that brings each\nback, so the value is unambiguous. Absent on the default ``full_json`` mode\n— nothing is withheld, nothing to point at.",
        +                "properties": {
        +                  "mode": {
        +                    "enum": [
        +                      "summary",
        +                      "material_schedule",
        +                      "boq",
        +                      "boq_with_backup"
        +                    ],
        +                    "type": "string"
        +                  },
        +                  "omitted_fields": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "minItems": 1,
        +                    "type": "array"
        +                  },
        +                  "retrieve_with": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "mode",
        +                  "omitted_fields",
        +                  "retrieve_with"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "rate_limit_remaining": {
        +            "anyOf": [
        +              {
        +                "minimum": 0,
        +                "type": "integer"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "request_id": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "schema_version": {
        +            "const": "1.0.0",
        +            "default": "1.0.0",
        +            "type": "string"
        +          },
        +          "scope_boundary": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        +                "properties": {
        +                  "not_in_scope": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "produced": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "recommended_companions": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "type": "string"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "produced",
        +                  "not_in_scope"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tier": {
        +            "enum": [
        +              "free",
        +              "paid"
        +            ],
        +            "type": "string"
        +          },
        +          "tier_upgrade": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        +                "properties": {
        +                  "available_tiers": {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        +                      "properties": {
        +                        "billing": {
        +                          "enum": [
        +                            "one_off",
        +                            "monthly",
        +                            "annual"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "currency": {
        +                          "enum": [
        +                            "GBP",
        +                            "SGD",
        +                            "EUR",
        +                            "USD",
        +                            "CAD",
        +                            "AUD",
        +                            "NZD",
        +                            "MYR"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "display_name": {
        +                          "type": "string"
        +                        },
        +                        "price_local": {
        +                          "type": "number"
        +                        },
        +                        "tier_slug": {
        +                          "enum": [
        +                            "7_day_pass",
        +                            "solo",
        +                            "studio",
        +                            "practice"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "unlock_summary": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "tier_slug",
        +                        "display_name",
        +                        "price_local",
        +                        "currency",
        +                        "billing",
        +                        "unlock_summary"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "current_tier": {
        +                    "const": "free",
        +                    "default": "free",
        +                    "type": "string"
        +                  },
        +                  "pass_credit": {
        +                    "anyOf": [
        +                      {
        +                        "additionalProperties": false,
        +                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        +                        "properties": {
        +                          "amount_local": {
        +                            "type": "number"
        +                          },
        +                          "applies_to": {
        +                            "const": "solo_first_month",
        +                            "default": "solo_first_month",
        +                            "type": "string"
        +                          },
        +                          "currency": {
        +                            "type": "string"
        +                          },
        +                          "redeemable_until": {
        +                            "type": "string"
        +                          }
        +                        },
        +                        "required": [
        +                          "amount_local",
        +                          "currency",
        +                          "redeemable_until"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "pricing_url": {
        +                    "default": "https://civilquants.com/pricing",
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "available_tiers"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tos_url": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "upgrade_hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "warranty_disclaimer": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          }
        +        },
        +        "required": [
        +          "request_id",
        +          "issued_at",
        +          "tier"
        +        ],
        +        "type": "object"
        +      },
        +      "data": {
        +        "default": null,
        +        "title": "Data"
        +      },
        +      "error": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        +            "properties": {
        +              "code": {
        +                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        +                "enum": [
        +                  "RATE_LIMIT_EXCEEDED",
        +                  "TIER_INSUFFICIENT",
        +                  "INVALID_INPUT",
        +                  "SCHEMA_VERSION_MISMATCH",
        +                  "SCHEMA_INVARIANT_VIOLATION",
        +                  "UPSTREAM_TIMEOUT",
        +                  "BACKEND_FAILURE",
        +                  "IP_BLOCKED",
        +                  "RESOURCE_NOT_FOUND",
        +                  "RENDER_FAILURE",
        +                  "OCR_LOW_CONFIDENCE",
        +                  "MANUAL_REVIEW_REQUIRED",
        +                  "ACCEPTANCE_REQUIRED",
        +                  "INVALID_TOKEN"
        +                ],
        +                "type": "string"
        +              },
        +              "details": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "message": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "recoverable": {
        +                "type": "boolean"
        +              },
        +              "retry_after_seconds": {
        +                "anyOf": [
        +                  {
        +                    "minimum": 0,
        +                    "type": "integer"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              }
        +            },
        +            "required": [
        +              "code",
        +              "message",
        +              "recoverable"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      }
        +    },
        +    "required": [
        +      "_meta"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedcompute_reinforced_soil_wall2 fields changed
      • changedInput schema / properties / output_mode / enum
        Previous value: -[
        -  "summary",
        -  "boq",
        -  "boq_with_backup",
        -  "full_json"
        -]New value: +[
        +  "summary",
        +  "material_schedule",
        +  "boq",
        +  "boq_with_backup",
        +  "full_json"
        +]
      • changedOutput schema / properties / result / anyOf
        Previous value: -[
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "_meta": {
        -        "additionalProperties": false,
        -        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        -        "properties": {
        -          "deliverables": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        -                "properties": {
        -                  "docx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "dxf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "expires_at": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  },
        -                  "pdf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "xlsx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "expires_at"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "document_id": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "issued_at": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "output_mode": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Surfaces what a trimmed ``output_mode`` withheld from ``data``.\n\nA trimmed mode (``summary`` / ``boq`` / ``boq_with_backup``) withholds\nalready-computed fields to keep the chat payload small. The withheld value\nreads to a client agent as \"capability missing\" (the box-culvert \"geometry\nbuilder isn't firing\" scare) rather than \"pared for size\": ``drawing`` and\n``audit_trail`` appear as ``null``, ``boq_rows`` as an empty list ``[]``\n(its type forbids ``null``) — both indistinguishable from a genuine absent\nresult. This names the withheld fields and the exact mode that brings each\nback, so the value is unambiguous. Absent on the default ``full_json`` mode\n— nothing is withheld, nothing to point at.",
        -                "properties": {
        -                  "mode": {
        -                    "enum": [
        -                      "summary",
        -                      "boq",
        -                      "boq_with_backup"
        -                    ],
        -                    "type": "string"
        -                  },
        -                  "omitted_fields": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "minItems": 1,
        -                    "type": "array"
        -                  },
        -                  "retrieve_with": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "mode",
        -                  "omitted_fields",
        -                  "retrieve_with"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "rate_limit_remaining": {
        -            "anyOf": [
        -              {
        -                "minimum": 0,
        -                "type": "integer"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "request_id": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "schema_version": {
        -            "const": "1.0.0",
        -            "default": "1.0.0",
        -            "type": "string"
        -          },
        -          "scope_boundary": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        -                "properties": {
        -                  "not_in_scope": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "produced": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "recommended_companions": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "type": "string"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "produced",
        -                  "not_in_scope"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tier": {
        -            "enum": [
        -              "free",
        -              "paid"
        -            ],
        -            "type": "string"
        -          },
        -          "tier_upgrade": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        -                "properties": {
        -                  "available_tiers": {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        -                      "properties": {
        -                        "billing": {
        -                          "enum": [
        -                            "one_off",
        -                            "monthly",
        -                            "annual"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "currency": {
        -                          "enum": [
        -                            "GBP",
        -                            "SGD",
        -                            "EUR",
        -                            "USD",
        -                            "CAD",
        -                            "AUD",
        -                            "NZD",
        -                            "MYR"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "display_name": {
        -                          "type": "string"
        -                        },
        -                        "price_local": {
        -                          "type": "number"
        -                        },
        -                        "tier_slug": {
        -                          "enum": [
        -                            "7_day_pass",
        -                            "solo",
        -                            "studio",
        -                            "practice"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "unlock_summary": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "tier_slug",
        -                        "display_name",
        -                        "price_local",
        -                        "currency",
        -                        "billing",
        -                        "unlock_summary"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "current_tier": {
        -                    "const": "free",
        -                    "default": "free",
        -                    "type": "string"
        -                  },
        -                  "pass_credit": {
        -                    "anyOf": [
        -                      {
        -                        "additionalProperties": false,
        -                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        -                        "properties": {
        -                          "amount_local": {
        -                            "type": "number"
        -                          },
        -                          "applies_to": {
        -                            "const": "solo_first_month",
        -                            "default": "solo_first_month",
        -                            "type": "string"
        -                          },
        -                          "currency": {
        -                            "type": "string"
        -                          },
        -                          "redeemable_until": {
        -                            "type": "string"
        -                          }
        -                        },
        -                        "required": [
        -                          "amount_local",
        -                          "currency",
        -                          "redeemable_until"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "pricing_url": {
        -                    "default": "https://civilquants.com/pricing",
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "available_tiers"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tos_url": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "upgrade_hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "warranty_disclaimer": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          }
        -        },
        -        "required": [
        -          "request_id",
        -          "issued_at",
        -          "tier"
        -        ],
        -        "type": "object"
        -      },
        -      "data": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Schema § 1.1 — the typed payload returned inside `MCPResponse[ComputeResult]`.\n\nFree-tier responses omit `drawings` (the downloadable CAD artefact\npointers — the paid differentiator); the bridge enforces this. The\n`audit_trail` and the inline `drawing` preview are present on BOTH tiers\n(V1 ALIGN / 60th-fire D + C). `text_summary` is bounded to 2000 chars —\nkeeps the LLM-facing summary token-cheap and forces longer narrative into\nBoQ row descriptions where it belongs. `warnings` is the non-fatal\ngeometry advisory list (both tiers).",
        -            "properties": {
        -              "assembly_slug": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "audit_trail": {
        -                "anyOf": [
        -                  {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.7 — paid-tier audit-trail entry.\n\nOne entry per BoQ row; `boq_row_index` ties to the row position in\n`ComputeResult.boq_rows`. `derivation` is the human-readable formula\nwalk-through; `formula` is the optional formal expression.",
        -                      "properties": {
        -                        "boq_row_index": {
        -                          "minimum": 0,
        -                          "type": "integer"
        -                        },
        -                        "derivation": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "formula": {
        -                          "anyOf": [
        -                            {
        -                              "type": "string"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ],
        -                          "default": null
        -                        },
        -                        "id": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "parameters_referenced": {
        -                          "items": {
        -                            "type": "string"
        -                          },
        -                          "type": "array"
        -                        }
        -                      },
        -                      "required": [
        -                        "id",
        -                        "boq_row_index",
        -                        "derivation"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "boq_rows": {
        -                "items": {
        -                  "additionalProperties": false,
        -                  "description": "Schema § 1.3 — a single bill row in the requested standard's format.\n\n`description` is the non-verbatim functional description per spec § 13.9 /\n§ 15 invariant — NEVER reproduces a standard's verbatim clause text.\n`rate` / `amount` ship null because rates are commodity data the customer\nowns; the engine's job is the measurement, not the pricing.",
        -                  "properties": {
        -                    "amount": {
        -                      "anyOf": [
        -                        {
        -                          "type": "number"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "attribution": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "audit_id": {
        -                      "anyOf": [
        -                        {
        -                          "type": "string"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "description": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "quantity": {
        -                      "minimum": 0,
        -                      "type": "number"
        -                    },
        -                    "rate": {
        -                      "anyOf": [
        -                        {
        -                          "type": "number"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "unit": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "work_section": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    }
        -                  },
        -                  "required": [
        -                    "work_section",
        -                    "description",
        -                    "quantity",
        -                    "unit",
        -                    "attribution"
        -                  ],
        -                  "type": "object"
        -                },
        -                "type": "array"
        -              },
        -              "drawing": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": false,
        -                    "description": "Schema § 1.6a — inline server-rendered SVG preview of the geometry.\n\nThe MCP mirror of the web ``/compute`` response's ``drawing`` field\n(``api.schemas.compute.DrawingRef``): the same on-screen dimensioned\ndrawing both tiers see in the workspace, surfaced on the MCP compute\nresponse so a chat client can render it inline (60th-fire item C). This\nis the on-screen preview — present on BOTH tiers per the free/paid\nboundary; the downloadable CAD artefacts (DXF / dimensioned PDF) remain\nthe paid differentiator via the export tools.\n\nDefined here rather than importing ``DrawingRef`` because the web\n``schemas`` package imports back into this module (``schemas.render``),\nso reusing it would create an import cycle — the MCP wire contract keeps\nits own copy, the same pattern as ``BoQRow`` / ``DrawingReference``.",
        -                    "properties": {
        -                      "entity_count": {
        -                        "minimum": 0,
        -                        "type": "integer"
        -                      },
        -                      "svg_b64": {
        -                        "minLength": 1,
        -                        "type": "string"
        -                      },
        -                      "unit_of_drawing": {
        -                        "const": "m",
        -                        "default": "m",
        -                        "type": "string"
        -                      },
        -                      "viewbox_height": {
        -                        "exclusiveMinimum": 0,
        -                        "type": "number"
        -                      },
        -                      "viewbox_width": {
        -                        "exclusiveMinimum": 0,
        -                        "type": "number"
        -                      },
        -                      "viewbox_x": {
        -                        "type": "number"
        -                      },
        -                      "viewbox_y": {
        -                        "type": "number"
        -                      }
        -                    },
        -                    "required": [
        -                      "svg_b64",
        -                      "viewbox_x",
        -                      "viewbox_y",
        -                      "viewbox_width",
        -                      "viewbox_height",
        -                      "entity_count"
        -                    ],
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "drawings": {
        -                "anyOf": [
        -                  {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.6 — paid-tier drawing artefact pointer.\n\n`url` is an R2-signed URL; expiry is carried in `_meta.deliverables.expires_at`\non the envelope (not duplicated here). `layers` is DXF-only; PDF/SVG\ncallers omit it.",
        -                      "properties": {
        -                        "drawing_type": {
        -                          "enum": [
        -                            "section",
        -                            "plan",
        -                            "elevation",
        -                            "isometric",
        -                            "detail"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "format": {
        -                          "enum": [
        -                            "DXF",
        -                            "PDF",
        -                            "SVG"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "layers": {
        -                          "anyOf": [
        -                            {
        -                              "items": {
        -                                "type": "string"
        -                              },
        -                              "type": "array"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ],
        -                          "default": null
        -                        },
        -                        "scale": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "sheet_size": {
        -                          "enum": [
        -                            "A1",
        -                            "A2",
        -                            "A3",
        -                            "A4"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "url": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "drawing_type",
        -                        "format",
        -                        "url",
        -                        "sheet_size",
        -                        "scale"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "parameters_used": {
        -                "additionalProperties": false,
        -                "description": "Schema § 1.2 — the parameter snapshot the engine actually used.\n\nSplits user-supplied values from engine defaults so customers can see\nwhich numbers came from them and which the engine filled in. Every\ndefaulted parameter SHOULD have a corresponding entry in `assumptions`\n— the bridge layer enforces this when wrapping engine output.",
        -                "properties": {
        -                  "assumptions": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "engine_defaults": {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  "user_supplied": {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  }
        -                },
        -                "type": "object"
        -              },
        -              "standard": {
        -                "enum": [
        -                  "CESMM4",
        -                  "NRM2",
        -                  "SMM7",
        -                  "MMHW"
        -                ],
        -                "type": "string"
        -              },
        -              "text_summary": {
        -                "maxLength": 2000,
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "totals_summary": {
        -                "additionalProperties": false,
        -                "description": "Schema § 1.4 — totals_summary as a typed wrapper around the free-form dict.\n\nWire shape is a flat object (`{\"concrete_m3\": {...}, \"rebar_t\": {...}}`).\nWe model it as `RootModel`-equivalent via `model_config(extra=\"allow\")`\n+ a single `__root__`-style `entries` dict. Pydantic v2 recommends\n`RootModel` for free-form roots; using a wrapper class keeps the import\nsurface uniform with the rest of this module.",
        -                "properties": {
        -                  "entries": {
        -                    "additionalProperties": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.4 — single material/work-class total entry.",
        -                      "properties": {
        -                        "quantity": {
        -                          "minimum": 0,
        -                          "type": "number"
        -                        },
        -                        "unit": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "quantity",
        -                        "unit"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "object"
        -                  }
        -                },
        -                "type": "object"
        -              },
        -              "warnings": {
        -                "items": {
        -                  "additionalProperties": false,
        -                  "description": "Schema § 1.8 — a non-fatal geometry advisory (56th-fire T2).\n\nThe wire projection of the engine's `core.GeometryWarning`. Advisory only:\na warning NEVER changes a measured quantity — it flags geometry that is\nvalid but likely a mistake (e.g. a stale dependent-height default). Present\non BOTH tiers — a correctness/safety signal, not a paid feature.",
        -                  "properties": {
        -                    "affected_params": {
        -                      "items": {
        -                        "type": "string"
        -                      },
        -                      "type": "array"
        -                    },
        -                    "code": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "detail": {
        -                      "additionalProperties": {
        -                        "type": "number"
        -                      },
        -                      "type": "object"
        -                    },
        -                    "message": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "severity": {
        -                      "enum": [
        -                        "info",
        -                        "advisory",
        -                        "caution"
        -                      ],
        -                      "type": "string"
        -                    }
        -                  },
        -                  "required": [
        -                    "code",
        -                    "severity",
        -                    "message"
        -                  ],
        -                  "type": "object"
        -                },
        -                "type": "array"
        -              }
        -            },
        -            "required": [
        -              "assembly_slug",
        -              "standard",
        -              "parameters_used",
        -              "boq_rows",
        -              "totals_summary",
        -              "text_summary"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      },
        -      "error": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        -            "properties": {
        -              "code": {
        -                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        -                "enum": [
        -                  "RATE_LIMIT_EXCEEDED",
        -                  "TIER_INSUFFICIENT",
        -                  "INVALID_INPUT",
        -                  "SCHEMA_VERSION_MISMATCH",
        -                  "SCHEMA_INVARIANT_VIOLATION",
        -                  "UPSTREAM_TIMEOUT",
        -                  "BACKEND_FAILURE",
        -                  "IP_BLOCKED",
        -                  "RESOURCE_NOT_FOUND",
        -                  "RENDER_FAILURE",
        -                  "OCR_LOW_CONFIDENCE",
        -                  "MANUAL_REVIEW_REQUIRED",
        -                  "ACCEPTANCE_REQUIRED",
        -                  "INVALID_TOKEN"
        -                ],
        -                "type": "string"
        -              },
        -              "details": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "message": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "recoverable": {
        -                "type": "boolean"
        -              },
        -              "retry_after_seconds": {
        -                "anyOf": [
        -                  {
        -                    "minimum": 0,
        -                    "type": "integer"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              }
        -            },
        -            "required": [
        -              "code",
        -              "message",
        -              "recoverable"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      }
        -    },
        -    "required": [
        -      "_meta"
        -    ],
        -    "type": "object"
        -  },
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "_meta": {
        -        "additionalProperties": false,
        -        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        -        "properties": {
        -          "deliverables": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        -                "properties": {
        -                  "docx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "dxf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "expires_at": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  },
        -                  "pdf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "xlsx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "expires_at"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "document_id": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "issued_at": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "output_mode": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Surfaces what a trimmed ``output_mode`` withheld from ``data``.\n\nA trimmed mode (``summary`` / ``boq`` / ``boq_with_backup``) withholds\nalready-computed fields to keep the chat payload small. The withheld value\nreads to a client agent as \"capability missing\" (the box-culvert \"geometry\nbuilder isn't firing\" scare) rather than \"pared for size\": ``drawing`` and\n``audit_trail`` appear as ``null``, ``boq_rows`` as an empty list ``[]``\n(its type forbids ``null``) — both indistinguishable from a genuine absent\nresult. This names the withheld fields and the exact mode that brings each\nback, so the value is unambiguous. Absent on the default ``full_json`` mode\n— nothing is withheld, nothing to point at.",
        -                "properties": {
        -                  "mode": {
        -                    "enum": [
        -                      "summary",
        -                      "boq",
        -                      "boq_with_backup"
        -                    ],
        -                    "type": "string"
        -                  },
        -                  "omitted_fields": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "minItems": 1,
        -                    "type": "array"
        -                  },
        -                  "retrieve_with": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "mode",
        -                  "omitted_fields",
        -                  "retrieve_with"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "rate_limit_remaining": {
        -            "anyOf": [
        -              {
        -                "minimum": 0,
        -                "type": "integer"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "request_id": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "schema_version": {
        -            "const": "1.0.0",
        -            "default": "1.0.0",
        -            "type": "string"
        -          },
        -          "scope_boundary": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        -                "properties": {
        -                  "not_in_scope": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "produced": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "recommended_companions": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "type": "string"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "produced",
        -                  "not_in_scope"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tier": {
        -            "enum": [
        -              "free",
        -              "paid"
        -            ],
        -            "type": "string"
        -          },
        -          "tier_upgrade": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        -                "properties": {
        -                  "available_tiers": {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        -                      "properties": {
        -                        "billing": {
        -                          "enum": [
        -                            "one_off",
        -                            "monthly",
        -                            "annual"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "currency": {
        -                          "enum": [
        -                            "GBP",
        -                            "SGD",
        -                            "EUR",
        -                            "USD",
        -                            "CAD",
        -                            "AUD",
        -                            "NZD",
        -                            "MYR"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "display_name": {
        -                          "type": "string"
        -                        },
        -                        "price_local": {
        -                          "type": "number"
        -                        },
        -                        "tier_slug": {
        -                          "enum": [
        -                            "7_day_pass",
        -                            "solo",
        -                            "studio",
        -                            "practice"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "unlock_summary": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "tier_slug",
        -                        "display_name",
        -                        "price_local",
        -                        "currency",
        -                        "billing",
        -                        "unlock_summary"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "current_tier": {
        -                    "const": "free",
        -                    "default": "free",
        -                    "type": "string"
        -                  },
        -                  "pass_credit": {
        -                    "anyOf": [
        -                      {
        -                        "additionalProperties": false,
        -                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        -                        "properties": {
        -                          "amount_local": {
        -                            "type": "number"
        -                          },
        -                          "applies_to": {
        -                            "const": "solo_first_month",
        -                            "default": "solo_first_month",
        -                            "type": "string"
        -                          },
        -                          "currency": {
        -                            "type": "string"
        -                          },
        -                          "redeemable_until": {
        -                            "type": "string"
        -                          }
        -                        },
        -                        "required": [
        -                          "amount_local",
        -                          "currency",
        -                          "redeemable_until"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "pricing_url": {
        -                    "default": "https://civilquants.com/pricing",
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "available_tiers"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tos_url": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "upgrade_hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "warranty_disclaimer": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          }
        -        },
        -        "required": [
        -          "request_id",
        -          "issued_at",
        -          "tier"
        -        ],
        -        "type": "object"
        -      },
        -      "data": {
        -        "default": null,
        -        "title": "Data"
        -      },
        -      "error": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        -            "properties": {
        -              "code": {
        -                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        -                "enum": [
        -                  "RATE_LIMIT_EXCEEDED",
        -                  "TIER_INSUFFICIENT",
        -                  "INVALID_INPUT",
        -                  "SCHEMA_VERSION_MISMATCH",
        -                  "SCHEMA_INVARIANT_VIOLATION",
        -                  "UPSTREAM_TIMEOUT",
        -                  "BACKEND_FAILURE",
        -                  "IP_BLOCKED",
        -                  "RESOURCE_NOT_FOUND",
        -                  "RENDER_FAILURE",
        -                  "OCR_LOW_CONFIDENCE",
        -                  "MANUAL_REVIEW_REQUIRED",
        -                  "ACCEPTANCE_REQUIRED",
        -                  "INVALID_TOKEN"
        -                ],
        -                "type": "string"
        -              },
        -              "details": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "message": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "recoverable": {
        -                "type": "boolean"
        -              },
        -              "retry_after_seconds": {
        -                "anyOf": [
        -                  {
        -                    "minimum": 0,
        -                    "type": "integer"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              }
        -            },
        -            "required": [
        -              "code",
        -              "message",
        -              "recoverable"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      }
        -    },
        -    "required": [
        -      "_meta"
        -    ],
        -    "type": "object"
        -  }
        -]New value: +[
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "_meta": {
        +        "additionalProperties": false,
        +        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        +        "properties": {
        +          "deliverables": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        +                "properties": {
        +                  "docx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "dxf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "expires_at": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  },
        +                  "pdf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "xlsx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "expires_at"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "document_id": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "issued_at": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "output_mode": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Surfaces what a trimmed ``output_mode`` withheld from ``data``.\n\nA trimmed mode (``summary`` / ``material_schedule`` / ``boq`` /\n``boq_with_backup``) withholds\nalready-computed fields to keep the chat payload small. The withheld value\nreads to a client agent as \"capability missing\" (the box-culvert \"geometry\nbuilder isn't firing\" scare) rather than \"pared for size\": ``drawing`` and\n``audit_trail`` appear as ``null``, ``boq_rows`` as an empty list ``[]``\n(its type forbids ``null``) — both indistinguishable from a genuine absent\nresult. This names the withheld fields and the exact mode that brings each\nback, so the value is unambiguous. Absent on the default ``full_json`` mode\n— nothing is withheld, nothing to point at.",
        +                "properties": {
        +                  "mode": {
        +                    "enum": [
        +                      "summary",
        +                      "material_schedule",
        +                      "boq",
        +                      "boq_with_backup"
        +                    ],
        +                    "type": "string"
        +                  },
        +                  "omitted_fields": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "minItems": 1,
        +                    "type": "array"
        +                  },
        +                  "retrieve_with": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "mode",
        +                  "omitted_fields",
        +                  "retrieve_with"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "rate_limit_remaining": {
        +            "anyOf": [
        +              {
        +                "minimum": 0,
        +                "type": "integer"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "request_id": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "schema_version": {
        +            "const": "1.0.0",
        +            "default": "1.0.0",
        +            "type": "string"
        +          },
        +          "scope_boundary": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        +                "properties": {
        +                  "not_in_scope": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "produced": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "recommended_companions": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "type": "string"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "produced",
        +                  "not_in_scope"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tier": {
        +            "enum": [
        +              "free",
        +              "paid"
        +            ],
        +            "type": "string"
        +          },
        +          "tier_upgrade": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        +                "properties": {
        +                  "available_tiers": {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        +                      "properties": {
        +                        "billing": {
        +                          "enum": [
        +                            "one_off",
        +                            "monthly",
        +                            "annual"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "currency": {
        +                          "enum": [
        +                            "GBP",
        +                            "SGD",
        +                            "EUR",
        +                            "USD",
        +                            "CAD",
        +                            "AUD",
        +                            "NZD",
        +                            "MYR"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "display_name": {
        +                          "type": "string"
        +                        },
        +                        "price_local": {
        +                          "type": "number"
        +                        },
        +                        "tier_slug": {
        +                          "enum": [
        +                            "7_day_pass",
        +                            "solo",
        +                            "studio",
        +                            "practice"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "unlock_summary": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "tier_slug",
        +                        "display_name",
        +                        "price_local",
        +                        "currency",
        +                        "billing",
        +                        "unlock_summary"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "current_tier": {
        +                    "const": "free",
        +                    "default": "free",
        +                    "type": "string"
        +                  },
        +                  "pass_credit": {
        +                    "anyOf": [
        +                      {
        +                        "additionalProperties": false,
        +                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        +                        "properties": {
        +                          "amount_local": {
        +                            "type": "number"
        +                          },
        +                          "applies_to": {
        +                            "const": "solo_first_month",
        +                            "default": "solo_first_month",
        +                            "type": "string"
        +                          },
        +                          "currency": {
        +                            "type": "string"
        +                          },
        +                          "redeemable_until": {
        +                            "type": "string"
        +                          }
        +                        },
        +                        "required": [
        +                          "amount_local",
        +                          "currency",
        +                          "redeemable_until"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "pricing_url": {
        +                    "default": "https://civilquants.com/pricing",
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "available_tiers"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tos_url": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "upgrade_hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "warranty_disclaimer": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          }
        +        },
        +        "required": [
        +          "request_id",
        +          "issued_at",
        +          "tier"
        +        ],
        +        "type": "object"
        +      },
        +      "data": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Schema § 1.1 — the typed payload returned inside `MCPResponse[ComputeResult]`.\n\nFree-tier responses omit `drawings` (the downloadable CAD artefact\npointers — the paid differentiator); the bridge enforces this. The\n`audit_trail` and the inline `drawing` preview are present on BOTH tiers\n(V1 ALIGN / 60th-fire D + C). `text_summary` is bounded to 2000 chars —\nkeeps the LLM-facing summary token-cheap and forces longer narrative into\nBoQ row descriptions where it belongs. `warnings` is the non-fatal\ngeometry advisory list (both tiers).",
        +            "properties": {
        +              "assembly_slug": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "audit_trail": {
        +                "anyOf": [
        +                  {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.7 — paid-tier audit-trail entry.\n\nOne entry per BoQ row; `boq_row_index` ties to the row position in\n`ComputeResult.boq_rows`. `derivation` is the human-readable formula\nwalk-through; `formula` is the optional formal expression.",
        +                      "properties": {
        +                        "boq_row_index": {
        +                          "minimum": 0,
        +                          "type": "integer"
        +                        },
        +                        "derivation": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "formula": {
        +                          "anyOf": [
        +                            {
        +                              "type": "string"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ],
        +                          "default": null
        +                        },
        +                        "id": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "parameters_referenced": {
        +                          "items": {
        +                            "type": "string"
        +                          },
        +                          "type": "array"
        +                        }
        +                      },
        +                      "required": [
        +                        "id",
        +                        "boq_row_index",
        +                        "derivation"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "boq_rows": {
        +                "items": {
        +                  "additionalProperties": false,
        +                  "description": "Schema § 1.3 — a single bill row in the requested standard's format.\n\n`description` is the non-verbatim functional description per spec § 13.9 /\n§ 15 invariant — NEVER reproduces a standard's verbatim clause text.\n`rate` / `amount` ship null because rates are commodity data the customer\nowns; the engine's job is the measurement, not the pricing.",
        +                  "properties": {
        +                    "amount": {
        +                      "anyOf": [
        +                        {
        +                          "type": "number"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "attribution": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "audit_id": {
        +                      "anyOf": [
        +                        {
        +                          "type": "string"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "description": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "quantity": {
        +                      "minimum": 0,
        +                      "type": "number"
        +                    },
        +                    "rate": {
        +                      "anyOf": [
        +                        {
        +                          "type": "number"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "unit": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "work_section": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    }
        +                  },
        +                  "required": [
        +                    "work_section",
        +                    "description",
        +                    "quantity",
        +                    "unit",
        +                    "attribution"
        +                  ],
        +                  "type": "object"
        +                },
        +                "type": "array"
        +              },
        +              "drawing": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": false,
        +                    "description": "Schema § 1.6a — inline server-rendered SVG preview of the geometry.\n\nThe MCP mirror of the web ``/compute`` response's ``drawing`` field\n(``api.schemas.compute.DrawingRef``): the same on-screen dimensioned\ndrawing both tiers see in the workspace, surfaced on the MCP compute\nresponse so a chat client can render it inline (60th-fire item C). This\nis the on-screen preview — present on BOTH tiers per the free/paid\nboundary; the downloadable CAD artefacts (DXF / dimensioned PDF) remain\nthe paid differentiator via the export tools.\n\nDefined here rather than importing ``DrawingRef`` because the web\n``schemas`` package imports back into this module (``schemas.render``),\nso reusing it would create an import cycle — the MCP wire contract keeps\nits own copy, the same pattern as ``BoQRow`` / ``DrawingReference``.",
        +                    "properties": {
        +                      "entity_count": {
        +                        "minimum": 0,
        +                        "type": "integer"
        +                      },
        +                      "svg_b64": {
        +                        "minLength": 1,
        +                        "type": "string"
        +                      },
        +                      "unit_of_drawing": {
        +                        "const": "m",
        +                        "default": "m",
        +                        "type": "string"
        +                      },
        +                      "viewbox_height": {
        +                        "exclusiveMinimum": 0,
        +                        "type": "number"
        +                      },
        +                      "viewbox_width": {
        +                        "exclusiveMinimum": 0,
        +                        "type": "number"
        +                      },
        +                      "viewbox_x": {
        +                        "type": "number"
        +                      },
        +                      "viewbox_y": {
        +                        "type": "number"
        +                      }
        +                    },
        +                    "required": [
        +                      "svg_b64",
        +                      "viewbox_x",
        +                      "viewbox_y",
        +                      "viewbox_width",
        +                      "viewbox_height",
        +                      "entity_count"
        +                    ],
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "drawings": {
        +                "anyOf": [
        +                  {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.6 — paid-tier drawing artefact pointer.\n\n`url` is an R2-signed URL; expiry is carried in `_meta.deliverables.expires_at`\non the envelope (not duplicated here). `layers` is DXF-only; PDF/SVG\ncallers omit it.",
        +                      "properties": {
        +                        "drawing_type": {
        +                          "enum": [
        +                            "section",
        +                            "plan",
        +                            "elevation",
        +                            "isometric",
        +                            "detail"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "format": {
        +                          "enum": [
        +                            "DXF",
        +                            "PDF",
        +                            "SVG"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "layers": {
        +                          "anyOf": [
        +                            {
        +                              "items": {
        +                                "type": "string"
        +                              },
        +                              "type": "array"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ],
        +                          "default": null
        +                        },
        +                        "scale": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "sheet_size": {
        +                          "enum": [
        +                            "A1",
        +                            "A2",
        +                            "A3",
        +                            "A4"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "url": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "drawing_type",
        +                        "format",
        +                        "url",
        +                        "sheet_size",
        +                        "scale"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "parameters_used": {
        +                "additionalProperties": false,
        +                "description": "Schema § 1.2 — the parameter snapshot the engine actually used.\n\nSplits user-supplied values from engine defaults so customers can see\nwhich numbers came from them and which the engine filled in. Every\ndefaulted parameter SHOULD have a corresponding entry in `assumptions`\n— the bridge layer enforces this when wrapping engine output.",
        +                "properties": {
        +                  "assumptions": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "engine_defaults": {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  "user_supplied": {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  }
        +                },
        +                "type": "object"
        +              },
        +              "standard": {
        +                "enum": [
        +                  "CESMM4",
        +                  "NRM2",
        +                  "SMM7",
        +                  "MMHW"
        +                ],
        +                "type": "string"
        +              },
        +              "text_summary": {
        +                "maxLength": 2000,
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "totals_summary": {
        +                "additionalProperties": false,
        +                "description": "Schema § 1.4 — totals_summary as a typed wrapper around the free-form dict.\n\nWire shape is a flat object (`{\"concrete_m3\": {...}, \"rebar_t\": {...}}`).\nWe model it as `RootModel`-equivalent via `model_config(extra=\"allow\")`\n+ a single `__root__`-style `entries` dict. Pydantic v2 recommends\n`RootModel` for free-form roots; using a wrapper class keeps the import\nsurface uniform with the rest of this module.",
        +                "properties": {
        +                  "entries": {
        +                    "additionalProperties": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.4 — single material/work-class total entry.",
        +                      "properties": {
        +                        "quantity": {
        +                          "minimum": 0,
        +                          "type": "number"
        +                        },
        +                        "unit": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "quantity",
        +                        "unit"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "object"
        +                  }
        +                },
        +                "type": "object"
        +              },
        +              "warnings": {
        +                "items": {
        +                  "additionalProperties": false,
        +                  "description": "Schema § 1.8 — a non-fatal geometry advisory (56th-fire T2).\n\nThe wire projection of the engine's `core.GeometryWarning`. Advisory only:\na warning NEVER changes a measured quantity — it flags geometry that is\nvalid but likely a mistake (e.g. a stale dependent-height default). Present\non BOTH tiers — a correctness/safety signal, not a paid feature.",
        +                  "properties": {
        +                    "affected_params": {
        +                      "items": {
        +                        "type": "string"
        +                      },
        +                      "type": "array"
        +                    },
        +                    "code": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "detail": {
        +                      "additionalProperties": {
        +                        "type": "number"
        +                      },
        +                      "type": "object"
        +                    },
        +                    "message": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "severity": {
        +                      "enum": [
        +                        "info",
        +                        "advisory",
        +                        "caution"
        +                      ],
        +                      "type": "string"
        +                    }
        +                  },
        +                  "required": [
        +                    "code",
        +                    "severity",
        +                    "message"
        +                  ],
        +                  "type": "object"
        +                },
        +                "type": "array"
        +              }
        +            },
        +            "required": [
        +              "assembly_slug",
        +              "standard",
        +              "parameters_used",
        +              "boq_rows",
        +              "totals_summary",
        +              "text_summary"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      },
        +      "error": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        +            "properties": {
        +              "code": {
        +                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        +                "enum": [
        +                  "RATE_LIMIT_EXCEEDED",
        +                  "TIER_INSUFFICIENT",
        +                  "INVALID_INPUT",
        +                  "SCHEMA_VERSION_MISMATCH",
        +                  "SCHEMA_INVARIANT_VIOLATION",
        +                  "UPSTREAM_TIMEOUT",
        +                  "BACKEND_FAILURE",
        +                  "IP_BLOCKED",
        +                  "RESOURCE_NOT_FOUND",
        +                  "RENDER_FAILURE",
        +                  "OCR_LOW_CONFIDENCE",
        +                  "MANUAL_REVIEW_REQUIRED",
        +                  "ACCEPTANCE_REQUIRED",
        +                  "INVALID_TOKEN"
        +                ],
        +                "type": "string"
        +              },
        +              "details": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "message": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "recoverable": {
        +                "type": "boolean"
        +              },
        +              "retry_after_seconds": {
        +                "anyOf": [
        +                  {
        +                    "minimum": 0,
        +                    "type": "integer"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              }
        +            },
        +            "required": [
        +              "code",
        +              "message",
        +              "recoverable"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      }
        +    },
        +    "required": [
        +      "_meta"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "_meta": {
        +        "additionalProperties": false,
        +        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        +        "properties": {
        +          "deliverables": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        +                "properties": {
        +                  "docx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "dxf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "expires_at": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  },
        +                  "pdf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "xlsx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "expires_at"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "document_id": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "issued_at": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "output_mode": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Surfaces what a trimmed ``output_mode`` withheld from ``data``.\n\nA trimmed mode (``summary`` / ``material_schedule`` / ``boq`` /\n``boq_with_backup``) withholds\nalready-computed fields to keep the chat payload small. The withheld value\nreads to a client agent as \"capability missing\" (the box-culvert \"geometry\nbuilder isn't firing\" scare) rather than \"pared for size\": ``drawing`` and\n``audit_trail`` appear as ``null``, ``boq_rows`` as an empty list ``[]``\n(its type forbids ``null``) — both indistinguishable from a genuine absent\nresult. This names the withheld fields and the exact mode that brings each\nback, so the value is unambiguous. Absent on the default ``full_json`` mode\n— nothing is withheld, nothing to point at.",
        +                "properties": {
        +                  "mode": {
        +                    "enum": [
        +                      "summary",
        +                      "material_schedule",
        +                      "boq",
        +                      "boq_with_backup"
        +                    ],
        +                    "type": "string"
        +                  },
        +                  "omitted_fields": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "minItems": 1,
        +                    "type": "array"
        +                  },
        +                  "retrieve_with": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "mode",
        +                  "omitted_fields",
        +                  "retrieve_with"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "rate_limit_remaining": {
        +            "anyOf": [
        +              {
        +                "minimum": 0,
        +                "type": "integer"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "request_id": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "schema_version": {
        +            "const": "1.0.0",
        +            "default": "1.0.0",
        +            "type": "string"
        +          },
        +          "scope_boundary": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        +                "properties": {
        +                  "not_in_scope": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "produced": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "recommended_companions": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "type": "string"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "produced",
        +                  "not_in_scope"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tier": {
        +            "enum": [
        +              "free",
        +              "paid"
        +            ],
        +            "type": "string"
        +          },
        +          "tier_upgrade": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        +                "properties": {
        +                  "available_tiers": {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        +                      "properties": {
        +                        "billing": {
        +                          "enum": [
        +                            "one_off",
        +                            "monthly",
        +                            "annual"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "currency": {
        +                          "enum": [
        +                            "GBP",
        +                            "SGD",
        +                            "EUR",
        +                            "USD",
        +                            "CAD",
        +                            "AUD",
        +                            "NZD",
        +                            "MYR"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "display_name": {
        +                          "type": "string"
        +                        },
        +                        "price_local": {
        +                          "type": "number"
        +                        },
        +                        "tier_slug": {
        +                          "enum": [
        +                            "7_day_pass",
        +                            "solo",
        +                            "studio",
        +                            "practice"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "unlock_summary": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "tier_slug",
        +                        "display_name",
        +                        "price_local",
        +                        "currency",
        +                        "billing",
        +                        "unlock_summary"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "current_tier": {
        +                    "const": "free",
        +                    "default": "free",
        +                    "type": "string"
        +                  },
        +                  "pass_credit": {
        +                    "anyOf": [
        +                      {
        +                        "additionalProperties": false,
        +                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        +                        "properties": {
        +                          "amount_local": {
        +                            "type": "number"
        +                          },
        +                          "applies_to": {
        +                            "const": "solo_first_month",
        +                            "default": "solo_first_month",
        +                            "type": "string"
        +                          },
        +                          "currency": {
        +                            "type": "string"
        +                          },
        +                          "redeemable_until": {
        +                            "type": "string"
        +                          }
        +                        },
        +                        "required": [
        +                          "amount_local",
        +                          "currency",
        +                          "redeemable_until"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "pricing_url": {
        +                    "default": "https://civilquants.com/pricing",
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "available_tiers"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tos_url": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "upgrade_hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "warranty_disclaimer": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          }
        +        },
        +        "required": [
        +          "request_id",
        +          "issued_at",
        +          "tier"
        +        ],
        +        "type": "object"
        +      },
        +      "data": {
        +        "default": null,
        +        "title": "Data"
        +      },
        +      "error": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        +            "properties": {
        +              "code": {
        +                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        +                "enum": [
        +                  "RATE_LIMIT_EXCEEDED",
        +                  "TIER_INSUFFICIENT",
        +                  "INVALID_INPUT",
        +                  "SCHEMA_VERSION_MISMATCH",
        +                  "SCHEMA_INVARIANT_VIOLATION",
        +                  "UPSTREAM_TIMEOUT",
        +                  "BACKEND_FAILURE",
        +                  "IP_BLOCKED",
        +                  "RESOURCE_NOT_FOUND",
        +                  "RENDER_FAILURE",
        +                  "OCR_LOW_CONFIDENCE",
        +                  "MANUAL_REVIEW_REQUIRED",
        +                  "ACCEPTANCE_REQUIRED",
        +                  "INVALID_TOKEN"
        +                ],
        +                "type": "string"
        +              },
        +              "details": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "message": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "recoverable": {
        +                "type": "boolean"
        +              },
        +              "retry_after_seconds": {
        +                "anyOf": [
        +                  {
        +                    "minimum": 0,
        +                    "type": "integer"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              }
        +            },
        +            "required": [
        +              "code",
        +              "message",
        +              "recoverable"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      }
        +    },
        +    "required": [
        +      "_meta"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedcompute_rigid_pavement2 fields changed
      • changedInput schema / properties / output_mode / enum
        Previous value: -[
        -  "summary",
        -  "boq",
        -  "boq_with_backup",
        -  "full_json"
        -]New value: +[
        +  "summary",
        +  "material_schedule",
        +  "boq",
        +  "boq_with_backup",
        +  "full_json"
        +]
      • changedOutput schema / properties / result / anyOf
        Previous value: -[
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "_meta": {
        -        "additionalProperties": false,
        -        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        -        "properties": {
        -          "deliverables": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        -                "properties": {
        -                  "docx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "dxf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "expires_at": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  },
        -                  "pdf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "xlsx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "expires_at"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "document_id": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "issued_at": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "output_mode": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Surfaces what a trimmed ``output_mode`` withheld from ``data``.\n\nA trimmed mode (``summary`` / ``boq`` / ``boq_with_backup``) withholds\nalready-computed fields to keep the chat payload small. The withheld value\nreads to a client agent as \"capability missing\" (the box-culvert \"geometry\nbuilder isn't firing\" scare) rather than \"pared for size\": ``drawing`` and\n``audit_trail`` appear as ``null``, ``boq_rows`` as an empty list ``[]``\n(its type forbids ``null``) — both indistinguishable from a genuine absent\nresult. This names the withheld fields and the exact mode that brings each\nback, so the value is unambiguous. Absent on the default ``full_json`` mode\n— nothing is withheld, nothing to point at.",
        -                "properties": {
        -                  "mode": {
        -                    "enum": [
        -                      "summary",
        -                      "boq",
        -                      "boq_with_backup"
        -                    ],
        -                    "type": "string"
        -                  },
        -                  "omitted_fields": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "minItems": 1,
        -                    "type": "array"
        -                  },
        -                  "retrieve_with": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "mode",
        -                  "omitted_fields",
        -                  "retrieve_with"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "rate_limit_remaining": {
        -            "anyOf": [
        -              {
        -                "minimum": 0,
        -                "type": "integer"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "request_id": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "schema_version": {
        -            "const": "1.0.0",
        -            "default": "1.0.0",
        -            "type": "string"
        -          },
        -          "scope_boundary": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        -                "properties": {
        -                  "not_in_scope": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "produced": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "recommended_companions": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "type": "string"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "produced",
        -                  "not_in_scope"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tier": {
        -            "enum": [
        -              "free",
        -              "paid"
        -            ],
        -            "type": "string"
        -          },
        -          "tier_upgrade": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        -                "properties": {
        -                  "available_tiers": {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        -                      "properties": {
        -                        "billing": {
        -                          "enum": [
        -                            "one_off",
        -                            "monthly",
        -                            "annual"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "currency": {
        -                          "enum": [
        -                            "GBP",
        -                            "SGD",
        -                            "EUR",
        -                            "USD",
        -                            "CAD",
        -                            "AUD",
        -                            "NZD",
        -                            "MYR"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "display_name": {
        -                          "type": "string"
        -                        },
        -                        "price_local": {
        -                          "type": "number"
        -                        },
        -                        "tier_slug": {
        -                          "enum": [
        -                            "7_day_pass",
        -                            "solo",
        -                            "studio",
        -                            "practice"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "unlock_summary": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "tier_slug",
        -                        "display_name",
        -                        "price_local",
        -                        "currency",
        -                        "billing",
        -                        "unlock_summary"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "current_tier": {
        -                    "const": "free",
        -                    "default": "free",
        -                    "type": "string"
        -                  },
        -                  "pass_credit": {
        -                    "anyOf": [
        -                      {
        -                        "additionalProperties": false,
        -                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        -                        "properties": {
        -                          "amount_local": {
        -                            "type": "number"
        -                          },
        -                          "applies_to": {
        -                            "const": "solo_first_month",
        -                            "default": "solo_first_month",
        -                            "type": "string"
        -                          },
        -                          "currency": {
        -                            "type": "string"
        -                          },
        -                          "redeemable_until": {
        -                            "type": "string"
        -                          }
        -                        },
        -                        "required": [
        -                          "amount_local",
        -                          "currency",
        -                          "redeemable_until"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "pricing_url": {
        -                    "default": "https://civilquants.com/pricing",
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "available_tiers"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tos_url": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "upgrade_hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "warranty_disclaimer": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          }
        -        },
        -        "required": [
        -          "request_id",
        -          "issued_at",
        -          "tier"
        -        ],
        -        "type": "object"
        -      },
        -      "data": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Schema § 1.1 — the typed payload returned inside `MCPResponse[ComputeResult]`.\n\nFree-tier responses omit `drawings` (the downloadable CAD artefact\npointers — the paid differentiator); the bridge enforces this. The\n`audit_trail` and the inline `drawing` preview are present on BOTH tiers\n(V1 ALIGN / 60th-fire D + C). `text_summary` is bounded to 2000 chars —\nkeeps the LLM-facing summary token-cheap and forces longer narrative into\nBoQ row descriptions where it belongs. `warnings` is the non-fatal\ngeometry advisory list (both tiers).",
        -            "properties": {
        -              "assembly_slug": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "audit_trail": {
        -                "anyOf": [
        -                  {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.7 — paid-tier audit-trail entry.\n\nOne entry per BoQ row; `boq_row_index` ties to the row position in\n`ComputeResult.boq_rows`. `derivation` is the human-readable formula\nwalk-through; `formula` is the optional formal expression.",
        -                      "properties": {
        -                        "boq_row_index": {
        -                          "minimum": 0,
        -                          "type": "integer"
        -                        },
        -                        "derivation": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "formula": {
        -                          "anyOf": [
        -                            {
        -                              "type": "string"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ],
        -                          "default": null
        -                        },
        -                        "id": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "parameters_referenced": {
        -                          "items": {
        -                            "type": "string"
        -                          },
        -                          "type": "array"
        -                        }
        -                      },
        -                      "required": [
        -                        "id",
        -                        "boq_row_index",
        -                        "derivation"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "boq_rows": {
        -                "items": {
        -                  "additionalProperties": false,
        -                  "description": "Schema § 1.3 — a single bill row in the requested standard's format.\n\n`description` is the non-verbatim functional description per spec § 13.9 /\n§ 15 invariant — NEVER reproduces a standard's verbatim clause text.\n`rate` / `amount` ship null because rates are commodity data the customer\nowns; the engine's job is the measurement, not the pricing.",
        -                  "properties": {
        -                    "amount": {
        -                      "anyOf": [
        -                        {
        -                          "type": "number"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "attribution": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "audit_id": {
        -                      "anyOf": [
        -                        {
        -                          "type": "string"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "description": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "quantity": {
        -                      "minimum": 0,
        -                      "type": "number"
        -                    },
        -                    "rate": {
        -                      "anyOf": [
        -                        {
        -                          "type": "number"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "unit": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "work_section": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    }
        -                  },
        -                  "required": [
        -                    "work_section",
        -                    "description",
        -                    "quantity",
        -                    "unit",
        -                    "attribution"
        -                  ],
        -                  "type": "object"
        -                },
        -                "type": "array"
        -              },
        -              "drawing": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": false,
        -                    "description": "Schema § 1.6a — inline server-rendered SVG preview of the geometry.\n\nThe MCP mirror of the web ``/compute`` response's ``drawing`` field\n(``api.schemas.compute.DrawingRef``): the same on-screen dimensioned\ndrawing both tiers see in the workspace, surfaced on the MCP compute\nresponse so a chat client can render it inline (60th-fire item C). This\nis the on-screen preview — present on BOTH tiers per the free/paid\nboundary; the downloadable CAD artefacts (DXF / dimensioned PDF) remain\nthe paid differentiator via the export tools.\n\nDefined here rather than importing ``DrawingRef`` because the web\n``schemas`` package imports back into this module (``schemas.render``),\nso reusing it would create an import cycle — the MCP wire contract keeps\nits own copy, the same pattern as ``BoQRow`` / ``DrawingReference``.",
        -                    "properties": {
        -                      "entity_count": {
        -                        "minimum": 0,
        -                        "type": "integer"
        -                      },
        -                      "svg_b64": {
        -                        "minLength": 1,
        -                        "type": "string"
        -                      },
        -                      "unit_of_drawing": {
        -                        "const": "m",
        -                        "default": "m",
        -                        "type": "string"
        -                      },
        -                      "viewbox_height": {
        -                        "exclusiveMinimum": 0,
        -                        "type": "number"
        -                      },
        -                      "viewbox_width": {
        -                        "exclusiveMinimum": 0,
        -                        "type": "number"
        -                      },
        -                      "viewbox_x": {
        -                        "type": "number"
        -                      },
        -                      "viewbox_y": {
        -                        "type": "number"
        -                      }
        -                    },
        -                    "required": [
        -                      "svg_b64",
        -                      "viewbox_x",
        -                      "viewbox_y",
        -                      "viewbox_width",
        -                      "viewbox_height",
        -                      "entity_count"
        -                    ],
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "drawings": {
        -                "anyOf": [
        -                  {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.6 — paid-tier drawing artefact pointer.\n\n`url` is an R2-signed URL; expiry is carried in `_meta.deliverables.expires_at`\non the envelope (not duplicated here). `layers` is DXF-only; PDF/SVG\ncallers omit it.",
        -                      "properties": {
        -                        "drawing_type": {
        -                          "enum": [
        -                            "section",
        -                            "plan",
        -                            "elevation",
        -                            "isometric",
        -                            "detail"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "format": {
        -                          "enum": [
        -                            "DXF",
        -                            "PDF",
        -                            "SVG"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "layers": {
        -                          "anyOf": [
        -                            {
        -                              "items": {
        -                                "type": "string"
        -                              },
        -                              "type": "array"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ],
        -                          "default": null
        -                        },
        -                        "scale": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "sheet_size": {
        -                          "enum": [
        -                            "A1",
        -                            "A2",
        -                            "A3",
        -                            "A4"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "url": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "drawing_type",
        -                        "format",
        -                        "url",
        -                        "sheet_size",
        -                        "scale"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "parameters_used": {
        -                "additionalProperties": false,
        -                "description": "Schema § 1.2 — the parameter snapshot the engine actually used.\n\nSplits user-supplied values from engine defaults so customers can see\nwhich numbers came from them and which the engine filled in. Every\ndefaulted parameter SHOULD have a corresponding entry in `assumptions`\n— the bridge layer enforces this when wrapping engine output.",
        -                "properties": {
        -                  "assumptions": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "engine_defaults": {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  "user_supplied": {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  }
        -                },
        -                "type": "object"
        -              },
        -              "standard": {
        -                "enum": [
        -                  "CESMM4",
        -                  "NRM2",
        -                  "SMM7",
        -                  "MMHW"
        -                ],
        -                "type": "string"
        -              },
        -              "text_summary": {
        -                "maxLength": 2000,
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "totals_summary": {
        -                "additionalProperties": false,
        -                "description": "Schema § 1.4 — totals_summary as a typed wrapper around the free-form dict.\n\nWire shape is a flat object (`{\"concrete_m3\": {...}, \"rebar_t\": {...}}`).\nWe model it as `RootModel`-equivalent via `model_config(extra=\"allow\")`\n+ a single `__root__`-style `entries` dict. Pydantic v2 recommends\n`RootModel` for free-form roots; using a wrapper class keeps the import\nsurface uniform with the rest of this module.",
        -                "properties": {
        -                  "entries": {
        -                    "additionalProperties": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.4 — single material/work-class total entry.",
        -                      "properties": {
        -                        "quantity": {
        -                          "minimum": 0,
        -                          "type": "number"
        -                        },
        -                        "unit": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "quantity",
        -                        "unit"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "object"
        -                  }
        -                },
        -                "type": "object"
        -              },
        -              "warnings": {
        -                "items": {
        -                  "additionalProperties": false,
        -                  "description": "Schema § 1.8 — a non-fatal geometry advisory (56th-fire T2).\n\nThe wire projection of the engine's `core.GeometryWarning`. Advisory only:\na warning NEVER changes a measured quantity — it flags geometry that is\nvalid but likely a mistake (e.g. a stale dependent-height default). Present\non BOTH tiers — a correctness/safety signal, not a paid feature.",
        -                  "properties": {
        -                    "affected_params": {
        -                      "items": {
        -                        "type": "string"
        -                      },
        -                      "type": "array"
        -                    },
        -                    "code": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "detail": {
        -                      "additionalProperties": {
        -                        "type": "number"
        -                      },
        -                      "type": "object"
        -                    },
        -                    "message": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "severity": {
        -                      "enum": [
        -                        "info",
        -                        "advisory",
        -                        "caution"
        -                      ],
        -                      "type": "string"
        -                    }
        -                  },
        -                  "required": [
        -                    "code",
        -                    "severity",
        -                    "message"
        -                  ],
        -                  "type": "object"
        -                },
        -                "type": "array"
        -              }
        -            },
        -            "required": [
        -              "assembly_slug",
        -              "standard",
        -              "parameters_used",
        -              "boq_rows",
        -              "totals_summary",
        -              "text_summary"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      },
        -      "error": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        -            "properties": {
        -              "code": {
        -                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        -                "enum": [
        -                  "RATE_LIMIT_EXCEEDED",
        -                  "TIER_INSUFFICIENT",
        -                  "INVALID_INPUT",
        -                  "SCHEMA_VERSION_MISMATCH",
        -                  "SCHEMA_INVARIANT_VIOLATION",
        -                  "UPSTREAM_TIMEOUT",
        -                  "BACKEND_FAILURE",
        -                  "IP_BLOCKED",
        -                  "RESOURCE_NOT_FOUND",
        -                  "RENDER_FAILURE",
        -                  "OCR_LOW_CONFIDENCE",
        -                  "MANUAL_REVIEW_REQUIRED",
        -                  "ACCEPTANCE_REQUIRED",
        -                  "INVALID_TOKEN"
        -                ],
        -                "type": "string"
        -              },
        -              "details": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "message": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "recoverable": {
        -                "type": "boolean"
        -              },
        -              "retry_after_seconds": {
        -                "anyOf": [
        -                  {
        -                    "minimum": 0,
        -                    "type": "integer"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              }
        -            },
        -            "required": [
        -              "code",
        -              "message",
        -              "recoverable"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      }
        -    },
        -    "required": [
        -      "_meta"
        -    ],
        -    "type": "object"
        -  },
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "_meta": {
        -        "additionalProperties": false,
        -        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        -        "properties": {
        -          "deliverables": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        -                "properties": {
        -                  "docx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "dxf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "expires_at": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  },
        -                  "pdf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "xlsx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "expires_at"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "document_id": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "issued_at": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "output_mode": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Surfaces what a trimmed ``output_mode`` withheld from ``data``.\n\nA trimmed mode (``summary`` / ``boq`` / ``boq_with_backup``) withholds\nalready-computed fields to keep the chat payload small. The withheld value\nreads to a client agent as \"capability missing\" (the box-culvert \"geometry\nbuilder isn't firing\" scare) rather than \"pared for size\": ``drawing`` and\n``audit_trail`` appear as ``null``, ``boq_rows`` as an empty list ``[]``\n(its type forbids ``null``) — both indistinguishable from a genuine absent\nresult. This names the withheld fields and the exact mode that brings each\nback, so the value is unambiguous. Absent on the default ``full_json`` mode\n— nothing is withheld, nothing to point at.",
        -                "properties": {
        -                  "mode": {
        -                    "enum": [
        -                      "summary",
        -                      "boq",
        -                      "boq_with_backup"
        -                    ],
        -                    "type": "string"
        -                  },
        -                  "omitted_fields": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "minItems": 1,
        -                    "type": "array"
        -                  },
        -                  "retrieve_with": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "mode",
        -                  "omitted_fields",
        -                  "retrieve_with"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "rate_limit_remaining": {
        -            "anyOf": [
        -              {
        -                "minimum": 0,
        -                "type": "integer"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "request_id": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "schema_version": {
        -            "const": "1.0.0",
        -            "default": "1.0.0",
        -            "type": "string"
        -          },
        -          "scope_boundary": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        -                "properties": {
        -                  "not_in_scope": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "produced": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "recommended_companions": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "type": "string"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "produced",
        -                  "not_in_scope"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tier": {
        -            "enum": [
        -              "free",
        -              "paid"
        -            ],
        -            "type": "string"
        -          },
        -          "tier_upgrade": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        -                "properties": {
        -                  "available_tiers": {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        -                      "properties": {
        -                        "billing": {
        -                          "enum": [
        -                            "one_off",
        -                            "monthly",
        -                            "annual"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "currency": {
        -                          "enum": [
        -                            "GBP",
        -                            "SGD",
        -                            "EUR",
        -                            "USD",
        -                            "CAD",
        -                            "AUD",
        -                            "NZD",
        -                            "MYR"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "display_name": {
        -                          "type": "string"
        -                        },
        -                        "price_local": {
        -                          "type": "number"
        -                        },
        -                        "tier_slug": {
        -                          "enum": [
        -                            "7_day_pass",
        -                            "solo",
        -                            "studio",
        -                            "practice"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "unlock_summary": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "tier_slug",
        -                        "display_name",
        -                        "price_local",
        -                        "currency",
        -                        "billing",
        -                        "unlock_summary"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "current_tier": {
        -                    "const": "free",
        -                    "default": "free",
        -                    "type": "string"
        -                  },
        -                  "pass_credit": {
        -                    "anyOf": [
        -                      {
        -                        "additionalProperties": false,
        -                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        -                        "properties": {
        -                          "amount_local": {
        -                            "type": "number"
        -                          },
        -                          "applies_to": {
        -                            "const": "solo_first_month",
        -                            "default": "solo_first_month",
        -                            "type": "string"
        -                          },
        -                          "currency": {
        -                            "type": "string"
        -                          },
        -                          "redeemable_until": {
        -                            "type": "string"
        -                          }
        -                        },
        -                        "required": [
        -                          "amount_local",
        -                          "currency",
        -                          "redeemable_until"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "pricing_url": {
        -                    "default": "https://civilquants.com/pricing",
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "available_tiers"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tos_url": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "upgrade_hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "warranty_disclaimer": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          }
        -        },
        -        "required": [
        -          "request_id",
        -          "issued_at",
        -          "tier"
        -        ],
        -        "type": "object"
        -      },
        -      "data": {
        -        "default": null,
        -        "title": "Data"
        -      },
        -      "error": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        -            "properties": {
        -              "code": {
        -                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        -                "enum": [
        -                  "RATE_LIMIT_EXCEEDED",
        -                  "TIER_INSUFFICIENT",
        -                  "INVALID_INPUT",
        -                  "SCHEMA_VERSION_MISMATCH",
        -                  "SCHEMA_INVARIANT_VIOLATION",
        -                  "UPSTREAM_TIMEOUT",
        -                  "BACKEND_FAILURE",
        -                  "IP_BLOCKED",
        -                  "RESOURCE_NOT_FOUND",
        -                  "RENDER_FAILURE",
        -                  "OCR_LOW_CONFIDENCE",
        -                  "MANUAL_REVIEW_REQUIRED",
        -                  "ACCEPTANCE_REQUIRED",
        -                  "INVALID_TOKEN"
        -                ],
        -                "type": "string"
        -              },
        -              "details": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "message": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "recoverable": {
        -                "type": "boolean"
        -              },
        -              "retry_after_seconds": {
        -                "anyOf": [
        -                  {
        -                    "minimum": 0,
        -                    "type": "integer"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              }
        -            },
        -            "required": [
        -              "code",
        -              "message",
        -              "recoverable"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      }
        -    },
        -    "required": [
        -      "_meta"
        -    ],
        -    "type": "object"
        -  }
        -]New value: +[
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "_meta": {
        +        "additionalProperties": false,
        +        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        +        "properties": {
        +          "deliverables": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        +                "properties": {
        +                  "docx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "dxf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "expires_at": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  },
        +                  "pdf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "xlsx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "expires_at"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "document_id": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "issued_at": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "output_mode": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Surfaces what a trimmed ``output_mode`` withheld from ``data``.\n\nA trimmed mode (``summary`` / ``material_schedule`` / ``boq`` /\n``boq_with_backup``) withholds\nalready-computed fields to keep the chat payload small. The withheld value\nreads to a client agent as \"capability missing\" (the box-culvert \"geometry\nbuilder isn't firing\" scare) rather than \"pared for size\": ``drawing`` and\n``audit_trail`` appear as ``null``, ``boq_rows`` as an empty list ``[]``\n(its type forbids ``null``) — both indistinguishable from a genuine absent\nresult. This names the withheld fields and the exact mode that brings each\nback, so the value is unambiguous. Absent on the default ``full_json`` mode\n— nothing is withheld, nothing to point at.",
        +                "properties": {
        +                  "mode": {
        +                    "enum": [
        +                      "summary",
        +                      "material_schedule",
        +                      "boq",
        +                      "boq_with_backup"
        +                    ],
        +                    "type": "string"
        +                  },
        +                  "omitted_fields": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "minItems": 1,
        +                    "type": "array"
        +                  },
        +                  "retrieve_with": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "mode",
        +                  "omitted_fields",
        +                  "retrieve_with"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "rate_limit_remaining": {
        +            "anyOf": [
        +              {
        +                "minimum": 0,
        +                "type": "integer"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "request_id": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "schema_version": {
        +            "const": "1.0.0",
        +            "default": "1.0.0",
        +            "type": "string"
        +          },
        +          "scope_boundary": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        +                "properties": {
        +                  "not_in_scope": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "produced": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "recommended_companions": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "type": "string"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "produced",
        +                  "not_in_scope"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tier": {
        +            "enum": [
        +              "free",
        +              "paid"
        +            ],
        +            "type": "string"
        +          },
        +          "tier_upgrade": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        +                "properties": {
        +                  "available_tiers": {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        +                      "properties": {
        +                        "billing": {
        +                          "enum": [
        +                            "one_off",
        +                            "monthly",
        +                            "annual"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "currency": {
        +                          "enum": [
        +                            "GBP",
        +                            "SGD",
        +                            "EUR",
        +                            "USD",
        +                            "CAD",
        +                            "AUD",
        +                            "NZD",
        +                            "MYR"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "display_name": {
        +                          "type": "string"
        +                        },
        +                        "price_local": {
        +                          "type": "number"
        +                        },
        +                        "tier_slug": {
        +                          "enum": [
        +                            "7_day_pass",
        +                            "solo",
        +                            "studio",
        +                            "practice"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "unlock_summary": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "tier_slug",
        +                        "display_name",
        +                        "price_local",
        +                        "currency",
        +                        "billing",
        +                        "unlock_summary"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "current_tier": {
        +                    "const": "free",
        +                    "default": "free",
        +                    "type": "string"
        +                  },
        +                  "pass_credit": {
        +                    "anyOf": [
        +                      {
        +                        "additionalProperties": false,
        +                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        +                        "properties": {
        +                          "amount_local": {
        +                            "type": "number"
        +                          },
        +                          "applies_to": {
        +                            "const": "solo_first_month",
        +                            "default": "solo_first_month",
        +                            "type": "string"
        +                          },
        +                          "currency": {
        +                            "type": "string"
        +                          },
        +                          "redeemable_until": {
        +                            "type": "string"
        +                          }
        +                        },
        +                        "required": [
        +                          "amount_local",
        +                          "currency",
        +                          "redeemable_until"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "pricing_url": {
        +                    "default": "https://civilquants.com/pricing",
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "available_tiers"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tos_url": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "upgrade_hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "warranty_disclaimer": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          }
        +        },
        +        "required": [
        +          "request_id",
        +          "issued_at",
        +          "tier"
        +        ],
        +        "type": "object"
        +      },
        +      "data": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Schema § 1.1 — the typed payload returned inside `MCPResponse[ComputeResult]`.\n\nFree-tier responses omit `drawings` (the downloadable CAD artefact\npointers — the paid differentiator); the bridge enforces this. The\n`audit_trail` and the inline `drawing` preview are present on BOTH tiers\n(V1 ALIGN / 60th-fire D + C). `text_summary` is bounded to 2000 chars —\nkeeps the LLM-facing summary token-cheap and forces longer narrative into\nBoQ row descriptions where it belongs. `warnings` is the non-fatal\ngeometry advisory list (both tiers).",
        +            "properties": {
        +              "assembly_slug": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "audit_trail": {
        +                "anyOf": [
        +                  {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.7 — paid-tier audit-trail entry.\n\nOne entry per BoQ row; `boq_row_index` ties to the row position in\n`ComputeResult.boq_rows`. `derivation` is the human-readable formula\nwalk-through; `formula` is the optional formal expression.",
        +                      "properties": {
        +                        "boq_row_index": {
        +                          "minimum": 0,
        +                          "type": "integer"
        +                        },
        +                        "derivation": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "formula": {
        +                          "anyOf": [
        +                            {
        +                              "type": "string"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ],
        +                          "default": null
        +                        },
        +                        "id": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "parameters_referenced": {
        +                          "items": {
        +                            "type": "string"
        +                          },
        +                          "type": "array"
        +                        }
        +                      },
        +                      "required": [
        +                        "id",
        +                        "boq_row_index",
        +                        "derivation"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "boq_rows": {
        +                "items": {
        +                  "additionalProperties": false,
        +                  "description": "Schema § 1.3 — a single bill row in the requested standard's format.\n\n`description` is the non-verbatim functional description per spec § 13.9 /\n§ 15 invariant — NEVER reproduces a standard's verbatim clause text.\n`rate` / `amount` ship null because rates are commodity data the customer\nowns; the engine's job is the measurement, not the pricing.",
        +                  "properties": {
        +                    "amount": {
        +                      "anyOf": [
        +                        {
        +                          "type": "number"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "attribution": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "audit_id": {
        +                      "anyOf": [
        +                        {
        +                          "type": "string"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "description": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "quantity": {
        +                      "minimum": 0,
        +                      "type": "number"
        +                    },
        +                    "rate": {
        +                      "anyOf": [
        +                        {
        +                          "type": "number"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "unit": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "work_section": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    }
        +                  },
        +                  "required": [
        +                    "work_section",
        +                    "description",
        +                    "quantity",
        +                    "unit",
        +                    "attribution"
        +                  ],
        +                  "type": "object"
        +                },
        +                "type": "array"
        +              },
        +              "drawing": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": false,
        +                    "description": "Schema § 1.6a — inline server-rendered SVG preview of the geometry.\n\nThe MCP mirror of the web ``/compute`` response's ``drawing`` field\n(``api.schemas.compute.DrawingRef``): the same on-screen dimensioned\ndrawing both tiers see in the workspace, surfaced on the MCP compute\nresponse so a chat client can render it inline (60th-fire item C). This\nis the on-screen preview — present on BOTH tiers per the free/paid\nboundary; the downloadable CAD artefacts (DXF / dimensioned PDF) remain\nthe paid differentiator via the export tools.\n\nDefined here rather than importing ``DrawingRef`` because the web\n``schemas`` package imports back into this module (``schemas.render``),\nso reusing it would create an import cycle — the MCP wire contract keeps\nits own copy, the same pattern as ``BoQRow`` / ``DrawingReference``.",
        +                    "properties": {
        +                      "entity_count": {
        +                        "minimum": 0,
        +                        "type": "integer"
        +                      },
        +                      "svg_b64": {
        +                        "minLength": 1,
        +                        "type": "string"
        +                      },
        +                      "unit_of_drawing": {
        +                        "const": "m",
        +                        "default": "m",
        +                        "type": "string"
        +                      },
        +                      "viewbox_height": {
        +                        "exclusiveMinimum": 0,
        +                        "type": "number"
        +                      },
        +                      "viewbox_width": {
        +                        "exclusiveMinimum": 0,
        +                        "type": "number"
        +                      },
        +                      "viewbox_x": {
        +                        "type": "number"
        +                      },
        +                      "viewbox_y": {
        +                        "type": "number"
        +                      }
        +                    },
        +                    "required": [
        +                      "svg_b64",
        +                      "viewbox_x",
        +                      "viewbox_y",
        +                      "viewbox_width",
        +                      "viewbox_height",
        +                      "entity_count"
        +                    ],
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "drawings": {
        +                "anyOf": [
        +                  {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.6 — paid-tier drawing artefact pointer.\n\n`url` is an R2-signed URL; expiry is carried in `_meta.deliverables.expires_at`\non the envelope (not duplicated here). `layers` is DXF-only; PDF/SVG\ncallers omit it.",
        +                      "properties": {
        +                        "drawing_type": {
        +                          "enum": [
        +                            "section",
        +                            "plan",
        +                            "elevation",
        +                            "isometric",
        +                            "detail"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "format": {
        +                          "enum": [
        +                            "DXF",
        +                            "PDF",
        +                            "SVG"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "layers": {
        +                          "anyOf": [
        +                            {
        +                              "items": {
        +                                "type": "string"
        +                              },
        +                              "type": "array"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ],
        +                          "default": null
        +                        },
        +                        "scale": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "sheet_size": {
        +                          "enum": [
        +                            "A1",
        +                            "A2",
        +                            "A3",
        +                            "A4"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "url": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "drawing_type",
        +                        "format",
        +                        "url",
        +                        "sheet_size",
        +                        "scale"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "parameters_used": {
        +                "additionalProperties": false,
        +                "description": "Schema § 1.2 — the parameter snapshot the engine actually used.\n\nSplits user-supplied values from engine defaults so customers can see\nwhich numbers came from them and which the engine filled in. Every\ndefaulted parameter SHOULD have a corresponding entry in `assumptions`\n— the bridge layer enforces this when wrapping engine output.",
        +                "properties": {
        +                  "assumptions": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "engine_defaults": {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  "user_supplied": {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  }
        +                },
        +                "type": "object"
        +              },
        +              "standard": {
        +                "enum": [
        +                  "CESMM4",
        +                  "NRM2",
        +                  "SMM7",
        +                  "MMHW"
        +                ],
        +                "type": "string"
        +              },
        +              "text_summary": {
        +                "maxLength": 2000,
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "totals_summary": {
        +                "additionalProperties": false,
        +                "description": "Schema § 1.4 — totals_summary as a typed wrapper around the free-form dict.\n\nWire shape is a flat object (`{\"concrete_m3\": {...}, \"rebar_t\": {...}}`).\nWe model it as `RootModel`-equivalent via `model_config(extra=\"allow\")`\n+ a single `__root__`-style `entries` dict. Pydantic v2 recommends\n`RootModel` for free-form roots; using a wrapper class keeps the import\nsurface uniform with the rest of this module.",
        +                "properties": {
        +                  "entries": {
        +                    "additionalProperties": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.4 — single material/work-class total entry.",
        +                      "properties": {
        +                        "quantity": {
        +                          "minimum": 0,
        +                          "type": "number"
        +                        },
        +                        "unit": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "quantity",
        +                        "unit"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "object"
        +                  }
        +                },
        +                "type": "object"
        +              },
        +              "warnings": {
        +                "items": {
        +                  "additionalProperties": false,
        +                  "description": "Schema § 1.8 — a non-fatal geometry advisory (56th-fire T2).\n\nThe wire projection of the engine's `core.GeometryWarning`. Advisory only:\na warning NEVER changes a measured quantity — it flags geometry that is\nvalid but likely a mistake (e.g. a stale dependent-height default). Present\non BOTH tiers — a correctness/safety signal, not a paid feature.",
        +                  "properties": {
        +                    "affected_params": {
        +                      "items": {
        +                        "type": "string"
        +                      },
        +                      "type": "array"
        +                    },
        +                    "code": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "detail": {
        +                      "additionalProperties": {
        +                        "type": "number"
        +                      },
        +                      "type": "object"
        +                    },
        +                    "message": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "severity": {
        +                      "enum": [
        +                        "info",
        +                        "advisory",
        +                        "caution"
        +                      ],
        +                      "type": "string"
        +                    }
        +                  },
        +                  "required": [
        +                    "code",
        +                    "severity",
        +                    "message"
        +                  ],
        +                  "type": "object"
        +                },
        +                "type": "array"
        +              }
        +            },
        +            "required": [
        +              "assembly_slug",
        +              "standard",
        +              "parameters_used",
        +              "boq_rows",
        +              "totals_summary",
        +              "text_summary"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      },
        +      "error": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        +            "properties": {
        +              "code": {
        +                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        +                "enum": [
        +                  "RATE_LIMIT_EXCEEDED",
        +                  "TIER_INSUFFICIENT",
        +                  "INVALID_INPUT",
        +                  "SCHEMA_VERSION_MISMATCH",
        +                  "SCHEMA_INVARIANT_VIOLATION",
        +                  "UPSTREAM_TIMEOUT",
        +                  "BACKEND_FAILURE",
        +                  "IP_BLOCKED",
        +                  "RESOURCE_NOT_FOUND",
        +                  "RENDER_FAILURE",
        +                  "OCR_LOW_CONFIDENCE",
        +                  "MANUAL_REVIEW_REQUIRED",
        +                  "ACCEPTANCE_REQUIRED",
        +                  "INVALID_TOKEN"
        +                ],
        +                "type": "string"
        +              },
        +              "details": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "message": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "recoverable": {
        +                "type": "boolean"
        +              },
        +              "retry_after_seconds": {
        +                "anyOf": [
        +                  {
        +                    "minimum": 0,
        +                    "type": "integer"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              }
        +            },
        +            "required": [
        +              "code",
        +              "message",
        +              "recoverable"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      }
        +    },
        +    "required": [
        +      "_meta"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "_meta": {
        +        "additionalProperties": false,
        +        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        +        "properties": {
        +          "deliverables": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        +                "properties": {
        +                  "docx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "dxf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "expires_at": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  },
        +                  "pdf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "xlsx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "expires_at"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "document_id": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "issued_at": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "output_mode": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Surfaces what a trimmed ``output_mode`` withheld from ``data``.\n\nA trimmed mode (``summary`` / ``material_schedule`` / ``boq`` /\n``boq_with_backup``) withholds\nalready-computed fields to keep the chat payload small. The withheld value\nreads to a client agent as \"capability missing\" (the box-culvert \"geometry\nbuilder isn't firing\" scare) rather than \"pared for size\": ``drawing`` and\n``audit_trail`` appear as ``null``, ``boq_rows`` as an empty list ``[]``\n(its type forbids ``null``) — both indistinguishable from a genuine absent\nresult. This names the withheld fields and the exact mode that brings each\nback, so the value is unambiguous. Absent on the default ``full_json`` mode\n— nothing is withheld, nothing to point at.",
        +                "properties": {
        +                  "mode": {
        +                    "enum": [
        +                      "summary",
        +                      "material_schedule",
        +                      "boq",
        +                      "boq_with_backup"
        +                    ],
        +                    "type": "string"
        +                  },
        +                  "omitted_fields": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "minItems": 1,
        +                    "type": "array"
        +                  },
        +                  "retrieve_with": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "mode",
        +                  "omitted_fields",
        +                  "retrieve_with"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "rate_limit_remaining": {
        +            "anyOf": [
        +              {
        +                "minimum": 0,
        +                "type": "integer"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "request_id": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "schema_version": {
        +            "const": "1.0.0",
        +            "default": "1.0.0",
        +            "type": "string"
        +          },
        +          "scope_boundary": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        +                "properties": {
        +                  "not_in_scope": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "produced": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "recommended_companions": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "type": "string"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "produced",
        +                  "not_in_scope"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tier": {
        +            "enum": [
        +              "free",
        +              "paid"
        +            ],
        +            "type": "string"
        +          },
        +          "tier_upgrade": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        +                "properties": {
        +                  "available_tiers": {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        +                      "properties": {
        +                        "billing": {
        +                          "enum": [
        +                            "one_off",
        +                            "monthly",
        +                            "annual"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "currency": {
        +                          "enum": [
        +                            "GBP",
        +                            "SGD",
        +                            "EUR",
        +                            "USD",
        +                            "CAD",
        +                            "AUD",
        +                            "NZD",
        +                            "MYR"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "display_name": {
        +                          "type": "string"
        +                        },
        +                        "price_local": {
        +                          "type": "number"
        +                        },
        +                        "tier_slug": {
        +                          "enum": [
        +                            "7_day_pass",
        +                            "solo",
        +                            "studio",
        +                            "practice"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "unlock_summary": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "tier_slug",
        +                        "display_name",
        +                        "price_local",
        +                        "currency",
        +                        "billing",
        +                        "unlock_summary"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "current_tier": {
        +                    "const": "free",
        +                    "default": "free",
        +                    "type": "string"
        +                  },
        +                  "pass_credit": {
        +                    "anyOf": [
        +                      {
        +                        "additionalProperties": false,
        +                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        +                        "properties": {
        +                          "amount_local": {
        +                            "type": "number"
        +                          },
        +                          "applies_to": {
        +                            "const": "solo_first_month",
        +                            "default": "solo_first_month",
        +                            "type": "string"
        +                          },
        +                          "currency": {
        +                            "type": "string"
        +                          },
        +                          "redeemable_until": {
        +                            "type": "string"
        +                          }
        +                        },
        +                        "required": [
        +                          "amount_local",
        +                          "currency",
        +                          "redeemable_until"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "pricing_url": {
        +                    "default": "https://civilquants.com/pricing",
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "available_tiers"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tos_url": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "upgrade_hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "warranty_disclaimer": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          }
        +        },
        +        "required": [
        +          "request_id",
        +          "issued_at",
        +          "tier"
        +        ],
        +        "type": "object"
        +      },
        +      "data": {
        +        "default": null,
        +        "title": "Data"
        +      },
        +      "error": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        +            "properties": {
        +              "code": {
        +                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        +                "enum": [
        +                  "RATE_LIMIT_EXCEEDED",
        +                  "TIER_INSUFFICIENT",
        +                  "INVALID_INPUT",
        +                  "SCHEMA_VERSION_MISMATCH",
        +                  "SCHEMA_INVARIANT_VIOLATION",
        +                  "UPSTREAM_TIMEOUT",
        +                  "BACKEND_FAILURE",
        +                  "IP_BLOCKED",
        +                  "RESOURCE_NOT_FOUND",
        +                  "RENDER_FAILURE",
        +                  "OCR_LOW_CONFIDENCE",
        +                  "MANUAL_REVIEW_REQUIRED",
        +                  "ACCEPTANCE_REQUIRED",
        +                  "INVALID_TOKEN"
        +                ],
        +                "type": "string"
        +              },
        +              "details": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "message": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "recoverable": {
        +                "type": "boolean"
        +              },
        +              "retry_after_seconds": {
        +                "anyOf": [
        +                  {
        +                    "minimum": 0,
        +                    "type": "integer"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              }
        +            },
        +            "required": [
        +              "code",
        +              "message",
        +              "recoverable"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      }
        +    },
        +    "required": [
        +      "_meta"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedcompute_road_marking2 fields changed
      • changedInput schema / properties / output_mode / enum
        Previous value: -[
        -  "summary",
        -  "boq",
        -  "boq_with_backup",
        -  "full_json"
        -]New value: +[
        +  "summary",
        +  "material_schedule",
        +  "boq",
        +  "boq_with_backup",
        +  "full_json"
        +]
      • changedOutput schema / properties / result / anyOf
        Previous value: -[
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "_meta": {
        -        "additionalProperties": false,
        -        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        -        "properties": {
        -          "deliverables": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        -                "properties": {
        -                  "docx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "dxf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "expires_at": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  },
        -                  "pdf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "xlsx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "expires_at"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "document_id": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "issued_at": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "output_mode": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Surfaces what a trimmed ``output_mode`` withheld from ``data``.\n\nA trimmed mode (``summary`` / ``boq`` / ``boq_with_backup``) withholds\nalready-computed fields to keep the chat payload small. The withheld value\nreads to a client agent as \"capability missing\" (the box-culvert \"geometry\nbuilder isn't firing\" scare) rather than \"pared for size\": ``drawing`` and\n``audit_trail`` appear as ``null``, ``boq_rows`` as an empty list ``[]``\n(its type forbids ``null``) — both indistinguishable from a genuine absent\nresult. This names the withheld fields and the exact mode that brings each\nback, so the value is unambiguous. Absent on the default ``full_json`` mode\n— nothing is withheld, nothing to point at.",
        -                "properties": {
        -                  "mode": {
        -                    "enum": [
        -                      "summary",
        -                      "boq",
        -                      "boq_with_backup"
        -                    ],
        -                    "type": "string"
        -                  },
        -                  "omitted_fields": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "minItems": 1,
        -                    "type": "array"
        -                  },
        -                  "retrieve_with": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "mode",
        -                  "omitted_fields",
        -                  "retrieve_with"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "rate_limit_remaining": {
        -            "anyOf": [
        -              {
        -                "minimum": 0,
        -                "type": "integer"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "request_id": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "schema_version": {
        -            "const": "1.0.0",
        -            "default": "1.0.0",
        -            "type": "string"
        -          },
        -          "scope_boundary": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        -                "properties": {
        -                  "not_in_scope": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "produced": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "recommended_companions": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "type": "string"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "produced",
        -                  "not_in_scope"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tier": {
        -            "enum": [
        -              "free",
        -              "paid"
        -            ],
        -            "type": "string"
        -          },
        -          "tier_upgrade": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        -                "properties": {
        -                  "available_tiers": {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        -                      "properties": {
        -                        "billing": {
        -                          "enum": [
        -                            "one_off",
        -                            "monthly",
        -                            "annual"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "currency": {
        -                          "enum": [
        -                            "GBP",
        -                            "SGD",
        -                            "EUR",
        -                            "USD",
        -                            "CAD",
        -                            "AUD",
        -                            "NZD",
        -                            "MYR"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "display_name": {
        -                          "type": "string"
        -                        },
        -                        "price_local": {
        -                          "type": "number"
        -                        },
        -                        "tier_slug": {
        -                          "enum": [
        -                            "7_day_pass",
        -                            "solo",
        -                            "studio",
        -                            "practice"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "unlock_summary": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "tier_slug",
        -                        "display_name",
        -                        "price_local",
        -                        "currency",
        -                        "billing",
        -                        "unlock_summary"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "current_tier": {
        -                    "const": "free",
        -                    "default": "free",
        -                    "type": "string"
        -                  },
        -                  "pass_credit": {
        -                    "anyOf": [
        -                      {
        -                        "additionalProperties": false,
        -                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        -                        "properties": {
        -                          "amount_local": {
        -                            "type": "number"
        -                          },
        -                          "applies_to": {
        -                            "const": "solo_first_month",
        -                            "default": "solo_first_month",
        -                            "type": "string"
        -                          },
        -                          "currency": {
        -                            "type": "string"
        -                          },
        -                          "redeemable_until": {
        -                            "type": "string"
        -                          }
        -                        },
        -                        "required": [
        -                          "amount_local",
        -                          "currency",
        -                          "redeemable_until"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "pricing_url": {
        -                    "default": "https://civilquants.com/pricing",
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "available_tiers"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tos_url": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "upgrade_hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "warranty_disclaimer": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          }
        -        },
        -        "required": [
        -          "request_id",
        -          "issued_at",
        -          "tier"
        -        ],
        -        "type": "object"
        -      },
        -      "data": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Schema § 1.1 — the typed payload returned inside `MCPResponse[ComputeResult]`.\n\nFree-tier responses omit `drawings` (the downloadable CAD artefact\npointers — the paid differentiator); the bridge enforces this. The\n`audit_trail` and the inline `drawing` preview are present on BOTH tiers\n(V1 ALIGN / 60th-fire D + C). `text_summary` is bounded to 2000 chars —\nkeeps the LLM-facing summary token-cheap and forces longer narrative into\nBoQ row descriptions where it belongs. `warnings` is the non-fatal\ngeometry advisory list (both tiers).",
        -            "properties": {
        -              "assembly_slug": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "audit_trail": {
        -                "anyOf": [
        -                  {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.7 — paid-tier audit-trail entry.\n\nOne entry per BoQ row; `boq_row_index` ties to the row position in\n`ComputeResult.boq_rows`. `derivation` is the human-readable formula\nwalk-through; `formula` is the optional formal expression.",
        -                      "properties": {
        -                        "boq_row_index": {
        -                          "minimum": 0,
        -                          "type": "integer"
        -                        },
        -                        "derivation": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "formula": {
        -                          "anyOf": [
        -                            {
        -                              "type": "string"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ],
        -                          "default": null
        -                        },
        -                        "id": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "parameters_referenced": {
        -                          "items": {
        -                            "type": "string"
        -                          },
        -                          "type": "array"
        -                        }
        -                      },
        -                      "required": [
        -                        "id",
        -                        "boq_row_index",
        -                        "derivation"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "boq_rows": {
        -                "items": {
        -                  "additionalProperties": false,
        -                  "description": "Schema § 1.3 — a single bill row in the requested standard's format.\n\n`description` is the non-verbatim functional description per spec § 13.9 /\n§ 15 invariant — NEVER reproduces a standard's verbatim clause text.\n`rate` / `amount` ship null because rates are commodity data the customer\nowns; the engine's job is the measurement, not the pricing.",
        -                  "properties": {
        -                    "amount": {
        -                      "anyOf": [
        -                        {
        -                          "type": "number"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "attribution": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "audit_id": {
        -                      "anyOf": [
        -                        {
        -                          "type": "string"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "description": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "quantity": {
        -                      "minimum": 0,
        -                      "type": "number"
        -                    },
        -                    "rate": {
        -                      "anyOf": [
        -                        {
        -                          "type": "number"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "unit": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "work_section": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    }
        -                  },
        -                  "required": [
        -                    "work_section",
        -                    "description",
        -                    "quantity",
        -                    "unit",
        -                    "attribution"
        -                  ],
        -                  "type": "object"
        -                },
        -                "type": "array"
        -              },
        -              "drawing": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": false,
        -                    "description": "Schema § 1.6a — inline server-rendered SVG preview of the geometry.\n\nThe MCP mirror of the web ``/compute`` response's ``drawing`` field\n(``api.schemas.compute.DrawingRef``): the same on-screen dimensioned\ndrawing both tiers see in the workspace, surfaced on the MCP compute\nresponse so a chat client can render it inline (60th-fire item C). This\nis the on-screen preview — present on BOTH tiers per the free/paid\nboundary; the downloadable CAD artefacts (DXF / dimensioned PDF) remain\nthe paid differentiator via the export tools.\n\nDefined here rather than importing ``DrawingRef`` because the web\n``schemas`` package imports back into this module (``schemas.render``),\nso reusing it would create an import cycle — the MCP wire contract keeps\nits own copy, the same pattern as ``BoQRow`` / ``DrawingReference``.",
        -                    "properties": {
        -                      "entity_count": {
        -                        "minimum": 0,
        -                        "type": "integer"
        -                      },
        -                      "svg_b64": {
        -                        "minLength": 1,
        -                        "type": "string"
        -                      },
        -                      "unit_of_drawing": {
        -                        "const": "m",
        -                        "default": "m",
        -                        "type": "string"
        -                      },
        -                      "viewbox_height": {
        -                        "exclusiveMinimum": 0,
        -                        "type": "number"
        -                      },
        -                      "viewbox_width": {
        -                        "exclusiveMinimum": 0,
        -                        "type": "number"
        -                      },
        -                      "viewbox_x": {
        -                        "type": "number"
        -                      },
        -                      "viewbox_y": {
        -                        "type": "number"
        -                      }
        -                    },
        -                    "required": [
        -                      "svg_b64",
        -                      "viewbox_x",
        -                      "viewbox_y",
        -                      "viewbox_width",
        -                      "viewbox_height",
        -                      "entity_count"
        -                    ],
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "drawings": {
        -                "anyOf": [
        -                  {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.6 — paid-tier drawing artefact pointer.\n\n`url` is an R2-signed URL; expiry is carried in `_meta.deliverables.expires_at`\non the envelope (not duplicated here). `layers` is DXF-only; PDF/SVG\ncallers omit it.",
        -                      "properties": {
        -                        "drawing_type": {
        -                          "enum": [
        -                            "section",
        -                            "plan",
        -                            "elevation",
        -                            "isometric",
        -                            "detail"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "format": {
        -                          "enum": [
        -                            "DXF",
        -                            "PDF",
        -                            "SVG"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "layers": {
        -                          "anyOf": [
        -                            {
        -                              "items": {
        -                                "type": "string"
        -                              },
        -                              "type": "array"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ],
        -                          "default": null
        -                        },
        -                        "scale": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "sheet_size": {
        -                          "enum": [
        -                            "A1",
        -                            "A2",
        -                            "A3",
        -                            "A4"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "url": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "drawing_type",
        -                        "format",
        -                        "url",
        -                        "sheet_size",
        -                        "scale"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "parameters_used": {
        -                "additionalProperties": false,
        -                "description": "Schema § 1.2 — the parameter snapshot the engine actually used.\n\nSplits user-supplied values from engine defaults so customers can see\nwhich numbers came from them and which the engine filled in. Every\ndefaulted parameter SHOULD have a corresponding entry in `assumptions`\n— the bridge layer enforces this when wrapping engine output.",
        -                "properties": {
        -                  "assumptions": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "engine_defaults": {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  "user_supplied": {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  }
        -                },
        -                "type": "object"
        -              },
        -              "standard": {
        -                "enum": [
        -                  "CESMM4",
        -                  "NRM2",
        -                  "SMM7",
        -                  "MMHW"
        -                ],
        -                "type": "string"
        -              },
        -              "text_summary": {
        -                "maxLength": 2000,
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "totals_summary": {
        -                "additionalProperties": false,
        -                "description": "Schema § 1.4 — totals_summary as a typed wrapper around the free-form dict.\n\nWire shape is a flat object (`{\"concrete_m3\": {...}, \"rebar_t\": {...}}`).\nWe model it as `RootModel`-equivalent via `model_config(extra=\"allow\")`\n+ a single `__root__`-style `entries` dict. Pydantic v2 recommends\n`RootModel` for free-form roots; using a wrapper class keeps the import\nsurface uniform with the rest of this module.",
        -                "properties": {
        -                  "entries": {
        -                    "additionalProperties": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.4 — single material/work-class total entry.",
        -                      "properties": {
        -                        "quantity": {
        -                          "minimum": 0,
        -                          "type": "number"
        -                        },
        -                        "unit": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "quantity",
        -                        "unit"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "object"
        -                  }
        -                },
        -                "type": "object"
        -              },
        -              "warnings": {
        -                "items": {
        -                  "additionalProperties": false,
        -                  "description": "Schema § 1.8 — a non-fatal geometry advisory (56th-fire T2).\n\nThe wire projection of the engine's `core.GeometryWarning`. Advisory only:\na warning NEVER changes a measured quantity — it flags geometry that is\nvalid but likely a mistake (e.g. a stale dependent-height default). Present\non BOTH tiers — a correctness/safety signal, not a paid feature.",
        -                  "properties": {
        -                    "affected_params": {
        -                      "items": {
        -                        "type": "string"
        -                      },
        -                      "type": "array"
        -                    },
        -                    "code": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "detail": {
        -                      "additionalProperties": {
        -                        "type": "number"
        -                      },
        -                      "type": "object"
        -                    },
        -                    "message": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "severity": {
        -                      "enum": [
        -                        "info",
        -                        "advisory",
        -                        "caution"
        -                      ],
        -                      "type": "string"
        -                    }
        -                  },
        -                  "required": [
        -                    "code",
        -                    "severity",
        -                    "message"
        -                  ],
        -                  "type": "object"
        -                },
        -                "type": "array"
        -              }
        -            },
        -            "required": [
        -              "assembly_slug",
        -              "standard",
        -              "parameters_used",
        -              "boq_rows",
        -              "totals_summary",
        -              "text_summary"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      },
        -      "error": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        -            "properties": {
        -              "code": {
        -                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        -                "enum": [
        -                  "RATE_LIMIT_EXCEEDED",
        -                  "TIER_INSUFFICIENT",
        -                  "INVALID_INPUT",
        -                  "SCHEMA_VERSION_MISMATCH",
        -                  "SCHEMA_INVARIANT_VIOLATION",
        -                  "UPSTREAM_TIMEOUT",
        -                  "BACKEND_FAILURE",
        -                  "IP_BLOCKED",
        -                  "RESOURCE_NOT_FOUND",
        -                  "RENDER_FAILURE",
        -                  "OCR_LOW_CONFIDENCE",
        -                  "MANUAL_REVIEW_REQUIRED",
        -                  "ACCEPTANCE_REQUIRED",
        -                  "INVALID_TOKEN"
        -                ],
        -                "type": "string"
        -              },
        -              "details": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "message": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "recoverable": {
        -                "type": "boolean"
        -              },
        -              "retry_after_seconds": {
        -                "anyOf": [
        -                  {
        -                    "minimum": 0,
        -                    "type": "integer"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              }
        -            },
        -            "required": [
        -              "code",
        -              "message",
        -              "recoverable"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      }
        -    },
        -    "required": [
        -      "_meta"
        -    ],
        -    "type": "object"
        -  },
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "_meta": {
        -        "additionalProperties": false,
        -        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        -        "properties": {
        -          "deliverables": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        -                "properties": {
        -                  "docx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "dxf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "expires_at": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  },
        -                  "pdf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "xlsx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "expires_at"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "document_id": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "issued_at": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "output_mode": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Surfaces what a trimmed ``output_mode`` withheld from ``data``.\n\nA trimmed mode (``summary`` / ``boq`` / ``boq_with_backup``) withholds\nalready-computed fields to keep the chat payload small. The withheld value\nreads to a client agent as \"capability missing\" (the box-culvert \"geometry\nbuilder isn't firing\" scare) rather than \"pared for size\": ``drawing`` and\n``audit_trail`` appear as ``null``, ``boq_rows`` as an empty list ``[]``\n(its type forbids ``null``) — both indistinguishable from a genuine absent\nresult. This names the withheld fields and the exact mode that brings each\nback, so the value is unambiguous. Absent on the default ``full_json`` mode\n— nothing is withheld, nothing to point at.",
        -                "properties": {
        -                  "mode": {
        -                    "enum": [
        -                      "summary",
        -                      "boq",
        -                      "boq_with_backup"
        -                    ],
        -                    "type": "string"
        -                  },
        -                  "omitted_fields": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "minItems": 1,
        -                    "type": "array"
        -                  },
        -                  "retrieve_with": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "mode",
        -                  "omitted_fields",
        -                  "retrieve_with"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "rate_limit_remaining": {
        -            "anyOf": [
        -              {
        -                "minimum": 0,
        -                "type": "integer"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "request_id": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "schema_version": {
        -            "const": "1.0.0",
        -            "default": "1.0.0",
        -            "type": "string"
        -          },
        -          "scope_boundary": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        -                "properties": {
        -                  "not_in_scope": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "produced": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "recommended_companions": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "type": "string"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "produced",
        -                  "not_in_scope"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tier": {
        -            "enum": [
        -              "free",
        -              "paid"
        -            ],
        -            "type": "string"
        -          },
        -          "tier_upgrade": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        -                "properties": {
        -                  "available_tiers": {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        -                      "properties": {
        -                        "billing": {
        -                          "enum": [
        -                            "one_off",
        -                            "monthly",
        -                            "annual"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "currency": {
        -                          "enum": [
        -                            "GBP",
        -                            "SGD",
        -                            "EUR",
        -                            "USD",
        -                            "CAD",
        -                            "AUD",
        -                            "NZD",
        -                            "MYR"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "display_name": {
        -                          "type": "string"
        -                        },
        -                        "price_local": {
        -                          "type": "number"
        -                        },
        -                        "tier_slug": {
        -                          "enum": [
        -                            "7_day_pass",
        -                            "solo",
        -                            "studio",
        -                            "practice"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "unlock_summary": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "tier_slug",
        -                        "display_name",
        -                        "price_local",
        -                        "currency",
        -                        "billing",
        -                        "unlock_summary"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "current_tier": {
        -                    "const": "free",
        -                    "default": "free",
        -                    "type": "string"
        -                  },
        -                  "pass_credit": {
        -                    "anyOf": [
        -                      {
        -                        "additionalProperties": false,
        -                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        -                        "properties": {
        -                          "amount_local": {
        -                            "type": "number"
        -                          },
        -                          "applies_to": {
        -                            "const": "solo_first_month",
        -                            "default": "solo_first_month",
        -                            "type": "string"
        -                          },
        -                          "currency": {
        -                            "type": "string"
        -                          },
        -                          "redeemable_until": {
        -                            "type": "string"
        -                          }
        -                        },
        -                        "required": [
        -                          "amount_local",
        -                          "currency",
        -                          "redeemable_until"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "pricing_url": {
        -                    "default": "https://civilquants.com/pricing",
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "available_tiers"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tos_url": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "upgrade_hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "warranty_disclaimer": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          }
        -        },
        -        "required": [
        -          "request_id",
        -          "issued_at",
        -          "tier"
        -        ],
        -        "type": "object"
        -      },
        -      "data": {
        -        "default": null,
        -        "title": "Data"
        -      },
        -      "error": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        -            "properties": {
        -              "code": {
        -                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        -                "enum": [
        -                  "RATE_LIMIT_EXCEEDED",
        -                  "TIER_INSUFFICIENT",
        -                  "INVALID_INPUT",
        -                  "SCHEMA_VERSION_MISMATCH",
        -                  "SCHEMA_INVARIANT_VIOLATION",
        -                  "UPSTREAM_TIMEOUT",
        -                  "BACKEND_FAILURE",
        -                  "IP_BLOCKED",
        -                  "RESOURCE_NOT_FOUND",
        -                  "RENDER_FAILURE",
        -                  "OCR_LOW_CONFIDENCE",
        -                  "MANUAL_REVIEW_REQUIRED",
        -                  "ACCEPTANCE_REQUIRED",
        -                  "INVALID_TOKEN"
        -                ],
        -                "type": "string"
        -              },
        -              "details": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "message": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "recoverable": {
        -                "type": "boolean"
        -              },
        -              "retry_after_seconds": {
        -                "anyOf": [
        -                  {
        -                    "minimum": 0,
        -                    "type": "integer"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              }
        -            },
        -            "required": [
        -              "code",
        -              "message",
        -              "recoverable"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      }
        -    },
        -    "required": [
        -      "_meta"
        -    ],
        -    "type": "object"
        -  }
        -]New value: +[
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "_meta": {
        +        "additionalProperties": false,
        +        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        +        "properties": {
        +          "deliverables": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        +                "properties": {
        +                  "docx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "dxf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "expires_at": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  },
        +                  "pdf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "xlsx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "expires_at"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "document_id": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "issued_at": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "output_mode": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Surfaces what a trimmed ``output_mode`` withheld from ``data``.\n\nA trimmed mode (``summary`` / ``material_schedule`` / ``boq`` /\n``boq_with_backup``) withholds\nalready-computed fields to keep the chat payload small. The withheld value\nreads to a client agent as \"capability missing\" (the box-culvert \"geometry\nbuilder isn't firing\" scare) rather than \"pared for size\": ``drawing`` and\n``audit_trail`` appear as ``null``, ``boq_rows`` as an empty list ``[]``\n(its type forbids ``null``) — both indistinguishable from a genuine absent\nresult. This names the withheld fields and the exact mode that brings each\nback, so the value is unambiguous. Absent on the default ``full_json`` mode\n— nothing is withheld, nothing to point at.",
        +                "properties": {
        +                  "mode": {
        +                    "enum": [
        +                      "summary",
        +                      "material_schedule",
        +                      "boq",
        +                      "boq_with_backup"
        +                    ],
        +                    "type": "string"
        +                  },
        +                  "omitted_fields": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "minItems": 1,
        +                    "type": "array"
        +                  },
        +                  "retrieve_with": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "mode",
        +                  "omitted_fields",
        +                  "retrieve_with"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "rate_limit_remaining": {
        +            "anyOf": [
        +              {
        +                "minimum": 0,
        +                "type": "integer"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "request_id": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "schema_version": {
        +            "const": "1.0.0",
        +            "default": "1.0.0",
        +            "type": "string"
        +          },
        +          "scope_boundary": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        +                "properties": {
        +                  "not_in_scope": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "produced": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "recommended_companions": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "type": "string"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "produced",
        +                  "not_in_scope"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tier": {
        +            "enum": [
        +              "free",
        +              "paid"
        +            ],
        +            "type": "string"
        +          },
        +          "tier_upgrade": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        +                "properties": {
        +                  "available_tiers": {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        +                      "properties": {
        +                        "billing": {
        +                          "enum": [
        +                            "one_off",
        +                            "monthly",
        +                            "annual"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "currency": {
        +                          "enum": [
        +                            "GBP",
        +                            "SGD",
        +                            "EUR",
        +                            "USD",
        +                            "CAD",
        +                            "AUD",
        +                            "NZD",
        +                            "MYR"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "display_name": {
        +                          "type": "string"
        +                        },
        +                        "price_local": {
        +                          "type": "number"
        +                        },
        +                        "tier_slug": {
        +                          "enum": [
        +                            "7_day_pass",
        +                            "solo",
        +                            "studio",
        +                            "practice"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "unlock_summary": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "tier_slug",
        +                        "display_name",
        +                        "price_local",
        +                        "currency",
        +                        "billing",
        +                        "unlock_summary"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "current_tier": {
        +                    "const": "free",
        +                    "default": "free",
        +                    "type": "string"
        +                  },
        +                  "pass_credit": {
        +                    "anyOf": [
        +                      {
        +                        "additionalProperties": false,
        +                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        +                        "properties": {
        +                          "amount_local": {
        +                            "type": "number"
        +                          },
        +                          "applies_to": {
        +                            "const": "solo_first_month",
        +                            "default": "solo_first_month",
        +                            "type": "string"
        +                          },
        +                          "currency": {
        +                            "type": "string"
        +                          },
        +                          "redeemable_until": {
        +                            "type": "string"
        +                          }
        +                        },
        +                        "required": [
        +                          "amount_local",
        +                          "currency",
        +                          "redeemable_until"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "pricing_url": {
        +                    "default": "https://civilquants.com/pricing",
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "available_tiers"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tos_url": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "upgrade_hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "warranty_disclaimer": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          }
        +        },
        +        "required": [
        +          "request_id",
        +          "issued_at",
        +          "tier"
        +        ],
        +        "type": "object"
        +      },
        +      "data": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Schema § 1.1 — the typed payload returned inside `MCPResponse[ComputeResult]`.\n\nFree-tier responses omit `drawings` (the downloadable CAD artefact\npointers — the paid differentiator); the bridge enforces this. The\n`audit_trail` and the inline `drawing` preview are present on BOTH tiers\n(V1 ALIGN / 60th-fire D + C). `text_summary` is bounded to 2000 chars —\nkeeps the LLM-facing summary token-cheap and forces longer narrative into\nBoQ row descriptions where it belongs. `warnings` is the non-fatal\ngeometry advisory list (both tiers).",
        +            "properties": {
        +              "assembly_slug": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "audit_trail": {
        +                "anyOf": [
        +                  {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.7 — paid-tier audit-trail entry.\n\nOne entry per BoQ row; `boq_row_index` ties to the row position in\n`ComputeResult.boq_rows`. `derivation` is the human-readable formula\nwalk-through; `formula` is the optional formal expression.",
        +                      "properties": {
        +                        "boq_row_index": {
        +                          "minimum": 0,
        +                          "type": "integer"
        +                        },
        +                        "derivation": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "formula": {
        +                          "anyOf": [
        +                            {
        +                              "type": "string"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ],
        +                          "default": null
        +                        },
        +                        "id": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "parameters_referenced": {
        +                          "items": {
        +                            "type": "string"
        +                          },
        +                          "type": "array"
        +                        }
        +                      },
        +                      "required": [
        +                        "id",
        +                        "boq_row_index",
        +                        "derivation"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "boq_rows": {
        +                "items": {
        +                  "additionalProperties": false,
        +                  "description": "Schema § 1.3 — a single bill row in the requested standard's format.\n\n`description` is the non-verbatim functional description per spec § 13.9 /\n§ 15 invariant — NEVER reproduces a standard's verbatim clause text.\n`rate` / `amount` ship null because rates are commodity data the customer\nowns; the engine's job is the measurement, not the pricing.",
        +                  "properties": {
        +                    "amount": {
        +                      "anyOf": [
        +                        {
        +                          "type": "number"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "attribution": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "audit_id": {
        +                      "anyOf": [
        +                        {
        +                          "type": "string"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "description": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "quantity": {
        +                      "minimum": 0,
        +                      "type": "number"
        +                    },
        +                    "rate": {
        +                      "anyOf": [
        +                        {
        +                          "type": "number"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "unit": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "work_section": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    }
        +                  },
        +                  "required": [
        +                    "work_section",
        +                    "description",
        +                    "quantity",
        +                    "unit",
        +                    "attribution"
        +                  ],
        +                  "type": "object"
        +                },
        +                "type": "array"
        +              },
        +              "drawing": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": false,
        +                    "description": "Schema § 1.6a — inline server-rendered SVG preview of the geometry.\n\nThe MCP mirror of the web ``/compute`` response's ``drawing`` field\n(``api.schemas.compute.DrawingRef``): the same on-screen dimensioned\ndrawing both tiers see in the workspace, surfaced on the MCP compute\nresponse so a chat client can render it inline (60th-fire item C). This\nis the on-screen preview — present on BOTH tiers per the free/paid\nboundary; the downloadable CAD artefacts (DXF / dimensioned PDF) remain\nthe paid differentiator via the export tools.\n\nDefined here rather than importing ``DrawingRef`` because the web\n``schemas`` package imports back into this module (``schemas.render``),\nso reusing it would create an import cycle — the MCP wire contract keeps\nits own copy, the same pattern as ``BoQRow`` / ``DrawingReference``.",
        +                    "properties": {
        +                      "entity_count": {
        +                        "minimum": 0,
        +                        "type": "integer"
        +                      },
        +                      "svg_b64": {
        +                        "minLength": 1,
        +                        "type": "string"
        +                      },
        +                      "unit_of_drawing": {
        +                        "const": "m",
        +                        "default": "m",
        +                        "type": "string"
        +                      },
        +                      "viewbox_height": {
        +                        "exclusiveMinimum": 0,
        +                        "type": "number"
        +                      },
        +                      "viewbox_width": {
        +                        "exclusiveMinimum": 0,
        +                        "type": "number"
        +                      },
        +                      "viewbox_x": {
        +                        "type": "number"
        +                      },
        +                      "viewbox_y": {
        +                        "type": "number"
        +                      }
        +                    },
        +                    "required": [
        +                      "svg_b64",
        +                      "viewbox_x",
        +                      "viewbox_y",
        +                      "viewbox_width",
        +                      "viewbox_height",
        +                      "entity_count"
        +                    ],
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "drawings": {
        +                "anyOf": [
        +                  {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.6 — paid-tier drawing artefact pointer.\n\n`url` is an R2-signed URL; expiry is carried in `_meta.deliverables.expires_at`\non the envelope (not duplicated here). `layers` is DXF-only; PDF/SVG\ncallers omit it.",
        +                      "properties": {
        +                        "drawing_type": {
        +                          "enum": [
        +                            "section",
        +                            "plan",
        +                            "elevation",
        +                            "isometric",
        +                            "detail"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "format": {
        +                          "enum": [
        +                            "DXF",
        +                            "PDF",
        +                            "SVG"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "layers": {
        +                          "anyOf": [
        +                            {
        +                              "items": {
        +                                "type": "string"
        +                              },
        +                              "type": "array"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ],
        +                          "default": null
        +                        },
        +                        "scale": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "sheet_size": {
        +                          "enum": [
        +                            "A1",
        +                            "A2",
        +                            "A3",
        +                            "A4"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "url": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "drawing_type",
        +                        "format",
        +                        "url",
        +                        "sheet_size",
        +                        "scale"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "parameters_used": {
        +                "additionalProperties": false,
        +                "description": "Schema § 1.2 — the parameter snapshot the engine actually used.\n\nSplits user-supplied values from engine defaults so customers can see\nwhich numbers came from them and which the engine filled in. Every\ndefaulted parameter SHOULD have a corresponding entry in `assumptions`\n— the bridge layer enforces this when wrapping engine output.",
        +                "properties": {
        +                  "assumptions": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "engine_defaults": {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  "user_supplied": {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  }
        +                },
        +                "type": "object"
        +              },
        +              "standard": {
        +                "enum": [
        +                  "CESMM4",
        +                  "NRM2",
        +                  "SMM7",
        +                  "MMHW"
        +                ],
        +                "type": "string"
        +              },
        +              "text_summary": {
        +                "maxLength": 2000,
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "totals_summary": {
        +                "additionalProperties": false,
        +                "description": "Schema § 1.4 — totals_summary as a typed wrapper around the free-form dict.\n\nWire shape is a flat object (`{\"concrete_m3\": {...}, \"rebar_t\": {...}}`).\nWe model it as `RootModel`-equivalent via `model_config(extra=\"allow\")`\n+ a single `__root__`-style `entries` dict. Pydantic v2 recommends\n`RootModel` for free-form roots; using a wrapper class keeps the import\nsurface uniform with the rest of this module.",
        +                "properties": {
        +                  "entries": {
        +                    "additionalProperties": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.4 — single material/work-class total entry.",
        +                      "properties": {
        +                        "quantity": {
        +                          "minimum": 0,
        +                          "type": "number"
        +                        },
        +                        "unit": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "quantity",
        +                        "unit"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "object"
        +                  }
        +                },
        +                "type": "object"
        +              },
        +              "warnings": {
        +                "items": {
        +                  "additionalProperties": false,
        +                  "description": "Schema § 1.8 — a non-fatal geometry advisory (56th-fire T2).\n\nThe wire projection of the engine's `core.GeometryWarning`. Advisory only:\na warning NEVER changes a measured quantity — it flags geometry that is\nvalid but likely a mistake (e.g. a stale dependent-height default). Present\non BOTH tiers — a correctness/safety signal, not a paid feature.",
        +                  "properties": {
        +                    "affected_params": {
        +                      "items": {
        +                        "type": "string"
        +                      },
        +                      "type": "array"
        +                    },
        +                    "code": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "detail": {
        +                      "additionalProperties": {
        +                        "type": "number"
        +                      },
        +                      "type": "object"
        +                    },
        +                    "message": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "severity": {
        +                      "enum": [
        +                        "info",
        +                        "advisory",
        +                        "caution"
        +                      ],
        +                      "type": "string"
        +                    }
        +                  },
        +                  "required": [
        +                    "code",
        +                    "severity",
        +                    "message"
        +                  ],
        +                  "type": "object"
        +                },
        +                "type": "array"
        +              }
        +            },
        +            "required": [
        +              "assembly_slug",
        +              "standard",
        +              "parameters_used",
        +              "boq_rows",
        +              "totals_summary",
        +              "text_summary"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      },
        +      "error": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        +            "properties": {
        +              "code": {
        +                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        +                "enum": [
        +                  "RATE_LIMIT_EXCEEDED",
        +                  "TIER_INSUFFICIENT",
        +                  "INVALID_INPUT",
        +                  "SCHEMA_VERSION_MISMATCH",
        +                  "SCHEMA_INVARIANT_VIOLATION",
        +                  "UPSTREAM_TIMEOUT",
        +                  "BACKEND_FAILURE",
        +                  "IP_BLOCKED",
        +                  "RESOURCE_NOT_FOUND",
        +                  "RENDER_FAILURE",
        +                  "OCR_LOW_CONFIDENCE",
        +                  "MANUAL_REVIEW_REQUIRED",
        +                  "ACCEPTANCE_REQUIRED",
        +                  "INVALID_TOKEN"
        +                ],
        +                "type": "string"
        +              },
        +              "details": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "message": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "recoverable": {
        +                "type": "boolean"
        +              },
        +              "retry_after_seconds": {
        +                "anyOf": [
        +                  {
        +                    "minimum": 0,
        +                    "type": "integer"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              }
        +            },
        +            "required": [
        +              "code",
        +              "message",
        +              "recoverable"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      }
        +    },
        +    "required": [
        +      "_meta"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "_meta": {
        +        "additionalProperties": false,
        +        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        +        "properties": {
        +          "deliverables": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        +                "properties": {
        +                  "docx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "dxf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "expires_at": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  },
        +                  "pdf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "xlsx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "expires_at"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "document_id": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "issued_at": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "output_mode": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Surfaces what a trimmed ``output_mode`` withheld from ``data``.\n\nA trimmed mode (``summary`` / ``material_schedule`` / ``boq`` /\n``boq_with_backup``) withholds\nalready-computed fields to keep the chat payload small. The withheld value\nreads to a client agent as \"capability missing\" (the box-culvert \"geometry\nbuilder isn't firing\" scare) rather than \"pared for size\": ``drawing`` and\n``audit_trail`` appear as ``null``, ``boq_rows`` as an empty list ``[]``\n(its type forbids ``null``) — both indistinguishable from a genuine absent\nresult. This names the withheld fields and the exact mode that brings each\nback, so the value is unambiguous. Absent on the default ``full_json`` mode\n— nothing is withheld, nothing to point at.",
        +                "properties": {
        +                  "mode": {
        +                    "enum": [
        +                      "summary",
        +                      "material_schedule",
        +                      "boq",
        +                      "boq_with_backup"
        +                    ],
        +                    "type": "string"
        +                  },
        +                  "omitted_fields": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "minItems": 1,
        +                    "type": "array"
        +                  },
        +                  "retrieve_with": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "mode",
        +                  "omitted_fields",
        +                  "retrieve_with"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "rate_limit_remaining": {
        +            "anyOf": [
        +              {
        +                "minimum": 0,
        +                "type": "integer"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "request_id": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "schema_version": {
        +            "const": "1.0.0",
        +            "default": "1.0.0",
        +            "type": "string"
        +          },
        +          "scope_boundary": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        +                "properties": {
        +                  "not_in_scope": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "produced": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "recommended_companions": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "type": "string"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "produced",
        +                  "not_in_scope"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tier": {
        +            "enum": [
        +              "free",
        +              "paid"
        +            ],
        +            "type": "string"
        +          },
        +          "tier_upgrade": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        +                "properties": {
        +                  "available_tiers": {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        +                      "properties": {
        +                        "billing": {
        +                          "enum": [
        +                            "one_off",
        +                            "monthly",
        +                            "annual"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "currency": {
        +                          "enum": [
        +                            "GBP",
        +                            "SGD",
        +                            "EUR",
        +                            "USD",
        +                            "CAD",
        +                            "AUD",
        +                            "NZD",
        +                            "MYR"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "display_name": {
        +                          "type": "string"
        +                        },
        +                        "price_local": {
        +                          "type": "number"
        +                        },
        +                        "tier_slug": {
        +                          "enum": [
        +                            "7_day_pass",
        +                            "solo",
        +                            "studio",
        +                            "practice"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "unlock_summary": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "tier_slug",
        +                        "display_name",
        +                        "price_local",
        +                        "currency",
        +                        "billing",
        +                        "unlock_summary"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "current_tier": {
        +                    "const": "free",
        +                    "default": "free",
        +                    "type": "string"
        +                  },
        +                  "pass_credit": {
        +                    "anyOf": [
        +                      {
        +                        "additionalProperties": false,
        +                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        +                        "properties": {
        +                          "amount_local": {
        +                            "type": "number"
        +                          },
        +                          "applies_to": {
        +                            "const": "solo_first_month",
        +                            "default": "solo_first_month",
        +                            "type": "string"
        +                          },
        +                          "currency": {
        +                            "type": "string"
        +                          },
        +                          "redeemable_until": {
        +                            "type": "string"
        +                          }
        +                        },
        +                        "required": [
        +                          "amount_local",
        +                          "currency",
        +                          "redeemable_until"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "pricing_url": {
        +                    "default": "https://civilquants.com/pricing",
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "available_tiers"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tos_url": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "upgrade_hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "warranty_disclaimer": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          }
        +        },
        +        "required": [
        +          "request_id",
        +          "issued_at",
        +          "tier"
        +        ],
        +        "type": "object"
        +      },
        +      "data": {
        +        "default": null,
        +        "title": "Data"
        +      },
        +      "error": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        +            "properties": {
        +              "code": {
        +                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        +                "enum": [
        +                  "RATE_LIMIT_EXCEEDED",
        +                  "TIER_INSUFFICIENT",
        +                  "INVALID_INPUT",
        +                  "SCHEMA_VERSION_MISMATCH",
        +                  "SCHEMA_INVARIANT_VIOLATION",
        +                  "UPSTREAM_TIMEOUT",
        +                  "BACKEND_FAILURE",
        +                  "IP_BLOCKED",
        +                  "RESOURCE_NOT_FOUND",
        +                  "RENDER_FAILURE",
        +                  "OCR_LOW_CONFIDENCE",
        +                  "MANUAL_REVIEW_REQUIRED",
        +                  "ACCEPTANCE_REQUIRED",
        +                  "INVALID_TOKEN"
        +                ],
        +                "type": "string"
        +              },
        +              "details": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "message": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "recoverable": {
        +                "type": "boolean"
        +              },
        +              "retry_after_seconds": {
        +                "anyOf": [
        +                  {
        +                    "minimum": 0,
        +                    "type": "integer"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              }
        +            },
        +            "required": [
        +              "code",
        +              "message",
        +              "recoverable"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      }
        +    },
        +    "required": [
        +      "_meta"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedcompute_single_service_run2 fields changed
      • changedInput schema / properties / output_mode / enum
        Previous value: -[
        -  "summary",
        -  "boq",
        -  "boq_with_backup",
        -  "full_json"
        -]New value: +[
        +  "summary",
        +  "material_schedule",
        +  "boq",
        +  "boq_with_backup",
        +  "full_json"
        +]
      • changedOutput schema / properties / result / anyOf
        Previous value: -[
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "_meta": {
        -        "additionalProperties": false,
        -        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        -        "properties": {
        -          "deliverables": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        -                "properties": {
        -                  "docx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "dxf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "expires_at": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  },
        -                  "pdf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "xlsx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "expires_at"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "document_id": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "issued_at": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "output_mode": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Surfaces what a trimmed ``output_mode`` withheld from ``data``.\n\nA trimmed mode (``summary`` / ``boq`` / ``boq_with_backup``) withholds\nalready-computed fields to keep the chat payload small. The withheld value\nreads to a client agent as \"capability missing\" (the box-culvert \"geometry\nbuilder isn't firing\" scare) rather than \"pared for size\": ``drawing`` and\n``audit_trail`` appear as ``null``, ``boq_rows`` as an empty list ``[]``\n(its type forbids ``null``) — both indistinguishable from a genuine absent\nresult. This names the withheld fields and the exact mode that brings each\nback, so the value is unambiguous. Absent on the default ``full_json`` mode\n— nothing is withheld, nothing to point at.",
        -                "properties": {
        -                  "mode": {
        -                    "enum": [
        -                      "summary",
        -                      "boq",
        -                      "boq_with_backup"
        -                    ],
        -                    "type": "string"
        -                  },
        -                  "omitted_fields": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "minItems": 1,
        -                    "type": "array"
        -                  },
        -                  "retrieve_with": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "mode",
        -                  "omitted_fields",
        -                  "retrieve_with"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "rate_limit_remaining": {
        -            "anyOf": [
        -              {
        -                "minimum": 0,
        -                "type": "integer"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "request_id": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "schema_version": {
        -            "const": "1.0.0",
        -            "default": "1.0.0",
        -            "type": "string"
        -          },
        -          "scope_boundary": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        -                "properties": {
        -                  "not_in_scope": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "produced": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "recommended_companions": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "type": "string"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "produced",
        -                  "not_in_scope"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tier": {
        -            "enum": [
        -              "free",
        -              "paid"
        -            ],
        -            "type": "string"
        -          },
        -          "tier_upgrade": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        -                "properties": {
        -                  "available_tiers": {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        -                      "properties": {
        -                        "billing": {
        -                          "enum": [
        -                            "one_off",
        -                            "monthly",
        -                            "annual"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "currency": {
        -                          "enum": [
        -                            "GBP",
        -                            "SGD",
        -                            "EUR",
        -                            "USD",
        -                            "CAD",
        -                            "AUD",
        -                            "NZD",
        -                            "MYR"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "display_name": {
        -                          "type": "string"
        -                        },
        -                        "price_local": {
        -                          "type": "number"
        -                        },
        -                        "tier_slug": {
        -                          "enum": [
        -                            "7_day_pass",
        -                            "solo",
        -                            "studio",
        -                            "practice"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "unlock_summary": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "tier_slug",
        -                        "display_name",
        -                        "price_local",
        -                        "currency",
        -                        "billing",
        -                        "unlock_summary"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "current_tier": {
        -                    "const": "free",
        -                    "default": "free",
        -                    "type": "string"
        -                  },
        -                  "pass_credit": {
        -                    "anyOf": [
        -                      {
        -                        "additionalProperties": false,
        -                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        -                        "properties": {
        -                          "amount_local": {
        -                            "type": "number"
        -                          },
        -                          "applies_to": {
        -                            "const": "solo_first_month",
        -                            "default": "solo_first_month",
        -                            "type": "string"
        -                          },
        -                          "currency": {
        -                            "type": "string"
        -                          },
        -                          "redeemable_until": {
        -                            "type": "string"
        -                          }
        -                        },
        -                        "required": [
        -                          "amount_local",
        -                          "currency",
        -                          "redeemable_until"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "pricing_url": {
        -                    "default": "https://civilquants.com/pricing",
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "available_tiers"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tos_url": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "upgrade_hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "warranty_disclaimer": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          }
        -        },
        -        "required": [
        -          "request_id",
        -          "issued_at",
        -          "tier"
        -        ],
        -        "type": "object"
        -      },
        -      "data": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Schema § 1.1 — the typed payload returned inside `MCPResponse[ComputeResult]`.\n\nFree-tier responses omit `drawings` (the downloadable CAD artefact\npointers — the paid differentiator); the bridge enforces this. The\n`audit_trail` and the inline `drawing` preview are present on BOTH tiers\n(V1 ALIGN / 60th-fire D + C). `text_summary` is bounded to 2000 chars —\nkeeps the LLM-facing summary token-cheap and forces longer narrative into\nBoQ row descriptions where it belongs. `warnings` is the non-fatal\ngeometry advisory list (both tiers).",
        -            "properties": {
        -              "assembly_slug": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "audit_trail": {
        -                "anyOf": [
        -                  {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.7 — paid-tier audit-trail entry.\n\nOne entry per BoQ row; `boq_row_index` ties to the row position in\n`ComputeResult.boq_rows`. `derivation` is the human-readable formula\nwalk-through; `formula` is the optional formal expression.",
        -                      "properties": {
        -                        "boq_row_index": {
        -                          "minimum": 0,
        -                          "type": "integer"
        -                        },
        -                        "derivation": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "formula": {
        -                          "anyOf": [
        -                            {
        -                              "type": "string"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ],
        -                          "default": null
        -                        },
        -                        "id": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "parameters_referenced": {
        -                          "items": {
        -                            "type": "string"
        -                          },
        -                          "type": "array"
        -                        }
        -                      },
        -                      "required": [
        -                        "id",
        -                        "boq_row_index",
        -                        "derivation"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "boq_rows": {
        -                "items": {
        -                  "additionalProperties": false,
        -                  "description": "Schema § 1.3 — a single bill row in the requested standard's format.\n\n`description` is the non-verbatim functional description per spec § 13.9 /\n§ 15 invariant — NEVER reproduces a standard's verbatim clause text.\n`rate` / `amount` ship null because rates are commodity data the customer\nowns; the engine's job is the measurement, not the pricing.",
        -                  "properties": {
        -                    "amount": {
        -                      "anyOf": [
        -                        {
        -                          "type": "number"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "attribution": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "audit_id": {
        -                      "anyOf": [
        -                        {
        -                          "type": "string"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "description": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "quantity": {
        -                      "minimum": 0,
        -                      "type": "number"
        -                    },
        -                    "rate": {
        -                      "anyOf": [
        -                        {
        -                          "type": "number"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "unit": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "work_section": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    }
        -                  },
        -                  "required": [
        -                    "work_section",
        -                    "description",
        -                    "quantity",
        -                    "unit",
        -                    "attribution"
        -                  ],
        -                  "type": "object"
        -                },
        -                "type": "array"
        -              },
        -              "drawing": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": false,
        -                    "description": "Schema § 1.6a — inline server-rendered SVG preview of the geometry.\n\nThe MCP mirror of the web ``/compute`` response's ``drawing`` field\n(``api.schemas.compute.DrawingRef``): the same on-screen dimensioned\ndrawing both tiers see in the workspace, surfaced on the MCP compute\nresponse so a chat client can render it inline (60th-fire item C). This\nis the on-screen preview — present on BOTH tiers per the free/paid\nboundary; the downloadable CAD artefacts (DXF / dimensioned PDF) remain\nthe paid differentiator via the export tools.\n\nDefined here rather than importing ``DrawingRef`` because the web\n``schemas`` package imports back into this module (``schemas.render``),\nso reusing it would create an import cycle — the MCP wire contract keeps\nits own copy, the same pattern as ``BoQRow`` / ``DrawingReference``.",
        -                    "properties": {
        -                      "entity_count": {
        -                        "minimum": 0,
        -                        "type": "integer"
        -                      },
        -                      "svg_b64": {
        -                        "minLength": 1,
        -                        "type": "string"
        -                      },
        -                      "unit_of_drawing": {
        -                        "const": "m",
        -                        "default": "m",
        -                        "type": "string"
        -                      },
        -                      "viewbox_height": {
        -                        "exclusiveMinimum": 0,
        -                        "type": "number"
        -                      },
        -                      "viewbox_width": {
        -                        "exclusiveMinimum": 0,
        -                        "type": "number"
        -                      },
        -                      "viewbox_x": {
        -                        "type": "number"
        -                      },
        -                      "viewbox_y": {
        -                        "type": "number"
        -                      }
        -                    },
        -                    "required": [
        -                      "svg_b64",
        -                      "viewbox_x",
        -                      "viewbox_y",
        -                      "viewbox_width",
        -                      "viewbox_height",
        -                      "entity_count"
        -                    ],
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "drawings": {
        -                "anyOf": [
        -                  {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.6 — paid-tier drawing artefact pointer.\n\n`url` is an R2-signed URL; expiry is carried in `_meta.deliverables.expires_at`\non the envelope (not duplicated here). `layers` is DXF-only; PDF/SVG\ncallers omit it.",
        -                      "properties": {
        -                        "drawing_type": {
        -                          "enum": [
        -                            "section",
        -                            "plan",
        -                            "elevation",
        -                            "isometric",
        -                            "detail"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "format": {
        -                          "enum": [
        -                            "DXF",
        -                            "PDF",
        -                            "SVG"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "layers": {
        -                          "anyOf": [
        -                            {
        -                              "items": {
        -                                "type": "string"
        -                              },
        -                              "type": "array"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ],
        -                          "default": null
        -                        },
        -                        "scale": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "sheet_size": {
        -                          "enum": [
        -                            "A1",
        -                            "A2",
        -                            "A3",
        -                            "A4"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "url": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "drawing_type",
        -                        "format",
        -                        "url",
        -                        "sheet_size",
        -                        "scale"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "parameters_used": {
        -                "additionalProperties": false,
        -                "description": "Schema § 1.2 — the parameter snapshot the engine actually used.\n\nSplits user-supplied values from engine defaults so customers can see\nwhich numbers came from them and which the engine filled in. Every\ndefaulted parameter SHOULD have a corresponding entry in `assumptions`\n— the bridge layer enforces this when wrapping engine output.",
        -                "properties": {
        -                  "assumptions": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "engine_defaults": {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  "user_supplied": {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  }
        -                },
        -                "type": "object"
        -              },
        -              "standard": {
        -                "enum": [
        -                  "CESMM4",
        -                  "NRM2",
        -                  "SMM7",
        -                  "MMHW"
        -                ],
        -                "type": "string"
        -              },
        -              "text_summary": {
        -                "maxLength": 2000,
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "totals_summary": {
        -                "additionalProperties": false,
        -                "description": "Schema § 1.4 — totals_summary as a typed wrapper around the free-form dict.\n\nWire shape is a flat object (`{\"concrete_m3\": {...}, \"rebar_t\": {...}}`).\nWe model it as `RootModel`-equivalent via `model_config(extra=\"allow\")`\n+ a single `__root__`-style `entries` dict. Pydantic v2 recommends\n`RootModel` for free-form roots; using a wrapper class keeps the import\nsurface uniform with the rest of this module.",
        -                "properties": {
        -                  "entries": {
        -                    "additionalProperties": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.4 — single material/work-class total entry.",
        -                      "properties": {
        -                        "quantity": {
        -                          "minimum": 0,
        -                          "type": "number"
        -                        },
        -                        "unit": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "quantity",
        -                        "unit"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "object"
        -                  }
        -                },
        -                "type": "object"
        -              },
        -              "warnings": {
        -                "items": {
        -                  "additionalProperties": false,
        -                  "description": "Schema § 1.8 — a non-fatal geometry advisory (56th-fire T2).\n\nThe wire projection of the engine's `core.GeometryWarning`. Advisory only:\na warning NEVER changes a measured quantity — it flags geometry that is\nvalid but likely a mistake (e.g. a stale dependent-height default). Present\non BOTH tiers — a correctness/safety signal, not a paid feature.",
        -                  "properties": {
        -                    "affected_params": {
        -                      "items": {
        -                        "type": "string"
        -                      },
        -                      "type": "array"
        -                    },
        -                    "code": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "detail": {
        -                      "additionalProperties": {
        -                        "type": "number"
        -                      },
        -                      "type": "object"
        -                    },
        -                    "message": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "severity": {
        -                      "enum": [
        -                        "info",
        -                        "advisory",
        -                        "caution"
        -                      ],
        -                      "type": "string"
        -                    }
        -                  },
        -                  "required": [
        -                    "code",
        -                    "severity",
        -                    "message"
        -                  ],
        -                  "type": "object"
        -                },
        -                "type": "array"
        -              }
        -            },
        -            "required": [
        -              "assembly_slug",
        -              "standard",
        -              "parameters_used",
        -              "boq_rows",
        -              "totals_summary",
        -              "text_summary"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      },
        -      "error": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        -            "properties": {
        -              "code": {
        -                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        -                "enum": [
        -                  "RATE_LIMIT_EXCEEDED",
        -                  "TIER_INSUFFICIENT",
        -                  "INVALID_INPUT",
        -                  "SCHEMA_VERSION_MISMATCH",
        -                  "SCHEMA_INVARIANT_VIOLATION",
        -                  "UPSTREAM_TIMEOUT",
        -                  "BACKEND_FAILURE",
        -                  "IP_BLOCKED",
        -                  "RESOURCE_NOT_FOUND",
        -                  "RENDER_FAILURE",
        -                  "OCR_LOW_CONFIDENCE",
        -                  "MANUAL_REVIEW_REQUIRED",
        -                  "ACCEPTANCE_REQUIRED",
        -                  "INVALID_TOKEN"
        -                ],
        -                "type": "string"
        -              },
        -              "details": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "message": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "recoverable": {
        -                "type": "boolean"
        -              },
        -              "retry_after_seconds": {
        -                "anyOf": [
        -                  {
        -                    "minimum": 0,
        -                    "type": "integer"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              }
        -            },
        -            "required": [
        -              "code",
        -              "message",
        -              "recoverable"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      }
        -    },
        -    "required": [
        -      "_meta"
        -    ],
        -    "type": "object"
        -  },
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "_meta": {
        -        "additionalProperties": false,
        -        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        -        "properties": {
        -          "deliverables": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        -                "properties": {
        -                  "docx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "dxf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "expires_at": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  },
        -                  "pdf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "xlsx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "expires_at"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "document_id": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "issued_at": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "output_mode": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Surfaces what a trimmed ``output_mode`` withheld from ``data``.\n\nA trimmed mode (``summary`` / ``boq`` / ``boq_with_backup``) withholds\nalready-computed fields to keep the chat payload small. The withheld value\nreads to a client agent as \"capability missing\" (the box-culvert \"geometry\nbuilder isn't firing\" scare) rather than \"pared for size\": ``drawing`` and\n``audit_trail`` appear as ``null``, ``boq_rows`` as an empty list ``[]``\n(its type forbids ``null``) — both indistinguishable from a genuine absent\nresult. This names the withheld fields and the exact mode that brings each\nback, so the value is unambiguous. Absent on the default ``full_json`` mode\n— nothing is withheld, nothing to point at.",
        -                "properties": {
        -                  "mode": {
        -                    "enum": [
        -                      "summary",
        -                      "boq",
        -                      "boq_with_backup"
        -                    ],
        -                    "type": "string"
        -                  },
        -                  "omitted_fields": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "minItems": 1,
        -                    "type": "array"
        -                  },
        -                  "retrieve_with": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "mode",
        -                  "omitted_fields",
        -                  "retrieve_with"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "rate_limit_remaining": {
        -            "anyOf": [
        -              {
        -                "minimum": 0,
        -                "type": "integer"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "request_id": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "schema_version": {
        -            "const": "1.0.0",
        -            "default": "1.0.0",
        -            "type": "string"
        -          },
        -          "scope_boundary": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        -                "properties": {
        -                  "not_in_scope": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "produced": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "recommended_companions": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "type": "string"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "produced",
        -                  "not_in_scope"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tier": {
        -            "enum": [
        -              "free",
        -              "paid"
        -            ],
        -            "type": "string"
        -          },
        -          "tier_upgrade": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        -                "properties": {
        -                  "available_tiers": {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        -                      "properties": {
        -                        "billing": {
        -                          "enum": [
        -                            "one_off",
        -                            "monthly",
        -                            "annual"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "currency": {
        -                          "enum": [
        -                            "GBP",
        -                            "SGD",
        -                            "EUR",
        -                            "USD",
        -                            "CAD",
        -                            "AUD",
        -                            "NZD",
        -                            "MYR"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "display_name": {
        -                          "type": "string"
        -                        },
        -                        "price_local": {
        -                          "type": "number"
        -                        },
        -                        "tier_slug": {
        -                          "enum": [
        -                            "7_day_pass",
        -                            "solo",
        -                            "studio",
        -                            "practice"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "unlock_summary": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "tier_slug",
        -                        "display_name",
        -                        "price_local",
        -                        "currency",
        -                        "billing",
        -                        "unlock_summary"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "current_tier": {
        -                    "const": "free",
        -                    "default": "free",
        -                    "type": "string"
        -                  },
        -                  "pass_credit": {
        -                    "anyOf": [
        -                      {
        -                        "additionalProperties": false,
        -                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        -                        "properties": {
        -                          "amount_local": {
        -                            "type": "number"
        -                          },
        -                          "applies_to": {
        -                            "const": "solo_first_month",
        -                            "default": "solo_first_month",
        -                            "type": "string"
        -                          },
        -                          "currency": {
        -                            "type": "string"
        -                          },
        -                          "redeemable_until": {
        -                            "type": "string"
        -                          }
        -                        },
        -                        "required": [
        -                          "amount_local",
        -                          "currency",
        -                          "redeemable_until"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "pricing_url": {
        -                    "default": "https://civilquants.com/pricing",
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "available_tiers"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tos_url": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "upgrade_hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "warranty_disclaimer": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          }
        -        },
        -        "required": [
        -          "request_id",
        -          "issued_at",
        -          "tier"
        -        ],
        -        "type": "object"
        -      },
        -      "data": {
        -        "default": null,
        -        "title": "Data"
        -      },
        -      "error": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        -            "properties": {
        -              "code": {
        -                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        -                "enum": [
        -                  "RATE_LIMIT_EXCEEDED",
        -                  "TIER_INSUFFICIENT",
        -                  "INVALID_INPUT",
        -                  "SCHEMA_VERSION_MISMATCH",
        -                  "SCHEMA_INVARIANT_VIOLATION",
        -                  "UPSTREAM_TIMEOUT",
        -                  "BACKEND_FAILURE",
        -                  "IP_BLOCKED",
        -                  "RESOURCE_NOT_FOUND",
        -                  "RENDER_FAILURE",
        -                  "OCR_LOW_CONFIDENCE",
        -                  "MANUAL_REVIEW_REQUIRED",
        -                  "ACCEPTANCE_REQUIRED",
        -                  "INVALID_TOKEN"
        -                ],
        -                "type": "string"
        -              },
        -              "details": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "message": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "recoverable": {
        -                "type": "boolean"
        -              },
        -              "retry_after_seconds": {
        -                "anyOf": [
        -                  {
        -                    "minimum": 0,
        -                    "type": "integer"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              }
        -            },
        -            "required": [
        -              "code",
        -              "message",
        -              "recoverable"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      }
        -    },
        -    "required": [
        -      "_meta"
        -    ],
        -    "type": "object"
        -  }
        -]New value: +[
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "_meta": {
        +        "additionalProperties": false,
        +        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        +        "properties": {
        +          "deliverables": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        +                "properties": {
        +                  "docx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "dxf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "expires_at": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  },
        +                  "pdf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "xlsx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "expires_at"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "document_id": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "issued_at": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "output_mode": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Surfaces what a trimmed ``output_mode`` withheld from ``data``.\n\nA trimmed mode (``summary`` / ``material_schedule`` / ``boq`` /\n``boq_with_backup``) withholds\nalready-computed fields to keep the chat payload small. The withheld value\nreads to a client agent as \"capability missing\" (the box-culvert \"geometry\nbuilder isn't firing\" scare) rather than \"pared for size\": ``drawing`` and\n``audit_trail`` appear as ``null``, ``boq_rows`` as an empty list ``[]``\n(its type forbids ``null``) — both indistinguishable from a genuine absent\nresult. This names the withheld fields and the exact mode that brings each\nback, so the value is unambiguous. Absent on the default ``full_json`` mode\n— nothing is withheld, nothing to point at.",
        +                "properties": {
        +                  "mode": {
        +                    "enum": [
        +                      "summary",
        +                      "material_schedule",
        +                      "boq",
        +                      "boq_with_backup"
        +                    ],
        +                    "type": "string"
        +                  },
        +                  "omitted_fields": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "minItems": 1,
        +                    "type": "array"
        +                  },
        +                  "retrieve_with": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "mode",
        +                  "omitted_fields",
        +                  "retrieve_with"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "rate_limit_remaining": {
        +            "anyOf": [
        +              {
        +                "minimum": 0,
        +                "type": "integer"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "request_id": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "schema_version": {
        +            "const": "1.0.0",
        +            "default": "1.0.0",
        +            "type": "string"
        +          },
        +          "scope_boundary": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        +                "properties": {
        +                  "not_in_scope": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "produced": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "recommended_companions": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "type": "string"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "produced",
        +                  "not_in_scope"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tier": {
        +            "enum": [
        +              "free",
        +              "paid"
        +            ],
        +            "type": "string"
        +          },
        +          "tier_upgrade": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        +                "properties": {
        +                  "available_tiers": {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        +                      "properties": {
        +                        "billing": {
        +                          "enum": [
        +                            "one_off",
        +                            "monthly",
        +                            "annual"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "currency": {
        +                          "enum": [
        +                            "GBP",
        +                            "SGD",
        +                            "EUR",
        +                            "USD",
        +                            "CAD",
        +                            "AUD",
        +                            "NZD",
        +                            "MYR"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "display_name": {
        +                          "type": "string"
        +                        },
        +                        "price_local": {
        +                          "type": "number"
        +                        },
        +                        "tier_slug": {
        +                          "enum": [
        +                            "7_day_pass",
        +                            "solo",
        +                            "studio",
        +                            "practice"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "unlock_summary": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "tier_slug",
        +                        "display_name",
        +                        "price_local",
        +                        "currency",
        +                        "billing",
        +                        "unlock_summary"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "current_tier": {
        +                    "const": "free",
        +                    "default": "free",
        +                    "type": "string"
        +                  },
        +                  "pass_credit": {
        +                    "anyOf": [
        +                      {
        +                        "additionalProperties": false,
        +                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        +                        "properties": {
        +                          "amount_local": {
        +                            "type": "number"
        +                          },
        +                          "applies_to": {
        +                            "const": "solo_first_month",
        +                            "default": "solo_first_month",
        +                            "type": "string"
        +                          },
        +                          "currency": {
        +                            "type": "string"
        +                          },
        +                          "redeemable_until": {
        +                            "type": "string"
        +                          }
        +                        },
        +                        "required": [
        +                          "amount_local",
        +                          "currency",
        +                          "redeemable_until"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "pricing_url": {
        +                    "default": "https://civilquants.com/pricing",
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "available_tiers"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tos_url": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "upgrade_hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "warranty_disclaimer": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          }
        +        },
        +        "required": [
        +          "request_id",
        +          "issued_at",
        +          "tier"
        +        ],
        +        "type": "object"
        +      },
        +      "data": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Schema § 1.1 — the typed payload returned inside `MCPResponse[ComputeResult]`.\n\nFree-tier responses omit `drawings` (the downloadable CAD artefact\npointers — the paid differentiator); the bridge enforces this. The\n`audit_trail` and the inline `drawing` preview are present on BOTH tiers\n(V1 ALIGN / 60th-fire D + C). `text_summary` is bounded to 2000 chars —\nkeeps the LLM-facing summary token-cheap and forces longer narrative into\nBoQ row descriptions where it belongs. `warnings` is the non-fatal\ngeometry advisory list (both tiers).",
        +            "properties": {
        +              "assembly_slug": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "audit_trail": {
        +                "anyOf": [
        +                  {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.7 — paid-tier audit-trail entry.\n\nOne entry per BoQ row; `boq_row_index` ties to the row position in\n`ComputeResult.boq_rows`. `derivation` is the human-readable formula\nwalk-through; `formula` is the optional formal expression.",
        +                      "properties": {
        +                        "boq_row_index": {
        +                          "minimum": 0,
        +                          "type": "integer"
        +                        },
        +                        "derivation": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "formula": {
        +                          "anyOf": [
        +                            {
        +                              "type": "string"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ],
        +                          "default": null
        +                        },
        +                        "id": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "parameters_referenced": {
        +                          "items": {
        +                            "type": "string"
        +                          },
        +                          "type": "array"
        +                        }
        +                      },
        +                      "required": [
        +                        "id",
        +                        "boq_row_index",
        +                        "derivation"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "boq_rows": {
        +                "items": {
        +                  "additionalProperties": false,
        +                  "description": "Schema § 1.3 — a single bill row in the requested standard's format.\n\n`description` is the non-verbatim functional description per spec § 13.9 /\n§ 15 invariant — NEVER reproduces a standard's verbatim clause text.\n`rate` / `amount` ship null because rates are commodity data the customer\nowns; the engine's job is the measurement, not the pricing.",
        +                  "properties": {
        +                    "amount": {
        +                      "anyOf": [
        +                        {
        +                          "type": "number"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "attribution": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "audit_id": {
        +                      "anyOf": [
        +                        {
        +                          "type": "string"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "description": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "quantity": {
        +                      "minimum": 0,
        +                      "type": "number"
        +                    },
        +                    "rate": {
        +                      "anyOf": [
        +                        {
        +                          "type": "number"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "unit": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "work_section": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    }
        +                  },
        +                  "required": [
        +                    "work_section",
        +                    "description",
        +                    "quantity",
        +                    "unit",
        +                    "attribution"
        +                  ],
        +                  "type": "object"
        +                },
        +                "type": "array"
        +              },
        +              "drawing": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": false,
        +                    "description": "Schema § 1.6a — inline server-rendered SVG preview of the geometry.\n\nThe MCP mirror of the web ``/compute`` response's ``drawing`` field\n(``api.schemas.compute.DrawingRef``): the same on-screen dimensioned\ndrawing both tiers see in the workspace, surfaced on the MCP compute\nresponse so a chat client can render it inline (60th-fire item C). This\nis the on-screen preview — present on BOTH tiers per the free/paid\nboundary; the downloadable CAD artefacts (DXF / dimensioned PDF) remain\nthe paid differentiator via the export tools.\n\nDefined here rather than importing ``DrawingRef`` because the web\n``schemas`` package imports back into this module (``schemas.render``),\nso reusing it would create an import cycle — the MCP wire contract keeps\nits own copy, the same pattern as ``BoQRow`` / ``DrawingReference``.",
        +                    "properties": {
        +                      "entity_count": {
        +                        "minimum": 0,
        +                        "type": "integer"
        +                      },
        +                      "svg_b64": {
        +                        "minLength": 1,
        +                        "type": "string"
        +                      },
        +                      "unit_of_drawing": {
        +                        "const": "m",
        +                        "default": "m",
        +                        "type": "string"
        +                      },
        +                      "viewbox_height": {
        +                        "exclusiveMinimum": 0,
        +                        "type": "number"
        +                      },
        +                      "viewbox_width": {
        +                        "exclusiveMinimum": 0,
        +                        "type": "number"
        +                      },
        +                      "viewbox_x": {
        +                        "type": "number"
        +                      },
        +                      "viewbox_y": {
        +                        "type": "number"
        +                      }
        +                    },
        +                    "required": [
        +                      "svg_b64",
        +                      "viewbox_x",
        +                      "viewbox_y",
        +                      "viewbox_width",
        +                      "viewbox_height",
        +                      "entity_count"
        +                    ],
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "drawings": {
        +                "anyOf": [
        +                  {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.6 — paid-tier drawing artefact pointer.\n\n`url` is an R2-signed URL; expiry is carried in `_meta.deliverables.expires_at`\non the envelope (not duplicated here). `layers` is DXF-only; PDF/SVG\ncallers omit it.",
        +                      "properties": {
        +                        "drawing_type": {
        +                          "enum": [
        +                            "section",
        +                            "plan",
        +                            "elevation",
        +                            "isometric",
        +                            "detail"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "format": {
        +                          "enum": [
        +                            "DXF",
        +                            "PDF",
        +                            "SVG"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "layers": {
        +                          "anyOf": [
        +                            {
        +                              "items": {
        +                                "type": "string"
        +                              },
        +                              "type": "array"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ],
        +                          "default": null
        +                        },
        +                        "scale": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "sheet_size": {
        +                          "enum": [
        +                            "A1",
        +                            "A2",
        +                            "A3",
        +                            "A4"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "url": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "drawing_type",
        +                        "format",
        +                        "url",
        +                        "sheet_size",
        +                        "scale"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "parameters_used": {
        +                "additionalProperties": false,
        +                "description": "Schema § 1.2 — the parameter snapshot the engine actually used.\n\nSplits user-supplied values from engine defaults so customers can see\nwhich numbers came from them and which the engine filled in. Every\ndefaulted parameter SHOULD have a corresponding entry in `assumptions`\n— the bridge layer enforces this when wrapping engine output.",
        +                "properties": {
        +                  "assumptions": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "engine_defaults": {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  "user_supplied": {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  }
        +                },
        +                "type": "object"
        +              },
        +              "standard": {
        +                "enum": [
        +                  "CESMM4",
        +                  "NRM2",
        +                  "SMM7",
        +                  "MMHW"
        +                ],
        +                "type": "string"
        +              },
        +              "text_summary": {
        +                "maxLength": 2000,
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "totals_summary": {
        +                "additionalProperties": false,
        +                "description": "Schema § 1.4 — totals_summary as a typed wrapper around the free-form dict.\n\nWire shape is a flat object (`{\"concrete_m3\": {...}, \"rebar_t\": {...}}`).\nWe model it as `RootModel`-equivalent via `model_config(extra=\"allow\")`\n+ a single `__root__`-style `entries` dict. Pydantic v2 recommends\n`RootModel` for free-form roots; using a wrapper class keeps the import\nsurface uniform with the rest of this module.",
        +                "properties": {
        +                  "entries": {
        +                    "additionalProperties": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.4 — single material/work-class total entry.",
        +                      "properties": {
        +                        "quantity": {
        +                          "minimum": 0,
        +                          "type": "number"
        +                        },
        +                        "unit": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "quantity",
        +                        "unit"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "object"
        +                  }
        +                },
        +                "type": "object"
        +              },
        +              "warnings": {
        +                "items": {
        +                  "additionalProperties": false,
        +                  "description": "Schema § 1.8 — a non-fatal geometry advisory (56th-fire T2).\n\nThe wire projection of the engine's `core.GeometryWarning`. Advisory only:\na warning NEVER changes a measured quantity — it flags geometry that is\nvalid but likely a mistake (e.g. a stale dependent-height default). Present\non BOTH tiers — a correctness/safety signal, not a paid feature.",
        +                  "properties": {
        +                    "affected_params": {
        +                      "items": {
        +                        "type": "string"
        +                      },
        +                      "type": "array"
        +                    },
        +                    "code": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "detail": {
        +                      "additionalProperties": {
        +                        "type": "number"
        +                      },
        +                      "type": "object"
        +                    },
        +                    "message": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "severity": {
        +                      "enum": [
        +                        "info",
        +                        "advisory",
        +                        "caution"
        +                      ],
        +                      "type": "string"
        +                    }
        +                  },
        +                  "required": [
        +                    "code",
        +                    "severity",
        +                    "message"
        +                  ],
        +                  "type": "object"
        +                },
        +                "type": "array"
        +              }
        +            },
        +            "required": [
        +              "assembly_slug",
        +              "standard",
        +              "parameters_used",
        +              "boq_rows",
        +              "totals_summary",
        +              "text_summary"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      },
        +      "error": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        +            "properties": {
        +              "code": {
        +                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        +                "enum": [
        +                  "RATE_LIMIT_EXCEEDED",
        +                  "TIER_INSUFFICIENT",
        +                  "INVALID_INPUT",
        +                  "SCHEMA_VERSION_MISMATCH",
        +                  "SCHEMA_INVARIANT_VIOLATION",
        +                  "UPSTREAM_TIMEOUT",
        +                  "BACKEND_FAILURE",
        +                  "IP_BLOCKED",
        +                  "RESOURCE_NOT_FOUND",
        +                  "RENDER_FAILURE",
        +                  "OCR_LOW_CONFIDENCE",
        +                  "MANUAL_REVIEW_REQUIRED",
        +                  "ACCEPTANCE_REQUIRED",
        +                  "INVALID_TOKEN"
        +                ],
        +                "type": "string"
        +              },
        +              "details": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "message": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "recoverable": {
        +                "type": "boolean"
        +              },
        +              "retry_after_seconds": {
        +                "anyOf": [
        +                  {
        +                    "minimum": 0,
        +                    "type": "integer"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              }
        +            },
        +            "required": [
        +              "code",
        +              "message",
        +              "recoverable"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      }
        +    },
        +    "required": [
        +      "_meta"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "_meta": {
        +        "additionalProperties": false,
        +        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        +        "properties": {
        +          "deliverables": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        +                "properties": {
        +                  "docx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "dxf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "expires_at": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  },
        +                  "pdf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "xlsx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "expires_at"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "document_id": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "issued_at": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "output_mode": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Surfaces what a trimmed ``output_mode`` withheld from ``data``.\n\nA trimmed mode (``summary`` / ``material_schedule`` / ``boq`` /\n``boq_with_backup``) withholds\nalready-computed fields to keep the chat payload small. The withheld value\nreads to a client agent as \"capability missing\" (the box-culvert \"geometry\nbuilder isn't firing\" scare) rather than \"pared for size\": ``drawing`` and\n``audit_trail`` appear as ``null``, ``boq_rows`` as an empty list ``[]``\n(its type forbids ``null``) — both indistinguishable from a genuine absent\nresult. This names the withheld fields and the exact mode that brings each\nback, so the value is unambiguous. Absent on the default ``full_json`` mode\n— nothing is withheld, nothing to point at.",
        +                "properties": {
        +                  "mode": {
        +                    "enum": [
        +                      "summary",
        +                      "material_schedule",
        +                      "boq",
        +                      "boq_with_backup"
        +                    ],
        +                    "type": "string"
        +                  },
        +                  "omitted_fields": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "minItems": 1,
        +                    "type": "array"
        +                  },
        +                  "retrieve_with": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "mode",
        +                  "omitted_fields",
        +                  "retrieve_with"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "rate_limit_remaining": {
        +            "anyOf": [
        +              {
        +                "minimum": 0,
        +                "type": "integer"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "request_id": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "schema_version": {
        +            "const": "1.0.0",
        +            "default": "1.0.0",
        +            "type": "string"
        +          },
        +          "scope_boundary": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        +                "properties": {
        +                  "not_in_scope": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "produced": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "recommended_companions": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "type": "string"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "produced",
        +                  "not_in_scope"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tier": {
        +            "enum": [
        +              "free",
        +              "paid"
        +            ],
        +            "type": "string"
        +          },
        +          "tier_upgrade": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        +                "properties": {
        +                  "available_tiers": {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        +                      "properties": {
        +                        "billing": {
        +                          "enum": [
        +                            "one_off",
        +                            "monthly",
        +                            "annual"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "currency": {
        +                          "enum": [
        +                            "GBP",
        +                            "SGD",
        +                            "EUR",
        +                            "USD",
        +                            "CAD",
        +                            "AUD",
        +                            "NZD",
        +                            "MYR"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "display_name": {
        +                          "type": "string"
        +                        },
        +                        "price_local": {
        +                          "type": "number"
        +                        },
        +                        "tier_slug": {
        +                          "enum": [
        +                            "7_day_pass",
        +                            "solo",
        +                            "studio",
        +                            "practice"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "unlock_summary": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "tier_slug",
        +                        "display_name",
        +                        "price_local",
        +                        "currency",
        +                        "billing",
        +                        "unlock_summary"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "current_tier": {
        +                    "const": "free",
        +                    "default": "free",
        +                    "type": "string"
        +                  },
        +                  "pass_credit": {
        +                    "anyOf": [
        +                      {
        +                        "additionalProperties": false,
        +                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        +                        "properties": {
        +                          "amount_local": {
        +                            "type": "number"
        +                          },
        +                          "applies_to": {
        +                            "const": "solo_first_month",
        +                            "default": "solo_first_month",
        +                            "type": "string"
        +                          },
        +                          "currency": {
        +                            "type": "string"
        +                          },
        +                          "redeemable_until": {
        +                            "type": "string"
        +                          }
        +                        },
        +                        "required": [
        +                          "amount_local",
        +                          "currency",
        +                          "redeemable_until"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "pricing_url": {
        +                    "default": "https://civilquants.com/pricing",
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "available_tiers"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tos_url": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "upgrade_hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "warranty_disclaimer": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          }
        +        },
        +        "required": [
        +          "request_id",
        +          "issued_at",
        +          "tier"
        +        ],
        +        "type": "object"
        +      },
        +      "data": {
        +        "default": null,
        +        "title": "Data"
        +      },
        +      "error": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        +            "properties": {
        +              "code": {
        +                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        +                "enum": [
        +                  "RATE_LIMIT_EXCEEDED",
        +                  "TIER_INSUFFICIENT",
        +                  "INVALID_INPUT",
        +                  "SCHEMA_VERSION_MISMATCH",
        +                  "SCHEMA_INVARIANT_VIOLATION",
        +                  "UPSTREAM_TIMEOUT",
        +                  "BACKEND_FAILURE",
        +                  "IP_BLOCKED",
        +                  "RESOURCE_NOT_FOUND",
        +                  "RENDER_FAILURE",
        +                  "OCR_LOW_CONFIDENCE",
        +                  "MANUAL_REVIEW_REQUIRED",
        +                  "ACCEPTANCE_REQUIRED",
        +                  "INVALID_TOKEN"
        +                ],
        +                "type": "string"
        +              },
        +              "details": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "message": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "recoverable": {
        +                "type": "boolean"
        +              },
        +              "retry_after_seconds": {
        +                "anyOf": [
        +                  {
        +                    "minimum": 0,
        +                    "type": "integer"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              }
        +            },
        +            "required": [
        +              "code",
        +              "message",
        +              "recoverable"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      }
        +    },
        +    "required": [
        +      "_meta"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedcompute_soakaway2 fields changed
      • changedInput schema / properties / output_mode / enum
        Previous value: -[
        -  "summary",
        -  "boq",
        -  "boq_with_backup",
        -  "full_json"
        -]New value: +[
        +  "summary",
        +  "material_schedule",
        +  "boq",
        +  "boq_with_backup",
        +  "full_json"
        +]
      • changedOutput schema / properties / result / anyOf
        Previous value: -[
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "_meta": {
        -        "additionalProperties": false,
        -        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        -        "properties": {
        -          "deliverables": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        -                "properties": {
        -                  "docx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "dxf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "expires_at": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  },
        -                  "pdf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "xlsx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "expires_at"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "document_id": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "issued_at": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "output_mode": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Surfaces what a trimmed ``output_mode`` withheld from ``data``.\n\nA trimmed mode (``summary`` / ``boq`` / ``boq_with_backup``) withholds\nalready-computed fields to keep the chat payload small. The withheld value\nreads to a client agent as \"capability missing\" (the box-culvert \"geometry\nbuilder isn't firing\" scare) rather than \"pared for size\": ``drawing`` and\n``audit_trail`` appear as ``null``, ``boq_rows`` as an empty list ``[]``\n(its type forbids ``null``) — both indistinguishable from a genuine absent\nresult. This names the withheld fields and the exact mode that brings each\nback, so the value is unambiguous. Absent on the default ``full_json`` mode\n— nothing is withheld, nothing to point at.",
        -                "properties": {
        -                  "mode": {
        -                    "enum": [
        -                      "summary",
        -                      "boq",
        -                      "boq_with_backup"
        -                    ],
        -                    "type": "string"
        -                  },
        -                  "omitted_fields": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "minItems": 1,
        -                    "type": "array"
        -                  },
        -                  "retrieve_with": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "mode",
        -                  "omitted_fields",
        -                  "retrieve_with"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "rate_limit_remaining": {
        -            "anyOf": [
        -              {
        -                "minimum": 0,
        -                "type": "integer"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "request_id": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "schema_version": {
        -            "const": "1.0.0",
        -            "default": "1.0.0",
        -            "type": "string"
        -          },
        -          "scope_boundary": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        -                "properties": {
        -                  "not_in_scope": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "produced": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "recommended_companions": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "type": "string"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "produced",
        -                  "not_in_scope"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tier": {
        -            "enum": [
        -              "free",
        -              "paid"
        -            ],
        -            "type": "string"
        -          },
        -          "tier_upgrade": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        -                "properties": {
        -                  "available_tiers": {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        -                      "properties": {
        -                        "billing": {
        -                          "enum": [
        -                            "one_off",
        -                            "monthly",
        -                            "annual"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "currency": {
        -                          "enum": [
        -                            "GBP",
        -                            "SGD",
        -                            "EUR",
        -                            "USD",
        -                            "CAD",
        -                            "AUD",
        -                            "NZD",
        -                            "MYR"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "display_name": {
        -                          "type": "string"
        -                        },
        -                        "price_local": {
        -                          "type": "number"
        -                        },
        -                        "tier_slug": {
        -                          "enum": [
        -                            "7_day_pass",
        -                            "solo",
        -                            "studio",
        -                            "practice"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "unlock_summary": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "tier_slug",
        -                        "display_name",
        -                        "price_local",
        -                        "currency",
        -                        "billing",
        -                        "unlock_summary"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "current_tier": {
        -                    "const": "free",
        -                    "default": "free",
        -                    "type": "string"
        -                  },
        -                  "pass_credit": {
        -                    "anyOf": [
        -                      {
        -                        "additionalProperties": false,
        -                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        -                        "properties": {
        -                          "amount_local": {
        -                            "type": "number"
        -                          },
        -                          "applies_to": {
        -                            "const": "solo_first_month",
        -                            "default": "solo_first_month",
        -                            "type": "string"
        -                          },
        -                          "currency": {
        -                            "type": "string"
        -                          },
        -                          "redeemable_until": {
        -                            "type": "string"
        -                          }
        -                        },
        -                        "required": [
        -                          "amount_local",
        -                          "currency",
        -                          "redeemable_until"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "pricing_url": {
        -                    "default": "https://civilquants.com/pricing",
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "available_tiers"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tos_url": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "upgrade_hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "warranty_disclaimer": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          }
        -        },
        -        "required": [
        -          "request_id",
        -          "issued_at",
        -          "tier"
        -        ],
        -        "type": "object"
        -      },
        -      "data": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Schema § 1.1 — the typed payload returned inside `MCPResponse[ComputeResult]`.\n\nFree-tier responses omit `drawings` (the downloadable CAD artefact\npointers — the paid differentiator); the bridge enforces this. The\n`audit_trail` and the inline `drawing` preview are present on BOTH tiers\n(V1 ALIGN / 60th-fire D + C). `text_summary` is bounded to 2000 chars —\nkeeps the LLM-facing summary token-cheap and forces longer narrative into\nBoQ row descriptions where it belongs. `warnings` is the non-fatal\ngeometry advisory list (both tiers).",
        -            "properties": {
        -              "assembly_slug": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "audit_trail": {
        -                "anyOf": [
        -                  {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.7 — paid-tier audit-trail entry.\n\nOne entry per BoQ row; `boq_row_index` ties to the row position in\n`ComputeResult.boq_rows`. `derivation` is the human-readable formula\nwalk-through; `formula` is the optional formal expression.",
        -                      "properties": {
        -                        "boq_row_index": {
        -                          "minimum": 0,
        -                          "type": "integer"
        -                        },
        -                        "derivation": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "formula": {
        -                          "anyOf": [
        -                            {
        -                              "type": "string"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ],
        -                          "default": null
        -                        },
        -                        "id": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "parameters_referenced": {
        -                          "items": {
        -                            "type": "string"
        -                          },
        -                          "type": "array"
        -                        }
        -                      },
        -                      "required": [
        -                        "id",
        -                        "boq_row_index",
        -                        "derivation"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "boq_rows": {
        -                "items": {
        -                  "additionalProperties": false,
        -                  "description": "Schema § 1.3 — a single bill row in the requested standard's format.\n\n`description` is the non-verbatim functional description per spec § 13.9 /\n§ 15 invariant — NEVER reproduces a standard's verbatim clause text.\n`rate` / `amount` ship null because rates are commodity data the customer\nowns; the engine's job is the measurement, not the pricing.",
        -                  "properties": {
        -                    "amount": {
        -                      "anyOf": [
        -                        {
        -                          "type": "number"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "attribution": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "audit_id": {
        -                      "anyOf": [
        -                        {
        -                          "type": "string"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "description": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "quantity": {
        -                      "minimum": 0,
        -                      "type": "number"
        -                    },
        -                    "rate": {
        -                      "anyOf": [
        -                        {
        -                          "type": "number"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "unit": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "work_section": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    }
        -                  },
        -                  "required": [
        -                    "work_section",
        -                    "description",
        -                    "quantity",
        -                    "unit",
        -                    "attribution"
        -                  ],
        -                  "type": "object"
        -                },
        -                "type": "array"
        -              },
        -              "drawing": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": false,
        -                    "description": "Schema § 1.6a — inline server-rendered SVG preview of the geometry.\n\nThe MCP mirror of the web ``/compute`` response's ``drawing`` field\n(``api.schemas.compute.DrawingRef``): the same on-screen dimensioned\ndrawing both tiers see in the workspace, surfaced on the MCP compute\nresponse so a chat client can render it inline (60th-fire item C). This\nis the on-screen preview — present on BOTH tiers per the free/paid\nboundary; the downloadable CAD artefacts (DXF / dimensioned PDF) remain\nthe paid differentiator via the export tools.\n\nDefined here rather than importing ``DrawingRef`` because the web\n``schemas`` package imports back into this module (``schemas.render``),\nso reusing it would create an import cycle — the MCP wire contract keeps\nits own copy, the same pattern as ``BoQRow`` / ``DrawingReference``.",
        -                    "properties": {
        -                      "entity_count": {
        -                        "minimum": 0,
        -                        "type": "integer"
        -                      },
        -                      "svg_b64": {
        -                        "minLength": 1,
        -                        "type": "string"
        -                      },
        -                      "unit_of_drawing": {
        -                        "const": "m",
        -                        "default": "m",
        -                        "type": "string"
        -                      },
        -                      "viewbox_height": {
        -                        "exclusiveMinimum": 0,
        -                        "type": "number"
        -                      },
        -                      "viewbox_width": {
        -                        "exclusiveMinimum": 0,
        -                        "type": "number"
        -                      },
        -                      "viewbox_x": {
        -                        "type": "number"
        -                      },
        -                      "viewbox_y": {
        -                        "type": "number"
        -                      }
        -                    },
        -                    "required": [
        -                      "svg_b64",
        -                      "viewbox_x",
        -                      "viewbox_y",
        -                      "viewbox_width",
        -                      "viewbox_height",
        -                      "entity_count"
        -                    ],
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "drawings": {
        -                "anyOf": [
        -                  {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.6 — paid-tier drawing artefact pointer.\n\n`url` is an R2-signed URL; expiry is carried in `_meta.deliverables.expires_at`\non the envelope (not duplicated here). `layers` is DXF-only; PDF/SVG\ncallers omit it.",
        -                      "properties": {
        -                        "drawing_type": {
        -                          "enum": [
        -                            "section",
        -                            "plan",
        -                            "elevation",
        -                            "isometric",
        -                            "detail"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "format": {
        -                          "enum": [
        -                            "DXF",
        -                            "PDF",
        -                            "SVG"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "layers": {
        -                          "anyOf": [
        -                            {
        -                              "items": {
        -                                "type": "string"
        -                              },
        -                              "type": "array"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ],
        -                          "default": null
        -                        },
        -                        "scale": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "sheet_size": {
        -                          "enum": [
        -                            "A1",
        -                            "A2",
        -                            "A3",
        -                            "A4"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "url": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "drawing_type",
        -                        "format",
        -                        "url",
        -                        "sheet_size",
        -                        "scale"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "parameters_used": {
        -                "additionalProperties": false,
        -                "description": "Schema § 1.2 — the parameter snapshot the engine actually used.\n\nSplits user-supplied values from engine defaults so customers can see\nwhich numbers came from them and which the engine filled in. Every\ndefaulted parameter SHOULD have a corresponding entry in `assumptions`\n— the bridge layer enforces this when wrapping engine output.",
        -                "properties": {
        -                  "assumptions": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "engine_defaults": {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  "user_supplied": {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  }
        -                },
        -                "type": "object"
        -              },
        -              "standard": {
        -                "enum": [
        -                  "CESMM4",
        -                  "NRM2",
        -                  "SMM7",
        -                  "MMHW"
        -                ],
        -                "type": "string"
        -              },
        -              "text_summary": {
        -                "maxLength": 2000,
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "totals_summary": {
        -                "additionalProperties": false,
        -                "description": "Schema § 1.4 — totals_summary as a typed wrapper around the free-form dict.\n\nWire shape is a flat object (`{\"concrete_m3\": {...}, \"rebar_t\": {...}}`).\nWe model it as `RootModel`-equivalent via `model_config(extra=\"allow\")`\n+ a single `__root__`-style `entries` dict. Pydantic v2 recommends\n`RootModel` for free-form roots; using a wrapper class keeps the import\nsurface uniform with the rest of this module.",
        -                "properties": {
        -                  "entries": {
        -                    "additionalProperties": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.4 — single material/work-class total entry.",
        -                      "properties": {
        -                        "quantity": {
        -                          "minimum": 0,
        -                          "type": "number"
        -                        },
        -                        "unit": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "quantity",
        -                        "unit"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "object"
        -                  }
        -                },
        -                "type": "object"
        -              },
        -              "warnings": {
        -                "items": {
        -                  "additionalProperties": false,
        -                  "description": "Schema § 1.8 — a non-fatal geometry advisory (56th-fire T2).\n\nThe wire projection of the engine's `core.GeometryWarning`. Advisory only:\na warning NEVER changes a measured quantity — it flags geometry that is\nvalid but likely a mistake (e.g. a stale dependent-height default). Present\non BOTH tiers — a correctness/safety signal, not a paid feature.",
        -                  "properties": {
        -                    "affected_params": {
        -                      "items": {
        -                        "type": "string"
        -                      },
        -                      "type": "array"
        -                    },
        -                    "code": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "detail": {
        -                      "additionalProperties": {
        -                        "type": "number"
        -                      },
        -                      "type": "object"
        -                    },
        -                    "message": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "severity": {
        -                      "enum": [
        -                        "info",
        -                        "advisory",
        -                        "caution"
        -                      ],
        -                      "type": "string"
        -                    }
        -                  },
        -                  "required": [
        -                    "code",
        -                    "severity",
        -                    "message"
        -                  ],
        -                  "type": "object"
        -                },
        -                "type": "array"
        -              }
        -            },
        -            "required": [
        -              "assembly_slug",
        -              "standard",
        -              "parameters_used",
        -              "boq_rows",
        -              "totals_summary",
        -              "text_summary"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      },
        -      "error": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        -            "properties": {
        -              "code": {
        -                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        -                "enum": [
        -                  "RATE_LIMIT_EXCEEDED",
        -                  "TIER_INSUFFICIENT",
        -                  "INVALID_INPUT",
        -                  "SCHEMA_VERSION_MISMATCH",
        -                  "SCHEMA_INVARIANT_VIOLATION",
        -                  "UPSTREAM_TIMEOUT",
        -                  "BACKEND_FAILURE",
        -                  "IP_BLOCKED",
        -                  "RESOURCE_NOT_FOUND",
        -                  "RENDER_FAILURE",
        -                  "OCR_LOW_CONFIDENCE",
        -                  "MANUAL_REVIEW_REQUIRED",
        -                  "ACCEPTANCE_REQUIRED",
        -                  "INVALID_TOKEN"
        -                ],
        -                "type": "string"
        -              },
        -              "details": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "message": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "recoverable": {
        -                "type": "boolean"
        -              },
        -              "retry_after_seconds": {
        -                "anyOf": [
        -                  {
        -                    "minimum": 0,
        -                    "type": "integer"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              }
        -            },
        -            "required": [
        -              "code",
        -              "message",
        -              "recoverable"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      }
        -    },
        -    "required": [
        -      "_meta"
        -    ],
        -    "type": "object"
        -  },
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "_meta": {
        -        "additionalProperties": false,
        -        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        -        "properties": {
        -          "deliverables": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        -                "properties": {
        -                  "docx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "dxf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "expires_at": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  },
        -                  "pdf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "xlsx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "expires_at"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "document_id": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "issued_at": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "output_mode": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Surfaces what a trimmed ``output_mode`` withheld from ``data``.\n\nA trimmed mode (``summary`` / ``boq`` / ``boq_with_backup``) withholds\nalready-computed fields to keep the chat payload small. The withheld value\nreads to a client agent as \"capability missing\" (the box-culvert \"geometry\nbuilder isn't firing\" scare) rather than \"pared for size\": ``drawing`` and\n``audit_trail`` appear as ``null``, ``boq_rows`` as an empty list ``[]``\n(its type forbids ``null``) — both indistinguishable from a genuine absent\nresult. This names the withheld fields and the exact mode that brings each\nback, so the value is unambiguous. Absent on the default ``full_json`` mode\n— nothing is withheld, nothing to point at.",
        -                "properties": {
        -                  "mode": {
        -                    "enum": [
        -                      "summary",
        -                      "boq",
        -                      "boq_with_backup"
        -                    ],
        -                    "type": "string"
        -                  },
        -                  "omitted_fields": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "minItems": 1,
        -                    "type": "array"
        -                  },
        -                  "retrieve_with": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "mode",
        -                  "omitted_fields",
        -                  "retrieve_with"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "rate_limit_remaining": {
        -            "anyOf": [
        -              {
        -                "minimum": 0,
        -                "type": "integer"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "request_id": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "schema_version": {
        -            "const": "1.0.0",
        -            "default": "1.0.0",
        -            "type": "string"
        -          },
        -          "scope_boundary": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        -                "properties": {
        -                  "not_in_scope": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "produced": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "recommended_companions": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "type": "string"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "produced",
        -                  "not_in_scope"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tier": {
        -            "enum": [
        -              "free",
        -              "paid"
        -            ],
        -            "type": "string"
        -          },
        -          "tier_upgrade": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        -                "properties": {
        -                  "available_tiers": {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        -                      "properties": {
        -                        "billing": {
        -                          "enum": [
        -                            "one_off",
        -                            "monthly",
        -                            "annual"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "currency": {
        -                          "enum": [
        -                            "GBP",
        -                            "SGD",
        -                            "EUR",
        -                            "USD",
        -                            "CAD",
        -                            "AUD",
        -                            "NZD",
        -                            "MYR"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "display_name": {
        -                          "type": "string"
        -                        },
        -                        "price_local": {
        -                          "type": "number"
        -                        },
        -                        "tier_slug": {
        -                          "enum": [
        -                            "7_day_pass",
        -                            "solo",
        -                            "studio",
        -                            "practice"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "unlock_summary": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "tier_slug",
        -                        "display_name",
        -                        "price_local",
        -                        "currency",
        -                        "billing",
        -                        "unlock_summary"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "current_tier": {
        -                    "const": "free",
        -                    "default": "free",
        -                    "type": "string"
        -                  },
        -                  "pass_credit": {
        -                    "anyOf": [
        -                      {
        -                        "additionalProperties": false,
        -                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        -                        "properties": {
        -                          "amount_local": {
        -                            "type": "number"
        -                          },
        -                          "applies_to": {
        -                            "const": "solo_first_month",
        -                            "default": "solo_first_month",
        -                            "type": "string"
        -                          },
        -                          "currency": {
        -                            "type": "string"
        -                          },
        -                          "redeemable_until": {
        -                            "type": "string"
        -                          }
        -                        },
        -                        "required": [
        -                          "amount_local",
        -                          "currency",
        -                          "redeemable_until"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "pricing_url": {
        -                    "default": "https://civilquants.com/pricing",
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "available_tiers"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tos_url": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "upgrade_hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "warranty_disclaimer": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          }
        -        },
        -        "required": [
        -          "request_id",
        -          "issued_at",
        -          "tier"
        -        ],
        -        "type": "object"
        -      },
        -      "data": {
        -        "default": null,
        -        "title": "Data"
        -      },
        -      "error": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        -            "properties": {
        -              "code": {
        -                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        -                "enum": [
        -                  "RATE_LIMIT_EXCEEDED",
        -                  "TIER_INSUFFICIENT",
        -                  "INVALID_INPUT",
        -                  "SCHEMA_VERSION_MISMATCH",
        -                  "SCHEMA_INVARIANT_VIOLATION",
        -                  "UPSTREAM_TIMEOUT",
        -                  "BACKEND_FAILURE",
        -                  "IP_BLOCKED",
        -                  "RESOURCE_NOT_FOUND",
        -                  "RENDER_FAILURE",
        -                  "OCR_LOW_CONFIDENCE",
        -                  "MANUAL_REVIEW_REQUIRED",
        -                  "ACCEPTANCE_REQUIRED",
        -                  "INVALID_TOKEN"
        -                ],
        -                "type": "string"
        -              },
        -              "details": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "message": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "recoverable": {
        -                "type": "boolean"
        -              },
        -              "retry_after_seconds": {
        -                "anyOf": [
        -                  {
        -                    "minimum": 0,
        -                    "type": "integer"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              }
        -            },
        -            "required": [
        -              "code",
        -              "message",
        -              "recoverable"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      }
        -    },
        -    "required": [
        -      "_meta"
        -    ],
        -    "type": "object"
        -  }
        -]New value: +[
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "_meta": {
        +        "additionalProperties": false,
        +        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        +        "properties": {
        +          "deliverables": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        +                "properties": {
        +                  "docx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "dxf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "expires_at": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  },
        +                  "pdf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "xlsx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "expires_at"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "document_id": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "issued_at": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "output_mode": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Surfaces what a trimmed ``output_mode`` withheld from ``data``.\n\nA trimmed mode (``summary`` / ``material_schedule`` / ``boq`` /\n``boq_with_backup``) withholds\nalready-computed fields to keep the chat payload small. The withheld value\nreads to a client agent as \"capability missing\" (the box-culvert \"geometry\nbuilder isn't firing\" scare) rather than \"pared for size\": ``drawing`` and\n``audit_trail`` appear as ``null``, ``boq_rows`` as an empty list ``[]``\n(its type forbids ``null``) — both indistinguishable from a genuine absent\nresult. This names the withheld fields and the exact mode that brings each\nback, so the value is unambiguous. Absent on the default ``full_json`` mode\n— nothing is withheld, nothing to point at.",
        +                "properties": {
        +                  "mode": {
        +                    "enum": [
        +                      "summary",
        +                      "material_schedule",
        +                      "boq",
        +                      "boq_with_backup"
        +                    ],
        +                    "type": "string"
        +                  },
        +                  "omitted_fields": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "minItems": 1,
        +                    "type": "array"
        +                  },
        +                  "retrieve_with": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "mode",
        +                  "omitted_fields",
        +                  "retrieve_with"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "rate_limit_remaining": {
        +            "anyOf": [
        +              {
        +                "minimum": 0,
        +                "type": "integer"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "request_id": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "schema_version": {
        +            "const": "1.0.0",
        +            "default": "1.0.0",
        +            "type": "string"
        +          },
        +          "scope_boundary": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        +                "properties": {
        +                  "not_in_scope": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "produced": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "recommended_companions": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "type": "string"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "produced",
        +                  "not_in_scope"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tier": {
        +            "enum": [
        +              "free",
        +              "paid"
        +            ],
        +            "type": "string"
        +          },
        +          "tier_upgrade": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        +                "properties": {
        +                  "available_tiers": {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        +                      "properties": {
        +                        "billing": {
        +                          "enum": [
        +                            "one_off",
        +                            "monthly",
        +                            "annual"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "currency": {
        +                          "enum": [
        +                            "GBP",
        +                            "SGD",
        +                            "EUR",
        +                            "USD",
        +                            "CAD",
        +                            "AUD",
        +                            "NZD",
        +                            "MYR"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "display_name": {
        +                          "type": "string"
        +                        },
        +                        "price_local": {
        +                          "type": "number"
        +                        },
        +                        "tier_slug": {
        +                          "enum": [
        +                            "7_day_pass",
        +                            "solo",
        +                            "studio",
        +                            "practice"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "unlock_summary": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "tier_slug",
        +                        "display_name",
        +                        "price_local",
        +                        "currency",
        +                        "billing",
        +                        "unlock_summary"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "current_tier": {
        +                    "const": "free",
        +                    "default": "free",
        +                    "type": "string"
        +                  },
        +                  "pass_credit": {
        +                    "anyOf": [
        +                      {
        +                        "additionalProperties": false,
        +                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        +                        "properties": {
        +                          "amount_local": {
        +                            "type": "number"
        +                          },
        +                          "applies_to": {
        +                            "const": "solo_first_month",
        +                            "default": "solo_first_month",
        +                            "type": "string"
        +                          },
        +                          "currency": {
        +                            "type": "string"
        +                          },
        +                          "redeemable_until": {
        +                            "type": "string"
        +                          }
        +                        },
        +                        "required": [
        +                          "amount_local",
        +                          "currency",
        +                          "redeemable_until"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "pricing_url": {
        +                    "default": "https://civilquants.com/pricing",
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "available_tiers"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tos_url": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "upgrade_hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "warranty_disclaimer": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          }
        +        },
        +        "required": [
        +          "request_id",
        +          "issued_at",
        +          "tier"
        +        ],
        +        "type": "object"
        +      },
        +      "data": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Schema § 1.1 — the typed payload returned inside `MCPResponse[ComputeResult]`.\n\nFree-tier responses omit `drawings` (the downloadable CAD artefact\npointers — the paid differentiator); the bridge enforces this. The\n`audit_trail` and the inline `drawing` preview are present on BOTH tiers\n(V1 ALIGN / 60th-fire D + C). `text_summary` is bounded to 2000 chars —\nkeeps the LLM-facing summary token-cheap and forces longer narrative into\nBoQ row descriptions where it belongs. `warnings` is the non-fatal\ngeometry advisory list (both tiers).",
        +            "properties": {
        +              "assembly_slug": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "audit_trail": {
        +                "anyOf": [
        +                  {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.7 — paid-tier audit-trail entry.\n\nOne entry per BoQ row; `boq_row_index` ties to the row position in\n`ComputeResult.boq_rows`. `derivation` is the human-readable formula\nwalk-through; `formula` is the optional formal expression.",
        +                      "properties": {
        +                        "boq_row_index": {
        +                          "minimum": 0,
        +                          "type": "integer"
        +                        },
        +                        "derivation": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "formula": {
        +                          "anyOf": [
        +                            {
        +                              "type": "string"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ],
        +                          "default": null
        +                        },
        +                        "id": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "parameters_referenced": {
        +                          "items": {
        +                            "type": "string"
        +                          },
        +                          "type": "array"
        +                        }
        +                      },
        +                      "required": [
        +                        "id",
        +                        "boq_row_index",
        +                        "derivation"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "boq_rows": {
        +                "items": {
        +                  "additionalProperties": false,
        +                  "description": "Schema § 1.3 — a single bill row in the requested standard's format.\n\n`description` is the non-verbatim functional description per spec § 13.9 /\n§ 15 invariant — NEVER reproduces a standard's verbatim clause text.\n`rate` / `amount` ship null because rates are commodity data the customer\nowns; the engine's job is the measurement, not the pricing.",
        +                  "properties": {
        +                    "amount": {
        +                      "anyOf": [
        +                        {
        +                          "type": "number"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "attribution": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "audit_id": {
        +                      "anyOf": [
        +                        {
        +                          "type": "string"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "description": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "quantity": {
        +                      "minimum": 0,
        +                      "type": "number"
        +                    },
        +                    "rate": {
        +                      "anyOf": [
        +                        {
        +                          "type": "number"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "unit": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "work_section": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    }
        +                  },
        +                  "required": [
        +                    "work_section",
        +                    "description",
        +                    "quantity",
        +                    "unit",
        +                    "attribution"
        +                  ],
        +                  "type": "object"
        +                },
        +                "type": "array"
        +              },
        +              "drawing": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": false,
        +                    "description": "Schema § 1.6a — inline server-rendered SVG preview of the geometry.\n\nThe MCP mirror of the web ``/compute`` response's ``drawing`` field\n(``api.schemas.compute.DrawingRef``): the same on-screen dimensioned\ndrawing both tiers see in the workspace, surfaced on the MCP compute\nresponse so a chat client can render it inline (60th-fire item C). This\nis the on-screen preview — present on BOTH tiers per the free/paid\nboundary; the downloadable CAD artefacts (DXF / dimensioned PDF) remain\nthe paid differentiator via the export tools.\n\nDefined here rather than importing ``DrawingRef`` because the web\n``schemas`` package imports back into this module (``schemas.render``),\nso reusing it would create an import cycle — the MCP wire contract keeps\nits own copy, the same pattern as ``BoQRow`` / ``DrawingReference``.",
        +                    "properties": {
        +                      "entity_count": {
        +                        "minimum": 0,
        +                        "type": "integer"
        +                      },
        +                      "svg_b64": {
        +                        "minLength": 1,
        +                        "type": "string"
        +                      },
        +                      "unit_of_drawing": {
        +                        "const": "m",
        +                        "default": "m",
        +                        "type": "string"
        +                      },
        +                      "viewbox_height": {
        +                        "exclusiveMinimum": 0,
        +                        "type": "number"
        +                      },
        +                      "viewbox_width": {
        +                        "exclusiveMinimum": 0,
        +                        "type": "number"
        +                      },
        +                      "viewbox_x": {
        +                        "type": "number"
        +                      },
        +                      "viewbox_y": {
        +                        "type": "number"
        +                      }
        +                    },
        +                    "required": [
        +                      "svg_b64",
        +                      "viewbox_x",
        +                      "viewbox_y",
        +                      "viewbox_width",
        +                      "viewbox_height",
        +                      "entity_count"
        +                    ],
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "drawings": {
        +                "anyOf": [
        +                  {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.6 — paid-tier drawing artefact pointer.\n\n`url` is an R2-signed URL; expiry is carried in `_meta.deliverables.expires_at`\non the envelope (not duplicated here). `layers` is DXF-only; PDF/SVG\ncallers omit it.",
        +                      "properties": {
        +                        "drawing_type": {
        +                          "enum": [
        +                            "section",
        +                            "plan",
        +                            "elevation",
        +                            "isometric",
        +                            "detail"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "format": {
        +                          "enum": [
        +                            "DXF",
        +                            "PDF",
        +                            "SVG"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "layers": {
        +                          "anyOf": [
        +                            {
        +                              "items": {
        +                                "type": "string"
        +                              },
        +                              "type": "array"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ],
        +                          "default": null
        +                        },
        +                        "scale": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "sheet_size": {
        +                          "enum": [
        +                            "A1",
        +                            "A2",
        +                            "A3",
        +                            "A4"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "url": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "drawing_type",
        +                        "format",
        +                        "url",
        +                        "sheet_size",
        +                        "scale"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "parameters_used": {
        +                "additionalProperties": false,
        +                "description": "Schema § 1.2 — the parameter snapshot the engine actually used.\n\nSplits user-supplied values from engine defaults so customers can see\nwhich numbers came from them and which the engine filled in. Every\ndefaulted parameter SHOULD have a corresponding entry in `assumptions`\n— the bridge layer enforces this when wrapping engine output.",
        +                "properties": {
        +                  "assumptions": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "engine_defaults": {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  "user_supplied": {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  }
        +                },
        +                "type": "object"
        +              },
        +              "standard": {
        +                "enum": [
        +                  "CESMM4",
        +                  "NRM2",
        +                  "SMM7",
        +                  "MMHW"
        +                ],
        +                "type": "string"
        +              },
        +              "text_summary": {
        +                "maxLength": 2000,
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "totals_summary": {
        +                "additionalProperties": false,
        +                "description": "Schema § 1.4 — totals_summary as a typed wrapper around the free-form dict.\n\nWire shape is a flat object (`{\"concrete_m3\": {...}, \"rebar_t\": {...}}`).\nWe model it as `RootModel`-equivalent via `model_config(extra=\"allow\")`\n+ a single `__root__`-style `entries` dict. Pydantic v2 recommends\n`RootModel` for free-form roots; using a wrapper class keeps the import\nsurface uniform with the rest of this module.",
        +                "properties": {
        +                  "entries": {
        +                    "additionalProperties": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.4 — single material/work-class total entry.",
        +                      "properties": {
        +                        "quantity": {
        +                          "minimum": 0,
        +                          "type": "number"
        +                        },
        +                        "unit": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "quantity",
        +                        "unit"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "object"
        +                  }
        +                },
        +                "type": "object"
        +              },
        +              "warnings": {
        +                "items": {
        +                  "additionalProperties": false,
        +                  "description": "Schema § 1.8 — a non-fatal geometry advisory (56th-fire T2).\n\nThe wire projection of the engine's `core.GeometryWarning`. Advisory only:\na warning NEVER changes a measured quantity — it flags geometry that is\nvalid but likely a mistake (e.g. a stale dependent-height default). Present\non BOTH tiers — a correctness/safety signal, not a paid feature.",
        +                  "properties": {
        +                    "affected_params": {
        +                      "items": {
        +                        "type": "string"
        +                      },
        +                      "type": "array"
        +                    },
        +                    "code": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "detail": {
        +                      "additionalProperties": {
        +                        "type": "number"
        +                      },
        +                      "type": "object"
        +                    },
        +                    "message": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "severity": {
        +                      "enum": [
        +                        "info",
        +                        "advisory",
        +                        "caution"
        +                      ],
        +                      "type": "string"
        +                    }
        +                  },
        +                  "required": [
        +                    "code",
        +                    "severity",
        +                    "message"
        +                  ],
        +                  "type": "object"
        +                },
        +                "type": "array"
        +              }
        +            },
        +            "required": [
        +              "assembly_slug",
        +              "standard",
        +              "parameters_used",
        +              "boq_rows",
        +              "totals_summary",
        +              "text_summary"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      },
        +      "error": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        +            "properties": {
        +              "code": {
        +                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        +                "enum": [
        +                  "RATE_LIMIT_EXCEEDED",
        +                  "TIER_INSUFFICIENT",
        +                  "INVALID_INPUT",
        +                  "SCHEMA_VERSION_MISMATCH",
        +                  "SCHEMA_INVARIANT_VIOLATION",
        +                  "UPSTREAM_TIMEOUT",
        +                  "BACKEND_FAILURE",
        +                  "IP_BLOCKED",
        +                  "RESOURCE_NOT_FOUND",
        +                  "RENDER_FAILURE",
        +                  "OCR_LOW_CONFIDENCE",
        +                  "MANUAL_REVIEW_REQUIRED",
        +                  "ACCEPTANCE_REQUIRED",
        +                  "INVALID_TOKEN"
        +                ],
        +                "type": "string"
        +              },
        +              "details": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "message": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "recoverable": {
        +                "type": "boolean"
        +              },
        +              "retry_after_seconds": {
        +                "anyOf": [
        +                  {
        +                    "minimum": 0,
        +                    "type": "integer"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              }
        +            },
        +            "required": [
        +              "code",
        +              "message",
        +              "recoverable"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      }
        +    },
        +    "required": [
        +      "_meta"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "_meta": {
        +        "additionalProperties": false,
        +        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        +        "properties": {
        +          "deliverables": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        +                "properties": {
        +                  "docx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "dxf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "expires_at": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  },
        +                  "pdf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "xlsx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "expires_at"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "document_id": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "issued_at": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "output_mode": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Surfaces what a trimmed ``output_mode`` withheld from ``data``.\n\nA trimmed mode (``summary`` / ``material_schedule`` / ``boq`` /\n``boq_with_backup``) withholds\nalready-computed fields to keep the chat payload small. The withheld value\nreads to a client agent as \"capability missing\" (the box-culvert \"geometry\nbuilder isn't firing\" scare) rather than \"pared for size\": ``drawing`` and\n``audit_trail`` appear as ``null``, ``boq_rows`` as an empty list ``[]``\n(its type forbids ``null``) — both indistinguishable from a genuine absent\nresult. This names the withheld fields and the exact mode that brings each\nback, so the value is unambiguous. Absent on the default ``full_json`` mode\n— nothing is withheld, nothing to point at.",
        +                "properties": {
        +                  "mode": {
        +                    "enum": [
        +                      "summary",
        +                      "material_schedule",
        +                      "boq",
        +                      "boq_with_backup"
        +                    ],
        +                    "type": "string"
        +                  },
        +                  "omitted_fields": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "minItems": 1,
        +                    "type": "array"
        +                  },
        +                  "retrieve_with": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "mode",
        +                  "omitted_fields",
        +                  "retrieve_with"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "rate_limit_remaining": {
        +            "anyOf": [
        +              {
        +                "minimum": 0,
        +                "type": "integer"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "request_id": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "schema_version": {
        +            "const": "1.0.0",
        +            "default": "1.0.0",
        +            "type": "string"
        +          },
        +          "scope_boundary": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        +                "properties": {
        +                  "not_in_scope": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "produced": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "recommended_companions": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "type": "string"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "produced",
        +                  "not_in_scope"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tier": {
        +            "enum": [
        +              "free",
        +              "paid"
        +            ],
        +            "type": "string"
        +          },
        +          "tier_upgrade": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        +                "properties": {
        +                  "available_tiers": {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        +                      "properties": {
        +                        "billing": {
        +                          "enum": [
        +                            "one_off",
        +                            "monthly",
        +                            "annual"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "currency": {
        +                          "enum": [
        +                            "GBP",
        +                            "SGD",
        +                            "EUR",
        +                            "USD",
        +                            "CAD",
        +                            "AUD",
        +                            "NZD",
        +                            "MYR"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "display_name": {
        +                          "type": "string"
        +                        },
        +                        "price_local": {
        +                          "type": "number"
        +                        },
        +                        "tier_slug": {
        +                          "enum": [
        +                            "7_day_pass",
        +                            "solo",
        +                            "studio",
        +                            "practice"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "unlock_summary": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "tier_slug",
        +                        "display_name",
        +                        "price_local",
        +                        "currency",
        +                        "billing",
        +                        "unlock_summary"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "current_tier": {
        +                    "const": "free",
        +                    "default": "free",
        +                    "type": "string"
        +                  },
        +                  "pass_credit": {
        +                    "anyOf": [
        +                      {
        +                        "additionalProperties": false,
        +                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        +                        "properties": {
        +                          "amount_local": {
        +                            "type": "number"
        +                          },
        +                          "applies_to": {
        +                            "const": "solo_first_month",
        +                            "default": "solo_first_month",
        +                            "type": "string"
        +                          },
        +                          "currency": {
        +                            "type": "string"
        +                          },
        +                          "redeemable_until": {
        +                            "type": "string"
        +                          }
        +                        },
        +                        "required": [
        +                          "amount_local",
        +                          "currency",
        +                          "redeemable_until"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "pricing_url": {
        +                    "default": "https://civilquants.com/pricing",
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "available_tiers"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tos_url": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "upgrade_hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "warranty_disclaimer": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          }
        +        },
        +        "required": [
        +          "request_id",
        +          "issued_at",
        +          "tier"
        +        ],
        +        "type": "object"
        +      },
        +      "data": {
        +        "default": null,
        +        "title": "Data"
        +      },
        +      "error": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        +            "properties": {
        +              "code": {
        +                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        +                "enum": [
        +                  "RATE_LIMIT_EXCEEDED",
        +                  "TIER_INSUFFICIENT",
        +                  "INVALID_INPUT",
        +                  "SCHEMA_VERSION_MISMATCH",
        +                  "SCHEMA_INVARIANT_VIOLATION",
        +                  "UPSTREAM_TIMEOUT",
        +                  "BACKEND_FAILURE",
        +                  "IP_BLOCKED",
        +                  "RESOURCE_NOT_FOUND",
        +                  "RENDER_FAILURE",
        +                  "OCR_LOW_CONFIDENCE",
        +                  "MANUAL_REVIEW_REQUIRED",
        +                  "ACCEPTANCE_REQUIRED",
        +                  "INVALID_TOKEN"
        +                ],
        +                "type": "string"
        +              },
        +              "details": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "message": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "recoverable": {
        +                "type": "boolean"
        +              },
        +              "retry_after_seconds": {
        +                "anyOf": [
        +                  {
        +                    "minimum": 0,
        +                    "type": "integer"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              }
        +            },
        +            "required": [
        +              "code",
        +              "message",
        +              "recoverable"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      }
        +    },
        +    "required": [
        +      "_meta"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedcompute_soil_nailed_slope2 fields changed
      • changedInput schema / properties / output_mode / enum
        Previous value: -[
        -  "summary",
        -  "boq",
        -  "boq_with_backup",
        -  "full_json"
        -]New value: +[
        +  "summary",
        +  "material_schedule",
        +  "boq",
        +  "boq_with_backup",
        +  "full_json"
        +]
      • changedOutput schema / properties / result / anyOf
        Previous value: -[
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "_meta": {
        -        "additionalProperties": false,
        -        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        -        "properties": {
        -          "deliverables": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        -                "properties": {
        -                  "docx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "dxf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "expires_at": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  },
        -                  "pdf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "xlsx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "expires_at"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "document_id": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "issued_at": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "output_mode": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Surfaces what a trimmed ``output_mode`` withheld from ``data``.\n\nA trimmed mode (``summary`` / ``boq`` / ``boq_with_backup``) withholds\nalready-computed fields to keep the chat payload small. The withheld value\nreads to a client agent as \"capability missing\" (the box-culvert \"geometry\nbuilder isn't firing\" scare) rather than \"pared for size\": ``drawing`` and\n``audit_trail`` appear as ``null``, ``boq_rows`` as an empty list ``[]``\n(its type forbids ``null``) — both indistinguishable from a genuine absent\nresult. This names the withheld fields and the exact mode that brings each\nback, so the value is unambiguous. Absent on the default ``full_json`` mode\n— nothing is withheld, nothing to point at.",
        -                "properties": {
        -                  "mode": {
        -                    "enum": [
        -                      "summary",
        -                      "boq",
        -                      "boq_with_backup"
        -                    ],
        -                    "type": "string"
        -                  },
        -                  "omitted_fields": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "minItems": 1,
        -                    "type": "array"
        -                  },
        -                  "retrieve_with": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "mode",
        -                  "omitted_fields",
        -                  "retrieve_with"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "rate_limit_remaining": {
        -            "anyOf": [
        -              {
        -                "minimum": 0,
        -                "type": "integer"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "request_id": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "schema_version": {
        -            "const": "1.0.0",
        -            "default": "1.0.0",
        -            "type": "string"
        -          },
        -          "scope_boundary": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        -                "properties": {
        -                  "not_in_scope": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "produced": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "recommended_companions": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "type": "string"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "produced",
        -                  "not_in_scope"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tier": {
        -            "enum": [
        -              "free",
        -              "paid"
        -            ],
        -            "type": "string"
        -          },
        -          "tier_upgrade": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        -                "properties": {
        -                  "available_tiers": {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        -                      "properties": {
        -                        "billing": {
        -                          "enum": [
        -                            "one_off",
        -                            "monthly",
        -                            "annual"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "currency": {
        -                          "enum": [
        -                            "GBP",
        -                            "SGD",
        -                            "EUR",
        -                            "USD",
        -                            "CAD",
        -                            "AUD",
        -                            "NZD",
        -                            "MYR"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "display_name": {
        -                          "type": "string"
        -                        },
        -                        "price_local": {
        -                          "type": "number"
        -                        },
        -                        "tier_slug": {
        -                          "enum": [
        -                            "7_day_pass",
        -                            "solo",
        -                            "studio",
        -                            "practice"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "unlock_summary": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "tier_slug",
        -                        "display_name",
        -                        "price_local",
        -                        "currency",
        -                        "billing",
        -                        "unlock_summary"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "current_tier": {
        -                    "const": "free",
        -                    "default": "free",
        -                    "type": "string"
        -                  },
        -                  "pass_credit": {
        -                    "anyOf": [
        -                      {
        -                        "additionalProperties": false,
        -                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        -                        "properties": {
        -                          "amount_local": {
        -                            "type": "number"
        -                          },
        -                          "applies_to": {
        -                            "const": "solo_first_month",
        -                            "default": "solo_first_month",
        -                            "type": "string"
        -                          },
        -                          "currency": {
        -                            "type": "string"
        -                          },
        -                          "redeemable_until": {
        -                            "type": "string"
        -                          }
        -                        },
        -                        "required": [
        -                          "amount_local",
        -                          "currency",
        -                          "redeemable_until"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "pricing_url": {
        -                    "default": "https://civilquants.com/pricing",
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "available_tiers"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tos_url": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "upgrade_hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "warranty_disclaimer": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          }
        -        },
        -        "required": [
        -          "request_id",
        -          "issued_at",
        -          "tier"
        -        ],
        -        "type": "object"
        -      },
        -      "data": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Schema § 1.1 — the typed payload returned inside `MCPResponse[ComputeResult]`.\n\nFree-tier responses omit `drawings` (the downloadable CAD artefact\npointers — the paid differentiator); the bridge enforces this. The\n`audit_trail` and the inline `drawing` preview are present on BOTH tiers\n(V1 ALIGN / 60th-fire D + C). `text_summary` is bounded to 2000 chars —\nkeeps the LLM-facing summary token-cheap and forces longer narrative into\nBoQ row descriptions where it belongs. `warnings` is the non-fatal\ngeometry advisory list (both tiers).",
        -            "properties": {
        -              "assembly_slug": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "audit_trail": {
        -                "anyOf": [
        -                  {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.7 — paid-tier audit-trail entry.\n\nOne entry per BoQ row; `boq_row_index` ties to the row position in\n`ComputeResult.boq_rows`. `derivation` is the human-readable formula\nwalk-through; `formula` is the optional formal expression.",
        -                      "properties": {
        -                        "boq_row_index": {
        -                          "minimum": 0,
        -                          "type": "integer"
        -                        },
        -                        "derivation": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "formula": {
        -                          "anyOf": [
        -                            {
        -                              "type": "string"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ],
        -                          "default": null
        -                        },
        -                        "id": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "parameters_referenced": {
        -                          "items": {
        -                            "type": "string"
        -                          },
        -                          "type": "array"
        -                        }
        -                      },
        -                      "required": [
        -                        "id",
        -                        "boq_row_index",
        -                        "derivation"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "boq_rows": {
        -                "items": {
        -                  "additionalProperties": false,
        -                  "description": "Schema § 1.3 — a single bill row in the requested standard's format.\n\n`description` is the non-verbatim functional description per spec § 13.9 /\n§ 15 invariant — NEVER reproduces a standard's verbatim clause text.\n`rate` / `amount` ship null because rates are commodity data the customer\nowns; the engine's job is the measurement, not the pricing.",
        -                  "properties": {
        -                    "amount": {
        -                      "anyOf": [
        -                        {
        -                          "type": "number"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "attribution": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "audit_id": {
        -                      "anyOf": [
        -                        {
        -                          "type": "string"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "description": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "quantity": {
        -                      "minimum": 0,
        -                      "type": "number"
        -                    },
        -                    "rate": {
        -                      "anyOf": [
        -                        {
        -                          "type": "number"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "unit": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "work_section": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    }
        -                  },
        -                  "required": [
        -                    "work_section",
        -                    "description",
        -                    "quantity",
        -                    "unit",
        -                    "attribution"
        -                  ],
        -                  "type": "object"
        -                },
        -                "type": "array"
        -              },
        -              "drawing": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": false,
        -                    "description": "Schema § 1.6a — inline server-rendered SVG preview of the geometry.\n\nThe MCP mirror of the web ``/compute`` response's ``drawing`` field\n(``api.schemas.compute.DrawingRef``): the same on-screen dimensioned\ndrawing both tiers see in the workspace, surfaced on the MCP compute\nresponse so a chat client can render it inline (60th-fire item C). This\nis the on-screen preview — present on BOTH tiers per the free/paid\nboundary; the downloadable CAD artefacts (DXF / dimensioned PDF) remain\nthe paid differentiator via the export tools.\n\nDefined here rather than importing ``DrawingRef`` because the web\n``schemas`` package imports back into this module (``schemas.render``),\nso reusing it would create an import cycle — the MCP wire contract keeps\nits own copy, the same pattern as ``BoQRow`` / ``DrawingReference``.",
        -                    "properties": {
        -                      "entity_count": {
        -                        "minimum": 0,
        -                        "type": "integer"
        -                      },
        -                      "svg_b64": {
        -                        "minLength": 1,
        -                        "type": "string"
        -                      },
        -                      "unit_of_drawing": {
        -                        "const": "m",
        -                        "default": "m",
        -                        "type": "string"
        -                      },
        -                      "viewbox_height": {
        -                        "exclusiveMinimum": 0,
        -                        "type": "number"
        -                      },
        -                      "viewbox_width": {
        -                        "exclusiveMinimum": 0,
        -                        "type": "number"
        -                      },
        -                      "viewbox_x": {
        -                        "type": "number"
        -                      },
        -                      "viewbox_y": {
        -                        "type": "number"
        -                      }
        -                    },
        -                    "required": [
        -                      "svg_b64",
        -                      "viewbox_x",
        -                      "viewbox_y",
        -                      "viewbox_width",
        -                      "viewbox_height",
        -                      "entity_count"
        -                    ],
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "drawings": {
        -                "anyOf": [
        -                  {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.6 — paid-tier drawing artefact pointer.\n\n`url` is an R2-signed URL; expiry is carried in `_meta.deliverables.expires_at`\non the envelope (not duplicated here). `layers` is DXF-only; PDF/SVG\ncallers omit it.",
        -                      "properties": {
        -                        "drawing_type": {
        -                          "enum": [
        -                            "section",
        -                            "plan",
        -                            "elevation",
        -                            "isometric",
        -                            "detail"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "format": {
        -                          "enum": [
        -                            "DXF",
        -                            "PDF",
        -                            "SVG"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "layers": {
        -                          "anyOf": [
        -                            {
        -                              "items": {
        -                                "type": "string"
        -                              },
        -                              "type": "array"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ],
        -                          "default": null
        -                        },
        -                        "scale": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "sheet_size": {
        -                          "enum": [
        -                            "A1",
        -                            "A2",
        -                            "A3",
        -                            "A4"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "url": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "drawing_type",
        -                        "format",
        -                        "url",
        -                        "sheet_size",
        -                        "scale"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "parameters_used": {
        -                "additionalProperties": false,
        -                "description": "Schema § 1.2 — the parameter snapshot the engine actually used.\n\nSplits user-supplied values from engine defaults so customers can see\nwhich numbers came from them and which the engine filled in. Every\ndefaulted parameter SHOULD have a corresponding entry in `assumptions`\n— the bridge layer enforces this when wrapping engine output.",
        -                "properties": {
        -                  "assumptions": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "engine_defaults": {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  "user_supplied": {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  }
        -                },
        -                "type": "object"
        -              },
        -              "standard": {
        -                "enum": [
        -                  "CESMM4",
        -                  "NRM2",
        -                  "SMM7",
        -                  "MMHW"
        -                ],
        -                "type": "string"
        -              },
        -              "text_summary": {
        -                "maxLength": 2000,
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "totals_summary": {
        -                "additionalProperties": false,
        -                "description": "Schema § 1.4 — totals_summary as a typed wrapper around the free-form dict.\n\nWire shape is a flat object (`{\"concrete_m3\": {...}, \"rebar_t\": {...}}`).\nWe model it as `RootModel`-equivalent via `model_config(extra=\"allow\")`\n+ a single `__root__`-style `entries` dict. Pydantic v2 recommends\n`RootModel` for free-form roots; using a wrapper class keeps the import\nsurface uniform with the rest of this module.",
        -                "properties": {
        -                  "entries": {
        -                    "additionalProperties": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.4 — single material/work-class total entry.",
        -                      "properties": {
        -                        "quantity": {
        -                          "minimum": 0,
        -                          "type": "number"
        -                        },
        -                        "unit": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "quantity",
        -                        "unit"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "object"
        -                  }
        -                },
        -                "type": "object"
        -              },
        -              "warnings": {
        -                "items": {
        -                  "additionalProperties": false,
        -                  "description": "Schema § 1.8 — a non-fatal geometry advisory (56th-fire T2).\n\nThe wire projection of the engine's `core.GeometryWarning`. Advisory only:\na warning NEVER changes a measured quantity — it flags geometry that is\nvalid but likely a mistake (e.g. a stale dependent-height default). Present\non BOTH tiers — a correctness/safety signal, not a paid feature.",
        -                  "properties": {
        -                    "affected_params": {
        -                      "items": {
        -                        "type": "string"
        -                      },
        -                      "type": "array"
        -                    },
        -                    "code": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "detail": {
        -                      "additionalProperties": {
        -                        "type": "number"
        -                      },
        -                      "type": "object"
        -                    },
        -                    "message": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "severity": {
        -                      "enum": [
        -                        "info",
        -                        "advisory",
        -                        "caution"
        -                      ],
        -                      "type": "string"
        -                    }
        -                  },
        -                  "required": [
        -                    "code",
        -                    "severity",
        -                    "message"
        -                  ],
        -                  "type": "object"
        -                },
        -                "type": "array"
        -              }
        -            },
        -            "required": [
        -              "assembly_slug",
        -              "standard",
        -              "parameters_used",
        -              "boq_rows",
        -              "totals_summary",
        -              "text_summary"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      },
        -      "error": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        -            "properties": {
        -              "code": {
        -                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        -                "enum": [
        -                  "RATE_LIMIT_EXCEEDED",
        -                  "TIER_INSUFFICIENT",
        -                  "INVALID_INPUT",
        -                  "SCHEMA_VERSION_MISMATCH",
        -                  "SCHEMA_INVARIANT_VIOLATION",
        -                  "UPSTREAM_TIMEOUT",
        -                  "BACKEND_FAILURE",
        -                  "IP_BLOCKED",
        -                  "RESOURCE_NOT_FOUND",
        -                  "RENDER_FAILURE",
        -                  "OCR_LOW_CONFIDENCE",
        -                  "MANUAL_REVIEW_REQUIRED",
        -                  "ACCEPTANCE_REQUIRED",
        -                  "INVALID_TOKEN"
        -                ],
        -                "type": "string"
        -              },
        -              "details": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "message": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "recoverable": {
        -                "type": "boolean"
        -              },
        -              "retry_after_seconds": {
        -                "anyOf": [
        -                  {
        -                    "minimum": 0,
        -                    "type": "integer"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              }
        -            },
        -            "required": [
        -              "code",
        -              "message",
        -              "recoverable"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      }
        -    },
        -    "required": [
        -      "_meta"
        -    ],
        -    "type": "object"
        -  },
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "_meta": {
        -        "additionalProperties": false,
        -        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        -        "properties": {
        -          "deliverables": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        -                "properties": {
        -                  "docx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "dxf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "expires_at": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  },
        -                  "pdf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "xlsx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "expires_at"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "document_id": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "issued_at": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "output_mode": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Surfaces what a trimmed ``output_mode`` withheld from ``data``.\n\nA trimmed mode (``summary`` / ``boq`` / ``boq_with_backup``) withholds\nalready-computed fields to keep the chat payload small. The withheld value\nreads to a client agent as \"capability missing\" (the box-culvert \"geometry\nbuilder isn't firing\" scare) rather than \"pared for size\": ``drawing`` and\n``audit_trail`` appear as ``null``, ``boq_rows`` as an empty list ``[]``\n(its type forbids ``null``) — both indistinguishable from a genuine absent\nresult. This names the withheld fields and the exact mode that brings each\nback, so the value is unambiguous. Absent on the default ``full_json`` mode\n— nothing is withheld, nothing to point at.",
        -                "properties": {
        -                  "mode": {
        -                    "enum": [
        -                      "summary",
        -                      "boq",
        -                      "boq_with_backup"
        -                    ],
        -                    "type": "string"
        -                  },
        -                  "omitted_fields": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "minItems": 1,
        -                    "type": "array"
        -                  },
        -                  "retrieve_with": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "mode",
        -                  "omitted_fields",
        -                  "retrieve_with"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "rate_limit_remaining": {
        -            "anyOf": [
        -              {
        -                "minimum": 0,
        -                "type": "integer"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "request_id": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "schema_version": {
        -            "const": "1.0.0",
        -            "default": "1.0.0",
        -            "type": "string"
        -          },
        -          "scope_boundary": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        -                "properties": {
        -                  "not_in_scope": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "produced": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "recommended_companions": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "type": "string"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "produced",
        -                  "not_in_scope"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tier": {
        -            "enum": [
        -              "free",
        -              "paid"
        -            ],
        -            "type": "string"
        -          },
        -          "tier_upgrade": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        -                "properties": {
        -                  "available_tiers": {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        -                      "properties": {
        -                        "billing": {
        -                          "enum": [
        -                            "one_off",
        -                            "monthly",
        -                            "annual"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "currency": {
        -                          "enum": [
        -                            "GBP",
        -                            "SGD",
        -                            "EUR",
        -                            "USD",
        -                            "CAD",
        -                            "AUD",
        -                            "NZD",
        -                            "MYR"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "display_name": {
        -                          "type": "string"
        -                        },
        -                        "price_local": {
        -                          "type": "number"
        -                        },
        -                        "tier_slug": {
        -                          "enum": [
        -                            "7_day_pass",
        -                            "solo",
        -                            "studio",
        -                            "practice"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "unlock_summary": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "tier_slug",
        -                        "display_name",
        -                        "price_local",
        -                        "currency",
        -                        "billing",
        -                        "unlock_summary"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "current_tier": {
        -                    "const": "free",
        -                    "default": "free",
        -                    "type": "string"
        -                  },
        -                  "pass_credit": {
        -                    "anyOf": [
        -                      {
        -                        "additionalProperties": false,
        -                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        -                        "properties": {
        -                          "amount_local": {
        -                            "type": "number"
        -                          },
        -                          "applies_to": {
        -                            "const": "solo_first_month",
        -                            "default": "solo_first_month",
        -                            "type": "string"
        -                          },
        -                          "currency": {
        -                            "type": "string"
        -                          },
        -                          "redeemable_until": {
        -                            "type": "string"
        -                          }
        -                        },
        -                        "required": [
        -                          "amount_local",
        -                          "currency",
        -                          "redeemable_until"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "pricing_url": {
        -                    "default": "https://civilquants.com/pricing",
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "available_tiers"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tos_url": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "upgrade_hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "warranty_disclaimer": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          }
        -        },
        -        "required": [
        -          "request_id",
        -          "issued_at",
        -          "tier"
        -        ],
        -        "type": "object"
        -      },
        -      "data": {
        -        "default": null,
        -        "title": "Data"
        -      },
        -      "error": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        -            "properties": {
        -              "code": {
        -                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        -                "enum": [
        -                  "RATE_LIMIT_EXCEEDED",
        -                  "TIER_INSUFFICIENT",
        -                  "INVALID_INPUT",
        -                  "SCHEMA_VERSION_MISMATCH",
        -                  "SCHEMA_INVARIANT_VIOLATION",
        -                  "UPSTREAM_TIMEOUT",
        -                  "BACKEND_FAILURE",
        -                  "IP_BLOCKED",
        -                  "RESOURCE_NOT_FOUND",
        -                  "RENDER_FAILURE",
        -                  "OCR_LOW_CONFIDENCE",
        -                  "MANUAL_REVIEW_REQUIRED",
        -                  "ACCEPTANCE_REQUIRED",
        -                  "INVALID_TOKEN"
        -                ],
        -                "type": "string"
        -              },
        -              "details": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "message": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "recoverable": {
        -                "type": "boolean"
        -              },
        -              "retry_after_seconds": {
        -                "anyOf": [
        -                  {
        -                    "minimum": 0,
        -                    "type": "integer"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              }
        -            },
        -            "required": [
        -              "code",
        -              "message",
        -              "recoverable"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      }
        -    },
        -    "required": [
        -      "_meta"
        -    ],
        -    "type": "object"
        -  }
        -]New value: +[
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "_meta": {
        +        "additionalProperties": false,
        +        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        +        "properties": {
        +          "deliverables": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        +                "properties": {
        +                  "docx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "dxf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "expires_at": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  },
        +                  "pdf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "xlsx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "expires_at"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "document_id": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "issued_at": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "output_mode": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Surfaces what a trimmed ``output_mode`` withheld from ``data``.\n\nA trimmed mode (``summary`` / ``material_schedule`` / ``boq`` /\n``boq_with_backup``) withholds\nalready-computed fields to keep the chat payload small. The withheld value\nreads to a client agent as \"capability missing\" (the box-culvert \"geometry\nbuilder isn't firing\" scare) rather than \"pared for size\": ``drawing`` and\n``audit_trail`` appear as ``null``, ``boq_rows`` as an empty list ``[]``\n(its type forbids ``null``) — both indistinguishable from a genuine absent\nresult. This names the withheld fields and the exact mode that brings each\nback, so the value is unambiguous. Absent on the default ``full_json`` mode\n— nothing is withheld, nothing to point at.",
        +                "properties": {
        +                  "mode": {
        +                    "enum": [
        +                      "summary",
        +                      "material_schedule",
        +                      "boq",
        +                      "boq_with_backup"
        +                    ],
        +                    "type": "string"
        +                  },
        +                  "omitted_fields": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "minItems": 1,
        +                    "type": "array"
        +                  },
        +                  "retrieve_with": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "mode",
        +                  "omitted_fields",
        +                  "retrieve_with"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "rate_limit_remaining": {
        +            "anyOf": [
        +              {
        +                "minimum": 0,
        +                "type": "integer"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "request_id": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "schema_version": {
        +            "const": "1.0.0",
        +            "default": "1.0.0",
        +            "type": "string"
        +          },
        +          "scope_boundary": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        +                "properties": {
        +                  "not_in_scope": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "produced": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "recommended_companions": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "type": "string"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "produced",
        +                  "not_in_scope"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tier": {
        +            "enum": [
        +              "free",
        +              "paid"
        +            ],
        +            "type": "string"
        +          },
        +          "tier_upgrade": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        +                "properties": {
        +                  "available_tiers": {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        +                      "properties": {
        +                        "billing": {
        +                          "enum": [
        +                            "one_off",
        +                            "monthly",
        +                            "annual"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "currency": {
        +                          "enum": [
        +                            "GBP",
        +                            "SGD",
        +                            "EUR",
        +                            "USD",
        +                            "CAD",
        +                            "AUD",
        +                            "NZD",
        +                            "MYR"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "display_name": {
        +                          "type": "string"
        +                        },
        +                        "price_local": {
        +                          "type": "number"
        +                        },
        +                        "tier_slug": {
        +                          "enum": [
        +                            "7_day_pass",
        +                            "solo",
        +                            "studio",
        +                            "practice"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "unlock_summary": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "tier_slug",
        +                        "display_name",
        +                        "price_local",
        +                        "currency",
        +                        "billing",
        +                        "unlock_summary"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "current_tier": {
        +                    "const": "free",
        +                    "default": "free",
        +                    "type": "string"
        +                  },
        +                  "pass_credit": {
        +                    "anyOf": [
        +                      {
        +                        "additionalProperties": false,
        +                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        +                        "properties": {
        +                          "amount_local": {
        +                            "type": "number"
        +                          },
        +                          "applies_to": {
        +                            "const": "solo_first_month",
        +                            "default": "solo_first_month",
        +                            "type": "string"
        +                          },
        +                          "currency": {
        +                            "type": "string"
        +                          },
        +                          "redeemable_until": {
        +                            "type": "string"
        +                          }
        +                        },
        +                        "required": [
        +                          "amount_local",
        +                          "currency",
        +                          "redeemable_until"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "pricing_url": {
        +                    "default": "https://civilquants.com/pricing",
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "available_tiers"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tos_url": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "upgrade_hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "warranty_disclaimer": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          }
        +        },
        +        "required": [
        +          "request_id",
        +          "issued_at",
        +          "tier"
        +        ],
        +        "type": "object"
        +      },
        +      "data": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Schema § 1.1 — the typed payload returned inside `MCPResponse[ComputeResult]`.\n\nFree-tier responses omit `drawings` (the downloadable CAD artefact\npointers — the paid differentiator); the bridge enforces this. The\n`audit_trail` and the inline `drawing` preview are present on BOTH tiers\n(V1 ALIGN / 60th-fire D + C). `text_summary` is bounded to 2000 chars —\nkeeps the LLM-facing summary token-cheap and forces longer narrative into\nBoQ row descriptions where it belongs. `warnings` is the non-fatal\ngeometry advisory list (both tiers).",
        +            "properties": {
        +              "assembly_slug": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "audit_trail": {
        +                "anyOf": [
        +                  {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.7 — paid-tier audit-trail entry.\n\nOne entry per BoQ row; `boq_row_index` ties to the row position in\n`ComputeResult.boq_rows`. `derivation` is the human-readable formula\nwalk-through; `formula` is the optional formal expression.",
        +                      "properties": {
        +                        "boq_row_index": {
        +                          "minimum": 0,
        +                          "type": "integer"
        +                        },
        +                        "derivation": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "formula": {
        +                          "anyOf": [
        +                            {
        +                              "type": "string"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ],
        +                          "default": null
        +                        },
        +                        "id": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "parameters_referenced": {
        +                          "items": {
        +                            "type": "string"
        +                          },
        +                          "type": "array"
        +                        }
        +                      },
        +                      "required": [
        +                        "id",
        +                        "boq_row_index",
        +                        "derivation"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "boq_rows": {
        +                "items": {
        +                  "additionalProperties": false,
        +                  "description": "Schema § 1.3 — a single bill row in the requested standard's format.\n\n`description` is the non-verbatim functional description per spec § 13.9 /\n§ 15 invariant — NEVER reproduces a standard's verbatim clause text.\n`rate` / `amount` ship null because rates are commodity data the customer\nowns; the engine's job is the measurement, not the pricing.",
        +                  "properties": {
        +                    "amount": {
        +                      "anyOf": [
        +                        {
        +                          "type": "number"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "attribution": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "audit_id": {
        +                      "anyOf": [
        +                        {
        +                          "type": "string"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "description": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "quantity": {
        +                      "minimum": 0,
        +                      "type": "number"
        +                    },
        +                    "rate": {
        +                      "anyOf": [
        +                        {
        +                          "type": "number"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "unit": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "work_section": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    }
        +                  },
        +                  "required": [
        +                    "work_section",
        +                    "description",
        +                    "quantity",
        +                    "unit",
        +                    "attribution"
        +                  ],
        +                  "type": "object"
        +                },
        +                "type": "array"
        +              },
        +              "drawing": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": false,
        +                    "description": "Schema § 1.6a — inline server-rendered SVG preview of the geometry.\n\nThe MCP mirror of the web ``/compute`` response's ``drawing`` field\n(``api.schemas.compute.DrawingRef``): the same on-screen dimensioned\ndrawing both tiers see in the workspace, surfaced on the MCP compute\nresponse so a chat client can render it inline (60th-fire item C). This\nis the on-screen preview — present on BOTH tiers per the free/paid\nboundary; the downloadable CAD artefacts (DXF / dimensioned PDF) remain\nthe paid differentiator via the export tools.\n\nDefined here rather than importing ``DrawingRef`` because the web\n``schemas`` package imports back into this module (``schemas.render``),\nso reusing it would create an import cycle — the MCP wire contract keeps\nits own copy, the same pattern as ``BoQRow`` / ``DrawingReference``.",
        +                    "properties": {
        +                      "entity_count": {
        +                        "minimum": 0,
        +                        "type": "integer"
        +                      },
        +                      "svg_b64": {
        +                        "minLength": 1,
        +                        "type": "string"
        +                      },
        +                      "unit_of_drawing": {
        +                        "const": "m",
        +                        "default": "m",
        +                        "type": "string"
        +                      },
        +                      "viewbox_height": {
        +                        "exclusiveMinimum": 0,
        +                        "type": "number"
        +                      },
        +                      "viewbox_width": {
        +                        "exclusiveMinimum": 0,
        +                        "type": "number"
        +                      },
        +                      "viewbox_x": {
        +                        "type": "number"
        +                      },
        +                      "viewbox_y": {
        +                        "type": "number"
        +                      }
        +                    },
        +                    "required": [
        +                      "svg_b64",
        +                      "viewbox_x",
        +                      "viewbox_y",
        +                      "viewbox_width",
        +                      "viewbox_height",
        +                      "entity_count"
        +                    ],
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "drawings": {
        +                "anyOf": [
        +                  {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.6 — paid-tier drawing artefact pointer.\n\n`url` is an R2-signed URL; expiry is carried in `_meta.deliverables.expires_at`\non the envelope (not duplicated here). `layers` is DXF-only; PDF/SVG\ncallers omit it.",
        +                      "properties": {
        +                        "drawing_type": {
        +                          "enum": [
        +                            "section",
        +                            "plan",
        +                            "elevation",
        +                            "isometric",
        +                            "detail"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "format": {
        +                          "enum": [
        +                            "DXF",
        +                            "PDF",
        +                            "SVG"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "layers": {
        +                          "anyOf": [
        +                            {
        +                              "items": {
        +                                "type": "string"
        +                              },
        +                              "type": "array"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ],
        +                          "default": null
        +                        },
        +                        "scale": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "sheet_size": {
        +                          "enum": [
        +                            "A1",
        +                            "A2",
        +                            "A3",
        +                            "A4"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "url": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "drawing_type",
        +                        "format",
        +                        "url",
        +                        "sheet_size",
        +                        "scale"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "parameters_used": {
        +                "additionalProperties": false,
        +                "description": "Schema § 1.2 — the parameter snapshot the engine actually used.\n\nSplits user-supplied values from engine defaults so customers can see\nwhich numbers came from them and which the engine filled in. Every\ndefaulted parameter SHOULD have a corresponding entry in `assumptions`\n— the bridge layer enforces this when wrapping engine output.",
        +                "properties": {
        +                  "assumptions": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "engine_defaults": {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  "user_supplied": {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  }
        +                },
        +                "type": "object"
        +              },
        +              "standard": {
        +                "enum": [
        +                  "CESMM4",
        +                  "NRM2",
        +                  "SMM7",
        +                  "MMHW"
        +                ],
        +                "type": "string"
        +              },
        +              "text_summary": {
        +                "maxLength": 2000,
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "totals_summary": {
        +                "additionalProperties": false,
        +                "description": "Schema § 1.4 — totals_summary as a typed wrapper around the free-form dict.\n\nWire shape is a flat object (`{\"concrete_m3\": {...}, \"rebar_t\": {...}}`).\nWe model it as `RootModel`-equivalent via `model_config(extra=\"allow\")`\n+ a single `__root__`-style `entries` dict. Pydantic v2 recommends\n`RootModel` for free-form roots; using a wrapper class keeps the import\nsurface uniform with the rest of this module.",
        +                "properties": {
        +                  "entries": {
        +                    "additionalProperties": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.4 — single material/work-class total entry.",
        +                      "properties": {
        +                        "quantity": {
        +                          "minimum": 0,
        +                          "type": "number"
        +                        },
        +                        "unit": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "quantity",
        +                        "unit"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "object"
        +                  }
        +                },
        +                "type": "object"
        +              },
        +              "warnings": {
        +                "items": {
        +                  "additionalProperties": false,
        +                  "description": "Schema § 1.8 — a non-fatal geometry advisory (56th-fire T2).\n\nThe wire projection of the engine's `core.GeometryWarning`. Advisory only:\na warning NEVER changes a measured quantity — it flags geometry that is\nvalid but likely a mistake (e.g. a stale dependent-height default). Present\non BOTH tiers — a correctness/safety signal, not a paid feature.",
        +                  "properties": {
        +                    "affected_params": {
        +                      "items": {
        +                        "type": "string"
        +                      },
        +                      "type": "array"
        +                    },
        +                    "code": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "detail": {
        +                      "additionalProperties": {
        +                        "type": "number"
        +                      },
        +                      "type": "object"
        +                    },
        +                    "message": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "severity": {
        +                      "enum": [
        +                        "info",
        +                        "advisory",
        +                        "caution"
        +                      ],
        +                      "type": "string"
        +                    }
        +                  },
        +                  "required": [
        +                    "code",
        +                    "severity",
        +                    "message"
        +                  ],
        +                  "type": "object"
        +                },
        +                "type": "array"
        +              }
        +            },
        +            "required": [
        +              "assembly_slug",
        +              "standard",
        +              "parameters_used",
        +              "boq_rows",
        +              "totals_summary",
        +              "text_summary"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      },
        +      "error": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        +            "properties": {
        +              "code": {
        +                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        +                "enum": [
        +                  "RATE_LIMIT_EXCEEDED",
        +                  "TIER_INSUFFICIENT",
        +                  "INVALID_INPUT",
        +                  "SCHEMA_VERSION_MISMATCH",
        +                  "SCHEMA_INVARIANT_VIOLATION",
        +                  "UPSTREAM_TIMEOUT",
        +                  "BACKEND_FAILURE",
        +                  "IP_BLOCKED",
        +                  "RESOURCE_NOT_FOUND",
        +                  "RENDER_FAILURE",
        +                  "OCR_LOW_CONFIDENCE",
        +                  "MANUAL_REVIEW_REQUIRED",
        +                  "ACCEPTANCE_REQUIRED",
        +                  "INVALID_TOKEN"
        +                ],
        +                "type": "string"
        +              },
        +              "details": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "message": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "recoverable": {
        +                "type": "boolean"
        +              },
        +              "retry_after_seconds": {
        +                "anyOf": [
        +                  {
        +                    "minimum": 0,
        +                    "type": "integer"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              }
        +            },
        +            "required": [
        +              "code",
        +              "message",
        +              "recoverable"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      }
        +    },
        +    "required": [
        +      "_meta"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "_meta": {
        +        "additionalProperties": false,
        +        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        +        "properties": {
        +          "deliverables": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        +                "properties": {
        +                  "docx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "dxf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "expires_at": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  },
        +                  "pdf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "xlsx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "expires_at"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "document_id": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "issued_at": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "output_mode": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Surfaces what a trimmed ``output_mode`` withheld from ``data``.\n\nA trimmed mode (``summary`` / ``material_schedule`` / ``boq`` /\n``boq_with_backup``) withholds\nalready-computed fields to keep the chat payload small. The withheld value\nreads to a client agent as \"capability missing\" (the box-culvert \"geometry\nbuilder isn't firing\" scare) rather than \"pared for size\": ``drawing`` and\n``audit_trail`` appear as ``null``, ``boq_rows`` as an empty list ``[]``\n(its type forbids ``null``) — both indistinguishable from a genuine absent\nresult. This names the withheld fields and the exact mode that brings each\nback, so the value is unambiguous. Absent on the default ``full_json`` mode\n— nothing is withheld, nothing to point at.",
        +                "properties": {
        +                  "mode": {
        +                    "enum": [
        +                      "summary",
        +                      "material_schedule",
        +                      "boq",
        +                      "boq_with_backup"
        +                    ],
        +                    "type": "string"
        +                  },
        +                  "omitted_fields": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "minItems": 1,
        +                    "type": "array"
        +                  },
        +                  "retrieve_with": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "mode",
        +                  "omitted_fields",
        +                  "retrieve_with"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "rate_limit_remaining": {
        +            "anyOf": [
        +              {
        +                "minimum": 0,
        +                "type": "integer"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "request_id": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "schema_version": {
        +            "const": "1.0.0",
        +            "default": "1.0.0",
        +            "type": "string"
        +          },
        +          "scope_boundary": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        +                "properties": {
        +                  "not_in_scope": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "produced": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "recommended_companions": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "type": "string"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "produced",
        +                  "not_in_scope"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tier": {
        +            "enum": [
        +              "free",
        +              "paid"
        +            ],
        +            "type": "string"
        +          },
        +          "tier_upgrade": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        +                "properties": {
        +                  "available_tiers": {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        +                      "properties": {
        +                        "billing": {
        +                          "enum": [
        +                            "one_off",
        +                            "monthly",
        +                            "annual"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "currency": {
        +                          "enum": [
        +                            "GBP",
        +                            "SGD",
        +                            "EUR",
        +                            "USD",
        +                            "CAD",
        +                            "AUD",
        +                            "NZD",
        +                            "MYR"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "display_name": {
        +                          "type": "string"
        +                        },
        +                        "price_local": {
        +                          "type": "number"
        +                        },
        +                        "tier_slug": {
        +                          "enum": [
        +                            "7_day_pass",
        +                            "solo",
        +                            "studio",
        +                            "practice"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "unlock_summary": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "tier_slug",
        +                        "display_name",
        +                        "price_local",
        +                        "currency",
        +                        "billing",
        +                        "unlock_summary"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "current_tier": {
        +                    "const": "free",
        +                    "default": "free",
        +                    "type": "string"
        +                  },
        +                  "pass_credit": {
        +                    "anyOf": [
        +                      {
        +                        "additionalProperties": false,
        +                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        +                        "properties": {
        +                          "amount_local": {
        +                            "type": "number"
        +                          },
        +                          "applies_to": {
        +                            "const": "solo_first_month",
        +                            "default": "solo_first_month",
        +                            "type": "string"
        +                          },
        +                          "currency": {
        +                            "type": "string"
        +                          },
        +                          "redeemable_until": {
        +                            "type": "string"
        +                          }
        +                        },
        +                        "required": [
        +                          "amount_local",
        +                          "currency",
        +                          "redeemable_until"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "pricing_url": {
        +                    "default": "https://civilquants.com/pricing",
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "available_tiers"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tos_url": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "upgrade_hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "warranty_disclaimer": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          }
        +        },
        +        "required": [
        +          "request_id",
        +          "issued_at",
        +          "tier"
        +        ],
        +        "type": "object"
        +      },
        +      "data": {
        +        "default": null,
        +        "title": "Data"
        +      },
        +      "error": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        +            "properties": {
        +              "code": {
        +                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        +                "enum": [
        +                  "RATE_LIMIT_EXCEEDED",
        +                  "TIER_INSUFFICIENT",
        +                  "INVALID_INPUT",
        +                  "SCHEMA_VERSION_MISMATCH",
        +                  "SCHEMA_INVARIANT_VIOLATION",
        +                  "UPSTREAM_TIMEOUT",
        +                  "BACKEND_FAILURE",
        +                  "IP_BLOCKED",
        +                  "RESOURCE_NOT_FOUND",
        +                  "RENDER_FAILURE",
        +                  "OCR_LOW_CONFIDENCE",
        +                  "MANUAL_REVIEW_REQUIRED",
        +                  "ACCEPTANCE_REQUIRED",
        +                  "INVALID_TOKEN"
        +                ],
        +                "type": "string"
        +              },
        +              "details": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "message": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "recoverable": {
        +                "type": "boolean"
        +              },
        +              "retry_after_seconds": {
        +                "anyOf": [
        +                  {
        +                    "minimum": 0,
        +                    "type": "integer"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              }
        +            },
        +            "required": [
        +              "code",
        +              "message",
        +              "recoverable"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      }
        +    },
        +    "required": [
        +      "_meta"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedcompute_strip_foundation2 fields changed
      • changedInput schema / properties / output_mode / enum
        Previous value: -[
        -  "summary",
        -  "boq",
        -  "boq_with_backup",
        -  "full_json"
        -]New value: +[
        +  "summary",
        +  "material_schedule",
        +  "boq",
        +  "boq_with_backup",
        +  "full_json"
        +]
      • changedOutput schema / properties / result / anyOf
        Previous value: -[
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "_meta": {
        -        "additionalProperties": false,
        -        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        -        "properties": {
        -          "deliverables": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        -                "properties": {
        -                  "docx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "dxf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "expires_at": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  },
        -                  "pdf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "xlsx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "expires_at"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "document_id": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "issued_at": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "output_mode": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Surfaces what a trimmed ``output_mode`` withheld from ``data``.\n\nA trimmed mode (``summary`` / ``boq`` / ``boq_with_backup``) withholds\nalready-computed fields to keep the chat payload small. The withheld value\nreads to a client agent as \"capability missing\" (the box-culvert \"geometry\nbuilder isn't firing\" scare) rather than \"pared for size\": ``drawing`` and\n``audit_trail`` appear as ``null``, ``boq_rows`` as an empty list ``[]``\n(its type forbids ``null``) — both indistinguishable from a genuine absent\nresult. This names the withheld fields and the exact mode that brings each\nback, so the value is unambiguous. Absent on the default ``full_json`` mode\n— nothing is withheld, nothing to point at.",
        -                "properties": {
        -                  "mode": {
        -                    "enum": [
        -                      "summary",
        -                      "boq",
        -                      "boq_with_backup"
        -                    ],
        -                    "type": "string"
        -                  },
        -                  "omitted_fields": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "minItems": 1,
        -                    "type": "array"
        -                  },
        -                  "retrieve_with": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "mode",
        -                  "omitted_fields",
        -                  "retrieve_with"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "rate_limit_remaining": {
        -            "anyOf": [
        -              {
        -                "minimum": 0,
        -                "type": "integer"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "request_id": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "schema_version": {
        -            "const": "1.0.0",
        -            "default": "1.0.0",
        -            "type": "string"
        -          },
        -          "scope_boundary": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        -                "properties": {
        -                  "not_in_scope": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "produced": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "recommended_companions": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "type": "string"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "produced",
        -                  "not_in_scope"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tier": {
        -            "enum": [
        -              "free",
        -              "paid"
        -            ],
        -            "type": "string"
        -          },
        -          "tier_upgrade": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        -                "properties": {
        -                  "available_tiers": {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        -                      "properties": {
        -                        "billing": {
        -                          "enum": [
        -                            "one_off",
        -                            "monthly",
        -                            "annual"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "currency": {
        -                          "enum": [
        -                            "GBP",
        -                            "SGD",
        -                            "EUR",
        -                            "USD",
        -                            "CAD",
        -                            "AUD",
        -                            "NZD",
        -                            "MYR"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "display_name": {
        -                          "type": "string"
        -                        },
        -                        "price_local": {
        -                          "type": "number"
        -                        },
        -                        "tier_slug": {
        -                          "enum": [
        -                            "7_day_pass",
        -                            "solo",
        -                            "studio",
        -                            "practice"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "unlock_summary": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "tier_slug",
        -                        "display_name",
        -                        "price_local",
        -                        "currency",
        -                        "billing",
        -                        "unlock_summary"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "current_tier": {
        -                    "const": "free",
        -                    "default": "free",
        -                    "type": "string"
        -                  },
        -                  "pass_credit": {
        -                    "anyOf": [
        -                      {
        -                        "additionalProperties": false,
        -                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        -                        "properties": {
        -                          "amount_local": {
        -                            "type": "number"
        -                          },
        -                          "applies_to": {
        -                            "const": "solo_first_month",
        -                            "default": "solo_first_month",
        -                            "type": "string"
        -                          },
        -                          "currency": {
        -                            "type": "string"
        -                          },
        -                          "redeemable_until": {
        -                            "type": "string"
        -                          }
        -                        },
        -                        "required": [
        -                          "amount_local",
        -                          "currency",
        -                          "redeemable_until"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "pricing_url": {
        -                    "default": "https://civilquants.com/pricing",
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "available_tiers"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tos_url": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "upgrade_hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "warranty_disclaimer": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          }
        -        },
        -        "required": [
        -          "request_id",
        -          "issued_at",
        -          "tier"
        -        ],
        -        "type": "object"
        -      },
        -      "data": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Schema § 1.1 — the typed payload returned inside `MCPResponse[ComputeResult]`.\n\nFree-tier responses omit `drawings` (the downloadable CAD artefact\npointers — the paid differentiator); the bridge enforces this. The\n`audit_trail` and the inline `drawing` preview are present on BOTH tiers\n(V1 ALIGN / 60th-fire D + C). `text_summary` is bounded to 2000 chars —\nkeeps the LLM-facing summary token-cheap and forces longer narrative into\nBoQ row descriptions where it belongs. `warnings` is the non-fatal\ngeometry advisory list (both tiers).",
        -            "properties": {
        -              "assembly_slug": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "audit_trail": {
        -                "anyOf": [
        -                  {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.7 — paid-tier audit-trail entry.\n\nOne entry per BoQ row; `boq_row_index` ties to the row position in\n`ComputeResult.boq_rows`. `derivation` is the human-readable formula\nwalk-through; `formula` is the optional formal expression.",
        -                      "properties": {
        -                        "boq_row_index": {
        -                          "minimum": 0,
        -                          "type": "integer"
        -                        },
        -                        "derivation": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "formula": {
        -                          "anyOf": [
        -                            {
        -                              "type": "string"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ],
        -                          "default": null
        -                        },
        -                        "id": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "parameters_referenced": {
        -                          "items": {
        -                            "type": "string"
        -                          },
        -                          "type": "array"
        -                        }
        -                      },
        -                      "required": [
        -                        "id",
        -                        "boq_row_index",
        -                        "derivation"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "boq_rows": {
        -                "items": {
        -                  "additionalProperties": false,
        -                  "description": "Schema § 1.3 — a single bill row in the requested standard's format.\n\n`description` is the non-verbatim functional description per spec § 13.9 /\n§ 15 invariant — NEVER reproduces a standard's verbatim clause text.\n`rate` / `amount` ship null because rates are commodity data the customer\nowns; the engine's job is the measurement, not the pricing.",
        -                  "properties": {
        -                    "amount": {
        -                      "anyOf": [
        -                        {
        -                          "type": "number"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "attribution": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "audit_id": {
        -                      "anyOf": [
        -                        {
        -                          "type": "string"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "description": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "quantity": {
        -                      "minimum": 0,
        -                      "type": "number"
        -                    },
        -                    "rate": {
        -                      "anyOf": [
        -                        {
        -                          "type": "number"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "unit": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "work_section": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    }
        -                  },
        -                  "required": [
        -                    "work_section",
        -                    "description",
        -                    "quantity",
        -                    "unit",
        -                    "attribution"
        -                  ],
        -                  "type": "object"
        -                },
        -                "type": "array"
        -              },
        -              "drawing": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": false,
        -                    "description": "Schema § 1.6a — inline server-rendered SVG preview of the geometry.\n\nThe MCP mirror of the web ``/compute`` response's ``drawing`` field\n(``api.schemas.compute.DrawingRef``): the same on-screen dimensioned\ndrawing both tiers see in the workspace, surfaced on the MCP compute\nresponse so a chat client can render it inline (60th-fire item C). This\nis the on-screen preview — present on BOTH tiers per the free/paid\nboundary; the downloadable CAD artefacts (DXF / dimensioned PDF) remain\nthe paid differentiator via the export tools.\n\nDefined here rather than importing ``DrawingRef`` because the web\n``schemas`` package imports back into this module (``schemas.render``),\nso reusing it would create an import cycle — the MCP wire contract keeps\nits own copy, the same pattern as ``BoQRow`` / ``DrawingReference``.",
        -                    "properties": {
        -                      "entity_count": {
        -                        "minimum": 0,
        -                        "type": "integer"
        -                      },
        -                      "svg_b64": {
        -                        "minLength": 1,
        -                        "type": "string"
        -                      },
        -                      "unit_of_drawing": {
        -                        "const": "m",
        -                        "default": "m",
        -                        "type": "string"
        -                      },
        -                      "viewbox_height": {
        -                        "exclusiveMinimum": 0,
        -                        "type": "number"
        -                      },
        -                      "viewbox_width": {
        -                        "exclusiveMinimum": 0,
        -                        "type": "number"
        -                      },
        -                      "viewbox_x": {
        -                        "type": "number"
        -                      },
        -                      "viewbox_y": {
        -                        "type": "number"
        -                      }
        -                    },
        -                    "required": [
        -                      "svg_b64",
        -                      "viewbox_x",
        -                      "viewbox_y",
        -                      "viewbox_width",
        -                      "viewbox_height",
        -                      "entity_count"
        -                    ],
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "drawings": {
        -                "anyOf": [
        -                  {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.6 — paid-tier drawing artefact pointer.\n\n`url` is an R2-signed URL; expiry is carried in `_meta.deliverables.expires_at`\non the envelope (not duplicated here). `layers` is DXF-only; PDF/SVG\ncallers omit it.",
        -                      "properties": {
        -                        "drawing_type": {
        -                          "enum": [
        -                            "section",
        -                            "plan",
        -                            "elevation",
        -                            "isometric",
        -                            "detail"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "format": {
        -                          "enum": [
        -                            "DXF",
        -                            "PDF",
        -                            "SVG"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "layers": {
        -                          "anyOf": [
        -                            {
        -                              "items": {
        -                                "type": "string"
        -                              },
        -                              "type": "array"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ],
        -                          "default": null
        -                        },
        -                        "scale": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "sheet_size": {
        -                          "enum": [
        -                            "A1",
        -                            "A2",
        -                            "A3",
        -                            "A4"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "url": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "drawing_type",
        -                        "format",
        -                        "url",
        -                        "sheet_size",
        -                        "scale"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "parameters_used": {
        -                "additionalProperties": false,
        -                "description": "Schema § 1.2 — the parameter snapshot the engine actually used.\n\nSplits user-supplied values from engine defaults so customers can see\nwhich numbers came from them and which the engine filled in. Every\ndefaulted parameter SHOULD have a corresponding entry in `assumptions`\n— the bridge layer enforces this when wrapping engine output.",
        -                "properties": {
        -                  "assumptions": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "engine_defaults": {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  "user_supplied": {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  }
        -                },
        -                "type": "object"
        -              },
        -              "standard": {
        -                "enum": [
        -                  "CESMM4",
        -                  "NRM2",
        -                  "SMM7",
        -                  "MMHW"
        -                ],
        -                "type": "string"
        -              },
        -              "text_summary": {
        -                "maxLength": 2000,
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "totals_summary": {
        -                "additionalProperties": false,
        -                "description": "Schema § 1.4 — totals_summary as a typed wrapper around the free-form dict.\n\nWire shape is a flat object (`{\"concrete_m3\": {...}, \"rebar_t\": {...}}`).\nWe model it as `RootModel`-equivalent via `model_config(extra=\"allow\")`\n+ a single `__root__`-style `entries` dict. Pydantic v2 recommends\n`RootModel` for free-form roots; using a wrapper class keeps the import\nsurface uniform with the rest of this module.",
        -                "properties": {
        -                  "entries": {
        -                    "additionalProperties": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.4 — single material/work-class total entry.",
        -                      "properties": {
        -                        "quantity": {
        -                          "minimum": 0,
        -                          "type": "number"
        -                        },
        -                        "unit": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "quantity",
        -                        "unit"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "object"
        -                  }
        -                },
        -                "type": "object"
        -              },
        -              "warnings": {
        -                "items": {
        -                  "additionalProperties": false,
        -                  "description": "Schema § 1.8 — a non-fatal geometry advisory (56th-fire T2).\n\nThe wire projection of the engine's `core.GeometryWarning`. Advisory only:\na warning NEVER changes a measured quantity — it flags geometry that is\nvalid but likely a mistake (e.g. a stale dependent-height default). Present\non BOTH tiers — a correctness/safety signal, not a paid feature.",
        -                  "properties": {
        -                    "affected_params": {
        -                      "items": {
        -                        "type": "string"
        -                      },
        -                      "type": "array"
        -                    },
        -                    "code": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "detail": {
        -                      "additionalProperties": {
        -                        "type": "number"
        -                      },
        -                      "type": "object"
        -                    },
        -                    "message": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "severity": {
        -                      "enum": [
        -                        "info",
        -                        "advisory",
        -                        "caution"
        -                      ],
        -                      "type": "string"
        -                    }
        -                  },
        -                  "required": [
        -                    "code",
        -                    "severity",
        -                    "message"
        -                  ],
        -                  "type": "object"
        -                },
        -                "type": "array"
        -              }
        -            },
        -            "required": [
        -              "assembly_slug",
        -              "standard",
        -              "parameters_used",
        -              "boq_rows",
        -              "totals_summary",
        -              "text_summary"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      },
        -      "error": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        -            "properties": {
        -              "code": {
        -                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        -                "enum": [
        -                  "RATE_LIMIT_EXCEEDED",
        -                  "TIER_INSUFFICIENT",
        -                  "INVALID_INPUT",
        -                  "SCHEMA_VERSION_MISMATCH",
        -                  "SCHEMA_INVARIANT_VIOLATION",
        -                  "UPSTREAM_TIMEOUT",
        -                  "BACKEND_FAILURE",
        -                  "IP_BLOCKED",
        -                  "RESOURCE_NOT_FOUND",
        -                  "RENDER_FAILURE",
        -                  "OCR_LOW_CONFIDENCE",
        -                  "MANUAL_REVIEW_REQUIRED",
        -                  "ACCEPTANCE_REQUIRED",
        -                  "INVALID_TOKEN"
        -                ],
        -                "type": "string"
        -              },
        -              "details": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "message": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "recoverable": {
        -                "type": "boolean"
        -              },
        -              "retry_after_seconds": {
        -                "anyOf": [
        -                  {
        -                    "minimum": 0,
        -                    "type": "integer"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              }
        -            },
        -            "required": [
        -              "code",
        -              "message",
        -              "recoverable"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      }
        -    },
        -    "required": [
        -      "_meta"
        -    ],
        -    "type": "object"
        -  },
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "_meta": {
        -        "additionalProperties": false,
        -        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        -        "properties": {
        -          "deliverables": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        -                "properties": {
        -                  "docx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "dxf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "expires_at": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  },
        -                  "pdf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "xlsx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "expires_at"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "document_id": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "issued_at": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "output_mode": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Surfaces what a trimmed ``output_mode`` withheld from ``data``.\n\nA trimmed mode (``summary`` / ``boq`` / ``boq_with_backup``) withholds\nalready-computed fields to keep the chat payload small. The withheld value\nreads to a client agent as \"capability missing\" (the box-culvert \"geometry\nbuilder isn't firing\" scare) rather than \"pared for size\": ``drawing`` and\n``audit_trail`` appear as ``null``, ``boq_rows`` as an empty list ``[]``\n(its type forbids ``null``) — both indistinguishable from a genuine absent\nresult. This names the withheld fields and the exact mode that brings each\nback, so the value is unambiguous. Absent on the default ``full_json`` mode\n— nothing is withheld, nothing to point at.",
        -                "properties": {
        -                  "mode": {
        -                    "enum": [
        -                      "summary",
        -                      "boq",
        -                      "boq_with_backup"
        -                    ],
        -                    "type": "string"
        -                  },
        -                  "omitted_fields": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "minItems": 1,
        -                    "type": "array"
        -                  },
        -                  "retrieve_with": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "mode",
        -                  "omitted_fields",
        -                  "retrieve_with"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "rate_limit_remaining": {
        -            "anyOf": [
        -              {
        -                "minimum": 0,
        -                "type": "integer"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "request_id": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "schema_version": {
        -            "const": "1.0.0",
        -            "default": "1.0.0",
        -            "type": "string"
        -          },
        -          "scope_boundary": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        -                "properties": {
        -                  "not_in_scope": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "produced": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "recommended_companions": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "type": "string"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "produced",
        -                  "not_in_scope"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tier": {
        -            "enum": [
        -              "free",
        -              "paid"
        -            ],
        -            "type": "string"
        -          },
        -          "tier_upgrade": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        -                "properties": {
        -                  "available_tiers": {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        -                      "properties": {
        -                        "billing": {
        -                          "enum": [
        -                            "one_off",
        -                            "monthly",
        -                            "annual"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "currency": {
        -                          "enum": [
        -                            "GBP",
        -                            "SGD",
        -                            "EUR",
        -                            "USD",
        -                            "CAD",
        -                            "AUD",
        -                            "NZD",
        -                            "MYR"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "display_name": {
        -                          "type": "string"
        -                        },
        -                        "price_local": {
        -                          "type": "number"
        -                        },
        -                        "tier_slug": {
        -                          "enum": [
        -                            "7_day_pass",
        -                            "solo",
        -                            "studio",
        -                            "practice"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "unlock_summary": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "tier_slug",
        -                        "display_name",
        -                        "price_local",
        -                        "currency",
        -                        "billing",
        -                        "unlock_summary"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "current_tier": {
        -                    "const": "free",
        -                    "default": "free",
        -                    "type": "string"
        -                  },
        -                  "pass_credit": {
        -                    "anyOf": [
        -                      {
        -                        "additionalProperties": false,
        -                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        -                        "properties": {
        -                          "amount_local": {
        -                            "type": "number"
        -                          },
        -                          "applies_to": {
        -                            "const": "solo_first_month",
        -                            "default": "solo_first_month",
        -                            "type": "string"
        -                          },
        -                          "currency": {
        -                            "type": "string"
        -                          },
        -                          "redeemable_until": {
        -                            "type": "string"
        -                          }
        -                        },
        -                        "required": [
        -                          "amount_local",
        -                          "currency",
        -                          "redeemable_until"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "pricing_url": {
        -                    "default": "https://civilquants.com/pricing",
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "available_tiers"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tos_url": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "upgrade_hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "warranty_disclaimer": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          }
        -        },
        -        "required": [
        -          "request_id",
        -          "issued_at",
        -          "tier"
        -        ],
        -        "type": "object"
        -      },
        -      "data": {
        -        "default": null,
        -        "title": "Data"
        -      },
        -      "error": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        -            "properties": {
        -              "code": {
        -                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        -                "enum": [
        -                  "RATE_LIMIT_EXCEEDED",
        -                  "TIER_INSUFFICIENT",
        -                  "INVALID_INPUT",
        -                  "SCHEMA_VERSION_MISMATCH",
        -                  "SCHEMA_INVARIANT_VIOLATION",
        -                  "UPSTREAM_TIMEOUT",
        -                  "BACKEND_FAILURE",
        -                  "IP_BLOCKED",
        -                  "RESOURCE_NOT_FOUND",
        -                  "RENDER_FAILURE",
        -                  "OCR_LOW_CONFIDENCE",
        -                  "MANUAL_REVIEW_REQUIRED",
        -                  "ACCEPTANCE_REQUIRED",
        -                  "INVALID_TOKEN"
        -                ],
        -                "type": "string"
        -              },
        -              "details": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "message": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "recoverable": {
        -                "type": "boolean"
        -              },
        -              "retry_after_seconds": {
        -                "anyOf": [
        -                  {
        -                    "minimum": 0,
        -                    "type": "integer"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              }
        -            },
        -            "required": [
        -              "code",
        -              "message",
        -              "recoverable"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      }
        -    },
        -    "required": [
        -      "_meta"
        -    ],
        -    "type": "object"
        -  }
        -]New value: +[
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "_meta": {
        +        "additionalProperties": false,
        +        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        +        "properties": {
        +          "deliverables": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        +                "properties": {
        +                  "docx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "dxf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "expires_at": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  },
        +                  "pdf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "xlsx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "expires_at"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "document_id": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "issued_at": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "output_mode": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Surfaces what a trimmed ``output_mode`` withheld from ``data``.\n\nA trimmed mode (``summary`` / ``material_schedule`` / ``boq`` /\n``boq_with_backup``) withholds\nalready-computed fields to keep the chat payload small. The withheld value\nreads to a client agent as \"capability missing\" (the box-culvert \"geometry\nbuilder isn't firing\" scare) rather than \"pared for size\": ``drawing`` and\n``audit_trail`` appear as ``null``, ``boq_rows`` as an empty list ``[]``\n(its type forbids ``null``) — both indistinguishable from a genuine absent\nresult. This names the withheld fields and the exact mode that brings each\nback, so the value is unambiguous. Absent on the default ``full_json`` mode\n— nothing is withheld, nothing to point at.",
        +                "properties": {
        +                  "mode": {
        +                    "enum": [
        +                      "summary",
        +                      "material_schedule",
        +                      "boq",
        +                      "boq_with_backup"
        +                    ],
        +                    "type": "string"
        +                  },
        +                  "omitted_fields": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "minItems": 1,
        +                    "type": "array"
        +                  },
        +                  "retrieve_with": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "mode",
        +                  "omitted_fields",
        +                  "retrieve_with"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "rate_limit_remaining": {
        +            "anyOf": [
        +              {
        +                "minimum": 0,
        +                "type": "integer"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "request_id": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "schema_version": {
        +            "const": "1.0.0",
        +            "default": "1.0.0",
        +            "type": "string"
        +          },
        +          "scope_boundary": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        +                "properties": {
        +                  "not_in_scope": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "produced": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "recommended_companions": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "type": "string"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "produced",
        +                  "not_in_scope"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tier": {
        +            "enum": [
        +              "free",
        +              "paid"
        +            ],
        +            "type": "string"
        +          },
        +          "tier_upgrade": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        +                "properties": {
        +                  "available_tiers": {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        +                      "properties": {
        +                        "billing": {
        +                          "enum": [
        +                            "one_off",
        +                            "monthly",
        +                            "annual"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "currency": {
        +                          "enum": [
        +                            "GBP",
        +                            "SGD",
        +                            "EUR",
        +                            "USD",
        +                            "CAD",
        +                            "AUD",
        +                            "NZD",
        +                            "MYR"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "display_name": {
        +                          "type": "string"
        +                        },
        +                        "price_local": {
        +                          "type": "number"
        +                        },
        +                        "tier_slug": {
        +                          "enum": [
        +                            "7_day_pass",
        +                            "solo",
        +                            "studio",
        +                            "practice"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "unlock_summary": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "tier_slug",
        +                        "display_name",
        +                        "price_local",
        +                        "currency",
        +                        "billing",
        +                        "unlock_summary"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "current_tier": {
        +                    "const": "free",
        +                    "default": "free",
        +                    "type": "string"
        +                  },
        +                  "pass_credit": {
        +                    "anyOf": [
        +                      {
        +                        "additionalProperties": false,
        +                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        +                        "properties": {
        +                          "amount_local": {
        +                            "type": "number"
        +                          },
        +                          "applies_to": {
        +                            "const": "solo_first_month",
        +                            "default": "solo_first_month",
        +                            "type": "string"
        +                          },
        +                          "currency": {
        +                            "type": "string"
        +                          },
        +                          "redeemable_until": {
        +                            "type": "string"
        +                          }
        +                        },
        +                        "required": [
        +                          "amount_local",
        +                          "currency",
        +                          "redeemable_until"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "pricing_url": {
        +                    "default": "https://civilquants.com/pricing",
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "available_tiers"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tos_url": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "upgrade_hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "warranty_disclaimer": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          }
        +        },
        +        "required": [
        +          "request_id",
        +          "issued_at",
        +          "tier"
        +        ],
        +        "type": "object"
        +      },
        +      "data": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Schema § 1.1 — the typed payload returned inside `MCPResponse[ComputeResult]`.\n\nFree-tier responses omit `drawings` (the downloadable CAD artefact\npointers — the paid differentiator); the bridge enforces this. The\n`audit_trail` and the inline `drawing` preview are present on BOTH tiers\n(V1 ALIGN / 60th-fire D + C). `text_summary` is bounded to 2000 chars —\nkeeps the LLM-facing summary token-cheap and forces longer narrative into\nBoQ row descriptions where it belongs. `warnings` is the non-fatal\ngeometry advisory list (both tiers).",
        +            "properties": {
        +              "assembly_slug": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "audit_trail": {
        +                "anyOf": [
        +                  {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.7 — paid-tier audit-trail entry.\n\nOne entry per BoQ row; `boq_row_index` ties to the row position in\n`ComputeResult.boq_rows`. `derivation` is the human-readable formula\nwalk-through; `formula` is the optional formal expression.",
        +                      "properties": {
        +                        "boq_row_index": {
        +                          "minimum": 0,
        +                          "type": "integer"
        +                        },
        +                        "derivation": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "formula": {
        +                          "anyOf": [
        +                            {
        +                              "type": "string"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ],
        +                          "default": null
        +                        },
        +                        "id": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "parameters_referenced": {
        +                          "items": {
        +                            "type": "string"
        +                          },
        +                          "type": "array"
        +                        }
        +                      },
        +                      "required": [
        +                        "id",
        +                        "boq_row_index",
        +                        "derivation"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "boq_rows": {
        +                "items": {
        +                  "additionalProperties": false,
        +                  "description": "Schema § 1.3 — a single bill row in the requested standard's format.\n\n`description` is the non-verbatim functional description per spec § 13.9 /\n§ 15 invariant — NEVER reproduces a standard's verbatim clause text.\n`rate` / `amount` ship null because rates are commodity data the customer\nowns; the engine's job is the measurement, not the pricing.",
        +                  "properties": {
        +                    "amount": {
        +                      "anyOf": [
        +                        {
        +                          "type": "number"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "attribution": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "audit_id": {
        +                      "anyOf": [
        +                        {
        +                          "type": "string"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "description": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "quantity": {
        +                      "minimum": 0,
        +                      "type": "number"
        +                    },
        +                    "rate": {
        +                      "anyOf": [
        +                        {
        +                          "type": "number"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "unit": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "work_section": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    }
        +                  },
        +                  "required": [
        +                    "work_section",
        +                    "description",
        +                    "quantity",
        +                    "unit",
        +                    "attribution"
        +                  ],
        +                  "type": "object"
        +                },
        +                "type": "array"
        +              },
        +              "drawing": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": false,
        +                    "description": "Schema § 1.6a — inline server-rendered SVG preview of the geometry.\n\nThe MCP mirror of the web ``/compute`` response's ``drawing`` field\n(``api.schemas.compute.DrawingRef``): the same on-screen dimensioned\ndrawing both tiers see in the workspace, surfaced on the MCP compute\nresponse so a chat client can render it inline (60th-fire item C). This\nis the on-screen preview — present on BOTH tiers per the free/paid\nboundary; the downloadable CAD artefacts (DXF / dimensioned PDF) remain\nthe paid differentiator via the export tools.\n\nDefined here rather than importing ``DrawingRef`` because the web\n``schemas`` package imports back into this module (``schemas.render``),\nso reusing it would create an import cycle — the MCP wire contract keeps\nits own copy, the same pattern as ``BoQRow`` / ``DrawingReference``.",
        +                    "properties": {
        +                      "entity_count": {
        +                        "minimum": 0,
        +                        "type": "integer"
        +                      },
        +                      "svg_b64": {
        +                        "minLength": 1,
        +                        "type": "string"
        +                      },
        +                      "unit_of_drawing": {
        +                        "const": "m",
        +                        "default": "m",
        +                        "type": "string"
        +                      },
        +                      "viewbox_height": {
        +                        "exclusiveMinimum": 0,
        +                        "type": "number"
        +                      },
        +                      "viewbox_width": {
        +                        "exclusiveMinimum": 0,
        +                        "type": "number"
        +                      },
        +                      "viewbox_x": {
        +                        "type": "number"
        +                      },
        +                      "viewbox_y": {
        +                        "type": "number"
        +                      }
        +                    },
        +                    "required": [
        +                      "svg_b64",
        +                      "viewbox_x",
        +                      "viewbox_y",
        +                      "viewbox_width",
        +                      "viewbox_height",
        +                      "entity_count"
        +                    ],
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "drawings": {
        +                "anyOf": [
        +                  {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.6 — paid-tier drawing artefact pointer.\n\n`url` is an R2-signed URL; expiry is carried in `_meta.deliverables.expires_at`\non the envelope (not duplicated here). `layers` is DXF-only; PDF/SVG\ncallers omit it.",
        +                      "properties": {
        +                        "drawing_type": {
        +                          "enum": [
        +                            "section",
        +                            "plan",
        +                            "elevation",
        +                            "isometric",
        +                            "detail"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "format": {
        +                          "enum": [
        +                            "DXF",
        +                            "PDF",
        +                            "SVG"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "layers": {
        +                          "anyOf": [
        +                            {
        +                              "items": {
        +                                "type": "string"
        +                              },
        +                              "type": "array"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ],
        +                          "default": null
        +                        },
        +                        "scale": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "sheet_size": {
        +                          "enum": [
        +                            "A1",
        +                            "A2",
        +                            "A3",
        +                            "A4"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "url": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "drawing_type",
        +                        "format",
        +                        "url",
        +                        "sheet_size",
        +                        "scale"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "parameters_used": {
        +                "additionalProperties": false,
        +                "description": "Schema § 1.2 — the parameter snapshot the engine actually used.\n\nSplits user-supplied values from engine defaults so customers can see\nwhich numbers came from them and which the engine filled in. Every\ndefaulted parameter SHOULD have a corresponding entry in `assumptions`\n— the bridge layer enforces this when wrapping engine output.",
        +                "properties": {
        +                  "assumptions": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "engine_defaults": {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  "user_supplied": {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  }
        +                },
        +                "type": "object"
        +              },
        +              "standard": {
        +                "enum": [
        +                  "CESMM4",
        +                  "NRM2",
        +                  "SMM7",
        +                  "MMHW"
        +                ],
        +                "type": "string"
        +              },
        +              "text_summary": {
        +                "maxLength": 2000,
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "totals_summary": {
        +                "additionalProperties": false,
        +                "description": "Schema § 1.4 — totals_summary as a typed wrapper around the free-form dict.\n\nWire shape is a flat object (`{\"concrete_m3\": {...}, \"rebar_t\": {...}}`).\nWe model it as `RootModel`-equivalent via `model_config(extra=\"allow\")`\n+ a single `__root__`-style `entries` dict. Pydantic v2 recommends\n`RootModel` for free-form roots; using a wrapper class keeps the import\nsurface uniform with the rest of this module.",
        +                "properties": {
        +                  "entries": {
        +                    "additionalProperties": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.4 — single material/work-class total entry.",
        +                      "properties": {
        +                        "quantity": {
        +                          "minimum": 0,
        +                          "type": "number"
        +                        },
        +                        "unit": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "quantity",
        +                        "unit"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "object"
        +                  }
        +                },
        +                "type": "object"
        +              },
        +              "warnings": {
        +                "items": {
        +                  "additionalProperties": false,
        +                  "description": "Schema § 1.8 — a non-fatal geometry advisory (56th-fire T2).\n\nThe wire projection of the engine's `core.GeometryWarning`. Advisory only:\na warning NEVER changes a measured quantity — it flags geometry that is\nvalid but likely a mistake (e.g. a stale dependent-height default). Present\non BOTH tiers — a correctness/safety signal, not a paid feature.",
        +                  "properties": {
        +                    "affected_params": {
        +                      "items": {
        +                        "type": "string"
        +                      },
        +                      "type": "array"
        +                    },
        +                    "code": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "detail": {
        +                      "additionalProperties": {
        +                        "type": "number"
        +                      },
        +                      "type": "object"
        +                    },
        +                    "message": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "severity": {
        +                      "enum": [
        +                        "info",
        +                        "advisory",
        +                        "caution"
        +                      ],
        +                      "type": "string"
        +                    }
        +                  },
        +                  "required": [
        +                    "code",
        +                    "severity",
        +                    "message"
        +                  ],
        +                  "type": "object"
        +                },
        +                "type": "array"
        +              }
        +            },
        +            "required": [
        +              "assembly_slug",
        +              "standard",
        +              "parameters_used",
        +              "boq_rows",
        +              "totals_summary",
        +              "text_summary"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      },
        +      "error": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        +            "properties": {
        +              "code": {
        +                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        +                "enum": [
        +                  "RATE_LIMIT_EXCEEDED",
        +                  "TIER_INSUFFICIENT",
        +                  "INVALID_INPUT",
        +                  "SCHEMA_VERSION_MISMATCH",
        +                  "SCHEMA_INVARIANT_VIOLATION",
        +                  "UPSTREAM_TIMEOUT",
        +                  "BACKEND_FAILURE",
        +                  "IP_BLOCKED",
        +                  "RESOURCE_NOT_FOUND",
        +                  "RENDER_FAILURE",
        +                  "OCR_LOW_CONFIDENCE",
        +                  "MANUAL_REVIEW_REQUIRED",
        +                  "ACCEPTANCE_REQUIRED",
        +                  "INVALID_TOKEN"
        +                ],
        +                "type": "string"
        +              },
        +              "details": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "message": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "recoverable": {
        +                "type": "boolean"
        +              },
        +              "retry_after_seconds": {
        +                "anyOf": [
        +                  {
        +                    "minimum": 0,
        +                    "type": "integer"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              }
        +            },
        +            "required": [
        +              "code",
        +              "message",
        +              "recoverable"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      }
        +    },
        +    "required": [
        +      "_meta"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "_meta": {
        +        "additionalProperties": false,
        +        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        +        "properties": {
        +          "deliverables": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        +                "properties": {
        +                  "docx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "dxf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "expires_at": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  },
        +                  "pdf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "xlsx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "expires_at"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "document_id": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "issued_at": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "output_mode": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Surfaces what a trimmed ``output_mode`` withheld from ``data``.\n\nA trimmed mode (``summary`` / ``material_schedule`` / ``boq`` /\n``boq_with_backup``) withholds\nalready-computed fields to keep the chat payload small. The withheld value\nreads to a client agent as \"capability missing\" (the box-culvert \"geometry\nbuilder isn't firing\" scare) rather than \"pared for size\": ``drawing`` and\n``audit_trail`` appear as ``null``, ``boq_rows`` as an empty list ``[]``\n(its type forbids ``null``) — both indistinguishable from a genuine absent\nresult. This names the withheld fields and the exact mode that brings each\nback, so the value is unambiguous. Absent on the default ``full_json`` mode\n— nothing is withheld, nothing to point at.",
        +                "properties": {
        +                  "mode": {
        +                    "enum": [
        +                      "summary",
        +                      "material_schedule",
        +                      "boq",
        +                      "boq_with_backup"
        +                    ],
        +                    "type": "string"
        +                  },
        +                  "omitted_fields": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "minItems": 1,
        +                    "type": "array"
        +                  },
        +                  "retrieve_with": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "mode",
        +                  "omitted_fields",
        +                  "retrieve_with"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "rate_limit_remaining": {
        +            "anyOf": [
        +              {
        +                "minimum": 0,
        +                "type": "integer"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "request_id": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "schema_version": {
        +            "const": "1.0.0",
        +            "default": "1.0.0",
        +            "type": "string"
        +          },
        +          "scope_boundary": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        +                "properties": {
        +                  "not_in_scope": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "produced": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "recommended_companions": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "type": "string"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "produced",
        +                  "not_in_scope"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tier": {
        +            "enum": [
        +              "free",
        +              "paid"
        +            ],
        +            "type": "string"
        +          },
        +          "tier_upgrade": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        +                "properties": {
        +                  "available_tiers": {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        +                      "properties": {
        +                        "billing": {
        +                          "enum": [
        +                            "one_off",
        +                            "monthly",
        +                            "annual"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "currency": {
        +                          "enum": [
        +                            "GBP",
        +                            "SGD",
        +                            "EUR",
        +                            "USD",
        +                            "CAD",
        +                            "AUD",
        +                            "NZD",
        +                            "MYR"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "display_name": {
        +                          "type": "string"
        +                        },
        +                        "price_local": {
        +                          "type": "number"
        +                        },
        +                        "tier_slug": {
        +                          "enum": [
        +                            "7_day_pass",
        +                            "solo",
        +                            "studio",
        +                            "practice"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "unlock_summary": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "tier_slug",
        +                        "display_name",
        +                        "price_local",
        +                        "currency",
        +                        "billing",
        +                        "unlock_summary"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "current_tier": {
        +                    "const": "free",
        +                    "default": "free",
        +                    "type": "string"
        +                  },
        +                  "pass_credit": {
        +                    "anyOf": [
        +                      {
        +                        "additionalProperties": false,
        +                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        +                        "properties": {
        +                          "amount_local": {
        +                            "type": "number"
        +                          },
        +                          "applies_to": {
        +                            "const": "solo_first_month",
        +                            "default": "solo_first_month",
        +                            "type": "string"
        +                          },
        +                          "currency": {
        +                            "type": "string"
        +                          },
        +                          "redeemable_until": {
        +                            "type": "string"
        +                          }
        +                        },
        +                        "required": [
        +                          "amount_local",
        +                          "currency",
        +                          "redeemable_until"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "pricing_url": {
        +                    "default": "https://civilquants.com/pricing",
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "available_tiers"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tos_url": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "upgrade_hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "warranty_disclaimer": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          }
        +        },
        +        "required": [
        +          "request_id",
        +          "issued_at",
        +          "tier"
        +        ],
        +        "type": "object"
        +      },
        +      "data": {
        +        "default": null,
        +        "title": "Data"
        +      },
        +      "error": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        +            "properties": {
        +              "code": {
        +                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        +                "enum": [
        +                  "RATE_LIMIT_EXCEEDED",
        +                  "TIER_INSUFFICIENT",
        +                  "INVALID_INPUT",
        +                  "SCHEMA_VERSION_MISMATCH",
        +                  "SCHEMA_INVARIANT_VIOLATION",
        +                  "UPSTREAM_TIMEOUT",
        +                  "BACKEND_FAILURE",
        +                  "IP_BLOCKED",
        +                  "RESOURCE_NOT_FOUND",
        +                  "RENDER_FAILURE",
        +                  "OCR_LOW_CONFIDENCE",
        +                  "MANUAL_REVIEW_REQUIRED",
        +                  "ACCEPTANCE_REQUIRED",
        +                  "INVALID_TOKEN"
        +                ],
        +                "type": "string"
        +              },
        +              "details": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "message": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "recoverable": {
        +                "type": "boolean"
        +              },
        +              "retry_after_seconds": {
        +                "anyOf": [
        +                  {
        +                    "minimum": 0,
        +                    "type": "integer"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              }
        +            },
        +            "required": [
        +              "code",
        +              "message",
        +              "recoverable"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      }
        +    },
        +    "required": [
        +      "_meta"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedcompute_swale2 fields changed
      • changedInput schema / properties / output_mode / enum
        Previous value: -[
        -  "summary",
        -  "boq",
        -  "boq_with_backup",
        -  "full_json"
        -]New value: +[
        +  "summary",
        +  "material_schedule",
        +  "boq",
        +  "boq_with_backup",
        +  "full_json"
        +]
      • changedOutput schema / properties / result / anyOf
        Previous value: -[
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "_meta": {
        -        "additionalProperties": false,
        -        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        -        "properties": {
        -          "deliverables": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        -                "properties": {
        -                  "docx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "dxf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "expires_at": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  },
        -                  "pdf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "xlsx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "expires_at"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "document_id": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "issued_at": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "output_mode": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Surfaces what a trimmed ``output_mode`` withheld from ``data``.\n\nA trimmed mode (``summary`` / ``boq`` / ``boq_with_backup``) withholds\nalready-computed fields to keep the chat payload small. The withheld value\nreads to a client agent as \"capability missing\" (the box-culvert \"geometry\nbuilder isn't firing\" scare) rather than \"pared for size\": ``drawing`` and\n``audit_trail`` appear as ``null``, ``boq_rows`` as an empty list ``[]``\n(its type forbids ``null``) — both indistinguishable from a genuine absent\nresult. This names the withheld fields and the exact mode that brings each\nback, so the value is unambiguous. Absent on the default ``full_json`` mode\n— nothing is withheld, nothing to point at.",
        -                "properties": {
        -                  "mode": {
        -                    "enum": [
        -                      "summary",
        -                      "boq",
        -                      "boq_with_backup"
        -                    ],
        -                    "type": "string"
        -                  },
        -                  "omitted_fields": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "minItems": 1,
        -                    "type": "array"
        -                  },
        -                  "retrieve_with": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "mode",
        -                  "omitted_fields",
        -                  "retrieve_with"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "rate_limit_remaining": {
        -            "anyOf": [
        -              {
        -                "minimum": 0,
        -                "type": "integer"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "request_id": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "schema_version": {
        -            "const": "1.0.0",
        -            "default": "1.0.0",
        -            "type": "string"
        -          },
        -          "scope_boundary": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        -                "properties": {
        -                  "not_in_scope": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "produced": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "recommended_companions": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "type": "string"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "produced",
        -                  "not_in_scope"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tier": {
        -            "enum": [
        -              "free",
        -              "paid"
        -            ],
        -            "type": "string"
        -          },
        -          "tier_upgrade": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        -                "properties": {
        -                  "available_tiers": {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        -                      "properties": {
        -                        "billing": {
        -                          "enum": [
        -                            "one_off",
        -                            "monthly",
        -                            "annual"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "currency": {
        -                          "enum": [
        -                            "GBP",
        -                            "SGD",
        -                            "EUR",
        -                            "USD",
        -                            "CAD",
        -                            "AUD",
        -                            "NZD",
        -                            "MYR"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "display_name": {
        -                          "type": "string"
        -                        },
        -                        "price_local": {
        -                          "type": "number"
        -                        },
        -                        "tier_slug": {
        -                          "enum": [
        -                            "7_day_pass",
        -                            "solo",
        -                            "studio",
        -                            "practice"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "unlock_summary": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "tier_slug",
        -                        "display_name",
        -                        "price_local",
        -                        "currency",
        -                        "billing",
        -                        "unlock_summary"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "current_tier": {
        -                    "const": "free",
        -                    "default": "free",
        -                    "type": "string"
        -                  },
        -                  "pass_credit": {
        -                    "anyOf": [
        -                      {
        -                        "additionalProperties": false,
        -                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        -                        "properties": {
        -                          "amount_local": {
        -                            "type": "number"
        -                          },
        -                          "applies_to": {
        -                            "const": "solo_first_month",
        -                            "default": "solo_first_month",
        -                            "type": "string"
        -                          },
        -                          "currency": {
        -                            "type": "string"
        -                          },
        -                          "redeemable_until": {
        -                            "type": "string"
        -                          }
        -                        },
        -                        "required": [
        -                          "amount_local",
        -                          "currency",
        -                          "redeemable_until"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "pricing_url": {
        -                    "default": "https://civilquants.com/pricing",
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "available_tiers"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tos_url": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "upgrade_hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "warranty_disclaimer": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          }
        -        },
        -        "required": [
        -          "request_id",
        -          "issued_at",
        -          "tier"
        -        ],
        -        "type": "object"
        -      },
        -      "data": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Schema § 1.1 — the typed payload returned inside `MCPResponse[ComputeResult]`.\n\nFree-tier responses omit `drawings` (the downloadable CAD artefact\npointers — the paid differentiator); the bridge enforces this. The\n`audit_trail` and the inline `drawing` preview are present on BOTH tiers\n(V1 ALIGN / 60th-fire D + C). `text_summary` is bounded to 2000 chars —\nkeeps the LLM-facing summary token-cheap and forces longer narrative into\nBoQ row descriptions where it belongs. `warnings` is the non-fatal\ngeometry advisory list (both tiers).",
        -            "properties": {
        -              "assembly_slug": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "audit_trail": {
        -                "anyOf": [
        -                  {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.7 — paid-tier audit-trail entry.\n\nOne entry per BoQ row; `boq_row_index` ties to the row position in\n`ComputeResult.boq_rows`. `derivation` is the human-readable formula\nwalk-through; `formula` is the optional formal expression.",
        -                      "properties": {
        -                        "boq_row_index": {
        -                          "minimum": 0,
        -                          "type": "integer"
        -                        },
        -                        "derivation": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "formula": {
        -                          "anyOf": [
        -                            {
        -                              "type": "string"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ],
        -                          "default": null
        -                        },
        -                        "id": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "parameters_referenced": {
        -                          "items": {
        -                            "type": "string"
        -                          },
        -                          "type": "array"
        -                        }
        -                      },
        -                      "required": [
        -                        "id",
        -                        "boq_row_index",
        -                        "derivation"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "boq_rows": {
        -                "items": {
        -                  "additionalProperties": false,
        -                  "description": "Schema § 1.3 — a single bill row in the requested standard's format.\n\n`description` is the non-verbatim functional description per spec § 13.9 /\n§ 15 invariant — NEVER reproduces a standard's verbatim clause text.\n`rate` / `amount` ship null because rates are commodity data the customer\nowns; the engine's job is the measurement, not the pricing.",
        -                  "properties": {
        -                    "amount": {
        -                      "anyOf": [
        -                        {
        -                          "type": "number"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "attribution": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "audit_id": {
        -                      "anyOf": [
        -                        {
        -                          "type": "string"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "description": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "quantity": {
        -                      "minimum": 0,
        -                      "type": "number"
        -                    },
        -                    "rate": {
        -                      "anyOf": [
        -                        {
        -                          "type": "number"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "unit": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "work_section": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    }
        -                  },
        -                  "required": [
        -                    "work_section",
        -                    "description",
        -                    "quantity",
        -                    "unit",
        -                    "attribution"
        -                  ],
        -                  "type": "object"
        -                },
        -                "type": "array"
        -              },
        -              "drawing": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": false,
        -                    "description": "Schema § 1.6a — inline server-rendered SVG preview of the geometry.\n\nThe MCP mirror of the web ``/compute`` response's ``drawing`` field\n(``api.schemas.compute.DrawingRef``): the same on-screen dimensioned\ndrawing both tiers see in the workspace, surfaced on the MCP compute\nresponse so a chat client can render it inline (60th-fire item C). This\nis the on-screen preview — present on BOTH tiers per the free/paid\nboundary; the downloadable CAD artefacts (DXF / dimensioned PDF) remain\nthe paid differentiator via the export tools.\n\nDefined here rather than importing ``DrawingRef`` because the web\n``schemas`` package imports back into this module (``schemas.render``),\nso reusing it would create an import cycle — the MCP wire contract keeps\nits own copy, the same pattern as ``BoQRow`` / ``DrawingReference``.",
        -                    "properties": {
        -                      "entity_count": {
        -                        "minimum": 0,
        -                        "type": "integer"
        -                      },
        -                      "svg_b64": {
        -                        "minLength": 1,
        -                        "type": "string"
        -                      },
        -                      "unit_of_drawing": {
        -                        "const": "m",
        -                        "default": "m",
        -                        "type": "string"
        -                      },
        -                      "viewbox_height": {
        -                        "exclusiveMinimum": 0,
        -                        "type": "number"
        -                      },
        -                      "viewbox_width": {
        -                        "exclusiveMinimum": 0,
        -                        "type": "number"
        -                      },
        -                      "viewbox_x": {
        -                        "type": "number"
        -                      },
        -                      "viewbox_y": {
        -                        "type": "number"
        -                      }
        -                    },
        -                    "required": [
        -                      "svg_b64",
        -                      "viewbox_x",
        -                      "viewbox_y",
        -                      "viewbox_width",
        -                      "viewbox_height",
        -                      "entity_count"
        -                    ],
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "drawings": {
        -                "anyOf": [
        -                  {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.6 — paid-tier drawing artefact pointer.\n\n`url` is an R2-signed URL; expiry is carried in `_meta.deliverables.expires_at`\non the envelope (not duplicated here). `layers` is DXF-only; PDF/SVG\ncallers omit it.",
        -                      "properties": {
        -                        "drawing_type": {
        -                          "enum": [
        -                            "section",
        -                            "plan",
        -                            "elevation",
        -                            "isometric",
        -                            "detail"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "format": {
        -                          "enum": [
        -                            "DXF",
        -                            "PDF",
        -                            "SVG"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "layers": {
        -                          "anyOf": [
        -                            {
        -                              "items": {
        -                                "type": "string"
        -                              },
        -                              "type": "array"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ],
        -                          "default": null
        -                        },
        -                        "scale": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "sheet_size": {
        -                          "enum": [
        -                            "A1",
        -                            "A2",
        -                            "A3",
        -                            "A4"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "url": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "drawing_type",
        -                        "format",
        -                        "url",
        -                        "sheet_size",
        -                        "scale"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "parameters_used": {
        -                "additionalProperties": false,
        -                "description": "Schema § 1.2 — the parameter snapshot the engine actually used.\n\nSplits user-supplied values from engine defaults so customers can see\nwhich numbers came from them and which the engine filled in. Every\ndefaulted parameter SHOULD have a corresponding entry in `assumptions`\n— the bridge layer enforces this when wrapping engine output.",
        -                "properties": {
        -                  "assumptions": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "engine_defaults": {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  "user_supplied": {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  }
        -                },
        -                "type": "object"
        -              },
        -              "standard": {
        -                "enum": [
        -                  "CESMM4",
        -                  "NRM2",
        -                  "SMM7",
        -                  "MMHW"
        -                ],
        -                "type": "string"
        -              },
        -              "text_summary": {
        -                "maxLength": 2000,
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "totals_summary": {
        -                "additionalProperties": false,
        -                "description": "Schema § 1.4 — totals_summary as a typed wrapper around the free-form dict.\n\nWire shape is a flat object (`{\"concrete_m3\": {...}, \"rebar_t\": {...}}`).\nWe model it as `RootModel`-equivalent via `model_config(extra=\"allow\")`\n+ a single `__root__`-style `entries` dict. Pydantic v2 recommends\n`RootModel` for free-form roots; using a wrapper class keeps the import\nsurface uniform with the rest of this module.",
        -                "properties": {
        -                  "entries": {
        -                    "additionalProperties": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.4 — single material/work-class total entry.",
        -                      "properties": {
        -                        "quantity": {
        -                          "minimum": 0,
        -                          "type": "number"
        -                        },
        -                        "unit": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "quantity",
        -                        "unit"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "object"
        -                  }
        -                },
        -                "type": "object"
        -              },
        -              "warnings": {
        -                "items": {
        -                  "additionalProperties": false,
        -                  "description": "Schema § 1.8 — a non-fatal geometry advisory (56th-fire T2).\n\nThe wire projection of the engine's `core.GeometryWarning`. Advisory only:\na warning NEVER changes a measured quantity — it flags geometry that is\nvalid but likely a mistake (e.g. a stale dependent-height default). Present\non BOTH tiers — a correctness/safety signal, not a paid feature.",
        -                  "properties": {
        -                    "affected_params": {
        -                      "items": {
        -                        "type": "string"
        -                      },
        -                      "type": "array"
        -                    },
        -                    "code": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "detail": {
        -                      "additionalProperties": {
        -                        "type": "number"
        -                      },
        -                      "type": "object"
        -                    },
        -                    "message": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "severity": {
        -                      "enum": [
        -                        "info",
        -                        "advisory",
        -                        "caution"
        -                      ],
        -                      "type": "string"
        -                    }
        -                  },
        -                  "required": [
        -                    "code",
        -                    "severity",
        -                    "message"
        -                  ],
        -                  "type": "object"
        -                },
        -                "type": "array"
        -              }
        -            },
        -            "required": [
        -              "assembly_slug",
        -              "standard",
        -              "parameters_used",
        -              "boq_rows",
        -              "totals_summary",
        -              "text_summary"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      },
        -      "error": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        -            "properties": {
        -              "code": {
        -                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        -                "enum": [
        -                  "RATE_LIMIT_EXCEEDED",
        -                  "TIER_INSUFFICIENT",
        -                  "INVALID_INPUT",
        -                  "SCHEMA_VERSION_MISMATCH",
        -                  "SCHEMA_INVARIANT_VIOLATION",
        -                  "UPSTREAM_TIMEOUT",
        -                  "BACKEND_FAILURE",
        -                  "IP_BLOCKED",
        -                  "RESOURCE_NOT_FOUND",
        -                  "RENDER_FAILURE",
        -                  "OCR_LOW_CONFIDENCE",
        -                  "MANUAL_REVIEW_REQUIRED",
        -                  "ACCEPTANCE_REQUIRED",
        -                  "INVALID_TOKEN"
        -                ],
        -                "type": "string"
        -              },
        -              "details": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "message": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "recoverable": {
        -                "type": "boolean"
        -              },
        -              "retry_after_seconds": {
        -                "anyOf": [
        -                  {
        -                    "minimum": 0,
        -                    "type": "integer"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              }
        -            },
        -            "required": [
        -              "code",
        -              "message",
        -              "recoverable"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      }
        -    },
        -    "required": [
        -      "_meta"
        -    ],
        -    "type": "object"
        -  },
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "_meta": {
        -        "additionalProperties": false,
        -        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        -        "properties": {
        -          "deliverables": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        -                "properties": {
        -                  "docx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "dxf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "expires_at": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  },
        -                  "pdf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "xlsx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "expires_at"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "document_id": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "issued_at": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "output_mode": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Surfaces what a trimmed ``output_mode`` withheld from ``data``.\n\nA trimmed mode (``summary`` / ``boq`` / ``boq_with_backup``) withholds\nalready-computed fields to keep the chat payload small. The withheld value\nreads to a client agent as \"capability missing\" (the box-culvert \"geometry\nbuilder isn't firing\" scare) rather than \"pared for size\": ``drawing`` and\n``audit_trail`` appear as ``null``, ``boq_rows`` as an empty list ``[]``\n(its type forbids ``null``) — both indistinguishable from a genuine absent\nresult. This names the withheld fields and the exact mode that brings each\nback, so the value is unambiguous. Absent on the default ``full_json`` mode\n— nothing is withheld, nothing to point at.",
        -                "properties": {
        -                  "mode": {
        -                    "enum": [
        -                      "summary",
        -                      "boq",
        -                      "boq_with_backup"
        -                    ],
        -                    "type": "string"
        -                  },
        -                  "omitted_fields": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "minItems": 1,
        -                    "type": "array"
        -                  },
        -                  "retrieve_with": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "mode",
        -                  "omitted_fields",
        -                  "retrieve_with"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "rate_limit_remaining": {
        -            "anyOf": [
        -              {
        -                "minimum": 0,
        -                "type": "integer"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "request_id": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "schema_version": {
        -            "const": "1.0.0",
        -            "default": "1.0.0",
        -            "type": "string"
        -          },
        -          "scope_boundary": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        -                "properties": {
        -                  "not_in_scope": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "produced": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "recommended_companions": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "type": "string"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "produced",
        -                  "not_in_scope"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tier": {
        -            "enum": [
        -              "free",
        -              "paid"
        -            ],
        -            "type": "string"
        -          },
        -          "tier_upgrade": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        -                "properties": {
        -                  "available_tiers": {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        -                      "properties": {
        -                        "billing": {
        -                          "enum": [
        -                            "one_off",
        -                            "monthly",
        -                            "annual"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "currency": {
        -                          "enum": [
        -                            "GBP",
        -                            "SGD",
        -                            "EUR",
        -                            "USD",
        -                            "CAD",
        -                            "AUD",
        -                            "NZD",
        -                            "MYR"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "display_name": {
        -                          "type": "string"
        -                        },
        -                        "price_local": {
        -                          "type": "number"
        -                        },
        -                        "tier_slug": {
        -                          "enum": [
        -                            "7_day_pass",
        -                            "solo",
        -                            "studio",
        -                            "practice"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "unlock_summary": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "tier_slug",
        -                        "display_name",
        -                        "price_local",
        -                        "currency",
        -                        "billing",
        -                        "unlock_summary"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "current_tier": {
        -                    "const": "free",
        -                    "default": "free",
        -                    "type": "string"
        -                  },
        -                  "pass_credit": {
        -                    "anyOf": [
        -                      {
        -                        "additionalProperties": false,
        -                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        -                        "properties": {
        -                          "amount_local": {
        -                            "type": "number"
        -                          },
        -                          "applies_to": {
        -                            "const": "solo_first_month",
        -                            "default": "solo_first_month",
        -                            "type": "string"
        -                          },
        -                          "currency": {
        -                            "type": "string"
        -                          },
        -                          "redeemable_until": {
        -                            "type": "string"
        -                          }
        -                        },
        -                        "required": [
        -                          "amount_local",
        -                          "currency",
        -                          "redeemable_until"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "pricing_url": {
        -                    "default": "https://civilquants.com/pricing",
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "available_tiers"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tos_url": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "upgrade_hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "warranty_disclaimer": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          }
        -        },
        -        "required": [
        -          "request_id",
        -          "issued_at",
        -          "tier"
        -        ],
        -        "type": "object"
        -      },
        -      "data": {
        -        "default": null,
        -        "title": "Data"
        -      },
        -      "error": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        -            "properties": {
        -              "code": {
        -                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        -                "enum": [
        -                  "RATE_LIMIT_EXCEEDED",
        -                  "TIER_INSUFFICIENT",
        -                  "INVALID_INPUT",
        -                  "SCHEMA_VERSION_MISMATCH",
        -                  "SCHEMA_INVARIANT_VIOLATION",
        -                  "UPSTREAM_TIMEOUT",
        -                  "BACKEND_FAILURE",
        -                  "IP_BLOCKED",
        -                  "RESOURCE_NOT_FOUND",
        -                  "RENDER_FAILURE",
        -                  "OCR_LOW_CONFIDENCE",
        -                  "MANUAL_REVIEW_REQUIRED",
        -                  "ACCEPTANCE_REQUIRED",
        -                  "INVALID_TOKEN"
        -                ],
        -                "type": "string"
        -              },
        -              "details": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "message": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "recoverable": {
        -                "type": "boolean"
        -              },
        -              "retry_after_seconds": {
        -                "anyOf": [
        -                  {
        -                    "minimum": 0,
        -                    "type": "integer"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              }
        -            },
        -            "required": [
        -              "code",
        -              "message",
        -              "recoverable"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      }
        -    },
        -    "required": [
        -      "_meta"
        -    ],
        -    "type": "object"
        -  }
        -]New value: +[
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "_meta": {
        +        "additionalProperties": false,
        +        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        +        "properties": {
        +          "deliverables": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        +                "properties": {
        +                  "docx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "dxf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "expires_at": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  },
        +                  "pdf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "xlsx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "expires_at"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "document_id": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "issued_at": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "output_mode": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Surfaces what a trimmed ``output_mode`` withheld from ``data``.\n\nA trimmed mode (``summary`` / ``material_schedule`` / ``boq`` /\n``boq_with_backup``) withholds\nalready-computed fields to keep the chat payload small. The withheld value\nreads to a client agent as \"capability missing\" (the box-culvert \"geometry\nbuilder isn't firing\" scare) rather than \"pared for size\": ``drawing`` and\n``audit_trail`` appear as ``null``, ``boq_rows`` as an empty list ``[]``\n(its type forbids ``null``) — both indistinguishable from a genuine absent\nresult. This names the withheld fields and the exact mode that brings each\nback, so the value is unambiguous. Absent on the default ``full_json`` mode\n— nothing is withheld, nothing to point at.",
        +                "properties": {
        +                  "mode": {
        +                    "enum": [
        +                      "summary",
        +                      "material_schedule",
        +                      "boq",
        +                      "boq_with_backup"
        +                    ],
        +                    "type": "string"
        +                  },
        +                  "omitted_fields": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "minItems": 1,
        +                    "type": "array"
        +                  },
        +                  "retrieve_with": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "mode",
        +                  "omitted_fields",
        +                  "retrieve_with"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "rate_limit_remaining": {
        +            "anyOf": [
        +              {
        +                "minimum": 0,
        +                "type": "integer"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "request_id": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "schema_version": {
        +            "const": "1.0.0",
        +            "default": "1.0.0",
        +            "type": "string"
        +          },
        +          "scope_boundary": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        +                "properties": {
        +                  "not_in_scope": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "produced": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "recommended_companions": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "type": "string"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "produced",
        +                  "not_in_scope"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tier": {
        +            "enum": [
        +              "free",
        +              "paid"
        +            ],
        +            "type": "string"
        +          },
        +          "tier_upgrade": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        +                "properties": {
        +                  "available_tiers": {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        +                      "properties": {
        +                        "billing": {
        +                          "enum": [
        +                            "one_off",
        +                            "monthly",
        +                            "annual"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "currency": {
        +                          "enum": [
        +                            "GBP",
        +                            "SGD",
        +                            "EUR",
        +                            "USD",
        +                            "CAD",
        +                            "AUD",
        +                            "NZD",
        +                            "MYR"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "display_name": {
        +                          "type": "string"
        +                        },
        +                        "price_local": {
        +                          "type": "number"
        +                        },
        +                        "tier_slug": {
        +                          "enum": [
        +                            "7_day_pass",
        +                            "solo",
        +                            "studio",
        +                            "practice"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "unlock_summary": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "tier_slug",
        +                        "display_name",
        +                        "price_local",
        +                        "currency",
        +                        "billing",
        +                        "unlock_summary"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "current_tier": {
        +                    "const": "free",
        +                    "default": "free",
        +                    "type": "string"
        +                  },
        +                  "pass_credit": {
        +                    "anyOf": [
        +                      {
        +                        "additionalProperties": false,
        +                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        +                        "properties": {
        +                          "amount_local": {
        +                            "type": "number"
        +                          },
        +                          "applies_to": {
        +                            "const": "solo_first_month",
        +                            "default": "solo_first_month",
        +                            "type": "string"
        +                          },
        +                          "currency": {
        +                            "type": "string"
        +                          },
        +                          "redeemable_until": {
        +                            "type": "string"
        +                          }
        +                        },
        +                        "required": [
        +                          "amount_local",
        +                          "currency",
        +                          "redeemable_until"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "pricing_url": {
        +                    "default": "https://civilquants.com/pricing",
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "available_tiers"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tos_url": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "upgrade_hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "warranty_disclaimer": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          }
        +        },
        +        "required": [
        +          "request_id",
        +          "issued_at",
        +          "tier"
        +        ],
        +        "type": "object"
        +      },
        +      "data": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Schema § 1.1 — the typed payload returned inside `MCPResponse[ComputeResult]`.\n\nFree-tier responses omit `drawings` (the downloadable CAD artefact\npointers — the paid differentiator); the bridge enforces this. The\n`audit_trail` and the inline `drawing` preview are present on BOTH tiers\n(V1 ALIGN / 60th-fire D + C). `text_summary` is bounded to 2000 chars —\nkeeps the LLM-facing summary token-cheap and forces longer narrative into\nBoQ row descriptions where it belongs. `warnings` is the non-fatal\ngeometry advisory list (both tiers).",
        +            "properties": {
        +              "assembly_slug": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "audit_trail": {
        +                "anyOf": [
        +                  {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.7 — paid-tier audit-trail entry.\n\nOne entry per BoQ row; `boq_row_index` ties to the row position in\n`ComputeResult.boq_rows`. `derivation` is the human-readable formula\nwalk-through; `formula` is the optional formal expression.",
        +                      "properties": {
        +                        "boq_row_index": {
        +                          "minimum": 0,
        +                          "type": "integer"
        +                        },
        +                        "derivation": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "formula": {
        +                          "anyOf": [
        +                            {
        +                              "type": "string"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ],
        +                          "default": null
        +                        },
        +                        "id": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "parameters_referenced": {
        +                          "items": {
        +                            "type": "string"
        +                          },
        +                          "type": "array"
        +                        }
        +                      },
        +                      "required": [
        +                        "id",
        +                        "boq_row_index",
        +                        "derivation"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "boq_rows": {
        +                "items": {
        +                  "additionalProperties": false,
        +                  "description": "Schema § 1.3 — a single bill row in the requested standard's format.\n\n`description` is the non-verbatim functional description per spec § 13.9 /\n§ 15 invariant — NEVER reproduces a standard's verbatim clause text.\n`rate` / `amount` ship null because rates are commodity data the customer\nowns; the engine's job is the measurement, not the pricing.",
        +                  "properties": {
        +                    "amount": {
        +                      "anyOf": [
        +                        {
        +                          "type": "number"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "attribution": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "audit_id": {
        +                      "anyOf": [
        +                        {
        +                          "type": "string"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "description": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "quantity": {
        +                      "minimum": 0,
        +                      "type": "number"
        +                    },
        +                    "rate": {
        +                      "anyOf": [
        +                        {
        +                          "type": "number"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "unit": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "work_section": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    }
        +                  },
        +                  "required": [
        +                    "work_section",
        +                    "description",
        +                    "quantity",
        +                    "unit",
        +                    "attribution"
        +                  ],
        +                  "type": "object"
        +                },
        +                "type": "array"
        +              },
        +              "drawing": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": false,
        +                    "description": "Schema § 1.6a — inline server-rendered SVG preview of the geometry.\n\nThe MCP mirror of the web ``/compute`` response's ``drawing`` field\n(``api.schemas.compute.DrawingRef``): the same on-screen dimensioned\ndrawing both tiers see in the workspace, surfaced on the MCP compute\nresponse so a chat client can render it inline (60th-fire item C). This\nis the on-screen preview — present on BOTH tiers per the free/paid\nboundary; the downloadable CAD artefacts (DXF / dimensioned PDF) remain\nthe paid differentiator via the export tools.\n\nDefined here rather than importing ``DrawingRef`` because the web\n``schemas`` package imports back into this module (``schemas.render``),\nso reusing it would create an import cycle — the MCP wire contract keeps\nits own copy, the same pattern as ``BoQRow`` / ``DrawingReference``.",
        +                    "properties": {
        +                      "entity_count": {
        +                        "minimum": 0,
        +                        "type": "integer"
        +                      },
        +                      "svg_b64": {
        +                        "minLength": 1,
        +                        "type": "string"
        +                      },
        +                      "unit_of_drawing": {
        +                        "const": "m",
        +                        "default": "m",
        +                        "type": "string"
        +                      },
        +                      "viewbox_height": {
        +                        "exclusiveMinimum": 0,
        +                        "type": "number"
        +                      },
        +                      "viewbox_width": {
        +                        "exclusiveMinimum": 0,
        +                        "type": "number"
        +                      },
        +                      "viewbox_x": {
        +                        "type": "number"
        +                      },
        +                      "viewbox_y": {
        +                        "type": "number"
        +                      }
        +                    },
        +                    "required": [
        +                      "svg_b64",
        +                      "viewbox_x",
        +                      "viewbox_y",
        +                      "viewbox_width",
        +                      "viewbox_height",
        +                      "entity_count"
        +                    ],
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "drawings": {
        +                "anyOf": [
        +                  {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.6 — paid-tier drawing artefact pointer.\n\n`url` is an R2-signed URL; expiry is carried in `_meta.deliverables.expires_at`\non the envelope (not duplicated here). `layers` is DXF-only; PDF/SVG\ncallers omit it.",
        +                      "properties": {
        +                        "drawing_type": {
        +                          "enum": [
        +                            "section",
        +                            "plan",
        +                            "elevation",
        +                            "isometric",
        +                            "detail"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "format": {
        +                          "enum": [
        +                            "DXF",
        +                            "PDF",
        +                            "SVG"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "layers": {
        +                          "anyOf": [
        +                            {
        +                              "items": {
        +                                "type": "string"
        +                              },
        +                              "type": "array"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ],
        +                          "default": null
        +                        },
        +                        "scale": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "sheet_size": {
        +                          "enum": [
        +                            "A1",
        +                            "A2",
        +                            "A3",
        +                            "A4"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "url": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "drawing_type",
        +                        "format",
        +                        "url",
        +                        "sheet_size",
        +                        "scale"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "parameters_used": {
        +                "additionalProperties": false,
        +                "description": "Schema § 1.2 — the parameter snapshot the engine actually used.\n\nSplits user-supplied values from engine defaults so customers can see\nwhich numbers came from them and which the engine filled in. Every\ndefaulted parameter SHOULD have a corresponding entry in `assumptions`\n— the bridge layer enforces this when wrapping engine output.",
        +                "properties": {
        +                  "assumptions": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "engine_defaults": {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  "user_supplied": {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  }
        +                },
        +                "type": "object"
        +              },
        +              "standard": {
        +                "enum": [
        +                  "CESMM4",
        +                  "NRM2",
        +                  "SMM7",
        +                  "MMHW"
        +                ],
        +                "type": "string"
        +              },
        +              "text_summary": {
        +                "maxLength": 2000,
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "totals_summary": {
        +                "additionalProperties": false,
        +                "description": "Schema § 1.4 — totals_summary as a typed wrapper around the free-form dict.\n\nWire shape is a flat object (`{\"concrete_m3\": {...}, \"rebar_t\": {...}}`).\nWe model it as `RootModel`-equivalent via `model_config(extra=\"allow\")`\n+ a single `__root__`-style `entries` dict. Pydantic v2 recommends\n`RootModel` for free-form roots; using a wrapper class keeps the import\nsurface uniform with the rest of this module.",
        +                "properties": {
        +                  "entries": {
        +                    "additionalProperties": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.4 — single material/work-class total entry.",
        +                      "properties": {
        +                        "quantity": {
        +                          "minimum": 0,
        +                          "type": "number"
        +                        },
        +                        "unit": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "quantity",
        +                        "unit"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "object"
        +                  }
        +                },
        +                "type": "object"
        +              },
        +              "warnings": {
        +                "items": {
        +                  "additionalProperties": false,
        +                  "description": "Schema § 1.8 — a non-fatal geometry advisory (56th-fire T2).\n\nThe wire projection of the engine's `core.GeometryWarning`. Advisory only:\na warning NEVER changes a measured quantity — it flags geometry that is\nvalid but likely a mistake (e.g. a stale dependent-height default). Present\non BOTH tiers — a correctness/safety signal, not a paid feature.",
        +                  "properties": {
        +                    "affected_params": {
        +                      "items": {
        +                        "type": "string"
        +                      },
        +                      "type": "array"
        +                    },
        +                    "code": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "detail": {
        +                      "additionalProperties": {
        +                        "type": "number"
        +                      },
        +                      "type": "object"
        +                    },
        +                    "message": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "severity": {
        +                      "enum": [
        +                        "info",
        +                        "advisory",
        +                        "caution"
        +                      ],
        +                      "type": "string"
        +                    }
        +                  },
        +                  "required": [
        +                    "code",
        +                    "severity",
        +                    "message"
        +                  ],
        +                  "type": "object"
        +                },
        +                "type": "array"
        +              }
        +            },
        +            "required": [
        +              "assembly_slug",
        +              "standard",
        +              "parameters_used",
        +              "boq_rows",
        +              "totals_summary",
        +              "text_summary"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      },
        +      "error": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        +            "properties": {
        +              "code": {
        +                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        +                "enum": [
        +                  "RATE_LIMIT_EXCEEDED",
        +                  "TIER_INSUFFICIENT",
        +                  "INVALID_INPUT",
        +                  "SCHEMA_VERSION_MISMATCH",
        +                  "SCHEMA_INVARIANT_VIOLATION",
        +                  "UPSTREAM_TIMEOUT",
        +                  "BACKEND_FAILURE",
        +                  "IP_BLOCKED",
        +                  "RESOURCE_NOT_FOUND",
        +                  "RENDER_FAILURE",
        +                  "OCR_LOW_CONFIDENCE",
        +                  "MANUAL_REVIEW_REQUIRED",
        +                  "ACCEPTANCE_REQUIRED",
        +                  "INVALID_TOKEN"
        +                ],
        +                "type": "string"
        +              },
        +              "details": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "message": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "recoverable": {
        +                "type": "boolean"
        +              },
        +              "retry_after_seconds": {
        +                "anyOf": [
        +                  {
        +                    "minimum": 0,
        +                    "type": "integer"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              }
        +            },
        +            "required": [
        +              "code",
        +              "message",
        +              "recoverable"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      }
        +    },
        +    "required": [
        +      "_meta"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "_meta": {
        +        "additionalProperties": false,
        +        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        +        "properties": {
        +          "deliverables": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        +                "properties": {
        +                  "docx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "dxf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "expires_at": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  },
        +                  "pdf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "xlsx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "expires_at"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "document_id": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "issued_at": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "output_mode": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Surfaces what a trimmed ``output_mode`` withheld from ``data``.\n\nA trimmed mode (``summary`` / ``material_schedule`` / ``boq`` /\n``boq_with_backup``) withholds\nalready-computed fields to keep the chat payload small. The withheld value\nreads to a client agent as \"capability missing\" (the box-culvert \"geometry\nbuilder isn't firing\" scare) rather than \"pared for size\": ``drawing`` and\n``audit_trail`` appear as ``null``, ``boq_rows`` as an empty list ``[]``\n(its type forbids ``null``) — both indistinguishable from a genuine absent\nresult. This names the withheld fields and the exact mode that brings each\nback, so the value is unambiguous. Absent on the default ``full_json`` mode\n— nothing is withheld, nothing to point at.",
        +                "properties": {
        +                  "mode": {
        +                    "enum": [
        +                      "summary",
        +                      "material_schedule",
        +                      "boq",
        +                      "boq_with_backup"
        +                    ],
        +                    "type": "string"
        +                  },
        +                  "omitted_fields": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "minItems": 1,
        +                    "type": "array"
        +                  },
        +                  "retrieve_with": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "mode",
        +                  "omitted_fields",
        +                  "retrieve_with"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "rate_limit_remaining": {
        +            "anyOf": [
        +              {
        +                "minimum": 0,
        +                "type": "integer"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "request_id": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "schema_version": {
        +            "const": "1.0.0",
        +            "default": "1.0.0",
        +            "type": "string"
        +          },
        +          "scope_boundary": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        +                "properties": {
        +                  "not_in_scope": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "produced": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "recommended_companions": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "type": "string"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "produced",
        +                  "not_in_scope"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tier": {
        +            "enum": [
        +              "free",
        +              "paid"
        +            ],
        +            "type": "string"
        +          },
        +          "tier_upgrade": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        +                "properties": {
        +                  "available_tiers": {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        +                      "properties": {
        +                        "billing": {
        +                          "enum": [
        +                            "one_off",
        +                            "monthly",
        +                            "annual"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "currency": {
        +                          "enum": [
        +                            "GBP",
        +                            "SGD",
        +                            "EUR",
        +                            "USD",
        +                            "CAD",
        +                            "AUD",
        +                            "NZD",
        +                            "MYR"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "display_name": {
        +                          "type": "string"
        +                        },
        +                        "price_local": {
        +                          "type": "number"
        +                        },
        +                        "tier_slug": {
        +                          "enum": [
        +                            "7_day_pass",
        +                            "solo",
        +                            "studio",
        +                            "practice"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "unlock_summary": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "tier_slug",
        +                        "display_name",
        +                        "price_local",
        +                        "currency",
        +                        "billing",
        +                        "unlock_summary"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "current_tier": {
        +                    "const": "free",
        +                    "default": "free",
        +                    "type": "string"
        +                  },
        +                  "pass_credit": {
        +                    "anyOf": [
        +                      {
        +                        "additionalProperties": false,
        +                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        +                        "properties": {
        +                          "amount_local": {
        +                            "type": "number"
        +                          },
        +                          "applies_to": {
        +                            "const": "solo_first_month",
        +                            "default": "solo_first_month",
        +                            "type": "string"
        +                          },
        +                          "currency": {
        +                            "type": "string"
        +                          },
        +                          "redeemable_until": {
        +                            "type": "string"
        +                          }
        +                        },
        +                        "required": [
        +                          "amount_local",
        +                          "currency",
        +                          "redeemable_until"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "pricing_url": {
        +                    "default": "https://civilquants.com/pricing",
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "available_tiers"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tos_url": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "upgrade_hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "warranty_disclaimer": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          }
        +        },
        +        "required": [
        +          "request_id",
        +          "issued_at",
        +          "tier"
        +        ],
        +        "type": "object"
        +      },
        +      "data": {
        +        "default": null,
        +        "title": "Data"
        +      },
        +      "error": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        +            "properties": {
        +              "code": {
        +                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        +                "enum": [
        +                  "RATE_LIMIT_EXCEEDED",
        +                  "TIER_INSUFFICIENT",
        +                  "INVALID_INPUT",
        +                  "SCHEMA_VERSION_MISMATCH",
        +                  "SCHEMA_INVARIANT_VIOLATION",
        +                  "UPSTREAM_TIMEOUT",
        +                  "BACKEND_FAILURE",
        +                  "IP_BLOCKED",
        +                  "RESOURCE_NOT_FOUND",
        +                  "RENDER_FAILURE",
        +                  "OCR_LOW_CONFIDENCE",
        +                  "MANUAL_REVIEW_REQUIRED",
        +                  "ACCEPTANCE_REQUIRED",
        +                  "INVALID_TOKEN"
        +                ],
        +                "type": "string"
        +              },
        +              "details": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "message": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "recoverable": {
        +                "type": "boolean"
        +              },
        +              "retry_after_seconds": {
        +                "anyOf": [
        +                  {
        +                    "minimum": 0,
        +                    "type": "integer"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              }
        +            },
        +            "required": [
        +              "code",
        +              "message",
        +              "recoverable"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      }
        +    },
        +    "required": [
        +      "_meta"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedcompute_traffic_sign2 fields changed
      • changedInput schema / properties / output_mode / enum
        Previous value: -[
        -  "summary",
        -  "boq",
        -  "boq_with_backup",
        -  "full_json"
        -]New value: +[
        +  "summary",
        +  "material_schedule",
        +  "boq",
        +  "boq_with_backup",
        +  "full_json"
        +]
      • changedOutput schema / properties / result / anyOf
        Previous value: -[
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "_meta": {
        -        "additionalProperties": false,
        -        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        -        "properties": {
        -          "deliverables": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        -                "properties": {
        -                  "docx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "dxf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "expires_at": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  },
        -                  "pdf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "xlsx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "expires_at"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "document_id": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "issued_at": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "output_mode": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Surfaces what a trimmed ``output_mode`` withheld from ``data``.\n\nA trimmed mode (``summary`` / ``boq`` / ``boq_with_backup``) withholds\nalready-computed fields to keep the chat payload small. The withheld value\nreads to a client agent as \"capability missing\" (the box-culvert \"geometry\nbuilder isn't firing\" scare) rather than \"pared for size\": ``drawing`` and\n``audit_trail`` appear as ``null``, ``boq_rows`` as an empty list ``[]``\n(its type forbids ``null``) — both indistinguishable from a genuine absent\nresult. This names the withheld fields and the exact mode that brings each\nback, so the value is unambiguous. Absent on the default ``full_json`` mode\n— nothing is withheld, nothing to point at.",
        -                "properties": {
        -                  "mode": {
        -                    "enum": [
        -                      "summary",
        -                      "boq",
        -                      "boq_with_backup"
        -                    ],
        -                    "type": "string"
        -                  },
        -                  "omitted_fields": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "minItems": 1,
        -                    "type": "array"
        -                  },
        -                  "retrieve_with": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "mode",
        -                  "omitted_fields",
        -                  "retrieve_with"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "rate_limit_remaining": {
        -            "anyOf": [
        -              {
        -                "minimum": 0,
        -                "type": "integer"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "request_id": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "schema_version": {
        -            "const": "1.0.0",
        -            "default": "1.0.0",
        -            "type": "string"
        -          },
        -          "scope_boundary": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        -                "properties": {
        -                  "not_in_scope": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "produced": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "recommended_companions": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "type": "string"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "produced",
        -                  "not_in_scope"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tier": {
        -            "enum": [
        -              "free",
        -              "paid"
        -            ],
        -            "type": "string"
        -          },
        -          "tier_upgrade": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        -                "properties": {
        -                  "available_tiers": {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        -                      "properties": {
        -                        "billing": {
        -                          "enum": [
        -                            "one_off",
        -                            "monthly",
        -                            "annual"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "currency": {
        -                          "enum": [
        -                            "GBP",
        -                            "SGD",
        -                            "EUR",
        -                            "USD",
        -                            "CAD",
        -                            "AUD",
        -                            "NZD",
        -                            "MYR"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "display_name": {
        -                          "type": "string"
        -                        },
        -                        "price_local": {
        -                          "type": "number"
        -                        },
        -                        "tier_slug": {
        -                          "enum": [
        -                            "7_day_pass",
        -                            "solo",
        -                            "studio",
        -                            "practice"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "unlock_summary": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "tier_slug",
        -                        "display_name",
        -                        "price_local",
        -                        "currency",
        -                        "billing",
        -                        "unlock_summary"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "current_tier": {
        -                    "const": "free",
        -                    "default": "free",
        -                    "type": "string"
        -                  },
        -                  "pass_credit": {
        -                    "anyOf": [
        -                      {
        -                        "additionalProperties": false,
        -                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        -                        "properties": {
        -                          "amount_local": {
        -                            "type": "number"
        -                          },
        -                          "applies_to": {
        -                            "const": "solo_first_month",
        -                            "default": "solo_first_month",
        -                            "type": "string"
        -                          },
        -                          "currency": {
        -                            "type": "string"
        -                          },
        -                          "redeemable_until": {
        -                            "type": "string"
        -                          }
        -                        },
        -                        "required": [
        -                          "amount_local",
        -                          "currency",
        -                          "redeemable_until"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "pricing_url": {
        -                    "default": "https://civilquants.com/pricing",
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "available_tiers"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tos_url": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "upgrade_hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "warranty_disclaimer": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          }
        -        },
        -        "required": [
        -          "request_id",
        -          "issued_at",
        -          "tier"
        -        ],
        -        "type": "object"
        -      },
        -      "data": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Schema § 1.1 — the typed payload returned inside `MCPResponse[ComputeResult]`.\n\nFree-tier responses omit `drawings` (the downloadable CAD artefact\npointers — the paid differentiator); the bridge enforces this. The\n`audit_trail` and the inline `drawing` preview are present on BOTH tiers\n(V1 ALIGN / 60th-fire D + C). `text_summary` is bounded to 2000 chars —\nkeeps the LLM-facing summary token-cheap and forces longer narrative into\nBoQ row descriptions where it belongs. `warnings` is the non-fatal\ngeometry advisory list (both tiers).",
        -            "properties": {
        -              "assembly_slug": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "audit_trail": {
        -                "anyOf": [
        -                  {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.7 — paid-tier audit-trail entry.\n\nOne entry per BoQ row; `boq_row_index` ties to the row position in\n`ComputeResult.boq_rows`. `derivation` is the human-readable formula\nwalk-through; `formula` is the optional formal expression.",
        -                      "properties": {
        -                        "boq_row_index": {
        -                          "minimum": 0,
        -                          "type": "integer"
        -                        },
        -                        "derivation": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "formula": {
        -                          "anyOf": [
        -                            {
        -                              "type": "string"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ],
        -                          "default": null
        -                        },
        -                        "id": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "parameters_referenced": {
        -                          "items": {
        -                            "type": "string"
        -                          },
        -                          "type": "array"
        -                        }
        -                      },
        -                      "required": [
        -                        "id",
        -                        "boq_row_index",
        -                        "derivation"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "boq_rows": {
        -                "items": {
        -                  "additionalProperties": false,
        -                  "description": "Schema § 1.3 — a single bill row in the requested standard's format.\n\n`description` is the non-verbatim functional description per spec § 13.9 /\n§ 15 invariant — NEVER reproduces a standard's verbatim clause text.\n`rate` / `amount` ship null because rates are commodity data the customer\nowns; the engine's job is the measurement, not the pricing.",
        -                  "properties": {
        -                    "amount": {
        -                      "anyOf": [
        -                        {
        -                          "type": "number"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "attribution": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "audit_id": {
        -                      "anyOf": [
        -                        {
        -                          "type": "string"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "description": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "quantity": {
        -                      "minimum": 0,
        -                      "type": "number"
        -                    },
        -                    "rate": {
        -                      "anyOf": [
        -                        {
        -                          "type": "number"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "unit": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "work_section": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    }
        -                  },
        -                  "required": [
        -                    "work_section",
        -                    "description",
        -                    "quantity",
        -                    "unit",
        -                    "attribution"
        -                  ],
        -                  "type": "object"
        -                },
        -                "type": "array"
        -              },
        -              "drawing": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": false,
        -                    "description": "Schema § 1.6a — inline server-rendered SVG preview of the geometry.\n\nThe MCP mirror of the web ``/compute`` response's ``drawing`` field\n(``api.schemas.compute.DrawingRef``): the same on-screen dimensioned\ndrawing both tiers see in the workspace, surfaced on the MCP compute\nresponse so a chat client can render it inline (60th-fire item C). This\nis the on-screen preview — present on BOTH tiers per the free/paid\nboundary; the downloadable CAD artefacts (DXF / dimensioned PDF) remain\nthe paid differentiator via the export tools.\n\nDefined here rather than importing ``DrawingRef`` because the web\n``schemas`` package imports back into this module (``schemas.render``),\nso reusing it would create an import cycle — the MCP wire contract keeps\nits own copy, the same pattern as ``BoQRow`` / ``DrawingReference``.",
        -                    "properties": {
        -                      "entity_count": {
        -                        "minimum": 0,
        -                        "type": "integer"
        -                      },
        -                      "svg_b64": {
        -                        "minLength": 1,
        -                        "type": "string"
        -                      },
        -                      "unit_of_drawing": {
        -                        "const": "m",
        -                        "default": "m",
        -                        "type": "string"
        -                      },
        -                      "viewbox_height": {
        -                        "exclusiveMinimum": 0,
        -                        "type": "number"
        -                      },
        -                      "viewbox_width": {
        -                        "exclusiveMinimum": 0,
        -                        "type": "number"
        -                      },
        -                      "viewbox_x": {
        -                        "type": "number"
        -                      },
        -                      "viewbox_y": {
        -                        "type": "number"
        -                      }
        -                    },
        -                    "required": [
        -                      "svg_b64",
        -                      "viewbox_x",
        -                      "viewbox_y",
        -                      "viewbox_width",
        -                      "viewbox_height",
        -                      "entity_count"
        -                    ],
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "drawings": {
        -                "anyOf": [
        -                  {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.6 — paid-tier drawing artefact pointer.\n\n`url` is an R2-signed URL; expiry is carried in `_meta.deliverables.expires_at`\non the envelope (not duplicated here). `layers` is DXF-only; PDF/SVG\ncallers omit it.",
        -                      "properties": {
        -                        "drawing_type": {
        -                          "enum": [
        -                            "section",
        -                            "plan",
        -                            "elevation",
        -                            "isometric",
        -                            "detail"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "format": {
        -                          "enum": [
        -                            "DXF",
        -                            "PDF",
        -                            "SVG"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "layers": {
        -                          "anyOf": [
        -                            {
        -                              "items": {
        -                                "type": "string"
        -                              },
        -                              "type": "array"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ],
        -                          "default": null
        -                        },
        -                        "scale": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "sheet_size": {
        -                          "enum": [
        -                            "A1",
        -                            "A2",
        -                            "A3",
        -                            "A4"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "url": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "drawing_type",
        -                        "format",
        -                        "url",
        -                        "sheet_size",
        -                        "scale"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "parameters_used": {
        -                "additionalProperties": false,
        -                "description": "Schema § 1.2 — the parameter snapshot the engine actually used.\n\nSplits user-supplied values from engine defaults so customers can see\nwhich numbers came from them and which the engine filled in. Every\ndefaulted parameter SHOULD have a corresponding entry in `assumptions`\n— the bridge layer enforces this when wrapping engine output.",
        -                "properties": {
        -                  "assumptions": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "engine_defaults": {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  "user_supplied": {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  }
        -                },
        -                "type": "object"
        -              },
        -              "standard": {
        -                "enum": [
        -                  "CESMM4",
        -                  "NRM2",
        -                  "SMM7",
        -                  "MMHW"
        -                ],
        -                "type": "string"
        -              },
        -              "text_summary": {
        -                "maxLength": 2000,
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "totals_summary": {
        -                "additionalProperties": false,
        -                "description": "Schema § 1.4 — totals_summary as a typed wrapper around the free-form dict.\n\nWire shape is a flat object (`{\"concrete_m3\": {...}, \"rebar_t\": {...}}`).\nWe model it as `RootModel`-equivalent via `model_config(extra=\"allow\")`\n+ a single `__root__`-style `entries` dict. Pydantic v2 recommends\n`RootModel` for free-form roots; using a wrapper class keeps the import\nsurface uniform with the rest of this module.",
        -                "properties": {
        -                  "entries": {
        -                    "additionalProperties": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.4 — single material/work-class total entry.",
        -                      "properties": {
        -                        "quantity": {
        -                          "minimum": 0,
        -                          "type": "number"
        -                        },
        -                        "unit": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "quantity",
        -                        "unit"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "object"
        -                  }
        -                },
        -                "type": "object"
        -              },
        -              "warnings": {
        -                "items": {
        -                  "additionalProperties": false,
        -                  "description": "Schema § 1.8 — a non-fatal geometry advisory (56th-fire T2).\n\nThe wire projection of the engine's `core.GeometryWarning`. Advisory only:\na warning NEVER changes a measured quantity — it flags geometry that is\nvalid but likely a mistake (e.g. a stale dependent-height default). Present\non BOTH tiers — a correctness/safety signal, not a paid feature.",
        -                  "properties": {
        -                    "affected_params": {
        -                      "items": {
        -                        "type": "string"
        -                      },
        -                      "type": "array"
        -                    },
        -                    "code": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "detail": {
        -                      "additionalProperties": {
        -                        "type": "number"
        -                      },
        -                      "type": "object"
        -                    },
        -                    "message": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "severity": {
        -                      "enum": [
        -                        "info",
        -                        "advisory",
        -                        "caution"
        -                      ],
        -                      "type": "string"
        -                    }
        -                  },
        -                  "required": [
        -                    "code",
        -                    "severity",
        -                    "message"
        -                  ],
        -                  "type": "object"
        -                },
        -                "type": "array"
        -              }
        -            },
        -            "required": [
        -              "assembly_slug",
        -              "standard",
        -              "parameters_used",
        -              "boq_rows",
        -              "totals_summary",
        -              "text_summary"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      },
        -      "error": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        -            "properties": {
        -              "code": {
        -                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        -                "enum": [
        -                  "RATE_LIMIT_EXCEEDED",
        -                  "TIER_INSUFFICIENT",
        -                  "INVALID_INPUT",
        -                  "SCHEMA_VERSION_MISMATCH",
        -                  "SCHEMA_INVARIANT_VIOLATION",
        -                  "UPSTREAM_TIMEOUT",
        -                  "BACKEND_FAILURE",
        -                  "IP_BLOCKED",
        -                  "RESOURCE_NOT_FOUND",
        -                  "RENDER_FAILURE",
        -                  "OCR_LOW_CONFIDENCE",
        -                  "MANUAL_REVIEW_REQUIRED",
        -                  "ACCEPTANCE_REQUIRED",
        -                  "INVALID_TOKEN"
        -                ],
        -                "type": "string"
        -              },
        -              "details": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "message": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "recoverable": {
        -                "type": "boolean"
        -              },
        -              "retry_after_seconds": {
        -                "anyOf": [
        -                  {
        -                    "minimum": 0,
        -                    "type": "integer"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              }
        -            },
        -            "required": [
        -              "code",
        -              "message",
        -              "recoverable"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      }
        -    },
        -    "required": [
        -      "_meta"
        -    ],
        -    "type": "object"
        -  },
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "_meta": {
        -        "additionalProperties": false,
        -        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        -        "properties": {
        -          "deliverables": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        -                "properties": {
        -                  "docx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "dxf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "expires_at": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  },
        -                  "pdf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "xlsx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "expires_at"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "document_id": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "issued_at": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "output_mode": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Surfaces what a trimmed ``output_mode`` withheld from ``data``.\n\nA trimmed mode (``summary`` / ``boq`` / ``boq_with_backup``) withholds\nalready-computed fields to keep the chat payload small. The withheld value\nreads to a client agent as \"capability missing\" (the box-culvert \"geometry\nbuilder isn't firing\" scare) rather than \"pared for size\": ``drawing`` and\n``audit_trail`` appear as ``null``, ``boq_rows`` as an empty list ``[]``\n(its type forbids ``null``) — both indistinguishable from a genuine absent\nresult. This names the withheld fields and the exact mode that brings each\nback, so the value is unambiguous. Absent on the default ``full_json`` mode\n— nothing is withheld, nothing to point at.",
        -                "properties": {
        -                  "mode": {
        -                    "enum": [
        -                      "summary",
        -                      "boq",
        -                      "boq_with_backup"
        -                    ],
        -                    "type": "string"
        -                  },
        -                  "omitted_fields": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "minItems": 1,
        -                    "type": "array"
        -                  },
        -                  "retrieve_with": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "mode",
        -                  "omitted_fields",
        -                  "retrieve_with"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "rate_limit_remaining": {
        -            "anyOf": [
        -              {
        -                "minimum": 0,
        -                "type": "integer"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "request_id": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "schema_version": {
        -            "const": "1.0.0",
        -            "default": "1.0.0",
        -            "type": "string"
        -          },
        -          "scope_boundary": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        -                "properties": {
        -                  "not_in_scope": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "produced": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "recommended_companions": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "type": "string"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "produced",
        -                  "not_in_scope"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tier": {
        -            "enum": [
        -              "free",
        -              "paid"
        -            ],
        -            "type": "string"
        -          },
        -          "tier_upgrade": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        -                "properties": {
        -                  "available_tiers": {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        -                      "properties": {
        -                        "billing": {
        -                          "enum": [
        -                            "one_off",
        -                            "monthly",
        -                            "annual"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "currency": {
        -                          "enum": [
        -                            "GBP",
        -                            "SGD",
        -                            "EUR",
        -                            "USD",
        -                            "CAD",
        -                            "AUD",
        -                            "NZD",
        -                            "MYR"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "display_name": {
        -                          "type": "string"
        -                        },
        -                        "price_local": {
        -                          "type": "number"
        -                        },
        -                        "tier_slug": {
        -                          "enum": [
        -                            "7_day_pass",
        -                            "solo",
        -                            "studio",
        -                            "practice"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "unlock_summary": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "tier_slug",
        -                        "display_name",
        -                        "price_local",
        -                        "currency",
        -                        "billing",
        -                        "unlock_summary"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "current_tier": {
        -                    "const": "free",
        -                    "default": "free",
        -                    "type": "string"
        -                  },
        -                  "pass_credit": {
        -                    "anyOf": [
        -                      {
        -                        "additionalProperties": false,
        -                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        -                        "properties": {
        -                          "amount_local": {
        -                            "type": "number"
        -                          },
        -                          "applies_to": {
        -                            "const": "solo_first_month",
        -                            "default": "solo_first_month",
        -                            "type": "string"
        -                          },
        -                          "currency": {
        -                            "type": "string"
        -                          },
        -                          "redeemable_until": {
        -                            "type": "string"
        -                          }
        -                        },
        -                        "required": [
        -                          "amount_local",
        -                          "currency",
        -                          "redeemable_until"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "pricing_url": {
        -                    "default": "https://civilquants.com/pricing",
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "available_tiers"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tos_url": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "upgrade_hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "warranty_disclaimer": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          }
        -        },
        -        "required": [
        -          "request_id",
        -          "issued_at",
        -          "tier"
        -        ],
        -        "type": "object"
        -      },
        -      "data": {
        -        "default": null,
        -        "title": "Data"
        -      },
        -      "error": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        -            "properties": {
        -              "code": {
        -                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        -                "enum": [
        -                  "RATE_LIMIT_EXCEEDED",
        -                  "TIER_INSUFFICIENT",
        -                  "INVALID_INPUT",
        -                  "SCHEMA_VERSION_MISMATCH",
        -                  "SCHEMA_INVARIANT_VIOLATION",
        -                  "UPSTREAM_TIMEOUT",
        -                  "BACKEND_FAILURE",
        -                  "IP_BLOCKED",
        -                  "RESOURCE_NOT_FOUND",
        -                  "RENDER_FAILURE",
        -                  "OCR_LOW_CONFIDENCE",
        -                  "MANUAL_REVIEW_REQUIRED",
        -                  "ACCEPTANCE_REQUIRED",
        -                  "INVALID_TOKEN"
        -                ],
        -                "type": "string"
        -              },
        -              "details": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "message": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "recoverable": {
        -                "type": "boolean"
        -              },
        -              "retry_after_seconds": {
        -                "anyOf": [
        -                  {
        -                    "minimum": 0,
        -                    "type": "integer"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              }
        -            },
        -            "required": [
        -              "code",
        -              "message",
        -              "recoverable"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      }
        -    },
        -    "required": [
        -      "_meta"
        -    ],
        -    "type": "object"
        -  }
        -]New value: +[
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "_meta": {
        +        "additionalProperties": false,
        +        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        +        "properties": {
        +          "deliverables": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        +                "properties": {
        +                  "docx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "dxf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "expires_at": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  },
        +                  "pdf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "xlsx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "expires_at"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "document_id": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "issued_at": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "output_mode": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Surfaces what a trimmed ``output_mode`` withheld from ``data``.\n\nA trimmed mode (``summary`` / ``material_schedule`` / ``boq`` /\n``boq_with_backup``) withholds\nalready-computed fields to keep the chat payload small. The withheld value\nreads to a client agent as \"capability missing\" (the box-culvert \"geometry\nbuilder isn't firing\" scare) rather than \"pared for size\": ``drawing`` and\n``audit_trail`` appear as ``null``, ``boq_rows`` as an empty list ``[]``\n(its type forbids ``null``) — both indistinguishable from a genuine absent\nresult. This names the withheld fields and the exact mode that brings each\nback, so the value is unambiguous. Absent on the default ``full_json`` mode\n— nothing is withheld, nothing to point at.",
        +                "properties": {
        +                  "mode": {
        +                    "enum": [
        +                      "summary",
        +                      "material_schedule",
        +                      "boq",
        +                      "boq_with_backup"
        +                    ],
        +                    "type": "string"
        +                  },
        +                  "omitted_fields": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "minItems": 1,
        +                    "type": "array"
        +                  },
        +                  "retrieve_with": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "mode",
        +                  "omitted_fields",
        +                  "retrieve_with"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "rate_limit_remaining": {
        +            "anyOf": [
        +              {
        +                "minimum": 0,
        +                "type": "integer"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "request_id": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "schema_version": {
        +            "const": "1.0.0",
        +            "default": "1.0.0",
        +            "type": "string"
        +          },
        +          "scope_boundary": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        +                "properties": {
        +                  "not_in_scope": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "produced": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "recommended_companions": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "type": "string"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "produced",
        +                  "not_in_scope"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tier": {
        +            "enum": [
        +              "free",
        +              "paid"
        +            ],
        +            "type": "string"
        +          },
        +          "tier_upgrade": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        +                "properties": {
        +                  "available_tiers": {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        +                      "properties": {
        +                        "billing": {
        +                          "enum": [
        +                            "one_off",
        +                            "monthly",
        +                            "annual"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "currency": {
        +                          "enum": [
        +                            "GBP",
        +                            "SGD",
        +                            "EUR",
        +                            "USD",
        +                            "CAD",
        +                            "AUD",
        +                            "NZD",
        +                            "MYR"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "display_name": {
        +                          "type": "string"
        +                        },
        +                        "price_local": {
        +                          "type": "number"
        +                        },
        +                        "tier_slug": {
        +                          "enum": [
        +                            "7_day_pass",
        +                            "solo",
        +                            "studio",
        +                            "practice"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "unlock_summary": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "tier_slug",
        +                        "display_name",
        +                        "price_local",
        +                        "currency",
        +                        "billing",
        +                        "unlock_summary"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "current_tier": {
        +                    "const": "free",
        +                    "default": "free",
        +                    "type": "string"
        +                  },
        +                  "pass_credit": {
        +                    "anyOf": [
        +                      {
        +                        "additionalProperties": false,
        +                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        +                        "properties": {
        +                          "amount_local": {
        +                            "type": "number"
        +                          },
        +                          "applies_to": {
        +                            "const": "solo_first_month",
        +                            "default": "solo_first_month",
        +                            "type": "string"
        +                          },
        +                          "currency": {
        +                            "type": "string"
        +                          },
        +                          "redeemable_until": {
        +                            "type": "string"
        +                          }
        +                        },
        +                        "required": [
        +                          "amount_local",
        +                          "currency",
        +                          "redeemable_until"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "pricing_url": {
        +                    "default": "https://civilquants.com/pricing",
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "available_tiers"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tos_url": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "upgrade_hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "warranty_disclaimer": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          }
        +        },
        +        "required": [
        +          "request_id",
        +          "issued_at",
        +          "tier"
        +        ],
        +        "type": "object"
        +      },
        +      "data": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Schema § 1.1 — the typed payload returned inside `MCPResponse[ComputeResult]`.\n\nFree-tier responses omit `drawings` (the downloadable CAD artefact\npointers — the paid differentiator); the bridge enforces this. The\n`audit_trail` and the inline `drawing` preview are present on BOTH tiers\n(V1 ALIGN / 60th-fire D + C). `text_summary` is bounded to 2000 chars —\nkeeps the LLM-facing summary token-cheap and forces longer narrative into\nBoQ row descriptions where it belongs. `warnings` is the non-fatal\ngeometry advisory list (both tiers).",
        +            "properties": {
        +              "assembly_slug": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "audit_trail": {
        +                "anyOf": [
        +                  {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.7 — paid-tier audit-trail entry.\n\nOne entry per BoQ row; `boq_row_index` ties to the row position in\n`ComputeResult.boq_rows`. `derivation` is the human-readable formula\nwalk-through; `formula` is the optional formal expression.",
        +                      "properties": {
        +                        "boq_row_index": {
        +                          "minimum": 0,
        +                          "type": "integer"
        +                        },
        +                        "derivation": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "formula": {
        +                          "anyOf": [
        +                            {
        +                              "type": "string"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ],
        +                          "default": null
        +                        },
        +                        "id": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "parameters_referenced": {
        +                          "items": {
        +                            "type": "string"
        +                          },
        +                          "type": "array"
        +                        }
        +                      },
        +                      "required": [
        +                        "id",
        +                        "boq_row_index",
        +                        "derivation"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "boq_rows": {
        +                "items": {
        +                  "additionalProperties": false,
        +                  "description": "Schema § 1.3 — a single bill row in the requested standard's format.\n\n`description` is the non-verbatim functional description per spec § 13.9 /\n§ 15 invariant — NEVER reproduces a standard's verbatim clause text.\n`rate` / `amount` ship null because rates are commodity data the customer\nowns; the engine's job is the measurement, not the pricing.",
        +                  "properties": {
        +                    "amount": {
        +                      "anyOf": [
        +                        {
        +                          "type": "number"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "attribution": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "audit_id": {
        +                      "anyOf": [
        +                        {
        +                          "type": "string"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "description": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "quantity": {
        +                      "minimum": 0,
        +                      "type": "number"
        +                    },
        +                    "rate": {
        +                      "anyOf": [
        +                        {
        +                          "type": "number"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "unit": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "work_section": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    }
        +                  },
        +                  "required": [
        +                    "work_section",
        +                    "description",
        +                    "quantity",
        +                    "unit",
        +                    "attribution"
        +                  ],
        +                  "type": "object"
        +                },
        +                "type": "array"
        +              },
        +              "drawing": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": false,
        +                    "description": "Schema § 1.6a — inline server-rendered SVG preview of the geometry.\n\nThe MCP mirror of the web ``/compute`` response's ``drawing`` field\n(``api.schemas.compute.DrawingRef``): the same on-screen dimensioned\ndrawing both tiers see in the workspace, surfaced on the MCP compute\nresponse so a chat client can render it inline (60th-fire item C). This\nis the on-screen preview — present on BOTH tiers per the free/paid\nboundary; the downloadable CAD artefacts (DXF / dimensioned PDF) remain\nthe paid differentiator via the export tools.\n\nDefined here rather than importing ``DrawingRef`` because the web\n``schemas`` package imports back into this module (``schemas.render``),\nso reusing it would create an import cycle — the MCP wire contract keeps\nits own copy, the same pattern as ``BoQRow`` / ``DrawingReference``.",
        +                    "properties": {
        +                      "entity_count": {
        +                        "minimum": 0,
        +                        "type": "integer"
        +                      },
        +                      "svg_b64": {
        +                        "minLength": 1,
        +                        "type": "string"
        +                      },
        +                      "unit_of_drawing": {
        +                        "const": "m",
        +                        "default": "m",
        +                        "type": "string"
        +                      },
        +                      "viewbox_height": {
        +                        "exclusiveMinimum": 0,
        +                        "type": "number"
        +                      },
        +                      "viewbox_width": {
        +                        "exclusiveMinimum": 0,
        +                        "type": "number"
        +                      },
        +                      "viewbox_x": {
        +                        "type": "number"
        +                      },
        +                      "viewbox_y": {
        +                        "type": "number"
        +                      }
        +                    },
        +                    "required": [
        +                      "svg_b64",
        +                      "viewbox_x",
        +                      "viewbox_y",
        +                      "viewbox_width",
        +                      "viewbox_height",
        +                      "entity_count"
        +                    ],
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "drawings": {
        +                "anyOf": [
        +                  {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.6 — paid-tier drawing artefact pointer.\n\n`url` is an R2-signed URL; expiry is carried in `_meta.deliverables.expires_at`\non the envelope (not duplicated here). `layers` is DXF-only; PDF/SVG\ncallers omit it.",
        +                      "properties": {
        +                        "drawing_type": {
        +                          "enum": [
        +                            "section",
        +                            "plan",
        +                            "elevation",
        +                            "isometric",
        +                            "detail"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "format": {
        +                          "enum": [
        +                            "DXF",
        +                            "PDF",
        +                            "SVG"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "layers": {
        +                          "anyOf": [
        +                            {
        +                              "items": {
        +                                "type": "string"
        +                              },
        +                              "type": "array"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ],
        +                          "default": null
        +                        },
        +                        "scale": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "sheet_size": {
        +                          "enum": [
        +                            "A1",
        +                            "A2",
        +                            "A3",
        +                            "A4"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "url": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "drawing_type",
        +                        "format",
        +                        "url",
        +                        "sheet_size",
        +                        "scale"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "parameters_used": {
        +                "additionalProperties": false,
        +                "description": "Schema § 1.2 — the parameter snapshot the engine actually used.\n\nSplits user-supplied values from engine defaults so customers can see\nwhich numbers came from them and which the engine filled in. Every\ndefaulted parameter SHOULD have a corresponding entry in `assumptions`\n— the bridge layer enforces this when wrapping engine output.",
        +                "properties": {
        +                  "assumptions": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "engine_defaults": {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  "user_supplied": {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  }
        +                },
        +                "type": "object"
        +              },
        +              "standard": {
        +                "enum": [
        +                  "CESMM4",
        +                  "NRM2",
        +                  "SMM7",
        +                  "MMHW"
        +                ],
        +                "type": "string"
        +              },
        +              "text_summary": {
        +                "maxLength": 2000,
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "totals_summary": {
        +                "additionalProperties": false,
        +                "description": "Schema § 1.4 — totals_summary as a typed wrapper around the free-form dict.\n\nWire shape is a flat object (`{\"concrete_m3\": {...}, \"rebar_t\": {...}}`).\nWe model it as `RootModel`-equivalent via `model_config(extra=\"allow\")`\n+ a single `__root__`-style `entries` dict. Pydantic v2 recommends\n`RootModel` for free-form roots; using a wrapper class keeps the import\nsurface uniform with the rest of this module.",
        +                "properties": {
        +                  "entries": {
        +                    "additionalProperties": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.4 — single material/work-class total entry.",
        +                      "properties": {
        +                        "quantity": {
        +                          "minimum": 0,
        +                          "type": "number"
        +                        },
        +                        "unit": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "quantity",
        +                        "unit"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "object"
        +                  }
        +                },
        +                "type": "object"
        +              },
        +              "warnings": {
        +                "items": {
        +                  "additionalProperties": false,
        +                  "description": "Schema § 1.8 — a non-fatal geometry advisory (56th-fire T2).\n\nThe wire projection of the engine's `core.GeometryWarning`. Advisory only:\na warning NEVER changes a measured quantity — it flags geometry that is\nvalid but likely a mistake (e.g. a stale dependent-height default). Present\non BOTH tiers — a correctness/safety signal, not a paid feature.",
        +                  "properties": {
        +                    "affected_params": {
        +                      "items": {
        +                        "type": "string"
        +                      },
        +                      "type": "array"
        +                    },
        +                    "code": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "detail": {
        +                      "additionalProperties": {
        +                        "type": "number"
        +                      },
        +                      "type": "object"
        +                    },
        +                    "message": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "severity": {
        +                      "enum": [
        +                        "info",
        +                        "advisory",
        +                        "caution"
        +                      ],
        +                      "type": "string"
        +                    }
        +                  },
        +                  "required": [
        +                    "code",
        +                    "severity",
        +                    "message"
        +                  ],
        +                  "type": "object"
        +                },
        +                "type": "array"
        +              }
        +            },
        +            "required": [
        +              "assembly_slug",
        +              "standard",
        +              "parameters_used",
        +              "boq_rows",
        +              "totals_summary",
        +              "text_summary"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      },
        +      "error": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        +            "properties": {
        +              "code": {
        +                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        +                "enum": [
        +                  "RATE_LIMIT_EXCEEDED",
        +                  "TIER_INSUFFICIENT",
        +                  "INVALID_INPUT",
        +                  "SCHEMA_VERSION_MISMATCH",
        +                  "SCHEMA_INVARIANT_VIOLATION",
        +                  "UPSTREAM_TIMEOUT",
        +                  "BACKEND_FAILURE",
        +                  "IP_BLOCKED",
        +                  "RESOURCE_NOT_FOUND",
        +                  "RENDER_FAILURE",
        +                  "OCR_LOW_CONFIDENCE",
        +                  "MANUAL_REVIEW_REQUIRED",
        +                  "ACCEPTANCE_REQUIRED",
        +                  "INVALID_TOKEN"
        +                ],
        +                "type": "string"
        +              },
        +              "details": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "message": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "recoverable": {
        +                "type": "boolean"
        +              },
        +              "retry_after_seconds": {
        +                "anyOf": [
        +                  {
        +                    "minimum": 0,
        +                    "type": "integer"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              }
        +            },
        +            "required": [
        +              "code",
        +              "message",
        +              "recoverable"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      }
        +    },
        +    "required": [
        +      "_meta"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "_meta": {
        +        "additionalProperties": false,
        +        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        +        "properties": {
        +          "deliverables": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        +                "properties": {
        +                  "docx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "dxf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "expires_at": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  },
        +                  "pdf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "xlsx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "expires_at"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "document_id": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "issued_at": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "output_mode": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Surfaces what a trimmed ``output_mode`` withheld from ``data``.\n\nA trimmed mode (``summary`` / ``material_schedule`` / ``boq`` /\n``boq_with_backup``) withholds\nalready-computed fields to keep the chat payload small. The withheld value\nreads to a client agent as \"capability missing\" (the box-culvert \"geometry\nbuilder isn't firing\" scare) rather than \"pared for size\": ``drawing`` and\n``audit_trail`` appear as ``null``, ``boq_rows`` as an empty list ``[]``\n(its type forbids ``null``) — both indistinguishable from a genuine absent\nresult. This names the withheld fields and the exact mode that brings each\nback, so the value is unambiguous. Absent on the default ``full_json`` mode\n— nothing is withheld, nothing to point at.",
        +                "properties": {
        +                  "mode": {
        +                    "enum": [
        +                      "summary",
        +                      "material_schedule",
        +                      "boq",
        +                      "boq_with_backup"
        +                    ],
        +                    "type": "string"
        +                  },
        +                  "omitted_fields": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "minItems": 1,
        +                    "type": "array"
        +                  },
        +                  "retrieve_with": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "mode",
        +                  "omitted_fields",
        +                  "retrieve_with"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "rate_limit_remaining": {
        +            "anyOf": [
        +              {
        +                "minimum": 0,
        +                "type": "integer"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "request_id": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "schema_version": {
        +            "const": "1.0.0",
        +            "default": "1.0.0",
        +            "type": "string"
        +          },
        +          "scope_boundary": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        +                "properties": {
        +                  "not_in_scope": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "produced": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "recommended_companions": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "type": "string"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "produced",
        +                  "not_in_scope"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tier": {
        +            "enum": [
        +              "free",
        +              "paid"
        +            ],
        +            "type": "string"
        +          },
        +          "tier_upgrade": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        +                "properties": {
        +                  "available_tiers": {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        +                      "properties": {
        +                        "billing": {
        +                          "enum": [
        +                            "one_off",
        +                            "monthly",
        +                            "annual"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "currency": {
        +                          "enum": [
        +                            "GBP",
        +                            "SGD",
        +                            "EUR",
        +                            "USD",
        +                            "CAD",
        +                            "AUD",
        +                            "NZD",
        +                            "MYR"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "display_name": {
        +                          "type": "string"
        +                        },
        +                        "price_local": {
        +                          "type": "number"
        +                        },
        +                        "tier_slug": {
        +                          "enum": [
        +                            "7_day_pass",
        +                            "solo",
        +                            "studio",
        +                            "practice"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "unlock_summary": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "tier_slug",
        +                        "display_name",
        +                        "price_local",
        +                        "currency",
        +                        "billing",
        +                        "unlock_summary"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "current_tier": {
        +                    "const": "free",
        +                    "default": "free",
        +                    "type": "string"
        +                  },
        +                  "pass_credit": {
        +                    "anyOf": [
        +                      {
        +                        "additionalProperties": false,
        +                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        +                        "properties": {
        +                          "amount_local": {
        +                            "type": "number"
        +                          },
        +                          "applies_to": {
        +                            "const": "solo_first_month",
        +                            "default": "solo_first_month",
        +                            "type": "string"
        +                          },
        +                          "currency": {
        +                            "type": "string"
        +                          },
        +                          "redeemable_until": {
        +                            "type": "string"
        +                          }
        +                        },
        +                        "required": [
        +                          "amount_local",
        +                          "currency",
        +                          "redeemable_until"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "pricing_url": {
        +                    "default": "https://civilquants.com/pricing",
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "available_tiers"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tos_url": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "upgrade_hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "warranty_disclaimer": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          }
        +        },
        +        "required": [
        +          "request_id",
        +          "issued_at",
        +          "tier"
        +        ],
        +        "type": "object"
        +      },
        +      "data": {
        +        "default": null,
        +        "title": "Data"
        +      },
        +      "error": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        +            "properties": {
        +              "code": {
        +                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        +                "enum": [
        +                  "RATE_LIMIT_EXCEEDED",
        +                  "TIER_INSUFFICIENT",
        +                  "INVALID_INPUT",
        +                  "SCHEMA_VERSION_MISMATCH",
        +                  "SCHEMA_INVARIANT_VIOLATION",
        +                  "UPSTREAM_TIMEOUT",
        +                  "BACKEND_FAILURE",
        +                  "IP_BLOCKED",
        +                  "RESOURCE_NOT_FOUND",
        +                  "RENDER_FAILURE",
        +                  "OCR_LOW_CONFIDENCE",
        +                  "MANUAL_REVIEW_REQUIRED",
        +                  "ACCEPTANCE_REQUIRED",
        +                  "INVALID_TOKEN"
        +                ],
        +                "type": "string"
        +              },
        +              "details": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "message": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "recoverable": {
        +                "type": "boolean"
        +              },
        +              "retry_after_seconds": {
        +                "anyOf": [
        +                  {
        +                    "minimum": 0,
        +                    "type": "integer"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              }
        +            },
        +            "required": [
        +              "code",
        +              "message",
        +              "recoverable"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      }
        +    },
        +    "required": [
        +      "_meta"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedcompute_utility_chamber2 fields changed
      • changedInput schema / properties / output_mode / enum
        Previous value: -[
        -  "summary",
        -  "boq",
        -  "boq_with_backup",
        -  "full_json"
        -]New value: +[
        +  "summary",
        +  "material_schedule",
        +  "boq",
        +  "boq_with_backup",
        +  "full_json"
        +]
      • changedOutput schema / properties / result / anyOf
        Previous value: -[
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "_meta": {
        -        "additionalProperties": false,
        -        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        -        "properties": {
        -          "deliverables": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        -                "properties": {
        -                  "docx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "dxf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "expires_at": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  },
        -                  "pdf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "xlsx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "expires_at"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "document_id": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "issued_at": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "output_mode": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Surfaces what a trimmed ``output_mode`` withheld from ``data``.\n\nA trimmed mode (``summary`` / ``boq`` / ``boq_with_backup``) withholds\nalready-computed fields to keep the chat payload small. The withheld value\nreads to a client agent as \"capability missing\" (the box-culvert \"geometry\nbuilder isn't firing\" scare) rather than \"pared for size\": ``drawing`` and\n``audit_trail`` appear as ``null``, ``boq_rows`` as an empty list ``[]``\n(its type forbids ``null``) — both indistinguishable from a genuine absent\nresult. This names the withheld fields and the exact mode that brings each\nback, so the value is unambiguous. Absent on the default ``full_json`` mode\n— nothing is withheld, nothing to point at.",
        -                "properties": {
        -                  "mode": {
        -                    "enum": [
        -                      "summary",
        -                      "boq",
        -                      "boq_with_backup"
        -                    ],
        -                    "type": "string"
        -                  },
        -                  "omitted_fields": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "minItems": 1,
        -                    "type": "array"
        -                  },
        -                  "retrieve_with": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "mode",
        -                  "omitted_fields",
        -                  "retrieve_with"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "rate_limit_remaining": {
        -            "anyOf": [
        -              {
        -                "minimum": 0,
        -                "type": "integer"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "request_id": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "schema_version": {
        -            "const": "1.0.0",
        -            "default": "1.0.0",
        -            "type": "string"
        -          },
        -          "scope_boundary": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        -                "properties": {
        -                  "not_in_scope": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "produced": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "recommended_companions": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "type": "string"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "produced",
        -                  "not_in_scope"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tier": {
        -            "enum": [
        -              "free",
        -              "paid"
        -            ],
        -            "type": "string"
        -          },
        -          "tier_upgrade": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        -                "properties": {
        -                  "available_tiers": {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        -                      "properties": {
        -                        "billing": {
        -                          "enum": [
        -                            "one_off",
        -                            "monthly",
        -                            "annual"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "currency": {
        -                          "enum": [
        -                            "GBP",
        -                            "SGD",
        -                            "EUR",
        -                            "USD",
        -                            "CAD",
        -                            "AUD",
        -                            "NZD",
        -                            "MYR"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "display_name": {
        -                          "type": "string"
        -                        },
        -                        "price_local": {
        -                          "type": "number"
        -                        },
        -                        "tier_slug": {
        -                          "enum": [
        -                            "7_day_pass",
        -                            "solo",
        -                            "studio",
        -                            "practice"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "unlock_summary": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "tier_slug",
        -                        "display_name",
        -                        "price_local",
        -                        "currency",
        -                        "billing",
        -                        "unlock_summary"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "current_tier": {
        -                    "const": "free",
        -                    "default": "free",
        -                    "type": "string"
        -                  },
        -                  "pass_credit": {
        -                    "anyOf": [
        -                      {
        -                        "additionalProperties": false,
        -                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        -                        "properties": {
        -                          "amount_local": {
        -                            "type": "number"
        -                          },
        -                          "applies_to": {
        -                            "const": "solo_first_month",
        -                            "default": "solo_first_month",
        -                            "type": "string"
        -                          },
        -                          "currency": {
        -                            "type": "string"
        -                          },
        -                          "redeemable_until": {
        -                            "type": "string"
        -                          }
        -                        },
        -                        "required": [
        -                          "amount_local",
        -                          "currency",
        -                          "redeemable_until"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "pricing_url": {
        -                    "default": "https://civilquants.com/pricing",
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "available_tiers"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tos_url": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "upgrade_hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "warranty_disclaimer": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          }
        -        },
        -        "required": [
        -          "request_id",
        -          "issued_at",
        -          "tier"
        -        ],
        -        "type": "object"
        -      },
        -      "data": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Schema § 1.1 — the typed payload returned inside `MCPResponse[ComputeResult]`.\n\nFree-tier responses omit `drawings` (the downloadable CAD artefact\npointers — the paid differentiator); the bridge enforces this. The\n`audit_trail` and the inline `drawing` preview are present on BOTH tiers\n(V1 ALIGN / 60th-fire D + C). `text_summary` is bounded to 2000 chars —\nkeeps the LLM-facing summary token-cheap and forces longer narrative into\nBoQ row descriptions where it belongs. `warnings` is the non-fatal\ngeometry advisory list (both tiers).",
        -            "properties": {
        -              "assembly_slug": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "audit_trail": {
        -                "anyOf": [
        -                  {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.7 — paid-tier audit-trail entry.\n\nOne entry per BoQ row; `boq_row_index` ties to the row position in\n`ComputeResult.boq_rows`. `derivation` is the human-readable formula\nwalk-through; `formula` is the optional formal expression.",
        -                      "properties": {
        -                        "boq_row_index": {
        -                          "minimum": 0,
        -                          "type": "integer"
        -                        },
        -                        "derivation": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "formula": {
        -                          "anyOf": [
        -                            {
        -                              "type": "string"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ],
        -                          "default": null
        -                        },
        -                        "id": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "parameters_referenced": {
        -                          "items": {
        -                            "type": "string"
        -                          },
        -                          "type": "array"
        -                        }
        -                      },
        -                      "required": [
        -                        "id",
        -                        "boq_row_index",
        -                        "derivation"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "boq_rows": {
        -                "items": {
        -                  "additionalProperties": false,
        -                  "description": "Schema § 1.3 — a single bill row in the requested standard's format.\n\n`description` is the non-verbatim functional description per spec § 13.9 /\n§ 15 invariant — NEVER reproduces a standard's verbatim clause text.\n`rate` / `amount` ship null because rates are commodity data the customer\nowns; the engine's job is the measurement, not the pricing.",
        -                  "properties": {
        -                    "amount": {
        -                      "anyOf": [
        -                        {
        -                          "type": "number"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "attribution": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "audit_id": {
        -                      "anyOf": [
        -                        {
        -                          "type": "string"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "description": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "quantity": {
        -                      "minimum": 0,
        -                      "type": "number"
        -                    },
        -                    "rate": {
        -                      "anyOf": [
        -                        {
        -                          "type": "number"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "unit": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "work_section": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    }
        -                  },
        -                  "required": [
        -                    "work_section",
        -                    "description",
        -                    "quantity",
        -                    "unit",
        -                    "attribution"
        -                  ],
        -                  "type": "object"
        -                },
        -                "type": "array"
        -              },
        -              "drawing": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": false,
        -                    "description": "Schema § 1.6a — inline server-rendered SVG preview of the geometry.\n\nThe MCP mirror of the web ``/compute`` response's ``drawing`` field\n(``api.schemas.compute.DrawingRef``): the same on-screen dimensioned\ndrawing both tiers see in the workspace, surfaced on the MCP compute\nresponse so a chat client can render it inline (60th-fire item C). This\nis the on-screen preview — present on BOTH tiers per the free/paid\nboundary; the downloadable CAD artefacts (DXF / dimensioned PDF) remain\nthe paid differentiator via the export tools.\n\nDefined here rather than importing ``DrawingRef`` because the web\n``schemas`` package imports back into this module (``schemas.render``),\nso reusing it would create an import cycle — the MCP wire contract keeps\nits own copy, the same pattern as ``BoQRow`` / ``DrawingReference``.",
        -                    "properties": {
        -                      "entity_count": {
        -                        "minimum": 0,
        -                        "type": "integer"
        -                      },
        -                      "svg_b64": {
        -                        "minLength": 1,
        -                        "type": "string"
        -                      },
        -                      "unit_of_drawing": {
        -                        "const": "m",
        -                        "default": "m",
        -                        "type": "string"
        -                      },
        -                      "viewbox_height": {
        -                        "exclusiveMinimum": 0,
        -                        "type": "number"
        -                      },
        -                      "viewbox_width": {
        -                        "exclusiveMinimum": 0,
        -                        "type": "number"
        -                      },
        -                      "viewbox_x": {
        -                        "type": "number"
        -                      },
        -                      "viewbox_y": {
        -                        "type": "number"
        -                      }
        -                    },
        -                    "required": [
        -                      "svg_b64",
        -                      "viewbox_x",
        -                      "viewbox_y",
        -                      "viewbox_width",
        -                      "viewbox_height",
        -                      "entity_count"
        -                    ],
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "drawings": {
        -                "anyOf": [
        -                  {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.6 — paid-tier drawing artefact pointer.\n\n`url` is an R2-signed URL; expiry is carried in `_meta.deliverables.expires_at`\non the envelope (not duplicated here). `layers` is DXF-only; PDF/SVG\ncallers omit it.",
        -                      "properties": {
        -                        "drawing_type": {
        -                          "enum": [
        -                            "section",
        -                            "plan",
        -                            "elevation",
        -                            "isometric",
        -                            "detail"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "format": {
        -                          "enum": [
        -                            "DXF",
        -                            "PDF",
        -                            "SVG"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "layers": {
        -                          "anyOf": [
        -                            {
        -                              "items": {
        -                                "type": "string"
        -                              },
        -                              "type": "array"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ],
        -                          "default": null
        -                        },
        -                        "scale": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "sheet_size": {
        -                          "enum": [
        -                            "A1",
        -                            "A2",
        -                            "A3",
        -                            "A4"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "url": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "drawing_type",
        -                        "format",
        -                        "url",
        -                        "sheet_size",
        -                        "scale"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "parameters_used": {
        -                "additionalProperties": false,
        -                "description": "Schema § 1.2 — the parameter snapshot the engine actually used.\n\nSplits user-supplied values from engine defaults so customers can see\nwhich numbers came from them and which the engine filled in. Every\ndefaulted parameter SHOULD have a corresponding entry in `assumptions`\n— the bridge layer enforces this when wrapping engine output.",
        -                "properties": {
        -                  "assumptions": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "engine_defaults": {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  "user_supplied": {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  }
        -                },
        -                "type": "object"
        -              },
        -              "standard": {
        -                "enum": [
        -                  "CESMM4",
        -                  "NRM2",
        -                  "SMM7",
        -                  "MMHW"
        -                ],
        -                "type": "string"
        -              },
        -              "text_summary": {
        -                "maxLength": 2000,
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "totals_summary": {
        -                "additionalProperties": false,
        -                "description": "Schema § 1.4 — totals_summary as a typed wrapper around the free-form dict.\n\nWire shape is a flat object (`{\"concrete_m3\": {...}, \"rebar_t\": {...}}`).\nWe model it as `RootModel`-equivalent via `model_config(extra=\"allow\")`\n+ a single `__root__`-style `entries` dict. Pydantic v2 recommends\n`RootModel` for free-form roots; using a wrapper class keeps the import\nsurface uniform with the rest of this module.",
        -                "properties": {
        -                  "entries": {
        -                    "additionalProperties": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.4 — single material/work-class total entry.",
        -                      "properties": {
        -                        "quantity": {
        -                          "minimum": 0,
        -                          "type": "number"
        -                        },
        -                        "unit": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "quantity",
        -                        "unit"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "object"
        -                  }
        -                },
        -                "type": "object"
        -              },
        -              "warnings": {
        -                "items": {
        -                  "additionalProperties": false,
        -                  "description": "Schema § 1.8 — a non-fatal geometry advisory (56th-fire T2).\n\nThe wire projection of the engine's `core.GeometryWarning`. Advisory only:\na warning NEVER changes a measured quantity — it flags geometry that is\nvalid but likely a mistake (e.g. a stale dependent-height default). Present\non BOTH tiers — a correctness/safety signal, not a paid feature.",
        -                  "properties": {
        -                    "affected_params": {
        -                      "items": {
        -                        "type": "string"
        -                      },
        -                      "type": "array"
        -                    },
        -                    "code": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "detail": {
        -                      "additionalProperties": {
        -                        "type": "number"
        -                      },
        -                      "type": "object"
        -                    },
        -                    "message": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "severity": {
        -                      "enum": [
        -                        "info",
        -                        "advisory",
        -                        "caution"
        -                      ],
        -                      "type": "string"
        -                    }
        -                  },
        -                  "required": [
        -                    "code",
        -                    "severity",
        -                    "message"
        -                  ],
        -                  "type": "object"
        -                },
        -                "type": "array"
        -              }
        -            },
        -            "required": [
        -              "assembly_slug",
        -              "standard",
        -              "parameters_used",
        -              "boq_rows",
        -              "totals_summary",
        -              "text_summary"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      },
        -      "error": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        -            "properties": {
        -              "code": {
        -                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        -                "enum": [
        -                  "RATE_LIMIT_EXCEEDED",
        -                  "TIER_INSUFFICIENT",
        -                  "INVALID_INPUT",
        -                  "SCHEMA_VERSION_MISMATCH",
        -                  "SCHEMA_INVARIANT_VIOLATION",
        -                  "UPSTREAM_TIMEOUT",
        -                  "BACKEND_FAILURE",
        -                  "IP_BLOCKED",
        -                  "RESOURCE_NOT_FOUND",
        -                  "RENDER_FAILURE",
        -                  "OCR_LOW_CONFIDENCE",
        -                  "MANUAL_REVIEW_REQUIRED",
        -                  "ACCEPTANCE_REQUIRED",
        -                  "INVALID_TOKEN"
        -                ],
        -                "type": "string"
        -              },
        -              "details": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "message": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "recoverable": {
        -                "type": "boolean"
        -              },
        -              "retry_after_seconds": {
        -                "anyOf": [
        -                  {
        -                    "minimum": 0,
        -                    "type": "integer"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              }
        -            },
        -            "required": [
        -              "code",
        -              "message",
        -              "recoverable"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      }
        -    },
        -    "required": [
        -      "_meta"
        -    ],
        -    "type": "object"
        -  },
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "_meta": {
        -        "additionalProperties": false,
        -        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        -        "properties": {
        -          "deliverables": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        -                "properties": {
        -                  "docx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "dxf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "expires_at": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  },
        -                  "pdf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "xlsx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "expires_at"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "document_id": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "issued_at": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "output_mode": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Surfaces what a trimmed ``output_mode`` withheld from ``data``.\n\nA trimmed mode (``summary`` / ``boq`` / ``boq_with_backup``) withholds\nalready-computed fields to keep the chat payload small. The withheld value\nreads to a client agent as \"capability missing\" (the box-culvert \"geometry\nbuilder isn't firing\" scare) rather than \"pared for size\": ``drawing`` and\n``audit_trail`` appear as ``null``, ``boq_rows`` as an empty list ``[]``\n(its type forbids ``null``) — both indistinguishable from a genuine absent\nresult. This names the withheld fields and the exact mode that brings each\nback, so the value is unambiguous. Absent on the default ``full_json`` mode\n— nothing is withheld, nothing to point at.",
        -                "properties": {
        -                  "mode": {
        -                    "enum": [
        -                      "summary",
        -                      "boq",
        -                      "boq_with_backup"
        -                    ],
        -                    "type": "string"
        -                  },
        -                  "omitted_fields": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "minItems": 1,
        -                    "type": "array"
        -                  },
        -                  "retrieve_with": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "mode",
        -                  "omitted_fields",
        -                  "retrieve_with"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "rate_limit_remaining": {
        -            "anyOf": [
        -              {
        -                "minimum": 0,
        -                "type": "integer"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "request_id": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "schema_version": {
        -            "const": "1.0.0",
        -            "default": "1.0.0",
        -            "type": "string"
        -          },
        -          "scope_boundary": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        -                "properties": {
        -                  "not_in_scope": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "produced": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "recommended_companions": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "type": "string"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "produced",
        -                  "not_in_scope"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tier": {
        -            "enum": [
        -              "free",
        -              "paid"
        -            ],
        -            "type": "string"
        -          },
        -          "tier_upgrade": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        -                "properties": {
        -                  "available_tiers": {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        -                      "properties": {
        -                        "billing": {
        -                          "enum": [
        -                            "one_off",
        -                            "monthly",
        -                            "annual"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "currency": {
        -                          "enum": [
        -                            "GBP",
        -                            "SGD",
        -                            "EUR",
        -                            "USD",
        -                            "CAD",
        -                            "AUD",
        -                            "NZD",
        -                            "MYR"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "display_name": {
        -                          "type": "string"
        -                        },
        -                        "price_local": {
        -                          "type": "number"
        -                        },
        -                        "tier_slug": {
        -                          "enum": [
        -                            "7_day_pass",
        -                            "solo",
        -                            "studio",
        -                            "practice"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "unlock_summary": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "tier_slug",
        -                        "display_name",
        -                        "price_local",
        -                        "currency",
        -                        "billing",
        -                        "unlock_summary"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "current_tier": {
        -                    "const": "free",
        -                    "default": "free",
        -                    "type": "string"
        -                  },
        -                  "pass_credit": {
        -                    "anyOf": [
        -                      {
        -                        "additionalProperties": false,
        -                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        -                        "properties": {
        -                          "amount_local": {
        -                            "type": "number"
        -                          },
        -                          "applies_to": {
        -                            "const": "solo_first_month",
        -                            "default": "solo_first_month",
        -                            "type": "string"
        -                          },
        -                          "currency": {
        -                            "type": "string"
        -                          },
        -                          "redeemable_until": {
        -                            "type": "string"
        -                          }
        -                        },
        -                        "required": [
        -                          "amount_local",
        -                          "currency",
        -                          "redeemable_until"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "pricing_url": {
        -                    "default": "https://civilquants.com/pricing",
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "available_tiers"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tos_url": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "upgrade_hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "warranty_disclaimer": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          }
        -        },
        -        "required": [
        -          "request_id",
        -          "issued_at",
        -          "tier"
        -        ],
        -        "type": "object"
        -      },
        -      "data": {
        -        "default": null,
        -        "title": "Data"
        -      },
        -      "error": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        -            "properties": {
        -              "code": {
        -                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        -                "enum": [
        -                  "RATE_LIMIT_EXCEEDED",
        -                  "TIER_INSUFFICIENT",
        -                  "INVALID_INPUT",
        -                  "SCHEMA_VERSION_MISMATCH",
        -                  "SCHEMA_INVARIANT_VIOLATION",
        -                  "UPSTREAM_TIMEOUT",
        -                  "BACKEND_FAILURE",
        -                  "IP_BLOCKED",
        -                  "RESOURCE_NOT_FOUND",
        -                  "RENDER_FAILURE",
        -                  "OCR_LOW_CONFIDENCE",
        -                  "MANUAL_REVIEW_REQUIRED",
        -                  "ACCEPTANCE_REQUIRED",
        -                  "INVALID_TOKEN"
        -                ],
        -                "type": "string"
        -              },
        -              "details": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "message": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "recoverable": {
        -                "type": "boolean"
        -              },
        -              "retry_after_seconds": {
        -                "anyOf": [
        -                  {
        -                    "minimum": 0,
        -                    "type": "integer"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              }
        -            },
        -            "required": [
        -              "code",
        -              "message",
        -              "recoverable"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      }
        -    },
        -    "required": [
        -      "_meta"
        -    ],
        -    "type": "object"
        -  }
        -]New value: +[
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "_meta": {
        +        "additionalProperties": false,
        +        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        +        "properties": {
        +          "deliverables": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        +                "properties": {
        +                  "docx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "dxf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "expires_at": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  },
        +                  "pdf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "xlsx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "expires_at"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "document_id": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "issued_at": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "output_mode": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Surfaces what a trimmed ``output_mode`` withheld from ``data``.\n\nA trimmed mode (``summary`` / ``material_schedule`` / ``boq`` /\n``boq_with_backup``) withholds\nalready-computed fields to keep the chat payload small. The withheld value\nreads to a client agent as \"capability missing\" (the box-culvert \"geometry\nbuilder isn't firing\" scare) rather than \"pared for size\": ``drawing`` and\n``audit_trail`` appear as ``null``, ``boq_rows`` as an empty list ``[]``\n(its type forbids ``null``) — both indistinguishable from a genuine absent\nresult. This names the withheld fields and the exact mode that brings each\nback, so the value is unambiguous. Absent on the default ``full_json`` mode\n— nothing is withheld, nothing to point at.",
        +                "properties": {
        +                  "mode": {
        +                    "enum": [
        +                      "summary",
        +                      "material_schedule",
        +                      "boq",
        +                      "boq_with_backup"
        +                    ],
        +                    "type": "string"
        +                  },
        +                  "omitted_fields": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "minItems": 1,
        +                    "type": "array"
        +                  },
        +                  "retrieve_with": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "mode",
        +                  "omitted_fields",
        +                  "retrieve_with"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "rate_limit_remaining": {
        +            "anyOf": [
        +              {
        +                "minimum": 0,
        +                "type": "integer"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "request_id": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "schema_version": {
        +            "const": "1.0.0",
        +            "default": "1.0.0",
        +            "type": "string"
        +          },
        +          "scope_boundary": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        +                "properties": {
        +                  "not_in_scope": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "produced": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "recommended_companions": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "type": "string"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "produced",
        +                  "not_in_scope"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tier": {
        +            "enum": [
        +              "free",
        +              "paid"
        +            ],
        +            "type": "string"
        +          },
        +          "tier_upgrade": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        +                "properties": {
        +                  "available_tiers": {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        +                      "properties": {
        +                        "billing": {
        +                          "enum": [
        +                            "one_off",
        +                            "monthly",
        +                            "annual"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "currency": {
        +                          "enum": [
        +                            "GBP",
        +                            "SGD",
        +                            "EUR",
        +                            "USD",
        +                            "CAD",
        +                            "AUD",
        +                            "NZD",
        +                            "MYR"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "display_name": {
        +                          "type": "string"
        +                        },
        +                        "price_local": {
        +                          "type": "number"
        +                        },
        +                        "tier_slug": {
        +                          "enum": [
        +                            "7_day_pass",
        +                            "solo",
        +                            "studio",
        +                            "practice"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "unlock_summary": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "tier_slug",
        +                        "display_name",
        +                        "price_local",
        +                        "currency",
        +                        "billing",
        +                        "unlock_summary"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "current_tier": {
        +                    "const": "free",
        +                    "default": "free",
        +                    "type": "string"
        +                  },
        +                  "pass_credit": {
        +                    "anyOf": [
        +                      {
        +                        "additionalProperties": false,
        +                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        +                        "properties": {
        +                          "amount_local": {
        +                            "type": "number"
        +                          },
        +                          "applies_to": {
        +                            "const": "solo_first_month",
        +                            "default": "solo_first_month",
        +                            "type": "string"
        +                          },
        +                          "currency": {
        +                            "type": "string"
        +                          },
        +                          "redeemable_until": {
        +                            "type": "string"
        +                          }
        +                        },
        +                        "required": [
        +                          "amount_local",
        +                          "currency",
        +                          "redeemable_until"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "pricing_url": {
        +                    "default": "https://civilquants.com/pricing",
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "available_tiers"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tos_url": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "upgrade_hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "warranty_disclaimer": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          }
        +        },
        +        "required": [
        +          "request_id",
        +          "issued_at",
        +          "tier"
        +        ],
        +        "type": "object"
        +      },
        +      "data": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Schema § 1.1 — the typed payload returned inside `MCPResponse[ComputeResult]`.\n\nFree-tier responses omit `drawings` (the downloadable CAD artefact\npointers — the paid differentiator); the bridge enforces this. The\n`audit_trail` and the inline `drawing` preview are present on BOTH tiers\n(V1 ALIGN / 60th-fire D + C). `text_summary` is bounded to 2000 chars —\nkeeps the LLM-facing summary token-cheap and forces longer narrative into\nBoQ row descriptions where it belongs. `warnings` is the non-fatal\ngeometry advisory list (both tiers).",
        +            "properties": {
        +              "assembly_slug": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "audit_trail": {
        +                "anyOf": [
        +                  {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.7 — paid-tier audit-trail entry.\n\nOne entry per BoQ row; `boq_row_index` ties to the row position in\n`ComputeResult.boq_rows`. `derivation` is the human-readable formula\nwalk-through; `formula` is the optional formal expression.",
        +                      "properties": {
        +                        "boq_row_index": {
        +                          "minimum": 0,
        +                          "type": "integer"
        +                        },
        +                        "derivation": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "formula": {
        +                          "anyOf": [
        +                            {
        +                              "type": "string"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ],
        +                          "default": null
        +                        },
        +                        "id": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "parameters_referenced": {
        +                          "items": {
        +                            "type": "string"
        +                          },
        +                          "type": "array"
        +                        }
        +                      },
        +                      "required": [
        +                        "id",
        +                        "boq_row_index",
        +                        "derivation"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "boq_rows": {
        +                "items": {
        +                  "additionalProperties": false,
        +                  "description": "Schema § 1.3 — a single bill row in the requested standard's format.\n\n`description` is the non-verbatim functional description per spec § 13.9 /\n§ 15 invariant — NEVER reproduces a standard's verbatim clause text.\n`rate` / `amount` ship null because rates are commodity data the customer\nowns; the engine's job is the measurement, not the pricing.",
        +                  "properties": {
        +                    "amount": {
        +                      "anyOf": [
        +                        {
        +                          "type": "number"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "attribution": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "audit_id": {
        +                      "anyOf": [
        +                        {
        +                          "type": "string"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "description": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "quantity": {
        +                      "minimum": 0,
        +                      "type": "number"
        +                    },
        +                    "rate": {
        +                      "anyOf": [
        +                        {
        +                          "type": "number"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "unit": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "work_section": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    }
        +                  },
        +                  "required": [
        +                    "work_section",
        +                    "description",
        +                    "quantity",
        +                    "unit",
        +                    "attribution"
        +                  ],
        +                  "type": "object"
        +                },
        +                "type": "array"
        +              },
        +              "drawing": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": false,
        +                    "description": "Schema § 1.6a — inline server-rendered SVG preview of the geometry.\n\nThe MCP mirror of the web ``/compute`` response's ``drawing`` field\n(``api.schemas.compute.DrawingRef``): the same on-screen dimensioned\ndrawing both tiers see in the workspace, surfaced on the MCP compute\nresponse so a chat client can render it inline (60th-fire item C). This\nis the on-screen preview — present on BOTH tiers per the free/paid\nboundary; the downloadable CAD artefacts (DXF / dimensioned PDF) remain\nthe paid differentiator via the export tools.\n\nDefined here rather than importing ``DrawingRef`` because the web\n``schemas`` package imports back into this module (``schemas.render``),\nso reusing it would create an import cycle — the MCP wire contract keeps\nits own copy, the same pattern as ``BoQRow`` / ``DrawingReference``.",
        +                    "properties": {
        +                      "entity_count": {
        +                        "minimum": 0,
        +                        "type": "integer"
        +                      },
        +                      "svg_b64": {
        +                        "minLength": 1,
        +                        "type": "string"
        +                      },
        +                      "unit_of_drawing": {
        +                        "const": "m",
        +                        "default": "m",
        +                        "type": "string"
        +                      },
        +                      "viewbox_height": {
        +                        "exclusiveMinimum": 0,
        +                        "type": "number"
        +                      },
        +                      "viewbox_width": {
        +                        "exclusiveMinimum": 0,
        +                        "type": "number"
        +                      },
        +                      "viewbox_x": {
        +                        "type": "number"
        +                      },
        +                      "viewbox_y": {
        +                        "type": "number"
        +                      }
        +                    },
        +                    "required": [
        +                      "svg_b64",
        +                      "viewbox_x",
        +                      "viewbox_y",
        +                      "viewbox_width",
        +                      "viewbox_height",
        +                      "entity_count"
        +                    ],
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "drawings": {
        +                "anyOf": [
        +                  {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.6 — paid-tier drawing artefact pointer.\n\n`url` is an R2-signed URL; expiry is carried in `_meta.deliverables.expires_at`\non the envelope (not duplicated here). `layers` is DXF-only; PDF/SVG\ncallers omit it.",
        +                      "properties": {
        +                        "drawing_type": {
        +                          "enum": [
        +                            "section",
        +                            "plan",
        +                            "elevation",
        +                            "isometric",
        +                            "detail"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "format": {
        +                          "enum": [
        +                            "DXF",
        +                            "PDF",
        +                            "SVG"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "layers": {
        +                          "anyOf": [
        +                            {
        +                              "items": {
        +                                "type": "string"
        +                              },
        +                              "type": "array"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ],
        +                          "default": null
        +                        },
        +                        "scale": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "sheet_size": {
        +                          "enum": [
        +                            "A1",
        +                            "A2",
        +                            "A3",
        +                            "A4"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "url": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "drawing_type",
        +                        "format",
        +                        "url",
        +                        "sheet_size",
        +                        "scale"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "parameters_used": {
        +                "additionalProperties": false,
        +                "description": "Schema § 1.2 — the parameter snapshot the engine actually used.\n\nSplits user-supplied values from engine defaults so customers can see\nwhich numbers came from them and which the engine filled in. Every\ndefaulted parameter SHOULD have a corresponding entry in `assumptions`\n— the bridge layer enforces this when wrapping engine output.",
        +                "properties": {
        +                  "assumptions": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "engine_defaults": {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  "user_supplied": {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  }
        +                },
        +                "type": "object"
        +              },
        +              "standard": {
        +                "enum": [
        +                  "CESMM4",
        +                  "NRM2",
        +                  "SMM7",
        +                  "MMHW"
        +                ],
        +                "type": "string"
        +              },
        +              "text_summary": {
        +                "maxLength": 2000,
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "totals_summary": {
        +                "additionalProperties": false,
        +                "description": "Schema § 1.4 — totals_summary as a typed wrapper around the free-form dict.\n\nWire shape is a flat object (`{\"concrete_m3\": {...}, \"rebar_t\": {...}}`).\nWe model it as `RootModel`-equivalent via `model_config(extra=\"allow\")`\n+ a single `__root__`-style `entries` dict. Pydantic v2 recommends\n`RootModel` for free-form roots; using a wrapper class keeps the import\nsurface uniform with the rest of this module.",
        +                "properties": {
        +                  "entries": {
        +                    "additionalProperties": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.4 — single material/work-class total entry.",
        +                      "properties": {
        +                        "quantity": {
        +                          "minimum": 0,
        +                          "type": "number"
        +                        },
        +                        "unit": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "quantity",
        +                        "unit"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "object"
        +                  }
        +                },
        +                "type": "object"
        +              },
        +              "warnings": {
        +                "items": {
        +                  "additionalProperties": false,
        +                  "description": "Schema § 1.8 — a non-fatal geometry advisory (56th-fire T2).\n\nThe wire projection of the engine's `core.GeometryWarning`. Advisory only:\na warning NEVER changes a measured quantity — it flags geometry that is\nvalid but likely a mistake (e.g. a stale dependent-height default). Present\non BOTH tiers — a correctness/safety signal, not a paid feature.",
        +                  "properties": {
        +                    "affected_params": {
        +                      "items": {
        +                        "type": "string"
        +                      },
        +                      "type": "array"
        +                    },
        +                    "code": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "detail": {
        +                      "additionalProperties": {
        +                        "type": "number"
        +                      },
        +                      "type": "object"
        +                    },
        +                    "message": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "severity": {
        +                      "enum": [
        +                        "info",
        +                        "advisory",
        +                        "caution"
        +                      ],
        +                      "type": "string"
        +                    }
        +                  },
        +                  "required": [
        +                    "code",
        +                    "severity",
        +                    "message"
        +                  ],
        +                  "type": "object"
        +                },
        +                "type": "array"
        +              }
        +            },
        +            "required": [
        +              "assembly_slug",
        +              "standard",
        +              "parameters_used",
        +              "boq_rows",
        +              "totals_summary",
        +              "text_summary"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      },
        +      "error": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        +            "properties": {
        +              "code": {
        +                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        +                "enum": [
        +                  "RATE_LIMIT_EXCEEDED",
        +                  "TIER_INSUFFICIENT",
        +                  "INVALID_INPUT",
        +                  "SCHEMA_VERSION_MISMATCH",
        +                  "SCHEMA_INVARIANT_VIOLATION",
        +                  "UPSTREAM_TIMEOUT",
        +                  "BACKEND_FAILURE",
        +                  "IP_BLOCKED",
        +                  "RESOURCE_NOT_FOUND",
        +                  "RENDER_FAILURE",
        +                  "OCR_LOW_CONFIDENCE",
        +                  "MANUAL_REVIEW_REQUIRED",
        +                  "ACCEPTANCE_REQUIRED",
        +                  "INVALID_TOKEN"
        +                ],
        +                "type": "string"
        +              },
        +              "details": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "message": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "recoverable": {
        +                "type": "boolean"
        +              },
        +              "retry_after_seconds": {
        +                "anyOf": [
        +                  {
        +                    "minimum": 0,
        +                    "type": "integer"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              }
        +            },
        +            "required": [
        +              "code",
        +              "message",
        +              "recoverable"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      }
        +    },
        +    "required": [
        +      "_meta"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "_meta": {
        +        "additionalProperties": false,
        +        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        +        "properties": {
        +          "deliverables": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        +                "properties": {
        +                  "docx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "dxf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "expires_at": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  },
        +                  "pdf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "xlsx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "expires_at"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "document_id": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "issued_at": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "output_mode": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Surfaces what a trimmed ``output_mode`` withheld from ``data``.\n\nA trimmed mode (``summary`` / ``material_schedule`` / ``boq`` /\n``boq_with_backup``) withholds\nalready-computed fields to keep the chat payload small. The withheld value\nreads to a client agent as \"capability missing\" (the box-culvert \"geometry\nbuilder isn't firing\" scare) rather than \"pared for size\": ``drawing`` and\n``audit_trail`` appear as ``null``, ``boq_rows`` as an empty list ``[]``\n(its type forbids ``null``) — both indistinguishable from a genuine absent\nresult. This names the withheld fields and the exact mode that brings each\nback, so the value is unambiguous. Absent on the default ``full_json`` mode\n— nothing is withheld, nothing to point at.",
        +                "properties": {
        +                  "mode": {
        +                    "enum": [
        +                      "summary",
        +                      "material_schedule",
        +                      "boq",
        +                      "boq_with_backup"
        +                    ],
        +                    "type": "string"
        +                  },
        +                  "omitted_fields": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "minItems": 1,
        +                    "type": "array"
        +                  },
        +                  "retrieve_with": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "mode",
        +                  "omitted_fields",
        +                  "retrieve_with"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "rate_limit_remaining": {
        +            "anyOf": [
        +              {
        +                "minimum": 0,
        +                "type": "integer"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "request_id": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "schema_version": {
        +            "const": "1.0.0",
        +            "default": "1.0.0",
        +            "type": "string"
        +          },
        +          "scope_boundary": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        +                "properties": {
        +                  "not_in_scope": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "produced": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "recommended_companions": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "type": "string"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "produced",
        +                  "not_in_scope"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tier": {
        +            "enum": [
        +              "free",
        +              "paid"
        +            ],
        +            "type": "string"
        +          },
        +          "tier_upgrade": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        +                "properties": {
        +                  "available_tiers": {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        +                      "properties": {
        +                        "billing": {
        +                          "enum": [
        +                            "one_off",
        +                            "monthly",
        +                            "annual"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "currency": {
        +                          "enum": [
        +                            "GBP",
        +                            "SGD",
        +                            "EUR",
        +                            "USD",
        +                            "CAD",
        +                            "AUD",
        +                            "NZD",
        +                            "MYR"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "display_name": {
        +                          "type": "string"
        +                        },
        +                        "price_local": {
        +                          "type": "number"
        +                        },
        +                        "tier_slug": {
        +                          "enum": [
        +                            "7_day_pass",
        +                            "solo",
        +                            "studio",
        +                            "practice"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "unlock_summary": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "tier_slug",
        +                        "display_name",
        +                        "price_local",
        +                        "currency",
        +                        "billing",
        +                        "unlock_summary"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "current_tier": {
        +                    "const": "free",
        +                    "default": "free",
        +                    "type": "string"
        +                  },
        +                  "pass_credit": {
        +                    "anyOf": [
        +                      {
        +                        "additionalProperties": false,
        +                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        +                        "properties": {
        +                          "amount_local": {
        +                            "type": "number"
        +                          },
        +                          "applies_to": {
        +                            "const": "solo_first_month",
        +                            "default": "solo_first_month",
        +                            "type": "string"
        +                          },
        +                          "currency": {
        +                            "type": "string"
        +                          },
        +                          "redeemable_until": {
        +                            "type": "string"
        +                          }
        +                        },
        +                        "required": [
        +                          "amount_local",
        +                          "currency",
        +                          "redeemable_until"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "pricing_url": {
        +                    "default": "https://civilquants.com/pricing",
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "available_tiers"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tos_url": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "upgrade_hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "warranty_disclaimer": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          }
        +        },
        +        "required": [
        +          "request_id",
        +          "issued_at",
        +          "tier"
        +        ],
        +        "type": "object"
        +      },
        +      "data": {
        +        "default": null,
        +        "title": "Data"
        +      },
        +      "error": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        +            "properties": {
        +              "code": {
        +                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        +                "enum": [
        +                  "RATE_LIMIT_EXCEEDED",
        +                  "TIER_INSUFFICIENT",
        +                  "INVALID_INPUT",
        +                  "SCHEMA_VERSION_MISMATCH",
        +                  "SCHEMA_INVARIANT_VIOLATION",
        +                  "UPSTREAM_TIMEOUT",
        +                  "BACKEND_FAILURE",
        +                  "IP_BLOCKED",
        +                  "RESOURCE_NOT_FOUND",
        +                  "RENDER_FAILURE",
        +                  "OCR_LOW_CONFIDENCE",
        +                  "MANUAL_REVIEW_REQUIRED",
        +                  "ACCEPTANCE_REQUIRED",
        +                  "INVALID_TOKEN"
        +                ],
        +                "type": "string"
        +              },
        +              "details": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "message": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "recoverable": {
        +                "type": "boolean"
        +              },
        +              "retry_after_seconds": {
        +                "anyOf": [
        +                  {
        +                    "minimum": 0,
        +                    "type": "integer"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              }
        +            },
        +            "required": [
        +              "code",
        +              "message",
        +              "recoverable"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      }
        +    },
        +    "required": [
        +      "_meta"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedcompute_utility_kiosk_base2 fields changed
      • changedInput schema / properties / output_mode / enum
        Previous value: -[
        -  "summary",
        -  "boq",
        -  "boq_with_backup",
        -  "full_json"
        -]New value: +[
        +  "summary",
        +  "material_schedule",
        +  "boq",
        +  "boq_with_backup",
        +  "full_json"
        +]
      • changedOutput schema / properties / result / anyOf
        Previous value: -[
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "_meta": {
        -        "additionalProperties": false,
        -        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        -        "properties": {
        -          "deliverables": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        -                "properties": {
        -                  "docx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "dxf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "expires_at": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  },
        -                  "pdf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "xlsx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "expires_at"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "document_id": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "issued_at": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "output_mode": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Surfaces what a trimmed ``output_mode`` withheld from ``data``.\n\nA trimmed mode (``summary`` / ``boq`` / ``boq_with_backup``) withholds\nalready-computed fields to keep the chat payload small. The withheld value\nreads to a client agent as \"capability missing\" (the box-culvert \"geometry\nbuilder isn't firing\" scare) rather than \"pared for size\": ``drawing`` and\n``audit_trail`` appear as ``null``, ``boq_rows`` as an empty list ``[]``\n(its type forbids ``null``) — both indistinguishable from a genuine absent\nresult. This names the withheld fields and the exact mode that brings each\nback, so the value is unambiguous. Absent on the default ``full_json`` mode\n— nothing is withheld, nothing to point at.",
        -                "properties": {
        -                  "mode": {
        -                    "enum": [
        -                      "summary",
        -                      "boq",
        -                      "boq_with_backup"
        -                    ],
        -                    "type": "string"
        -                  },
        -                  "omitted_fields": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "minItems": 1,
        -                    "type": "array"
        -                  },
        -                  "retrieve_with": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "mode",
        -                  "omitted_fields",
        -                  "retrieve_with"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "rate_limit_remaining": {
        -            "anyOf": [
        -              {
        -                "minimum": 0,
        -                "type": "integer"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "request_id": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "schema_version": {
        -            "const": "1.0.0",
        -            "default": "1.0.0",
        -            "type": "string"
        -          },
        -          "scope_boundary": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        -                "properties": {
        -                  "not_in_scope": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "produced": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "recommended_companions": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "type": "string"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "produced",
        -                  "not_in_scope"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tier": {
        -            "enum": [
        -              "free",
        -              "paid"
        -            ],
        -            "type": "string"
        -          },
        -          "tier_upgrade": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        -                "properties": {
        -                  "available_tiers": {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        -                      "properties": {
        -                        "billing": {
        -                          "enum": [
        -                            "one_off",
        -                            "monthly",
        -                            "annual"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "currency": {
        -                          "enum": [
        -                            "GBP",
        -                            "SGD",
        -                            "EUR",
        -                            "USD",
        -                            "CAD",
        -                            "AUD",
        -                            "NZD",
        -                            "MYR"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "display_name": {
        -                          "type": "string"
        -                        },
        -                        "price_local": {
        -                          "type": "number"
        -                        },
        -                        "tier_slug": {
        -                          "enum": [
        -                            "7_day_pass",
        -                            "solo",
        -                            "studio",
        -                            "practice"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "unlock_summary": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "tier_slug",
        -                        "display_name",
        -                        "price_local",
        -                        "currency",
        -                        "billing",
        -                        "unlock_summary"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "current_tier": {
        -                    "const": "free",
        -                    "default": "free",
        -                    "type": "string"
        -                  },
        -                  "pass_credit": {
        -                    "anyOf": [
        -                      {
        -                        "additionalProperties": false,
        -                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        -                        "properties": {
        -                          "amount_local": {
        -                            "type": "number"
        -                          },
        -                          "applies_to": {
        -                            "const": "solo_first_month",
        -                            "default": "solo_first_month",
        -                            "type": "string"
        -                          },
        -                          "currency": {
        -                            "type": "string"
        -                          },
        -                          "redeemable_until": {
        -                            "type": "string"
        -                          }
        -                        },
        -                        "required": [
        -                          "amount_local",
        -                          "currency",
        -                          "redeemable_until"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "pricing_url": {
        -                    "default": "https://civilquants.com/pricing",
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "available_tiers"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tos_url": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "upgrade_hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "warranty_disclaimer": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          }
        -        },
        -        "required": [
        -          "request_id",
        -          "issued_at",
        -          "tier"
        -        ],
        -        "type": "object"
        -      },
        -      "data": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Schema § 1.1 — the typed payload returned inside `MCPResponse[ComputeResult]`.\n\nFree-tier responses omit `drawings` (the downloadable CAD artefact\npointers — the paid differentiator); the bridge enforces this. The\n`audit_trail` and the inline `drawing` preview are present on BOTH tiers\n(V1 ALIGN / 60th-fire D + C). `text_summary` is bounded to 2000 chars —\nkeeps the LLM-facing summary token-cheap and forces longer narrative into\nBoQ row descriptions where it belongs. `warnings` is the non-fatal\ngeometry advisory list (both tiers).",
        -            "properties": {
        -              "assembly_slug": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "audit_trail": {
        -                "anyOf": [
        -                  {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.7 — paid-tier audit-trail entry.\n\nOne entry per BoQ row; `boq_row_index` ties to the row position in\n`ComputeResult.boq_rows`. `derivation` is the human-readable formula\nwalk-through; `formula` is the optional formal expression.",
        -                      "properties": {
        -                        "boq_row_index": {
        -                          "minimum": 0,
        -                          "type": "integer"
        -                        },
        -                        "derivation": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "formula": {
        -                          "anyOf": [
        -                            {
        -                              "type": "string"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ],
        -                          "default": null
        -                        },
        -                        "id": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "parameters_referenced": {
        -                          "items": {
        -                            "type": "string"
        -                          },
        -                          "type": "array"
        -                        }
        -                      },
        -                      "required": [
        -                        "id",
        -                        "boq_row_index",
        -                        "derivation"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "boq_rows": {
        -                "items": {
        -                  "additionalProperties": false,
        -                  "description": "Schema § 1.3 — a single bill row in the requested standard's format.\n\n`description` is the non-verbatim functional description per spec § 13.9 /\n§ 15 invariant — NEVER reproduces a standard's verbatim clause text.\n`rate` / `amount` ship null because rates are commodity data the customer\nowns; the engine's job is the measurement, not the pricing.",
        -                  "properties": {
        -                    "amount": {
        -                      "anyOf": [
        -                        {
        -                          "type": "number"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "attribution": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "audit_id": {
        -                      "anyOf": [
        -                        {
        -                          "type": "string"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "description": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "quantity": {
        -                      "minimum": 0,
        -                      "type": "number"
        -                    },
        -                    "rate": {
        -                      "anyOf": [
        -                        {
        -                          "type": "number"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "unit": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "work_section": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    }
        -                  },
        -                  "required": [
        -                    "work_section",
        -                    "description",
        -                    "quantity",
        -                    "unit",
        -                    "attribution"
        -                  ],
        -                  "type": "object"
        -                },
        -                "type": "array"
        -              },
        -              "drawing": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": false,
        -                    "description": "Schema § 1.6a — inline server-rendered SVG preview of the geometry.\n\nThe MCP mirror of the web ``/compute`` response's ``drawing`` field\n(``api.schemas.compute.DrawingRef``): the same on-screen dimensioned\ndrawing both tiers see in the workspace, surfaced on the MCP compute\nresponse so a chat client can render it inline (60th-fire item C). This\nis the on-screen preview — present on BOTH tiers per the free/paid\nboundary; the downloadable CAD artefacts (DXF / dimensioned PDF) remain\nthe paid differentiator via the export tools.\n\nDefined here rather than importing ``DrawingRef`` because the web\n``schemas`` package imports back into this module (``schemas.render``),\nso reusing it would create an import cycle — the MCP wire contract keeps\nits own copy, the same pattern as ``BoQRow`` / ``DrawingReference``.",
        -                    "properties": {
        -                      "entity_count": {
        -                        "minimum": 0,
        -                        "type": "integer"
        -                      },
        -                      "svg_b64": {
        -                        "minLength": 1,
        -                        "type": "string"
        -                      },
        -                      "unit_of_drawing": {
        -                        "const": "m",
        -                        "default": "m",
        -                        "type": "string"
        -                      },
        -                      "viewbox_height": {
        -                        "exclusiveMinimum": 0,
        -                        "type": "number"
        -                      },
        -                      "viewbox_width": {
        -                        "exclusiveMinimum": 0,
        -                        "type": "number"
        -                      },
        -                      "viewbox_x": {
        -                        "type": "number"
        -                      },
        -                      "viewbox_y": {
        -                        "type": "number"
        -                      }
        -                    },
        -                    "required": [
        -                      "svg_b64",
        -                      "viewbox_x",
        -                      "viewbox_y",
        -                      "viewbox_width",
        -                      "viewbox_height",
        -                      "entity_count"
        -                    ],
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "drawings": {
        -                "anyOf": [
        -                  {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.6 — paid-tier drawing artefact pointer.\n\n`url` is an R2-signed URL; expiry is carried in `_meta.deliverables.expires_at`\non the envelope (not duplicated here). `layers` is DXF-only; PDF/SVG\ncallers omit it.",
        -                      "properties": {
        -                        "drawing_type": {
        -                          "enum": [
        -                            "section",
        -                            "plan",
        -                            "elevation",
        -                            "isometric",
        -                            "detail"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "format": {
        -                          "enum": [
        -                            "DXF",
        -                            "PDF",
        -                            "SVG"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "layers": {
        -                          "anyOf": [
        -                            {
        -                              "items": {
        -                                "type": "string"
        -                              },
        -                              "type": "array"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ],
        -                          "default": null
        -                        },
        -                        "scale": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "sheet_size": {
        -                          "enum": [
        -                            "A1",
        -                            "A2",
        -                            "A3",
        -                            "A4"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "url": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "drawing_type",
        -                        "format",
        -                        "url",
        -                        "sheet_size",
        -                        "scale"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "parameters_used": {
        -                "additionalProperties": false,
        -                "description": "Schema § 1.2 — the parameter snapshot the engine actually used.\n\nSplits user-supplied values from engine defaults so customers can see\nwhich numbers came from them and which the engine filled in. Every\ndefaulted parameter SHOULD have a corresponding entry in `assumptions`\n— the bridge layer enforces this when wrapping engine output.",
        -                "properties": {
        -                  "assumptions": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "engine_defaults": {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  "user_supplied": {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  }
        -                },
        -                "type": "object"
        -              },
        -              "standard": {
        -                "enum": [
        -                  "CESMM4",
        -                  "NRM2",
        -                  "SMM7",
        -                  "MMHW"
        -                ],
        -                "type": "string"
        -              },
        -              "text_summary": {
        -                "maxLength": 2000,
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "totals_summary": {
        -                "additionalProperties": false,
        -                "description": "Schema § 1.4 — totals_summary as a typed wrapper around the free-form dict.\n\nWire shape is a flat object (`{\"concrete_m3\": {...}, \"rebar_t\": {...}}`).\nWe model it as `RootModel`-equivalent via `model_config(extra=\"allow\")`\n+ a single `__root__`-style `entries` dict. Pydantic v2 recommends\n`RootModel` for free-form roots; using a wrapper class keeps the import\nsurface uniform with the rest of this module.",
        -                "properties": {
        -                  "entries": {
        -                    "additionalProperties": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.4 — single material/work-class total entry.",
        -                      "properties": {
        -                        "quantity": {
        -                          "minimum": 0,
        -                          "type": "number"
        -                        },
        -                        "unit": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "quantity",
        -                        "unit"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "object"
        -                  }
        -                },
        -                "type": "object"
        -              },
        -              "warnings": {
        -                "items": {
        -                  "additionalProperties": false,
        -                  "description": "Schema § 1.8 — a non-fatal geometry advisory (56th-fire T2).\n\nThe wire projection of the engine's `core.GeometryWarning`. Advisory only:\na warning NEVER changes a measured quantity — it flags geometry that is\nvalid but likely a mistake (e.g. a stale dependent-height default). Present\non BOTH tiers — a correctness/safety signal, not a paid feature.",
        -                  "properties": {
        -                    "affected_params": {
        -                      "items": {
        -                        "type": "string"
        -                      },
        -                      "type": "array"
        -                    },
        -                    "code": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "detail": {
        -                      "additionalProperties": {
        -                        "type": "number"
        -                      },
        -                      "type": "object"
        -                    },
        -                    "message": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "severity": {
        -                      "enum": [
        -                        "info",
        -                        "advisory",
        -                        "caution"
        -                      ],
        -                      "type": "string"
        -                    }
        -                  },
        -                  "required": [
        -                    "code",
        -                    "severity",
        -                    "message"
        -                  ],
        -                  "type": "object"
        -                },
        -                "type": "array"
        -              }
        -            },
        -            "required": [
        -              "assembly_slug",
        -              "standard",
        -              "parameters_used",
        -              "boq_rows",
        -              "totals_summary",
        -              "text_summary"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      },
        -      "error": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        -            "properties": {
        -              "code": {
        -                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        -                "enum": [
        -                  "RATE_LIMIT_EXCEEDED",
        -                  "TIER_INSUFFICIENT",
        -                  "INVALID_INPUT",
        -                  "SCHEMA_VERSION_MISMATCH",
        -                  "SCHEMA_INVARIANT_VIOLATION",
        -                  "UPSTREAM_TIMEOUT",
        -                  "BACKEND_FAILURE",
        -                  "IP_BLOCKED",
        -                  "RESOURCE_NOT_FOUND",
        -                  "RENDER_FAILURE",
        -                  "OCR_LOW_CONFIDENCE",
        -                  "MANUAL_REVIEW_REQUIRED",
        -                  "ACCEPTANCE_REQUIRED",
        -                  "INVALID_TOKEN"
        -                ],
        -                "type": "string"
        -              },
        -              "details": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "message": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "recoverable": {
        -                "type": "boolean"
        -              },
        -              "retry_after_seconds": {
        -                "anyOf": [
        -                  {
        -                    "minimum": 0,
        -                    "type": "integer"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              }
        -            },
        -            "required": [
        -              "code",
        -              "message",
        -              "recoverable"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      }
        -    },
        -    "required": [
        -      "_meta"
        -    ],
        -    "type": "object"
        -  },
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "_meta": {
        -        "additionalProperties": false,
        -        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        -        "properties": {
        -          "deliverables": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        -                "properties": {
        -                  "docx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "dxf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "expires_at": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  },
        -                  "pdf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "xlsx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "expires_at"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "document_id": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "issued_at": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "output_mode": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Surfaces what a trimmed ``output_mode`` withheld from ``data``.\n\nA trimmed mode (``summary`` / ``boq`` / ``boq_with_backup``) withholds\nalready-computed fields to keep the chat payload small. The withheld value\nreads to a client agent as \"capability missing\" (the box-culvert \"geometry\nbuilder isn't firing\" scare) rather than \"pared for size\": ``drawing`` and\n``audit_trail`` appear as ``null``, ``boq_rows`` as an empty list ``[]``\n(its type forbids ``null``) — both indistinguishable from a genuine absent\nresult. This names the withheld fields and the exact mode that brings each\nback, so the value is unambiguous. Absent on the default ``full_json`` mode\n— nothing is withheld, nothing to point at.",
        -                "properties": {
        -                  "mode": {
        -                    "enum": [
        -                      "summary",
        -                      "boq",
        -                      "boq_with_backup"
        -                    ],
        -                    "type": "string"
        -                  },
        -                  "omitted_fields": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "minItems": 1,
        -                    "type": "array"
        -                  },
        -                  "retrieve_with": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "mode",
        -                  "omitted_fields",
        -                  "retrieve_with"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "rate_limit_remaining": {
        -            "anyOf": [
        -              {
        -                "minimum": 0,
        -                "type": "integer"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "request_id": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "schema_version": {
        -            "const": "1.0.0",
        -            "default": "1.0.0",
        -            "type": "string"
        -          },
        -          "scope_boundary": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        -                "properties": {
        -                  "not_in_scope": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "produced": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "recommended_companions": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "type": "string"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "produced",
        -                  "not_in_scope"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tier": {
        -            "enum": [
        -              "free",
        -              "paid"
        -            ],
        -            "type": "string"
        -          },
        -          "tier_upgrade": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        -                "properties": {
        -                  "available_tiers": {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        -                      "properties": {
        -                        "billing": {
        -                          "enum": [
        -                            "one_off",
        -                            "monthly",
        -                            "annual"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "currency": {
        -                          "enum": [
        -                            "GBP",
        -                            "SGD",
        -                            "EUR",
        -                            "USD",
        -                            "CAD",
        -                            "AUD",
        -                            "NZD",
        -                            "MYR"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "display_name": {
        -                          "type": "string"
        -                        },
        -                        "price_local": {
        -                          "type": "number"
        -                        },
        -                        "tier_slug": {
        -                          "enum": [
        -                            "7_day_pass",
        -                            "solo",
        -                            "studio",
        -                            "practice"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "unlock_summary": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "tier_slug",
        -                        "display_name",
        -                        "price_local",
        -                        "currency",
        -                        "billing",
        -                        "unlock_summary"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "current_tier": {
        -                    "const": "free",
        -                    "default": "free",
        -                    "type": "string"
        -                  },
        -                  "pass_credit": {
        -                    "anyOf": [
        -                      {
        -                        "additionalProperties": false,
        -                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        -                        "properties": {
        -                          "amount_local": {
        -                            "type": "number"
        -                          },
        -                          "applies_to": {
        -                            "const": "solo_first_month",
        -                            "default": "solo_first_month",
        -                            "type": "string"
        -                          },
        -                          "currency": {
        -                            "type": "string"
        -                          },
        -                          "redeemable_until": {
        -                            "type": "string"
        -                          }
        -                        },
        -                        "required": [
        -                          "amount_local",
        -                          "currency",
        -                          "redeemable_until"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "pricing_url": {
        -                    "default": "https://civilquants.com/pricing",
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "available_tiers"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tos_url": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "upgrade_hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "warranty_disclaimer": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          }
        -        },
        -        "required": [
        -          "request_id",
        -          "issued_at",
        -          "tier"
        -        ],
        -        "type": "object"
        -      },
        -      "data": {
        -        "default": null,
        -        "title": "Data"
        -      },
        -      "error": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        -            "properties": {
        -              "code": {
        -                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        -                "enum": [
        -                  "RATE_LIMIT_EXCEEDED",
        -                  "TIER_INSUFFICIENT",
        -                  "INVALID_INPUT",
        -                  "SCHEMA_VERSION_MISMATCH",
        -                  "SCHEMA_INVARIANT_VIOLATION",
        -                  "UPSTREAM_TIMEOUT",
        -                  "BACKEND_FAILURE",
        -                  "IP_BLOCKED",
        -                  "RESOURCE_NOT_FOUND",
        -                  "RENDER_FAILURE",
        -                  "OCR_LOW_CONFIDENCE",
        -                  "MANUAL_REVIEW_REQUIRED",
        -                  "ACCEPTANCE_REQUIRED",
        -                  "INVALID_TOKEN"
        -                ],
        -                "type": "string"
        -              },
        -              "details": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "message": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "recoverable": {
        -                "type": "boolean"
        -              },
        -              "retry_after_seconds": {
        -                "anyOf": [
        -                  {
        -                    "minimum": 0,
        -                    "type": "integer"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              }
        -            },
        -            "required": [
        -              "code",
        -              "message",
        -              "recoverable"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      }
        -    },
        -    "required": [
        -      "_meta"
        -    ],
        -    "type": "object"
        -  }
        -]New value: +[
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "_meta": {
        +        "additionalProperties": false,
        +        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        +        "properties": {
        +          "deliverables": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        +                "properties": {
        +                  "docx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "dxf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "expires_at": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  },
        +                  "pdf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "xlsx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "expires_at"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "document_id": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "issued_at": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "output_mode": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Surfaces what a trimmed ``output_mode`` withheld from ``data``.\n\nA trimmed mode (``summary`` / ``material_schedule`` / ``boq`` /\n``boq_with_backup``) withholds\nalready-computed fields to keep the chat payload small. The withheld value\nreads to a client agent as \"capability missing\" (the box-culvert \"geometry\nbuilder isn't firing\" scare) rather than \"pared for size\": ``drawing`` and\n``audit_trail`` appear as ``null``, ``boq_rows`` as an empty list ``[]``\n(its type forbids ``null``) — both indistinguishable from a genuine absent\nresult. This names the withheld fields and the exact mode that brings each\nback, so the value is unambiguous. Absent on the default ``full_json`` mode\n— nothing is withheld, nothing to point at.",
        +                "properties": {
        +                  "mode": {
        +                    "enum": [
        +                      "summary",
        +                      "material_schedule",
        +                      "boq",
        +                      "boq_with_backup"
        +                    ],
        +                    "type": "string"
        +                  },
        +                  "omitted_fields": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "minItems": 1,
        +                    "type": "array"
        +                  },
        +                  "retrieve_with": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "mode",
        +                  "omitted_fields",
        +                  "retrieve_with"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "rate_limit_remaining": {
        +            "anyOf": [
        +              {
        +                "minimum": 0,
        +                "type": "integer"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "request_id": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "schema_version": {
        +            "const": "1.0.0",
        +            "default": "1.0.0",
        +            "type": "string"
        +          },
        +          "scope_boundary": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        +                "properties": {
        +                  "not_in_scope": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "produced": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "recommended_companions": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "type": "string"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "produced",
        +                  "not_in_scope"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tier": {
        +            "enum": [
        +              "free",
        +              "paid"
        +            ],
        +            "type": "string"
        +          },
        +          "tier_upgrade": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        +                "properties": {
        +                  "available_tiers": {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        +                      "properties": {
        +                        "billing": {
        +                          "enum": [
        +                            "one_off",
        +                            "monthly",
        +                            "annual"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "currency": {
        +                          "enum": [
        +                            "GBP",
        +                            "SGD",
        +                            "EUR",
        +                            "USD",
        +                            "CAD",
        +                            "AUD",
        +                            "NZD",
        +                            "MYR"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "display_name": {
        +                          "type": "string"
        +                        },
        +                        "price_local": {
        +                          "type": "number"
        +                        },
        +                        "tier_slug": {
        +                          "enum": [
        +                            "7_day_pass",
        +                            "solo",
        +                            "studio",
        +                            "practice"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "unlock_summary": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "tier_slug",
        +                        "display_name",
        +                        "price_local",
        +                        "currency",
        +                        "billing",
        +                        "unlock_summary"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "current_tier": {
        +                    "const": "free",
        +                    "default": "free",
        +                    "type": "string"
        +                  },
        +                  "pass_credit": {
        +                    "anyOf": [
        +                      {
        +                        "additionalProperties": false,
        +                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        +                        "properties": {
        +                          "amount_local": {
        +                            "type": "number"
        +                          },
        +                          "applies_to": {
        +                            "const": "solo_first_month",
        +                            "default": "solo_first_month",
        +                            "type": "string"
        +                          },
        +                          "currency": {
        +                            "type": "string"
        +                          },
        +                          "redeemable_until": {
        +                            "type": "string"
        +                          }
        +                        },
        +                        "required": [
        +                          "amount_local",
        +                          "currency",
        +                          "redeemable_until"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "pricing_url": {
        +                    "default": "https://civilquants.com/pricing",
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "available_tiers"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tos_url": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "upgrade_hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "warranty_disclaimer": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          }
        +        },
        +        "required": [
        +          "request_id",
        +          "issued_at",
        +          "tier"
        +        ],
        +        "type": "object"
        +      },
        +      "data": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Schema § 1.1 — the typed payload returned inside `MCPResponse[ComputeResult]`.\n\nFree-tier responses omit `drawings` (the downloadable CAD artefact\npointers — the paid differentiator); the bridge enforces this. The\n`audit_trail` and the inline `drawing` preview are present on BOTH tiers\n(V1 ALIGN / 60th-fire D + C). `text_summary` is bounded to 2000 chars —\nkeeps the LLM-facing summary token-cheap and forces longer narrative into\nBoQ row descriptions where it belongs. `warnings` is the non-fatal\ngeometry advisory list (both tiers).",
        +            "properties": {
        +              "assembly_slug": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "audit_trail": {
        +                "anyOf": [
        +                  {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.7 — paid-tier audit-trail entry.\n\nOne entry per BoQ row; `boq_row_index` ties to the row position in\n`ComputeResult.boq_rows`. `derivation` is the human-readable formula\nwalk-through; `formula` is the optional formal expression.",
        +                      "properties": {
        +                        "boq_row_index": {
        +                          "minimum": 0,
        +                          "type": "integer"
        +                        },
        +                        "derivation": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "formula": {
        +                          "anyOf": [
        +                            {
        +                              "type": "string"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ],
        +                          "default": null
        +                        },
        +                        "id": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "parameters_referenced": {
        +                          "items": {
        +                            "type": "string"
        +                          },
        +                          "type": "array"
        +                        }
        +                      },
        +                      "required": [
        +                        "id",
        +                        "boq_row_index",
        +                        "derivation"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "boq_rows": {
        +                "items": {
        +                  "additionalProperties": false,
        +                  "description": "Schema § 1.3 — a single bill row in the requested standard's format.\n\n`description` is the non-verbatim functional description per spec § 13.9 /\n§ 15 invariant — NEVER reproduces a standard's verbatim clause text.\n`rate` / `amount` ship null because rates are commodity data the customer\nowns; the engine's job is the measurement, not the pricing.",
        +                  "properties": {
        +                    "amount": {
        +                      "anyOf": [
        +                        {
        +                          "type": "number"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "attribution": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "audit_id": {
        +                      "anyOf": [
        +                        {
        +                          "type": "string"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "description": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "quantity": {
        +                      "minimum": 0,
        +                      "type": "number"
        +                    },
        +                    "rate": {
        +                      "anyOf": [
        +                        {
        +                          "type": "number"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "unit": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "work_section": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    }
        +                  },
        +                  "required": [
        +                    "work_section",
        +                    "description",
        +                    "quantity",
        +                    "unit",
        +                    "attribution"
        +                  ],
        +                  "type": "object"
        +                },
        +                "type": "array"
        +              },
        +              "drawing": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": false,
        +                    "description": "Schema § 1.6a — inline server-rendered SVG preview of the geometry.\n\nThe MCP mirror of the web ``/compute`` response's ``drawing`` field\n(``api.schemas.compute.DrawingRef``): the same on-screen dimensioned\ndrawing both tiers see in the workspace, surfaced on the MCP compute\nresponse so a chat client can render it inline (60th-fire item C). This\nis the on-screen preview — present on BOTH tiers per the free/paid\nboundary; the downloadable CAD artefacts (DXF / dimensioned PDF) remain\nthe paid differentiator via the export tools.\n\nDefined here rather than importing ``DrawingRef`` because the web\n``schemas`` package imports back into this module (``schemas.render``),\nso reusing it would create an import cycle — the MCP wire contract keeps\nits own copy, the same pattern as ``BoQRow`` / ``DrawingReference``.",
        +                    "properties": {
        +                      "entity_count": {
        +                        "minimum": 0,
        +                        "type": "integer"
        +                      },
        +                      "svg_b64": {
        +                        "minLength": 1,
        +                        "type": "string"
        +                      },
        +                      "unit_of_drawing": {
        +                        "const": "m",
        +                        "default": "m",
        +                        "type": "string"
        +                      },
        +                      "viewbox_height": {
        +                        "exclusiveMinimum": 0,
        +                        "type": "number"
        +                      },
        +                      "viewbox_width": {
        +                        "exclusiveMinimum": 0,
        +                        "type": "number"
        +                      },
        +                      "viewbox_x": {
        +                        "type": "number"
        +                      },
        +                      "viewbox_y": {
        +                        "type": "number"
        +                      }
        +                    },
        +                    "required": [
        +                      "svg_b64",
        +                      "viewbox_x",
        +                      "viewbox_y",
        +                      "viewbox_width",
        +                      "viewbox_height",
        +                      "entity_count"
        +                    ],
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "drawings": {
        +                "anyOf": [
        +                  {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.6 — paid-tier drawing artefact pointer.\n\n`url` is an R2-signed URL; expiry is carried in `_meta.deliverables.expires_at`\non the envelope (not duplicated here). `layers` is DXF-only; PDF/SVG\ncallers omit it.",
        +                      "properties": {
        +                        "drawing_type": {
        +                          "enum": [
        +                            "section",
        +                            "plan",
        +                            "elevation",
        +                            "isometric",
        +                            "detail"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "format": {
        +                          "enum": [
        +                            "DXF",
        +                            "PDF",
        +                            "SVG"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "layers": {
        +                          "anyOf": [
        +                            {
        +                              "items": {
        +                                "type": "string"
        +                              },
        +                              "type": "array"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ],
        +                          "default": null
        +                        },
        +                        "scale": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "sheet_size": {
        +                          "enum": [
        +                            "A1",
        +                            "A2",
        +                            "A3",
        +                            "A4"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "url": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "drawing_type",
        +                        "format",
        +                        "url",
        +                        "sheet_size",
        +                        "scale"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "parameters_used": {
        +                "additionalProperties": false,
        +                "description": "Schema § 1.2 — the parameter snapshot the engine actually used.\n\nSplits user-supplied values from engine defaults so customers can see\nwhich numbers came from them and which the engine filled in. Every\ndefaulted parameter SHOULD have a corresponding entry in `assumptions`\n— the bridge layer enforces this when wrapping engine output.",
        +                "properties": {
        +                  "assumptions": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "engine_defaults": {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  "user_supplied": {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  }
        +                },
        +                "type": "object"
        +              },
        +              "standard": {
        +                "enum": [
        +                  "CESMM4",
        +                  "NRM2",
        +                  "SMM7",
        +                  "MMHW"
        +                ],
        +                "type": "string"
        +              },
        +              "text_summary": {
        +                "maxLength": 2000,
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "totals_summary": {
        +                "additionalProperties": false,
        +                "description": "Schema § 1.4 — totals_summary as a typed wrapper around the free-form dict.\n\nWire shape is a flat object (`{\"concrete_m3\": {...}, \"rebar_t\": {...}}`).\nWe model it as `RootModel`-equivalent via `model_config(extra=\"allow\")`\n+ a single `__root__`-style `entries` dict. Pydantic v2 recommends\n`RootModel` for free-form roots; using a wrapper class keeps the import\nsurface uniform with the rest of this module.",
        +                "properties": {
        +                  "entries": {
        +                    "additionalProperties": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.4 — single material/work-class total entry.",
        +                      "properties": {
        +                        "quantity": {
        +                          "minimum": 0,
        +                          "type": "number"
        +                        },
        +                        "unit": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "quantity",
        +                        "unit"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "object"
        +                  }
        +                },
        +                "type": "object"
        +              },
        +              "warnings": {
        +                "items": {
        +                  "additionalProperties": false,
        +                  "description": "Schema § 1.8 — a non-fatal geometry advisory (56th-fire T2).\n\nThe wire projection of the engine's `core.GeometryWarning`. Advisory only:\na warning NEVER changes a measured quantity — it flags geometry that is\nvalid but likely a mistake (e.g. a stale dependent-height default). Present\non BOTH tiers — a correctness/safety signal, not a paid feature.",
        +                  "properties": {
        +                    "affected_params": {
        +                      "items": {
        +                        "type": "string"
        +                      },
        +                      "type": "array"
        +                    },
        +                    "code": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "detail": {
        +                      "additionalProperties": {
        +                        "type": "number"
        +                      },
        +                      "type": "object"
        +                    },
        +                    "message": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "severity": {
        +                      "enum": [
        +                        "info",
        +                        "advisory",
        +                        "caution"
        +                      ],
        +                      "type": "string"
        +                    }
        +                  },
        +                  "required": [
        +                    "code",
        +                    "severity",
        +                    "message"
        +                  ],
        +                  "type": "object"
        +                },
        +                "type": "array"
        +              }
        +            },
        +            "required": [
        +              "assembly_slug",
        +              "standard",
        +              "parameters_used",
        +              "boq_rows",
        +              "totals_summary",
        +              "text_summary"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      },
        +      "error": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        +            "properties": {
        +              "code": {
        +                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        +                "enum": [
        +                  "RATE_LIMIT_EXCEEDED",
        +                  "TIER_INSUFFICIENT",
        +                  "INVALID_INPUT",
        +                  "SCHEMA_VERSION_MISMATCH",
        +                  "SCHEMA_INVARIANT_VIOLATION",
        +                  "UPSTREAM_TIMEOUT",
        +                  "BACKEND_FAILURE",
        +                  "IP_BLOCKED",
        +                  "RESOURCE_NOT_FOUND",
        +                  "RENDER_FAILURE",
        +                  "OCR_LOW_CONFIDENCE",
        +                  "MANUAL_REVIEW_REQUIRED",
        +                  "ACCEPTANCE_REQUIRED",
        +                  "INVALID_TOKEN"
        +                ],
        +                "type": "string"
        +              },
        +              "details": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "message": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "recoverable": {
        +                "type": "boolean"
        +              },
        +              "retry_after_seconds": {
        +                "anyOf": [
        +                  {
        +                    "minimum": 0,
        +                    "type": "integer"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              }
        +            },
        +            "required": [
        +              "code",
        +              "message",
        +              "recoverable"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      }
        +    },
        +    "required": [
        +      "_meta"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "_meta": {
        +        "additionalProperties": false,
        +        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        +        "properties": {
        +          "deliverables": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        +                "properties": {
        +                  "docx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "dxf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "expires_at": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  },
        +                  "pdf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "xlsx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "expires_at"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "document_id": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "issued_at": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "output_mode": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Surfaces what a trimmed ``output_mode`` withheld from ``data``.\n\nA trimmed mode (``summary`` / ``material_schedule`` / ``boq`` /\n``boq_with_backup``) withholds\nalready-computed fields to keep the chat payload small. The withheld value\nreads to a client agent as \"capability missing\" (the box-culvert \"geometry\nbuilder isn't firing\" scare) rather than \"pared for size\": ``drawing`` and\n``audit_trail`` appear as ``null``, ``boq_rows`` as an empty list ``[]``\n(its type forbids ``null``) — both indistinguishable from a genuine absent\nresult. This names the withheld fields and the exact mode that brings each\nback, so the value is unambiguous. Absent on the default ``full_json`` mode\n— nothing is withheld, nothing to point at.",
        +                "properties": {
        +                  "mode": {
        +                    "enum": [
        +                      "summary",
        +                      "material_schedule",
        +                      "boq",
        +                      "boq_with_backup"
        +                    ],
        +                    "type": "string"
        +                  },
        +                  "omitted_fields": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "minItems": 1,
        +                    "type": "array"
        +                  },
        +                  "retrieve_with": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "mode",
        +                  "omitted_fields",
        +                  "retrieve_with"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "rate_limit_remaining": {
        +            "anyOf": [
        +              {
        +                "minimum": 0,
        +                "type": "integer"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "request_id": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "schema_version": {
        +            "const": "1.0.0",
        +            "default": "1.0.0",
        +            "type": "string"
        +          },
        +          "scope_boundary": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        +                "properties": {
        +                  "not_in_scope": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "produced": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "recommended_companions": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "type": "string"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "produced",
        +                  "not_in_scope"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tier": {
        +            "enum": [
        +              "free",
        +              "paid"
        +            ],
        +            "type": "string"
        +          },
        +          "tier_upgrade": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        +                "properties": {
        +                  "available_tiers": {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        +                      "properties": {
        +                        "billing": {
        +                          "enum": [
        +                            "one_off",
        +                            "monthly",
        +                            "annual"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "currency": {
        +                          "enum": [
        +                            "GBP",
        +                            "SGD",
        +                            "EUR",
        +                            "USD",
        +                            "CAD",
        +                            "AUD",
        +                            "NZD",
        +                            "MYR"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "display_name": {
        +                          "type": "string"
        +                        },
        +                        "price_local": {
        +                          "type": "number"
        +                        },
        +                        "tier_slug": {
        +                          "enum": [
        +                            "7_day_pass",
        +                            "solo",
        +                            "studio",
        +                            "practice"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "unlock_summary": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "tier_slug",
        +                        "display_name",
        +                        "price_local",
        +                        "currency",
        +                        "billing",
        +                        "unlock_summary"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "current_tier": {
        +                    "const": "free",
        +                    "default": "free",
        +                    "type": "string"
        +                  },
        +                  "pass_credit": {
        +                    "anyOf": [
        +                      {
        +                        "additionalProperties": false,
        +                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        +                        "properties": {
        +                          "amount_local": {
        +                            "type": "number"
        +                          },
        +                          "applies_to": {
        +                            "const": "solo_first_month",
        +                            "default": "solo_first_month",
        +                            "type": "string"
        +                          },
        +                          "currency": {
        +                            "type": "string"
        +                          },
        +                          "redeemable_until": {
        +                            "type": "string"
        +                          }
        +                        },
        +                        "required": [
        +                          "amount_local",
        +                          "currency",
        +                          "redeemable_until"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "pricing_url": {
        +                    "default": "https://civilquants.com/pricing",
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "available_tiers"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tos_url": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "upgrade_hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "warranty_disclaimer": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          }
        +        },
        +        "required": [
        +          "request_id",
        +          "issued_at",
        +          "tier"
        +        ],
        +        "type": "object"
        +      },
        +      "data": {
        +        "default": null,
        +        "title": "Data"
        +      },
        +      "error": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        +            "properties": {
        +              "code": {
        +                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        +                "enum": [
        +                  "RATE_LIMIT_EXCEEDED",
        +                  "TIER_INSUFFICIENT",
        +                  "INVALID_INPUT",
        +                  "SCHEMA_VERSION_MISMATCH",
        +                  "SCHEMA_INVARIANT_VIOLATION",
        +                  "UPSTREAM_TIMEOUT",
        +                  "BACKEND_FAILURE",
        +                  "IP_BLOCKED",
        +                  "RESOURCE_NOT_FOUND",
        +                  "RENDER_FAILURE",
        +                  "OCR_LOW_CONFIDENCE",
        +                  "MANUAL_REVIEW_REQUIRED",
        +                  "ACCEPTANCE_REQUIRED",
        +                  "INVALID_TOKEN"
        +                ],
        +                "type": "string"
        +              },
        +              "details": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "message": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "recoverable": {
        +                "type": "boolean"
        +              },
        +              "retry_after_seconds": {
        +                "anyOf": [
        +                  {
        +                    "minimum": 0,
        +                    "type": "integer"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              }
        +            },
        +            "required": [
        +              "code",
        +              "message",
        +              "recoverable"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      }
        +    },
        +    "required": [
        +      "_meta"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedcompute_vehicle_restraint_system2 fields changed
      • changedInput schema / properties / output_mode / enum
        Previous value: -[
        -  "summary",
        -  "boq",
        -  "boq_with_backup",
        -  "full_json"
        -]New value: +[
        +  "summary",
        +  "material_schedule",
        +  "boq",
        +  "boq_with_backup",
        +  "full_json"
        +]
      • changedOutput schema / properties / result / anyOf
        Previous value: -[
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "_meta": {
        -        "additionalProperties": false,
        -        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        -        "properties": {
        -          "deliverables": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        -                "properties": {
        -                  "docx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "dxf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "expires_at": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  },
        -                  "pdf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "xlsx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "expires_at"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "document_id": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "issued_at": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "output_mode": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Surfaces what a trimmed ``output_mode`` withheld from ``data``.\n\nA trimmed mode (``summary`` / ``boq`` / ``boq_with_backup``) withholds\nalready-computed fields to keep the chat payload small. The withheld value\nreads to a client agent as \"capability missing\" (the box-culvert \"geometry\nbuilder isn't firing\" scare) rather than \"pared for size\": ``drawing`` and\n``audit_trail`` appear as ``null``, ``boq_rows`` as an empty list ``[]``\n(its type forbids ``null``) — both indistinguishable from a genuine absent\nresult. This names the withheld fields and the exact mode that brings each\nback, so the value is unambiguous. Absent on the default ``full_json`` mode\n— nothing is withheld, nothing to point at.",
        -                "properties": {
        -                  "mode": {
        -                    "enum": [
        -                      "summary",
        -                      "boq",
        -                      "boq_with_backup"
        -                    ],
        -                    "type": "string"
        -                  },
        -                  "omitted_fields": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "minItems": 1,
        -                    "type": "array"
        -                  },
        -                  "retrieve_with": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "mode",
        -                  "omitted_fields",
        -                  "retrieve_with"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "rate_limit_remaining": {
        -            "anyOf": [
        -              {
        -                "minimum": 0,
        -                "type": "integer"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "request_id": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "schema_version": {
        -            "const": "1.0.0",
        -            "default": "1.0.0",
        -            "type": "string"
        -          },
        -          "scope_boundary": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        -                "properties": {
        -                  "not_in_scope": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "produced": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "recommended_companions": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "type": "string"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "produced",
        -                  "not_in_scope"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tier": {
        -            "enum": [
        -              "free",
        -              "paid"
        -            ],
        -            "type": "string"
        -          },
        -          "tier_upgrade": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        -                "properties": {
        -                  "available_tiers": {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        -                      "properties": {
        -                        "billing": {
        -                          "enum": [
        -                            "one_off",
        -                            "monthly",
        -                            "annual"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "currency": {
        -                          "enum": [
        -                            "GBP",
        -                            "SGD",
        -                            "EUR",
        -                            "USD",
        -                            "CAD",
        -                            "AUD",
        -                            "NZD",
        -                            "MYR"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "display_name": {
        -                          "type": "string"
        -                        },
        -                        "price_local": {
        -                          "type": "number"
        -                        },
        -                        "tier_slug": {
        -                          "enum": [
        -                            "7_day_pass",
        -                            "solo",
        -                            "studio",
        -                            "practice"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "unlock_summary": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "tier_slug",
        -                        "display_name",
        -                        "price_local",
        -                        "currency",
        -                        "billing",
        -                        "unlock_summary"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "current_tier": {
        -                    "const": "free",
        -                    "default": "free",
        -                    "type": "string"
        -                  },
        -                  "pass_credit": {
        -                    "anyOf": [
        -                      {
        -                        "additionalProperties": false,
        -                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        -                        "properties": {
        -                          "amount_local": {
        -                            "type": "number"
        -                          },
        -                          "applies_to": {
        -                            "const": "solo_first_month",
        -                            "default": "solo_first_month",
        -                            "type": "string"
        -                          },
        -                          "currency": {
        -                            "type": "string"
        -                          },
        -                          "redeemable_until": {
        -                            "type": "string"
        -                          }
        -                        },
        -                        "required": [
        -                          "amount_local",
        -                          "currency",
        -                          "redeemable_until"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "pricing_url": {
        -                    "default": "https://civilquants.com/pricing",
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "available_tiers"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tos_url": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "upgrade_hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "warranty_disclaimer": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          }
        -        },
        -        "required": [
        -          "request_id",
        -          "issued_at",
        -          "tier"
        -        ],
        -        "type": "object"
        -      },
        -      "data": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Schema § 1.1 — the typed payload returned inside `MCPResponse[ComputeResult]`.\n\nFree-tier responses omit `drawings` (the downloadable CAD artefact\npointers — the paid differentiator); the bridge enforces this. The\n`audit_trail` and the inline `drawing` preview are present on BOTH tiers\n(V1 ALIGN / 60th-fire D + C). `text_summary` is bounded to 2000 chars —\nkeeps the LLM-facing summary token-cheap and forces longer narrative into\nBoQ row descriptions where it belongs. `warnings` is the non-fatal\ngeometry advisory list (both tiers).",
        -            "properties": {
        -              "assembly_slug": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "audit_trail": {
        -                "anyOf": [
        -                  {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.7 — paid-tier audit-trail entry.\n\nOne entry per BoQ row; `boq_row_index` ties to the row position in\n`ComputeResult.boq_rows`. `derivation` is the human-readable formula\nwalk-through; `formula` is the optional formal expression.",
        -                      "properties": {
        -                        "boq_row_index": {
        -                          "minimum": 0,
        -                          "type": "integer"
        -                        },
        -                        "derivation": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "formula": {
        -                          "anyOf": [
        -                            {
        -                              "type": "string"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ],
        -                          "default": null
        -                        },
        -                        "id": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "parameters_referenced": {
        -                          "items": {
        -                            "type": "string"
        -                          },
        -                          "type": "array"
        -                        }
        -                      },
        -                      "required": [
        -                        "id",
        -                        "boq_row_index",
        -                        "derivation"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "boq_rows": {
        -                "items": {
        -                  "additionalProperties": false,
        -                  "description": "Schema § 1.3 — a single bill row in the requested standard's format.\n\n`description` is the non-verbatim functional description per spec § 13.9 /\n§ 15 invariant — NEVER reproduces a standard's verbatim clause text.\n`rate` / `amount` ship null because rates are commodity data the customer\nowns; the engine's job is the measurement, not the pricing.",
        -                  "properties": {
        -                    "amount": {
        -                      "anyOf": [
        -                        {
        -                          "type": "number"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "attribution": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "audit_id": {
        -                      "anyOf": [
        -                        {
        -                          "type": "string"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "description": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "quantity": {
        -                      "minimum": 0,
        -                      "type": "number"
        -                    },
        -                    "rate": {
        -                      "anyOf": [
        -                        {
        -                          "type": "number"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "unit": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "work_section": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    }
        -                  },
        -                  "required": [
        -                    "work_section",
        -                    "description",
        -                    "quantity",
        -                    "unit",
        -                    "attribution"
        -                  ],
        -                  "type": "object"
        -                },
        -                "type": "array"
        -              },
        -              "drawing": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": false,
        -                    "description": "Schema § 1.6a — inline server-rendered SVG preview of the geometry.\n\nThe MCP mirror of the web ``/compute`` response's ``drawing`` field\n(``api.schemas.compute.DrawingRef``): the same on-screen dimensioned\ndrawing both tiers see in the workspace, surfaced on the MCP compute\nresponse so a chat client can render it inline (60th-fire item C). This\nis the on-screen preview — present on BOTH tiers per the free/paid\nboundary; the downloadable CAD artefacts (DXF / dimensioned PDF) remain\nthe paid differentiator via the export tools.\n\nDefined here rather than importing ``DrawingRef`` because the web\n``schemas`` package imports back into this module (``schemas.render``),\nso reusing it would create an import cycle — the MCP wire contract keeps\nits own copy, the same pattern as ``BoQRow`` / ``DrawingReference``.",
        -                    "properties": {
        -                      "entity_count": {
        -                        "minimum": 0,
        -                        "type": "integer"
        -                      },
        -                      "svg_b64": {
        -                        "minLength": 1,
        -                        "type": "string"
        -                      },
        -                      "unit_of_drawing": {
        -                        "const": "m",
        -                        "default": "m",
        -                        "type": "string"
        -                      },
        -                      "viewbox_height": {
        -                        "exclusiveMinimum": 0,
        -                        "type": "number"
        -                      },
        -                      "viewbox_width": {
        -                        "exclusiveMinimum": 0,
        -                        "type": "number"
        -                      },
        -                      "viewbox_x": {
        -                        "type": "number"
        -                      },
        -                      "viewbox_y": {
        -                        "type": "number"
        -                      }
        -                    },
        -                    "required": [
        -                      "svg_b64",
        -                      "viewbox_x",
        -                      "viewbox_y",
        -                      "viewbox_width",
        -                      "viewbox_height",
        -                      "entity_count"
        -                    ],
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "drawings": {
        -                "anyOf": [
        -                  {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.6 — paid-tier drawing artefact pointer.\n\n`url` is an R2-signed URL; expiry is carried in `_meta.deliverables.expires_at`\non the envelope (not duplicated here). `layers` is DXF-only; PDF/SVG\ncallers omit it.",
        -                      "properties": {
        -                        "drawing_type": {
        -                          "enum": [
        -                            "section",
        -                            "plan",
        -                            "elevation",
        -                            "isometric",
        -                            "detail"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "format": {
        -                          "enum": [
        -                            "DXF",
        -                            "PDF",
        -                            "SVG"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "layers": {
        -                          "anyOf": [
        -                            {
        -                              "items": {
        -                                "type": "string"
        -                              },
        -                              "type": "array"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ],
        -                          "default": null
        -                        },
        -                        "scale": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "sheet_size": {
        -                          "enum": [
        -                            "A1",
        -                            "A2",
        -                            "A3",
        -                            "A4"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "url": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "drawing_type",
        -                        "format",
        -                        "url",
        -                        "sheet_size",
        -                        "scale"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "parameters_used": {
        -                "additionalProperties": false,
        -                "description": "Schema § 1.2 — the parameter snapshot the engine actually used.\n\nSplits user-supplied values from engine defaults so customers can see\nwhich numbers came from them and which the engine filled in. Every\ndefaulted parameter SHOULD have a corresponding entry in `assumptions`\n— the bridge layer enforces this when wrapping engine output.",
        -                "properties": {
        -                  "assumptions": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "engine_defaults": {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  "user_supplied": {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  }
        -                },
        -                "type": "object"
        -              },
        -              "standard": {
        -                "enum": [
        -                  "CESMM4",
        -                  "NRM2",
        -                  "SMM7",
        -                  "MMHW"
        -                ],
        -                "type": "string"
        -              },
        -              "text_summary": {
        -                "maxLength": 2000,
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "totals_summary": {
        -                "additionalProperties": false,
        -                "description": "Schema § 1.4 — totals_summary as a typed wrapper around the free-form dict.\n\nWire shape is a flat object (`{\"concrete_m3\": {...}, \"rebar_t\": {...}}`).\nWe model it as `RootModel`-equivalent via `model_config(extra=\"allow\")`\n+ a single `__root__`-style `entries` dict. Pydantic v2 recommends\n`RootModel` for free-form roots; using a wrapper class keeps the import\nsurface uniform with the rest of this module.",
        -                "properties": {
        -                  "entries": {
        -                    "additionalProperties": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.4 — single material/work-class total entry.",
        -                      "properties": {
        -                        "quantity": {
        -                          "minimum": 0,
        -                          "type": "number"
        -                        },
        -                        "unit": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "quantity",
        -                        "unit"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "object"
        -                  }
        -                },
        -                "type": "object"
        -              },
        -              "warnings": {
        -                "items": {
        -                  "additionalProperties": false,
        -                  "description": "Schema § 1.8 — a non-fatal geometry advisory (56th-fire T2).\n\nThe wire projection of the engine's `core.GeometryWarning`. Advisory only:\na warning NEVER changes a measured quantity — it flags geometry that is\nvalid but likely a mistake (e.g. a stale dependent-height default). Present\non BOTH tiers — a correctness/safety signal, not a paid feature.",
        -                  "properties": {
        -                    "affected_params": {
        -                      "items": {
        -                        "type": "string"
        -                      },
        -                      "type": "array"
        -                    },
        -                    "code": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "detail": {
        -                      "additionalProperties": {
        -                        "type": "number"
        -                      },
        -                      "type": "object"
        -                    },
        -                    "message": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "severity": {
        -                      "enum": [
        -                        "info",
        -                        "advisory",
        -                        "caution"
        -                      ],
        -                      "type": "string"
        -                    }
        -                  },
        -                  "required": [
        -                    "code",
        -                    "severity",
        -                    "message"
        -                  ],
        -                  "type": "object"
        -                },
        -                "type": "array"
        -              }
        -            },
        -            "required": [
        -              "assembly_slug",
        -              "standard",
        -              "parameters_used",
        -              "boq_rows",
        -              "totals_summary",
        -              "text_summary"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      },
        -      "error": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        -            "properties": {
        -              "code": {
        -                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        -                "enum": [
        -                  "RATE_LIMIT_EXCEEDED",
        -                  "TIER_INSUFFICIENT",
        -                  "INVALID_INPUT",
        -                  "SCHEMA_VERSION_MISMATCH",
        -                  "SCHEMA_INVARIANT_VIOLATION",
        -                  "UPSTREAM_TIMEOUT",
        -                  "BACKEND_FAILURE",
        -                  "IP_BLOCKED",
        -                  "RESOURCE_NOT_FOUND",
        -                  "RENDER_FAILURE",
        -                  "OCR_LOW_CONFIDENCE",
        -                  "MANUAL_REVIEW_REQUIRED",
        -                  "ACCEPTANCE_REQUIRED",
        -                  "INVALID_TOKEN"
        -                ],
        -                "type": "string"
        -              },
        -              "details": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "message": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "recoverable": {
        -                "type": "boolean"
        -              },
        -              "retry_after_seconds": {
        -                "anyOf": [
        -                  {
        -                    "minimum": 0,
        -                    "type": "integer"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              }
        -            },
        -            "required": [
        -              "code",
        -              "message",
        -              "recoverable"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      }
        -    },
        -    "required": [
        -      "_meta"
        -    ],
        -    "type": "object"
        -  },
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "_meta": {
        -        "additionalProperties": false,
        -        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        -        "properties": {
        -          "deliverables": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        -                "properties": {
        -                  "docx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "dxf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "expires_at": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  },
        -                  "pdf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "xlsx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "expires_at"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "document_id": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "issued_at": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "output_mode": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Surfaces what a trimmed ``output_mode`` withheld from ``data``.\n\nA trimmed mode (``summary`` / ``boq`` / ``boq_with_backup``) withholds\nalready-computed fields to keep the chat payload small. The withheld value\nreads to a client agent as \"capability missing\" (the box-culvert \"geometry\nbuilder isn't firing\" scare) rather than \"pared for size\": ``drawing`` and\n``audit_trail`` appear as ``null``, ``boq_rows`` as an empty list ``[]``\n(its type forbids ``null``) — both indistinguishable from a genuine absent\nresult. This names the withheld fields and the exact mode that brings each\nback, so the value is unambiguous. Absent on the default ``full_json`` mode\n— nothing is withheld, nothing to point at.",
        -                "properties": {
        -                  "mode": {
        -                    "enum": [
        -                      "summary",
        -                      "boq",
        -                      "boq_with_backup"
        -                    ],
        -                    "type": "string"
        -                  },
        -                  "omitted_fields": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "minItems": 1,
        -                    "type": "array"
        -                  },
        -                  "retrieve_with": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "mode",
        -                  "omitted_fields",
        -                  "retrieve_with"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "rate_limit_remaining": {
        -            "anyOf": [
        -              {
        -                "minimum": 0,
        -                "type": "integer"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "request_id": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "schema_version": {
        -            "const": "1.0.0",
        -            "default": "1.0.0",
        -            "type": "string"
        -          },
        -          "scope_boundary": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        -                "properties": {
        -                  "not_in_scope": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "produced": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "recommended_companions": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "type": "string"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "produced",
        -                  "not_in_scope"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tier": {
        -            "enum": [
        -              "free",
        -              "paid"
        -            ],
        -            "type": "string"
        -          },
        -          "tier_upgrade": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        -                "properties": {
        -                  "available_tiers": {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        -                      "properties": {
        -                        "billing": {
        -                          "enum": [
        -                            "one_off",
        -                            "monthly",
        -                            "annual"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "currency": {
        -                          "enum": [
        -                            "GBP",
        -                            "SGD",
        -                            "EUR",
        -                            "USD",
        -                            "CAD",
        -                            "AUD",
        -                            "NZD",
        -                            "MYR"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "display_name": {
        -                          "type": "string"
        -                        },
        -                        "price_local": {
        -                          "type": "number"
        -                        },
        -                        "tier_slug": {
        -                          "enum": [
        -                            "7_day_pass",
        -                            "solo",
        -                            "studio",
        -                            "practice"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "unlock_summary": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "tier_slug",
        -                        "display_name",
        -                        "price_local",
        -                        "currency",
        -                        "billing",
        -                        "unlock_summary"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "current_tier": {
        -                    "const": "free",
        -                    "default": "free",
        -                    "type": "string"
        -                  },
        -                  "pass_credit": {
        -                    "anyOf": [
        -                      {
        -                        "additionalProperties": false,
        -                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        -                        "properties": {
        -                          "amount_local": {
        -                            "type": "number"
        -                          },
        -                          "applies_to": {
        -                            "const": "solo_first_month",
        -                            "default": "solo_first_month",
        -                            "type": "string"
        -                          },
        -                          "currency": {
        -                            "type": "string"
        -                          },
        -                          "redeemable_until": {
        -                            "type": "string"
        -                          }
        -                        },
        -                        "required": [
        -                          "amount_local",
        -                          "currency",
        -                          "redeemable_until"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "pricing_url": {
        -                    "default": "https://civilquants.com/pricing",
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "available_tiers"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tos_url": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "upgrade_hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "warranty_disclaimer": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          }
        -        },
        -        "required": [
        -          "request_id",
        -          "issued_at",
        -          "tier"
        -        ],
        -        "type": "object"
        -      },
        -      "data": {
        -        "default": null,
        -        "title": "Data"
        -      },
        -      "error": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        -            "properties": {
        -              "code": {
        -                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        -                "enum": [
        -                  "RATE_LIMIT_EXCEEDED",
        -                  "TIER_INSUFFICIENT",
        -                  "INVALID_INPUT",
        -                  "SCHEMA_VERSION_MISMATCH",
        -                  "SCHEMA_INVARIANT_VIOLATION",
        -                  "UPSTREAM_TIMEOUT",
        -                  "BACKEND_FAILURE",
        -                  "IP_BLOCKED",
        -                  "RESOURCE_NOT_FOUND",
        -                  "RENDER_FAILURE",
        -                  "OCR_LOW_CONFIDENCE",
        -                  "MANUAL_REVIEW_REQUIRED",
        -                  "ACCEPTANCE_REQUIRED",
        -                  "INVALID_TOKEN"
        -                ],
        -                "type": "string"
        -              },
        -              "details": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "message": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "recoverable": {
        -                "type": "boolean"
        -              },
        -              "retry_after_seconds": {
        -                "anyOf": [
        -                  {
        -                    "minimum": 0,
        -                    "type": "integer"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              }
        -            },
        -            "required": [
        -              "code",
        -              "message",
        -              "recoverable"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      }
        -    },
        -    "required": [
        -      "_meta"
        -    ],
        -    "type": "object"
        -  }
        -]New value: +[
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "_meta": {
        +        "additionalProperties": false,
        +        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        +        "properties": {
        +          "deliverables": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        +                "properties": {
        +                  "docx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "dxf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "expires_at": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  },
        +                  "pdf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "xlsx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "expires_at"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "document_id": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "issued_at": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "output_mode": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Surfaces what a trimmed ``output_mode`` withheld from ``data``.\n\nA trimmed mode (``summary`` / ``material_schedule`` / ``boq`` /\n``boq_with_backup``) withholds\nalready-computed fields to keep the chat payload small. The withheld value\nreads to a client agent as \"capability missing\" (the box-culvert \"geometry\nbuilder isn't firing\" scare) rather than \"pared for size\": ``drawing`` and\n``audit_trail`` appear as ``null``, ``boq_rows`` as an empty list ``[]``\n(its type forbids ``null``) — both indistinguishable from a genuine absent\nresult. This names the withheld fields and the exact mode that brings each\nback, so the value is unambiguous. Absent on the default ``full_json`` mode\n— nothing is withheld, nothing to point at.",
        +                "properties": {
        +                  "mode": {
        +                    "enum": [
        +                      "summary",
        +                      "material_schedule",
        +                      "boq",
        +                      "boq_with_backup"
        +                    ],
        +                    "type": "string"
        +                  },
        +                  "omitted_fields": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "minItems": 1,
        +                    "type": "array"
        +                  },
        +                  "retrieve_with": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "mode",
        +                  "omitted_fields",
        +                  "retrieve_with"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "rate_limit_remaining": {
        +            "anyOf": [
        +              {
        +                "minimum": 0,
        +                "type": "integer"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "request_id": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "schema_version": {
        +            "const": "1.0.0",
        +            "default": "1.0.0",
        +            "type": "string"
        +          },
        +          "scope_boundary": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        +                "properties": {
        +                  "not_in_scope": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "produced": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "recommended_companions": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "type": "string"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "produced",
        +                  "not_in_scope"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tier": {
        +            "enum": [
        +              "free",
        +              "paid"
        +            ],
        +            "type": "string"
        +          },
        +          "tier_upgrade": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        +                "properties": {
        +                  "available_tiers": {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        +                      "properties": {
        +                        "billing": {
        +                          "enum": [
        +                            "one_off",
        +                            "monthly",
        +                            "annual"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "currency": {
        +                          "enum": [
        +                            "GBP",
        +                            "SGD",
        +                            "EUR",
        +                            "USD",
        +                            "CAD",
        +                            "AUD",
        +                            "NZD",
        +                            "MYR"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "display_name": {
        +                          "type": "string"
        +                        },
        +                        "price_local": {
        +                          "type": "number"
        +                        },
        +                        "tier_slug": {
        +                          "enum": [
        +                            "7_day_pass",
        +                            "solo",
        +                            "studio",
        +                            "practice"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "unlock_summary": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "tier_slug",
        +                        "display_name",
        +                        "price_local",
        +                        "currency",
        +                        "billing",
        +                        "unlock_summary"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "current_tier": {
        +                    "const": "free",
        +                    "default": "free",
        +                    "type": "string"
        +                  },
        +                  "pass_credit": {
        +                    "anyOf": [
        +                      {
        +                        "additionalProperties": false,
        +                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        +                        "properties": {
        +                          "amount_local": {
        +                            "type": "number"
        +                          },
        +                          "applies_to": {
        +                            "const": "solo_first_month",
        +                            "default": "solo_first_month",
        +                            "type": "string"
        +                          },
        +                          "currency": {
        +                            "type": "string"
        +                          },
        +                          "redeemable_until": {
        +                            "type": "string"
        +                          }
        +                        },
        +                        "required": [
        +                          "amount_local",
        +                          "currency",
        +                          "redeemable_until"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "pricing_url": {
        +                    "default": "https://civilquants.com/pricing",
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "available_tiers"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tos_url": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "upgrade_hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "warranty_disclaimer": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          }
        +        },
        +        "required": [
        +          "request_id",
        +          "issued_at",
        +          "tier"
        +        ],
        +        "type": "object"
        +      },
        +      "data": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Schema § 1.1 — the typed payload returned inside `MCPResponse[ComputeResult]`.\n\nFree-tier responses omit `drawings` (the downloadable CAD artefact\npointers — the paid differentiator); the bridge enforces this. The\n`audit_trail` and the inline `drawing` preview are present on BOTH tiers\n(V1 ALIGN / 60th-fire D + C). `text_summary` is bounded to 2000 chars —\nkeeps the LLM-facing summary token-cheap and forces longer narrative into\nBoQ row descriptions where it belongs. `warnings` is the non-fatal\ngeometry advisory list (both tiers).",
        +            "properties": {
        +              "assembly_slug": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "audit_trail": {
        +                "anyOf": [
        +                  {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.7 — paid-tier audit-trail entry.\n\nOne entry per BoQ row; `boq_row_index` ties to the row position in\n`ComputeResult.boq_rows`. `derivation` is the human-readable formula\nwalk-through; `formula` is the optional formal expression.",
        +                      "properties": {
        +                        "boq_row_index": {
        +                          "minimum": 0,
        +                          "type": "integer"
        +                        },
        +                        "derivation": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "formula": {
        +                          "anyOf": [
        +                            {
        +                              "type": "string"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ],
        +                          "default": null
        +                        },
        +                        "id": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "parameters_referenced": {
        +                          "items": {
        +                            "type": "string"
        +                          },
        +                          "type": "array"
        +                        }
        +                      },
        +                      "required": [
        +                        "id",
        +                        "boq_row_index",
        +                        "derivation"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "boq_rows": {
        +                "items": {
        +                  "additionalProperties": false,
        +                  "description": "Schema § 1.3 — a single bill row in the requested standard's format.\n\n`description` is the non-verbatim functional description per spec § 13.9 /\n§ 15 invariant — NEVER reproduces a standard's verbatim clause text.\n`rate` / `amount` ship null because rates are commodity data the customer\nowns; the engine's job is the measurement, not the pricing.",
        +                  "properties": {
        +                    "amount": {
        +                      "anyOf": [
        +                        {
        +                          "type": "number"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "attribution": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "audit_id": {
        +                      "anyOf": [
        +                        {
        +                          "type": "string"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "description": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "quantity": {
        +                      "minimum": 0,
        +                      "type": "number"
        +                    },
        +                    "rate": {
        +                      "anyOf": [
        +                        {
        +                          "type": "number"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "unit": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "work_section": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    }
        +                  },
        +                  "required": [
        +                    "work_section",
        +                    "description",
        +                    "quantity",
        +                    "unit",
        +                    "attribution"
        +                  ],
        +                  "type": "object"
        +                },
        +                "type": "array"
        +              },
        +              "drawing": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": false,
        +                    "description": "Schema § 1.6a — inline server-rendered SVG preview of the geometry.\n\nThe MCP mirror of the web ``/compute`` response's ``drawing`` field\n(``api.schemas.compute.DrawingRef``): the same on-screen dimensioned\ndrawing both tiers see in the workspace, surfaced on the MCP compute\nresponse so a chat client can render it inline (60th-fire item C). This\nis the on-screen preview — present on BOTH tiers per the free/paid\nboundary; the downloadable CAD artefacts (DXF / dimensioned PDF) remain\nthe paid differentiator via the export tools.\n\nDefined here rather than importing ``DrawingRef`` because the web\n``schemas`` package imports back into this module (``schemas.render``),\nso reusing it would create an import cycle — the MCP wire contract keeps\nits own copy, the same pattern as ``BoQRow`` / ``DrawingReference``.",
        +                    "properties": {
        +                      "entity_count": {
        +                        "minimum": 0,
        +                        "type": "integer"
        +                      },
        +                      "svg_b64": {
        +                        "minLength": 1,
        +                        "type": "string"
        +                      },
        +                      "unit_of_drawing": {
        +                        "const": "m",
        +                        "default": "m",
        +                        "type": "string"
        +                      },
        +                      "viewbox_height": {
        +                        "exclusiveMinimum": 0,
        +                        "type": "number"
        +                      },
        +                      "viewbox_width": {
        +                        "exclusiveMinimum": 0,
        +                        "type": "number"
        +                      },
        +                      "viewbox_x": {
        +                        "type": "number"
        +                      },
        +                      "viewbox_y": {
        +                        "type": "number"
        +                      }
        +                    },
        +                    "required": [
        +                      "svg_b64",
        +                      "viewbox_x",
        +                      "viewbox_y",
        +                      "viewbox_width",
        +                      "viewbox_height",
        +                      "entity_count"
        +                    ],
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "drawings": {
        +                "anyOf": [
        +                  {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.6 — paid-tier drawing artefact pointer.\n\n`url` is an R2-signed URL; expiry is carried in `_meta.deliverables.expires_at`\non the envelope (not duplicated here). `layers` is DXF-only; PDF/SVG\ncallers omit it.",
        +                      "properties": {
        +                        "drawing_type": {
        +                          "enum": [
        +                            "section",
        +                            "plan",
        +                            "elevation",
        +                            "isometric",
        +                            "detail"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "format": {
        +                          "enum": [
        +                            "DXF",
        +                            "PDF",
        +                            "SVG"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "layers": {
        +                          "anyOf": [
        +                            {
        +                              "items": {
        +                                "type": "string"
        +                              },
        +                              "type": "array"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ],
        +                          "default": null
        +                        },
        +                        "scale": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "sheet_size": {
        +                          "enum": [
        +                            "A1",
        +                            "A2",
        +                            "A3",
        +                            "A4"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "url": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "drawing_type",
        +                        "format",
        +                        "url",
        +                        "sheet_size",
        +                        "scale"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "parameters_used": {
        +                "additionalProperties": false,
        +                "description": "Schema § 1.2 — the parameter snapshot the engine actually used.\n\nSplits user-supplied values from engine defaults so customers can see\nwhich numbers came from them and which the engine filled in. Every\ndefaulted parameter SHOULD have a corresponding entry in `assumptions`\n— the bridge layer enforces this when wrapping engine output.",
        +                "properties": {
        +                  "assumptions": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "engine_defaults": {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  "user_supplied": {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  }
        +                },
        +                "type": "object"
        +              },
        +              "standard": {
        +                "enum": [
        +                  "CESMM4",
        +                  "NRM2",
        +                  "SMM7",
        +                  "MMHW"
        +                ],
        +                "type": "string"
        +              },
        +              "text_summary": {
        +                "maxLength": 2000,
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "totals_summary": {
        +                "additionalProperties": false,
        +                "description": "Schema § 1.4 — totals_summary as a typed wrapper around the free-form dict.\n\nWire shape is a flat object (`{\"concrete_m3\": {...}, \"rebar_t\": {...}}`).\nWe model it as `RootModel`-equivalent via `model_config(extra=\"allow\")`\n+ a single `__root__`-style `entries` dict. Pydantic v2 recommends\n`RootModel` for free-form roots; using a wrapper class keeps the import\nsurface uniform with the rest of this module.",
        +                "properties": {
        +                  "entries": {
        +                    "additionalProperties": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.4 — single material/work-class total entry.",
        +                      "properties": {
        +                        "quantity": {
        +                          "minimum": 0,
        +                          "type": "number"
        +                        },
        +                        "unit": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "quantity",
        +                        "unit"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "object"
        +                  }
        +                },
        +                "type": "object"
        +              },
        +              "warnings": {
        +                "items": {
        +                  "additionalProperties": false,
        +                  "description": "Schema § 1.8 — a non-fatal geometry advisory (56th-fire T2).\n\nThe wire projection of the engine's `core.GeometryWarning`. Advisory only:\na warning NEVER changes a measured quantity — it flags geometry that is\nvalid but likely a mistake (e.g. a stale dependent-height default). Present\non BOTH tiers — a correctness/safety signal, not a paid feature.",
        +                  "properties": {
        +                    "affected_params": {
        +                      "items": {
        +                        "type": "string"
        +                      },
        +                      "type": "array"
        +                    },
        +                    "code": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "detail": {
        +                      "additionalProperties": {
        +                        "type": "number"
        +                      },
        +                      "type": "object"
        +                    },
        +                    "message": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "severity": {
        +                      "enum": [
        +                        "info",
        +                        "advisory",
        +                        "caution"
        +                      ],
        +                      "type": "string"
        +                    }
        +                  },
        +                  "required": [
        +                    "code",
        +                    "severity",
        +                    "message"
        +                  ],
        +                  "type": "object"
        +                },
        +                "type": "array"
        +              }
        +            },
        +            "required": [
        +              "assembly_slug",
        +              "standard",
        +              "parameters_used",
        +              "boq_rows",
        +              "totals_summary",
        +              "text_summary"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      },
        +      "error": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        +            "properties": {
        +              "code": {
        +                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        +                "enum": [
        +                  "RATE_LIMIT_EXCEEDED",
        +                  "TIER_INSUFFICIENT",
        +                  "INVALID_INPUT",
        +                  "SCHEMA_VERSION_MISMATCH",
        +                  "SCHEMA_INVARIANT_VIOLATION",
        +                  "UPSTREAM_TIMEOUT",
        +                  "BACKEND_FAILURE",
        +                  "IP_BLOCKED",
        +                  "RESOURCE_NOT_FOUND",
        +                  "RENDER_FAILURE",
        +                  "OCR_LOW_CONFIDENCE",
        +                  "MANUAL_REVIEW_REQUIRED",
        +                  "ACCEPTANCE_REQUIRED",
        +                  "INVALID_TOKEN"
        +                ],
        +                "type": "string"
        +              },
        +              "details": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "message": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "recoverable": {
        +                "type": "boolean"
        +              },
        +              "retry_after_seconds": {
        +                "anyOf": [
        +                  {
        +                    "minimum": 0,
        +                    "type": "integer"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              }
        +            },
        +            "required": [
        +              "code",
        +              "message",
        +              "recoverable"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      }
        +    },
        +    "required": [
        +      "_meta"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "_meta": {
        +        "additionalProperties": false,
        +        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        +        "properties": {
        +          "deliverables": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        +                "properties": {
        +                  "docx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "dxf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "expires_at": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  },
        +                  "pdf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "xlsx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "expires_at"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "document_id": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "issued_at": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "output_mode": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Surfaces what a trimmed ``output_mode`` withheld from ``data``.\n\nA trimmed mode (``summary`` / ``material_schedule`` / ``boq`` /\n``boq_with_backup``) withholds\nalready-computed fields to keep the chat payload small. The withheld value\nreads to a client agent as \"capability missing\" (the box-culvert \"geometry\nbuilder isn't firing\" scare) rather than \"pared for size\": ``drawing`` and\n``audit_trail`` appear as ``null``, ``boq_rows`` as an empty list ``[]``\n(its type forbids ``null``) — both indistinguishable from a genuine absent\nresult. This names the withheld fields and the exact mode that brings each\nback, so the value is unambiguous. Absent on the default ``full_json`` mode\n— nothing is withheld, nothing to point at.",
        +                "properties": {
        +                  "mode": {
        +                    "enum": [
        +                      "summary",
        +                      "material_schedule",
        +                      "boq",
        +                      "boq_with_backup"
        +                    ],
        +                    "type": "string"
        +                  },
        +                  "omitted_fields": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "minItems": 1,
        +                    "type": "array"
        +                  },
        +                  "retrieve_with": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "mode",
        +                  "omitted_fields",
        +                  "retrieve_with"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "rate_limit_remaining": {
        +            "anyOf": [
        +              {
        +                "minimum": 0,
        +                "type": "integer"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "request_id": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "schema_version": {
        +            "const": "1.0.0",
        +            "default": "1.0.0",
        +            "type": "string"
        +          },
        +          "scope_boundary": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        +                "properties": {
        +                  "not_in_scope": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "produced": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "recommended_companions": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "type": "string"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "produced",
        +                  "not_in_scope"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tier": {
        +            "enum": [
        +              "free",
        +              "paid"
        +            ],
        +            "type": "string"
        +          },
        +          "tier_upgrade": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        +                "properties": {
        +                  "available_tiers": {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        +                      "properties": {
        +                        "billing": {
        +                          "enum": [
        +                            "one_off",
        +                            "monthly",
        +                            "annual"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "currency": {
        +                          "enum": [
        +                            "GBP",
        +                            "SGD",
        +                            "EUR",
        +                            "USD",
        +                            "CAD",
        +                            "AUD",
        +                            "NZD",
        +                            "MYR"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "display_name": {
        +                          "type": "string"
        +                        },
        +                        "price_local": {
        +                          "type": "number"
        +                        },
        +                        "tier_slug": {
        +                          "enum": [
        +                            "7_day_pass",
        +                            "solo",
        +                            "studio",
        +                            "practice"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "unlock_summary": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "tier_slug",
        +                        "display_name",
        +                        "price_local",
        +                        "currency",
        +                        "billing",
        +                        "unlock_summary"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "current_tier": {
        +                    "const": "free",
        +                    "default": "free",
        +                    "type": "string"
        +                  },
        +                  "pass_credit": {
        +                    "anyOf": [
        +                      {
        +                        "additionalProperties": false,
        +                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        +                        "properties": {
        +                          "amount_local": {
        +                            "type": "number"
        +                          },
        +                          "applies_to": {
        +                            "const": "solo_first_month",
        +                            "default": "solo_first_month",
        +                            "type": "string"
        +                          },
        +                          "currency": {
        +                            "type": "string"
        +                          },
        +                          "redeemable_until": {
        +                            "type": "string"
        +                          }
        +                        },
        +                        "required": [
        +                          "amount_local",
        +                          "currency",
        +                          "redeemable_until"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "pricing_url": {
        +                    "default": "https://civilquants.com/pricing",
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "available_tiers"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tos_url": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "upgrade_hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "warranty_disclaimer": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          }
        +        },
        +        "required": [
        +          "request_id",
        +          "issued_at",
        +          "tier"
        +        ],
        +        "type": "object"
        +      },
        +      "data": {
        +        "default": null,
        +        "title": "Data"
        +      },
        +      "error": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        +            "properties": {
        +              "code": {
        +                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        +                "enum": [
        +                  "RATE_LIMIT_EXCEEDED",
        +                  "TIER_INSUFFICIENT",
        +                  "INVALID_INPUT",
        +                  "SCHEMA_VERSION_MISMATCH",
        +                  "SCHEMA_INVARIANT_VIOLATION",
        +                  "UPSTREAM_TIMEOUT",
        +                  "BACKEND_FAILURE",
        +                  "IP_BLOCKED",
        +                  "RESOURCE_NOT_FOUND",
        +                  "RENDER_FAILURE",
        +                  "OCR_LOW_CONFIDENCE",
        +                  "MANUAL_REVIEW_REQUIRED",
        +                  "ACCEPTANCE_REQUIRED",
        +                  "INVALID_TOKEN"
        +                ],
        +                "type": "string"
        +              },
        +              "details": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "message": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "recoverable": {
        +                "type": "boolean"
        +              },
        +              "retry_after_seconds": {
        +                "anyOf": [
        +                  {
        +                    "minimum": 0,
        +                    "type": "integer"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              }
        +            },
        +            "required": [
        +              "code",
        +              "message",
        +              "recoverable"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      }
        +    },
        +    "required": [
        +      "_meta"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedget_project1 field changed
      • changedOutput schema / properties / result / anyOf
        Previous value: -[
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "_meta": {
        -        "additionalProperties": false,
        -        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        -        "properties": {
        -          "deliverables": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        -                "properties": {
        -                  "docx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "dxf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "expires_at": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  },
        -                  "pdf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "xlsx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "expires_at"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "document_id": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "issued_at": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "output_mode": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Surfaces what a trimmed ``output_mode`` withheld from ``data``.\n\nA trimmed mode (``summary`` / ``boq`` / ``boq_with_backup``) withholds\nalready-computed fields to keep the chat payload small. The withheld value\nreads to a client agent as \"capability missing\" (the box-culvert \"geometry\nbuilder isn't firing\" scare) rather than \"pared for size\": ``drawing`` and\n``audit_trail`` appear as ``null``, ``boq_rows`` as an empty list ``[]``\n(its type forbids ``null``) — both indistinguishable from a genuine absent\nresult. This names the withheld fields and the exact mode that brings each\nback, so the value is unambiguous. Absent on the default ``full_json`` mode\n— nothing is withheld, nothing to point at.",
        -                "properties": {
        -                  "mode": {
        -                    "enum": [
        -                      "summary",
        -                      "boq",
        -                      "boq_with_backup"
        -                    ],
        -                    "type": "string"
        -                  },
        -                  "omitted_fields": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "minItems": 1,
        -                    "type": "array"
        -                  },
        -                  "retrieve_with": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "mode",
        -                  "omitted_fields",
        -                  "retrieve_with"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "rate_limit_remaining": {
        -            "anyOf": [
        -              {
        -                "minimum": 0,
        -                "type": "integer"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "request_id": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "schema_version": {
        -            "const": "1.0.0",
        -            "default": "1.0.0",
        -            "type": "string"
        -          },
        -          "scope_boundary": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        -                "properties": {
        -                  "not_in_scope": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "produced": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "recommended_companions": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "type": "string"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "produced",
        -                  "not_in_scope"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tier": {
        -            "enum": [
        -              "free",
        -              "paid"
        -            ],
        -            "type": "string"
        -          },
        -          "tier_upgrade": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        -                "properties": {
        -                  "available_tiers": {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        -                      "properties": {
        -                        "billing": {
        -                          "enum": [
        -                            "one_off",
        -                            "monthly",
        -                            "annual"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "currency": {
        -                          "enum": [
        -                            "GBP",
        -                            "SGD",
        -                            "EUR",
        -                            "USD",
        -                            "CAD",
        -                            "AUD",
        -                            "NZD",
        -                            "MYR"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "display_name": {
        -                          "type": "string"
        -                        },
        -                        "price_local": {
        -                          "type": "number"
        -                        },
        -                        "tier_slug": {
        -                          "enum": [
        -                            "7_day_pass",
        -                            "solo",
        -                            "studio",
        -                            "practice"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "unlock_summary": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "tier_slug",
        -                        "display_name",
        -                        "price_local",
        -                        "currency",
        -                        "billing",
        -                        "unlock_summary"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "current_tier": {
        -                    "const": "free",
        -                    "default": "free",
        -                    "type": "string"
        -                  },
        -                  "pass_credit": {
        -                    "anyOf": [
        -                      {
        -                        "additionalProperties": false,
        -                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        -                        "properties": {
        -                          "amount_local": {
        -                            "type": "number"
        -                          },
        -                          "applies_to": {
        -                            "const": "solo_first_month",
        -                            "default": "solo_first_month",
        -                            "type": "string"
        -                          },
        -                          "currency": {
        -                            "type": "string"
        -                          },
        -                          "redeemable_until": {
        -                            "type": "string"
        -                          }
        -                        },
        -                        "required": [
        -                          "amount_local",
        -                          "currency",
        -                          "redeemable_until"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "pricing_url": {
        -                    "default": "https://civilquants.com/pricing",
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "available_tiers"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tos_url": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "upgrade_hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "warranty_disclaimer": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          }
        -        },
        -        "required": [
        -          "request_id",
        -          "issued_at",
        -          "tier"
        -        ],
        -        "type": "object"
        -      },
        -      "data": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "properties": {
        -              "assemblies": {
        -                "items": {
        -                  "additionalProperties": false,
        -                  "description": "Single assembly row inside a fetched project payload.",
        -                  "properties": {
        -                    "enabled": {
        -                      "type": "boolean"
        -                    },
        -                    "id": {
        -                      "type": "string"
        -                    },
        -                    "label": {
        -                      "type": "string"
        -                    },
        -                    "notes": {
        -                      "type": "string"
        -                    },
        -                    "parameters": {
        -                      "additionalProperties": true,
        -                      "type": "object"
        -                    },
        -                    "position": {
        -                      "type": "integer"
        -                    },
        -                    "slug": {
        -                      "type": "string"
        -                    }
        -                  },
        -                  "required": [
        -                    "id",
        -                    "slug",
        -                    "label",
        -                    "position",
        -                    "parameters",
        -                    "notes",
        -                    "enabled"
        -                  ],
        -                  "type": "object"
        -                },
        -                "type": "array"
        -              },
        -              "client": {
        -                "type": "string"
        -              },
        -              "currency": {
        -                "type": "string"
        -              },
        -              "default_standard": {
        -                "type": "string"
        -              },
        -              "description": {
        -                "type": "string"
        -              },
        -              "location": {
        -                "type": "string"
        -              },
        -              "name": {
        -                "type": "string"
        -              },
        -              "project_id": {
        -                "type": "string"
        -              },
        -              "project_number": {
        -                "type": "string"
        -              },
        -              "status": {
        -                "type": "string"
        -              }
        -            },
        -            "required": [
        -              "project_id",
        -              "name",
        -              "client",
        -              "project_number",
        -              "location",
        -              "description",
        -              "status",
        -              "default_standard",
        -              "currency",
        -              "assemblies"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      },
        -      "error": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        -            "properties": {
        -              "code": {
        -                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        -                "enum": [
        -                  "RATE_LIMIT_EXCEEDED",
        -                  "TIER_INSUFFICIENT",
        -                  "INVALID_INPUT",
        -                  "SCHEMA_VERSION_MISMATCH",
        -                  "SCHEMA_INVARIANT_VIOLATION",
        -                  "UPSTREAM_TIMEOUT",
        -                  "BACKEND_FAILURE",
        -                  "IP_BLOCKED",
        -                  "RESOURCE_NOT_FOUND",
        -                  "RENDER_FAILURE",
        -                  "OCR_LOW_CONFIDENCE",
        -                  "MANUAL_REVIEW_REQUIRED",
        -                  "ACCEPTANCE_REQUIRED",
        -                  "INVALID_TOKEN"
        -                ],
        -                "type": "string"
        -              },
        -              "details": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "message": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "recoverable": {
        -                "type": "boolean"
        -              },
        -              "retry_after_seconds": {
        -                "anyOf": [
        -                  {
        -                    "minimum": 0,
        -                    "type": "integer"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              }
        -            },
        -            "required": [
        -              "code",
        -              "message",
        -              "recoverable"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      }
        -    },
        -    "required": [
        -      "_meta"
        -    ],
        -    "type": "object"
        -  },
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "_meta": {
        -        "additionalProperties": false,
        -        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        -        "properties": {
        -          "deliverables": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        -                "properties": {
        -                  "docx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "dxf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "expires_at": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  },
        -                  "pdf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "xlsx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "expires_at"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "document_id": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "issued_at": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "output_mode": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Surfaces what a trimmed ``output_mode`` withheld from ``data``.\n\nA trimmed mode (``summary`` / ``boq`` / ``boq_with_backup``) withholds\nalready-computed fields to keep the chat payload small. The withheld value\nreads to a client agent as \"capability missing\" (the box-culvert \"geometry\nbuilder isn't firing\" scare) rather than \"pared for size\": ``drawing`` and\n``audit_trail`` appear as ``null``, ``boq_rows`` as an empty list ``[]``\n(its type forbids ``null``) — both indistinguishable from a genuine absent\nresult. This names the withheld fields and the exact mode that brings each\nback, so the value is unambiguous. Absent on the default ``full_json`` mode\n— nothing is withheld, nothing to point at.",
        -                "properties": {
        -                  "mode": {
        -                    "enum": [
        -                      "summary",
        -                      "boq",
        -                      "boq_with_backup"
        -                    ],
        -                    "type": "string"
        -                  },
        -                  "omitted_fields": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "minItems": 1,
        -                    "type": "array"
        -                  },
        -                  "retrieve_with": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "mode",
        -                  "omitted_fields",
        -                  "retrieve_with"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "rate_limit_remaining": {
        -            "anyOf": [
        -              {
        -                "minimum": 0,
        -                "type": "integer"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "request_id": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "schema_version": {
        -            "const": "1.0.0",
        -            "default": "1.0.0",
        -            "type": "string"
        -          },
        -          "scope_boundary": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        -                "properties": {
        -                  "not_in_scope": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "produced": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "recommended_companions": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "type": "string"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "produced",
        -                  "not_in_scope"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tier": {
        -            "enum": [
        -              "free",
        -              "paid"
        -            ],
        -            "type": "string"
        -          },
        -          "tier_upgrade": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        -                "properties": {
        -                  "available_tiers": {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        -                      "properties": {
        -                        "billing": {
        -                          "enum": [
        -                            "one_off",
        -                            "monthly",
        -                            "annual"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "currency": {
        -                          "enum": [
        -                            "GBP",
        -                            "SGD",
        -                            "EUR",
        -                            "USD",
        -                            "CAD",
        -                            "AUD",
        -                            "NZD",
        -                            "MYR"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "display_name": {
        -                          "type": "string"
        -                        },
        -                        "price_local": {
        -                          "type": "number"
        -                        },
        -                        "tier_slug": {
        -                          "enum": [
        -                            "7_day_pass",
        -                            "solo",
        -                            "studio",
        -                            "practice"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "unlock_summary": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "tier_slug",
        -                        "display_name",
        -                        "price_local",
        -                        "currency",
        -                        "billing",
        -                        "unlock_summary"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "current_tier": {
        -                    "const": "free",
        -                    "default": "free",
        -                    "type": "string"
        -                  },
        -                  "pass_credit": {
        -                    "anyOf": [
        -                      {
        -                        "additionalProperties": false,
        -                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        -                        "properties": {
        -                          "amount_local": {
        -                            "type": "number"
        -                          },
        -                          "applies_to": {
        -                            "const": "solo_first_month",
        -                            "default": "solo_first_month",
        -                            "type": "string"
        -                          },
        -                          "currency": {
        -                            "type": "string"
        -                          },
        -                          "redeemable_until": {
        -                            "type": "string"
        -                          }
        -                        },
        -                        "required": [
        -                          "amount_local",
        -                          "currency",
        -                          "redeemable_until"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "pricing_url": {
        -                    "default": "https://civilquants.com/pricing",
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "available_tiers"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tos_url": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "upgrade_hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "warranty_disclaimer": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          }
        -        },
        -        "required": [
        -          "request_id",
        -          "issued_at",
        -          "tier"
        -        ],
        -        "type": "object"
        -      },
        -      "data": {
        -        "default": null,
        -        "title": "Data"
        -      },
        -      "error": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        -            "properties": {
        -              "code": {
        -                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        -                "enum": [
        -                  "RATE_LIMIT_EXCEEDED",
        -                  "TIER_INSUFFICIENT",
        -                  "INVALID_INPUT",
        -                  "SCHEMA_VERSION_MISMATCH",
        -                  "SCHEMA_INVARIANT_VIOLATION",
        -                  "UPSTREAM_TIMEOUT",
        -                  "BACKEND_FAILURE",
        -                  "IP_BLOCKED",
        -                  "RESOURCE_NOT_FOUND",
        -                  "RENDER_FAILURE",
        -                  "OCR_LOW_CONFIDENCE",
        -                  "MANUAL_REVIEW_REQUIRED",
        -                  "ACCEPTANCE_REQUIRED",
        -                  "INVALID_TOKEN"
        -                ],
        -                "type": "string"
        -              },
        -              "details": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "message": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "recoverable": {
        -                "type": "boolean"
        -              },
        -              "retry_after_seconds": {
        -                "anyOf": [
        -                  {
        -                    "minimum": 0,
        -                    "type": "integer"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              }
        -            },
        -            "required": [
        -              "code",
        -              "message",
        -              "recoverable"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      }
        -    },
        -    "required": [
        -      "_meta"
        -    ],
        -    "type": "object"
        -  }
        -]New value: +[
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "_meta": {
        +        "additionalProperties": false,
        +        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        +        "properties": {
        +          "deliverables": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        +                "properties": {
        +                  "docx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "dxf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "expires_at": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  },
        +                  "pdf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "xlsx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "expires_at"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "document_id": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "issued_at": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "output_mode": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Surfaces what a trimmed ``output_mode`` withheld from ``data``.\n\nA trimmed mode (``summary`` / ``material_schedule`` / ``boq`` /\n``boq_with_backup``) withholds\nalready-computed fields to keep the chat payload small. The withheld value\nreads to a client agent as \"capability missing\" (the box-culvert \"geometry\nbuilder isn't firing\" scare) rather than \"pared for size\": ``drawing`` and\n``audit_trail`` appear as ``null``, ``boq_rows`` as an empty list ``[]``\n(its type forbids ``null``) — both indistinguishable from a genuine absent\nresult. This names the withheld fields and the exact mode that brings each\nback, so the value is unambiguous. Absent on the default ``full_json`` mode\n— nothing is withheld, nothing to point at.",
        +                "properties": {
        +                  "mode": {
        +                    "enum": [
        +                      "summary",
        +                      "material_schedule",
        +                      "boq",
        +                      "boq_with_backup"
        +                    ],
        +                    "type": "string"
        +                  },
        +                  "omitted_fields": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "minItems": 1,
        +                    "type": "array"
        +                  },
        +                  "retrieve_with": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "mode",
        +                  "omitted_fields",
        +                  "retrieve_with"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "rate_limit_remaining": {
        +            "anyOf": [
        +              {
        +                "minimum": 0,
        +                "type": "integer"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "request_id": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "schema_version": {
        +            "const": "1.0.0",
        +            "default": "1.0.0",
        +            "type": "string"
        +          },
        +          "scope_boundary": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        +                "properties": {
        +                  "not_in_scope": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "produced": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "recommended_companions": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "type": "string"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "produced",
        +                  "not_in_scope"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tier": {
        +            "enum": [
        +              "free",
        +              "paid"
        +            ],
        +            "type": "string"
        +          },
        +          "tier_upgrade": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        +                "properties": {
        +                  "available_tiers": {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        +                      "properties": {
        +                        "billing": {
        +                          "enum": [
        +                            "one_off",
        +                            "monthly",
        +                            "annual"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "currency": {
        +                          "enum": [
        +                            "GBP",
        +                            "SGD",
        +                            "EUR",
        +                            "USD",
        +                            "CAD",
        +                            "AUD",
        +                            "NZD",
        +                            "MYR"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "display_name": {
        +                          "type": "string"
        +                        },
        +                        "price_local": {
        +                          "type": "number"
        +                        },
        +                        "tier_slug": {
        +                          "enum": [
        +                            "7_day_pass",
        +                            "solo",
        +                            "studio",
        +                            "practice"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "unlock_summary": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "tier_slug",
        +                        "display_name",
        +                        "price_local",
        +                        "currency",
        +                        "billing",
        +                        "unlock_summary"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "current_tier": {
        +                    "const": "free",
        +                    "default": "free",
        +                    "type": "string"
        +                  },
        +                  "pass_credit": {
        +                    "anyOf": [
        +                      {
        +                        "additionalProperties": false,
        +                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        +                        "properties": {
        +                          "amount_local": {
        +                            "type": "number"
        +                          },
        +                          "applies_to": {
        +                            "const": "solo_first_month",
        +                            "default": "solo_first_month",
        +                            "type": "string"
        +                          },
        +                          "currency": {
        +                            "type": "string"
        +                          },
        +                          "redeemable_until": {
        +                            "type": "string"
        +                          }
        +                        },
        +                        "required": [
        +                          "amount_local",
        +                          "currency",
        +                          "redeemable_until"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "pricing_url": {
        +                    "default": "https://civilquants.com/pricing",
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "available_tiers"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tos_url": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "upgrade_hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "warranty_disclaimer": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          }
        +        },
        +        "required": [
        +          "request_id",
        +          "issued_at",
        +          "tier"
        +        ],
        +        "type": "object"
        +      },
        +      "data": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "properties": {
        +              "assemblies": {
        +                "items": {
        +                  "additionalProperties": false,
        +                  "description": "Single assembly row inside a fetched project payload.",
        +                  "properties": {
        +                    "enabled": {
        +                      "type": "boolean"
        +                    },
        +                    "id": {
        +                      "type": "string"
        +                    },
        +                    "label": {
        +                      "type": "string"
        +                    },
        +                    "notes": {
        +                      "type": "string"
        +                    },
        +                    "parameters": {
        +                      "additionalProperties": true,
        +                      "type": "object"
        +                    },
        +                    "position": {
        +                      "type": "integer"
        +                    },
        +                    "slug": {
        +                      "type": "string"
        +                    }
        +                  },
        +                  "required": [
        +                    "id",
        +                    "slug",
        +                    "label",
        +                    "position",
        +                    "parameters",
        +                    "notes",
        +                    "enabled"
        +                  ],
        +                  "type": "object"
        +                },
        +                "type": "array"
        +              },
        +              "client": {
        +                "type": "string"
        +              },
        +              "currency": {
        +                "type": "string"
        +              },
        +              "default_standard": {
        +                "type": "string"
        +              },
        +              "description": {
        +                "type": "string"
        +              },
        +              "location": {
        +                "type": "string"
        +              },
        +              "name": {
        +                "type": "string"
        +              },
        +              "project_id": {
        +                "type": "string"
        +              },
        +              "project_number": {
        +                "type": "string"
        +              },
        +              "status": {
        +                "type": "string"
        +              }
        +            },
        +            "required": [
        +              "project_id",
        +              "name",
        +              "client",
        +              "project_number",
        +              "location",
        +              "description",
        +              "status",
        +              "default_standard",
        +              "currency",
        +              "assemblies"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      },
        +      "error": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        +            "properties": {
        +              "code": {
        +                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        +                "enum": [
        +                  "RATE_LIMIT_EXCEEDED",
        +                  "TIER_INSUFFICIENT",
        +                  "INVALID_INPUT",
        +                  "SCHEMA_VERSION_MISMATCH",
        +                  "SCHEMA_INVARIANT_VIOLATION",
        +                  "UPSTREAM_TIMEOUT",
        +                  "BACKEND_FAILURE",
        +                  "IP_BLOCKED",
        +                  "RESOURCE_NOT_FOUND",
        +                  "RENDER_FAILURE",
        +                  "OCR_LOW_CONFIDENCE",
        +                  "MANUAL_REVIEW_REQUIRED",
        +                  "ACCEPTANCE_REQUIRED",
        +                  "INVALID_TOKEN"
        +                ],
        +                "type": "string"
        +              },
        +              "details": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "message": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "recoverable": {
        +                "type": "boolean"
        +              },
        +              "retry_after_seconds": {
        +                "anyOf": [
        +                  {
        +                    "minimum": 0,
        +                    "type": "integer"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              }
        +            },
        +            "required": [
        +              "code",
        +              "message",
        +              "recoverable"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      }
        +    },
        +    "required": [
        +      "_meta"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "_meta": {
        +        "additionalProperties": false,
        +        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        +        "properties": {
        +          "deliverables": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        +                "properties": {
        +                  "docx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "dxf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "expires_at": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  },
        +                  "pdf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "xlsx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "expires_at"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "document_id": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "issued_at": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "output_mode": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Surfaces what a trimmed ``output_mode`` withheld from ``data``.\n\nA trimmed mode (``summary`` / ``material_schedule`` / ``boq`` /\n``boq_with_backup``) withholds\nalready-computed fields to keep the chat payload small. The withheld value\nreads to a client agent as \"capability missing\" (the box-culvert \"geometry\nbuilder isn't firing\" scare) rather than \"pared for size\": ``drawing`` and\n``audit_trail`` appear as ``null``, ``boq_rows`` as an empty list ``[]``\n(its type forbids ``null``) — both indistinguishable from a genuine absent\nresult. This names the withheld fields and the exact mode that brings each\nback, so the value is unambiguous. Absent on the default ``full_json`` mode\n— nothing is withheld, nothing to point at.",
        +                "properties": {
        +                  "mode": {
        +                    "enum": [
        +                      "summary",
        +                      "material_schedule",
        +                      "boq",
        +                      "boq_with_backup"
        +                    ],
        +                    "type": "string"
        +                  },
        +                  "omitted_fields": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "minItems": 1,
        +                    "type": "array"
        +                  },
        +                  "retrieve_with": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "mode",
        +                  "omitted_fields",
        +                  "retrieve_with"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "rate_limit_remaining": {
        +            "anyOf": [
        +              {
        +                "minimum": 0,
        +                "type": "integer"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "request_id": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "schema_version": {
        +            "const": "1.0.0",
        +            "default": "1.0.0",
        +            "type": "string"
        +          },
        +          "scope_boundary": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        +                "properties": {
        +                  "not_in_scope": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "produced": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "recommended_companions": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "type": "string"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "produced",
        +                  "not_in_scope"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tier": {
        +            "enum": [
        +              "free",
        +              "paid"
        +            ],
        +            "type": "string"
        +          },
        +          "tier_upgrade": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        +                "properties": {
        +                  "available_tiers": {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        +                      "properties": {
        +                        "billing": {
        +                          "enum": [
        +                            "one_off",
        +                            "monthly",
        +                            "annual"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "currency": {
        +                          "enum": [
        +                            "GBP",
        +                            "SGD",
        +                            "EUR",
        +                            "USD",
        +                            "CAD",
        +                            "AUD",
        +                            "NZD",
        +                            "MYR"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "display_name": {
        +                          "type": "string"
        +                        },
        +                        "price_local": {
        +                          "type": "number"
        +                        },
        +                        "tier_slug": {
        +                          "enum": [
        +                            "7_day_pass",
        +                            "solo",
        +                            "studio",
        +                            "practice"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "unlock_summary": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "tier_slug",
        +                        "display_name",
        +                        "price_local",
        +                        "currency",
        +                        "billing",
        +                        "unlock_summary"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "current_tier": {
        +                    "const": "free",
        +                    "default": "free",
        +                    "type": "string"
        +                  },
        +                  "pass_credit": {
        +                    "anyOf": [
        +                      {
        +                        "additionalProperties": false,
        +                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        +                        "properties": {
        +                          "amount_local": {
        +                            "type": "number"
        +                          },
        +                          "applies_to": {
        +                            "const": "solo_first_month",
        +                            "default": "solo_first_month",
        +                            "type": "string"
        +                          },
        +                          "currency": {
        +                            "type": "string"
        +                          },
        +                          "redeemable_until": {
        +                            "type": "string"
        +                          }
        +                        },
        +                        "required": [
        +                          "amount_local",
        +                          "currency",
        +                          "redeemable_until"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "pricing_url": {
        +                    "default": "https://civilquants.com/pricing",
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "available_tiers"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tos_url": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "upgrade_hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "warranty_disclaimer": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          }
        +        },
        +        "required": [
        +          "request_id",
        +          "issued_at",
        +          "tier"
        +        ],
        +        "type": "object"
        +      },
        +      "data": {
        +        "default": null,
        +        "title": "Data"
        +      },
        +      "error": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        +            "properties": {
        +              "code": {
        +                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        +                "enum": [
        +                  "RATE_LIMIT_EXCEEDED",
        +                  "TIER_INSUFFICIENT",
        +                  "INVALID_INPUT",
        +                  "SCHEMA_VERSION_MISMATCH",
        +                  "SCHEMA_INVARIANT_VIOLATION",
        +                  "UPSTREAM_TIMEOUT",
        +                  "BACKEND_FAILURE",
        +                  "IP_BLOCKED",
        +                  "RESOURCE_NOT_FOUND",
        +                  "RENDER_FAILURE",
        +                  "OCR_LOW_CONFIDENCE",
        +                  "MANUAL_REVIEW_REQUIRED",
        +                  "ACCEPTANCE_REQUIRED",
        +                  "INVALID_TOKEN"
        +                ],
        +                "type": "string"
        +              },
        +              "details": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "message": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "recoverable": {
        +                "type": "boolean"
        +              },
        +              "retry_after_seconds": {
        +                "anyOf": [
        +                  {
        +                    "minimum": 0,
        +                    "type": "integer"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              }
        +            },
        +            "required": [
        +              "code",
        +              "message",
        +              "recoverable"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      }
        +    },
        +    "required": [
        +      "_meta"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedlist_projects1 field changed
      • changedOutput schema / properties / result / anyOf
        Previous value: -[
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "_meta": {
        -        "additionalProperties": false,
        -        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        -        "properties": {
        -          "deliverables": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        -                "properties": {
        -                  "docx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "dxf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "expires_at": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  },
        -                  "pdf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "xlsx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "expires_at"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "document_id": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "issued_at": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "output_mode": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Surfaces what a trimmed ``output_mode`` withheld from ``data``.\n\nA trimmed mode (``summary`` / ``boq`` / ``boq_with_backup``) withholds\nalready-computed fields to keep the chat payload small. The withheld value\nreads to a client agent as \"capability missing\" (the box-culvert \"geometry\nbuilder isn't firing\" scare) rather than \"pared for size\": ``drawing`` and\n``audit_trail`` appear as ``null``, ``boq_rows`` as an empty list ``[]``\n(its type forbids ``null``) — both indistinguishable from a genuine absent\nresult. This names the withheld fields and the exact mode that brings each\nback, so the value is unambiguous. Absent on the default ``full_json`` mode\n— nothing is withheld, nothing to point at.",
        -                "properties": {
        -                  "mode": {
        -                    "enum": [
        -                      "summary",
        -                      "boq",
        -                      "boq_with_backup"
        -                    ],
        -                    "type": "string"
        -                  },
        -                  "omitted_fields": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "minItems": 1,
        -                    "type": "array"
        -                  },
        -                  "retrieve_with": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "mode",
        -                  "omitted_fields",
        -                  "retrieve_with"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "rate_limit_remaining": {
        -            "anyOf": [
        -              {
        -                "minimum": 0,
        -                "type": "integer"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "request_id": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "schema_version": {
        -            "const": "1.0.0",
        -            "default": "1.0.0",
        -            "type": "string"
        -          },
        -          "scope_boundary": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        -                "properties": {
        -                  "not_in_scope": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "produced": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "recommended_companions": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "type": "string"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "produced",
        -                  "not_in_scope"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tier": {
        -            "enum": [
        -              "free",
        -              "paid"
        -            ],
        -            "type": "string"
        -          },
        -          "tier_upgrade": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        -                "properties": {
        -                  "available_tiers": {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        -                      "properties": {
        -                        "billing": {
        -                          "enum": [
        -                            "one_off",
        -                            "monthly",
        -                            "annual"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "currency": {
        -                          "enum": [
        -                            "GBP",
        -                            "SGD",
        -                            "EUR",
        -                            "USD",
        -                            "CAD",
        -                            "AUD",
        -                            "NZD",
        -                            "MYR"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "display_name": {
        -                          "type": "string"
        -                        },
        -                        "price_local": {
        -                          "type": "number"
        -                        },
        -                        "tier_slug": {
        -                          "enum": [
        -                            "7_day_pass",
        -                            "solo",
        -                            "studio",
        -                            "practice"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "unlock_summary": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "tier_slug",
        -                        "display_name",
        -                        "price_local",
        -                        "currency",
        -                        "billing",
        -                        "unlock_summary"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "current_tier": {
        -                    "const": "free",
        -                    "default": "free",
        -                    "type": "string"
        -                  },
        -                  "pass_credit": {
        -                    "anyOf": [
        -                      {
        -                        "additionalProperties": false,
        -                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        -                        "properties": {
        -                          "amount_local": {
        -                            "type": "number"
        -                          },
        -                          "applies_to": {
        -                            "const": "solo_first_month",
        -                            "default": "solo_first_month",
        -                            "type": "string"
        -                          },
        -                          "currency": {
        -                            "type": "string"
        -                          },
        -                          "redeemable_until": {
        -                            "type": "string"
        -                          }
        -                        },
        -                        "required": [
        -                          "amount_local",
        -                          "currency",
        -                          "redeemable_until"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "pricing_url": {
        -                    "default": "https://civilquants.com/pricing",
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "available_tiers"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tos_url": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "upgrade_hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "warranty_disclaimer": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          }
        -        },
        -        "required": [
        -          "request_id",
        -          "issued_at",
        -          "tier"
        -        ],
        -        "type": "object"
        -      },
        -      "data": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Response payload for ``GET /api/v1/mcp/projects``.",
        -            "properties": {
        -              "projects": {
        -                "items": {
        -                  "additionalProperties": false,
        -                  "description": "One row inside the ``GET /api/v1/mcp/projects`` list response. Narrowed\nshape — no parameters, no assembly details — keeps the list endpoint\ncheap to serialise even when an owner has many projects.",
        -                  "properties": {
        -                    "assembly_count": {
        -                      "type": "integer"
        -                    },
        -                    "client": {
        -                      "type": "string"
        -                    },
        -                    "created_at": {
        -                      "type": "string"
        -                    },
        -                    "currency": {
        -                      "type": "string"
        -                    },
        -                    "default_standard": {
        -                      "type": "string"
        -                    },
        -                    "name": {
        -                      "type": "string"
        -                    },
        -                    "project_id": {
        -                      "type": "string"
        -                    },
        -                    "project_number": {
        -                      "type": "string"
        -                    },
        -                    "status": {
        -                      "type": "string"
        -                    },
        -                    "updated_at": {
        -                      "type": "string"
        -                    }
        -                  },
        -                  "required": [
        -                    "project_id",
        -                    "name",
        -                    "client",
        -                    "project_number",
        -                    "status",
        -                    "default_standard",
        -                    "currency",
        -                    "assembly_count",
        -                    "created_at",
        -                    "updated_at"
        -                  ],
        -                  "type": "object"
        -                },
        -                "type": "array"
        -              }
        -            },
        -            "required": [
        -              "projects"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      },
        -      "error": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        -            "properties": {
        -              "code": {
        -                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        -                "enum": [
        -                  "RATE_LIMIT_EXCEEDED",
        -                  "TIER_INSUFFICIENT",
        -                  "INVALID_INPUT",
        -                  "SCHEMA_VERSION_MISMATCH",
        -                  "SCHEMA_INVARIANT_VIOLATION",
        -                  "UPSTREAM_TIMEOUT",
        -                  "BACKEND_FAILURE",
        -                  "IP_BLOCKED",
        -                  "RESOURCE_NOT_FOUND",
        -                  "RENDER_FAILURE",
        -                  "OCR_LOW_CONFIDENCE",
        -                  "MANUAL_REVIEW_REQUIRED",
        -                  "ACCEPTANCE_REQUIRED",
        -                  "INVALID_TOKEN"
        -                ],
        -                "type": "string"
        -              },
        -              "details": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "message": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "recoverable": {
        -                "type": "boolean"
        -              },
        -              "retry_after_seconds": {
        -                "anyOf": [
        -                  {
        -                    "minimum": 0,
        -                    "type": "integer"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              }
        -            },
        -            "required": [
        -              "code",
        -              "message",
        -              "recoverable"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      }
        -    },
        -    "required": [
        -      "_meta"
        -    ],
        -    "type": "object"
        -  },
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "_meta": {
        -        "additionalProperties": false,
        -        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        -        "properties": {
        -          "deliverables": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        -                "properties": {
        -                  "docx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "dxf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "expires_at": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  },
        -                  "pdf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "xlsx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "expires_at"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "document_id": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "issued_at": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "output_mode": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Surfaces what a trimmed ``output_mode`` withheld from ``data``.\n\nA trimmed mode (``summary`` / ``boq`` / ``boq_with_backup``) withholds\nalready-computed fields to keep the chat payload small. The withheld value\nreads to a client agent as \"capability missing\" (the box-culvert \"geometry\nbuilder isn't firing\" scare) rather than \"pared for size\": ``drawing`` and\n``audit_trail`` appear as ``null``, ``boq_rows`` as an empty list ``[]``\n(its type forbids ``null``) — both indistinguishable from a genuine absent\nresult. This names the withheld fields and the exact mode that brings each\nback, so the value is unambiguous. Absent on the default ``full_json`` mode\n— nothing is withheld, nothing to point at.",
        -                "properties": {
        -                  "mode": {
        -                    "enum": [
        -                      "summary",
        -                      "boq",
        -                      "boq_with_backup"
        -                    ],
        -                    "type": "string"
        -                  },
        -                  "omitted_fields": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "minItems": 1,
        -                    "type": "array"
        -                  },
        -                  "retrieve_with": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "mode",
        -                  "omitted_fields",
        -                  "retrieve_with"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "rate_limit_remaining": {
        -            "anyOf": [
        -              {
        -                "minimum": 0,
        -                "type": "integer"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "request_id": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "schema_version": {
        -            "const": "1.0.0",
        -            "default": "1.0.0",
        -            "type": "string"
        -          },
        -          "scope_boundary": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        -                "properties": {
        -                  "not_in_scope": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "produced": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "recommended_companions": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "type": "string"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "produced",
        -                  "not_in_scope"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tier": {
        -            "enum": [
        -              "free",
        -              "paid"
        -            ],
        -            "type": "string"
        -          },
        -          "tier_upgrade": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        -                "properties": {
        -                  "available_tiers": {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        -                      "properties": {
        -                        "billing": {
        -                          "enum": [
        -                            "one_off",
        -                            "monthly",
        -                            "annual"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "currency": {
        -                          "enum": [
        -                            "GBP",
        -                            "SGD",
        -                            "EUR",
        -                            "USD",
        -                            "CAD",
        -                            "AUD",
        -                            "NZD",
        -                            "MYR"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "display_name": {
        -                          "type": "string"
        -                        },
        -                        "price_local": {
        -                          "type": "number"
        -                        },
        -                        "tier_slug": {
        -                          "enum": [
        -                            "7_day_pass",
        -                            "solo",
        -                            "studio",
        -                            "practice"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "unlock_summary": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "tier_slug",
        -                        "display_name",
        -                        "price_local",
        -                        "currency",
        -                        "billing",
        -                        "unlock_summary"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "current_tier": {
        -                    "const": "free",
        -                    "default": "free",
        -                    "type": "string"
        -                  },
        -                  "pass_credit": {
        -                    "anyOf": [
        -                      {
        -                        "additionalProperties": false,
        -                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        -                        "properties": {
        -                          "amount_local": {
        -                            "type": "number"
        -                          },
        -                          "applies_to": {
        -                            "const": "solo_first_month",
        -                            "default": "solo_first_month",
        -                            "type": "string"
        -                          },
        -                          "currency": {
        -                            "type": "string"
        -                          },
        -                          "redeemable_until": {
        -                            "type": "string"
        -                          }
        -                        },
        -                        "required": [
        -                          "amount_local",
        -                          "currency",
        -                          "redeemable_until"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "pricing_url": {
        -                    "default": "https://civilquants.com/pricing",
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "available_tiers"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tos_url": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "upgrade_hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "warranty_disclaimer": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          }
        -        },
        -        "required": [
        -          "request_id",
        -          "issued_at",
        -          "tier"
        -        ],
        -        "type": "object"
        -      },
        -      "data": {
        -        "default": null,
        -        "title": "Data"
        -      },
        -      "error": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        -            "properties": {
        -              "code": {
        -                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        -                "enum": [
        -                  "RATE_LIMIT_EXCEEDED",
        -                  "TIER_INSUFFICIENT",
        -                  "INVALID_INPUT",
        -                  "SCHEMA_VERSION_MISMATCH",
        -                  "SCHEMA_INVARIANT_VIOLATION",
        -                  "UPSTREAM_TIMEOUT",
        -                  "BACKEND_FAILURE",
        -                  "IP_BLOCKED",
        -                  "RESOURCE_NOT_FOUND",
        -                  "RENDER_FAILURE",
        -                  "OCR_LOW_CONFIDENCE",
        -                  "MANUAL_REVIEW_REQUIRED",
        -                  "ACCEPTANCE_REQUIRED",
        -                  "INVALID_TOKEN"
        -                ],
        -                "type": "string"
        -              },
        -              "details": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "message": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "recoverable": {
        -                "type": "boolean"
        -              },
        -              "retry_after_seconds": {
        -                "anyOf": [
        -                  {
        -                    "minimum": 0,
        -                    "type": "integer"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              }
        -            },
        -            "required": [
        -              "code",
        -              "message",
        -              "recoverable"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      }
        -    },
        -    "required": [
        -      "_meta"
        -    ],
        -    "type": "object"
        -  }
        -]New value: +[
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "_meta": {
        +        "additionalProperties": false,
        +        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        +        "properties": {
        +          "deliverables": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        +                "properties": {
        +                  "docx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "dxf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "expires_at": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  },
        +                  "pdf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "xlsx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "expires_at"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "document_id": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "issued_at": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "output_mode": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Surfaces what a trimmed ``output_mode`` withheld from ``data``.\n\nA trimmed mode (``summary`` / ``material_schedule`` / ``boq`` /\n``boq_with_backup``) withholds\nalready-computed fields to keep the chat payload small. The withheld value\nreads to a client agent as \"capability missing\" (the box-culvert \"geometry\nbuilder isn't firing\" scare) rather than \"pared for size\": ``drawing`` and\n``audit_trail`` appear as ``null``, ``boq_rows`` as an empty list ``[]``\n(its type forbids ``null``) — both indistinguishable from a genuine absent\nresult. This names the withheld fields and the exact mode that brings each\nback, so the value is unambiguous. Absent on the default ``full_json`` mode\n— nothing is withheld, nothing to point at.",
        +                "properties": {
        +                  "mode": {
        +                    "enum": [
        +                      "summary",
        +                      "material_schedule",
        +                      "boq",
        +                      "boq_with_backup"
        +                    ],
        +                    "type": "string"
        +                  },
        +                  "omitted_fields": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "minItems": 1,
        +                    "type": "array"
        +                  },
        +                  "retrieve_with": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "mode",
        +                  "omitted_fields",
        +                  "retrieve_with"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "rate_limit_remaining": {
        +            "anyOf": [
        +              {
        +                "minimum": 0,
        +                "type": "integer"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "request_id": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "schema_version": {
        +            "const": "1.0.0",
        +            "default": "1.0.0",
        +            "type": "string"
        +          },
        +          "scope_boundary": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        +                "properties": {
        +                  "not_in_scope": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "produced": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "recommended_companions": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "type": "string"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "produced",
        +                  "not_in_scope"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tier": {
        +            "enum": [
        +              "free",
        +              "paid"
        +            ],
        +            "type": "string"
        +          },
        +          "tier_upgrade": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        +                "properties": {
        +                  "available_tiers": {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        +                      "properties": {
        +                        "billing": {
        +                          "enum": [
        +                            "one_off",
        +                            "monthly",
        +                            "annual"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "currency": {
        +                          "enum": [
        +                            "GBP",
        +                            "SGD",
        +                            "EUR",
        +                            "USD",
        +                            "CAD",
        +                            "AUD",
        +                            "NZD",
        +                            "MYR"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "display_name": {
        +                          "type": "string"
        +                        },
        +                        "price_local": {
        +                          "type": "number"
        +                        },
        +                        "tier_slug": {
        +                          "enum": [
        +                            "7_day_pass",
        +                            "solo",
        +                            "studio",
        +                            "practice"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "unlock_summary": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "tier_slug",
        +                        "display_name",
        +                        "price_local",
        +                        "currency",
        +                        "billing",
        +                        "unlock_summary"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "current_tier": {
        +                    "const": "free",
        +                    "default": "free",
        +                    "type": "string"
        +                  },
        +                  "pass_credit": {
        +                    "anyOf": [
        +                      {
        +                        "additionalProperties": false,
        +                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        +                        "properties": {
        +                          "amount_local": {
        +                            "type": "number"
        +                          },
        +                          "applies_to": {
        +                            "const": "solo_first_month",
        +                            "default": "solo_first_month",
        +                            "type": "string"
        +                          },
        +                          "currency": {
        +                            "type": "string"
        +                          },
        +                          "redeemable_until": {
        +                            "type": "string"
        +                          }
        +                        },
        +                        "required": [
        +                          "amount_local",
        +                          "currency",
        +                          "redeemable_until"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "pricing_url": {
        +                    "default": "https://civilquants.com/pricing",
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "available_tiers"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tos_url": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "upgrade_hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "warranty_disclaimer": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          }
        +        },
        +        "required": [
        +          "request_id",
        +          "issued_at",
        +          "tier"
        +        ],
        +        "type": "object"
        +      },
        +      "data": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Response payload for ``GET /api/v1/mcp/projects``.",
        +            "properties": {
        +              "projects": {
        +                "items": {
        +                  "additionalProperties": false,
        +                  "description": "One row inside the ``GET /api/v1/mcp/projects`` list response. Narrowed\nshape — no parameters, no assembly details — keeps the list endpoint\ncheap to serialise even when an owner has many projects.",
        +                  "properties": {
        +                    "assembly_count": {
        +                      "type": "integer"
        +                    },
        +                    "client": {
        +                      "type": "string"
        +                    },
        +                    "created_at": {
        +                      "type": "string"
        +                    },
        +                    "currency": {
        +                      "type": "string"
        +                    },
        +                    "default_standard": {
        +                      "type": "string"
        +                    },
        +                    "name": {
        +                      "type": "string"
        +                    },
        +                    "project_id": {
        +                      "type": "string"
        +                    },
        +                    "project_number": {
        +                      "type": "string"
        +                    },
        +                    "status": {
        +                      "type": "string"
        +                    },
        +                    "updated_at": {
        +                      "type": "string"
        +                    }
        +                  },
        +                  "required": [
        +                    "project_id",
        +                    "name",
        +                    "client",
        +                    "project_number",
        +                    "status",
        +                    "default_standard",
        +                    "currency",
        +                    "assembly_count",
        +                    "created_at",
        +                    "updated_at"
        +                  ],
        +                  "type": "object"
        +                },
        +                "type": "array"
        +              }
        +            },
        +            "required": [
        +              "projects"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      },
        +      "error": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        +            "properties": {
        +              "code": {
        +                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        +                "enum": [
        +                  "RATE_LIMIT_EXCEEDED",
        +                  "TIER_INSUFFICIENT",
        +                  "INVALID_INPUT",
        +                  "SCHEMA_VERSION_MISMATCH",
        +                  "SCHEMA_INVARIANT_VIOLATION",
        +                  "UPSTREAM_TIMEOUT",
        +                  "BACKEND_FAILURE",
        +                  "IP_BLOCKED",
        +                  "RESOURCE_NOT_FOUND",
        +                  "RENDER_FAILURE",
        +                  "OCR_LOW_CONFIDENCE",
        +                  "MANUAL_REVIEW_REQUIRED",
        +                  "ACCEPTANCE_REQUIRED",
        +                  "INVALID_TOKEN"
        +                ],
        +                "type": "string"
        +              },
        +              "details": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "message": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "recoverable": {
        +                "type": "boolean"
        +              },
        +              "retry_after_seconds": {
        +                "anyOf": [
        +                  {
        +                    "minimum": 0,
        +                    "type": "integer"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              }
        +            },
        +            "required": [
        +              "code",
        +              "message",
        +              "recoverable"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      }
        +    },
        +    "required": [
        +      "_meta"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "_meta": {
        +        "additionalProperties": false,
        +        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        +        "properties": {
        +          "deliverables": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        +                "properties": {
        +                  "docx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "dxf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "expires_at": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  },
        +                  "pdf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "xlsx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "expires_at"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "document_id": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "issued_at": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "output_mode": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Surfaces what a trimmed ``output_mode`` withheld from ``data``.\n\nA trimmed mode (``summary`` / ``material_schedule`` / ``boq`` /\n``boq_with_backup``) withholds\nalready-computed fields to keep the chat payload small. The withheld value\nreads to a client agent as \"capability missing\" (the box-culvert \"geometry\nbuilder isn't firing\" scare) rather than \"pared for size\": ``drawing`` and\n``audit_trail`` appear as ``null``, ``boq_rows`` as an empty list ``[]``\n(its type forbids ``null``) — both indistinguishable from a genuine absent\nresult. This names the withheld fields and the exact mode that brings each\nback, so the value is unambiguous. Absent on the default ``full_json`` mode\n— nothing is withheld, nothing to point at.",
        +                "properties": {
        +                  "mode": {
        +                    "enum": [
        +                      "summary",
        +                      "material_schedule",
        +                      "boq",
        +                      "boq_with_backup"
        +                    ],
        +                    "type": "string"
        +                  },
        +                  "omitted_fields": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "minItems": 1,
        +                    "type": "array"
        +                  },
        +                  "retrieve_with": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "mode",
        +                  "omitted_fields",
        +                  "retrieve_with"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "rate_limit_remaining": {
        +            "anyOf": [
        +              {
        +                "minimum": 0,
        +                "type": "integer"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "request_id": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "schema_version": {
        +            "const": "1.0.0",
        +            "default": "1.0.0",
        +            "type": "string"
        +          },
        +          "scope_boundary": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        +                "properties": {
        +                  "not_in_scope": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "produced": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "recommended_companions": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "type": "string"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "produced",
        +                  "not_in_scope"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tier": {
        +            "enum": [
        +              "free",
        +              "paid"
        +            ],
        +            "type": "string"
        +          },
        +          "tier_upgrade": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        +                "properties": {
        +                  "available_tiers": {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        +                      "properties": {
        +                        "billing": {
        +                          "enum": [
        +                            "one_off",
        +                            "monthly",
        +                            "annual"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "currency": {
        +                          "enum": [
        +                            "GBP",
        +                            "SGD",
        +                            "EUR",
        +                            "USD",
        +                            "CAD",
        +                            "AUD",
        +                            "NZD",
        +                            "MYR"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "display_name": {
        +                          "type": "string"
        +                        },
        +                        "price_local": {
        +                          "type": "number"
        +                        },
        +                        "tier_slug": {
        +                          "enum": [
        +                            "7_day_pass",
        +                            "solo",
        +                            "studio",
        +                            "practice"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "unlock_summary": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "tier_slug",
        +                        "display_name",
        +                        "price_local",
        +                        "currency",
        +                        "billing",
        +                        "unlock_summary"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "current_tier": {
        +                    "const": "free",
        +                    "default": "free",
        +                    "type": "string"
        +                  },
        +                  "pass_credit": {
        +                    "anyOf": [
        +                      {
        +                        "additionalProperties": false,
        +                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        +                        "properties": {
        +                          "amount_local": {
        +                            "type": "number"
        +                          },
        +                          "applies_to": {
        +                            "const": "solo_first_month",
        +                            "default": "solo_first_month",
        +                            "type": "string"
        +                          },
        +                          "currency": {
        +                            "type": "string"
        +                          },
        +                          "redeemable_until": {
        +                            "type": "string"
        +                          }
        +                        },
        +                        "required": [
        +                          "amount_local",
        +                          "currency",
        +                          "redeemable_until"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "pricing_url": {
        +                    "default": "https://civilquants.com/pricing",
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "available_tiers"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tos_url": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "upgrade_hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "warranty_disclaimer": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          }
        +        },
        +        "required": [
        +          "request_id",
        +          "issued_at",
        +          "tier"
        +        ],
        +        "type": "object"
        +      },
        +      "data": {
        +        "default": null,
        +        "title": "Data"
        +      },
        +      "error": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        +            "properties": {
        +              "code": {
        +                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        +                "enum": [
        +                  "RATE_LIMIT_EXCEEDED",
        +                  "TIER_INSUFFICIENT",
        +                  "INVALID_INPUT",
        +                  "SCHEMA_VERSION_MISMATCH",
        +                  "SCHEMA_INVARIANT_VIOLATION",
        +                  "UPSTREAM_TIMEOUT",
        +                  "BACKEND_FAILURE",
        +                  "IP_BLOCKED",
        +                  "RESOURCE_NOT_FOUND",
        +                  "RENDER_FAILURE",
        +                  "OCR_LOW_CONFIDENCE",
        +                  "MANUAL_REVIEW_REQUIRED",
        +                  "ACCEPTANCE_REQUIRED",
        +                  "INVALID_TOKEN"
        +                ],
        +                "type": "string"
        +              },
        +              "details": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "message": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "recoverable": {
        +                "type": "boolean"
        +              },
        +              "retry_after_seconds": {
        +                "anyOf": [
        +                  {
        +                    "minimum": 0,
        +                    "type": "integer"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              }
        +            },
        +            "required": [
        +              "code",
        +              "message",
        +              "recoverable"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      }
        +    },
        +    "required": [
        +      "_meta"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedrecompute_project1 field changed
      • changedOutput schema / properties / result / anyOf
        Previous value: -[
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "_meta": {
        -        "additionalProperties": false,
        -        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        -        "properties": {
        -          "deliverables": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        -                "properties": {
        -                  "docx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "dxf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "expires_at": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  },
        -                  "pdf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "xlsx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "expires_at"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "document_id": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "issued_at": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "output_mode": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Surfaces what a trimmed ``output_mode`` withheld from ``data``.\n\nA trimmed mode (``summary`` / ``boq`` / ``boq_with_backup``) withholds\nalready-computed fields to keep the chat payload small. The withheld value\nreads to a client agent as \"capability missing\" (the box-culvert \"geometry\nbuilder isn't firing\" scare) rather than \"pared for size\": ``drawing`` and\n``audit_trail`` appear as ``null``, ``boq_rows`` as an empty list ``[]``\n(its type forbids ``null``) — both indistinguishable from a genuine absent\nresult. This names the withheld fields and the exact mode that brings each\nback, so the value is unambiguous. Absent on the default ``full_json`` mode\n— nothing is withheld, nothing to point at.",
        -                "properties": {
        -                  "mode": {
        -                    "enum": [
        -                      "summary",
        -                      "boq",
        -                      "boq_with_backup"
        -                    ],
        -                    "type": "string"
        -                  },
        -                  "omitted_fields": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "minItems": 1,
        -                    "type": "array"
        -                  },
        -                  "retrieve_with": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "mode",
        -                  "omitted_fields",
        -                  "retrieve_with"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "rate_limit_remaining": {
        -            "anyOf": [
        -              {
        -                "minimum": 0,
        -                "type": "integer"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "request_id": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "schema_version": {
        -            "const": "1.0.0",
        -            "default": "1.0.0",
        -            "type": "string"
        -          },
        -          "scope_boundary": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        -                "properties": {
        -                  "not_in_scope": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "produced": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "recommended_companions": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "type": "string"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "produced",
        -                  "not_in_scope"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tier": {
        -            "enum": [
        -              "free",
        -              "paid"
        -            ],
        -            "type": "string"
        -          },
        -          "tier_upgrade": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        -                "properties": {
        -                  "available_tiers": {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        -                      "properties": {
        -                        "billing": {
        -                          "enum": [
        -                            "one_off",
        -                            "monthly",
        -                            "annual"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "currency": {
        -                          "enum": [
        -                            "GBP",
        -                            "SGD",
        -                            "EUR",
        -                            "USD",
        -                            "CAD",
        -                            "AUD",
        -                            "NZD",
        -                            "MYR"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "display_name": {
        -                          "type": "string"
        -                        },
        -                        "price_local": {
        -                          "type": "number"
        -                        },
        -                        "tier_slug": {
        -                          "enum": [
        -                            "7_day_pass",
        -                            "solo",
        -                            "studio",
        -                            "practice"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "unlock_summary": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "tier_slug",
        -                        "display_name",
        -                        "price_local",
        -                        "currency",
        -                        "billing",
        -                        "unlock_summary"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "current_tier": {
        -                    "const": "free",
        -                    "default": "free",
        -                    "type": "string"
        -                  },
        -                  "pass_credit": {
        -                    "anyOf": [
        -                      {
        -                        "additionalProperties": false,
        -                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        -                        "properties": {
        -                          "amount_local": {
        -                            "type": "number"
        -                          },
        -                          "applies_to": {
        -                            "const": "solo_first_month",
        -                            "default": "solo_first_month",
        -                            "type": "string"
        -                          },
        -                          "currency": {
        -                            "type": "string"
        -                          },
        -                          "redeemable_until": {
        -                            "type": "string"
        -                          }
        -                        },
        -                        "required": [
        -                          "amount_local",
        -                          "currency",
        -                          "redeemable_until"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "pricing_url": {
        -                    "default": "https://civilquants.com/pricing",
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "available_tiers"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tos_url": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "upgrade_hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "warranty_disclaimer": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          }
        -        },
        -        "required": [
        -          "request_id",
        -          "issued_at",
        -          "tier"
        -        ],
        -        "type": "object"
        -      },
        -      "data": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "properties": {
        -              "assembly_count": {
        -                "type": "integer"
        -              },
        -              "assembly_drawings": {
        -                "items": {
        -                  "additionalProperties": false,
        -                  "description": "One enabled assembly's drawing payload for the project recompute\nresponse (G.4.4b Step 2).\n\nMirrors the per-assembly drawing surface from\n``POST /api/assemblies/{slug}/compute`` (same ``DrawingRef`` shape,\nsame SVG renderer via ``build_drawing_ref``) so the project view's\ncontact-sheet centre pane renders identically to the single-assembly\ncalculator preview. ``drawing`` is nullable to stay backward-\ncompatible with assemblies that don't emit ``draw_entities`` (older\nshape); the few assemblies emitting an empty list still get a tiny\nplaceholder SVG so the UI never has to special-case absence.",
        -                  "properties": {
        -                    "assembly_id": {
        -                      "type": "string"
        -                    },
        -                    "drawing": {
        -                      "anyOf": [
        -                        {
        -                          "additionalProperties": false,
        -                          "description": "Server-rendered SVG preview of the assembly geometry.\n\nPer G.6.3 / STATUS.md decision 6 (2026-05-19): one source of\ngeometry (`DrawEntity` list emitted by `Assembly.compute`), two\noutput paths (this SVG for inline preview, the `GET .../dxf`\nendpoint for the real CAD download). The browser displays\n`svg_b64` decoded inline; `viewbox` drives client zoom/pan\ncontrols without re-parsing the SVG.\n\n`svg_b64` is base64 of a UTF-8 SVG document with one `<g\nclass=\"cq-layer cq-layer-<name>\">` per layer. Styling defaults are\ninlined so the preview renders without an external stylesheet;\nfront-end CSS may override via the class names.",
        -                          "properties": {
        -                            "entity_count": {
        -                              "description": "Number of DrawEntities rendered",
        -                              "minimum": 0,
        -                              "type": "integer"
        -                            },
        -                            "svg_b64": {
        -                              "description": "Base64-encoded SVG document",
        -                              "minLength": 1,
        -                              "type": "string"
        -                            },
        -                            "unit_of_drawing": {
        -                              "const": "m",
        -                              "default": "m",
        -                              "description": "Engine geometry is in metres. Surfaced here so the client never has to guess; if a future engine switches to mm this becomes the discriminator.",
        -                              "type": "string"
        -                            },
        -                            "viewbox_height": {
        -                              "description": "SVG viewBox height in engine units (m)",
        -                              "exclusiveMinimum": 0,
        -                              "type": "number"
        -                            },
        -                            "viewbox_width": {
        -                              "description": "SVG viewBox width in engine units (m)",
        -                              "exclusiveMinimum": 0,
        -                              "type": "number"
        -                            },
        -                            "viewbox_x": {
        -                              "description": "SVG viewBox x in engine units (m)",
        -                              "type": "number"
        -                            },
        -                            "viewbox_y": {
        -                              "description": "SVG viewBox y in engine units (m)",
        -                              "type": "number"
        -                            }
        -                          },
        -                          "required": [
        -                            "svg_b64",
        -                            "viewbox_x",
        -                            "viewbox_y",
        -                            "viewbox_width",
        -                            "viewbox_height",
        -                            "entity_count"
        -                          ],
        -                          "type": "object"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "label": {
        -                      "type": "string"
        -                    },
        -                    "position": {
        -                      "type": "integer"
        -                    },
        -                    "slug": {
        -                      "type": "string"
        -                    }
        -                  },
        -                  "required": [
        -                    "assembly_id",
        -                    "slug",
        -                    "label",
        -                    "position"
        -                  ],
        -                  "type": "object"
        -                },
        -                "type": "array"
        -              },
        -              "boqs_by_standard": {
        -                "additionalProperties": {
        -                  "items": {
        -                    "additionalProperties": false,
        -                    "description": "Slim BoQ row for the recompute response. Matches the engine's own\n``BoQItem`` columns; rate / amount stay null per the freemium-MCP\npricing-is-yours discipline (schema § 1.3).",
        -                    "properties": {
        -                      "amount": {
        -                        "anyOf": [
        -                          {
        -                            "type": "number"
        -                          },
        -                          {
        -                            "type": "null"
        -                          }
        -                        ],
        -                        "default": null
        -                      },
        -                      "code": {
        -                        "type": "string"
        -                      },
        -                      "description": {
        -                        "type": "string"
        -                      },
        -                      "group": {
        -                        "anyOf": [
        -                          {
        -                            "type": "string"
        -                          },
        -                          {
        -                            "type": "null"
        -                          }
        -                        ],
        -                        "default": null
        -                      },
        -                      "nrm1_element": {
        -                        "anyOf": [
        -                          {
        -                            "type": "string"
        -                          },
        -                          {
        -                            "type": "null"
        -                          }
        -                        ],
        -                        "default": null
        -                      },
        -                      "nrm1_group_element": {
        -                        "anyOf": [
        -                          {
        -                            "type": "integer"
        -                          },
        -                          {
        -                            "type": "null"
        -                          }
        -                        ],
        -                        "default": null
        -                      },
        -                      "nrm1_sub_element": {
        -                        "anyOf": [
        -                          {
        -                            "type": "string"
        -                          },
        -                          {
        -                            "type": "null"
        -                          }
        -                        ],
        -                        "default": null
        -                      },
        -                      "quantity": {
        -                        "minimum": 0,
        -                        "type": "number"
        -                      },
        -                      "rate": {
        -                        "anyOf": [
        -                          {
        -                            "type": "number"
        -                          },
        -                          {
        -                            "type": "null"
        -                          }
        -                        ],
        -                        "default": null
        -                      },
        -                      "sub_group": {
        -                        "anyOf": [
        -                          {
        -                            "type": "string"
        -                          },
        -                          {
        -                            "type": "null"
        -                          }
        -                        ],
        -                        "default": null
        -                      },
        -                      "unit": {
        -                        "type": "string"
        -                      }
        -                    },
        -                    "required": [
        -                      "code",
        -                      "description",
        -                      "unit",
        -                      "quantity"
        -                    ],
        -                    "type": "object"
        -                  },
        -                  "type": "array"
        -                },
        -                "type": "object"
        -              },
        -              "procurement_summary": {
        -                "items": {
        -                  "additionalProperties": false,
        -                  "description": "One row of the project's procurement summary (G.4.4b Step 1).\n\nThe procurement summary is the standard-agnostic material rollup keyed\non ``(category, spec, unit)`` — distinct from ``boqs_by_standard`` (a\nmeasurement-standard projection) and identical across all four\nstandards by construction. Drives the right pane of\n``/workspace/[project_id]`` and the ``Procurement`` sheet of the\nproject XLSX (per launch spec § 3.4.2).",
        -                  "properties": {
        -                    "category": {
        -                      "type": "string"
        -                    },
        -                    "quantity": {
        -                      "minimum": 0,
        -                      "type": "number"
        -                    },
        -                    "source_assemblies": {
        -                      "items": {
        -                        "type": "string"
        -                      },
        -                      "type": "array"
        -                    },
        -                    "spec": {
        -                      "type": "string"
        -                    },
        -                    "unit": {
        -                      "type": "string"
        -                    }
        -                  },
        -                  "required": [
        -                    "category",
        -                    "spec",
        -                    "quantity",
        -                    "unit",
        -                    "source_assemblies"
        -                  ],
        -                  "type": "object"
        -                },
        -                "type": "array"
        -              },
        -              "project_id": {
        -                "type": "string"
        -              },
        -              "standards_rendered": {
        -                "items": {
        -                  "type": "string"
        -                },
        -                "type": "array"
        -              },
        -              "work_item_count": {
        -                "type": "integer"
        -              }
        -            },
        -            "required": [
        -              "project_id",
        -              "standards_rendered",
        -              "assembly_count",
        -              "work_item_count",
        -              "boqs_by_standard",
        -              "procurement_summary",
        -              "assembly_drawings"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      },
        -      "error": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        -            "properties": {
        -              "code": {
        -                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        -                "enum": [
        -                  "RATE_LIMIT_EXCEEDED",
        -                  "TIER_INSUFFICIENT",
        -                  "INVALID_INPUT",
        -                  "SCHEMA_VERSION_MISMATCH",
        -                  "SCHEMA_INVARIANT_VIOLATION",
        -                  "UPSTREAM_TIMEOUT",
        -                  "BACKEND_FAILURE",
        -                  "IP_BLOCKED",
        -                  "RESOURCE_NOT_FOUND",
        -                  "RENDER_FAILURE",
        -                  "OCR_LOW_CONFIDENCE",
        -                  "MANUAL_REVIEW_REQUIRED",
        -                  "ACCEPTANCE_REQUIRED",
        -                  "INVALID_TOKEN"
        -                ],
        -                "type": "string"
        -              },
        -              "details": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "message": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "recoverable": {
        -                "type": "boolean"
        -              },
        -              "retry_after_seconds": {
        -                "anyOf": [
        -                  {
        -                    "minimum": 0,
        -                    "type": "integer"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              }
        -            },
        -            "required": [
        -              "code",
        -              "message",
        -              "recoverable"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      }
        -    },
        -    "required": [
        -      "_meta"
        -    ],
        -    "type": "object"
        -  },
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "_meta": {
        -        "additionalProperties": false,
        -        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        -        "properties": {
        -          "deliverables": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        -                "properties": {
        -                  "docx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "dxf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "expires_at": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  },
        -                  "pdf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "xlsx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "expires_at"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "document_id": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "issued_at": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "output_mode": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Surfaces what a trimmed ``output_mode`` withheld from ``data``.\n\nA trimmed mode (``summary`` / ``boq`` / ``boq_with_backup``) withholds\nalready-computed fields to keep the chat payload small. The withheld value\nreads to a client agent as \"capability missing\" (the box-culvert \"geometry\nbuilder isn't firing\" scare) rather than \"pared for size\": ``drawing`` and\n``audit_trail`` appear as ``null``, ``boq_rows`` as an empty list ``[]``\n(its type forbids ``null``) — both indistinguishable from a genuine absent\nresult. This names the withheld fields and the exact mode that brings each\nback, so the value is unambiguous. Absent on the default ``full_json`` mode\n— nothing is withheld, nothing to point at.",
        -                "properties": {
        -                  "mode": {
        -                    "enum": [
        -                      "summary",
        -                      "boq",
        -                      "boq_with_backup"
        -                    ],
        -                    "type": "string"
        -                  },
        -                  "omitted_fields": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "minItems": 1,
        -                    "type": "array"
        -                  },
        -                  "retrieve_with": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "mode",
        -                  "omitted_fields",
        -                  "retrieve_with"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "rate_limit_remaining": {
        -            "anyOf": [
        -              {
        -                "minimum": 0,
        -                "type": "integer"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "request_id": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "schema_version": {
        -            "const": "1.0.0",
        -            "default": "1.0.0",
        -            "type": "string"
        -          },
        -          "scope_boundary": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        -                "properties": {
        -                  "not_in_scope": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "produced": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "recommended_companions": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "type": "string"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "produced",
        -                  "not_in_scope"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tier": {
        -            "enum": [
        -              "free",
        -              "paid"
        -            ],
        -            "type": "string"
        -          },
        -          "tier_upgrade": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        -                "properties": {
        -                  "available_tiers": {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        -                      "properties": {
        -                        "billing": {
        -                          "enum": [
        -                            "one_off",
        -                            "monthly",
        -                            "annual"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "currency": {
        -                          "enum": [
        -                            "GBP",
        -                            "SGD",
        -                            "EUR",
        -                            "USD",
        -                            "CAD",
        -                            "AUD",
        -                            "NZD",
        -                            "MYR"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "display_name": {
        -                          "type": "string"
        -                        },
        -                        "price_local": {
        -                          "type": "number"
        -                        },
        -                        "tier_slug": {
        -                          "enum": [
        -                            "7_day_pass",
        -                            "solo",
        -                            "studio",
        -                            "practice"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "unlock_summary": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "tier_slug",
        -                        "display_name",
        -                        "price_local",
        -                        "currency",
        -                        "billing",
        -                        "unlock_summary"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "current_tier": {
        -                    "const": "free",
        -                    "default": "free",
        -                    "type": "string"
        -                  },
        -                  "pass_credit": {
        -                    "anyOf": [
        -                      {
        -                        "additionalProperties": false,
        -                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        -                        "properties": {
        -                          "amount_local": {
        -                            "type": "number"
        -                          },
        -                          "applies_to": {
        -                            "const": "solo_first_month",
        -                            "default": "solo_first_month",
        -                            "type": "string"
        -                          },
        -                          "currency": {
        -                            "type": "string"
        -                          },
        -                          "redeemable_until": {
        -                            "type": "string"
        -                          }
        -                        },
        -                        "required": [
        -                          "amount_local",
        -                          "currency",
        -                          "redeemable_until"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "pricing_url": {
        -                    "default": "https://civilquants.com/pricing",
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "available_tiers"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tos_url": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "upgrade_hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "warranty_disclaimer": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          }
        -        },
        -        "required": [
        -          "request_id",
        -          "issued_at",
        -          "tier"
        -        ],
        -        "type": "object"
        -      },
        -      "data": {
        -        "default": null,
        -        "title": "Data"
        -      },
        -      "error": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        -            "properties": {
        -              "code": {
        -                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        -                "enum": [
        -                  "RATE_LIMIT_EXCEEDED",
        -                  "TIER_INSUFFICIENT",
        -                  "INVALID_INPUT",
        -                  "SCHEMA_VERSION_MISMATCH",
        -                  "SCHEMA_INVARIANT_VIOLATION",
        -                  "UPSTREAM_TIMEOUT",
        -                  "BACKEND_FAILURE",
        -                  "IP_BLOCKED",
        -                  "RESOURCE_NOT_FOUND",
        -                  "RENDER_FAILURE",
        -                  "OCR_LOW_CONFIDENCE",
        -                  "MANUAL_REVIEW_REQUIRED",
        -                  "ACCEPTANCE_REQUIRED",
        -                  "INVALID_TOKEN"
        -                ],
        -                "type": "string"
        -              },
        -              "details": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "message": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "recoverable": {
        -                "type": "boolean"
        -              },
        -              "retry_after_seconds": {
        -                "anyOf": [
        -                  {
        -                    "minimum": 0,
        -                    "type": "integer"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              }
        -            },
        -            "required": [
        -              "code",
        -              "message",
        -              "recoverable"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      }
        -    },
        -    "required": [
        -      "_meta"
        -    ],
        -    "type": "object"
        -  }
        -]New value: +[
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "_meta": {
        +        "additionalProperties": false,
        +        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        +        "properties": {
        +          "deliverables": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        +                "properties": {
        +                  "docx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "dxf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "expires_at": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  },
        +                  "pdf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "xlsx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "expires_at"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "document_id": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "issued_at": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "output_mode": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Surfaces what a trimmed ``output_mode`` withheld from ``data``.\n\nA trimmed mode (``summary`` / ``material_schedule`` / ``boq`` /\n``boq_with_backup``) withholds\nalready-computed fields to keep the chat payload small. The withheld value\nreads to a client agent as \"capability missing\" (the box-culvert \"geometry\nbuilder isn't firing\" scare) rather than \"pared for size\": ``drawing`` and\n``audit_trail`` appear as ``null``, ``boq_rows`` as an empty list ``[]``\n(its type forbids ``null``) — both indistinguishable from a genuine absent\nresult. This names the withheld fields and the exact mode that brings each\nback, so the value is unambiguous. Absent on the default ``full_json`` mode\n— nothing is withheld, nothing to point at.",
        +                "properties": {
        +                  "mode": {
        +                    "enum": [
        +                      "summary",
        +                      "material_schedule",
        +                      "boq",
        +                      "boq_with_backup"
        +                    ],
        +                    "type": "string"
        +                  },
        +                  "omitted_fields": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "minItems": 1,
        +                    "type": "array"
        +                  },
        +                  "retrieve_with": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "mode",
        +                  "omitted_fields",
        +                  "retrieve_with"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "rate_limit_remaining": {
        +            "anyOf": [
        +              {
        +                "minimum": 0,
        +                "type": "integer"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "request_id": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "schema_version": {
        +            "const": "1.0.0",
        +            "default": "1.0.0",
        +            "type": "string"
        +          },
        +          "scope_boundary": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        +                "properties": {
        +                  "not_in_scope": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "produced": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "recommended_companions": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "type": "string"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "produced",
        +                  "not_in_scope"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tier": {
        +            "enum": [
        +              "free",
        +              "paid"
        +            ],
        +            "type": "string"
        +          },
        +          "tier_upgrade": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        +                "properties": {
        +                  "available_tiers": {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        +                      "properties": {
        +                        "billing": {
        +                          "enum": [
        +                            "one_off",
        +                            "monthly",
        +                            "annual"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "currency": {
        +                          "enum": [
        +                            "GBP",
        +                            "SGD",
        +                            "EUR",
        +                            "USD",
        +                            "CAD",
        +                            "AUD",
        +                            "NZD",
        +                            "MYR"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "display_name": {
        +                          "type": "string"
        +                        },
        +                        "price_local": {
        +                          "type": "number"
        +                        },
        +                        "tier_slug": {
        +                          "enum": [
        +                            "7_day_pass",
        +                            "solo",
        +                            "studio",
        +                            "practice"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "unlock_summary": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "tier_slug",
        +                        "display_name",
        +                        "price_local",
        +                        "currency",
        +                        "billing",
        +                        "unlock_summary"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "current_tier": {
        +                    "const": "free",
        +                    "default": "free",
        +                    "type": "string"
        +                  },
        +                  "pass_credit": {
        +                    "anyOf": [
        +                      {
        +                        "additionalProperties": false,
        +                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        +                        "properties": {
        +                          "amount_local": {
        +                            "type": "number"
        +                          },
        +                          "applies_to": {
        +                            "const": "solo_first_month",
        +                            "default": "solo_first_month",
        +                            "type": "string"
        +                          },
        +                          "currency": {
        +                            "type": "string"
        +                          },
        +                          "redeemable_until": {
        +                            "type": "string"
        +                          }
        +                        },
        +                        "required": [
        +                          "amount_local",
        +                          "currency",
        +                          "redeemable_until"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "pricing_url": {
        +                    "default": "https://civilquants.com/pricing",
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "available_tiers"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tos_url": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "upgrade_hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "warranty_disclaimer": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          }
        +        },
        +        "required": [
        +          "request_id",
        +          "issued_at",
        +          "tier"
        +        ],
        +        "type": "object"
        +      },
        +      "data": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "properties": {
        +              "assembly_count": {
        +                "type": "integer"
        +              },
        +              "assembly_drawings": {
        +                "items": {
        +                  "additionalProperties": false,
        +                  "description": "One enabled assembly's drawing payload for the project recompute\nresponse (G.4.4b Step 2).\n\nMirrors the per-assembly drawing surface from\n``POST /api/assemblies/{slug}/compute`` (same ``DrawingRef`` shape,\nsame SVG renderer via ``build_drawing_ref``) so the project view's\ncontact-sheet centre pane renders identically to the single-assembly\ncalculator preview. ``drawing`` is nullable to stay backward-\ncompatible with assemblies that don't emit ``draw_entities`` (older\nshape); the few assemblies emitting an empty list still get a tiny\nplaceholder SVG so the UI never has to special-case absence.",
        +                  "properties": {
        +                    "assembly_id": {
        +                      "type": "string"
        +                    },
        +                    "drawing": {
        +                      "anyOf": [
        +                        {
        +                          "additionalProperties": false,
        +                          "description": "Server-rendered SVG preview of the assembly geometry.\n\nPer G.6.3 / STATUS.md decision 6 (2026-05-19): one source of\ngeometry (`DrawEntity` list emitted by `Assembly.compute`), two\noutput paths (this SVG for inline preview, the `GET .../dxf`\nendpoint for the real CAD download). The browser displays\n`svg_b64` decoded inline; `viewbox` drives client zoom/pan\ncontrols without re-parsing the SVG.\n\n`svg_b64` is base64 of a UTF-8 SVG document with one `<g\nclass=\"cq-layer cq-layer-<name>\">` per layer. Styling defaults are\ninlined so the preview renders without an external stylesheet;\nfront-end CSS may override via the class names.",
        +                          "properties": {
        +                            "entity_count": {
        +                              "description": "Number of DrawEntities rendered",
        +                              "minimum": 0,
        +                              "type": "integer"
        +                            },
        +                            "svg_b64": {
        +                              "description": "Base64-encoded SVG document",
        +                              "minLength": 1,
        +                              "type": "string"
        +                            },
        +                            "unit_of_drawing": {
        +                              "const": "m",
        +                              "default": "m",
        +                              "description": "Engine geometry is in metres. Surfaced here so the client never has to guess; if a future engine switches to mm this becomes the discriminator.",
        +                              "type": "string"
        +                            },
        +                            "viewbox_height": {
        +                              "description": "SVG viewBox height in engine units (m)",
        +                              "exclusiveMinimum": 0,
        +                              "type": "number"
        +                            },
        +                            "viewbox_width": {
        +                              "description": "SVG viewBox width in engine units (m)",
        +                              "exclusiveMinimum": 0,
        +                              "type": "number"
        +                            },
        +                            "viewbox_x": {
        +                              "description": "SVG viewBox x in engine units (m)",
        +                              "type": "number"
        +                            },
        +                            "viewbox_y": {
        +                              "description": "SVG viewBox y in engine units (m)",
        +                              "type": "number"
        +                            }
        +                          },
        +                          "required": [
        +                            "svg_b64",
        +                            "viewbox_x",
        +                            "viewbox_y",
        +                            "viewbox_width",
        +                            "viewbox_height",
        +                            "entity_count"
        +                          ],
        +                          "type": "object"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "label": {
        +                      "type": "string"
        +                    },
        +                    "position": {
        +                      "type": "integer"
        +                    },
        +                    "slug": {
        +                      "type": "string"
        +                    }
        +                  },
        +                  "required": [
        +                    "assembly_id",
        +                    "slug",
        +                    "label",
        +                    "position"
        +                  ],
        +                  "type": "object"
        +                },
        +                "type": "array"
        +              },
        +              "boqs_by_standard": {
        +                "additionalProperties": {
        +                  "items": {
        +                    "additionalProperties": false,
        +                    "description": "Slim BoQ row for the recompute response. Matches the engine's own\n``BoQItem`` columns; rate / amount stay null per the freemium-MCP\npricing-is-yours discipline (schema § 1.3).",
        +                    "properties": {
        +                      "amount": {
        +                        "anyOf": [
        +                          {
        +                            "type": "number"
        +                          },
        +                          {
        +                            "type": "null"
        +                          }
        +                        ],
        +                        "default": null
        +                      },
        +                      "code": {
        +                        "type": "string"
        +                      },
        +                      "description": {
        +                        "type": "string"
        +                      },
        +                      "group": {
        +                        "anyOf": [
        +                          {
        +                            "type": "string"
        +                          },
        +                          {
        +                            "type": "null"
        +                          }
        +                        ],
        +                        "default": null
        +                      },
        +                      "nrm1_element": {
        +                        "anyOf": [
        +                          {
        +                            "type": "string"
        +                          },
        +                          {
        +                            "type": "null"
        +                          }
        +                        ],
        +                        "default": null
        +                      },
        +                      "nrm1_group_element": {
        +                        "anyOf": [
        +                          {
        +                            "type": "integer"
        +                          },
        +                          {
        +                            "type": "null"
        +                          }
        +                        ],
        +                        "default": null
        +                      },
        +                      "nrm1_sub_element": {
        +                        "anyOf": [
        +                          {
        +                            "type": "string"
        +                          },
        +                          {
        +                            "type": "null"
        +                          }
        +                        ],
        +                        "default": null
        +                      },
        +                      "quantity": {
        +                        "minimum": 0,
        +                        "type": "number"
        +                      },
        +                      "rate": {
        +                        "anyOf": [
        +                          {
        +                            "type": "number"
        +                          },
        +                          {
        +                            "type": "null"
        +                          }
        +                        ],
        +                        "default": null
        +                      },
        +                      "sub_group": {
        +                        "anyOf": [
        +                          {
        +                            "type": "string"
        +                          },
        +                          {
        +                            "type": "null"
        +                          }
        +                        ],
        +                        "default": null
        +                      },
        +                      "unit": {
        +                        "type": "string"
        +                      }
        +                    },
        +                    "required": [
        +                      "code",
        +                      "description",
        +                      "unit",
        +                      "quantity"
        +                    ],
        +                    "type": "object"
        +                  },
        +                  "type": "array"
        +                },
        +                "type": "object"
        +              },
        +              "procurement_summary": {
        +                "items": {
        +                  "additionalProperties": false,
        +                  "description": "One row of the project's procurement summary (G.4.4b Step 1).\n\nThe procurement summary is the standard-agnostic material rollup keyed\non ``(category, spec, unit)`` — distinct from ``boqs_by_standard`` (a\nmeasurement-standard projection) and identical across all four\nstandards by construction. Drives the right pane of\n``/workspace/[project_id]`` and the ``Procurement`` sheet of the\nproject XLSX (per launch spec § 3.4.2).",
        +                  "properties": {
        +                    "category": {
        +                      "type": "string"
        +                    },
        +                    "quantity": {
        +                      "minimum": 0,
        +                      "type": "number"
        +                    },
        +                    "source_assemblies": {
        +                      "items": {
        +                        "type": "string"
        +                      },
        +                      "type": "array"
        +                    },
        +                    "spec": {
        +                      "type": "string"
        +                    },
        +                    "unit": {
        +                      "type": "string"
        +                    }
        +                  },
        +                  "required": [
        +                    "category",
        +                    "spec",
        +                    "quantity",
        +                    "unit",
        +                    "source_assemblies"
        +                  ],
        +                  "type": "object"
        +                },
        +                "type": "array"
        +              },
        +              "project_id": {
        +                "type": "string"
        +              },
        +              "standards_rendered": {
        +                "items": {
        +                  "type": "string"
        +                },
        +                "type": "array"
        +              },
        +              "work_item_count": {
        +                "type": "integer"
        +              }
        +            },
        +            "required": [
        +              "project_id",
        +              "standards_rendered",
        +              "assembly_count",
        +              "work_item_count",
        +              "boqs_by_standard",
        +              "procurement_summary",
        +              "assembly_drawings"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      },
        +      "error": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        +            "properties": {
        +              "code": {
        +                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        +                "enum": [
        +                  "RATE_LIMIT_EXCEEDED",
        +                  "TIER_INSUFFICIENT",
        +                  "INVALID_INPUT",
        +                  "SCHEMA_VERSION_MISMATCH",
        +                  "SCHEMA_INVARIANT_VIOLATION",
        +                  "UPSTREAM_TIMEOUT",
        +                  "BACKEND_FAILURE",
        +                  "IP_BLOCKED",
        +                  "RESOURCE_NOT_FOUND",
        +                  "RENDER_FAILURE",
        +                  "OCR_LOW_CONFIDENCE",
        +                  "MANUAL_REVIEW_REQUIRED",
        +                  "ACCEPTANCE_REQUIRED",
        +                  "INVALID_TOKEN"
        +                ],
        +                "type": "string"
        +              },
        +              "details": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "message": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "recoverable": {
        +                "type": "boolean"
        +              },
        +              "retry_after_seconds": {
        +                "anyOf": [
        +                  {
        +                    "minimum": 0,
        +                    "type": "integer"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              }
        +            },
        +            "required": [
        +              "code",
        +              "message",
        +              "recoverable"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      }
        +    },
        +    "required": [
        +      "_meta"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "_meta": {
        +        "additionalProperties": false,
        +        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        +        "properties": {
        +          "deliverables": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        +                "properties": {
        +                  "docx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "dxf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "expires_at": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  },
        +                  "pdf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "xlsx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "expires_at"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "document_id": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "issued_at": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "output_mode": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Surfaces what a trimmed ``output_mode`` withheld from ``data``.\n\nA trimmed mode (``summary`` / ``material_schedule`` / ``boq`` /\n``boq_with_backup``) withholds\nalready-computed fields to keep the chat payload small. The withheld value\nreads to a client agent as \"capability missing\" (the box-culvert \"geometry\nbuilder isn't firing\" scare) rather than \"pared for size\": ``drawing`` and\n``audit_trail`` appear as ``null``, ``boq_rows`` as an empty list ``[]``\n(its type forbids ``null``) — both indistinguishable from a genuine absent\nresult. This names the withheld fields and the exact mode that brings each\nback, so the value is unambiguous. Absent on the default ``full_json`` mode\n— nothing is withheld, nothing to point at.",
        +                "properties": {
        +                  "mode": {
        +                    "enum": [
        +                      "summary",
        +                      "material_schedule",
        +                      "boq",
        +                      "boq_with_backup"
        +                    ],
        +                    "type": "string"
        +                  },
        +                  "omitted_fields": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "minItems": 1,
        +                    "type": "array"
        +                  },
        +                  "retrieve_with": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "mode",
        +                  "omitted_fields",
        +                  "retrieve_with"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "rate_limit_remaining": {
        +            "anyOf": [
        +              {
        +                "minimum": 0,
        +                "type": "integer"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "request_id": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "schema_version": {
        +            "const": "1.0.0",
        +            "default": "1.0.0",
        +            "type": "string"
        +          },
        +          "scope_boundary": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        +                "properties": {
        +                  "not_in_scope": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "produced": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "recommended_companions": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "type": "string"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "produced",
        +                  "not_in_scope"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tier": {
        +            "enum": [
        +              "free",
        +              "paid"
        +            ],
        +            "type": "string"
        +          },
        +          "tier_upgrade": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        +                "properties": {
        +                  "available_tiers": {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        +                      "properties": {
        +                        "billing": {
        +                          "enum": [
        +                            "one_off",
        +                            "monthly",
        +                            "annual"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "currency": {
        +                          "enum": [
        +                            "GBP",
        +                            "SGD",
        +                            "EUR",
        +                            "USD",
        +                            "CAD",
        +                            "AUD",
        +                            "NZD",
        +                            "MYR"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "display_name": {
        +                          "type": "string"
        +                        },
        +                        "price_local": {
        +                          "type": "number"
        +                        },
        +                        "tier_slug": {
        +                          "enum": [
        +                            "7_day_pass",
        +                            "solo",
        +                            "studio",
        +                            "practice"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "unlock_summary": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "tier_slug",
        +                        "display_name",
        +                        "price_local",
        +                        "currency",
        +                        "billing",
        +                        "unlock_summary"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "current_tier": {
        +                    "const": "free",
        +                    "default": "free",
        +                    "type": "string"
        +                  },
        +                  "pass_credit": {
        +                    "anyOf": [
        +                      {
        +                        "additionalProperties": false,
        +                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        +                        "properties": {
        +                          "amount_local": {
        +                            "type": "number"
        +                          },
        +                          "applies_to": {
        +                            "const": "solo_first_month",
        +                            "default": "solo_first_month",
        +                            "type": "string"
        +                          },
        +                          "currency": {
        +                            "type": "string"
        +                          },
        +                          "redeemable_until": {
        +                            "type": "string"
        +                          }
        +                        },
        +                        "required": [
        +                          "amount_local",
        +                          "currency",
        +                          "redeemable_until"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "pricing_url": {
        +                    "default": "https://civilquants.com/pricing",
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "available_tiers"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tos_url": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "upgrade_hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "warranty_disclaimer": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          }
        +        },
        +        "required": [
        +          "request_id",
        +          "issued_at",
        +          "tier"
        +        ],
        +        "type": "object"
        +      },
        +      "data": {
        +        "default": null,
        +        "title": "Data"
        +      },
        +      "error": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        +            "properties": {
        +              "code": {
        +                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        +                "enum": [
        +                  "RATE_LIMIT_EXCEEDED",
        +                  "TIER_INSUFFICIENT",
        +                  "INVALID_INPUT",
        +                  "SCHEMA_VERSION_MISMATCH",
        +                  "SCHEMA_INVARIANT_VIOLATION",
        +                  "UPSTREAM_TIMEOUT",
        +                  "BACKEND_FAILURE",
        +                  "IP_BLOCKED",
        +                  "RESOURCE_NOT_FOUND",
        +                  "RENDER_FAILURE",
        +                  "OCR_LOW_CONFIDENCE",
        +                  "MANUAL_REVIEW_REQUIRED",
        +                  "ACCEPTANCE_REQUIRED",
        +                  "INVALID_TOKEN"
        +                ],
        +                "type": "string"
        +              },
        +              "details": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "message": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "recoverable": {
        +                "type": "boolean"
        +              },
        +              "retry_after_seconds": {
        +                "anyOf": [
        +                  {
        +                    "minimum": 0,
        +                    "type": "integer"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              }
        +            },
        +            "required": [
        +              "code",
        +              "message",
        +              "recoverable"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      }
        +    },
        +    "required": [
        +      "_meta"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedrender_skill_report1 field changed
      • changedOutput schema / properties / result / anyOf
        Previous value: -[
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "_meta": {
        -        "additionalProperties": false,
        -        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        -        "properties": {
        -          "deliverables": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        -                "properties": {
        -                  "docx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "dxf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "expires_at": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  },
        -                  "pdf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "xlsx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "expires_at"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "document_id": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "issued_at": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "output_mode": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Surfaces what a trimmed ``output_mode`` withheld from ``data``.\n\nA trimmed mode (``summary`` / ``boq`` / ``boq_with_backup``) withholds\nalready-computed fields to keep the chat payload small. The withheld value\nreads to a client agent as \"capability missing\" (the box-culvert \"geometry\nbuilder isn't firing\" scare) rather than \"pared for size\": ``drawing`` and\n``audit_trail`` appear as ``null``, ``boq_rows`` as an empty list ``[]``\n(its type forbids ``null``) — both indistinguishable from a genuine absent\nresult. This names the withheld fields and the exact mode that brings each\nback, so the value is unambiguous. Absent on the default ``full_json`` mode\n— nothing is withheld, nothing to point at.",
        -                "properties": {
        -                  "mode": {
        -                    "enum": [
        -                      "summary",
        -                      "boq",
        -                      "boq_with_backup"
        -                    ],
        -                    "type": "string"
        -                  },
        -                  "omitted_fields": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "minItems": 1,
        -                    "type": "array"
        -                  },
        -                  "retrieve_with": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "mode",
        -                  "omitted_fields",
        -                  "retrieve_with"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "rate_limit_remaining": {
        -            "anyOf": [
        -              {
        -                "minimum": 0,
        -                "type": "integer"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "request_id": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "schema_version": {
        -            "const": "1.0.0",
        -            "default": "1.0.0",
        -            "type": "string"
        -          },
        -          "scope_boundary": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        -                "properties": {
        -                  "not_in_scope": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "produced": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "recommended_companions": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "type": "string"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "produced",
        -                  "not_in_scope"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tier": {
        -            "enum": [
        -              "free",
        -              "paid"
        -            ],
        -            "type": "string"
        -          },
        -          "tier_upgrade": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        -                "properties": {
        -                  "available_tiers": {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        -                      "properties": {
        -                        "billing": {
        -                          "enum": [
        -                            "one_off",
        -                            "monthly",
        -                            "annual"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "currency": {
        -                          "enum": [
        -                            "GBP",
        -                            "SGD",
        -                            "EUR",
        -                            "USD",
        -                            "CAD",
        -                            "AUD",
        -                            "NZD",
        -                            "MYR"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "display_name": {
        -                          "type": "string"
        -                        },
        -                        "price_local": {
        -                          "type": "number"
        -                        },
        -                        "tier_slug": {
        -                          "enum": [
        -                            "7_day_pass",
        -                            "solo",
        -                            "studio",
        -                            "practice"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "unlock_summary": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "tier_slug",
        -                        "display_name",
        -                        "price_local",
        -                        "currency",
        -                        "billing",
        -                        "unlock_summary"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "current_tier": {
        -                    "const": "free",
        -                    "default": "free",
        -                    "type": "string"
        -                  },
        -                  "pass_credit": {
        -                    "anyOf": [
        -                      {
        -                        "additionalProperties": false,
        -                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        -                        "properties": {
        -                          "amount_local": {
        -                            "type": "number"
        -                          },
        -                          "applies_to": {
        -                            "const": "solo_first_month",
        -                            "default": "solo_first_month",
        -                            "type": "string"
        -                          },
        -                          "currency": {
        -                            "type": "string"
        -                          },
        -                          "redeemable_until": {
        -                            "type": "string"
        -                          }
        -                        },
        -                        "required": [
        -                          "amount_local",
        -                          "currency",
        -                          "redeemable_until"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "pricing_url": {
        -                    "default": "https://civilquants.com/pricing",
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "available_tiers"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tos_url": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "upgrade_hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "warranty_disclaimer": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          }
        -        },
        -        "required": [
        -          "request_id",
        -          "issued_at",
        -          "tier"
        -        ],
        -        "type": "object"
        -      },
        -      "data": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Wire response shape — schema § 4 RenderResult.\n\nPer Phase 3.4 A.3: each skill has TWO possible delivery modes that\nmap to ``CIVILQUANTS_ARTEFACT_STORE``:\n  * ``local`` (dev default) — base64-inline in ``xlsx_b64`` / ``docx_b64``\n  * ``r2`` (production) — pre-signed URL in ``xlsx_url`` / ``docx_url``\nThe validator enforces \"exactly one delivery channel per skill\" — a\nsingle render call returns exactly one of {b64, url} for its target\nformat, never both. The other skill's fields stay null.",
        -            "properties": {
        -              "byte_size": {
        -                "description": "Decoded size of whichever deliverable was rendered.",
        -                "minimum": 0,
        -                "type": "integer"
        -              },
        -              "docx_b64": {
        -                "anyOf": [
        -                  {
        -                    "type": "string"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null,
        -                "description": "Base64-encoded .docx document bytes (Word skill, local store mode only)."
        -              },
        -              "docx_url": {
        -                "anyOf": [
        -                  {
        -                    "type": "string"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null,
        -                "description": "Pre-signed R2 GET URL for .docx (Word skill, R2 store mode)."
        -              },
        -              "pdf_url": {
        -                "anyOf": [
        -                  {
        -                    "type": "string"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null,
        -                "description": "Reserved for a future PDF skill backend."
        -              },
        -              "skill": {
        -                "description": "Echoes the resolved skill slug.",
        -                "type": "string"
        -              },
        -              "watermark_state": {
        -                "description": "`free` when the free-tier sheet protection + watermark is applied; `none` for paid output.",
        -                "enum": [
        -                  "free",
        -                  "none"
        -                ],
        -                "type": "string"
        -              },
        -              "xlsx_b64": {
        -                "anyOf": [
        -                  {
        -                    "type": "string"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null,
        -                "description": "Base64-encoded .xlsx workbook bytes (Excel skill, local store mode only)."
        -              },
        -              "xlsx_url": {
        -                "anyOf": [
        -                  {
        -                    "type": "string"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null,
        -                "description": "Pre-signed R2 GET URL for .xlsx (Excel skill, R2 store mode)."
        -              }
        -            },
        -            "required": [
        -              "watermark_state",
        -              "byte_size",
        -              "skill"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      },
        -      "error": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        -            "properties": {
        -              "code": {
        -                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        -                "enum": [
        -                  "RATE_LIMIT_EXCEEDED",
        -                  "TIER_INSUFFICIENT",
        -                  "INVALID_INPUT",
        -                  "SCHEMA_VERSION_MISMATCH",
        -                  "SCHEMA_INVARIANT_VIOLATION",
        -                  "UPSTREAM_TIMEOUT",
        -                  "BACKEND_FAILURE",
        -                  "IP_BLOCKED",
        -                  "RESOURCE_NOT_FOUND",
        -                  "RENDER_FAILURE",
        -                  "OCR_LOW_CONFIDENCE",
        -                  "MANUAL_REVIEW_REQUIRED",
        -                  "ACCEPTANCE_REQUIRED",
        -                  "INVALID_TOKEN"
        -                ],
        -                "type": "string"
        -              },
        -              "details": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "message": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "recoverable": {
        -                "type": "boolean"
        -              },
        -              "retry_after_seconds": {
        -                "anyOf": [
        -                  {
        -                    "minimum": 0,
        -                    "type": "integer"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              }
        -            },
        -            "required": [
        -              "code",
        -              "message",
        -              "recoverable"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      }
        -    },
        -    "required": [
        -      "_meta"
        -    ],
        -    "type": "object"
        -  },
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "_meta": {
        -        "additionalProperties": false,
        -        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        -        "properties": {
        -          "deliverables": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        -                "properties": {
        -                  "docx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "dxf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "expires_at": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  },
        -                  "pdf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "xlsx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "expires_at"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "document_id": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "issued_at": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "output_mode": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Surfaces what a trimmed ``output_mode`` withheld from ``data``.\n\nA trimmed mode (``summary`` / ``boq`` / ``boq_with_backup``) withholds\nalready-computed fields to keep the chat payload small. The withheld value\nreads to a client agent as \"capability missing\" (the box-culvert \"geometry\nbuilder isn't firing\" scare) rather than \"pared for size\": ``drawing`` and\n``audit_trail`` appear as ``null``, ``boq_rows`` as an empty list ``[]``\n(its type forbids ``null``) — both indistinguishable from a genuine absent\nresult. This names the withheld fields and the exact mode that brings each\nback, so the value is unambiguous. Absent on the default ``full_json`` mode\n— nothing is withheld, nothing to point at.",
        -                "properties": {
        -                  "mode": {
        -                    "enum": [
        -                      "summary",
        -                      "boq",
        -                      "boq_with_backup"
        -                    ],
        -                    "type": "string"
        -                  },
        -                  "omitted_fields": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "minItems": 1,
        -                    "type": "array"
        -                  },
        -                  "retrieve_with": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "mode",
        -                  "omitted_fields",
        -                  "retrieve_with"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "rate_limit_remaining": {
        -            "anyOf": [
        -              {
        -                "minimum": 0,
        -                "type": "integer"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "request_id": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "schema_version": {
        -            "const": "1.0.0",
        -            "default": "1.0.0",
        -            "type": "string"
        -          },
        -          "scope_boundary": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        -                "properties": {
        -                  "not_in_scope": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "produced": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "recommended_companions": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "type": "string"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "produced",
        -                  "not_in_scope"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tier": {
        -            "enum": [
        -              "free",
        -              "paid"
        -            ],
        -            "type": "string"
        -          },
        -          "tier_upgrade": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        -                "properties": {
        -                  "available_tiers": {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        -                      "properties": {
        -                        "billing": {
        -                          "enum": [
        -                            "one_off",
        -                            "monthly",
        -                            "annual"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "currency": {
        -                          "enum": [
        -                            "GBP",
        -                            "SGD",
        -                            "EUR",
        -                            "USD",
        -                            "CAD",
        -                            "AUD",
        -                            "NZD",
        -                            "MYR"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "display_name": {
        -                          "type": "string"
        -                        },
        -                        "price_local": {
        -                          "type": "number"
        -                        },
        -                        "tier_slug": {
        -                          "enum": [
        -                            "7_day_pass",
        -                            "solo",
        -                            "studio",
        -                            "practice"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "unlock_summary": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "tier_slug",
        -                        "display_name",
        -                        "price_local",
        -                        "currency",
        -                        "billing",
        -                        "unlock_summary"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "current_tier": {
        -                    "const": "free",
        -                    "default": "free",
        -                    "type": "string"
        -                  },
        -                  "pass_credit": {
        -                    "anyOf": [
        -                      {
        -                        "additionalProperties": false,
        -                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        -                        "properties": {
        -                          "amount_local": {
        -                            "type": "number"
        -                          },
        -                          "applies_to": {
        -                            "const": "solo_first_month",
        -                            "default": "solo_first_month",
        -                            "type": "string"
        -                          },
        -                          "currency": {
        -                            "type": "string"
        -                          },
        -                          "redeemable_until": {
        -                            "type": "string"
        -                          }
        -                        },
        -                        "required": [
        -                          "amount_local",
        -                          "currency",
        -                          "redeemable_until"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "pricing_url": {
        -                    "default": "https://civilquants.com/pricing",
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "available_tiers"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tos_url": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "upgrade_hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "warranty_disclaimer": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          }
        -        },
        -        "required": [
        -          "request_id",
        -          "issued_at",
        -          "tier"
        -        ],
        -        "type": "object"
        -      },
        -      "data": {
        -        "default": null,
        -        "title": "Data"
        -      },
        -      "error": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        -            "properties": {
        -              "code": {
        -                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        -                "enum": [
        -                  "RATE_LIMIT_EXCEEDED",
        -                  "TIER_INSUFFICIENT",
        -                  "INVALID_INPUT",
        -                  "SCHEMA_VERSION_MISMATCH",
        -                  "SCHEMA_INVARIANT_VIOLATION",
        -                  "UPSTREAM_TIMEOUT",
        -                  "BACKEND_FAILURE",
        -                  "IP_BLOCKED",
        -                  "RESOURCE_NOT_FOUND",
        -                  "RENDER_FAILURE",
        -                  "OCR_LOW_CONFIDENCE",
        -                  "MANUAL_REVIEW_REQUIRED",
        -                  "ACCEPTANCE_REQUIRED",
        -                  "INVALID_TOKEN"
        -                ],
        -                "type": "string"
        -              },
        -              "details": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "message": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "recoverable": {
        -                "type": "boolean"
        -              },
        -              "retry_after_seconds": {
        -                "anyOf": [
        -                  {
        -                    "minimum": 0,
        -                    "type": "integer"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              }
        -            },
        -            "required": [
        -              "code",
        -              "message",
        -              "recoverable"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      }
        -    },
        -    "required": [
        -      "_meta"
        -    ],
        -    "type": "object"
        -  }
        -]New value: +[
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "_meta": {
        +        "additionalProperties": false,
        +        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        +        "properties": {
        +          "deliverables": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        +                "properties": {
        +                  "docx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "dxf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "expires_at": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  },
        +                  "pdf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "xlsx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "expires_at"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "document_id": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "issued_at": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "output_mode": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Surfaces what a trimmed ``output_mode`` withheld from ``data``.\n\nA trimmed mode (``summary`` / ``material_schedule`` / ``boq`` /\n``boq_with_backup``) withholds\nalready-computed fields to keep the chat payload small. The withheld value\nreads to a client agent as \"capability missing\" (the box-culvert \"geometry\nbuilder isn't firing\" scare) rather than \"pared for size\": ``drawing`` and\n``audit_trail`` appear as ``null``, ``boq_rows`` as an empty list ``[]``\n(its type forbids ``null``) — both indistinguishable from a genuine absent\nresult. This names the withheld fields and the exact mode that brings each\nback, so the value is unambiguous. Absent on the default ``full_json`` mode\n— nothing is withheld, nothing to point at.",
        +                "properties": {
        +                  "mode": {
        +                    "enum": [
        +                      "summary",
        +                      "material_schedule",
        +                      "boq",
        +                      "boq_with_backup"
        +                    ],
        +                    "type": "string"
        +                  },
        +                  "omitted_fields": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "minItems": 1,
        +                    "type": "array"
        +                  },
        +                  "retrieve_with": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "mode",
        +                  "omitted_fields",
        +                  "retrieve_with"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "rate_limit_remaining": {
        +            "anyOf": [
        +              {
        +                "minimum": 0,
        +                "type": "integer"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "request_id": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "schema_version": {
        +            "const": "1.0.0",
        +            "default": "1.0.0",
        +            "type": "string"
        +          },
        +          "scope_boundary": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        +                "properties": {
        +                  "not_in_scope": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "produced": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "recommended_companions": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "type": "string"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "produced",
        +                  "not_in_scope"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tier": {
        +            "enum": [
        +              "free",
        +              "paid"
        +            ],
        +            "type": "string"
        +          },
        +          "tier_upgrade": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        +                "properties": {
        +                  "available_tiers": {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        +                      "properties": {
        +                        "billing": {
        +                          "enum": [
        +                            "one_off",
        +                            "monthly",
        +                            "annual"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "currency": {
        +                          "enum": [
        +                            "GBP",
        +                            "SGD",
        +                            "EUR",
        +                            "USD",
        +                            "CAD",
        +                            "AUD",
        +                            "NZD",
        +                            "MYR"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "display_name": {
        +                          "type": "string"
        +                        },
        +                        "price_local": {
        +                          "type": "number"
        +                        },
        +                        "tier_slug": {
        +                          "enum": [
        +                            "7_day_pass",
        +                            "solo",
        +                            "studio",
        +                            "practice"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "unlock_summary": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "tier_slug",
        +                        "display_name",
        +                        "price_local",
        +                        "currency",
        +                        "billing",
        +                        "unlock_summary"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "current_tier": {
        +                    "const": "free",
        +                    "default": "free",
        +                    "type": "string"
        +                  },
        +                  "pass_credit": {
        +                    "anyOf": [
        +                      {
        +                        "additionalProperties": false,
        +                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        +                        "properties": {
        +                          "amount_local": {
        +                            "type": "number"
        +                          },
        +                          "applies_to": {
        +                            "const": "solo_first_month",
        +                            "default": "solo_first_month",
        +                            "type": "string"
        +                          },
        +                          "currency": {
        +                            "type": "string"
        +                          },
        +                          "redeemable_until": {
        +                            "type": "string"
        +                          }
        +                        },
        +                        "required": [
        +                          "amount_local",
        +                          "currency",
        +                          "redeemable_until"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "pricing_url": {
        +                    "default": "https://civilquants.com/pricing",
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "available_tiers"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tos_url": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "upgrade_hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "warranty_disclaimer": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          }
        +        },
        +        "required": [
        +          "request_id",
        +          "issued_at",
        +          "tier"
        +        ],
        +        "type": "object"
        +      },
        +      "data": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Wire response shape — schema § 4 RenderResult.\n\nPer Phase 3.4 A.3: each skill has TWO possible delivery modes that\nmap to ``CIVILQUANTS_ARTEFACT_STORE``:\n  * ``local`` (dev default) — base64-inline in ``xlsx_b64`` / ``docx_b64``\n  * ``r2`` (production) — pre-signed URL in ``xlsx_url`` / ``docx_url``\nThe validator enforces \"exactly one delivery channel per skill\" — a\nsingle render call returns exactly one of {b64, url} for its target\nformat, never both. The other skill's fields stay null.",
        +            "properties": {
        +              "byte_size": {
        +                "description": "Decoded size of whichever deliverable was rendered.",
        +                "minimum": 0,
        +                "type": "integer"
        +              },
        +              "docx_b64": {
        +                "anyOf": [
        +                  {
        +                    "type": "string"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null,
        +                "description": "Base64-encoded .docx document bytes (Word skill, local store mode only)."
        +              },
        +              "docx_url": {
        +                "anyOf": [
        +                  {
        +                    "type": "string"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null,
        +                "description": "Pre-signed R2 GET URL for .docx (Word skill, R2 store mode)."
        +              },
        +              "pdf_url": {
        +                "anyOf": [
        +                  {
        +                    "type": "string"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null,
        +                "description": "Reserved for a future PDF skill backend."
        +              },
        +              "skill": {
        +                "description": "Echoes the resolved skill slug.",
        +                "type": "string"
        +              },
        +              "watermark_state": {
        +                "description": "`free` when the free-tier sheet protection + watermark is applied; `none` for paid output.",
        +                "enum": [
        +                  "free",
        +                  "none"
        +                ],
        +                "type": "string"
        +              },
        +              "xlsx_b64": {
        +                "anyOf": [
        +                  {
        +                    "type": "string"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null,
        +                "description": "Base64-encoded .xlsx workbook bytes (Excel skill, local store mode only)."
        +              },
        +              "xlsx_url": {
        +                "anyOf": [
        +                  {
        +                    "type": "string"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null,
        +                "description": "Pre-signed R2 GET URL for .xlsx (Excel skill, R2 store mode)."
        +              }
        +            },
        +            "required": [
        +              "watermark_state",
        +              "byte_size",
        +              "skill"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      },
        +      "error": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        +            "properties": {
        +              "code": {
        +                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        +                "enum": [
        +                  "RATE_LIMIT_EXCEEDED",
        +                  "TIER_INSUFFICIENT",
        +                  "INVALID_INPUT",
        +                  "SCHEMA_VERSION_MISMATCH",
        +                  "SCHEMA_INVARIANT_VIOLATION",
        +                  "UPSTREAM_TIMEOUT",
        +                  "BACKEND_FAILURE",
        +                  "IP_BLOCKED",
        +                  "RESOURCE_NOT_FOUND",
        +                  "RENDER_FAILURE",
        +                  "OCR_LOW_CONFIDENCE",
        +                  "MANUAL_REVIEW_REQUIRED",
        +                  "ACCEPTANCE_REQUIRED",
        +                  "INVALID_TOKEN"
        +                ],
        +                "type": "string"
        +              },
        +              "details": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "message": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "recoverable": {
        +                "type": "boolean"
        +              },
        +              "retry_after_seconds": {
        +                "anyOf": [
        +                  {
        +                    "minimum": 0,
        +                    "type": "integer"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              }
        +            },
        +            "required": [
        +              "code",
        +              "message",
        +              "recoverable"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      }
        +    },
        +    "required": [
        +      "_meta"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "_meta": {
        +        "additionalProperties": false,
        +        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        +        "properties": {
        +          "deliverables": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        +                "properties": {
        +                  "docx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "dxf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "expires_at": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  },
        +                  "pdf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "xlsx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "expires_at"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "document_id": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "issued_at": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "output_mode": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Surfaces what a trimmed ``output_mode`` withheld from ``data``.\n\nA trimmed mode (``summary`` / ``material_schedule`` / ``boq`` /\n``boq_with_backup``) withholds\nalready-computed fields to keep the chat payload small. The withheld value\nreads to a client agent as \"capability missing\" (the box-culvert \"geometry\nbuilder isn't firing\" scare) rather than \"pared for size\": ``drawing`` and\n``audit_trail`` appear as ``null``, ``boq_rows`` as an empty list ``[]``\n(its type forbids ``null``) — both indistinguishable from a genuine absent\nresult. This names the withheld fields and the exact mode that brings each\nback, so the value is unambiguous. Absent on the default ``full_json`` mode\n— nothing is withheld, nothing to point at.",
        +                "properties": {
        +                  "mode": {
        +                    "enum": [
        +                      "summary",
        +                      "material_schedule",
        +                      "boq",
        +                      "boq_with_backup"
        +                    ],
        +                    "type": "string"
        +                  },
        +                  "omitted_fields": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "minItems": 1,
        +                    "type": "array"
        +                  },
        +                  "retrieve_with": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "mode",
        +                  "omitted_fields",
        +                  "retrieve_with"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "rate_limit_remaining": {
        +            "anyOf": [
        +              {
        +                "minimum": 0,
        +                "type": "integer"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "request_id": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "schema_version": {
        +            "const": "1.0.0",
        +            "default": "1.0.0",
        +            "type": "string"
        +          },
        +          "scope_boundary": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        +                "properties": {
        +                  "not_in_scope": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "produced": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "recommended_companions": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "type": "string"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "produced",
        +                  "not_in_scope"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tier": {
        +            "enum": [
        +              "free",
        +              "paid"
        +            ],
        +            "type": "string"
        +          },
        +          "tier_upgrade": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        +                "properties": {
        +                  "available_tiers": {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        +                      "properties": {
        +                        "billing": {
        +                          "enum": [
        +                            "one_off",
        +                            "monthly",
        +                            "annual"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "currency": {
        +                          "enum": [
        +                            "GBP",
        +                            "SGD",
        +                            "EUR",
        +                            "USD",
        +                            "CAD",
        +                            "AUD",
        +                            "NZD",
        +                            "MYR"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "display_name": {
        +                          "type": "string"
        +                        },
        +                        "price_local": {
        +                          "type": "number"
        +                        },
        +                        "tier_slug": {
        +                          "enum": [
        +                            "7_day_pass",
        +                            "solo",
        +                            "studio",
        +                            "practice"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "unlock_summary": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "tier_slug",
        +                        "display_name",
        +                        "price_local",
        +                        "currency",
        +                        "billing",
        +                        "unlock_summary"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "current_tier": {
        +                    "const": "free",
        +                    "default": "free",
        +                    "type": "string"
        +                  },
        +                  "pass_credit": {
        +                    "anyOf": [
        +                      {
        +                        "additionalProperties": false,
        +                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        +                        "properties": {
        +                          "amount_local": {
        +                            "type": "number"
        +                          },
        +                          "applies_to": {
        +                            "const": "solo_first_month",
        +                            "default": "solo_first_month",
        +                            "type": "string"
        +                          },
        +                          "currency": {
        +                            "type": "string"
        +                          },
        +                          "redeemable_until": {
        +                            "type": "string"
        +                          }
        +                        },
        +                        "required": [
        +                          "amount_local",
        +                          "currency",
        +                          "redeemable_until"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "pricing_url": {
        +                    "default": "https://civilquants.com/pricing",
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "available_tiers"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tos_url": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "upgrade_hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "warranty_disclaimer": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          }
        +        },
        +        "required": [
        +          "request_id",
        +          "issued_at",
        +          "tier"
        +        ],
        +        "type": "object"
        +      },
        +      "data": {
        +        "default": null,
        +        "title": "Data"
        +      },
        +      "error": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        +            "properties": {
        +              "code": {
        +                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        +                "enum": [
        +                  "RATE_LIMIT_EXCEEDED",
        +                  "TIER_INSUFFICIENT",
        +                  "INVALID_INPUT",
        +                  "SCHEMA_VERSION_MISMATCH",
        +                  "SCHEMA_INVARIANT_VIOLATION",
        +                  "UPSTREAM_TIMEOUT",
        +                  "BACKEND_FAILURE",
        +                  "IP_BLOCKED",
        +                  "RESOURCE_NOT_FOUND",
        +                  "RENDER_FAILURE",
        +                  "OCR_LOW_CONFIDENCE",
        +                  "MANUAL_REVIEW_REQUIRED",
        +                  "ACCEPTANCE_REQUIRED",
        +                  "INVALID_TOKEN"
        +                ],
        +                "type": "string"
        +              },
        +              "details": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "message": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "recoverable": {
        +                "type": "boolean"
        +              },
        +              "retry_after_seconds": {
        +                "anyOf": [
        +                  {
        +                    "minimum": 0,
        +                    "type": "integer"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              }
        +            },
        +            "required": [
        +              "code",
        +              "message",
        +              "recoverable"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      }
        +    },
        +    "required": [
        +      "_meta"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedresolve_assembly_from_description1 field changed
      • changedOutput schema / properties / result / anyOf
        Previous value: -[
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "_meta": {
        -        "additionalProperties": false,
        -        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        -        "properties": {
        -          "deliverables": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        -                "properties": {
        -                  "docx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "dxf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "expires_at": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  },
        -                  "pdf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "xlsx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "expires_at"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "document_id": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "issued_at": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "output_mode": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Surfaces what a trimmed ``output_mode`` withheld from ``data``.\n\nA trimmed mode (``summary`` / ``boq`` / ``boq_with_backup``) withholds\nalready-computed fields to keep the chat payload small. The withheld value\nreads to a client agent as \"capability missing\" (the box-culvert \"geometry\nbuilder isn't firing\" scare) rather than \"pared for size\": ``drawing`` and\n``audit_trail`` appear as ``null``, ``boq_rows`` as an empty list ``[]``\n(its type forbids ``null``) — both indistinguishable from a genuine absent\nresult. This names the withheld fields and the exact mode that brings each\nback, so the value is unambiguous. Absent on the default ``full_json`` mode\n— nothing is withheld, nothing to point at.",
        -                "properties": {
        -                  "mode": {
        -                    "enum": [
        -                      "summary",
        -                      "boq",
        -                      "boq_with_backup"
        -                    ],
        -                    "type": "string"
        -                  },
        -                  "omitted_fields": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "minItems": 1,
        -                    "type": "array"
        -                  },
        -                  "retrieve_with": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "mode",
        -                  "omitted_fields",
        -                  "retrieve_with"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "rate_limit_remaining": {
        -            "anyOf": [
        -              {
        -                "minimum": 0,
        -                "type": "integer"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "request_id": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "schema_version": {
        -            "const": "1.0.0",
        -            "default": "1.0.0",
        -            "type": "string"
        -          },
        -          "scope_boundary": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        -                "properties": {
        -                  "not_in_scope": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "produced": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "recommended_companions": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "type": "string"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "produced",
        -                  "not_in_scope"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tier": {
        -            "enum": [
        -              "free",
        -              "paid"
        -            ],
        -            "type": "string"
        -          },
        -          "tier_upgrade": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        -                "properties": {
        -                  "available_tiers": {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        -                      "properties": {
        -                        "billing": {
        -                          "enum": [
        -                            "one_off",
        -                            "monthly",
        -                            "annual"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "currency": {
        -                          "enum": [
        -                            "GBP",
        -                            "SGD",
        -                            "EUR",
        -                            "USD",
        -                            "CAD",
        -                            "AUD",
        -                            "NZD",
        -                            "MYR"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "display_name": {
        -                          "type": "string"
        -                        },
        -                        "price_local": {
        -                          "type": "number"
        -                        },
        -                        "tier_slug": {
        -                          "enum": [
        -                            "7_day_pass",
        -                            "solo",
        -                            "studio",
        -                            "practice"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "unlock_summary": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "tier_slug",
        -                        "display_name",
        -                        "price_local",
        -                        "currency",
        -                        "billing",
        -                        "unlock_summary"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "current_tier": {
        -                    "const": "free",
        -                    "default": "free",
        -                    "type": "string"
        -                  },
        -                  "pass_credit": {
        -                    "anyOf": [
        -                      {
        -                        "additionalProperties": false,
        -                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        -                        "properties": {
        -                          "amount_local": {
        -                            "type": "number"
        -                          },
        -                          "applies_to": {
        -                            "const": "solo_first_month",
        -                            "default": "solo_first_month",
        -                            "type": "string"
        -                          },
        -                          "currency": {
        -                            "type": "string"
        -                          },
        -                          "redeemable_until": {
        -                            "type": "string"
        -                          }
        -                        },
        -                        "required": [
        -                          "amount_local",
        -                          "currency",
        -                          "redeemable_until"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "pricing_url": {
        -                    "default": "https://civilquants.com/pricing",
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "available_tiers"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tos_url": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "upgrade_hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "warranty_disclaimer": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          }
        -        },
        -        "required": [
        -          "request_id",
        -          "issued_at",
        -          "tier"
        -        ],
        -        "type": "object"
        -      },
        -      "data": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "The typed payload wrapped in MCPResponse[ResolveResult].",
        -            "properties": {
        -              "candidates": {
        -                "items": {
        -                  "additionalProperties": false,
        -                  "description": "A candidate assembly the description routed to.",
        -                  "properties": {
        -                    "category_l1": {
        -                      "type": "string"
        -                    },
        -                    "category_l2": {
        -                      "type": "string"
        -                    },
        -                    "compute_tool": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "display_name": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "fields": {
        -                      "items": {
        -                        "additionalProperties": false,
        -                        "description": "One Parameters field, with the metadata a caller fills a value from.",
        -                        "properties": {
        -                          "default": {
        -                            "anyOf": [
        -                              {
        -                                "type": "number"
        -                              },
        -                              {
        -                                "type": "integer"
        -                              },
        -                              {
        -                                "type": "string"
        -                              },
        -                              {
        -                                "type": "boolean"
        -                              },
        -                              {
        -                                "type": "null"
        -                              }
        -                            ]
        -                          },
        -                          "group": {
        -                            "minLength": 1,
        -                            "type": "string"
        -                          },
        -                          "help_text": {
        -                            "anyOf": [
        -                              {
        -                                "type": "string"
        -                              },
        -                              {
        -                                "type": "null"
        -                              }
        -                            ],
        -                            "default": null
        -                          },
        -                          "is_run_length": {
        -                            "default": false,
        -                            "type": "boolean"
        -                          },
        -                          "label": {
        -                            "minLength": 1,
        -                            "type": "string"
        -                          },
        -                          "load_bearing": {
        -                            "default": false,
        -                            "type": "boolean"
        -                          },
        -                          "max": {
        -                            "anyOf": [
        -                              {
        -                                "type": "number"
        -                              },
        -                              {
        -                                "type": "null"
        -                              }
        -                            ],
        -                            "default": null
        -                          },
        -                          "min": {
        -                            "anyOf": [
        -                              {
        -                                "type": "number"
        -                              },
        -                              {
        -                                "type": "null"
        -                              }
        -                            ],
        -                            "default": null
        -                          },
        -                          "name": {
        -                            "minLength": 1,
        -                            "type": "string"
        -                          },
        -                          "unit": {
        -                            "anyOf": [
        -                              {
        -                                "type": "string"
        -                              },
        -                              {
        -                                "type": "null"
        -                              }
        -                            ],
        -                            "default": null
        -                          }
        -                        },
        -                        "required": [
        -                          "name",
        -                          "label",
        -                          "default",
        -                          "group"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      "type": "array"
        -                    },
        -                    "free_alternative": {
        -                      "anyOf": [
        -                        {
        -                          "type": "string"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "multi_section_tool": {
        -                      "anyOf": [
        -                        {
        -                          "type": "string"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "slug": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "standard_note": {
        -                      "anyOf": [
        -                        {
        -                          "type": "string"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "suggested_params": {
        -                      "items": {
        -                        "additionalProperties": false,
        -                        "description": "A value the description stated with a clear anchor — a caller-confirmed\nsuggestion, NOT an authoritative value and never auto-fed to compute.",
        -                        "properties": {
        -                          "name": {
        -                            "minLength": 1,
        -                            "type": "string"
        -                          },
        -                          "source": {
        -                            "minLength": 1,
        -                            "type": "string"
        -                          },
        -                          "unit": {
        -                            "anyOf": [
        -                              {
        -                                "type": "string"
        -                              },
        -                              {
        -                                "type": "null"
        -                              }
        -                            ],
        -                            "default": null
        -                          },
        -                          "value": {
        -                            "type": "number"
        -                          }
        -                        },
        -                        "required": [
        -                          "name",
        -                          "value",
        -                          "source"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      "type": "array"
        -                    },
        -                    "supports_multi_section": {
        -                      "default": false,
        -                      "type": "boolean"
        -                    },
        -                    "tier": {
        -                      "enum": [
        -                        "free",
        -                        "paid"
        -                      ],
        -                      "type": "string"
        -                    }
        -                  },
        -                  "required": [
        -                    "slug",
        -                    "display_name",
        -                    "tier",
        -                    "category_l1",
        -                    "category_l2",
        -                    "compute_tool"
        -                  ],
        -                  "type": "object"
        -                },
        -                "type": "array"
        -              },
        -              "confidence": {
        -                "enum": [
        -                  "high",
        -                  "medium",
        -                  "low"
        -                ],
        -                "type": "string"
        -              },
        -              "preferred_standard": {
        -                "anyOf": [
        -                  {
        -                    "enum": [
        -                      "CESMM4",
        -                      "NRM2",
        -                      "SMM7",
        -                      "MMHW"
        -                    ],
        -                    "type": "string"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "query": {
        -                "type": "string"
        -              },
        -              "questions": {
        -                "items": {
        -                  "type": "string"
        -                },
        -                "type": "array"
        -              },
        -              "resolution_log": {
        -                "anyOf": [
        -                  {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "One row of the optional resolution log (return_resolution_log).",
        -                      "properties": {
        -                        "matched_terms": {
        -                          "items": {
        -                            "type": "string"
        -                          },
        -                          "type": "array"
        -                        },
        -                        "score": {
        -                          "type": "number"
        -                        },
        -                        "slug": {
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "slug",
        -                        "score"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              }
        -            },
        -            "required": [
        -              "query",
        -              "confidence"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      },
        -      "error": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        -            "properties": {
        -              "code": {
        -                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        -                "enum": [
        -                  "RATE_LIMIT_EXCEEDED",
        -                  "TIER_INSUFFICIENT",
        -                  "INVALID_INPUT",
        -                  "SCHEMA_VERSION_MISMATCH",
        -                  "SCHEMA_INVARIANT_VIOLATION",
        -                  "UPSTREAM_TIMEOUT",
        -                  "BACKEND_FAILURE",
        -                  "IP_BLOCKED",
        -                  "RESOURCE_NOT_FOUND",
        -                  "RENDER_FAILURE",
        -                  "OCR_LOW_CONFIDENCE",
        -                  "MANUAL_REVIEW_REQUIRED",
        -                  "ACCEPTANCE_REQUIRED",
        -                  "INVALID_TOKEN"
        -                ],
        -                "type": "string"
        -              },
        -              "details": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "message": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "recoverable": {
        -                "type": "boolean"
        -              },
        -              "retry_after_seconds": {
        -                "anyOf": [
        -                  {
        -                    "minimum": 0,
        -                    "type": "integer"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              }
        -            },
        -            "required": [
        -              "code",
        -              "message",
        -              "recoverable"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      }
        -    },
        -    "required": [
        -      "_meta"
        -    ],
        -    "type": "object"
        -  },
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "_meta": {
        -        "additionalProperties": false,
        -        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        -        "properties": {
        -          "deliverables": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        -                "properties": {
        -                  "docx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "dxf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "expires_at": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  },
        -                  "pdf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "xlsx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "expires_at"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "document_id": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "issued_at": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "output_mode": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Surfaces what a trimmed ``output_mode`` withheld from ``data``.\n\nA trimmed mode (``summary`` / ``boq`` / ``boq_with_backup``) withholds\nalready-computed fields to keep the chat payload small. The withheld value\nreads to a client agent as \"capability missing\" (the box-culvert \"geometry\nbuilder isn't firing\" scare) rather than \"pared for size\": ``drawing`` and\n``audit_trail`` appear as ``null``, ``boq_rows`` as an empty list ``[]``\n(its type forbids ``null``) — both indistinguishable from a genuine absent\nresult. This names the withheld fields and the exact mode that brings each\nback, so the value is unambiguous. Absent on the default ``full_json`` mode\n— nothing is withheld, nothing to point at.",
        -                "properties": {
        -                  "mode": {
        -                    "enum": [
        -                      "summary",
        -                      "boq",
        -                      "boq_with_backup"
        -                    ],
        -                    "type": "string"
        -                  },
        -                  "omitted_fields": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "minItems": 1,
        -                    "type": "array"
        -                  },
        -                  "retrieve_with": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "mode",
        -                  "omitted_fields",
        -                  "retrieve_with"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "rate_limit_remaining": {
        -            "anyOf": [
        -              {
        -                "minimum": 0,
        -                "type": "integer"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "request_id": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "schema_version": {
        -            "const": "1.0.0",
        -            "default": "1.0.0",
        -            "type": "string"
        -          },
        -          "scope_boundary": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        -                "properties": {
        -                  "not_in_scope": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "produced": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "recommended_companions": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "type": "string"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "produced",
        -                  "not_in_scope"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tier": {
        -            "enum": [
        -              "free",
        -              "paid"
        -            ],
        -            "type": "string"
        -          },
        -          "tier_upgrade": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        -                "properties": {
        -                  "available_tiers": {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        -                      "properties": {
        -                        "billing": {
        -                          "enum": [
        -                            "one_off",
        -                            "monthly",
        -                            "annual"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "currency": {
        -                          "enum": [
        -                            "GBP",
        -                            "SGD",
        -                            "EUR",
        -                            "USD",
        -                            "CAD",
        -                            "AUD",
        -                            "NZD",
        -                            "MYR"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "display_name": {
        -                          "type": "string"
        -                        },
        -                        "price_local": {
        -                          "type": "number"
        -                        },
        -                        "tier_slug": {
        -                          "enum": [
        -                            "7_day_pass",
        -                            "solo",
        -                            "studio",
        -                            "practice"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "unlock_summary": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "tier_slug",
        -                        "display_name",
        -                        "price_local",
        -                        "currency",
        -                        "billing",
        -                        "unlock_summary"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "current_tier": {
        -                    "const": "free",
        -                    "default": "free",
        -                    "type": "string"
        -                  },
        -                  "pass_credit": {
        -                    "anyOf": [
        -                      {
        -                        "additionalProperties": false,
        -                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        -                        "properties": {
        -                          "amount_local": {
        -                            "type": "number"
        -                          },
        -                          "applies_to": {
        -                            "const": "solo_first_month",
        -                            "default": "solo_first_month",
        -                            "type": "string"
        -                          },
        -                          "currency": {
        -                            "type": "string"
        -                          },
        -                          "redeemable_until": {
        -                            "type": "string"
        -                          }
        -                        },
        -                        "required": [
        -                          "amount_local",
        -                          "currency",
        -                          "redeemable_until"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "pricing_url": {
        -                    "default": "https://civilquants.com/pricing",
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "available_tiers"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tos_url": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "upgrade_hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "warranty_disclaimer": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          }
        -        },
        -        "required": [
        -          "request_id",
        -          "issued_at",
        -          "tier"
        -        ],
        -        "type": "object"
        -      },
        -      "data": {
        -        "default": null,
        -        "title": "Data"
        -      },
        -      "error": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        -            "properties": {
        -              "code": {
        -                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        -                "enum": [
        -                  "RATE_LIMIT_EXCEEDED",
        -                  "TIER_INSUFFICIENT",
        -                  "INVALID_INPUT",
        -                  "SCHEMA_VERSION_MISMATCH",
        -                  "SCHEMA_INVARIANT_VIOLATION",
        -                  "UPSTREAM_TIMEOUT",
        -                  "BACKEND_FAILURE",
        -                  "IP_BLOCKED",
        -                  "RESOURCE_NOT_FOUND",
        -                  "RENDER_FAILURE",
        -                  "OCR_LOW_CONFIDENCE",
        -                  "MANUAL_REVIEW_REQUIRED",
        -                  "ACCEPTANCE_REQUIRED",
        -                  "INVALID_TOKEN"
        -                ],
        -                "type": "string"
        -              },
        -              "details": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "message": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "recoverable": {
        -                "type": "boolean"
        -              },
        -              "retry_after_seconds": {
        -                "anyOf": [
        -                  {
        -                    "minimum": 0,
        -                    "type": "integer"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              }
        -            },
        -            "required": [
        -              "code",
        -              "message",
        -              "recoverable"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      }
        -    },
        -    "required": [
        -      "_meta"
        -    ],
        -    "type": "object"
        -  }
        -]New value: +[
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "_meta": {
        +        "additionalProperties": false,
        +        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        +        "properties": {
        +          "deliverables": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        +                "properties": {
        +                  "docx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "dxf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "expires_at": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  },
        +                  "pdf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "xlsx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "expires_at"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "document_id": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "issued_at": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "output_mode": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Surfaces what a trimmed ``output_mode`` withheld from ``data``.\n\nA trimmed mode (``summary`` / ``material_schedule`` / ``boq`` /\n``boq_with_backup``) withholds\nalready-computed fields to keep the chat payload small. The withheld value\nreads to a client agent as \"capability missing\" (the box-culvert \"geometry\nbuilder isn't firing\" scare) rather than \"pared for size\": ``drawing`` and\n``audit_trail`` appear as ``null``, ``boq_rows`` as an empty list ``[]``\n(its type forbids ``null``) — both indistinguishable from a genuine absent\nresult. This names the withheld fields and the exact mode that brings each\nback, so the value is unambiguous. Absent on the default ``full_json`` mode\n— nothing is withheld, nothing to point at.",
        +                "properties": {
        +                  "mode": {
        +                    "enum": [
        +                      "summary",
        +                      "material_schedule",
        +                      "boq",
        +                      "boq_with_backup"
        +                    ],
        +                    "type": "string"
        +                  },
        +                  "omitted_fields": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "minItems": 1,
        +                    "type": "array"
        +                  },
        +                  "retrieve_with": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "mode",
        +                  "omitted_fields",
        +                  "retrieve_with"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "rate_limit_remaining": {
        +            "anyOf": [
        +              {
        +                "minimum": 0,
        +                "type": "integer"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "request_id": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "schema_version": {
        +            "const": "1.0.0",
        +            "default": "1.0.0",
        +            "type": "string"
        +          },
        +          "scope_boundary": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        +                "properties": {
        +                  "not_in_scope": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "produced": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "recommended_companions": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "type": "string"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "produced",
        +                  "not_in_scope"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tier": {
        +            "enum": [
        +              "free",
        +              "paid"
        +            ],
        +            "type": "string"
        +          },
        +          "tier_upgrade": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        +                "properties": {
        +                  "available_tiers": {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        +                      "properties": {
        +                        "billing": {
        +                          "enum": [
        +                            "one_off",
        +                            "monthly",
        +                            "annual"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "currency": {
        +                          "enum": [
        +                            "GBP",
        +                            "SGD",
        +                            "EUR",
        +                            "USD",
        +                            "CAD",
        +                            "AUD",
        +                            "NZD",
        +                            "MYR"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "display_name": {
        +                          "type": "string"
        +                        },
        +                        "price_local": {
        +                          "type": "number"
        +                        },
        +                        "tier_slug": {
        +                          "enum": [
        +                            "7_day_pass",
        +                            "solo",
        +                            "studio",
        +                            "practice"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "unlock_summary": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "tier_slug",
        +                        "display_name",
        +                        "price_local",
        +                        "currency",
        +                        "billing",
        +                        "unlock_summary"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "current_tier": {
        +                    "const": "free",
        +                    "default": "free",
        +                    "type": "string"
        +                  },
        +                  "pass_credit": {
        +                    "anyOf": [
        +                      {
        +                        "additionalProperties": false,
        +                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        +                        "properties": {
        +                          "amount_local": {
        +                            "type": "number"
        +                          },
        +                          "applies_to": {
        +                            "const": "solo_first_month",
        +                            "default": "solo_first_month",
        +                            "type": "string"
        +                          },
        +                          "currency": {
        +                            "type": "string"
        +                          },
        +                          "redeemable_until": {
        +                            "type": "string"
        +                          }
        +                        },
        +                        "required": [
        +                          "amount_local",
        +                          "currency",
        +                          "redeemable_until"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "pricing_url": {
        +                    "default": "https://civilquants.com/pricing",
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "available_tiers"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tos_url": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "upgrade_hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "warranty_disclaimer": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          }
        +        },
        +        "required": [
        +          "request_id",
        +          "issued_at",
        +          "tier"
        +        ],
        +        "type": "object"
        +      },
        +      "data": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "The typed payload wrapped in MCPResponse[ResolveResult].",
        +            "properties": {
        +              "candidates": {
        +                "items": {
        +                  "additionalProperties": false,
        +                  "description": "A candidate assembly the description routed to.",
        +                  "properties": {
        +                    "category_l1": {
        +                      "type": "string"
        +                    },
        +                    "category_l2": {
        +                      "type": "string"
        +                    },
        +                    "compute_tool": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "display_name": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "fields": {
        +                      "items": {
        +                        "additionalProperties": false,
        +                        "description": "One Parameters field, with the metadata a caller fills a value from.",
        +                        "properties": {
        +                          "default": {
        +                            "anyOf": [
        +                              {
        +                                "type": "number"
        +                              },
        +                              {
        +                                "type": "integer"
        +                              },
        +                              {
        +                                "type": "string"
        +                              },
        +                              {
        +                                "type": "boolean"
        +                              },
        +                              {
        +                                "type": "null"
        +                              }
        +                            ]
        +                          },
        +                          "group": {
        +                            "minLength": 1,
        +                            "type": "string"
        +                          },
        +                          "help_text": {
        +                            "anyOf": [
        +                              {
        +                                "type": "string"
        +                              },
        +                              {
        +                                "type": "null"
        +                              }
        +                            ],
        +                            "default": null
        +                          },
        +                          "is_run_length": {
        +                            "default": false,
        +                            "type": "boolean"
        +                          },
        +                          "label": {
        +                            "minLength": 1,
        +                            "type": "string"
        +                          },
        +                          "load_bearing": {
        +                            "default": false,
        +                            "type": "boolean"
        +                          },
        +                          "max": {
        +                            "anyOf": [
        +                              {
        +                                "type": "number"
        +                              },
        +                              {
        +                                "type": "null"
        +                              }
        +                            ],
        +                            "default": null
        +                          },
        +                          "min": {
        +                            "anyOf": [
        +                              {
        +                                "type": "number"
        +                              },
        +                              {
        +                                "type": "null"
        +                              }
        +                            ],
        +                            "default": null
        +                          },
        +                          "name": {
        +                            "minLength": 1,
        +                            "type": "string"
        +                          },
        +                          "unit": {
        +                            "anyOf": [
        +                              {
        +                                "type": "string"
        +                              },
        +                              {
        +                                "type": "null"
        +                              }
        +                            ],
        +                            "default": null
        +                          }
        +                        },
        +                        "required": [
        +                          "name",
        +                          "label",
        +                          "default",
        +                          "group"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      "type": "array"
        +                    },
        +                    "free_alternative": {
        +                      "anyOf": [
        +                        {
        +                          "type": "string"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "multi_section_tool": {
        +                      "anyOf": [
        +                        {
        +                          "type": "string"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "slug": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "standard_note": {
        +                      "anyOf": [
        +                        {
        +                          "type": "string"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "suggested_params": {
        +                      "items": {
        +                        "additionalProperties": false,
        +                        "description": "A value the description stated with a clear anchor — a caller-confirmed\nsuggestion, NOT an authoritative value and never auto-fed to compute.",
        +                        "properties": {
        +                          "name": {
        +                            "minLength": 1,
        +                            "type": "string"
        +                          },
        +                          "source": {
        +                            "minLength": 1,
        +                            "type": "string"
        +                          },
        +                          "unit": {
        +                            "anyOf": [
        +                              {
        +                                "type": "string"
        +                              },
        +                              {
        +                                "type": "null"
        +                              }
        +                            ],
        +                            "default": null
        +                          },
        +                          "value": {
        +                            "type": "number"
        +                          }
        +                        },
        +                        "required": [
        +                          "name",
        +                          "value",
        +                          "source"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      "type": "array"
        +                    },
        +                    "supports_multi_section": {
        +                      "default": false,
        +                      "type": "boolean"
        +                    },
        +                    "tier": {
        +                      "enum": [
        +                        "free",
        +                        "paid"
        +                      ],
        +                      "type": "string"
        +                    }
        +                  },
        +                  "required": [
        +                    "slug",
        +                    "display_name",
        +                    "tier",
        +                    "category_l1",
        +                    "category_l2",
        +                    "compute_tool"
        +                  ],
        +                  "type": "object"
        +                },
        +                "type": "array"
        +              },
        +              "confidence": {
        +                "enum": [
        +                  "high",
        +                  "medium",
        +                  "low"
        +                ],
        +                "type": "string"
        +              },
        +              "preferred_standard": {
        +                "anyOf": [
        +                  {
        +                    "enum": [
        +                      "CESMM4",
        +                      "NRM2",
        +                      "SMM7",
        +                      "MMHW"
        +                    ],
        +                    "type": "string"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "query": {
        +                "type": "string"
        +              },
        +              "questions": {
        +                "items": {
        +                  "type": "string"
        +                },
        +                "type": "array"
        +              },
        +              "resolution_log": {
        +                "anyOf": [
        +                  {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "One row of the optional resolution log (return_resolution_log).",
        +                      "properties": {
        +                        "matched_terms": {
        +                          "items": {
        +                            "type": "string"
        +                          },
        +                          "type": "array"
        +                        },
        +                        "score": {
        +                          "type": "number"
        +                        },
        +                        "slug": {
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "slug",
        +                        "score"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              }
        +            },
        +            "required": [
        +              "query",
        +              "confidence"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      },
        +      "error": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        +            "properties": {
        +              "code": {
        +                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        +                "enum": [
        +                  "RATE_LIMIT_EXCEEDED",
        +                  "TIER_INSUFFICIENT",
        +                  "INVALID_INPUT",
        +                  "SCHEMA_VERSION_MISMATCH",
        +                  "SCHEMA_INVARIANT_VIOLATION",
        +                  "UPSTREAM_TIMEOUT",
        +                  "BACKEND_FAILURE",
        +                  "IP_BLOCKED",
        +                  "RESOURCE_NOT_FOUND",
        +                  "RENDER_FAILURE",
        +                  "OCR_LOW_CONFIDENCE",
        +                  "MANUAL_REVIEW_REQUIRED",
        +                  "ACCEPTANCE_REQUIRED",
        +                  "INVALID_TOKEN"
        +                ],
        +                "type": "string"
        +              },
        +              "details": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "message": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "recoverable": {
        +                "type": "boolean"
        +              },
        +              "retry_after_seconds": {
        +                "anyOf": [
        +                  {
        +                    "minimum": 0,
        +                    "type": "integer"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              }
        +            },
        +            "required": [
        +              "code",
        +              "message",
        +              "recoverable"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      }
        +    },
        +    "required": [
        +      "_meta"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "_meta": {
        +        "additionalProperties": false,
        +        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        +        "properties": {
        +          "deliverables": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        +                "properties": {
        +                  "docx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "dxf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "expires_at": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  },
        +                  "pdf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "xlsx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "expires_at"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "document_id": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "issued_at": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "output_mode": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Surfaces what a trimmed ``output_mode`` withheld from ``data``.\n\nA trimmed mode (``summary`` / ``material_schedule`` / ``boq`` /\n``boq_with_backup``) withholds\nalready-computed fields to keep the chat payload small. The withheld value\nreads to a client agent as \"capability missing\" (the box-culvert \"geometry\nbuilder isn't firing\" scare) rather than \"pared for size\": ``drawing`` and\n``audit_trail`` appear as ``null``, ``boq_rows`` as an empty list ``[]``\n(its type forbids ``null``) — both indistinguishable from a genuine absent\nresult. This names the withheld fields and the exact mode that brings each\nback, so the value is unambiguous. Absent on the default ``full_json`` mode\n— nothing is withheld, nothing to point at.",
        +                "properties": {
        +                  "mode": {
        +                    "enum": [
        +                      "summary",
        +                      "material_schedule",
        +                      "boq",
        +                      "boq_with_backup"
        +                    ],
        +                    "type": "string"
        +                  },
        +                  "omitted_fields": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "minItems": 1,
        +                    "type": "array"
        +                  },
        +                  "retrieve_with": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "mode",
        +                  "omitted_fields",
        +                  "retrieve_with"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "rate_limit_remaining": {
        +            "anyOf": [
        +              {
        +                "minimum": 0,
        +                "type": "integer"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "request_id": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "schema_version": {
        +            "const": "1.0.0",
        +            "default": "1.0.0",
        +            "type": "string"
        +          },
        +          "scope_boundary": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        +                "properties": {
        +                  "not_in_scope": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "produced": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "recommended_companions": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "type": "string"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "produced",
        +                  "not_in_scope"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tier": {
        +            "enum": [
        +              "free",
        +              "paid"
        +            ],
        +            "type": "string"
        +          },
        +          "tier_upgrade": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        +                "properties": {
        +                  "available_tiers": {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        +                      "properties": {
        +                        "billing": {
        +                          "enum": [
        +                            "one_off",
        +                            "monthly",
        +                            "annual"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "currency": {
        +                          "enum": [
        +                            "GBP",
        +                            "SGD",
        +                            "EUR",
        +                            "USD",
        +                            "CAD",
        +                            "AUD",
        +                            "NZD",
        +                            "MYR"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "display_name": {
        +                          "type": "string"
        +                        },
        +                        "price_local": {
        +                          "type": "number"
        +                        },
        +                        "tier_slug": {
        +                          "enum": [
        +                            "7_day_pass",
        +                            "solo",
        +                            "studio",
        +                            "practice"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "unlock_summary": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "tier_slug",
        +                        "display_name",
        +                        "price_local",
        +                        "currency",
        +                        "billing",
        +                        "unlock_summary"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "current_tier": {
        +                    "const": "free",
        +                    "default": "free",
        +                    "type": "string"
        +                  },
        +                  "pass_credit": {
        +                    "anyOf": [
        +                      {
        +                        "additionalProperties": false,
        +                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        +                        "properties": {
        +                          "amount_local": {
        +                            "type": "number"
        +                          },
        +                          "applies_to": {
        +                            "const": "solo_first_month",
        +                            "default": "solo_first_month",
        +                            "type": "string"
        +                          },
        +                          "currency": {
        +                            "type": "string"
        +                          },
        +                          "redeemable_until": {
        +                            "type": "string"
        +                          }
        +                        },
        +                        "required": [
        +                          "amount_local",
        +                          "currency",
        +                          "redeemable_until"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "pricing_url": {
        +                    "default": "https://civilquants.com/pricing",
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "available_tiers"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tos_url": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "upgrade_hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "warranty_disclaimer": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          }
        +        },
        +        "required": [
        +          "request_id",
        +          "issued_at",
        +          "tier"
        +        ],
        +        "type": "object"
        +      },
        +      "data": {
        +        "default": null,
        +        "title": "Data"
        +      },
        +      "error": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        +            "properties": {
        +              "code": {
        +                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        +                "enum": [
        +                  "RATE_LIMIT_EXCEEDED",
        +                  "TIER_INSUFFICIENT",
        +                  "INVALID_INPUT",
        +                  "SCHEMA_VERSION_MISMATCH",
        +                  "SCHEMA_INVARIANT_VIOLATION",
        +                  "UPSTREAM_TIMEOUT",
        +                  "BACKEND_FAILURE",
        +                  "IP_BLOCKED",
        +                  "RESOURCE_NOT_FOUND",
        +                  "RENDER_FAILURE",
        +                  "OCR_LOW_CONFIDENCE",
        +                  "MANUAL_REVIEW_REQUIRED",
        +                  "ACCEPTANCE_REQUIRED",
        +                  "INVALID_TOKEN"
        +                ],
        +                "type": "string"
        +              },
        +              "details": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "message": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "recoverable": {
        +                "type": "boolean"
        +              },
        +              "retry_after_seconds": {
        +                "anyOf": [
        +                  {
        +                    "minimum": 0,
        +                    "type": "integer"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              }
        +            },
        +            "required": [
        +              "code",
        +              "message",
        +              "recoverable"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      }
        +    },
        +    "required": [
        +      "_meta"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedsave_project1 field changed
      • changedOutput schema / properties / result / anyOf
        Previous value: -[
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "_meta": {
        -        "additionalProperties": false,
        -        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        -        "properties": {
        -          "deliverables": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        -                "properties": {
        -                  "docx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "dxf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "expires_at": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  },
        -                  "pdf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "xlsx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "expires_at"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "document_id": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "issued_at": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "output_mode": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Surfaces what a trimmed ``output_mode`` withheld from ``data``.\n\nA trimmed mode (``summary`` / ``boq`` / ``boq_with_backup``) withholds\nalready-computed fields to keep the chat payload small. The withheld value\nreads to a client agent as \"capability missing\" (the box-culvert \"geometry\nbuilder isn't firing\" scare) rather than \"pared for size\": ``drawing`` and\n``audit_trail`` appear as ``null``, ``boq_rows`` as an empty list ``[]``\n(its type forbids ``null``) — both indistinguishable from a genuine absent\nresult. This names the withheld fields and the exact mode that brings each\nback, so the value is unambiguous. Absent on the default ``full_json`` mode\n— nothing is withheld, nothing to point at.",
        -                "properties": {
        -                  "mode": {
        -                    "enum": [
        -                      "summary",
        -                      "boq",
        -                      "boq_with_backup"
        -                    ],
        -                    "type": "string"
        -                  },
        -                  "omitted_fields": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "minItems": 1,
        -                    "type": "array"
        -                  },
        -                  "retrieve_with": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "mode",
        -                  "omitted_fields",
        -                  "retrieve_with"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "rate_limit_remaining": {
        -            "anyOf": [
        -              {
        -                "minimum": 0,
        -                "type": "integer"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "request_id": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "schema_version": {
        -            "const": "1.0.0",
        -            "default": "1.0.0",
        -            "type": "string"
        -          },
        -          "scope_boundary": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        -                "properties": {
        -                  "not_in_scope": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "produced": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "recommended_companions": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "type": "string"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "produced",
        -                  "not_in_scope"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tier": {
        -            "enum": [
        -              "free",
        -              "paid"
        -            ],
        -            "type": "string"
        -          },
        -          "tier_upgrade": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        -                "properties": {
        -                  "available_tiers": {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        -                      "properties": {
        -                        "billing": {
        -                          "enum": [
        -                            "one_off",
        -                            "monthly",
        -                            "annual"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "currency": {
        -                          "enum": [
        -                            "GBP",
        -                            "SGD",
        -                            "EUR",
        -                            "USD",
        -                            "CAD",
        -                            "AUD",
        -                            "NZD",
        -                            "MYR"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "display_name": {
        -                          "type": "string"
        -                        },
        -                        "price_local": {
        -                          "type": "number"
        -                        },
        -                        "tier_slug": {
        -                          "enum": [
        -                            "7_day_pass",
        -                            "solo",
        -                            "studio",
        -                            "practice"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "unlock_summary": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "tier_slug",
        -                        "display_name",
        -                        "price_local",
        -                        "currency",
        -                        "billing",
        -                        "unlock_summary"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "current_tier": {
        -                    "const": "free",
        -                    "default": "free",
        -                    "type": "string"
        -                  },
        -                  "pass_credit": {
        -                    "anyOf": [
        -                      {
        -                        "additionalProperties": false,
        -                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        -                        "properties": {
        -                          "amount_local": {
        -                            "type": "number"
        -                          },
        -                          "applies_to": {
        -                            "const": "solo_first_month",
        -                            "default": "solo_first_month",
        -                            "type": "string"
        -                          },
        -                          "currency": {
        -                            "type": "string"
        -                          },
        -                          "redeemable_until": {
        -                            "type": "string"
        -                          }
        -                        },
        -                        "required": [
        -                          "amount_local",
        -                          "currency",
        -                          "redeemable_until"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "pricing_url": {
        -                    "default": "https://civilquants.com/pricing",
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "available_tiers"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tos_url": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "upgrade_hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "warranty_disclaimer": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          }
        -        },
        -        "required": [
        -          "request_id",
        -          "issued_at",
        -          "tier"
        -        ],
        -        "type": "object"
        -      },
        -      "data": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "properties": {
        -              "assembly_ids": {
        -                "items": {
        -                  "type": "string"
        -                },
        -                "type": "array"
        -              },
        -              "project_id": {
        -                "type": "string"
        -              }
        -            },
        -            "required": [
        -              "project_id",
        -              "assembly_ids"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      },
        -      "error": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        -            "properties": {
        -              "code": {
        -                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        -                "enum": [
        -                  "RATE_LIMIT_EXCEEDED",
        -                  "TIER_INSUFFICIENT",
        -                  "INVALID_INPUT",
        -                  "SCHEMA_VERSION_MISMATCH",
        -                  "SCHEMA_INVARIANT_VIOLATION",
        -                  "UPSTREAM_TIMEOUT",
        -                  "BACKEND_FAILURE",
        -                  "IP_BLOCKED",
        -                  "RESOURCE_NOT_FOUND",
        -                  "RENDER_FAILURE",
        -                  "OCR_LOW_CONFIDENCE",
        -                  "MANUAL_REVIEW_REQUIRED",
        -                  "ACCEPTANCE_REQUIRED",
        -                  "INVALID_TOKEN"
        -                ],
        -                "type": "string"
        -              },
        -              "details": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "message": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "recoverable": {
        -                "type": "boolean"
        -              },
        -              "retry_after_seconds": {
        -                "anyOf": [
        -                  {
        -                    "minimum": 0,
        -                    "type": "integer"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              }
        -            },
        -            "required": [
        -              "code",
        -              "message",
        -              "recoverable"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      }
        -    },
        -    "required": [
        -      "_meta"
        -    ],
        -    "type": "object"
        -  },
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "_meta": {
        -        "additionalProperties": false,
        -        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        -        "properties": {
        -          "deliverables": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        -                "properties": {
        -                  "docx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "dxf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "expires_at": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  },
        -                  "pdf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "xlsx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "expires_at"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "document_id": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "issued_at": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "output_mode": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Surfaces what a trimmed ``output_mode`` withheld from ``data``.\n\nA trimmed mode (``summary`` / ``boq`` / ``boq_with_backup``) withholds\nalready-computed fields to keep the chat payload small. The withheld value\nreads to a client agent as \"capability missing\" (the box-culvert \"geometry\nbuilder isn't firing\" scare) rather than \"pared for size\": ``drawing`` and\n``audit_trail`` appear as ``null``, ``boq_rows`` as an empty list ``[]``\n(its type forbids ``null``) — both indistinguishable from a genuine absent\nresult. This names the withheld fields and the exact mode that brings each\nback, so the value is unambiguous. Absent on the default ``full_json`` mode\n— nothing is withheld, nothing to point at.",
        -                "properties": {
        -                  "mode": {
        -                    "enum": [
        -                      "summary",
        -                      "boq",
        -                      "boq_with_backup"
        -                    ],
        -                    "type": "string"
        -                  },
        -                  "omitted_fields": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "minItems": 1,
        -                    "type": "array"
        -                  },
        -                  "retrieve_with": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "mode",
        -                  "omitted_fields",
        -                  "retrieve_with"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "rate_limit_remaining": {
        -            "anyOf": [
        -              {
        -                "minimum": 0,
        -                "type": "integer"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "request_id": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "schema_version": {
        -            "const": "1.0.0",
        -            "default": "1.0.0",
        -            "type": "string"
        -          },
        -          "scope_boundary": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        -                "properties": {
        -                  "not_in_scope": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "produced": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "recommended_companions": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "type": "string"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "produced",
        -                  "not_in_scope"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tier": {
        -            "enum": [
        -              "free",
        -              "paid"
        -            ],
        -            "type": "string"
        -          },
        -          "tier_upgrade": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        -                "properties": {
        -                  "available_tiers": {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        -                      "properties": {
        -                        "billing": {
        -                          "enum": [
        -                            "one_off",
        -                            "monthly",
        -                            "annual"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "currency": {
        -                          "enum": [
        -                            "GBP",
        -                            "SGD",
        -                            "EUR",
        -                            "USD",
        -                            "CAD",
        -                            "AUD",
        -                            "NZD",
        -                            "MYR"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "display_name": {
        -                          "type": "string"
        -                        },
        -                        "price_local": {
        -                          "type": "number"
        -                        },
        -                        "tier_slug": {
        -                          "enum": [
        -                            "7_day_pass",
        -                            "solo",
        -                            "studio",
        -                            "practice"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "unlock_summary": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "tier_slug",
        -                        "display_name",
        -                        "price_local",
        -                        "currency",
        -                        "billing",
        -                        "unlock_summary"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "current_tier": {
        -                    "const": "free",
        -                    "default": "free",
        -                    "type": "string"
        -                  },
        -                  "pass_credit": {
        -                    "anyOf": [
        -                      {
        -                        "additionalProperties": false,
        -                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        -                        "properties": {
        -                          "amount_local": {
        -                            "type": "number"
        -                          },
        -                          "applies_to": {
        -                            "const": "solo_first_month",
        -                            "default": "solo_first_month",
        -                            "type": "string"
        -                          },
        -                          "currency": {
        -                            "type": "string"
        -                          },
        -                          "redeemable_until": {
        -                            "type": "string"
        -                          }
        -                        },
        -                        "required": [
        -                          "amount_local",
        -                          "currency",
        -                          "redeemable_until"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "pricing_url": {
        -                    "default": "https://civilquants.com/pricing",
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "available_tiers"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tos_url": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "upgrade_hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "warranty_disclaimer": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          }
        -        },
        -        "required": [
        -          "request_id",
        -          "issued_at",
        -          "tier"
        -        ],
        -        "type": "object"
        -      },
        -      "data": {
        -        "default": null,
        -        "title": "Data"
        -      },
        -      "error": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        -            "properties": {
        -              "code": {
        -                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        -                "enum": [
        -                  "RATE_LIMIT_EXCEEDED",
        -                  "TIER_INSUFFICIENT",
        -                  "INVALID_INPUT",
        -                  "SCHEMA_VERSION_MISMATCH",
        -                  "SCHEMA_INVARIANT_VIOLATION",
        -                  "UPSTREAM_TIMEOUT",
        -                  "BACKEND_FAILURE",
        -                  "IP_BLOCKED",
        -                  "RESOURCE_NOT_FOUND",
        -                  "RENDER_FAILURE",
        -                  "OCR_LOW_CONFIDENCE",
        -                  "MANUAL_REVIEW_REQUIRED",
        -                  "ACCEPTANCE_REQUIRED",
        -                  "INVALID_TOKEN"
        -                ],
        -                "type": "string"
        -              },
        -              "details": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "message": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "recoverable": {
        -                "type": "boolean"
        -              },
        -              "retry_after_seconds": {
        -                "anyOf": [
        -                  {
        -                    "minimum": 0,
        -                    "type": "integer"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              }
        -            },
        -            "required": [
        -              "code",
        -              "message",
        -              "recoverable"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      }
        -    },
        -    "required": [
        -      "_meta"
        -    ],
        -    "type": "object"
        -  }
        -]New value: +[
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "_meta": {
        +        "additionalProperties": false,
        +        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        +        "properties": {
        +          "deliverables": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        +                "properties": {
        +                  "docx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "dxf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "expires_at": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  },
        +                  "pdf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "xlsx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "expires_at"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "document_id": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "issued_at": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "output_mode": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Surfaces what a trimmed ``output_mode`` withheld from ``data``.\n\nA trimmed mode (``summary`` / ``material_schedule`` / ``boq`` /\n``boq_with_backup``) withholds\nalready-computed fields to keep the chat payload small. The withheld value\nreads to a client agent as \"capability missing\" (the box-culvert \"geometry\nbuilder isn't firing\" scare) rather than \"pared for size\": ``drawing`` and\n``audit_trail`` appear as ``null``, ``boq_rows`` as an empty list ``[]``\n(its type forbids ``null``) — both indistinguishable from a genuine absent\nresult. This names the withheld fields and the exact mode that brings each\nback, so the value is unambiguous. Absent on the default ``full_json`` mode\n— nothing is withheld, nothing to point at.",
        +                "properties": {
        +                  "mode": {
        +                    "enum": [
        +                      "summary",
        +                      "material_schedule",
        +                      "boq",
        +                      "boq_with_backup"
        +                    ],
        +                    "type": "string"
        +                  },
        +                  "omitted_fields": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "minItems": 1,
        +                    "type": "array"
        +                  },
        +                  "retrieve_with": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "mode",
        +                  "omitted_fields",
        +                  "retrieve_with"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "rate_limit_remaining": {
        +            "anyOf": [
        +              {
        +                "minimum": 0,
        +                "type": "integer"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "request_id": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "schema_version": {
        +            "const": "1.0.0",
        +            "default": "1.0.0",
        +            "type": "string"
        +          },
        +          "scope_boundary": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        +                "properties": {
        +                  "not_in_scope": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "produced": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "recommended_companions": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "type": "string"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "produced",
        +                  "not_in_scope"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tier": {
        +            "enum": [
        +              "free",
        +              "paid"
        +            ],
        +            "type": "string"
        +          },
        +          "tier_upgrade": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        +                "properties": {
        +                  "available_tiers": {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        +                      "properties": {
        +                        "billing": {
        +                          "enum": [
        +                            "one_off",
        +                            "monthly",
        +                            "annual"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "currency": {
        +                          "enum": [
        +                            "GBP",
        +                            "SGD",
        +                            "EUR",
        +                            "USD",
        +                            "CAD",
        +                            "AUD",
        +                            "NZD",
        +                            "MYR"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "display_name": {
        +                          "type": "string"
        +                        },
        +                        "price_local": {
        +                          "type": "number"
        +                        },
        +                        "tier_slug": {
        +                          "enum": [
        +                            "7_day_pass",
        +                            "solo",
        +                            "studio",
        +                            "practice"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "unlock_summary": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "tier_slug",
        +                        "display_name",
        +                        "price_local",
        +                        "currency",
        +                        "billing",
        +                        "unlock_summary"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "current_tier": {
        +                    "const": "free",
        +                    "default": "free",
        +                    "type": "string"
        +                  },
        +                  "pass_credit": {
        +                    "anyOf": [
        +                      {
        +                        "additionalProperties": false,
        +                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        +                        "properties": {
        +                          "amount_local": {
        +                            "type": "number"
        +                          },
        +                          "applies_to": {
        +                            "const": "solo_first_month",
        +                            "default": "solo_first_month",
        +                            "type": "string"
        +                          },
        +                          "currency": {
        +                            "type": "string"
        +                          },
        +                          "redeemable_until": {
        +                            "type": "string"
        +                          }
        +                        },
        +                        "required": [
        +                          "amount_local",
        +                          "currency",
        +                          "redeemable_until"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "pricing_url": {
        +                    "default": "https://civilquants.com/pricing",
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "available_tiers"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tos_url": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "upgrade_hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "warranty_disclaimer": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          }
        +        },
        +        "required": [
        +          "request_id",
        +          "issued_at",
        +          "tier"
        +        ],
        +        "type": "object"
        +      },
        +      "data": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "properties": {
        +              "assembly_ids": {
        +                "items": {
        +                  "type": "string"
        +                },
        +                "type": "array"
        +              },
        +              "project_id": {
        +                "type": "string"
        +              }
        +            },
        +            "required": [
        +              "project_id",
        +              "assembly_ids"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      },
        +      "error": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        +            "properties": {
        +              "code": {
        +                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        +                "enum": [
        +                  "RATE_LIMIT_EXCEEDED",
        +                  "TIER_INSUFFICIENT",
        +                  "INVALID_INPUT",
        +                  "SCHEMA_VERSION_MISMATCH",
        +                  "SCHEMA_INVARIANT_VIOLATION",
        +                  "UPSTREAM_TIMEOUT",
        +                  "BACKEND_FAILURE",
        +                  "IP_BLOCKED",
        +                  "RESOURCE_NOT_FOUND",
        +                  "RENDER_FAILURE",
        +                  "OCR_LOW_CONFIDENCE",
        +                  "MANUAL_REVIEW_REQUIRED",
        +                  "ACCEPTANCE_REQUIRED",
        +                  "INVALID_TOKEN"
        +                ],
        +                "type": "string"
        +              },
        +              "details": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "message": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "recoverable": {
        +                "type": "boolean"
        +              },
        +              "retry_after_seconds": {
        +                "anyOf": [
        +                  {
        +                    "minimum": 0,
        +                    "type": "integer"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              }
        +            },
        +            "required": [
        +              "code",
        +              "message",
        +              "recoverable"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      }
        +    },
        +    "required": [
        +      "_meta"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "_meta": {
        +        "additionalProperties": false,
        +        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        +        "properties": {
        +          "deliverables": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        +                "properties": {
        +                  "docx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "dxf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "expires_at": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  },
        +                  "pdf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "xlsx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "expires_at"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "document_id": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "issued_at": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "output_mode": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Surfaces what a trimmed ``output_mode`` withheld from ``data``.\n\nA trimmed mode (``summary`` / ``material_schedule`` / ``boq`` /\n``boq_with_backup``) withholds\nalready-computed fields to keep the chat payload small. The withheld value\nreads to a client agent as \"capability missing\" (the box-culvert \"geometry\nbuilder isn't firing\" scare) rather than \"pared for size\": ``drawing`` and\n``audit_trail`` appear as ``null``, ``boq_rows`` as an empty list ``[]``\n(its type forbids ``null``) — both indistinguishable from a genuine absent\nresult. This names the withheld fields and the exact mode that brings each\nback, so the value is unambiguous. Absent on the default ``full_json`` mode\n— nothing is withheld, nothing to point at.",
        +                "properties": {
        +                  "mode": {
        +                    "enum": [
        +                      "summary",
        +                      "material_schedule",
        +                      "boq",
        +                      "boq_with_backup"
        +                    ],
        +                    "type": "string"
        +                  },
        +                  "omitted_fields": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "minItems": 1,
        +                    "type": "array"
        +                  },
        +                  "retrieve_with": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "mode",
        +                  "omitted_fields",
        +                  "retrieve_with"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "rate_limit_remaining": {
        +            "anyOf": [
        +              {
        +                "minimum": 0,
        +                "type": "integer"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "request_id": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "schema_version": {
        +            "const": "1.0.0",
        +            "default": "1.0.0",
        +            "type": "string"
        +          },
        +          "scope_boundary": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        +                "properties": {
        +                  "not_in_scope": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "produced": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "recommended_companions": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "type": "string"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "produced",
        +                  "not_in_scope"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tier": {
        +            "enum": [
        +              "free",
        +              "paid"
        +            ],
        +            "type": "string"
        +          },
        +          "tier_upgrade": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        +                "properties": {
        +                  "available_tiers": {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        +                      "properties": {
        +                        "billing": {
        +                          "enum": [
        +                            "one_off",
        +                            "monthly",
        +                            "annual"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "currency": {
        +                          "enum": [
        +                            "GBP",
        +                            "SGD",
        +                            "EUR",
        +                            "USD",
        +                            "CAD",
        +                            "AUD",
        +                            "NZD",
        +                            "MYR"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "display_name": {
        +                          "type": "string"
        +                        },
        +                        "price_local": {
        +                          "type": "number"
        +                        },
        +                        "tier_slug": {
        +                          "enum": [
        +                            "7_day_pass",
        +                            "solo",
        +                            "studio",
        +                            "practice"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "unlock_summary": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "tier_slug",
        +                        "display_name",
        +                        "price_local",
        +                        "currency",
        +                        "billing",
        +                        "unlock_summary"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "current_tier": {
        +                    "const": "free",
        +                    "default": "free",
        +                    "type": "string"
        +                  },
        +                  "pass_credit": {
        +                    "anyOf": [
        +                      {
        +                        "additionalProperties": false,
        +                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        +                        "properties": {
        +                          "amount_local": {
        +                            "type": "number"
        +                          },
        +                          "applies_to": {
        +                            "const": "solo_first_month",
        +                            "default": "solo_first_month",
        +                            "type": "string"
        +                          },
        +                          "currency": {
        +                            "type": "string"
        +                          },
        +                          "redeemable_until": {
        +                            "type": "string"
        +                          }
        +                        },
        +                        "required": [
        +                          "amount_local",
        +                          "currency",
        +                          "redeemable_until"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "pricing_url": {
        +                    "default": "https://civilquants.com/pricing",
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "available_tiers"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tos_url": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "upgrade_hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "warranty_disclaimer": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          }
        +        },
        +        "required": [
        +          "request_id",
        +          "issued_at",
        +          "tier"
        +        ],
        +        "type": "object"
        +      },
        +      "data": {
        +        "default": null,
        +        "title": "Data"
        +      },
        +      "error": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        +            "properties": {
        +              "code": {
        +                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        +                "enum": [
        +                  "RATE_LIMIT_EXCEEDED",
        +                  "TIER_INSUFFICIENT",
        +                  "INVALID_INPUT",
        +                  "SCHEMA_VERSION_MISMATCH",
        +                  "SCHEMA_INVARIANT_VIOLATION",
        +                  "UPSTREAM_TIMEOUT",
        +                  "BACKEND_FAILURE",
        +                  "IP_BLOCKED",
        +                  "RESOURCE_NOT_FOUND",
        +                  "RENDER_FAILURE",
        +                  "OCR_LOW_CONFIDENCE",
        +                  "MANUAL_REVIEW_REQUIRED",
        +                  "ACCEPTANCE_REQUIRED",
        +                  "INVALID_TOKEN"
        +                ],
        +                "type": "string"
        +              },
        +              "details": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "message": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "recoverable": {
        +                "type": "boolean"
        +              },
        +              "retry_after_seconds": {
        +                "anyOf": [
        +                  {
        +                    "minimum": 0,
        +                    "type": "integer"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              }
        +            },
        +            "required": [
        +              "code",
        +              "message",
        +              "recoverable"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      }
        +    },
        +    "required": [
        +      "_meta"
        +    ],
        +    "type": "object"
        +  }
        +]
  2. 2 tool updates
    • Changedcompute_box_culvert2 fields changed
      • addedInput schema / properties / params / properties / downstream_headwall_bedding_grade
        Added value: +{
        +  "default": "C8/10",
        +  "type": "string"
        +}
      • addedInput schema / properties / params / properties / upstream_headwall_bedding_grade
        Added value: +{
        +  "default": "C8/10",
        +  "type": "string"
        +}
    • Changedcompute_headwall_attenuation_outlet1 field changed
      • addedInput schema / properties / params / properties / concrete_bedding_grade
        Added value: +{
        +  "default": "C8/10",
        +  "type": "string"
        +}
  3. 1 tool update
    • Addedlist_projects
  4. 1 tool update
    • Changedcompute_combined_services_trench4 fields changed
      • addedInput schema / properties / params / properties / service_spacing_mm
        Added value: +{
        +  "default": 100,
        +  "type": "integer"
        +}
      • addedInput schema / properties / params / properties / trench_width_m / anyOf
        Added value: +[
        +  {
        +    "type": "number"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • changedInput schema / properties / params / properties / trench_width_m / default
        Previous value: -0.9New value: +null
      • removedInput schema / properties / params / properties / trench_width_m / type
        Removed value: -"number"
  5. 52 tool updates
    • Changedcompute_anchored_wall1 field changed
      • changedOutput schema / properties / result / anyOf
        Previous value: -[
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "_meta": {
        -        "additionalProperties": false,
        -        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        -        "properties": {
        -          "deliverables": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        -                "properties": {
        -                  "docx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "dxf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "expires_at": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  },
        -                  "pdf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "xlsx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "expires_at"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "document_id": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "issued_at": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "rate_limit_remaining": {
        -            "anyOf": [
        -              {
        -                "minimum": 0,
        -                "type": "integer"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "request_id": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "schema_version": {
        -            "const": "1.0.0",
        -            "default": "1.0.0",
        -            "type": "string"
        -          },
        -          "scope_boundary": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        -                "properties": {
        -                  "not_in_scope": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "produced": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "recommended_companions": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "type": "string"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "produced",
        -                  "not_in_scope"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tier": {
        -            "enum": [
        -              "free",
        -              "paid"
        -            ],
        -            "type": "string"
        -          },
        -          "tier_upgrade": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        -                "properties": {
        -                  "available_tiers": {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        -                      "properties": {
        -                        "billing": {
        -                          "enum": [
        -                            "one_off",
        -                            "monthly",
        -                            "annual"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "currency": {
        -                          "enum": [
        -                            "GBP",
        -                            "SGD",
        -                            "EUR",
        -                            "USD",
        -                            "CAD",
        -                            "AUD",
        -                            "NZD",
        -                            "MYR"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "display_name": {
        -                          "type": "string"
        -                        },
        -                        "price_local": {
        -                          "type": "number"
        -                        },
        -                        "tier_slug": {
        -                          "enum": [
        -                            "7_day_pass",
        -                            "solo",
        -                            "studio",
        -                            "practice"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "unlock_summary": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "tier_slug",
        -                        "display_name",
        -                        "price_local",
        -                        "currency",
        -                        "billing",
        -                        "unlock_summary"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "current_tier": {
        -                    "const": "free",
        -                    "default": "free",
        -                    "type": "string"
        -                  },
        -                  "pass_credit": {
        -                    "anyOf": [
        -                      {
        -                        "additionalProperties": false,
        -                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        -                        "properties": {
        -                          "amount_local": {
        -                            "type": "number"
        -                          },
        -                          "applies_to": {
        -                            "const": "solo_first_month",
        -                            "default": "solo_first_month",
        -                            "type": "string"
        -                          },
        -                          "currency": {
        -                            "type": "string"
        -                          },
        -                          "redeemable_until": {
        -                            "type": "string"
        -                          }
        -                        },
        -                        "required": [
        -                          "amount_local",
        -                          "currency",
        -                          "redeemable_until"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "pricing_url": {
        -                    "default": "https://civilquants.com/pricing",
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "available_tiers"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tos_url": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "upgrade_hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "warranty_disclaimer": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          }
        -        },
        -        "required": [
        -          "request_id",
        -          "issued_at",
        -          "tier"
        -        ],
        -        "type": "object"
        -      },
        -      "data": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Schema § 1.1 — the typed payload returned inside `MCPResponse[ComputeResult]`.\n\nFree-tier responses omit `drawings` (the downloadable CAD artefact\npointers — the paid differentiator); the bridge enforces this. The\n`audit_trail` and the inline `drawing` preview are present on BOTH tiers\n(V1 ALIGN / 60th-fire D + C). `text_summary` is bounded to 2000 chars —\nkeeps the LLM-facing summary token-cheap and forces longer narrative into\nBoQ row descriptions where it belongs. `warnings` is the non-fatal\ngeometry advisory list (both tiers).",
        -            "properties": {
        -              "assembly_slug": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "audit_trail": {
        -                "anyOf": [
        -                  {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.7 — paid-tier audit-trail entry.\n\nOne entry per BoQ row; `boq_row_index` ties to the row position in\n`ComputeResult.boq_rows`. `derivation` is the human-readable formula\nwalk-through; `formula` is the optional formal expression.",
        -                      "properties": {
        -                        "boq_row_index": {
        -                          "minimum": 0,
        -                          "type": "integer"
        -                        },
        -                        "derivation": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "formula": {
        -                          "anyOf": [
        -                            {
        -                              "type": "string"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ],
        -                          "default": null
        -                        },
        -                        "id": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "parameters_referenced": {
        -                          "items": {
        -                            "type": "string"
        -                          },
        -                          "type": "array"
        -                        }
        -                      },
        -                      "required": [
        -                        "id",
        -                        "boq_row_index",
        -                        "derivation"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "boq_rows": {
        -                "items": {
        -                  "additionalProperties": false,
        -                  "description": "Schema § 1.3 — a single bill row in the requested standard's format.\n\n`description` is the non-verbatim functional description per spec § 13.9 /\n§ 15 invariant — NEVER reproduces a standard's verbatim clause text.\n`rate` / `amount` ship null because rates are commodity data the customer\nowns; the engine's job is the measurement, not the pricing.",
        -                  "properties": {
        -                    "amount": {
        -                      "anyOf": [
        -                        {
        -                          "type": "number"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "attribution": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "audit_id": {
        -                      "anyOf": [
        -                        {
        -                          "type": "string"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "description": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "quantity": {
        -                      "minimum": 0,
        -                      "type": "number"
        -                    },
        -                    "rate": {
        -                      "anyOf": [
        -                        {
        -                          "type": "number"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "unit": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "work_section": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    }
        -                  },
        -                  "required": [
        -                    "work_section",
        -                    "description",
        -                    "quantity",
        -                    "unit",
        -                    "attribution"
        -                  ],
        -                  "type": "object"
        -                },
        -                "type": "array"
        -              },
        -              "drawing": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": false,
        -                    "description": "Schema § 1.6a — inline server-rendered SVG preview of the geometry.\n\nThe MCP mirror of the web ``/compute`` response's ``drawing`` field\n(``api.schemas.compute.DrawingRef``): the same on-screen dimensioned\ndrawing both tiers see in the workspace, surfaced on the MCP compute\nresponse so a chat client can render it inline (60th-fire item C). This\nis the on-screen preview — present on BOTH tiers per the free/paid\nboundary; the downloadable CAD artefacts (DXF / dimensioned PDF) remain\nthe paid differentiator via the export tools.\n\nDefined here rather than importing ``DrawingRef`` because the web\n``schemas`` package imports back into this module (``schemas.render``),\nso reusing it would create an import cycle — the MCP wire contract keeps\nits own copy, the same pattern as ``BoQRow`` / ``DrawingReference``.",
        -                    "properties": {
        -                      "entity_count": {
        -                        "minimum": 0,
        -                        "type": "integer"
        -                      },
        -                      "svg_b64": {
        -                        "minLength": 1,
        -                        "type": "string"
        -                      },
        -                      "unit_of_drawing": {
        -                        "const": "m",
        -                        "default": "m",
        -                        "type": "string"
        -                      },
        -                      "viewbox_height": {
        -                        "exclusiveMinimum": 0,
        -                        "type": "number"
        -                      },
        -                      "viewbox_width": {
        -                        "exclusiveMinimum": 0,
        -                        "type": "number"
        -                      },
        -                      "viewbox_x": {
        -                        "type": "number"
        -                      },
        -                      "viewbox_y": {
        -                        "type": "number"
        -                      }
        -                    },
        -                    "required": [
        -                      "svg_b64",
        -                      "viewbox_x",
        -                      "viewbox_y",
        -                      "viewbox_width",
        -                      "viewbox_height",
        -                      "entity_count"
        -                    ],
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "drawings": {
        -                "anyOf": [
        -                  {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.6 — paid-tier drawing artefact pointer.\n\n`url` is an R2-signed URL; expiry is carried in `_meta.deliverables.expires_at`\non the envelope (not duplicated here). `layers` is DXF-only; PDF/SVG\ncallers omit it.",
        -                      "properties": {
        -                        "drawing_type": {
        -                          "enum": [
        -                            "section",
        -                            "plan",
        -                            "elevation",
        -                            "isometric",
        -                            "detail"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "format": {
        -                          "enum": [
        -                            "DXF",
        -                            "PDF",
        -                            "SVG"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "layers": {
        -                          "anyOf": [
        -                            {
        -                              "items": {
        -                                "type": "string"
        -                              },
        -                              "type": "array"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ],
        -                          "default": null
        -                        },
        -                        "scale": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "sheet_size": {
        -                          "enum": [
        -                            "A1",
        -                            "A2",
        -                            "A3",
        -                            "A4"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "url": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "drawing_type",
        -                        "format",
        -                        "url",
        -                        "sheet_size",
        -                        "scale"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "parameters_used": {
        -                "additionalProperties": false,
        -                "description": "Schema § 1.2 — the parameter snapshot the engine actually used.\n\nSplits user-supplied values from engine defaults so customers can see\nwhich numbers came from them and which the engine filled in. Every\ndefaulted parameter SHOULD have a corresponding entry in `assumptions`\n— the bridge layer enforces this when wrapping engine output.",
        -                "properties": {
        -                  "assumptions": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "engine_defaults": {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  "user_supplied": {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  }
        -                },
        -                "type": "object"
        -              },
        -              "standard": {
        -                "enum": [
        -                  "CESMM4",
        -                  "NRM2",
        -                  "SMM7",
        -                  "MMHW"
        -                ],
        -                "type": "string"
        -              },
        -              "text_summary": {
        -                "maxLength": 2000,
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "totals_summary": {
        -                "additionalProperties": false,
        -                "description": "Schema § 1.4 — totals_summary as a typed wrapper around the free-form dict.\n\nWire shape is a flat object (`{\"concrete_m3\": {...}, \"rebar_t\": {...}}`).\nWe model it as `RootModel`-equivalent via `model_config(extra=\"allow\")`\n+ a single `__root__`-style `entries` dict. Pydantic v2 recommends\n`RootModel` for free-form roots; using a wrapper class keeps the import\nsurface uniform with the rest of this module.",
        -                "properties": {
        -                  "entries": {
        -                    "additionalProperties": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.4 — single material/work-class total entry.",
        -                      "properties": {
        -                        "quantity": {
        -                          "minimum": 0,
        -                          "type": "number"
        -                        },
        -                        "unit": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "quantity",
        -                        "unit"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "object"
        -                  }
        -                },
        -                "type": "object"
        -              },
        -              "warnings": {
        -                "items": {
        -                  "additionalProperties": false,
        -                  "description": "Schema § 1.8 — a non-fatal geometry advisory (56th-fire T2).\n\nThe wire projection of the engine's `core.GeometryWarning`. Advisory only:\na warning NEVER changes a measured quantity — it flags geometry that is\nvalid but likely a mistake (e.g. a stale dependent-height default). Present\non BOTH tiers — a correctness/safety signal, not a paid feature.",
        -                  "properties": {
        -                    "affected_params": {
        -                      "items": {
        -                        "type": "string"
        -                      },
        -                      "type": "array"
        -                    },
        -                    "code": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "detail": {
        -                      "additionalProperties": {
        -                        "type": "number"
        -                      },
        -                      "type": "object"
        -                    },
        -                    "message": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "severity": {
        -                      "enum": [
        -                        "info",
        -                        "advisory",
        -                        "caution"
        -                      ],
        -                      "type": "string"
        -                    }
        -                  },
        -                  "required": [
        -                    "code",
        -                    "severity",
        -                    "message"
        -                  ],
        -                  "type": "object"
        -                },
        -                "type": "array"
        -              }
        -            },
        -            "required": [
        -              "assembly_slug",
        -              "standard",
        -              "parameters_used",
        -              "boq_rows",
        -              "totals_summary",
        -              "text_summary"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      },
        -      "error": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        -            "properties": {
        -              "code": {
        -                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        -                "enum": [
        -                  "RATE_LIMIT_EXCEEDED",
        -                  "TIER_INSUFFICIENT",
        -                  "INVALID_INPUT",
        -                  "SCHEMA_VERSION_MISMATCH",
        -                  "SCHEMA_INVARIANT_VIOLATION",
        -                  "UPSTREAM_TIMEOUT",
        -                  "BACKEND_FAILURE",
        -                  "IP_BLOCKED",
        -                  "RESOURCE_NOT_FOUND",
        -                  "RENDER_FAILURE",
        -                  "OCR_LOW_CONFIDENCE",
        -                  "MANUAL_REVIEW_REQUIRED",
        -                  "ACCEPTANCE_REQUIRED",
        -                  "INVALID_TOKEN"
        -                ],
        -                "type": "string"
        -              },
        -              "details": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "message": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "recoverable": {
        -                "type": "boolean"
        -              },
        -              "retry_after_seconds": {
        -                "anyOf": [
        -                  {
        -                    "minimum": 0,
        -                    "type": "integer"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              }
        -            },
        -            "required": [
        -              "code",
        -              "message",
        -              "recoverable"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      }
        -    },
        -    "required": [
        -      "_meta"
        -    ],
        -    "type": "object"
        -  },
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "_meta": {
        -        "additionalProperties": false,
        -        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        -        "properties": {
        -          "deliverables": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        -                "properties": {
        -                  "docx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "dxf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "expires_at": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  },
        -                  "pdf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "xlsx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "expires_at"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "document_id": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "issued_at": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "rate_limit_remaining": {
        -            "anyOf": [
        -              {
        -                "minimum": 0,
        -                "type": "integer"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "request_id": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "schema_version": {
        -            "const": "1.0.0",
        -            "default": "1.0.0",
        -            "type": "string"
        -          },
        -          "scope_boundary": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        -                "properties": {
        -                  "not_in_scope": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "produced": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "recommended_companions": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "type": "string"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "produced",
        -                  "not_in_scope"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tier": {
        -            "enum": [
        -              "free",
        -              "paid"
        -            ],
        -            "type": "string"
        -          },
        -          "tier_upgrade": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        -                "properties": {
        -                  "available_tiers": {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        -                      "properties": {
        -                        "billing": {
        -                          "enum": [
        -                            "one_off",
        -                            "monthly",
        -                            "annual"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "currency": {
        -                          "enum": [
        -                            "GBP",
        -                            "SGD",
        -                            "EUR",
        -                            "USD",
        -                            "CAD",
        -                            "AUD",
        -                            "NZD",
        -                            "MYR"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "display_name": {
        -                          "type": "string"
        -                        },
        -                        "price_local": {
        -                          "type": "number"
        -                        },
        -                        "tier_slug": {
        -                          "enum": [
        -                            "7_day_pass",
        -                            "solo",
        -                            "studio",
        -                            "practice"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "unlock_summary": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "tier_slug",
        -                        "display_name",
        -                        "price_local",
        -                        "currency",
        -                        "billing",
        -                        "unlock_summary"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "current_tier": {
        -                    "const": "free",
        -                    "default": "free",
        -                    "type": "string"
        -                  },
        -                  "pass_credit": {
        -                    "anyOf": [
        -                      {
        -                        "additionalProperties": false,
        -                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        -                        "properties": {
        -                          "amount_local": {
        -                            "type": "number"
        -                          },
        -                          "applies_to": {
        -                            "const": "solo_first_month",
        -                            "default": "solo_first_month",
        -                            "type": "string"
        -                          },
        -                          "currency": {
        -                            "type": "string"
        -                          },
        -                          "redeemable_until": {
        -                            "type": "string"
        -                          }
        -                        },
        -                        "required": [
        -                          "amount_local",
        -                          "currency",
        -                          "redeemable_until"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "pricing_url": {
        -                    "default": "https://civilquants.com/pricing",
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "available_tiers"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tos_url": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "upgrade_hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "warranty_disclaimer": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          }
        -        },
        -        "required": [
        -          "request_id",
        -          "issued_at",
        -          "tier"
        -        ],
        -        "type": "object"
        -      },
        -      "data": {
        -        "default": null,
        -        "title": "Data"
        -      },
        -      "error": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        -            "properties": {
        -              "code": {
        -                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        -                "enum": [
        -                  "RATE_LIMIT_EXCEEDED",
        -                  "TIER_INSUFFICIENT",
        -                  "INVALID_INPUT",
        -                  "SCHEMA_VERSION_MISMATCH",
        -                  "SCHEMA_INVARIANT_VIOLATION",
        -                  "UPSTREAM_TIMEOUT",
        -                  "BACKEND_FAILURE",
        -                  "IP_BLOCKED",
        -                  "RESOURCE_NOT_FOUND",
        -                  "RENDER_FAILURE",
        -                  "OCR_LOW_CONFIDENCE",
        -                  "MANUAL_REVIEW_REQUIRED",
        -                  "ACCEPTANCE_REQUIRED",
        -                  "INVALID_TOKEN"
        -                ],
        -                "type": "string"
        -              },
        -              "details": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "message": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "recoverable": {
        -                "type": "boolean"
        -              },
        -              "retry_after_seconds": {
        -                "anyOf": [
        -                  {
        -                    "minimum": 0,
        -                    "type": "integer"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              }
        -            },
        -            "required": [
        -              "code",
        -              "message",
        -              "recoverable"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      }
        -    },
        -    "required": [
        -      "_meta"
        -    ],
        -    "type": "object"
        -  }
        -]New value: +[
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "_meta": {
        +        "additionalProperties": false,
        +        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        +        "properties": {
        +          "deliverables": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        +                "properties": {
        +                  "docx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "dxf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "expires_at": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  },
        +                  "pdf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "xlsx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "expires_at"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "document_id": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "issued_at": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "output_mode": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Surfaces what a trimmed ``output_mode`` withheld from ``data``.\n\nA trimmed mode (``summary`` / ``boq`` / ``boq_with_backup``) withholds\nalready-computed fields to keep the chat payload small. The withheld value\nreads to a client agent as \"capability missing\" (the box-culvert \"geometry\nbuilder isn't firing\" scare) rather than \"pared for size\": ``drawing`` and\n``audit_trail`` appear as ``null``, ``boq_rows`` as an empty list ``[]``\n(its type forbids ``null``) — both indistinguishable from a genuine absent\nresult. This names the withheld fields and the exact mode that brings each\nback, so the value is unambiguous. Absent on the default ``full_json`` mode\n— nothing is withheld, nothing to point at.",
        +                "properties": {
        +                  "mode": {
        +                    "enum": [
        +                      "summary",
        +                      "boq",
        +                      "boq_with_backup"
        +                    ],
        +                    "type": "string"
        +                  },
        +                  "omitted_fields": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "minItems": 1,
        +                    "type": "array"
        +                  },
        +                  "retrieve_with": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "mode",
        +                  "omitted_fields",
        +                  "retrieve_with"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "rate_limit_remaining": {
        +            "anyOf": [
        +              {
        +                "minimum": 0,
        +                "type": "integer"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "request_id": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "schema_version": {
        +            "const": "1.0.0",
        +            "default": "1.0.0",
        +            "type": "string"
        +          },
        +          "scope_boundary": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        +                "properties": {
        +                  "not_in_scope": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "produced": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "recommended_companions": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "type": "string"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "produced",
        +                  "not_in_scope"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tier": {
        +            "enum": [
        +              "free",
        +              "paid"
        +            ],
        +            "type": "string"
        +          },
        +          "tier_upgrade": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        +                "properties": {
        +                  "available_tiers": {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        +                      "properties": {
        +                        "billing": {
        +                          "enum": [
        +                            "one_off",
        +                            "monthly",
        +                            "annual"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "currency": {
        +                          "enum": [
        +                            "GBP",
        +                            "SGD",
        +                            "EUR",
        +                            "USD",
        +                            "CAD",
        +                            "AUD",
        +                            "NZD",
        +                            "MYR"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "display_name": {
        +                          "type": "string"
        +                        },
        +                        "price_local": {
        +                          "type": "number"
        +                        },
        +                        "tier_slug": {
        +                          "enum": [
        +                            "7_day_pass",
        +                            "solo",
        +                            "studio",
        +                            "practice"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "unlock_summary": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "tier_slug",
        +                        "display_name",
        +                        "price_local",
        +                        "currency",
        +                        "billing",
        +                        "unlock_summary"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "current_tier": {
        +                    "const": "free",
        +                    "default": "free",
        +                    "type": "string"
        +                  },
        +                  "pass_credit": {
        +                    "anyOf": [
        +                      {
        +                        "additionalProperties": false,
        +                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        +                        "properties": {
        +                          "amount_local": {
        +                            "type": "number"
        +                          },
        +                          "applies_to": {
        +                            "const": "solo_first_month",
        +                            "default": "solo_first_month",
        +                            "type": "string"
        +                          },
        +                          "currency": {
        +                            "type": "string"
        +                          },
        +                          "redeemable_until": {
        +                            "type": "string"
        +                          }
        +                        },
        +                        "required": [
        +                          "amount_local",
        +                          "currency",
        +                          "redeemable_until"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "pricing_url": {
        +                    "default": "https://civilquants.com/pricing",
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "available_tiers"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tos_url": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "upgrade_hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "warranty_disclaimer": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          }
        +        },
        +        "required": [
        +          "request_id",
        +          "issued_at",
        +          "tier"
        +        ],
        +        "type": "object"
        +      },
        +      "data": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Schema § 1.1 — the typed payload returned inside `MCPResponse[ComputeResult]`.\n\nFree-tier responses omit `drawings` (the downloadable CAD artefact\npointers — the paid differentiator); the bridge enforces this. The\n`audit_trail` and the inline `drawing` preview are present on BOTH tiers\n(V1 ALIGN / 60th-fire D + C). `text_summary` is bounded to 2000 chars —\nkeeps the LLM-facing summary token-cheap and forces longer narrative into\nBoQ row descriptions where it belongs. `warnings` is the non-fatal\ngeometry advisory list (both tiers).",
        +            "properties": {
        +              "assembly_slug": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "audit_trail": {
        +                "anyOf": [
        +                  {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.7 — paid-tier audit-trail entry.\n\nOne entry per BoQ row; `boq_row_index` ties to the row position in\n`ComputeResult.boq_rows`. `derivation` is the human-readable formula\nwalk-through; `formula` is the optional formal expression.",
        +                      "properties": {
        +                        "boq_row_index": {
        +                          "minimum": 0,
        +                          "type": "integer"
        +                        },
        +                        "derivation": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "formula": {
        +                          "anyOf": [
        +                            {
        +                              "type": "string"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ],
        +                          "default": null
        +                        },
        +                        "id": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "parameters_referenced": {
        +                          "items": {
        +                            "type": "string"
        +                          },
        +                          "type": "array"
        +                        }
        +                      },
        +                      "required": [
        +                        "id",
        +                        "boq_row_index",
        +                        "derivation"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "boq_rows": {
        +                "items": {
        +                  "additionalProperties": false,
        +                  "description": "Schema § 1.3 — a single bill row in the requested standard's format.\n\n`description` is the non-verbatim functional description per spec § 13.9 /\n§ 15 invariant — NEVER reproduces a standard's verbatim clause text.\n`rate` / `amount` ship null because rates are commodity data the customer\nowns; the engine's job is the measurement, not the pricing.",
        +                  "properties": {
        +                    "amount": {
        +                      "anyOf": [
        +                        {
        +                          "type": "number"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "attribution": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "audit_id": {
        +                      "anyOf": [
        +                        {
        +                          "type": "string"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "description": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "quantity": {
        +                      "minimum": 0,
        +                      "type": "number"
        +                    },
        +                    "rate": {
        +                      "anyOf": [
        +                        {
        +                          "type": "number"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "unit": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "work_section": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    }
        +                  },
        +                  "required": [
        +                    "work_section",
        +                    "description",
        +                    "quantity",
        +                    "unit",
        +                    "attribution"
        +                  ],
        +                  "type": "object"
        +                },
        +                "type": "array"
        +              },
        +              "drawing": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": false,
        +                    "description": "Schema § 1.6a — inline server-rendered SVG preview of the geometry.\n\nThe MCP mirror of the web ``/compute`` response's ``drawing`` field\n(``api.schemas.compute.DrawingRef``): the same on-screen dimensioned\ndrawing both tiers see in the workspace, surfaced on the MCP compute\nresponse so a chat client can render it inline (60th-fire item C). This\nis the on-screen preview — present on BOTH tiers per the free/paid\nboundary; the downloadable CAD artefacts (DXF / dimensioned PDF) remain\nthe paid differentiator via the export tools.\n\nDefined here rather than importing ``DrawingRef`` because the web\n``schemas`` package imports back into this module (``schemas.render``),\nso reusing it would create an import cycle — the MCP wire contract keeps\nits own copy, the same pattern as ``BoQRow`` / ``DrawingReference``.",
        +                    "properties": {
        +                      "entity_count": {
        +                        "minimum": 0,
        +                        "type": "integer"
        +                      },
        +                      "svg_b64": {
        +                        "minLength": 1,
        +                        "type": "string"
        +                      },
        +                      "unit_of_drawing": {
        +                        "const": "m",
        +                        "default": "m",
        +                        "type": "string"
        +                      },
        +                      "viewbox_height": {
        +                        "exclusiveMinimum": 0,
        +                        "type": "number"
        +                      },
        +                      "viewbox_width": {
        +                        "exclusiveMinimum": 0,
        +                        "type": "number"
        +                      },
        +                      "viewbox_x": {
        +                        "type": "number"
        +                      },
        +                      "viewbox_y": {
        +                        "type": "number"
        +                      }
        +                    },
        +                    "required": [
        +                      "svg_b64",
        +                      "viewbox_x",
        +                      "viewbox_y",
        +                      "viewbox_width",
        +                      "viewbox_height",
        +                      "entity_count"
        +                    ],
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "drawings": {
        +                "anyOf": [
        +                  {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.6 — paid-tier drawing artefact pointer.\n\n`url` is an R2-signed URL; expiry is carried in `_meta.deliverables.expires_at`\non the envelope (not duplicated here). `layers` is DXF-only; PDF/SVG\ncallers omit it.",
        +                      "properties": {
        +                        "drawing_type": {
        +                          "enum": [
        +                            "section",
        +                            "plan",
        +                            "elevation",
        +                            "isometric",
        +                            "detail"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "format": {
        +                          "enum": [
        +                            "DXF",
        +                            "PDF",
        +                            "SVG"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "layers": {
        +                          "anyOf": [
        +                            {
        +                              "items": {
        +                                "type": "string"
        +                              },
        +                              "type": "array"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ],
        +                          "default": null
        +                        },
        +                        "scale": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "sheet_size": {
        +                          "enum": [
        +                            "A1",
        +                            "A2",
        +                            "A3",
        +                            "A4"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "url": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "drawing_type",
        +                        "format",
        +                        "url",
        +                        "sheet_size",
        +                        "scale"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "parameters_used": {
        +                "additionalProperties": false,
        +                "description": "Schema § 1.2 — the parameter snapshot the engine actually used.\n\nSplits user-supplied values from engine defaults so customers can see\nwhich numbers came from them and which the engine filled in. Every\ndefaulted parameter SHOULD have a corresponding entry in `assumptions`\n— the bridge layer enforces this when wrapping engine output.",
        +                "properties": {
        +                  "assumptions": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "engine_defaults": {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  "user_supplied": {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  }
        +                },
        +                "type": "object"
        +              },
        +              "standard": {
        +                "enum": [
        +                  "CESMM4",
        +                  "NRM2",
        +                  "SMM7",
        +                  "MMHW"
        +                ],
        +                "type": "string"
        +              },
        +              "text_summary": {
        +                "maxLength": 2000,
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "totals_summary": {
        +                "additionalProperties": false,
        +                "description": "Schema § 1.4 — totals_summary as a typed wrapper around the free-form dict.\n\nWire shape is a flat object (`{\"concrete_m3\": {...}, \"rebar_t\": {...}}`).\nWe model it as `RootModel`-equivalent via `model_config(extra=\"allow\")`\n+ a single `__root__`-style `entries` dict. Pydantic v2 recommends\n`RootModel` for free-form roots; using a wrapper class keeps the import\nsurface uniform with the rest of this module.",
        +                "properties": {
        +                  "entries": {
        +                    "additionalProperties": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.4 — single material/work-class total entry.",
        +                      "properties": {
        +                        "quantity": {
        +                          "minimum": 0,
        +                          "type": "number"
        +                        },
        +                        "unit": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "quantity",
        +                        "unit"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "object"
        +                  }
        +                },
        +                "type": "object"
        +              },
        +              "warnings": {
        +                "items": {
        +                  "additionalProperties": false,
        +                  "description": "Schema § 1.8 — a non-fatal geometry advisory (56th-fire T2).\n\nThe wire projection of the engine's `core.GeometryWarning`. Advisory only:\na warning NEVER changes a measured quantity — it flags geometry that is\nvalid but likely a mistake (e.g. a stale dependent-height default). Present\non BOTH tiers — a correctness/safety signal, not a paid feature.",
        +                  "properties": {
        +                    "affected_params": {
        +                      "items": {
        +                        "type": "string"
        +                      },
        +                      "type": "array"
        +                    },
        +                    "code": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "detail": {
        +                      "additionalProperties": {
        +                        "type": "number"
        +                      },
        +                      "type": "object"
        +                    },
        +                    "message": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "severity": {
        +                      "enum": [
        +                        "info",
        +                        "advisory",
        +                        "caution"
        +                      ],
        +                      "type": "string"
        +                    }
        +                  },
        +                  "required": [
        +                    "code",
        +                    "severity",
        +                    "message"
        +                  ],
        +                  "type": "object"
        +                },
        +                "type": "array"
        +              }
        +            },
        +            "required": [
        +              "assembly_slug",
        +              "standard",
        +              "parameters_used",
        +              "boq_rows",
        +              "totals_summary",
        +              "text_summary"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      },
        +      "error": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        +            "properties": {
        +              "code": {
        +                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        +                "enum": [
        +                  "RATE_LIMIT_EXCEEDED",
        +                  "TIER_INSUFFICIENT",
        +                  "INVALID_INPUT",
        +                  "SCHEMA_VERSION_MISMATCH",
        +                  "SCHEMA_INVARIANT_VIOLATION",
        +                  "UPSTREAM_TIMEOUT",
        +                  "BACKEND_FAILURE",
        +                  "IP_BLOCKED",
        +                  "RESOURCE_NOT_FOUND",
        +                  "RENDER_FAILURE",
        +                  "OCR_LOW_CONFIDENCE",
        +                  "MANUAL_REVIEW_REQUIRED",
        +                  "ACCEPTANCE_REQUIRED",
        +                  "INVALID_TOKEN"
        +                ],
        +                "type": "string"
        +              },
        +              "details": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "message": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "recoverable": {
        +                "type": "boolean"
        +              },
        +              "retry_after_seconds": {
        +                "anyOf": [
        +                  {
        +                    "minimum": 0,
        +                    "type": "integer"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              }
        +            },
        +            "required": [
        +              "code",
        +              "message",
        +              "recoverable"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      }
        +    },
        +    "required": [
        +      "_meta"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "_meta": {
        +        "additionalProperties": false,
        +        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        +        "properties": {
        +          "deliverables": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        +                "properties": {
        +                  "docx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "dxf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "expires_at": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  },
        +                  "pdf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "xlsx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "expires_at"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "document_id": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "issued_at": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "output_mode": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Surfaces what a trimmed ``output_mode`` withheld from ``data``.\n\nA trimmed mode (``summary`` / ``boq`` / ``boq_with_backup``) withholds\nalready-computed fields to keep the chat payload small. The withheld value\nreads to a client agent as \"capability missing\" (the box-culvert \"geometry\nbuilder isn't firing\" scare) rather than \"pared for size\": ``drawing`` and\n``audit_trail`` appear as ``null``, ``boq_rows`` as an empty list ``[]``\n(its type forbids ``null``) — both indistinguishable from a genuine absent\nresult. This names the withheld fields and the exact mode that brings each\nback, so the value is unambiguous. Absent on the default ``full_json`` mode\n— nothing is withheld, nothing to point at.",
        +                "properties": {
        +                  "mode": {
        +                    "enum": [
        +                      "summary",
        +                      "boq",
        +                      "boq_with_backup"
        +                    ],
        +                    "type": "string"
        +                  },
        +                  "omitted_fields": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "minItems": 1,
        +                    "type": "array"
        +                  },
        +                  "retrieve_with": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "mode",
        +                  "omitted_fields",
        +                  "retrieve_with"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "rate_limit_remaining": {
        +            "anyOf": [
        +              {
        +                "minimum": 0,
        +                "type": "integer"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "request_id": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "schema_version": {
        +            "const": "1.0.0",
        +            "default": "1.0.0",
        +            "type": "string"
        +          },
        +          "scope_boundary": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        +                "properties": {
        +                  "not_in_scope": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "produced": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "recommended_companions": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "type": "string"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "produced",
        +                  "not_in_scope"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tier": {
        +            "enum": [
        +              "free",
        +              "paid"
        +            ],
        +            "type": "string"
        +          },
        +          "tier_upgrade": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        +                "properties": {
        +                  "available_tiers": {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        +                      "properties": {
        +                        "billing": {
        +                          "enum": [
        +                            "one_off",
        +                            "monthly",
        +                            "annual"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "currency": {
        +                          "enum": [
        +                            "GBP",
        +                            "SGD",
        +                            "EUR",
        +                            "USD",
        +                            "CAD",
        +                            "AUD",
        +                            "NZD",
        +                            "MYR"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "display_name": {
        +                          "type": "string"
        +                        },
        +                        "price_local": {
        +                          "type": "number"
        +                        },
        +                        "tier_slug": {
        +                          "enum": [
        +                            "7_day_pass",
        +                            "solo",
        +                            "studio",
        +                            "practice"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "unlock_summary": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "tier_slug",
        +                        "display_name",
        +                        "price_local",
        +                        "currency",
        +                        "billing",
        +                        "unlock_summary"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "current_tier": {
        +                    "const": "free",
        +                    "default": "free",
        +                    "type": "string"
        +                  },
        +                  "pass_credit": {
        +                    "anyOf": [
        +                      {
        +                        "additionalProperties": false,
        +                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        +                        "properties": {
        +                          "amount_local": {
        +                            "type": "number"
        +                          },
        +                          "applies_to": {
        +                            "const": "solo_first_month",
        +                            "default": "solo_first_month",
        +                            "type": "string"
        +                          },
        +                          "currency": {
        +                            "type": "string"
        +                          },
        +                          "redeemable_until": {
        +                            "type": "string"
        +                          }
        +                        },
        +                        "required": [
        +                          "amount_local",
        +                          "currency",
        +                          "redeemable_until"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "pricing_url": {
        +                    "default": "https://civilquants.com/pricing",
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "available_tiers"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tos_url": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "upgrade_hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "warranty_disclaimer": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          }
        +        },
        +        "required": [
        +          "request_id",
        +          "issued_at",
        +          "tier"
        +        ],
        +        "type": "object"
        +      },
        +      "data": {
        +        "default": null,
        +        "title": "Data"
        +      },
        +      "error": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        +            "properties": {
        +              "code": {
        +                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        +                "enum": [
        +                  "RATE_LIMIT_EXCEEDED",
        +                  "TIER_INSUFFICIENT",
        +                  "INVALID_INPUT",
        +                  "SCHEMA_VERSION_MISMATCH",
        +                  "SCHEMA_INVARIANT_VIOLATION",
        +                  "UPSTREAM_TIMEOUT",
        +                  "BACKEND_FAILURE",
        +                  "IP_BLOCKED",
        +                  "RESOURCE_NOT_FOUND",
        +                  "RENDER_FAILURE",
        +                  "OCR_LOW_CONFIDENCE",
        +                  "MANUAL_REVIEW_REQUIRED",
        +                  "ACCEPTANCE_REQUIRED",
        +                  "INVALID_TOKEN"
        +                ],
        +                "type": "string"
        +              },
        +              "details": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "message": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "recoverable": {
        +                "type": "boolean"
        +              },
        +              "retry_after_seconds": {
        +                "anyOf": [
        +                  {
        +                    "minimum": 0,
        +                    "type": "integer"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              }
        +            },
        +            "required": [
        +              "code",
        +              "message",
        +              "recoverable"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      }
        +    },
        +    "required": [
        +      "_meta"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedcompute_attenuation_tank1 field changed
      • changedOutput schema / properties / result / anyOf
        Previous value: -[
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "_meta": {
        -        "additionalProperties": false,
        -        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        -        "properties": {
        -          "deliverables": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        -                "properties": {
        -                  "docx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "dxf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "expires_at": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  },
        -                  "pdf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "xlsx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "expires_at"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "document_id": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "issued_at": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "rate_limit_remaining": {
        -            "anyOf": [
        -              {
        -                "minimum": 0,
        -                "type": "integer"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "request_id": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "schema_version": {
        -            "const": "1.0.0",
        -            "default": "1.0.0",
        -            "type": "string"
        -          },
        -          "scope_boundary": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        -                "properties": {
        -                  "not_in_scope": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "produced": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "recommended_companions": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "type": "string"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "produced",
        -                  "not_in_scope"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tier": {
        -            "enum": [
        -              "free",
        -              "paid"
        -            ],
        -            "type": "string"
        -          },
        -          "tier_upgrade": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        -                "properties": {
        -                  "available_tiers": {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        -                      "properties": {
        -                        "billing": {
        -                          "enum": [
        -                            "one_off",
        -                            "monthly",
        -                            "annual"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "currency": {
        -                          "enum": [
        -                            "GBP",
        -                            "SGD",
        -                            "EUR",
        -                            "USD",
        -                            "CAD",
        -                            "AUD",
        -                            "NZD",
        -                            "MYR"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "display_name": {
        -                          "type": "string"
        -                        },
        -                        "price_local": {
        -                          "type": "number"
        -                        },
        -                        "tier_slug": {
        -                          "enum": [
        -                            "7_day_pass",
        -                            "solo",
        -                            "studio",
        -                            "practice"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "unlock_summary": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "tier_slug",
        -                        "display_name",
        -                        "price_local",
        -                        "currency",
        -                        "billing",
        -                        "unlock_summary"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "current_tier": {
        -                    "const": "free",
        -                    "default": "free",
        -                    "type": "string"
        -                  },
        -                  "pass_credit": {
        -                    "anyOf": [
        -                      {
        -                        "additionalProperties": false,
        -                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        -                        "properties": {
        -                          "amount_local": {
        -                            "type": "number"
        -                          },
        -                          "applies_to": {
        -                            "const": "solo_first_month",
        -                            "default": "solo_first_month",
        -                            "type": "string"
        -                          },
        -                          "currency": {
        -                            "type": "string"
        -                          },
        -                          "redeemable_until": {
        -                            "type": "string"
        -                          }
        -                        },
        -                        "required": [
        -                          "amount_local",
        -                          "currency",
        -                          "redeemable_until"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "pricing_url": {
        -                    "default": "https://civilquants.com/pricing",
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "available_tiers"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tos_url": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "upgrade_hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "warranty_disclaimer": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          }
        -        },
        -        "required": [
        -          "request_id",
        -          "issued_at",
        -          "tier"
        -        ],
        -        "type": "object"
        -      },
        -      "data": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Schema § 1.1 — the typed payload returned inside `MCPResponse[ComputeResult]`.\n\nFree-tier responses omit `drawings` (the downloadable CAD artefact\npointers — the paid differentiator); the bridge enforces this. The\n`audit_trail` and the inline `drawing` preview are present on BOTH tiers\n(V1 ALIGN / 60th-fire D + C). `text_summary` is bounded to 2000 chars —\nkeeps the LLM-facing summary token-cheap and forces longer narrative into\nBoQ row descriptions where it belongs. `warnings` is the non-fatal\ngeometry advisory list (both tiers).",
        -            "properties": {
        -              "assembly_slug": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "audit_trail": {
        -                "anyOf": [
        -                  {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.7 — paid-tier audit-trail entry.\n\nOne entry per BoQ row; `boq_row_index` ties to the row position in\n`ComputeResult.boq_rows`. `derivation` is the human-readable formula\nwalk-through; `formula` is the optional formal expression.",
        -                      "properties": {
        -                        "boq_row_index": {
        -                          "minimum": 0,
        -                          "type": "integer"
        -                        },
        -                        "derivation": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "formula": {
        -                          "anyOf": [
        -                            {
        -                              "type": "string"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ],
        -                          "default": null
        -                        },
        -                        "id": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "parameters_referenced": {
        -                          "items": {
        -                            "type": "string"
        -                          },
        -                          "type": "array"
        -                        }
        -                      },
        -                      "required": [
        -                        "id",
        -                        "boq_row_index",
        -                        "derivation"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "boq_rows": {
        -                "items": {
        -                  "additionalProperties": false,
        -                  "description": "Schema § 1.3 — a single bill row in the requested standard's format.\n\n`description` is the non-verbatim functional description per spec § 13.9 /\n§ 15 invariant — NEVER reproduces a standard's verbatim clause text.\n`rate` / `amount` ship null because rates are commodity data the customer\nowns; the engine's job is the measurement, not the pricing.",
        -                  "properties": {
        -                    "amount": {
        -                      "anyOf": [
        -                        {
        -                          "type": "number"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "attribution": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "audit_id": {
        -                      "anyOf": [
        -                        {
        -                          "type": "string"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "description": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "quantity": {
        -                      "minimum": 0,
        -                      "type": "number"
        -                    },
        -                    "rate": {
        -                      "anyOf": [
        -                        {
        -                          "type": "number"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "unit": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "work_section": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    }
        -                  },
        -                  "required": [
        -                    "work_section",
        -                    "description",
        -                    "quantity",
        -                    "unit",
        -                    "attribution"
        -                  ],
        -                  "type": "object"
        -                },
        -                "type": "array"
        -              },
        -              "drawing": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": false,
        -                    "description": "Schema § 1.6a — inline server-rendered SVG preview of the geometry.\n\nThe MCP mirror of the web ``/compute`` response's ``drawing`` field\n(``api.schemas.compute.DrawingRef``): the same on-screen dimensioned\ndrawing both tiers see in the workspace, surfaced on the MCP compute\nresponse so a chat client can render it inline (60th-fire item C). This\nis the on-screen preview — present on BOTH tiers per the free/paid\nboundary; the downloadable CAD artefacts (DXF / dimensioned PDF) remain\nthe paid differentiator via the export tools.\n\nDefined here rather than importing ``DrawingRef`` because the web\n``schemas`` package imports back into this module (``schemas.render``),\nso reusing it would create an import cycle — the MCP wire contract keeps\nits own copy, the same pattern as ``BoQRow`` / ``DrawingReference``.",
        -                    "properties": {
        -                      "entity_count": {
        -                        "minimum": 0,
        -                        "type": "integer"
        -                      },
        -                      "svg_b64": {
        -                        "minLength": 1,
        -                        "type": "string"
        -                      },
        -                      "unit_of_drawing": {
        -                        "const": "m",
        -                        "default": "m",
        -                        "type": "string"
        -                      },
        -                      "viewbox_height": {
        -                        "exclusiveMinimum": 0,
        -                        "type": "number"
        -                      },
        -                      "viewbox_width": {
        -                        "exclusiveMinimum": 0,
        -                        "type": "number"
        -                      },
        -                      "viewbox_x": {
        -                        "type": "number"
        -                      },
        -                      "viewbox_y": {
        -                        "type": "number"
        -                      }
        -                    },
        -                    "required": [
        -                      "svg_b64",
        -                      "viewbox_x",
        -                      "viewbox_y",
        -                      "viewbox_width",
        -                      "viewbox_height",
        -                      "entity_count"
        -                    ],
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "drawings": {
        -                "anyOf": [
        -                  {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.6 — paid-tier drawing artefact pointer.\n\n`url` is an R2-signed URL; expiry is carried in `_meta.deliverables.expires_at`\non the envelope (not duplicated here). `layers` is DXF-only; PDF/SVG\ncallers omit it.",
        -                      "properties": {
        -                        "drawing_type": {
        -                          "enum": [
        -                            "section",
        -                            "plan",
        -                            "elevation",
        -                            "isometric",
        -                            "detail"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "format": {
        -                          "enum": [
        -                            "DXF",
        -                            "PDF",
        -                            "SVG"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "layers": {
        -                          "anyOf": [
        -                            {
        -                              "items": {
        -                                "type": "string"
        -                              },
        -                              "type": "array"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ],
        -                          "default": null
        -                        },
        -                        "scale": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "sheet_size": {
        -                          "enum": [
        -                            "A1",
        -                            "A2",
        -                            "A3",
        -                            "A4"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "url": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "drawing_type",
        -                        "format",
        -                        "url",
        -                        "sheet_size",
        -                        "scale"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "parameters_used": {
        -                "additionalProperties": false,
        -                "description": "Schema § 1.2 — the parameter snapshot the engine actually used.\n\nSplits user-supplied values from engine defaults so customers can see\nwhich numbers came from them and which the engine filled in. Every\ndefaulted parameter SHOULD have a corresponding entry in `assumptions`\n— the bridge layer enforces this when wrapping engine output.",
        -                "properties": {
        -                  "assumptions": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "engine_defaults": {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  "user_supplied": {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  }
        -                },
        -                "type": "object"
        -              },
        -              "standard": {
        -                "enum": [
        -                  "CESMM4",
        -                  "NRM2",
        -                  "SMM7",
        -                  "MMHW"
        -                ],
        -                "type": "string"
        -              },
        -              "text_summary": {
        -                "maxLength": 2000,
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "totals_summary": {
        -                "additionalProperties": false,
        -                "description": "Schema § 1.4 — totals_summary as a typed wrapper around the free-form dict.\n\nWire shape is a flat object (`{\"concrete_m3\": {...}, \"rebar_t\": {...}}`).\nWe model it as `RootModel`-equivalent via `model_config(extra=\"allow\")`\n+ a single `__root__`-style `entries` dict. Pydantic v2 recommends\n`RootModel` for free-form roots; using a wrapper class keeps the import\nsurface uniform with the rest of this module.",
        -                "properties": {
        -                  "entries": {
        -                    "additionalProperties": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.4 — single material/work-class total entry.",
        -                      "properties": {
        -                        "quantity": {
        -                          "minimum": 0,
        -                          "type": "number"
        -                        },
        -                        "unit": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "quantity",
        -                        "unit"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "object"
        -                  }
        -                },
        -                "type": "object"
        -              },
        -              "warnings": {
        -                "items": {
        -                  "additionalProperties": false,
        -                  "description": "Schema § 1.8 — a non-fatal geometry advisory (56th-fire T2).\n\nThe wire projection of the engine's `core.GeometryWarning`. Advisory only:\na warning NEVER changes a measured quantity — it flags geometry that is\nvalid but likely a mistake (e.g. a stale dependent-height default). Present\non BOTH tiers — a correctness/safety signal, not a paid feature.",
        -                  "properties": {
        -                    "affected_params": {
        -                      "items": {
        -                        "type": "string"
        -                      },
        -                      "type": "array"
        -                    },
        -                    "code": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "detail": {
        -                      "additionalProperties": {
        -                        "type": "number"
        -                      },
        -                      "type": "object"
        -                    },
        -                    "message": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "severity": {
        -                      "enum": [
        -                        "info",
        -                        "advisory",
        -                        "caution"
        -                      ],
        -                      "type": "string"
        -                    }
        -                  },
        -                  "required": [
        -                    "code",
        -                    "severity",
        -                    "message"
        -                  ],
        -                  "type": "object"
        -                },
        -                "type": "array"
        -              }
        -            },
        -            "required": [
        -              "assembly_slug",
        -              "standard",
        -              "parameters_used",
        -              "boq_rows",
        -              "totals_summary",
        -              "text_summary"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      },
        -      "error": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        -            "properties": {
        -              "code": {
        -                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        -                "enum": [
        -                  "RATE_LIMIT_EXCEEDED",
        -                  "TIER_INSUFFICIENT",
        -                  "INVALID_INPUT",
        -                  "SCHEMA_VERSION_MISMATCH",
        -                  "SCHEMA_INVARIANT_VIOLATION",
        -                  "UPSTREAM_TIMEOUT",
        -                  "BACKEND_FAILURE",
        -                  "IP_BLOCKED",
        -                  "RESOURCE_NOT_FOUND",
        -                  "RENDER_FAILURE",
        -                  "OCR_LOW_CONFIDENCE",
        -                  "MANUAL_REVIEW_REQUIRED",
        -                  "ACCEPTANCE_REQUIRED",
        -                  "INVALID_TOKEN"
        -                ],
        -                "type": "string"
        -              },
        -              "details": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "message": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "recoverable": {
        -                "type": "boolean"
        -              },
        -              "retry_after_seconds": {
        -                "anyOf": [
        -                  {
        -                    "minimum": 0,
        -                    "type": "integer"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              }
        -            },
        -            "required": [
        -              "code",
        -              "message",
        -              "recoverable"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      }
        -    },
        -    "required": [
        -      "_meta"
        -    ],
        -    "type": "object"
        -  },
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "_meta": {
        -        "additionalProperties": false,
        -        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        -        "properties": {
        -          "deliverables": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        -                "properties": {
        -                  "docx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "dxf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "expires_at": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  },
        -                  "pdf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "xlsx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "expires_at"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "document_id": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "issued_at": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "rate_limit_remaining": {
        -            "anyOf": [
        -              {
        -                "minimum": 0,
        -                "type": "integer"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "request_id": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "schema_version": {
        -            "const": "1.0.0",
        -            "default": "1.0.0",
        -            "type": "string"
        -          },
        -          "scope_boundary": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        -                "properties": {
        -                  "not_in_scope": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "produced": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "recommended_companions": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "type": "string"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "produced",
        -                  "not_in_scope"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tier": {
        -            "enum": [
        -              "free",
        -              "paid"
        -            ],
        -            "type": "string"
        -          },
        -          "tier_upgrade": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        -                "properties": {
        -                  "available_tiers": {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        -                      "properties": {
        -                        "billing": {
        -                          "enum": [
        -                            "one_off",
        -                            "monthly",
        -                            "annual"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "currency": {
        -                          "enum": [
        -                            "GBP",
        -                            "SGD",
        -                            "EUR",
        -                            "USD",
        -                            "CAD",
        -                            "AUD",
        -                            "NZD",
        -                            "MYR"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "display_name": {
        -                          "type": "string"
        -                        },
        -                        "price_local": {
        -                          "type": "number"
        -                        },
        -                        "tier_slug": {
        -                          "enum": [
        -                            "7_day_pass",
        -                            "solo",
        -                            "studio",
        -                            "practice"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "unlock_summary": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "tier_slug",
        -                        "display_name",
        -                        "price_local",
        -                        "currency",
        -                        "billing",
        -                        "unlock_summary"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "current_tier": {
        -                    "const": "free",
        -                    "default": "free",
        -                    "type": "string"
        -                  },
        -                  "pass_credit": {
        -                    "anyOf": [
        -                      {
        -                        "additionalProperties": false,
        -                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        -                        "properties": {
        -                          "amount_local": {
        -                            "type": "number"
        -                          },
        -                          "applies_to": {
        -                            "const": "solo_first_month",
        -                            "default": "solo_first_month",
        -                            "type": "string"
        -                          },
        -                          "currency": {
        -                            "type": "string"
        -                          },
        -                          "redeemable_until": {
        -                            "type": "string"
        -                          }
        -                        },
        -                        "required": [
        -                          "amount_local",
        -                          "currency",
        -                          "redeemable_until"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "pricing_url": {
        -                    "default": "https://civilquants.com/pricing",
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "available_tiers"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tos_url": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "upgrade_hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "warranty_disclaimer": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          }
        -        },
        -        "required": [
        -          "request_id",
        -          "issued_at",
        -          "tier"
        -        ],
        -        "type": "object"
        -      },
        -      "data": {
        -        "default": null,
        -        "title": "Data"
        -      },
        -      "error": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        -            "properties": {
        -              "code": {
        -                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        -                "enum": [
        -                  "RATE_LIMIT_EXCEEDED",
        -                  "TIER_INSUFFICIENT",
        -                  "INVALID_INPUT",
        -                  "SCHEMA_VERSION_MISMATCH",
        -                  "SCHEMA_INVARIANT_VIOLATION",
        -                  "UPSTREAM_TIMEOUT",
        -                  "BACKEND_FAILURE",
        -                  "IP_BLOCKED",
        -                  "RESOURCE_NOT_FOUND",
        -                  "RENDER_FAILURE",
        -                  "OCR_LOW_CONFIDENCE",
        -                  "MANUAL_REVIEW_REQUIRED",
        -                  "ACCEPTANCE_REQUIRED",
        -                  "INVALID_TOKEN"
        -                ],
        -                "type": "string"
        -              },
        -              "details": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "message": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "recoverable": {
        -                "type": "boolean"
        -              },
        -              "retry_after_seconds": {
        -                "anyOf": [
        -                  {
        -                    "minimum": 0,
        -                    "type": "integer"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              }
        -            },
        -            "required": [
        -              "code",
        -              "message",
        -              "recoverable"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      }
        -    },
        -    "required": [
        -      "_meta"
        -    ],
        -    "type": "object"
        -  }
        -]New value: +[
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "_meta": {
        +        "additionalProperties": false,
        +        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        +        "properties": {
        +          "deliverables": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        +                "properties": {
        +                  "docx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "dxf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "expires_at": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  },
        +                  "pdf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "xlsx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "expires_at"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "document_id": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "issued_at": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "output_mode": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Surfaces what a trimmed ``output_mode`` withheld from ``data``.\n\nA trimmed mode (``summary`` / ``boq`` / ``boq_with_backup``) withholds\nalready-computed fields to keep the chat payload small. The withheld value\nreads to a client agent as \"capability missing\" (the box-culvert \"geometry\nbuilder isn't firing\" scare) rather than \"pared for size\": ``drawing`` and\n``audit_trail`` appear as ``null``, ``boq_rows`` as an empty list ``[]``\n(its type forbids ``null``) — both indistinguishable from a genuine absent\nresult. This names the withheld fields and the exact mode that brings each\nback, so the value is unambiguous. Absent on the default ``full_json`` mode\n— nothing is withheld, nothing to point at.",
        +                "properties": {
        +                  "mode": {
        +                    "enum": [
        +                      "summary",
        +                      "boq",
        +                      "boq_with_backup"
        +                    ],
        +                    "type": "string"
        +                  },
        +                  "omitted_fields": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "minItems": 1,
        +                    "type": "array"
        +                  },
        +                  "retrieve_with": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "mode",
        +                  "omitted_fields",
        +                  "retrieve_with"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "rate_limit_remaining": {
        +            "anyOf": [
        +              {
        +                "minimum": 0,
        +                "type": "integer"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "request_id": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "schema_version": {
        +            "const": "1.0.0",
        +            "default": "1.0.0",
        +            "type": "string"
        +          },
        +          "scope_boundary": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        +                "properties": {
        +                  "not_in_scope": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "produced": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "recommended_companions": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "type": "string"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "produced",
        +                  "not_in_scope"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tier": {
        +            "enum": [
        +              "free",
        +              "paid"
        +            ],
        +            "type": "string"
        +          },
        +          "tier_upgrade": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        +                "properties": {
        +                  "available_tiers": {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        +                      "properties": {
        +                        "billing": {
        +                          "enum": [
        +                            "one_off",
        +                            "monthly",
        +                            "annual"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "currency": {
        +                          "enum": [
        +                            "GBP",
        +                            "SGD",
        +                            "EUR",
        +                            "USD",
        +                            "CAD",
        +                            "AUD",
        +                            "NZD",
        +                            "MYR"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "display_name": {
        +                          "type": "string"
        +                        },
        +                        "price_local": {
        +                          "type": "number"
        +                        },
        +                        "tier_slug": {
        +                          "enum": [
        +                            "7_day_pass",
        +                            "solo",
        +                            "studio",
        +                            "practice"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "unlock_summary": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "tier_slug",
        +                        "display_name",
        +                        "price_local",
        +                        "currency",
        +                        "billing",
        +                        "unlock_summary"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "current_tier": {
        +                    "const": "free",
        +                    "default": "free",
        +                    "type": "string"
        +                  },
        +                  "pass_credit": {
        +                    "anyOf": [
        +                      {
        +                        "additionalProperties": false,
        +                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        +                        "properties": {
        +                          "amount_local": {
        +                            "type": "number"
        +                          },
        +                          "applies_to": {
        +                            "const": "solo_first_month",
        +                            "default": "solo_first_month",
        +                            "type": "string"
        +                          },
        +                          "currency": {
        +                            "type": "string"
        +                          },
        +                          "redeemable_until": {
        +                            "type": "string"
        +                          }
        +                        },
        +                        "required": [
        +                          "amount_local",
        +                          "currency",
        +                          "redeemable_until"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "pricing_url": {
        +                    "default": "https://civilquants.com/pricing",
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "available_tiers"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tos_url": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "upgrade_hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "warranty_disclaimer": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          }
        +        },
        +        "required": [
        +          "request_id",
        +          "issued_at",
        +          "tier"
        +        ],
        +        "type": "object"
        +      },
        +      "data": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Schema § 1.1 — the typed payload returned inside `MCPResponse[ComputeResult]`.\n\nFree-tier responses omit `drawings` (the downloadable CAD artefact\npointers — the paid differentiator); the bridge enforces this. The\n`audit_trail` and the inline `drawing` preview are present on BOTH tiers\n(V1 ALIGN / 60th-fire D + C). `text_summary` is bounded to 2000 chars —\nkeeps the LLM-facing summary token-cheap and forces longer narrative into\nBoQ row descriptions where it belongs. `warnings` is the non-fatal\ngeometry advisory list (both tiers).",
        +            "properties": {
        +              "assembly_slug": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "audit_trail": {
        +                "anyOf": [
        +                  {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.7 — paid-tier audit-trail entry.\n\nOne entry per BoQ row; `boq_row_index` ties to the row position in\n`ComputeResult.boq_rows`. `derivation` is the human-readable formula\nwalk-through; `formula` is the optional formal expression.",
        +                      "properties": {
        +                        "boq_row_index": {
        +                          "minimum": 0,
        +                          "type": "integer"
        +                        },
        +                        "derivation": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "formula": {
        +                          "anyOf": [
        +                            {
        +                              "type": "string"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ],
        +                          "default": null
        +                        },
        +                        "id": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "parameters_referenced": {
        +                          "items": {
        +                            "type": "string"
        +                          },
        +                          "type": "array"
        +                        }
        +                      },
        +                      "required": [
        +                        "id",
        +                        "boq_row_index",
        +                        "derivation"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "boq_rows": {
        +                "items": {
        +                  "additionalProperties": false,
        +                  "description": "Schema § 1.3 — a single bill row in the requested standard's format.\n\n`description` is the non-verbatim functional description per spec § 13.9 /\n§ 15 invariant — NEVER reproduces a standard's verbatim clause text.\n`rate` / `amount` ship null because rates are commodity data the customer\nowns; the engine's job is the measurement, not the pricing.",
        +                  "properties": {
        +                    "amount": {
        +                      "anyOf": [
        +                        {
        +                          "type": "number"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "attribution": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "audit_id": {
        +                      "anyOf": [
        +                        {
        +                          "type": "string"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "description": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "quantity": {
        +                      "minimum": 0,
        +                      "type": "number"
        +                    },
        +                    "rate": {
        +                      "anyOf": [
        +                        {
        +                          "type": "number"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "unit": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "work_section": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    }
        +                  },
        +                  "required": [
        +                    "work_section",
        +                    "description",
        +                    "quantity",
        +                    "unit",
        +                    "attribution"
        +                  ],
        +                  "type": "object"
        +                },
        +                "type": "array"
        +              },
        +              "drawing": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": false,
        +                    "description": "Schema § 1.6a — inline server-rendered SVG preview of the geometry.\n\nThe MCP mirror of the web ``/compute`` response's ``drawing`` field\n(``api.schemas.compute.DrawingRef``): the same on-screen dimensioned\ndrawing both tiers see in the workspace, surfaced on the MCP compute\nresponse so a chat client can render it inline (60th-fire item C). This\nis the on-screen preview — present on BOTH tiers per the free/paid\nboundary; the downloadable CAD artefacts (DXF / dimensioned PDF) remain\nthe paid differentiator via the export tools.\n\nDefined here rather than importing ``DrawingRef`` because the web\n``schemas`` package imports back into this module (``schemas.render``),\nso reusing it would create an import cycle — the MCP wire contract keeps\nits own copy, the same pattern as ``BoQRow`` / ``DrawingReference``.",
        +                    "properties": {
        +                      "entity_count": {
        +                        "minimum": 0,
        +                        "type": "integer"
        +                      },
        +                      "svg_b64": {
        +                        "minLength": 1,
        +                        "type": "string"
        +                      },
        +                      "unit_of_drawing": {
        +                        "const": "m",
        +                        "default": "m",
        +                        "type": "string"
        +                      },
        +                      "viewbox_height": {
        +                        "exclusiveMinimum": 0,
        +                        "type": "number"
        +                      },
        +                      "viewbox_width": {
        +                        "exclusiveMinimum": 0,
        +                        "type": "number"
        +                      },
        +                      "viewbox_x": {
        +                        "type": "number"
        +                      },
        +                      "viewbox_y": {
        +                        "type": "number"
        +                      }
        +                    },
        +                    "required": [
        +                      "svg_b64",
        +                      "viewbox_x",
        +                      "viewbox_y",
        +                      "viewbox_width",
        +                      "viewbox_height",
        +                      "entity_count"
        +                    ],
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "drawings": {
        +                "anyOf": [
        +                  {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.6 — paid-tier drawing artefact pointer.\n\n`url` is an R2-signed URL; expiry is carried in `_meta.deliverables.expires_at`\non the envelope (not duplicated here). `layers` is DXF-only; PDF/SVG\ncallers omit it.",
        +                      "properties": {
        +                        "drawing_type": {
        +                          "enum": [
        +                            "section",
        +                            "plan",
        +                            "elevation",
        +                            "isometric",
        +                            "detail"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "format": {
        +                          "enum": [
        +                            "DXF",
        +                            "PDF",
        +                            "SVG"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "layers": {
        +                          "anyOf": [
        +                            {
        +                              "items": {
        +                                "type": "string"
        +                              },
        +                              "type": "array"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ],
        +                          "default": null
        +                        },
        +                        "scale": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "sheet_size": {
        +                          "enum": [
        +                            "A1",
        +                            "A2",
        +                            "A3",
        +                            "A4"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "url": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "drawing_type",
        +                        "format",
        +                        "url",
        +                        "sheet_size",
        +                        "scale"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "parameters_used": {
        +                "additionalProperties": false,
        +                "description": "Schema § 1.2 — the parameter snapshot the engine actually used.\n\nSplits user-supplied values from engine defaults so customers can see\nwhich numbers came from them and which the engine filled in. Every\ndefaulted parameter SHOULD have a corresponding entry in `assumptions`\n— the bridge layer enforces this when wrapping engine output.",
        +                "properties": {
        +                  "assumptions": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "engine_defaults": {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  "user_supplied": {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  }
        +                },
        +                "type": "object"
        +              },
        +              "standard": {
        +                "enum": [
        +                  "CESMM4",
        +                  "NRM2",
        +                  "SMM7",
        +                  "MMHW"
        +                ],
        +                "type": "string"
        +              },
        +              "text_summary": {
        +                "maxLength": 2000,
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "totals_summary": {
        +                "additionalProperties": false,
        +                "description": "Schema § 1.4 — totals_summary as a typed wrapper around the free-form dict.\n\nWire shape is a flat object (`{\"concrete_m3\": {...}, \"rebar_t\": {...}}`).\nWe model it as `RootModel`-equivalent via `model_config(extra=\"allow\")`\n+ a single `__root__`-style `entries` dict. Pydantic v2 recommends\n`RootModel` for free-form roots; using a wrapper class keeps the import\nsurface uniform with the rest of this module.",
        +                "properties": {
        +                  "entries": {
        +                    "additionalProperties": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.4 — single material/work-class total entry.",
        +                      "properties": {
        +                        "quantity": {
        +                          "minimum": 0,
        +                          "type": "number"
        +                        },
        +                        "unit": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "quantity",
        +                        "unit"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "object"
        +                  }
        +                },
        +                "type": "object"
        +              },
        +              "warnings": {
        +                "items": {
        +                  "additionalProperties": false,
        +                  "description": "Schema § 1.8 — a non-fatal geometry advisory (56th-fire T2).\n\nThe wire projection of the engine's `core.GeometryWarning`. Advisory only:\na warning NEVER changes a measured quantity — it flags geometry that is\nvalid but likely a mistake (e.g. a stale dependent-height default). Present\non BOTH tiers — a correctness/safety signal, not a paid feature.",
        +                  "properties": {
        +                    "affected_params": {
        +                      "items": {
        +                        "type": "string"
        +                      },
        +                      "type": "array"
        +                    },
        +                    "code": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "detail": {
        +                      "additionalProperties": {
        +                        "type": "number"
        +                      },
        +                      "type": "object"
        +                    },
        +                    "message": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "severity": {
        +                      "enum": [
        +                        "info",
        +                        "advisory",
        +                        "caution"
        +                      ],
        +                      "type": "string"
        +                    }
        +                  },
        +                  "required": [
        +                    "code",
        +                    "severity",
        +                    "message"
        +                  ],
        +                  "type": "object"
        +                },
        +                "type": "array"
        +              }
        +            },
        +            "required": [
        +              "assembly_slug",
        +              "standard",
        +              "parameters_used",
        +              "boq_rows",
        +              "totals_summary",
        +              "text_summary"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      },
        +      "error": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        +            "properties": {
        +              "code": {
        +                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        +                "enum": [
        +                  "RATE_LIMIT_EXCEEDED",
        +                  "TIER_INSUFFICIENT",
        +                  "INVALID_INPUT",
        +                  "SCHEMA_VERSION_MISMATCH",
        +                  "SCHEMA_INVARIANT_VIOLATION",
        +                  "UPSTREAM_TIMEOUT",
        +                  "BACKEND_FAILURE",
        +                  "IP_BLOCKED",
        +                  "RESOURCE_NOT_FOUND",
        +                  "RENDER_FAILURE",
        +                  "OCR_LOW_CONFIDENCE",
        +                  "MANUAL_REVIEW_REQUIRED",
        +                  "ACCEPTANCE_REQUIRED",
        +                  "INVALID_TOKEN"
        +                ],
        +                "type": "string"
        +              },
        +              "details": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "message": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "recoverable": {
        +                "type": "boolean"
        +              },
        +              "retry_after_seconds": {
        +                "anyOf": [
        +                  {
        +                    "minimum": 0,
        +                    "type": "integer"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              }
        +            },
        +            "required": [
        +              "code",
        +              "message",
        +              "recoverable"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      }
        +    },
        +    "required": [
        +      "_meta"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "_meta": {
        +        "additionalProperties": false,
        +        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        +        "properties": {
        +          "deliverables": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        +                "properties": {
        +                  "docx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "dxf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "expires_at": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  },
        +                  "pdf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "xlsx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "expires_at"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "document_id": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "issued_at": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "output_mode": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Surfaces what a trimmed ``output_mode`` withheld from ``data``.\n\nA trimmed mode (``summary`` / ``boq`` / ``boq_with_backup``) withholds\nalready-computed fields to keep the chat payload small. The withheld value\nreads to a client agent as \"capability missing\" (the box-culvert \"geometry\nbuilder isn't firing\" scare) rather than \"pared for size\": ``drawing`` and\n``audit_trail`` appear as ``null``, ``boq_rows`` as an empty list ``[]``\n(its type forbids ``null``) — both indistinguishable from a genuine absent\nresult. This names the withheld fields and the exact mode that brings each\nback, so the value is unambiguous. Absent on the default ``full_json`` mode\n— nothing is withheld, nothing to point at.",
        +                "properties": {
        +                  "mode": {
        +                    "enum": [
        +                      "summary",
        +                      "boq",
        +                      "boq_with_backup"
        +                    ],
        +                    "type": "string"
        +                  },
        +                  "omitted_fields": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "minItems": 1,
        +                    "type": "array"
        +                  },
        +                  "retrieve_with": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "mode",
        +                  "omitted_fields",
        +                  "retrieve_with"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "rate_limit_remaining": {
        +            "anyOf": [
        +              {
        +                "minimum": 0,
        +                "type": "integer"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "request_id": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "schema_version": {
        +            "const": "1.0.0",
        +            "default": "1.0.0",
        +            "type": "string"
        +          },
        +          "scope_boundary": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        +                "properties": {
        +                  "not_in_scope": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "produced": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "recommended_companions": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "type": "string"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "produced",
        +                  "not_in_scope"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tier": {
        +            "enum": [
        +              "free",
        +              "paid"
        +            ],
        +            "type": "string"
        +          },
        +          "tier_upgrade": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        +                "properties": {
        +                  "available_tiers": {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        +                      "properties": {
        +                        "billing": {
        +                          "enum": [
        +                            "one_off",
        +                            "monthly",
        +                            "annual"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "currency": {
        +                          "enum": [
        +                            "GBP",
        +                            "SGD",
        +                            "EUR",
        +                            "USD",
        +                            "CAD",
        +                            "AUD",
        +                            "NZD",
        +                            "MYR"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "display_name": {
        +                          "type": "string"
        +                        },
        +                        "price_local": {
        +                          "type": "number"
        +                        },
        +                        "tier_slug": {
        +                          "enum": [
        +                            "7_day_pass",
        +                            "solo",
        +                            "studio",
        +                            "practice"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "unlock_summary": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "tier_slug",
        +                        "display_name",
        +                        "price_local",
        +                        "currency",
        +                        "billing",
        +                        "unlock_summary"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "current_tier": {
        +                    "const": "free",
        +                    "default": "free",
        +                    "type": "string"
        +                  },
        +                  "pass_credit": {
        +                    "anyOf": [
        +                      {
        +                        "additionalProperties": false,
        +                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        +                        "properties": {
        +                          "amount_local": {
        +                            "type": "number"
        +                          },
        +                          "applies_to": {
        +                            "const": "solo_first_month",
        +                            "default": "solo_first_month",
        +                            "type": "string"
        +                          },
        +                          "currency": {
        +                            "type": "string"
        +                          },
        +                          "redeemable_until": {
        +                            "type": "string"
        +                          }
        +                        },
        +                        "required": [
        +                          "amount_local",
        +                          "currency",
        +                          "redeemable_until"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "pricing_url": {
        +                    "default": "https://civilquants.com/pricing",
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "available_tiers"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tos_url": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "upgrade_hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "warranty_disclaimer": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          }
        +        },
        +        "required": [
        +          "request_id",
        +          "issued_at",
        +          "tier"
        +        ],
        +        "type": "object"
        +      },
        +      "data": {
        +        "default": null,
        +        "title": "Data"
        +      },
        +      "error": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        +            "properties": {
        +              "code": {
        +                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        +                "enum": [
        +                  "RATE_LIMIT_EXCEEDED",
        +                  "TIER_INSUFFICIENT",
        +                  "INVALID_INPUT",
        +                  "SCHEMA_VERSION_MISMATCH",
        +                  "SCHEMA_INVARIANT_VIOLATION",
        +                  "UPSTREAM_TIMEOUT",
        +                  "BACKEND_FAILURE",
        +                  "IP_BLOCKED",
        +                  "RESOURCE_NOT_FOUND",
        +                  "RENDER_FAILURE",
        +                  "OCR_LOW_CONFIDENCE",
        +                  "MANUAL_REVIEW_REQUIRED",
        +                  "ACCEPTANCE_REQUIRED",
        +                  "INVALID_TOKEN"
        +                ],
        +                "type": "string"
        +              },
        +              "details": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "message": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "recoverable": {
        +                "type": "boolean"
        +              },
        +              "retry_after_seconds": {
        +                "anyOf": [
        +                  {
        +                    "minimum": 0,
        +                    "type": "integer"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              }
        +            },
        +            "required": [
        +              "code",
        +              "message",
        +              "recoverable"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      }
        +    },
        +    "required": [
        +      "_meta"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedcompute_bored_pile_wall1 field changed
      • changedOutput schema / properties / result / anyOf
        Previous value: -[
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "_meta": {
        -        "additionalProperties": false,
        -        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        -        "properties": {
        -          "deliverables": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        -                "properties": {
        -                  "docx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "dxf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "expires_at": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  },
        -                  "pdf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "xlsx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "expires_at"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "document_id": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "issued_at": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "rate_limit_remaining": {
        -            "anyOf": [
        -              {
        -                "minimum": 0,
        -                "type": "integer"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "request_id": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "schema_version": {
        -            "const": "1.0.0",
        -            "default": "1.0.0",
        -            "type": "string"
        -          },
        -          "scope_boundary": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        -                "properties": {
        -                  "not_in_scope": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "produced": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "recommended_companions": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "type": "string"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "produced",
        -                  "not_in_scope"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tier": {
        -            "enum": [
        -              "free",
        -              "paid"
        -            ],
        -            "type": "string"
        -          },
        -          "tier_upgrade": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        -                "properties": {
        -                  "available_tiers": {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        -                      "properties": {
        -                        "billing": {
        -                          "enum": [
        -                            "one_off",
        -                            "monthly",
        -                            "annual"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "currency": {
        -                          "enum": [
        -                            "GBP",
        -                            "SGD",
        -                            "EUR",
        -                            "USD",
        -                            "CAD",
        -                            "AUD",
        -                            "NZD",
        -                            "MYR"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "display_name": {
        -                          "type": "string"
        -                        },
        -                        "price_local": {
        -                          "type": "number"
        -                        },
        -                        "tier_slug": {
        -                          "enum": [
        -                            "7_day_pass",
        -                            "solo",
        -                            "studio",
        -                            "practice"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "unlock_summary": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "tier_slug",
        -                        "display_name",
        -                        "price_local",
        -                        "currency",
        -                        "billing",
        -                        "unlock_summary"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "current_tier": {
        -                    "const": "free",
        -                    "default": "free",
        -                    "type": "string"
        -                  },
        -                  "pass_credit": {
        -                    "anyOf": [
        -                      {
        -                        "additionalProperties": false,
        -                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        -                        "properties": {
        -                          "amount_local": {
        -                            "type": "number"
        -                          },
        -                          "applies_to": {
        -                            "const": "solo_first_month",
        -                            "default": "solo_first_month",
        -                            "type": "string"
        -                          },
        -                          "currency": {
        -                            "type": "string"
        -                          },
        -                          "redeemable_until": {
        -                            "type": "string"
        -                          }
        -                        },
        -                        "required": [
        -                          "amount_local",
        -                          "currency",
        -                          "redeemable_until"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "pricing_url": {
        -                    "default": "https://civilquants.com/pricing",
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "available_tiers"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tos_url": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "upgrade_hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "warranty_disclaimer": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          }
        -        },
        -        "required": [
        -          "request_id",
        -          "issued_at",
        -          "tier"
        -        ],
        -        "type": "object"
        -      },
        -      "data": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Schema § 1.1 — the typed payload returned inside `MCPResponse[ComputeResult]`.\n\nFree-tier responses omit `drawings` (the downloadable CAD artefact\npointers — the paid differentiator); the bridge enforces this. The\n`audit_trail` and the inline `drawing` preview are present on BOTH tiers\n(V1 ALIGN / 60th-fire D + C). `text_summary` is bounded to 2000 chars —\nkeeps the LLM-facing summary token-cheap and forces longer narrative into\nBoQ row descriptions where it belongs. `warnings` is the non-fatal\ngeometry advisory list (both tiers).",
        -            "properties": {
        -              "assembly_slug": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "audit_trail": {
        -                "anyOf": [
        -                  {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.7 — paid-tier audit-trail entry.\n\nOne entry per BoQ row; `boq_row_index` ties to the row position in\n`ComputeResult.boq_rows`. `derivation` is the human-readable formula\nwalk-through; `formula` is the optional formal expression.",
        -                      "properties": {
        -                        "boq_row_index": {
        -                          "minimum": 0,
        -                          "type": "integer"
        -                        },
        -                        "derivation": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "formula": {
        -                          "anyOf": [
        -                            {
        -                              "type": "string"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ],
        -                          "default": null
        -                        },
        -                        "id": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "parameters_referenced": {
        -                          "items": {
        -                            "type": "string"
        -                          },
        -                          "type": "array"
        -                        }
        -                      },
        -                      "required": [
        -                        "id",
        -                        "boq_row_index",
        -                        "derivation"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "boq_rows": {
        -                "items": {
        -                  "additionalProperties": false,
        -                  "description": "Schema § 1.3 — a single bill row in the requested standard's format.\n\n`description` is the non-verbatim functional description per spec § 13.9 /\n§ 15 invariant — NEVER reproduces a standard's verbatim clause text.\n`rate` / `amount` ship null because rates are commodity data the customer\nowns; the engine's job is the measurement, not the pricing.",
        -                  "properties": {
        -                    "amount": {
        -                      "anyOf": [
        -                        {
        -                          "type": "number"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "attribution": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "audit_id": {
        -                      "anyOf": [
        -                        {
        -                          "type": "string"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "description": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "quantity": {
        -                      "minimum": 0,
        -                      "type": "number"
        -                    },
        -                    "rate": {
        -                      "anyOf": [
        -                        {
        -                          "type": "number"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "unit": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "work_section": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    }
        -                  },
        -                  "required": [
        -                    "work_section",
        -                    "description",
        -                    "quantity",
        -                    "unit",
        -                    "attribution"
        -                  ],
        -                  "type": "object"
        -                },
        -                "type": "array"
        -              },
        -              "drawing": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": false,
        -                    "description": "Schema § 1.6a — inline server-rendered SVG preview of the geometry.\n\nThe MCP mirror of the web ``/compute`` response's ``drawing`` field\n(``api.schemas.compute.DrawingRef``): the same on-screen dimensioned\ndrawing both tiers see in the workspace, surfaced on the MCP compute\nresponse so a chat client can render it inline (60th-fire item C). This\nis the on-screen preview — present on BOTH tiers per the free/paid\nboundary; the downloadable CAD artefacts (DXF / dimensioned PDF) remain\nthe paid differentiator via the export tools.\n\nDefined here rather than importing ``DrawingRef`` because the web\n``schemas`` package imports back into this module (``schemas.render``),\nso reusing it would create an import cycle — the MCP wire contract keeps\nits own copy, the same pattern as ``BoQRow`` / ``DrawingReference``.",
        -                    "properties": {
        -                      "entity_count": {
        -                        "minimum": 0,
        -                        "type": "integer"
        -                      },
        -                      "svg_b64": {
        -                        "minLength": 1,
        -                        "type": "string"
        -                      },
        -                      "unit_of_drawing": {
        -                        "const": "m",
        -                        "default": "m",
        -                        "type": "string"
        -                      },
        -                      "viewbox_height": {
        -                        "exclusiveMinimum": 0,
        -                        "type": "number"
        -                      },
        -                      "viewbox_width": {
        -                        "exclusiveMinimum": 0,
        -                        "type": "number"
        -                      },
        -                      "viewbox_x": {
        -                        "type": "number"
        -                      },
        -                      "viewbox_y": {
        -                        "type": "number"
        -                      }
        -                    },
        -                    "required": [
        -                      "svg_b64",
        -                      "viewbox_x",
        -                      "viewbox_y",
        -                      "viewbox_width",
        -                      "viewbox_height",
        -                      "entity_count"
        -                    ],
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "drawings": {
        -                "anyOf": [
        -                  {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.6 — paid-tier drawing artefact pointer.\n\n`url` is an R2-signed URL; expiry is carried in `_meta.deliverables.expires_at`\non the envelope (not duplicated here). `layers` is DXF-only; PDF/SVG\ncallers omit it.",
        -                      "properties": {
        -                        "drawing_type": {
        -                          "enum": [
        -                            "section",
        -                            "plan",
        -                            "elevation",
        -                            "isometric",
        -                            "detail"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "format": {
        -                          "enum": [
        -                            "DXF",
        -                            "PDF",
        -                            "SVG"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "layers": {
        -                          "anyOf": [
        -                            {
        -                              "items": {
        -                                "type": "string"
        -                              },
        -                              "type": "array"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ],
        -                          "default": null
        -                        },
        -                        "scale": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "sheet_size": {
        -                          "enum": [
        -                            "A1",
        -                            "A2",
        -                            "A3",
        -                            "A4"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "url": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "drawing_type",
        -                        "format",
        -                        "url",
        -                        "sheet_size",
        -                        "scale"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "parameters_used": {
        -                "additionalProperties": false,
        -                "description": "Schema § 1.2 — the parameter snapshot the engine actually used.\n\nSplits user-supplied values from engine defaults so customers can see\nwhich numbers came from them and which the engine filled in. Every\ndefaulted parameter SHOULD have a corresponding entry in `assumptions`\n— the bridge layer enforces this when wrapping engine output.",
        -                "properties": {
        -                  "assumptions": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "engine_defaults": {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  "user_supplied": {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  }
        -                },
        -                "type": "object"
        -              },
        -              "standard": {
        -                "enum": [
        -                  "CESMM4",
        -                  "NRM2",
        -                  "SMM7",
        -                  "MMHW"
        -                ],
        -                "type": "string"
        -              },
        -              "text_summary": {
        -                "maxLength": 2000,
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "totals_summary": {
        -                "additionalProperties": false,
        -                "description": "Schema § 1.4 — totals_summary as a typed wrapper around the free-form dict.\n\nWire shape is a flat object (`{\"concrete_m3\": {...}, \"rebar_t\": {...}}`).\nWe model it as `RootModel`-equivalent via `model_config(extra=\"allow\")`\n+ a single `__root__`-style `entries` dict. Pydantic v2 recommends\n`RootModel` for free-form roots; using a wrapper class keeps the import\nsurface uniform with the rest of this module.",
        -                "properties": {
        -                  "entries": {
        -                    "additionalProperties": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.4 — single material/work-class total entry.",
        -                      "properties": {
        -                        "quantity": {
        -                          "minimum": 0,
        -                          "type": "number"
        -                        },
        -                        "unit": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "quantity",
        -                        "unit"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "object"
        -                  }
        -                },
        -                "type": "object"
        -              },
        -              "warnings": {
        -                "items": {
        -                  "additionalProperties": false,
        -                  "description": "Schema § 1.8 — a non-fatal geometry advisory (56th-fire T2).\n\nThe wire projection of the engine's `core.GeometryWarning`. Advisory only:\na warning NEVER changes a measured quantity — it flags geometry that is\nvalid but likely a mistake (e.g. a stale dependent-height default). Present\non BOTH tiers — a correctness/safety signal, not a paid feature.",
        -                  "properties": {
        -                    "affected_params": {
        -                      "items": {
        -                        "type": "string"
        -                      },
        -                      "type": "array"
        -                    },
        -                    "code": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "detail": {
        -                      "additionalProperties": {
        -                        "type": "number"
        -                      },
        -                      "type": "object"
        -                    },
        -                    "message": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "severity": {
        -                      "enum": [
        -                        "info",
        -                        "advisory",
        -                        "caution"
        -                      ],
        -                      "type": "string"
        -                    }
        -                  },
        -                  "required": [
        -                    "code",
        -                    "severity",
        -                    "message"
        -                  ],
        -                  "type": "object"
        -                },
        -                "type": "array"
        -              }
        -            },
        -            "required": [
        -              "assembly_slug",
        -              "standard",
        -              "parameters_used",
        -              "boq_rows",
        -              "totals_summary",
        -              "text_summary"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      },
        -      "error": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        -            "properties": {
        -              "code": {
        -                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        -                "enum": [
        -                  "RATE_LIMIT_EXCEEDED",
        -                  "TIER_INSUFFICIENT",
        -                  "INVALID_INPUT",
        -                  "SCHEMA_VERSION_MISMATCH",
        -                  "SCHEMA_INVARIANT_VIOLATION",
        -                  "UPSTREAM_TIMEOUT",
        -                  "BACKEND_FAILURE",
        -                  "IP_BLOCKED",
        -                  "RESOURCE_NOT_FOUND",
        -                  "RENDER_FAILURE",
        -                  "OCR_LOW_CONFIDENCE",
        -                  "MANUAL_REVIEW_REQUIRED",
        -                  "ACCEPTANCE_REQUIRED",
        -                  "INVALID_TOKEN"
        -                ],
        -                "type": "string"
        -              },
        -              "details": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "message": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "recoverable": {
        -                "type": "boolean"
        -              },
        -              "retry_after_seconds": {
        -                "anyOf": [
        -                  {
        -                    "minimum": 0,
        -                    "type": "integer"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              }
        -            },
        -            "required": [
        -              "code",
        -              "message",
        -              "recoverable"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      }
        -    },
        -    "required": [
        -      "_meta"
        -    ],
        -    "type": "object"
        -  },
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "_meta": {
        -        "additionalProperties": false,
        -        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        -        "properties": {
        -          "deliverables": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        -                "properties": {
        -                  "docx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "dxf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "expires_at": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  },
        -                  "pdf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "xlsx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "expires_at"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "document_id": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "issued_at": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "rate_limit_remaining": {
        -            "anyOf": [
        -              {
        -                "minimum": 0,
        -                "type": "integer"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "request_id": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "schema_version": {
        -            "const": "1.0.0",
        -            "default": "1.0.0",
        -            "type": "string"
        -          },
        -          "scope_boundary": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        -                "properties": {
        -                  "not_in_scope": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "produced": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "recommended_companions": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "type": "string"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "produced",
        -                  "not_in_scope"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tier": {
        -            "enum": [
        -              "free",
        -              "paid"
        -            ],
        -            "type": "string"
        -          },
        -          "tier_upgrade": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        -                "properties": {
        -                  "available_tiers": {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        -                      "properties": {
        -                        "billing": {
        -                          "enum": [
        -                            "one_off",
        -                            "monthly",
        -                            "annual"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "currency": {
        -                          "enum": [
        -                            "GBP",
        -                            "SGD",
        -                            "EUR",
        -                            "USD",
        -                            "CAD",
        -                            "AUD",
        -                            "NZD",
        -                            "MYR"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "display_name": {
        -                          "type": "string"
        -                        },
        -                        "price_local": {
        -                          "type": "number"
        -                        },
        -                        "tier_slug": {
        -                          "enum": [
        -                            "7_day_pass",
        -                            "solo",
        -                            "studio",
        -                            "practice"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "unlock_summary": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "tier_slug",
        -                        "display_name",
        -                        "price_local",
        -                        "currency",
        -                        "billing",
        -                        "unlock_summary"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "current_tier": {
        -                    "const": "free",
        -                    "default": "free",
        -                    "type": "string"
        -                  },
        -                  "pass_credit": {
        -                    "anyOf": [
        -                      {
        -                        "additionalProperties": false,
        -                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        -                        "properties": {
        -                          "amount_local": {
        -                            "type": "number"
        -                          },
        -                          "applies_to": {
        -                            "const": "solo_first_month",
        -                            "default": "solo_first_month",
        -                            "type": "string"
        -                          },
        -                          "currency": {
        -                            "type": "string"
        -                          },
        -                          "redeemable_until": {
        -                            "type": "string"
        -                          }
        -                        },
        -                        "required": [
        -                          "amount_local",
        -                          "currency",
        -                          "redeemable_until"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "pricing_url": {
        -                    "default": "https://civilquants.com/pricing",
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "available_tiers"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tos_url": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "upgrade_hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "warranty_disclaimer": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          }
        -        },
        -        "required": [
        -          "request_id",
        -          "issued_at",
        -          "tier"
        -        ],
        -        "type": "object"
        -      },
        -      "data": {
        -        "default": null,
        -        "title": "Data"
        -      },
        -      "error": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        -            "properties": {
        -              "code": {
        -                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        -                "enum": [
        -                  "RATE_LIMIT_EXCEEDED",
        -                  "TIER_INSUFFICIENT",
        -                  "INVALID_INPUT",
        -                  "SCHEMA_VERSION_MISMATCH",
        -                  "SCHEMA_INVARIANT_VIOLATION",
        -                  "UPSTREAM_TIMEOUT",
        -                  "BACKEND_FAILURE",
        -                  "IP_BLOCKED",
        -                  "RESOURCE_NOT_FOUND",
        -                  "RENDER_FAILURE",
        -                  "OCR_LOW_CONFIDENCE",
        -                  "MANUAL_REVIEW_REQUIRED",
        -                  "ACCEPTANCE_REQUIRED",
        -                  "INVALID_TOKEN"
        -                ],
        -                "type": "string"
        -              },
        -              "details": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "message": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "recoverable": {
        -                "type": "boolean"
        -              },
        -              "retry_after_seconds": {
        -                "anyOf": [
        -                  {
        -                    "minimum": 0,
        -                    "type": "integer"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              }
        -            },
        -            "required": [
        -              "code",
        -              "message",
        -              "recoverable"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      }
        -    },
        -    "required": [
        -      "_meta"
        -    ],
        -    "type": "object"
        -  }
        -]New value: +[
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "_meta": {
        +        "additionalProperties": false,
        +        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        +        "properties": {
        +          "deliverables": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        +                "properties": {
        +                  "docx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "dxf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "expires_at": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  },
        +                  "pdf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "xlsx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "expires_at"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "document_id": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "issued_at": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "output_mode": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Surfaces what a trimmed ``output_mode`` withheld from ``data``.\n\nA trimmed mode (``summary`` / ``boq`` / ``boq_with_backup``) withholds\nalready-computed fields to keep the chat payload small. The withheld value\nreads to a client agent as \"capability missing\" (the box-culvert \"geometry\nbuilder isn't firing\" scare) rather than \"pared for size\": ``drawing`` and\n``audit_trail`` appear as ``null``, ``boq_rows`` as an empty list ``[]``\n(its type forbids ``null``) — both indistinguishable from a genuine absent\nresult. This names the withheld fields and the exact mode that brings each\nback, so the value is unambiguous. Absent on the default ``full_json`` mode\n— nothing is withheld, nothing to point at.",
        +                "properties": {
        +                  "mode": {
        +                    "enum": [
        +                      "summary",
        +                      "boq",
        +                      "boq_with_backup"
        +                    ],
        +                    "type": "string"
        +                  },
        +                  "omitted_fields": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "minItems": 1,
        +                    "type": "array"
        +                  },
        +                  "retrieve_with": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "mode",
        +                  "omitted_fields",
        +                  "retrieve_with"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "rate_limit_remaining": {
        +            "anyOf": [
        +              {
        +                "minimum": 0,
        +                "type": "integer"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "request_id": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "schema_version": {
        +            "const": "1.0.0",
        +            "default": "1.0.0",
        +            "type": "string"
        +          },
        +          "scope_boundary": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        +                "properties": {
        +                  "not_in_scope": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "produced": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "recommended_companions": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "type": "string"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "produced",
        +                  "not_in_scope"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tier": {
        +            "enum": [
        +              "free",
        +              "paid"
        +            ],
        +            "type": "string"
        +          },
        +          "tier_upgrade": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        +                "properties": {
        +                  "available_tiers": {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        +                      "properties": {
        +                        "billing": {
        +                          "enum": [
        +                            "one_off",
        +                            "monthly",
        +                            "annual"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "currency": {
        +                          "enum": [
        +                            "GBP",
        +                            "SGD",
        +                            "EUR",
        +                            "USD",
        +                            "CAD",
        +                            "AUD",
        +                            "NZD",
        +                            "MYR"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "display_name": {
        +                          "type": "string"
        +                        },
        +                        "price_local": {
        +                          "type": "number"
        +                        },
        +                        "tier_slug": {
        +                          "enum": [
        +                            "7_day_pass",
        +                            "solo",
        +                            "studio",
        +                            "practice"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "unlock_summary": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "tier_slug",
        +                        "display_name",
        +                        "price_local",
        +                        "currency",
        +                        "billing",
        +                        "unlock_summary"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "current_tier": {
        +                    "const": "free",
        +                    "default": "free",
        +                    "type": "string"
        +                  },
        +                  "pass_credit": {
        +                    "anyOf": [
        +                      {
        +                        "additionalProperties": false,
        +                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        +                        "properties": {
        +                          "amount_local": {
        +                            "type": "number"
        +                          },
        +                          "applies_to": {
        +                            "const": "solo_first_month",
        +                            "default": "solo_first_month",
        +                            "type": "string"
        +                          },
        +                          "currency": {
        +                            "type": "string"
        +                          },
        +                          "redeemable_until": {
        +                            "type": "string"
        +                          }
        +                        },
        +                        "required": [
        +                          "amount_local",
        +                          "currency",
        +                          "redeemable_until"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "pricing_url": {
        +                    "default": "https://civilquants.com/pricing",
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "available_tiers"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tos_url": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "upgrade_hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "warranty_disclaimer": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          }
        +        },
        +        "required": [
        +          "request_id",
        +          "issued_at",
        +          "tier"
        +        ],
        +        "type": "object"
        +      },
        +      "data": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Schema § 1.1 — the typed payload returned inside `MCPResponse[ComputeResult]`.\n\nFree-tier responses omit `drawings` (the downloadable CAD artefact\npointers — the paid differentiator); the bridge enforces this. The\n`audit_trail` and the inline `drawing` preview are present on BOTH tiers\n(V1 ALIGN / 60th-fire D + C). `text_summary` is bounded to 2000 chars —\nkeeps the LLM-facing summary token-cheap and forces longer narrative into\nBoQ row descriptions where it belongs. `warnings` is the non-fatal\ngeometry advisory list (both tiers).",
        +            "properties": {
        +              "assembly_slug": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "audit_trail": {
        +                "anyOf": [
        +                  {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.7 — paid-tier audit-trail entry.\n\nOne entry per BoQ row; `boq_row_index` ties to the row position in\n`ComputeResult.boq_rows`. `derivation` is the human-readable formula\nwalk-through; `formula` is the optional formal expression.",
        +                      "properties": {
        +                        "boq_row_index": {
        +                          "minimum": 0,
        +                          "type": "integer"
        +                        },
        +                        "derivation": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "formula": {
        +                          "anyOf": [
        +                            {
        +                              "type": "string"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ],
        +                          "default": null
        +                        },
        +                        "id": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "parameters_referenced": {
        +                          "items": {
        +                            "type": "string"
        +                          },
        +                          "type": "array"
        +                        }
        +                      },
        +                      "required": [
        +                        "id",
        +                        "boq_row_index",
        +                        "derivation"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "boq_rows": {
        +                "items": {
        +                  "additionalProperties": false,
        +                  "description": "Schema § 1.3 — a single bill row in the requested standard's format.\n\n`description` is the non-verbatim functional description per spec § 13.9 /\n§ 15 invariant — NEVER reproduces a standard's verbatim clause text.\n`rate` / `amount` ship null because rates are commodity data the customer\nowns; the engine's job is the measurement, not the pricing.",
        +                  "properties": {
        +                    "amount": {
        +                      "anyOf": [
        +                        {
        +                          "type": "number"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "attribution": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "audit_id": {
        +                      "anyOf": [
        +                        {
        +                          "type": "string"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "description": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "quantity": {
        +                      "minimum": 0,
        +                      "type": "number"
        +                    },
        +                    "rate": {
        +                      "anyOf": [
        +                        {
        +                          "type": "number"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "unit": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "work_section": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    }
        +                  },
        +                  "required": [
        +                    "work_section",
        +                    "description",
        +                    "quantity",
        +                    "unit",
        +                    "attribution"
        +                  ],
        +                  "type": "object"
        +                },
        +                "type": "array"
        +              },
        +              "drawing": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": false,
        +                    "description": "Schema § 1.6a — inline server-rendered SVG preview of the geometry.\n\nThe MCP mirror of the web ``/compute`` response's ``drawing`` field\n(``api.schemas.compute.DrawingRef``): the same on-screen dimensioned\ndrawing both tiers see in the workspace, surfaced on the MCP compute\nresponse so a chat client can render it inline (60th-fire item C). This\nis the on-screen preview — present on BOTH tiers per the free/paid\nboundary; the downloadable CAD artefacts (DXF / dimensioned PDF) remain\nthe paid differentiator via the export tools.\n\nDefined here rather than importing ``DrawingRef`` because the web\n``schemas`` package imports back into this module (``schemas.render``),\nso reusing it would create an import cycle — the MCP wire contract keeps\nits own copy, the same pattern as ``BoQRow`` / ``DrawingReference``.",
        +                    "properties": {
        +                      "entity_count": {
        +                        "minimum": 0,
        +                        "type": "integer"
        +                      },
        +                      "svg_b64": {
        +                        "minLength": 1,
        +                        "type": "string"
        +                      },
        +                      "unit_of_drawing": {
        +                        "const": "m",
        +                        "default": "m",
        +                        "type": "string"
        +                      },
        +                      "viewbox_height": {
        +                        "exclusiveMinimum": 0,
        +                        "type": "number"
        +                      },
        +                      "viewbox_width": {
        +                        "exclusiveMinimum": 0,
        +                        "type": "number"
        +                      },
        +                      "viewbox_x": {
        +                        "type": "number"
        +                      },
        +                      "viewbox_y": {
        +                        "type": "number"
        +                      }
        +                    },
        +                    "required": [
        +                      "svg_b64",
        +                      "viewbox_x",
        +                      "viewbox_y",
        +                      "viewbox_width",
        +                      "viewbox_height",
        +                      "entity_count"
        +                    ],
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "drawings": {
        +                "anyOf": [
        +                  {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.6 — paid-tier drawing artefact pointer.\n\n`url` is an R2-signed URL; expiry is carried in `_meta.deliverables.expires_at`\non the envelope (not duplicated here). `layers` is DXF-only; PDF/SVG\ncallers omit it.",
        +                      "properties": {
        +                        "drawing_type": {
        +                          "enum": [
        +                            "section",
        +                            "plan",
        +                            "elevation",
        +                            "isometric",
        +                            "detail"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "format": {
        +                          "enum": [
        +                            "DXF",
        +                            "PDF",
        +                            "SVG"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "layers": {
        +                          "anyOf": [
        +                            {
        +                              "items": {
        +                                "type": "string"
        +                              },
        +                              "type": "array"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ],
        +                          "default": null
        +                        },
        +                        "scale": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "sheet_size": {
        +                          "enum": [
        +                            "A1",
        +                            "A2",
        +                            "A3",
        +                            "A4"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "url": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "drawing_type",
        +                        "format",
        +                        "url",
        +                        "sheet_size",
        +                        "scale"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "parameters_used": {
        +                "additionalProperties": false,
        +                "description": "Schema § 1.2 — the parameter snapshot the engine actually used.\n\nSplits user-supplied values from engine defaults so customers can see\nwhich numbers came from them and which the engine filled in. Every\ndefaulted parameter SHOULD have a corresponding entry in `assumptions`\n— the bridge layer enforces this when wrapping engine output.",
        +                "properties": {
        +                  "assumptions": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "engine_defaults": {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  "user_supplied": {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  }
        +                },
        +                "type": "object"
        +              },
        +              "standard": {
        +                "enum": [
        +                  "CESMM4",
        +                  "NRM2",
        +                  "SMM7",
        +                  "MMHW"
        +                ],
        +                "type": "string"
        +              },
        +              "text_summary": {
        +                "maxLength": 2000,
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "totals_summary": {
        +                "additionalProperties": false,
        +                "description": "Schema § 1.4 — totals_summary as a typed wrapper around the free-form dict.\n\nWire shape is a flat object (`{\"concrete_m3\": {...}, \"rebar_t\": {...}}`).\nWe model it as `RootModel`-equivalent via `model_config(extra=\"allow\")`\n+ a single `__root__`-style `entries` dict. Pydantic v2 recommends\n`RootModel` for free-form roots; using a wrapper class keeps the import\nsurface uniform with the rest of this module.",
        +                "properties": {
        +                  "entries": {
        +                    "additionalProperties": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.4 — single material/work-class total entry.",
        +                      "properties": {
        +                        "quantity": {
        +                          "minimum": 0,
        +                          "type": "number"
        +                        },
        +                        "unit": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "quantity",
        +                        "unit"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "object"
        +                  }
        +                },
        +                "type": "object"
        +              },
        +              "warnings": {
        +                "items": {
        +                  "additionalProperties": false,
        +                  "description": "Schema § 1.8 — a non-fatal geometry advisory (56th-fire T2).\n\nThe wire projection of the engine's `core.GeometryWarning`. Advisory only:\na warning NEVER changes a measured quantity — it flags geometry that is\nvalid but likely a mistake (e.g. a stale dependent-height default). Present\non BOTH tiers — a correctness/safety signal, not a paid feature.",
        +                  "properties": {
        +                    "affected_params": {
        +                      "items": {
        +                        "type": "string"
        +                      },
        +                      "type": "array"
        +                    },
        +                    "code": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "detail": {
        +                      "additionalProperties": {
        +                        "type": "number"
        +                      },
        +                      "type": "object"
        +                    },
        +                    "message": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "severity": {
        +                      "enum": [
        +                        "info",
        +                        "advisory",
        +                        "caution"
        +                      ],
        +                      "type": "string"
        +                    }
        +                  },
        +                  "required": [
        +                    "code",
        +                    "severity",
        +                    "message"
        +                  ],
        +                  "type": "object"
        +                },
        +                "type": "array"
        +              }
        +            },
        +            "required": [
        +              "assembly_slug",
        +              "standard",
        +              "parameters_used",
        +              "boq_rows",
        +              "totals_summary",
        +              "text_summary"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      },
        +      "error": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        +            "properties": {
        +              "code": {
        +                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        +                "enum": [
        +                  "RATE_LIMIT_EXCEEDED",
        +                  "TIER_INSUFFICIENT",
        +                  "INVALID_INPUT",
        +                  "SCHEMA_VERSION_MISMATCH",
        +                  "SCHEMA_INVARIANT_VIOLATION",
        +                  "UPSTREAM_TIMEOUT",
        +                  "BACKEND_FAILURE",
        +                  "IP_BLOCKED",
        +                  "RESOURCE_NOT_FOUND",
        +                  "RENDER_FAILURE",
        +                  "OCR_LOW_CONFIDENCE",
        +                  "MANUAL_REVIEW_REQUIRED",
        +                  "ACCEPTANCE_REQUIRED",
        +                  "INVALID_TOKEN"
        +                ],
        +                "type": "string"
        +              },
        +              "details": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "message": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "recoverable": {
        +                "type": "boolean"
        +              },
        +              "retry_after_seconds": {
        +                "anyOf": [
        +                  {
        +                    "minimum": 0,
        +                    "type": "integer"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              }
        +            },
        +            "required": [
        +              "code",
        +              "message",
        +              "recoverable"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      }
        +    },
        +    "required": [
        +      "_meta"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "_meta": {
        +        "additionalProperties": false,
        +        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        +        "properties": {
        +          "deliverables": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        +                "properties": {
        +                  "docx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "dxf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "expires_at": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  },
        +                  "pdf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "xlsx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "expires_at"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "document_id": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "issued_at": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "output_mode": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Surfaces what a trimmed ``output_mode`` withheld from ``data``.\n\nA trimmed mode (``summary`` / ``boq`` / ``boq_with_backup``) withholds\nalready-computed fields to keep the chat payload small. The withheld value\nreads to a client agent as \"capability missing\" (the box-culvert \"geometry\nbuilder isn't firing\" scare) rather than \"pared for size\": ``drawing`` and\n``audit_trail`` appear as ``null``, ``boq_rows`` as an empty list ``[]``\n(its type forbids ``null``) — both indistinguishable from a genuine absent\nresult. This names the withheld fields and the exact mode that brings each\nback, so the value is unambiguous. Absent on the default ``full_json`` mode\n— nothing is withheld, nothing to point at.",
        +                "properties": {
        +                  "mode": {
        +                    "enum": [
        +                      "summary",
        +                      "boq",
        +                      "boq_with_backup"
        +                    ],
        +                    "type": "string"
        +                  },
        +                  "omitted_fields": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "minItems": 1,
        +                    "type": "array"
        +                  },
        +                  "retrieve_with": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "mode",
        +                  "omitted_fields",
        +                  "retrieve_with"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "rate_limit_remaining": {
        +            "anyOf": [
        +              {
        +                "minimum": 0,
        +                "type": "integer"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "request_id": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "schema_version": {
        +            "const": "1.0.0",
        +            "default": "1.0.0",
        +            "type": "string"
        +          },
        +          "scope_boundary": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        +                "properties": {
        +                  "not_in_scope": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "produced": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "recommended_companions": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "type": "string"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "produced",
        +                  "not_in_scope"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tier": {
        +            "enum": [
        +              "free",
        +              "paid"
        +            ],
        +            "type": "string"
        +          },
        +          "tier_upgrade": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        +                "properties": {
        +                  "available_tiers": {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        +                      "properties": {
        +                        "billing": {
        +                          "enum": [
        +                            "one_off",
        +                            "monthly",
        +                            "annual"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "currency": {
        +                          "enum": [
        +                            "GBP",
        +                            "SGD",
        +                            "EUR",
        +                            "USD",
        +                            "CAD",
        +                            "AUD",
        +                            "NZD",
        +                            "MYR"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "display_name": {
        +                          "type": "string"
        +                        },
        +                        "price_local": {
        +                          "type": "number"
        +                        },
        +                        "tier_slug": {
        +                          "enum": [
        +                            "7_day_pass",
        +                            "solo",
        +                            "studio",
        +                            "practice"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "unlock_summary": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "tier_slug",
        +                        "display_name",
        +                        "price_local",
        +                        "currency",
        +                        "billing",
        +                        "unlock_summary"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "current_tier": {
        +                    "const": "free",
        +                    "default": "free",
        +                    "type": "string"
        +                  },
        +                  "pass_credit": {
        +                    "anyOf": [
        +                      {
        +                        "additionalProperties": false,
        +                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        +                        "properties": {
        +                          "amount_local": {
        +                            "type": "number"
        +                          },
        +                          "applies_to": {
        +                            "const": "solo_first_month",
        +                            "default": "solo_first_month",
        +                            "type": "string"
        +                          },
        +                          "currency": {
        +                            "type": "string"
        +                          },
        +                          "redeemable_until": {
        +                            "type": "string"
        +                          }
        +                        },
        +                        "required": [
        +                          "amount_local",
        +                          "currency",
        +                          "redeemable_until"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "pricing_url": {
        +                    "default": "https://civilquants.com/pricing",
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "available_tiers"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tos_url": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "upgrade_hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "warranty_disclaimer": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          }
        +        },
        +        "required": [
        +          "request_id",
        +          "issued_at",
        +          "tier"
        +        ],
        +        "type": "object"
        +      },
        +      "data": {
        +        "default": null,
        +        "title": "Data"
        +      },
        +      "error": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        +            "properties": {
        +              "code": {
        +                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        +                "enum": [
        +                  "RATE_LIMIT_EXCEEDED",
        +                  "TIER_INSUFFICIENT",
        +                  "INVALID_INPUT",
        +                  "SCHEMA_VERSION_MISMATCH",
        +                  "SCHEMA_INVARIANT_VIOLATION",
        +                  "UPSTREAM_TIMEOUT",
        +                  "BACKEND_FAILURE",
        +                  "IP_BLOCKED",
        +                  "RESOURCE_NOT_FOUND",
        +                  "RENDER_FAILURE",
        +                  "OCR_LOW_CONFIDENCE",
        +                  "MANUAL_REVIEW_REQUIRED",
        +                  "ACCEPTANCE_REQUIRED",
        +                  "INVALID_TOKEN"
        +                ],
        +                "type": "string"
        +              },
        +              "details": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "message": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "recoverable": {
        +                "type": "boolean"
        +              },
        +              "retry_after_seconds": {
        +                "anyOf": [
        +                  {
        +                    "minimum": 0,
        +                    "type": "integer"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              }
        +            },
        +            "required": [
        +              "code",
        +              "message",
        +              "recoverable"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      }
        +    },
        +    "required": [
        +      "_meta"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedcompute_box_culvert1 field changed
      • changedOutput schema / properties / result / anyOf
        Previous value: -[
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "_meta": {
        -        "additionalProperties": false,
        -        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        -        "properties": {
        -          "deliverables": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        -                "properties": {
        -                  "docx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "dxf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "expires_at": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  },
        -                  "pdf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "xlsx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "expires_at"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "document_id": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "issued_at": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "rate_limit_remaining": {
        -            "anyOf": [
        -              {
        -                "minimum": 0,
        -                "type": "integer"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "request_id": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "schema_version": {
        -            "const": "1.0.0",
        -            "default": "1.0.0",
        -            "type": "string"
        -          },
        -          "scope_boundary": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        -                "properties": {
        -                  "not_in_scope": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "produced": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "recommended_companions": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "type": "string"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "produced",
        -                  "not_in_scope"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tier": {
        -            "enum": [
        -              "free",
        -              "paid"
        -            ],
        -            "type": "string"
        -          },
        -          "tier_upgrade": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        -                "properties": {
        -                  "available_tiers": {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        -                      "properties": {
        -                        "billing": {
        -                          "enum": [
        -                            "one_off",
        -                            "monthly",
        -                            "annual"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "currency": {
        -                          "enum": [
        -                            "GBP",
        -                            "SGD",
        -                            "EUR",
        -                            "USD",
        -                            "CAD",
        -                            "AUD",
        -                            "NZD",
        -                            "MYR"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "display_name": {
        -                          "type": "string"
        -                        },
        -                        "price_local": {
        -                          "type": "number"
        -                        },
        -                        "tier_slug": {
        -                          "enum": [
        -                            "7_day_pass",
        -                            "solo",
        -                            "studio",
        -                            "practice"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "unlock_summary": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "tier_slug",
        -                        "display_name",
        -                        "price_local",
        -                        "currency",
        -                        "billing",
        -                        "unlock_summary"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "current_tier": {
        -                    "const": "free",
        -                    "default": "free",
        -                    "type": "string"
        -                  },
        -                  "pass_credit": {
        -                    "anyOf": [
        -                      {
        -                        "additionalProperties": false,
        -                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        -                        "properties": {
        -                          "amount_local": {
        -                            "type": "number"
        -                          },
        -                          "applies_to": {
        -                            "const": "solo_first_month",
        -                            "default": "solo_first_month",
        -                            "type": "string"
        -                          },
        -                          "currency": {
        -                            "type": "string"
        -                          },
        -                          "redeemable_until": {
        -                            "type": "string"
        -                          }
        -                        },
        -                        "required": [
        -                          "amount_local",
        -                          "currency",
        -                          "redeemable_until"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "pricing_url": {
        -                    "default": "https://civilquants.com/pricing",
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "available_tiers"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tos_url": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "upgrade_hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "warranty_disclaimer": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          }
        -        },
        -        "required": [
        -          "request_id",
        -          "issued_at",
        -          "tier"
        -        ],
        -        "type": "object"
        -      },
        -      "data": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Schema § 1.1 — the typed payload returned inside `MCPResponse[ComputeResult]`.\n\nFree-tier responses omit `drawings` (the downloadable CAD artefact\npointers — the paid differentiator); the bridge enforces this. The\n`audit_trail` and the inline `drawing` preview are present on BOTH tiers\n(V1 ALIGN / 60th-fire D + C). `text_summary` is bounded to 2000 chars —\nkeeps the LLM-facing summary token-cheap and forces longer narrative into\nBoQ row descriptions where it belongs. `warnings` is the non-fatal\ngeometry advisory list (both tiers).",
        -            "properties": {
        -              "assembly_slug": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "audit_trail": {
        -                "anyOf": [
        -                  {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.7 — paid-tier audit-trail entry.\n\nOne entry per BoQ row; `boq_row_index` ties to the row position in\n`ComputeResult.boq_rows`. `derivation` is the human-readable formula\nwalk-through; `formula` is the optional formal expression.",
        -                      "properties": {
        -                        "boq_row_index": {
        -                          "minimum": 0,
        -                          "type": "integer"
        -                        },
        -                        "derivation": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "formula": {
        -                          "anyOf": [
        -                            {
        -                              "type": "string"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ],
        -                          "default": null
        -                        },
        -                        "id": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "parameters_referenced": {
        -                          "items": {
        -                            "type": "string"
        -                          },
        -                          "type": "array"
        -                        }
        -                      },
        -                      "required": [
        -                        "id",
        -                        "boq_row_index",
        -                        "derivation"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "boq_rows": {
        -                "items": {
        -                  "additionalProperties": false,
        -                  "description": "Schema § 1.3 — a single bill row in the requested standard's format.\n\n`description` is the non-verbatim functional description per spec § 13.9 /\n§ 15 invariant — NEVER reproduces a standard's verbatim clause text.\n`rate` / `amount` ship null because rates are commodity data the customer\nowns; the engine's job is the measurement, not the pricing.",
        -                  "properties": {
        -                    "amount": {
        -                      "anyOf": [
        -                        {
        -                          "type": "number"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "attribution": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "audit_id": {
        -                      "anyOf": [
        -                        {
        -                          "type": "string"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "description": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "quantity": {
        -                      "minimum": 0,
        -                      "type": "number"
        -                    },
        -                    "rate": {
        -                      "anyOf": [
        -                        {
        -                          "type": "number"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "unit": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "work_section": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    }
        -                  },
        -                  "required": [
        -                    "work_section",
        -                    "description",
        -                    "quantity",
        -                    "unit",
        -                    "attribution"
        -                  ],
        -                  "type": "object"
        -                },
        -                "type": "array"
        -              },
        -              "drawing": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": false,
        -                    "description": "Schema § 1.6a — inline server-rendered SVG preview of the geometry.\n\nThe MCP mirror of the web ``/compute`` response's ``drawing`` field\n(``api.schemas.compute.DrawingRef``): the same on-screen dimensioned\ndrawing both tiers see in the workspace, surfaced on the MCP compute\nresponse so a chat client can render it inline (60th-fire item C). This\nis the on-screen preview — present on BOTH tiers per the free/paid\nboundary; the downloadable CAD artefacts (DXF / dimensioned PDF) remain\nthe paid differentiator via the export tools.\n\nDefined here rather than importing ``DrawingRef`` because the web\n``schemas`` package imports back into this module (``schemas.render``),\nso reusing it would create an import cycle — the MCP wire contract keeps\nits own copy, the same pattern as ``BoQRow`` / ``DrawingReference``.",
        -                    "properties": {
        -                      "entity_count": {
        -                        "minimum": 0,
        -                        "type": "integer"
        -                      },
        -                      "svg_b64": {
        -                        "minLength": 1,
        -                        "type": "string"
        -                      },
        -                      "unit_of_drawing": {
        -                        "const": "m",
        -                        "default": "m",
        -                        "type": "string"
        -                      },
        -                      "viewbox_height": {
        -                        "exclusiveMinimum": 0,
        -                        "type": "number"
        -                      },
        -                      "viewbox_width": {
        -                        "exclusiveMinimum": 0,
        -                        "type": "number"
        -                      },
        -                      "viewbox_x": {
        -                        "type": "number"
        -                      },
        -                      "viewbox_y": {
        -                        "type": "number"
        -                      }
        -                    },
        -                    "required": [
        -                      "svg_b64",
        -                      "viewbox_x",
        -                      "viewbox_y",
        -                      "viewbox_width",
        -                      "viewbox_height",
        -                      "entity_count"
        -                    ],
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "drawings": {
        -                "anyOf": [
        -                  {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.6 — paid-tier drawing artefact pointer.\n\n`url` is an R2-signed URL; expiry is carried in `_meta.deliverables.expires_at`\non the envelope (not duplicated here). `layers` is DXF-only; PDF/SVG\ncallers omit it.",
        -                      "properties": {
        -                        "drawing_type": {
        -                          "enum": [
        -                            "section",
        -                            "plan",
        -                            "elevation",
        -                            "isometric",
        -                            "detail"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "format": {
        -                          "enum": [
        -                            "DXF",
        -                            "PDF",
        -                            "SVG"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "layers": {
        -                          "anyOf": [
        -                            {
        -                              "items": {
        -                                "type": "string"
        -                              },
        -                              "type": "array"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ],
        -                          "default": null
        -                        },
        -                        "scale": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "sheet_size": {
        -                          "enum": [
        -                            "A1",
        -                            "A2",
        -                            "A3",
        -                            "A4"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "url": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "drawing_type",
        -                        "format",
        -                        "url",
        -                        "sheet_size",
        -                        "scale"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "parameters_used": {
        -                "additionalProperties": false,
        -                "description": "Schema § 1.2 — the parameter snapshot the engine actually used.\n\nSplits user-supplied values from engine defaults so customers can see\nwhich numbers came from them and which the engine filled in. Every\ndefaulted parameter SHOULD have a corresponding entry in `assumptions`\n— the bridge layer enforces this when wrapping engine output.",
        -                "properties": {
        -                  "assumptions": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "engine_defaults": {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  "user_supplied": {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  }
        -                },
        -                "type": "object"
        -              },
        -              "standard": {
        -                "enum": [
        -                  "CESMM4",
        -                  "NRM2",
        -                  "SMM7",
        -                  "MMHW"
        -                ],
        -                "type": "string"
        -              },
        -              "text_summary": {
        -                "maxLength": 2000,
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "totals_summary": {
        -                "additionalProperties": false,
        -                "description": "Schema § 1.4 — totals_summary as a typed wrapper around the free-form dict.\n\nWire shape is a flat object (`{\"concrete_m3\": {...}, \"rebar_t\": {...}}`).\nWe model it as `RootModel`-equivalent via `model_config(extra=\"allow\")`\n+ a single `__root__`-style `entries` dict. Pydantic v2 recommends\n`RootModel` for free-form roots; using a wrapper class keeps the import\nsurface uniform with the rest of this module.",
        -                "properties": {
        -                  "entries": {
        -                    "additionalProperties": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.4 — single material/work-class total entry.",
        -                      "properties": {
        -                        "quantity": {
        -                          "minimum": 0,
        -                          "type": "number"
        -                        },
        -                        "unit": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "quantity",
        -                        "unit"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "object"
        -                  }
        -                },
        -                "type": "object"
        -              },
        -              "warnings": {
        -                "items": {
        -                  "additionalProperties": false,
        -                  "description": "Schema § 1.8 — a non-fatal geometry advisory (56th-fire T2).\n\nThe wire projection of the engine's `core.GeometryWarning`. Advisory only:\na warning NEVER changes a measured quantity — it flags geometry that is\nvalid but likely a mistake (e.g. a stale dependent-height default). Present\non BOTH tiers — a correctness/safety signal, not a paid feature.",
        -                  "properties": {
        -                    "affected_params": {
        -                      "items": {
        -                        "type": "string"
        -                      },
        -                      "type": "array"
        -                    },
        -                    "code": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "detail": {
        -                      "additionalProperties": {
        -                        "type": "number"
        -                      },
        -                      "type": "object"
        -                    },
        -                    "message": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "severity": {
        -                      "enum": [
        -                        "info",
        -                        "advisory",
        -                        "caution"
        -                      ],
        -                      "type": "string"
        -                    }
        -                  },
        -                  "required": [
        -                    "code",
        -                    "severity",
        -                    "message"
        -                  ],
        -                  "type": "object"
        -                },
        -                "type": "array"
        -              }
        -            },
        -            "required": [
        -              "assembly_slug",
        -              "standard",
        -              "parameters_used",
        -              "boq_rows",
        -              "totals_summary",
        -              "text_summary"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      },
        -      "error": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        -            "properties": {
        -              "code": {
        -                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        -                "enum": [
        -                  "RATE_LIMIT_EXCEEDED",
        -                  "TIER_INSUFFICIENT",
        -                  "INVALID_INPUT",
        -                  "SCHEMA_VERSION_MISMATCH",
        -                  "SCHEMA_INVARIANT_VIOLATION",
        -                  "UPSTREAM_TIMEOUT",
        -                  "BACKEND_FAILURE",
        -                  "IP_BLOCKED",
        -                  "RESOURCE_NOT_FOUND",
        -                  "RENDER_FAILURE",
        -                  "OCR_LOW_CONFIDENCE",
        -                  "MANUAL_REVIEW_REQUIRED",
        -                  "ACCEPTANCE_REQUIRED",
        -                  "INVALID_TOKEN"
        -                ],
        -                "type": "string"
        -              },
        -              "details": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "message": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "recoverable": {
        -                "type": "boolean"
        -              },
        -              "retry_after_seconds": {
        -                "anyOf": [
        -                  {
        -                    "minimum": 0,
        -                    "type": "integer"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              }
        -            },
        -            "required": [
        -              "code",
        -              "message",
        -              "recoverable"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      }
        -    },
        -    "required": [
        -      "_meta"
        -    ],
        -    "type": "object"
        -  },
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "_meta": {
        -        "additionalProperties": false,
        -        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        -        "properties": {
        -          "deliverables": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        -                "properties": {
        -                  "docx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "dxf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "expires_at": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  },
        -                  "pdf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "xlsx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "expires_at"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "document_id": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "issued_at": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "rate_limit_remaining": {
        -            "anyOf": [
        -              {
        -                "minimum": 0,
        -                "type": "integer"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "request_id": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "schema_version": {
        -            "const": "1.0.0",
        -            "default": "1.0.0",
        -            "type": "string"
        -          },
        -          "scope_boundary": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        -                "properties": {
        -                  "not_in_scope": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "produced": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "recommended_companions": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "type": "string"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "produced",
        -                  "not_in_scope"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tier": {
        -            "enum": [
        -              "free",
        -              "paid"
        -            ],
        -            "type": "string"
        -          },
        -          "tier_upgrade": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        -                "properties": {
        -                  "available_tiers": {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        -                      "properties": {
        -                        "billing": {
        -                          "enum": [
        -                            "one_off",
        -                            "monthly",
        -                            "annual"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "currency": {
        -                          "enum": [
        -                            "GBP",
        -                            "SGD",
        -                            "EUR",
        -                            "USD",
        -                            "CAD",
        -                            "AUD",
        -                            "NZD",
        -                            "MYR"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "display_name": {
        -                          "type": "string"
        -                        },
        -                        "price_local": {
        -                          "type": "number"
        -                        },
        -                        "tier_slug": {
        -                          "enum": [
        -                            "7_day_pass",
        -                            "solo",
        -                            "studio",
        -                            "practice"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "unlock_summary": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "tier_slug",
        -                        "display_name",
        -                        "price_local",
        -                        "currency",
        -                        "billing",
        -                        "unlock_summary"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "current_tier": {
        -                    "const": "free",
        -                    "default": "free",
        -                    "type": "string"
        -                  },
        -                  "pass_credit": {
        -                    "anyOf": [
        -                      {
        -                        "additionalProperties": false,
        -                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        -                        "properties": {
        -                          "amount_local": {
        -                            "type": "number"
        -                          },
        -                          "applies_to": {
        -                            "const": "solo_first_month",
        -                            "default": "solo_first_month",
        -                            "type": "string"
        -                          },
        -                          "currency": {
        -                            "type": "string"
        -                          },
        -                          "redeemable_until": {
        -                            "type": "string"
        -                          }
        -                        },
        -                        "required": [
        -                          "amount_local",
        -                          "currency",
        -                          "redeemable_until"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "pricing_url": {
        -                    "default": "https://civilquants.com/pricing",
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "available_tiers"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tos_url": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "upgrade_hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "warranty_disclaimer": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          }
        -        },
        -        "required": [
        -          "request_id",
        -          "issued_at",
        -          "tier"
        -        ],
        -        "type": "object"
        -      },
        -      "data": {
        -        "default": null,
        -        "title": "Data"
        -      },
        -      "error": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        -            "properties": {
        -              "code": {
        -                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        -                "enum": [
        -                  "RATE_LIMIT_EXCEEDED",
        -                  "TIER_INSUFFICIENT",
        -                  "INVALID_INPUT",
        -                  "SCHEMA_VERSION_MISMATCH",
        -                  "SCHEMA_INVARIANT_VIOLATION",
        -                  "UPSTREAM_TIMEOUT",
        -                  "BACKEND_FAILURE",
        -                  "IP_BLOCKED",
        -                  "RESOURCE_NOT_FOUND",
        -                  "RENDER_FAILURE",
        -                  "OCR_LOW_CONFIDENCE",
        -                  "MANUAL_REVIEW_REQUIRED",
        -                  "ACCEPTANCE_REQUIRED",
        -                  "INVALID_TOKEN"
        -                ],
        -                "type": "string"
        -              },
        -              "details": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "message": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "recoverable": {
        -                "type": "boolean"
        -              },
        -              "retry_after_seconds": {
        -                "anyOf": [
        -                  {
        -                    "minimum": 0,
        -                    "type": "integer"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              }
        -            },
        -            "required": [
        -              "code",
        -              "message",
        -              "recoverable"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      }
        -    },
        -    "required": [
        -      "_meta"
        -    ],
        -    "type": "object"
        -  }
        -]New value: +[
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "_meta": {
        +        "additionalProperties": false,
        +        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        +        "properties": {
        +          "deliverables": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        +                "properties": {
        +                  "docx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "dxf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "expires_at": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  },
        +                  "pdf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "xlsx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "expires_at"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "document_id": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "issued_at": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "output_mode": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Surfaces what a trimmed ``output_mode`` withheld from ``data``.\n\nA trimmed mode (``summary`` / ``boq`` / ``boq_with_backup``) withholds\nalready-computed fields to keep the chat payload small. The withheld value\nreads to a client agent as \"capability missing\" (the box-culvert \"geometry\nbuilder isn't firing\" scare) rather than \"pared for size\": ``drawing`` and\n``audit_trail`` appear as ``null``, ``boq_rows`` as an empty list ``[]``\n(its type forbids ``null``) — both indistinguishable from a genuine absent\nresult. This names the withheld fields and the exact mode that brings each\nback, so the value is unambiguous. Absent on the default ``full_json`` mode\n— nothing is withheld, nothing to point at.",
        +                "properties": {
        +                  "mode": {
        +                    "enum": [
        +                      "summary",
        +                      "boq",
        +                      "boq_with_backup"
        +                    ],
        +                    "type": "string"
        +                  },
        +                  "omitted_fields": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "minItems": 1,
        +                    "type": "array"
        +                  },
        +                  "retrieve_with": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "mode",
        +                  "omitted_fields",
        +                  "retrieve_with"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "rate_limit_remaining": {
        +            "anyOf": [
        +              {
        +                "minimum": 0,
        +                "type": "integer"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "request_id": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "schema_version": {
        +            "const": "1.0.0",
        +            "default": "1.0.0",
        +            "type": "string"
        +          },
        +          "scope_boundary": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        +                "properties": {
        +                  "not_in_scope": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "produced": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "recommended_companions": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "type": "string"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "produced",
        +                  "not_in_scope"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tier": {
        +            "enum": [
        +              "free",
        +              "paid"
        +            ],
        +            "type": "string"
        +          },
        +          "tier_upgrade": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        +                "properties": {
        +                  "available_tiers": {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        +                      "properties": {
        +                        "billing": {
        +                          "enum": [
        +                            "one_off",
        +                            "monthly",
        +                            "annual"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "currency": {
        +                          "enum": [
        +                            "GBP",
        +                            "SGD",
        +                            "EUR",
        +                            "USD",
        +                            "CAD",
        +                            "AUD",
        +                            "NZD",
        +                            "MYR"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "display_name": {
        +                          "type": "string"
        +                        },
        +                        "price_local": {
        +                          "type": "number"
        +                        },
        +                        "tier_slug": {
        +                          "enum": [
        +                            "7_day_pass",
        +                            "solo",
        +                            "studio",
        +                            "practice"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "unlock_summary": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "tier_slug",
        +                        "display_name",
        +                        "price_local",
        +                        "currency",
        +                        "billing",
        +                        "unlock_summary"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "current_tier": {
        +                    "const": "free",
        +                    "default": "free",
        +                    "type": "string"
        +                  },
        +                  "pass_credit": {
        +                    "anyOf": [
        +                      {
        +                        "additionalProperties": false,
        +                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        +                        "properties": {
        +                          "amount_local": {
        +                            "type": "number"
        +                          },
        +                          "applies_to": {
        +                            "const": "solo_first_month",
        +                            "default": "solo_first_month",
        +                            "type": "string"
        +                          },
        +                          "currency": {
        +                            "type": "string"
        +                          },
        +                          "redeemable_until": {
        +                            "type": "string"
        +                          }
        +                        },
        +                        "required": [
        +                          "amount_local",
        +                          "currency",
        +                          "redeemable_until"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "pricing_url": {
        +                    "default": "https://civilquants.com/pricing",
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "available_tiers"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tos_url": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "upgrade_hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "warranty_disclaimer": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          }
        +        },
        +        "required": [
        +          "request_id",
        +          "issued_at",
        +          "tier"
        +        ],
        +        "type": "object"
        +      },
        +      "data": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Schema § 1.1 — the typed payload returned inside `MCPResponse[ComputeResult]`.\n\nFree-tier responses omit `drawings` (the downloadable CAD artefact\npointers — the paid differentiator); the bridge enforces this. The\n`audit_trail` and the inline `drawing` preview are present on BOTH tiers\n(V1 ALIGN / 60th-fire D + C). `text_summary` is bounded to 2000 chars —\nkeeps the LLM-facing summary token-cheap and forces longer narrative into\nBoQ row descriptions where it belongs. `warnings` is the non-fatal\ngeometry advisory list (both tiers).",
        +            "properties": {
        +              "assembly_slug": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "audit_trail": {
        +                "anyOf": [
        +                  {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.7 — paid-tier audit-trail entry.\n\nOne entry per BoQ row; `boq_row_index` ties to the row position in\n`ComputeResult.boq_rows`. `derivation` is the human-readable formula\nwalk-through; `formula` is the optional formal expression.",
        +                      "properties": {
        +                        "boq_row_index": {
        +                          "minimum": 0,
        +                          "type": "integer"
        +                        },
        +                        "derivation": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "formula": {
        +                          "anyOf": [
        +                            {
        +                              "type": "string"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ],
        +                          "default": null
        +                        },
        +                        "id": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "parameters_referenced": {
        +                          "items": {
        +                            "type": "string"
        +                          },
        +                          "type": "array"
        +                        }
        +                      },
        +                      "required": [
        +                        "id",
        +                        "boq_row_index",
        +                        "derivation"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "boq_rows": {
        +                "items": {
        +                  "additionalProperties": false,
        +                  "description": "Schema § 1.3 — a single bill row in the requested standard's format.\n\n`description` is the non-verbatim functional description per spec § 13.9 /\n§ 15 invariant — NEVER reproduces a standard's verbatim clause text.\n`rate` / `amount` ship null because rates are commodity data the customer\nowns; the engine's job is the measurement, not the pricing.",
        +                  "properties": {
        +                    "amount": {
        +                      "anyOf": [
        +                        {
        +                          "type": "number"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "attribution": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "audit_id": {
        +                      "anyOf": [
        +                        {
        +                          "type": "string"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "description": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "quantity": {
        +                      "minimum": 0,
        +                      "type": "number"
        +                    },
        +                    "rate": {
        +                      "anyOf": [
        +                        {
        +                          "type": "number"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "unit": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "work_section": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    }
        +                  },
        +                  "required": [
        +                    "work_section",
        +                    "description",
        +                    "quantity",
        +                    "unit",
        +                    "attribution"
        +                  ],
        +                  "type": "object"
        +                },
        +                "type": "array"
        +              },
        +              "drawing": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": false,
        +                    "description": "Schema § 1.6a — inline server-rendered SVG preview of the geometry.\n\nThe MCP mirror of the web ``/compute`` response's ``drawing`` field\n(``api.schemas.compute.DrawingRef``): the same on-screen dimensioned\ndrawing both tiers see in the workspace, surfaced on the MCP compute\nresponse so a chat client can render it inline (60th-fire item C). This\nis the on-screen preview — present on BOTH tiers per the free/paid\nboundary; the downloadable CAD artefacts (DXF / dimensioned PDF) remain\nthe paid differentiator via the export tools.\n\nDefined here rather than importing ``DrawingRef`` because the web\n``schemas`` package imports back into this module (``schemas.render``),\nso reusing it would create an import cycle — the MCP wire contract keeps\nits own copy, the same pattern as ``BoQRow`` / ``DrawingReference``.",
        +                    "properties": {
        +                      "entity_count": {
        +                        "minimum": 0,
        +                        "type": "integer"
        +                      },
        +                      "svg_b64": {
        +                        "minLength": 1,
        +                        "type": "string"
        +                      },
        +                      "unit_of_drawing": {
        +                        "const": "m",
        +                        "default": "m",
        +                        "type": "string"
        +                      },
        +                      "viewbox_height": {
        +                        "exclusiveMinimum": 0,
        +                        "type": "number"
        +                      },
        +                      "viewbox_width": {
        +                        "exclusiveMinimum": 0,
        +                        "type": "number"
        +                      },
        +                      "viewbox_x": {
        +                        "type": "number"
        +                      },
        +                      "viewbox_y": {
        +                        "type": "number"
        +                      }
        +                    },
        +                    "required": [
        +                      "svg_b64",
        +                      "viewbox_x",
        +                      "viewbox_y",
        +                      "viewbox_width",
        +                      "viewbox_height",
        +                      "entity_count"
        +                    ],
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "drawings": {
        +                "anyOf": [
        +                  {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.6 — paid-tier drawing artefact pointer.\n\n`url` is an R2-signed URL; expiry is carried in `_meta.deliverables.expires_at`\non the envelope (not duplicated here). `layers` is DXF-only; PDF/SVG\ncallers omit it.",
        +                      "properties": {
        +                        "drawing_type": {
        +                          "enum": [
        +                            "section",
        +                            "plan",
        +                            "elevation",
        +                            "isometric",
        +                            "detail"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "format": {
        +                          "enum": [
        +                            "DXF",
        +                            "PDF",
        +                            "SVG"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "layers": {
        +                          "anyOf": [
        +                            {
        +                              "items": {
        +                                "type": "string"
        +                              },
        +                              "type": "array"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ],
        +                          "default": null
        +                        },
        +                        "scale": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "sheet_size": {
        +                          "enum": [
        +                            "A1",
        +                            "A2",
        +                            "A3",
        +                            "A4"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "url": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "drawing_type",
        +                        "format",
        +                        "url",
        +                        "sheet_size",
        +                        "scale"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "parameters_used": {
        +                "additionalProperties": false,
        +                "description": "Schema § 1.2 — the parameter snapshot the engine actually used.\n\nSplits user-supplied values from engine defaults so customers can see\nwhich numbers came from them and which the engine filled in. Every\ndefaulted parameter SHOULD have a corresponding entry in `assumptions`\n— the bridge layer enforces this when wrapping engine output.",
        +                "properties": {
        +                  "assumptions": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "engine_defaults": {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  "user_supplied": {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  }
        +                },
        +                "type": "object"
        +              },
        +              "standard": {
        +                "enum": [
        +                  "CESMM4",
        +                  "NRM2",
        +                  "SMM7",
        +                  "MMHW"
        +                ],
        +                "type": "string"
        +              },
        +              "text_summary": {
        +                "maxLength": 2000,
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "totals_summary": {
        +                "additionalProperties": false,
        +                "description": "Schema § 1.4 — totals_summary as a typed wrapper around the free-form dict.\n\nWire shape is a flat object (`{\"concrete_m3\": {...}, \"rebar_t\": {...}}`).\nWe model it as `RootModel`-equivalent via `model_config(extra=\"allow\")`\n+ a single `__root__`-style `entries` dict. Pydantic v2 recommends\n`RootModel` for free-form roots; using a wrapper class keeps the import\nsurface uniform with the rest of this module.",
        +                "properties": {
        +                  "entries": {
        +                    "additionalProperties": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.4 — single material/work-class total entry.",
        +                      "properties": {
        +                        "quantity": {
        +                          "minimum": 0,
        +                          "type": "number"
        +                        },
        +                        "unit": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "quantity",
        +                        "unit"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "object"
        +                  }
        +                },
        +                "type": "object"
        +              },
        +              "warnings": {
        +                "items": {
        +                  "additionalProperties": false,
        +                  "description": "Schema § 1.8 — a non-fatal geometry advisory (56th-fire T2).\n\nThe wire projection of the engine's `core.GeometryWarning`. Advisory only:\na warning NEVER changes a measured quantity — it flags geometry that is\nvalid but likely a mistake (e.g. a stale dependent-height default). Present\non BOTH tiers — a correctness/safety signal, not a paid feature.",
        +                  "properties": {
        +                    "affected_params": {
        +                      "items": {
        +                        "type": "string"
        +                      },
        +                      "type": "array"
        +                    },
        +                    "code": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "detail": {
        +                      "additionalProperties": {
        +                        "type": "number"
        +                      },
        +                      "type": "object"
        +                    },
        +                    "message": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "severity": {
        +                      "enum": [
        +                        "info",
        +                        "advisory",
        +                        "caution"
        +                      ],
        +                      "type": "string"
        +                    }
        +                  },
        +                  "required": [
        +                    "code",
        +                    "severity",
        +                    "message"
        +                  ],
        +                  "type": "object"
        +                },
        +                "type": "array"
        +              }
        +            },
        +            "required": [
        +              "assembly_slug",
        +              "standard",
        +              "parameters_used",
        +              "boq_rows",
        +              "totals_summary",
        +              "text_summary"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      },
        +      "error": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        +            "properties": {
        +              "code": {
        +                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        +                "enum": [
        +                  "RATE_LIMIT_EXCEEDED",
        +                  "TIER_INSUFFICIENT",
        +                  "INVALID_INPUT",
        +                  "SCHEMA_VERSION_MISMATCH",
        +                  "SCHEMA_INVARIANT_VIOLATION",
        +                  "UPSTREAM_TIMEOUT",
        +                  "BACKEND_FAILURE",
        +                  "IP_BLOCKED",
        +                  "RESOURCE_NOT_FOUND",
        +                  "RENDER_FAILURE",
        +                  "OCR_LOW_CONFIDENCE",
        +                  "MANUAL_REVIEW_REQUIRED",
        +                  "ACCEPTANCE_REQUIRED",
        +                  "INVALID_TOKEN"
        +                ],
        +                "type": "string"
        +              },
        +              "details": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "message": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "recoverable": {
        +                "type": "boolean"
        +              },
        +              "retry_after_seconds": {
        +                "anyOf": [
        +                  {
        +                    "minimum": 0,
        +                    "type": "integer"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              }
        +            },
        +            "required": [
        +              "code",
        +              "message",
        +              "recoverable"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      }
        +    },
        +    "required": [
        +      "_meta"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "_meta": {
        +        "additionalProperties": false,
        +        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        +        "properties": {
        +          "deliverables": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        +                "properties": {
        +                  "docx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "dxf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "expires_at": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  },
        +                  "pdf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "xlsx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "expires_at"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "document_id": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "issued_at": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "output_mode": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Surfaces what a trimmed ``output_mode`` withheld from ``data``.\n\nA trimmed mode (``summary`` / ``boq`` / ``boq_with_backup``) withholds\nalready-computed fields to keep the chat payload small. The withheld value\nreads to a client agent as \"capability missing\" (the box-culvert \"geometry\nbuilder isn't firing\" scare) rather than \"pared for size\": ``drawing`` and\n``audit_trail`` appear as ``null``, ``boq_rows`` as an empty list ``[]``\n(its type forbids ``null``) — both indistinguishable from a genuine absent\nresult. This names the withheld fields and the exact mode that brings each\nback, so the value is unambiguous. Absent on the default ``full_json`` mode\n— nothing is withheld, nothing to point at.",
        +                "properties": {
        +                  "mode": {
        +                    "enum": [
        +                      "summary",
        +                      "boq",
        +                      "boq_with_backup"
        +                    ],
        +                    "type": "string"
        +                  },
        +                  "omitted_fields": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "minItems": 1,
        +                    "type": "array"
        +                  },
        +                  "retrieve_with": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "mode",
        +                  "omitted_fields",
        +                  "retrieve_with"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "rate_limit_remaining": {
        +            "anyOf": [
        +              {
        +                "minimum": 0,
        +                "type": "integer"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "request_id": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "schema_version": {
        +            "const": "1.0.0",
        +            "default": "1.0.0",
        +            "type": "string"
        +          },
        +          "scope_boundary": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        +                "properties": {
        +                  "not_in_scope": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "produced": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "recommended_companions": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "type": "string"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "produced",
        +                  "not_in_scope"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tier": {
        +            "enum": [
        +              "free",
        +              "paid"
        +            ],
        +            "type": "string"
        +          },
        +          "tier_upgrade": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        +                "properties": {
        +                  "available_tiers": {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        +                      "properties": {
        +                        "billing": {
        +                          "enum": [
        +                            "one_off",
        +                            "monthly",
        +                            "annual"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "currency": {
        +                          "enum": [
        +                            "GBP",
        +                            "SGD",
        +                            "EUR",
        +                            "USD",
        +                            "CAD",
        +                            "AUD",
        +                            "NZD",
        +                            "MYR"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "display_name": {
        +                          "type": "string"
        +                        },
        +                        "price_local": {
        +                          "type": "number"
        +                        },
        +                        "tier_slug": {
        +                          "enum": [
        +                            "7_day_pass",
        +                            "solo",
        +                            "studio",
        +                            "practice"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "unlock_summary": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "tier_slug",
        +                        "display_name",
        +                        "price_local",
        +                        "currency",
        +                        "billing",
        +                        "unlock_summary"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "current_tier": {
        +                    "const": "free",
        +                    "default": "free",
        +                    "type": "string"
        +                  },
        +                  "pass_credit": {
        +                    "anyOf": [
        +                      {
        +                        "additionalProperties": false,
        +                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        +                        "properties": {
        +                          "amount_local": {
        +                            "type": "number"
        +                          },
        +                          "applies_to": {
        +                            "const": "solo_first_month",
        +                            "default": "solo_first_month",
        +                            "type": "string"
        +                          },
        +                          "currency": {
        +                            "type": "string"
        +                          },
        +                          "redeemable_until": {
        +                            "type": "string"
        +                          }
        +                        },
        +                        "required": [
        +                          "amount_local",
        +                          "currency",
        +                          "redeemable_until"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "pricing_url": {
        +                    "default": "https://civilquants.com/pricing",
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "available_tiers"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tos_url": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "upgrade_hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "warranty_disclaimer": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          }
        +        },
        +        "required": [
        +          "request_id",
        +          "issued_at",
        +          "tier"
        +        ],
        +        "type": "object"
        +      },
        +      "data": {
        +        "default": null,
        +        "title": "Data"
        +      },
        +      "error": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        +            "properties": {
        +              "code": {
        +                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        +                "enum": [
        +                  "RATE_LIMIT_EXCEEDED",
        +                  "TIER_INSUFFICIENT",
        +                  "INVALID_INPUT",
        +                  "SCHEMA_VERSION_MISMATCH",
        +                  "SCHEMA_INVARIANT_VIOLATION",
        +                  "UPSTREAM_TIMEOUT",
        +                  "BACKEND_FAILURE",
        +                  "IP_BLOCKED",
        +                  "RESOURCE_NOT_FOUND",
        +                  "RENDER_FAILURE",
        +                  "OCR_LOW_CONFIDENCE",
        +                  "MANUAL_REVIEW_REQUIRED",
        +                  "ACCEPTANCE_REQUIRED",
        +                  "INVALID_TOKEN"
        +                ],
        +                "type": "string"
        +              },
        +              "details": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "message": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "recoverable": {
        +                "type": "boolean"
        +              },
        +              "retry_after_seconds": {
        +                "anyOf": [
        +                  {
        +                    "minimum": 0,
        +                    "type": "integer"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              }
        +            },
        +            "required": [
        +              "code",
        +              "message",
        +              "recoverable"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      }
        +    },
        +    "required": [
        +      "_meta"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedcompute_cantilever_wall1 field changed
      • changedOutput schema / properties / result / anyOf
        Previous value: -[
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "_meta": {
        -        "additionalProperties": false,
        -        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        -        "properties": {
        -          "deliverables": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        -                "properties": {
        -                  "docx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "dxf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "expires_at": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  },
        -                  "pdf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "xlsx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "expires_at"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "document_id": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "issued_at": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "rate_limit_remaining": {
        -            "anyOf": [
        -              {
        -                "minimum": 0,
        -                "type": "integer"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "request_id": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "schema_version": {
        -            "const": "1.0.0",
        -            "default": "1.0.0",
        -            "type": "string"
        -          },
        -          "scope_boundary": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        -                "properties": {
        -                  "not_in_scope": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "produced": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "recommended_companions": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "type": "string"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "produced",
        -                  "not_in_scope"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tier": {
        -            "enum": [
        -              "free",
        -              "paid"
        -            ],
        -            "type": "string"
        -          },
        -          "tier_upgrade": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        -                "properties": {
        -                  "available_tiers": {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        -                      "properties": {
        -                        "billing": {
        -                          "enum": [
        -                            "one_off",
        -                            "monthly",
        -                            "annual"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "currency": {
        -                          "enum": [
        -                            "GBP",
        -                            "SGD",
        -                            "EUR",
        -                            "USD",
        -                            "CAD",
        -                            "AUD",
        -                            "NZD",
        -                            "MYR"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "display_name": {
        -                          "type": "string"
        -                        },
        -                        "price_local": {
        -                          "type": "number"
        -                        },
        -                        "tier_slug": {
        -                          "enum": [
        -                            "7_day_pass",
        -                            "solo",
        -                            "studio",
        -                            "practice"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "unlock_summary": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "tier_slug",
        -                        "display_name",
        -                        "price_local",
        -                        "currency",
        -                        "billing",
        -                        "unlock_summary"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "current_tier": {
        -                    "const": "free",
        -                    "default": "free",
        -                    "type": "string"
        -                  },
        -                  "pass_credit": {
        -                    "anyOf": [
        -                      {
        -                        "additionalProperties": false,
        -                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        -                        "properties": {
        -                          "amount_local": {
        -                            "type": "number"
        -                          },
        -                          "applies_to": {
        -                            "const": "solo_first_month",
        -                            "default": "solo_first_month",
        -                            "type": "string"
        -                          },
        -                          "currency": {
        -                            "type": "string"
        -                          },
        -                          "redeemable_until": {
        -                            "type": "string"
        -                          }
        -                        },
        -                        "required": [
        -                          "amount_local",
        -                          "currency",
        -                          "redeemable_until"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "pricing_url": {
        -                    "default": "https://civilquants.com/pricing",
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "available_tiers"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tos_url": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "upgrade_hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "warranty_disclaimer": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          }
        -        },
        -        "required": [
        -          "request_id",
        -          "issued_at",
        -          "tier"
        -        ],
        -        "type": "object"
        -      },
        -      "data": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Schema § 1.1 — the typed payload returned inside `MCPResponse[ComputeResult]`.\n\nFree-tier responses omit `drawings` (the downloadable CAD artefact\npointers — the paid differentiator); the bridge enforces this. The\n`audit_trail` and the inline `drawing` preview are present on BOTH tiers\n(V1 ALIGN / 60th-fire D + C). `text_summary` is bounded to 2000 chars —\nkeeps the LLM-facing summary token-cheap and forces longer narrative into\nBoQ row descriptions where it belongs. `warnings` is the non-fatal\ngeometry advisory list (both tiers).",
        -            "properties": {
        -              "assembly_slug": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "audit_trail": {
        -                "anyOf": [
        -                  {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.7 — paid-tier audit-trail entry.\n\nOne entry per BoQ row; `boq_row_index` ties to the row position in\n`ComputeResult.boq_rows`. `derivation` is the human-readable formula\nwalk-through; `formula` is the optional formal expression.",
        -                      "properties": {
        -                        "boq_row_index": {
        -                          "minimum": 0,
        -                          "type": "integer"
        -                        },
        -                        "derivation": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "formula": {
        -                          "anyOf": [
        -                            {
        -                              "type": "string"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ],
        -                          "default": null
        -                        },
        -                        "id": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "parameters_referenced": {
        -                          "items": {
        -                            "type": "string"
        -                          },
        -                          "type": "array"
        -                        }
        -                      },
        -                      "required": [
        -                        "id",
        -                        "boq_row_index",
        -                        "derivation"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "boq_rows": {
        -                "items": {
        -                  "additionalProperties": false,
        -                  "description": "Schema § 1.3 — a single bill row in the requested standard's format.\n\n`description` is the non-verbatim functional description per spec § 13.9 /\n§ 15 invariant — NEVER reproduces a standard's verbatim clause text.\n`rate` / `amount` ship null because rates are commodity data the customer\nowns; the engine's job is the measurement, not the pricing.",
        -                  "properties": {
        -                    "amount": {
        -                      "anyOf": [
        -                        {
        -                          "type": "number"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "attribution": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "audit_id": {
        -                      "anyOf": [
        -                        {
        -                          "type": "string"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "description": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "quantity": {
        -                      "minimum": 0,
        -                      "type": "number"
        -                    },
        -                    "rate": {
        -                      "anyOf": [
        -                        {
        -                          "type": "number"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "unit": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "work_section": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    }
        -                  },
        -                  "required": [
        -                    "work_section",
        -                    "description",
        -                    "quantity",
        -                    "unit",
        -                    "attribution"
        -                  ],
        -                  "type": "object"
        -                },
        -                "type": "array"
        -              },
        -              "drawing": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": false,
        -                    "description": "Schema § 1.6a — inline server-rendered SVG preview of the geometry.\n\nThe MCP mirror of the web ``/compute`` response's ``drawing`` field\n(``api.schemas.compute.DrawingRef``): the same on-screen dimensioned\ndrawing both tiers see in the workspace, surfaced on the MCP compute\nresponse so a chat client can render it inline (60th-fire item C). This\nis the on-screen preview — present on BOTH tiers per the free/paid\nboundary; the downloadable CAD artefacts (DXF / dimensioned PDF) remain\nthe paid differentiator via the export tools.\n\nDefined here rather than importing ``DrawingRef`` because the web\n``schemas`` package imports back into this module (``schemas.render``),\nso reusing it would create an import cycle — the MCP wire contract keeps\nits own copy, the same pattern as ``BoQRow`` / ``DrawingReference``.",
        -                    "properties": {
        -                      "entity_count": {
        -                        "minimum": 0,
        -                        "type": "integer"
        -                      },
        -                      "svg_b64": {
        -                        "minLength": 1,
        -                        "type": "string"
        -                      },
        -                      "unit_of_drawing": {
        -                        "const": "m",
        -                        "default": "m",
        -                        "type": "string"
        -                      },
        -                      "viewbox_height": {
        -                        "exclusiveMinimum": 0,
        -                        "type": "number"
        -                      },
        -                      "viewbox_width": {
        -                        "exclusiveMinimum": 0,
        -                        "type": "number"
        -                      },
        -                      "viewbox_x": {
        -                        "type": "number"
        -                      },
        -                      "viewbox_y": {
        -                        "type": "number"
        -                      }
        -                    },
        -                    "required": [
        -                      "svg_b64",
        -                      "viewbox_x",
        -                      "viewbox_y",
        -                      "viewbox_width",
        -                      "viewbox_height",
        -                      "entity_count"
        -                    ],
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "drawings": {
        -                "anyOf": [
        -                  {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.6 — paid-tier drawing artefact pointer.\n\n`url` is an R2-signed URL; expiry is carried in `_meta.deliverables.expires_at`\non the envelope (not duplicated here). `layers` is DXF-only; PDF/SVG\ncallers omit it.",
        -                      "properties": {
        -                        "drawing_type": {
        -                          "enum": [
        -                            "section",
        -                            "plan",
        -                            "elevation",
        -                            "isometric",
        -                            "detail"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "format": {
        -                          "enum": [
        -                            "DXF",
        -                            "PDF",
        -                            "SVG"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "layers": {
        -                          "anyOf": [
        -                            {
        -                              "items": {
        -                                "type": "string"
        -                              },
        -                              "type": "array"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ],
        -                          "default": null
        -                        },
        -                        "scale": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "sheet_size": {
        -                          "enum": [
        -                            "A1",
        -                            "A2",
        -                            "A3",
        -                            "A4"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "url": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "drawing_type",
        -                        "format",
        -                        "url",
        -                        "sheet_size",
        -                        "scale"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "parameters_used": {
        -                "additionalProperties": false,
        -                "description": "Schema § 1.2 — the parameter snapshot the engine actually used.\n\nSplits user-supplied values from engine defaults so customers can see\nwhich numbers came from them and which the engine filled in. Every\ndefaulted parameter SHOULD have a corresponding entry in `assumptions`\n— the bridge layer enforces this when wrapping engine output.",
        -                "properties": {
        -                  "assumptions": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "engine_defaults": {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  "user_supplied": {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  }
        -                },
        -                "type": "object"
        -              },
        -              "standard": {
        -                "enum": [
        -                  "CESMM4",
        -                  "NRM2",
        -                  "SMM7",
        -                  "MMHW"
        -                ],
        -                "type": "string"
        -              },
        -              "text_summary": {
        -                "maxLength": 2000,
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "totals_summary": {
        -                "additionalProperties": false,
        -                "description": "Schema § 1.4 — totals_summary as a typed wrapper around the free-form dict.\n\nWire shape is a flat object (`{\"concrete_m3\": {...}, \"rebar_t\": {...}}`).\nWe model it as `RootModel`-equivalent via `model_config(extra=\"allow\")`\n+ a single `__root__`-style `entries` dict. Pydantic v2 recommends\n`RootModel` for free-form roots; using a wrapper class keeps the import\nsurface uniform with the rest of this module.",
        -                "properties": {
        -                  "entries": {
        -                    "additionalProperties": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.4 — single material/work-class total entry.",
        -                      "properties": {
        -                        "quantity": {
        -                          "minimum": 0,
        -                          "type": "number"
        -                        },
        -                        "unit": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "quantity",
        -                        "unit"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "object"
        -                  }
        -                },
        -                "type": "object"
        -              },
        -              "warnings": {
        -                "items": {
        -                  "additionalProperties": false,
        -                  "description": "Schema § 1.8 — a non-fatal geometry advisory (56th-fire T2).\n\nThe wire projection of the engine's `core.GeometryWarning`. Advisory only:\na warning NEVER changes a measured quantity — it flags geometry that is\nvalid but likely a mistake (e.g. a stale dependent-height default). Present\non BOTH tiers — a correctness/safety signal, not a paid feature.",
        -                  "properties": {
        -                    "affected_params": {
        -                      "items": {
        -                        "type": "string"
        -                      },
        -                      "type": "array"
        -                    },
        -                    "code": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "detail": {
        -                      "additionalProperties": {
        -                        "type": "number"
        -                      },
        -                      "type": "object"
        -                    },
        -                    "message": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "severity": {
        -                      "enum": [
        -                        "info",
        -                        "advisory",
        -                        "caution"
        -                      ],
        -                      "type": "string"
        -                    }
        -                  },
        -                  "required": [
        -                    "code",
        -                    "severity",
        -                    "message"
        -                  ],
        -                  "type": "object"
        -                },
        -                "type": "array"
        -              }
        -            },
        -            "required": [
        -              "assembly_slug",
        -              "standard",
        -              "parameters_used",
        -              "boq_rows",
        -              "totals_summary",
        -              "text_summary"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      },
        -      "error": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        -            "properties": {
        -              "code": {
        -                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        -                "enum": [
        -                  "RATE_LIMIT_EXCEEDED",
        -                  "TIER_INSUFFICIENT",
        -                  "INVALID_INPUT",
        -                  "SCHEMA_VERSION_MISMATCH",
        -                  "SCHEMA_INVARIANT_VIOLATION",
        -                  "UPSTREAM_TIMEOUT",
        -                  "BACKEND_FAILURE",
        -                  "IP_BLOCKED",
        -                  "RESOURCE_NOT_FOUND",
        -                  "RENDER_FAILURE",
        -                  "OCR_LOW_CONFIDENCE",
        -                  "MANUAL_REVIEW_REQUIRED",
        -                  "ACCEPTANCE_REQUIRED",
        -                  "INVALID_TOKEN"
        -                ],
        -                "type": "string"
        -              },
        -              "details": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "message": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "recoverable": {
        -                "type": "boolean"
        -              },
        -              "retry_after_seconds": {
        -                "anyOf": [
        -                  {
        -                    "minimum": 0,
        -                    "type": "integer"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              }
        -            },
        -            "required": [
        -              "code",
        -              "message",
        -              "recoverable"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      }
        -    },
        -    "required": [
        -      "_meta"
        -    ],
        -    "type": "object"
        -  },
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "_meta": {
        -        "additionalProperties": false,
        -        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        -        "properties": {
        -          "deliverables": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        -                "properties": {
        -                  "docx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "dxf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "expires_at": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  },
        -                  "pdf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "xlsx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "expires_at"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "document_id": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "issued_at": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "rate_limit_remaining": {
        -            "anyOf": [
        -              {
        -                "minimum": 0,
        -                "type": "integer"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "request_id": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "schema_version": {
        -            "const": "1.0.0",
        -            "default": "1.0.0",
        -            "type": "string"
        -          },
        -          "scope_boundary": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        -                "properties": {
        -                  "not_in_scope": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "produced": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "recommended_companions": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "type": "string"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "produced",
        -                  "not_in_scope"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tier": {
        -            "enum": [
        -              "free",
        -              "paid"
        -            ],
        -            "type": "string"
        -          },
        -          "tier_upgrade": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        -                "properties": {
        -                  "available_tiers": {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        -                      "properties": {
        -                        "billing": {
        -                          "enum": [
        -                            "one_off",
        -                            "monthly",
        -                            "annual"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "currency": {
        -                          "enum": [
        -                            "GBP",
        -                            "SGD",
        -                            "EUR",
        -                            "USD",
        -                            "CAD",
        -                            "AUD",
        -                            "NZD",
        -                            "MYR"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "display_name": {
        -                          "type": "string"
        -                        },
        -                        "price_local": {
        -                          "type": "number"
        -                        },
        -                        "tier_slug": {
        -                          "enum": [
        -                            "7_day_pass",
        -                            "solo",
        -                            "studio",
        -                            "practice"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "unlock_summary": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "tier_slug",
        -                        "display_name",
        -                        "price_local",
        -                        "currency",
        -                        "billing",
        -                        "unlock_summary"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "current_tier": {
        -                    "const": "free",
        -                    "default": "free",
        -                    "type": "string"
        -                  },
        -                  "pass_credit": {
        -                    "anyOf": [
        -                      {
        -                        "additionalProperties": false,
        -                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        -                        "properties": {
        -                          "amount_local": {
        -                            "type": "number"
        -                          },
        -                          "applies_to": {
        -                            "const": "solo_first_month",
        -                            "default": "solo_first_month",
        -                            "type": "string"
        -                          },
        -                          "currency": {
        -                            "type": "string"
        -                          },
        -                          "redeemable_until": {
        -                            "type": "string"
        -                          }
        -                        },
        -                        "required": [
        -                          "amount_local",
        -                          "currency",
        -                          "redeemable_until"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "pricing_url": {
        -                    "default": "https://civilquants.com/pricing",
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "available_tiers"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tos_url": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "upgrade_hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "warranty_disclaimer": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          }
        -        },
        -        "required": [
        -          "request_id",
        -          "issued_at",
        -          "tier"
        -        ],
        -        "type": "object"
        -      },
        -      "data": {
        -        "default": null,
        -        "title": "Data"
        -      },
        -      "error": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        -            "properties": {
        -              "code": {
        -                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        -                "enum": [
        -                  "RATE_LIMIT_EXCEEDED",
        -                  "TIER_INSUFFICIENT",
        -                  "INVALID_INPUT",
        -                  "SCHEMA_VERSION_MISMATCH",
        -                  "SCHEMA_INVARIANT_VIOLATION",
        -                  "UPSTREAM_TIMEOUT",
        -                  "BACKEND_FAILURE",
        -                  "IP_BLOCKED",
        -                  "RESOURCE_NOT_FOUND",
        -                  "RENDER_FAILURE",
        -                  "OCR_LOW_CONFIDENCE",
        -                  "MANUAL_REVIEW_REQUIRED",
        -                  "ACCEPTANCE_REQUIRED",
        -                  "INVALID_TOKEN"
        -                ],
        -                "type": "string"
        -              },
        -              "details": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "message": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "recoverable": {
        -                "type": "boolean"
        -              },
        -              "retry_after_seconds": {
        -                "anyOf": [
        -                  {
        -                    "minimum": 0,
        -                    "type": "integer"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              }
        -            },
        -            "required": [
        -              "code",
        -              "message",
        -              "recoverable"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      }
        -    },
        -    "required": [
        -      "_meta"
        -    ],
        -    "type": "object"
        -  }
        -]New value: +[
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "_meta": {
        +        "additionalProperties": false,
        +        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        +        "properties": {
        +          "deliverables": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        +                "properties": {
        +                  "docx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "dxf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "expires_at": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  },
        +                  "pdf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "xlsx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "expires_at"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "document_id": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "issued_at": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "output_mode": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Surfaces what a trimmed ``output_mode`` withheld from ``data``.\n\nA trimmed mode (``summary`` / ``boq`` / ``boq_with_backup``) withholds\nalready-computed fields to keep the chat payload small. The withheld value\nreads to a client agent as \"capability missing\" (the box-culvert \"geometry\nbuilder isn't firing\" scare) rather than \"pared for size\": ``drawing`` and\n``audit_trail`` appear as ``null``, ``boq_rows`` as an empty list ``[]``\n(its type forbids ``null``) — both indistinguishable from a genuine absent\nresult. This names the withheld fields and the exact mode that brings each\nback, so the value is unambiguous. Absent on the default ``full_json`` mode\n— nothing is withheld, nothing to point at.",
        +                "properties": {
        +                  "mode": {
        +                    "enum": [
        +                      "summary",
        +                      "boq",
        +                      "boq_with_backup"
        +                    ],
        +                    "type": "string"
        +                  },
        +                  "omitted_fields": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "minItems": 1,
        +                    "type": "array"
        +                  },
        +                  "retrieve_with": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "mode",
        +                  "omitted_fields",
        +                  "retrieve_with"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "rate_limit_remaining": {
        +            "anyOf": [
        +              {
        +                "minimum": 0,
        +                "type": "integer"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "request_id": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "schema_version": {
        +            "const": "1.0.0",
        +            "default": "1.0.0",
        +            "type": "string"
        +          },
        +          "scope_boundary": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        +                "properties": {
        +                  "not_in_scope": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "produced": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "recommended_companions": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "type": "string"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "produced",
        +                  "not_in_scope"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tier": {
        +            "enum": [
        +              "free",
        +              "paid"
        +            ],
        +            "type": "string"
        +          },
        +          "tier_upgrade": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        +                "properties": {
        +                  "available_tiers": {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        +                      "properties": {
        +                        "billing": {
        +                          "enum": [
        +                            "one_off",
        +                            "monthly",
        +                            "annual"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "currency": {
        +                          "enum": [
        +                            "GBP",
        +                            "SGD",
        +                            "EUR",
        +                            "USD",
        +                            "CAD",
        +                            "AUD",
        +                            "NZD",
        +                            "MYR"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "display_name": {
        +                          "type": "string"
        +                        },
        +                        "price_local": {
        +                          "type": "number"
        +                        },
        +                        "tier_slug": {
        +                          "enum": [
        +                            "7_day_pass",
        +                            "solo",
        +                            "studio",
        +                            "practice"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "unlock_summary": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "tier_slug",
        +                        "display_name",
        +                        "price_local",
        +                        "currency",
        +                        "billing",
        +                        "unlock_summary"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "current_tier": {
        +                    "const": "free",
        +                    "default": "free",
        +                    "type": "string"
        +                  },
        +                  "pass_credit": {
        +                    "anyOf": [
        +                      {
        +                        "additionalProperties": false,
        +                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        +                        "properties": {
        +                          "amount_local": {
        +                            "type": "number"
        +                          },
        +                          "applies_to": {
        +                            "const": "solo_first_month",
        +                            "default": "solo_first_month",
        +                            "type": "string"
        +                          },
        +                          "currency": {
        +                            "type": "string"
        +                          },
        +                          "redeemable_until": {
        +                            "type": "string"
        +                          }
        +                        },
        +                        "required": [
        +                          "amount_local",
        +                          "currency",
        +                          "redeemable_until"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "pricing_url": {
        +                    "default": "https://civilquants.com/pricing",
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "available_tiers"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tos_url": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "upgrade_hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "warranty_disclaimer": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          }
        +        },
        +        "required": [
        +          "request_id",
        +          "issued_at",
        +          "tier"
        +        ],
        +        "type": "object"
        +      },
        +      "data": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Schema § 1.1 — the typed payload returned inside `MCPResponse[ComputeResult]`.\n\nFree-tier responses omit `drawings` (the downloadable CAD artefact\npointers — the paid differentiator); the bridge enforces this. The\n`audit_trail` and the inline `drawing` preview are present on BOTH tiers\n(V1 ALIGN / 60th-fire D + C). `text_summary` is bounded to 2000 chars —\nkeeps the LLM-facing summary token-cheap and forces longer narrative into\nBoQ row descriptions where it belongs. `warnings` is the non-fatal\ngeometry advisory list (both tiers).",
        +            "properties": {
        +              "assembly_slug": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "audit_trail": {
        +                "anyOf": [
        +                  {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.7 — paid-tier audit-trail entry.\n\nOne entry per BoQ row; `boq_row_index` ties to the row position in\n`ComputeResult.boq_rows`. `derivation` is the human-readable formula\nwalk-through; `formula` is the optional formal expression.",
        +                      "properties": {
        +                        "boq_row_index": {
        +                          "minimum": 0,
        +                          "type": "integer"
        +                        },
        +                        "derivation": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "formula": {
        +                          "anyOf": [
        +                            {
        +                              "type": "string"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ],
        +                          "default": null
        +                        },
        +                        "id": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "parameters_referenced": {
        +                          "items": {
        +                            "type": "string"
        +                          },
        +                          "type": "array"
        +                        }
        +                      },
        +                      "required": [
        +                        "id",
        +                        "boq_row_index",
        +                        "derivation"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "boq_rows": {
        +                "items": {
        +                  "additionalProperties": false,
        +                  "description": "Schema § 1.3 — a single bill row in the requested standard's format.\n\n`description` is the non-verbatim functional description per spec § 13.9 /\n§ 15 invariant — NEVER reproduces a standard's verbatim clause text.\n`rate` / `amount` ship null because rates are commodity data the customer\nowns; the engine's job is the measurement, not the pricing.",
        +                  "properties": {
        +                    "amount": {
        +                      "anyOf": [
        +                        {
        +                          "type": "number"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "attribution": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "audit_id": {
        +                      "anyOf": [
        +                        {
        +                          "type": "string"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "description": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "quantity": {
        +                      "minimum": 0,
        +                      "type": "number"
        +                    },
        +                    "rate": {
        +                      "anyOf": [
        +                        {
        +                          "type": "number"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "unit": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "work_section": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    }
        +                  },
        +                  "required": [
        +                    "work_section",
        +                    "description",
        +                    "quantity",
        +                    "unit",
        +                    "attribution"
        +                  ],
        +                  "type": "object"
        +                },
        +                "type": "array"
        +              },
        +              "drawing": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": false,
        +                    "description": "Schema § 1.6a — inline server-rendered SVG preview of the geometry.\n\nThe MCP mirror of the web ``/compute`` response's ``drawing`` field\n(``api.schemas.compute.DrawingRef``): the same on-screen dimensioned\ndrawing both tiers see in the workspace, surfaced on the MCP compute\nresponse so a chat client can render it inline (60th-fire item C). This\nis the on-screen preview — present on BOTH tiers per the free/paid\nboundary; the downloadable CAD artefacts (DXF / dimensioned PDF) remain\nthe paid differentiator via the export tools.\n\nDefined here rather than importing ``DrawingRef`` because the web\n``schemas`` package imports back into this module (``schemas.render``),\nso reusing it would create an import cycle — the MCP wire contract keeps\nits own copy, the same pattern as ``BoQRow`` / ``DrawingReference``.",
        +                    "properties": {
        +                      "entity_count": {
        +                        "minimum": 0,
        +                        "type": "integer"
        +                      },
        +                      "svg_b64": {
        +                        "minLength": 1,
        +                        "type": "string"
        +                      },
        +                      "unit_of_drawing": {
        +                        "const": "m",
        +                        "default": "m",
        +                        "type": "string"
        +                      },
        +                      "viewbox_height": {
        +                        "exclusiveMinimum": 0,
        +                        "type": "number"
        +                      },
        +                      "viewbox_width": {
        +                        "exclusiveMinimum": 0,
        +                        "type": "number"
        +                      },
        +                      "viewbox_x": {
        +                        "type": "number"
        +                      },
        +                      "viewbox_y": {
        +                        "type": "number"
        +                      }
        +                    },
        +                    "required": [
        +                      "svg_b64",
        +                      "viewbox_x",
        +                      "viewbox_y",
        +                      "viewbox_width",
        +                      "viewbox_height",
        +                      "entity_count"
        +                    ],
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "drawings": {
        +                "anyOf": [
        +                  {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.6 — paid-tier drawing artefact pointer.\n\n`url` is an R2-signed URL; expiry is carried in `_meta.deliverables.expires_at`\non the envelope (not duplicated here). `layers` is DXF-only; PDF/SVG\ncallers omit it.",
        +                      "properties": {
        +                        "drawing_type": {
        +                          "enum": [
        +                            "section",
        +                            "plan",
        +                            "elevation",
        +                            "isometric",
        +                            "detail"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "format": {
        +                          "enum": [
        +                            "DXF",
        +                            "PDF",
        +                            "SVG"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "layers": {
        +                          "anyOf": [
        +                            {
        +                              "items": {
        +                                "type": "string"
        +                              },
        +                              "type": "array"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ],
        +                          "default": null
        +                        },
        +                        "scale": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "sheet_size": {
        +                          "enum": [
        +                            "A1",
        +                            "A2",
        +                            "A3",
        +                            "A4"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "url": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "drawing_type",
        +                        "format",
        +                        "url",
        +                        "sheet_size",
        +                        "scale"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "parameters_used": {
        +                "additionalProperties": false,
        +                "description": "Schema § 1.2 — the parameter snapshot the engine actually used.\n\nSplits user-supplied values from engine defaults so customers can see\nwhich numbers came from them and which the engine filled in. Every\ndefaulted parameter SHOULD have a corresponding entry in `assumptions`\n— the bridge layer enforces this when wrapping engine output.",
        +                "properties": {
        +                  "assumptions": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "engine_defaults": {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  "user_supplied": {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  }
        +                },
        +                "type": "object"
        +              },
        +              "standard": {
        +                "enum": [
        +                  "CESMM4",
        +                  "NRM2",
        +                  "SMM7",
        +                  "MMHW"
        +                ],
        +                "type": "string"
        +              },
        +              "text_summary": {
        +                "maxLength": 2000,
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "totals_summary": {
        +                "additionalProperties": false,
        +                "description": "Schema § 1.4 — totals_summary as a typed wrapper around the free-form dict.\n\nWire shape is a flat object (`{\"concrete_m3\": {...}, \"rebar_t\": {...}}`).\nWe model it as `RootModel`-equivalent via `model_config(extra=\"allow\")`\n+ a single `__root__`-style `entries` dict. Pydantic v2 recommends\n`RootModel` for free-form roots; using a wrapper class keeps the import\nsurface uniform with the rest of this module.",
        +                "properties": {
        +                  "entries": {
        +                    "additionalProperties": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.4 — single material/work-class total entry.",
        +                      "properties": {
        +                        "quantity": {
        +                          "minimum": 0,
        +                          "type": "number"
        +                        },
        +                        "unit": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "quantity",
        +                        "unit"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "object"
        +                  }
        +                },
        +                "type": "object"
        +              },
        +              "warnings": {
        +                "items": {
        +                  "additionalProperties": false,
        +                  "description": "Schema § 1.8 — a non-fatal geometry advisory (56th-fire T2).\n\nThe wire projection of the engine's `core.GeometryWarning`. Advisory only:\na warning NEVER changes a measured quantity — it flags geometry that is\nvalid but likely a mistake (e.g. a stale dependent-height default). Present\non BOTH tiers — a correctness/safety signal, not a paid feature.",
        +                  "properties": {
        +                    "affected_params": {
        +                      "items": {
        +                        "type": "string"
        +                      },
        +                      "type": "array"
        +                    },
        +                    "code": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "detail": {
        +                      "additionalProperties": {
        +                        "type": "number"
        +                      },
        +                      "type": "object"
        +                    },
        +                    "message": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "severity": {
        +                      "enum": [
        +                        "info",
        +                        "advisory",
        +                        "caution"
        +                      ],
        +                      "type": "string"
        +                    }
        +                  },
        +                  "required": [
        +                    "code",
        +                    "severity",
        +                    "message"
        +                  ],
        +                  "type": "object"
        +                },
        +                "type": "array"
        +              }
        +            },
        +            "required": [
        +              "assembly_slug",
        +              "standard",
        +              "parameters_used",
        +              "boq_rows",
        +              "totals_summary",
        +              "text_summary"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      },
        +      "error": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        +            "properties": {
        +              "code": {
        +                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        +                "enum": [
        +                  "RATE_LIMIT_EXCEEDED",
        +                  "TIER_INSUFFICIENT",
        +                  "INVALID_INPUT",
        +                  "SCHEMA_VERSION_MISMATCH",
        +                  "SCHEMA_INVARIANT_VIOLATION",
        +                  "UPSTREAM_TIMEOUT",
        +                  "BACKEND_FAILURE",
        +                  "IP_BLOCKED",
        +                  "RESOURCE_NOT_FOUND",
        +                  "RENDER_FAILURE",
        +                  "OCR_LOW_CONFIDENCE",
        +                  "MANUAL_REVIEW_REQUIRED",
        +                  "ACCEPTANCE_REQUIRED",
        +                  "INVALID_TOKEN"
        +                ],
        +                "type": "string"
        +              },
        +              "details": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "message": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "recoverable": {
        +                "type": "boolean"
        +              },
        +              "retry_after_seconds": {
        +                "anyOf": [
        +                  {
        +                    "minimum": 0,
        +                    "type": "integer"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              }
        +            },
        +            "required": [
        +              "code",
        +              "message",
        +              "recoverable"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      }
        +    },
        +    "required": [
        +      "_meta"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "_meta": {
        +        "additionalProperties": false,
        +        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        +        "properties": {
        +          "deliverables": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        +                "properties": {
        +                  "docx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "dxf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "expires_at": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  },
        +                  "pdf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "xlsx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "expires_at"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "document_id": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "issued_at": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "output_mode": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Surfaces what a trimmed ``output_mode`` withheld from ``data``.\n\nA trimmed mode (``summary`` / ``boq`` / ``boq_with_backup``) withholds\nalready-computed fields to keep the chat payload small. The withheld value\nreads to a client agent as \"capability missing\" (the box-culvert \"geometry\nbuilder isn't firing\" scare) rather than \"pared for size\": ``drawing`` and\n``audit_trail`` appear as ``null``, ``boq_rows`` as an empty list ``[]``\n(its type forbids ``null``) — both indistinguishable from a genuine absent\nresult. This names the withheld fields and the exact mode that brings each\nback, so the value is unambiguous. Absent on the default ``full_json`` mode\n— nothing is withheld, nothing to point at.",
        +                "properties": {
        +                  "mode": {
        +                    "enum": [
        +                      "summary",
        +                      "boq",
        +                      "boq_with_backup"
        +                    ],
        +                    "type": "string"
        +                  },
        +                  "omitted_fields": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "minItems": 1,
        +                    "type": "array"
        +                  },
        +                  "retrieve_with": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "mode",
        +                  "omitted_fields",
        +                  "retrieve_with"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "rate_limit_remaining": {
        +            "anyOf": [
        +              {
        +                "minimum": 0,
        +                "type": "integer"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "request_id": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "schema_version": {
        +            "const": "1.0.0",
        +            "default": "1.0.0",
        +            "type": "string"
        +          },
        +          "scope_boundary": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        +                "properties": {
        +                  "not_in_scope": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "produced": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "recommended_companions": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "type": "string"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "produced",
        +                  "not_in_scope"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tier": {
        +            "enum": [
        +              "free",
        +              "paid"
        +            ],
        +            "type": "string"
        +          },
        +          "tier_upgrade": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        +                "properties": {
        +                  "available_tiers": {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        +                      "properties": {
        +                        "billing": {
        +                          "enum": [
        +                            "one_off",
        +                            "monthly",
        +                            "annual"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "currency": {
        +                          "enum": [
        +                            "GBP",
        +                            "SGD",
        +                            "EUR",
        +                            "USD",
        +                            "CAD",
        +                            "AUD",
        +                            "NZD",
        +                            "MYR"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "display_name": {
        +                          "type": "string"
        +                        },
        +                        "price_local": {
        +                          "type": "number"
        +                        },
        +                        "tier_slug": {
        +                          "enum": [
        +                            "7_day_pass",
        +                            "solo",
        +                            "studio",
        +                            "practice"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "unlock_summary": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "tier_slug",
        +                        "display_name",
        +                        "price_local",
        +                        "currency",
        +                        "billing",
        +                        "unlock_summary"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "current_tier": {
        +                    "const": "free",
        +                    "default": "free",
        +                    "type": "string"
        +                  },
        +                  "pass_credit": {
        +                    "anyOf": [
        +                      {
        +                        "additionalProperties": false,
        +                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        +                        "properties": {
        +                          "amount_local": {
        +                            "type": "number"
        +                          },
        +                          "applies_to": {
        +                            "const": "solo_first_month",
        +                            "default": "solo_first_month",
        +                            "type": "string"
        +                          },
        +                          "currency": {
        +                            "type": "string"
        +                          },
        +                          "redeemable_until": {
        +                            "type": "string"
        +                          }
        +                        },
        +                        "required": [
        +                          "amount_local",
        +                          "currency",
        +                          "redeemable_until"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "pricing_url": {
        +                    "default": "https://civilquants.com/pricing",
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "available_tiers"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tos_url": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "upgrade_hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "warranty_disclaimer": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          }
        +        },
        +        "required": [
        +          "request_id",
        +          "issued_at",
        +          "tier"
        +        ],
        +        "type": "object"
        +      },
        +      "data": {
        +        "default": null,
        +        "title": "Data"
        +      },
        +      "error": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        +            "properties": {
        +              "code": {
        +                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        +                "enum": [
        +                  "RATE_LIMIT_EXCEEDED",
        +                  "TIER_INSUFFICIENT",
        +                  "INVALID_INPUT",
        +                  "SCHEMA_VERSION_MISMATCH",
        +                  "SCHEMA_INVARIANT_VIOLATION",
        +                  "UPSTREAM_TIMEOUT",
        +                  "BACKEND_FAILURE",
        +                  "IP_BLOCKED",
        +                  "RESOURCE_NOT_FOUND",
        +                  "RENDER_FAILURE",
        +                  "OCR_LOW_CONFIDENCE",
        +                  "MANUAL_REVIEW_REQUIRED",
        +                  "ACCEPTANCE_REQUIRED",
        +                  "INVALID_TOKEN"
        +                ],
        +                "type": "string"
        +              },
        +              "details": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "message": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "recoverable": {
        +                "type": "boolean"
        +              },
        +              "retry_after_seconds": {
        +                "anyOf": [
        +                  {
        +                    "minimum": 0,
        +                    "type": "integer"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              }
        +            },
        +            "required": [
        +              "code",
        +              "message",
        +              "recoverable"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      }
        +    },
        +    "required": [
        +      "_meta"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedcompute_carrier_pipe_run1 field changed
      • changedOutput schema / properties / result / anyOf
        Previous value: -[
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "_meta": {
        -        "additionalProperties": false,
        -        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        -        "properties": {
        -          "deliverables": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        -                "properties": {
        -                  "docx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "dxf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "expires_at": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  },
        -                  "pdf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "xlsx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "expires_at"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "document_id": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "issued_at": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "rate_limit_remaining": {
        -            "anyOf": [
        -              {
        -                "minimum": 0,
        -                "type": "integer"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "request_id": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "schema_version": {
        -            "const": "1.0.0",
        -            "default": "1.0.0",
        -            "type": "string"
        -          },
        -          "scope_boundary": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        -                "properties": {
        -                  "not_in_scope": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "produced": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "recommended_companions": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "type": "string"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "produced",
        -                  "not_in_scope"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tier": {
        -            "enum": [
        -              "free",
        -              "paid"
        -            ],
        -            "type": "string"
        -          },
        -          "tier_upgrade": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        -                "properties": {
        -                  "available_tiers": {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        -                      "properties": {
        -                        "billing": {
        -                          "enum": [
        -                            "one_off",
        -                            "monthly",
        -                            "annual"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "currency": {
        -                          "enum": [
        -                            "GBP",
        -                            "SGD",
        -                            "EUR",
        -                            "USD",
        -                            "CAD",
        -                            "AUD",
        -                            "NZD",
        -                            "MYR"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "display_name": {
        -                          "type": "string"
        -                        },
        -                        "price_local": {
        -                          "type": "number"
        -                        },
        -                        "tier_slug": {
        -                          "enum": [
        -                            "7_day_pass",
        -                            "solo",
        -                            "studio",
        -                            "practice"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "unlock_summary": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "tier_slug",
        -                        "display_name",
        -                        "price_local",
        -                        "currency",
        -                        "billing",
        -                        "unlock_summary"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "current_tier": {
        -                    "const": "free",
        -                    "default": "free",
        -                    "type": "string"
        -                  },
        -                  "pass_credit": {
        -                    "anyOf": [
        -                      {
        -                        "additionalProperties": false,
        -                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        -                        "properties": {
        -                          "amount_local": {
        -                            "type": "number"
        -                          },
        -                          "applies_to": {
        -                            "const": "solo_first_month",
        -                            "default": "solo_first_month",
        -                            "type": "string"
        -                          },
        -                          "currency": {
        -                            "type": "string"
        -                          },
        -                          "redeemable_until": {
        -                            "type": "string"
        -                          }
        -                        },
        -                        "required": [
        -                          "amount_local",
        -                          "currency",
        -                          "redeemable_until"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "pricing_url": {
        -                    "default": "https://civilquants.com/pricing",
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "available_tiers"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tos_url": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "upgrade_hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "warranty_disclaimer": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          }
        -        },
        -        "required": [
        -          "request_id",
        -          "issued_at",
        -          "tier"
        -        ],
        -        "type": "object"
        -      },
        -      "data": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Schema § 1.1 — the typed payload returned inside `MCPResponse[ComputeResult]`.\n\nFree-tier responses omit `drawings` (the downloadable CAD artefact\npointers — the paid differentiator); the bridge enforces this. The\n`audit_trail` and the inline `drawing` preview are present on BOTH tiers\n(V1 ALIGN / 60th-fire D + C). `text_summary` is bounded to 2000 chars —\nkeeps the LLM-facing summary token-cheap and forces longer narrative into\nBoQ row descriptions where it belongs. `warnings` is the non-fatal\ngeometry advisory list (both tiers).",
        -            "properties": {
        -              "assembly_slug": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "audit_trail": {
        -                "anyOf": [
        -                  {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.7 — paid-tier audit-trail entry.\n\nOne entry per BoQ row; `boq_row_index` ties to the row position in\n`ComputeResult.boq_rows`. `derivation` is the human-readable formula\nwalk-through; `formula` is the optional formal expression.",
        -                      "properties": {
        -                        "boq_row_index": {
        -                          "minimum": 0,
        -                          "type": "integer"
        -                        },
        -                        "derivation": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "formula": {
        -                          "anyOf": [
        -                            {
        -                              "type": "string"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ],
        -                          "default": null
        -                        },
        -                        "id": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "parameters_referenced": {
        -                          "items": {
        -                            "type": "string"
        -                          },
        -                          "type": "array"
        -                        }
        -                      },
        -                      "required": [
        -                        "id",
        -                        "boq_row_index",
        -                        "derivation"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "boq_rows": {
        -                "items": {
        -                  "additionalProperties": false,
        -                  "description": "Schema § 1.3 — a single bill row in the requested standard's format.\n\n`description` is the non-verbatim functional description per spec § 13.9 /\n§ 15 invariant — NEVER reproduces a standard's verbatim clause text.\n`rate` / `amount` ship null because rates are commodity data the customer\nowns; the engine's job is the measurement, not the pricing.",
        -                  "properties": {
        -                    "amount": {
        -                      "anyOf": [
        -                        {
        -                          "type": "number"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "attribution": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "audit_id": {
        -                      "anyOf": [
        -                        {
        -                          "type": "string"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "description": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "quantity": {
        -                      "minimum": 0,
        -                      "type": "number"
        -                    },
        -                    "rate": {
        -                      "anyOf": [
        -                        {
        -                          "type": "number"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "unit": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "work_section": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    }
        -                  },
        -                  "required": [
        -                    "work_section",
        -                    "description",
        -                    "quantity",
        -                    "unit",
        -                    "attribution"
        -                  ],
        -                  "type": "object"
        -                },
        -                "type": "array"
        -              },
        -              "drawing": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": false,
        -                    "description": "Schema § 1.6a — inline server-rendered SVG preview of the geometry.\n\nThe MCP mirror of the web ``/compute`` response's ``drawing`` field\n(``api.schemas.compute.DrawingRef``): the same on-screen dimensioned\ndrawing both tiers see in the workspace, surfaced on the MCP compute\nresponse so a chat client can render it inline (60th-fire item C). This\nis the on-screen preview — present on BOTH tiers per the free/paid\nboundary; the downloadable CAD artefacts (DXF / dimensioned PDF) remain\nthe paid differentiator via the export tools.\n\nDefined here rather than importing ``DrawingRef`` because the web\n``schemas`` package imports back into this module (``schemas.render``),\nso reusing it would create an import cycle — the MCP wire contract keeps\nits own copy, the same pattern as ``BoQRow`` / ``DrawingReference``.",
        -                    "properties": {
        -                      "entity_count": {
        -                        "minimum": 0,
        -                        "type": "integer"
        -                      },
        -                      "svg_b64": {
        -                        "minLength": 1,
        -                        "type": "string"
        -                      },
        -                      "unit_of_drawing": {
        -                        "const": "m",
        -                        "default": "m",
        -                        "type": "string"
        -                      },
        -                      "viewbox_height": {
        -                        "exclusiveMinimum": 0,
        -                        "type": "number"
        -                      },
        -                      "viewbox_width": {
        -                        "exclusiveMinimum": 0,
        -                        "type": "number"
        -                      },
        -                      "viewbox_x": {
        -                        "type": "number"
        -                      },
        -                      "viewbox_y": {
        -                        "type": "number"
        -                      }
        -                    },
        -                    "required": [
        -                      "svg_b64",
        -                      "viewbox_x",
        -                      "viewbox_y",
        -                      "viewbox_width",
        -                      "viewbox_height",
        -                      "entity_count"
        -                    ],
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "drawings": {
        -                "anyOf": [
        -                  {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.6 — paid-tier drawing artefact pointer.\n\n`url` is an R2-signed URL; expiry is carried in `_meta.deliverables.expires_at`\non the envelope (not duplicated here). `layers` is DXF-only; PDF/SVG\ncallers omit it.",
        -                      "properties": {
        -                        "drawing_type": {
        -                          "enum": [
        -                            "section",
        -                            "plan",
        -                            "elevation",
        -                            "isometric",
        -                            "detail"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "format": {
        -                          "enum": [
        -                            "DXF",
        -                            "PDF",
        -                            "SVG"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "layers": {
        -                          "anyOf": [
        -                            {
        -                              "items": {
        -                                "type": "string"
        -                              },
        -                              "type": "array"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ],
        -                          "default": null
        -                        },
        -                        "scale": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "sheet_size": {
        -                          "enum": [
        -                            "A1",
        -                            "A2",
        -                            "A3",
        -                            "A4"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "url": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "drawing_type",
        -                        "format",
        -                        "url",
        -                        "sheet_size",
        -                        "scale"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "parameters_used": {
        -                "additionalProperties": false,
        -                "description": "Schema § 1.2 — the parameter snapshot the engine actually used.\n\nSplits user-supplied values from engine defaults so customers can see\nwhich numbers came from them and which the engine filled in. Every\ndefaulted parameter SHOULD have a corresponding entry in `assumptions`\n— the bridge layer enforces this when wrapping engine output.",
        -                "properties": {
        -                  "assumptions": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "engine_defaults": {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  "user_supplied": {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  }
        -                },
        -                "type": "object"
        -              },
        -              "standard": {
        -                "enum": [
        -                  "CESMM4",
        -                  "NRM2",
        -                  "SMM7",
        -                  "MMHW"
        -                ],
        -                "type": "string"
        -              },
        -              "text_summary": {
        -                "maxLength": 2000,
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "totals_summary": {
        -                "additionalProperties": false,
        -                "description": "Schema § 1.4 — totals_summary as a typed wrapper around the free-form dict.\n\nWire shape is a flat object (`{\"concrete_m3\": {...}, \"rebar_t\": {...}}`).\nWe model it as `RootModel`-equivalent via `model_config(extra=\"allow\")`\n+ a single `__root__`-style `entries` dict. Pydantic v2 recommends\n`RootModel` for free-form roots; using a wrapper class keeps the import\nsurface uniform with the rest of this module.",
        -                "properties": {
        -                  "entries": {
        -                    "additionalProperties": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.4 — single material/work-class total entry.",
        -                      "properties": {
        -                        "quantity": {
        -                          "minimum": 0,
        -                          "type": "number"
        -                        },
        -                        "unit": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "quantity",
        -                        "unit"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "object"
        -                  }
        -                },
        -                "type": "object"
        -              },
        -              "warnings": {
        -                "items": {
        -                  "additionalProperties": false,
        -                  "description": "Schema § 1.8 — a non-fatal geometry advisory (56th-fire T2).\n\nThe wire projection of the engine's `core.GeometryWarning`. Advisory only:\na warning NEVER changes a measured quantity — it flags geometry that is\nvalid but likely a mistake (e.g. a stale dependent-height default). Present\non BOTH tiers — a correctness/safety signal, not a paid feature.",
        -                  "properties": {
        -                    "affected_params": {
        -                      "items": {
        -                        "type": "string"
        -                      },
        -                      "type": "array"
        -                    },
        -                    "code": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "detail": {
        -                      "additionalProperties": {
        -                        "type": "number"
        -                      },
        -                      "type": "object"
        -                    },
        -                    "message": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "severity": {
        -                      "enum": [
        -                        "info",
        -                        "advisory",
        -                        "caution"
        -                      ],
        -                      "type": "string"
        -                    }
        -                  },
        -                  "required": [
        -                    "code",
        -                    "severity",
        -                    "message"
        -                  ],
        -                  "type": "object"
        -                },
        -                "type": "array"
        -              }
        -            },
        -            "required": [
        -              "assembly_slug",
        -              "standard",
        -              "parameters_used",
        -              "boq_rows",
        -              "totals_summary",
        -              "text_summary"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      },
        -      "error": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        -            "properties": {
        -              "code": {
        -                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        -                "enum": [
        -                  "RATE_LIMIT_EXCEEDED",
        -                  "TIER_INSUFFICIENT",
        -                  "INVALID_INPUT",
        -                  "SCHEMA_VERSION_MISMATCH",
        -                  "SCHEMA_INVARIANT_VIOLATION",
        -                  "UPSTREAM_TIMEOUT",
        -                  "BACKEND_FAILURE",
        -                  "IP_BLOCKED",
        -                  "RESOURCE_NOT_FOUND",
        -                  "RENDER_FAILURE",
        -                  "OCR_LOW_CONFIDENCE",
        -                  "MANUAL_REVIEW_REQUIRED",
        -                  "ACCEPTANCE_REQUIRED",
        -                  "INVALID_TOKEN"
        -                ],
        -                "type": "string"
        -              },
        -              "details": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "message": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "recoverable": {
        -                "type": "boolean"
        -              },
        -              "retry_after_seconds": {
        -                "anyOf": [
        -                  {
        -                    "minimum": 0,
        -                    "type": "integer"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              }
        -            },
        -            "required": [
        -              "code",
        -              "message",
        -              "recoverable"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      }
        -    },
        -    "required": [
        -      "_meta"
        -    ],
        -    "type": "object"
        -  },
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "_meta": {
        -        "additionalProperties": false,
        -        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        -        "properties": {
        -          "deliverables": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        -                "properties": {
        -                  "docx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "dxf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "expires_at": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  },
        -                  "pdf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "xlsx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "expires_at"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "document_id": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "issued_at": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "rate_limit_remaining": {
        -            "anyOf": [
        -              {
        -                "minimum": 0,
        -                "type": "integer"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "request_id": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "schema_version": {
        -            "const": "1.0.0",
        -            "default": "1.0.0",
        -            "type": "string"
        -          },
        -          "scope_boundary": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        -                "properties": {
        -                  "not_in_scope": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "produced": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "recommended_companions": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "type": "string"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "produced",
        -                  "not_in_scope"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tier": {
        -            "enum": [
        -              "free",
        -              "paid"
        -            ],
        -            "type": "string"
        -          },
        -          "tier_upgrade": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        -                "properties": {
        -                  "available_tiers": {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        -                      "properties": {
        -                        "billing": {
        -                          "enum": [
        -                            "one_off",
        -                            "monthly",
        -                            "annual"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "currency": {
        -                          "enum": [
        -                            "GBP",
        -                            "SGD",
        -                            "EUR",
        -                            "USD",
        -                            "CAD",
        -                            "AUD",
        -                            "NZD",
        -                            "MYR"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "display_name": {
        -                          "type": "string"
        -                        },
        -                        "price_local": {
        -                          "type": "number"
        -                        },
        -                        "tier_slug": {
        -                          "enum": [
        -                            "7_day_pass",
        -                            "solo",
        -                            "studio",
        -                            "practice"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "unlock_summary": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "tier_slug",
        -                        "display_name",
        -                        "price_local",
        -                        "currency",
        -                        "billing",
        -                        "unlock_summary"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "current_tier": {
        -                    "const": "free",
        -                    "default": "free",
        -                    "type": "string"
        -                  },
        -                  "pass_credit": {
        -                    "anyOf": [
        -                      {
        -                        "additionalProperties": false,
        -                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        -                        "properties": {
        -                          "amount_local": {
        -                            "type": "number"
        -                          },
        -                          "applies_to": {
        -                            "const": "solo_first_month",
        -                            "default": "solo_first_month",
        -                            "type": "string"
        -                          },
        -                          "currency": {
        -                            "type": "string"
        -                          },
        -                          "redeemable_until": {
        -                            "type": "string"
        -                          }
        -                        },
        -                        "required": [
        -                          "amount_local",
        -                          "currency",
        -                          "redeemable_until"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "pricing_url": {
        -                    "default": "https://civilquants.com/pricing",
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "available_tiers"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tos_url": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "upgrade_hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "warranty_disclaimer": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          }
        -        },
        -        "required": [
        -          "request_id",
        -          "issued_at",
        -          "tier"
        -        ],
        -        "type": "object"
        -      },
        -      "data": {
        -        "default": null,
        -        "title": "Data"
        -      },
        -      "error": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        -            "properties": {
        -              "code": {
        -                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        -                "enum": [
        -                  "RATE_LIMIT_EXCEEDED",
        -                  "TIER_INSUFFICIENT",
        -                  "INVALID_INPUT",
        -                  "SCHEMA_VERSION_MISMATCH",
        -                  "SCHEMA_INVARIANT_VIOLATION",
        -                  "UPSTREAM_TIMEOUT",
        -                  "BACKEND_FAILURE",
        -                  "IP_BLOCKED",
        -                  "RESOURCE_NOT_FOUND",
        -                  "RENDER_FAILURE",
        -                  "OCR_LOW_CONFIDENCE",
        -                  "MANUAL_REVIEW_REQUIRED",
        -                  "ACCEPTANCE_REQUIRED",
        -                  "INVALID_TOKEN"
        -                ],
        -                "type": "string"
        -              },
        -              "details": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "message": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "recoverable": {
        -                "type": "boolean"
        -              },
        -              "retry_after_seconds": {
        -                "anyOf": [
        -                  {
        -                    "minimum": 0,
        -                    "type": "integer"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              }
        -            },
        -            "required": [
        -              "code",
        -              "message",
        -              "recoverable"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      }
        -    },
        -    "required": [
        -      "_meta"
        -    ],
        -    "type": "object"
        -  }
        -]New value: +[
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "_meta": {
        +        "additionalProperties": false,
        +        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        +        "properties": {
        +          "deliverables": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        +                "properties": {
        +                  "docx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "dxf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "expires_at": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  },
        +                  "pdf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "xlsx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "expires_at"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "document_id": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "issued_at": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "output_mode": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Surfaces what a trimmed ``output_mode`` withheld from ``data``.\n\nA trimmed mode (``summary`` / ``boq`` / ``boq_with_backup``) withholds\nalready-computed fields to keep the chat payload small. The withheld value\nreads to a client agent as \"capability missing\" (the box-culvert \"geometry\nbuilder isn't firing\" scare) rather than \"pared for size\": ``drawing`` and\n``audit_trail`` appear as ``null``, ``boq_rows`` as an empty list ``[]``\n(its type forbids ``null``) — both indistinguishable from a genuine absent\nresult. This names the withheld fields and the exact mode that brings each\nback, so the value is unambiguous. Absent on the default ``full_json`` mode\n— nothing is withheld, nothing to point at.",
        +                "properties": {
        +                  "mode": {
        +                    "enum": [
        +                      "summary",
        +                      "boq",
        +                      "boq_with_backup"
        +                    ],
        +                    "type": "string"
        +                  },
        +                  "omitted_fields": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "minItems": 1,
        +                    "type": "array"
        +                  },
        +                  "retrieve_with": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "mode",
        +                  "omitted_fields",
        +                  "retrieve_with"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "rate_limit_remaining": {
        +            "anyOf": [
        +              {
        +                "minimum": 0,
        +                "type": "integer"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "request_id": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "schema_version": {
        +            "const": "1.0.0",
        +            "default": "1.0.0",
        +            "type": "string"
        +          },
        +          "scope_boundary": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        +                "properties": {
        +                  "not_in_scope": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "produced": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "recommended_companions": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "type": "string"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "produced",
        +                  "not_in_scope"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tier": {
        +            "enum": [
        +              "free",
        +              "paid"
        +            ],
        +            "type": "string"
        +          },
        +          "tier_upgrade": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        +                "properties": {
        +                  "available_tiers": {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        +                      "properties": {
        +                        "billing": {
        +                          "enum": [
        +                            "one_off",
        +                            "monthly",
        +                            "annual"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "currency": {
        +                          "enum": [
        +                            "GBP",
        +                            "SGD",
        +                            "EUR",
        +                            "USD",
        +                            "CAD",
        +                            "AUD",
        +                            "NZD",
        +                            "MYR"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "display_name": {
        +                          "type": "string"
        +                        },
        +                        "price_local": {
        +                          "type": "number"
        +                        },
        +                        "tier_slug": {
        +                          "enum": [
        +                            "7_day_pass",
        +                            "solo",
        +                            "studio",
        +                            "practice"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "unlock_summary": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "tier_slug",
        +                        "display_name",
        +                        "price_local",
        +                        "currency",
        +                        "billing",
        +                        "unlock_summary"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "current_tier": {
        +                    "const": "free",
        +                    "default": "free",
        +                    "type": "string"
        +                  },
        +                  "pass_credit": {
        +                    "anyOf": [
        +                      {
        +                        "additionalProperties": false,
        +                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        +                        "properties": {
        +                          "amount_local": {
        +                            "type": "number"
        +                          },
        +                          "applies_to": {
        +                            "const": "solo_first_month",
        +                            "default": "solo_first_month",
        +                            "type": "string"
        +                          },
        +                          "currency": {
        +                            "type": "string"
        +                          },
        +                          "redeemable_until": {
        +                            "type": "string"
        +                          }
        +                        },
        +                        "required": [
        +                          "amount_local",
        +                          "currency",
        +                          "redeemable_until"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "pricing_url": {
        +                    "default": "https://civilquants.com/pricing",
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "available_tiers"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tos_url": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "upgrade_hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "warranty_disclaimer": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          }
        +        },
        +        "required": [
        +          "request_id",
        +          "issued_at",
        +          "tier"
        +        ],
        +        "type": "object"
        +      },
        +      "data": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Schema § 1.1 — the typed payload returned inside `MCPResponse[ComputeResult]`.\n\nFree-tier responses omit `drawings` (the downloadable CAD artefact\npointers — the paid differentiator); the bridge enforces this. The\n`audit_trail` and the inline `drawing` preview are present on BOTH tiers\n(V1 ALIGN / 60th-fire D + C). `text_summary` is bounded to 2000 chars —\nkeeps the LLM-facing summary token-cheap and forces longer narrative into\nBoQ row descriptions where it belongs. `warnings` is the non-fatal\ngeometry advisory list (both tiers).",
        +            "properties": {
        +              "assembly_slug": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "audit_trail": {
        +                "anyOf": [
        +                  {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.7 — paid-tier audit-trail entry.\n\nOne entry per BoQ row; `boq_row_index` ties to the row position in\n`ComputeResult.boq_rows`. `derivation` is the human-readable formula\nwalk-through; `formula` is the optional formal expression.",
        +                      "properties": {
        +                        "boq_row_index": {
        +                          "minimum": 0,
        +                          "type": "integer"
        +                        },
        +                        "derivation": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "formula": {
        +                          "anyOf": [
        +                            {
        +                              "type": "string"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ],
        +                          "default": null
        +                        },
        +                        "id": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "parameters_referenced": {
        +                          "items": {
        +                            "type": "string"
        +                          },
        +                          "type": "array"
        +                        }
        +                      },
        +                      "required": [
        +                        "id",
        +                        "boq_row_index",
        +                        "derivation"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "boq_rows": {
        +                "items": {
        +                  "additionalProperties": false,
        +                  "description": "Schema § 1.3 — a single bill row in the requested standard's format.\n\n`description` is the non-verbatim functional description per spec § 13.9 /\n§ 15 invariant — NEVER reproduces a standard's verbatim clause text.\n`rate` / `amount` ship null because rates are commodity data the customer\nowns; the engine's job is the measurement, not the pricing.",
        +                  "properties": {
        +                    "amount": {
        +                      "anyOf": [
        +                        {
        +                          "type": "number"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "attribution": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "audit_id": {
        +                      "anyOf": [
        +                        {
        +                          "type": "string"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "description": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "quantity": {
        +                      "minimum": 0,
        +                      "type": "number"
        +                    },
        +                    "rate": {
        +                      "anyOf": [
        +                        {
        +                          "type": "number"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "unit": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "work_section": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    }
        +                  },
        +                  "required": [
        +                    "work_section",
        +                    "description",
        +                    "quantity",
        +                    "unit",
        +                    "attribution"
        +                  ],
        +                  "type": "object"
        +                },
        +                "type": "array"
        +              },
        +              "drawing": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": false,
        +                    "description": "Schema § 1.6a — inline server-rendered SVG preview of the geometry.\n\nThe MCP mirror of the web ``/compute`` response's ``drawing`` field\n(``api.schemas.compute.DrawingRef``): the same on-screen dimensioned\ndrawing both tiers see in the workspace, surfaced on the MCP compute\nresponse so a chat client can render it inline (60th-fire item C). This\nis the on-screen preview — present on BOTH tiers per the free/paid\nboundary; the downloadable CAD artefacts (DXF / dimensioned PDF) remain\nthe paid differentiator via the export tools.\n\nDefined here rather than importing ``DrawingRef`` because the web\n``schemas`` package imports back into this module (``schemas.render``),\nso reusing it would create an import cycle — the MCP wire contract keeps\nits own copy, the same pattern as ``BoQRow`` / ``DrawingReference``.",
        +                    "properties": {
        +                      "entity_count": {
        +                        "minimum": 0,
        +                        "type": "integer"
        +                      },
        +                      "svg_b64": {
        +                        "minLength": 1,
        +                        "type": "string"
        +                      },
        +                      "unit_of_drawing": {
        +                        "const": "m",
        +                        "default": "m",
        +                        "type": "string"
        +                      },
        +                      "viewbox_height": {
        +                        "exclusiveMinimum": 0,
        +                        "type": "number"
        +                      },
        +                      "viewbox_width": {
        +                        "exclusiveMinimum": 0,
        +                        "type": "number"
        +                      },
        +                      "viewbox_x": {
        +                        "type": "number"
        +                      },
        +                      "viewbox_y": {
        +                        "type": "number"
        +                      }
        +                    },
        +                    "required": [
        +                      "svg_b64",
        +                      "viewbox_x",
        +                      "viewbox_y",
        +                      "viewbox_width",
        +                      "viewbox_height",
        +                      "entity_count"
        +                    ],
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "drawings": {
        +                "anyOf": [
        +                  {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.6 — paid-tier drawing artefact pointer.\n\n`url` is an R2-signed URL; expiry is carried in `_meta.deliverables.expires_at`\non the envelope (not duplicated here). `layers` is DXF-only; PDF/SVG\ncallers omit it.",
        +                      "properties": {
        +                        "drawing_type": {
        +                          "enum": [
        +                            "section",
        +                            "plan",
        +                            "elevation",
        +                            "isometric",
        +                            "detail"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "format": {
        +                          "enum": [
        +                            "DXF",
        +                            "PDF",
        +                            "SVG"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "layers": {
        +                          "anyOf": [
        +                            {
        +                              "items": {
        +                                "type": "string"
        +                              },
        +                              "type": "array"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ],
        +                          "default": null
        +                        },
        +                        "scale": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "sheet_size": {
        +                          "enum": [
        +                            "A1",
        +                            "A2",
        +                            "A3",
        +                            "A4"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "url": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "drawing_type",
        +                        "format",
        +                        "url",
        +                        "sheet_size",
        +                        "scale"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "parameters_used": {
        +                "additionalProperties": false,
        +                "description": "Schema § 1.2 — the parameter snapshot the engine actually used.\n\nSplits user-supplied values from engine defaults so customers can see\nwhich numbers came from them and which the engine filled in. Every\ndefaulted parameter SHOULD have a corresponding entry in `assumptions`\n— the bridge layer enforces this when wrapping engine output.",
        +                "properties": {
        +                  "assumptions": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "engine_defaults": {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  "user_supplied": {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  }
        +                },
        +                "type": "object"
        +              },
        +              "standard": {
        +                "enum": [
        +                  "CESMM4",
        +                  "NRM2",
        +                  "SMM7",
        +                  "MMHW"
        +                ],
        +                "type": "string"
        +              },
        +              "text_summary": {
        +                "maxLength": 2000,
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "totals_summary": {
        +                "additionalProperties": false,
        +                "description": "Schema § 1.4 — totals_summary as a typed wrapper around the free-form dict.\n\nWire shape is a flat object (`{\"concrete_m3\": {...}, \"rebar_t\": {...}}`).\nWe model it as `RootModel`-equivalent via `model_config(extra=\"allow\")`\n+ a single `__root__`-style `entries` dict. Pydantic v2 recommends\n`RootModel` for free-form roots; using a wrapper class keeps the import\nsurface uniform with the rest of this module.",
        +                "properties": {
        +                  "entries": {
        +                    "additionalProperties": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.4 — single material/work-class total entry.",
        +                      "properties": {
        +                        "quantity": {
        +                          "minimum": 0,
        +                          "type": "number"
        +                        },
        +                        "unit": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "quantity",
        +                        "unit"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "object"
        +                  }
        +                },
        +                "type": "object"
        +              },
        +              "warnings": {
        +                "items": {
        +                  "additionalProperties": false,
        +                  "description": "Schema § 1.8 — a non-fatal geometry advisory (56th-fire T2).\n\nThe wire projection of the engine's `core.GeometryWarning`. Advisory only:\na warning NEVER changes a measured quantity — it flags geometry that is\nvalid but likely a mistake (e.g. a stale dependent-height default). Present\non BOTH tiers — a correctness/safety signal, not a paid feature.",
        +                  "properties": {
        +                    "affected_params": {
        +                      "items": {
        +                        "type": "string"
        +                      },
        +                      "type": "array"
        +                    },
        +                    "code": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "detail": {
        +                      "additionalProperties": {
        +                        "type": "number"
        +                      },
        +                      "type": "object"
        +                    },
        +                    "message": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "severity": {
        +                      "enum": [
        +                        "info",
        +                        "advisory",
        +                        "caution"
        +                      ],
        +                      "type": "string"
        +                    }
        +                  },
        +                  "required": [
        +                    "code",
        +                    "severity",
        +                    "message"
        +                  ],
        +                  "type": "object"
        +                },
        +                "type": "array"
        +              }
        +            },
        +            "required": [
        +              "assembly_slug",
        +              "standard",
        +              "parameters_used",
        +              "boq_rows",
        +              "totals_summary",
        +              "text_summary"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      },
        +      "error": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        +            "properties": {
        +              "code": {
        +                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        +                "enum": [
        +                  "RATE_LIMIT_EXCEEDED",
        +                  "TIER_INSUFFICIENT",
        +                  "INVALID_INPUT",
        +                  "SCHEMA_VERSION_MISMATCH",
        +                  "SCHEMA_INVARIANT_VIOLATION",
        +                  "UPSTREAM_TIMEOUT",
        +                  "BACKEND_FAILURE",
        +                  "IP_BLOCKED",
        +                  "RESOURCE_NOT_FOUND",
        +                  "RENDER_FAILURE",
        +                  "OCR_LOW_CONFIDENCE",
        +                  "MANUAL_REVIEW_REQUIRED",
        +                  "ACCEPTANCE_REQUIRED",
        +                  "INVALID_TOKEN"
        +                ],
        +                "type": "string"
        +              },
        +              "details": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "message": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "recoverable": {
        +                "type": "boolean"
        +              },
        +              "retry_after_seconds": {
        +                "anyOf": [
        +                  {
        +                    "minimum": 0,
        +                    "type": "integer"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              }
        +            },
        +            "required": [
        +              "code",
        +              "message",
        +              "recoverable"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      }
        +    },
        +    "required": [
        +      "_meta"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "_meta": {
        +        "additionalProperties": false,
        +        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        +        "properties": {
        +          "deliverables": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        +                "properties": {
        +                  "docx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "dxf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "expires_at": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  },
        +                  "pdf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "xlsx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "expires_at"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "document_id": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "issued_at": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "output_mode": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Surfaces what a trimmed ``output_mode`` withheld from ``data``.\n\nA trimmed mode (``summary`` / ``boq`` / ``boq_with_backup``) withholds\nalready-computed fields to keep the chat payload small. The withheld value\nreads to a client agent as \"capability missing\" (the box-culvert \"geometry\nbuilder isn't firing\" scare) rather than \"pared for size\": ``drawing`` and\n``audit_trail`` appear as ``null``, ``boq_rows`` as an empty list ``[]``\n(its type forbids ``null``) — both indistinguishable from a genuine absent\nresult. This names the withheld fields and the exact mode that brings each\nback, so the value is unambiguous. Absent on the default ``full_json`` mode\n— nothing is withheld, nothing to point at.",
        +                "properties": {
        +                  "mode": {
        +                    "enum": [
        +                      "summary",
        +                      "boq",
        +                      "boq_with_backup"
        +                    ],
        +                    "type": "string"
        +                  },
        +                  "omitted_fields": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "minItems": 1,
        +                    "type": "array"
        +                  },
        +                  "retrieve_with": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "mode",
        +                  "omitted_fields",
        +                  "retrieve_with"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "rate_limit_remaining": {
        +            "anyOf": [
        +              {
        +                "minimum": 0,
        +                "type": "integer"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "request_id": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "schema_version": {
        +            "const": "1.0.0",
        +            "default": "1.0.0",
        +            "type": "string"
        +          },
        +          "scope_boundary": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        +                "properties": {
        +                  "not_in_scope": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "produced": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "recommended_companions": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "type": "string"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "produced",
        +                  "not_in_scope"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tier": {
        +            "enum": [
        +              "free",
        +              "paid"
        +            ],
        +            "type": "string"
        +          },
        +          "tier_upgrade": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        +                "properties": {
        +                  "available_tiers": {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        +                      "properties": {
        +                        "billing": {
        +                          "enum": [
        +                            "one_off",
        +                            "monthly",
        +                            "annual"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "currency": {
        +                          "enum": [
        +                            "GBP",
        +                            "SGD",
        +                            "EUR",
        +                            "USD",
        +                            "CAD",
        +                            "AUD",
        +                            "NZD",
        +                            "MYR"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "display_name": {
        +                          "type": "string"
        +                        },
        +                        "price_local": {
        +                          "type": "number"
        +                        },
        +                        "tier_slug": {
        +                          "enum": [
        +                            "7_day_pass",
        +                            "solo",
        +                            "studio",
        +                            "practice"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "unlock_summary": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "tier_slug",
        +                        "display_name",
        +                        "price_local",
        +                        "currency",
        +                        "billing",
        +                        "unlock_summary"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "current_tier": {
        +                    "const": "free",
        +                    "default": "free",
        +                    "type": "string"
        +                  },
        +                  "pass_credit": {
        +                    "anyOf": [
        +                      {
        +                        "additionalProperties": false,
        +                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        +                        "properties": {
        +                          "amount_local": {
        +                            "type": "number"
        +                          },
        +                          "applies_to": {
        +                            "const": "solo_first_month",
        +                            "default": "solo_first_month",
        +                            "type": "string"
        +                          },
        +                          "currency": {
        +                            "type": "string"
        +                          },
        +                          "redeemable_until": {
        +                            "type": "string"
        +                          }
        +                        },
        +                        "required": [
        +                          "amount_local",
        +                          "currency",
        +                          "redeemable_until"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "pricing_url": {
        +                    "default": "https://civilquants.com/pricing",
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "available_tiers"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tos_url": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "upgrade_hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "warranty_disclaimer": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          }
        +        },
        +        "required": [
        +          "request_id",
        +          "issued_at",
        +          "tier"
        +        ],
        +        "type": "object"
        +      },
        +      "data": {
        +        "default": null,
        +        "title": "Data"
        +      },
        +      "error": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        +            "properties": {
        +              "code": {
        +                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        +                "enum": [
        +                  "RATE_LIMIT_EXCEEDED",
        +                  "TIER_INSUFFICIENT",
        +                  "INVALID_INPUT",
        +                  "SCHEMA_VERSION_MISMATCH",
        +                  "SCHEMA_INVARIANT_VIOLATION",
        +                  "UPSTREAM_TIMEOUT",
        +                  "BACKEND_FAILURE",
        +                  "IP_BLOCKED",
        +                  "RESOURCE_NOT_FOUND",
        +                  "RENDER_FAILURE",
        +                  "OCR_LOW_CONFIDENCE",
        +                  "MANUAL_REVIEW_REQUIRED",
        +                  "ACCEPTANCE_REQUIRED",
        +                  "INVALID_TOKEN"
        +                ],
        +                "type": "string"
        +              },
        +              "details": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "message": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "recoverable": {
        +                "type": "boolean"
        +              },
        +              "retry_after_seconds": {
        +                "anyOf": [
        +                  {
        +                    "minimum": 0,
        +                    "type": "integer"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              }
        +            },
        +            "required": [
        +              "code",
        +              "message",
        +              "recoverable"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      }
        +    },
        +    "required": [
        +      "_meta"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedcompute_catchpit1 field changed
      • changedOutput schema / properties / result / anyOf
        Previous value: -[
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "_meta": {
        -        "additionalProperties": false,
        -        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        -        "properties": {
        -          "deliverables": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        -                "properties": {
        -                  "docx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "dxf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "expires_at": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  },
        -                  "pdf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "xlsx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "expires_at"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "document_id": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "issued_at": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "rate_limit_remaining": {
        -            "anyOf": [
        -              {
        -                "minimum": 0,
        -                "type": "integer"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "request_id": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "schema_version": {
        -            "const": "1.0.0",
        -            "default": "1.0.0",
        -            "type": "string"
        -          },
        -          "scope_boundary": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        -                "properties": {
        -                  "not_in_scope": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "produced": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "recommended_companions": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "type": "string"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "produced",
        -                  "not_in_scope"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tier": {
        -            "enum": [
        -              "free",
        -              "paid"
        -            ],
        -            "type": "string"
        -          },
        -          "tier_upgrade": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        -                "properties": {
        -                  "available_tiers": {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        -                      "properties": {
        -                        "billing": {
        -                          "enum": [
        -                            "one_off",
        -                            "monthly",
        -                            "annual"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "currency": {
        -                          "enum": [
        -                            "GBP",
        -                            "SGD",
        -                            "EUR",
        -                            "USD",
        -                            "CAD",
        -                            "AUD",
        -                            "NZD",
        -                            "MYR"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "display_name": {
        -                          "type": "string"
        -                        },
        -                        "price_local": {
        -                          "type": "number"
        -                        },
        -                        "tier_slug": {
        -                          "enum": [
        -                            "7_day_pass",
        -                            "solo",
        -                            "studio",
        -                            "practice"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "unlock_summary": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "tier_slug",
        -                        "display_name",
        -                        "price_local",
        -                        "currency",
        -                        "billing",
        -                        "unlock_summary"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "current_tier": {
        -                    "const": "free",
        -                    "default": "free",
        -                    "type": "string"
        -                  },
        -                  "pass_credit": {
        -                    "anyOf": [
        -                      {
        -                        "additionalProperties": false,
        -                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        -                        "properties": {
        -                          "amount_local": {
        -                            "type": "number"
        -                          },
        -                          "applies_to": {
        -                            "const": "solo_first_month",
        -                            "default": "solo_first_month",
        -                            "type": "string"
        -                          },
        -                          "currency": {
        -                            "type": "string"
        -                          },
        -                          "redeemable_until": {
        -                            "type": "string"
        -                          }
        -                        },
        -                        "required": [
        -                          "amount_local",
        -                          "currency",
        -                          "redeemable_until"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "pricing_url": {
        -                    "default": "https://civilquants.com/pricing",
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "available_tiers"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tos_url": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "upgrade_hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "warranty_disclaimer": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          }
        -        },
        -        "required": [
        -          "request_id",
        -          "issued_at",
        -          "tier"
        -        ],
        -        "type": "object"
        -      },
        -      "data": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Schema § 1.1 — the typed payload returned inside `MCPResponse[ComputeResult]`.\n\nFree-tier responses omit `drawings` (the downloadable CAD artefact\npointers — the paid differentiator); the bridge enforces this. The\n`audit_trail` and the inline `drawing` preview are present on BOTH tiers\n(V1 ALIGN / 60th-fire D + C). `text_summary` is bounded to 2000 chars —\nkeeps the LLM-facing summary token-cheap and forces longer narrative into\nBoQ row descriptions where it belongs. `warnings` is the non-fatal\ngeometry advisory list (both tiers).",
        -            "properties": {
        -              "assembly_slug": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "audit_trail": {
        -                "anyOf": [
        -                  {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.7 — paid-tier audit-trail entry.\n\nOne entry per BoQ row; `boq_row_index` ties to the row position in\n`ComputeResult.boq_rows`. `derivation` is the human-readable formula\nwalk-through; `formula` is the optional formal expression.",
        -                      "properties": {
        -                        "boq_row_index": {
        -                          "minimum": 0,
        -                          "type": "integer"
        -                        },
        -                        "derivation": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "formula": {
        -                          "anyOf": [
        -                            {
        -                              "type": "string"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ],
        -                          "default": null
        -                        },
        -                        "id": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "parameters_referenced": {
        -                          "items": {
        -                            "type": "string"
        -                          },
        -                          "type": "array"
        -                        }
        -                      },
        -                      "required": [
        -                        "id",
        -                        "boq_row_index",
        -                        "derivation"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "boq_rows": {
        -                "items": {
        -                  "additionalProperties": false,
        -                  "description": "Schema § 1.3 — a single bill row in the requested standard's format.\n\n`description` is the non-verbatim functional description per spec § 13.9 /\n§ 15 invariant — NEVER reproduces a standard's verbatim clause text.\n`rate` / `amount` ship null because rates are commodity data the customer\nowns; the engine's job is the measurement, not the pricing.",
        -                  "properties": {
        -                    "amount": {
        -                      "anyOf": [
        -                        {
        -                          "type": "number"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "attribution": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "audit_id": {
        -                      "anyOf": [
        -                        {
        -                          "type": "string"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "description": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "quantity": {
        -                      "minimum": 0,
        -                      "type": "number"
        -                    },
        -                    "rate": {
        -                      "anyOf": [
        -                        {
        -                          "type": "number"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "unit": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "work_section": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    }
        -                  },
        -                  "required": [
        -                    "work_section",
        -                    "description",
        -                    "quantity",
        -                    "unit",
        -                    "attribution"
        -                  ],
        -                  "type": "object"
        -                },
        -                "type": "array"
        -              },
        -              "drawing": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": false,
        -                    "description": "Schema § 1.6a — inline server-rendered SVG preview of the geometry.\n\nThe MCP mirror of the web ``/compute`` response's ``drawing`` field\n(``api.schemas.compute.DrawingRef``): the same on-screen dimensioned\ndrawing both tiers see in the workspace, surfaced on the MCP compute\nresponse so a chat client can render it inline (60th-fire item C). This\nis the on-screen preview — present on BOTH tiers per the free/paid\nboundary; the downloadable CAD artefacts (DXF / dimensioned PDF) remain\nthe paid differentiator via the export tools.\n\nDefined here rather than importing ``DrawingRef`` because the web\n``schemas`` package imports back into this module (``schemas.render``),\nso reusing it would create an import cycle — the MCP wire contract keeps\nits own copy, the same pattern as ``BoQRow`` / ``DrawingReference``.",
        -                    "properties": {
        -                      "entity_count": {
        -                        "minimum": 0,
        -                        "type": "integer"
        -                      },
        -                      "svg_b64": {
        -                        "minLength": 1,
        -                        "type": "string"
        -                      },
        -                      "unit_of_drawing": {
        -                        "const": "m",
        -                        "default": "m",
        -                        "type": "string"
        -                      },
        -                      "viewbox_height": {
        -                        "exclusiveMinimum": 0,
        -                        "type": "number"
        -                      },
        -                      "viewbox_width": {
        -                        "exclusiveMinimum": 0,
        -                        "type": "number"
        -                      },
        -                      "viewbox_x": {
        -                        "type": "number"
        -                      },
        -                      "viewbox_y": {
        -                        "type": "number"
        -                      }
        -                    },
        -                    "required": [
        -                      "svg_b64",
        -                      "viewbox_x",
        -                      "viewbox_y",
        -                      "viewbox_width",
        -                      "viewbox_height",
        -                      "entity_count"
        -                    ],
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "drawings": {
        -                "anyOf": [
        -                  {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.6 — paid-tier drawing artefact pointer.\n\n`url` is an R2-signed URL; expiry is carried in `_meta.deliverables.expires_at`\non the envelope (not duplicated here). `layers` is DXF-only; PDF/SVG\ncallers omit it.",
        -                      "properties": {
        -                        "drawing_type": {
        -                          "enum": [
        -                            "section",
        -                            "plan",
        -                            "elevation",
        -                            "isometric",
        -                            "detail"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "format": {
        -                          "enum": [
        -                            "DXF",
        -                            "PDF",
        -                            "SVG"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "layers": {
        -                          "anyOf": [
        -                            {
        -                              "items": {
        -                                "type": "string"
        -                              },
        -                              "type": "array"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ],
        -                          "default": null
        -                        },
        -                        "scale": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "sheet_size": {
        -                          "enum": [
        -                            "A1",
        -                            "A2",
        -                            "A3",
        -                            "A4"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "url": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "drawing_type",
        -                        "format",
        -                        "url",
        -                        "sheet_size",
        -                        "scale"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "parameters_used": {
        -                "additionalProperties": false,
        -                "description": "Schema § 1.2 — the parameter snapshot the engine actually used.\n\nSplits user-supplied values from engine defaults so customers can see\nwhich numbers came from them and which the engine filled in. Every\ndefaulted parameter SHOULD have a corresponding entry in `assumptions`\n— the bridge layer enforces this when wrapping engine output.",
        -                "properties": {
        -                  "assumptions": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "engine_defaults": {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  "user_supplied": {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  }
        -                },
        -                "type": "object"
        -              },
        -              "standard": {
        -                "enum": [
        -                  "CESMM4",
        -                  "NRM2",
        -                  "SMM7",
        -                  "MMHW"
        -                ],
        -                "type": "string"
        -              },
        -              "text_summary": {
        -                "maxLength": 2000,
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "totals_summary": {
        -                "additionalProperties": false,
        -                "description": "Schema § 1.4 — totals_summary as a typed wrapper around the free-form dict.\n\nWire shape is a flat object (`{\"concrete_m3\": {...}, \"rebar_t\": {...}}`).\nWe model it as `RootModel`-equivalent via `model_config(extra=\"allow\")`\n+ a single `__root__`-style `entries` dict. Pydantic v2 recommends\n`RootModel` for free-form roots; using a wrapper class keeps the import\nsurface uniform with the rest of this module.",
        -                "properties": {
        -                  "entries": {
        -                    "additionalProperties": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.4 — single material/work-class total entry.",
        -                      "properties": {
        -                        "quantity": {
        -                          "minimum": 0,
        -                          "type": "number"
        -                        },
        -                        "unit": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "quantity",
        -                        "unit"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "object"
        -                  }
        -                },
        -                "type": "object"
        -              },
        -              "warnings": {
        -                "items": {
        -                  "additionalProperties": false,
        -                  "description": "Schema § 1.8 — a non-fatal geometry advisory (56th-fire T2).\n\nThe wire projection of the engine's `core.GeometryWarning`. Advisory only:\na warning NEVER changes a measured quantity — it flags geometry that is\nvalid but likely a mistake (e.g. a stale dependent-height default). Present\non BOTH tiers — a correctness/safety signal, not a paid feature.",
        -                  "properties": {
        -                    "affected_params": {
        -                      "items": {
        -                        "type": "string"
        -                      },
        -                      "type": "array"
        -                    },
        -                    "code": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "detail": {
        -                      "additionalProperties": {
        -                        "type": "number"
        -                      },
        -                      "type": "object"
        -                    },
        -                    "message": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "severity": {
        -                      "enum": [
        -                        "info",
        -                        "advisory",
        -                        "caution"
        -                      ],
        -                      "type": "string"
        -                    }
        -                  },
        -                  "required": [
        -                    "code",
        -                    "severity",
        -                    "message"
        -                  ],
        -                  "type": "object"
        -                },
        -                "type": "array"
        -              }
        -            },
        -            "required": [
        -              "assembly_slug",
        -              "standard",
        -              "parameters_used",
        -              "boq_rows",
        -              "totals_summary",
        -              "text_summary"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      },
        -      "error": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        -            "properties": {
        -              "code": {
        -                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        -                "enum": [
        -                  "RATE_LIMIT_EXCEEDED",
        -                  "TIER_INSUFFICIENT",
        -                  "INVALID_INPUT",
        -                  "SCHEMA_VERSION_MISMATCH",
        -                  "SCHEMA_INVARIANT_VIOLATION",
        -                  "UPSTREAM_TIMEOUT",
        -                  "BACKEND_FAILURE",
        -                  "IP_BLOCKED",
        -                  "RESOURCE_NOT_FOUND",
        -                  "RENDER_FAILURE",
        -                  "OCR_LOW_CONFIDENCE",
        -                  "MANUAL_REVIEW_REQUIRED",
        -                  "ACCEPTANCE_REQUIRED",
        -                  "INVALID_TOKEN"
        -                ],
        -                "type": "string"
        -              },
        -              "details": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "message": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "recoverable": {
        -                "type": "boolean"
        -              },
        -              "retry_after_seconds": {
        -                "anyOf": [
        -                  {
        -                    "minimum": 0,
        -                    "type": "integer"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              }
        -            },
        -            "required": [
        -              "code",
        -              "message",
        -              "recoverable"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      }
        -    },
        -    "required": [
        -      "_meta"
        -    ],
        -    "type": "object"
        -  },
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "_meta": {
        -        "additionalProperties": false,
        -        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        -        "properties": {
        -          "deliverables": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        -                "properties": {
        -                  "docx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "dxf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "expires_at": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  },
        -                  "pdf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "xlsx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "expires_at"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "document_id": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "issued_at": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "rate_limit_remaining": {
        -            "anyOf": [
        -              {
        -                "minimum": 0,
        -                "type": "integer"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "request_id": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "schema_version": {
        -            "const": "1.0.0",
        -            "default": "1.0.0",
        -            "type": "string"
        -          },
        -          "scope_boundary": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        -                "properties": {
        -                  "not_in_scope": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "produced": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "recommended_companions": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "type": "string"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "produced",
        -                  "not_in_scope"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tier": {
        -            "enum": [
        -              "free",
        -              "paid"
        -            ],
        -            "type": "string"
        -          },
        -          "tier_upgrade": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        -                "properties": {
        -                  "available_tiers": {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        -                      "properties": {
        -                        "billing": {
        -                          "enum": [
        -                            "one_off",
        -                            "monthly",
        -                            "annual"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "currency": {
        -                          "enum": [
        -                            "GBP",
        -                            "SGD",
        -                            "EUR",
        -                            "USD",
        -                            "CAD",
        -                            "AUD",
        -                            "NZD",
        -                            "MYR"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "display_name": {
        -                          "type": "string"
        -                        },
        -                        "price_local": {
        -                          "type": "number"
        -                        },
        -                        "tier_slug": {
        -                          "enum": [
        -                            "7_day_pass",
        -                            "solo",
        -                            "studio",
        -                            "practice"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "unlock_summary": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "tier_slug",
        -                        "display_name",
        -                        "price_local",
        -                        "currency",
        -                        "billing",
        -                        "unlock_summary"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "current_tier": {
        -                    "const": "free",
        -                    "default": "free",
        -                    "type": "string"
        -                  },
        -                  "pass_credit": {
        -                    "anyOf": [
        -                      {
        -                        "additionalProperties": false,
        -                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        -                        "properties": {
        -                          "amount_local": {
        -                            "type": "number"
        -                          },
        -                          "applies_to": {
        -                            "const": "solo_first_month",
        -                            "default": "solo_first_month",
        -                            "type": "string"
        -                          },
        -                          "currency": {
        -                            "type": "string"
        -                          },
        -                          "redeemable_until": {
        -                            "type": "string"
        -                          }
        -                        },
        -                        "required": [
        -                          "amount_local",
        -                          "currency",
        -                          "redeemable_until"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "pricing_url": {
        -                    "default": "https://civilquants.com/pricing",
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "available_tiers"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tos_url": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "upgrade_hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "warranty_disclaimer": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          }
        -        },
        -        "required": [
        -          "request_id",
        -          "issued_at",
        -          "tier"
        -        ],
        -        "type": "object"
        -      },
        -      "data": {
        -        "default": null,
        -        "title": "Data"
        -      },
        -      "error": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        -            "properties": {
        -              "code": {
        -                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        -                "enum": [
        -                  "RATE_LIMIT_EXCEEDED",
        -                  "TIER_INSUFFICIENT",
        -                  "INVALID_INPUT",
        -                  "SCHEMA_VERSION_MISMATCH",
        -                  "SCHEMA_INVARIANT_VIOLATION",
        -                  "UPSTREAM_TIMEOUT",
        -                  "BACKEND_FAILURE",
        -                  "IP_BLOCKED",
        -                  "RESOURCE_NOT_FOUND",
        -                  "RENDER_FAILURE",
        -                  "OCR_LOW_CONFIDENCE",
        -                  "MANUAL_REVIEW_REQUIRED",
        -                  "ACCEPTANCE_REQUIRED",
        -                  "INVALID_TOKEN"
        -                ],
        -                "type": "string"
        -              },
        -              "details": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "message": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "recoverable": {
        -                "type": "boolean"
        -              },
        -              "retry_after_seconds": {
        -                "anyOf": [
        -                  {
        -                    "minimum": 0,
        -                    "type": "integer"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              }
        -            },
        -            "required": [
        -              "code",
        -              "message",
        -              "recoverable"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      }
        -    },
        -    "required": [
        -      "_meta"
        -    ],
        -    "type": "object"
        -  }
        -]New value: +[
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "_meta": {
        +        "additionalProperties": false,
        +        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        +        "properties": {
        +          "deliverables": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        +                "properties": {
        +                  "docx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "dxf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "expires_at": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  },
        +                  "pdf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "xlsx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "expires_at"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "document_id": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "issued_at": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "output_mode": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Surfaces what a trimmed ``output_mode`` withheld from ``data``.\n\nA trimmed mode (``summary`` / ``boq`` / ``boq_with_backup``) withholds\nalready-computed fields to keep the chat payload small. The withheld value\nreads to a client agent as \"capability missing\" (the box-culvert \"geometry\nbuilder isn't firing\" scare) rather than \"pared for size\": ``drawing`` and\n``audit_trail`` appear as ``null``, ``boq_rows`` as an empty list ``[]``\n(its type forbids ``null``) — both indistinguishable from a genuine absent\nresult. This names the withheld fields and the exact mode that brings each\nback, so the value is unambiguous. Absent on the default ``full_json`` mode\n— nothing is withheld, nothing to point at.",
        +                "properties": {
        +                  "mode": {
        +                    "enum": [
        +                      "summary",
        +                      "boq",
        +                      "boq_with_backup"
        +                    ],
        +                    "type": "string"
        +                  },
        +                  "omitted_fields": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "minItems": 1,
        +                    "type": "array"
        +                  },
        +                  "retrieve_with": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "mode",
        +                  "omitted_fields",
        +                  "retrieve_with"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "rate_limit_remaining": {
        +            "anyOf": [
        +              {
        +                "minimum": 0,
        +                "type": "integer"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "request_id": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "schema_version": {
        +            "const": "1.0.0",
        +            "default": "1.0.0",
        +            "type": "string"
        +          },
        +          "scope_boundary": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        +                "properties": {
        +                  "not_in_scope": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "produced": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "recommended_companions": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "type": "string"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "produced",
        +                  "not_in_scope"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tier": {
        +            "enum": [
        +              "free",
        +              "paid"
        +            ],
        +            "type": "string"
        +          },
        +          "tier_upgrade": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        +                "properties": {
        +                  "available_tiers": {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        +                      "properties": {
        +                        "billing": {
        +                          "enum": [
        +                            "one_off",
        +                            "monthly",
        +                            "annual"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "currency": {
        +                          "enum": [
        +                            "GBP",
        +                            "SGD",
        +                            "EUR",
        +                            "USD",
        +                            "CAD",
        +                            "AUD",
        +                            "NZD",
        +                            "MYR"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "display_name": {
        +                          "type": "string"
        +                        },
        +                        "price_local": {
        +                          "type": "number"
        +                        },
        +                        "tier_slug": {
        +                          "enum": [
        +                            "7_day_pass",
        +                            "solo",
        +                            "studio",
        +                            "practice"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "unlock_summary": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "tier_slug",
        +                        "display_name",
        +                        "price_local",
        +                        "currency",
        +                        "billing",
        +                        "unlock_summary"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "current_tier": {
        +                    "const": "free",
        +                    "default": "free",
        +                    "type": "string"
        +                  },
        +                  "pass_credit": {
        +                    "anyOf": [
        +                      {
        +                        "additionalProperties": false,
        +                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        +                        "properties": {
        +                          "amount_local": {
        +                            "type": "number"
        +                          },
        +                          "applies_to": {
        +                            "const": "solo_first_month",
        +                            "default": "solo_first_month",
        +                            "type": "string"
        +                          },
        +                          "currency": {
        +                            "type": "string"
        +                          },
        +                          "redeemable_until": {
        +                            "type": "string"
        +                          }
        +                        },
        +                        "required": [
        +                          "amount_local",
        +                          "currency",
        +                          "redeemable_until"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "pricing_url": {
        +                    "default": "https://civilquants.com/pricing",
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "available_tiers"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tos_url": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "upgrade_hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "warranty_disclaimer": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          }
        +        },
        +        "required": [
        +          "request_id",
        +          "issued_at",
        +          "tier"
        +        ],
        +        "type": "object"
        +      },
        +      "data": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Schema § 1.1 — the typed payload returned inside `MCPResponse[ComputeResult]`.\n\nFree-tier responses omit `drawings` (the downloadable CAD artefact\npointers — the paid differentiator); the bridge enforces this. The\n`audit_trail` and the inline `drawing` preview are present on BOTH tiers\n(V1 ALIGN / 60th-fire D + C). `text_summary` is bounded to 2000 chars —\nkeeps the LLM-facing summary token-cheap and forces longer narrative into\nBoQ row descriptions where it belongs. `warnings` is the non-fatal\ngeometry advisory list (both tiers).",
        +            "properties": {
        +              "assembly_slug": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "audit_trail": {
        +                "anyOf": [
        +                  {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.7 — paid-tier audit-trail entry.\n\nOne entry per BoQ row; `boq_row_index` ties to the row position in\n`ComputeResult.boq_rows`. `derivation` is the human-readable formula\nwalk-through; `formula` is the optional formal expression.",
        +                      "properties": {
        +                        "boq_row_index": {
        +                          "minimum": 0,
        +                          "type": "integer"
        +                        },
        +                        "derivation": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "formula": {
        +                          "anyOf": [
        +                            {
        +                              "type": "string"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ],
        +                          "default": null
        +                        },
        +                        "id": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "parameters_referenced": {
        +                          "items": {
        +                            "type": "string"
        +                          },
        +                          "type": "array"
        +                        }
        +                      },
        +                      "required": [
        +                        "id",
        +                        "boq_row_index",
        +                        "derivation"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "boq_rows": {
        +                "items": {
        +                  "additionalProperties": false,
        +                  "description": "Schema § 1.3 — a single bill row in the requested standard's format.\n\n`description` is the non-verbatim functional description per spec § 13.9 /\n§ 15 invariant — NEVER reproduces a standard's verbatim clause text.\n`rate` / `amount` ship null because rates are commodity data the customer\nowns; the engine's job is the measurement, not the pricing.",
        +                  "properties": {
        +                    "amount": {
        +                      "anyOf": [
        +                        {
        +                          "type": "number"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "attribution": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "audit_id": {
        +                      "anyOf": [
        +                        {
        +                          "type": "string"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "description": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "quantity": {
        +                      "minimum": 0,
        +                      "type": "number"
        +                    },
        +                    "rate": {
        +                      "anyOf": [
        +                        {
        +                          "type": "number"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "unit": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "work_section": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    }
        +                  },
        +                  "required": [
        +                    "work_section",
        +                    "description",
        +                    "quantity",
        +                    "unit",
        +                    "attribution"
        +                  ],
        +                  "type": "object"
        +                },
        +                "type": "array"
        +              },
        +              "drawing": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": false,
        +                    "description": "Schema § 1.6a — inline server-rendered SVG preview of the geometry.\n\nThe MCP mirror of the web ``/compute`` response's ``drawing`` field\n(``api.schemas.compute.DrawingRef``): the same on-screen dimensioned\ndrawing both tiers see in the workspace, surfaced on the MCP compute\nresponse so a chat client can render it inline (60th-fire item C). This\nis the on-screen preview — present on BOTH tiers per the free/paid\nboundary; the downloadable CAD artefacts (DXF / dimensioned PDF) remain\nthe paid differentiator via the export tools.\n\nDefined here rather than importing ``DrawingRef`` because the web\n``schemas`` package imports back into this module (``schemas.render``),\nso reusing it would create an import cycle — the MCP wire contract keeps\nits own copy, the same pattern as ``BoQRow`` / ``DrawingReference``.",
        +                    "properties": {
        +                      "entity_count": {
        +                        "minimum": 0,
        +                        "type": "integer"
        +                      },
        +                      "svg_b64": {
        +                        "minLength": 1,
        +                        "type": "string"
        +                      },
        +                      "unit_of_drawing": {
        +                        "const": "m",
        +                        "default": "m",
        +                        "type": "string"
        +                      },
        +                      "viewbox_height": {
        +                        "exclusiveMinimum": 0,
        +                        "type": "number"
        +                      },
        +                      "viewbox_width": {
        +                        "exclusiveMinimum": 0,
        +                        "type": "number"
        +                      },
        +                      "viewbox_x": {
        +                        "type": "number"
        +                      },
        +                      "viewbox_y": {
        +                        "type": "number"
        +                      }
        +                    },
        +                    "required": [
        +                      "svg_b64",
        +                      "viewbox_x",
        +                      "viewbox_y",
        +                      "viewbox_width",
        +                      "viewbox_height",
        +                      "entity_count"
        +                    ],
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "drawings": {
        +                "anyOf": [
        +                  {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.6 — paid-tier drawing artefact pointer.\n\n`url` is an R2-signed URL; expiry is carried in `_meta.deliverables.expires_at`\non the envelope (not duplicated here). `layers` is DXF-only; PDF/SVG\ncallers omit it.",
        +                      "properties": {
        +                        "drawing_type": {
        +                          "enum": [
        +                            "section",
        +                            "plan",
        +                            "elevation",
        +                            "isometric",
        +                            "detail"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "format": {
        +                          "enum": [
        +                            "DXF",
        +                            "PDF",
        +                            "SVG"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "layers": {
        +                          "anyOf": [
        +                            {
        +                              "items": {
        +                                "type": "string"
        +                              },
        +                              "type": "array"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ],
        +                          "default": null
        +                        },
        +                        "scale": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "sheet_size": {
        +                          "enum": [
        +                            "A1",
        +                            "A2",
        +                            "A3",
        +                            "A4"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "url": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "drawing_type",
        +                        "format",
        +                        "url",
        +                        "sheet_size",
        +                        "scale"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "parameters_used": {
        +                "additionalProperties": false,
        +                "description": "Schema § 1.2 — the parameter snapshot the engine actually used.\n\nSplits user-supplied values from engine defaults so customers can see\nwhich numbers came from them and which the engine filled in. Every\ndefaulted parameter SHOULD have a corresponding entry in `assumptions`\n— the bridge layer enforces this when wrapping engine output.",
        +                "properties": {
        +                  "assumptions": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "engine_defaults": {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  "user_supplied": {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  }
        +                },
        +                "type": "object"
        +              },
        +              "standard": {
        +                "enum": [
        +                  "CESMM4",
        +                  "NRM2",
        +                  "SMM7",
        +                  "MMHW"
        +                ],
        +                "type": "string"
        +              },
        +              "text_summary": {
        +                "maxLength": 2000,
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "totals_summary": {
        +                "additionalProperties": false,
        +                "description": "Schema § 1.4 — totals_summary as a typed wrapper around the free-form dict.\n\nWire shape is a flat object (`{\"concrete_m3\": {...}, \"rebar_t\": {...}}`).\nWe model it as `RootModel`-equivalent via `model_config(extra=\"allow\")`\n+ a single `__root__`-style `entries` dict. Pydantic v2 recommends\n`RootModel` for free-form roots; using a wrapper class keeps the import\nsurface uniform with the rest of this module.",
        +                "properties": {
        +                  "entries": {
        +                    "additionalProperties": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.4 — single material/work-class total entry.",
        +                      "properties": {
        +                        "quantity": {
        +                          "minimum": 0,
        +                          "type": "number"
        +                        },
        +                        "unit": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "quantity",
        +                        "unit"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "object"
        +                  }
        +                },
        +                "type": "object"
        +              },
        +              "warnings": {
        +                "items": {
        +                  "additionalProperties": false,
        +                  "description": "Schema § 1.8 — a non-fatal geometry advisory (56th-fire T2).\n\nThe wire projection of the engine's `core.GeometryWarning`. Advisory only:\na warning NEVER changes a measured quantity — it flags geometry that is\nvalid but likely a mistake (e.g. a stale dependent-height default). Present\non BOTH tiers — a correctness/safety signal, not a paid feature.",
        +                  "properties": {
        +                    "affected_params": {
        +                      "items": {
        +                        "type": "string"
        +                      },
        +                      "type": "array"
        +                    },
        +                    "code": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "detail": {
        +                      "additionalProperties": {
        +                        "type": "number"
        +                      },
        +                      "type": "object"
        +                    },
        +                    "message": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "severity": {
        +                      "enum": [
        +                        "info",
        +                        "advisory",
        +                        "caution"
        +                      ],
        +                      "type": "string"
        +                    }
        +                  },
        +                  "required": [
        +                    "code",
        +                    "severity",
        +                    "message"
        +                  ],
        +                  "type": "object"
        +                },
        +                "type": "array"
        +              }
        +            },
        +            "required": [
        +              "assembly_slug",
        +              "standard",
        +              "parameters_used",
        +              "boq_rows",
        +              "totals_summary",
        +              "text_summary"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      },
        +      "error": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        +            "properties": {
        +              "code": {
        +                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        +                "enum": [
        +                  "RATE_LIMIT_EXCEEDED",
        +                  "TIER_INSUFFICIENT",
        +                  "INVALID_INPUT",
        +                  "SCHEMA_VERSION_MISMATCH",
        +                  "SCHEMA_INVARIANT_VIOLATION",
        +                  "UPSTREAM_TIMEOUT",
        +                  "BACKEND_FAILURE",
        +                  "IP_BLOCKED",
        +                  "RESOURCE_NOT_FOUND",
        +                  "RENDER_FAILURE",
        +                  "OCR_LOW_CONFIDENCE",
        +                  "MANUAL_REVIEW_REQUIRED",
        +                  "ACCEPTANCE_REQUIRED",
        +                  "INVALID_TOKEN"
        +                ],
        +                "type": "string"
        +              },
        +              "details": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "message": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "recoverable": {
        +                "type": "boolean"
        +              },
        +              "retry_after_seconds": {
        +                "anyOf": [
        +                  {
        +                    "minimum": 0,
        +                    "type": "integer"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              }
        +            },
        +            "required": [
        +              "code",
        +              "message",
        +              "recoverable"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      }
        +    },
        +    "required": [
        +      "_meta"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "_meta": {
        +        "additionalProperties": false,
        +        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        +        "properties": {
        +          "deliverables": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        +                "properties": {
        +                  "docx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "dxf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "expires_at": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  },
        +                  "pdf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "xlsx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "expires_at"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "document_id": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "issued_at": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "output_mode": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Surfaces what a trimmed ``output_mode`` withheld from ``data``.\n\nA trimmed mode (``summary`` / ``boq`` / ``boq_with_backup``) withholds\nalready-computed fields to keep the chat payload small. The withheld value\nreads to a client agent as \"capability missing\" (the box-culvert \"geometry\nbuilder isn't firing\" scare) rather than \"pared for size\": ``drawing`` and\n``audit_trail`` appear as ``null``, ``boq_rows`` as an empty list ``[]``\n(its type forbids ``null``) — both indistinguishable from a genuine absent\nresult. This names the withheld fields and the exact mode that brings each\nback, so the value is unambiguous. Absent on the default ``full_json`` mode\n— nothing is withheld, nothing to point at.",
        +                "properties": {
        +                  "mode": {
        +                    "enum": [
        +                      "summary",
        +                      "boq",
        +                      "boq_with_backup"
        +                    ],
        +                    "type": "string"
        +                  },
        +                  "omitted_fields": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "minItems": 1,
        +                    "type": "array"
        +                  },
        +                  "retrieve_with": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "mode",
        +                  "omitted_fields",
        +                  "retrieve_with"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "rate_limit_remaining": {
        +            "anyOf": [
        +              {
        +                "minimum": 0,
        +                "type": "integer"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "request_id": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "schema_version": {
        +            "const": "1.0.0",
        +            "default": "1.0.0",
        +            "type": "string"
        +          },
        +          "scope_boundary": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        +                "properties": {
        +                  "not_in_scope": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "produced": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "recommended_companions": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "type": "string"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "produced",
        +                  "not_in_scope"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tier": {
        +            "enum": [
        +              "free",
        +              "paid"
        +            ],
        +            "type": "string"
        +          },
        +          "tier_upgrade": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        +                "properties": {
        +                  "available_tiers": {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        +                      "properties": {
        +                        "billing": {
        +                          "enum": [
        +                            "one_off",
        +                            "monthly",
        +                            "annual"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "currency": {
        +                          "enum": [
        +                            "GBP",
        +                            "SGD",
        +                            "EUR",
        +                            "USD",
        +                            "CAD",
        +                            "AUD",
        +                            "NZD",
        +                            "MYR"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "display_name": {
        +                          "type": "string"
        +                        },
        +                        "price_local": {
        +                          "type": "number"
        +                        },
        +                        "tier_slug": {
        +                          "enum": [
        +                            "7_day_pass",
        +                            "solo",
        +                            "studio",
        +                            "practice"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "unlock_summary": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "tier_slug",
        +                        "display_name",
        +                        "price_local",
        +                        "currency",
        +                        "billing",
        +                        "unlock_summary"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "current_tier": {
        +                    "const": "free",
        +                    "default": "free",
        +                    "type": "string"
        +                  },
        +                  "pass_credit": {
        +                    "anyOf": [
        +                      {
        +                        "additionalProperties": false,
        +                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        +                        "properties": {
        +                          "amount_local": {
        +                            "type": "number"
        +                          },
        +                          "applies_to": {
        +                            "const": "solo_first_month",
        +                            "default": "solo_first_month",
        +                            "type": "string"
        +                          },
        +                          "currency": {
        +                            "type": "string"
        +                          },
        +                          "redeemable_until": {
        +                            "type": "string"
        +                          }
        +                        },
        +                        "required": [
        +                          "amount_local",
        +                          "currency",
        +                          "redeemable_until"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "pricing_url": {
        +                    "default": "https://civilquants.com/pricing",
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "available_tiers"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tos_url": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "upgrade_hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "warranty_disclaimer": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          }
        +        },
        +        "required": [
        +          "request_id",
        +          "issued_at",
        +          "tier"
        +        ],
        +        "type": "object"
        +      },
        +      "data": {
        +        "default": null,
        +        "title": "Data"
        +      },
        +      "error": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        +            "properties": {
        +              "code": {
        +                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        +                "enum": [
        +                  "RATE_LIMIT_EXCEEDED",
        +                  "TIER_INSUFFICIENT",
        +                  "INVALID_INPUT",
        +                  "SCHEMA_VERSION_MISMATCH",
        +                  "SCHEMA_INVARIANT_VIOLATION",
        +                  "UPSTREAM_TIMEOUT",
        +                  "BACKEND_FAILURE",
        +                  "IP_BLOCKED",
        +                  "RESOURCE_NOT_FOUND",
        +                  "RENDER_FAILURE",
        +                  "OCR_LOW_CONFIDENCE",
        +                  "MANUAL_REVIEW_REQUIRED",
        +                  "ACCEPTANCE_REQUIRED",
        +                  "INVALID_TOKEN"
        +                ],
        +                "type": "string"
        +              },
        +              "details": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "message": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "recoverable": {
        +                "type": "boolean"
        +              },
        +              "retry_after_seconds": {
        +                "anyOf": [
        +                  {
        +                    "minimum": 0,
        +                    "type": "integer"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              }
        +            },
        +            "required": [
        +              "code",
        +              "message",
        +              "recoverable"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      }
        +    },
        +    "required": [
        +      "_meta"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedcompute_combined_services_trench1 field changed
      • changedOutput schema / properties / result / anyOf
        Previous value: -[
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "_meta": {
        -        "additionalProperties": false,
        -        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        -        "properties": {
        -          "deliverables": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        -                "properties": {
        -                  "docx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "dxf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "expires_at": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  },
        -                  "pdf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "xlsx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "expires_at"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "document_id": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "issued_at": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "rate_limit_remaining": {
        -            "anyOf": [
        -              {
        -                "minimum": 0,
        -                "type": "integer"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "request_id": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "schema_version": {
        -            "const": "1.0.0",
        -            "default": "1.0.0",
        -            "type": "string"
        -          },
        -          "scope_boundary": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        -                "properties": {
        -                  "not_in_scope": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "produced": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "recommended_companions": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "type": "string"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "produced",
        -                  "not_in_scope"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tier": {
        -            "enum": [
        -              "free",
        -              "paid"
        -            ],
        -            "type": "string"
        -          },
        -          "tier_upgrade": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        -                "properties": {
        -                  "available_tiers": {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        -                      "properties": {
        -                        "billing": {
        -                          "enum": [
        -                            "one_off",
        -                            "monthly",
        -                            "annual"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "currency": {
        -                          "enum": [
        -                            "GBP",
        -                            "SGD",
        -                            "EUR",
        -                            "USD",
        -                            "CAD",
        -                            "AUD",
        -                            "NZD",
        -                            "MYR"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "display_name": {
        -                          "type": "string"
        -                        },
        -                        "price_local": {
        -                          "type": "number"
        -                        },
        -                        "tier_slug": {
        -                          "enum": [
        -                            "7_day_pass",
        -                            "solo",
        -                            "studio",
        -                            "practice"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "unlock_summary": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "tier_slug",
        -                        "display_name",
        -                        "price_local",
        -                        "currency",
        -                        "billing",
        -                        "unlock_summary"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "current_tier": {
        -                    "const": "free",
        -                    "default": "free",
        -                    "type": "string"
        -                  },
        -                  "pass_credit": {
        -                    "anyOf": [
        -                      {
        -                        "additionalProperties": false,
        -                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        -                        "properties": {
        -                          "amount_local": {
        -                            "type": "number"
        -                          },
        -                          "applies_to": {
        -                            "const": "solo_first_month",
        -                            "default": "solo_first_month",
        -                            "type": "string"
        -                          },
        -                          "currency": {
        -                            "type": "string"
        -                          },
        -                          "redeemable_until": {
        -                            "type": "string"
        -                          }
        -                        },
        -                        "required": [
        -                          "amount_local",
        -                          "currency",
        -                          "redeemable_until"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "pricing_url": {
        -                    "default": "https://civilquants.com/pricing",
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "available_tiers"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tos_url": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "upgrade_hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "warranty_disclaimer": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          }
        -        },
        -        "required": [
        -          "request_id",
        -          "issued_at",
        -          "tier"
        -        ],
        -        "type": "object"
        -      },
        -      "data": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Schema § 1.1 — the typed payload returned inside `MCPResponse[ComputeResult]`.\n\nFree-tier responses omit `drawings` (the downloadable CAD artefact\npointers — the paid differentiator); the bridge enforces this. The\n`audit_trail` and the inline `drawing` preview are present on BOTH tiers\n(V1 ALIGN / 60th-fire D + C). `text_summary` is bounded to 2000 chars —\nkeeps the LLM-facing summary token-cheap and forces longer narrative into\nBoQ row descriptions where it belongs. `warnings` is the non-fatal\ngeometry advisory list (both tiers).",
        -            "properties": {
        -              "assembly_slug": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "audit_trail": {
        -                "anyOf": [
        -                  {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.7 — paid-tier audit-trail entry.\n\nOne entry per BoQ row; `boq_row_index` ties to the row position in\n`ComputeResult.boq_rows`. `derivation` is the human-readable formula\nwalk-through; `formula` is the optional formal expression.",
        -                      "properties": {
        -                        "boq_row_index": {
        -                          "minimum": 0,
        -                          "type": "integer"
        -                        },
        -                        "derivation": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "formula": {
        -                          "anyOf": [
        -                            {
        -                              "type": "string"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ],
        -                          "default": null
        -                        },
        -                        "id": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "parameters_referenced": {
        -                          "items": {
        -                            "type": "string"
        -                          },
        -                          "type": "array"
        -                        }
        -                      },
        -                      "required": [
        -                        "id",
        -                        "boq_row_index",
        -                        "derivation"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "boq_rows": {
        -                "items": {
        -                  "additionalProperties": false,
        -                  "description": "Schema § 1.3 — a single bill row in the requested standard's format.\n\n`description` is the non-verbatim functional description per spec § 13.9 /\n§ 15 invariant — NEVER reproduces a standard's verbatim clause text.\n`rate` / `amount` ship null because rates are commodity data the customer\nowns; the engine's job is the measurement, not the pricing.",
        -                  "properties": {
        -                    "amount": {
        -                      "anyOf": [
        -                        {
        -                          "type": "number"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "attribution": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "audit_id": {
        -                      "anyOf": [
        -                        {
        -                          "type": "string"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "description": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "quantity": {
        -                      "minimum": 0,
        -                      "type": "number"
        -                    },
        -                    "rate": {
        -                      "anyOf": [
        -                        {
        -                          "type": "number"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "unit": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "work_section": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    }
        -                  },
        -                  "required": [
        -                    "work_section",
        -                    "description",
        -                    "quantity",
        -                    "unit",
        -                    "attribution"
        -                  ],
        -                  "type": "object"
        -                },
        -                "type": "array"
        -              },
        -              "drawing": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": false,
        -                    "description": "Schema § 1.6a — inline server-rendered SVG preview of the geometry.\n\nThe MCP mirror of the web ``/compute`` response's ``drawing`` field\n(``api.schemas.compute.DrawingRef``): the same on-screen dimensioned\ndrawing both tiers see in the workspace, surfaced on the MCP compute\nresponse so a chat client can render it inline (60th-fire item C). This\nis the on-screen preview — present on BOTH tiers per the free/paid\nboundary; the downloadable CAD artefacts (DXF / dimensioned PDF) remain\nthe paid differentiator via the export tools.\n\nDefined here rather than importing ``DrawingRef`` because the web\n``schemas`` package imports back into this module (``schemas.render``),\nso reusing it would create an import cycle — the MCP wire contract keeps\nits own copy, the same pattern as ``BoQRow`` / ``DrawingReference``.",
        -                    "properties": {
        -                      "entity_count": {
        -                        "minimum": 0,
        -                        "type": "integer"
        -                      },
        -                      "svg_b64": {
        -                        "minLength": 1,
        -                        "type": "string"
        -                      },
        -                      "unit_of_drawing": {
        -                        "const": "m",
        -                        "default": "m",
        -                        "type": "string"
        -                      },
        -                      "viewbox_height": {
        -                        "exclusiveMinimum": 0,
        -                        "type": "number"
        -                      },
        -                      "viewbox_width": {
        -                        "exclusiveMinimum": 0,
        -                        "type": "number"
        -                      },
        -                      "viewbox_x": {
        -                        "type": "number"
        -                      },
        -                      "viewbox_y": {
        -                        "type": "number"
        -                      }
        -                    },
        -                    "required": [
        -                      "svg_b64",
        -                      "viewbox_x",
        -                      "viewbox_y",
        -                      "viewbox_width",
        -                      "viewbox_height",
        -                      "entity_count"
        -                    ],
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "drawings": {
        -                "anyOf": [
        -                  {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.6 — paid-tier drawing artefact pointer.\n\n`url` is an R2-signed URL; expiry is carried in `_meta.deliverables.expires_at`\non the envelope (not duplicated here). `layers` is DXF-only; PDF/SVG\ncallers omit it.",
        -                      "properties": {
        -                        "drawing_type": {
        -                          "enum": [
        -                            "section",
        -                            "plan",
        -                            "elevation",
        -                            "isometric",
        -                            "detail"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "format": {
        -                          "enum": [
        -                            "DXF",
        -                            "PDF",
        -                            "SVG"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "layers": {
        -                          "anyOf": [
        -                            {
        -                              "items": {
        -                                "type": "string"
        -                              },
        -                              "type": "array"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ],
        -                          "default": null
        -                        },
        -                        "scale": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "sheet_size": {
        -                          "enum": [
        -                            "A1",
        -                            "A2",
        -                            "A3",
        -                            "A4"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "url": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "drawing_type",
        -                        "format",
        -                        "url",
        -                        "sheet_size",
        -                        "scale"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "parameters_used": {
        -                "additionalProperties": false,
        -                "description": "Schema § 1.2 — the parameter snapshot the engine actually used.\n\nSplits user-supplied values from engine defaults so customers can see\nwhich numbers came from them and which the engine filled in. Every\ndefaulted parameter SHOULD have a corresponding entry in `assumptions`\n— the bridge layer enforces this when wrapping engine output.",
        -                "properties": {
        -                  "assumptions": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "engine_defaults": {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  "user_supplied": {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  }
        -                },
        -                "type": "object"
        -              },
        -              "standard": {
        -                "enum": [
        -                  "CESMM4",
        -                  "NRM2",
        -                  "SMM7",
        -                  "MMHW"
        -                ],
        -                "type": "string"
        -              },
        -              "text_summary": {
        -                "maxLength": 2000,
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "totals_summary": {
        -                "additionalProperties": false,
        -                "description": "Schema § 1.4 — totals_summary as a typed wrapper around the free-form dict.\n\nWire shape is a flat object (`{\"concrete_m3\": {...}, \"rebar_t\": {...}}`).\nWe model it as `RootModel`-equivalent via `model_config(extra=\"allow\")`\n+ a single `__root__`-style `entries` dict. Pydantic v2 recommends\n`RootModel` for free-form roots; using a wrapper class keeps the import\nsurface uniform with the rest of this module.",
        -                "properties": {
        -                  "entries": {
        -                    "additionalProperties": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.4 — single material/work-class total entry.",
        -                      "properties": {
        -                        "quantity": {
        -                          "minimum": 0,
        -                          "type": "number"
        -                        },
        -                        "unit": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "quantity",
        -                        "unit"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "object"
        -                  }
        -                },
        -                "type": "object"
        -              },
        -              "warnings": {
        -                "items": {
        -                  "additionalProperties": false,
        -                  "description": "Schema § 1.8 — a non-fatal geometry advisory (56th-fire T2).\n\nThe wire projection of the engine's `core.GeometryWarning`. Advisory only:\na warning NEVER changes a measured quantity — it flags geometry that is\nvalid but likely a mistake (e.g. a stale dependent-height default). Present\non BOTH tiers — a correctness/safety signal, not a paid feature.",
        -                  "properties": {
        -                    "affected_params": {
        -                      "items": {
        -                        "type": "string"
        -                      },
        -                      "type": "array"
        -                    },
        -                    "code": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "detail": {
        -                      "additionalProperties": {
        -                        "type": "number"
        -                      },
        -                      "type": "object"
        -                    },
        -                    "message": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "severity": {
        -                      "enum": [
        -                        "info",
        -                        "advisory",
        -                        "caution"
        -                      ],
        -                      "type": "string"
        -                    }
        -                  },
        -                  "required": [
        -                    "code",
        -                    "severity",
        -                    "message"
        -                  ],
        -                  "type": "object"
        -                },
        -                "type": "array"
        -              }
        -            },
        -            "required": [
        -              "assembly_slug",
        -              "standard",
        -              "parameters_used",
        -              "boq_rows",
        -              "totals_summary",
        -              "text_summary"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      },
        -      "error": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        -            "properties": {
        -              "code": {
        -                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        -                "enum": [
        -                  "RATE_LIMIT_EXCEEDED",
        -                  "TIER_INSUFFICIENT",
        -                  "INVALID_INPUT",
        -                  "SCHEMA_VERSION_MISMATCH",
        -                  "SCHEMA_INVARIANT_VIOLATION",
        -                  "UPSTREAM_TIMEOUT",
        -                  "BACKEND_FAILURE",
        -                  "IP_BLOCKED",
        -                  "RESOURCE_NOT_FOUND",
        -                  "RENDER_FAILURE",
        -                  "OCR_LOW_CONFIDENCE",
        -                  "MANUAL_REVIEW_REQUIRED",
        -                  "ACCEPTANCE_REQUIRED",
        -                  "INVALID_TOKEN"
        -                ],
        -                "type": "string"
        -              },
        -              "details": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "message": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "recoverable": {
        -                "type": "boolean"
        -              },
        -              "retry_after_seconds": {
        -                "anyOf": [
        -                  {
        -                    "minimum": 0,
        -                    "type": "integer"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              }
        -            },
        -            "required": [
        -              "code",
        -              "message",
        -              "recoverable"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      }
        -    },
        -    "required": [
        -      "_meta"
        -    ],
        -    "type": "object"
        -  },
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "_meta": {
        -        "additionalProperties": false,
        -        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        -        "properties": {
        -          "deliverables": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        -                "properties": {
        -                  "docx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "dxf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "expires_at": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  },
        -                  "pdf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "xlsx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "expires_at"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "document_id": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "issued_at": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "rate_limit_remaining": {
        -            "anyOf": [
        -              {
        -                "minimum": 0,
        -                "type": "integer"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "request_id": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "schema_version": {
        -            "const": "1.0.0",
        -            "default": "1.0.0",
        -            "type": "string"
        -          },
        -          "scope_boundary": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        -                "properties": {
        -                  "not_in_scope": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "produced": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "recommended_companions": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "type": "string"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "produced",
        -                  "not_in_scope"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tier": {
        -            "enum": [
        -              "free",
        -              "paid"
        -            ],
        -            "type": "string"
        -          },
        -          "tier_upgrade": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        -                "properties": {
        -                  "available_tiers": {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        -                      "properties": {
        -                        "billing": {
        -                          "enum": [
        -                            "one_off",
        -                            "monthly",
        -                            "annual"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "currency": {
        -                          "enum": [
        -                            "GBP",
        -                            "SGD",
        -                            "EUR",
        -                            "USD",
        -                            "CAD",
        -                            "AUD",
        -                            "NZD",
        -                            "MYR"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "display_name": {
        -                          "type": "string"
        -                        },
        -                        "price_local": {
        -                          "type": "number"
        -                        },
        -                        "tier_slug": {
        -                          "enum": [
        -                            "7_day_pass",
        -                            "solo",
        -                            "studio",
        -                            "practice"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "unlock_summary": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "tier_slug",
        -                        "display_name",
        -                        "price_local",
        -                        "currency",
        -                        "billing",
        -                        "unlock_summary"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "current_tier": {
        -                    "const": "free",
        -                    "default": "free",
        -                    "type": "string"
        -                  },
        -                  "pass_credit": {
        -                    "anyOf": [
        -                      {
        -                        "additionalProperties": false,
        -                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        -                        "properties": {
        -                          "amount_local": {
        -                            "type": "number"
        -                          },
        -                          "applies_to": {
        -                            "const": "solo_first_month",
        -                            "default": "solo_first_month",
        -                            "type": "string"
        -                          },
        -                          "currency": {
        -                            "type": "string"
        -                          },
        -                          "redeemable_until": {
        -                            "type": "string"
        -                          }
        -                        },
        -                        "required": [
        -                          "amount_local",
        -                          "currency",
        -                          "redeemable_until"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "pricing_url": {
        -                    "default": "https://civilquants.com/pricing",
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "available_tiers"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tos_url": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "upgrade_hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "warranty_disclaimer": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          }
        -        },
        -        "required": [
        -          "request_id",
        -          "issued_at",
        -          "tier"
        -        ],
        -        "type": "object"
        -      },
        -      "data": {
        -        "default": null,
        -        "title": "Data"
        -      },
        -      "error": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        -            "properties": {
        -              "code": {
        -                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        -                "enum": [
        -                  "RATE_LIMIT_EXCEEDED",
        -                  "TIER_INSUFFICIENT",
        -                  "INVALID_INPUT",
        -                  "SCHEMA_VERSION_MISMATCH",
        -                  "SCHEMA_INVARIANT_VIOLATION",
        -                  "UPSTREAM_TIMEOUT",
        -                  "BACKEND_FAILURE",
        -                  "IP_BLOCKED",
        -                  "RESOURCE_NOT_FOUND",
        -                  "RENDER_FAILURE",
        -                  "OCR_LOW_CONFIDENCE",
        -                  "MANUAL_REVIEW_REQUIRED",
        -                  "ACCEPTANCE_REQUIRED",
        -                  "INVALID_TOKEN"
        -                ],
        -                "type": "string"
        -              },
        -              "details": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "message": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "recoverable": {
        -                "type": "boolean"
        -              },
        -              "retry_after_seconds": {
        -                "anyOf": [
        -                  {
        -                    "minimum": 0,
        -                    "type": "integer"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              }
        -            },
        -            "required": [
        -              "code",
        -              "message",
        -              "recoverable"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      }
        -    },
        -    "required": [
        -      "_meta"
        -    ],
        -    "type": "object"
        -  }
        -]New value: +[
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "_meta": {
        +        "additionalProperties": false,
        +        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        +        "properties": {
        +          "deliverables": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        +                "properties": {
        +                  "docx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "dxf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "expires_at": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  },
        +                  "pdf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "xlsx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "expires_at"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "document_id": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "issued_at": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "output_mode": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Surfaces what a trimmed ``output_mode`` withheld from ``data``.\n\nA trimmed mode (``summary`` / ``boq`` / ``boq_with_backup``) withholds\nalready-computed fields to keep the chat payload small. The withheld value\nreads to a client agent as \"capability missing\" (the box-culvert \"geometry\nbuilder isn't firing\" scare) rather than \"pared for size\": ``drawing`` and\n``audit_trail`` appear as ``null``, ``boq_rows`` as an empty list ``[]``\n(its type forbids ``null``) — both indistinguishable from a genuine absent\nresult. This names the withheld fields and the exact mode that brings each\nback, so the value is unambiguous. Absent on the default ``full_json`` mode\n— nothing is withheld, nothing to point at.",
        +                "properties": {
        +                  "mode": {
        +                    "enum": [
        +                      "summary",
        +                      "boq",
        +                      "boq_with_backup"
        +                    ],
        +                    "type": "string"
        +                  },
        +                  "omitted_fields": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "minItems": 1,
        +                    "type": "array"
        +                  },
        +                  "retrieve_with": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "mode",
        +                  "omitted_fields",
        +                  "retrieve_with"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "rate_limit_remaining": {
        +            "anyOf": [
        +              {
        +                "minimum": 0,
        +                "type": "integer"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "request_id": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "schema_version": {
        +            "const": "1.0.0",
        +            "default": "1.0.0",
        +            "type": "string"
        +          },
        +          "scope_boundary": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        +                "properties": {
        +                  "not_in_scope": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "produced": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "recommended_companions": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "type": "string"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "produced",
        +                  "not_in_scope"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tier": {
        +            "enum": [
        +              "free",
        +              "paid"
        +            ],
        +            "type": "string"
        +          },
        +          "tier_upgrade": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        +                "properties": {
        +                  "available_tiers": {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        +                      "properties": {
        +                        "billing": {
        +                          "enum": [
        +                            "one_off",
        +                            "monthly",
        +                            "annual"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "currency": {
        +                          "enum": [
        +                            "GBP",
        +                            "SGD",
        +                            "EUR",
        +                            "USD",
        +                            "CAD",
        +                            "AUD",
        +                            "NZD",
        +                            "MYR"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "display_name": {
        +                          "type": "string"
        +                        },
        +                        "price_local": {
        +                          "type": "number"
        +                        },
        +                        "tier_slug": {
        +                          "enum": [
        +                            "7_day_pass",
        +                            "solo",
        +                            "studio",
        +                            "practice"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "unlock_summary": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "tier_slug",
        +                        "display_name",
        +                        "price_local",
        +                        "currency",
        +                        "billing",
        +                        "unlock_summary"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "current_tier": {
        +                    "const": "free",
        +                    "default": "free",
        +                    "type": "string"
        +                  },
        +                  "pass_credit": {
        +                    "anyOf": [
        +                      {
        +                        "additionalProperties": false,
        +                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        +                        "properties": {
        +                          "amount_local": {
        +                            "type": "number"
        +                          },
        +                          "applies_to": {
        +                            "const": "solo_first_month",
        +                            "default": "solo_first_month",
        +                            "type": "string"
        +                          },
        +                          "currency": {
        +                            "type": "string"
        +                          },
        +                          "redeemable_until": {
        +                            "type": "string"
        +                          }
        +                        },
        +                        "required": [
        +                          "amount_local",
        +                          "currency",
        +                          "redeemable_until"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "pricing_url": {
        +                    "default": "https://civilquants.com/pricing",
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "available_tiers"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tos_url": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "upgrade_hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "warranty_disclaimer": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          }
        +        },
        +        "required": [
        +          "request_id",
        +          "issued_at",
        +          "tier"
        +        ],
        +        "type": "object"
        +      },
        +      "data": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Schema § 1.1 — the typed payload returned inside `MCPResponse[ComputeResult]`.\n\nFree-tier responses omit `drawings` (the downloadable CAD artefact\npointers — the paid differentiator); the bridge enforces this. The\n`audit_trail` and the inline `drawing` preview are present on BOTH tiers\n(V1 ALIGN / 60th-fire D + C). `text_summary` is bounded to 2000 chars —\nkeeps the LLM-facing summary token-cheap and forces longer narrative into\nBoQ row descriptions where it belongs. `warnings` is the non-fatal\ngeometry advisory list (both tiers).",
        +            "properties": {
        +              "assembly_slug": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "audit_trail": {
        +                "anyOf": [
        +                  {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.7 — paid-tier audit-trail entry.\n\nOne entry per BoQ row; `boq_row_index` ties to the row position in\n`ComputeResult.boq_rows`. `derivation` is the human-readable formula\nwalk-through; `formula` is the optional formal expression.",
        +                      "properties": {
        +                        "boq_row_index": {
        +                          "minimum": 0,
        +                          "type": "integer"
        +                        },
        +                        "derivation": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "formula": {
        +                          "anyOf": [
        +                            {
        +                              "type": "string"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ],
        +                          "default": null
        +                        },
        +                        "id": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "parameters_referenced": {
        +                          "items": {
        +                            "type": "string"
        +                          },
        +                          "type": "array"
        +                        }
        +                      },
        +                      "required": [
        +                        "id",
        +                        "boq_row_index",
        +                        "derivation"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "boq_rows": {
        +                "items": {
        +                  "additionalProperties": false,
        +                  "description": "Schema § 1.3 — a single bill row in the requested standard's format.\n\n`description` is the non-verbatim functional description per spec § 13.9 /\n§ 15 invariant — NEVER reproduces a standard's verbatim clause text.\n`rate` / `amount` ship null because rates are commodity data the customer\nowns; the engine's job is the measurement, not the pricing.",
        +                  "properties": {
        +                    "amount": {
        +                      "anyOf": [
        +                        {
        +                          "type": "number"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "attribution": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "audit_id": {
        +                      "anyOf": [
        +                        {
        +                          "type": "string"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "description": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "quantity": {
        +                      "minimum": 0,
        +                      "type": "number"
        +                    },
        +                    "rate": {
        +                      "anyOf": [
        +                        {
        +                          "type": "number"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "unit": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "work_section": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    }
        +                  },
        +                  "required": [
        +                    "work_section",
        +                    "description",
        +                    "quantity",
        +                    "unit",
        +                    "attribution"
        +                  ],
        +                  "type": "object"
        +                },
        +                "type": "array"
        +              },
        +              "drawing": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": false,
        +                    "description": "Schema § 1.6a — inline server-rendered SVG preview of the geometry.\n\nThe MCP mirror of the web ``/compute`` response's ``drawing`` field\n(``api.schemas.compute.DrawingRef``): the same on-screen dimensioned\ndrawing both tiers see in the workspace, surfaced on the MCP compute\nresponse so a chat client can render it inline (60th-fire item C). This\nis the on-screen preview — present on BOTH tiers per the free/paid\nboundary; the downloadable CAD artefacts (DXF / dimensioned PDF) remain\nthe paid differentiator via the export tools.\n\nDefined here rather than importing ``DrawingRef`` because the web\n``schemas`` package imports back into this module (``schemas.render``),\nso reusing it would create an import cycle — the MCP wire contract keeps\nits own copy, the same pattern as ``BoQRow`` / ``DrawingReference``.",
        +                    "properties": {
        +                      "entity_count": {
        +                        "minimum": 0,
        +                        "type": "integer"
        +                      },
        +                      "svg_b64": {
        +                        "minLength": 1,
        +                        "type": "string"
        +                      },
        +                      "unit_of_drawing": {
        +                        "const": "m",
        +                        "default": "m",
        +                        "type": "string"
        +                      },
        +                      "viewbox_height": {
        +                        "exclusiveMinimum": 0,
        +                        "type": "number"
        +                      },
        +                      "viewbox_width": {
        +                        "exclusiveMinimum": 0,
        +                        "type": "number"
        +                      },
        +                      "viewbox_x": {
        +                        "type": "number"
        +                      },
        +                      "viewbox_y": {
        +                        "type": "number"
        +                      }
        +                    },
        +                    "required": [
        +                      "svg_b64",
        +                      "viewbox_x",
        +                      "viewbox_y",
        +                      "viewbox_width",
        +                      "viewbox_height",
        +                      "entity_count"
        +                    ],
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "drawings": {
        +                "anyOf": [
        +                  {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.6 — paid-tier drawing artefact pointer.\n\n`url` is an R2-signed URL; expiry is carried in `_meta.deliverables.expires_at`\non the envelope (not duplicated here). `layers` is DXF-only; PDF/SVG\ncallers omit it.",
        +                      "properties": {
        +                        "drawing_type": {
        +                          "enum": [
        +                            "section",
        +                            "plan",
        +                            "elevation",
        +                            "isometric",
        +                            "detail"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "format": {
        +                          "enum": [
        +                            "DXF",
        +                            "PDF",
        +                            "SVG"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "layers": {
        +                          "anyOf": [
        +                            {
        +                              "items": {
        +                                "type": "string"
        +                              },
        +                              "type": "array"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ],
        +                          "default": null
        +                        },
        +                        "scale": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "sheet_size": {
        +                          "enum": [
        +                            "A1",
        +                            "A2",
        +                            "A3",
        +                            "A4"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "url": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "drawing_type",
        +                        "format",
        +                        "url",
        +                        "sheet_size",
        +                        "scale"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "parameters_used": {
        +                "additionalProperties": false,
        +                "description": "Schema § 1.2 — the parameter snapshot the engine actually used.\n\nSplits user-supplied values from engine defaults so customers can see\nwhich numbers came from them and which the engine filled in. Every\ndefaulted parameter SHOULD have a corresponding entry in `assumptions`\n— the bridge layer enforces this when wrapping engine output.",
        +                "properties": {
        +                  "assumptions": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "engine_defaults": {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  "user_supplied": {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  }
        +                },
        +                "type": "object"
        +              },
        +              "standard": {
        +                "enum": [
        +                  "CESMM4",
        +                  "NRM2",
        +                  "SMM7",
        +                  "MMHW"
        +                ],
        +                "type": "string"
        +              },
        +              "text_summary": {
        +                "maxLength": 2000,
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "totals_summary": {
        +                "additionalProperties": false,
        +                "description": "Schema § 1.4 — totals_summary as a typed wrapper around the free-form dict.\n\nWire shape is a flat object (`{\"concrete_m3\": {...}, \"rebar_t\": {...}}`).\nWe model it as `RootModel`-equivalent via `model_config(extra=\"allow\")`\n+ a single `__root__`-style `entries` dict. Pydantic v2 recommends\n`RootModel` for free-form roots; using a wrapper class keeps the import\nsurface uniform with the rest of this module.",
        +                "properties": {
        +                  "entries": {
        +                    "additionalProperties": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.4 — single material/work-class total entry.",
        +                      "properties": {
        +                        "quantity": {
        +                          "minimum": 0,
        +                          "type": "number"
        +                        },
        +                        "unit": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "quantity",
        +                        "unit"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "object"
        +                  }
        +                },
        +                "type": "object"
        +              },
        +              "warnings": {
        +                "items": {
        +                  "additionalProperties": false,
        +                  "description": "Schema § 1.8 — a non-fatal geometry advisory (56th-fire T2).\n\nThe wire projection of the engine's `core.GeometryWarning`. Advisory only:\na warning NEVER changes a measured quantity — it flags geometry that is\nvalid but likely a mistake (e.g. a stale dependent-height default). Present\non BOTH tiers — a correctness/safety signal, not a paid feature.",
        +                  "properties": {
        +                    "affected_params": {
        +                      "items": {
        +                        "type": "string"
        +                      },
        +                      "type": "array"
        +                    },
        +                    "code": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "detail": {
        +                      "additionalProperties": {
        +                        "type": "number"
        +                      },
        +                      "type": "object"
        +                    },
        +                    "message": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "severity": {
        +                      "enum": [
        +                        "info",
        +                        "advisory",
        +                        "caution"
        +                      ],
        +                      "type": "string"
        +                    }
        +                  },
        +                  "required": [
        +                    "code",
        +                    "severity",
        +                    "message"
        +                  ],
        +                  "type": "object"
        +                },
        +                "type": "array"
        +              }
        +            },
        +            "required": [
        +              "assembly_slug",
        +              "standard",
        +              "parameters_used",
        +              "boq_rows",
        +              "totals_summary",
        +              "text_summary"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      },
        +      "error": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        +            "properties": {
        +              "code": {
        +                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        +                "enum": [
        +                  "RATE_LIMIT_EXCEEDED",
        +                  "TIER_INSUFFICIENT",
        +                  "INVALID_INPUT",
        +                  "SCHEMA_VERSION_MISMATCH",
        +                  "SCHEMA_INVARIANT_VIOLATION",
        +                  "UPSTREAM_TIMEOUT",
        +                  "BACKEND_FAILURE",
        +                  "IP_BLOCKED",
        +                  "RESOURCE_NOT_FOUND",
        +                  "RENDER_FAILURE",
        +                  "OCR_LOW_CONFIDENCE",
        +                  "MANUAL_REVIEW_REQUIRED",
        +                  "ACCEPTANCE_REQUIRED",
        +                  "INVALID_TOKEN"
        +                ],
        +                "type": "string"
        +              },
        +              "details": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "message": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "recoverable": {
        +                "type": "boolean"
        +              },
        +              "retry_after_seconds": {
        +                "anyOf": [
        +                  {
        +                    "minimum": 0,
        +                    "type": "integer"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              }
        +            },
        +            "required": [
        +              "code",
        +              "message",
        +              "recoverable"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      }
        +    },
        +    "required": [
        +      "_meta"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "_meta": {
        +        "additionalProperties": false,
        +        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        +        "properties": {
        +          "deliverables": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        +                "properties": {
        +                  "docx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "dxf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "expires_at": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  },
        +                  "pdf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "xlsx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "expires_at"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "document_id": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "issued_at": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "output_mode": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Surfaces what a trimmed ``output_mode`` withheld from ``data``.\n\nA trimmed mode (``summary`` / ``boq`` / ``boq_with_backup``) withholds\nalready-computed fields to keep the chat payload small. The withheld value\nreads to a client agent as \"capability missing\" (the box-culvert \"geometry\nbuilder isn't firing\" scare) rather than \"pared for size\": ``drawing`` and\n``audit_trail`` appear as ``null``, ``boq_rows`` as an empty list ``[]``\n(its type forbids ``null``) — both indistinguishable from a genuine absent\nresult. This names the withheld fields and the exact mode that brings each\nback, so the value is unambiguous. Absent on the default ``full_json`` mode\n— nothing is withheld, nothing to point at.",
        +                "properties": {
        +                  "mode": {
        +                    "enum": [
        +                      "summary",
        +                      "boq",
        +                      "boq_with_backup"
        +                    ],
        +                    "type": "string"
        +                  },
        +                  "omitted_fields": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "minItems": 1,
        +                    "type": "array"
        +                  },
        +                  "retrieve_with": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "mode",
        +                  "omitted_fields",
        +                  "retrieve_with"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "rate_limit_remaining": {
        +            "anyOf": [
        +              {
        +                "minimum": 0,
        +                "type": "integer"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "request_id": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "schema_version": {
        +            "const": "1.0.0",
        +            "default": "1.0.0",
        +            "type": "string"
        +          },
        +          "scope_boundary": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        +                "properties": {
        +                  "not_in_scope": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "produced": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "recommended_companions": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "type": "string"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "produced",
        +                  "not_in_scope"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tier": {
        +            "enum": [
        +              "free",
        +              "paid"
        +            ],
        +            "type": "string"
        +          },
        +          "tier_upgrade": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        +                "properties": {
        +                  "available_tiers": {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        +                      "properties": {
        +                        "billing": {
        +                          "enum": [
        +                            "one_off",
        +                            "monthly",
        +                            "annual"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "currency": {
        +                          "enum": [
        +                            "GBP",
        +                            "SGD",
        +                            "EUR",
        +                            "USD",
        +                            "CAD",
        +                            "AUD",
        +                            "NZD",
        +                            "MYR"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "display_name": {
        +                          "type": "string"
        +                        },
        +                        "price_local": {
        +                          "type": "number"
        +                        },
        +                        "tier_slug": {
        +                          "enum": [
        +                            "7_day_pass",
        +                            "solo",
        +                            "studio",
        +                            "practice"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "unlock_summary": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "tier_slug",
        +                        "display_name",
        +                        "price_local",
        +                        "currency",
        +                        "billing",
        +                        "unlock_summary"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "current_tier": {
        +                    "const": "free",
        +                    "default": "free",
        +                    "type": "string"
        +                  },
        +                  "pass_credit": {
        +                    "anyOf": [
        +                      {
        +                        "additionalProperties": false,
        +                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        +                        "properties": {
        +                          "amount_local": {
        +                            "type": "number"
        +                          },
        +                          "applies_to": {
        +                            "const": "solo_first_month",
        +                            "default": "solo_first_month",
        +                            "type": "string"
        +                          },
        +                          "currency": {
        +                            "type": "string"
        +                          },
        +                          "redeemable_until": {
        +                            "type": "string"
        +                          }
        +                        },
        +                        "required": [
        +                          "amount_local",
        +                          "currency",
        +                          "redeemable_until"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "pricing_url": {
        +                    "default": "https://civilquants.com/pricing",
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "available_tiers"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tos_url": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "upgrade_hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "warranty_disclaimer": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          }
        +        },
        +        "required": [
        +          "request_id",
        +          "issued_at",
        +          "tier"
        +        ],
        +        "type": "object"
        +      },
        +      "data": {
        +        "default": null,
        +        "title": "Data"
        +      },
        +      "error": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        +            "properties": {
        +              "code": {
        +                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        +                "enum": [
        +                  "RATE_LIMIT_EXCEEDED",
        +                  "TIER_INSUFFICIENT",
        +                  "INVALID_INPUT",
        +                  "SCHEMA_VERSION_MISMATCH",
        +                  "SCHEMA_INVARIANT_VIOLATION",
        +                  "UPSTREAM_TIMEOUT",
        +                  "BACKEND_FAILURE",
        +                  "IP_BLOCKED",
        +                  "RESOURCE_NOT_FOUND",
        +                  "RENDER_FAILURE",
        +                  "OCR_LOW_CONFIDENCE",
        +                  "MANUAL_REVIEW_REQUIRED",
        +                  "ACCEPTANCE_REQUIRED",
        +                  "INVALID_TOKEN"
        +                ],
        +                "type": "string"
        +              },
        +              "details": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "message": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "recoverable": {
        +                "type": "boolean"
        +              },
        +              "retry_after_seconds": {
        +                "anyOf": [
        +                  {
        +                    "minimum": 0,
        +                    "type": "integer"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              }
        +            },
        +            "required": [
        +              "code",
        +              "message",
        +              "recoverable"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      }
        +    },
        +    "required": [
        +      "_meta"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedcompute_connection_to_existing1 field changed
      • changedOutput schema / properties / result / anyOf
        Previous value: -[
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "_meta": {
        -        "additionalProperties": false,
        -        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        -        "properties": {
        -          "deliverables": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        -                "properties": {
        -                  "docx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "dxf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "expires_at": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  },
        -                  "pdf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "xlsx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "expires_at"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "document_id": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "issued_at": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "rate_limit_remaining": {
        -            "anyOf": [
        -              {
        -                "minimum": 0,
        -                "type": "integer"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "request_id": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "schema_version": {
        -            "const": "1.0.0",
        -            "default": "1.0.0",
        -            "type": "string"
        -          },
        -          "scope_boundary": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        -                "properties": {
        -                  "not_in_scope": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "produced": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "recommended_companions": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "type": "string"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "produced",
        -                  "not_in_scope"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tier": {
        -            "enum": [
        -              "free",
        -              "paid"
        -            ],
        -            "type": "string"
        -          },
        -          "tier_upgrade": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        -                "properties": {
        -                  "available_tiers": {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        -                      "properties": {
        -                        "billing": {
        -                          "enum": [
        -                            "one_off",
        -                            "monthly",
        -                            "annual"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "currency": {
        -                          "enum": [
        -                            "GBP",
        -                            "SGD",
        -                            "EUR",
        -                            "USD",
        -                            "CAD",
        -                            "AUD",
        -                            "NZD",
        -                            "MYR"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "display_name": {
        -                          "type": "string"
        -                        },
        -                        "price_local": {
        -                          "type": "number"
        -                        },
        -                        "tier_slug": {
        -                          "enum": [
        -                            "7_day_pass",
        -                            "solo",
        -                            "studio",
        -                            "practice"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "unlock_summary": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "tier_slug",
        -                        "display_name",
        -                        "price_local",
        -                        "currency",
        -                        "billing",
        -                        "unlock_summary"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "current_tier": {
        -                    "const": "free",
        -                    "default": "free",
        -                    "type": "string"
        -                  },
        -                  "pass_credit": {
        -                    "anyOf": [
        -                      {
        -                        "additionalProperties": false,
        -                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        -                        "properties": {
        -                          "amount_local": {
        -                            "type": "number"
        -                          },
        -                          "applies_to": {
        -                            "const": "solo_first_month",
        -                            "default": "solo_first_month",
        -                            "type": "string"
        -                          },
        -                          "currency": {
        -                            "type": "string"
        -                          },
        -                          "redeemable_until": {
        -                            "type": "string"
        -                          }
        -                        },
        -                        "required": [
        -                          "amount_local",
        -                          "currency",
        -                          "redeemable_until"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "pricing_url": {
        -                    "default": "https://civilquants.com/pricing",
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "available_tiers"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tos_url": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "upgrade_hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "warranty_disclaimer": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          }
        -        },
        -        "required": [
        -          "request_id",
        -          "issued_at",
        -          "tier"
        -        ],
        -        "type": "object"
        -      },
        -      "data": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Schema § 1.1 — the typed payload returned inside `MCPResponse[ComputeResult]`.\n\nFree-tier responses omit `drawings` (the downloadable CAD artefact\npointers — the paid differentiator); the bridge enforces this. The\n`audit_trail` and the inline `drawing` preview are present on BOTH tiers\n(V1 ALIGN / 60th-fire D + C). `text_summary` is bounded to 2000 chars —\nkeeps the LLM-facing summary token-cheap and forces longer narrative into\nBoQ row descriptions where it belongs. `warnings` is the non-fatal\ngeometry advisory list (both tiers).",
        -            "properties": {
        -              "assembly_slug": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "audit_trail": {
        -                "anyOf": [
        -                  {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.7 — paid-tier audit-trail entry.\n\nOne entry per BoQ row; `boq_row_index` ties to the row position in\n`ComputeResult.boq_rows`. `derivation` is the human-readable formula\nwalk-through; `formula` is the optional formal expression.",
        -                      "properties": {
        -                        "boq_row_index": {
        -                          "minimum": 0,
        -                          "type": "integer"
        -                        },
        -                        "derivation": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "formula": {
        -                          "anyOf": [
        -                            {
        -                              "type": "string"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ],
        -                          "default": null
        -                        },
        -                        "id": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "parameters_referenced": {
        -                          "items": {
        -                            "type": "string"
        -                          },
        -                          "type": "array"
        -                        }
        -                      },
        -                      "required": [
        -                        "id",
        -                        "boq_row_index",
        -                        "derivation"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "boq_rows": {
        -                "items": {
        -                  "additionalProperties": false,
        -                  "description": "Schema § 1.3 — a single bill row in the requested standard's format.\n\n`description` is the non-verbatim functional description per spec § 13.9 /\n§ 15 invariant — NEVER reproduces a standard's verbatim clause text.\n`rate` / `amount` ship null because rates are commodity data the customer\nowns; the engine's job is the measurement, not the pricing.",
        -                  "properties": {
        -                    "amount": {
        -                      "anyOf": [
        -                        {
        -                          "type": "number"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "attribution": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "audit_id": {
        -                      "anyOf": [
        -                        {
        -                          "type": "string"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "description": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "quantity": {
        -                      "minimum": 0,
        -                      "type": "number"
        -                    },
        -                    "rate": {
        -                      "anyOf": [
        -                        {
        -                          "type": "number"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "unit": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "work_section": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    }
        -                  },
        -                  "required": [
        -                    "work_section",
        -                    "description",
        -                    "quantity",
        -                    "unit",
        -                    "attribution"
        -                  ],
        -                  "type": "object"
        -                },
        -                "type": "array"
        -              },
        -              "drawing": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": false,
        -                    "description": "Schema § 1.6a — inline server-rendered SVG preview of the geometry.\n\nThe MCP mirror of the web ``/compute`` response's ``drawing`` field\n(``api.schemas.compute.DrawingRef``): the same on-screen dimensioned\ndrawing both tiers see in the workspace, surfaced on the MCP compute\nresponse so a chat client can render it inline (60th-fire item C). This\nis the on-screen preview — present on BOTH tiers per the free/paid\nboundary; the downloadable CAD artefacts (DXF / dimensioned PDF) remain\nthe paid differentiator via the export tools.\n\nDefined here rather than importing ``DrawingRef`` because the web\n``schemas`` package imports back into this module (``schemas.render``),\nso reusing it would create an import cycle — the MCP wire contract keeps\nits own copy, the same pattern as ``BoQRow`` / ``DrawingReference``.",
        -                    "properties": {
        -                      "entity_count": {
        -                        "minimum": 0,
        -                        "type": "integer"
        -                      },
        -                      "svg_b64": {
        -                        "minLength": 1,
        -                        "type": "string"
        -                      },
        -                      "unit_of_drawing": {
        -                        "const": "m",
        -                        "default": "m",
        -                        "type": "string"
        -                      },
        -                      "viewbox_height": {
        -                        "exclusiveMinimum": 0,
        -                        "type": "number"
        -                      },
        -                      "viewbox_width": {
        -                        "exclusiveMinimum": 0,
        -                        "type": "number"
        -                      },
        -                      "viewbox_x": {
        -                        "type": "number"
        -                      },
        -                      "viewbox_y": {
        -                        "type": "number"
        -                      }
        -                    },
        -                    "required": [
        -                      "svg_b64",
        -                      "viewbox_x",
        -                      "viewbox_y",
        -                      "viewbox_width",
        -                      "viewbox_height",
        -                      "entity_count"
        -                    ],
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "drawings": {
        -                "anyOf": [
        -                  {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.6 — paid-tier drawing artefact pointer.\n\n`url` is an R2-signed URL; expiry is carried in `_meta.deliverables.expires_at`\non the envelope (not duplicated here). `layers` is DXF-only; PDF/SVG\ncallers omit it.",
        -                      "properties": {
        -                        "drawing_type": {
        -                          "enum": [
        -                            "section",
        -                            "plan",
        -                            "elevation",
        -                            "isometric",
        -                            "detail"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "format": {
        -                          "enum": [
        -                            "DXF",
        -                            "PDF",
        -                            "SVG"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "layers": {
        -                          "anyOf": [
        -                            {
        -                              "items": {
        -                                "type": "string"
        -                              },
        -                              "type": "array"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ],
        -                          "default": null
        -                        },
        -                        "scale": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "sheet_size": {
        -                          "enum": [
        -                            "A1",
        -                            "A2",
        -                            "A3",
        -                            "A4"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "url": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "drawing_type",
        -                        "format",
        -                        "url",
        -                        "sheet_size",
        -                        "scale"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "parameters_used": {
        -                "additionalProperties": false,
        -                "description": "Schema § 1.2 — the parameter snapshot the engine actually used.\n\nSplits user-supplied values from engine defaults so customers can see\nwhich numbers came from them and which the engine filled in. Every\ndefaulted parameter SHOULD have a corresponding entry in `assumptions`\n— the bridge layer enforces this when wrapping engine output.",
        -                "properties": {
        -                  "assumptions": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "engine_defaults": {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  "user_supplied": {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  }
        -                },
        -                "type": "object"
        -              },
        -              "standard": {
        -                "enum": [
        -                  "CESMM4",
        -                  "NRM2",
        -                  "SMM7",
        -                  "MMHW"
        -                ],
        -                "type": "string"
        -              },
        -              "text_summary": {
        -                "maxLength": 2000,
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "totals_summary": {
        -                "additionalProperties": false,
        -                "description": "Schema § 1.4 — totals_summary as a typed wrapper around the free-form dict.\n\nWire shape is a flat object (`{\"concrete_m3\": {...}, \"rebar_t\": {...}}`).\nWe model it as `RootModel`-equivalent via `model_config(extra=\"allow\")`\n+ a single `__root__`-style `entries` dict. Pydantic v2 recommends\n`RootModel` for free-form roots; using a wrapper class keeps the import\nsurface uniform with the rest of this module.",
        -                "properties": {
        -                  "entries": {
        -                    "additionalProperties": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.4 — single material/work-class total entry.",
        -                      "properties": {
        -                        "quantity": {
        -                          "minimum": 0,
        -                          "type": "number"
        -                        },
        -                        "unit": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "quantity",
        -                        "unit"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "object"
        -                  }
        -                },
        -                "type": "object"
        -              },
        -              "warnings": {
        -                "items": {
        -                  "additionalProperties": false,
        -                  "description": "Schema § 1.8 — a non-fatal geometry advisory (56th-fire T2).\n\nThe wire projection of the engine's `core.GeometryWarning`. Advisory only:\na warning NEVER changes a measured quantity — it flags geometry that is\nvalid but likely a mistake (e.g. a stale dependent-height default). Present\non BOTH tiers — a correctness/safety signal, not a paid feature.",
        -                  "properties": {
        -                    "affected_params": {
        -                      "items": {
        -                        "type": "string"
        -                      },
        -                      "type": "array"
        -                    },
        -                    "code": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "detail": {
        -                      "additionalProperties": {
        -                        "type": "number"
        -                      },
        -                      "type": "object"
        -                    },
        -                    "message": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "severity": {
        -                      "enum": [
        -                        "info",
        -                        "advisory",
        -                        "caution"
        -                      ],
        -                      "type": "string"
        -                    }
        -                  },
        -                  "required": [
        -                    "code",
        -                    "severity",
        -                    "message"
        -                  ],
        -                  "type": "object"
        -                },
        -                "type": "array"
        -              }
        -            },
        -            "required": [
        -              "assembly_slug",
        -              "standard",
        -              "parameters_used",
        -              "boq_rows",
        -              "totals_summary",
        -              "text_summary"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      },
        -      "error": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        -            "properties": {
        -              "code": {
        -                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        -                "enum": [
        -                  "RATE_LIMIT_EXCEEDED",
        -                  "TIER_INSUFFICIENT",
        -                  "INVALID_INPUT",
        -                  "SCHEMA_VERSION_MISMATCH",
        -                  "SCHEMA_INVARIANT_VIOLATION",
        -                  "UPSTREAM_TIMEOUT",
        -                  "BACKEND_FAILURE",
        -                  "IP_BLOCKED",
        -                  "RESOURCE_NOT_FOUND",
        -                  "RENDER_FAILURE",
        -                  "OCR_LOW_CONFIDENCE",
        -                  "MANUAL_REVIEW_REQUIRED",
        -                  "ACCEPTANCE_REQUIRED",
        -                  "INVALID_TOKEN"
        -                ],
        -                "type": "string"
        -              },
        -              "details": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "message": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "recoverable": {
        -                "type": "boolean"
        -              },
        -              "retry_after_seconds": {
        -                "anyOf": [
        -                  {
        -                    "minimum": 0,
        -                    "type": "integer"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              }
        -            },
        -            "required": [
        -              "code",
        -              "message",
        -              "recoverable"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      }
        -    },
        -    "required": [
        -      "_meta"
        -    ],
        -    "type": "object"
        -  },
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "_meta": {
        -        "additionalProperties": false,
        -        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        -        "properties": {
        -          "deliverables": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        -                "properties": {
        -                  "docx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "dxf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "expires_at": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  },
        -                  "pdf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "xlsx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "expires_at"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "document_id": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "issued_at": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "rate_limit_remaining": {
        -            "anyOf": [
        -              {
        -                "minimum": 0,
        -                "type": "integer"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "request_id": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "schema_version": {
        -            "const": "1.0.0",
        -            "default": "1.0.0",
        -            "type": "string"
        -          },
        -          "scope_boundary": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        -                "properties": {
        -                  "not_in_scope": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "produced": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "recommended_companions": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "type": "string"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "produced",
        -                  "not_in_scope"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tier": {
        -            "enum": [
        -              "free",
        -              "paid"
        -            ],
        -            "type": "string"
        -          },
        -          "tier_upgrade": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        -                "properties": {
        -                  "available_tiers": {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        -                      "properties": {
        -                        "billing": {
        -                          "enum": [
        -                            "one_off",
        -                            "monthly",
        -                            "annual"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "currency": {
        -                          "enum": [
        -                            "GBP",
        -                            "SGD",
        -                            "EUR",
        -                            "USD",
        -                            "CAD",
        -                            "AUD",
        -                            "NZD",
        -                            "MYR"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "display_name": {
        -                          "type": "string"
        -                        },
        -                        "price_local": {
        -                          "type": "number"
        -                        },
        -                        "tier_slug": {
        -                          "enum": [
        -                            "7_day_pass",
        -                            "solo",
        -                            "studio",
        -                            "practice"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "unlock_summary": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "tier_slug",
        -                        "display_name",
        -                        "price_local",
        -                        "currency",
        -                        "billing",
        -                        "unlock_summary"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "current_tier": {
        -                    "const": "free",
        -                    "default": "free",
        -                    "type": "string"
        -                  },
        -                  "pass_credit": {
        -                    "anyOf": [
        -                      {
        -                        "additionalProperties": false,
        -                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        -                        "properties": {
        -                          "amount_local": {
        -                            "type": "number"
        -                          },
        -                          "applies_to": {
        -                            "const": "solo_first_month",
        -                            "default": "solo_first_month",
        -                            "type": "string"
        -                          },
        -                          "currency": {
        -                            "type": "string"
        -                          },
        -                          "redeemable_until": {
        -                            "type": "string"
        -                          }
        -                        },
        -                        "required": [
        -                          "amount_local",
        -                          "currency",
        -                          "redeemable_until"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "pricing_url": {
        -                    "default": "https://civilquants.com/pricing",
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "available_tiers"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tos_url": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "upgrade_hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "warranty_disclaimer": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          }
        -        },
        -        "required": [
        -          "request_id",
        -          "issued_at",
        -          "tier"
        -        ],
        -        "type": "object"
        -      },
        -      "data": {
        -        "default": null,
        -        "title": "Data"
        -      },
        -      "error": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        -            "properties": {
        -              "code": {
        -                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        -                "enum": [
        -                  "RATE_LIMIT_EXCEEDED",
        -                  "TIER_INSUFFICIENT",
        -                  "INVALID_INPUT",
        -                  "SCHEMA_VERSION_MISMATCH",
        -                  "SCHEMA_INVARIANT_VIOLATION",
        -                  "UPSTREAM_TIMEOUT",
        -                  "BACKEND_FAILURE",
        -                  "IP_BLOCKED",
        -                  "RESOURCE_NOT_FOUND",
        -                  "RENDER_FAILURE",
        -                  "OCR_LOW_CONFIDENCE",
        -                  "MANUAL_REVIEW_REQUIRED",
        -                  "ACCEPTANCE_REQUIRED",
        -                  "INVALID_TOKEN"
        -                ],
        -                "type": "string"
        -              },
        -              "details": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "message": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "recoverable": {
        -                "type": "boolean"
        -              },
        -              "retry_after_seconds": {
        -                "anyOf": [
        -                  {
        -                    "minimum": 0,
        -                    "type": "integer"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              }
        -            },
        -            "required": [
        -              "code",
        -              "message",
        -              "recoverable"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      }
        -    },
        -    "required": [
        -      "_meta"
        -    ],
        -    "type": "object"
        -  }
        -]New value: +[
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "_meta": {
        +        "additionalProperties": false,
        +        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        +        "properties": {
        +          "deliverables": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        +                "properties": {
        +                  "docx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "dxf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "expires_at": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  },
        +                  "pdf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "xlsx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "expires_at"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "document_id": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "issued_at": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "output_mode": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Surfaces what a trimmed ``output_mode`` withheld from ``data``.\n\nA trimmed mode (``summary`` / ``boq`` / ``boq_with_backup``) withholds\nalready-computed fields to keep the chat payload small. The withheld value\nreads to a client agent as \"capability missing\" (the box-culvert \"geometry\nbuilder isn't firing\" scare) rather than \"pared for size\": ``drawing`` and\n``audit_trail`` appear as ``null``, ``boq_rows`` as an empty list ``[]``\n(its type forbids ``null``) — both indistinguishable from a genuine absent\nresult. This names the withheld fields and the exact mode that brings each\nback, so the value is unambiguous. Absent on the default ``full_json`` mode\n— nothing is withheld, nothing to point at.",
        +                "properties": {
        +                  "mode": {
        +                    "enum": [
        +                      "summary",
        +                      "boq",
        +                      "boq_with_backup"
        +                    ],
        +                    "type": "string"
        +                  },
        +                  "omitted_fields": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "minItems": 1,
        +                    "type": "array"
        +                  },
        +                  "retrieve_with": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "mode",
        +                  "omitted_fields",
        +                  "retrieve_with"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "rate_limit_remaining": {
        +            "anyOf": [
        +              {
        +                "minimum": 0,
        +                "type": "integer"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "request_id": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "schema_version": {
        +            "const": "1.0.0",
        +            "default": "1.0.0",
        +            "type": "string"
        +          },
        +          "scope_boundary": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        +                "properties": {
        +                  "not_in_scope": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "produced": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "recommended_companions": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "type": "string"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "produced",
        +                  "not_in_scope"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tier": {
        +            "enum": [
        +              "free",
        +              "paid"
        +            ],
        +            "type": "string"
        +          },
        +          "tier_upgrade": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        +                "properties": {
        +                  "available_tiers": {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        +                      "properties": {
        +                        "billing": {
        +                          "enum": [
        +                            "one_off",
        +                            "monthly",
        +                            "annual"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "currency": {
        +                          "enum": [
        +                            "GBP",
        +                            "SGD",
        +                            "EUR",
        +                            "USD",
        +                            "CAD",
        +                            "AUD",
        +                            "NZD",
        +                            "MYR"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "display_name": {
        +                          "type": "string"
        +                        },
        +                        "price_local": {
        +                          "type": "number"
        +                        },
        +                        "tier_slug": {
        +                          "enum": [
        +                            "7_day_pass",
        +                            "solo",
        +                            "studio",
        +                            "practice"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "unlock_summary": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "tier_slug",
        +                        "display_name",
        +                        "price_local",
        +                        "currency",
        +                        "billing",
        +                        "unlock_summary"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "current_tier": {
        +                    "const": "free",
        +                    "default": "free",
        +                    "type": "string"
        +                  },
        +                  "pass_credit": {
        +                    "anyOf": [
        +                      {
        +                        "additionalProperties": false,
        +                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        +                        "properties": {
        +                          "amount_local": {
        +                            "type": "number"
        +                          },
        +                          "applies_to": {
        +                            "const": "solo_first_month",
        +                            "default": "solo_first_month",
        +                            "type": "string"
        +                          },
        +                          "currency": {
        +                            "type": "string"
        +                          },
        +                          "redeemable_until": {
        +                            "type": "string"
        +                          }
        +                        },
        +                        "required": [
        +                          "amount_local",
        +                          "currency",
        +                          "redeemable_until"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "pricing_url": {
        +                    "default": "https://civilquants.com/pricing",
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "available_tiers"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tos_url": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "upgrade_hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "warranty_disclaimer": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          }
        +        },
        +        "required": [
        +          "request_id",
        +          "issued_at",
        +          "tier"
        +        ],
        +        "type": "object"
        +      },
        +      "data": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Schema § 1.1 — the typed payload returned inside `MCPResponse[ComputeResult]`.\n\nFree-tier responses omit `drawings` (the downloadable CAD artefact\npointers — the paid differentiator); the bridge enforces this. The\n`audit_trail` and the inline `drawing` preview are present on BOTH tiers\n(V1 ALIGN / 60th-fire D + C). `text_summary` is bounded to 2000 chars —\nkeeps the LLM-facing summary token-cheap and forces longer narrative into\nBoQ row descriptions where it belongs. `warnings` is the non-fatal\ngeometry advisory list (both tiers).",
        +            "properties": {
        +              "assembly_slug": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "audit_trail": {
        +                "anyOf": [
        +                  {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.7 — paid-tier audit-trail entry.\n\nOne entry per BoQ row; `boq_row_index` ties to the row position in\n`ComputeResult.boq_rows`. `derivation` is the human-readable formula\nwalk-through; `formula` is the optional formal expression.",
        +                      "properties": {
        +                        "boq_row_index": {
        +                          "minimum": 0,
        +                          "type": "integer"
        +                        },
        +                        "derivation": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "formula": {
        +                          "anyOf": [
        +                            {
        +                              "type": "string"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ],
        +                          "default": null
        +                        },
        +                        "id": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "parameters_referenced": {
        +                          "items": {
        +                            "type": "string"
        +                          },
        +                          "type": "array"
        +                        }
        +                      },
        +                      "required": [
        +                        "id",
        +                        "boq_row_index",
        +                        "derivation"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "boq_rows": {
        +                "items": {
        +                  "additionalProperties": false,
        +                  "description": "Schema § 1.3 — a single bill row in the requested standard's format.\n\n`description` is the non-verbatim functional description per spec § 13.9 /\n§ 15 invariant — NEVER reproduces a standard's verbatim clause text.\n`rate` / `amount` ship null because rates are commodity data the customer\nowns; the engine's job is the measurement, not the pricing.",
        +                  "properties": {
        +                    "amount": {
        +                      "anyOf": [
        +                        {
        +                          "type": "number"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "attribution": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "audit_id": {
        +                      "anyOf": [
        +                        {
        +                          "type": "string"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "description": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "quantity": {
        +                      "minimum": 0,
        +                      "type": "number"
        +                    },
        +                    "rate": {
        +                      "anyOf": [
        +                        {
        +                          "type": "number"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "unit": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "work_section": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    }
        +                  },
        +                  "required": [
        +                    "work_section",
        +                    "description",
        +                    "quantity",
        +                    "unit",
        +                    "attribution"
        +                  ],
        +                  "type": "object"
        +                },
        +                "type": "array"
        +              },
        +              "drawing": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": false,
        +                    "description": "Schema § 1.6a — inline server-rendered SVG preview of the geometry.\n\nThe MCP mirror of the web ``/compute`` response's ``drawing`` field\n(``api.schemas.compute.DrawingRef``): the same on-screen dimensioned\ndrawing both tiers see in the workspace, surfaced on the MCP compute\nresponse so a chat client can render it inline (60th-fire item C). This\nis the on-screen preview — present on BOTH tiers per the free/paid\nboundary; the downloadable CAD artefacts (DXF / dimensioned PDF) remain\nthe paid differentiator via the export tools.\n\nDefined here rather than importing ``DrawingRef`` because the web\n``schemas`` package imports back into this module (``schemas.render``),\nso reusing it would create an import cycle — the MCP wire contract keeps\nits own copy, the same pattern as ``BoQRow`` / ``DrawingReference``.",
        +                    "properties": {
        +                      "entity_count": {
        +                        "minimum": 0,
        +                        "type": "integer"
        +                      },
        +                      "svg_b64": {
        +                        "minLength": 1,
        +                        "type": "string"
        +                      },
        +                      "unit_of_drawing": {
        +                        "const": "m",
        +                        "default": "m",
        +                        "type": "string"
        +                      },
        +                      "viewbox_height": {
        +                        "exclusiveMinimum": 0,
        +                        "type": "number"
        +                      },
        +                      "viewbox_width": {
        +                        "exclusiveMinimum": 0,
        +                        "type": "number"
        +                      },
        +                      "viewbox_x": {
        +                        "type": "number"
        +                      },
        +                      "viewbox_y": {
        +                        "type": "number"
        +                      }
        +                    },
        +                    "required": [
        +                      "svg_b64",
        +                      "viewbox_x",
        +                      "viewbox_y",
        +                      "viewbox_width",
        +                      "viewbox_height",
        +                      "entity_count"
        +                    ],
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "drawings": {
        +                "anyOf": [
        +                  {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.6 — paid-tier drawing artefact pointer.\n\n`url` is an R2-signed URL; expiry is carried in `_meta.deliverables.expires_at`\non the envelope (not duplicated here). `layers` is DXF-only; PDF/SVG\ncallers omit it.",
        +                      "properties": {
        +                        "drawing_type": {
        +                          "enum": [
        +                            "section",
        +                            "plan",
        +                            "elevation",
        +                            "isometric",
        +                            "detail"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "format": {
        +                          "enum": [
        +                            "DXF",
        +                            "PDF",
        +                            "SVG"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "layers": {
        +                          "anyOf": [
        +                            {
        +                              "items": {
        +                                "type": "string"
        +                              },
        +                              "type": "array"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ],
        +                          "default": null
        +                        },
        +                        "scale": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "sheet_size": {
        +                          "enum": [
        +                            "A1",
        +                            "A2",
        +                            "A3",
        +                            "A4"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "url": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "drawing_type",
        +                        "format",
        +                        "url",
        +                        "sheet_size",
        +                        "scale"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "parameters_used": {
        +                "additionalProperties": false,
        +                "description": "Schema § 1.2 — the parameter snapshot the engine actually used.\n\nSplits user-supplied values from engine defaults so customers can see\nwhich numbers came from them and which the engine filled in. Every\ndefaulted parameter SHOULD have a corresponding entry in `assumptions`\n— the bridge layer enforces this when wrapping engine output.",
        +                "properties": {
        +                  "assumptions": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "engine_defaults": {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  "user_supplied": {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  }
        +                },
        +                "type": "object"
        +              },
        +              "standard": {
        +                "enum": [
        +                  "CESMM4",
        +                  "NRM2",
        +                  "SMM7",
        +                  "MMHW"
        +                ],
        +                "type": "string"
        +              },
        +              "text_summary": {
        +                "maxLength": 2000,
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "totals_summary": {
        +                "additionalProperties": false,
        +                "description": "Schema § 1.4 — totals_summary as a typed wrapper around the free-form dict.\n\nWire shape is a flat object (`{\"concrete_m3\": {...}, \"rebar_t\": {...}}`).\nWe model it as `RootModel`-equivalent via `model_config(extra=\"allow\")`\n+ a single `__root__`-style `entries` dict. Pydantic v2 recommends\n`RootModel` for free-form roots; using a wrapper class keeps the import\nsurface uniform with the rest of this module.",
        +                "properties": {
        +                  "entries": {
        +                    "additionalProperties": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.4 — single material/work-class total entry.",
        +                      "properties": {
        +                        "quantity": {
        +                          "minimum": 0,
        +                          "type": "number"
        +                        },
        +                        "unit": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "quantity",
        +                        "unit"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "object"
        +                  }
        +                },
        +                "type": "object"
        +              },
        +              "warnings": {
        +                "items": {
        +                  "additionalProperties": false,
        +                  "description": "Schema § 1.8 — a non-fatal geometry advisory (56th-fire T2).\n\nThe wire projection of the engine's `core.GeometryWarning`. Advisory only:\na warning NEVER changes a measured quantity — it flags geometry that is\nvalid but likely a mistake (e.g. a stale dependent-height default). Present\non BOTH tiers — a correctness/safety signal, not a paid feature.",
        +                  "properties": {
        +                    "affected_params": {
        +                      "items": {
        +                        "type": "string"
        +                      },
        +                      "type": "array"
        +                    },
        +                    "code": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "detail": {
        +                      "additionalProperties": {
        +                        "type": "number"
        +                      },
        +                      "type": "object"
        +                    },
        +                    "message": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "severity": {
        +                      "enum": [
        +                        "info",
        +                        "advisory",
        +                        "caution"
        +                      ],
        +                      "type": "string"
        +                    }
        +                  },
        +                  "required": [
        +                    "code",
        +                    "severity",
        +                    "message"
        +                  ],
        +                  "type": "object"
        +                },
        +                "type": "array"
        +              }
        +            },
        +            "required": [
        +              "assembly_slug",
        +              "standard",
        +              "parameters_used",
        +              "boq_rows",
        +              "totals_summary",
        +              "text_summary"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      },
        +      "error": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        +            "properties": {
        +              "code": {
        +                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        +                "enum": [
        +                  "RATE_LIMIT_EXCEEDED",
        +                  "TIER_INSUFFICIENT",
        +                  "INVALID_INPUT",
        +                  "SCHEMA_VERSION_MISMATCH",
        +                  "SCHEMA_INVARIANT_VIOLATION",
        +                  "UPSTREAM_TIMEOUT",
        +                  "BACKEND_FAILURE",
        +                  "IP_BLOCKED",
        +                  "RESOURCE_NOT_FOUND",
        +                  "RENDER_FAILURE",
        +                  "OCR_LOW_CONFIDENCE",
        +                  "MANUAL_REVIEW_REQUIRED",
        +                  "ACCEPTANCE_REQUIRED",
        +                  "INVALID_TOKEN"
        +                ],
        +                "type": "string"
        +              },
        +              "details": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "message": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "recoverable": {
        +                "type": "boolean"
        +              },
        +              "retry_after_seconds": {
        +                "anyOf": [
        +                  {
        +                    "minimum": 0,
        +                    "type": "integer"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              }
        +            },
        +            "required": [
        +              "code",
        +              "message",
        +              "recoverable"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      }
        +    },
        +    "required": [
        +      "_meta"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "_meta": {
        +        "additionalProperties": false,
        +        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        +        "properties": {
        +          "deliverables": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        +                "properties": {
        +                  "docx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "dxf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "expires_at": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  },
        +                  "pdf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "xlsx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "expires_at"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "document_id": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "issued_at": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "output_mode": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Surfaces what a trimmed ``output_mode`` withheld from ``data``.\n\nA trimmed mode (``summary`` / ``boq`` / ``boq_with_backup``) withholds\nalready-computed fields to keep the chat payload small. The withheld value\nreads to a client agent as \"capability missing\" (the box-culvert \"geometry\nbuilder isn't firing\" scare) rather than \"pared for size\": ``drawing`` and\n``audit_trail`` appear as ``null``, ``boq_rows`` as an empty list ``[]``\n(its type forbids ``null``) — both indistinguishable from a genuine absent\nresult. This names the withheld fields and the exact mode that brings each\nback, so the value is unambiguous. Absent on the default ``full_json`` mode\n— nothing is withheld, nothing to point at.",
        +                "properties": {
        +                  "mode": {
        +                    "enum": [
        +                      "summary",
        +                      "boq",
        +                      "boq_with_backup"
        +                    ],
        +                    "type": "string"
        +                  },
        +                  "omitted_fields": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "minItems": 1,
        +                    "type": "array"
        +                  },
        +                  "retrieve_with": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "mode",
        +                  "omitted_fields",
        +                  "retrieve_with"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "rate_limit_remaining": {
        +            "anyOf": [
        +              {
        +                "minimum": 0,
        +                "type": "integer"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "request_id": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "schema_version": {
        +            "const": "1.0.0",
        +            "default": "1.0.0",
        +            "type": "string"
        +          },
        +          "scope_boundary": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        +                "properties": {
        +                  "not_in_scope": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "produced": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "recommended_companions": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "type": "string"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "produced",
        +                  "not_in_scope"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tier": {
        +            "enum": [
        +              "free",
        +              "paid"
        +            ],
        +            "type": "string"
        +          },
        +          "tier_upgrade": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        +                "properties": {
        +                  "available_tiers": {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        +                      "properties": {
        +                        "billing": {
        +                          "enum": [
        +                            "one_off",
        +                            "monthly",
        +                            "annual"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "currency": {
        +                          "enum": [
        +                            "GBP",
        +                            "SGD",
        +                            "EUR",
        +                            "USD",
        +                            "CAD",
        +                            "AUD",
        +                            "NZD",
        +                            "MYR"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "display_name": {
        +                          "type": "string"
        +                        },
        +                        "price_local": {
        +                          "type": "number"
        +                        },
        +                        "tier_slug": {
        +                          "enum": [
        +                            "7_day_pass",
        +                            "solo",
        +                            "studio",
        +                            "practice"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "unlock_summary": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "tier_slug",
        +                        "display_name",
        +                        "price_local",
        +                        "currency",
        +                        "billing",
        +                        "unlock_summary"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "current_tier": {
        +                    "const": "free",
        +                    "default": "free",
        +                    "type": "string"
        +                  },
        +                  "pass_credit": {
        +                    "anyOf": [
        +                      {
        +                        "additionalProperties": false,
        +                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        +                        "properties": {
        +                          "amount_local": {
        +                            "type": "number"
        +                          },
        +                          "applies_to": {
        +                            "const": "solo_first_month",
        +                            "default": "solo_first_month",
        +                            "type": "string"
        +                          },
        +                          "currency": {
        +                            "type": "string"
        +                          },
        +                          "redeemable_until": {
        +                            "type": "string"
        +                          }
        +                        },
        +                        "required": [
        +                          "amount_local",
        +                          "currency",
        +                          "redeemable_until"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "pricing_url": {
        +                    "default": "https://civilquants.com/pricing",
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "available_tiers"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tos_url": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "upgrade_hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "warranty_disclaimer": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          }
        +        },
        +        "required": [
        +          "request_id",
        +          "issued_at",
        +          "tier"
        +        ],
        +        "type": "object"
        +      },
        +      "data": {
        +        "default": null,
        +        "title": "Data"
        +      },
        +      "error": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        +            "properties": {
        +              "code": {
        +                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        +                "enum": [
        +                  "RATE_LIMIT_EXCEEDED",
        +                  "TIER_INSUFFICIENT",
        +                  "INVALID_INPUT",
        +                  "SCHEMA_VERSION_MISMATCH",
        +                  "SCHEMA_INVARIANT_VIOLATION",
        +                  "UPSTREAM_TIMEOUT",
        +                  "BACKEND_FAILURE",
        +                  "IP_BLOCKED",
        +                  "RESOURCE_NOT_FOUND",
        +                  "RENDER_FAILURE",
        +                  "OCR_LOW_CONFIDENCE",
        +                  "MANUAL_REVIEW_REQUIRED",
        +                  "ACCEPTANCE_REQUIRED",
        +                  "INVALID_TOKEN"
        +                ],
        +                "type": "string"
        +              },
        +              "details": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "message": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "recoverable": {
        +                "type": "boolean"
        +              },
        +              "retry_after_seconds": {
        +                "anyOf": [
        +                  {
        +                    "minimum": 0,
        +                    "type": "integer"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              }
        +            },
        +            "required": [
        +              "code",
        +              "message",
        +              "recoverable"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      }
        +    },
        +    "required": [
        +      "_meta"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedcompute_counterfort_wall1 field changed
      • changedOutput schema / properties / result / anyOf
        Previous value: -[
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "_meta": {
        -        "additionalProperties": false,
        -        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        -        "properties": {
        -          "deliverables": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        -                "properties": {
        -                  "docx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "dxf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "expires_at": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  },
        -                  "pdf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "xlsx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "expires_at"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "document_id": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "issued_at": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "rate_limit_remaining": {
        -            "anyOf": [
        -              {
        -                "minimum": 0,
        -                "type": "integer"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "request_id": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "schema_version": {
        -            "const": "1.0.0",
        -            "default": "1.0.0",
        -            "type": "string"
        -          },
        -          "scope_boundary": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        -                "properties": {
        -                  "not_in_scope": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "produced": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "recommended_companions": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "type": "string"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "produced",
        -                  "not_in_scope"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tier": {
        -            "enum": [
        -              "free",
        -              "paid"
        -            ],
        -            "type": "string"
        -          },
        -          "tier_upgrade": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        -                "properties": {
        -                  "available_tiers": {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        -                      "properties": {
        -                        "billing": {
        -                          "enum": [
        -                            "one_off",
        -                            "monthly",
        -                            "annual"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "currency": {
        -                          "enum": [
        -                            "GBP",
        -                            "SGD",
        -                            "EUR",
        -                            "USD",
        -                            "CAD",
        -                            "AUD",
        -                            "NZD",
        -                            "MYR"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "display_name": {
        -                          "type": "string"
        -                        },
        -                        "price_local": {
        -                          "type": "number"
        -                        },
        -                        "tier_slug": {
        -                          "enum": [
        -                            "7_day_pass",
        -                            "solo",
        -                            "studio",
        -                            "practice"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "unlock_summary": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "tier_slug",
        -                        "display_name",
        -                        "price_local",
        -                        "currency",
        -                        "billing",
        -                        "unlock_summary"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "current_tier": {
        -                    "const": "free",
        -                    "default": "free",
        -                    "type": "string"
        -                  },
        -                  "pass_credit": {
        -                    "anyOf": [
        -                      {
        -                        "additionalProperties": false,
        -                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        -                        "properties": {
        -                          "amount_local": {
        -                            "type": "number"
        -                          },
        -                          "applies_to": {
        -                            "const": "solo_first_month",
        -                            "default": "solo_first_month",
        -                            "type": "string"
        -                          },
        -                          "currency": {
        -                            "type": "string"
        -                          },
        -                          "redeemable_until": {
        -                            "type": "string"
        -                          }
        -                        },
        -                        "required": [
        -                          "amount_local",
        -                          "currency",
        -                          "redeemable_until"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "pricing_url": {
        -                    "default": "https://civilquants.com/pricing",
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "available_tiers"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tos_url": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "upgrade_hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "warranty_disclaimer": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          }
        -        },
        -        "required": [
        -          "request_id",
        -          "issued_at",
        -          "tier"
        -        ],
        -        "type": "object"
        -      },
        -      "data": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Schema § 1.1 — the typed payload returned inside `MCPResponse[ComputeResult]`.\n\nFree-tier responses omit `drawings` (the downloadable CAD artefact\npointers — the paid differentiator); the bridge enforces this. The\n`audit_trail` and the inline `drawing` preview are present on BOTH tiers\n(V1 ALIGN / 60th-fire D + C). `text_summary` is bounded to 2000 chars —\nkeeps the LLM-facing summary token-cheap and forces longer narrative into\nBoQ row descriptions where it belongs. `warnings` is the non-fatal\ngeometry advisory list (both tiers).",
        -            "properties": {
        -              "assembly_slug": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "audit_trail": {
        -                "anyOf": [
        -                  {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.7 — paid-tier audit-trail entry.\n\nOne entry per BoQ row; `boq_row_index` ties to the row position in\n`ComputeResult.boq_rows`. `derivation` is the human-readable formula\nwalk-through; `formula` is the optional formal expression.",
        -                      "properties": {
        -                        "boq_row_index": {
        -                          "minimum": 0,
        -                          "type": "integer"
        -                        },
        -                        "derivation": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "formula": {
        -                          "anyOf": [
        -                            {
        -                              "type": "string"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ],
        -                          "default": null
        -                        },
        -                        "id": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "parameters_referenced": {
        -                          "items": {
        -                            "type": "string"
        -                          },
        -                          "type": "array"
        -                        }
        -                      },
        -                      "required": [
        -                        "id",
        -                        "boq_row_index",
        -                        "derivation"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "boq_rows": {
        -                "items": {
        -                  "additionalProperties": false,
        -                  "description": "Schema § 1.3 — a single bill row in the requested standard's format.\n\n`description` is the non-verbatim functional description per spec § 13.9 /\n§ 15 invariant — NEVER reproduces a standard's verbatim clause text.\n`rate` / `amount` ship null because rates are commodity data the customer\nowns; the engine's job is the measurement, not the pricing.",
        -                  "properties": {
        -                    "amount": {
        -                      "anyOf": [
        -                        {
        -                          "type": "number"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "attribution": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "audit_id": {
        -                      "anyOf": [
        -                        {
        -                          "type": "string"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "description": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "quantity": {
        -                      "minimum": 0,
        -                      "type": "number"
        -                    },
        -                    "rate": {
        -                      "anyOf": [
        -                        {
        -                          "type": "number"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "unit": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "work_section": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    }
        -                  },
        -                  "required": [
        -                    "work_section",
        -                    "description",
        -                    "quantity",
        -                    "unit",
        -                    "attribution"
        -                  ],
        -                  "type": "object"
        -                },
        -                "type": "array"
        -              },
        -              "drawing": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": false,
        -                    "description": "Schema § 1.6a — inline server-rendered SVG preview of the geometry.\n\nThe MCP mirror of the web ``/compute`` response's ``drawing`` field\n(``api.schemas.compute.DrawingRef``): the same on-screen dimensioned\ndrawing both tiers see in the workspace, surfaced on the MCP compute\nresponse so a chat client can render it inline (60th-fire item C). This\nis the on-screen preview — present on BOTH tiers per the free/paid\nboundary; the downloadable CAD artefacts (DXF / dimensioned PDF) remain\nthe paid differentiator via the export tools.\n\nDefined here rather than importing ``DrawingRef`` because the web\n``schemas`` package imports back into this module (``schemas.render``),\nso reusing it would create an import cycle — the MCP wire contract keeps\nits own copy, the same pattern as ``BoQRow`` / ``DrawingReference``.",
        -                    "properties": {
        -                      "entity_count": {
        -                        "minimum": 0,
        -                        "type": "integer"
        -                      },
        -                      "svg_b64": {
        -                        "minLength": 1,
        -                        "type": "string"
        -                      },
        -                      "unit_of_drawing": {
        -                        "const": "m",
        -                        "default": "m",
        -                        "type": "string"
        -                      },
        -                      "viewbox_height": {
        -                        "exclusiveMinimum": 0,
        -                        "type": "number"
        -                      },
        -                      "viewbox_width": {
        -                        "exclusiveMinimum": 0,
        -                        "type": "number"
        -                      },
        -                      "viewbox_x": {
        -                        "type": "number"
        -                      },
        -                      "viewbox_y": {
        -                        "type": "number"
        -                      }
        -                    },
        -                    "required": [
        -                      "svg_b64",
        -                      "viewbox_x",
        -                      "viewbox_y",
        -                      "viewbox_width",
        -                      "viewbox_height",
        -                      "entity_count"
        -                    ],
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "drawings": {
        -                "anyOf": [
        -                  {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.6 — paid-tier drawing artefact pointer.\n\n`url` is an R2-signed URL; expiry is carried in `_meta.deliverables.expires_at`\non the envelope (not duplicated here). `layers` is DXF-only; PDF/SVG\ncallers omit it.",
        -                      "properties": {
        -                        "drawing_type": {
        -                          "enum": [
        -                            "section",
        -                            "plan",
        -                            "elevation",
        -                            "isometric",
        -                            "detail"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "format": {
        -                          "enum": [
        -                            "DXF",
        -                            "PDF",
        -                            "SVG"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "layers": {
        -                          "anyOf": [
        -                            {
        -                              "items": {
        -                                "type": "string"
        -                              },
        -                              "type": "array"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ],
        -                          "default": null
        -                        },
        -                        "scale": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "sheet_size": {
        -                          "enum": [
        -                            "A1",
        -                            "A2",
        -                            "A3",
        -                            "A4"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "url": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "drawing_type",
        -                        "format",
        -                        "url",
        -                        "sheet_size",
        -                        "scale"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "parameters_used": {
        -                "additionalProperties": false,
        -                "description": "Schema § 1.2 — the parameter snapshot the engine actually used.\n\nSplits user-supplied values from engine defaults so customers can see\nwhich numbers came from them and which the engine filled in. Every\ndefaulted parameter SHOULD have a corresponding entry in `assumptions`\n— the bridge layer enforces this when wrapping engine output.",
        -                "properties": {
        -                  "assumptions": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "engine_defaults": {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  "user_supplied": {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  }
        -                },
        -                "type": "object"
        -              },
        -              "standard": {
        -                "enum": [
        -                  "CESMM4",
        -                  "NRM2",
        -                  "SMM7",
        -                  "MMHW"
        -                ],
        -                "type": "string"
        -              },
        -              "text_summary": {
        -                "maxLength": 2000,
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "totals_summary": {
        -                "additionalProperties": false,
        -                "description": "Schema § 1.4 — totals_summary as a typed wrapper around the free-form dict.\n\nWire shape is a flat object (`{\"concrete_m3\": {...}, \"rebar_t\": {...}}`).\nWe model it as `RootModel`-equivalent via `model_config(extra=\"allow\")`\n+ a single `__root__`-style `entries` dict. Pydantic v2 recommends\n`RootModel` for free-form roots; using a wrapper class keeps the import\nsurface uniform with the rest of this module.",
        -                "properties": {
        -                  "entries": {
        -                    "additionalProperties": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.4 — single material/work-class total entry.",
        -                      "properties": {
        -                        "quantity": {
        -                          "minimum": 0,
        -                          "type": "number"
        -                        },
        -                        "unit": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "quantity",
        -                        "unit"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "object"
        -                  }
        -                },
        -                "type": "object"
        -              },
        -              "warnings": {
        -                "items": {
        -                  "additionalProperties": false,
        -                  "description": "Schema § 1.8 — a non-fatal geometry advisory (56th-fire T2).\n\nThe wire projection of the engine's `core.GeometryWarning`. Advisory only:\na warning NEVER changes a measured quantity — it flags geometry that is\nvalid but likely a mistake (e.g. a stale dependent-height default). Present\non BOTH tiers — a correctness/safety signal, not a paid feature.",
        -                  "properties": {
        -                    "affected_params": {
        -                      "items": {
        -                        "type": "string"
        -                      },
        -                      "type": "array"
        -                    },
        -                    "code": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "detail": {
        -                      "additionalProperties": {
        -                        "type": "number"
        -                      },
        -                      "type": "object"
        -                    },
        -                    "message": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "severity": {
        -                      "enum": [
        -                        "info",
        -                        "advisory",
        -                        "caution"
        -                      ],
        -                      "type": "string"
        -                    }
        -                  },
        -                  "required": [
        -                    "code",
        -                    "severity",
        -                    "message"
        -                  ],
        -                  "type": "object"
        -                },
        -                "type": "array"
        -              }
        -            },
        -            "required": [
        -              "assembly_slug",
        -              "standard",
        -              "parameters_used",
        -              "boq_rows",
        -              "totals_summary",
        -              "text_summary"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      },
        -      "error": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        -            "properties": {
        -              "code": {
        -                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        -                "enum": [
        -                  "RATE_LIMIT_EXCEEDED",
        -                  "TIER_INSUFFICIENT",
        -                  "INVALID_INPUT",
        -                  "SCHEMA_VERSION_MISMATCH",
        -                  "SCHEMA_INVARIANT_VIOLATION",
        -                  "UPSTREAM_TIMEOUT",
        -                  "BACKEND_FAILURE",
        -                  "IP_BLOCKED",
        -                  "RESOURCE_NOT_FOUND",
        -                  "RENDER_FAILURE",
        -                  "OCR_LOW_CONFIDENCE",
        -                  "MANUAL_REVIEW_REQUIRED",
        -                  "ACCEPTANCE_REQUIRED",
        -                  "INVALID_TOKEN"
        -                ],
        -                "type": "string"
        -              },
        -              "details": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "message": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "recoverable": {
        -                "type": "boolean"
        -              },
        -              "retry_after_seconds": {
        -                "anyOf": [
        -                  {
        -                    "minimum": 0,
        -                    "type": "integer"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              }
        -            },
        -            "required": [
        -              "code",
        -              "message",
        -              "recoverable"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      }
        -    },
        -    "required": [
        -      "_meta"
        -    ],
        -    "type": "object"
        -  },
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "_meta": {
        -        "additionalProperties": false,
        -        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        -        "properties": {
        -          "deliverables": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        -                "properties": {
        -                  "docx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "dxf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "expires_at": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  },
        -                  "pdf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "xlsx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "expires_at"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "document_id": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "issued_at": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "rate_limit_remaining": {
        -            "anyOf": [
        -              {
        -                "minimum": 0,
        -                "type": "integer"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "request_id": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "schema_version": {
        -            "const": "1.0.0",
        -            "default": "1.0.0",
        -            "type": "string"
        -          },
        -          "scope_boundary": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        -                "properties": {
        -                  "not_in_scope": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "produced": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "recommended_companions": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "type": "string"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "produced",
        -                  "not_in_scope"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tier": {
        -            "enum": [
        -              "free",
        -              "paid"
        -            ],
        -            "type": "string"
        -          },
        -          "tier_upgrade": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        -                "properties": {
        -                  "available_tiers": {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        -                      "properties": {
        -                        "billing": {
        -                          "enum": [
        -                            "one_off",
        -                            "monthly",
        -                            "annual"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "currency": {
        -                          "enum": [
        -                            "GBP",
        -                            "SGD",
        -                            "EUR",
        -                            "USD",
        -                            "CAD",
        -                            "AUD",
        -                            "NZD",
        -                            "MYR"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "display_name": {
        -                          "type": "string"
        -                        },
        -                        "price_local": {
        -                          "type": "number"
        -                        },
        -                        "tier_slug": {
        -                          "enum": [
        -                            "7_day_pass",
        -                            "solo",
        -                            "studio",
        -                            "practice"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "unlock_summary": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "tier_slug",
        -                        "display_name",
        -                        "price_local",
        -                        "currency",
        -                        "billing",
        -                        "unlock_summary"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "current_tier": {
        -                    "const": "free",
        -                    "default": "free",
        -                    "type": "string"
        -                  },
        -                  "pass_credit": {
        -                    "anyOf": [
        -                      {
        -                        "additionalProperties": false,
        -                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        -                        "properties": {
        -                          "amount_local": {
        -                            "type": "number"
        -                          },
        -                          "applies_to": {
        -                            "const": "solo_first_month",
        -                            "default": "solo_first_month",
        -                            "type": "string"
        -                          },
        -                          "currency": {
        -                            "type": "string"
        -                          },
        -                          "redeemable_until": {
        -                            "type": "string"
        -                          }
        -                        },
        -                        "required": [
        -                          "amount_local",
        -                          "currency",
        -                          "redeemable_until"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "pricing_url": {
        -                    "default": "https://civilquants.com/pricing",
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "available_tiers"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tos_url": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "upgrade_hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "warranty_disclaimer": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          }
        -        },
        -        "required": [
        -          "request_id",
        -          "issued_at",
        -          "tier"
        -        ],
        -        "type": "object"
        -      },
        -      "data": {
        -        "default": null,
        -        "title": "Data"
        -      },
        -      "error": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        -            "properties": {
        -              "code": {
        -                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        -                "enum": [
        -                  "RATE_LIMIT_EXCEEDED",
        -                  "TIER_INSUFFICIENT",
        -                  "INVALID_INPUT",
        -                  "SCHEMA_VERSION_MISMATCH",
        -                  "SCHEMA_INVARIANT_VIOLATION",
        -                  "UPSTREAM_TIMEOUT",
        -                  "BACKEND_FAILURE",
        -                  "IP_BLOCKED",
        -                  "RESOURCE_NOT_FOUND",
        -                  "RENDER_FAILURE",
        -                  "OCR_LOW_CONFIDENCE",
        -                  "MANUAL_REVIEW_REQUIRED",
        -                  "ACCEPTANCE_REQUIRED",
        -                  "INVALID_TOKEN"
        -                ],
        -                "type": "string"
        -              },
        -              "details": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "message": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "recoverable": {
        -                "type": "boolean"
        -              },
        -              "retry_after_seconds": {
        -                "anyOf": [
        -                  {
        -                    "minimum": 0,
        -                    "type": "integer"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              }
        -            },
        -            "required": [
        -              "code",
        -              "message",
        -              "recoverable"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      }
        -    },
        -    "required": [
        -      "_meta"
        -    ],
        -    "type": "object"
        -  }
        -]New value: +[
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "_meta": {
        +        "additionalProperties": false,
        +        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        +        "properties": {
        +          "deliverables": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        +                "properties": {
        +                  "docx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "dxf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "expires_at": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  },
        +                  "pdf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "xlsx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "expires_at"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "document_id": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "issued_at": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "output_mode": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Surfaces what a trimmed ``output_mode`` withheld from ``data``.\n\nA trimmed mode (``summary`` / ``boq`` / ``boq_with_backup``) withholds\nalready-computed fields to keep the chat payload small. The withheld value\nreads to a client agent as \"capability missing\" (the box-culvert \"geometry\nbuilder isn't firing\" scare) rather than \"pared for size\": ``drawing`` and\n``audit_trail`` appear as ``null``, ``boq_rows`` as an empty list ``[]``\n(its type forbids ``null``) — both indistinguishable from a genuine absent\nresult. This names the withheld fields and the exact mode that brings each\nback, so the value is unambiguous. Absent on the default ``full_json`` mode\n— nothing is withheld, nothing to point at.",
        +                "properties": {
        +                  "mode": {
        +                    "enum": [
        +                      "summary",
        +                      "boq",
        +                      "boq_with_backup"
        +                    ],
        +                    "type": "string"
        +                  },
        +                  "omitted_fields": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "minItems": 1,
        +                    "type": "array"
        +                  },
        +                  "retrieve_with": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "mode",
        +                  "omitted_fields",
        +                  "retrieve_with"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "rate_limit_remaining": {
        +            "anyOf": [
        +              {
        +                "minimum": 0,
        +                "type": "integer"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "request_id": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "schema_version": {
        +            "const": "1.0.0",
        +            "default": "1.0.0",
        +            "type": "string"
        +          },
        +          "scope_boundary": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        +                "properties": {
        +                  "not_in_scope": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "produced": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "recommended_companions": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "type": "string"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "produced",
        +                  "not_in_scope"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tier": {
        +            "enum": [
        +              "free",
        +              "paid"
        +            ],
        +            "type": "string"
        +          },
        +          "tier_upgrade": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        +                "properties": {
        +                  "available_tiers": {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        +                      "properties": {
        +                        "billing": {
        +                          "enum": [
        +                            "one_off",
        +                            "monthly",
        +                            "annual"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "currency": {
        +                          "enum": [
        +                            "GBP",
        +                            "SGD",
        +                            "EUR",
        +                            "USD",
        +                            "CAD",
        +                            "AUD",
        +                            "NZD",
        +                            "MYR"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "display_name": {
        +                          "type": "string"
        +                        },
        +                        "price_local": {
        +                          "type": "number"
        +                        },
        +                        "tier_slug": {
        +                          "enum": [
        +                            "7_day_pass",
        +                            "solo",
        +                            "studio",
        +                            "practice"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "unlock_summary": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "tier_slug",
        +                        "display_name",
        +                        "price_local",
        +                        "currency",
        +                        "billing",
        +                        "unlock_summary"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "current_tier": {
        +                    "const": "free",
        +                    "default": "free",
        +                    "type": "string"
        +                  },
        +                  "pass_credit": {
        +                    "anyOf": [
        +                      {
        +                        "additionalProperties": false,
        +                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        +                        "properties": {
        +                          "amount_local": {
        +                            "type": "number"
        +                          },
        +                          "applies_to": {
        +                            "const": "solo_first_month",
        +                            "default": "solo_first_month",
        +                            "type": "string"
        +                          },
        +                          "currency": {
        +                            "type": "string"
        +                          },
        +                          "redeemable_until": {
        +                            "type": "string"
        +                          }
        +                        },
        +                        "required": [
        +                          "amount_local",
        +                          "currency",
        +                          "redeemable_until"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "pricing_url": {
        +                    "default": "https://civilquants.com/pricing",
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "available_tiers"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tos_url": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "upgrade_hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "warranty_disclaimer": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          }
        +        },
        +        "required": [
        +          "request_id",
        +          "issued_at",
        +          "tier"
        +        ],
        +        "type": "object"
        +      },
        +      "data": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Schema § 1.1 — the typed payload returned inside `MCPResponse[ComputeResult]`.\n\nFree-tier responses omit `drawings` (the downloadable CAD artefact\npointers — the paid differentiator); the bridge enforces this. The\n`audit_trail` and the inline `drawing` preview are present on BOTH tiers\n(V1 ALIGN / 60th-fire D + C). `text_summary` is bounded to 2000 chars —\nkeeps the LLM-facing summary token-cheap and forces longer narrative into\nBoQ row descriptions where it belongs. `warnings` is the non-fatal\ngeometry advisory list (both tiers).",
        +            "properties": {
        +              "assembly_slug": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "audit_trail": {
        +                "anyOf": [
        +                  {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.7 — paid-tier audit-trail entry.\n\nOne entry per BoQ row; `boq_row_index` ties to the row position in\n`ComputeResult.boq_rows`. `derivation` is the human-readable formula\nwalk-through; `formula` is the optional formal expression.",
        +                      "properties": {
        +                        "boq_row_index": {
        +                          "minimum": 0,
        +                          "type": "integer"
        +                        },
        +                        "derivation": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "formula": {
        +                          "anyOf": [
        +                            {
        +                              "type": "string"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ],
        +                          "default": null
        +                        },
        +                        "id": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "parameters_referenced": {
        +                          "items": {
        +                            "type": "string"
        +                          },
        +                          "type": "array"
        +                        }
        +                      },
        +                      "required": [
        +                        "id",
        +                        "boq_row_index",
        +                        "derivation"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "boq_rows": {
        +                "items": {
        +                  "additionalProperties": false,
        +                  "description": "Schema § 1.3 — a single bill row in the requested standard's format.\n\n`description` is the non-verbatim functional description per spec § 13.9 /\n§ 15 invariant — NEVER reproduces a standard's verbatim clause text.\n`rate` / `amount` ship null because rates are commodity data the customer\nowns; the engine's job is the measurement, not the pricing.",
        +                  "properties": {
        +                    "amount": {
        +                      "anyOf": [
        +                        {
        +                          "type": "number"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "attribution": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "audit_id": {
        +                      "anyOf": [
        +                        {
        +                          "type": "string"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "description": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "quantity": {
        +                      "minimum": 0,
        +                      "type": "number"
        +                    },
        +                    "rate": {
        +                      "anyOf": [
        +                        {
        +                          "type": "number"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "unit": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "work_section": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    }
        +                  },
        +                  "required": [
        +                    "work_section",
        +                    "description",
        +                    "quantity",
        +                    "unit",
        +                    "attribution"
        +                  ],
        +                  "type": "object"
        +                },
        +                "type": "array"
        +              },
        +              "drawing": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": false,
        +                    "description": "Schema § 1.6a — inline server-rendered SVG preview of the geometry.\n\nThe MCP mirror of the web ``/compute`` response's ``drawing`` field\n(``api.schemas.compute.DrawingRef``): the same on-screen dimensioned\ndrawing both tiers see in the workspace, surfaced on the MCP compute\nresponse so a chat client can render it inline (60th-fire item C). This\nis the on-screen preview — present on BOTH tiers per the free/paid\nboundary; the downloadable CAD artefacts (DXF / dimensioned PDF) remain\nthe paid differentiator via the export tools.\n\nDefined here rather than importing ``DrawingRef`` because the web\n``schemas`` package imports back into this module (``schemas.render``),\nso reusing it would create an import cycle — the MCP wire contract keeps\nits own copy, the same pattern as ``BoQRow`` / ``DrawingReference``.",
        +                    "properties": {
        +                      "entity_count": {
        +                        "minimum": 0,
        +                        "type": "integer"
        +                      },
        +                      "svg_b64": {
        +                        "minLength": 1,
        +                        "type": "string"
        +                      },
        +                      "unit_of_drawing": {
        +                        "const": "m",
        +                        "default": "m",
        +                        "type": "string"
        +                      },
        +                      "viewbox_height": {
        +                        "exclusiveMinimum": 0,
        +                        "type": "number"
        +                      },
        +                      "viewbox_width": {
        +                        "exclusiveMinimum": 0,
        +                        "type": "number"
        +                      },
        +                      "viewbox_x": {
        +                        "type": "number"
        +                      },
        +                      "viewbox_y": {
        +                        "type": "number"
        +                      }
        +                    },
        +                    "required": [
        +                      "svg_b64",
        +                      "viewbox_x",
        +                      "viewbox_y",
        +                      "viewbox_width",
        +                      "viewbox_height",
        +                      "entity_count"
        +                    ],
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "drawings": {
        +                "anyOf": [
        +                  {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.6 — paid-tier drawing artefact pointer.\n\n`url` is an R2-signed URL; expiry is carried in `_meta.deliverables.expires_at`\non the envelope (not duplicated here). `layers` is DXF-only; PDF/SVG\ncallers omit it.",
        +                      "properties": {
        +                        "drawing_type": {
        +                          "enum": [
        +                            "section",
        +                            "plan",
        +                            "elevation",
        +                            "isometric",
        +                            "detail"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "format": {
        +                          "enum": [
        +                            "DXF",
        +                            "PDF",
        +                            "SVG"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "layers": {
        +                          "anyOf": [
        +                            {
        +                              "items": {
        +                                "type": "string"
        +                              },
        +                              "type": "array"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ],
        +                          "default": null
        +                        },
        +                        "scale": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "sheet_size": {
        +                          "enum": [
        +                            "A1",
        +                            "A2",
        +                            "A3",
        +                            "A4"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "url": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "drawing_type",
        +                        "format",
        +                        "url",
        +                        "sheet_size",
        +                        "scale"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "parameters_used": {
        +                "additionalProperties": false,
        +                "description": "Schema § 1.2 — the parameter snapshot the engine actually used.\n\nSplits user-supplied values from engine defaults so customers can see\nwhich numbers came from them and which the engine filled in. Every\ndefaulted parameter SHOULD have a corresponding entry in `assumptions`\n— the bridge layer enforces this when wrapping engine output.",
        +                "properties": {
        +                  "assumptions": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "engine_defaults": {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  "user_supplied": {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  }
        +                },
        +                "type": "object"
        +              },
        +              "standard": {
        +                "enum": [
        +                  "CESMM4",
        +                  "NRM2",
        +                  "SMM7",
        +                  "MMHW"
        +                ],
        +                "type": "string"
        +              },
        +              "text_summary": {
        +                "maxLength": 2000,
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "totals_summary": {
        +                "additionalProperties": false,
        +                "description": "Schema § 1.4 — totals_summary as a typed wrapper around the free-form dict.\n\nWire shape is a flat object (`{\"concrete_m3\": {...}, \"rebar_t\": {...}}`).\nWe model it as `RootModel`-equivalent via `model_config(extra=\"allow\")`\n+ a single `__root__`-style `entries` dict. Pydantic v2 recommends\n`RootModel` for free-form roots; using a wrapper class keeps the import\nsurface uniform with the rest of this module.",
        +                "properties": {
        +                  "entries": {
        +                    "additionalProperties": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.4 — single material/work-class total entry.",
        +                      "properties": {
        +                        "quantity": {
        +                          "minimum": 0,
        +                          "type": "number"
        +                        },
        +                        "unit": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "quantity",
        +                        "unit"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "object"
        +                  }
        +                },
        +                "type": "object"
        +              },
        +              "warnings": {
        +                "items": {
        +                  "additionalProperties": false,
        +                  "description": "Schema § 1.8 — a non-fatal geometry advisory (56th-fire T2).\n\nThe wire projection of the engine's `core.GeometryWarning`. Advisory only:\na warning NEVER changes a measured quantity — it flags geometry that is\nvalid but likely a mistake (e.g. a stale dependent-height default). Present\non BOTH tiers — a correctness/safety signal, not a paid feature.",
        +                  "properties": {
        +                    "affected_params": {
        +                      "items": {
        +                        "type": "string"
        +                      },
        +                      "type": "array"
        +                    },
        +                    "code": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "detail": {
        +                      "additionalProperties": {
        +                        "type": "number"
        +                      },
        +                      "type": "object"
        +                    },
        +                    "message": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "severity": {
        +                      "enum": [
        +                        "info",
        +                        "advisory",
        +                        "caution"
        +                      ],
        +                      "type": "string"
        +                    }
        +                  },
        +                  "required": [
        +                    "code",
        +                    "severity",
        +                    "message"
        +                  ],
        +                  "type": "object"
        +                },
        +                "type": "array"
        +              }
        +            },
        +            "required": [
        +              "assembly_slug",
        +              "standard",
        +              "parameters_used",
        +              "boq_rows",
        +              "totals_summary",
        +              "text_summary"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      },
        +      "error": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        +            "properties": {
        +              "code": {
        +                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        +                "enum": [
        +                  "RATE_LIMIT_EXCEEDED",
        +                  "TIER_INSUFFICIENT",
        +                  "INVALID_INPUT",
        +                  "SCHEMA_VERSION_MISMATCH",
        +                  "SCHEMA_INVARIANT_VIOLATION",
        +                  "UPSTREAM_TIMEOUT",
        +                  "BACKEND_FAILURE",
        +                  "IP_BLOCKED",
        +                  "RESOURCE_NOT_FOUND",
        +                  "RENDER_FAILURE",
        +                  "OCR_LOW_CONFIDENCE",
        +                  "MANUAL_REVIEW_REQUIRED",
        +                  "ACCEPTANCE_REQUIRED",
        +                  "INVALID_TOKEN"
        +                ],
        +                "type": "string"
        +              },
        +              "details": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "message": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "recoverable": {
        +                "type": "boolean"
        +              },
        +              "retry_after_seconds": {
        +                "anyOf": [
        +                  {
        +                    "minimum": 0,
        +                    "type": "integer"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              }
        +            },
        +            "required": [
        +              "code",
        +              "message",
        +              "recoverable"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      }
        +    },
        +    "required": [
        +      "_meta"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "_meta": {
        +        "additionalProperties": false,
        +        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        +        "properties": {
        +          "deliverables": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        +                "properties": {
        +                  "docx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "dxf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "expires_at": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  },
        +                  "pdf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "xlsx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "expires_at"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "document_id": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "issued_at": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "output_mode": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Surfaces what a trimmed ``output_mode`` withheld from ``data``.\n\nA trimmed mode (``summary`` / ``boq`` / ``boq_with_backup``) withholds\nalready-computed fields to keep the chat payload small. The withheld value\nreads to a client agent as \"capability missing\" (the box-culvert \"geometry\nbuilder isn't firing\" scare) rather than \"pared for size\": ``drawing`` and\n``audit_trail`` appear as ``null``, ``boq_rows`` as an empty list ``[]``\n(its type forbids ``null``) — both indistinguishable from a genuine absent\nresult. This names the withheld fields and the exact mode that brings each\nback, so the value is unambiguous. Absent on the default ``full_json`` mode\n— nothing is withheld, nothing to point at.",
        +                "properties": {
        +                  "mode": {
        +                    "enum": [
        +                      "summary",
        +                      "boq",
        +                      "boq_with_backup"
        +                    ],
        +                    "type": "string"
        +                  },
        +                  "omitted_fields": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "minItems": 1,
        +                    "type": "array"
        +                  },
        +                  "retrieve_with": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "mode",
        +                  "omitted_fields",
        +                  "retrieve_with"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "rate_limit_remaining": {
        +            "anyOf": [
        +              {
        +                "minimum": 0,
        +                "type": "integer"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "request_id": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "schema_version": {
        +            "const": "1.0.0",
        +            "default": "1.0.0",
        +            "type": "string"
        +          },
        +          "scope_boundary": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        +                "properties": {
        +                  "not_in_scope": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "produced": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "recommended_companions": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "type": "string"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "produced",
        +                  "not_in_scope"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tier": {
        +            "enum": [
        +              "free",
        +              "paid"
        +            ],
        +            "type": "string"
        +          },
        +          "tier_upgrade": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        +                "properties": {
        +                  "available_tiers": {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        +                      "properties": {
        +                        "billing": {
        +                          "enum": [
        +                            "one_off",
        +                            "monthly",
        +                            "annual"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "currency": {
        +                          "enum": [
        +                            "GBP",
        +                            "SGD",
        +                            "EUR",
        +                            "USD",
        +                            "CAD",
        +                            "AUD",
        +                            "NZD",
        +                            "MYR"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "display_name": {
        +                          "type": "string"
        +                        },
        +                        "price_local": {
        +                          "type": "number"
        +                        },
        +                        "tier_slug": {
        +                          "enum": [
        +                            "7_day_pass",
        +                            "solo",
        +                            "studio",
        +                            "practice"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "unlock_summary": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "tier_slug",
        +                        "display_name",
        +                        "price_local",
        +                        "currency",
        +                        "billing",
        +                        "unlock_summary"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "current_tier": {
        +                    "const": "free",
        +                    "default": "free",
        +                    "type": "string"
        +                  },
        +                  "pass_credit": {
        +                    "anyOf": [
        +                      {
        +                        "additionalProperties": false,
        +                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        +                        "properties": {
        +                          "amount_local": {
        +                            "type": "number"
        +                          },
        +                          "applies_to": {
        +                            "const": "solo_first_month",
        +                            "default": "solo_first_month",
        +                            "type": "string"
        +                          },
        +                          "currency": {
        +                            "type": "string"
        +                          },
        +                          "redeemable_until": {
        +                            "type": "string"
        +                          }
        +                        },
        +                        "required": [
        +                          "amount_local",
        +                          "currency",
        +                          "redeemable_until"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "pricing_url": {
        +                    "default": "https://civilquants.com/pricing",
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "available_tiers"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tos_url": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "upgrade_hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "warranty_disclaimer": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          }
        +        },
        +        "required": [
        +          "request_id",
        +          "issued_at",
        +          "tier"
        +        ],
        +        "type": "object"
        +      },
        +      "data": {
        +        "default": null,
        +        "title": "Data"
        +      },
        +      "error": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        +            "properties": {
        +              "code": {
        +                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        +                "enum": [
        +                  "RATE_LIMIT_EXCEEDED",
        +                  "TIER_INSUFFICIENT",
        +                  "INVALID_INPUT",
        +                  "SCHEMA_VERSION_MISMATCH",
        +                  "SCHEMA_INVARIANT_VIOLATION",
        +                  "UPSTREAM_TIMEOUT",
        +                  "BACKEND_FAILURE",
        +                  "IP_BLOCKED",
        +                  "RESOURCE_NOT_FOUND",
        +                  "RENDER_FAILURE",
        +                  "OCR_LOW_CONFIDENCE",
        +                  "MANUAL_REVIEW_REQUIRED",
        +                  "ACCEPTANCE_REQUIRED",
        +                  "INVALID_TOKEN"
        +                ],
        +                "type": "string"
        +              },
        +              "details": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "message": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "recoverable": {
        +                "type": "boolean"
        +              },
        +              "retry_after_seconds": {
        +                "anyOf": [
        +                  {
        +                    "minimum": 0,
        +                    "type": "integer"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              }
        +            },
        +            "required": [
        +              "code",
        +              "message",
        +              "recoverable"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      }
        +    },
        +    "required": [
        +      "_meta"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedcompute_ditch1 field changed
      • changedOutput schema / properties / result / anyOf
        Previous value: -[
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "_meta": {
        -        "additionalProperties": false,
        -        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        -        "properties": {
        -          "deliverables": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        -                "properties": {
        -                  "docx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "dxf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "expires_at": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  },
        -                  "pdf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "xlsx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "expires_at"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "document_id": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "issued_at": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "rate_limit_remaining": {
        -            "anyOf": [
        -              {
        -                "minimum": 0,
        -                "type": "integer"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "request_id": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "schema_version": {
        -            "const": "1.0.0",
        -            "default": "1.0.0",
        -            "type": "string"
        -          },
        -          "scope_boundary": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        -                "properties": {
        -                  "not_in_scope": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "produced": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "recommended_companions": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "type": "string"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "produced",
        -                  "not_in_scope"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tier": {
        -            "enum": [
        -              "free",
        -              "paid"
        -            ],
        -            "type": "string"
        -          },
        -          "tier_upgrade": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        -                "properties": {
        -                  "available_tiers": {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        -                      "properties": {
        -                        "billing": {
        -                          "enum": [
        -                            "one_off",
        -                            "monthly",
        -                            "annual"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "currency": {
        -                          "enum": [
        -                            "GBP",
        -                            "SGD",
        -                            "EUR",
        -                            "USD",
        -                            "CAD",
        -                            "AUD",
        -                            "NZD",
        -                            "MYR"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "display_name": {
        -                          "type": "string"
        -                        },
        -                        "price_local": {
        -                          "type": "number"
        -                        },
        -                        "tier_slug": {
        -                          "enum": [
        -                            "7_day_pass",
        -                            "solo",
        -                            "studio",
        -                            "practice"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "unlock_summary": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "tier_slug",
        -                        "display_name",
        -                        "price_local",
        -                        "currency",
        -                        "billing",
        -                        "unlock_summary"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "current_tier": {
        -                    "const": "free",
        -                    "default": "free",
        -                    "type": "string"
        -                  },
        -                  "pass_credit": {
        -                    "anyOf": [
        -                      {
        -                        "additionalProperties": false,
        -                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        -                        "properties": {
        -                          "amount_local": {
        -                            "type": "number"
        -                          },
        -                          "applies_to": {
        -                            "const": "solo_first_month",
        -                            "default": "solo_first_month",
        -                            "type": "string"
        -                          },
        -                          "currency": {
        -                            "type": "string"
        -                          },
        -                          "redeemable_until": {
        -                            "type": "string"
        -                          }
        -                        },
        -                        "required": [
        -                          "amount_local",
        -                          "currency",
        -                          "redeemable_until"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "pricing_url": {
        -                    "default": "https://civilquants.com/pricing",
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "available_tiers"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tos_url": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "upgrade_hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "warranty_disclaimer": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          }
        -        },
        -        "required": [
        -          "request_id",
        -          "issued_at",
        -          "tier"
        -        ],
        -        "type": "object"
        -      },
        -      "data": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Schema § 1.1 — the typed payload returned inside `MCPResponse[ComputeResult]`.\n\nFree-tier responses omit `drawings` (the downloadable CAD artefact\npointers — the paid differentiator); the bridge enforces this. The\n`audit_trail` and the inline `drawing` preview are present on BOTH tiers\n(V1 ALIGN / 60th-fire D + C). `text_summary` is bounded to 2000 chars —\nkeeps the LLM-facing summary token-cheap and forces longer narrative into\nBoQ row descriptions where it belongs. `warnings` is the non-fatal\ngeometry advisory list (both tiers).",
        -            "properties": {
        -              "assembly_slug": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "audit_trail": {
        -                "anyOf": [
        -                  {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.7 — paid-tier audit-trail entry.\n\nOne entry per BoQ row; `boq_row_index` ties to the row position in\n`ComputeResult.boq_rows`. `derivation` is the human-readable formula\nwalk-through; `formula` is the optional formal expression.",
        -                      "properties": {
        -                        "boq_row_index": {
        -                          "minimum": 0,
        -                          "type": "integer"
        -                        },
        -                        "derivation": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "formula": {
        -                          "anyOf": [
        -                            {
        -                              "type": "string"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ],
        -                          "default": null
        -                        },
        -                        "id": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "parameters_referenced": {
        -                          "items": {
        -                            "type": "string"
        -                          },
        -                          "type": "array"
        -                        }
        -                      },
        -                      "required": [
        -                        "id",
        -                        "boq_row_index",
        -                        "derivation"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "boq_rows": {
        -                "items": {
        -                  "additionalProperties": false,
        -                  "description": "Schema § 1.3 — a single bill row in the requested standard's format.\n\n`description` is the non-verbatim functional description per spec § 13.9 /\n§ 15 invariant — NEVER reproduces a standard's verbatim clause text.\n`rate` / `amount` ship null because rates are commodity data the customer\nowns; the engine's job is the measurement, not the pricing.",
        -                  "properties": {
        -                    "amount": {
        -                      "anyOf": [
        -                        {
        -                          "type": "number"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "attribution": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "audit_id": {
        -                      "anyOf": [
        -                        {
        -                          "type": "string"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "description": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "quantity": {
        -                      "minimum": 0,
        -                      "type": "number"
        -                    },
        -                    "rate": {
        -                      "anyOf": [
        -                        {
        -                          "type": "number"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "unit": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "work_section": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    }
        -                  },
        -                  "required": [
        -                    "work_section",
        -                    "description",
        -                    "quantity",
        -                    "unit",
        -                    "attribution"
        -                  ],
        -                  "type": "object"
        -                },
        -                "type": "array"
        -              },
        -              "drawing": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": false,
        -                    "description": "Schema § 1.6a — inline server-rendered SVG preview of the geometry.\n\nThe MCP mirror of the web ``/compute`` response's ``drawing`` field\n(``api.schemas.compute.DrawingRef``): the same on-screen dimensioned\ndrawing both tiers see in the workspace, surfaced on the MCP compute\nresponse so a chat client can render it inline (60th-fire item C). This\nis the on-screen preview — present on BOTH tiers per the free/paid\nboundary; the downloadable CAD artefacts (DXF / dimensioned PDF) remain\nthe paid differentiator via the export tools.\n\nDefined here rather than importing ``DrawingRef`` because the web\n``schemas`` package imports back into this module (``schemas.render``),\nso reusing it would create an import cycle — the MCP wire contract keeps\nits own copy, the same pattern as ``BoQRow`` / ``DrawingReference``.",
        -                    "properties": {
        -                      "entity_count": {
        -                        "minimum": 0,
        -                        "type": "integer"
        -                      },
        -                      "svg_b64": {
        -                        "minLength": 1,
        -                        "type": "string"
        -                      },
        -                      "unit_of_drawing": {
        -                        "const": "m",
        -                        "default": "m",
        -                        "type": "string"
        -                      },
        -                      "viewbox_height": {
        -                        "exclusiveMinimum": 0,
        -                        "type": "number"
        -                      },
        -                      "viewbox_width": {
        -                        "exclusiveMinimum": 0,
        -                        "type": "number"
        -                      },
        -                      "viewbox_x": {
        -                        "type": "number"
        -                      },
        -                      "viewbox_y": {
        -                        "type": "number"
        -                      }
        -                    },
        -                    "required": [
        -                      "svg_b64",
        -                      "viewbox_x",
        -                      "viewbox_y",
        -                      "viewbox_width",
        -                      "viewbox_height",
        -                      "entity_count"
        -                    ],
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "drawings": {
        -                "anyOf": [
        -                  {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.6 — paid-tier drawing artefact pointer.\n\n`url` is an R2-signed URL; expiry is carried in `_meta.deliverables.expires_at`\non the envelope (not duplicated here). `layers` is DXF-only; PDF/SVG\ncallers omit it.",
        -                      "properties": {
        -                        "drawing_type": {
        -                          "enum": [
        -                            "section",
        -                            "plan",
        -                            "elevation",
        -                            "isometric",
        -                            "detail"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "format": {
        -                          "enum": [
        -                            "DXF",
        -                            "PDF",
        -                            "SVG"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "layers": {
        -                          "anyOf": [
        -                            {
        -                              "items": {
        -                                "type": "string"
        -                              },
        -                              "type": "array"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ],
        -                          "default": null
        -                        },
        -                        "scale": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "sheet_size": {
        -                          "enum": [
        -                            "A1",
        -                            "A2",
        -                            "A3",
        -                            "A4"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "url": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "drawing_type",
        -                        "format",
        -                        "url",
        -                        "sheet_size",
        -                        "scale"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "parameters_used": {
        -                "additionalProperties": false,
        -                "description": "Schema § 1.2 — the parameter snapshot the engine actually used.\n\nSplits user-supplied values from engine defaults so customers can see\nwhich numbers came from them and which the engine filled in. Every\ndefaulted parameter SHOULD have a corresponding entry in `assumptions`\n— the bridge layer enforces this when wrapping engine output.",
        -                "properties": {
        -                  "assumptions": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "engine_defaults": {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  "user_supplied": {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  }
        -                },
        -                "type": "object"
        -              },
        -              "standard": {
        -                "enum": [
        -                  "CESMM4",
        -                  "NRM2",
        -                  "SMM7",
        -                  "MMHW"
        -                ],
        -                "type": "string"
        -              },
        -              "text_summary": {
        -                "maxLength": 2000,
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "totals_summary": {
        -                "additionalProperties": false,
        -                "description": "Schema § 1.4 — totals_summary as a typed wrapper around the free-form dict.\n\nWire shape is a flat object (`{\"concrete_m3\": {...}, \"rebar_t\": {...}}`).\nWe model it as `RootModel`-equivalent via `model_config(extra=\"allow\")`\n+ a single `__root__`-style `entries` dict. Pydantic v2 recommends\n`RootModel` for free-form roots; using a wrapper class keeps the import\nsurface uniform with the rest of this module.",
        -                "properties": {
        -                  "entries": {
        -                    "additionalProperties": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.4 — single material/work-class total entry.",
        -                      "properties": {
        -                        "quantity": {
        -                          "minimum": 0,
        -                          "type": "number"
        -                        },
        -                        "unit": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "quantity",
        -                        "unit"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "object"
        -                  }
        -                },
        -                "type": "object"
        -              },
        -              "warnings": {
        -                "items": {
        -                  "additionalProperties": false,
        -                  "description": "Schema § 1.8 — a non-fatal geometry advisory (56th-fire T2).\n\nThe wire projection of the engine's `core.GeometryWarning`. Advisory only:\na warning NEVER changes a measured quantity — it flags geometry that is\nvalid but likely a mistake (e.g. a stale dependent-height default). Present\non BOTH tiers — a correctness/safety signal, not a paid feature.",
        -                  "properties": {
        -                    "affected_params": {
        -                      "items": {
        -                        "type": "string"
        -                      },
        -                      "type": "array"
        -                    },
        -                    "code": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "detail": {
        -                      "additionalProperties": {
        -                        "type": "number"
        -                      },
        -                      "type": "object"
        -                    },
        -                    "message": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "severity": {
        -                      "enum": [
        -                        "info",
        -                        "advisory",
        -                        "caution"
        -                      ],
        -                      "type": "string"
        -                    }
        -                  },
        -                  "required": [
        -                    "code",
        -                    "severity",
        -                    "message"
        -                  ],
        -                  "type": "object"
        -                },
        -                "type": "array"
        -              }
        -            },
        -            "required": [
        -              "assembly_slug",
        -              "standard",
        -              "parameters_used",
        -              "boq_rows",
        -              "totals_summary",
        -              "text_summary"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      },
        -      "error": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        -            "properties": {
        -              "code": {
        -                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        -                "enum": [
        -                  "RATE_LIMIT_EXCEEDED",
        -                  "TIER_INSUFFICIENT",
        -                  "INVALID_INPUT",
        -                  "SCHEMA_VERSION_MISMATCH",
        -                  "SCHEMA_INVARIANT_VIOLATION",
        -                  "UPSTREAM_TIMEOUT",
        -                  "BACKEND_FAILURE",
        -                  "IP_BLOCKED",
        -                  "RESOURCE_NOT_FOUND",
        -                  "RENDER_FAILURE",
        -                  "OCR_LOW_CONFIDENCE",
        -                  "MANUAL_REVIEW_REQUIRED",
        -                  "ACCEPTANCE_REQUIRED",
        -                  "INVALID_TOKEN"
        -                ],
        -                "type": "string"
        -              },
        -              "details": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "message": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "recoverable": {
        -                "type": "boolean"
        -              },
        -              "retry_after_seconds": {
        -                "anyOf": [
        -                  {
        -                    "minimum": 0,
        -                    "type": "integer"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              }
        -            },
        -            "required": [
        -              "code",
        -              "message",
        -              "recoverable"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      }
        -    },
        -    "required": [
        -      "_meta"
        -    ],
        -    "type": "object"
        -  },
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "_meta": {
        -        "additionalProperties": false,
        -        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        -        "properties": {
        -          "deliverables": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        -                "properties": {
        -                  "docx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "dxf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "expires_at": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  },
        -                  "pdf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "xlsx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "expires_at"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "document_id": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "issued_at": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "rate_limit_remaining": {
        -            "anyOf": [
        -              {
        -                "minimum": 0,
        -                "type": "integer"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "request_id": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "schema_version": {
        -            "const": "1.0.0",
        -            "default": "1.0.0",
        -            "type": "string"
        -          },
        -          "scope_boundary": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        -                "properties": {
        -                  "not_in_scope": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "produced": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "recommended_companions": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "type": "string"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "produced",
        -                  "not_in_scope"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tier": {
        -            "enum": [
        -              "free",
        -              "paid"
        -            ],
        -            "type": "string"
        -          },
        -          "tier_upgrade": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        -                "properties": {
        -                  "available_tiers": {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        -                      "properties": {
        -                        "billing": {
        -                          "enum": [
        -                            "one_off",
        -                            "monthly",
        -                            "annual"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "currency": {
        -                          "enum": [
        -                            "GBP",
        -                            "SGD",
        -                            "EUR",
        -                            "USD",
        -                            "CAD",
        -                            "AUD",
        -                            "NZD",
        -                            "MYR"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "display_name": {
        -                          "type": "string"
        -                        },
        -                        "price_local": {
        -                          "type": "number"
        -                        },
        -                        "tier_slug": {
        -                          "enum": [
        -                            "7_day_pass",
        -                            "solo",
        -                            "studio",
        -                            "practice"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "unlock_summary": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "tier_slug",
        -                        "display_name",
        -                        "price_local",
        -                        "currency",
        -                        "billing",
        -                        "unlock_summary"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "current_tier": {
        -                    "const": "free",
        -                    "default": "free",
        -                    "type": "string"
        -                  },
        -                  "pass_credit": {
        -                    "anyOf": [
        -                      {
        -                        "additionalProperties": false,
        -                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        -                        "properties": {
        -                          "amount_local": {
        -                            "type": "number"
        -                          },
        -                          "applies_to": {
        -                            "const": "solo_first_month",
        -                            "default": "solo_first_month",
        -                            "type": "string"
        -                          },
        -                          "currency": {
        -                            "type": "string"
        -                          },
        -                          "redeemable_until": {
        -                            "type": "string"
        -                          }
        -                        },
        -                        "required": [
        -                          "amount_local",
        -                          "currency",
        -                          "redeemable_until"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "pricing_url": {
        -                    "default": "https://civilquants.com/pricing",
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "available_tiers"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tos_url": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "upgrade_hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "warranty_disclaimer": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          }
        -        },
        -        "required": [
        -          "request_id",
        -          "issued_at",
        -          "tier"
        -        ],
        -        "type": "object"
        -      },
        -      "data": {
        -        "default": null,
        -        "title": "Data"
        -      },
        -      "error": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        -            "properties": {
        -              "code": {
        -                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        -                "enum": [
        -                  "RATE_LIMIT_EXCEEDED",
        -                  "TIER_INSUFFICIENT",
        -                  "INVALID_INPUT",
        -                  "SCHEMA_VERSION_MISMATCH",
        -                  "SCHEMA_INVARIANT_VIOLATION",
        -                  "UPSTREAM_TIMEOUT",
        -                  "BACKEND_FAILURE",
        -                  "IP_BLOCKED",
        -                  "RESOURCE_NOT_FOUND",
        -                  "RENDER_FAILURE",
        -                  "OCR_LOW_CONFIDENCE",
        -                  "MANUAL_REVIEW_REQUIRED",
        -                  "ACCEPTANCE_REQUIRED",
        -                  "INVALID_TOKEN"
        -                ],
        -                "type": "string"
        -              },
        -              "details": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "message": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "recoverable": {
        -                "type": "boolean"
        -              },
        -              "retry_after_seconds": {
        -                "anyOf": [
        -                  {
        -                    "minimum": 0,
        -                    "type": "integer"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              }
        -            },
        -            "required": [
        -              "code",
        -              "message",
        -              "recoverable"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      }
        -    },
        -    "required": [
        -      "_meta"
        -    ],
        -    "type": "object"
        -  }
        -]New value: +[
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "_meta": {
        +        "additionalProperties": false,
        +        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        +        "properties": {
        +          "deliverables": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        +                "properties": {
        +                  "docx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "dxf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "expires_at": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  },
        +                  "pdf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "xlsx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "expires_at"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "document_id": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "issued_at": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "output_mode": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Surfaces what a trimmed ``output_mode`` withheld from ``data``.\n\nA trimmed mode (``summary`` / ``boq`` / ``boq_with_backup``) withholds\nalready-computed fields to keep the chat payload small. The withheld value\nreads to a client agent as \"capability missing\" (the box-culvert \"geometry\nbuilder isn't firing\" scare) rather than \"pared for size\": ``drawing`` and\n``audit_trail`` appear as ``null``, ``boq_rows`` as an empty list ``[]``\n(its type forbids ``null``) — both indistinguishable from a genuine absent\nresult. This names the withheld fields and the exact mode that brings each\nback, so the value is unambiguous. Absent on the default ``full_json`` mode\n— nothing is withheld, nothing to point at.",
        +                "properties": {
        +                  "mode": {
        +                    "enum": [
        +                      "summary",
        +                      "boq",
        +                      "boq_with_backup"
        +                    ],
        +                    "type": "string"
        +                  },
        +                  "omitted_fields": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "minItems": 1,
        +                    "type": "array"
        +                  },
        +                  "retrieve_with": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "mode",
        +                  "omitted_fields",
        +                  "retrieve_with"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "rate_limit_remaining": {
        +            "anyOf": [
        +              {
        +                "minimum": 0,
        +                "type": "integer"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "request_id": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "schema_version": {
        +            "const": "1.0.0",
        +            "default": "1.0.0",
        +            "type": "string"
        +          },
        +          "scope_boundary": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        +                "properties": {
        +                  "not_in_scope": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "produced": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "recommended_companions": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "type": "string"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "produced",
        +                  "not_in_scope"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tier": {
        +            "enum": [
        +              "free",
        +              "paid"
        +            ],
        +            "type": "string"
        +          },
        +          "tier_upgrade": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        +                "properties": {
        +                  "available_tiers": {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        +                      "properties": {
        +                        "billing": {
        +                          "enum": [
        +                            "one_off",
        +                            "monthly",
        +                            "annual"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "currency": {
        +                          "enum": [
        +                            "GBP",
        +                            "SGD",
        +                            "EUR",
        +                            "USD",
        +                            "CAD",
        +                            "AUD",
        +                            "NZD",
        +                            "MYR"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "display_name": {
        +                          "type": "string"
        +                        },
        +                        "price_local": {
        +                          "type": "number"
        +                        },
        +                        "tier_slug": {
        +                          "enum": [
        +                            "7_day_pass",
        +                            "solo",
        +                            "studio",
        +                            "practice"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "unlock_summary": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "tier_slug",
        +                        "display_name",
        +                        "price_local",
        +                        "currency",
        +                        "billing",
        +                        "unlock_summary"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "current_tier": {
        +                    "const": "free",
        +                    "default": "free",
        +                    "type": "string"
        +                  },
        +                  "pass_credit": {
        +                    "anyOf": [
        +                      {
        +                        "additionalProperties": false,
        +                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        +                        "properties": {
        +                          "amount_local": {
        +                            "type": "number"
        +                          },
        +                          "applies_to": {
        +                            "const": "solo_first_month",
        +                            "default": "solo_first_month",
        +                            "type": "string"
        +                          },
        +                          "currency": {
        +                            "type": "string"
        +                          },
        +                          "redeemable_until": {
        +                            "type": "string"
        +                          }
        +                        },
        +                        "required": [
        +                          "amount_local",
        +                          "currency",
        +                          "redeemable_until"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "pricing_url": {
        +                    "default": "https://civilquants.com/pricing",
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "available_tiers"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tos_url": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "upgrade_hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "warranty_disclaimer": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          }
        +        },
        +        "required": [
        +          "request_id",
        +          "issued_at",
        +          "tier"
        +        ],
        +        "type": "object"
        +      },
        +      "data": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Schema § 1.1 — the typed payload returned inside `MCPResponse[ComputeResult]`.\n\nFree-tier responses omit `drawings` (the downloadable CAD artefact\npointers — the paid differentiator); the bridge enforces this. The\n`audit_trail` and the inline `drawing` preview are present on BOTH tiers\n(V1 ALIGN / 60th-fire D + C). `text_summary` is bounded to 2000 chars —\nkeeps the LLM-facing summary token-cheap and forces longer narrative into\nBoQ row descriptions where it belongs. `warnings` is the non-fatal\ngeometry advisory list (both tiers).",
        +            "properties": {
        +              "assembly_slug": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "audit_trail": {
        +                "anyOf": [
        +                  {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.7 — paid-tier audit-trail entry.\n\nOne entry per BoQ row; `boq_row_index` ties to the row position in\n`ComputeResult.boq_rows`. `derivation` is the human-readable formula\nwalk-through; `formula` is the optional formal expression.",
        +                      "properties": {
        +                        "boq_row_index": {
        +                          "minimum": 0,
        +                          "type": "integer"
        +                        },
        +                        "derivation": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "formula": {
        +                          "anyOf": [
        +                            {
        +                              "type": "string"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ],
        +                          "default": null
        +                        },
        +                        "id": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "parameters_referenced": {
        +                          "items": {
        +                            "type": "string"
        +                          },
        +                          "type": "array"
        +                        }
        +                      },
        +                      "required": [
        +                        "id",
        +                        "boq_row_index",
        +                        "derivation"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "boq_rows": {
        +                "items": {
        +                  "additionalProperties": false,
        +                  "description": "Schema § 1.3 — a single bill row in the requested standard's format.\n\n`description` is the non-verbatim functional description per spec § 13.9 /\n§ 15 invariant — NEVER reproduces a standard's verbatim clause text.\n`rate` / `amount` ship null because rates are commodity data the customer\nowns; the engine's job is the measurement, not the pricing.",
        +                  "properties": {
        +                    "amount": {
        +                      "anyOf": [
        +                        {
        +                          "type": "number"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "attribution": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "audit_id": {
        +                      "anyOf": [
        +                        {
        +                          "type": "string"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "description": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "quantity": {
        +                      "minimum": 0,
        +                      "type": "number"
        +                    },
        +                    "rate": {
        +                      "anyOf": [
        +                        {
        +                          "type": "number"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "unit": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "work_section": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    }
        +                  },
        +                  "required": [
        +                    "work_section",
        +                    "description",
        +                    "quantity",
        +                    "unit",
        +                    "attribution"
        +                  ],
        +                  "type": "object"
        +                },
        +                "type": "array"
        +              },
        +              "drawing": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": false,
        +                    "description": "Schema § 1.6a — inline server-rendered SVG preview of the geometry.\n\nThe MCP mirror of the web ``/compute`` response's ``drawing`` field\n(``api.schemas.compute.DrawingRef``): the same on-screen dimensioned\ndrawing both tiers see in the workspace, surfaced on the MCP compute\nresponse so a chat client can render it inline (60th-fire item C). This\nis the on-screen preview — present on BOTH tiers per the free/paid\nboundary; the downloadable CAD artefacts (DXF / dimensioned PDF) remain\nthe paid differentiator via the export tools.\n\nDefined here rather than importing ``DrawingRef`` because the web\n``schemas`` package imports back into this module (``schemas.render``),\nso reusing it would create an import cycle — the MCP wire contract keeps\nits own copy, the same pattern as ``BoQRow`` / ``DrawingReference``.",
        +                    "properties": {
        +                      "entity_count": {
        +                        "minimum": 0,
        +                        "type": "integer"
        +                      },
        +                      "svg_b64": {
        +                        "minLength": 1,
        +                        "type": "string"
        +                      },
        +                      "unit_of_drawing": {
        +                        "const": "m",
        +                        "default": "m",
        +                        "type": "string"
        +                      },
        +                      "viewbox_height": {
        +                        "exclusiveMinimum": 0,
        +                        "type": "number"
        +                      },
        +                      "viewbox_width": {
        +                        "exclusiveMinimum": 0,
        +                        "type": "number"
        +                      },
        +                      "viewbox_x": {
        +                        "type": "number"
        +                      },
        +                      "viewbox_y": {
        +                        "type": "number"
        +                      }
        +                    },
        +                    "required": [
        +                      "svg_b64",
        +                      "viewbox_x",
        +                      "viewbox_y",
        +                      "viewbox_width",
        +                      "viewbox_height",
        +                      "entity_count"
        +                    ],
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "drawings": {
        +                "anyOf": [
        +                  {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.6 — paid-tier drawing artefact pointer.\n\n`url` is an R2-signed URL; expiry is carried in `_meta.deliverables.expires_at`\non the envelope (not duplicated here). `layers` is DXF-only; PDF/SVG\ncallers omit it.",
        +                      "properties": {
        +                        "drawing_type": {
        +                          "enum": [
        +                            "section",
        +                            "plan",
        +                            "elevation",
        +                            "isometric",
        +                            "detail"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "format": {
        +                          "enum": [
        +                            "DXF",
        +                            "PDF",
        +                            "SVG"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "layers": {
        +                          "anyOf": [
        +                            {
        +                              "items": {
        +                                "type": "string"
        +                              },
        +                              "type": "array"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ],
        +                          "default": null
        +                        },
        +                        "scale": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "sheet_size": {
        +                          "enum": [
        +                            "A1",
        +                            "A2",
        +                            "A3",
        +                            "A4"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "url": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "drawing_type",
        +                        "format",
        +                        "url",
        +                        "sheet_size",
        +                        "scale"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "parameters_used": {
        +                "additionalProperties": false,
        +                "description": "Schema § 1.2 — the parameter snapshot the engine actually used.\n\nSplits user-supplied values from engine defaults so customers can see\nwhich numbers came from them and which the engine filled in. Every\ndefaulted parameter SHOULD have a corresponding entry in `assumptions`\n— the bridge layer enforces this when wrapping engine output.",
        +                "properties": {
        +                  "assumptions": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "engine_defaults": {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  "user_supplied": {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  }
        +                },
        +                "type": "object"
        +              },
        +              "standard": {
        +                "enum": [
        +                  "CESMM4",
        +                  "NRM2",
        +                  "SMM7",
        +                  "MMHW"
        +                ],
        +                "type": "string"
        +              },
        +              "text_summary": {
        +                "maxLength": 2000,
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "totals_summary": {
        +                "additionalProperties": false,
        +                "description": "Schema § 1.4 — totals_summary as a typed wrapper around the free-form dict.\n\nWire shape is a flat object (`{\"concrete_m3\": {...}, \"rebar_t\": {...}}`).\nWe model it as `RootModel`-equivalent via `model_config(extra=\"allow\")`\n+ a single `__root__`-style `entries` dict. Pydantic v2 recommends\n`RootModel` for free-form roots; using a wrapper class keeps the import\nsurface uniform with the rest of this module.",
        +                "properties": {
        +                  "entries": {
        +                    "additionalProperties": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.4 — single material/work-class total entry.",
        +                      "properties": {
        +                        "quantity": {
        +                          "minimum": 0,
        +                          "type": "number"
        +                        },
        +                        "unit": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "quantity",
        +                        "unit"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "object"
        +                  }
        +                },
        +                "type": "object"
        +              },
        +              "warnings": {
        +                "items": {
        +                  "additionalProperties": false,
        +                  "description": "Schema § 1.8 — a non-fatal geometry advisory (56th-fire T2).\n\nThe wire projection of the engine's `core.GeometryWarning`. Advisory only:\na warning NEVER changes a measured quantity — it flags geometry that is\nvalid but likely a mistake (e.g. a stale dependent-height default). Present\non BOTH tiers — a correctness/safety signal, not a paid feature.",
        +                  "properties": {
        +                    "affected_params": {
        +                      "items": {
        +                        "type": "string"
        +                      },
        +                      "type": "array"
        +                    },
        +                    "code": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "detail": {
        +                      "additionalProperties": {
        +                        "type": "number"
        +                      },
        +                      "type": "object"
        +                    },
        +                    "message": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "severity": {
        +                      "enum": [
        +                        "info",
        +                        "advisory",
        +                        "caution"
        +                      ],
        +                      "type": "string"
        +                    }
        +                  },
        +                  "required": [
        +                    "code",
        +                    "severity",
        +                    "message"
        +                  ],
        +                  "type": "object"
        +                },
        +                "type": "array"
        +              }
        +            },
        +            "required": [
        +              "assembly_slug",
        +              "standard",
        +              "parameters_used",
        +              "boq_rows",
        +              "totals_summary",
        +              "text_summary"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      },
        +      "error": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        +            "properties": {
        +              "code": {
        +                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        +                "enum": [
        +                  "RATE_LIMIT_EXCEEDED",
        +                  "TIER_INSUFFICIENT",
        +                  "INVALID_INPUT",
        +                  "SCHEMA_VERSION_MISMATCH",
        +                  "SCHEMA_INVARIANT_VIOLATION",
        +                  "UPSTREAM_TIMEOUT",
        +                  "BACKEND_FAILURE",
        +                  "IP_BLOCKED",
        +                  "RESOURCE_NOT_FOUND",
        +                  "RENDER_FAILURE",
        +                  "OCR_LOW_CONFIDENCE",
        +                  "MANUAL_REVIEW_REQUIRED",
        +                  "ACCEPTANCE_REQUIRED",
        +                  "INVALID_TOKEN"
        +                ],
        +                "type": "string"
        +              },
        +              "details": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "message": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "recoverable": {
        +                "type": "boolean"
        +              },
        +              "retry_after_seconds": {
        +                "anyOf": [
        +                  {
        +                    "minimum": 0,
        +                    "type": "integer"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              }
        +            },
        +            "required": [
        +              "code",
        +              "message",
        +              "recoverable"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      }
        +    },
        +    "required": [
        +      "_meta"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "_meta": {
        +        "additionalProperties": false,
        +        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        +        "properties": {
        +          "deliverables": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        +                "properties": {
        +                  "docx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "dxf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "expires_at": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  },
        +                  "pdf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "xlsx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "expires_at"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "document_id": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "issued_at": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "output_mode": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Surfaces what a trimmed ``output_mode`` withheld from ``data``.\n\nA trimmed mode (``summary`` / ``boq`` / ``boq_with_backup``) withholds\nalready-computed fields to keep the chat payload small. The withheld value\nreads to a client agent as \"capability missing\" (the box-culvert \"geometry\nbuilder isn't firing\" scare) rather than \"pared for size\": ``drawing`` and\n``audit_trail`` appear as ``null``, ``boq_rows`` as an empty list ``[]``\n(its type forbids ``null``) — both indistinguishable from a genuine absent\nresult. This names the withheld fields and the exact mode that brings each\nback, so the value is unambiguous. Absent on the default ``full_json`` mode\n— nothing is withheld, nothing to point at.",
        +                "properties": {
        +                  "mode": {
        +                    "enum": [
        +                      "summary",
        +                      "boq",
        +                      "boq_with_backup"
        +                    ],
        +                    "type": "string"
        +                  },
        +                  "omitted_fields": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "minItems": 1,
        +                    "type": "array"
        +                  },
        +                  "retrieve_with": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "mode",
        +                  "omitted_fields",
        +                  "retrieve_with"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "rate_limit_remaining": {
        +            "anyOf": [
        +              {
        +                "minimum": 0,
        +                "type": "integer"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "request_id": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "schema_version": {
        +            "const": "1.0.0",
        +            "default": "1.0.0",
        +            "type": "string"
        +          },
        +          "scope_boundary": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        +                "properties": {
        +                  "not_in_scope": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "produced": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "recommended_companions": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "type": "string"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "produced",
        +                  "not_in_scope"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tier": {
        +            "enum": [
        +              "free",
        +              "paid"
        +            ],
        +            "type": "string"
        +          },
        +          "tier_upgrade": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        +                "properties": {
        +                  "available_tiers": {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        +                      "properties": {
        +                        "billing": {
        +                          "enum": [
        +                            "one_off",
        +                            "monthly",
        +                            "annual"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "currency": {
        +                          "enum": [
        +                            "GBP",
        +                            "SGD",
        +                            "EUR",
        +                            "USD",
        +                            "CAD",
        +                            "AUD",
        +                            "NZD",
        +                            "MYR"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "display_name": {
        +                          "type": "string"
        +                        },
        +                        "price_local": {
        +                          "type": "number"
        +                        },
        +                        "tier_slug": {
        +                          "enum": [
        +                            "7_day_pass",
        +                            "solo",
        +                            "studio",
        +                            "practice"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "unlock_summary": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "tier_slug",
        +                        "display_name",
        +                        "price_local",
        +                        "currency",
        +                        "billing",
        +                        "unlock_summary"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "current_tier": {
        +                    "const": "free",
        +                    "default": "free",
        +                    "type": "string"
        +                  },
        +                  "pass_credit": {
        +                    "anyOf": [
        +                      {
        +                        "additionalProperties": false,
        +                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        +                        "properties": {
        +                          "amount_local": {
        +                            "type": "number"
        +                          },
        +                          "applies_to": {
        +                            "const": "solo_first_month",
        +                            "default": "solo_first_month",
        +                            "type": "string"
        +                          },
        +                          "currency": {
        +                            "type": "string"
        +                          },
        +                          "redeemable_until": {
        +                            "type": "string"
        +                          }
        +                        },
        +                        "required": [
        +                          "amount_local",
        +                          "currency",
        +                          "redeemable_until"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "pricing_url": {
        +                    "default": "https://civilquants.com/pricing",
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "available_tiers"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tos_url": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "upgrade_hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "warranty_disclaimer": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          }
        +        },
        +        "required": [
        +          "request_id",
        +          "issued_at",
        +          "tier"
        +        ],
        +        "type": "object"
        +      },
        +      "data": {
        +        "default": null,
        +        "title": "Data"
        +      },
        +      "error": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        +            "properties": {
        +              "code": {
        +                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        +                "enum": [
        +                  "RATE_LIMIT_EXCEEDED",
        +                  "TIER_INSUFFICIENT",
        +                  "INVALID_INPUT",
        +                  "SCHEMA_VERSION_MISMATCH",
        +                  "SCHEMA_INVARIANT_VIOLATION",
        +                  "UPSTREAM_TIMEOUT",
        +                  "BACKEND_FAILURE",
        +                  "IP_BLOCKED",
        +                  "RESOURCE_NOT_FOUND",
        +                  "RENDER_FAILURE",
        +                  "OCR_LOW_CONFIDENCE",
        +                  "MANUAL_REVIEW_REQUIRED",
        +                  "ACCEPTANCE_REQUIRED",
        +                  "INVALID_TOKEN"
        +                ],
        +                "type": "string"
        +              },
        +              "details": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "message": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "recoverable": {
        +                "type": "boolean"
        +              },
        +              "retry_after_seconds": {
        +                "anyOf": [
        +                  {
        +                    "minimum": 0,
        +                    "type": "integer"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              }
        +            },
        +            "required": [
        +              "code",
        +              "message",
        +              "recoverable"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      }
        +    },
        +    "required": [
        +      "_meta"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedcompute_edge_drain1 field changed
      • changedOutput schema / properties / result / anyOf
        Previous value: -[
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "_meta": {
        -        "additionalProperties": false,
        -        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        -        "properties": {
        -          "deliverables": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        -                "properties": {
        -                  "docx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "dxf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "expires_at": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  },
        -                  "pdf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "xlsx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "expires_at"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "document_id": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "issued_at": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "rate_limit_remaining": {
        -            "anyOf": [
        -              {
        -                "minimum": 0,
        -                "type": "integer"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "request_id": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "schema_version": {
        -            "const": "1.0.0",
        -            "default": "1.0.0",
        -            "type": "string"
        -          },
        -          "scope_boundary": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        -                "properties": {
        -                  "not_in_scope": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "produced": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "recommended_companions": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "type": "string"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "produced",
        -                  "not_in_scope"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tier": {
        -            "enum": [
        -              "free",
        -              "paid"
        -            ],
        -            "type": "string"
        -          },
        -          "tier_upgrade": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        -                "properties": {
        -                  "available_tiers": {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        -                      "properties": {
        -                        "billing": {
        -                          "enum": [
        -                            "one_off",
        -                            "monthly",
        -                            "annual"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "currency": {
        -                          "enum": [
        -                            "GBP",
        -                            "SGD",
        -                            "EUR",
        -                            "USD",
        -                            "CAD",
        -                            "AUD",
        -                            "NZD",
        -                            "MYR"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "display_name": {
        -                          "type": "string"
        -                        },
        -                        "price_local": {
        -                          "type": "number"
        -                        },
        -                        "tier_slug": {
        -                          "enum": [
        -                            "7_day_pass",
        -                            "solo",
        -                            "studio",
        -                            "practice"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "unlock_summary": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "tier_slug",
        -                        "display_name",
        -                        "price_local",
        -                        "currency",
        -                        "billing",
        -                        "unlock_summary"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "current_tier": {
        -                    "const": "free",
        -                    "default": "free",
        -                    "type": "string"
        -                  },
        -                  "pass_credit": {
        -                    "anyOf": [
        -                      {
        -                        "additionalProperties": false,
        -                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        -                        "properties": {
        -                          "amount_local": {
        -                            "type": "number"
        -                          },
        -                          "applies_to": {
        -                            "const": "solo_first_month",
        -                            "default": "solo_first_month",
        -                            "type": "string"
        -                          },
        -                          "currency": {
        -                            "type": "string"
        -                          },
        -                          "redeemable_until": {
        -                            "type": "string"
        -                          }
        -                        },
        -                        "required": [
        -                          "amount_local",
        -                          "currency",
        -                          "redeemable_until"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "pricing_url": {
        -                    "default": "https://civilquants.com/pricing",
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "available_tiers"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tos_url": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "upgrade_hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "warranty_disclaimer": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          }
        -        },
        -        "required": [
        -          "request_id",
        -          "issued_at",
        -          "tier"
        -        ],
        -        "type": "object"
        -      },
        -      "data": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Schema § 1.1 — the typed payload returned inside `MCPResponse[ComputeResult]`.\n\nFree-tier responses omit `drawings` (the downloadable CAD artefact\npointers — the paid differentiator); the bridge enforces this. The\n`audit_trail` and the inline `drawing` preview are present on BOTH tiers\n(V1 ALIGN / 60th-fire D + C). `text_summary` is bounded to 2000 chars —\nkeeps the LLM-facing summary token-cheap and forces longer narrative into\nBoQ row descriptions where it belongs. `warnings` is the non-fatal\ngeometry advisory list (both tiers).",
        -            "properties": {
        -              "assembly_slug": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "audit_trail": {
        -                "anyOf": [
        -                  {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.7 — paid-tier audit-trail entry.\n\nOne entry per BoQ row; `boq_row_index` ties to the row position in\n`ComputeResult.boq_rows`. `derivation` is the human-readable formula\nwalk-through; `formula` is the optional formal expression.",
        -                      "properties": {
        -                        "boq_row_index": {
        -                          "minimum": 0,
        -                          "type": "integer"
        -                        },
        -                        "derivation": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "formula": {
        -                          "anyOf": [
        -                            {
        -                              "type": "string"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ],
        -                          "default": null
        -                        },
        -                        "id": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "parameters_referenced": {
        -                          "items": {
        -                            "type": "string"
        -                          },
        -                          "type": "array"
        -                        }
        -                      },
        -                      "required": [
        -                        "id",
        -                        "boq_row_index",
        -                        "derivation"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "boq_rows": {
        -                "items": {
        -                  "additionalProperties": false,
        -                  "description": "Schema § 1.3 — a single bill row in the requested standard's format.\n\n`description` is the non-verbatim functional description per spec § 13.9 /\n§ 15 invariant — NEVER reproduces a standard's verbatim clause text.\n`rate` / `amount` ship null because rates are commodity data the customer\nowns; the engine's job is the measurement, not the pricing.",
        -                  "properties": {
        -                    "amount": {
        -                      "anyOf": [
        -                        {
        -                          "type": "number"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "attribution": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "audit_id": {
        -                      "anyOf": [
        -                        {
        -                          "type": "string"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "description": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "quantity": {
        -                      "minimum": 0,
        -                      "type": "number"
        -                    },
        -                    "rate": {
        -                      "anyOf": [
        -                        {
        -                          "type": "number"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "unit": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "work_section": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    }
        -                  },
        -                  "required": [
        -                    "work_section",
        -                    "description",
        -                    "quantity",
        -                    "unit",
        -                    "attribution"
        -                  ],
        -                  "type": "object"
        -                },
        -                "type": "array"
        -              },
        -              "drawing": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": false,
        -                    "description": "Schema § 1.6a — inline server-rendered SVG preview of the geometry.\n\nThe MCP mirror of the web ``/compute`` response's ``drawing`` field\n(``api.schemas.compute.DrawingRef``): the same on-screen dimensioned\ndrawing both tiers see in the workspace, surfaced on the MCP compute\nresponse so a chat client can render it inline (60th-fire item C). This\nis the on-screen preview — present on BOTH tiers per the free/paid\nboundary; the downloadable CAD artefacts (DXF / dimensioned PDF) remain\nthe paid differentiator via the export tools.\n\nDefined here rather than importing ``DrawingRef`` because the web\n``schemas`` package imports back into this module (``schemas.render``),\nso reusing it would create an import cycle — the MCP wire contract keeps\nits own copy, the same pattern as ``BoQRow`` / ``DrawingReference``.",
        -                    "properties": {
        -                      "entity_count": {
        -                        "minimum": 0,
        -                        "type": "integer"
        -                      },
        -                      "svg_b64": {
        -                        "minLength": 1,
        -                        "type": "string"
        -                      },
        -                      "unit_of_drawing": {
        -                        "const": "m",
        -                        "default": "m",
        -                        "type": "string"
        -                      },
        -                      "viewbox_height": {
        -                        "exclusiveMinimum": 0,
        -                        "type": "number"
        -                      },
        -                      "viewbox_width": {
        -                        "exclusiveMinimum": 0,
        -                        "type": "number"
        -                      },
        -                      "viewbox_x": {
        -                        "type": "number"
        -                      },
        -                      "viewbox_y": {
        -                        "type": "number"
        -                      }
        -                    },
        -                    "required": [
        -                      "svg_b64",
        -                      "viewbox_x",
        -                      "viewbox_y",
        -                      "viewbox_width",
        -                      "viewbox_height",
        -                      "entity_count"
        -                    ],
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "drawings": {
        -                "anyOf": [
        -                  {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.6 — paid-tier drawing artefact pointer.\n\n`url` is an R2-signed URL; expiry is carried in `_meta.deliverables.expires_at`\non the envelope (not duplicated here). `layers` is DXF-only; PDF/SVG\ncallers omit it.",
        -                      "properties": {
        -                        "drawing_type": {
        -                          "enum": [
        -                            "section",
        -                            "plan",
        -                            "elevation",
        -                            "isometric",
        -                            "detail"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "format": {
        -                          "enum": [
        -                            "DXF",
        -                            "PDF",
        -                            "SVG"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "layers": {
        -                          "anyOf": [
        -                            {
        -                              "items": {
        -                                "type": "string"
        -                              },
        -                              "type": "array"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ],
        -                          "default": null
        -                        },
        -                        "scale": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "sheet_size": {
        -                          "enum": [
        -                            "A1",
        -                            "A2",
        -                            "A3",
        -                            "A4"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "url": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "drawing_type",
        -                        "format",
        -                        "url",
        -                        "sheet_size",
        -                        "scale"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "parameters_used": {
        -                "additionalProperties": false,
        -                "description": "Schema § 1.2 — the parameter snapshot the engine actually used.\n\nSplits user-supplied values from engine defaults so customers can see\nwhich numbers came from them and which the engine filled in. Every\ndefaulted parameter SHOULD have a corresponding entry in `assumptions`\n— the bridge layer enforces this when wrapping engine output.",
        -                "properties": {
        -                  "assumptions": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "engine_defaults": {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  "user_supplied": {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  }
        -                },
        -                "type": "object"
        -              },
        -              "standard": {
        -                "enum": [
        -                  "CESMM4",
        -                  "NRM2",
        -                  "SMM7",
        -                  "MMHW"
        -                ],
        -                "type": "string"
        -              },
        -              "text_summary": {
        -                "maxLength": 2000,
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "totals_summary": {
        -                "additionalProperties": false,
        -                "description": "Schema § 1.4 — totals_summary as a typed wrapper around the free-form dict.\n\nWire shape is a flat object (`{\"concrete_m3\": {...}, \"rebar_t\": {...}}`).\nWe model it as `RootModel`-equivalent via `model_config(extra=\"allow\")`\n+ a single `__root__`-style `entries` dict. Pydantic v2 recommends\n`RootModel` for free-form roots; using a wrapper class keeps the import\nsurface uniform with the rest of this module.",
        -                "properties": {
        -                  "entries": {
        -                    "additionalProperties": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.4 — single material/work-class total entry.",
        -                      "properties": {
        -                        "quantity": {
        -                          "minimum": 0,
        -                          "type": "number"
        -                        },
        -                        "unit": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "quantity",
        -                        "unit"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "object"
        -                  }
        -                },
        -                "type": "object"
        -              },
        -              "warnings": {
        -                "items": {
        -                  "additionalProperties": false,
        -                  "description": "Schema § 1.8 — a non-fatal geometry advisory (56th-fire T2).\n\nThe wire projection of the engine's `core.GeometryWarning`. Advisory only:\na warning NEVER changes a measured quantity — it flags geometry that is\nvalid but likely a mistake (e.g. a stale dependent-height default). Present\non BOTH tiers — a correctness/safety signal, not a paid feature.",
        -                  "properties": {
        -                    "affected_params": {
        -                      "items": {
        -                        "type": "string"
        -                      },
        -                      "type": "array"
        -                    },
        -                    "code": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "detail": {
        -                      "additionalProperties": {
        -                        "type": "number"
        -                      },
        -                      "type": "object"
        -                    },
        -                    "message": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "severity": {
        -                      "enum": [
        -                        "info",
        -                        "advisory",
        -                        "caution"
        -                      ],
        -                      "type": "string"
        -                    }
        -                  },
        -                  "required": [
        -                    "code",
        -                    "severity",
        -                    "message"
        -                  ],
        -                  "type": "object"
        -                },
        -                "type": "array"
        -              }
        -            },
        -            "required": [
        -              "assembly_slug",
        -              "standard",
        -              "parameters_used",
        -              "boq_rows",
        -              "totals_summary",
        -              "text_summary"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      },
        -      "error": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        -            "properties": {
        -              "code": {
        -                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        -                "enum": [
        -                  "RATE_LIMIT_EXCEEDED",
        -                  "TIER_INSUFFICIENT",
        -                  "INVALID_INPUT",
        -                  "SCHEMA_VERSION_MISMATCH",
        -                  "SCHEMA_INVARIANT_VIOLATION",
        -                  "UPSTREAM_TIMEOUT",
        -                  "BACKEND_FAILURE",
        -                  "IP_BLOCKED",
        -                  "RESOURCE_NOT_FOUND",
        -                  "RENDER_FAILURE",
        -                  "OCR_LOW_CONFIDENCE",
        -                  "MANUAL_REVIEW_REQUIRED",
        -                  "ACCEPTANCE_REQUIRED",
        -                  "INVALID_TOKEN"
        -                ],
        -                "type": "string"
        -              },
        -              "details": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "message": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "recoverable": {
        -                "type": "boolean"
        -              },
        -              "retry_after_seconds": {
        -                "anyOf": [
        -                  {
        -                    "minimum": 0,
        -                    "type": "integer"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              }
        -            },
        -            "required": [
        -              "code",
        -              "message",
        -              "recoverable"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      }
        -    },
        -    "required": [
        -      "_meta"
        -    ],
        -    "type": "object"
        -  },
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "_meta": {
        -        "additionalProperties": false,
        -        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        -        "properties": {
        -          "deliverables": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        -                "properties": {
        -                  "docx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "dxf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "expires_at": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  },
        -                  "pdf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "xlsx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "expires_at"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "document_id": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "issued_at": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "rate_limit_remaining": {
        -            "anyOf": [
        -              {
        -                "minimum": 0,
        -                "type": "integer"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "request_id": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "schema_version": {
        -            "const": "1.0.0",
        -            "default": "1.0.0",
        -            "type": "string"
        -          },
        -          "scope_boundary": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        -                "properties": {
        -                  "not_in_scope": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "produced": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "recommended_companions": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "type": "string"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "produced",
        -                  "not_in_scope"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tier": {
        -            "enum": [
        -              "free",
        -              "paid"
        -            ],
        -            "type": "string"
        -          },
        -          "tier_upgrade": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        -                "properties": {
        -                  "available_tiers": {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        -                      "properties": {
        -                        "billing": {
        -                          "enum": [
        -                            "one_off",
        -                            "monthly",
        -                            "annual"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "currency": {
        -                          "enum": [
        -                            "GBP",
        -                            "SGD",
        -                            "EUR",
        -                            "USD",
        -                            "CAD",
        -                            "AUD",
        -                            "NZD",
        -                            "MYR"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "display_name": {
        -                          "type": "string"
        -                        },
        -                        "price_local": {
        -                          "type": "number"
        -                        },
        -                        "tier_slug": {
        -                          "enum": [
        -                            "7_day_pass",
        -                            "solo",
        -                            "studio",
        -                            "practice"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "unlock_summary": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "tier_slug",
        -                        "display_name",
        -                        "price_local",
        -                        "currency",
        -                        "billing",
        -                        "unlock_summary"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "current_tier": {
        -                    "const": "free",
        -                    "default": "free",
        -                    "type": "string"
        -                  },
        -                  "pass_credit": {
        -                    "anyOf": [
        -                      {
        -                        "additionalProperties": false,
        -                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        -                        "properties": {
        -                          "amount_local": {
        -                            "type": "number"
        -                          },
        -                          "applies_to": {
        -                            "const": "solo_first_month",
        -                            "default": "solo_first_month",
        -                            "type": "string"
        -                          },
        -                          "currency": {
        -                            "type": "string"
        -                          },
        -                          "redeemable_until": {
        -                            "type": "string"
        -                          }
        -                        },
        -                        "required": [
        -                          "amount_local",
        -                          "currency",
        -                          "redeemable_until"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "pricing_url": {
        -                    "default": "https://civilquants.com/pricing",
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "available_tiers"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tos_url": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "upgrade_hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "warranty_disclaimer": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          }
        -        },
        -        "required": [
        -          "request_id",
        -          "issued_at",
        -          "tier"
        -        ],
        -        "type": "object"
        -      },
        -      "data": {
        -        "default": null,
        -        "title": "Data"
        -      },
        -      "error": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        -            "properties": {
        -              "code": {
        -                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        -                "enum": [
        -                  "RATE_LIMIT_EXCEEDED",
        -                  "TIER_INSUFFICIENT",
        -                  "INVALID_INPUT",
        -                  "SCHEMA_VERSION_MISMATCH",
        -                  "SCHEMA_INVARIANT_VIOLATION",
        -                  "UPSTREAM_TIMEOUT",
        -                  "BACKEND_FAILURE",
        -                  "IP_BLOCKED",
        -                  "RESOURCE_NOT_FOUND",
        -                  "RENDER_FAILURE",
        -                  "OCR_LOW_CONFIDENCE",
        -                  "MANUAL_REVIEW_REQUIRED",
        -                  "ACCEPTANCE_REQUIRED",
        -                  "INVALID_TOKEN"
        -                ],
        -                "type": "string"
        -              },
        -              "details": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "message": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "recoverable": {
        -                "type": "boolean"
        -              },
        -              "retry_after_seconds": {
        -                "anyOf": [
        -                  {
        -                    "minimum": 0,
        -                    "type": "integer"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              }
        -            },
        -            "required": [
        -              "code",
        -              "message",
        -              "recoverable"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      }
        -    },
        -    "required": [
        -      "_meta"
        -    ],
        -    "type": "object"
        -  }
        -]New value: +[
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "_meta": {
        +        "additionalProperties": false,
        +        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        +        "properties": {
        +          "deliverables": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        +                "properties": {
        +                  "docx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "dxf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "expires_at": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  },
        +                  "pdf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "xlsx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "expires_at"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "document_id": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "issued_at": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "output_mode": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Surfaces what a trimmed ``output_mode`` withheld from ``data``.\n\nA trimmed mode (``summary`` / ``boq`` / ``boq_with_backup``) withholds\nalready-computed fields to keep the chat payload small. The withheld value\nreads to a client agent as \"capability missing\" (the box-culvert \"geometry\nbuilder isn't firing\" scare) rather than \"pared for size\": ``drawing`` and\n``audit_trail`` appear as ``null``, ``boq_rows`` as an empty list ``[]``\n(its type forbids ``null``) — both indistinguishable from a genuine absent\nresult. This names the withheld fields and the exact mode that brings each\nback, so the value is unambiguous. Absent on the default ``full_json`` mode\n— nothing is withheld, nothing to point at.",
        +                "properties": {
        +                  "mode": {
        +                    "enum": [
        +                      "summary",
        +                      "boq",
        +                      "boq_with_backup"
        +                    ],
        +                    "type": "string"
        +                  },
        +                  "omitted_fields": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "minItems": 1,
        +                    "type": "array"
        +                  },
        +                  "retrieve_with": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "mode",
        +                  "omitted_fields",
        +                  "retrieve_with"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "rate_limit_remaining": {
        +            "anyOf": [
        +              {
        +                "minimum": 0,
        +                "type": "integer"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "request_id": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "schema_version": {
        +            "const": "1.0.0",
        +            "default": "1.0.0",
        +            "type": "string"
        +          },
        +          "scope_boundary": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        +                "properties": {
        +                  "not_in_scope": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "produced": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "recommended_companions": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "type": "string"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "produced",
        +                  "not_in_scope"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tier": {
        +            "enum": [
        +              "free",
        +              "paid"
        +            ],
        +            "type": "string"
        +          },
        +          "tier_upgrade": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        +                "properties": {
        +                  "available_tiers": {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        +                      "properties": {
        +                        "billing": {
        +                          "enum": [
        +                            "one_off",
        +                            "monthly",
        +                            "annual"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "currency": {
        +                          "enum": [
        +                            "GBP",
        +                            "SGD",
        +                            "EUR",
        +                            "USD",
        +                            "CAD",
        +                            "AUD",
        +                            "NZD",
        +                            "MYR"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "display_name": {
        +                          "type": "string"
        +                        },
        +                        "price_local": {
        +                          "type": "number"
        +                        },
        +                        "tier_slug": {
        +                          "enum": [
        +                            "7_day_pass",
        +                            "solo",
        +                            "studio",
        +                            "practice"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "unlock_summary": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "tier_slug",
        +                        "display_name",
        +                        "price_local",
        +                        "currency",
        +                        "billing",
        +                        "unlock_summary"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "current_tier": {
        +                    "const": "free",
        +                    "default": "free",
        +                    "type": "string"
        +                  },
        +                  "pass_credit": {
        +                    "anyOf": [
        +                      {
        +                        "additionalProperties": false,
        +                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        +                        "properties": {
        +                          "amount_local": {
        +                            "type": "number"
        +                          },
        +                          "applies_to": {
        +                            "const": "solo_first_month",
        +                            "default": "solo_first_month",
        +                            "type": "string"
        +                          },
        +                          "currency": {
        +                            "type": "string"
        +                          },
        +                          "redeemable_until": {
        +                            "type": "string"
        +                          }
        +                        },
        +                        "required": [
        +                          "amount_local",
        +                          "currency",
        +                          "redeemable_until"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "pricing_url": {
        +                    "default": "https://civilquants.com/pricing",
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "available_tiers"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tos_url": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "upgrade_hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "warranty_disclaimer": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          }
        +        },
        +        "required": [
        +          "request_id",
        +          "issued_at",
        +          "tier"
        +        ],
        +        "type": "object"
        +      },
        +      "data": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Schema § 1.1 — the typed payload returned inside `MCPResponse[ComputeResult]`.\n\nFree-tier responses omit `drawings` (the downloadable CAD artefact\npointers — the paid differentiator); the bridge enforces this. The\n`audit_trail` and the inline `drawing` preview are present on BOTH tiers\n(V1 ALIGN / 60th-fire D + C). `text_summary` is bounded to 2000 chars —\nkeeps the LLM-facing summary token-cheap and forces longer narrative into\nBoQ row descriptions where it belongs. `warnings` is the non-fatal\ngeometry advisory list (both tiers).",
        +            "properties": {
        +              "assembly_slug": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "audit_trail": {
        +                "anyOf": [
        +                  {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.7 — paid-tier audit-trail entry.\n\nOne entry per BoQ row; `boq_row_index` ties to the row position in\n`ComputeResult.boq_rows`. `derivation` is the human-readable formula\nwalk-through; `formula` is the optional formal expression.",
        +                      "properties": {
        +                        "boq_row_index": {
        +                          "minimum": 0,
        +                          "type": "integer"
        +                        },
        +                        "derivation": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "formula": {
        +                          "anyOf": [
        +                            {
        +                              "type": "string"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ],
        +                          "default": null
        +                        },
        +                        "id": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "parameters_referenced": {
        +                          "items": {
        +                            "type": "string"
        +                          },
        +                          "type": "array"
        +                        }
        +                      },
        +                      "required": [
        +                        "id",
        +                        "boq_row_index",
        +                        "derivation"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "boq_rows": {
        +                "items": {
        +                  "additionalProperties": false,
        +                  "description": "Schema § 1.3 — a single bill row in the requested standard's format.\n\n`description` is the non-verbatim functional description per spec § 13.9 /\n§ 15 invariant — NEVER reproduces a standard's verbatim clause text.\n`rate` / `amount` ship null because rates are commodity data the customer\nowns; the engine's job is the measurement, not the pricing.",
        +                  "properties": {
        +                    "amount": {
        +                      "anyOf": [
        +                        {
        +                          "type": "number"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "attribution": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "audit_id": {
        +                      "anyOf": [
        +                        {
        +                          "type": "string"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "description": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "quantity": {
        +                      "minimum": 0,
        +                      "type": "number"
        +                    },
        +                    "rate": {
        +                      "anyOf": [
        +                        {
        +                          "type": "number"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "unit": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "work_section": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    }
        +                  },
        +                  "required": [
        +                    "work_section",
        +                    "description",
        +                    "quantity",
        +                    "unit",
        +                    "attribution"
        +                  ],
        +                  "type": "object"
        +                },
        +                "type": "array"
        +              },
        +              "drawing": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": false,
        +                    "description": "Schema § 1.6a — inline server-rendered SVG preview of the geometry.\n\nThe MCP mirror of the web ``/compute`` response's ``drawing`` field\n(``api.schemas.compute.DrawingRef``): the same on-screen dimensioned\ndrawing both tiers see in the workspace, surfaced on the MCP compute\nresponse so a chat client can render it inline (60th-fire item C). This\nis the on-screen preview — present on BOTH tiers per the free/paid\nboundary; the downloadable CAD artefacts (DXF / dimensioned PDF) remain\nthe paid differentiator via the export tools.\n\nDefined here rather than importing ``DrawingRef`` because the web\n``schemas`` package imports back into this module (``schemas.render``),\nso reusing it would create an import cycle — the MCP wire contract keeps\nits own copy, the same pattern as ``BoQRow`` / ``DrawingReference``.",
        +                    "properties": {
        +                      "entity_count": {
        +                        "minimum": 0,
        +                        "type": "integer"
        +                      },
        +                      "svg_b64": {
        +                        "minLength": 1,
        +                        "type": "string"
        +                      },
        +                      "unit_of_drawing": {
        +                        "const": "m",
        +                        "default": "m",
        +                        "type": "string"
        +                      },
        +                      "viewbox_height": {
        +                        "exclusiveMinimum": 0,
        +                        "type": "number"
        +                      },
        +                      "viewbox_width": {
        +                        "exclusiveMinimum": 0,
        +                        "type": "number"
        +                      },
        +                      "viewbox_x": {
        +                        "type": "number"
        +                      },
        +                      "viewbox_y": {
        +                        "type": "number"
        +                      }
        +                    },
        +                    "required": [
        +                      "svg_b64",
        +                      "viewbox_x",
        +                      "viewbox_y",
        +                      "viewbox_width",
        +                      "viewbox_height",
        +                      "entity_count"
        +                    ],
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "drawings": {
        +                "anyOf": [
        +                  {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.6 — paid-tier drawing artefact pointer.\n\n`url` is an R2-signed URL; expiry is carried in `_meta.deliverables.expires_at`\non the envelope (not duplicated here). `layers` is DXF-only; PDF/SVG\ncallers omit it.",
        +                      "properties": {
        +                        "drawing_type": {
        +                          "enum": [
        +                            "section",
        +                            "plan",
        +                            "elevation",
        +                            "isometric",
        +                            "detail"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "format": {
        +                          "enum": [
        +                            "DXF",
        +                            "PDF",
        +                            "SVG"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "layers": {
        +                          "anyOf": [
        +                            {
        +                              "items": {
        +                                "type": "string"
        +                              },
        +                              "type": "array"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ],
        +                          "default": null
        +                        },
        +                        "scale": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "sheet_size": {
        +                          "enum": [
        +                            "A1",
        +                            "A2",
        +                            "A3",
        +                            "A4"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "url": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "drawing_type",
        +                        "format",
        +                        "url",
        +                        "sheet_size",
        +                        "scale"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "parameters_used": {
        +                "additionalProperties": false,
        +                "description": "Schema § 1.2 — the parameter snapshot the engine actually used.\n\nSplits user-supplied values from engine defaults so customers can see\nwhich numbers came from them and which the engine filled in. Every\ndefaulted parameter SHOULD have a corresponding entry in `assumptions`\n— the bridge layer enforces this when wrapping engine output.",
        +                "properties": {
        +                  "assumptions": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "engine_defaults": {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  "user_supplied": {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  }
        +                },
        +                "type": "object"
        +              },
        +              "standard": {
        +                "enum": [
        +                  "CESMM4",
        +                  "NRM2",
        +                  "SMM7",
        +                  "MMHW"
        +                ],
        +                "type": "string"
        +              },
        +              "text_summary": {
        +                "maxLength": 2000,
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "totals_summary": {
        +                "additionalProperties": false,
        +                "description": "Schema § 1.4 — totals_summary as a typed wrapper around the free-form dict.\n\nWire shape is a flat object (`{\"concrete_m3\": {...}, \"rebar_t\": {...}}`).\nWe model it as `RootModel`-equivalent via `model_config(extra=\"allow\")`\n+ a single `__root__`-style `entries` dict. Pydantic v2 recommends\n`RootModel` for free-form roots; using a wrapper class keeps the import\nsurface uniform with the rest of this module.",
        +                "properties": {
        +                  "entries": {
        +                    "additionalProperties": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.4 — single material/work-class total entry.",
        +                      "properties": {
        +                        "quantity": {
        +                          "minimum": 0,
        +                          "type": "number"
        +                        },
        +                        "unit": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "quantity",
        +                        "unit"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "object"
        +                  }
        +                },
        +                "type": "object"
        +              },
        +              "warnings": {
        +                "items": {
        +                  "additionalProperties": false,
        +                  "description": "Schema § 1.8 — a non-fatal geometry advisory (56th-fire T2).\n\nThe wire projection of the engine's `core.GeometryWarning`. Advisory only:\na warning NEVER changes a measured quantity — it flags geometry that is\nvalid but likely a mistake (e.g. a stale dependent-height default). Present\non BOTH tiers — a correctness/safety signal, not a paid feature.",
        +                  "properties": {
        +                    "affected_params": {
        +                      "items": {
        +                        "type": "string"
        +                      },
        +                      "type": "array"
        +                    },
        +                    "code": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "detail": {
        +                      "additionalProperties": {
        +                        "type": "number"
        +                      },
        +                      "type": "object"
        +                    },
        +                    "message": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "severity": {
        +                      "enum": [
        +                        "info",
        +                        "advisory",
        +                        "caution"
        +                      ],
        +                      "type": "string"
        +                    }
        +                  },
        +                  "required": [
        +                    "code",
        +                    "severity",
        +                    "message"
        +                  ],
        +                  "type": "object"
        +                },
        +                "type": "array"
        +              }
        +            },
        +            "required": [
        +              "assembly_slug",
        +              "standard",
        +              "parameters_used",
        +              "boq_rows",
        +              "totals_summary",
        +              "text_summary"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      },
        +      "error": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        +            "properties": {
        +              "code": {
        +                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        +                "enum": [
        +                  "RATE_LIMIT_EXCEEDED",
        +                  "TIER_INSUFFICIENT",
        +                  "INVALID_INPUT",
        +                  "SCHEMA_VERSION_MISMATCH",
        +                  "SCHEMA_INVARIANT_VIOLATION",
        +                  "UPSTREAM_TIMEOUT",
        +                  "BACKEND_FAILURE",
        +                  "IP_BLOCKED",
        +                  "RESOURCE_NOT_FOUND",
        +                  "RENDER_FAILURE",
        +                  "OCR_LOW_CONFIDENCE",
        +                  "MANUAL_REVIEW_REQUIRED",
        +                  "ACCEPTANCE_REQUIRED",
        +                  "INVALID_TOKEN"
        +                ],
        +                "type": "string"
        +              },
        +              "details": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "message": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "recoverable": {
        +                "type": "boolean"
        +              },
        +              "retry_after_seconds": {
        +                "anyOf": [
        +                  {
        +                    "minimum": 0,
        +                    "type": "integer"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              }
        +            },
        +            "required": [
        +              "code",
        +              "message",
        +              "recoverable"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      }
        +    },
        +    "required": [
        +      "_meta"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "_meta": {
        +        "additionalProperties": false,
        +        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        +        "properties": {
        +          "deliverables": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        +                "properties": {
        +                  "docx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "dxf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "expires_at": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  },
        +                  "pdf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "xlsx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "expires_at"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "document_id": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "issued_at": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "output_mode": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Surfaces what a trimmed ``output_mode`` withheld from ``data``.\n\nA trimmed mode (``summary`` / ``boq`` / ``boq_with_backup``) withholds\nalready-computed fields to keep the chat payload small. The withheld value\nreads to a client agent as \"capability missing\" (the box-culvert \"geometry\nbuilder isn't firing\" scare) rather than \"pared for size\": ``drawing`` and\n``audit_trail`` appear as ``null``, ``boq_rows`` as an empty list ``[]``\n(its type forbids ``null``) — both indistinguishable from a genuine absent\nresult. This names the withheld fields and the exact mode that brings each\nback, so the value is unambiguous. Absent on the default ``full_json`` mode\n— nothing is withheld, nothing to point at.",
        +                "properties": {
        +                  "mode": {
        +                    "enum": [
        +                      "summary",
        +                      "boq",
        +                      "boq_with_backup"
        +                    ],
        +                    "type": "string"
        +                  },
        +                  "omitted_fields": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "minItems": 1,
        +                    "type": "array"
        +                  },
        +                  "retrieve_with": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "mode",
        +                  "omitted_fields",
        +                  "retrieve_with"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "rate_limit_remaining": {
        +            "anyOf": [
        +              {
        +                "minimum": 0,
        +                "type": "integer"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "request_id": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "schema_version": {
        +            "const": "1.0.0",
        +            "default": "1.0.0",
        +            "type": "string"
        +          },
        +          "scope_boundary": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        +                "properties": {
        +                  "not_in_scope": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "produced": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "recommended_companions": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "type": "string"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "produced",
        +                  "not_in_scope"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tier": {
        +            "enum": [
        +              "free",
        +              "paid"
        +            ],
        +            "type": "string"
        +          },
        +          "tier_upgrade": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        +                "properties": {
        +                  "available_tiers": {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        +                      "properties": {
        +                        "billing": {
        +                          "enum": [
        +                            "one_off",
        +                            "monthly",
        +                            "annual"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "currency": {
        +                          "enum": [
        +                            "GBP",
        +                            "SGD",
        +                            "EUR",
        +                            "USD",
        +                            "CAD",
        +                            "AUD",
        +                            "NZD",
        +                            "MYR"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "display_name": {
        +                          "type": "string"
        +                        },
        +                        "price_local": {
        +                          "type": "number"
        +                        },
        +                        "tier_slug": {
        +                          "enum": [
        +                            "7_day_pass",
        +                            "solo",
        +                            "studio",
        +                            "practice"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "unlock_summary": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "tier_slug",
        +                        "display_name",
        +                        "price_local",
        +                        "currency",
        +                        "billing",
        +                        "unlock_summary"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "current_tier": {
        +                    "const": "free",
        +                    "default": "free",
        +                    "type": "string"
        +                  },
        +                  "pass_credit": {
        +                    "anyOf": [
        +                      {
        +                        "additionalProperties": false,
        +                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        +                        "properties": {
        +                          "amount_local": {
        +                            "type": "number"
        +                          },
        +                          "applies_to": {
        +                            "const": "solo_first_month",
        +                            "default": "solo_first_month",
        +                            "type": "string"
        +                          },
        +                          "currency": {
        +                            "type": "string"
        +                          },
        +                          "redeemable_until": {
        +                            "type": "string"
        +                          }
        +                        },
        +                        "required": [
        +                          "amount_local",
        +                          "currency",
        +                          "redeemable_until"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "pricing_url": {
        +                    "default": "https://civilquants.com/pricing",
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "available_tiers"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tos_url": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "upgrade_hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "warranty_disclaimer": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          }
        +        },
        +        "required": [
        +          "request_id",
        +          "issued_at",
        +          "tier"
        +        ],
        +        "type": "object"
        +      },
        +      "data": {
        +        "default": null,
        +        "title": "Data"
        +      },
        +      "error": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        +            "properties": {
        +              "code": {
        +                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        +                "enum": [
        +                  "RATE_LIMIT_EXCEEDED",
        +                  "TIER_INSUFFICIENT",
        +                  "INVALID_INPUT",
        +                  "SCHEMA_VERSION_MISMATCH",
        +                  "SCHEMA_INVARIANT_VIOLATION",
        +                  "UPSTREAM_TIMEOUT",
        +                  "BACKEND_FAILURE",
        +                  "IP_BLOCKED",
        +                  "RESOURCE_NOT_FOUND",
        +                  "RENDER_FAILURE",
        +                  "OCR_LOW_CONFIDENCE",
        +                  "MANUAL_REVIEW_REQUIRED",
        +                  "ACCEPTANCE_REQUIRED",
        +                  "INVALID_TOKEN"
        +                ],
        +                "type": "string"
        +              },
        +              "details": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "message": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "recoverable": {
        +                "type": "boolean"
        +              },
        +              "retry_after_seconds": {
        +                "anyOf": [
        +                  {
        +                    "minimum": 0,
        +                    "type": "integer"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              }
        +            },
        +            "required": [
        +              "code",
        +              "message",
        +              "recoverable"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      }
        +    },
        +    "required": [
        +      "_meta"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedcompute_embankment_cross_section1 field changed
      • changedOutput schema / properties / result / anyOf
        Previous value: -[
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "_meta": {
        -        "additionalProperties": false,
        -        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        -        "properties": {
        -          "deliverables": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        -                "properties": {
        -                  "docx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "dxf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "expires_at": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  },
        -                  "pdf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "xlsx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "expires_at"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "document_id": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "issued_at": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "rate_limit_remaining": {
        -            "anyOf": [
        -              {
        -                "minimum": 0,
        -                "type": "integer"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "request_id": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "schema_version": {
        -            "const": "1.0.0",
        -            "default": "1.0.0",
        -            "type": "string"
        -          },
        -          "scope_boundary": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        -                "properties": {
        -                  "not_in_scope": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "produced": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "recommended_companions": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "type": "string"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "produced",
        -                  "not_in_scope"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tier": {
        -            "enum": [
        -              "free",
        -              "paid"
        -            ],
        -            "type": "string"
        -          },
        -          "tier_upgrade": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        -                "properties": {
        -                  "available_tiers": {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        -                      "properties": {
        -                        "billing": {
        -                          "enum": [
        -                            "one_off",
        -                            "monthly",
        -                            "annual"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "currency": {
        -                          "enum": [
        -                            "GBP",
        -                            "SGD",
        -                            "EUR",
        -                            "USD",
        -                            "CAD",
        -                            "AUD",
        -                            "NZD",
        -                            "MYR"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "display_name": {
        -                          "type": "string"
        -                        },
        -                        "price_local": {
        -                          "type": "number"
        -                        },
        -                        "tier_slug": {
        -                          "enum": [
        -                            "7_day_pass",
        -                            "solo",
        -                            "studio",
        -                            "practice"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "unlock_summary": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "tier_slug",
        -                        "display_name",
        -                        "price_local",
        -                        "currency",
        -                        "billing",
        -                        "unlock_summary"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "current_tier": {
        -                    "const": "free",
        -                    "default": "free",
        -                    "type": "string"
        -                  },
        -                  "pass_credit": {
        -                    "anyOf": [
        -                      {
        -                        "additionalProperties": false,
        -                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        -                        "properties": {
        -                          "amount_local": {
        -                            "type": "number"
        -                          },
        -                          "applies_to": {
        -                            "const": "solo_first_month",
        -                            "default": "solo_first_month",
        -                            "type": "string"
        -                          },
        -                          "currency": {
        -                            "type": "string"
        -                          },
        -                          "redeemable_until": {
        -                            "type": "string"
        -                          }
        -                        },
        -                        "required": [
        -                          "amount_local",
        -                          "currency",
        -                          "redeemable_until"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "pricing_url": {
        -                    "default": "https://civilquants.com/pricing",
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "available_tiers"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tos_url": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "upgrade_hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "warranty_disclaimer": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          }
        -        },
        -        "required": [
        -          "request_id",
        -          "issued_at",
        -          "tier"
        -        ],
        -        "type": "object"
        -      },
        -      "data": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Schema § 1.1 — the typed payload returned inside `MCPResponse[ComputeResult]`.\n\nFree-tier responses omit `drawings` (the downloadable CAD artefact\npointers — the paid differentiator); the bridge enforces this. The\n`audit_trail` and the inline `drawing` preview are present on BOTH tiers\n(V1 ALIGN / 60th-fire D + C). `text_summary` is bounded to 2000 chars —\nkeeps the LLM-facing summary token-cheap and forces longer narrative into\nBoQ row descriptions where it belongs. `warnings` is the non-fatal\ngeometry advisory list (both tiers).",
        -            "properties": {
        -              "assembly_slug": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "audit_trail": {
        -                "anyOf": [
        -                  {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.7 — paid-tier audit-trail entry.\n\nOne entry per BoQ row; `boq_row_index` ties to the row position in\n`ComputeResult.boq_rows`. `derivation` is the human-readable formula\nwalk-through; `formula` is the optional formal expression.",
        -                      "properties": {
        -                        "boq_row_index": {
        -                          "minimum": 0,
        -                          "type": "integer"
        -                        },
        -                        "derivation": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "formula": {
        -                          "anyOf": [
        -                            {
        -                              "type": "string"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ],
        -                          "default": null
        -                        },
        -                        "id": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "parameters_referenced": {
        -                          "items": {
        -                            "type": "string"
        -                          },
        -                          "type": "array"
        -                        }
        -                      },
        -                      "required": [
        -                        "id",
        -                        "boq_row_index",
        -                        "derivation"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "boq_rows": {
        -                "items": {
        -                  "additionalProperties": false,
        -                  "description": "Schema § 1.3 — a single bill row in the requested standard's format.\n\n`description` is the non-verbatim functional description per spec § 13.9 /\n§ 15 invariant — NEVER reproduces a standard's verbatim clause text.\n`rate` / `amount` ship null because rates are commodity data the customer\nowns; the engine's job is the measurement, not the pricing.",
        -                  "properties": {
        -                    "amount": {
        -                      "anyOf": [
        -                        {
        -                          "type": "number"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "attribution": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "audit_id": {
        -                      "anyOf": [
        -                        {
        -                          "type": "string"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "description": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "quantity": {
        -                      "minimum": 0,
        -                      "type": "number"
        -                    },
        -                    "rate": {
        -                      "anyOf": [
        -                        {
        -                          "type": "number"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "unit": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "work_section": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    }
        -                  },
        -                  "required": [
        -                    "work_section",
        -                    "description",
        -                    "quantity",
        -                    "unit",
        -                    "attribution"
        -                  ],
        -                  "type": "object"
        -                },
        -                "type": "array"
        -              },
        -              "drawing": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": false,
        -                    "description": "Schema § 1.6a — inline server-rendered SVG preview of the geometry.\n\nThe MCP mirror of the web ``/compute`` response's ``drawing`` field\n(``api.schemas.compute.DrawingRef``): the same on-screen dimensioned\ndrawing both tiers see in the workspace, surfaced on the MCP compute\nresponse so a chat client can render it inline (60th-fire item C). This\nis the on-screen preview — present on BOTH tiers per the free/paid\nboundary; the downloadable CAD artefacts (DXF / dimensioned PDF) remain\nthe paid differentiator via the export tools.\n\nDefined here rather than importing ``DrawingRef`` because the web\n``schemas`` package imports back into this module (``schemas.render``),\nso reusing it would create an import cycle — the MCP wire contract keeps\nits own copy, the same pattern as ``BoQRow`` / ``DrawingReference``.",
        -                    "properties": {
        -                      "entity_count": {
        -                        "minimum": 0,
        -                        "type": "integer"
        -                      },
        -                      "svg_b64": {
        -                        "minLength": 1,
        -                        "type": "string"
        -                      },
        -                      "unit_of_drawing": {
        -                        "const": "m",
        -                        "default": "m",
        -                        "type": "string"
        -                      },
        -                      "viewbox_height": {
        -                        "exclusiveMinimum": 0,
        -                        "type": "number"
        -                      },
        -                      "viewbox_width": {
        -                        "exclusiveMinimum": 0,
        -                        "type": "number"
        -                      },
        -                      "viewbox_x": {
        -                        "type": "number"
        -                      },
        -                      "viewbox_y": {
        -                        "type": "number"
        -                      }
        -                    },
        -                    "required": [
        -                      "svg_b64",
        -                      "viewbox_x",
        -                      "viewbox_y",
        -                      "viewbox_width",
        -                      "viewbox_height",
        -                      "entity_count"
        -                    ],
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "drawings": {
        -                "anyOf": [
        -                  {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.6 — paid-tier drawing artefact pointer.\n\n`url` is an R2-signed URL; expiry is carried in `_meta.deliverables.expires_at`\non the envelope (not duplicated here). `layers` is DXF-only; PDF/SVG\ncallers omit it.",
        -                      "properties": {
        -                        "drawing_type": {
        -                          "enum": [
        -                            "section",
        -                            "plan",
        -                            "elevation",
        -                            "isometric",
        -                            "detail"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "format": {
        -                          "enum": [
        -                            "DXF",
        -                            "PDF",
        -                            "SVG"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "layers": {
        -                          "anyOf": [
        -                            {
        -                              "items": {
        -                                "type": "string"
        -                              },
        -                              "type": "array"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ],
        -                          "default": null
        -                        },
        -                        "scale": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "sheet_size": {
        -                          "enum": [
        -                            "A1",
        -                            "A2",
        -                            "A3",
        -                            "A4"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "url": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "drawing_type",
        -                        "format",
        -                        "url",
        -                        "sheet_size",
        -                        "scale"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "parameters_used": {
        -                "additionalProperties": false,
        -                "description": "Schema § 1.2 — the parameter snapshot the engine actually used.\n\nSplits user-supplied values from engine defaults so customers can see\nwhich numbers came from them and which the engine filled in. Every\ndefaulted parameter SHOULD have a corresponding entry in `assumptions`\n— the bridge layer enforces this when wrapping engine output.",
        -                "properties": {
        -                  "assumptions": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "engine_defaults": {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  "user_supplied": {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  }
        -                },
        -                "type": "object"
        -              },
        -              "standard": {
        -                "enum": [
        -                  "CESMM4",
        -                  "NRM2",
        -                  "SMM7",
        -                  "MMHW"
        -                ],
        -                "type": "string"
        -              },
        -              "text_summary": {
        -                "maxLength": 2000,
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "totals_summary": {
        -                "additionalProperties": false,
        -                "description": "Schema § 1.4 — totals_summary as a typed wrapper around the free-form dict.\n\nWire shape is a flat object (`{\"concrete_m3\": {...}, \"rebar_t\": {...}}`).\nWe model it as `RootModel`-equivalent via `model_config(extra=\"allow\")`\n+ a single `__root__`-style `entries` dict. Pydantic v2 recommends\n`RootModel` for free-form roots; using a wrapper class keeps the import\nsurface uniform with the rest of this module.",
        -                "properties": {
        -                  "entries": {
        -                    "additionalProperties": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.4 — single material/work-class total entry.",
        -                      "properties": {
        -                        "quantity": {
        -                          "minimum": 0,
        -                          "type": "number"
        -                        },
        -                        "unit": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "quantity",
        -                        "unit"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "object"
        -                  }
        -                },
        -                "type": "object"
        -              },
        -              "warnings": {
        -                "items": {
        -                  "additionalProperties": false,
        -                  "description": "Schema § 1.8 — a non-fatal geometry advisory (56th-fire T2).\n\nThe wire projection of the engine's `core.GeometryWarning`. Advisory only:\na warning NEVER changes a measured quantity — it flags geometry that is\nvalid but likely a mistake (e.g. a stale dependent-height default). Present\non BOTH tiers — a correctness/safety signal, not a paid feature.",
        -                  "properties": {
        -                    "affected_params": {
        -                      "items": {
        -                        "type": "string"
        -                      },
        -                      "type": "array"
        -                    },
        -                    "code": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "detail": {
        -                      "additionalProperties": {
        -                        "type": "number"
        -                      },
        -                      "type": "object"
        -                    },
        -                    "message": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "severity": {
        -                      "enum": [
        -                        "info",
        -                        "advisory",
        -                        "caution"
        -                      ],
        -                      "type": "string"
        -                    }
        -                  },
        -                  "required": [
        -                    "code",
        -                    "severity",
        -                    "message"
        -                  ],
        -                  "type": "object"
        -                },
        -                "type": "array"
        -              }
        -            },
        -            "required": [
        -              "assembly_slug",
        -              "standard",
        -              "parameters_used",
        -              "boq_rows",
        -              "totals_summary",
        -              "text_summary"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      },
        -      "error": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        -            "properties": {
        -              "code": {
        -                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        -                "enum": [
        -                  "RATE_LIMIT_EXCEEDED",
        -                  "TIER_INSUFFICIENT",
        -                  "INVALID_INPUT",
        -                  "SCHEMA_VERSION_MISMATCH",
        -                  "SCHEMA_INVARIANT_VIOLATION",
        -                  "UPSTREAM_TIMEOUT",
        -                  "BACKEND_FAILURE",
        -                  "IP_BLOCKED",
        -                  "RESOURCE_NOT_FOUND",
        -                  "RENDER_FAILURE",
        -                  "OCR_LOW_CONFIDENCE",
        -                  "MANUAL_REVIEW_REQUIRED",
        -                  "ACCEPTANCE_REQUIRED",
        -                  "INVALID_TOKEN"
        -                ],
        -                "type": "string"
        -              },
        -              "details": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "message": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "recoverable": {
        -                "type": "boolean"
        -              },
        -              "retry_after_seconds": {
        -                "anyOf": [
        -                  {
        -                    "minimum": 0,
        -                    "type": "integer"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              }
        -            },
        -            "required": [
        -              "code",
        -              "message",
        -              "recoverable"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      }
        -    },
        -    "required": [
        -      "_meta"
        -    ],
        -    "type": "object"
        -  },
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "_meta": {
        -        "additionalProperties": false,
        -        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        -        "properties": {
        -          "deliverables": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        -                "properties": {
        -                  "docx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "dxf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "expires_at": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  },
        -                  "pdf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "xlsx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "expires_at"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "document_id": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "issued_at": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "rate_limit_remaining": {
        -            "anyOf": [
        -              {
        -                "minimum": 0,
        -                "type": "integer"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "request_id": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "schema_version": {
        -            "const": "1.0.0",
        -            "default": "1.0.0",
        -            "type": "string"
        -          },
        -          "scope_boundary": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        -                "properties": {
        -                  "not_in_scope": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "produced": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "recommended_companions": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "type": "string"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "produced",
        -                  "not_in_scope"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tier": {
        -            "enum": [
        -              "free",
        -              "paid"
        -            ],
        -            "type": "string"
        -          },
        -          "tier_upgrade": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        -                "properties": {
        -                  "available_tiers": {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        -                      "properties": {
        -                        "billing": {
        -                          "enum": [
        -                            "one_off",
        -                            "monthly",
        -                            "annual"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "currency": {
        -                          "enum": [
        -                            "GBP",
        -                            "SGD",
        -                            "EUR",
        -                            "USD",
        -                            "CAD",
        -                            "AUD",
        -                            "NZD",
        -                            "MYR"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "display_name": {
        -                          "type": "string"
        -                        },
        -                        "price_local": {
        -                          "type": "number"
        -                        },
        -                        "tier_slug": {
        -                          "enum": [
        -                            "7_day_pass",
        -                            "solo",
        -                            "studio",
        -                            "practice"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "unlock_summary": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "tier_slug",
        -                        "display_name",
        -                        "price_local",
        -                        "currency",
        -                        "billing",
        -                        "unlock_summary"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "current_tier": {
        -                    "const": "free",
        -                    "default": "free",
        -                    "type": "string"
        -                  },
        -                  "pass_credit": {
        -                    "anyOf": [
        -                      {
        -                        "additionalProperties": false,
        -                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        -                        "properties": {
        -                          "amount_local": {
        -                            "type": "number"
        -                          },
        -                          "applies_to": {
        -                            "const": "solo_first_month",
        -                            "default": "solo_first_month",
        -                            "type": "string"
        -                          },
        -                          "currency": {
        -                            "type": "string"
        -                          },
        -                          "redeemable_until": {
        -                            "type": "string"
        -                          }
        -                        },
        -                        "required": [
        -                          "amount_local",
        -                          "currency",
        -                          "redeemable_until"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "pricing_url": {
        -                    "default": "https://civilquants.com/pricing",
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "available_tiers"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tos_url": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "upgrade_hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "warranty_disclaimer": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          }
        -        },
        -        "required": [
        -          "request_id",
        -          "issued_at",
        -          "tier"
        -        ],
        -        "type": "object"
        -      },
        -      "data": {
        -        "default": null,
        -        "title": "Data"
        -      },
        -      "error": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        -            "properties": {
        -              "code": {
        -                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        -                "enum": [
        -                  "RATE_LIMIT_EXCEEDED",
        -                  "TIER_INSUFFICIENT",
        -                  "INVALID_INPUT",
        -                  "SCHEMA_VERSION_MISMATCH",
        -                  "SCHEMA_INVARIANT_VIOLATION",
        -                  "UPSTREAM_TIMEOUT",
        -                  "BACKEND_FAILURE",
        -                  "IP_BLOCKED",
        -                  "RESOURCE_NOT_FOUND",
        -                  "RENDER_FAILURE",
        -                  "OCR_LOW_CONFIDENCE",
        -                  "MANUAL_REVIEW_REQUIRED",
        -                  "ACCEPTANCE_REQUIRED",
        -                  "INVALID_TOKEN"
        -                ],
        -                "type": "string"
        -              },
        -              "details": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "message": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "recoverable": {
        -                "type": "boolean"
        -              },
        -              "retry_after_seconds": {
        -                "anyOf": [
        -                  {
        -                    "minimum": 0,
        -                    "type": "integer"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              }
        -            },
        -            "required": [
        -              "code",
        -              "message",
        -              "recoverable"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      }
        -    },
        -    "required": [
        -      "_meta"
        -    ],
        -    "type": "object"
        -  }
        -]New value: +[
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "_meta": {
        +        "additionalProperties": false,
        +        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        +        "properties": {
        +          "deliverables": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        +                "properties": {
        +                  "docx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "dxf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "expires_at": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  },
        +                  "pdf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "xlsx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "expires_at"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "document_id": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "issued_at": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "output_mode": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Surfaces what a trimmed ``output_mode`` withheld from ``data``.\n\nA trimmed mode (``summary`` / ``boq`` / ``boq_with_backup``) withholds\nalready-computed fields to keep the chat payload small. The withheld value\nreads to a client agent as \"capability missing\" (the box-culvert \"geometry\nbuilder isn't firing\" scare) rather than \"pared for size\": ``drawing`` and\n``audit_trail`` appear as ``null``, ``boq_rows`` as an empty list ``[]``\n(its type forbids ``null``) — both indistinguishable from a genuine absent\nresult. This names the withheld fields and the exact mode that brings each\nback, so the value is unambiguous. Absent on the default ``full_json`` mode\n— nothing is withheld, nothing to point at.",
        +                "properties": {
        +                  "mode": {
        +                    "enum": [
        +                      "summary",
        +                      "boq",
        +                      "boq_with_backup"
        +                    ],
        +                    "type": "string"
        +                  },
        +                  "omitted_fields": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "minItems": 1,
        +                    "type": "array"
        +                  },
        +                  "retrieve_with": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "mode",
        +                  "omitted_fields",
        +                  "retrieve_with"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "rate_limit_remaining": {
        +            "anyOf": [
        +              {
        +                "minimum": 0,
        +                "type": "integer"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "request_id": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "schema_version": {
        +            "const": "1.0.0",
        +            "default": "1.0.0",
        +            "type": "string"
        +          },
        +          "scope_boundary": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        +                "properties": {
        +                  "not_in_scope": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "produced": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "recommended_companions": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "type": "string"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "produced",
        +                  "not_in_scope"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tier": {
        +            "enum": [
        +              "free",
        +              "paid"
        +            ],
        +            "type": "string"
        +          },
        +          "tier_upgrade": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        +                "properties": {
        +                  "available_tiers": {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        +                      "properties": {
        +                        "billing": {
        +                          "enum": [
        +                            "one_off",
        +                            "monthly",
        +                            "annual"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "currency": {
        +                          "enum": [
        +                            "GBP",
        +                            "SGD",
        +                            "EUR",
        +                            "USD",
        +                            "CAD",
        +                            "AUD",
        +                            "NZD",
        +                            "MYR"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "display_name": {
        +                          "type": "string"
        +                        },
        +                        "price_local": {
        +                          "type": "number"
        +                        },
        +                        "tier_slug": {
        +                          "enum": [
        +                            "7_day_pass",
        +                            "solo",
        +                            "studio",
        +                            "practice"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "unlock_summary": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "tier_slug",
        +                        "display_name",
        +                        "price_local",
        +                        "currency",
        +                        "billing",
        +                        "unlock_summary"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "current_tier": {
        +                    "const": "free",
        +                    "default": "free",
        +                    "type": "string"
        +                  },
        +                  "pass_credit": {
        +                    "anyOf": [
        +                      {
        +                        "additionalProperties": false,
        +                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        +                        "properties": {
        +                          "amount_local": {
        +                            "type": "number"
        +                          },
        +                          "applies_to": {
        +                            "const": "solo_first_month",
        +                            "default": "solo_first_month",
        +                            "type": "string"
        +                          },
        +                          "currency": {
        +                            "type": "string"
        +                          },
        +                          "redeemable_until": {
        +                            "type": "string"
        +                          }
        +                        },
        +                        "required": [
        +                          "amount_local",
        +                          "currency",
        +                          "redeemable_until"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "pricing_url": {
        +                    "default": "https://civilquants.com/pricing",
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "available_tiers"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tos_url": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "upgrade_hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "warranty_disclaimer": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          }
        +        },
        +        "required": [
        +          "request_id",
        +          "issued_at",
        +          "tier"
        +        ],
        +        "type": "object"
        +      },
        +      "data": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Schema § 1.1 — the typed payload returned inside `MCPResponse[ComputeResult]`.\n\nFree-tier responses omit `drawings` (the downloadable CAD artefact\npointers — the paid differentiator); the bridge enforces this. The\n`audit_trail` and the inline `drawing` preview are present on BOTH tiers\n(V1 ALIGN / 60th-fire D + C). `text_summary` is bounded to 2000 chars —\nkeeps the LLM-facing summary token-cheap and forces longer narrative into\nBoQ row descriptions where it belongs. `warnings` is the non-fatal\ngeometry advisory list (both tiers).",
        +            "properties": {
        +              "assembly_slug": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "audit_trail": {
        +                "anyOf": [
        +                  {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.7 — paid-tier audit-trail entry.\n\nOne entry per BoQ row; `boq_row_index` ties to the row position in\n`ComputeResult.boq_rows`. `derivation` is the human-readable formula\nwalk-through; `formula` is the optional formal expression.",
        +                      "properties": {
        +                        "boq_row_index": {
        +                          "minimum": 0,
        +                          "type": "integer"
        +                        },
        +                        "derivation": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "formula": {
        +                          "anyOf": [
        +                            {
        +                              "type": "string"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ],
        +                          "default": null
        +                        },
        +                        "id": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "parameters_referenced": {
        +                          "items": {
        +                            "type": "string"
        +                          },
        +                          "type": "array"
        +                        }
        +                      },
        +                      "required": [
        +                        "id",
        +                        "boq_row_index",
        +                        "derivation"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "boq_rows": {
        +                "items": {
        +                  "additionalProperties": false,
        +                  "description": "Schema § 1.3 — a single bill row in the requested standard's format.\n\n`description` is the non-verbatim functional description per spec § 13.9 /\n§ 15 invariant — NEVER reproduces a standard's verbatim clause text.\n`rate` / `amount` ship null because rates are commodity data the customer\nowns; the engine's job is the measurement, not the pricing.",
        +                  "properties": {
        +                    "amount": {
        +                      "anyOf": [
        +                        {
        +                          "type": "number"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "attribution": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "audit_id": {
        +                      "anyOf": [
        +                        {
        +                          "type": "string"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "description": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "quantity": {
        +                      "minimum": 0,
        +                      "type": "number"
        +                    },
        +                    "rate": {
        +                      "anyOf": [
        +                        {
        +                          "type": "number"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "unit": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "work_section": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    }
        +                  },
        +                  "required": [
        +                    "work_section",
        +                    "description",
        +                    "quantity",
        +                    "unit",
        +                    "attribution"
        +                  ],
        +                  "type": "object"
        +                },
        +                "type": "array"
        +              },
        +              "drawing": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": false,
        +                    "description": "Schema § 1.6a — inline server-rendered SVG preview of the geometry.\n\nThe MCP mirror of the web ``/compute`` response's ``drawing`` field\n(``api.schemas.compute.DrawingRef``): the same on-screen dimensioned\ndrawing both tiers see in the workspace, surfaced on the MCP compute\nresponse so a chat client can render it inline (60th-fire item C). This\nis the on-screen preview — present on BOTH tiers per the free/paid\nboundary; the downloadable CAD artefacts (DXF / dimensioned PDF) remain\nthe paid differentiator via the export tools.\n\nDefined here rather than importing ``DrawingRef`` because the web\n``schemas`` package imports back into this module (``schemas.render``),\nso reusing it would create an import cycle — the MCP wire contract keeps\nits own copy, the same pattern as ``BoQRow`` / ``DrawingReference``.",
        +                    "properties": {
        +                      "entity_count": {
        +                        "minimum": 0,
        +                        "type": "integer"
        +                      },
        +                      "svg_b64": {
        +                        "minLength": 1,
        +                        "type": "string"
        +                      },
        +                      "unit_of_drawing": {
        +                        "const": "m",
        +                        "default": "m",
        +                        "type": "string"
        +                      },
        +                      "viewbox_height": {
        +                        "exclusiveMinimum": 0,
        +                        "type": "number"
        +                      },
        +                      "viewbox_width": {
        +                        "exclusiveMinimum": 0,
        +                        "type": "number"
        +                      },
        +                      "viewbox_x": {
        +                        "type": "number"
        +                      },
        +                      "viewbox_y": {
        +                        "type": "number"
        +                      }
        +                    },
        +                    "required": [
        +                      "svg_b64",
        +                      "viewbox_x",
        +                      "viewbox_y",
        +                      "viewbox_width",
        +                      "viewbox_height",
        +                      "entity_count"
        +                    ],
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "drawings": {
        +                "anyOf": [
        +                  {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.6 — paid-tier drawing artefact pointer.\n\n`url` is an R2-signed URL; expiry is carried in `_meta.deliverables.expires_at`\non the envelope (not duplicated here). `layers` is DXF-only; PDF/SVG\ncallers omit it.",
        +                      "properties": {
        +                        "drawing_type": {
        +                          "enum": [
        +                            "section",
        +                            "plan",
        +                            "elevation",
        +                            "isometric",
        +                            "detail"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "format": {
        +                          "enum": [
        +                            "DXF",
        +                            "PDF",
        +                            "SVG"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "layers": {
        +                          "anyOf": [
        +                            {
        +                              "items": {
        +                                "type": "string"
        +                              },
        +                              "type": "array"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ],
        +                          "default": null
        +                        },
        +                        "scale": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "sheet_size": {
        +                          "enum": [
        +                            "A1",
        +                            "A2",
        +                            "A3",
        +                            "A4"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "url": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "drawing_type",
        +                        "format",
        +                        "url",
        +                        "sheet_size",
        +                        "scale"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "parameters_used": {
        +                "additionalProperties": false,
        +                "description": "Schema § 1.2 — the parameter snapshot the engine actually used.\n\nSplits user-supplied values from engine defaults so customers can see\nwhich numbers came from them and which the engine filled in. Every\ndefaulted parameter SHOULD have a corresponding entry in `assumptions`\n— the bridge layer enforces this when wrapping engine output.",
        +                "properties": {
        +                  "assumptions": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "engine_defaults": {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  "user_supplied": {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  }
        +                },
        +                "type": "object"
        +              },
        +              "standard": {
        +                "enum": [
        +                  "CESMM4",
        +                  "NRM2",
        +                  "SMM7",
        +                  "MMHW"
        +                ],
        +                "type": "string"
        +              },
        +              "text_summary": {
        +                "maxLength": 2000,
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "totals_summary": {
        +                "additionalProperties": false,
        +                "description": "Schema § 1.4 — totals_summary as a typed wrapper around the free-form dict.\n\nWire shape is a flat object (`{\"concrete_m3\": {...}, \"rebar_t\": {...}}`).\nWe model it as `RootModel`-equivalent via `model_config(extra=\"allow\")`\n+ a single `__root__`-style `entries` dict. Pydantic v2 recommends\n`RootModel` for free-form roots; using a wrapper class keeps the import\nsurface uniform with the rest of this module.",
        +                "properties": {
        +                  "entries": {
        +                    "additionalProperties": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.4 — single material/work-class total entry.",
        +                      "properties": {
        +                        "quantity": {
        +                          "minimum": 0,
        +                          "type": "number"
        +                        },
        +                        "unit": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "quantity",
        +                        "unit"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "object"
        +                  }
        +                },
        +                "type": "object"
        +              },
        +              "warnings": {
        +                "items": {
        +                  "additionalProperties": false,
        +                  "description": "Schema § 1.8 — a non-fatal geometry advisory (56th-fire T2).\n\nThe wire projection of the engine's `core.GeometryWarning`. Advisory only:\na warning NEVER changes a measured quantity — it flags geometry that is\nvalid but likely a mistake (e.g. a stale dependent-height default). Present\non BOTH tiers — a correctness/safety signal, not a paid feature.",
        +                  "properties": {
        +                    "affected_params": {
        +                      "items": {
        +                        "type": "string"
        +                      },
        +                      "type": "array"
        +                    },
        +                    "code": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "detail": {
        +                      "additionalProperties": {
        +                        "type": "number"
        +                      },
        +                      "type": "object"
        +                    },
        +                    "message": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "severity": {
        +                      "enum": [
        +                        "info",
        +                        "advisory",
        +                        "caution"
        +                      ],
        +                      "type": "string"
        +                    }
        +                  },
        +                  "required": [
        +                    "code",
        +                    "severity",
        +                    "message"
        +                  ],
        +                  "type": "object"
        +                },
        +                "type": "array"
        +              }
        +            },
        +            "required": [
        +              "assembly_slug",
        +              "standard",
        +              "parameters_used",
        +              "boq_rows",
        +              "totals_summary",
        +              "text_summary"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      },
        +      "error": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        +            "properties": {
        +              "code": {
        +                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        +                "enum": [
        +                  "RATE_LIMIT_EXCEEDED",
        +                  "TIER_INSUFFICIENT",
        +                  "INVALID_INPUT",
        +                  "SCHEMA_VERSION_MISMATCH",
        +                  "SCHEMA_INVARIANT_VIOLATION",
        +                  "UPSTREAM_TIMEOUT",
        +                  "BACKEND_FAILURE",
        +                  "IP_BLOCKED",
        +                  "RESOURCE_NOT_FOUND",
        +                  "RENDER_FAILURE",
        +                  "OCR_LOW_CONFIDENCE",
        +                  "MANUAL_REVIEW_REQUIRED",
        +                  "ACCEPTANCE_REQUIRED",
        +                  "INVALID_TOKEN"
        +                ],
        +                "type": "string"
        +              },
        +              "details": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "message": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "recoverable": {
        +                "type": "boolean"
        +              },
        +              "retry_after_seconds": {
        +                "anyOf": [
        +                  {
        +                    "minimum": 0,
        +                    "type": "integer"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              }
        +            },
        +            "required": [
        +              "code",
        +              "message",
        +              "recoverable"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      }
        +    },
        +    "required": [
        +      "_meta"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "_meta": {
        +        "additionalProperties": false,
        +        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        +        "properties": {
        +          "deliverables": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        +                "properties": {
        +                  "docx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "dxf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "expires_at": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  },
        +                  "pdf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "xlsx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "expires_at"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "document_id": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "issued_at": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "output_mode": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Surfaces what a trimmed ``output_mode`` withheld from ``data``.\n\nA trimmed mode (``summary`` / ``boq`` / ``boq_with_backup``) withholds\nalready-computed fields to keep the chat payload small. The withheld value\nreads to a client agent as \"capability missing\" (the box-culvert \"geometry\nbuilder isn't firing\" scare) rather than \"pared for size\": ``drawing`` and\n``audit_trail`` appear as ``null``, ``boq_rows`` as an empty list ``[]``\n(its type forbids ``null``) — both indistinguishable from a genuine absent\nresult. This names the withheld fields and the exact mode that brings each\nback, so the value is unambiguous. Absent on the default ``full_json`` mode\n— nothing is withheld, nothing to point at.",
        +                "properties": {
        +                  "mode": {
        +                    "enum": [
        +                      "summary",
        +                      "boq",
        +                      "boq_with_backup"
        +                    ],
        +                    "type": "string"
        +                  },
        +                  "omitted_fields": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "minItems": 1,
        +                    "type": "array"
        +                  },
        +                  "retrieve_with": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "mode",
        +                  "omitted_fields",
        +                  "retrieve_with"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "rate_limit_remaining": {
        +            "anyOf": [
        +              {
        +                "minimum": 0,
        +                "type": "integer"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "request_id": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "schema_version": {
        +            "const": "1.0.0",
        +            "default": "1.0.0",
        +            "type": "string"
        +          },
        +          "scope_boundary": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        +                "properties": {
        +                  "not_in_scope": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "produced": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "recommended_companions": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "type": "string"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "produced",
        +                  "not_in_scope"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tier": {
        +            "enum": [
        +              "free",
        +              "paid"
        +            ],
        +            "type": "string"
        +          },
        +          "tier_upgrade": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        +                "properties": {
        +                  "available_tiers": {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        +                      "properties": {
        +                        "billing": {
        +                          "enum": [
        +                            "one_off",
        +                            "monthly",
        +                            "annual"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "currency": {
        +                          "enum": [
        +                            "GBP",
        +                            "SGD",
        +                            "EUR",
        +                            "USD",
        +                            "CAD",
        +                            "AUD",
        +                            "NZD",
        +                            "MYR"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "display_name": {
        +                          "type": "string"
        +                        },
        +                        "price_local": {
        +                          "type": "number"
        +                        },
        +                        "tier_slug": {
        +                          "enum": [
        +                            "7_day_pass",
        +                            "solo",
        +                            "studio",
        +                            "practice"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "unlock_summary": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "tier_slug",
        +                        "display_name",
        +                        "price_local",
        +                        "currency",
        +                        "billing",
        +                        "unlock_summary"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "current_tier": {
        +                    "const": "free",
        +                    "default": "free",
        +                    "type": "string"
        +                  },
        +                  "pass_credit": {
        +                    "anyOf": [
        +                      {
        +                        "additionalProperties": false,
        +                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        +                        "properties": {
        +                          "amount_local": {
        +                            "type": "number"
        +                          },
        +                          "applies_to": {
        +                            "const": "solo_first_month",
        +                            "default": "solo_first_month",
        +                            "type": "string"
        +                          },
        +                          "currency": {
        +                            "type": "string"
        +                          },
        +                          "redeemable_until": {
        +                            "type": "string"
        +                          }
        +                        },
        +                        "required": [
        +                          "amount_local",
        +                          "currency",
        +                          "redeemable_until"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "pricing_url": {
        +                    "default": "https://civilquants.com/pricing",
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "available_tiers"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tos_url": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "upgrade_hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "warranty_disclaimer": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          }
        +        },
        +        "required": [
        +          "request_id",
        +          "issued_at",
        +          "tier"
        +        ],
        +        "type": "object"
        +      },
        +      "data": {
        +        "default": null,
        +        "title": "Data"
        +      },
        +      "error": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        +            "properties": {
        +              "code": {
        +                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        +                "enum": [
        +                  "RATE_LIMIT_EXCEEDED",
        +                  "TIER_INSUFFICIENT",
        +                  "INVALID_INPUT",
        +                  "SCHEMA_VERSION_MISMATCH",
        +                  "SCHEMA_INVARIANT_VIOLATION",
        +                  "UPSTREAM_TIMEOUT",
        +                  "BACKEND_FAILURE",
        +                  "IP_BLOCKED",
        +                  "RESOURCE_NOT_FOUND",
        +                  "RENDER_FAILURE",
        +                  "OCR_LOW_CONFIDENCE",
        +                  "MANUAL_REVIEW_REQUIRED",
        +                  "ACCEPTANCE_REQUIRED",
        +                  "INVALID_TOKEN"
        +                ],
        +                "type": "string"
        +              },
        +              "details": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "message": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "recoverable": {
        +                "type": "boolean"
        +              },
        +              "retry_after_seconds": {
        +                "anyOf": [
        +                  {
        +                    "minimum": 0,
        +                    "type": "integer"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              }
        +            },
        +            "required": [
        +              "code",
        +              "message",
        +              "recoverable"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      }
        +    },
        +    "required": [
        +      "_meta"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedcompute_end_area_earthworks1 field changed
      • changedOutput schema / properties / result / anyOf
        Previous value: -[
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "_meta": {
        -        "additionalProperties": false,
        -        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        -        "properties": {
        -          "deliverables": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        -                "properties": {
        -                  "docx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "dxf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "expires_at": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  },
        -                  "pdf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "xlsx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "expires_at"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "document_id": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "issued_at": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "rate_limit_remaining": {
        -            "anyOf": [
        -              {
        -                "minimum": 0,
        -                "type": "integer"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "request_id": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "schema_version": {
        -            "const": "1.0.0",
        -            "default": "1.0.0",
        -            "type": "string"
        -          },
        -          "scope_boundary": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        -                "properties": {
        -                  "not_in_scope": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "produced": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "recommended_companions": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "type": "string"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "produced",
        -                  "not_in_scope"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tier": {
        -            "enum": [
        -              "free",
        -              "paid"
        -            ],
        -            "type": "string"
        -          },
        -          "tier_upgrade": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        -                "properties": {
        -                  "available_tiers": {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        -                      "properties": {
        -                        "billing": {
        -                          "enum": [
        -                            "one_off",
        -                            "monthly",
        -                            "annual"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "currency": {
        -                          "enum": [
        -                            "GBP",
        -                            "SGD",
        -                            "EUR",
        -                            "USD",
        -                            "CAD",
        -                            "AUD",
        -                            "NZD",
        -                            "MYR"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "display_name": {
        -                          "type": "string"
        -                        },
        -                        "price_local": {
        -                          "type": "number"
        -                        },
        -                        "tier_slug": {
        -                          "enum": [
        -                            "7_day_pass",
        -                            "solo",
        -                            "studio",
        -                            "practice"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "unlock_summary": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "tier_slug",
        -                        "display_name",
        -                        "price_local",
        -                        "currency",
        -                        "billing",
        -                        "unlock_summary"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "current_tier": {
        -                    "const": "free",
        -                    "default": "free",
        -                    "type": "string"
        -                  },
        -                  "pass_credit": {
        -                    "anyOf": [
        -                      {
        -                        "additionalProperties": false,
        -                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        -                        "properties": {
        -                          "amount_local": {
        -                            "type": "number"
        -                          },
        -                          "applies_to": {
        -                            "const": "solo_first_month",
        -                            "default": "solo_first_month",
        -                            "type": "string"
        -                          },
        -                          "currency": {
        -                            "type": "string"
        -                          },
        -                          "redeemable_until": {
        -                            "type": "string"
        -                          }
        -                        },
        -                        "required": [
        -                          "amount_local",
        -                          "currency",
        -                          "redeemable_until"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "pricing_url": {
        -                    "default": "https://civilquants.com/pricing",
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "available_tiers"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tos_url": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "upgrade_hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "warranty_disclaimer": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          }
        -        },
        -        "required": [
        -          "request_id",
        -          "issued_at",
        -          "tier"
        -        ],
        -        "type": "object"
        -      },
        -      "data": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Schema § 1.1 — the typed payload returned inside `MCPResponse[ComputeResult]`.\n\nFree-tier responses omit `drawings` (the downloadable CAD artefact\npointers — the paid differentiator); the bridge enforces this. The\n`audit_trail` and the inline `drawing` preview are present on BOTH tiers\n(V1 ALIGN / 60th-fire D + C). `text_summary` is bounded to 2000 chars —\nkeeps the LLM-facing summary token-cheap and forces longer narrative into\nBoQ row descriptions where it belongs. `warnings` is the non-fatal\ngeometry advisory list (both tiers).",
        -            "properties": {
        -              "assembly_slug": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "audit_trail": {
        -                "anyOf": [
        -                  {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.7 — paid-tier audit-trail entry.\n\nOne entry per BoQ row; `boq_row_index` ties to the row position in\n`ComputeResult.boq_rows`. `derivation` is the human-readable formula\nwalk-through; `formula` is the optional formal expression.",
        -                      "properties": {
        -                        "boq_row_index": {
        -                          "minimum": 0,
        -                          "type": "integer"
        -                        },
        -                        "derivation": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "formula": {
        -                          "anyOf": [
        -                            {
        -                              "type": "string"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ],
        -                          "default": null
        -                        },
        -                        "id": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "parameters_referenced": {
        -                          "items": {
        -                            "type": "string"
        -                          },
        -                          "type": "array"
        -                        }
        -                      },
        -                      "required": [
        -                        "id",
        -                        "boq_row_index",
        -                        "derivation"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "boq_rows": {
        -                "items": {
        -                  "additionalProperties": false,
        -                  "description": "Schema § 1.3 — a single bill row in the requested standard's format.\n\n`description` is the non-verbatim functional description per spec § 13.9 /\n§ 15 invariant — NEVER reproduces a standard's verbatim clause text.\n`rate` / `amount` ship null because rates are commodity data the customer\nowns; the engine's job is the measurement, not the pricing.",
        -                  "properties": {
        -                    "amount": {
        -                      "anyOf": [
        -                        {
        -                          "type": "number"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "attribution": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "audit_id": {
        -                      "anyOf": [
        -                        {
        -                          "type": "string"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "description": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "quantity": {
        -                      "minimum": 0,
        -                      "type": "number"
        -                    },
        -                    "rate": {
        -                      "anyOf": [
        -                        {
        -                          "type": "number"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "unit": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "work_section": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    }
        -                  },
        -                  "required": [
        -                    "work_section",
        -                    "description",
        -                    "quantity",
        -                    "unit",
        -                    "attribution"
        -                  ],
        -                  "type": "object"
        -                },
        -                "type": "array"
        -              },
        -              "drawing": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": false,
        -                    "description": "Schema § 1.6a — inline server-rendered SVG preview of the geometry.\n\nThe MCP mirror of the web ``/compute`` response's ``drawing`` field\n(``api.schemas.compute.DrawingRef``): the same on-screen dimensioned\ndrawing both tiers see in the workspace, surfaced on the MCP compute\nresponse so a chat client can render it inline (60th-fire item C). This\nis the on-screen preview — present on BOTH tiers per the free/paid\nboundary; the downloadable CAD artefacts (DXF / dimensioned PDF) remain\nthe paid differentiator via the export tools.\n\nDefined here rather than importing ``DrawingRef`` because the web\n``schemas`` package imports back into this module (``schemas.render``),\nso reusing it would create an import cycle — the MCP wire contract keeps\nits own copy, the same pattern as ``BoQRow`` / ``DrawingReference``.",
        -                    "properties": {
        -                      "entity_count": {
        -                        "minimum": 0,
        -                        "type": "integer"
        -                      },
        -                      "svg_b64": {
        -                        "minLength": 1,
        -                        "type": "string"
        -                      },
        -                      "unit_of_drawing": {
        -                        "const": "m",
        -                        "default": "m",
        -                        "type": "string"
        -                      },
        -                      "viewbox_height": {
        -                        "exclusiveMinimum": 0,
        -                        "type": "number"
        -                      },
        -                      "viewbox_width": {
        -                        "exclusiveMinimum": 0,
        -                        "type": "number"
        -                      },
        -                      "viewbox_x": {
        -                        "type": "number"
        -                      },
        -                      "viewbox_y": {
        -                        "type": "number"
        -                      }
        -                    },
        -                    "required": [
        -                      "svg_b64",
        -                      "viewbox_x",
        -                      "viewbox_y",
        -                      "viewbox_width",
        -                      "viewbox_height",
        -                      "entity_count"
        -                    ],
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "drawings": {
        -                "anyOf": [
        -                  {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.6 — paid-tier drawing artefact pointer.\n\n`url` is an R2-signed URL; expiry is carried in `_meta.deliverables.expires_at`\non the envelope (not duplicated here). `layers` is DXF-only; PDF/SVG\ncallers omit it.",
        -                      "properties": {
        -                        "drawing_type": {
        -                          "enum": [
        -                            "section",
        -                            "plan",
        -                            "elevation",
        -                            "isometric",
        -                            "detail"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "format": {
        -                          "enum": [
        -                            "DXF",
        -                            "PDF",
        -                            "SVG"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "layers": {
        -                          "anyOf": [
        -                            {
        -                              "items": {
        -                                "type": "string"
        -                              },
        -                              "type": "array"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ],
        -                          "default": null
        -                        },
        -                        "scale": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "sheet_size": {
        -                          "enum": [
        -                            "A1",
        -                            "A2",
        -                            "A3",
        -                            "A4"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "url": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "drawing_type",
        -                        "format",
        -                        "url",
        -                        "sheet_size",
        -                        "scale"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "parameters_used": {
        -                "additionalProperties": false,
        -                "description": "Schema § 1.2 — the parameter snapshot the engine actually used.\n\nSplits user-supplied values from engine defaults so customers can see\nwhich numbers came from them and which the engine filled in. Every\ndefaulted parameter SHOULD have a corresponding entry in `assumptions`\n— the bridge layer enforces this when wrapping engine output.",
        -                "properties": {
        -                  "assumptions": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "engine_defaults": {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  "user_supplied": {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  }
        -                },
        -                "type": "object"
        -              },
        -              "standard": {
        -                "enum": [
        -                  "CESMM4",
        -                  "NRM2",
        -                  "SMM7",
        -                  "MMHW"
        -                ],
        -                "type": "string"
        -              },
        -              "text_summary": {
        -                "maxLength": 2000,
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "totals_summary": {
        -                "additionalProperties": false,
        -                "description": "Schema § 1.4 — totals_summary as a typed wrapper around the free-form dict.\n\nWire shape is a flat object (`{\"concrete_m3\": {...}, \"rebar_t\": {...}}`).\nWe model it as `RootModel`-equivalent via `model_config(extra=\"allow\")`\n+ a single `__root__`-style `entries` dict. Pydantic v2 recommends\n`RootModel` for free-form roots; using a wrapper class keeps the import\nsurface uniform with the rest of this module.",
        -                "properties": {
        -                  "entries": {
        -                    "additionalProperties": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.4 — single material/work-class total entry.",
        -                      "properties": {
        -                        "quantity": {
        -                          "minimum": 0,
        -                          "type": "number"
        -                        },
        -                        "unit": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "quantity",
        -                        "unit"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "object"
        -                  }
        -                },
        -                "type": "object"
        -              },
        -              "warnings": {
        -                "items": {
        -                  "additionalProperties": false,
        -                  "description": "Schema § 1.8 — a non-fatal geometry advisory (56th-fire T2).\n\nThe wire projection of the engine's `core.GeometryWarning`. Advisory only:\na warning NEVER changes a measured quantity — it flags geometry that is\nvalid but likely a mistake (e.g. a stale dependent-height default). Present\non BOTH tiers — a correctness/safety signal, not a paid feature.",
        -                  "properties": {
        -                    "affected_params": {
        -                      "items": {
        -                        "type": "string"
        -                      },
        -                      "type": "array"
        -                    },
        -                    "code": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "detail": {
        -                      "additionalProperties": {
        -                        "type": "number"
        -                      },
        -                      "type": "object"
        -                    },
        -                    "message": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "severity": {
        -                      "enum": [
        -                        "info",
        -                        "advisory",
        -                        "caution"
        -                      ],
        -                      "type": "string"
        -                    }
        -                  },
        -                  "required": [
        -                    "code",
        -                    "severity",
        -                    "message"
        -                  ],
        -                  "type": "object"
        -                },
        -                "type": "array"
        -              }
        -            },
        -            "required": [
        -              "assembly_slug",
        -              "standard",
        -              "parameters_used",
        -              "boq_rows",
        -              "totals_summary",
        -              "text_summary"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      },
        -      "error": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        -            "properties": {
        -              "code": {
        -                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        -                "enum": [
        -                  "RATE_LIMIT_EXCEEDED",
        -                  "TIER_INSUFFICIENT",
        -                  "INVALID_INPUT",
        -                  "SCHEMA_VERSION_MISMATCH",
        -                  "SCHEMA_INVARIANT_VIOLATION",
        -                  "UPSTREAM_TIMEOUT",
        -                  "BACKEND_FAILURE",
        -                  "IP_BLOCKED",
        -                  "RESOURCE_NOT_FOUND",
        -                  "RENDER_FAILURE",
        -                  "OCR_LOW_CONFIDENCE",
        -                  "MANUAL_REVIEW_REQUIRED",
        -                  "ACCEPTANCE_REQUIRED",
        -                  "INVALID_TOKEN"
        -                ],
        -                "type": "string"
        -              },
        -              "details": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "message": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "recoverable": {
        -                "type": "boolean"
        -              },
        -              "retry_after_seconds": {
        -                "anyOf": [
        -                  {
        -                    "minimum": 0,
        -                    "type": "integer"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              }
        -            },
        -            "required": [
        -              "code",
        -              "message",
        -              "recoverable"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      }
        -    },
        -    "required": [
        -      "_meta"
        -    ],
        -    "type": "object"
        -  },
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "_meta": {
        -        "additionalProperties": false,
        -        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        -        "properties": {
        -          "deliverables": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        -                "properties": {
        -                  "docx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "dxf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "expires_at": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  },
        -                  "pdf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "xlsx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "expires_at"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "document_id": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "issued_at": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "rate_limit_remaining": {
        -            "anyOf": [
        -              {
        -                "minimum": 0,
        -                "type": "integer"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "request_id": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "schema_version": {
        -            "const": "1.0.0",
        -            "default": "1.0.0",
        -            "type": "string"
        -          },
        -          "scope_boundary": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        -                "properties": {
        -                  "not_in_scope": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "produced": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "recommended_companions": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "type": "string"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "produced",
        -                  "not_in_scope"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tier": {
        -            "enum": [
        -              "free",
        -              "paid"
        -            ],
        -            "type": "string"
        -          },
        -          "tier_upgrade": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        -                "properties": {
        -                  "available_tiers": {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        -                      "properties": {
        -                        "billing": {
        -                          "enum": [
        -                            "one_off",
        -                            "monthly",
        -                            "annual"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "currency": {
        -                          "enum": [
        -                            "GBP",
        -                            "SGD",
        -                            "EUR",
        -                            "USD",
        -                            "CAD",
        -                            "AUD",
        -                            "NZD",
        -                            "MYR"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "display_name": {
        -                          "type": "string"
        -                        },
        -                        "price_local": {
        -                          "type": "number"
        -                        },
        -                        "tier_slug": {
        -                          "enum": [
        -                            "7_day_pass",
        -                            "solo",
        -                            "studio",
        -                            "practice"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "unlock_summary": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "tier_slug",
        -                        "display_name",
        -                        "price_local",
        -                        "currency",
        -                        "billing",
        -                        "unlock_summary"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "current_tier": {
        -                    "const": "free",
        -                    "default": "free",
        -                    "type": "string"
        -                  },
        -                  "pass_credit": {
        -                    "anyOf": [
        -                      {
        -                        "additionalProperties": false,
        -                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        -                        "properties": {
        -                          "amount_local": {
        -                            "type": "number"
        -                          },
        -                          "applies_to": {
        -                            "const": "solo_first_month",
        -                            "default": "solo_first_month",
        -                            "type": "string"
        -                          },
        -                          "currency": {
        -                            "type": "string"
        -                          },
        -                          "redeemable_until": {
        -                            "type": "string"
        -                          }
        -                        },
        -                        "required": [
        -                          "amount_local",
        -                          "currency",
        -                          "redeemable_until"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "pricing_url": {
        -                    "default": "https://civilquants.com/pricing",
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "available_tiers"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tos_url": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "upgrade_hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "warranty_disclaimer": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          }
        -        },
        -        "required": [
        -          "request_id",
        -          "issued_at",
        -          "tier"
        -        ],
        -        "type": "object"
        -      },
        -      "data": {
        -        "default": null,
        -        "title": "Data"
        -      },
        -      "error": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        -            "properties": {
        -              "code": {
        -                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        -                "enum": [
        -                  "RATE_LIMIT_EXCEEDED",
        -                  "TIER_INSUFFICIENT",
        -                  "INVALID_INPUT",
        -                  "SCHEMA_VERSION_MISMATCH",
        -                  "SCHEMA_INVARIANT_VIOLATION",
        -                  "UPSTREAM_TIMEOUT",
        -                  "BACKEND_FAILURE",
        -                  "IP_BLOCKED",
        -                  "RESOURCE_NOT_FOUND",
        -                  "RENDER_FAILURE",
        -                  "OCR_LOW_CONFIDENCE",
        -                  "MANUAL_REVIEW_REQUIRED",
        -                  "ACCEPTANCE_REQUIRED",
        -                  "INVALID_TOKEN"
        -                ],
        -                "type": "string"
        -              },
        -              "details": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "message": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "recoverable": {
        -                "type": "boolean"
        -              },
        -              "retry_after_seconds": {
        -                "anyOf": [
        -                  {
        -                    "minimum": 0,
        -                    "type": "integer"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              }
        -            },
        -            "required": [
        -              "code",
        -              "message",
        -              "recoverable"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      }
        -    },
        -    "required": [
        -      "_meta"
        -    ],
        -    "type": "object"
        -  }
        -]New value: +[
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "_meta": {
        +        "additionalProperties": false,
        +        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        +        "properties": {
        +          "deliverables": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        +                "properties": {
        +                  "docx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "dxf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "expires_at": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  },
        +                  "pdf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "xlsx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "expires_at"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "document_id": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "issued_at": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "output_mode": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Surfaces what a trimmed ``output_mode`` withheld from ``data``.\n\nA trimmed mode (``summary`` / ``boq`` / ``boq_with_backup``) withholds\nalready-computed fields to keep the chat payload small. The withheld value\nreads to a client agent as \"capability missing\" (the box-culvert \"geometry\nbuilder isn't firing\" scare) rather than \"pared for size\": ``drawing`` and\n``audit_trail`` appear as ``null``, ``boq_rows`` as an empty list ``[]``\n(its type forbids ``null``) — both indistinguishable from a genuine absent\nresult. This names the withheld fields and the exact mode that brings each\nback, so the value is unambiguous. Absent on the default ``full_json`` mode\n— nothing is withheld, nothing to point at.",
        +                "properties": {
        +                  "mode": {
        +                    "enum": [
        +                      "summary",
        +                      "boq",
        +                      "boq_with_backup"
        +                    ],
        +                    "type": "string"
        +                  },
        +                  "omitted_fields": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "minItems": 1,
        +                    "type": "array"
        +                  },
        +                  "retrieve_with": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "mode",
        +                  "omitted_fields",
        +                  "retrieve_with"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "rate_limit_remaining": {
        +            "anyOf": [
        +              {
        +                "minimum": 0,
        +                "type": "integer"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "request_id": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "schema_version": {
        +            "const": "1.0.0",
        +            "default": "1.0.0",
        +            "type": "string"
        +          },
        +          "scope_boundary": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        +                "properties": {
        +                  "not_in_scope": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "produced": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "recommended_companions": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "type": "string"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "produced",
        +                  "not_in_scope"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tier": {
        +            "enum": [
        +              "free",
        +              "paid"
        +            ],
        +            "type": "string"
        +          },
        +          "tier_upgrade": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        +                "properties": {
        +                  "available_tiers": {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        +                      "properties": {
        +                        "billing": {
        +                          "enum": [
        +                            "one_off",
        +                            "monthly",
        +                            "annual"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "currency": {
        +                          "enum": [
        +                            "GBP",
        +                            "SGD",
        +                            "EUR",
        +                            "USD",
        +                            "CAD",
        +                            "AUD",
        +                            "NZD",
        +                            "MYR"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "display_name": {
        +                          "type": "string"
        +                        },
        +                        "price_local": {
        +                          "type": "number"
        +                        },
        +                        "tier_slug": {
        +                          "enum": [
        +                            "7_day_pass",
        +                            "solo",
        +                            "studio",
        +                            "practice"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "unlock_summary": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "tier_slug",
        +                        "display_name",
        +                        "price_local",
        +                        "currency",
        +                        "billing",
        +                        "unlock_summary"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "current_tier": {
        +                    "const": "free",
        +                    "default": "free",
        +                    "type": "string"
        +                  },
        +                  "pass_credit": {
        +                    "anyOf": [
        +                      {
        +                        "additionalProperties": false,
        +                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        +                        "properties": {
        +                          "amount_local": {
        +                            "type": "number"
        +                          },
        +                          "applies_to": {
        +                            "const": "solo_first_month",
        +                            "default": "solo_first_month",
        +                            "type": "string"
        +                          },
        +                          "currency": {
        +                            "type": "string"
        +                          },
        +                          "redeemable_until": {
        +                            "type": "string"
        +                          }
        +                        },
        +                        "required": [
        +                          "amount_local",
        +                          "currency",
        +                          "redeemable_until"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "pricing_url": {
        +                    "default": "https://civilquants.com/pricing",
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "available_tiers"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tos_url": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "upgrade_hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "warranty_disclaimer": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          }
        +        },
        +        "required": [
        +          "request_id",
        +          "issued_at",
        +          "tier"
        +        ],
        +        "type": "object"
        +      },
        +      "data": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Schema § 1.1 — the typed payload returned inside `MCPResponse[ComputeResult]`.\n\nFree-tier responses omit `drawings` (the downloadable CAD artefact\npointers — the paid differentiator); the bridge enforces this. The\n`audit_trail` and the inline `drawing` preview are present on BOTH tiers\n(V1 ALIGN / 60th-fire D + C). `text_summary` is bounded to 2000 chars —\nkeeps the LLM-facing summary token-cheap and forces longer narrative into\nBoQ row descriptions where it belongs. `warnings` is the non-fatal\ngeometry advisory list (both tiers).",
        +            "properties": {
        +              "assembly_slug": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "audit_trail": {
        +                "anyOf": [
        +                  {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.7 — paid-tier audit-trail entry.\n\nOne entry per BoQ row; `boq_row_index` ties to the row position in\n`ComputeResult.boq_rows`. `derivation` is the human-readable formula\nwalk-through; `formula` is the optional formal expression.",
        +                      "properties": {
        +                        "boq_row_index": {
        +                          "minimum": 0,
        +                          "type": "integer"
        +                        },
        +                        "derivation": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "formula": {
        +                          "anyOf": [
        +                            {
        +                              "type": "string"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ],
        +                          "default": null
        +                        },
        +                        "id": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "parameters_referenced": {
        +                          "items": {
        +                            "type": "string"
        +                          },
        +                          "type": "array"
        +                        }
        +                      },
        +                      "required": [
        +                        "id",
        +                        "boq_row_index",
        +                        "derivation"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "boq_rows": {
        +                "items": {
        +                  "additionalProperties": false,
        +                  "description": "Schema § 1.3 — a single bill row in the requested standard's format.\n\n`description` is the non-verbatim functional description per spec § 13.9 /\n§ 15 invariant — NEVER reproduces a standard's verbatim clause text.\n`rate` / `amount` ship null because rates are commodity data the customer\nowns; the engine's job is the measurement, not the pricing.",
        +                  "properties": {
        +                    "amount": {
        +                      "anyOf": [
        +                        {
        +                          "type": "number"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "attribution": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "audit_id": {
        +                      "anyOf": [
        +                        {
        +                          "type": "string"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "description": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "quantity": {
        +                      "minimum": 0,
        +                      "type": "number"
        +                    },
        +                    "rate": {
        +                      "anyOf": [
        +                        {
        +                          "type": "number"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "unit": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "work_section": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    }
        +                  },
        +                  "required": [
        +                    "work_section",
        +                    "description",
        +                    "quantity",
        +                    "unit",
        +                    "attribution"
        +                  ],
        +                  "type": "object"
        +                },
        +                "type": "array"
        +              },
        +              "drawing": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": false,
        +                    "description": "Schema § 1.6a — inline server-rendered SVG preview of the geometry.\n\nThe MCP mirror of the web ``/compute`` response's ``drawing`` field\n(``api.schemas.compute.DrawingRef``): the same on-screen dimensioned\ndrawing both tiers see in the workspace, surfaced on the MCP compute\nresponse so a chat client can render it inline (60th-fire item C). This\nis the on-screen preview — present on BOTH tiers per the free/paid\nboundary; the downloadable CAD artefacts (DXF / dimensioned PDF) remain\nthe paid differentiator via the export tools.\n\nDefined here rather than importing ``DrawingRef`` because the web\n``schemas`` package imports back into this module (``schemas.render``),\nso reusing it would create an import cycle — the MCP wire contract keeps\nits own copy, the same pattern as ``BoQRow`` / ``DrawingReference``.",
        +                    "properties": {
        +                      "entity_count": {
        +                        "minimum": 0,
        +                        "type": "integer"
        +                      },
        +                      "svg_b64": {
        +                        "minLength": 1,
        +                        "type": "string"
        +                      },
        +                      "unit_of_drawing": {
        +                        "const": "m",
        +                        "default": "m",
        +                        "type": "string"
        +                      },
        +                      "viewbox_height": {
        +                        "exclusiveMinimum": 0,
        +                        "type": "number"
        +                      },
        +                      "viewbox_width": {
        +                        "exclusiveMinimum": 0,
        +                        "type": "number"
        +                      },
        +                      "viewbox_x": {
        +                        "type": "number"
        +                      },
        +                      "viewbox_y": {
        +                        "type": "number"
        +                      }
        +                    },
        +                    "required": [
        +                      "svg_b64",
        +                      "viewbox_x",
        +                      "viewbox_y",
        +                      "viewbox_width",
        +                      "viewbox_height",
        +                      "entity_count"
        +                    ],
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "drawings": {
        +                "anyOf": [
        +                  {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.6 — paid-tier drawing artefact pointer.\n\n`url` is an R2-signed URL; expiry is carried in `_meta.deliverables.expires_at`\non the envelope (not duplicated here). `layers` is DXF-only; PDF/SVG\ncallers omit it.",
        +                      "properties": {
        +                        "drawing_type": {
        +                          "enum": [
        +                            "section",
        +                            "plan",
        +                            "elevation",
        +                            "isometric",
        +                            "detail"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "format": {
        +                          "enum": [
        +                            "DXF",
        +                            "PDF",
        +                            "SVG"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "layers": {
        +                          "anyOf": [
        +                            {
        +                              "items": {
        +                                "type": "string"
        +                              },
        +                              "type": "array"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ],
        +                          "default": null
        +                        },
        +                        "scale": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "sheet_size": {
        +                          "enum": [
        +                            "A1",
        +                            "A2",
        +                            "A3",
        +                            "A4"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "url": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "drawing_type",
        +                        "format",
        +                        "url",
        +                        "sheet_size",
        +                        "scale"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "parameters_used": {
        +                "additionalProperties": false,
        +                "description": "Schema § 1.2 — the parameter snapshot the engine actually used.\n\nSplits user-supplied values from engine defaults so customers can see\nwhich numbers came from them and which the engine filled in. Every\ndefaulted parameter SHOULD have a corresponding entry in `assumptions`\n— the bridge layer enforces this when wrapping engine output.",
        +                "properties": {
        +                  "assumptions": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "engine_defaults": {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  "user_supplied": {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  }
        +                },
        +                "type": "object"
        +              },
        +              "standard": {
        +                "enum": [
        +                  "CESMM4",
        +                  "NRM2",
        +                  "SMM7",
        +                  "MMHW"
        +                ],
        +                "type": "string"
        +              },
        +              "text_summary": {
        +                "maxLength": 2000,
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "totals_summary": {
        +                "additionalProperties": false,
        +                "description": "Schema § 1.4 — totals_summary as a typed wrapper around the free-form dict.\n\nWire shape is a flat object (`{\"concrete_m3\": {...}, \"rebar_t\": {...}}`).\nWe model it as `RootModel`-equivalent via `model_config(extra=\"allow\")`\n+ a single `__root__`-style `entries` dict. Pydantic v2 recommends\n`RootModel` for free-form roots; using a wrapper class keeps the import\nsurface uniform with the rest of this module.",
        +                "properties": {
        +                  "entries": {
        +                    "additionalProperties": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.4 — single material/work-class total entry.",
        +                      "properties": {
        +                        "quantity": {
        +                          "minimum": 0,
        +                          "type": "number"
        +                        },
        +                        "unit": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "quantity",
        +                        "unit"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "object"
        +                  }
        +                },
        +                "type": "object"
        +              },
        +              "warnings": {
        +                "items": {
        +                  "additionalProperties": false,
        +                  "description": "Schema § 1.8 — a non-fatal geometry advisory (56th-fire T2).\n\nThe wire projection of the engine's `core.GeometryWarning`. Advisory only:\na warning NEVER changes a measured quantity — it flags geometry that is\nvalid but likely a mistake (e.g. a stale dependent-height default). Present\non BOTH tiers — a correctness/safety signal, not a paid feature.",
        +                  "properties": {
        +                    "affected_params": {
        +                      "items": {
        +                        "type": "string"
        +                      },
        +                      "type": "array"
        +                    },
        +                    "code": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "detail": {
        +                      "additionalProperties": {
        +                        "type": "number"
        +                      },
        +                      "type": "object"
        +                    },
        +                    "message": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "severity": {
        +                      "enum": [
        +                        "info",
        +                        "advisory",
        +                        "caution"
        +                      ],
        +                      "type": "string"
        +                    }
        +                  },
        +                  "required": [
        +                    "code",
        +                    "severity",
        +                    "message"
        +                  ],
        +                  "type": "object"
        +                },
        +                "type": "array"
        +              }
        +            },
        +            "required": [
        +              "assembly_slug",
        +              "standard",
        +              "parameters_used",
        +              "boq_rows",
        +              "totals_summary",
        +              "text_summary"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      },
        +      "error": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        +            "properties": {
        +              "code": {
        +                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        +                "enum": [
        +                  "RATE_LIMIT_EXCEEDED",
        +                  "TIER_INSUFFICIENT",
        +                  "INVALID_INPUT",
        +                  "SCHEMA_VERSION_MISMATCH",
        +                  "SCHEMA_INVARIANT_VIOLATION",
        +                  "UPSTREAM_TIMEOUT",
        +                  "BACKEND_FAILURE",
        +                  "IP_BLOCKED",
        +                  "RESOURCE_NOT_FOUND",
        +                  "RENDER_FAILURE",
        +                  "OCR_LOW_CONFIDENCE",
        +                  "MANUAL_REVIEW_REQUIRED",
        +                  "ACCEPTANCE_REQUIRED",
        +                  "INVALID_TOKEN"
        +                ],
        +                "type": "string"
        +              },
        +              "details": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "message": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "recoverable": {
        +                "type": "boolean"
        +              },
        +              "retry_after_seconds": {
        +                "anyOf": [
        +                  {
        +                    "minimum": 0,
        +                    "type": "integer"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              }
        +            },
        +            "required": [
        +              "code",
        +              "message",
        +              "recoverable"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      }
        +    },
        +    "required": [
        +      "_meta"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "_meta": {
        +        "additionalProperties": false,
        +        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        +        "properties": {
        +          "deliverables": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        +                "properties": {
        +                  "docx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "dxf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "expires_at": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  },
        +                  "pdf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "xlsx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "expires_at"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "document_id": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "issued_at": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "output_mode": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Surfaces what a trimmed ``output_mode`` withheld from ``data``.\n\nA trimmed mode (``summary`` / ``boq`` / ``boq_with_backup``) withholds\nalready-computed fields to keep the chat payload small. The withheld value\nreads to a client agent as \"capability missing\" (the box-culvert \"geometry\nbuilder isn't firing\" scare) rather than \"pared for size\": ``drawing`` and\n``audit_trail`` appear as ``null``, ``boq_rows`` as an empty list ``[]``\n(its type forbids ``null``) — both indistinguishable from a genuine absent\nresult. This names the withheld fields and the exact mode that brings each\nback, so the value is unambiguous. Absent on the default ``full_json`` mode\n— nothing is withheld, nothing to point at.",
        +                "properties": {
        +                  "mode": {
        +                    "enum": [
        +                      "summary",
        +                      "boq",
        +                      "boq_with_backup"
        +                    ],
        +                    "type": "string"
        +                  },
        +                  "omitted_fields": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "minItems": 1,
        +                    "type": "array"
        +                  },
        +                  "retrieve_with": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "mode",
        +                  "omitted_fields",
        +                  "retrieve_with"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "rate_limit_remaining": {
        +            "anyOf": [
        +              {
        +                "minimum": 0,
        +                "type": "integer"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "request_id": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "schema_version": {
        +            "const": "1.0.0",
        +            "default": "1.0.0",
        +            "type": "string"
        +          },
        +          "scope_boundary": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        +                "properties": {
        +                  "not_in_scope": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "produced": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "recommended_companions": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "type": "string"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "produced",
        +                  "not_in_scope"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tier": {
        +            "enum": [
        +              "free",
        +              "paid"
        +            ],
        +            "type": "string"
        +          },
        +          "tier_upgrade": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        +                "properties": {
        +                  "available_tiers": {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        +                      "properties": {
        +                        "billing": {
        +                          "enum": [
        +                            "one_off",
        +                            "monthly",
        +                            "annual"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "currency": {
        +                          "enum": [
        +                            "GBP",
        +                            "SGD",
        +                            "EUR",
        +                            "USD",
        +                            "CAD",
        +                            "AUD",
        +                            "NZD",
        +                            "MYR"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "display_name": {
        +                          "type": "string"
        +                        },
        +                        "price_local": {
        +                          "type": "number"
        +                        },
        +                        "tier_slug": {
        +                          "enum": [
        +                            "7_day_pass",
        +                            "solo",
        +                            "studio",
        +                            "practice"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "unlock_summary": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "tier_slug",
        +                        "display_name",
        +                        "price_local",
        +                        "currency",
        +                        "billing",
        +                        "unlock_summary"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "current_tier": {
        +                    "const": "free",
        +                    "default": "free",
        +                    "type": "string"
        +                  },
        +                  "pass_credit": {
        +                    "anyOf": [
        +                      {
        +                        "additionalProperties": false,
        +                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        +                        "properties": {
        +                          "amount_local": {
        +                            "type": "number"
        +                          },
        +                          "applies_to": {
        +                            "const": "solo_first_month",
        +                            "default": "solo_first_month",
        +                            "type": "string"
        +                          },
        +                          "currency": {
        +                            "type": "string"
        +                          },
        +                          "redeemable_until": {
        +                            "type": "string"
        +                          }
        +                        },
        +                        "required": [
        +                          "amount_local",
        +                          "currency",
        +                          "redeemable_until"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "pricing_url": {
        +                    "default": "https://civilquants.com/pricing",
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "available_tiers"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tos_url": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "upgrade_hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "warranty_disclaimer": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          }
        +        },
        +        "required": [
        +          "request_id",
        +          "issued_at",
        +          "tier"
        +        ],
        +        "type": "object"
        +      },
        +      "data": {
        +        "default": null,
        +        "title": "Data"
        +      },
        +      "error": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        +            "properties": {
        +              "code": {
        +                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        +                "enum": [
        +                  "RATE_LIMIT_EXCEEDED",
        +                  "TIER_INSUFFICIENT",
        +                  "INVALID_INPUT",
        +                  "SCHEMA_VERSION_MISMATCH",
        +                  "SCHEMA_INVARIANT_VIOLATION",
        +                  "UPSTREAM_TIMEOUT",
        +                  "BACKEND_FAILURE",
        +                  "IP_BLOCKED",
        +                  "RESOURCE_NOT_FOUND",
        +                  "RENDER_FAILURE",
        +                  "OCR_LOW_CONFIDENCE",
        +                  "MANUAL_REVIEW_REQUIRED",
        +                  "ACCEPTANCE_REQUIRED",
        +                  "INVALID_TOKEN"
        +                ],
        +                "type": "string"
        +              },
        +              "details": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "message": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "recoverable": {
        +                "type": "boolean"
        +              },
        +              "retry_after_seconds": {
        +                "anyOf": [
        +                  {
        +                    "minimum": 0,
        +                    "type": "integer"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              }
        +            },
        +            "required": [
        +              "code",
        +              "message",
        +              "recoverable"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      }
        +    },
        +    "required": [
        +      "_meta"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedcompute_flexible_pavement1 field changed
      • changedOutput schema / properties / result / anyOf
        Previous value: -[
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "_meta": {
        -        "additionalProperties": false,
        -        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        -        "properties": {
        -          "deliverables": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        -                "properties": {
        -                  "docx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "dxf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "expires_at": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  },
        -                  "pdf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "xlsx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "expires_at"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "document_id": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "issued_at": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "rate_limit_remaining": {
        -            "anyOf": [
        -              {
        -                "minimum": 0,
        -                "type": "integer"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "request_id": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "schema_version": {
        -            "const": "1.0.0",
        -            "default": "1.0.0",
        -            "type": "string"
        -          },
        -          "scope_boundary": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        -                "properties": {
        -                  "not_in_scope": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "produced": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "recommended_companions": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "type": "string"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "produced",
        -                  "not_in_scope"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tier": {
        -            "enum": [
        -              "free",
        -              "paid"
        -            ],
        -            "type": "string"
        -          },
        -          "tier_upgrade": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        -                "properties": {
        -                  "available_tiers": {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        -                      "properties": {
        -                        "billing": {
        -                          "enum": [
        -                            "one_off",
        -                            "monthly",
        -                            "annual"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "currency": {
        -                          "enum": [
        -                            "GBP",
        -                            "SGD",
        -                            "EUR",
        -                            "USD",
        -                            "CAD",
        -                            "AUD",
        -                            "NZD",
        -                            "MYR"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "display_name": {
        -                          "type": "string"
        -                        },
        -                        "price_local": {
        -                          "type": "number"
        -                        },
        -                        "tier_slug": {
        -                          "enum": [
        -                            "7_day_pass",
        -                            "solo",
        -                            "studio",
        -                            "practice"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "unlock_summary": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "tier_slug",
        -                        "display_name",
        -                        "price_local",
        -                        "currency",
        -                        "billing",
        -                        "unlock_summary"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "current_tier": {
        -                    "const": "free",
        -                    "default": "free",
        -                    "type": "string"
        -                  },
        -                  "pass_credit": {
        -                    "anyOf": [
        -                      {
        -                        "additionalProperties": false,
        -                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        -                        "properties": {
        -                          "amount_local": {
        -                            "type": "number"
        -                          },
        -                          "applies_to": {
        -                            "const": "solo_first_month",
        -                            "default": "solo_first_month",
        -                            "type": "string"
        -                          },
        -                          "currency": {
        -                            "type": "string"
        -                          },
        -                          "redeemable_until": {
        -                            "type": "string"
        -                          }
        -                        },
        -                        "required": [
        -                          "amount_local",
        -                          "currency",
        -                          "redeemable_until"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "pricing_url": {
        -                    "default": "https://civilquants.com/pricing",
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "available_tiers"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tos_url": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "upgrade_hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "warranty_disclaimer": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          }
        -        },
        -        "required": [
        -          "request_id",
        -          "issued_at",
        -          "tier"
        -        ],
        -        "type": "object"
        -      },
        -      "data": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Schema § 1.1 — the typed payload returned inside `MCPResponse[ComputeResult]`.\n\nFree-tier responses omit `drawings` (the downloadable CAD artefact\npointers — the paid differentiator); the bridge enforces this. The\n`audit_trail` and the inline `drawing` preview are present on BOTH tiers\n(V1 ALIGN / 60th-fire D + C). `text_summary` is bounded to 2000 chars —\nkeeps the LLM-facing summary token-cheap and forces longer narrative into\nBoQ row descriptions where it belongs. `warnings` is the non-fatal\ngeometry advisory list (both tiers).",
        -            "properties": {
        -              "assembly_slug": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "audit_trail": {
        -                "anyOf": [
        -                  {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.7 — paid-tier audit-trail entry.\n\nOne entry per BoQ row; `boq_row_index` ties to the row position in\n`ComputeResult.boq_rows`. `derivation` is the human-readable formula\nwalk-through; `formula` is the optional formal expression.",
        -                      "properties": {
        -                        "boq_row_index": {
        -                          "minimum": 0,
        -                          "type": "integer"
        -                        },
        -                        "derivation": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "formula": {
        -                          "anyOf": [
        -                            {
        -                              "type": "string"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ],
        -                          "default": null
        -                        },
        -                        "id": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "parameters_referenced": {
        -                          "items": {
        -                            "type": "string"
        -                          },
        -                          "type": "array"
        -                        }
        -                      },
        -                      "required": [
        -                        "id",
        -                        "boq_row_index",
        -                        "derivation"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "boq_rows": {
        -                "items": {
        -                  "additionalProperties": false,
        -                  "description": "Schema § 1.3 — a single bill row in the requested standard's format.\n\n`description` is the non-verbatim functional description per spec § 13.9 /\n§ 15 invariant — NEVER reproduces a standard's verbatim clause text.\n`rate` / `amount` ship null because rates are commodity data the customer\nowns; the engine's job is the measurement, not the pricing.",
        -                  "properties": {
        -                    "amount": {
        -                      "anyOf": [
        -                        {
        -                          "type": "number"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "attribution": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "audit_id": {
        -                      "anyOf": [
        -                        {
        -                          "type": "string"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "description": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "quantity": {
        -                      "minimum": 0,
        -                      "type": "number"
        -                    },
        -                    "rate": {
        -                      "anyOf": [
        -                        {
        -                          "type": "number"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "unit": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "work_section": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    }
        -                  },
        -                  "required": [
        -                    "work_section",
        -                    "description",
        -                    "quantity",
        -                    "unit",
        -                    "attribution"
        -                  ],
        -                  "type": "object"
        -                },
        -                "type": "array"
        -              },
        -              "drawing": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": false,
        -                    "description": "Schema § 1.6a — inline server-rendered SVG preview of the geometry.\n\nThe MCP mirror of the web ``/compute`` response's ``drawing`` field\n(``api.schemas.compute.DrawingRef``): the same on-screen dimensioned\ndrawing both tiers see in the workspace, surfaced on the MCP compute\nresponse so a chat client can render it inline (60th-fire item C). This\nis the on-screen preview — present on BOTH tiers per the free/paid\nboundary; the downloadable CAD artefacts (DXF / dimensioned PDF) remain\nthe paid differentiator via the export tools.\n\nDefined here rather than importing ``DrawingRef`` because the web\n``schemas`` package imports back into this module (``schemas.render``),\nso reusing it would create an import cycle — the MCP wire contract keeps\nits own copy, the same pattern as ``BoQRow`` / ``DrawingReference``.",
        -                    "properties": {
        -                      "entity_count": {
        -                        "minimum": 0,
        -                        "type": "integer"
        -                      },
        -                      "svg_b64": {
        -                        "minLength": 1,
        -                        "type": "string"
        -                      },
        -                      "unit_of_drawing": {
        -                        "const": "m",
        -                        "default": "m",
        -                        "type": "string"
        -                      },
        -                      "viewbox_height": {
        -                        "exclusiveMinimum": 0,
        -                        "type": "number"
        -                      },
        -                      "viewbox_width": {
        -                        "exclusiveMinimum": 0,
        -                        "type": "number"
        -                      },
        -                      "viewbox_x": {
        -                        "type": "number"
        -                      },
        -                      "viewbox_y": {
        -                        "type": "number"
        -                      }
        -                    },
        -                    "required": [
        -                      "svg_b64",
        -                      "viewbox_x",
        -                      "viewbox_y",
        -                      "viewbox_width",
        -                      "viewbox_height",
        -                      "entity_count"
        -                    ],
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "drawings": {
        -                "anyOf": [
        -                  {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.6 — paid-tier drawing artefact pointer.\n\n`url` is an R2-signed URL; expiry is carried in `_meta.deliverables.expires_at`\non the envelope (not duplicated here). `layers` is DXF-only; PDF/SVG\ncallers omit it.",
        -                      "properties": {
        -                        "drawing_type": {
        -                          "enum": [
        -                            "section",
        -                            "plan",
        -                            "elevation",
        -                            "isometric",
        -                            "detail"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "format": {
        -                          "enum": [
        -                            "DXF",
        -                            "PDF",
        -                            "SVG"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "layers": {
        -                          "anyOf": [
        -                            {
        -                              "items": {
        -                                "type": "string"
        -                              },
        -                              "type": "array"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ],
        -                          "default": null
        -                        },
        -                        "scale": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "sheet_size": {
        -                          "enum": [
        -                            "A1",
        -                            "A2",
        -                            "A3",
        -                            "A4"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "url": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "drawing_type",
        -                        "format",
        -                        "url",
        -                        "sheet_size",
        -                        "scale"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "parameters_used": {
        -                "additionalProperties": false,
        -                "description": "Schema § 1.2 — the parameter snapshot the engine actually used.\n\nSplits user-supplied values from engine defaults so customers can see\nwhich numbers came from them and which the engine filled in. Every\ndefaulted parameter SHOULD have a corresponding entry in `assumptions`\n— the bridge layer enforces this when wrapping engine output.",
        -                "properties": {
        -                  "assumptions": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "engine_defaults": {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  "user_supplied": {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  }
        -                },
        -                "type": "object"
        -              },
        -              "standard": {
        -                "enum": [
        -                  "CESMM4",
        -                  "NRM2",
        -                  "SMM7",
        -                  "MMHW"
        -                ],
        -                "type": "string"
        -              },
        -              "text_summary": {
        -                "maxLength": 2000,
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "totals_summary": {
        -                "additionalProperties": false,
        -                "description": "Schema § 1.4 — totals_summary as a typed wrapper around the free-form dict.\n\nWire shape is a flat object (`{\"concrete_m3\": {...}, \"rebar_t\": {...}}`).\nWe model it as `RootModel`-equivalent via `model_config(extra=\"allow\")`\n+ a single `__root__`-style `entries` dict. Pydantic v2 recommends\n`RootModel` for free-form roots; using a wrapper class keeps the import\nsurface uniform with the rest of this module.",
        -                "properties": {
        -                  "entries": {
        -                    "additionalProperties": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.4 — single material/work-class total entry.",
        -                      "properties": {
        -                        "quantity": {
        -                          "minimum": 0,
        -                          "type": "number"
        -                        },
        -                        "unit": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "quantity",
        -                        "unit"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "object"
        -                  }
        -                },
        -                "type": "object"
        -              },
        -              "warnings": {
        -                "items": {
        -                  "additionalProperties": false,
        -                  "description": "Schema § 1.8 — a non-fatal geometry advisory (56th-fire T2).\n\nThe wire projection of the engine's `core.GeometryWarning`. Advisory only:\na warning NEVER changes a measured quantity — it flags geometry that is\nvalid but likely a mistake (e.g. a stale dependent-height default). Present\non BOTH tiers — a correctness/safety signal, not a paid feature.",
        -                  "properties": {
        -                    "affected_params": {
        -                      "items": {
        -                        "type": "string"
        -                      },
        -                      "type": "array"
        -                    },
        -                    "code": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "detail": {
        -                      "additionalProperties": {
        -                        "type": "number"
        -                      },
        -                      "type": "object"
        -                    },
        -                    "message": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "severity": {
        -                      "enum": [
        -                        "info",
        -                        "advisory",
        -                        "caution"
        -                      ],
        -                      "type": "string"
        -                    }
        -                  },
        -                  "required": [
        -                    "code",
        -                    "severity",
        -                    "message"
        -                  ],
        -                  "type": "object"
        -                },
        -                "type": "array"
        -              }
        -            },
        -            "required": [
        -              "assembly_slug",
        -              "standard",
        -              "parameters_used",
        -              "boq_rows",
        -              "totals_summary",
        -              "text_summary"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      },
        -      "error": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        -            "properties": {
        -              "code": {
        -                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        -                "enum": [
        -                  "RATE_LIMIT_EXCEEDED",
        -                  "TIER_INSUFFICIENT",
        -                  "INVALID_INPUT",
        -                  "SCHEMA_VERSION_MISMATCH",
        -                  "SCHEMA_INVARIANT_VIOLATION",
        -                  "UPSTREAM_TIMEOUT",
        -                  "BACKEND_FAILURE",
        -                  "IP_BLOCKED",
        -                  "RESOURCE_NOT_FOUND",
        -                  "RENDER_FAILURE",
        -                  "OCR_LOW_CONFIDENCE",
        -                  "MANUAL_REVIEW_REQUIRED",
        -                  "ACCEPTANCE_REQUIRED",
        -                  "INVALID_TOKEN"
        -                ],
        -                "type": "string"
        -              },
        -              "details": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "message": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "recoverable": {
        -                "type": "boolean"
        -              },
        -              "retry_after_seconds": {
        -                "anyOf": [
        -                  {
        -                    "minimum": 0,
        -                    "type": "integer"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              }
        -            },
        -            "required": [
        -              "code",
        -              "message",
        -              "recoverable"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      }
        -    },
        -    "required": [
        -      "_meta"
        -    ],
        -    "type": "object"
        -  },
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "_meta": {
        -        "additionalProperties": false,
        -        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        -        "properties": {
        -          "deliverables": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        -                "properties": {
        -                  "docx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "dxf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "expires_at": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  },
        -                  "pdf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "xlsx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "expires_at"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "document_id": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "issued_at": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "rate_limit_remaining": {
        -            "anyOf": [
        -              {
        -                "minimum": 0,
        -                "type": "integer"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "request_id": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "schema_version": {
        -            "const": "1.0.0",
        -            "default": "1.0.0",
        -            "type": "string"
        -          },
        -          "scope_boundary": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        -                "properties": {
        -                  "not_in_scope": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "produced": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "recommended_companions": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "type": "string"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "produced",
        -                  "not_in_scope"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tier": {
        -            "enum": [
        -              "free",
        -              "paid"
        -            ],
        -            "type": "string"
        -          },
        -          "tier_upgrade": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        -                "properties": {
        -                  "available_tiers": {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        -                      "properties": {
        -                        "billing": {
        -                          "enum": [
        -                            "one_off",
        -                            "monthly",
        -                            "annual"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "currency": {
        -                          "enum": [
        -                            "GBP",
        -                            "SGD",
        -                            "EUR",
        -                            "USD",
        -                            "CAD",
        -                            "AUD",
        -                            "NZD",
        -                            "MYR"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "display_name": {
        -                          "type": "string"
        -                        },
        -                        "price_local": {
        -                          "type": "number"
        -                        },
        -                        "tier_slug": {
        -                          "enum": [
        -                            "7_day_pass",
        -                            "solo",
        -                            "studio",
        -                            "practice"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "unlock_summary": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "tier_slug",
        -                        "display_name",
        -                        "price_local",
        -                        "currency",
        -                        "billing",
        -                        "unlock_summary"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "current_tier": {
        -                    "const": "free",
        -                    "default": "free",
        -                    "type": "string"
        -                  },
        -                  "pass_credit": {
        -                    "anyOf": [
        -                      {
        -                        "additionalProperties": false,
        -                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        -                        "properties": {
        -                          "amount_local": {
        -                            "type": "number"
        -                          },
        -                          "applies_to": {
        -                            "const": "solo_first_month",
        -                            "default": "solo_first_month",
        -                            "type": "string"
        -                          },
        -                          "currency": {
        -                            "type": "string"
        -                          },
        -                          "redeemable_until": {
        -                            "type": "string"
        -                          }
        -                        },
        -                        "required": [
        -                          "amount_local",
        -                          "currency",
        -                          "redeemable_until"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "pricing_url": {
        -                    "default": "https://civilquants.com/pricing",
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "available_tiers"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tos_url": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "upgrade_hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "warranty_disclaimer": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          }
        -        },
        -        "required": [
        -          "request_id",
        -          "issued_at",
        -          "tier"
        -        ],
        -        "type": "object"
        -      },
        -      "data": {
        -        "default": null,
        -        "title": "Data"
        -      },
        -      "error": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        -            "properties": {
        -              "code": {
        -                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        -                "enum": [
        -                  "RATE_LIMIT_EXCEEDED",
        -                  "TIER_INSUFFICIENT",
        -                  "INVALID_INPUT",
        -                  "SCHEMA_VERSION_MISMATCH",
        -                  "SCHEMA_INVARIANT_VIOLATION",
        -                  "UPSTREAM_TIMEOUT",
        -                  "BACKEND_FAILURE",
        -                  "IP_BLOCKED",
        -                  "RESOURCE_NOT_FOUND",
        -                  "RENDER_FAILURE",
        -                  "OCR_LOW_CONFIDENCE",
        -                  "MANUAL_REVIEW_REQUIRED",
        -                  "ACCEPTANCE_REQUIRED",
        -                  "INVALID_TOKEN"
        -                ],
        -                "type": "string"
        -              },
        -              "details": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "message": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "recoverable": {
        -                "type": "boolean"
        -              },
        -              "retry_after_seconds": {
        -                "anyOf": [
        -                  {
        -                    "minimum": 0,
        -                    "type": "integer"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              }
        -            },
        -            "required": [
        -              "code",
        -              "message",
        -              "recoverable"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      }
        -    },
        -    "required": [
        -      "_meta"
        -    ],
        -    "type": "object"
        -  }
        -]New value: +[
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "_meta": {
        +        "additionalProperties": false,
        +        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        +        "properties": {
        +          "deliverables": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        +                "properties": {
        +                  "docx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "dxf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "expires_at": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  },
        +                  "pdf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "xlsx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "expires_at"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "document_id": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "issued_at": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "output_mode": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Surfaces what a trimmed ``output_mode`` withheld from ``data``.\n\nA trimmed mode (``summary`` / ``boq`` / ``boq_with_backup``) withholds\nalready-computed fields to keep the chat payload small. The withheld value\nreads to a client agent as \"capability missing\" (the box-culvert \"geometry\nbuilder isn't firing\" scare) rather than \"pared for size\": ``drawing`` and\n``audit_trail`` appear as ``null``, ``boq_rows`` as an empty list ``[]``\n(its type forbids ``null``) — both indistinguishable from a genuine absent\nresult. This names the withheld fields and the exact mode that brings each\nback, so the value is unambiguous. Absent on the default ``full_json`` mode\n— nothing is withheld, nothing to point at.",
        +                "properties": {
        +                  "mode": {
        +                    "enum": [
        +                      "summary",
        +                      "boq",
        +                      "boq_with_backup"
        +                    ],
        +                    "type": "string"
        +                  },
        +                  "omitted_fields": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "minItems": 1,
        +                    "type": "array"
        +                  },
        +                  "retrieve_with": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "mode",
        +                  "omitted_fields",
        +                  "retrieve_with"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "rate_limit_remaining": {
        +            "anyOf": [
        +              {
        +                "minimum": 0,
        +                "type": "integer"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "request_id": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "schema_version": {
        +            "const": "1.0.0",
        +            "default": "1.0.0",
        +            "type": "string"
        +          },
        +          "scope_boundary": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        +                "properties": {
        +                  "not_in_scope": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "produced": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "recommended_companions": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "type": "string"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "produced",
        +                  "not_in_scope"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tier": {
        +            "enum": [
        +              "free",
        +              "paid"
        +            ],
        +            "type": "string"
        +          },
        +          "tier_upgrade": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        +                "properties": {
        +                  "available_tiers": {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        +                      "properties": {
        +                        "billing": {
        +                          "enum": [
        +                            "one_off",
        +                            "monthly",
        +                            "annual"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "currency": {
        +                          "enum": [
        +                            "GBP",
        +                            "SGD",
        +                            "EUR",
        +                            "USD",
        +                            "CAD",
        +                            "AUD",
        +                            "NZD",
        +                            "MYR"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "display_name": {
        +                          "type": "string"
        +                        },
        +                        "price_local": {
        +                          "type": "number"
        +                        },
        +                        "tier_slug": {
        +                          "enum": [
        +                            "7_day_pass",
        +                            "solo",
        +                            "studio",
        +                            "practice"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "unlock_summary": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "tier_slug",
        +                        "display_name",
        +                        "price_local",
        +                        "currency",
        +                        "billing",
        +                        "unlock_summary"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "current_tier": {
        +                    "const": "free",
        +                    "default": "free",
        +                    "type": "string"
        +                  },
        +                  "pass_credit": {
        +                    "anyOf": [
        +                      {
        +                        "additionalProperties": false,
        +                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        +                        "properties": {
        +                          "amount_local": {
        +                            "type": "number"
        +                          },
        +                          "applies_to": {
        +                            "const": "solo_first_month",
        +                            "default": "solo_first_month",
        +                            "type": "string"
        +                          },
        +                          "currency": {
        +                            "type": "string"
        +                          },
        +                          "redeemable_until": {
        +                            "type": "string"
        +                          }
        +                        },
        +                        "required": [
        +                          "amount_local",
        +                          "currency",
        +                          "redeemable_until"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "pricing_url": {
        +                    "default": "https://civilquants.com/pricing",
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "available_tiers"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tos_url": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "upgrade_hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "warranty_disclaimer": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          }
        +        },
        +        "required": [
        +          "request_id",
        +          "issued_at",
        +          "tier"
        +        ],
        +        "type": "object"
        +      },
        +      "data": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Schema § 1.1 — the typed payload returned inside `MCPResponse[ComputeResult]`.\n\nFree-tier responses omit `drawings` (the downloadable CAD artefact\npointers — the paid differentiator); the bridge enforces this. The\n`audit_trail` and the inline `drawing` preview are present on BOTH tiers\n(V1 ALIGN / 60th-fire D + C). `text_summary` is bounded to 2000 chars —\nkeeps the LLM-facing summary token-cheap and forces longer narrative into\nBoQ row descriptions where it belongs. `warnings` is the non-fatal\ngeometry advisory list (both tiers).",
        +            "properties": {
        +              "assembly_slug": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "audit_trail": {
        +                "anyOf": [
        +                  {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.7 — paid-tier audit-trail entry.\n\nOne entry per BoQ row; `boq_row_index` ties to the row position in\n`ComputeResult.boq_rows`. `derivation` is the human-readable formula\nwalk-through; `formula` is the optional formal expression.",
        +                      "properties": {
        +                        "boq_row_index": {
        +                          "minimum": 0,
        +                          "type": "integer"
        +                        },
        +                        "derivation": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "formula": {
        +                          "anyOf": [
        +                            {
        +                              "type": "string"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ],
        +                          "default": null
        +                        },
        +                        "id": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "parameters_referenced": {
        +                          "items": {
        +                            "type": "string"
        +                          },
        +                          "type": "array"
        +                        }
        +                      },
        +                      "required": [
        +                        "id",
        +                        "boq_row_index",
        +                        "derivation"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "boq_rows": {
        +                "items": {
        +                  "additionalProperties": false,
        +                  "description": "Schema § 1.3 — a single bill row in the requested standard's format.\n\n`description` is the non-verbatim functional description per spec § 13.9 /\n§ 15 invariant — NEVER reproduces a standard's verbatim clause text.\n`rate` / `amount` ship null because rates are commodity data the customer\nowns; the engine's job is the measurement, not the pricing.",
        +                  "properties": {
        +                    "amount": {
        +                      "anyOf": [
        +                        {
        +                          "type": "number"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "attribution": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "audit_id": {
        +                      "anyOf": [
        +                        {
        +                          "type": "string"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "description": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "quantity": {
        +                      "minimum": 0,
        +                      "type": "number"
        +                    },
        +                    "rate": {
        +                      "anyOf": [
        +                        {
        +                          "type": "number"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "unit": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "work_section": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    }
        +                  },
        +                  "required": [
        +                    "work_section",
        +                    "description",
        +                    "quantity",
        +                    "unit",
        +                    "attribution"
        +                  ],
        +                  "type": "object"
        +                },
        +                "type": "array"
        +              },
        +              "drawing": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": false,
        +                    "description": "Schema § 1.6a — inline server-rendered SVG preview of the geometry.\n\nThe MCP mirror of the web ``/compute`` response's ``drawing`` field\n(``api.schemas.compute.DrawingRef``): the same on-screen dimensioned\ndrawing both tiers see in the workspace, surfaced on the MCP compute\nresponse so a chat client can render it inline (60th-fire item C). This\nis the on-screen preview — present on BOTH tiers per the free/paid\nboundary; the downloadable CAD artefacts (DXF / dimensioned PDF) remain\nthe paid differentiator via the export tools.\n\nDefined here rather than importing ``DrawingRef`` because the web\n``schemas`` package imports back into this module (``schemas.render``),\nso reusing it would create an import cycle — the MCP wire contract keeps\nits own copy, the same pattern as ``BoQRow`` / ``DrawingReference``.",
        +                    "properties": {
        +                      "entity_count": {
        +                        "minimum": 0,
        +                        "type": "integer"
        +                      },
        +                      "svg_b64": {
        +                        "minLength": 1,
        +                        "type": "string"
        +                      },
        +                      "unit_of_drawing": {
        +                        "const": "m",
        +                        "default": "m",
        +                        "type": "string"
        +                      },
        +                      "viewbox_height": {
        +                        "exclusiveMinimum": 0,
        +                        "type": "number"
        +                      },
        +                      "viewbox_width": {
        +                        "exclusiveMinimum": 0,
        +                        "type": "number"
        +                      },
        +                      "viewbox_x": {
        +                        "type": "number"
        +                      },
        +                      "viewbox_y": {
        +                        "type": "number"
        +                      }
        +                    },
        +                    "required": [
        +                      "svg_b64",
        +                      "viewbox_x",
        +                      "viewbox_y",
        +                      "viewbox_width",
        +                      "viewbox_height",
        +                      "entity_count"
        +                    ],
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "drawings": {
        +                "anyOf": [
        +                  {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.6 — paid-tier drawing artefact pointer.\n\n`url` is an R2-signed URL; expiry is carried in `_meta.deliverables.expires_at`\non the envelope (not duplicated here). `layers` is DXF-only; PDF/SVG\ncallers omit it.",
        +                      "properties": {
        +                        "drawing_type": {
        +                          "enum": [
        +                            "section",
        +                            "plan",
        +                            "elevation",
        +                            "isometric",
        +                            "detail"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "format": {
        +                          "enum": [
        +                            "DXF",
        +                            "PDF",
        +                            "SVG"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "layers": {
        +                          "anyOf": [
        +                            {
        +                              "items": {
        +                                "type": "string"
        +                              },
        +                              "type": "array"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ],
        +                          "default": null
        +                        },
        +                        "scale": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "sheet_size": {
        +                          "enum": [
        +                            "A1",
        +                            "A2",
        +                            "A3",
        +                            "A4"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "url": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "drawing_type",
        +                        "format",
        +                        "url",
        +                        "sheet_size",
        +                        "scale"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "parameters_used": {
        +                "additionalProperties": false,
        +                "description": "Schema § 1.2 — the parameter snapshot the engine actually used.\n\nSplits user-supplied values from engine defaults so customers can see\nwhich numbers came from them and which the engine filled in. Every\ndefaulted parameter SHOULD have a corresponding entry in `assumptions`\n— the bridge layer enforces this when wrapping engine output.",
        +                "properties": {
        +                  "assumptions": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "engine_defaults": {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  "user_supplied": {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  }
        +                },
        +                "type": "object"
        +              },
        +              "standard": {
        +                "enum": [
        +                  "CESMM4",
        +                  "NRM2",
        +                  "SMM7",
        +                  "MMHW"
        +                ],
        +                "type": "string"
        +              },
        +              "text_summary": {
        +                "maxLength": 2000,
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "totals_summary": {
        +                "additionalProperties": false,
        +                "description": "Schema § 1.4 — totals_summary as a typed wrapper around the free-form dict.\n\nWire shape is a flat object (`{\"concrete_m3\": {...}, \"rebar_t\": {...}}`).\nWe model it as `RootModel`-equivalent via `model_config(extra=\"allow\")`\n+ a single `__root__`-style `entries` dict. Pydantic v2 recommends\n`RootModel` for free-form roots; using a wrapper class keeps the import\nsurface uniform with the rest of this module.",
        +                "properties": {
        +                  "entries": {
        +                    "additionalProperties": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.4 — single material/work-class total entry.",
        +                      "properties": {
        +                        "quantity": {
        +                          "minimum": 0,
        +                          "type": "number"
        +                        },
        +                        "unit": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "quantity",
        +                        "unit"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "object"
        +                  }
        +                },
        +                "type": "object"
        +              },
        +              "warnings": {
        +                "items": {
        +                  "additionalProperties": false,
        +                  "description": "Schema § 1.8 — a non-fatal geometry advisory (56th-fire T2).\n\nThe wire projection of the engine's `core.GeometryWarning`. Advisory only:\na warning NEVER changes a measured quantity — it flags geometry that is\nvalid but likely a mistake (e.g. a stale dependent-height default). Present\non BOTH tiers — a correctness/safety signal, not a paid feature.",
        +                  "properties": {
        +                    "affected_params": {
        +                      "items": {
        +                        "type": "string"
        +                      },
        +                      "type": "array"
        +                    },
        +                    "code": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "detail": {
        +                      "additionalProperties": {
        +                        "type": "number"
        +                      },
        +                      "type": "object"
        +                    },
        +                    "message": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "severity": {
        +                      "enum": [
        +                        "info",
        +                        "advisory",
        +                        "caution"
        +                      ],
        +                      "type": "string"
        +                    }
        +                  },
        +                  "required": [
        +                    "code",
        +                    "severity",
        +                    "message"
        +                  ],
        +                  "type": "object"
        +                },
        +                "type": "array"
        +              }
        +            },
        +            "required": [
        +              "assembly_slug",
        +              "standard",
        +              "parameters_used",
        +              "boq_rows",
        +              "totals_summary",
        +              "text_summary"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      },
        +      "error": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        +            "properties": {
        +              "code": {
        +                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        +                "enum": [
        +                  "RATE_LIMIT_EXCEEDED",
        +                  "TIER_INSUFFICIENT",
        +                  "INVALID_INPUT",
        +                  "SCHEMA_VERSION_MISMATCH",
        +                  "SCHEMA_INVARIANT_VIOLATION",
        +                  "UPSTREAM_TIMEOUT",
        +                  "BACKEND_FAILURE",
        +                  "IP_BLOCKED",
        +                  "RESOURCE_NOT_FOUND",
        +                  "RENDER_FAILURE",
        +                  "OCR_LOW_CONFIDENCE",
        +                  "MANUAL_REVIEW_REQUIRED",
        +                  "ACCEPTANCE_REQUIRED",
        +                  "INVALID_TOKEN"
        +                ],
        +                "type": "string"
        +              },
        +              "details": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "message": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "recoverable": {
        +                "type": "boolean"
        +              },
        +              "retry_after_seconds": {
        +                "anyOf": [
        +                  {
        +                    "minimum": 0,
        +                    "type": "integer"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              }
        +            },
        +            "required": [
        +              "code",
        +              "message",
        +              "recoverable"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      }
        +    },
        +    "required": [
        +      "_meta"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "_meta": {
        +        "additionalProperties": false,
        +        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        +        "properties": {
        +          "deliverables": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        +                "properties": {
        +                  "docx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "dxf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "expires_at": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  },
        +                  "pdf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "xlsx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "expires_at"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "document_id": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "issued_at": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "output_mode": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Surfaces what a trimmed ``output_mode`` withheld from ``data``.\n\nA trimmed mode (``summary`` / ``boq`` / ``boq_with_backup``) withholds\nalready-computed fields to keep the chat payload small. The withheld value\nreads to a client agent as \"capability missing\" (the box-culvert \"geometry\nbuilder isn't firing\" scare) rather than \"pared for size\": ``drawing`` and\n``audit_trail`` appear as ``null``, ``boq_rows`` as an empty list ``[]``\n(its type forbids ``null``) — both indistinguishable from a genuine absent\nresult. This names the withheld fields and the exact mode that brings each\nback, so the value is unambiguous. Absent on the default ``full_json`` mode\n— nothing is withheld, nothing to point at.",
        +                "properties": {
        +                  "mode": {
        +                    "enum": [
        +                      "summary",
        +                      "boq",
        +                      "boq_with_backup"
        +                    ],
        +                    "type": "string"
        +                  },
        +                  "omitted_fields": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "minItems": 1,
        +                    "type": "array"
        +                  },
        +                  "retrieve_with": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "mode",
        +                  "omitted_fields",
        +                  "retrieve_with"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "rate_limit_remaining": {
        +            "anyOf": [
        +              {
        +                "minimum": 0,
        +                "type": "integer"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "request_id": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "schema_version": {
        +            "const": "1.0.0",
        +            "default": "1.0.0",
        +            "type": "string"
        +          },
        +          "scope_boundary": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        +                "properties": {
        +                  "not_in_scope": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "produced": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "recommended_companions": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "type": "string"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "produced",
        +                  "not_in_scope"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tier": {
        +            "enum": [
        +              "free",
        +              "paid"
        +            ],
        +            "type": "string"
        +          },
        +          "tier_upgrade": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        +                "properties": {
        +                  "available_tiers": {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        +                      "properties": {
        +                        "billing": {
        +                          "enum": [
        +                            "one_off",
        +                            "monthly",
        +                            "annual"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "currency": {
        +                          "enum": [
        +                            "GBP",
        +                            "SGD",
        +                            "EUR",
        +                            "USD",
        +                            "CAD",
        +                            "AUD",
        +                            "NZD",
        +                            "MYR"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "display_name": {
        +                          "type": "string"
        +                        },
        +                        "price_local": {
        +                          "type": "number"
        +                        },
        +                        "tier_slug": {
        +                          "enum": [
        +                            "7_day_pass",
        +                            "solo",
        +                            "studio",
        +                            "practice"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "unlock_summary": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "tier_slug",
        +                        "display_name",
        +                        "price_local",
        +                        "currency",
        +                        "billing",
        +                        "unlock_summary"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "current_tier": {
        +                    "const": "free",
        +                    "default": "free",
        +                    "type": "string"
        +                  },
        +                  "pass_credit": {
        +                    "anyOf": [
        +                      {
        +                        "additionalProperties": false,
        +                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        +                        "properties": {
        +                          "amount_local": {
        +                            "type": "number"
        +                          },
        +                          "applies_to": {
        +                            "const": "solo_first_month",
        +                            "default": "solo_first_month",
        +                            "type": "string"
        +                          },
        +                          "currency": {
        +                            "type": "string"
        +                          },
        +                          "redeemable_until": {
        +                            "type": "string"
        +                          }
        +                        },
        +                        "required": [
        +                          "amount_local",
        +                          "currency",
        +                          "redeemable_until"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "pricing_url": {
        +                    "default": "https://civilquants.com/pricing",
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "available_tiers"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tos_url": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "upgrade_hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "warranty_disclaimer": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          }
        +        },
        +        "required": [
        +          "request_id",
        +          "issued_at",
        +          "tier"
        +        ],
        +        "type": "object"
        +      },
        +      "data": {
        +        "default": null,
        +        "title": "Data"
        +      },
        +      "error": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        +            "properties": {
        +              "code": {
        +                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        +                "enum": [
        +                  "RATE_LIMIT_EXCEEDED",
        +                  "TIER_INSUFFICIENT",
        +                  "INVALID_INPUT",
        +                  "SCHEMA_VERSION_MISMATCH",
        +                  "SCHEMA_INVARIANT_VIOLATION",
        +                  "UPSTREAM_TIMEOUT",
        +                  "BACKEND_FAILURE",
        +                  "IP_BLOCKED",
        +                  "RESOURCE_NOT_FOUND",
        +                  "RENDER_FAILURE",
        +                  "OCR_LOW_CONFIDENCE",
        +                  "MANUAL_REVIEW_REQUIRED",
        +                  "ACCEPTANCE_REQUIRED",
        +                  "INVALID_TOKEN"
        +                ],
        +                "type": "string"
        +              },
        +              "details": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "message": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "recoverable": {
        +                "type": "boolean"
        +              },
        +              "retry_after_seconds": {
        +                "anyOf": [
        +                  {
        +                    "minimum": 0,
        +                    "type": "integer"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              }
        +            },
        +            "required": [
        +              "code",
        +              "message",
        +              "recoverable"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      }
        +    },
        +    "required": [
        +      "_meta"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedcompute_french_drain1 field changed
      • changedOutput schema / properties / result / anyOf
        Previous value: -[
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "_meta": {
        -        "additionalProperties": false,
        -        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        -        "properties": {
        -          "deliverables": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        -                "properties": {
        -                  "docx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "dxf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "expires_at": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  },
        -                  "pdf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "xlsx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "expires_at"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "document_id": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "issued_at": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "rate_limit_remaining": {
        -            "anyOf": [
        -              {
        -                "minimum": 0,
        -                "type": "integer"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "request_id": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "schema_version": {
        -            "const": "1.0.0",
        -            "default": "1.0.0",
        -            "type": "string"
        -          },
        -          "scope_boundary": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        -                "properties": {
        -                  "not_in_scope": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "produced": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "recommended_companions": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "type": "string"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "produced",
        -                  "not_in_scope"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tier": {
        -            "enum": [
        -              "free",
        -              "paid"
        -            ],
        -            "type": "string"
        -          },
        -          "tier_upgrade": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        -                "properties": {
        -                  "available_tiers": {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        -                      "properties": {
        -                        "billing": {
        -                          "enum": [
        -                            "one_off",
        -                            "monthly",
        -                            "annual"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "currency": {
        -                          "enum": [
        -                            "GBP",
        -                            "SGD",
        -                            "EUR",
        -                            "USD",
        -                            "CAD",
        -                            "AUD",
        -                            "NZD",
        -                            "MYR"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "display_name": {
        -                          "type": "string"
        -                        },
        -                        "price_local": {
        -                          "type": "number"
        -                        },
        -                        "tier_slug": {
        -                          "enum": [
        -                            "7_day_pass",
        -                            "solo",
        -                            "studio",
        -                            "practice"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "unlock_summary": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "tier_slug",
        -                        "display_name",
        -                        "price_local",
        -                        "currency",
        -                        "billing",
        -                        "unlock_summary"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "current_tier": {
        -                    "const": "free",
        -                    "default": "free",
        -                    "type": "string"
        -                  },
        -                  "pass_credit": {
        -                    "anyOf": [
        -                      {
        -                        "additionalProperties": false,
        -                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        -                        "properties": {
        -                          "amount_local": {
        -                            "type": "number"
        -                          },
        -                          "applies_to": {
        -                            "const": "solo_first_month",
        -                            "default": "solo_first_month",
        -                            "type": "string"
        -                          },
        -                          "currency": {
        -                            "type": "string"
        -                          },
        -                          "redeemable_until": {
        -                            "type": "string"
        -                          }
        -                        },
        -                        "required": [
        -                          "amount_local",
        -                          "currency",
        -                          "redeemable_until"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "pricing_url": {
        -                    "default": "https://civilquants.com/pricing",
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "available_tiers"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tos_url": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "upgrade_hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "warranty_disclaimer": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          }
        -        },
        -        "required": [
        -          "request_id",
        -          "issued_at",
        -          "tier"
        -        ],
        -        "type": "object"
        -      },
        -      "data": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Schema § 1.1 — the typed payload returned inside `MCPResponse[ComputeResult]`.\n\nFree-tier responses omit `drawings` (the downloadable CAD artefact\npointers — the paid differentiator); the bridge enforces this. The\n`audit_trail` and the inline `drawing` preview are present on BOTH tiers\n(V1 ALIGN / 60th-fire D + C). `text_summary` is bounded to 2000 chars —\nkeeps the LLM-facing summary token-cheap and forces longer narrative into\nBoQ row descriptions where it belongs. `warnings` is the non-fatal\ngeometry advisory list (both tiers).",
        -            "properties": {
        -              "assembly_slug": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "audit_trail": {
        -                "anyOf": [
        -                  {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.7 — paid-tier audit-trail entry.\n\nOne entry per BoQ row; `boq_row_index` ties to the row position in\n`ComputeResult.boq_rows`. `derivation` is the human-readable formula\nwalk-through; `formula` is the optional formal expression.",
        -                      "properties": {
        -                        "boq_row_index": {
        -                          "minimum": 0,
        -                          "type": "integer"
        -                        },
        -                        "derivation": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "formula": {
        -                          "anyOf": [
        -                            {
        -                              "type": "string"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ],
        -                          "default": null
        -                        },
        -                        "id": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "parameters_referenced": {
        -                          "items": {
        -                            "type": "string"
        -                          },
        -                          "type": "array"
        -                        }
        -                      },
        -                      "required": [
        -                        "id",
        -                        "boq_row_index",
        -                        "derivation"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "boq_rows": {
        -                "items": {
        -                  "additionalProperties": false,
        -                  "description": "Schema § 1.3 — a single bill row in the requested standard's format.\n\n`description` is the non-verbatim functional description per spec § 13.9 /\n§ 15 invariant — NEVER reproduces a standard's verbatim clause text.\n`rate` / `amount` ship null because rates are commodity data the customer\nowns; the engine's job is the measurement, not the pricing.",
        -                  "properties": {
        -                    "amount": {
        -                      "anyOf": [
        -                        {
        -                          "type": "number"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "attribution": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "audit_id": {
        -                      "anyOf": [
        -                        {
        -                          "type": "string"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "description": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "quantity": {
        -                      "minimum": 0,
        -                      "type": "number"
        -                    },
        -                    "rate": {
        -                      "anyOf": [
        -                        {
        -                          "type": "number"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "unit": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "work_section": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    }
        -                  },
        -                  "required": [
        -                    "work_section",
        -                    "description",
        -                    "quantity",
        -                    "unit",
        -                    "attribution"
        -                  ],
        -                  "type": "object"
        -                },
        -                "type": "array"
        -              },
        -              "drawing": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": false,
        -                    "description": "Schema § 1.6a — inline server-rendered SVG preview of the geometry.\n\nThe MCP mirror of the web ``/compute`` response's ``drawing`` field\n(``api.schemas.compute.DrawingRef``): the same on-screen dimensioned\ndrawing both tiers see in the workspace, surfaced on the MCP compute\nresponse so a chat client can render it inline (60th-fire item C). This\nis the on-screen preview — present on BOTH tiers per the free/paid\nboundary; the downloadable CAD artefacts (DXF / dimensioned PDF) remain\nthe paid differentiator via the export tools.\n\nDefined here rather than importing ``DrawingRef`` because the web\n``schemas`` package imports back into this module (``schemas.render``),\nso reusing it would create an import cycle — the MCP wire contract keeps\nits own copy, the same pattern as ``BoQRow`` / ``DrawingReference``.",
        -                    "properties": {
        -                      "entity_count": {
        -                        "minimum": 0,
        -                        "type": "integer"
        -                      },
        -                      "svg_b64": {
        -                        "minLength": 1,
        -                        "type": "string"
        -                      },
        -                      "unit_of_drawing": {
        -                        "const": "m",
        -                        "default": "m",
        -                        "type": "string"
        -                      },
        -                      "viewbox_height": {
        -                        "exclusiveMinimum": 0,
        -                        "type": "number"
        -                      },
        -                      "viewbox_width": {
        -                        "exclusiveMinimum": 0,
        -                        "type": "number"
        -                      },
        -                      "viewbox_x": {
        -                        "type": "number"
        -                      },
        -                      "viewbox_y": {
        -                        "type": "number"
        -                      }
        -                    },
        -                    "required": [
        -                      "svg_b64",
        -                      "viewbox_x",
        -                      "viewbox_y",
        -                      "viewbox_width",
        -                      "viewbox_height",
        -                      "entity_count"
        -                    ],
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "drawings": {
        -                "anyOf": [
        -                  {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.6 — paid-tier drawing artefact pointer.\n\n`url` is an R2-signed URL; expiry is carried in `_meta.deliverables.expires_at`\non the envelope (not duplicated here). `layers` is DXF-only; PDF/SVG\ncallers omit it.",
        -                      "properties": {
        -                        "drawing_type": {
        -                          "enum": [
        -                            "section",
        -                            "plan",
        -                            "elevation",
        -                            "isometric",
        -                            "detail"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "format": {
        -                          "enum": [
        -                            "DXF",
        -                            "PDF",
        -                            "SVG"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "layers": {
        -                          "anyOf": [
        -                            {
        -                              "items": {
        -                                "type": "string"
        -                              },
        -                              "type": "array"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ],
        -                          "default": null
        -                        },
        -                        "scale": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "sheet_size": {
        -                          "enum": [
        -                            "A1",
        -                            "A2",
        -                            "A3",
        -                            "A4"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "url": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "drawing_type",
        -                        "format",
        -                        "url",
        -                        "sheet_size",
        -                        "scale"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "parameters_used": {
        -                "additionalProperties": false,
        -                "description": "Schema § 1.2 — the parameter snapshot the engine actually used.\n\nSplits user-supplied values from engine defaults so customers can see\nwhich numbers came from them and which the engine filled in. Every\ndefaulted parameter SHOULD have a corresponding entry in `assumptions`\n— the bridge layer enforces this when wrapping engine output.",
        -                "properties": {
        -                  "assumptions": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "engine_defaults": {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  "user_supplied": {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  }
        -                },
        -                "type": "object"
        -              },
        -              "standard": {
        -                "enum": [
        -                  "CESMM4",
        -                  "NRM2",
        -                  "SMM7",
        -                  "MMHW"
        -                ],
        -                "type": "string"
        -              },
        -              "text_summary": {
        -                "maxLength": 2000,
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "totals_summary": {
        -                "additionalProperties": false,
        -                "description": "Schema § 1.4 — totals_summary as a typed wrapper around the free-form dict.\n\nWire shape is a flat object (`{\"concrete_m3\": {...}, \"rebar_t\": {...}}`).\nWe model it as `RootModel`-equivalent via `model_config(extra=\"allow\")`\n+ a single `__root__`-style `entries` dict. Pydantic v2 recommends\n`RootModel` for free-form roots; using a wrapper class keeps the import\nsurface uniform with the rest of this module.",
        -                "properties": {
        -                  "entries": {
        -                    "additionalProperties": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.4 — single material/work-class total entry.",
        -                      "properties": {
        -                        "quantity": {
        -                          "minimum": 0,
        -                          "type": "number"
        -                        },
        -                        "unit": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "quantity",
        -                        "unit"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "object"
        -                  }
        -                },
        -                "type": "object"
        -              },
        -              "warnings": {
        -                "items": {
        -                  "additionalProperties": false,
        -                  "description": "Schema § 1.8 — a non-fatal geometry advisory (56th-fire T2).\n\nThe wire projection of the engine's `core.GeometryWarning`. Advisory only:\na warning NEVER changes a measured quantity — it flags geometry that is\nvalid but likely a mistake (e.g. a stale dependent-height default). Present\non BOTH tiers — a correctness/safety signal, not a paid feature.",
        -                  "properties": {
        -                    "affected_params": {
        -                      "items": {
        -                        "type": "string"
        -                      },
        -                      "type": "array"
        -                    },
        -                    "code": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "detail": {
        -                      "additionalProperties": {
        -                        "type": "number"
        -                      },
        -                      "type": "object"
        -                    },
        -                    "message": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "severity": {
        -                      "enum": [
        -                        "info",
        -                        "advisory",
        -                        "caution"
        -                      ],
        -                      "type": "string"
        -                    }
        -                  },
        -                  "required": [
        -                    "code",
        -                    "severity",
        -                    "message"
        -                  ],
        -                  "type": "object"
        -                },
        -                "type": "array"
        -              }
        -            },
        -            "required": [
        -              "assembly_slug",
        -              "standard",
        -              "parameters_used",
        -              "boq_rows",
        -              "totals_summary",
        -              "text_summary"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      },
        -      "error": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        -            "properties": {
        -              "code": {
        -                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        -                "enum": [
        -                  "RATE_LIMIT_EXCEEDED",
        -                  "TIER_INSUFFICIENT",
        -                  "INVALID_INPUT",
        -                  "SCHEMA_VERSION_MISMATCH",
        -                  "SCHEMA_INVARIANT_VIOLATION",
        -                  "UPSTREAM_TIMEOUT",
        -                  "BACKEND_FAILURE",
        -                  "IP_BLOCKED",
        -                  "RESOURCE_NOT_FOUND",
        -                  "RENDER_FAILURE",
        -                  "OCR_LOW_CONFIDENCE",
        -                  "MANUAL_REVIEW_REQUIRED",
        -                  "ACCEPTANCE_REQUIRED",
        -                  "INVALID_TOKEN"
        -                ],
        -                "type": "string"
        -              },
        -              "details": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "message": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "recoverable": {
        -                "type": "boolean"
        -              },
        -              "retry_after_seconds": {
        -                "anyOf": [
        -                  {
        -                    "minimum": 0,
        -                    "type": "integer"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              }
        -            },
        -            "required": [
        -              "code",
        -              "message",
        -              "recoverable"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      }
        -    },
        -    "required": [
        -      "_meta"
        -    ],
        -    "type": "object"
        -  },
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "_meta": {
        -        "additionalProperties": false,
        -        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        -        "properties": {
        -          "deliverables": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        -                "properties": {
        -                  "docx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "dxf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "expires_at": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  },
        -                  "pdf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "xlsx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "expires_at"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "document_id": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "issued_at": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "rate_limit_remaining": {
        -            "anyOf": [
        -              {
        -                "minimum": 0,
        -                "type": "integer"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "request_id": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "schema_version": {
        -            "const": "1.0.0",
        -            "default": "1.0.0",
        -            "type": "string"
        -          },
        -          "scope_boundary": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        -                "properties": {
        -                  "not_in_scope": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "produced": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "recommended_companions": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "type": "string"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "produced",
        -                  "not_in_scope"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tier": {
        -            "enum": [
        -              "free",
        -              "paid"
        -            ],
        -            "type": "string"
        -          },
        -          "tier_upgrade": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        -                "properties": {
        -                  "available_tiers": {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        -                      "properties": {
        -                        "billing": {
        -                          "enum": [
        -                            "one_off",
        -                            "monthly",
        -                            "annual"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "currency": {
        -                          "enum": [
        -                            "GBP",
        -                            "SGD",
        -                            "EUR",
        -                            "USD",
        -                            "CAD",
        -                            "AUD",
        -                            "NZD",
        -                            "MYR"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "display_name": {
        -                          "type": "string"
        -                        },
        -                        "price_local": {
        -                          "type": "number"
        -                        },
        -                        "tier_slug": {
        -                          "enum": [
        -                            "7_day_pass",
        -                            "solo",
        -                            "studio",
        -                            "practice"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "unlock_summary": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "tier_slug",
        -                        "display_name",
        -                        "price_local",
        -                        "currency",
        -                        "billing",
        -                        "unlock_summary"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "current_tier": {
        -                    "const": "free",
        -                    "default": "free",
        -                    "type": "string"
        -                  },
        -                  "pass_credit": {
        -                    "anyOf": [
        -                      {
        -                        "additionalProperties": false,
        -                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        -                        "properties": {
        -                          "amount_local": {
        -                            "type": "number"
        -                          },
        -                          "applies_to": {
        -                            "const": "solo_first_month",
        -                            "default": "solo_first_month",
        -                            "type": "string"
        -                          },
        -                          "currency": {
        -                            "type": "string"
        -                          },
        -                          "redeemable_until": {
        -                            "type": "string"
        -                          }
        -                        },
        -                        "required": [
        -                          "amount_local",
        -                          "currency",
        -                          "redeemable_until"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "pricing_url": {
        -                    "default": "https://civilquants.com/pricing",
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "available_tiers"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tos_url": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "upgrade_hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "warranty_disclaimer": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          }
        -        },
        -        "required": [
        -          "request_id",
        -          "issued_at",
        -          "tier"
        -        ],
        -        "type": "object"
        -      },
        -      "data": {
        -        "default": null,
        -        "title": "Data"
        -      },
        -      "error": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        -            "properties": {
        -              "code": {
        -                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        -                "enum": [
        -                  "RATE_LIMIT_EXCEEDED",
        -                  "TIER_INSUFFICIENT",
        -                  "INVALID_INPUT",
        -                  "SCHEMA_VERSION_MISMATCH",
        -                  "SCHEMA_INVARIANT_VIOLATION",
        -                  "UPSTREAM_TIMEOUT",
        -                  "BACKEND_FAILURE",
        -                  "IP_BLOCKED",
        -                  "RESOURCE_NOT_FOUND",
        -                  "RENDER_FAILURE",
        -                  "OCR_LOW_CONFIDENCE",
        -                  "MANUAL_REVIEW_REQUIRED",
        -                  "ACCEPTANCE_REQUIRED",
        -                  "INVALID_TOKEN"
        -                ],
        -                "type": "string"
        -              },
        -              "details": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "message": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "recoverable": {
        -                "type": "boolean"
        -              },
        -              "retry_after_seconds": {
        -                "anyOf": [
        -                  {
        -                    "minimum": 0,
        -                    "type": "integer"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              }
        -            },
        -            "required": [
        -              "code",
        -              "message",
        -              "recoverable"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      }
        -    },
        -    "required": [
        -      "_meta"
        -    ],
        -    "type": "object"
        -  }
        -]New value: +[
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "_meta": {
        +        "additionalProperties": false,
        +        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        +        "properties": {
        +          "deliverables": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        +                "properties": {
        +                  "docx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "dxf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "expires_at": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  },
        +                  "pdf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "xlsx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "expires_at"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "document_id": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "issued_at": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "output_mode": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Surfaces what a trimmed ``output_mode`` withheld from ``data``.\n\nA trimmed mode (``summary`` / ``boq`` / ``boq_with_backup``) withholds\nalready-computed fields to keep the chat payload small. The withheld value\nreads to a client agent as \"capability missing\" (the box-culvert \"geometry\nbuilder isn't firing\" scare) rather than \"pared for size\": ``drawing`` and\n``audit_trail`` appear as ``null``, ``boq_rows`` as an empty list ``[]``\n(its type forbids ``null``) — both indistinguishable from a genuine absent\nresult. This names the withheld fields and the exact mode that brings each\nback, so the value is unambiguous. Absent on the default ``full_json`` mode\n— nothing is withheld, nothing to point at.",
        +                "properties": {
        +                  "mode": {
        +                    "enum": [
        +                      "summary",
        +                      "boq",
        +                      "boq_with_backup"
        +                    ],
        +                    "type": "string"
        +                  },
        +                  "omitted_fields": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "minItems": 1,
        +                    "type": "array"
        +                  },
        +                  "retrieve_with": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "mode",
        +                  "omitted_fields",
        +                  "retrieve_with"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "rate_limit_remaining": {
        +            "anyOf": [
        +              {
        +                "minimum": 0,
        +                "type": "integer"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "request_id": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "schema_version": {
        +            "const": "1.0.0",
        +            "default": "1.0.0",
        +            "type": "string"
        +          },
        +          "scope_boundary": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        +                "properties": {
        +                  "not_in_scope": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "produced": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "recommended_companions": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "type": "string"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "produced",
        +                  "not_in_scope"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tier": {
        +            "enum": [
        +              "free",
        +              "paid"
        +            ],
        +            "type": "string"
        +          },
        +          "tier_upgrade": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        +                "properties": {
        +                  "available_tiers": {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        +                      "properties": {
        +                        "billing": {
        +                          "enum": [
        +                            "one_off",
        +                            "monthly",
        +                            "annual"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "currency": {
        +                          "enum": [
        +                            "GBP",
        +                            "SGD",
        +                            "EUR",
        +                            "USD",
        +                            "CAD",
        +                            "AUD",
        +                            "NZD",
        +                            "MYR"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "display_name": {
        +                          "type": "string"
        +                        },
        +                        "price_local": {
        +                          "type": "number"
        +                        },
        +                        "tier_slug": {
        +                          "enum": [
        +                            "7_day_pass",
        +                            "solo",
        +                            "studio",
        +                            "practice"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "unlock_summary": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "tier_slug",
        +                        "display_name",
        +                        "price_local",
        +                        "currency",
        +                        "billing",
        +                        "unlock_summary"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "current_tier": {
        +                    "const": "free",
        +                    "default": "free",
        +                    "type": "string"
        +                  },
        +                  "pass_credit": {
        +                    "anyOf": [
        +                      {
        +                        "additionalProperties": false,
        +                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        +                        "properties": {
        +                          "amount_local": {
        +                            "type": "number"
        +                          },
        +                          "applies_to": {
        +                            "const": "solo_first_month",
        +                            "default": "solo_first_month",
        +                            "type": "string"
        +                          },
        +                          "currency": {
        +                            "type": "string"
        +                          },
        +                          "redeemable_until": {
        +                            "type": "string"
        +                          }
        +                        },
        +                        "required": [
        +                          "amount_local",
        +                          "currency",
        +                          "redeemable_until"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "pricing_url": {
        +                    "default": "https://civilquants.com/pricing",
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "available_tiers"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tos_url": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "upgrade_hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "warranty_disclaimer": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          }
        +        },
        +        "required": [
        +          "request_id",
        +          "issued_at",
        +          "tier"
        +        ],
        +        "type": "object"
        +      },
        +      "data": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Schema § 1.1 — the typed payload returned inside `MCPResponse[ComputeResult]`.\n\nFree-tier responses omit `drawings` (the downloadable CAD artefact\npointers — the paid differentiator); the bridge enforces this. The\n`audit_trail` and the inline `drawing` preview are present on BOTH tiers\n(V1 ALIGN / 60th-fire D + C). `text_summary` is bounded to 2000 chars —\nkeeps the LLM-facing summary token-cheap and forces longer narrative into\nBoQ row descriptions where it belongs. `warnings` is the non-fatal\ngeometry advisory list (both tiers).",
        +            "properties": {
        +              "assembly_slug": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "audit_trail": {
        +                "anyOf": [
        +                  {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.7 — paid-tier audit-trail entry.\n\nOne entry per BoQ row; `boq_row_index` ties to the row position in\n`ComputeResult.boq_rows`. `derivation` is the human-readable formula\nwalk-through; `formula` is the optional formal expression.",
        +                      "properties": {
        +                        "boq_row_index": {
        +                          "minimum": 0,
        +                          "type": "integer"
        +                        },
        +                        "derivation": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "formula": {
        +                          "anyOf": [
        +                            {
        +                              "type": "string"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ],
        +                          "default": null
        +                        },
        +                        "id": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "parameters_referenced": {
        +                          "items": {
        +                            "type": "string"
        +                          },
        +                          "type": "array"
        +                        }
        +                      },
        +                      "required": [
        +                        "id",
        +                        "boq_row_index",
        +                        "derivation"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "boq_rows": {
        +                "items": {
        +                  "additionalProperties": false,
        +                  "description": "Schema § 1.3 — a single bill row in the requested standard's format.\n\n`description` is the non-verbatim functional description per spec § 13.9 /\n§ 15 invariant — NEVER reproduces a standard's verbatim clause text.\n`rate` / `amount` ship null because rates are commodity data the customer\nowns; the engine's job is the measurement, not the pricing.",
        +                  "properties": {
        +                    "amount": {
        +                      "anyOf": [
        +                        {
        +                          "type": "number"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "attribution": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "audit_id": {
        +                      "anyOf": [
        +                        {
        +                          "type": "string"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "description": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "quantity": {
        +                      "minimum": 0,
        +                      "type": "number"
        +                    },
        +                    "rate": {
        +                      "anyOf": [
        +                        {
        +                          "type": "number"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "unit": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "work_section": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    }
        +                  },
        +                  "required": [
        +                    "work_section",
        +                    "description",
        +                    "quantity",
        +                    "unit",
        +                    "attribution"
        +                  ],
        +                  "type": "object"
        +                },
        +                "type": "array"
        +              },
        +              "drawing": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": false,
        +                    "description": "Schema § 1.6a — inline server-rendered SVG preview of the geometry.\n\nThe MCP mirror of the web ``/compute`` response's ``drawing`` field\n(``api.schemas.compute.DrawingRef``): the same on-screen dimensioned\ndrawing both tiers see in the workspace, surfaced on the MCP compute\nresponse so a chat client can render it inline (60th-fire item C). This\nis the on-screen preview — present on BOTH tiers per the free/paid\nboundary; the downloadable CAD artefacts (DXF / dimensioned PDF) remain\nthe paid differentiator via the export tools.\n\nDefined here rather than importing ``DrawingRef`` because the web\n``schemas`` package imports back into this module (``schemas.render``),\nso reusing it would create an import cycle — the MCP wire contract keeps\nits own copy, the same pattern as ``BoQRow`` / ``DrawingReference``.",
        +                    "properties": {
        +                      "entity_count": {
        +                        "minimum": 0,
        +                        "type": "integer"
        +                      },
        +                      "svg_b64": {
        +                        "minLength": 1,
        +                        "type": "string"
        +                      },
        +                      "unit_of_drawing": {
        +                        "const": "m",
        +                        "default": "m",
        +                        "type": "string"
        +                      },
        +                      "viewbox_height": {
        +                        "exclusiveMinimum": 0,
        +                        "type": "number"
        +                      },
        +                      "viewbox_width": {
        +                        "exclusiveMinimum": 0,
        +                        "type": "number"
        +                      },
        +                      "viewbox_x": {
        +                        "type": "number"
        +                      },
        +                      "viewbox_y": {
        +                        "type": "number"
        +                      }
        +                    },
        +                    "required": [
        +                      "svg_b64",
        +                      "viewbox_x",
        +                      "viewbox_y",
        +                      "viewbox_width",
        +                      "viewbox_height",
        +                      "entity_count"
        +                    ],
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "drawings": {
        +                "anyOf": [
        +                  {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.6 — paid-tier drawing artefact pointer.\n\n`url` is an R2-signed URL; expiry is carried in `_meta.deliverables.expires_at`\non the envelope (not duplicated here). `layers` is DXF-only; PDF/SVG\ncallers omit it.",
        +                      "properties": {
        +                        "drawing_type": {
        +                          "enum": [
        +                            "section",
        +                            "plan",
        +                            "elevation",
        +                            "isometric",
        +                            "detail"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "format": {
        +                          "enum": [
        +                            "DXF",
        +                            "PDF",
        +                            "SVG"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "layers": {
        +                          "anyOf": [
        +                            {
        +                              "items": {
        +                                "type": "string"
        +                              },
        +                              "type": "array"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ],
        +                          "default": null
        +                        },
        +                        "scale": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "sheet_size": {
        +                          "enum": [
        +                            "A1",
        +                            "A2",
        +                            "A3",
        +                            "A4"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "url": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "drawing_type",
        +                        "format",
        +                        "url",
        +                        "sheet_size",
        +                        "scale"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "parameters_used": {
        +                "additionalProperties": false,
        +                "description": "Schema § 1.2 — the parameter snapshot the engine actually used.\n\nSplits user-supplied values from engine defaults so customers can see\nwhich numbers came from them and which the engine filled in. Every\ndefaulted parameter SHOULD have a corresponding entry in `assumptions`\n— the bridge layer enforces this when wrapping engine output.",
        +                "properties": {
        +                  "assumptions": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "engine_defaults": {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  "user_supplied": {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  }
        +                },
        +                "type": "object"
        +              },
        +              "standard": {
        +                "enum": [
        +                  "CESMM4",
        +                  "NRM2",
        +                  "SMM7",
        +                  "MMHW"
        +                ],
        +                "type": "string"
        +              },
        +              "text_summary": {
        +                "maxLength": 2000,
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "totals_summary": {
        +                "additionalProperties": false,
        +                "description": "Schema § 1.4 — totals_summary as a typed wrapper around the free-form dict.\n\nWire shape is a flat object (`{\"concrete_m3\": {...}, \"rebar_t\": {...}}`).\nWe model it as `RootModel`-equivalent via `model_config(extra=\"allow\")`\n+ a single `__root__`-style `entries` dict. Pydantic v2 recommends\n`RootModel` for free-form roots; using a wrapper class keeps the import\nsurface uniform with the rest of this module.",
        +                "properties": {
        +                  "entries": {
        +                    "additionalProperties": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.4 — single material/work-class total entry.",
        +                      "properties": {
        +                        "quantity": {
        +                          "minimum": 0,
        +                          "type": "number"
        +                        },
        +                        "unit": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "quantity",
        +                        "unit"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "object"
        +                  }
        +                },
        +                "type": "object"
        +              },
        +              "warnings": {
        +                "items": {
        +                  "additionalProperties": false,
        +                  "description": "Schema § 1.8 — a non-fatal geometry advisory (56th-fire T2).\n\nThe wire projection of the engine's `core.GeometryWarning`. Advisory only:\na warning NEVER changes a measured quantity — it flags geometry that is\nvalid but likely a mistake (e.g. a stale dependent-height default). Present\non BOTH tiers — a correctness/safety signal, not a paid feature.",
        +                  "properties": {
        +                    "affected_params": {
        +                      "items": {
        +                        "type": "string"
        +                      },
        +                      "type": "array"
        +                    },
        +                    "code": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "detail": {
        +                      "additionalProperties": {
        +                        "type": "number"
        +                      },
        +                      "type": "object"
        +                    },
        +                    "message": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "severity": {
        +                      "enum": [
        +                        "info",
        +                        "advisory",
        +                        "caution"
        +                      ],
        +                      "type": "string"
        +                    }
        +                  },
        +                  "required": [
        +                    "code",
        +                    "severity",
        +                    "message"
        +                  ],
        +                  "type": "object"
        +                },
        +                "type": "array"
        +              }
        +            },
        +            "required": [
        +              "assembly_slug",
        +              "standard",
        +              "parameters_used",
        +              "boq_rows",
        +              "totals_summary",
        +              "text_summary"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      },
        +      "error": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        +            "properties": {
        +              "code": {
        +                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        +                "enum": [
        +                  "RATE_LIMIT_EXCEEDED",
        +                  "TIER_INSUFFICIENT",
        +                  "INVALID_INPUT",
        +                  "SCHEMA_VERSION_MISMATCH",
        +                  "SCHEMA_INVARIANT_VIOLATION",
        +                  "UPSTREAM_TIMEOUT",
        +                  "BACKEND_FAILURE",
        +                  "IP_BLOCKED",
        +                  "RESOURCE_NOT_FOUND",
        +                  "RENDER_FAILURE",
        +                  "OCR_LOW_CONFIDENCE",
        +                  "MANUAL_REVIEW_REQUIRED",
        +                  "ACCEPTANCE_REQUIRED",
        +                  "INVALID_TOKEN"
        +                ],
        +                "type": "string"
        +              },
        +              "details": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "message": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "recoverable": {
        +                "type": "boolean"
        +              },
        +              "retry_after_seconds": {
        +                "anyOf": [
        +                  {
        +                    "minimum": 0,
        +                    "type": "integer"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              }
        +            },
        +            "required": [
        +              "code",
        +              "message",
        +              "recoverable"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      }
        +    },
        +    "required": [
        +      "_meta"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "_meta": {
        +        "additionalProperties": false,
        +        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        +        "properties": {
        +          "deliverables": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        +                "properties": {
        +                  "docx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "dxf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "expires_at": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  },
        +                  "pdf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "xlsx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "expires_at"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "document_id": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "issued_at": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "output_mode": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Surfaces what a trimmed ``output_mode`` withheld from ``data``.\n\nA trimmed mode (``summary`` / ``boq`` / ``boq_with_backup``) withholds\nalready-computed fields to keep the chat payload small. The withheld value\nreads to a client agent as \"capability missing\" (the box-culvert \"geometry\nbuilder isn't firing\" scare) rather than \"pared for size\": ``drawing`` and\n``audit_trail`` appear as ``null``, ``boq_rows`` as an empty list ``[]``\n(its type forbids ``null``) — both indistinguishable from a genuine absent\nresult. This names the withheld fields and the exact mode that brings each\nback, so the value is unambiguous. Absent on the default ``full_json`` mode\n— nothing is withheld, nothing to point at.",
        +                "properties": {
        +                  "mode": {
        +                    "enum": [
        +                      "summary",
        +                      "boq",
        +                      "boq_with_backup"
        +                    ],
        +                    "type": "string"
        +                  },
        +                  "omitted_fields": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "minItems": 1,
        +                    "type": "array"
        +                  },
        +                  "retrieve_with": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "mode",
        +                  "omitted_fields",
        +                  "retrieve_with"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "rate_limit_remaining": {
        +            "anyOf": [
        +              {
        +                "minimum": 0,
        +                "type": "integer"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "request_id": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "schema_version": {
        +            "const": "1.0.0",
        +            "default": "1.0.0",
        +            "type": "string"
        +          },
        +          "scope_boundary": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        +                "properties": {
        +                  "not_in_scope": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "produced": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "recommended_companions": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "type": "string"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "produced",
        +                  "not_in_scope"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tier": {
        +            "enum": [
        +              "free",
        +              "paid"
        +            ],
        +            "type": "string"
        +          },
        +          "tier_upgrade": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        +                "properties": {
        +                  "available_tiers": {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        +                      "properties": {
        +                        "billing": {
        +                          "enum": [
        +                            "one_off",
        +                            "monthly",
        +                            "annual"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "currency": {
        +                          "enum": [
        +                            "GBP",
        +                            "SGD",
        +                            "EUR",
        +                            "USD",
        +                            "CAD",
        +                            "AUD",
        +                            "NZD",
        +                            "MYR"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "display_name": {
        +                          "type": "string"
        +                        },
        +                        "price_local": {
        +                          "type": "number"
        +                        },
        +                        "tier_slug": {
        +                          "enum": [
        +                            "7_day_pass",
        +                            "solo",
        +                            "studio",
        +                            "practice"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "unlock_summary": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "tier_slug",
        +                        "display_name",
        +                        "price_local",
        +                        "currency",
        +                        "billing",
        +                        "unlock_summary"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "current_tier": {
        +                    "const": "free",
        +                    "default": "free",
        +                    "type": "string"
        +                  },
        +                  "pass_credit": {
        +                    "anyOf": [
        +                      {
        +                        "additionalProperties": false,
        +                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        +                        "properties": {
        +                          "amount_local": {
        +                            "type": "number"
        +                          },
        +                          "applies_to": {
        +                            "const": "solo_first_month",
        +                            "default": "solo_first_month",
        +                            "type": "string"
        +                          },
        +                          "currency": {
        +                            "type": "string"
        +                          },
        +                          "redeemable_until": {
        +                            "type": "string"
        +                          }
        +                        },
        +                        "required": [
        +                          "amount_local",
        +                          "currency",
        +                          "redeemable_until"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "pricing_url": {
        +                    "default": "https://civilquants.com/pricing",
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "available_tiers"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tos_url": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "upgrade_hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "warranty_disclaimer": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          }
        +        },
        +        "required": [
        +          "request_id",
        +          "issued_at",
        +          "tier"
        +        ],
        +        "type": "object"
        +      },
        +      "data": {
        +        "default": null,
        +        "title": "Data"
        +      },
        +      "error": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        +            "properties": {
        +              "code": {
        +                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        +                "enum": [
        +                  "RATE_LIMIT_EXCEEDED",
        +                  "TIER_INSUFFICIENT",
        +                  "INVALID_INPUT",
        +                  "SCHEMA_VERSION_MISMATCH",
        +                  "SCHEMA_INVARIANT_VIOLATION",
        +                  "UPSTREAM_TIMEOUT",
        +                  "BACKEND_FAILURE",
        +                  "IP_BLOCKED",
        +                  "RESOURCE_NOT_FOUND",
        +                  "RENDER_FAILURE",
        +                  "OCR_LOW_CONFIDENCE",
        +                  "MANUAL_REVIEW_REQUIRED",
        +                  "ACCEPTANCE_REQUIRED",
        +                  "INVALID_TOKEN"
        +                ],
        +                "type": "string"
        +              },
        +              "details": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "message": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "recoverable": {
        +                "type": "boolean"
        +              },
        +              "retry_after_seconds": {
        +                "anyOf": [
        +                  {
        +                    "minimum": 0,
        +                    "type": "integer"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              }
        +            },
        +            "required": [
        +              "code",
        +              "message",
        +              "recoverable"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      }
        +    },
        +    "required": [
        +      "_meta"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedcompute_gabion_wall1 field changed
      • changedOutput schema / properties / result / anyOf
        Previous value: -[
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "_meta": {
        -        "additionalProperties": false,
        -        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        -        "properties": {
        -          "deliverables": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        -                "properties": {
        -                  "docx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "dxf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "expires_at": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  },
        -                  "pdf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "xlsx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "expires_at"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "document_id": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "issued_at": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "rate_limit_remaining": {
        -            "anyOf": [
        -              {
        -                "minimum": 0,
        -                "type": "integer"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "request_id": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "schema_version": {
        -            "const": "1.0.0",
        -            "default": "1.0.0",
        -            "type": "string"
        -          },
        -          "scope_boundary": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        -                "properties": {
        -                  "not_in_scope": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "produced": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "recommended_companions": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "type": "string"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "produced",
        -                  "not_in_scope"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tier": {
        -            "enum": [
        -              "free",
        -              "paid"
        -            ],
        -            "type": "string"
        -          },
        -          "tier_upgrade": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        -                "properties": {
        -                  "available_tiers": {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        -                      "properties": {
        -                        "billing": {
        -                          "enum": [
        -                            "one_off",
        -                            "monthly",
        -                            "annual"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "currency": {
        -                          "enum": [
        -                            "GBP",
        -                            "SGD",
        -                            "EUR",
        -                            "USD",
        -                            "CAD",
        -                            "AUD",
        -                            "NZD",
        -                            "MYR"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "display_name": {
        -                          "type": "string"
        -                        },
        -                        "price_local": {
        -                          "type": "number"
        -                        },
        -                        "tier_slug": {
        -                          "enum": [
        -                            "7_day_pass",
        -                            "solo",
        -                            "studio",
        -                            "practice"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "unlock_summary": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "tier_slug",
        -                        "display_name",
        -                        "price_local",
        -                        "currency",
        -                        "billing",
        -                        "unlock_summary"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "current_tier": {
        -                    "const": "free",
        -                    "default": "free",
        -                    "type": "string"
        -                  },
        -                  "pass_credit": {
        -                    "anyOf": [
        -                      {
        -                        "additionalProperties": false,
        -                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        -                        "properties": {
        -                          "amount_local": {
        -                            "type": "number"
        -                          },
        -                          "applies_to": {
        -                            "const": "solo_first_month",
        -                            "default": "solo_first_month",
        -                            "type": "string"
        -                          },
        -                          "currency": {
        -                            "type": "string"
        -                          },
        -                          "redeemable_until": {
        -                            "type": "string"
        -                          }
        -                        },
        -                        "required": [
        -                          "amount_local",
        -                          "currency",
        -                          "redeemable_until"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "pricing_url": {
        -                    "default": "https://civilquants.com/pricing",
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "available_tiers"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tos_url": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "upgrade_hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "warranty_disclaimer": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          }
        -        },
        -        "required": [
        -          "request_id",
        -          "issued_at",
        -          "tier"
        -        ],
        -        "type": "object"
        -      },
        -      "data": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Schema § 1.1 — the typed payload returned inside `MCPResponse[ComputeResult]`.\n\nFree-tier responses omit `drawings` (the downloadable CAD artefact\npointers — the paid differentiator); the bridge enforces this. The\n`audit_trail` and the inline `drawing` preview are present on BOTH tiers\n(V1 ALIGN / 60th-fire D + C). `text_summary` is bounded to 2000 chars —\nkeeps the LLM-facing summary token-cheap and forces longer narrative into\nBoQ row descriptions where it belongs. `warnings` is the non-fatal\ngeometry advisory list (both tiers).",
        -            "properties": {
        -              "assembly_slug": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "audit_trail": {
        -                "anyOf": [
        -                  {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.7 — paid-tier audit-trail entry.\n\nOne entry per BoQ row; `boq_row_index` ties to the row position in\n`ComputeResult.boq_rows`. `derivation` is the human-readable formula\nwalk-through; `formula` is the optional formal expression.",
        -                      "properties": {
        -                        "boq_row_index": {
        -                          "minimum": 0,
        -                          "type": "integer"
        -                        },
        -                        "derivation": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "formula": {
        -                          "anyOf": [
        -                            {
        -                              "type": "string"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ],
        -                          "default": null
        -                        },
        -                        "id": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "parameters_referenced": {
        -                          "items": {
        -                            "type": "string"
        -                          },
        -                          "type": "array"
        -                        }
        -                      },
        -                      "required": [
        -                        "id",
        -                        "boq_row_index",
        -                        "derivation"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "boq_rows": {
        -                "items": {
        -                  "additionalProperties": false,
        -                  "description": "Schema § 1.3 — a single bill row in the requested standard's format.\n\n`description` is the non-verbatim functional description per spec § 13.9 /\n§ 15 invariant — NEVER reproduces a standard's verbatim clause text.\n`rate` / `amount` ship null because rates are commodity data the customer\nowns; the engine's job is the measurement, not the pricing.",
        -                  "properties": {
        -                    "amount": {
        -                      "anyOf": [
        -                        {
        -                          "type": "number"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "attribution": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "audit_id": {
        -                      "anyOf": [
        -                        {
        -                          "type": "string"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "description": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "quantity": {
        -                      "minimum": 0,
        -                      "type": "number"
        -                    },
        -                    "rate": {
        -                      "anyOf": [
        -                        {
        -                          "type": "number"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "unit": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "work_section": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    }
        -                  },
        -                  "required": [
        -                    "work_section",
        -                    "description",
        -                    "quantity",
        -                    "unit",
        -                    "attribution"
        -                  ],
        -                  "type": "object"
        -                },
        -                "type": "array"
        -              },
        -              "drawing": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": false,
        -                    "description": "Schema § 1.6a — inline server-rendered SVG preview of the geometry.\n\nThe MCP mirror of the web ``/compute`` response's ``drawing`` field\n(``api.schemas.compute.DrawingRef``): the same on-screen dimensioned\ndrawing both tiers see in the workspace, surfaced on the MCP compute\nresponse so a chat client can render it inline (60th-fire item C). This\nis the on-screen preview — present on BOTH tiers per the free/paid\nboundary; the downloadable CAD artefacts (DXF / dimensioned PDF) remain\nthe paid differentiator via the export tools.\n\nDefined here rather than importing ``DrawingRef`` because the web\n``schemas`` package imports back into this module (``schemas.render``),\nso reusing it would create an import cycle — the MCP wire contract keeps\nits own copy, the same pattern as ``BoQRow`` / ``DrawingReference``.",
        -                    "properties": {
        -                      "entity_count": {
        -                        "minimum": 0,
        -                        "type": "integer"
        -                      },
        -                      "svg_b64": {
        -                        "minLength": 1,
        -                        "type": "string"
        -                      },
        -                      "unit_of_drawing": {
        -                        "const": "m",
        -                        "default": "m",
        -                        "type": "string"
        -                      },
        -                      "viewbox_height": {
        -                        "exclusiveMinimum": 0,
        -                        "type": "number"
        -                      },
        -                      "viewbox_width": {
        -                        "exclusiveMinimum": 0,
        -                        "type": "number"
        -                      },
        -                      "viewbox_x": {
        -                        "type": "number"
        -                      },
        -                      "viewbox_y": {
        -                        "type": "number"
        -                      }
        -                    },
        -                    "required": [
        -                      "svg_b64",
        -                      "viewbox_x",
        -                      "viewbox_y",
        -                      "viewbox_width",
        -                      "viewbox_height",
        -                      "entity_count"
        -                    ],
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "drawings": {
        -                "anyOf": [
        -                  {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.6 — paid-tier drawing artefact pointer.\n\n`url` is an R2-signed URL; expiry is carried in `_meta.deliverables.expires_at`\non the envelope (not duplicated here). `layers` is DXF-only; PDF/SVG\ncallers omit it.",
        -                      "properties": {
        -                        "drawing_type": {
        -                          "enum": [
        -                            "section",
        -                            "plan",
        -                            "elevation",
        -                            "isometric",
        -                            "detail"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "format": {
        -                          "enum": [
        -                            "DXF",
        -                            "PDF",
        -                            "SVG"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "layers": {
        -                          "anyOf": [
        -                            {
        -                              "items": {
        -                                "type": "string"
        -                              },
        -                              "type": "array"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ],
        -                          "default": null
        -                        },
        -                        "scale": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "sheet_size": {
        -                          "enum": [
        -                            "A1",
        -                            "A2",
        -                            "A3",
        -                            "A4"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "url": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "drawing_type",
        -                        "format",
        -                        "url",
        -                        "sheet_size",
        -                        "scale"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "parameters_used": {
        -                "additionalProperties": false,
        -                "description": "Schema § 1.2 — the parameter snapshot the engine actually used.\n\nSplits user-supplied values from engine defaults so customers can see\nwhich numbers came from them and which the engine filled in. Every\ndefaulted parameter SHOULD have a corresponding entry in `assumptions`\n— the bridge layer enforces this when wrapping engine output.",
        -                "properties": {
        -                  "assumptions": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "engine_defaults": {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  "user_supplied": {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  }
        -                },
        -                "type": "object"
        -              },
        -              "standard": {
        -                "enum": [
        -                  "CESMM4",
        -                  "NRM2",
        -                  "SMM7",
        -                  "MMHW"
        -                ],
        -                "type": "string"
        -              },
        -              "text_summary": {
        -                "maxLength": 2000,
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "totals_summary": {
        -                "additionalProperties": false,
        -                "description": "Schema § 1.4 — totals_summary as a typed wrapper around the free-form dict.\n\nWire shape is a flat object (`{\"concrete_m3\": {...}, \"rebar_t\": {...}}`).\nWe model it as `RootModel`-equivalent via `model_config(extra=\"allow\")`\n+ a single `__root__`-style `entries` dict. Pydantic v2 recommends\n`RootModel` for free-form roots; using a wrapper class keeps the import\nsurface uniform with the rest of this module.",
        -                "properties": {
        -                  "entries": {
        -                    "additionalProperties": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.4 — single material/work-class total entry.",
        -                      "properties": {
        -                        "quantity": {
        -                          "minimum": 0,
        -                          "type": "number"
        -                        },
        -                        "unit": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "quantity",
        -                        "unit"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "object"
        -                  }
        -                },
        -                "type": "object"
        -              },
        -              "warnings": {
        -                "items": {
        -                  "additionalProperties": false,
        -                  "description": "Schema § 1.8 — a non-fatal geometry advisory (56th-fire T2).\n\nThe wire projection of the engine's `core.GeometryWarning`. Advisory only:\na warning NEVER changes a measured quantity — it flags geometry that is\nvalid but likely a mistake (e.g. a stale dependent-height default). Present\non BOTH tiers — a correctness/safety signal, not a paid feature.",
        -                  "properties": {
        -                    "affected_params": {
        -                      "items": {
        -                        "type": "string"
        -                      },
        -                      "type": "array"
        -                    },
        -                    "code": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "detail": {
        -                      "additionalProperties": {
        -                        "type": "number"
        -                      },
        -                      "type": "object"
        -                    },
        -                    "message": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "severity": {
        -                      "enum": [
        -                        "info",
        -                        "advisory",
        -                        "caution"
        -                      ],
        -                      "type": "string"
        -                    }
        -                  },
        -                  "required": [
        -                    "code",
        -                    "severity",
        -                    "message"
        -                  ],
        -                  "type": "object"
        -                },
        -                "type": "array"
        -              }
        -            },
        -            "required": [
        -              "assembly_slug",
        -              "standard",
        -              "parameters_used",
        -              "boq_rows",
        -              "totals_summary",
        -              "text_summary"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      },
        -      "error": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        -            "properties": {
        -              "code": {
        -                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        -                "enum": [
        -                  "RATE_LIMIT_EXCEEDED",
        -                  "TIER_INSUFFICIENT",
        -                  "INVALID_INPUT",
        -                  "SCHEMA_VERSION_MISMATCH",
        -                  "SCHEMA_INVARIANT_VIOLATION",
        -                  "UPSTREAM_TIMEOUT",
        -                  "BACKEND_FAILURE",
        -                  "IP_BLOCKED",
        -                  "RESOURCE_NOT_FOUND",
        -                  "RENDER_FAILURE",
        -                  "OCR_LOW_CONFIDENCE",
        -                  "MANUAL_REVIEW_REQUIRED",
        -                  "ACCEPTANCE_REQUIRED",
        -                  "INVALID_TOKEN"
        -                ],
        -                "type": "string"
        -              },
        -              "details": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "message": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "recoverable": {
        -                "type": "boolean"
        -              },
        -              "retry_after_seconds": {
        -                "anyOf": [
        -                  {
        -                    "minimum": 0,
        -                    "type": "integer"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              }
        -            },
        -            "required": [
        -              "code",
        -              "message",
        -              "recoverable"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      }
        -    },
        -    "required": [
        -      "_meta"
        -    ],
        -    "type": "object"
        -  },
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "_meta": {
        -        "additionalProperties": false,
        -        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        -        "properties": {
        -          "deliverables": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        -                "properties": {
        -                  "docx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "dxf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "expires_at": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  },
        -                  "pdf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "xlsx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "expires_at"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "document_id": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "issued_at": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "rate_limit_remaining": {
        -            "anyOf": [
        -              {
        -                "minimum": 0,
        -                "type": "integer"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "request_id": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "schema_version": {
        -            "const": "1.0.0",
        -            "default": "1.0.0",
        -            "type": "string"
        -          },
        -          "scope_boundary": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        -                "properties": {
        -                  "not_in_scope": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "produced": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "recommended_companions": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "type": "string"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "produced",
        -                  "not_in_scope"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tier": {
        -            "enum": [
        -              "free",
        -              "paid"
        -            ],
        -            "type": "string"
        -          },
        -          "tier_upgrade": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        -                "properties": {
        -                  "available_tiers": {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        -                      "properties": {
        -                        "billing": {
        -                          "enum": [
        -                            "one_off",
        -                            "monthly",
        -                            "annual"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "currency": {
        -                          "enum": [
        -                            "GBP",
        -                            "SGD",
        -                            "EUR",
        -                            "USD",
        -                            "CAD",
        -                            "AUD",
        -                            "NZD",
        -                            "MYR"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "display_name": {
        -                          "type": "string"
        -                        },
        -                        "price_local": {
        -                          "type": "number"
        -                        },
        -                        "tier_slug": {
        -                          "enum": [
        -                            "7_day_pass",
        -                            "solo",
        -                            "studio",
        -                            "practice"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "unlock_summary": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "tier_slug",
        -                        "display_name",
        -                        "price_local",
        -                        "currency",
        -                        "billing",
        -                        "unlock_summary"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "current_tier": {
        -                    "const": "free",
        -                    "default": "free",
        -                    "type": "string"
        -                  },
        -                  "pass_credit": {
        -                    "anyOf": [
        -                      {
        -                        "additionalProperties": false,
        -                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        -                        "properties": {
        -                          "amount_local": {
        -                            "type": "number"
        -                          },
        -                          "applies_to": {
        -                            "const": "solo_first_month",
        -                            "default": "solo_first_month",
        -                            "type": "string"
        -                          },
        -                          "currency": {
        -                            "type": "string"
        -                          },
        -                          "redeemable_until": {
        -                            "type": "string"
        -                          }
        -                        },
        -                        "required": [
        -                          "amount_local",
        -                          "currency",
        -                          "redeemable_until"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "pricing_url": {
        -                    "default": "https://civilquants.com/pricing",
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "available_tiers"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tos_url": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "upgrade_hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "warranty_disclaimer": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          }
        -        },
        -        "required": [
        -          "request_id",
        -          "issued_at",
        -          "tier"
        -        ],
        -        "type": "object"
        -      },
        -      "data": {
        -        "default": null,
        -        "title": "Data"
        -      },
        -      "error": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        -            "properties": {
        -              "code": {
        -                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        -                "enum": [
        -                  "RATE_LIMIT_EXCEEDED",
        -                  "TIER_INSUFFICIENT",
        -                  "INVALID_INPUT",
        -                  "SCHEMA_VERSION_MISMATCH",
        -                  "SCHEMA_INVARIANT_VIOLATION",
        -                  "UPSTREAM_TIMEOUT",
        -                  "BACKEND_FAILURE",
        -                  "IP_BLOCKED",
        -                  "RESOURCE_NOT_FOUND",
        -                  "RENDER_FAILURE",
        -                  "OCR_LOW_CONFIDENCE",
        -                  "MANUAL_REVIEW_REQUIRED",
        -                  "ACCEPTANCE_REQUIRED",
        -                  "INVALID_TOKEN"
        -                ],
        -                "type": "string"
        -              },
        -              "details": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "message": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "recoverable": {
        -                "type": "boolean"
        -              },
        -              "retry_after_seconds": {
        -                "anyOf": [
        -                  {
        -                    "minimum": 0,
        -                    "type": "integer"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              }
        -            },
        -            "required": [
        -              "code",
        -              "message",
        -              "recoverable"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      }
        -    },
        -    "required": [
        -      "_meta"
        -    ],
        -    "type": "object"
        -  }
        -]New value: +[
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "_meta": {
        +        "additionalProperties": false,
        +        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        +        "properties": {
        +          "deliverables": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        +                "properties": {
        +                  "docx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "dxf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "expires_at": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  },
        +                  "pdf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "xlsx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "expires_at"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "document_id": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "issued_at": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "output_mode": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Surfaces what a trimmed ``output_mode`` withheld from ``data``.\n\nA trimmed mode (``summary`` / ``boq`` / ``boq_with_backup``) withholds\nalready-computed fields to keep the chat payload small. The withheld value\nreads to a client agent as \"capability missing\" (the box-culvert \"geometry\nbuilder isn't firing\" scare) rather than \"pared for size\": ``drawing`` and\n``audit_trail`` appear as ``null``, ``boq_rows`` as an empty list ``[]``\n(its type forbids ``null``) — both indistinguishable from a genuine absent\nresult. This names the withheld fields and the exact mode that brings each\nback, so the value is unambiguous. Absent on the default ``full_json`` mode\n— nothing is withheld, nothing to point at.",
        +                "properties": {
        +                  "mode": {
        +                    "enum": [
        +                      "summary",
        +                      "boq",
        +                      "boq_with_backup"
        +                    ],
        +                    "type": "string"
        +                  },
        +                  "omitted_fields": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "minItems": 1,
        +                    "type": "array"
        +                  },
        +                  "retrieve_with": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "mode",
        +                  "omitted_fields",
        +                  "retrieve_with"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "rate_limit_remaining": {
        +            "anyOf": [
        +              {
        +                "minimum": 0,
        +                "type": "integer"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "request_id": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "schema_version": {
        +            "const": "1.0.0",
        +            "default": "1.0.0",
        +            "type": "string"
        +          },
        +          "scope_boundary": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        +                "properties": {
        +                  "not_in_scope": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "produced": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "recommended_companions": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "type": "string"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "produced",
        +                  "not_in_scope"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tier": {
        +            "enum": [
        +              "free",
        +              "paid"
        +            ],
        +            "type": "string"
        +          },
        +          "tier_upgrade": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        +                "properties": {
        +                  "available_tiers": {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        +                      "properties": {
        +                        "billing": {
        +                          "enum": [
        +                            "one_off",
        +                            "monthly",
        +                            "annual"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "currency": {
        +                          "enum": [
        +                            "GBP",
        +                            "SGD",
        +                            "EUR",
        +                            "USD",
        +                            "CAD",
        +                            "AUD",
        +                            "NZD",
        +                            "MYR"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "display_name": {
        +                          "type": "string"
        +                        },
        +                        "price_local": {
        +                          "type": "number"
        +                        },
        +                        "tier_slug": {
        +                          "enum": [
        +                            "7_day_pass",
        +                            "solo",
        +                            "studio",
        +                            "practice"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "unlock_summary": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "tier_slug",
        +                        "display_name",
        +                        "price_local",
        +                        "currency",
        +                        "billing",
        +                        "unlock_summary"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "current_tier": {
        +                    "const": "free",
        +                    "default": "free",
        +                    "type": "string"
        +                  },
        +                  "pass_credit": {
        +                    "anyOf": [
        +                      {
        +                        "additionalProperties": false,
        +                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        +                        "properties": {
        +                          "amount_local": {
        +                            "type": "number"
        +                          },
        +                          "applies_to": {
        +                            "const": "solo_first_month",
        +                            "default": "solo_first_month",
        +                            "type": "string"
        +                          },
        +                          "currency": {
        +                            "type": "string"
        +                          },
        +                          "redeemable_until": {
        +                            "type": "string"
        +                          }
        +                        },
        +                        "required": [
        +                          "amount_local",
        +                          "currency",
        +                          "redeemable_until"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "pricing_url": {
        +                    "default": "https://civilquants.com/pricing",
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "available_tiers"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tos_url": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "upgrade_hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "warranty_disclaimer": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          }
        +        },
        +        "required": [
        +          "request_id",
        +          "issued_at",
        +          "tier"
        +        ],
        +        "type": "object"
        +      },
        +      "data": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Schema § 1.1 — the typed payload returned inside `MCPResponse[ComputeResult]`.\n\nFree-tier responses omit `drawings` (the downloadable CAD artefact\npointers — the paid differentiator); the bridge enforces this. The\n`audit_trail` and the inline `drawing` preview are present on BOTH tiers\n(V1 ALIGN / 60th-fire D + C). `text_summary` is bounded to 2000 chars —\nkeeps the LLM-facing summary token-cheap and forces longer narrative into\nBoQ row descriptions where it belongs. `warnings` is the non-fatal\ngeometry advisory list (both tiers).",
        +            "properties": {
        +              "assembly_slug": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "audit_trail": {
        +                "anyOf": [
        +                  {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.7 — paid-tier audit-trail entry.\n\nOne entry per BoQ row; `boq_row_index` ties to the row position in\n`ComputeResult.boq_rows`. `derivation` is the human-readable formula\nwalk-through; `formula` is the optional formal expression.",
        +                      "properties": {
        +                        "boq_row_index": {
        +                          "minimum": 0,
        +                          "type": "integer"
        +                        },
        +                        "derivation": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "formula": {
        +                          "anyOf": [
        +                            {
        +                              "type": "string"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ],
        +                          "default": null
        +                        },
        +                        "id": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "parameters_referenced": {
        +                          "items": {
        +                            "type": "string"
        +                          },
        +                          "type": "array"
        +                        }
        +                      },
        +                      "required": [
        +                        "id",
        +                        "boq_row_index",
        +                        "derivation"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "boq_rows": {
        +                "items": {
        +                  "additionalProperties": false,
        +                  "description": "Schema § 1.3 — a single bill row in the requested standard's format.\n\n`description` is the non-verbatim functional description per spec § 13.9 /\n§ 15 invariant — NEVER reproduces a standard's verbatim clause text.\n`rate` / `amount` ship null because rates are commodity data the customer\nowns; the engine's job is the measurement, not the pricing.",
        +                  "properties": {
        +                    "amount": {
        +                      "anyOf": [
        +                        {
        +                          "type": "number"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "attribution": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "audit_id": {
        +                      "anyOf": [
        +                        {
        +                          "type": "string"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "description": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "quantity": {
        +                      "minimum": 0,
        +                      "type": "number"
        +                    },
        +                    "rate": {
        +                      "anyOf": [
        +                        {
        +                          "type": "number"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "unit": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "work_section": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    }
        +                  },
        +                  "required": [
        +                    "work_section",
        +                    "description",
        +                    "quantity",
        +                    "unit",
        +                    "attribution"
        +                  ],
        +                  "type": "object"
        +                },
        +                "type": "array"
        +              },
        +              "drawing": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": false,
        +                    "description": "Schema § 1.6a — inline server-rendered SVG preview of the geometry.\n\nThe MCP mirror of the web ``/compute`` response's ``drawing`` field\n(``api.schemas.compute.DrawingRef``): the same on-screen dimensioned\ndrawing both tiers see in the workspace, surfaced on the MCP compute\nresponse so a chat client can render it inline (60th-fire item C). This\nis the on-screen preview — present on BOTH tiers per the free/paid\nboundary; the downloadable CAD artefacts (DXF / dimensioned PDF) remain\nthe paid differentiator via the export tools.\n\nDefined here rather than importing ``DrawingRef`` because the web\n``schemas`` package imports back into this module (``schemas.render``),\nso reusing it would create an import cycle — the MCP wire contract keeps\nits own copy, the same pattern as ``BoQRow`` / ``DrawingReference``.",
        +                    "properties": {
        +                      "entity_count": {
        +                        "minimum": 0,
        +                        "type": "integer"
        +                      },
        +                      "svg_b64": {
        +                        "minLength": 1,
        +                        "type": "string"
        +                      },
        +                      "unit_of_drawing": {
        +                        "const": "m",
        +                        "default": "m",
        +                        "type": "string"
        +                      },
        +                      "viewbox_height": {
        +                        "exclusiveMinimum": 0,
        +                        "type": "number"
        +                      },
        +                      "viewbox_width": {
        +                        "exclusiveMinimum": 0,
        +                        "type": "number"
        +                      },
        +                      "viewbox_x": {
        +                        "type": "number"
        +                      },
        +                      "viewbox_y": {
        +                        "type": "number"
        +                      }
        +                    },
        +                    "required": [
        +                      "svg_b64",
        +                      "viewbox_x",
        +                      "viewbox_y",
        +                      "viewbox_width",
        +                      "viewbox_height",
        +                      "entity_count"
        +                    ],
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "drawings": {
        +                "anyOf": [
        +                  {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.6 — paid-tier drawing artefact pointer.\n\n`url` is an R2-signed URL; expiry is carried in `_meta.deliverables.expires_at`\non the envelope (not duplicated here). `layers` is DXF-only; PDF/SVG\ncallers omit it.",
        +                      "properties": {
        +                        "drawing_type": {
        +                          "enum": [
        +                            "section",
        +                            "plan",
        +                            "elevation",
        +                            "isometric",
        +                            "detail"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "format": {
        +                          "enum": [
        +                            "DXF",
        +                            "PDF",
        +                            "SVG"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "layers": {
        +                          "anyOf": [
        +                            {
        +                              "items": {
        +                                "type": "string"
        +                              },
        +                              "type": "array"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ],
        +                          "default": null
        +                        },
        +                        "scale": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "sheet_size": {
        +                          "enum": [
        +                            "A1",
        +                            "A2",
        +                            "A3",
        +                            "A4"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "url": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "drawing_type",
        +                        "format",
        +                        "url",
        +                        "sheet_size",
        +                        "scale"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "parameters_used": {
        +                "additionalProperties": false,
        +                "description": "Schema § 1.2 — the parameter snapshot the engine actually used.\n\nSplits user-supplied values from engine defaults so customers can see\nwhich numbers came from them and which the engine filled in. Every\ndefaulted parameter SHOULD have a corresponding entry in `assumptions`\n— the bridge layer enforces this when wrapping engine output.",
        +                "properties": {
        +                  "assumptions": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "engine_defaults": {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  "user_supplied": {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  }
        +                },
        +                "type": "object"
        +              },
        +              "standard": {
        +                "enum": [
        +                  "CESMM4",
        +                  "NRM2",
        +                  "SMM7",
        +                  "MMHW"
        +                ],
        +                "type": "string"
        +              },
        +              "text_summary": {
        +                "maxLength": 2000,
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "totals_summary": {
        +                "additionalProperties": false,
        +                "description": "Schema § 1.4 — totals_summary as a typed wrapper around the free-form dict.\n\nWire shape is a flat object (`{\"concrete_m3\": {...}, \"rebar_t\": {...}}`).\nWe model it as `RootModel`-equivalent via `model_config(extra=\"allow\")`\n+ a single `__root__`-style `entries` dict. Pydantic v2 recommends\n`RootModel` for free-form roots; using a wrapper class keeps the import\nsurface uniform with the rest of this module.",
        +                "properties": {
        +                  "entries": {
        +                    "additionalProperties": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.4 — single material/work-class total entry.",
        +                      "properties": {
        +                        "quantity": {
        +                          "minimum": 0,
        +                          "type": "number"
        +                        },
        +                        "unit": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "quantity",
        +                        "unit"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "object"
        +                  }
        +                },
        +                "type": "object"
        +              },
        +              "warnings": {
        +                "items": {
        +                  "additionalProperties": false,
        +                  "description": "Schema § 1.8 — a non-fatal geometry advisory (56th-fire T2).\n\nThe wire projection of the engine's `core.GeometryWarning`. Advisory only:\na warning NEVER changes a measured quantity — it flags geometry that is\nvalid but likely a mistake (e.g. a stale dependent-height default). Present\non BOTH tiers — a correctness/safety signal, not a paid feature.",
        +                  "properties": {
        +                    "affected_params": {
        +                      "items": {
        +                        "type": "string"
        +                      },
        +                      "type": "array"
        +                    },
        +                    "code": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "detail": {
        +                      "additionalProperties": {
        +                        "type": "number"
        +                      },
        +                      "type": "object"
        +                    },
        +                    "message": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "severity": {
        +                      "enum": [
        +                        "info",
        +                        "advisory",
        +                        "caution"
        +                      ],
        +                      "type": "string"
        +                    }
        +                  },
        +                  "required": [
        +                    "code",
        +                    "severity",
        +                    "message"
        +                  ],
        +                  "type": "object"
        +                },
        +                "type": "array"
        +              }
        +            },
        +            "required": [
        +              "assembly_slug",
        +              "standard",
        +              "parameters_used",
        +              "boq_rows",
        +              "totals_summary",
        +              "text_summary"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      },
        +      "error": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        +            "properties": {
        +              "code": {
        +                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        +                "enum": [
        +                  "RATE_LIMIT_EXCEEDED",
        +                  "TIER_INSUFFICIENT",
        +                  "INVALID_INPUT",
        +                  "SCHEMA_VERSION_MISMATCH",
        +                  "SCHEMA_INVARIANT_VIOLATION",
        +                  "UPSTREAM_TIMEOUT",
        +                  "BACKEND_FAILURE",
        +                  "IP_BLOCKED",
        +                  "RESOURCE_NOT_FOUND",
        +                  "RENDER_FAILURE",
        +                  "OCR_LOW_CONFIDENCE",
        +                  "MANUAL_REVIEW_REQUIRED",
        +                  "ACCEPTANCE_REQUIRED",
        +                  "INVALID_TOKEN"
        +                ],
        +                "type": "string"
        +              },
        +              "details": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "message": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "recoverable": {
        +                "type": "boolean"
        +              },
        +              "retry_after_seconds": {
        +                "anyOf": [
        +                  {
        +                    "minimum": 0,
        +                    "type": "integer"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              }
        +            },
        +            "required": [
        +              "code",
        +              "message",
        +              "recoverable"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      }
        +    },
        +    "required": [
        +      "_meta"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "_meta": {
        +        "additionalProperties": false,
        +        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        +        "properties": {
        +          "deliverables": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        +                "properties": {
        +                  "docx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "dxf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "expires_at": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  },
        +                  "pdf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "xlsx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "expires_at"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "document_id": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "issued_at": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "output_mode": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Surfaces what a trimmed ``output_mode`` withheld from ``data``.\n\nA trimmed mode (``summary`` / ``boq`` / ``boq_with_backup``) withholds\nalready-computed fields to keep the chat payload small. The withheld value\nreads to a client agent as \"capability missing\" (the box-culvert \"geometry\nbuilder isn't firing\" scare) rather than \"pared for size\": ``drawing`` and\n``audit_trail`` appear as ``null``, ``boq_rows`` as an empty list ``[]``\n(its type forbids ``null``) — both indistinguishable from a genuine absent\nresult. This names the withheld fields and the exact mode that brings each\nback, so the value is unambiguous. Absent on the default ``full_json`` mode\n— nothing is withheld, nothing to point at.",
        +                "properties": {
        +                  "mode": {
        +                    "enum": [
        +                      "summary",
        +                      "boq",
        +                      "boq_with_backup"
        +                    ],
        +                    "type": "string"
        +                  },
        +                  "omitted_fields": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "minItems": 1,
        +                    "type": "array"
        +                  },
        +                  "retrieve_with": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "mode",
        +                  "omitted_fields",
        +                  "retrieve_with"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "rate_limit_remaining": {
        +            "anyOf": [
        +              {
        +                "minimum": 0,
        +                "type": "integer"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "request_id": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "schema_version": {
        +            "const": "1.0.0",
        +            "default": "1.0.0",
        +            "type": "string"
        +          },
        +          "scope_boundary": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        +                "properties": {
        +                  "not_in_scope": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "produced": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "recommended_companions": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "type": "string"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "produced",
        +                  "not_in_scope"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tier": {
        +            "enum": [
        +              "free",
        +              "paid"
        +            ],
        +            "type": "string"
        +          },
        +          "tier_upgrade": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        +                "properties": {
        +                  "available_tiers": {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        +                      "properties": {
        +                        "billing": {
        +                          "enum": [
        +                            "one_off",
        +                            "monthly",
        +                            "annual"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "currency": {
        +                          "enum": [
        +                            "GBP",
        +                            "SGD",
        +                            "EUR",
        +                            "USD",
        +                            "CAD",
        +                            "AUD",
        +                            "NZD",
        +                            "MYR"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "display_name": {
        +                          "type": "string"
        +                        },
        +                        "price_local": {
        +                          "type": "number"
        +                        },
        +                        "tier_slug": {
        +                          "enum": [
        +                            "7_day_pass",
        +                            "solo",
        +                            "studio",
        +                            "practice"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "unlock_summary": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "tier_slug",
        +                        "display_name",
        +                        "price_local",
        +                        "currency",
        +                        "billing",
        +                        "unlock_summary"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "current_tier": {
        +                    "const": "free",
        +                    "default": "free",
        +                    "type": "string"
        +                  },
        +                  "pass_credit": {
        +                    "anyOf": [
        +                      {
        +                        "additionalProperties": false,
        +                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        +                        "properties": {
        +                          "amount_local": {
        +                            "type": "number"
        +                          },
        +                          "applies_to": {
        +                            "const": "solo_first_month",
        +                            "default": "solo_first_month",
        +                            "type": "string"
        +                          },
        +                          "currency": {
        +                            "type": "string"
        +                          },
        +                          "redeemable_until": {
        +                            "type": "string"
        +                          }
        +                        },
        +                        "required": [
        +                          "amount_local",
        +                          "currency",
        +                          "redeemable_until"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "pricing_url": {
        +                    "default": "https://civilquants.com/pricing",
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "available_tiers"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tos_url": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "upgrade_hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "warranty_disclaimer": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          }
        +        },
        +        "required": [
        +          "request_id",
        +          "issued_at",
        +          "tier"
        +        ],
        +        "type": "object"
        +      },
        +      "data": {
        +        "default": null,
        +        "title": "Data"
        +      },
        +      "error": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        +            "properties": {
        +              "code": {
        +                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        +                "enum": [
        +                  "RATE_LIMIT_EXCEEDED",
        +                  "TIER_INSUFFICIENT",
        +                  "INVALID_INPUT",
        +                  "SCHEMA_VERSION_MISMATCH",
        +                  "SCHEMA_INVARIANT_VIOLATION",
        +                  "UPSTREAM_TIMEOUT",
        +                  "BACKEND_FAILURE",
        +                  "IP_BLOCKED",
        +                  "RESOURCE_NOT_FOUND",
        +                  "RENDER_FAILURE",
        +                  "OCR_LOW_CONFIDENCE",
        +                  "MANUAL_REVIEW_REQUIRED",
        +                  "ACCEPTANCE_REQUIRED",
        +                  "INVALID_TOKEN"
        +                ],
        +                "type": "string"
        +              },
        +              "details": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "message": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "recoverable": {
        +                "type": "boolean"
        +              },
        +              "retry_after_seconds": {
        +                "anyOf": [
        +                  {
        +                    "minimum": 0,
        +                    "type": "integer"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              }
        +            },
        +            "required": [
        +              "code",
        +              "message",
        +              "recoverable"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      }
        +    },
        +    "required": [
        +      "_meta"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedcompute_gravity_wall1 field changed
      • changedOutput schema / properties / result / anyOf
        Previous value: -[
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "_meta": {
        -        "additionalProperties": false,
        -        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        -        "properties": {
        -          "deliverables": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        -                "properties": {
        -                  "docx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "dxf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "expires_at": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  },
        -                  "pdf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "xlsx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "expires_at"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "document_id": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "issued_at": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "rate_limit_remaining": {
        -            "anyOf": [
        -              {
        -                "minimum": 0,
        -                "type": "integer"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "request_id": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "schema_version": {
        -            "const": "1.0.0",
        -            "default": "1.0.0",
        -            "type": "string"
        -          },
        -          "scope_boundary": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        -                "properties": {
        -                  "not_in_scope": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "produced": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "recommended_companions": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "type": "string"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "produced",
        -                  "not_in_scope"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tier": {
        -            "enum": [
        -              "free",
        -              "paid"
        -            ],
        -            "type": "string"
        -          },
        -          "tier_upgrade": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        -                "properties": {
        -                  "available_tiers": {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        -                      "properties": {
        -                        "billing": {
        -                          "enum": [
        -                            "one_off",
        -                            "monthly",
        -                            "annual"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "currency": {
        -                          "enum": [
        -                            "GBP",
        -                            "SGD",
        -                            "EUR",
        -                            "USD",
        -                            "CAD",
        -                            "AUD",
        -                            "NZD",
        -                            "MYR"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "display_name": {
        -                          "type": "string"
        -                        },
        -                        "price_local": {
        -                          "type": "number"
        -                        },
        -                        "tier_slug": {
        -                          "enum": [
        -                            "7_day_pass",
        -                            "solo",
        -                            "studio",
        -                            "practice"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "unlock_summary": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "tier_slug",
        -                        "display_name",
        -                        "price_local",
        -                        "currency",
        -                        "billing",
        -                        "unlock_summary"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "current_tier": {
        -                    "const": "free",
        -                    "default": "free",
        -                    "type": "string"
        -                  },
        -                  "pass_credit": {
        -                    "anyOf": [
        -                      {
        -                        "additionalProperties": false,
        -                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        -                        "properties": {
        -                          "amount_local": {
        -                            "type": "number"
        -                          },
        -                          "applies_to": {
        -                            "const": "solo_first_month",
        -                            "default": "solo_first_month",
        -                            "type": "string"
        -                          },
        -                          "currency": {
        -                            "type": "string"
        -                          },
        -                          "redeemable_until": {
        -                            "type": "string"
        -                          }
        -                        },
        -                        "required": [
        -                          "amount_local",
        -                          "currency",
        -                          "redeemable_until"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "pricing_url": {
        -                    "default": "https://civilquants.com/pricing",
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "available_tiers"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tos_url": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "upgrade_hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "warranty_disclaimer": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          }
        -        },
        -        "required": [
        -          "request_id",
        -          "issued_at",
        -          "tier"
        -        ],
        -        "type": "object"
        -      },
        -      "data": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Schema § 1.1 — the typed payload returned inside `MCPResponse[ComputeResult]`.\n\nFree-tier responses omit `drawings` (the downloadable CAD artefact\npointers — the paid differentiator); the bridge enforces this. The\n`audit_trail` and the inline `drawing` preview are present on BOTH tiers\n(V1 ALIGN / 60th-fire D + C). `text_summary` is bounded to 2000 chars —\nkeeps the LLM-facing summary token-cheap and forces longer narrative into\nBoQ row descriptions where it belongs. `warnings` is the non-fatal\ngeometry advisory list (both tiers).",
        -            "properties": {
        -              "assembly_slug": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "audit_trail": {
        -                "anyOf": [
        -                  {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.7 — paid-tier audit-trail entry.\n\nOne entry per BoQ row; `boq_row_index` ties to the row position in\n`ComputeResult.boq_rows`. `derivation` is the human-readable formula\nwalk-through; `formula` is the optional formal expression.",
        -                      "properties": {
        -                        "boq_row_index": {
        -                          "minimum": 0,
        -                          "type": "integer"
        -                        },
        -                        "derivation": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "formula": {
        -                          "anyOf": [
        -                            {
        -                              "type": "string"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ],
        -                          "default": null
        -                        },
        -                        "id": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "parameters_referenced": {
        -                          "items": {
        -                            "type": "string"
        -                          },
        -                          "type": "array"
        -                        }
        -                      },
        -                      "required": [
        -                        "id",
        -                        "boq_row_index",
        -                        "derivation"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "boq_rows": {
        -                "items": {
        -                  "additionalProperties": false,
        -                  "description": "Schema § 1.3 — a single bill row in the requested standard's format.\n\n`description` is the non-verbatim functional description per spec § 13.9 /\n§ 15 invariant — NEVER reproduces a standard's verbatim clause text.\n`rate` / `amount` ship null because rates are commodity data the customer\nowns; the engine's job is the measurement, not the pricing.",
        -                  "properties": {
        -                    "amount": {
        -                      "anyOf": [
        -                        {
        -                          "type": "number"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "attribution": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "audit_id": {
        -                      "anyOf": [
        -                        {
        -                          "type": "string"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "description": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "quantity": {
        -                      "minimum": 0,
        -                      "type": "number"
        -                    },
        -                    "rate": {
        -                      "anyOf": [
        -                        {
        -                          "type": "number"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "unit": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "work_section": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    }
        -                  },
        -                  "required": [
        -                    "work_section",
        -                    "description",
        -                    "quantity",
        -                    "unit",
        -                    "attribution"
        -                  ],
        -                  "type": "object"
        -                },
        -                "type": "array"
        -              },
        -              "drawing": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": false,
        -                    "description": "Schema § 1.6a — inline server-rendered SVG preview of the geometry.\n\nThe MCP mirror of the web ``/compute`` response's ``drawing`` field\n(``api.schemas.compute.DrawingRef``): the same on-screen dimensioned\ndrawing both tiers see in the workspace, surfaced on the MCP compute\nresponse so a chat client can render it inline (60th-fire item C). This\nis the on-screen preview — present on BOTH tiers per the free/paid\nboundary; the downloadable CAD artefacts (DXF / dimensioned PDF) remain\nthe paid differentiator via the export tools.\n\nDefined here rather than importing ``DrawingRef`` because the web\n``schemas`` package imports back into this module (``schemas.render``),\nso reusing it would create an import cycle — the MCP wire contract keeps\nits own copy, the same pattern as ``BoQRow`` / ``DrawingReference``.",
        -                    "properties": {
        -                      "entity_count": {
        -                        "minimum": 0,
        -                        "type": "integer"
        -                      },
        -                      "svg_b64": {
        -                        "minLength": 1,
        -                        "type": "string"
        -                      },
        -                      "unit_of_drawing": {
        -                        "const": "m",
        -                        "default": "m",
        -                        "type": "string"
        -                      },
        -                      "viewbox_height": {
        -                        "exclusiveMinimum": 0,
        -                        "type": "number"
        -                      },
        -                      "viewbox_width": {
        -                        "exclusiveMinimum": 0,
        -                        "type": "number"
        -                      },
        -                      "viewbox_x": {
        -                        "type": "number"
        -                      },
        -                      "viewbox_y": {
        -                        "type": "number"
        -                      }
        -                    },
        -                    "required": [
        -                      "svg_b64",
        -                      "viewbox_x",
        -                      "viewbox_y",
        -                      "viewbox_width",
        -                      "viewbox_height",
        -                      "entity_count"
        -                    ],
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "drawings": {
        -                "anyOf": [
        -                  {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.6 — paid-tier drawing artefact pointer.\n\n`url` is an R2-signed URL; expiry is carried in `_meta.deliverables.expires_at`\non the envelope (not duplicated here). `layers` is DXF-only; PDF/SVG\ncallers omit it.",
        -                      "properties": {
        -                        "drawing_type": {
        -                          "enum": [
        -                            "section",
        -                            "plan",
        -                            "elevation",
        -                            "isometric",
        -                            "detail"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "format": {
        -                          "enum": [
        -                            "DXF",
        -                            "PDF",
        -                            "SVG"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "layers": {
        -                          "anyOf": [
        -                            {
        -                              "items": {
        -                                "type": "string"
        -                              },
        -                              "type": "array"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ],
        -                          "default": null
        -                        },
        -                        "scale": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "sheet_size": {
        -                          "enum": [
        -                            "A1",
        -                            "A2",
        -                            "A3",
        -                            "A4"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "url": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "drawing_type",
        -                        "format",
        -                        "url",
        -                        "sheet_size",
        -                        "scale"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "parameters_used": {
        -                "additionalProperties": false,
        -                "description": "Schema § 1.2 — the parameter snapshot the engine actually used.\n\nSplits user-supplied values from engine defaults so customers can see\nwhich numbers came from them and which the engine filled in. Every\ndefaulted parameter SHOULD have a corresponding entry in `assumptions`\n— the bridge layer enforces this when wrapping engine output.",
        -                "properties": {
        -                  "assumptions": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "engine_defaults": {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  "user_supplied": {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  }
        -                },
        -                "type": "object"
        -              },
        -              "standard": {
        -                "enum": [
        -                  "CESMM4",
        -                  "NRM2",
        -                  "SMM7",
        -                  "MMHW"
        -                ],
        -                "type": "string"
        -              },
        -              "text_summary": {
        -                "maxLength": 2000,
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "totals_summary": {
        -                "additionalProperties": false,
        -                "description": "Schema § 1.4 — totals_summary as a typed wrapper around the free-form dict.\n\nWire shape is a flat object (`{\"concrete_m3\": {...}, \"rebar_t\": {...}}`).\nWe model it as `RootModel`-equivalent via `model_config(extra=\"allow\")`\n+ a single `__root__`-style `entries` dict. Pydantic v2 recommends\n`RootModel` for free-form roots; using a wrapper class keeps the import\nsurface uniform with the rest of this module.",
        -                "properties": {
        -                  "entries": {
        -                    "additionalProperties": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.4 — single material/work-class total entry.",
        -                      "properties": {
        -                        "quantity": {
        -                          "minimum": 0,
        -                          "type": "number"
        -                        },
        -                        "unit": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "quantity",
        -                        "unit"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "object"
        -                  }
        -                },
        -                "type": "object"
        -              },
        -              "warnings": {
        -                "items": {
        -                  "additionalProperties": false,
        -                  "description": "Schema § 1.8 — a non-fatal geometry advisory (56th-fire T2).\n\nThe wire projection of the engine's `core.GeometryWarning`. Advisory only:\na warning NEVER changes a measured quantity — it flags geometry that is\nvalid but likely a mistake (e.g. a stale dependent-height default). Present\non BOTH tiers — a correctness/safety signal, not a paid feature.",
        -                  "properties": {
        -                    "affected_params": {
        -                      "items": {
        -                        "type": "string"
        -                      },
        -                      "type": "array"
        -                    },
        -                    "code": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "detail": {
        -                      "additionalProperties": {
        -                        "type": "number"
        -                      },
        -                      "type": "object"
        -                    },
        -                    "message": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "severity": {
        -                      "enum": [
        -                        "info",
        -                        "advisory",
        -                        "caution"
        -                      ],
        -                      "type": "string"
        -                    }
        -                  },
        -                  "required": [
        -                    "code",
        -                    "severity",
        -                    "message"
        -                  ],
        -                  "type": "object"
        -                },
        -                "type": "array"
        -              }
        -            },
        -            "required": [
        -              "assembly_slug",
        -              "standard",
        -              "parameters_used",
        -              "boq_rows",
        -              "totals_summary",
        -              "text_summary"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      },
        -      "error": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        -            "properties": {
        -              "code": {
        -                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        -                "enum": [
        -                  "RATE_LIMIT_EXCEEDED",
        -                  "TIER_INSUFFICIENT",
        -                  "INVALID_INPUT",
        -                  "SCHEMA_VERSION_MISMATCH",
        -                  "SCHEMA_INVARIANT_VIOLATION",
        -                  "UPSTREAM_TIMEOUT",
        -                  "BACKEND_FAILURE",
        -                  "IP_BLOCKED",
        -                  "RESOURCE_NOT_FOUND",
        -                  "RENDER_FAILURE",
        -                  "OCR_LOW_CONFIDENCE",
        -                  "MANUAL_REVIEW_REQUIRED",
        -                  "ACCEPTANCE_REQUIRED",
        -                  "INVALID_TOKEN"
        -                ],
        -                "type": "string"
        -              },
        -              "details": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "message": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "recoverable": {
        -                "type": "boolean"
        -              },
        -              "retry_after_seconds": {
        -                "anyOf": [
        -                  {
        -                    "minimum": 0,
        -                    "type": "integer"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              }
        -            },
        -            "required": [
        -              "code",
        -              "message",
        -              "recoverable"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      }
        -    },
        -    "required": [
        -      "_meta"
        -    ],
        -    "type": "object"
        -  },
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "_meta": {
        -        "additionalProperties": false,
        -        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        -        "properties": {
        -          "deliverables": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        -                "properties": {
        -                  "docx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "dxf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "expires_at": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  },
        -                  "pdf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "xlsx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "expires_at"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "document_id": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "issued_at": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "rate_limit_remaining": {
        -            "anyOf": [
        -              {
        -                "minimum": 0,
        -                "type": "integer"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "request_id": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "schema_version": {
        -            "const": "1.0.0",
        -            "default": "1.0.0",
        -            "type": "string"
        -          },
        -          "scope_boundary": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        -                "properties": {
        -                  "not_in_scope": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "produced": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "recommended_companions": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "type": "string"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "produced",
        -                  "not_in_scope"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tier": {
        -            "enum": [
        -              "free",
        -              "paid"
        -            ],
        -            "type": "string"
        -          },
        -          "tier_upgrade": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        -                "properties": {
        -                  "available_tiers": {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        -                      "properties": {
        -                        "billing": {
        -                          "enum": [
        -                            "one_off",
        -                            "monthly",
        -                            "annual"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "currency": {
        -                          "enum": [
        -                            "GBP",
        -                            "SGD",
        -                            "EUR",
        -                            "USD",
        -                            "CAD",
        -                            "AUD",
        -                            "NZD",
        -                            "MYR"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "display_name": {
        -                          "type": "string"
        -                        },
        -                        "price_local": {
        -                          "type": "number"
        -                        },
        -                        "tier_slug": {
        -                          "enum": [
        -                            "7_day_pass",
        -                            "solo",
        -                            "studio",
        -                            "practice"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "unlock_summary": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "tier_slug",
        -                        "display_name",
        -                        "price_local",
        -                        "currency",
        -                        "billing",
        -                        "unlock_summary"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "current_tier": {
        -                    "const": "free",
        -                    "default": "free",
        -                    "type": "string"
        -                  },
        -                  "pass_credit": {
        -                    "anyOf": [
        -                      {
        -                        "additionalProperties": false,
        -                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        -                        "properties": {
        -                          "amount_local": {
        -                            "type": "number"
        -                          },
        -                          "applies_to": {
        -                            "const": "solo_first_month",
        -                            "default": "solo_first_month",
        -                            "type": "string"
        -                          },
        -                          "currency": {
        -                            "type": "string"
        -                          },
        -                          "redeemable_until": {
        -                            "type": "string"
        -                          }
        -                        },
        -                        "required": [
        -                          "amount_local",
        -                          "currency",
        -                          "redeemable_until"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "pricing_url": {
        -                    "default": "https://civilquants.com/pricing",
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "available_tiers"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tos_url": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "upgrade_hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "warranty_disclaimer": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          }
        -        },
        -        "required": [
        -          "request_id",
        -          "issued_at",
        -          "tier"
        -        ],
        -        "type": "object"
        -      },
        -      "data": {
        -        "default": null,
        -        "title": "Data"
        -      },
        -      "error": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        -            "properties": {
        -              "code": {
        -                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        -                "enum": [
        -                  "RATE_LIMIT_EXCEEDED",
        -                  "TIER_INSUFFICIENT",
        -                  "INVALID_INPUT",
        -                  "SCHEMA_VERSION_MISMATCH",
        -                  "SCHEMA_INVARIANT_VIOLATION",
        -                  "UPSTREAM_TIMEOUT",
        -                  "BACKEND_FAILURE",
        -                  "IP_BLOCKED",
        -                  "RESOURCE_NOT_FOUND",
        -                  "RENDER_FAILURE",
        -                  "OCR_LOW_CONFIDENCE",
        -                  "MANUAL_REVIEW_REQUIRED",
        -                  "ACCEPTANCE_REQUIRED",
        -                  "INVALID_TOKEN"
        -                ],
        -                "type": "string"
        -              },
        -              "details": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "message": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "recoverable": {
        -                "type": "boolean"
        -              },
        -              "retry_after_seconds": {
        -                "anyOf": [
        -                  {
        -                    "minimum": 0,
        -                    "type": "integer"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              }
        -            },
        -            "required": [
        -              "code",
        -              "message",
        -              "recoverable"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      }
        -    },
        -    "required": [
        -      "_meta"
        -    ],
        -    "type": "object"
        -  }
        -]New value: +[
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "_meta": {
        +        "additionalProperties": false,
        +        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        +        "properties": {
        +          "deliverables": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        +                "properties": {
        +                  "docx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "dxf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "expires_at": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  },
        +                  "pdf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "xlsx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "expires_at"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "document_id": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "issued_at": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "output_mode": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Surfaces what a trimmed ``output_mode`` withheld from ``data``.\n\nA trimmed mode (``summary`` / ``boq`` / ``boq_with_backup``) withholds\nalready-computed fields to keep the chat payload small. The withheld value\nreads to a client agent as \"capability missing\" (the box-culvert \"geometry\nbuilder isn't firing\" scare) rather than \"pared for size\": ``drawing`` and\n``audit_trail`` appear as ``null``, ``boq_rows`` as an empty list ``[]``\n(its type forbids ``null``) — both indistinguishable from a genuine absent\nresult. This names the withheld fields and the exact mode that brings each\nback, so the value is unambiguous. Absent on the default ``full_json`` mode\n— nothing is withheld, nothing to point at.",
        +                "properties": {
        +                  "mode": {
        +                    "enum": [
        +                      "summary",
        +                      "boq",
        +                      "boq_with_backup"
        +                    ],
        +                    "type": "string"
        +                  },
        +                  "omitted_fields": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "minItems": 1,
        +                    "type": "array"
        +                  },
        +                  "retrieve_with": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "mode",
        +                  "omitted_fields",
        +                  "retrieve_with"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "rate_limit_remaining": {
        +            "anyOf": [
        +              {
        +                "minimum": 0,
        +                "type": "integer"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "request_id": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "schema_version": {
        +            "const": "1.0.0",
        +            "default": "1.0.0",
        +            "type": "string"
        +          },
        +          "scope_boundary": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        +                "properties": {
        +                  "not_in_scope": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "produced": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "recommended_companions": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "type": "string"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "produced",
        +                  "not_in_scope"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tier": {
        +            "enum": [
        +              "free",
        +              "paid"
        +            ],
        +            "type": "string"
        +          },
        +          "tier_upgrade": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        +                "properties": {
        +                  "available_tiers": {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        +                      "properties": {
        +                        "billing": {
        +                          "enum": [
        +                            "one_off",
        +                            "monthly",
        +                            "annual"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "currency": {
        +                          "enum": [
        +                            "GBP",
        +                            "SGD",
        +                            "EUR",
        +                            "USD",
        +                            "CAD",
        +                            "AUD",
        +                            "NZD",
        +                            "MYR"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "display_name": {
        +                          "type": "string"
        +                        },
        +                        "price_local": {
        +                          "type": "number"
        +                        },
        +                        "tier_slug": {
        +                          "enum": [
        +                            "7_day_pass",
        +                            "solo",
        +                            "studio",
        +                            "practice"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "unlock_summary": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "tier_slug",
        +                        "display_name",
        +                        "price_local",
        +                        "currency",
        +                        "billing",
        +                        "unlock_summary"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "current_tier": {
        +                    "const": "free",
        +                    "default": "free",
        +                    "type": "string"
        +                  },
        +                  "pass_credit": {
        +                    "anyOf": [
        +                      {
        +                        "additionalProperties": false,
        +                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        +                        "properties": {
        +                          "amount_local": {
        +                            "type": "number"
        +                          },
        +                          "applies_to": {
        +                            "const": "solo_first_month",
        +                            "default": "solo_first_month",
        +                            "type": "string"
        +                          },
        +                          "currency": {
        +                            "type": "string"
        +                          },
        +                          "redeemable_until": {
        +                            "type": "string"
        +                          }
        +                        },
        +                        "required": [
        +                          "amount_local",
        +                          "currency",
        +                          "redeemable_until"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "pricing_url": {
        +                    "default": "https://civilquants.com/pricing",
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "available_tiers"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tos_url": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "upgrade_hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "warranty_disclaimer": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          }
        +        },
        +        "required": [
        +          "request_id",
        +          "issued_at",
        +          "tier"
        +        ],
        +        "type": "object"
        +      },
        +      "data": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Schema § 1.1 — the typed payload returned inside `MCPResponse[ComputeResult]`.\n\nFree-tier responses omit `drawings` (the downloadable CAD artefact\npointers — the paid differentiator); the bridge enforces this. The\n`audit_trail` and the inline `drawing` preview are present on BOTH tiers\n(V1 ALIGN / 60th-fire D + C). `text_summary` is bounded to 2000 chars —\nkeeps the LLM-facing summary token-cheap and forces longer narrative into\nBoQ row descriptions where it belongs. `warnings` is the non-fatal\ngeometry advisory list (both tiers).",
        +            "properties": {
        +              "assembly_slug": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "audit_trail": {
        +                "anyOf": [
        +                  {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.7 — paid-tier audit-trail entry.\n\nOne entry per BoQ row; `boq_row_index` ties to the row position in\n`ComputeResult.boq_rows`. `derivation` is the human-readable formula\nwalk-through; `formula` is the optional formal expression.",
        +                      "properties": {
        +                        "boq_row_index": {
        +                          "minimum": 0,
        +                          "type": "integer"
        +                        },
        +                        "derivation": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "formula": {
        +                          "anyOf": [
        +                            {
        +                              "type": "string"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ],
        +                          "default": null
        +                        },
        +                        "id": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "parameters_referenced": {
        +                          "items": {
        +                            "type": "string"
        +                          },
        +                          "type": "array"
        +                        }
        +                      },
        +                      "required": [
        +                        "id",
        +                        "boq_row_index",
        +                        "derivation"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "boq_rows": {
        +                "items": {
        +                  "additionalProperties": false,
        +                  "description": "Schema § 1.3 — a single bill row in the requested standard's format.\n\n`description` is the non-verbatim functional description per spec § 13.9 /\n§ 15 invariant — NEVER reproduces a standard's verbatim clause text.\n`rate` / `amount` ship null because rates are commodity data the customer\nowns; the engine's job is the measurement, not the pricing.",
        +                  "properties": {
        +                    "amount": {
        +                      "anyOf": [
        +                        {
        +                          "type": "number"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "attribution": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "audit_id": {
        +                      "anyOf": [
        +                        {
        +                          "type": "string"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "description": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "quantity": {
        +                      "minimum": 0,
        +                      "type": "number"
        +                    },
        +                    "rate": {
        +                      "anyOf": [
        +                        {
        +                          "type": "number"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "unit": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "work_section": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    }
        +                  },
        +                  "required": [
        +                    "work_section",
        +                    "description",
        +                    "quantity",
        +                    "unit",
        +                    "attribution"
        +                  ],
        +                  "type": "object"
        +                },
        +                "type": "array"
        +              },
        +              "drawing": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": false,
        +                    "description": "Schema § 1.6a — inline server-rendered SVG preview of the geometry.\n\nThe MCP mirror of the web ``/compute`` response's ``drawing`` field\n(``api.schemas.compute.DrawingRef``): the same on-screen dimensioned\ndrawing both tiers see in the workspace, surfaced on the MCP compute\nresponse so a chat client can render it inline (60th-fire item C). This\nis the on-screen preview — present on BOTH tiers per the free/paid\nboundary; the downloadable CAD artefacts (DXF / dimensioned PDF) remain\nthe paid differentiator via the export tools.\n\nDefined here rather than importing ``DrawingRef`` because the web\n``schemas`` package imports back into this module (``schemas.render``),\nso reusing it would create an import cycle — the MCP wire contract keeps\nits own copy, the same pattern as ``BoQRow`` / ``DrawingReference``.",
        +                    "properties": {
        +                      "entity_count": {
        +                        "minimum": 0,
        +                        "type": "integer"
        +                      },
        +                      "svg_b64": {
        +                        "minLength": 1,
        +                        "type": "string"
        +                      },
        +                      "unit_of_drawing": {
        +                        "const": "m",
        +                        "default": "m",
        +                        "type": "string"
        +                      },
        +                      "viewbox_height": {
        +                        "exclusiveMinimum": 0,
        +                        "type": "number"
        +                      },
        +                      "viewbox_width": {
        +                        "exclusiveMinimum": 0,
        +                        "type": "number"
        +                      },
        +                      "viewbox_x": {
        +                        "type": "number"
        +                      },
        +                      "viewbox_y": {
        +                        "type": "number"
        +                      }
        +                    },
        +                    "required": [
        +                      "svg_b64",
        +                      "viewbox_x",
        +                      "viewbox_y",
        +                      "viewbox_width",
        +                      "viewbox_height",
        +                      "entity_count"
        +                    ],
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "drawings": {
        +                "anyOf": [
        +                  {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.6 — paid-tier drawing artefact pointer.\n\n`url` is an R2-signed URL; expiry is carried in `_meta.deliverables.expires_at`\non the envelope (not duplicated here). `layers` is DXF-only; PDF/SVG\ncallers omit it.",
        +                      "properties": {
        +                        "drawing_type": {
        +                          "enum": [
        +                            "section",
        +                            "plan",
        +                            "elevation",
        +                            "isometric",
        +                            "detail"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "format": {
        +                          "enum": [
        +                            "DXF",
        +                            "PDF",
        +                            "SVG"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "layers": {
        +                          "anyOf": [
        +                            {
        +                              "items": {
        +                                "type": "string"
        +                              },
        +                              "type": "array"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ],
        +                          "default": null
        +                        },
        +                        "scale": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "sheet_size": {
        +                          "enum": [
        +                            "A1",
        +                            "A2",
        +                            "A3",
        +                            "A4"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "url": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "drawing_type",
        +                        "format",
        +                        "url",
        +                        "sheet_size",
        +                        "scale"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "parameters_used": {
        +                "additionalProperties": false,
        +                "description": "Schema § 1.2 — the parameter snapshot the engine actually used.\n\nSplits user-supplied values from engine defaults so customers can see\nwhich numbers came from them and which the engine filled in. Every\ndefaulted parameter SHOULD have a corresponding entry in `assumptions`\n— the bridge layer enforces this when wrapping engine output.",
        +                "properties": {
        +                  "assumptions": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "engine_defaults": {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  "user_supplied": {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  }
        +                },
        +                "type": "object"
        +              },
        +              "standard": {
        +                "enum": [
        +                  "CESMM4",
        +                  "NRM2",
        +                  "SMM7",
        +                  "MMHW"
        +                ],
        +                "type": "string"
        +              },
        +              "text_summary": {
        +                "maxLength": 2000,
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "totals_summary": {
        +                "additionalProperties": false,
        +                "description": "Schema § 1.4 — totals_summary as a typed wrapper around the free-form dict.\n\nWire shape is a flat object (`{\"concrete_m3\": {...}, \"rebar_t\": {...}}`).\nWe model it as `RootModel`-equivalent via `model_config(extra=\"allow\")`\n+ a single `__root__`-style `entries` dict. Pydantic v2 recommends\n`RootModel` for free-form roots; using a wrapper class keeps the import\nsurface uniform with the rest of this module.",
        +                "properties": {
        +                  "entries": {
        +                    "additionalProperties": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.4 — single material/work-class total entry.",
        +                      "properties": {
        +                        "quantity": {
        +                          "minimum": 0,
        +                          "type": "number"
        +                        },
        +                        "unit": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "quantity",
        +                        "unit"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "object"
        +                  }
        +                },
        +                "type": "object"
        +              },
        +              "warnings": {
        +                "items": {
        +                  "additionalProperties": false,
        +                  "description": "Schema § 1.8 — a non-fatal geometry advisory (56th-fire T2).\n\nThe wire projection of the engine's `core.GeometryWarning`. Advisory only:\na warning NEVER changes a measured quantity — it flags geometry that is\nvalid but likely a mistake (e.g. a stale dependent-height default). Present\non BOTH tiers — a correctness/safety signal, not a paid feature.",
        +                  "properties": {
        +                    "affected_params": {
        +                      "items": {
        +                        "type": "string"
        +                      },
        +                      "type": "array"
        +                    },
        +                    "code": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "detail": {
        +                      "additionalProperties": {
        +                        "type": "number"
        +                      },
        +                      "type": "object"
        +                    },
        +                    "message": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "severity": {
        +                      "enum": [
        +                        "info",
        +                        "advisory",
        +                        "caution"
        +                      ],
        +                      "type": "string"
        +                    }
        +                  },
        +                  "required": [
        +                    "code",
        +                    "severity",
        +                    "message"
        +                  ],
        +                  "type": "object"
        +                },
        +                "type": "array"
        +              }
        +            },
        +            "required": [
        +              "assembly_slug",
        +              "standard",
        +              "parameters_used",
        +              "boq_rows",
        +              "totals_summary",
        +              "text_summary"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      },
        +      "error": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        +            "properties": {
        +              "code": {
        +                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        +                "enum": [
        +                  "RATE_LIMIT_EXCEEDED",
        +                  "TIER_INSUFFICIENT",
        +                  "INVALID_INPUT",
        +                  "SCHEMA_VERSION_MISMATCH",
        +                  "SCHEMA_INVARIANT_VIOLATION",
        +                  "UPSTREAM_TIMEOUT",
        +                  "BACKEND_FAILURE",
        +                  "IP_BLOCKED",
        +                  "RESOURCE_NOT_FOUND",
        +                  "RENDER_FAILURE",
        +                  "OCR_LOW_CONFIDENCE",
        +                  "MANUAL_REVIEW_REQUIRED",
        +                  "ACCEPTANCE_REQUIRED",
        +                  "INVALID_TOKEN"
        +                ],
        +                "type": "string"
        +              },
        +              "details": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "message": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "recoverable": {
        +                "type": "boolean"
        +              },
        +              "retry_after_seconds": {
        +                "anyOf": [
        +                  {
        +                    "minimum": 0,
        +                    "type": "integer"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              }
        +            },
        +            "required": [
        +              "code",
        +              "message",
        +              "recoverable"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      }
        +    },
        +    "required": [
        +      "_meta"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "_meta": {
        +        "additionalProperties": false,
        +        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        +        "properties": {
        +          "deliverables": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        +                "properties": {
        +                  "docx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "dxf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "expires_at": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  },
        +                  "pdf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "xlsx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "expires_at"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "document_id": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "issued_at": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "output_mode": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Surfaces what a trimmed ``output_mode`` withheld from ``data``.\n\nA trimmed mode (``summary`` / ``boq`` / ``boq_with_backup``) withholds\nalready-computed fields to keep the chat payload small. The withheld value\nreads to a client agent as \"capability missing\" (the box-culvert \"geometry\nbuilder isn't firing\" scare) rather than \"pared for size\": ``drawing`` and\n``audit_trail`` appear as ``null``, ``boq_rows`` as an empty list ``[]``\n(its type forbids ``null``) — both indistinguishable from a genuine absent\nresult. This names the withheld fields and the exact mode that brings each\nback, so the value is unambiguous. Absent on the default ``full_json`` mode\n— nothing is withheld, nothing to point at.",
        +                "properties": {
        +                  "mode": {
        +                    "enum": [
        +                      "summary",
        +                      "boq",
        +                      "boq_with_backup"
        +                    ],
        +                    "type": "string"
        +                  },
        +                  "omitted_fields": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "minItems": 1,
        +                    "type": "array"
        +                  },
        +                  "retrieve_with": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "mode",
        +                  "omitted_fields",
        +                  "retrieve_with"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "rate_limit_remaining": {
        +            "anyOf": [
        +              {
        +                "minimum": 0,
        +                "type": "integer"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "request_id": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "schema_version": {
        +            "const": "1.0.0",
        +            "default": "1.0.0",
        +            "type": "string"
        +          },
        +          "scope_boundary": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        +                "properties": {
        +                  "not_in_scope": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "produced": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "recommended_companions": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "type": "string"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "produced",
        +                  "not_in_scope"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tier": {
        +            "enum": [
        +              "free",
        +              "paid"
        +            ],
        +            "type": "string"
        +          },
        +          "tier_upgrade": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        +                "properties": {
        +                  "available_tiers": {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        +                      "properties": {
        +                        "billing": {
        +                          "enum": [
        +                            "one_off",
        +                            "monthly",
        +                            "annual"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "currency": {
        +                          "enum": [
        +                            "GBP",
        +                            "SGD",
        +                            "EUR",
        +                            "USD",
        +                            "CAD",
        +                            "AUD",
        +                            "NZD",
        +                            "MYR"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "display_name": {
        +                          "type": "string"
        +                        },
        +                        "price_local": {
        +                          "type": "number"
        +                        },
        +                        "tier_slug": {
        +                          "enum": [
        +                            "7_day_pass",
        +                            "solo",
        +                            "studio",
        +                            "practice"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "unlock_summary": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "tier_slug",
        +                        "display_name",
        +                        "price_local",
        +                        "currency",
        +                        "billing",
        +                        "unlock_summary"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "current_tier": {
        +                    "const": "free",
        +                    "default": "free",
        +                    "type": "string"
        +                  },
        +                  "pass_credit": {
        +                    "anyOf": [
        +                      {
        +                        "additionalProperties": false,
        +                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        +                        "properties": {
        +                          "amount_local": {
        +                            "type": "number"
        +                          },
        +                          "applies_to": {
        +                            "const": "solo_first_month",
        +                            "default": "solo_first_month",
        +                            "type": "string"
        +                          },
        +                          "currency": {
        +                            "type": "string"
        +                          },
        +                          "redeemable_until": {
        +                            "type": "string"
        +                          }
        +                        },
        +                        "required": [
        +                          "amount_local",
        +                          "currency",
        +                          "redeemable_until"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "pricing_url": {
        +                    "default": "https://civilquants.com/pricing",
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "available_tiers"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tos_url": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "upgrade_hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "warranty_disclaimer": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          }
        +        },
        +        "required": [
        +          "request_id",
        +          "issued_at",
        +          "tier"
        +        ],
        +        "type": "object"
        +      },
        +      "data": {
        +        "default": null,
        +        "title": "Data"
        +      },
        +      "error": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        +            "properties": {
        +              "code": {
        +                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        +                "enum": [
        +                  "RATE_LIMIT_EXCEEDED",
        +                  "TIER_INSUFFICIENT",
        +                  "INVALID_INPUT",
        +                  "SCHEMA_VERSION_MISMATCH",
        +                  "SCHEMA_INVARIANT_VIOLATION",
        +                  "UPSTREAM_TIMEOUT",
        +                  "BACKEND_FAILURE",
        +                  "IP_BLOCKED",
        +                  "RESOURCE_NOT_FOUND",
        +                  "RENDER_FAILURE",
        +                  "OCR_LOW_CONFIDENCE",
        +                  "MANUAL_REVIEW_REQUIRED",
        +                  "ACCEPTANCE_REQUIRED",
        +                  "INVALID_TOKEN"
        +                ],
        +                "type": "string"
        +              },
        +              "details": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "message": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "recoverable": {
        +                "type": "boolean"
        +              },
        +              "retry_after_seconds": {
        +                "anyOf": [
        +                  {
        +                    "minimum": 0,
        +                    "type": "integer"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              }
        +            },
        +            "required": [
        +              "code",
        +              "message",
        +              "recoverable"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      }
        +    },
        +    "required": [
        +      "_meta"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedcompute_gully1 field changed
      • changedOutput schema / properties / result / anyOf
        Previous value: -[
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "_meta": {
        -        "additionalProperties": false,
        -        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        -        "properties": {
        -          "deliverables": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        -                "properties": {
        -                  "docx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "dxf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "expires_at": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  },
        -                  "pdf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "xlsx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "expires_at"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "document_id": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "issued_at": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "rate_limit_remaining": {
        -            "anyOf": [
        -              {
        -                "minimum": 0,
        -                "type": "integer"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "request_id": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "schema_version": {
        -            "const": "1.0.0",
        -            "default": "1.0.0",
        -            "type": "string"
        -          },
        -          "scope_boundary": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        -                "properties": {
        -                  "not_in_scope": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "produced": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "recommended_companions": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "type": "string"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "produced",
        -                  "not_in_scope"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tier": {
        -            "enum": [
        -              "free",
        -              "paid"
        -            ],
        -            "type": "string"
        -          },
        -          "tier_upgrade": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        -                "properties": {
        -                  "available_tiers": {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        -                      "properties": {
        -                        "billing": {
        -                          "enum": [
        -                            "one_off",
        -                            "monthly",
        -                            "annual"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "currency": {
        -                          "enum": [
        -                            "GBP",
        -                            "SGD",
        -                            "EUR",
        -                            "USD",
        -                            "CAD",
        -                            "AUD",
        -                            "NZD",
        -                            "MYR"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "display_name": {
        -                          "type": "string"
        -                        },
        -                        "price_local": {
        -                          "type": "number"
        -                        },
        -                        "tier_slug": {
        -                          "enum": [
        -                            "7_day_pass",
        -                            "solo",
        -                            "studio",
        -                            "practice"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "unlock_summary": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "tier_slug",
        -                        "display_name",
        -                        "price_local",
        -                        "currency",
        -                        "billing",
        -                        "unlock_summary"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "current_tier": {
        -                    "const": "free",
        -                    "default": "free",
        -                    "type": "string"
        -                  },
        -                  "pass_credit": {
        -                    "anyOf": [
        -                      {
        -                        "additionalProperties": false,
        -                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        -                        "properties": {
        -                          "amount_local": {
        -                            "type": "number"
        -                          },
        -                          "applies_to": {
        -                            "const": "solo_first_month",
        -                            "default": "solo_first_month",
        -                            "type": "string"
        -                          },
        -                          "currency": {
        -                            "type": "string"
        -                          },
        -                          "redeemable_until": {
        -                            "type": "string"
        -                          }
        -                        },
        -                        "required": [
        -                          "amount_local",
        -                          "currency",
        -                          "redeemable_until"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "pricing_url": {
        -                    "default": "https://civilquants.com/pricing",
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "available_tiers"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tos_url": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "upgrade_hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "warranty_disclaimer": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          }
        -        },
        -        "required": [
        -          "request_id",
        -          "issued_at",
        -          "tier"
        -        ],
        -        "type": "object"
        -      },
        -      "data": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Schema § 1.1 — the typed payload returned inside `MCPResponse[ComputeResult]`.\n\nFree-tier responses omit `drawings` (the downloadable CAD artefact\npointers — the paid differentiator); the bridge enforces this. The\n`audit_trail` and the inline `drawing` preview are present on BOTH tiers\n(V1 ALIGN / 60th-fire D + C). `text_summary` is bounded to 2000 chars —\nkeeps the LLM-facing summary token-cheap and forces longer narrative into\nBoQ row descriptions where it belongs. `warnings` is the non-fatal\ngeometry advisory list (both tiers).",
        -            "properties": {
        -              "assembly_slug": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "audit_trail": {
        -                "anyOf": [
        -                  {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.7 — paid-tier audit-trail entry.\n\nOne entry per BoQ row; `boq_row_index` ties to the row position in\n`ComputeResult.boq_rows`. `derivation` is the human-readable formula\nwalk-through; `formula` is the optional formal expression.",
        -                      "properties": {
        -                        "boq_row_index": {
        -                          "minimum": 0,
        -                          "type": "integer"
        -                        },
        -                        "derivation": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "formula": {
        -                          "anyOf": [
        -                            {
        -                              "type": "string"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ],
        -                          "default": null
        -                        },
        -                        "id": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "parameters_referenced": {
        -                          "items": {
        -                            "type": "string"
        -                          },
        -                          "type": "array"
        -                        }
        -                      },
        -                      "required": [
        -                        "id",
        -                        "boq_row_index",
        -                        "derivation"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "boq_rows": {
        -                "items": {
        -                  "additionalProperties": false,
        -                  "description": "Schema § 1.3 — a single bill row in the requested standard's format.\n\n`description` is the non-verbatim functional description per spec § 13.9 /\n§ 15 invariant — NEVER reproduces a standard's verbatim clause text.\n`rate` / `amount` ship null because rates are commodity data the customer\nowns; the engine's job is the measurement, not the pricing.",
        -                  "properties": {
        -                    "amount": {
        -                      "anyOf": [
        -                        {
        -                          "type": "number"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "attribution": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "audit_id": {
        -                      "anyOf": [
        -                        {
        -                          "type": "string"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "description": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "quantity": {
        -                      "minimum": 0,
        -                      "type": "number"
        -                    },
        -                    "rate": {
        -                      "anyOf": [
        -                        {
        -                          "type": "number"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "unit": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "work_section": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    }
        -                  },
        -                  "required": [
        -                    "work_section",
        -                    "description",
        -                    "quantity",
        -                    "unit",
        -                    "attribution"
        -                  ],
        -                  "type": "object"
        -                },
        -                "type": "array"
        -              },
        -              "drawing": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": false,
        -                    "description": "Schema § 1.6a — inline server-rendered SVG preview of the geometry.\n\nThe MCP mirror of the web ``/compute`` response's ``drawing`` field\n(``api.schemas.compute.DrawingRef``): the same on-screen dimensioned\ndrawing both tiers see in the workspace, surfaced on the MCP compute\nresponse so a chat client can render it inline (60th-fire item C). This\nis the on-screen preview — present on BOTH tiers per the free/paid\nboundary; the downloadable CAD artefacts (DXF / dimensioned PDF) remain\nthe paid differentiator via the export tools.\n\nDefined here rather than importing ``DrawingRef`` because the web\n``schemas`` package imports back into this module (``schemas.render``),\nso reusing it would create an import cycle — the MCP wire contract keeps\nits own copy, the same pattern as ``BoQRow`` / ``DrawingReference``.",
        -                    "properties": {
        -                      "entity_count": {
        -                        "minimum": 0,
        -                        "type": "integer"
        -                      },
        -                      "svg_b64": {
        -                        "minLength": 1,
        -                        "type": "string"
        -                      },
        -                      "unit_of_drawing": {
        -                        "const": "m",
        -                        "default": "m",
        -                        "type": "string"
        -                      },
        -                      "viewbox_height": {
        -                        "exclusiveMinimum": 0,
        -                        "type": "number"
        -                      },
        -                      "viewbox_width": {
        -                        "exclusiveMinimum": 0,
        -                        "type": "number"
        -                      },
        -                      "viewbox_x": {
        -                        "type": "number"
        -                      },
        -                      "viewbox_y": {
        -                        "type": "number"
        -                      }
        -                    },
        -                    "required": [
        -                      "svg_b64",
        -                      "viewbox_x",
        -                      "viewbox_y",
        -                      "viewbox_width",
        -                      "viewbox_height",
        -                      "entity_count"
        -                    ],
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "drawings": {
        -                "anyOf": [
        -                  {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.6 — paid-tier drawing artefact pointer.\n\n`url` is an R2-signed URL; expiry is carried in `_meta.deliverables.expires_at`\non the envelope (not duplicated here). `layers` is DXF-only; PDF/SVG\ncallers omit it.",
        -                      "properties": {
        -                        "drawing_type": {
        -                          "enum": [
        -                            "section",
        -                            "plan",
        -                            "elevation",
        -                            "isometric",
        -                            "detail"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "format": {
        -                          "enum": [
        -                            "DXF",
        -                            "PDF",
        -                            "SVG"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "layers": {
        -                          "anyOf": [
        -                            {
        -                              "items": {
        -                                "type": "string"
        -                              },
        -                              "type": "array"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ],
        -                          "default": null
        -                        },
        -                        "scale": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "sheet_size": {
        -                          "enum": [
        -                            "A1",
        -                            "A2",
        -                            "A3",
        -                            "A4"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "url": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "drawing_type",
        -                        "format",
        -                        "url",
        -                        "sheet_size",
        -                        "scale"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "parameters_used": {
        -                "additionalProperties": false,
        -                "description": "Schema § 1.2 — the parameter snapshot the engine actually used.\n\nSplits user-supplied values from engine defaults so customers can see\nwhich numbers came from them and which the engine filled in. Every\ndefaulted parameter SHOULD have a corresponding entry in `assumptions`\n— the bridge layer enforces this when wrapping engine output.",
        -                "properties": {
        -                  "assumptions": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "engine_defaults": {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  "user_supplied": {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  }
        -                },
        -                "type": "object"
        -              },
        -              "standard": {
        -                "enum": [
        -                  "CESMM4",
        -                  "NRM2",
        -                  "SMM7",
        -                  "MMHW"
        -                ],
        -                "type": "string"
        -              },
        -              "text_summary": {
        -                "maxLength": 2000,
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "totals_summary": {
        -                "additionalProperties": false,
        -                "description": "Schema § 1.4 — totals_summary as a typed wrapper around the free-form dict.\n\nWire shape is a flat object (`{\"concrete_m3\": {...}, \"rebar_t\": {...}}`).\nWe model it as `RootModel`-equivalent via `model_config(extra=\"allow\")`\n+ a single `__root__`-style `entries` dict. Pydantic v2 recommends\n`RootModel` for free-form roots; using a wrapper class keeps the import\nsurface uniform with the rest of this module.",
        -                "properties": {
        -                  "entries": {
        -                    "additionalProperties": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.4 — single material/work-class total entry.",
        -                      "properties": {
        -                        "quantity": {
        -                          "minimum": 0,
        -                          "type": "number"
        -                        },
        -                        "unit": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "quantity",
        -                        "unit"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "object"
        -                  }
        -                },
        -                "type": "object"
        -              },
        -              "warnings": {
        -                "items": {
        -                  "additionalProperties": false,
        -                  "description": "Schema § 1.8 — a non-fatal geometry advisory (56th-fire T2).\n\nThe wire projection of the engine's `core.GeometryWarning`. Advisory only:\na warning NEVER changes a measured quantity — it flags geometry that is\nvalid but likely a mistake (e.g. a stale dependent-height default). Present\non BOTH tiers — a correctness/safety signal, not a paid feature.",
        -                  "properties": {
        -                    "affected_params": {
        -                      "items": {
        -                        "type": "string"
        -                      },
        -                      "type": "array"
        -                    },
        -                    "code": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "detail": {
        -                      "additionalProperties": {
        -                        "type": "number"
        -                      },
        -                      "type": "object"
        -                    },
        -                    "message": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "severity": {
        -                      "enum": [
        -                        "info",
        -                        "advisory",
        -                        "caution"
        -                      ],
        -                      "type": "string"
        -                    }
        -                  },
        -                  "required": [
        -                    "code",
        -                    "severity",
        -                    "message"
        -                  ],
        -                  "type": "object"
        -                },
        -                "type": "array"
        -              }
        -            },
        -            "required": [
        -              "assembly_slug",
        -              "standard",
        -              "parameters_used",
        -              "boq_rows",
        -              "totals_summary",
        -              "text_summary"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      },
        -      "error": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        -            "properties": {
        -              "code": {
        -                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        -                "enum": [
        -                  "RATE_LIMIT_EXCEEDED",
        -                  "TIER_INSUFFICIENT",
        -                  "INVALID_INPUT",
        -                  "SCHEMA_VERSION_MISMATCH",
        -                  "SCHEMA_INVARIANT_VIOLATION",
        -                  "UPSTREAM_TIMEOUT",
        -                  "BACKEND_FAILURE",
        -                  "IP_BLOCKED",
        -                  "RESOURCE_NOT_FOUND",
        -                  "RENDER_FAILURE",
        -                  "OCR_LOW_CONFIDENCE",
        -                  "MANUAL_REVIEW_REQUIRED",
        -                  "ACCEPTANCE_REQUIRED",
        -                  "INVALID_TOKEN"
        -                ],
        -                "type": "string"
        -              },
        -              "details": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "message": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "recoverable": {
        -                "type": "boolean"
        -              },
        -              "retry_after_seconds": {
        -                "anyOf": [
        -                  {
        -                    "minimum": 0,
        -                    "type": "integer"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              }
        -            },
        -            "required": [
        -              "code",
        -              "message",
        -              "recoverable"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      }
        -    },
        -    "required": [
        -      "_meta"
        -    ],
        -    "type": "object"
        -  },
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "_meta": {
        -        "additionalProperties": false,
        -        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        -        "properties": {
        -          "deliverables": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        -                "properties": {
        -                  "docx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "dxf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "expires_at": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  },
        -                  "pdf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "xlsx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "expires_at"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "document_id": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "issued_at": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "rate_limit_remaining": {
        -            "anyOf": [
        -              {
        -                "minimum": 0,
        -                "type": "integer"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "request_id": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "schema_version": {
        -            "const": "1.0.0",
        -            "default": "1.0.0",
        -            "type": "string"
        -          },
        -          "scope_boundary": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        -                "properties": {
        -                  "not_in_scope": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "produced": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "recommended_companions": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "type": "string"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "produced",
        -                  "not_in_scope"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tier": {
        -            "enum": [
        -              "free",
        -              "paid"
        -            ],
        -            "type": "string"
        -          },
        -          "tier_upgrade": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        -                "properties": {
        -                  "available_tiers": {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        -                      "properties": {
        -                        "billing": {
        -                          "enum": [
        -                            "one_off",
        -                            "monthly",
        -                            "annual"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "currency": {
        -                          "enum": [
        -                            "GBP",
        -                            "SGD",
        -                            "EUR",
        -                            "USD",
        -                            "CAD",
        -                            "AUD",
        -                            "NZD",
        -                            "MYR"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "display_name": {
        -                          "type": "string"
        -                        },
        -                        "price_local": {
        -                          "type": "number"
        -                        },
        -                        "tier_slug": {
        -                          "enum": [
        -                            "7_day_pass",
        -                            "solo",
        -                            "studio",
        -                            "practice"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "unlock_summary": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "tier_slug",
        -                        "display_name",
        -                        "price_local",
        -                        "currency",
        -                        "billing",
        -                        "unlock_summary"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "current_tier": {
        -                    "const": "free",
        -                    "default": "free",
        -                    "type": "string"
        -                  },
        -                  "pass_credit": {
        -                    "anyOf": [
        -                      {
        -                        "additionalProperties": false,
        -                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        -                        "properties": {
        -                          "amount_local": {
        -                            "type": "number"
        -                          },
        -                          "applies_to": {
        -                            "const": "solo_first_month",
        -                            "default": "solo_first_month",
        -                            "type": "string"
        -                          },
        -                          "currency": {
        -                            "type": "string"
        -                          },
        -                          "redeemable_until": {
        -                            "type": "string"
        -                          }
        -                        },
        -                        "required": [
        -                          "amount_local",
        -                          "currency",
        -                          "redeemable_until"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "pricing_url": {
        -                    "default": "https://civilquants.com/pricing",
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "available_tiers"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tos_url": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "upgrade_hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "warranty_disclaimer": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          }
        -        },
        -        "required": [
        -          "request_id",
        -          "issued_at",
        -          "tier"
        -        ],
        -        "type": "object"
        -      },
        -      "data": {
        -        "default": null,
        -        "title": "Data"
        -      },
        -      "error": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        -            "properties": {
        -              "code": {
        -                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        -                "enum": [
        -                  "RATE_LIMIT_EXCEEDED",
        -                  "TIER_INSUFFICIENT",
        -                  "INVALID_INPUT",
        -                  "SCHEMA_VERSION_MISMATCH",
        -                  "SCHEMA_INVARIANT_VIOLATION",
        -                  "UPSTREAM_TIMEOUT",
        -                  "BACKEND_FAILURE",
        -                  "IP_BLOCKED",
        -                  "RESOURCE_NOT_FOUND",
        -                  "RENDER_FAILURE",
        -                  "OCR_LOW_CONFIDENCE",
        -                  "MANUAL_REVIEW_REQUIRED",
        -                  "ACCEPTANCE_REQUIRED",
        -                  "INVALID_TOKEN"
        -                ],
        -                "type": "string"
        -              },
        -              "details": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "message": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "recoverable": {
        -                "type": "boolean"
        -              },
        -              "retry_after_seconds": {
        -                "anyOf": [
        -                  {
        -                    "minimum": 0,
        -                    "type": "integer"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              }
        -            },
        -            "required": [
        -              "code",
        -              "message",
        -              "recoverable"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      }
        -    },
        -    "required": [
        -      "_meta"
        -    ],
        -    "type": "object"
        -  }
        -]New value: +[
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "_meta": {
        +        "additionalProperties": false,
        +        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        +        "properties": {
        +          "deliverables": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        +                "properties": {
        +                  "docx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "dxf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "expires_at": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  },
        +                  "pdf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "xlsx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "expires_at"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "document_id": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "issued_at": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "output_mode": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Surfaces what a trimmed ``output_mode`` withheld from ``data``.\n\nA trimmed mode (``summary`` / ``boq`` / ``boq_with_backup``) withholds\nalready-computed fields to keep the chat payload small. The withheld value\nreads to a client agent as \"capability missing\" (the box-culvert \"geometry\nbuilder isn't firing\" scare) rather than \"pared for size\": ``drawing`` and\n``audit_trail`` appear as ``null``, ``boq_rows`` as an empty list ``[]``\n(its type forbids ``null``) — both indistinguishable from a genuine absent\nresult. This names the withheld fields and the exact mode that brings each\nback, so the value is unambiguous. Absent on the default ``full_json`` mode\n— nothing is withheld, nothing to point at.",
        +                "properties": {
        +                  "mode": {
        +                    "enum": [
        +                      "summary",
        +                      "boq",
        +                      "boq_with_backup"
        +                    ],
        +                    "type": "string"
        +                  },
        +                  "omitted_fields": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "minItems": 1,
        +                    "type": "array"
        +                  },
        +                  "retrieve_with": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "mode",
        +                  "omitted_fields",
        +                  "retrieve_with"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "rate_limit_remaining": {
        +            "anyOf": [
        +              {
        +                "minimum": 0,
        +                "type": "integer"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "request_id": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "schema_version": {
        +            "const": "1.0.0",
        +            "default": "1.0.0",
        +            "type": "string"
        +          },
        +          "scope_boundary": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        +                "properties": {
        +                  "not_in_scope": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "produced": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "recommended_companions": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "type": "string"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "produced",
        +                  "not_in_scope"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tier": {
        +            "enum": [
        +              "free",
        +              "paid"
        +            ],
        +            "type": "string"
        +          },
        +          "tier_upgrade": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        +                "properties": {
        +                  "available_tiers": {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        +                      "properties": {
        +                        "billing": {
        +                          "enum": [
        +                            "one_off",
        +                            "monthly",
        +                            "annual"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "currency": {
        +                          "enum": [
        +                            "GBP",
        +                            "SGD",
        +                            "EUR",
        +                            "USD",
        +                            "CAD",
        +                            "AUD",
        +                            "NZD",
        +                            "MYR"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "display_name": {
        +                          "type": "string"
        +                        },
        +                        "price_local": {
        +                          "type": "number"
        +                        },
        +                        "tier_slug": {
        +                          "enum": [
        +                            "7_day_pass",
        +                            "solo",
        +                            "studio",
        +                            "practice"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "unlock_summary": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "tier_slug",
        +                        "display_name",
        +                        "price_local",
        +                        "currency",
        +                        "billing",
        +                        "unlock_summary"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "current_tier": {
        +                    "const": "free",
        +                    "default": "free",
        +                    "type": "string"
        +                  },
        +                  "pass_credit": {
        +                    "anyOf": [
        +                      {
        +                        "additionalProperties": false,
        +                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        +                        "properties": {
        +                          "amount_local": {
        +                            "type": "number"
        +                          },
        +                          "applies_to": {
        +                            "const": "solo_first_month",
        +                            "default": "solo_first_month",
        +                            "type": "string"
        +                          },
        +                          "currency": {
        +                            "type": "string"
        +                          },
        +                          "redeemable_until": {
        +                            "type": "string"
        +                          }
        +                        },
        +                        "required": [
        +                          "amount_local",
        +                          "currency",
        +                          "redeemable_until"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "pricing_url": {
        +                    "default": "https://civilquants.com/pricing",
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "available_tiers"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tos_url": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "upgrade_hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "warranty_disclaimer": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          }
        +        },
        +        "required": [
        +          "request_id",
        +          "issued_at",
        +          "tier"
        +        ],
        +        "type": "object"
        +      },
        +      "data": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Schema § 1.1 — the typed payload returned inside `MCPResponse[ComputeResult]`.\n\nFree-tier responses omit `drawings` (the downloadable CAD artefact\npointers — the paid differentiator); the bridge enforces this. The\n`audit_trail` and the inline `drawing` preview are present on BOTH tiers\n(V1 ALIGN / 60th-fire D + C). `text_summary` is bounded to 2000 chars —\nkeeps the LLM-facing summary token-cheap and forces longer narrative into\nBoQ row descriptions where it belongs. `warnings` is the non-fatal\ngeometry advisory list (both tiers).",
        +            "properties": {
        +              "assembly_slug": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "audit_trail": {
        +                "anyOf": [
        +                  {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.7 — paid-tier audit-trail entry.\n\nOne entry per BoQ row; `boq_row_index` ties to the row position in\n`ComputeResult.boq_rows`. `derivation` is the human-readable formula\nwalk-through; `formula` is the optional formal expression.",
        +                      "properties": {
        +                        "boq_row_index": {
        +                          "minimum": 0,
        +                          "type": "integer"
        +                        },
        +                        "derivation": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "formula": {
        +                          "anyOf": [
        +                            {
        +                              "type": "string"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ],
        +                          "default": null
        +                        },
        +                        "id": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "parameters_referenced": {
        +                          "items": {
        +                            "type": "string"
        +                          },
        +                          "type": "array"
        +                        }
        +                      },
        +                      "required": [
        +                        "id",
        +                        "boq_row_index",
        +                        "derivation"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "boq_rows": {
        +                "items": {
        +                  "additionalProperties": false,
        +                  "description": "Schema § 1.3 — a single bill row in the requested standard's format.\n\n`description` is the non-verbatim functional description per spec § 13.9 /\n§ 15 invariant — NEVER reproduces a standard's verbatim clause text.\n`rate` / `amount` ship null because rates are commodity data the customer\nowns; the engine's job is the measurement, not the pricing.",
        +                  "properties": {
        +                    "amount": {
        +                      "anyOf": [
        +                        {
        +                          "type": "number"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "attribution": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "audit_id": {
        +                      "anyOf": [
        +                        {
        +                          "type": "string"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "description": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "quantity": {
        +                      "minimum": 0,
        +                      "type": "number"
        +                    },
        +                    "rate": {
        +                      "anyOf": [
        +                        {
        +                          "type": "number"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "unit": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "work_section": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    }
        +                  },
        +                  "required": [
        +                    "work_section",
        +                    "description",
        +                    "quantity",
        +                    "unit",
        +                    "attribution"
        +                  ],
        +                  "type": "object"
        +                },
        +                "type": "array"
        +              },
        +              "drawing": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": false,
        +                    "description": "Schema § 1.6a — inline server-rendered SVG preview of the geometry.\n\nThe MCP mirror of the web ``/compute`` response's ``drawing`` field\n(``api.schemas.compute.DrawingRef``): the same on-screen dimensioned\ndrawing both tiers see in the workspace, surfaced on the MCP compute\nresponse so a chat client can render it inline (60th-fire item C). This\nis the on-screen preview — present on BOTH tiers per the free/paid\nboundary; the downloadable CAD artefacts (DXF / dimensioned PDF) remain\nthe paid differentiator via the export tools.\n\nDefined here rather than importing ``DrawingRef`` because the web\n``schemas`` package imports back into this module (``schemas.render``),\nso reusing it would create an import cycle — the MCP wire contract keeps\nits own copy, the same pattern as ``BoQRow`` / ``DrawingReference``.",
        +                    "properties": {
        +                      "entity_count": {
        +                        "minimum": 0,
        +                        "type": "integer"
        +                      },
        +                      "svg_b64": {
        +                        "minLength": 1,
        +                        "type": "string"
        +                      },
        +                      "unit_of_drawing": {
        +                        "const": "m",
        +                        "default": "m",
        +                        "type": "string"
        +                      },
        +                      "viewbox_height": {
        +                        "exclusiveMinimum": 0,
        +                        "type": "number"
        +                      },
        +                      "viewbox_width": {
        +                        "exclusiveMinimum": 0,
        +                        "type": "number"
        +                      },
        +                      "viewbox_x": {
        +                        "type": "number"
        +                      },
        +                      "viewbox_y": {
        +                        "type": "number"
        +                      }
        +                    },
        +                    "required": [
        +                      "svg_b64",
        +                      "viewbox_x",
        +                      "viewbox_y",
        +                      "viewbox_width",
        +                      "viewbox_height",
        +                      "entity_count"
        +                    ],
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "drawings": {
        +                "anyOf": [
        +                  {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.6 — paid-tier drawing artefact pointer.\n\n`url` is an R2-signed URL; expiry is carried in `_meta.deliverables.expires_at`\non the envelope (not duplicated here). `layers` is DXF-only; PDF/SVG\ncallers omit it.",
        +                      "properties": {
        +                        "drawing_type": {
        +                          "enum": [
        +                            "section",
        +                            "plan",
        +                            "elevation",
        +                            "isometric",
        +                            "detail"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "format": {
        +                          "enum": [
        +                            "DXF",
        +                            "PDF",
        +                            "SVG"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "layers": {
        +                          "anyOf": [
        +                            {
        +                              "items": {
        +                                "type": "string"
        +                              },
        +                              "type": "array"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ],
        +                          "default": null
        +                        },
        +                        "scale": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "sheet_size": {
        +                          "enum": [
        +                            "A1",
        +                            "A2",
        +                            "A3",
        +                            "A4"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "url": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "drawing_type",
        +                        "format",
        +                        "url",
        +                        "sheet_size",
        +                        "scale"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "parameters_used": {
        +                "additionalProperties": false,
        +                "description": "Schema § 1.2 — the parameter snapshot the engine actually used.\n\nSplits user-supplied values from engine defaults so customers can see\nwhich numbers came from them and which the engine filled in. Every\ndefaulted parameter SHOULD have a corresponding entry in `assumptions`\n— the bridge layer enforces this when wrapping engine output.",
        +                "properties": {
        +                  "assumptions": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "engine_defaults": {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  "user_supplied": {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  }
        +                },
        +                "type": "object"
        +              },
        +              "standard": {
        +                "enum": [
        +                  "CESMM4",
        +                  "NRM2",
        +                  "SMM7",
        +                  "MMHW"
        +                ],
        +                "type": "string"
        +              },
        +              "text_summary": {
        +                "maxLength": 2000,
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "totals_summary": {
        +                "additionalProperties": false,
        +                "description": "Schema § 1.4 — totals_summary as a typed wrapper around the free-form dict.\n\nWire shape is a flat object (`{\"concrete_m3\": {...}, \"rebar_t\": {...}}`).\nWe model it as `RootModel`-equivalent via `model_config(extra=\"allow\")`\n+ a single `__root__`-style `entries` dict. Pydantic v2 recommends\n`RootModel` for free-form roots; using a wrapper class keeps the import\nsurface uniform with the rest of this module.",
        +                "properties": {
        +                  "entries": {
        +                    "additionalProperties": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.4 — single material/work-class total entry.",
        +                      "properties": {
        +                        "quantity": {
        +                          "minimum": 0,
        +                          "type": "number"
        +                        },
        +                        "unit": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "quantity",
        +                        "unit"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "object"
        +                  }
        +                },
        +                "type": "object"
        +              },
        +              "warnings": {
        +                "items": {
        +                  "additionalProperties": false,
        +                  "description": "Schema § 1.8 — a non-fatal geometry advisory (56th-fire T2).\n\nThe wire projection of the engine's `core.GeometryWarning`. Advisory only:\na warning NEVER changes a measured quantity — it flags geometry that is\nvalid but likely a mistake (e.g. a stale dependent-height default). Present\non BOTH tiers — a correctness/safety signal, not a paid feature.",
        +                  "properties": {
        +                    "affected_params": {
        +                      "items": {
        +                        "type": "string"
        +                      },
        +                      "type": "array"
        +                    },
        +                    "code": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "detail": {
        +                      "additionalProperties": {
        +                        "type": "number"
        +                      },
        +                      "type": "object"
        +                    },
        +                    "message": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "severity": {
        +                      "enum": [
        +                        "info",
        +                        "advisory",
        +                        "caution"
        +                      ],
        +                      "type": "string"
        +                    }
        +                  },
        +                  "required": [
        +                    "code",
        +                    "severity",
        +                    "message"
        +                  ],
        +                  "type": "object"
        +                },
        +                "type": "array"
        +              }
        +            },
        +            "required": [
        +              "assembly_slug",
        +              "standard",
        +              "parameters_used",
        +              "boq_rows",
        +              "totals_summary",
        +              "text_summary"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      },
        +      "error": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        +            "properties": {
        +              "code": {
        +                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        +                "enum": [
        +                  "RATE_LIMIT_EXCEEDED",
        +                  "TIER_INSUFFICIENT",
        +                  "INVALID_INPUT",
        +                  "SCHEMA_VERSION_MISMATCH",
        +                  "SCHEMA_INVARIANT_VIOLATION",
        +                  "UPSTREAM_TIMEOUT",
        +                  "BACKEND_FAILURE",
        +                  "IP_BLOCKED",
        +                  "RESOURCE_NOT_FOUND",
        +                  "RENDER_FAILURE",
        +                  "OCR_LOW_CONFIDENCE",
        +                  "MANUAL_REVIEW_REQUIRED",
        +                  "ACCEPTANCE_REQUIRED",
        +                  "INVALID_TOKEN"
        +                ],
        +                "type": "string"
        +              },
        +              "details": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "message": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "recoverable": {
        +                "type": "boolean"
        +              },
        +              "retry_after_seconds": {
        +                "anyOf": [
        +                  {
        +                    "minimum": 0,
        +                    "type": "integer"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              }
        +            },
        +            "required": [
        +              "code",
        +              "message",
        +              "recoverable"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      }
        +    },
        +    "required": [
        +      "_meta"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "_meta": {
        +        "additionalProperties": false,
        +        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        +        "properties": {
        +          "deliverables": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        +                "properties": {
        +                  "docx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "dxf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "expires_at": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  },
        +                  "pdf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "xlsx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "expires_at"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "document_id": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "issued_at": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "output_mode": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Surfaces what a trimmed ``output_mode`` withheld from ``data``.\n\nA trimmed mode (``summary`` / ``boq`` / ``boq_with_backup``) withholds\nalready-computed fields to keep the chat payload small. The withheld value\nreads to a client agent as \"capability missing\" (the box-culvert \"geometry\nbuilder isn't firing\" scare) rather than \"pared for size\": ``drawing`` and\n``audit_trail`` appear as ``null``, ``boq_rows`` as an empty list ``[]``\n(its type forbids ``null``) — both indistinguishable from a genuine absent\nresult. This names the withheld fields and the exact mode that brings each\nback, so the value is unambiguous. Absent on the default ``full_json`` mode\n— nothing is withheld, nothing to point at.",
        +                "properties": {
        +                  "mode": {
        +                    "enum": [
        +                      "summary",
        +                      "boq",
        +                      "boq_with_backup"
        +                    ],
        +                    "type": "string"
        +                  },
        +                  "omitted_fields": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "minItems": 1,
        +                    "type": "array"
        +                  },
        +                  "retrieve_with": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "mode",
        +                  "omitted_fields",
        +                  "retrieve_with"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "rate_limit_remaining": {
        +            "anyOf": [
        +              {
        +                "minimum": 0,
        +                "type": "integer"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "request_id": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "schema_version": {
        +            "const": "1.0.0",
        +            "default": "1.0.0",
        +            "type": "string"
        +          },
        +          "scope_boundary": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        +                "properties": {
        +                  "not_in_scope": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "produced": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "recommended_companions": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "type": "string"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "produced",
        +                  "not_in_scope"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tier": {
        +            "enum": [
        +              "free",
        +              "paid"
        +            ],
        +            "type": "string"
        +          },
        +          "tier_upgrade": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        +                "properties": {
        +                  "available_tiers": {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        +                      "properties": {
        +                        "billing": {
        +                          "enum": [
        +                            "one_off",
        +                            "monthly",
        +                            "annual"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "currency": {
        +                          "enum": [
        +                            "GBP",
        +                            "SGD",
        +                            "EUR",
        +                            "USD",
        +                            "CAD",
        +                            "AUD",
        +                            "NZD",
        +                            "MYR"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "display_name": {
        +                          "type": "string"
        +                        },
        +                        "price_local": {
        +                          "type": "number"
        +                        },
        +                        "tier_slug": {
        +                          "enum": [
        +                            "7_day_pass",
        +                            "solo",
        +                            "studio",
        +                            "practice"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "unlock_summary": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "tier_slug",
        +                        "display_name",
        +                        "price_local",
        +                        "currency",
        +                        "billing",
        +                        "unlock_summary"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "current_tier": {
        +                    "const": "free",
        +                    "default": "free",
        +                    "type": "string"
        +                  },
        +                  "pass_credit": {
        +                    "anyOf": [
        +                      {
        +                        "additionalProperties": false,
        +                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        +                        "properties": {
        +                          "amount_local": {
        +                            "type": "number"
        +                          },
        +                          "applies_to": {
        +                            "const": "solo_first_month",
        +                            "default": "solo_first_month",
        +                            "type": "string"
        +                          },
        +                          "currency": {
        +                            "type": "string"
        +                          },
        +                          "redeemable_until": {
        +                            "type": "string"
        +                          }
        +                        },
        +                        "required": [
        +                          "amount_local",
        +                          "currency",
        +                          "redeemable_until"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "pricing_url": {
        +                    "default": "https://civilquants.com/pricing",
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "available_tiers"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tos_url": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "upgrade_hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "warranty_disclaimer": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          }
        +        },
        +        "required": [
        +          "request_id",
        +          "issued_at",
        +          "tier"
        +        ],
        +        "type": "object"
        +      },
        +      "data": {
        +        "default": null,
        +        "title": "Data"
        +      },
        +      "error": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        +            "properties": {
        +              "code": {
        +                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        +                "enum": [
        +                  "RATE_LIMIT_EXCEEDED",
        +                  "TIER_INSUFFICIENT",
        +                  "INVALID_INPUT",
        +                  "SCHEMA_VERSION_MISMATCH",
        +                  "SCHEMA_INVARIANT_VIOLATION",
        +                  "UPSTREAM_TIMEOUT",
        +                  "BACKEND_FAILURE",
        +                  "IP_BLOCKED",
        +                  "RESOURCE_NOT_FOUND",
        +                  "RENDER_FAILURE",
        +                  "OCR_LOW_CONFIDENCE",
        +                  "MANUAL_REVIEW_REQUIRED",
        +                  "ACCEPTANCE_REQUIRED",
        +                  "INVALID_TOKEN"
        +                ],
        +                "type": "string"
        +              },
        +              "details": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "message": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "recoverable": {
        +                "type": "boolean"
        +              },
        +              "retry_after_seconds": {
        +                "anyOf": [
        +                  {
        +                    "minimum": 0,
        +                    "type": "integer"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              }
        +            },
        +            "required": [
        +              "code",
        +              "message",
        +              "recoverable"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      }
        +    },
        +    "required": [
        +      "_meta"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedcompute_hard_material_in_trench1 field changed
      • changedOutput schema / properties / result / anyOf
        Previous value: -[
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "_meta": {
        -        "additionalProperties": false,
        -        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        -        "properties": {
        -          "deliverables": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        -                "properties": {
        -                  "docx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "dxf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "expires_at": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  },
        -                  "pdf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "xlsx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "expires_at"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "document_id": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "issued_at": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "rate_limit_remaining": {
        -            "anyOf": [
        -              {
        -                "minimum": 0,
        -                "type": "integer"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "request_id": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "schema_version": {
        -            "const": "1.0.0",
        -            "default": "1.0.0",
        -            "type": "string"
        -          },
        -          "scope_boundary": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        -                "properties": {
        -                  "not_in_scope": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "produced": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "recommended_companions": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "type": "string"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "produced",
        -                  "not_in_scope"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tier": {
        -            "enum": [
        -              "free",
        -              "paid"
        -            ],
        -            "type": "string"
        -          },
        -          "tier_upgrade": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        -                "properties": {
        -                  "available_tiers": {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        -                      "properties": {
        -                        "billing": {
        -                          "enum": [
        -                            "one_off",
        -                            "monthly",
        -                            "annual"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "currency": {
        -                          "enum": [
        -                            "GBP",
        -                            "SGD",
        -                            "EUR",
        -                            "USD",
        -                            "CAD",
        -                            "AUD",
        -                            "NZD",
        -                            "MYR"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "display_name": {
        -                          "type": "string"
        -                        },
        -                        "price_local": {
        -                          "type": "number"
        -                        },
        -                        "tier_slug": {
        -                          "enum": [
        -                            "7_day_pass",
        -                            "solo",
        -                            "studio",
        -                            "practice"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "unlock_summary": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "tier_slug",
        -                        "display_name",
        -                        "price_local",
        -                        "currency",
        -                        "billing",
        -                        "unlock_summary"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "current_tier": {
        -                    "const": "free",
        -                    "default": "free",
        -                    "type": "string"
        -                  },
        -                  "pass_credit": {
        -                    "anyOf": [
        -                      {
        -                        "additionalProperties": false,
        -                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        -                        "properties": {
        -                          "amount_local": {
        -                            "type": "number"
        -                          },
        -                          "applies_to": {
        -                            "const": "solo_first_month",
        -                            "default": "solo_first_month",
        -                            "type": "string"
        -                          },
        -                          "currency": {
        -                            "type": "string"
        -                          },
        -                          "redeemable_until": {
        -                            "type": "string"
        -                          }
        -                        },
        -                        "required": [
        -                          "amount_local",
        -                          "currency",
        -                          "redeemable_until"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "pricing_url": {
        -                    "default": "https://civilquants.com/pricing",
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "available_tiers"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tos_url": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "upgrade_hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "warranty_disclaimer": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          }
        -        },
        -        "required": [
        -          "request_id",
        -          "issued_at",
        -          "tier"
        -        ],
        -        "type": "object"
        -      },
        -      "data": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Schema § 1.1 — the typed payload returned inside `MCPResponse[ComputeResult]`.\n\nFree-tier responses omit `drawings` (the downloadable CAD artefact\npointers — the paid differentiator); the bridge enforces this. The\n`audit_trail` and the inline `drawing` preview are present on BOTH tiers\n(V1 ALIGN / 60th-fire D + C). `text_summary` is bounded to 2000 chars —\nkeeps the LLM-facing summary token-cheap and forces longer narrative into\nBoQ row descriptions where it belongs. `warnings` is the non-fatal\ngeometry advisory list (both tiers).",
        -            "properties": {
        -              "assembly_slug": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "audit_trail": {
        -                "anyOf": [
        -                  {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.7 — paid-tier audit-trail entry.\n\nOne entry per BoQ row; `boq_row_index` ties to the row position in\n`ComputeResult.boq_rows`. `derivation` is the human-readable formula\nwalk-through; `formula` is the optional formal expression.",
        -                      "properties": {
        -                        "boq_row_index": {
        -                          "minimum": 0,
        -                          "type": "integer"
        -                        },
        -                        "derivation": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "formula": {
        -                          "anyOf": [
        -                            {
        -                              "type": "string"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ],
        -                          "default": null
        -                        },
        -                        "id": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "parameters_referenced": {
        -                          "items": {
        -                            "type": "string"
        -                          },
        -                          "type": "array"
        -                        }
        -                      },
        -                      "required": [
        -                        "id",
        -                        "boq_row_index",
        -                        "derivation"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "boq_rows": {
        -                "items": {
        -                  "additionalProperties": false,
        -                  "description": "Schema § 1.3 — a single bill row in the requested standard's format.\n\n`description` is the non-verbatim functional description per spec § 13.9 /\n§ 15 invariant — NEVER reproduces a standard's verbatim clause text.\n`rate` / `amount` ship null because rates are commodity data the customer\nowns; the engine's job is the measurement, not the pricing.",
        -                  "properties": {
        -                    "amount": {
        -                      "anyOf": [
        -                        {
        -                          "type": "number"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "attribution": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "audit_id": {
        -                      "anyOf": [
        -                        {
        -                          "type": "string"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "description": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "quantity": {
        -                      "minimum": 0,
        -                      "type": "number"
        -                    },
        -                    "rate": {
        -                      "anyOf": [
        -                        {
        -                          "type": "number"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "unit": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "work_section": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    }
        -                  },
        -                  "required": [
        -                    "work_section",
        -                    "description",
        -                    "quantity",
        -                    "unit",
        -                    "attribution"
        -                  ],
        -                  "type": "object"
        -                },
        -                "type": "array"
        -              },
        -              "drawing": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": false,
        -                    "description": "Schema § 1.6a — inline server-rendered SVG preview of the geometry.\n\nThe MCP mirror of the web ``/compute`` response's ``drawing`` field\n(``api.schemas.compute.DrawingRef``): the same on-screen dimensioned\ndrawing both tiers see in the workspace, surfaced on the MCP compute\nresponse so a chat client can render it inline (60th-fire item C). This\nis the on-screen preview — present on BOTH tiers per the free/paid\nboundary; the downloadable CAD artefacts (DXF / dimensioned PDF) remain\nthe paid differentiator via the export tools.\n\nDefined here rather than importing ``DrawingRef`` because the web\n``schemas`` package imports back into this module (``schemas.render``),\nso reusing it would create an import cycle — the MCP wire contract keeps\nits own copy, the same pattern as ``BoQRow`` / ``DrawingReference``.",
        -                    "properties": {
        -                      "entity_count": {
        -                        "minimum": 0,
        -                        "type": "integer"
        -                      },
        -                      "svg_b64": {
        -                        "minLength": 1,
        -                        "type": "string"
        -                      },
        -                      "unit_of_drawing": {
        -                        "const": "m",
        -                        "default": "m",
        -                        "type": "string"
        -                      },
        -                      "viewbox_height": {
        -                        "exclusiveMinimum": 0,
        -                        "type": "number"
        -                      },
        -                      "viewbox_width": {
        -                        "exclusiveMinimum": 0,
        -                        "type": "number"
        -                      },
        -                      "viewbox_x": {
        -                        "type": "number"
        -                      },
        -                      "viewbox_y": {
        -                        "type": "number"
        -                      }
        -                    },
        -                    "required": [
        -                      "svg_b64",
        -                      "viewbox_x",
        -                      "viewbox_y",
        -                      "viewbox_width",
        -                      "viewbox_height",
        -                      "entity_count"
        -                    ],
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "drawings": {
        -                "anyOf": [
        -                  {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.6 — paid-tier drawing artefact pointer.\n\n`url` is an R2-signed URL; expiry is carried in `_meta.deliverables.expires_at`\non the envelope (not duplicated here). `layers` is DXF-only; PDF/SVG\ncallers omit it.",
        -                      "properties": {
        -                        "drawing_type": {
        -                          "enum": [
        -                            "section",
        -                            "plan",
        -                            "elevation",
        -                            "isometric",
        -                            "detail"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "format": {
        -                          "enum": [
        -                            "DXF",
        -                            "PDF",
        -                            "SVG"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "layers": {
        -                          "anyOf": [
        -                            {
        -                              "items": {
        -                                "type": "string"
        -                              },
        -                              "type": "array"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ],
        -                          "default": null
        -                        },
        -                        "scale": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "sheet_size": {
        -                          "enum": [
        -                            "A1",
        -                            "A2",
        -                            "A3",
        -                            "A4"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "url": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "drawing_type",
        -                        "format",
        -                        "url",
        -                        "sheet_size",
        -                        "scale"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "parameters_used": {
        -                "additionalProperties": false,
        -                "description": "Schema § 1.2 — the parameter snapshot the engine actually used.\n\nSplits user-supplied values from engine defaults so customers can see\nwhich numbers came from them and which the engine filled in. Every\ndefaulted parameter SHOULD have a corresponding entry in `assumptions`\n— the bridge layer enforces this when wrapping engine output.",
        -                "properties": {
        -                  "assumptions": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "engine_defaults": {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  "user_supplied": {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  }
        -                },
        -                "type": "object"
        -              },
        -              "standard": {
        -                "enum": [
        -                  "CESMM4",
        -                  "NRM2",
        -                  "SMM7",
        -                  "MMHW"
        -                ],
        -                "type": "string"
        -              },
        -              "text_summary": {
        -                "maxLength": 2000,
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "totals_summary": {
        -                "additionalProperties": false,
        -                "description": "Schema § 1.4 — totals_summary as a typed wrapper around the free-form dict.\n\nWire shape is a flat object (`{\"concrete_m3\": {...}, \"rebar_t\": {...}}`).\nWe model it as `RootModel`-equivalent via `model_config(extra=\"allow\")`\n+ a single `__root__`-style `entries` dict. Pydantic v2 recommends\n`RootModel` for free-form roots; using a wrapper class keeps the import\nsurface uniform with the rest of this module.",
        -                "properties": {
        -                  "entries": {
        -                    "additionalProperties": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.4 — single material/work-class total entry.",
        -                      "properties": {
        -                        "quantity": {
        -                          "minimum": 0,
        -                          "type": "number"
        -                        },
        -                        "unit": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "quantity",
        -                        "unit"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "object"
        -                  }
        -                },
        -                "type": "object"
        -              },
        -              "warnings": {
        -                "items": {
        -                  "additionalProperties": false,
        -                  "description": "Schema § 1.8 — a non-fatal geometry advisory (56th-fire T2).\n\nThe wire projection of the engine's `core.GeometryWarning`. Advisory only:\na warning NEVER changes a measured quantity — it flags geometry that is\nvalid but likely a mistake (e.g. a stale dependent-height default). Present\non BOTH tiers — a correctness/safety signal, not a paid feature.",
        -                  "properties": {
        -                    "affected_params": {
        -                      "items": {
        -                        "type": "string"
        -                      },
        -                      "type": "array"
        -                    },
        -                    "code": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "detail": {
        -                      "additionalProperties": {
        -                        "type": "number"
        -                      },
        -                      "type": "object"
        -                    },
        -                    "message": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "severity": {
        -                      "enum": [
        -                        "info",
        -                        "advisory",
        -                        "caution"
        -                      ],
        -                      "type": "string"
        -                    }
        -                  },
        -                  "required": [
        -                    "code",
        -                    "severity",
        -                    "message"
        -                  ],
        -                  "type": "object"
        -                },
        -                "type": "array"
        -              }
        -            },
        -            "required": [
        -              "assembly_slug",
        -              "standard",
        -              "parameters_used",
        -              "boq_rows",
        -              "totals_summary",
        -              "text_summary"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      },
        -      "error": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        -            "properties": {
        -              "code": {
        -                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        -                "enum": [
        -                  "RATE_LIMIT_EXCEEDED",
        -                  "TIER_INSUFFICIENT",
        -                  "INVALID_INPUT",
        -                  "SCHEMA_VERSION_MISMATCH",
        -                  "SCHEMA_INVARIANT_VIOLATION",
        -                  "UPSTREAM_TIMEOUT",
        -                  "BACKEND_FAILURE",
        -                  "IP_BLOCKED",
        -                  "RESOURCE_NOT_FOUND",
        -                  "RENDER_FAILURE",
        -                  "OCR_LOW_CONFIDENCE",
        -                  "MANUAL_REVIEW_REQUIRED",
        -                  "ACCEPTANCE_REQUIRED",
        -                  "INVALID_TOKEN"
        -                ],
        -                "type": "string"
        -              },
        -              "details": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "message": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "recoverable": {
        -                "type": "boolean"
        -              },
        -              "retry_after_seconds": {
        -                "anyOf": [
        -                  {
        -                    "minimum": 0,
        -                    "type": "integer"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              }
        -            },
        -            "required": [
        -              "code",
        -              "message",
        -              "recoverable"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      }
        -    },
        -    "required": [
        -      "_meta"
        -    ],
        -    "type": "object"
        -  },
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "_meta": {
        -        "additionalProperties": false,
        -        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        -        "properties": {
        -          "deliverables": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        -                "properties": {
        -                  "docx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "dxf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "expires_at": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  },
        -                  "pdf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "xlsx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "expires_at"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "document_id": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "issued_at": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "rate_limit_remaining": {
        -            "anyOf": [
        -              {
        -                "minimum": 0,
        -                "type": "integer"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "request_id": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "schema_version": {
        -            "const": "1.0.0",
        -            "default": "1.0.0",
        -            "type": "string"
        -          },
        -          "scope_boundary": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        -                "properties": {
        -                  "not_in_scope": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "produced": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "recommended_companions": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "type": "string"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "produced",
        -                  "not_in_scope"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tier": {
        -            "enum": [
        -              "free",
        -              "paid"
        -            ],
        -            "type": "string"
        -          },
        -          "tier_upgrade": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        -                "properties": {
        -                  "available_tiers": {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        -                      "properties": {
        -                        "billing": {
        -                          "enum": [
        -                            "one_off",
        -                            "monthly",
        -                            "annual"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "currency": {
        -                          "enum": [
        -                            "GBP",
        -                            "SGD",
        -                            "EUR",
        -                            "USD",
        -                            "CAD",
        -                            "AUD",
        -                            "NZD",
        -                            "MYR"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "display_name": {
        -                          "type": "string"
        -                        },
        -                        "price_local": {
        -                          "type": "number"
        -                        },
        -                        "tier_slug": {
        -                          "enum": [
        -                            "7_day_pass",
        -                            "solo",
        -                            "studio",
        -                            "practice"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "unlock_summary": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "tier_slug",
        -                        "display_name",
        -                        "price_local",
        -                        "currency",
        -                        "billing",
        -                        "unlock_summary"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "current_tier": {
        -                    "const": "free",
        -                    "default": "free",
        -                    "type": "string"
        -                  },
        -                  "pass_credit": {
        -                    "anyOf": [
        -                      {
        -                        "additionalProperties": false,
        -                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        -                        "properties": {
        -                          "amount_local": {
        -                            "type": "number"
        -                          },
        -                          "applies_to": {
        -                            "const": "solo_first_month",
        -                            "default": "solo_first_month",
        -                            "type": "string"
        -                          },
        -                          "currency": {
        -                            "type": "string"
        -                          },
        -                          "redeemable_until": {
        -                            "type": "string"
        -                          }
        -                        },
        -                        "required": [
        -                          "amount_local",
        -                          "currency",
        -                          "redeemable_until"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "pricing_url": {
        -                    "default": "https://civilquants.com/pricing",
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "available_tiers"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tos_url": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "upgrade_hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "warranty_disclaimer": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          }
        -        },
        -        "required": [
        -          "request_id",
        -          "issued_at",
        -          "tier"
        -        ],
        -        "type": "object"
        -      },
        -      "data": {
        -        "default": null,
        -        "title": "Data"
        -      },
        -      "error": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        -            "properties": {
        -              "code": {
        -                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        -                "enum": [
        -                  "RATE_LIMIT_EXCEEDED",
        -                  "TIER_INSUFFICIENT",
        -                  "INVALID_INPUT",
        -                  "SCHEMA_VERSION_MISMATCH",
        -                  "SCHEMA_INVARIANT_VIOLATION",
        -                  "UPSTREAM_TIMEOUT",
        -                  "BACKEND_FAILURE",
        -                  "IP_BLOCKED",
        -                  "RESOURCE_NOT_FOUND",
        -                  "RENDER_FAILURE",
        -                  "OCR_LOW_CONFIDENCE",
        -                  "MANUAL_REVIEW_REQUIRED",
        -                  "ACCEPTANCE_REQUIRED",
        -                  "INVALID_TOKEN"
        -                ],
        -                "type": "string"
        -              },
        -              "details": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "message": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "recoverable": {
        -                "type": "boolean"
        -              },
        -              "retry_after_seconds": {
        -                "anyOf": [
        -                  {
        -                    "minimum": 0,
        -                    "type": "integer"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              }
        -            },
        -            "required": [
        -              "code",
        -              "message",
        -              "recoverable"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      }
        -    },
        -    "required": [
        -      "_meta"
        -    ],
        -    "type": "object"
        -  }
        -]New value: +[
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "_meta": {
        +        "additionalProperties": false,
        +        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        +        "properties": {
        +          "deliverables": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        +                "properties": {
        +                  "docx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "dxf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "expires_at": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  },
        +                  "pdf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "xlsx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "expires_at"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "document_id": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "issued_at": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "output_mode": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Surfaces what a trimmed ``output_mode`` withheld from ``data``.\n\nA trimmed mode (``summary`` / ``boq`` / ``boq_with_backup``) withholds\nalready-computed fields to keep the chat payload small. The withheld value\nreads to a client agent as \"capability missing\" (the box-culvert \"geometry\nbuilder isn't firing\" scare) rather than \"pared for size\": ``drawing`` and\n``audit_trail`` appear as ``null``, ``boq_rows`` as an empty list ``[]``\n(its type forbids ``null``) — both indistinguishable from a genuine absent\nresult. This names the withheld fields and the exact mode that brings each\nback, so the value is unambiguous. Absent on the default ``full_json`` mode\n— nothing is withheld, nothing to point at.",
        +                "properties": {
        +                  "mode": {
        +                    "enum": [
        +                      "summary",
        +                      "boq",
        +                      "boq_with_backup"
        +                    ],
        +                    "type": "string"
        +                  },
        +                  "omitted_fields": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "minItems": 1,
        +                    "type": "array"
        +                  },
        +                  "retrieve_with": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "mode",
        +                  "omitted_fields",
        +                  "retrieve_with"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "rate_limit_remaining": {
        +            "anyOf": [
        +              {
        +                "minimum": 0,
        +                "type": "integer"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "request_id": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "schema_version": {
        +            "const": "1.0.0",
        +            "default": "1.0.0",
        +            "type": "string"
        +          },
        +          "scope_boundary": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        +                "properties": {
        +                  "not_in_scope": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "produced": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "recommended_companions": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "type": "string"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "produced",
        +                  "not_in_scope"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tier": {
        +            "enum": [
        +              "free",
        +              "paid"
        +            ],
        +            "type": "string"
        +          },
        +          "tier_upgrade": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        +                "properties": {
        +                  "available_tiers": {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        +                      "properties": {
        +                        "billing": {
        +                          "enum": [
        +                            "one_off",
        +                            "monthly",
        +                            "annual"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "currency": {
        +                          "enum": [
        +                            "GBP",
        +                            "SGD",
        +                            "EUR",
        +                            "USD",
        +                            "CAD",
        +                            "AUD",
        +                            "NZD",
        +                            "MYR"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "display_name": {
        +                          "type": "string"
        +                        },
        +                        "price_local": {
        +                          "type": "number"
        +                        },
        +                        "tier_slug": {
        +                          "enum": [
        +                            "7_day_pass",
        +                            "solo",
        +                            "studio",
        +                            "practice"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "unlock_summary": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "tier_slug",
        +                        "display_name",
        +                        "price_local",
        +                        "currency",
        +                        "billing",
        +                        "unlock_summary"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "current_tier": {
        +                    "const": "free",
        +                    "default": "free",
        +                    "type": "string"
        +                  },
        +                  "pass_credit": {
        +                    "anyOf": [
        +                      {
        +                        "additionalProperties": false,
        +                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        +                        "properties": {
        +                          "amount_local": {
        +                            "type": "number"
        +                          },
        +                          "applies_to": {
        +                            "const": "solo_first_month",
        +                            "default": "solo_first_month",
        +                            "type": "string"
        +                          },
        +                          "currency": {
        +                            "type": "string"
        +                          },
        +                          "redeemable_until": {
        +                            "type": "string"
        +                          }
        +                        },
        +                        "required": [
        +                          "amount_local",
        +                          "currency",
        +                          "redeemable_until"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "pricing_url": {
        +                    "default": "https://civilquants.com/pricing",
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "available_tiers"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tos_url": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "upgrade_hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "warranty_disclaimer": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          }
        +        },
        +        "required": [
        +          "request_id",
        +          "issued_at",
        +          "tier"
        +        ],
        +        "type": "object"
        +      },
        +      "data": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Schema § 1.1 — the typed payload returned inside `MCPResponse[ComputeResult]`.\n\nFree-tier responses omit `drawings` (the downloadable CAD artefact\npointers — the paid differentiator); the bridge enforces this. The\n`audit_trail` and the inline `drawing` preview are present on BOTH tiers\n(V1 ALIGN / 60th-fire D + C). `text_summary` is bounded to 2000 chars —\nkeeps the LLM-facing summary token-cheap and forces longer narrative into\nBoQ row descriptions where it belongs. `warnings` is the non-fatal\ngeometry advisory list (both tiers).",
        +            "properties": {
        +              "assembly_slug": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "audit_trail": {
        +                "anyOf": [
        +                  {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.7 — paid-tier audit-trail entry.\n\nOne entry per BoQ row; `boq_row_index` ties to the row position in\n`ComputeResult.boq_rows`. `derivation` is the human-readable formula\nwalk-through; `formula` is the optional formal expression.",
        +                      "properties": {
        +                        "boq_row_index": {
        +                          "minimum": 0,
        +                          "type": "integer"
        +                        },
        +                        "derivation": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "formula": {
        +                          "anyOf": [
        +                            {
        +                              "type": "string"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ],
        +                          "default": null
        +                        },
        +                        "id": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "parameters_referenced": {
        +                          "items": {
        +                            "type": "string"
        +                          },
        +                          "type": "array"
        +                        }
        +                      },
        +                      "required": [
        +                        "id",
        +                        "boq_row_index",
        +                        "derivation"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "boq_rows": {
        +                "items": {
        +                  "additionalProperties": false,
        +                  "description": "Schema § 1.3 — a single bill row in the requested standard's format.\n\n`description` is the non-verbatim functional description per spec § 13.9 /\n§ 15 invariant — NEVER reproduces a standard's verbatim clause text.\n`rate` / `amount` ship null because rates are commodity data the customer\nowns; the engine's job is the measurement, not the pricing.",
        +                  "properties": {
        +                    "amount": {
        +                      "anyOf": [
        +                        {
        +                          "type": "number"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "attribution": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "audit_id": {
        +                      "anyOf": [
        +                        {
        +                          "type": "string"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "description": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "quantity": {
        +                      "minimum": 0,
        +                      "type": "number"
        +                    },
        +                    "rate": {
        +                      "anyOf": [
        +                        {
        +                          "type": "number"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "unit": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "work_section": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    }
        +                  },
        +                  "required": [
        +                    "work_section",
        +                    "description",
        +                    "quantity",
        +                    "unit",
        +                    "attribution"
        +                  ],
        +                  "type": "object"
        +                },
        +                "type": "array"
        +              },
        +              "drawing": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": false,
        +                    "description": "Schema § 1.6a — inline server-rendered SVG preview of the geometry.\n\nThe MCP mirror of the web ``/compute`` response's ``drawing`` field\n(``api.schemas.compute.DrawingRef``): the same on-screen dimensioned\ndrawing both tiers see in the workspace, surfaced on the MCP compute\nresponse so a chat client can render it inline (60th-fire item C). This\nis the on-screen preview — present on BOTH tiers per the free/paid\nboundary; the downloadable CAD artefacts (DXF / dimensioned PDF) remain\nthe paid differentiator via the export tools.\n\nDefined here rather than importing ``DrawingRef`` because the web\n``schemas`` package imports back into this module (``schemas.render``),\nso reusing it would create an import cycle — the MCP wire contract keeps\nits own copy, the same pattern as ``BoQRow`` / ``DrawingReference``.",
        +                    "properties": {
        +                      "entity_count": {
        +                        "minimum": 0,
        +                        "type": "integer"
        +                      },
        +                      "svg_b64": {
        +                        "minLength": 1,
        +                        "type": "string"
        +                      },
        +                      "unit_of_drawing": {
        +                        "const": "m",
        +                        "default": "m",
        +                        "type": "string"
        +                      },
        +                      "viewbox_height": {
        +                        "exclusiveMinimum": 0,
        +                        "type": "number"
        +                      },
        +                      "viewbox_width": {
        +                        "exclusiveMinimum": 0,
        +                        "type": "number"
        +                      },
        +                      "viewbox_x": {
        +                        "type": "number"
        +                      },
        +                      "viewbox_y": {
        +                        "type": "number"
        +                      }
        +                    },
        +                    "required": [
        +                      "svg_b64",
        +                      "viewbox_x",
        +                      "viewbox_y",
        +                      "viewbox_width",
        +                      "viewbox_height",
        +                      "entity_count"
        +                    ],
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "drawings": {
        +                "anyOf": [
        +                  {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.6 — paid-tier drawing artefact pointer.\n\n`url` is an R2-signed URL; expiry is carried in `_meta.deliverables.expires_at`\non the envelope (not duplicated here). `layers` is DXF-only; PDF/SVG\ncallers omit it.",
        +                      "properties": {
        +                        "drawing_type": {
        +                          "enum": [
        +                            "section",
        +                            "plan",
        +                            "elevation",
        +                            "isometric",
        +                            "detail"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "format": {
        +                          "enum": [
        +                            "DXF",
        +                            "PDF",
        +                            "SVG"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "layers": {
        +                          "anyOf": [
        +                            {
        +                              "items": {
        +                                "type": "string"
        +                              },
        +                              "type": "array"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ],
        +                          "default": null
        +                        },
        +                        "scale": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "sheet_size": {
        +                          "enum": [
        +                            "A1",
        +                            "A2",
        +                            "A3",
        +                            "A4"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "url": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "drawing_type",
        +                        "format",
        +                        "url",
        +                        "sheet_size",
        +                        "scale"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "parameters_used": {
        +                "additionalProperties": false,
        +                "description": "Schema § 1.2 — the parameter snapshot the engine actually used.\n\nSplits user-supplied values from engine defaults so customers can see\nwhich numbers came from them and which the engine filled in. Every\ndefaulted parameter SHOULD have a corresponding entry in `assumptions`\n— the bridge layer enforces this when wrapping engine output.",
        +                "properties": {
        +                  "assumptions": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "engine_defaults": {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  "user_supplied": {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  }
        +                },
        +                "type": "object"
        +              },
        +              "standard": {
        +                "enum": [
        +                  "CESMM4",
        +                  "NRM2",
        +                  "SMM7",
        +                  "MMHW"
        +                ],
        +                "type": "string"
        +              },
        +              "text_summary": {
        +                "maxLength": 2000,
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "totals_summary": {
        +                "additionalProperties": false,
        +                "description": "Schema § 1.4 — totals_summary as a typed wrapper around the free-form dict.\n\nWire shape is a flat object (`{\"concrete_m3\": {...}, \"rebar_t\": {...}}`).\nWe model it as `RootModel`-equivalent via `model_config(extra=\"allow\")`\n+ a single `__root__`-style `entries` dict. Pydantic v2 recommends\n`RootModel` for free-form roots; using a wrapper class keeps the import\nsurface uniform with the rest of this module.",
        +                "properties": {
        +                  "entries": {
        +                    "additionalProperties": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.4 — single material/work-class total entry.",
        +                      "properties": {
        +                        "quantity": {
        +                          "minimum": 0,
        +                          "type": "number"
        +                        },
        +                        "unit": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "quantity",
        +                        "unit"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "object"
        +                  }
        +                },
        +                "type": "object"
        +              },
        +              "warnings": {
        +                "items": {
        +                  "additionalProperties": false,
        +                  "description": "Schema § 1.8 — a non-fatal geometry advisory (56th-fire T2).\n\nThe wire projection of the engine's `core.GeometryWarning`. Advisory only:\na warning NEVER changes a measured quantity — it flags geometry that is\nvalid but likely a mistake (e.g. a stale dependent-height default). Present\non BOTH tiers — a correctness/safety signal, not a paid feature.",
        +                  "properties": {
        +                    "affected_params": {
        +                      "items": {
        +                        "type": "string"
        +                      },
        +                      "type": "array"
        +                    },
        +                    "code": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "detail": {
        +                      "additionalProperties": {
        +                        "type": "number"
        +                      },
        +                      "type": "object"
        +                    },
        +                    "message": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "severity": {
        +                      "enum": [
        +                        "info",
        +                        "advisory",
        +                        "caution"
        +                      ],
        +                      "type": "string"
        +                    }
        +                  },
        +                  "required": [
        +                    "code",
        +                    "severity",
        +                    "message"
        +                  ],
        +                  "type": "object"
        +                },
        +                "type": "array"
        +              }
        +            },
        +            "required": [
        +              "assembly_slug",
        +              "standard",
        +              "parameters_used",
        +              "boq_rows",
        +              "totals_summary",
        +              "text_summary"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      },
        +      "error": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        +            "properties": {
        +              "code": {
        +                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        +                "enum": [
        +                  "RATE_LIMIT_EXCEEDED",
        +                  "TIER_INSUFFICIENT",
        +                  "INVALID_INPUT",
        +                  "SCHEMA_VERSION_MISMATCH",
        +                  "SCHEMA_INVARIANT_VIOLATION",
        +                  "UPSTREAM_TIMEOUT",
        +                  "BACKEND_FAILURE",
        +                  "IP_BLOCKED",
        +                  "RESOURCE_NOT_FOUND",
        +                  "RENDER_FAILURE",
        +                  "OCR_LOW_CONFIDENCE",
        +                  "MANUAL_REVIEW_REQUIRED",
        +                  "ACCEPTANCE_REQUIRED",
        +                  "INVALID_TOKEN"
        +                ],
        +                "type": "string"
        +              },
        +              "details": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "message": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "recoverable": {
        +                "type": "boolean"
        +              },
        +              "retry_after_seconds": {
        +                "anyOf": [
        +                  {
        +                    "minimum": 0,
        +                    "type": "integer"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              }
        +            },
        +            "required": [
        +              "code",
        +              "message",
        +              "recoverable"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      }
        +    },
        +    "required": [
        +      "_meta"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "_meta": {
        +        "additionalProperties": false,
        +        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        +        "properties": {
        +          "deliverables": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        +                "properties": {
        +                  "docx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "dxf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "expires_at": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  },
        +                  "pdf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "xlsx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "expires_at"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "document_id": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "issued_at": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "output_mode": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Surfaces what a trimmed ``output_mode`` withheld from ``data``.\n\nA trimmed mode (``summary`` / ``boq`` / ``boq_with_backup``) withholds\nalready-computed fields to keep the chat payload small. The withheld value\nreads to a client agent as \"capability missing\" (the box-culvert \"geometry\nbuilder isn't firing\" scare) rather than \"pared for size\": ``drawing`` and\n``audit_trail`` appear as ``null``, ``boq_rows`` as an empty list ``[]``\n(its type forbids ``null``) — both indistinguishable from a genuine absent\nresult. This names the withheld fields and the exact mode that brings each\nback, so the value is unambiguous. Absent on the default ``full_json`` mode\n— nothing is withheld, nothing to point at.",
        +                "properties": {
        +                  "mode": {
        +                    "enum": [
        +                      "summary",
        +                      "boq",
        +                      "boq_with_backup"
        +                    ],
        +                    "type": "string"
        +                  },
        +                  "omitted_fields": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "minItems": 1,
        +                    "type": "array"
        +                  },
        +                  "retrieve_with": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "mode",
        +                  "omitted_fields",
        +                  "retrieve_with"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "rate_limit_remaining": {
        +            "anyOf": [
        +              {
        +                "minimum": 0,
        +                "type": "integer"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "request_id": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "schema_version": {
        +            "const": "1.0.0",
        +            "default": "1.0.0",
        +            "type": "string"
        +          },
        +          "scope_boundary": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        +                "properties": {
        +                  "not_in_scope": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "produced": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "recommended_companions": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "type": "string"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "produced",
        +                  "not_in_scope"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tier": {
        +            "enum": [
        +              "free",
        +              "paid"
        +            ],
        +            "type": "string"
        +          },
        +          "tier_upgrade": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        +                "properties": {
        +                  "available_tiers": {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        +                      "properties": {
        +                        "billing": {
        +                          "enum": [
        +                            "one_off",
        +                            "monthly",
        +                            "annual"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "currency": {
        +                          "enum": [
        +                            "GBP",
        +                            "SGD",
        +                            "EUR",
        +                            "USD",
        +                            "CAD",
        +                            "AUD",
        +                            "NZD",
        +                            "MYR"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "display_name": {
        +                          "type": "string"
        +                        },
        +                        "price_local": {
        +                          "type": "number"
        +                        },
        +                        "tier_slug": {
        +                          "enum": [
        +                            "7_day_pass",
        +                            "solo",
        +                            "studio",
        +                            "practice"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "unlock_summary": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "tier_slug",
        +                        "display_name",
        +                        "price_local",
        +                        "currency",
        +                        "billing",
        +                        "unlock_summary"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "current_tier": {
        +                    "const": "free",
        +                    "default": "free",
        +                    "type": "string"
        +                  },
        +                  "pass_credit": {
        +                    "anyOf": [
        +                      {
        +                        "additionalProperties": false,
        +                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        +                        "properties": {
        +                          "amount_local": {
        +                            "type": "number"
        +                          },
        +                          "applies_to": {
        +                            "const": "solo_first_month",
        +                            "default": "solo_first_month",
        +                            "type": "string"
        +                          },
        +                          "currency": {
        +                            "type": "string"
        +                          },
        +                          "redeemable_until": {
        +                            "type": "string"
        +                          }
        +                        },
        +                        "required": [
        +                          "amount_local",
        +                          "currency",
        +                          "redeemable_until"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "pricing_url": {
        +                    "default": "https://civilquants.com/pricing",
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "available_tiers"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tos_url": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "upgrade_hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "warranty_disclaimer": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          }
        +        },
        +        "required": [
        +          "request_id",
        +          "issued_at",
        +          "tier"
        +        ],
        +        "type": "object"
        +      },
        +      "data": {
        +        "default": null,
        +        "title": "Data"
        +      },
        +      "error": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        +            "properties": {
        +              "code": {
        +                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        +                "enum": [
        +                  "RATE_LIMIT_EXCEEDED",
        +                  "TIER_INSUFFICIENT",
        +                  "INVALID_INPUT",
        +                  "SCHEMA_VERSION_MISMATCH",
        +                  "SCHEMA_INVARIANT_VIOLATION",
        +                  "UPSTREAM_TIMEOUT",
        +                  "BACKEND_FAILURE",
        +                  "IP_BLOCKED",
        +                  "RESOURCE_NOT_FOUND",
        +                  "RENDER_FAILURE",
        +                  "OCR_LOW_CONFIDENCE",
        +                  "MANUAL_REVIEW_REQUIRED",
        +                  "ACCEPTANCE_REQUIRED",
        +                  "INVALID_TOKEN"
        +                ],
        +                "type": "string"
        +              },
        +              "details": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "message": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "recoverable": {
        +                "type": "boolean"
        +              },
        +              "retry_after_seconds": {
        +                "anyOf": [
        +                  {
        +                    "minimum": 0,
        +                    "type": "integer"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              }
        +            },
        +            "required": [
        +              "code",
        +              "message",
        +              "recoverable"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      }
        +    },
        +    "required": [
        +      "_meta"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedcompute_headwall1 field changed
      • changedOutput schema / properties / result / anyOf
        Previous value: -[
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "_meta": {
        -        "additionalProperties": false,
        -        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        -        "properties": {
        -          "deliverables": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        -                "properties": {
        -                  "docx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "dxf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "expires_at": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  },
        -                  "pdf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "xlsx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "expires_at"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "document_id": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "issued_at": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "rate_limit_remaining": {
        -            "anyOf": [
        -              {
        -                "minimum": 0,
        -                "type": "integer"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "request_id": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "schema_version": {
        -            "const": "1.0.0",
        -            "default": "1.0.0",
        -            "type": "string"
        -          },
        -          "scope_boundary": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        -                "properties": {
        -                  "not_in_scope": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "produced": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "recommended_companions": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "type": "string"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "produced",
        -                  "not_in_scope"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tier": {
        -            "enum": [
        -              "free",
        -              "paid"
        -            ],
        -            "type": "string"
        -          },
        -          "tier_upgrade": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        -                "properties": {
        -                  "available_tiers": {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        -                      "properties": {
        -                        "billing": {
        -                          "enum": [
        -                            "one_off",
        -                            "monthly",
        -                            "annual"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "currency": {
        -                          "enum": [
        -                            "GBP",
        -                            "SGD",
        -                            "EUR",
        -                            "USD",
        -                            "CAD",
        -                            "AUD",
        -                            "NZD",
        -                            "MYR"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "display_name": {
        -                          "type": "string"
        -                        },
        -                        "price_local": {
        -                          "type": "number"
        -                        },
        -                        "tier_slug": {
        -                          "enum": [
        -                            "7_day_pass",
        -                            "solo",
        -                            "studio",
        -                            "practice"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "unlock_summary": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "tier_slug",
        -                        "display_name",
        -                        "price_local",
        -                        "currency",
        -                        "billing",
        -                        "unlock_summary"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "current_tier": {
        -                    "const": "free",
        -                    "default": "free",
        -                    "type": "string"
        -                  },
        -                  "pass_credit": {
        -                    "anyOf": [
        -                      {
        -                        "additionalProperties": false,
        -                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        -                        "properties": {
        -                          "amount_local": {
        -                            "type": "number"
        -                          },
        -                          "applies_to": {
        -                            "const": "solo_first_month",
        -                            "default": "solo_first_month",
        -                            "type": "string"
        -                          },
        -                          "currency": {
        -                            "type": "string"
        -                          },
        -                          "redeemable_until": {
        -                            "type": "string"
        -                          }
        -                        },
        -                        "required": [
        -                          "amount_local",
        -                          "currency",
        -                          "redeemable_until"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "pricing_url": {
        -                    "default": "https://civilquants.com/pricing",
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "available_tiers"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tos_url": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "upgrade_hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "warranty_disclaimer": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          }
        -        },
        -        "required": [
        -          "request_id",
        -          "issued_at",
        -          "tier"
        -        ],
        -        "type": "object"
        -      },
        -      "data": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Schema § 1.1 — the typed payload returned inside `MCPResponse[ComputeResult]`.\n\nFree-tier responses omit `drawings` (the downloadable CAD artefact\npointers — the paid differentiator); the bridge enforces this. The\n`audit_trail` and the inline `drawing` preview are present on BOTH tiers\n(V1 ALIGN / 60th-fire D + C). `text_summary` is bounded to 2000 chars —\nkeeps the LLM-facing summary token-cheap and forces longer narrative into\nBoQ row descriptions where it belongs. `warnings` is the non-fatal\ngeometry advisory list (both tiers).",
        -            "properties": {
        -              "assembly_slug": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "audit_trail": {
        -                "anyOf": [
        -                  {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.7 — paid-tier audit-trail entry.\n\nOne entry per BoQ row; `boq_row_index` ties to the row position in\n`ComputeResult.boq_rows`. `derivation` is the human-readable formula\nwalk-through; `formula` is the optional formal expression.",
        -                      "properties": {
        -                        "boq_row_index": {
        -                          "minimum": 0,
        -                          "type": "integer"
        -                        },
        -                        "derivation": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "formula": {
        -                          "anyOf": [
        -                            {
        -                              "type": "string"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ],
        -                          "default": null
        -                        },
        -                        "id": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "parameters_referenced": {
        -                          "items": {
        -                            "type": "string"
        -                          },
        -                          "type": "array"
        -                        }
        -                      },
        -                      "required": [
        -                        "id",
        -                        "boq_row_index",
        -                        "derivation"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "boq_rows": {
        -                "items": {
        -                  "additionalProperties": false,
        -                  "description": "Schema § 1.3 — a single bill row in the requested standard's format.\n\n`description` is the non-verbatim functional description per spec § 13.9 /\n§ 15 invariant — NEVER reproduces a standard's verbatim clause text.\n`rate` / `amount` ship null because rates are commodity data the customer\nowns; the engine's job is the measurement, not the pricing.",
        -                  "properties": {
        -                    "amount": {
        -                      "anyOf": [
        -                        {
        -                          "type": "number"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "attribution": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "audit_id": {
        -                      "anyOf": [
        -                        {
        -                          "type": "string"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "description": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "quantity": {
        -                      "minimum": 0,
        -                      "type": "number"
        -                    },
        -                    "rate": {
        -                      "anyOf": [
        -                        {
        -                          "type": "number"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "unit": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "work_section": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    }
        -                  },
        -                  "required": [
        -                    "work_section",
        -                    "description",
        -                    "quantity",
        -                    "unit",
        -                    "attribution"
        -                  ],
        -                  "type": "object"
        -                },
        -                "type": "array"
        -              },
        -              "drawing": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": false,
        -                    "description": "Schema § 1.6a — inline server-rendered SVG preview of the geometry.\n\nThe MCP mirror of the web ``/compute`` response's ``drawing`` field\n(``api.schemas.compute.DrawingRef``): the same on-screen dimensioned\ndrawing both tiers see in the workspace, surfaced on the MCP compute\nresponse so a chat client can render it inline (60th-fire item C). This\nis the on-screen preview — present on BOTH tiers per the free/paid\nboundary; the downloadable CAD artefacts (DXF / dimensioned PDF) remain\nthe paid differentiator via the export tools.\n\nDefined here rather than importing ``DrawingRef`` because the web\n``schemas`` package imports back into this module (``schemas.render``),\nso reusing it would create an import cycle — the MCP wire contract keeps\nits own copy, the same pattern as ``BoQRow`` / ``DrawingReference``.",
        -                    "properties": {
        -                      "entity_count": {
        -                        "minimum": 0,
        -                        "type": "integer"
        -                      },
        -                      "svg_b64": {
        -                        "minLength": 1,
        -                        "type": "string"
        -                      },
        -                      "unit_of_drawing": {
        -                        "const": "m",
        -                        "default": "m",
        -                        "type": "string"
        -                      },
        -                      "viewbox_height": {
        -                        "exclusiveMinimum": 0,
        -                        "type": "number"
        -                      },
        -                      "viewbox_width": {
        -                        "exclusiveMinimum": 0,
        -                        "type": "number"
        -                      },
        -                      "viewbox_x": {
        -                        "type": "number"
        -                      },
        -                      "viewbox_y": {
        -                        "type": "number"
        -                      }
        -                    },
        -                    "required": [
        -                      "svg_b64",
        -                      "viewbox_x",
        -                      "viewbox_y",
        -                      "viewbox_width",
        -                      "viewbox_height",
        -                      "entity_count"
        -                    ],
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "drawings": {
        -                "anyOf": [
        -                  {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.6 — paid-tier drawing artefact pointer.\n\n`url` is an R2-signed URL; expiry is carried in `_meta.deliverables.expires_at`\non the envelope (not duplicated here). `layers` is DXF-only; PDF/SVG\ncallers omit it.",
        -                      "properties": {
        -                        "drawing_type": {
        -                          "enum": [
        -                            "section",
        -                            "plan",
        -                            "elevation",
        -                            "isometric",
        -                            "detail"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "format": {
        -                          "enum": [
        -                            "DXF",
        -                            "PDF",
        -                            "SVG"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "layers": {
        -                          "anyOf": [
        -                            {
        -                              "items": {
        -                                "type": "string"
        -                              },
        -                              "type": "array"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ],
        -                          "default": null
        -                        },
        -                        "scale": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "sheet_size": {
        -                          "enum": [
        -                            "A1",
        -                            "A2",
        -                            "A3",
        -                            "A4"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "url": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "drawing_type",
        -                        "format",
        -                        "url",
        -                        "sheet_size",
        -                        "scale"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "parameters_used": {
        -                "additionalProperties": false,
        -                "description": "Schema § 1.2 — the parameter snapshot the engine actually used.\n\nSplits user-supplied values from engine defaults so customers can see\nwhich numbers came from them and which the engine filled in. Every\ndefaulted parameter SHOULD have a corresponding entry in `assumptions`\n— the bridge layer enforces this when wrapping engine output.",
        -                "properties": {
        -                  "assumptions": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "engine_defaults": {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  "user_supplied": {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  }
        -                },
        -                "type": "object"
        -              },
        -              "standard": {
        -                "enum": [
        -                  "CESMM4",
        -                  "NRM2",
        -                  "SMM7",
        -                  "MMHW"
        -                ],
        -                "type": "string"
        -              },
        -              "text_summary": {
        -                "maxLength": 2000,
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "totals_summary": {
        -                "additionalProperties": false,
        -                "description": "Schema § 1.4 — totals_summary as a typed wrapper around the free-form dict.\n\nWire shape is a flat object (`{\"concrete_m3\": {...}, \"rebar_t\": {...}}`).\nWe model it as `RootModel`-equivalent via `model_config(extra=\"allow\")`\n+ a single `__root__`-style `entries` dict. Pydantic v2 recommends\n`RootModel` for free-form roots; using a wrapper class keeps the import\nsurface uniform with the rest of this module.",
        -                "properties": {
        -                  "entries": {
        -                    "additionalProperties": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.4 — single material/work-class total entry.",
        -                      "properties": {
        -                        "quantity": {
        -                          "minimum": 0,
        -                          "type": "number"
        -                        },
        -                        "unit": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "quantity",
        -                        "unit"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "object"
        -                  }
        -                },
        -                "type": "object"
        -              },
        -              "warnings": {
        -                "items": {
        -                  "additionalProperties": false,
        -                  "description": "Schema § 1.8 — a non-fatal geometry advisory (56th-fire T2).\n\nThe wire projection of the engine's `core.GeometryWarning`. Advisory only:\na warning NEVER changes a measured quantity — it flags geometry that is\nvalid but likely a mistake (e.g. a stale dependent-height default). Present\non BOTH tiers — a correctness/safety signal, not a paid feature.",
        -                  "properties": {
        -                    "affected_params": {
        -                      "items": {
        -                        "type": "string"
        -                      },
        -                      "type": "array"
        -                    },
        -                    "code": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "detail": {
        -                      "additionalProperties": {
        -                        "type": "number"
        -                      },
        -                      "type": "object"
        -                    },
        -                    "message": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "severity": {
        -                      "enum": [
        -                        "info",
        -                        "advisory",
        -                        "caution"
        -                      ],
        -                      "type": "string"
        -                    }
        -                  },
        -                  "required": [
        -                    "code",
        -                    "severity",
        -                    "message"
        -                  ],
        -                  "type": "object"
        -                },
        -                "type": "array"
        -              }
        -            },
        -            "required": [
        -              "assembly_slug",
        -              "standard",
        -              "parameters_used",
        -              "boq_rows",
        -              "totals_summary",
        -              "text_summary"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      },
        -      "error": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        -            "properties": {
        -              "code": {
        -                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        -                "enum": [
        -                  "RATE_LIMIT_EXCEEDED",
        -                  "TIER_INSUFFICIENT",
        -                  "INVALID_INPUT",
        -                  "SCHEMA_VERSION_MISMATCH",
        -                  "SCHEMA_INVARIANT_VIOLATION",
        -                  "UPSTREAM_TIMEOUT",
        -                  "BACKEND_FAILURE",
        -                  "IP_BLOCKED",
        -                  "RESOURCE_NOT_FOUND",
        -                  "RENDER_FAILURE",
        -                  "OCR_LOW_CONFIDENCE",
        -                  "MANUAL_REVIEW_REQUIRED",
        -                  "ACCEPTANCE_REQUIRED",
        -                  "INVALID_TOKEN"
        -                ],
        -                "type": "string"
        -              },
        -              "details": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "message": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "recoverable": {
        -                "type": "boolean"
        -              },
        -              "retry_after_seconds": {
        -                "anyOf": [
        -                  {
        -                    "minimum": 0,
        -                    "type": "integer"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              }
        -            },
        -            "required": [
        -              "code",
        -              "message",
        -              "recoverable"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      }
        -    },
        -    "required": [
        -      "_meta"
        -    ],
        -    "type": "object"
        -  },
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "_meta": {
        -        "additionalProperties": false,
        -        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        -        "properties": {
        -          "deliverables": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        -                "properties": {
        -                  "docx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "dxf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "expires_at": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  },
        -                  "pdf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "xlsx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "expires_at"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "document_id": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "issued_at": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "rate_limit_remaining": {
        -            "anyOf": [
        -              {
        -                "minimum": 0,
        -                "type": "integer"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "request_id": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "schema_version": {
        -            "const": "1.0.0",
        -            "default": "1.0.0",
        -            "type": "string"
        -          },
        -          "scope_boundary": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        -                "properties": {
        -                  "not_in_scope": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "produced": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "recommended_companions": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "type": "string"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "produced",
        -                  "not_in_scope"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tier": {
        -            "enum": [
        -              "free",
        -              "paid"
        -            ],
        -            "type": "string"
        -          },
        -          "tier_upgrade": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        -                "properties": {
        -                  "available_tiers": {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        -                      "properties": {
        -                        "billing": {
        -                          "enum": [
        -                            "one_off",
        -                            "monthly",
        -                            "annual"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "currency": {
        -                          "enum": [
        -                            "GBP",
        -                            "SGD",
        -                            "EUR",
        -                            "USD",
        -                            "CAD",
        -                            "AUD",
        -                            "NZD",
        -                            "MYR"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "display_name": {
        -                          "type": "string"
        -                        },
        -                        "price_local": {
        -                          "type": "number"
        -                        },
        -                        "tier_slug": {
        -                          "enum": [
        -                            "7_day_pass",
        -                            "solo",
        -                            "studio",
        -                            "practice"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "unlock_summary": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "tier_slug",
        -                        "display_name",
        -                        "price_local",
        -                        "currency",
        -                        "billing",
        -                        "unlock_summary"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "current_tier": {
        -                    "const": "free",
        -                    "default": "free",
        -                    "type": "string"
        -                  },
        -                  "pass_credit": {
        -                    "anyOf": [
        -                      {
        -                        "additionalProperties": false,
        -                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        -                        "properties": {
        -                          "amount_local": {
        -                            "type": "number"
        -                          },
        -                          "applies_to": {
        -                            "const": "solo_first_month",
        -                            "default": "solo_first_month",
        -                            "type": "string"
        -                          },
        -                          "currency": {
        -                            "type": "string"
        -                          },
        -                          "redeemable_until": {
        -                            "type": "string"
        -                          }
        -                        },
        -                        "required": [
        -                          "amount_local",
        -                          "currency",
        -                          "redeemable_until"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "pricing_url": {
        -                    "default": "https://civilquants.com/pricing",
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "available_tiers"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tos_url": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "upgrade_hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "warranty_disclaimer": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          }
        -        },
        -        "required": [
        -          "request_id",
        -          "issued_at",
        -          "tier"
        -        ],
        -        "type": "object"
        -      },
        -      "data": {
        -        "default": null,
        -        "title": "Data"
        -      },
        -      "error": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        -            "properties": {
        -              "code": {
        -                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        -                "enum": [
        -                  "RATE_LIMIT_EXCEEDED",
        -                  "TIER_INSUFFICIENT",
        -                  "INVALID_INPUT",
        -                  "SCHEMA_VERSION_MISMATCH",
        -                  "SCHEMA_INVARIANT_VIOLATION",
        -                  "UPSTREAM_TIMEOUT",
        -                  "BACKEND_FAILURE",
        -                  "IP_BLOCKED",
        -                  "RESOURCE_NOT_FOUND",
        -                  "RENDER_FAILURE",
        -                  "OCR_LOW_CONFIDENCE",
        -                  "MANUAL_REVIEW_REQUIRED",
        -                  "ACCEPTANCE_REQUIRED",
        -                  "INVALID_TOKEN"
        -                ],
        -                "type": "string"
        -              },
        -              "details": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "message": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "recoverable": {
        -                "type": "boolean"
        -              },
        -              "retry_after_seconds": {
        -                "anyOf": [
        -                  {
        -                    "minimum": 0,
        -                    "type": "integer"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              }
        -            },
        -            "required": [
        -              "code",
        -              "message",
        -              "recoverable"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      }
        -    },
        -    "required": [
        -      "_meta"
        -    ],
        -    "type": "object"
        -  }
        -]New value: +[
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "_meta": {
        +        "additionalProperties": false,
        +        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        +        "properties": {
        +          "deliverables": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        +                "properties": {
        +                  "docx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "dxf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "expires_at": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  },
        +                  "pdf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "xlsx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "expires_at"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "document_id": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "issued_at": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "output_mode": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Surfaces what a trimmed ``output_mode`` withheld from ``data``.\n\nA trimmed mode (``summary`` / ``boq`` / ``boq_with_backup``) withholds\nalready-computed fields to keep the chat payload small. The withheld value\nreads to a client agent as \"capability missing\" (the box-culvert \"geometry\nbuilder isn't firing\" scare) rather than \"pared for size\": ``drawing`` and\n``audit_trail`` appear as ``null``, ``boq_rows`` as an empty list ``[]``\n(its type forbids ``null``) — both indistinguishable from a genuine absent\nresult. This names the withheld fields and the exact mode that brings each\nback, so the value is unambiguous. Absent on the default ``full_json`` mode\n— nothing is withheld, nothing to point at.",
        +                "properties": {
        +                  "mode": {
        +                    "enum": [
        +                      "summary",
        +                      "boq",
        +                      "boq_with_backup"
        +                    ],
        +                    "type": "string"
        +                  },
        +                  "omitted_fields": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "minItems": 1,
        +                    "type": "array"
        +                  },
        +                  "retrieve_with": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "mode",
        +                  "omitted_fields",
        +                  "retrieve_with"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "rate_limit_remaining": {
        +            "anyOf": [
        +              {
        +                "minimum": 0,
        +                "type": "integer"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "request_id": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "schema_version": {
        +            "const": "1.0.0",
        +            "default": "1.0.0",
        +            "type": "string"
        +          },
        +          "scope_boundary": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        +                "properties": {
        +                  "not_in_scope": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "produced": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "recommended_companions": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "type": "string"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "produced",
        +                  "not_in_scope"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tier": {
        +            "enum": [
        +              "free",
        +              "paid"
        +            ],
        +            "type": "string"
        +          },
        +          "tier_upgrade": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        +                "properties": {
        +                  "available_tiers": {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        +                      "properties": {
        +                        "billing": {
        +                          "enum": [
        +                            "one_off",
        +                            "monthly",
        +                            "annual"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "currency": {
        +                          "enum": [
        +                            "GBP",
        +                            "SGD",
        +                            "EUR",
        +                            "USD",
        +                            "CAD",
        +                            "AUD",
        +                            "NZD",
        +                            "MYR"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "display_name": {
        +                          "type": "string"
        +                        },
        +                        "price_local": {
        +                          "type": "number"
        +                        },
        +                        "tier_slug": {
        +                          "enum": [
        +                            "7_day_pass",
        +                            "solo",
        +                            "studio",
        +                            "practice"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "unlock_summary": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "tier_slug",
        +                        "display_name",
        +                        "price_local",
        +                        "currency",
        +                        "billing",
        +                        "unlock_summary"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "current_tier": {
        +                    "const": "free",
        +                    "default": "free",
        +                    "type": "string"
        +                  },
        +                  "pass_credit": {
        +                    "anyOf": [
        +                      {
        +                        "additionalProperties": false,
        +                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        +                        "properties": {
        +                          "amount_local": {
        +                            "type": "number"
        +                          },
        +                          "applies_to": {
        +                            "const": "solo_first_month",
        +                            "default": "solo_first_month",
        +                            "type": "string"
        +                          },
        +                          "currency": {
        +                            "type": "string"
        +                          },
        +                          "redeemable_until": {
        +                            "type": "string"
        +                          }
        +                        },
        +                        "required": [
        +                          "amount_local",
        +                          "currency",
        +                          "redeemable_until"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "pricing_url": {
        +                    "default": "https://civilquants.com/pricing",
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "available_tiers"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tos_url": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "upgrade_hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "warranty_disclaimer": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          }
        +        },
        +        "required": [
        +          "request_id",
        +          "issued_at",
        +          "tier"
        +        ],
        +        "type": "object"
        +      },
        +      "data": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Schema § 1.1 — the typed payload returned inside `MCPResponse[ComputeResult]`.\n\nFree-tier responses omit `drawings` (the downloadable CAD artefact\npointers — the paid differentiator); the bridge enforces this. The\n`audit_trail` and the inline `drawing` preview are present on BOTH tiers\n(V1 ALIGN / 60th-fire D + C). `text_summary` is bounded to 2000 chars —\nkeeps the LLM-facing summary token-cheap and forces longer narrative into\nBoQ row descriptions where it belongs. `warnings` is the non-fatal\ngeometry advisory list (both tiers).",
        +            "properties": {
        +              "assembly_slug": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "audit_trail": {
        +                "anyOf": [
        +                  {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.7 — paid-tier audit-trail entry.\n\nOne entry per BoQ row; `boq_row_index` ties to the row position in\n`ComputeResult.boq_rows`. `derivation` is the human-readable formula\nwalk-through; `formula` is the optional formal expression.",
        +                      "properties": {
        +                        "boq_row_index": {
        +                          "minimum": 0,
        +                          "type": "integer"
        +                        },
        +                        "derivation": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "formula": {
        +                          "anyOf": [
        +                            {
        +                              "type": "string"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ],
        +                          "default": null
        +                        },
        +                        "id": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "parameters_referenced": {
        +                          "items": {
        +                            "type": "string"
        +                          },
        +                          "type": "array"
        +                        }
        +                      },
        +                      "required": [
        +                        "id",
        +                        "boq_row_index",
        +                        "derivation"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "boq_rows": {
        +                "items": {
        +                  "additionalProperties": false,
        +                  "description": "Schema § 1.3 — a single bill row in the requested standard's format.\n\n`description` is the non-verbatim functional description per spec § 13.9 /\n§ 15 invariant — NEVER reproduces a standard's verbatim clause text.\n`rate` / `amount` ship null because rates are commodity data the customer\nowns; the engine's job is the measurement, not the pricing.",
        +                  "properties": {
        +                    "amount": {
        +                      "anyOf": [
        +                        {
        +                          "type": "number"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "attribution": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "audit_id": {
        +                      "anyOf": [
        +                        {
        +                          "type": "string"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "description": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "quantity": {
        +                      "minimum": 0,
        +                      "type": "number"
        +                    },
        +                    "rate": {
        +                      "anyOf": [
        +                        {
        +                          "type": "number"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "unit": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "work_section": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    }
        +                  },
        +                  "required": [
        +                    "work_section",
        +                    "description",
        +                    "quantity",
        +                    "unit",
        +                    "attribution"
        +                  ],
        +                  "type": "object"
        +                },
        +                "type": "array"
        +              },
        +              "drawing": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": false,
        +                    "description": "Schema § 1.6a — inline server-rendered SVG preview of the geometry.\n\nThe MCP mirror of the web ``/compute`` response's ``drawing`` field\n(``api.schemas.compute.DrawingRef``): the same on-screen dimensioned\ndrawing both tiers see in the workspace, surfaced on the MCP compute\nresponse so a chat client can render it inline (60th-fire item C). This\nis the on-screen preview — present on BOTH tiers per the free/paid\nboundary; the downloadable CAD artefacts (DXF / dimensioned PDF) remain\nthe paid differentiator via the export tools.\n\nDefined here rather than importing ``DrawingRef`` because the web\n``schemas`` package imports back into this module (``schemas.render``),\nso reusing it would create an import cycle — the MCP wire contract keeps\nits own copy, the same pattern as ``BoQRow`` / ``DrawingReference``.",
        +                    "properties": {
        +                      "entity_count": {
        +                        "minimum": 0,
        +                        "type": "integer"
        +                      },
        +                      "svg_b64": {
        +                        "minLength": 1,
        +                        "type": "string"
        +                      },
        +                      "unit_of_drawing": {
        +                        "const": "m",
        +                        "default": "m",
        +                        "type": "string"
        +                      },
        +                      "viewbox_height": {
        +                        "exclusiveMinimum": 0,
        +                        "type": "number"
        +                      },
        +                      "viewbox_width": {
        +                        "exclusiveMinimum": 0,
        +                        "type": "number"
        +                      },
        +                      "viewbox_x": {
        +                        "type": "number"
        +                      },
        +                      "viewbox_y": {
        +                        "type": "number"
        +                      }
        +                    },
        +                    "required": [
        +                      "svg_b64",
        +                      "viewbox_x",
        +                      "viewbox_y",
        +                      "viewbox_width",
        +                      "viewbox_height",
        +                      "entity_count"
        +                    ],
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "drawings": {
        +                "anyOf": [
        +                  {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.6 — paid-tier drawing artefact pointer.\n\n`url` is an R2-signed URL; expiry is carried in `_meta.deliverables.expires_at`\non the envelope (not duplicated here). `layers` is DXF-only; PDF/SVG\ncallers omit it.",
        +                      "properties": {
        +                        "drawing_type": {
        +                          "enum": [
        +                            "section",
        +                            "plan",
        +                            "elevation",
        +                            "isometric",
        +                            "detail"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "format": {
        +                          "enum": [
        +                            "DXF",
        +                            "PDF",
        +                            "SVG"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "layers": {
        +                          "anyOf": [
        +                            {
        +                              "items": {
        +                                "type": "string"
        +                              },
        +                              "type": "array"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ],
        +                          "default": null
        +                        },
        +                        "scale": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "sheet_size": {
        +                          "enum": [
        +                            "A1",
        +                            "A2",
        +                            "A3",
        +                            "A4"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "url": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "drawing_type",
        +                        "format",
        +                        "url",
        +                        "sheet_size",
        +                        "scale"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "parameters_used": {
        +                "additionalProperties": false,
        +                "description": "Schema § 1.2 — the parameter snapshot the engine actually used.\n\nSplits user-supplied values from engine defaults so customers can see\nwhich numbers came from them and which the engine filled in. Every\ndefaulted parameter SHOULD have a corresponding entry in `assumptions`\n— the bridge layer enforces this when wrapping engine output.",
        +                "properties": {
        +                  "assumptions": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "engine_defaults": {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  "user_supplied": {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  }
        +                },
        +                "type": "object"
        +              },
        +              "standard": {
        +                "enum": [
        +                  "CESMM4",
        +                  "NRM2",
        +                  "SMM7",
        +                  "MMHW"
        +                ],
        +                "type": "string"
        +              },
        +              "text_summary": {
        +                "maxLength": 2000,
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "totals_summary": {
        +                "additionalProperties": false,
        +                "description": "Schema § 1.4 — totals_summary as a typed wrapper around the free-form dict.\n\nWire shape is a flat object (`{\"concrete_m3\": {...}, \"rebar_t\": {...}}`).\nWe model it as `RootModel`-equivalent via `model_config(extra=\"allow\")`\n+ a single `__root__`-style `entries` dict. Pydantic v2 recommends\n`RootModel` for free-form roots; using a wrapper class keeps the import\nsurface uniform with the rest of this module.",
        +                "properties": {
        +                  "entries": {
        +                    "additionalProperties": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.4 — single material/work-class total entry.",
        +                      "properties": {
        +                        "quantity": {
        +                          "minimum": 0,
        +                          "type": "number"
        +                        },
        +                        "unit": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "quantity",
        +                        "unit"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "object"
        +                  }
        +                },
        +                "type": "object"
        +              },
        +              "warnings": {
        +                "items": {
        +                  "additionalProperties": false,
        +                  "description": "Schema § 1.8 — a non-fatal geometry advisory (56th-fire T2).\n\nThe wire projection of the engine's `core.GeometryWarning`. Advisory only:\na warning NEVER changes a measured quantity — it flags geometry that is\nvalid but likely a mistake (e.g. a stale dependent-height default). Present\non BOTH tiers — a correctness/safety signal, not a paid feature.",
        +                  "properties": {
        +                    "affected_params": {
        +                      "items": {
        +                        "type": "string"
        +                      },
        +                      "type": "array"
        +                    },
        +                    "code": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "detail": {
        +                      "additionalProperties": {
        +                        "type": "number"
        +                      },
        +                      "type": "object"
        +                    },
        +                    "message": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "severity": {
        +                      "enum": [
        +                        "info",
        +                        "advisory",
        +                        "caution"
        +                      ],
        +                      "type": "string"
        +                    }
        +                  },
        +                  "required": [
        +                    "code",
        +                    "severity",
        +                    "message"
        +                  ],
        +                  "type": "object"
        +                },
        +                "type": "array"
        +              }
        +            },
        +            "required": [
        +              "assembly_slug",
        +              "standard",
        +              "parameters_used",
        +              "boq_rows",
        +              "totals_summary",
        +              "text_summary"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      },
        +      "error": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        +            "properties": {
        +              "code": {
        +                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        +                "enum": [
        +                  "RATE_LIMIT_EXCEEDED",
        +                  "TIER_INSUFFICIENT",
        +                  "INVALID_INPUT",
        +                  "SCHEMA_VERSION_MISMATCH",
        +                  "SCHEMA_INVARIANT_VIOLATION",
        +                  "UPSTREAM_TIMEOUT",
        +                  "BACKEND_FAILURE",
        +                  "IP_BLOCKED",
        +                  "RESOURCE_NOT_FOUND",
        +                  "RENDER_FAILURE",
        +                  "OCR_LOW_CONFIDENCE",
        +                  "MANUAL_REVIEW_REQUIRED",
        +                  "ACCEPTANCE_REQUIRED",
        +                  "INVALID_TOKEN"
        +                ],
        +                "type": "string"
        +              },
        +              "details": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "message": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "recoverable": {
        +                "type": "boolean"
        +              },
        +              "retry_after_seconds": {
        +                "anyOf": [
        +                  {
        +                    "minimum": 0,
        +                    "type": "integer"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              }
        +            },
        +            "required": [
        +              "code",
        +              "message",
        +              "recoverable"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      }
        +    },
        +    "required": [
        +      "_meta"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "_meta": {
        +        "additionalProperties": false,
        +        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        +        "properties": {
        +          "deliverables": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        +                "properties": {
        +                  "docx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "dxf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "expires_at": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  },
        +                  "pdf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "xlsx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "expires_at"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "document_id": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "issued_at": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "output_mode": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Surfaces what a trimmed ``output_mode`` withheld from ``data``.\n\nA trimmed mode (``summary`` / ``boq`` / ``boq_with_backup``) withholds\nalready-computed fields to keep the chat payload small. The withheld value\nreads to a client agent as \"capability missing\" (the box-culvert \"geometry\nbuilder isn't firing\" scare) rather than \"pared for size\": ``drawing`` and\n``audit_trail`` appear as ``null``, ``boq_rows`` as an empty list ``[]``\n(its type forbids ``null``) — both indistinguishable from a genuine absent\nresult. This names the withheld fields and the exact mode that brings each\nback, so the value is unambiguous. Absent on the default ``full_json`` mode\n— nothing is withheld, nothing to point at.",
        +                "properties": {
        +                  "mode": {
        +                    "enum": [
        +                      "summary",
        +                      "boq",
        +                      "boq_with_backup"
        +                    ],
        +                    "type": "string"
        +                  },
        +                  "omitted_fields": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "minItems": 1,
        +                    "type": "array"
        +                  },
        +                  "retrieve_with": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "mode",
        +                  "omitted_fields",
        +                  "retrieve_with"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "rate_limit_remaining": {
        +            "anyOf": [
        +              {
        +                "minimum": 0,
        +                "type": "integer"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "request_id": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "schema_version": {
        +            "const": "1.0.0",
        +            "default": "1.0.0",
        +            "type": "string"
        +          },
        +          "scope_boundary": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        +                "properties": {
        +                  "not_in_scope": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "produced": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "recommended_companions": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "type": "string"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "produced",
        +                  "not_in_scope"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tier": {
        +            "enum": [
        +              "free",
        +              "paid"
        +            ],
        +            "type": "string"
        +          },
        +          "tier_upgrade": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        +                "properties": {
        +                  "available_tiers": {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        +                      "properties": {
        +                        "billing": {
        +                          "enum": [
        +                            "one_off",
        +                            "monthly",
        +                            "annual"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "currency": {
        +                          "enum": [
        +                            "GBP",
        +                            "SGD",
        +                            "EUR",
        +                            "USD",
        +                            "CAD",
        +                            "AUD",
        +                            "NZD",
        +                            "MYR"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "display_name": {
        +                          "type": "string"
        +                        },
        +                        "price_local": {
        +                          "type": "number"
        +                        },
        +                        "tier_slug": {
        +                          "enum": [
        +                            "7_day_pass",
        +                            "solo",
        +                            "studio",
        +                            "practice"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "unlock_summary": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "tier_slug",
        +                        "display_name",
        +                        "price_local",
        +                        "currency",
        +                        "billing",
        +                        "unlock_summary"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "current_tier": {
        +                    "const": "free",
        +                    "default": "free",
        +                    "type": "string"
        +                  },
        +                  "pass_credit": {
        +                    "anyOf": [
        +                      {
        +                        "additionalProperties": false,
        +                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        +                        "properties": {
        +                          "amount_local": {
        +                            "type": "number"
        +                          },
        +                          "applies_to": {
        +                            "const": "solo_first_month",
        +                            "default": "solo_first_month",
        +                            "type": "string"
        +                          },
        +                          "currency": {
        +                            "type": "string"
        +                          },
        +                          "redeemable_until": {
        +                            "type": "string"
        +                          }
        +                        },
        +                        "required": [
        +                          "amount_local",
        +                          "currency",
        +                          "redeemable_until"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "pricing_url": {
        +                    "default": "https://civilquants.com/pricing",
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "available_tiers"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tos_url": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "upgrade_hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "warranty_disclaimer": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          }
        +        },
        +        "required": [
        +          "request_id",
        +          "issued_at",
        +          "tier"
        +        ],
        +        "type": "object"
        +      },
        +      "data": {
        +        "default": null,
        +        "title": "Data"
        +      },
        +      "error": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        +            "properties": {
        +              "code": {
        +                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        +                "enum": [
        +                  "RATE_LIMIT_EXCEEDED",
        +                  "TIER_INSUFFICIENT",
        +                  "INVALID_INPUT",
        +                  "SCHEMA_VERSION_MISMATCH",
        +                  "SCHEMA_INVARIANT_VIOLATION",
        +                  "UPSTREAM_TIMEOUT",
        +                  "BACKEND_FAILURE",
        +                  "IP_BLOCKED",
        +                  "RESOURCE_NOT_FOUND",
        +                  "RENDER_FAILURE",
        +                  "OCR_LOW_CONFIDENCE",
        +                  "MANUAL_REVIEW_REQUIRED",
        +                  "ACCEPTANCE_REQUIRED",
        +                  "INVALID_TOKEN"
        +                ],
        +                "type": "string"
        +              },
        +              "details": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "message": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "recoverable": {
        +                "type": "boolean"
        +              },
        +              "retry_after_seconds": {
        +                "anyOf": [
        +                  {
        +                    "minimum": 0,
        +                    "type": "integer"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              }
        +            },
        +            "required": [
        +              "code",
        +              "message",
        +              "recoverable"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      }
        +    },
        +    "required": [
        +      "_meta"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedcompute_headwall_attenuation_outlet1 field changed
      • changedOutput schema / properties / result / anyOf
        Previous value: -[
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "_meta": {
        -        "additionalProperties": false,
        -        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        -        "properties": {
        -          "deliverables": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        -                "properties": {
        -                  "docx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "dxf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "expires_at": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  },
        -                  "pdf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "xlsx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "expires_at"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "document_id": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "issued_at": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "rate_limit_remaining": {
        -            "anyOf": [
        -              {
        -                "minimum": 0,
        -                "type": "integer"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "request_id": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "schema_version": {
        -            "const": "1.0.0",
        -            "default": "1.0.0",
        -            "type": "string"
        -          },
        -          "scope_boundary": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        -                "properties": {
        -                  "not_in_scope": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "produced": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "recommended_companions": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "type": "string"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "produced",
        -                  "not_in_scope"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tier": {
        -            "enum": [
        -              "free",
        -              "paid"
        -            ],
        -            "type": "string"
        -          },
        -          "tier_upgrade": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        -                "properties": {
        -                  "available_tiers": {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        -                      "properties": {
        -                        "billing": {
        -                          "enum": [
        -                            "one_off",
        -                            "monthly",
        -                            "annual"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "currency": {
        -                          "enum": [
        -                            "GBP",
        -                            "SGD",
        -                            "EUR",
        -                            "USD",
        -                            "CAD",
        -                            "AUD",
        -                            "NZD",
        -                            "MYR"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "display_name": {
        -                          "type": "string"
        -                        },
        -                        "price_local": {
        -                          "type": "number"
        -                        },
        -                        "tier_slug": {
        -                          "enum": [
        -                            "7_day_pass",
        -                            "solo",
        -                            "studio",
        -                            "practice"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "unlock_summary": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "tier_slug",
        -                        "display_name",
        -                        "price_local",
        -                        "currency",
        -                        "billing",
        -                        "unlock_summary"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "current_tier": {
        -                    "const": "free",
        -                    "default": "free",
        -                    "type": "string"
        -                  },
        -                  "pass_credit": {
        -                    "anyOf": [
        -                      {
        -                        "additionalProperties": false,
        -                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        -                        "properties": {
        -                          "amount_local": {
        -                            "type": "number"
        -                          },
        -                          "applies_to": {
        -                            "const": "solo_first_month",
        -                            "default": "solo_first_month",
        -                            "type": "string"
        -                          },
        -                          "currency": {
        -                            "type": "string"
        -                          },
        -                          "redeemable_until": {
        -                            "type": "string"
        -                          }
        -                        },
        -                        "required": [
        -                          "amount_local",
        -                          "currency",
        -                          "redeemable_until"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "pricing_url": {
        -                    "default": "https://civilquants.com/pricing",
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "available_tiers"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tos_url": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "upgrade_hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "warranty_disclaimer": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          }
        -        },
        -        "required": [
        -          "request_id",
        -          "issued_at",
        -          "tier"
        -        ],
        -        "type": "object"
        -      },
        -      "data": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Schema § 1.1 — the typed payload returned inside `MCPResponse[ComputeResult]`.\n\nFree-tier responses omit `drawings` (the downloadable CAD artefact\npointers — the paid differentiator); the bridge enforces this. The\n`audit_trail` and the inline `drawing` preview are present on BOTH tiers\n(V1 ALIGN / 60th-fire D + C). `text_summary` is bounded to 2000 chars —\nkeeps the LLM-facing summary token-cheap and forces longer narrative into\nBoQ row descriptions where it belongs. `warnings` is the non-fatal\ngeometry advisory list (both tiers).",
        -            "properties": {
        -              "assembly_slug": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "audit_trail": {
        -                "anyOf": [
        -                  {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.7 — paid-tier audit-trail entry.\n\nOne entry per BoQ row; `boq_row_index` ties to the row position in\n`ComputeResult.boq_rows`. `derivation` is the human-readable formula\nwalk-through; `formula` is the optional formal expression.",
        -                      "properties": {
        -                        "boq_row_index": {
        -                          "minimum": 0,
        -                          "type": "integer"
        -                        },
        -                        "derivation": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "formula": {
        -                          "anyOf": [
        -                            {
        -                              "type": "string"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ],
        -                          "default": null
        -                        },
        -                        "id": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "parameters_referenced": {
        -                          "items": {
        -                            "type": "string"
        -                          },
        -                          "type": "array"
        -                        }
        -                      },
        -                      "required": [
        -                        "id",
        -                        "boq_row_index",
        -                        "derivation"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "boq_rows": {
        -                "items": {
        -                  "additionalProperties": false,
        -                  "description": "Schema § 1.3 — a single bill row in the requested standard's format.\n\n`description` is the non-verbatim functional description per spec § 13.9 /\n§ 15 invariant — NEVER reproduces a standard's verbatim clause text.\n`rate` / `amount` ship null because rates are commodity data the customer\nowns; the engine's job is the measurement, not the pricing.",
        -                  "properties": {
        -                    "amount": {
        -                      "anyOf": [
        -                        {
        -                          "type": "number"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "attribution": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "audit_id": {
        -                      "anyOf": [
        -                        {
        -                          "type": "string"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "description": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "quantity": {
        -                      "minimum": 0,
        -                      "type": "number"
        -                    },
        -                    "rate": {
        -                      "anyOf": [
        -                        {
        -                          "type": "number"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "unit": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "work_section": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    }
        -                  },
        -                  "required": [
        -                    "work_section",
        -                    "description",
        -                    "quantity",
        -                    "unit",
        -                    "attribution"
        -                  ],
        -                  "type": "object"
        -                },
        -                "type": "array"
        -              },
        -              "drawing": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": false,
        -                    "description": "Schema § 1.6a — inline server-rendered SVG preview of the geometry.\n\nThe MCP mirror of the web ``/compute`` response's ``drawing`` field\n(``api.schemas.compute.DrawingRef``): the same on-screen dimensioned\ndrawing both tiers see in the workspace, surfaced on the MCP compute\nresponse so a chat client can render it inline (60th-fire item C). This\nis the on-screen preview — present on BOTH tiers per the free/paid\nboundary; the downloadable CAD artefacts (DXF / dimensioned PDF) remain\nthe paid differentiator via the export tools.\n\nDefined here rather than importing ``DrawingRef`` because the web\n``schemas`` package imports back into this module (``schemas.render``),\nso reusing it would create an import cycle — the MCP wire contract keeps\nits own copy, the same pattern as ``BoQRow`` / ``DrawingReference``.",
        -                    "properties": {
        -                      "entity_count": {
        -                        "minimum": 0,
        -                        "type": "integer"
        -                      },
        -                      "svg_b64": {
        -                        "minLength": 1,
        -                        "type": "string"
        -                      },
        -                      "unit_of_drawing": {
        -                        "const": "m",
        -                        "default": "m",
        -                        "type": "string"
        -                      },
        -                      "viewbox_height": {
        -                        "exclusiveMinimum": 0,
        -                        "type": "number"
        -                      },
        -                      "viewbox_width": {
        -                        "exclusiveMinimum": 0,
        -                        "type": "number"
        -                      },
        -                      "viewbox_x": {
        -                        "type": "number"
        -                      },
        -                      "viewbox_y": {
        -                        "type": "number"
        -                      }
        -                    },
        -                    "required": [
        -                      "svg_b64",
        -                      "viewbox_x",
        -                      "viewbox_y",
        -                      "viewbox_width",
        -                      "viewbox_height",
        -                      "entity_count"
        -                    ],
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "drawings": {
        -                "anyOf": [
        -                  {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.6 — paid-tier drawing artefact pointer.\n\n`url` is an R2-signed URL; expiry is carried in `_meta.deliverables.expires_at`\non the envelope (not duplicated here). `layers` is DXF-only; PDF/SVG\ncallers omit it.",
        -                      "properties": {
        -                        "drawing_type": {
        -                          "enum": [
        -                            "section",
        -                            "plan",
        -                            "elevation",
        -                            "isometric",
        -                            "detail"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "format": {
        -                          "enum": [
        -                            "DXF",
        -                            "PDF",
        -                            "SVG"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "layers": {
        -                          "anyOf": [
        -                            {
        -                              "items": {
        -                                "type": "string"
        -                              },
        -                              "type": "array"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ],
        -                          "default": null
        -                        },
        -                        "scale": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "sheet_size": {
        -                          "enum": [
        -                            "A1",
        -                            "A2",
        -                            "A3",
        -                            "A4"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "url": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "drawing_type",
        -                        "format",
        -                        "url",
        -                        "sheet_size",
        -                        "scale"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "parameters_used": {
        -                "additionalProperties": false,
        -                "description": "Schema § 1.2 — the parameter snapshot the engine actually used.\n\nSplits user-supplied values from engine defaults so customers can see\nwhich numbers came from them and which the engine filled in. Every\ndefaulted parameter SHOULD have a corresponding entry in `assumptions`\n— the bridge layer enforces this when wrapping engine output.",
        -                "properties": {
        -                  "assumptions": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "engine_defaults": {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  "user_supplied": {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  }
        -                },
        -                "type": "object"
        -              },
        -              "standard": {
        -                "enum": [
        -                  "CESMM4",
        -                  "NRM2",
        -                  "SMM7",
        -                  "MMHW"
        -                ],
        -                "type": "string"
        -              },
        -              "text_summary": {
        -                "maxLength": 2000,
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "totals_summary": {
        -                "additionalProperties": false,
        -                "description": "Schema § 1.4 — totals_summary as a typed wrapper around the free-form dict.\n\nWire shape is a flat object (`{\"concrete_m3\": {...}, \"rebar_t\": {...}}`).\nWe model it as `RootModel`-equivalent via `model_config(extra=\"allow\")`\n+ a single `__root__`-style `entries` dict. Pydantic v2 recommends\n`RootModel` for free-form roots; using a wrapper class keeps the import\nsurface uniform with the rest of this module.",
        -                "properties": {
        -                  "entries": {
        -                    "additionalProperties": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.4 — single material/work-class total entry.",
        -                      "properties": {
        -                        "quantity": {
        -                          "minimum": 0,
        -                          "type": "number"
        -                        },
        -                        "unit": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "quantity",
        -                        "unit"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "object"
        -                  }
        -                },
        -                "type": "object"
        -              },
        -              "warnings": {
        -                "items": {
        -                  "additionalProperties": false,
        -                  "description": "Schema § 1.8 — a non-fatal geometry advisory (56th-fire T2).\n\nThe wire projection of the engine's `core.GeometryWarning`. Advisory only:\na warning NEVER changes a measured quantity — it flags geometry that is\nvalid but likely a mistake (e.g. a stale dependent-height default). Present\non BOTH tiers — a correctness/safety signal, not a paid feature.",
        -                  "properties": {
        -                    "affected_params": {
        -                      "items": {
        -                        "type": "string"
        -                      },
        -                      "type": "array"
        -                    },
        -                    "code": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "detail": {
        -                      "additionalProperties": {
        -                        "type": "number"
        -                      },
        -                      "type": "object"
        -                    },
        -                    "message": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "severity": {
        -                      "enum": [
        -                        "info",
        -                        "advisory",
        -                        "caution"
        -                      ],
        -                      "type": "string"
        -                    }
        -                  },
        -                  "required": [
        -                    "code",
        -                    "severity",
        -                    "message"
        -                  ],
        -                  "type": "object"
        -                },
        -                "type": "array"
        -              }
        -            },
        -            "required": [
        -              "assembly_slug",
        -              "standard",
        -              "parameters_used",
        -              "boq_rows",
        -              "totals_summary",
        -              "text_summary"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      },
        -      "error": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        -            "properties": {
        -              "code": {
        -                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        -                "enum": [
        -                  "RATE_LIMIT_EXCEEDED",
        -                  "TIER_INSUFFICIENT",
        -                  "INVALID_INPUT",
        -                  "SCHEMA_VERSION_MISMATCH",
        -                  "SCHEMA_INVARIANT_VIOLATION",
        -                  "UPSTREAM_TIMEOUT",
        -                  "BACKEND_FAILURE",
        -                  "IP_BLOCKED",
        -                  "RESOURCE_NOT_FOUND",
        -                  "RENDER_FAILURE",
        -                  "OCR_LOW_CONFIDENCE",
        -                  "MANUAL_REVIEW_REQUIRED",
        -                  "ACCEPTANCE_REQUIRED",
        -                  "INVALID_TOKEN"
        -                ],
        -                "type": "string"
        -              },
        -              "details": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "message": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "recoverable": {
        -                "type": "boolean"
        -              },
        -              "retry_after_seconds": {
        -                "anyOf": [
        -                  {
        -                    "minimum": 0,
        -                    "type": "integer"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              }
        -            },
        -            "required": [
        -              "code",
        -              "message",
        -              "recoverable"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      }
        -    },
        -    "required": [
        -      "_meta"
        -    ],
        -    "type": "object"
        -  },
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "_meta": {
        -        "additionalProperties": false,
        -        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        -        "properties": {
        -          "deliverables": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        -                "properties": {
        -                  "docx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "dxf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "expires_at": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  },
        -                  "pdf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "xlsx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "expires_at"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "document_id": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "issued_at": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "rate_limit_remaining": {
        -            "anyOf": [
        -              {
        -                "minimum": 0,
        -                "type": "integer"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "request_id": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "schema_version": {
        -            "const": "1.0.0",
        -            "default": "1.0.0",
        -            "type": "string"
        -          },
        -          "scope_boundary": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        -                "properties": {
        -                  "not_in_scope": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "produced": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "recommended_companions": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "type": "string"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "produced",
        -                  "not_in_scope"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tier": {
        -            "enum": [
        -              "free",
        -              "paid"
        -            ],
        -            "type": "string"
        -          },
        -          "tier_upgrade": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        -                "properties": {
        -                  "available_tiers": {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        -                      "properties": {
        -                        "billing": {
        -                          "enum": [
        -                            "one_off",
        -                            "monthly",
        -                            "annual"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "currency": {
        -                          "enum": [
        -                            "GBP",
        -                            "SGD",
        -                            "EUR",
        -                            "USD",
        -                            "CAD",
        -                            "AUD",
        -                            "NZD",
        -                            "MYR"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "display_name": {
        -                          "type": "string"
        -                        },
        -                        "price_local": {
        -                          "type": "number"
        -                        },
        -                        "tier_slug": {
        -                          "enum": [
        -                            "7_day_pass",
        -                            "solo",
        -                            "studio",
        -                            "practice"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "unlock_summary": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "tier_slug",
        -                        "display_name",
        -                        "price_local",
        -                        "currency",
        -                        "billing",
        -                        "unlock_summary"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "current_tier": {
        -                    "const": "free",
        -                    "default": "free",
        -                    "type": "string"
        -                  },
        -                  "pass_credit": {
        -                    "anyOf": [
        -                      {
        -                        "additionalProperties": false,
        -                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        -                        "properties": {
        -                          "amount_local": {
        -                            "type": "number"
        -                          },
        -                          "applies_to": {
        -                            "const": "solo_first_month",
        -                            "default": "solo_first_month",
        -                            "type": "string"
        -                          },
        -                          "currency": {
        -                            "type": "string"
        -                          },
        -                          "redeemable_until": {
        -                            "type": "string"
        -                          }
        -                        },
        -                        "required": [
        -                          "amount_local",
        -                          "currency",
        -                          "redeemable_until"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "pricing_url": {
        -                    "default": "https://civilquants.com/pricing",
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "available_tiers"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tos_url": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "upgrade_hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "warranty_disclaimer": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          }
        -        },
        -        "required": [
        -          "request_id",
        -          "issued_at",
        -          "tier"
        -        ],
        -        "type": "object"
        -      },
        -      "data": {
        -        "default": null,
        -        "title": "Data"
        -      },
        -      "error": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        -            "properties": {
        -              "code": {
        -                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        -                "enum": [
        -                  "RATE_LIMIT_EXCEEDED",
        -                  "TIER_INSUFFICIENT",
        -                  "INVALID_INPUT",
        -                  "SCHEMA_VERSION_MISMATCH",
        -                  "SCHEMA_INVARIANT_VIOLATION",
        -                  "UPSTREAM_TIMEOUT",
        -                  "BACKEND_FAILURE",
        -                  "IP_BLOCKED",
        -                  "RESOURCE_NOT_FOUND",
        -                  "RENDER_FAILURE",
        -                  "OCR_LOW_CONFIDENCE",
        -                  "MANUAL_REVIEW_REQUIRED",
        -                  "ACCEPTANCE_REQUIRED",
        -                  "INVALID_TOKEN"
        -                ],
        -                "type": "string"
        -              },
        -              "details": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "message": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "recoverable": {
        -                "type": "boolean"
        -              },
        -              "retry_after_seconds": {
        -                "anyOf": [
        -                  {
        -                    "minimum": 0,
        -                    "type": "integer"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              }
        -            },
        -            "required": [
        -              "code",
        -              "message",
        -              "recoverable"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      }
        -    },
        -    "required": [
        -      "_meta"
        -    ],
        -    "type": "object"
        -  }
        -]New value: +[
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "_meta": {
        +        "additionalProperties": false,
        +        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        +        "properties": {
        +          "deliverables": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        +                "properties": {
        +                  "docx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "dxf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "expires_at": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  },
        +                  "pdf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "xlsx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "expires_at"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "document_id": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "issued_at": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "output_mode": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Surfaces what a trimmed ``output_mode`` withheld from ``data``.\n\nA trimmed mode (``summary`` / ``boq`` / ``boq_with_backup``) withholds\nalready-computed fields to keep the chat payload small. The withheld value\nreads to a client agent as \"capability missing\" (the box-culvert \"geometry\nbuilder isn't firing\" scare) rather than \"pared for size\": ``drawing`` and\n``audit_trail`` appear as ``null``, ``boq_rows`` as an empty list ``[]``\n(its type forbids ``null``) — both indistinguishable from a genuine absent\nresult. This names the withheld fields and the exact mode that brings each\nback, so the value is unambiguous. Absent on the default ``full_json`` mode\n— nothing is withheld, nothing to point at.",
        +                "properties": {
        +                  "mode": {
        +                    "enum": [
        +                      "summary",
        +                      "boq",
        +                      "boq_with_backup"
        +                    ],
        +                    "type": "string"
        +                  },
        +                  "omitted_fields": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "minItems": 1,
        +                    "type": "array"
        +                  },
        +                  "retrieve_with": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "mode",
        +                  "omitted_fields",
        +                  "retrieve_with"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "rate_limit_remaining": {
        +            "anyOf": [
        +              {
        +                "minimum": 0,
        +                "type": "integer"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "request_id": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "schema_version": {
        +            "const": "1.0.0",
        +            "default": "1.0.0",
        +            "type": "string"
        +          },
        +          "scope_boundary": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        +                "properties": {
        +                  "not_in_scope": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "produced": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "recommended_companions": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "type": "string"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "produced",
        +                  "not_in_scope"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tier": {
        +            "enum": [
        +              "free",
        +              "paid"
        +            ],
        +            "type": "string"
        +          },
        +          "tier_upgrade": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        +                "properties": {
        +                  "available_tiers": {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        +                      "properties": {
        +                        "billing": {
        +                          "enum": [
        +                            "one_off",
        +                            "monthly",
        +                            "annual"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "currency": {
        +                          "enum": [
        +                            "GBP",
        +                            "SGD",
        +                            "EUR",
        +                            "USD",
        +                            "CAD",
        +                            "AUD",
        +                            "NZD",
        +                            "MYR"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "display_name": {
        +                          "type": "string"
        +                        },
        +                        "price_local": {
        +                          "type": "number"
        +                        },
        +                        "tier_slug": {
        +                          "enum": [
        +                            "7_day_pass",
        +                            "solo",
        +                            "studio",
        +                            "practice"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "unlock_summary": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "tier_slug",
        +                        "display_name",
        +                        "price_local",
        +                        "currency",
        +                        "billing",
        +                        "unlock_summary"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "current_tier": {
        +                    "const": "free",
        +                    "default": "free",
        +                    "type": "string"
        +                  },
        +                  "pass_credit": {
        +                    "anyOf": [
        +                      {
        +                        "additionalProperties": false,
        +                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        +                        "properties": {
        +                          "amount_local": {
        +                            "type": "number"
        +                          },
        +                          "applies_to": {
        +                            "const": "solo_first_month",
        +                            "default": "solo_first_month",
        +                            "type": "string"
        +                          },
        +                          "currency": {
        +                            "type": "string"
        +                          },
        +                          "redeemable_until": {
        +                            "type": "string"
        +                          }
        +                        },
        +                        "required": [
        +                          "amount_local",
        +                          "currency",
        +                          "redeemable_until"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "pricing_url": {
        +                    "default": "https://civilquants.com/pricing",
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "available_tiers"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tos_url": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "upgrade_hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "warranty_disclaimer": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          }
        +        },
        +        "required": [
        +          "request_id",
        +          "issued_at",
        +          "tier"
        +        ],
        +        "type": "object"
        +      },
        +      "data": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Schema § 1.1 — the typed payload returned inside `MCPResponse[ComputeResult]`.\n\nFree-tier responses omit `drawings` (the downloadable CAD artefact\npointers — the paid differentiator); the bridge enforces this. The\n`audit_trail` and the inline `drawing` preview are present on BOTH tiers\n(V1 ALIGN / 60th-fire D + C). `text_summary` is bounded to 2000 chars —\nkeeps the LLM-facing summary token-cheap and forces longer narrative into\nBoQ row descriptions where it belongs. `warnings` is the non-fatal\ngeometry advisory list (both tiers).",
        +            "properties": {
        +              "assembly_slug": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "audit_trail": {
        +                "anyOf": [
        +                  {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.7 — paid-tier audit-trail entry.\n\nOne entry per BoQ row; `boq_row_index` ties to the row position in\n`ComputeResult.boq_rows`. `derivation` is the human-readable formula\nwalk-through; `formula` is the optional formal expression.",
        +                      "properties": {
        +                        "boq_row_index": {
        +                          "minimum": 0,
        +                          "type": "integer"
        +                        },
        +                        "derivation": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "formula": {
        +                          "anyOf": [
        +                            {
        +                              "type": "string"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ],
        +                          "default": null
        +                        },
        +                        "id": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "parameters_referenced": {
        +                          "items": {
        +                            "type": "string"
        +                          },
        +                          "type": "array"
        +                        }
        +                      },
        +                      "required": [
        +                        "id",
        +                        "boq_row_index",
        +                        "derivation"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "boq_rows": {
        +                "items": {
        +                  "additionalProperties": false,
        +                  "description": "Schema § 1.3 — a single bill row in the requested standard's format.\n\n`description` is the non-verbatim functional description per spec § 13.9 /\n§ 15 invariant — NEVER reproduces a standard's verbatim clause text.\n`rate` / `amount` ship null because rates are commodity data the customer\nowns; the engine's job is the measurement, not the pricing.",
        +                  "properties": {
        +                    "amount": {
        +                      "anyOf": [
        +                        {
        +                          "type": "number"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "attribution": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "audit_id": {
        +                      "anyOf": [
        +                        {
        +                          "type": "string"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "description": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "quantity": {
        +                      "minimum": 0,
        +                      "type": "number"
        +                    },
        +                    "rate": {
        +                      "anyOf": [
        +                        {
        +                          "type": "number"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "unit": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "work_section": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    }
        +                  },
        +                  "required": [
        +                    "work_section",
        +                    "description",
        +                    "quantity",
        +                    "unit",
        +                    "attribution"
        +                  ],
        +                  "type": "object"
        +                },
        +                "type": "array"
        +              },
        +              "drawing": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": false,
        +                    "description": "Schema § 1.6a — inline server-rendered SVG preview of the geometry.\n\nThe MCP mirror of the web ``/compute`` response's ``drawing`` field\n(``api.schemas.compute.DrawingRef``): the same on-screen dimensioned\ndrawing both tiers see in the workspace, surfaced on the MCP compute\nresponse so a chat client can render it inline (60th-fire item C). This\nis the on-screen preview — present on BOTH tiers per the free/paid\nboundary; the downloadable CAD artefacts (DXF / dimensioned PDF) remain\nthe paid differentiator via the export tools.\n\nDefined here rather than importing ``DrawingRef`` because the web\n``schemas`` package imports back into this module (``schemas.render``),\nso reusing it would create an import cycle — the MCP wire contract keeps\nits own copy, the same pattern as ``BoQRow`` / ``DrawingReference``.",
        +                    "properties": {
        +                      "entity_count": {
        +                        "minimum": 0,
        +                        "type": "integer"
        +                      },
        +                      "svg_b64": {
        +                        "minLength": 1,
        +                        "type": "string"
        +                      },
        +                      "unit_of_drawing": {
        +                        "const": "m",
        +                        "default": "m",
        +                        "type": "string"
        +                      },
        +                      "viewbox_height": {
        +                        "exclusiveMinimum": 0,
        +                        "type": "number"
        +                      },
        +                      "viewbox_width": {
        +                        "exclusiveMinimum": 0,
        +                        "type": "number"
        +                      },
        +                      "viewbox_x": {
        +                        "type": "number"
        +                      },
        +                      "viewbox_y": {
        +                        "type": "number"
        +                      }
        +                    },
        +                    "required": [
        +                      "svg_b64",
        +                      "viewbox_x",
        +                      "viewbox_y",
        +                      "viewbox_width",
        +                      "viewbox_height",
        +                      "entity_count"
        +                    ],
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "drawings": {
        +                "anyOf": [
        +                  {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.6 — paid-tier drawing artefact pointer.\n\n`url` is an R2-signed URL; expiry is carried in `_meta.deliverables.expires_at`\non the envelope (not duplicated here). `layers` is DXF-only; PDF/SVG\ncallers omit it.",
        +                      "properties": {
        +                        "drawing_type": {
        +                          "enum": [
        +                            "section",
        +                            "plan",
        +                            "elevation",
        +                            "isometric",
        +                            "detail"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "format": {
        +                          "enum": [
        +                            "DXF",
        +                            "PDF",
        +                            "SVG"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "layers": {
        +                          "anyOf": [
        +                            {
        +                              "items": {
        +                                "type": "string"
        +                              },
        +                              "type": "array"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ],
        +                          "default": null
        +                        },
        +                        "scale": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "sheet_size": {
        +                          "enum": [
        +                            "A1",
        +                            "A2",
        +                            "A3",
        +                            "A4"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "url": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "drawing_type",
        +                        "format",
        +                        "url",
        +                        "sheet_size",
        +                        "scale"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "parameters_used": {
        +                "additionalProperties": false,
        +                "description": "Schema § 1.2 — the parameter snapshot the engine actually used.\n\nSplits user-supplied values from engine defaults so customers can see\nwhich numbers came from them and which the engine filled in. Every\ndefaulted parameter SHOULD have a corresponding entry in `assumptions`\n— the bridge layer enforces this when wrapping engine output.",
        +                "properties": {
        +                  "assumptions": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "engine_defaults": {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  "user_supplied": {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  }
        +                },
        +                "type": "object"
        +              },
        +              "standard": {
        +                "enum": [
        +                  "CESMM4",
        +                  "NRM2",
        +                  "SMM7",
        +                  "MMHW"
        +                ],
        +                "type": "string"
        +              },
        +              "text_summary": {
        +                "maxLength": 2000,
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "totals_summary": {
        +                "additionalProperties": false,
        +                "description": "Schema § 1.4 — totals_summary as a typed wrapper around the free-form dict.\n\nWire shape is a flat object (`{\"concrete_m3\": {...}, \"rebar_t\": {...}}`).\nWe model it as `RootModel`-equivalent via `model_config(extra=\"allow\")`\n+ a single `__root__`-style `entries` dict. Pydantic v2 recommends\n`RootModel` for free-form roots; using a wrapper class keeps the import\nsurface uniform with the rest of this module.",
        +                "properties": {
        +                  "entries": {
        +                    "additionalProperties": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.4 — single material/work-class total entry.",
        +                      "properties": {
        +                        "quantity": {
        +                          "minimum": 0,
        +                          "type": "number"
        +                        },
        +                        "unit": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "quantity",
        +                        "unit"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "object"
        +                  }
        +                },
        +                "type": "object"
        +              },
        +              "warnings": {
        +                "items": {
        +                  "additionalProperties": false,
        +                  "description": "Schema § 1.8 — a non-fatal geometry advisory (56th-fire T2).\n\nThe wire projection of the engine's `core.GeometryWarning`. Advisory only:\na warning NEVER changes a measured quantity — it flags geometry that is\nvalid but likely a mistake (e.g. a stale dependent-height default). Present\non BOTH tiers — a correctness/safety signal, not a paid feature.",
        +                  "properties": {
        +                    "affected_params": {
        +                      "items": {
        +                        "type": "string"
        +                      },
        +                      "type": "array"
        +                    },
        +                    "code": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "detail": {
        +                      "additionalProperties": {
        +                        "type": "number"
        +                      },
        +                      "type": "object"
        +                    },
        +                    "message": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "severity": {
        +                      "enum": [
        +                        "info",
        +                        "advisory",
        +                        "caution"
        +                      ],
        +                      "type": "string"
        +                    }
        +                  },
        +                  "required": [
        +                    "code",
        +                    "severity",
        +                    "message"
        +                  ],
        +                  "type": "object"
        +                },
        +                "type": "array"
        +              }
        +            },
        +            "required": [
        +              "assembly_slug",
        +              "standard",
        +              "parameters_used",
        +              "boq_rows",
        +              "totals_summary",
        +              "text_summary"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      },
        +      "error": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        +            "properties": {
        +              "code": {
        +                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        +                "enum": [
        +                  "RATE_LIMIT_EXCEEDED",
        +                  "TIER_INSUFFICIENT",
        +                  "INVALID_INPUT",
        +                  "SCHEMA_VERSION_MISMATCH",
        +                  "SCHEMA_INVARIANT_VIOLATION",
        +                  "UPSTREAM_TIMEOUT",
        +                  "BACKEND_FAILURE",
        +                  "IP_BLOCKED",
        +                  "RESOURCE_NOT_FOUND",
        +                  "RENDER_FAILURE",
        +                  "OCR_LOW_CONFIDENCE",
        +                  "MANUAL_REVIEW_REQUIRED",
        +                  "ACCEPTANCE_REQUIRED",
        +                  "INVALID_TOKEN"
        +                ],
        +                "type": "string"
        +              },
        +              "details": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "message": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "recoverable": {
        +                "type": "boolean"
        +              },
        +              "retry_after_seconds": {
        +                "anyOf": [
        +                  {
        +                    "minimum": 0,
        +                    "type": "integer"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              }
        +            },
        +            "required": [
        +              "code",
        +              "message",
        +              "recoverable"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      }
        +    },
        +    "required": [
        +      "_meta"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "_meta": {
        +        "additionalProperties": false,
        +        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        +        "properties": {
        +          "deliverables": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        +                "properties": {
        +                  "docx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "dxf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "expires_at": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  },
        +                  "pdf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "xlsx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "expires_at"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "document_id": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "issued_at": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "output_mode": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Surfaces what a trimmed ``output_mode`` withheld from ``data``.\n\nA trimmed mode (``summary`` / ``boq`` / ``boq_with_backup``) withholds\nalready-computed fields to keep the chat payload small. The withheld value\nreads to a client agent as \"capability missing\" (the box-culvert \"geometry\nbuilder isn't firing\" scare) rather than \"pared for size\": ``drawing`` and\n``audit_trail`` appear as ``null``, ``boq_rows`` as an empty list ``[]``\n(its type forbids ``null``) — both indistinguishable from a genuine absent\nresult. This names the withheld fields and the exact mode that brings each\nback, so the value is unambiguous. Absent on the default ``full_json`` mode\n— nothing is withheld, nothing to point at.",
        +                "properties": {
        +                  "mode": {
        +                    "enum": [
        +                      "summary",
        +                      "boq",
        +                      "boq_with_backup"
        +                    ],
        +                    "type": "string"
        +                  },
        +                  "omitted_fields": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "minItems": 1,
        +                    "type": "array"
        +                  },
        +                  "retrieve_with": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "mode",
        +                  "omitted_fields",
        +                  "retrieve_with"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "rate_limit_remaining": {
        +            "anyOf": [
        +              {
        +                "minimum": 0,
        +                "type": "integer"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "request_id": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "schema_version": {
        +            "const": "1.0.0",
        +            "default": "1.0.0",
        +            "type": "string"
        +          },
        +          "scope_boundary": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        +                "properties": {
        +                  "not_in_scope": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "produced": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "recommended_companions": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "type": "string"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "produced",
        +                  "not_in_scope"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tier": {
        +            "enum": [
        +              "free",
        +              "paid"
        +            ],
        +            "type": "string"
        +          },
        +          "tier_upgrade": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        +                "properties": {
        +                  "available_tiers": {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        +                      "properties": {
        +                        "billing": {
        +                          "enum": [
        +                            "one_off",
        +                            "monthly",
        +                            "annual"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "currency": {
        +                          "enum": [
        +                            "GBP",
        +                            "SGD",
        +                            "EUR",
        +                            "USD",
        +                            "CAD",
        +                            "AUD",
        +                            "NZD",
        +                            "MYR"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "display_name": {
        +                          "type": "string"
        +                        },
        +                        "price_local": {
        +                          "type": "number"
        +                        },
        +                        "tier_slug": {
        +                          "enum": [
        +                            "7_day_pass",
        +                            "solo",
        +                            "studio",
        +                            "practice"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "unlock_summary": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "tier_slug",
        +                        "display_name",
        +                        "price_local",
        +                        "currency",
        +                        "billing",
        +                        "unlock_summary"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "current_tier": {
        +                    "const": "free",
        +                    "default": "free",
        +                    "type": "string"
        +                  },
        +                  "pass_credit": {
        +                    "anyOf": [
        +                      {
        +                        "additionalProperties": false,
        +                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        +                        "properties": {
        +                          "amount_local": {
        +                            "type": "number"
        +                          },
        +                          "applies_to": {
        +                            "const": "solo_first_month",
        +                            "default": "solo_first_month",
        +                            "type": "string"
        +                          },
        +                          "currency": {
        +                            "type": "string"
        +                          },
        +                          "redeemable_until": {
        +                            "type": "string"
        +                          }
        +                        },
        +                        "required": [
        +                          "amount_local",
        +                          "currency",
        +                          "redeemable_until"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "pricing_url": {
        +                    "default": "https://civilquants.com/pricing",
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "available_tiers"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tos_url": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "upgrade_hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "warranty_disclaimer": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          }
        +        },
        +        "required": [
        +          "request_id",
        +          "issued_at",
        +          "tier"
        +        ],
        +        "type": "object"
        +      },
        +      "data": {
        +        "default": null,
        +        "title": "Data"
        +      },
        +      "error": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        +            "properties": {
        +              "code": {
        +                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        +                "enum": [
        +                  "RATE_LIMIT_EXCEEDED",
        +                  "TIER_INSUFFICIENT",
        +                  "INVALID_INPUT",
        +                  "SCHEMA_VERSION_MISMATCH",
        +                  "SCHEMA_INVARIANT_VIOLATION",
        +                  "UPSTREAM_TIMEOUT",
        +                  "BACKEND_FAILURE",
        +                  "IP_BLOCKED",
        +                  "RESOURCE_NOT_FOUND",
        +                  "RENDER_FAILURE",
        +                  "OCR_LOW_CONFIDENCE",
        +                  "MANUAL_REVIEW_REQUIRED",
        +                  "ACCEPTANCE_REQUIRED",
        +                  "INVALID_TOKEN"
        +                ],
        +                "type": "string"
        +              },
        +              "details": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "message": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "recoverable": {
        +                "type": "boolean"
        +              },
        +              "retry_after_seconds": {
        +                "anyOf": [
        +                  {
        +                    "minimum": 0,
        +                    "type": "integer"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              }
        +            },
        +            "required": [
        +              "code",
        +              "message",
        +              "recoverable"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      }
        +    },
        +    "required": [
        +      "_meta"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedcompute_headwall_precast1 field changed
      • changedOutput schema / properties / result / anyOf
        Previous value: -[
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "_meta": {
        -        "additionalProperties": false,
        -        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        -        "properties": {
        -          "deliverables": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        -                "properties": {
        -                  "docx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "dxf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "expires_at": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  },
        -                  "pdf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "xlsx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "expires_at"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "document_id": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "issued_at": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "rate_limit_remaining": {
        -            "anyOf": [
        -              {
        -                "minimum": 0,
        -                "type": "integer"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "request_id": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "schema_version": {
        -            "const": "1.0.0",
        -            "default": "1.0.0",
        -            "type": "string"
        -          },
        -          "scope_boundary": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        -                "properties": {
        -                  "not_in_scope": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "produced": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "recommended_companions": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "type": "string"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "produced",
        -                  "not_in_scope"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tier": {
        -            "enum": [
        -              "free",
        -              "paid"
        -            ],
        -            "type": "string"
        -          },
        -          "tier_upgrade": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        -                "properties": {
        -                  "available_tiers": {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        -                      "properties": {
        -                        "billing": {
        -                          "enum": [
        -                            "one_off",
        -                            "monthly",
        -                            "annual"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "currency": {
        -                          "enum": [
        -                            "GBP",
        -                            "SGD",
        -                            "EUR",
        -                            "USD",
        -                            "CAD",
        -                            "AUD",
        -                            "NZD",
        -                            "MYR"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "display_name": {
        -                          "type": "string"
        -                        },
        -                        "price_local": {
        -                          "type": "number"
        -                        },
        -                        "tier_slug": {
        -                          "enum": [
        -                            "7_day_pass",
        -                            "solo",
        -                            "studio",
        -                            "practice"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "unlock_summary": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "tier_slug",
        -                        "display_name",
        -                        "price_local",
        -                        "currency",
        -                        "billing",
        -                        "unlock_summary"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "current_tier": {
        -                    "const": "free",
        -                    "default": "free",
        -                    "type": "string"
        -                  },
        -                  "pass_credit": {
        -                    "anyOf": [
        -                      {
        -                        "additionalProperties": false,
        -                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        -                        "properties": {
        -                          "amount_local": {
        -                            "type": "number"
        -                          },
        -                          "applies_to": {
        -                            "const": "solo_first_month",
        -                            "default": "solo_first_month",
        -                            "type": "string"
        -                          },
        -                          "currency": {
        -                            "type": "string"
        -                          },
        -                          "redeemable_until": {
        -                            "type": "string"
        -                          }
        -                        },
        -                        "required": [
        -                          "amount_local",
        -                          "currency",
        -                          "redeemable_until"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "pricing_url": {
        -                    "default": "https://civilquants.com/pricing",
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "available_tiers"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tos_url": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "upgrade_hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "warranty_disclaimer": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          }
        -        },
        -        "required": [
        -          "request_id",
        -          "issued_at",
        -          "tier"
        -        ],
        -        "type": "object"
        -      },
        -      "data": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Schema § 1.1 — the typed payload returned inside `MCPResponse[ComputeResult]`.\n\nFree-tier responses omit `drawings` (the downloadable CAD artefact\npointers — the paid differentiator); the bridge enforces this. The\n`audit_trail` and the inline `drawing` preview are present on BOTH tiers\n(V1 ALIGN / 60th-fire D + C). `text_summary` is bounded to 2000 chars —\nkeeps the LLM-facing summary token-cheap and forces longer narrative into\nBoQ row descriptions where it belongs. `warnings` is the non-fatal\ngeometry advisory list (both tiers).",
        -            "properties": {
        -              "assembly_slug": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "audit_trail": {
        -                "anyOf": [
        -                  {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.7 — paid-tier audit-trail entry.\n\nOne entry per BoQ row; `boq_row_index` ties to the row position in\n`ComputeResult.boq_rows`. `derivation` is the human-readable formula\nwalk-through; `formula` is the optional formal expression.",
        -                      "properties": {
        -                        "boq_row_index": {
        -                          "minimum": 0,
        -                          "type": "integer"
        -                        },
        -                        "derivation": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "formula": {
        -                          "anyOf": [
        -                            {
        -                              "type": "string"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ],
        -                          "default": null
        -                        },
        -                        "id": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "parameters_referenced": {
        -                          "items": {
        -                            "type": "string"
        -                          },
        -                          "type": "array"
        -                        }
        -                      },
        -                      "required": [
        -                        "id",
        -                        "boq_row_index",
        -                        "derivation"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "boq_rows": {
        -                "items": {
        -                  "additionalProperties": false,
        -                  "description": "Schema § 1.3 — a single bill row in the requested standard's format.\n\n`description` is the non-verbatim functional description per spec § 13.9 /\n§ 15 invariant — NEVER reproduces a standard's verbatim clause text.\n`rate` / `amount` ship null because rates are commodity data the customer\nowns; the engine's job is the measurement, not the pricing.",
        -                  "properties": {
        -                    "amount": {
        -                      "anyOf": [
        -                        {
        -                          "type": "number"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "attribution": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "audit_id": {
        -                      "anyOf": [
        -                        {
        -                          "type": "string"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "description": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "quantity": {
        -                      "minimum": 0,
        -                      "type": "number"
        -                    },
        -                    "rate": {
        -                      "anyOf": [
        -                        {
        -                          "type": "number"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "unit": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "work_section": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    }
        -                  },
        -                  "required": [
        -                    "work_section",
        -                    "description",
        -                    "quantity",
        -                    "unit",
        -                    "attribution"
        -                  ],
        -                  "type": "object"
        -                },
        -                "type": "array"
        -              },
        -              "drawing": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": false,
        -                    "description": "Schema § 1.6a — inline server-rendered SVG preview of the geometry.\n\nThe MCP mirror of the web ``/compute`` response's ``drawing`` field\n(``api.schemas.compute.DrawingRef``): the same on-screen dimensioned\ndrawing both tiers see in the workspace, surfaced on the MCP compute\nresponse so a chat client can render it inline (60th-fire item C). This\nis the on-screen preview — present on BOTH tiers per the free/paid\nboundary; the downloadable CAD artefacts (DXF / dimensioned PDF) remain\nthe paid differentiator via the export tools.\n\nDefined here rather than importing ``DrawingRef`` because the web\n``schemas`` package imports back into this module (``schemas.render``),\nso reusing it would create an import cycle — the MCP wire contract keeps\nits own copy, the same pattern as ``BoQRow`` / ``DrawingReference``.",
        -                    "properties": {
        -                      "entity_count": {
        -                        "minimum": 0,
        -                        "type": "integer"
        -                      },
        -                      "svg_b64": {
        -                        "minLength": 1,
        -                        "type": "string"
        -                      },
        -                      "unit_of_drawing": {
        -                        "const": "m",
        -                        "default": "m",
        -                        "type": "string"
        -                      },
        -                      "viewbox_height": {
        -                        "exclusiveMinimum": 0,
        -                        "type": "number"
        -                      },
        -                      "viewbox_width": {
        -                        "exclusiveMinimum": 0,
        -                        "type": "number"
        -                      },
        -                      "viewbox_x": {
        -                        "type": "number"
        -                      },
        -                      "viewbox_y": {
        -                        "type": "number"
        -                      }
        -                    },
        -                    "required": [
        -                      "svg_b64",
        -                      "viewbox_x",
        -                      "viewbox_y",
        -                      "viewbox_width",
        -                      "viewbox_height",
        -                      "entity_count"
        -                    ],
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "drawings": {
        -                "anyOf": [
        -                  {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.6 — paid-tier drawing artefact pointer.\n\n`url` is an R2-signed URL; expiry is carried in `_meta.deliverables.expires_at`\non the envelope (not duplicated here). `layers` is DXF-only; PDF/SVG\ncallers omit it.",
        -                      "properties": {
        -                        "drawing_type": {
        -                          "enum": [
        -                            "section",
        -                            "plan",
        -                            "elevation",
        -                            "isometric",
        -                            "detail"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "format": {
        -                          "enum": [
        -                            "DXF",
        -                            "PDF",
        -                            "SVG"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "layers": {
        -                          "anyOf": [
        -                            {
        -                              "items": {
        -                                "type": "string"
        -                              },
        -                              "type": "array"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ],
        -                          "default": null
        -                        },
        -                        "scale": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "sheet_size": {
        -                          "enum": [
        -                            "A1",
        -                            "A2",
        -                            "A3",
        -                            "A4"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "url": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "drawing_type",
        -                        "format",
        -                        "url",
        -                        "sheet_size",
        -                        "scale"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "parameters_used": {
        -                "additionalProperties": false,
        -                "description": "Schema § 1.2 — the parameter snapshot the engine actually used.\n\nSplits user-supplied values from engine defaults so customers can see\nwhich numbers came from them and which the engine filled in. Every\ndefaulted parameter SHOULD have a corresponding entry in `assumptions`\n— the bridge layer enforces this when wrapping engine output.",
        -                "properties": {
        -                  "assumptions": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "engine_defaults": {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  "user_supplied": {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  }
        -                },
        -                "type": "object"
        -              },
        -              "standard": {
        -                "enum": [
        -                  "CESMM4",
        -                  "NRM2",
        -                  "SMM7",
        -                  "MMHW"
        -                ],
        -                "type": "string"
        -              },
        -              "text_summary": {
        -                "maxLength": 2000,
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "totals_summary": {
        -                "additionalProperties": false,
        -                "description": "Schema § 1.4 — totals_summary as a typed wrapper around the free-form dict.\n\nWire shape is a flat object (`{\"concrete_m3\": {...}, \"rebar_t\": {...}}`).\nWe model it as `RootModel`-equivalent via `model_config(extra=\"allow\")`\n+ a single `__root__`-style `entries` dict. Pydantic v2 recommends\n`RootModel` for free-form roots; using a wrapper class keeps the import\nsurface uniform with the rest of this module.",
        -                "properties": {
        -                  "entries": {
        -                    "additionalProperties": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.4 — single material/work-class total entry.",
        -                      "properties": {
        -                        "quantity": {
        -                          "minimum": 0,
        -                          "type": "number"
        -                        },
        -                        "unit": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "quantity",
        -                        "unit"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "object"
        -                  }
        -                },
        -                "type": "object"
        -              },
        -              "warnings": {
        -                "items": {
        -                  "additionalProperties": false,
        -                  "description": "Schema § 1.8 — a non-fatal geometry advisory (56th-fire T2).\n\nThe wire projection of the engine's `core.GeometryWarning`. Advisory only:\na warning NEVER changes a measured quantity — it flags geometry that is\nvalid but likely a mistake (e.g. a stale dependent-height default). Present\non BOTH tiers — a correctness/safety signal, not a paid feature.",
        -                  "properties": {
        -                    "affected_params": {
        -                      "items": {
        -                        "type": "string"
        -                      },
        -                      "type": "array"
        -                    },
        -                    "code": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "detail": {
        -                      "additionalProperties": {
        -                        "type": "number"
        -                      },
        -                      "type": "object"
        -                    },
        -                    "message": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "severity": {
        -                      "enum": [
        -                        "info",
        -                        "advisory",
        -                        "caution"
        -                      ],
        -                      "type": "string"
        -                    }
        -                  },
        -                  "required": [
        -                    "code",
        -                    "severity",
        -                    "message"
        -                  ],
        -                  "type": "object"
        -                },
        -                "type": "array"
        -              }
        -            },
        -            "required": [
        -              "assembly_slug",
        -              "standard",
        -              "parameters_used",
        -              "boq_rows",
        -              "totals_summary",
        -              "text_summary"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      },
        -      "error": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        -            "properties": {
        -              "code": {
        -                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        -                "enum": [
        -                  "RATE_LIMIT_EXCEEDED",
        -                  "TIER_INSUFFICIENT",
        -                  "INVALID_INPUT",
        -                  "SCHEMA_VERSION_MISMATCH",
        -                  "SCHEMA_INVARIANT_VIOLATION",
        -                  "UPSTREAM_TIMEOUT",
        -                  "BACKEND_FAILURE",
        -                  "IP_BLOCKED",
        -                  "RESOURCE_NOT_FOUND",
        -                  "RENDER_FAILURE",
        -                  "OCR_LOW_CONFIDENCE",
        -                  "MANUAL_REVIEW_REQUIRED",
        -                  "ACCEPTANCE_REQUIRED",
        -                  "INVALID_TOKEN"
        -                ],
        -                "type": "string"
        -              },
        -              "details": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "message": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "recoverable": {
        -                "type": "boolean"
        -              },
        -              "retry_after_seconds": {
        -                "anyOf": [
        -                  {
        -                    "minimum": 0,
        -                    "type": "integer"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              }
        -            },
        -            "required": [
        -              "code",
        -              "message",
        -              "recoverable"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      }
        -    },
        -    "required": [
        -      "_meta"
        -    ],
        -    "type": "object"
        -  },
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "_meta": {
        -        "additionalProperties": false,
        -        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        -        "properties": {
        -          "deliverables": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        -                "properties": {
        -                  "docx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "dxf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "expires_at": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  },
        -                  "pdf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "xlsx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "expires_at"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "document_id": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "issued_at": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "rate_limit_remaining": {
        -            "anyOf": [
        -              {
        -                "minimum": 0,
        -                "type": "integer"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "request_id": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "schema_version": {
        -            "const": "1.0.0",
        -            "default": "1.0.0",
        -            "type": "string"
        -          },
        -          "scope_boundary": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        -                "properties": {
        -                  "not_in_scope": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "produced": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "recommended_companions": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "type": "string"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "produced",
        -                  "not_in_scope"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tier": {
        -            "enum": [
        -              "free",
        -              "paid"
        -            ],
        -            "type": "string"
        -          },
        -          "tier_upgrade": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        -                "properties": {
        -                  "available_tiers": {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        -                      "properties": {
        -                        "billing": {
        -                          "enum": [
        -                            "one_off",
        -                            "monthly",
        -                            "annual"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "currency": {
        -                          "enum": [
        -                            "GBP",
        -                            "SGD",
        -                            "EUR",
        -                            "USD",
        -                            "CAD",
        -                            "AUD",
        -                            "NZD",
        -                            "MYR"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "display_name": {
        -                          "type": "string"
        -                        },
        -                        "price_local": {
        -                          "type": "number"
        -                        },
        -                        "tier_slug": {
        -                          "enum": [
        -                            "7_day_pass",
        -                            "solo",
        -                            "studio",
        -                            "practice"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "unlock_summary": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "tier_slug",
        -                        "display_name",
        -                        "price_local",
        -                        "currency",
        -                        "billing",
        -                        "unlock_summary"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "current_tier": {
        -                    "const": "free",
        -                    "default": "free",
        -                    "type": "string"
        -                  },
        -                  "pass_credit": {
        -                    "anyOf": [
        -                      {
        -                        "additionalProperties": false,
        -                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        -                        "properties": {
        -                          "amount_local": {
        -                            "type": "number"
        -                          },
        -                          "applies_to": {
        -                            "const": "solo_first_month",
        -                            "default": "solo_first_month",
        -                            "type": "string"
        -                          },
        -                          "currency": {
        -                            "type": "string"
        -                          },
        -                          "redeemable_until": {
        -                            "type": "string"
        -                          }
        -                        },
        -                        "required": [
        -                          "amount_local",
        -                          "currency",
        -                          "redeemable_until"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "pricing_url": {
        -                    "default": "https://civilquants.com/pricing",
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "available_tiers"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tos_url": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "upgrade_hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "warranty_disclaimer": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          }
        -        },
        -        "required": [
        -          "request_id",
        -          "issued_at",
        -          "tier"
        -        ],
        -        "type": "object"
        -      },
        -      "data": {
        -        "default": null,
        -        "title": "Data"
        -      },
        -      "error": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        -            "properties": {
        -              "code": {
        -                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        -                "enum": [
        -                  "RATE_LIMIT_EXCEEDED",
        -                  "TIER_INSUFFICIENT",
        -                  "INVALID_INPUT",
        -                  "SCHEMA_VERSION_MISMATCH",
        -                  "SCHEMA_INVARIANT_VIOLATION",
        -                  "UPSTREAM_TIMEOUT",
        -                  "BACKEND_FAILURE",
        -                  "IP_BLOCKED",
        -                  "RESOURCE_NOT_FOUND",
        -                  "RENDER_FAILURE",
        -                  "OCR_LOW_CONFIDENCE",
        -                  "MANUAL_REVIEW_REQUIRED",
        -                  "ACCEPTANCE_REQUIRED",
        -                  "INVALID_TOKEN"
        -                ],
        -                "type": "string"
        -              },
        -              "details": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "message": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "recoverable": {
        -                "type": "boolean"
        -              },
        -              "retry_after_seconds": {
        -                "anyOf": [
        -                  {
        -                    "minimum": 0,
        -                    "type": "integer"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              }
        -            },
        -            "required": [
        -              "code",
        -              "message",
        -              "recoverable"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      }
        -    },
        -    "required": [
        -      "_meta"
        -    ],
        -    "type": "object"
        -  }
        -]New value: +[
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "_meta": {
        +        "additionalProperties": false,
        +        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        +        "properties": {
        +          "deliverables": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        +                "properties": {
        +                  "docx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "dxf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "expires_at": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  },
        +                  "pdf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "xlsx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "expires_at"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "document_id": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "issued_at": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "output_mode": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Surfaces what a trimmed ``output_mode`` withheld from ``data``.\n\nA trimmed mode (``summary`` / ``boq`` / ``boq_with_backup``) withholds\nalready-computed fields to keep the chat payload small. The withheld value\nreads to a client agent as \"capability missing\" (the box-culvert \"geometry\nbuilder isn't firing\" scare) rather than \"pared for size\": ``drawing`` and\n``audit_trail`` appear as ``null``, ``boq_rows`` as an empty list ``[]``\n(its type forbids ``null``) — both indistinguishable from a genuine absent\nresult. This names the withheld fields and the exact mode that brings each\nback, so the value is unambiguous. Absent on the default ``full_json`` mode\n— nothing is withheld, nothing to point at.",
        +                "properties": {
        +                  "mode": {
        +                    "enum": [
        +                      "summary",
        +                      "boq",
        +                      "boq_with_backup"
        +                    ],
        +                    "type": "string"
        +                  },
        +                  "omitted_fields": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "minItems": 1,
        +                    "type": "array"
        +                  },
        +                  "retrieve_with": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "mode",
        +                  "omitted_fields",
        +                  "retrieve_with"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "rate_limit_remaining": {
        +            "anyOf": [
        +              {
        +                "minimum": 0,
        +                "type": "integer"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "request_id": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "schema_version": {
        +            "const": "1.0.0",
        +            "default": "1.0.0",
        +            "type": "string"
        +          },
        +          "scope_boundary": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        +                "properties": {
        +                  "not_in_scope": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "produced": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "recommended_companions": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "type": "string"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "produced",
        +                  "not_in_scope"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tier": {
        +            "enum": [
        +              "free",
        +              "paid"
        +            ],
        +            "type": "string"
        +          },
        +          "tier_upgrade": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        +                "properties": {
        +                  "available_tiers": {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        +                      "properties": {
        +                        "billing": {
        +                          "enum": [
        +                            "one_off",
        +                            "monthly",
        +                            "annual"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "currency": {
        +                          "enum": [
        +                            "GBP",
        +                            "SGD",
        +                            "EUR",
        +                            "USD",
        +                            "CAD",
        +                            "AUD",
        +                            "NZD",
        +                            "MYR"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "display_name": {
        +                          "type": "string"
        +                        },
        +                        "price_local": {
        +                          "type": "number"
        +                        },
        +                        "tier_slug": {
        +                          "enum": [
        +                            "7_day_pass",
        +                            "solo",
        +                            "studio",
        +                            "practice"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "unlock_summary": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "tier_slug",
        +                        "display_name",
        +                        "price_local",
        +                        "currency",
        +                        "billing",
        +                        "unlock_summary"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "current_tier": {
        +                    "const": "free",
        +                    "default": "free",
        +                    "type": "string"
        +                  },
        +                  "pass_credit": {
        +                    "anyOf": [
        +                      {
        +                        "additionalProperties": false,
        +                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        +                        "properties": {
        +                          "amount_local": {
        +                            "type": "number"
        +                          },
        +                          "applies_to": {
        +                            "const": "solo_first_month",
        +                            "default": "solo_first_month",
        +                            "type": "string"
        +                          },
        +                          "currency": {
        +                            "type": "string"
        +                          },
        +                          "redeemable_until": {
        +                            "type": "string"
        +                          }
        +                        },
        +                        "required": [
        +                          "amount_local",
        +                          "currency",
        +                          "redeemable_until"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "pricing_url": {
        +                    "default": "https://civilquants.com/pricing",
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "available_tiers"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tos_url": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "upgrade_hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "warranty_disclaimer": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          }
        +        },
        +        "required": [
        +          "request_id",
        +          "issued_at",
        +          "tier"
        +        ],
        +        "type": "object"
        +      },
        +      "data": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Schema § 1.1 — the typed payload returned inside `MCPResponse[ComputeResult]`.\n\nFree-tier responses omit `drawings` (the downloadable CAD artefact\npointers — the paid differentiator); the bridge enforces this. The\n`audit_trail` and the inline `drawing` preview are present on BOTH tiers\n(V1 ALIGN / 60th-fire D + C). `text_summary` is bounded to 2000 chars —\nkeeps the LLM-facing summary token-cheap and forces longer narrative into\nBoQ row descriptions where it belongs. `warnings` is the non-fatal\ngeometry advisory list (both tiers).",
        +            "properties": {
        +              "assembly_slug": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "audit_trail": {
        +                "anyOf": [
        +                  {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.7 — paid-tier audit-trail entry.\n\nOne entry per BoQ row; `boq_row_index` ties to the row position in\n`ComputeResult.boq_rows`. `derivation` is the human-readable formula\nwalk-through; `formula` is the optional formal expression.",
        +                      "properties": {
        +                        "boq_row_index": {
        +                          "minimum": 0,
        +                          "type": "integer"
        +                        },
        +                        "derivation": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "formula": {
        +                          "anyOf": [
        +                            {
        +                              "type": "string"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ],
        +                          "default": null
        +                        },
        +                        "id": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "parameters_referenced": {
        +                          "items": {
        +                            "type": "string"
        +                          },
        +                          "type": "array"
        +                        }
        +                      },
        +                      "required": [
        +                        "id",
        +                        "boq_row_index",
        +                        "derivation"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "boq_rows": {
        +                "items": {
        +                  "additionalProperties": false,
        +                  "description": "Schema § 1.3 — a single bill row in the requested standard's format.\n\n`description` is the non-verbatim functional description per spec § 13.9 /\n§ 15 invariant — NEVER reproduces a standard's verbatim clause text.\n`rate` / `amount` ship null because rates are commodity data the customer\nowns; the engine's job is the measurement, not the pricing.",
        +                  "properties": {
        +                    "amount": {
        +                      "anyOf": [
        +                        {
        +                          "type": "number"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "attribution": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "audit_id": {
        +                      "anyOf": [
        +                        {
        +                          "type": "string"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "description": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "quantity": {
        +                      "minimum": 0,
        +                      "type": "number"
        +                    },
        +                    "rate": {
        +                      "anyOf": [
        +                        {
        +                          "type": "number"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "unit": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "work_section": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    }
        +                  },
        +                  "required": [
        +                    "work_section",
        +                    "description",
        +                    "quantity",
        +                    "unit",
        +                    "attribution"
        +                  ],
        +                  "type": "object"
        +                },
        +                "type": "array"
        +              },
        +              "drawing": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": false,
        +                    "description": "Schema § 1.6a — inline server-rendered SVG preview of the geometry.\n\nThe MCP mirror of the web ``/compute`` response's ``drawing`` field\n(``api.schemas.compute.DrawingRef``): the same on-screen dimensioned\ndrawing both tiers see in the workspace, surfaced on the MCP compute\nresponse so a chat client can render it inline (60th-fire item C). This\nis the on-screen preview — present on BOTH tiers per the free/paid\nboundary; the downloadable CAD artefacts (DXF / dimensioned PDF) remain\nthe paid differentiator via the export tools.\n\nDefined here rather than importing ``DrawingRef`` because the web\n``schemas`` package imports back into this module (``schemas.render``),\nso reusing it would create an import cycle — the MCP wire contract keeps\nits own copy, the same pattern as ``BoQRow`` / ``DrawingReference``.",
        +                    "properties": {
        +                      "entity_count": {
        +                        "minimum": 0,
        +                        "type": "integer"
        +                      },
        +                      "svg_b64": {
        +                        "minLength": 1,
        +                        "type": "string"
        +                      },
        +                      "unit_of_drawing": {
        +                        "const": "m",
        +                        "default": "m",
        +                        "type": "string"
        +                      },
        +                      "viewbox_height": {
        +                        "exclusiveMinimum": 0,
        +                        "type": "number"
        +                      },
        +                      "viewbox_width": {
        +                        "exclusiveMinimum": 0,
        +                        "type": "number"
        +                      },
        +                      "viewbox_x": {
        +                        "type": "number"
        +                      },
        +                      "viewbox_y": {
        +                        "type": "number"
        +                      }
        +                    },
        +                    "required": [
        +                      "svg_b64",
        +                      "viewbox_x",
        +                      "viewbox_y",
        +                      "viewbox_width",
        +                      "viewbox_height",
        +                      "entity_count"
        +                    ],
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "drawings": {
        +                "anyOf": [
        +                  {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.6 — paid-tier drawing artefact pointer.\n\n`url` is an R2-signed URL; expiry is carried in `_meta.deliverables.expires_at`\non the envelope (not duplicated here). `layers` is DXF-only; PDF/SVG\ncallers omit it.",
        +                      "properties": {
        +                        "drawing_type": {
        +                          "enum": [
        +                            "section",
        +                            "plan",
        +                            "elevation",
        +                            "isometric",
        +                            "detail"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "format": {
        +                          "enum": [
        +                            "DXF",
        +                            "PDF",
        +                            "SVG"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "layers": {
        +                          "anyOf": [
        +                            {
        +                              "items": {
        +                                "type": "string"
        +                              },
        +                              "type": "array"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ],
        +                          "default": null
        +                        },
        +                        "scale": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "sheet_size": {
        +                          "enum": [
        +                            "A1",
        +                            "A2",
        +                            "A3",
        +                            "A4"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "url": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "drawing_type",
        +                        "format",
        +                        "url",
        +                        "sheet_size",
        +                        "scale"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "parameters_used": {
        +                "additionalProperties": false,
        +                "description": "Schema § 1.2 — the parameter snapshot the engine actually used.\n\nSplits user-supplied values from engine defaults so customers can see\nwhich numbers came from them and which the engine filled in. Every\ndefaulted parameter SHOULD have a corresponding entry in `assumptions`\n— the bridge layer enforces this when wrapping engine output.",
        +                "properties": {
        +                  "assumptions": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "engine_defaults": {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  "user_supplied": {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  }
        +                },
        +                "type": "object"
        +              },
        +              "standard": {
        +                "enum": [
        +                  "CESMM4",
        +                  "NRM2",
        +                  "SMM7",
        +                  "MMHW"
        +                ],
        +                "type": "string"
        +              },
        +              "text_summary": {
        +                "maxLength": 2000,
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "totals_summary": {
        +                "additionalProperties": false,
        +                "description": "Schema § 1.4 — totals_summary as a typed wrapper around the free-form dict.\n\nWire shape is a flat object (`{\"concrete_m3\": {...}, \"rebar_t\": {...}}`).\nWe model it as `RootModel`-equivalent via `model_config(extra=\"allow\")`\n+ a single `__root__`-style `entries` dict. Pydantic v2 recommends\n`RootModel` for free-form roots; using a wrapper class keeps the import\nsurface uniform with the rest of this module.",
        +                "properties": {
        +                  "entries": {
        +                    "additionalProperties": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.4 — single material/work-class total entry.",
        +                      "properties": {
        +                        "quantity": {
        +                          "minimum": 0,
        +                          "type": "number"
        +                        },
        +                        "unit": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "quantity",
        +                        "unit"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "object"
        +                  }
        +                },
        +                "type": "object"
        +              },
        +              "warnings": {
        +                "items": {
        +                  "additionalProperties": false,
        +                  "description": "Schema § 1.8 — a non-fatal geometry advisory (56th-fire T2).\n\nThe wire projection of the engine's `core.GeometryWarning`. Advisory only:\na warning NEVER changes a measured quantity — it flags geometry that is\nvalid but likely a mistake (e.g. a stale dependent-height default). Present\non BOTH tiers — a correctness/safety signal, not a paid feature.",
        +                  "properties": {
        +                    "affected_params": {
        +                      "items": {
        +                        "type": "string"
        +                      },
        +                      "type": "array"
        +                    },
        +                    "code": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "detail": {
        +                      "additionalProperties": {
        +                        "type": "number"
        +                      },
        +                      "type": "object"
        +                    },
        +                    "message": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "severity": {
        +                      "enum": [
        +                        "info",
        +                        "advisory",
        +                        "caution"
        +                      ],
        +                      "type": "string"
        +                    }
        +                  },
        +                  "required": [
        +                    "code",
        +                    "severity",
        +                    "message"
        +                  ],
        +                  "type": "object"
        +                },
        +                "type": "array"
        +              }
        +            },
        +            "required": [
        +              "assembly_slug",
        +              "standard",
        +              "parameters_used",
        +              "boq_rows",
        +              "totals_summary",
        +              "text_summary"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      },
        +      "error": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        +            "properties": {
        +              "code": {
        +                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        +                "enum": [
        +                  "RATE_LIMIT_EXCEEDED",
        +                  "TIER_INSUFFICIENT",
        +                  "INVALID_INPUT",
        +                  "SCHEMA_VERSION_MISMATCH",
        +                  "SCHEMA_INVARIANT_VIOLATION",
        +                  "UPSTREAM_TIMEOUT",
        +                  "BACKEND_FAILURE",
        +                  "IP_BLOCKED",
        +                  "RESOURCE_NOT_FOUND",
        +                  "RENDER_FAILURE",
        +                  "OCR_LOW_CONFIDENCE",
        +                  "MANUAL_REVIEW_REQUIRED",
        +                  "ACCEPTANCE_REQUIRED",
        +                  "INVALID_TOKEN"
        +                ],
        +                "type": "string"
        +              },
        +              "details": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "message": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "recoverable": {
        +                "type": "boolean"
        +              },
        +              "retry_after_seconds": {
        +                "anyOf": [
        +                  {
        +                    "minimum": 0,
        +                    "type": "integer"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              }
        +            },
        +            "required": [
        +              "code",
        +              "message",
        +              "recoverable"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      }
        +    },
        +    "required": [
        +      "_meta"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "_meta": {
        +        "additionalProperties": false,
        +        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        +        "properties": {
        +          "deliverables": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        +                "properties": {
        +                  "docx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "dxf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "expires_at": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  },
        +                  "pdf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "xlsx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "expires_at"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "document_id": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "issued_at": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "output_mode": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Surfaces what a trimmed ``output_mode`` withheld from ``data``.\n\nA trimmed mode (``summary`` / ``boq`` / ``boq_with_backup``) withholds\nalready-computed fields to keep the chat payload small. The withheld value\nreads to a client agent as \"capability missing\" (the box-culvert \"geometry\nbuilder isn't firing\" scare) rather than \"pared for size\": ``drawing`` and\n``audit_trail`` appear as ``null``, ``boq_rows`` as an empty list ``[]``\n(its type forbids ``null``) — both indistinguishable from a genuine absent\nresult. This names the withheld fields and the exact mode that brings each\nback, so the value is unambiguous. Absent on the default ``full_json`` mode\n— nothing is withheld, nothing to point at.",
        +                "properties": {
        +                  "mode": {
        +                    "enum": [
        +                      "summary",
        +                      "boq",
        +                      "boq_with_backup"
        +                    ],
        +                    "type": "string"
        +                  },
        +                  "omitted_fields": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "minItems": 1,
        +                    "type": "array"
        +                  },
        +                  "retrieve_with": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "mode",
        +                  "omitted_fields",
        +                  "retrieve_with"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "rate_limit_remaining": {
        +            "anyOf": [
        +              {
        +                "minimum": 0,
        +                "type": "integer"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "request_id": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "schema_version": {
        +            "const": "1.0.0",
        +            "default": "1.0.0",
        +            "type": "string"
        +          },
        +          "scope_boundary": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        +                "properties": {
        +                  "not_in_scope": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "produced": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "recommended_companions": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "type": "string"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "produced",
        +                  "not_in_scope"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tier": {
        +            "enum": [
        +              "free",
        +              "paid"
        +            ],
        +            "type": "string"
        +          },
        +          "tier_upgrade": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        +                "properties": {
        +                  "available_tiers": {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        +                      "properties": {
        +                        "billing": {
        +                          "enum": [
        +                            "one_off",
        +                            "monthly",
        +                            "annual"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "currency": {
        +                          "enum": [
        +                            "GBP",
        +                            "SGD",
        +                            "EUR",
        +                            "USD",
        +                            "CAD",
        +                            "AUD",
        +                            "NZD",
        +                            "MYR"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "display_name": {
        +                          "type": "string"
        +                        },
        +                        "price_local": {
        +                          "type": "number"
        +                        },
        +                        "tier_slug": {
        +                          "enum": [
        +                            "7_day_pass",
        +                            "solo",
        +                            "studio",
        +                            "practice"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "unlock_summary": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "tier_slug",
        +                        "display_name",
        +                        "price_local",
        +                        "currency",
        +                        "billing",
        +                        "unlock_summary"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "current_tier": {
        +                    "const": "free",
        +                    "default": "free",
        +                    "type": "string"
        +                  },
        +                  "pass_credit": {
        +                    "anyOf": [
        +                      {
        +                        "additionalProperties": false,
        +                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        +                        "properties": {
        +                          "amount_local": {
        +                            "type": "number"
        +                          },
        +                          "applies_to": {
        +                            "const": "solo_first_month",
        +                            "default": "solo_first_month",
        +                            "type": "string"
        +                          },
        +                          "currency": {
        +                            "type": "string"
        +                          },
        +                          "redeemable_until": {
        +                            "type": "string"
        +                          }
        +                        },
        +                        "required": [
        +                          "amount_local",
        +                          "currency",
        +                          "redeemable_until"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "pricing_url": {
        +                    "default": "https://civilquants.com/pricing",
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "available_tiers"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tos_url": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "upgrade_hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "warranty_disclaimer": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          }
        +        },
        +        "required": [
        +          "request_id",
        +          "issued_at",
        +          "tier"
        +        ],
        +        "type": "object"
        +      },
        +      "data": {
        +        "default": null,
        +        "title": "Data"
        +      },
        +      "error": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        +            "properties": {
        +              "code": {
        +                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        +                "enum": [
        +                  "RATE_LIMIT_EXCEEDED",
        +                  "TIER_INSUFFICIENT",
        +                  "INVALID_INPUT",
        +                  "SCHEMA_VERSION_MISMATCH",
        +                  "SCHEMA_INVARIANT_VIOLATION",
        +                  "UPSTREAM_TIMEOUT",
        +                  "BACKEND_FAILURE",
        +                  "IP_BLOCKED",
        +                  "RESOURCE_NOT_FOUND",
        +                  "RENDER_FAILURE",
        +                  "OCR_LOW_CONFIDENCE",
        +                  "MANUAL_REVIEW_REQUIRED",
        +                  "ACCEPTANCE_REQUIRED",
        +                  "INVALID_TOKEN"
        +                ],
        +                "type": "string"
        +              },
        +              "details": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "message": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "recoverable": {
        +                "type": "boolean"
        +              },
        +              "retry_after_seconds": {
        +                "anyOf": [
        +                  {
        +                    "minimum": 0,
        +                    "type": "integer"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              }
        +            },
        +            "required": [
        +              "code",
        +              "message",
        +              "recoverable"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      }
        +    },
        +    "required": [
        +      "_meta"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedcompute_highway_drainage_channel1 field changed
      • changedOutput schema / properties / result / anyOf
        Previous value: -[
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "_meta": {
        -        "additionalProperties": false,
        -        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        -        "properties": {
        -          "deliverables": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        -                "properties": {
        -                  "docx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "dxf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "expires_at": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  },
        -                  "pdf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "xlsx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "expires_at"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "document_id": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "issued_at": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "rate_limit_remaining": {
        -            "anyOf": [
        -              {
        -                "minimum": 0,
        -                "type": "integer"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "request_id": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "schema_version": {
        -            "const": "1.0.0",
        -            "default": "1.0.0",
        -            "type": "string"
        -          },
        -          "scope_boundary": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        -                "properties": {
        -                  "not_in_scope": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "produced": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "recommended_companions": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "type": "string"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "produced",
        -                  "not_in_scope"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tier": {
        -            "enum": [
        -              "free",
        -              "paid"
        -            ],
        -            "type": "string"
        -          },
        -          "tier_upgrade": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        -                "properties": {
        -                  "available_tiers": {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        -                      "properties": {
        -                        "billing": {
        -                          "enum": [
        -                            "one_off",
        -                            "monthly",
        -                            "annual"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "currency": {
        -                          "enum": [
        -                            "GBP",
        -                            "SGD",
        -                            "EUR",
        -                            "USD",
        -                            "CAD",
        -                            "AUD",
        -                            "NZD",
        -                            "MYR"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "display_name": {
        -                          "type": "string"
        -                        },
        -                        "price_local": {
        -                          "type": "number"
        -                        },
        -                        "tier_slug": {
        -                          "enum": [
        -                            "7_day_pass",
        -                            "solo",
        -                            "studio",
        -                            "practice"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "unlock_summary": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "tier_slug",
        -                        "display_name",
        -                        "price_local",
        -                        "currency",
        -                        "billing",
        -                        "unlock_summary"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "current_tier": {
        -                    "const": "free",
        -                    "default": "free",
        -                    "type": "string"
        -                  },
        -                  "pass_credit": {
        -                    "anyOf": [
        -                      {
        -                        "additionalProperties": false,
        -                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        -                        "properties": {
        -                          "amount_local": {
        -                            "type": "number"
        -                          },
        -                          "applies_to": {
        -                            "const": "solo_first_month",
        -                            "default": "solo_first_month",
        -                            "type": "string"
        -                          },
        -                          "currency": {
        -                            "type": "string"
        -                          },
        -                          "redeemable_until": {
        -                            "type": "string"
        -                          }
        -                        },
        -                        "required": [
        -                          "amount_local",
        -                          "currency",
        -                          "redeemable_until"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "pricing_url": {
        -                    "default": "https://civilquants.com/pricing",
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "available_tiers"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tos_url": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "upgrade_hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "warranty_disclaimer": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          }
        -        },
        -        "required": [
        -          "request_id",
        -          "issued_at",
        -          "tier"
        -        ],
        -        "type": "object"
        -      },
        -      "data": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Schema § 1.1 — the typed payload returned inside `MCPResponse[ComputeResult]`.\n\nFree-tier responses omit `drawings` (the downloadable CAD artefact\npointers — the paid differentiator); the bridge enforces this. The\n`audit_trail` and the inline `drawing` preview are present on BOTH tiers\n(V1 ALIGN / 60th-fire D + C). `text_summary` is bounded to 2000 chars —\nkeeps the LLM-facing summary token-cheap and forces longer narrative into\nBoQ row descriptions where it belongs. `warnings` is the non-fatal\ngeometry advisory list (both tiers).",
        -            "properties": {
        -              "assembly_slug": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "audit_trail": {
        -                "anyOf": [
        -                  {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.7 — paid-tier audit-trail entry.\n\nOne entry per BoQ row; `boq_row_index` ties to the row position in\n`ComputeResult.boq_rows`. `derivation` is the human-readable formula\nwalk-through; `formula` is the optional formal expression.",
        -                      "properties": {
        -                        "boq_row_index": {
        -                          "minimum": 0,
        -                          "type": "integer"
        -                        },
        -                        "derivation": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "formula": {
        -                          "anyOf": [
        -                            {
        -                              "type": "string"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ],
        -                          "default": null
        -                        },
        -                        "id": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "parameters_referenced": {
        -                          "items": {
        -                            "type": "string"
        -                          },
        -                          "type": "array"
        -                        }
        -                      },
        -                      "required": [
        -                        "id",
        -                        "boq_row_index",
        -                        "derivation"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "boq_rows": {
        -                "items": {
        -                  "additionalProperties": false,
        -                  "description": "Schema § 1.3 — a single bill row in the requested standard's format.\n\n`description` is the non-verbatim functional description per spec § 13.9 /\n§ 15 invariant — NEVER reproduces a standard's verbatim clause text.\n`rate` / `amount` ship null because rates are commodity data the customer\nowns; the engine's job is the measurement, not the pricing.",
        -                  "properties": {
        -                    "amount": {
        -                      "anyOf": [
        -                        {
        -                          "type": "number"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "attribution": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "audit_id": {
        -                      "anyOf": [
        -                        {
        -                          "type": "string"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "description": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "quantity": {
        -                      "minimum": 0,
        -                      "type": "number"
        -                    },
        -                    "rate": {
        -                      "anyOf": [
        -                        {
        -                          "type": "number"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "unit": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "work_section": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    }
        -                  },
        -                  "required": [
        -                    "work_section",
        -                    "description",
        -                    "quantity",
        -                    "unit",
        -                    "attribution"
        -                  ],
        -                  "type": "object"
        -                },
        -                "type": "array"
        -              },
        -              "drawing": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": false,
        -                    "description": "Schema § 1.6a — inline server-rendered SVG preview of the geometry.\n\nThe MCP mirror of the web ``/compute`` response's ``drawing`` field\n(``api.schemas.compute.DrawingRef``): the same on-screen dimensioned\ndrawing both tiers see in the workspace, surfaced on the MCP compute\nresponse so a chat client can render it inline (60th-fire item C). This\nis the on-screen preview — present on BOTH tiers per the free/paid\nboundary; the downloadable CAD artefacts (DXF / dimensioned PDF) remain\nthe paid differentiator via the export tools.\n\nDefined here rather than importing ``DrawingRef`` because the web\n``schemas`` package imports back into this module (``schemas.render``),\nso reusing it would create an import cycle — the MCP wire contract keeps\nits own copy, the same pattern as ``BoQRow`` / ``DrawingReference``.",
        -                    "properties": {
        -                      "entity_count": {
        -                        "minimum": 0,
        -                        "type": "integer"
        -                      },
        -                      "svg_b64": {
        -                        "minLength": 1,
        -                        "type": "string"
        -                      },
        -                      "unit_of_drawing": {
        -                        "const": "m",
        -                        "default": "m",
        -                        "type": "string"
        -                      },
        -                      "viewbox_height": {
        -                        "exclusiveMinimum": 0,
        -                        "type": "number"
        -                      },
        -                      "viewbox_width": {
        -                        "exclusiveMinimum": 0,
        -                        "type": "number"
        -                      },
        -                      "viewbox_x": {
        -                        "type": "number"
        -                      },
        -                      "viewbox_y": {
        -                        "type": "number"
        -                      }
        -                    },
        -                    "required": [
        -                      "svg_b64",
        -                      "viewbox_x",
        -                      "viewbox_y",
        -                      "viewbox_width",
        -                      "viewbox_height",
        -                      "entity_count"
        -                    ],
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "drawings": {
        -                "anyOf": [
        -                  {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.6 — paid-tier drawing artefact pointer.\n\n`url` is an R2-signed URL; expiry is carried in `_meta.deliverables.expires_at`\non the envelope (not duplicated here). `layers` is DXF-only; PDF/SVG\ncallers omit it.",
        -                      "properties": {
        -                        "drawing_type": {
        -                          "enum": [
        -                            "section",
        -                            "plan",
        -                            "elevation",
        -                            "isometric",
        -                            "detail"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "format": {
        -                          "enum": [
        -                            "DXF",
        -                            "PDF",
        -                            "SVG"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "layers": {
        -                          "anyOf": [
        -                            {
        -                              "items": {
        -                                "type": "string"
        -                              },
        -                              "type": "array"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ],
        -                          "default": null
        -                        },
        -                        "scale": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "sheet_size": {
        -                          "enum": [
        -                            "A1",
        -                            "A2",
        -                            "A3",
        -                            "A4"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "url": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "drawing_type",
        -                        "format",
        -                        "url",
        -                        "sheet_size",
        -                        "scale"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "parameters_used": {
        -                "additionalProperties": false,
        -                "description": "Schema § 1.2 — the parameter snapshot the engine actually used.\n\nSplits user-supplied values from engine defaults so customers can see\nwhich numbers came from them and which the engine filled in. Every\ndefaulted parameter SHOULD have a corresponding entry in `assumptions`\n— the bridge layer enforces this when wrapping engine output.",
        -                "properties": {
        -                  "assumptions": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "engine_defaults": {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  "user_supplied": {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  }
        -                },
        -                "type": "object"
        -              },
        -              "standard": {
        -                "enum": [
        -                  "CESMM4",
        -                  "NRM2",
        -                  "SMM7",
        -                  "MMHW"
        -                ],
        -                "type": "string"
        -              },
        -              "text_summary": {
        -                "maxLength": 2000,
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "totals_summary": {
        -                "additionalProperties": false,
        -                "description": "Schema § 1.4 — totals_summary as a typed wrapper around the free-form dict.\n\nWire shape is a flat object (`{\"concrete_m3\": {...}, \"rebar_t\": {...}}`).\nWe model it as `RootModel`-equivalent via `model_config(extra=\"allow\")`\n+ a single `__root__`-style `entries` dict. Pydantic v2 recommends\n`RootModel` for free-form roots; using a wrapper class keeps the import\nsurface uniform with the rest of this module.",
        -                "properties": {
        -                  "entries": {
        -                    "additionalProperties": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.4 — single material/work-class total entry.",
        -                      "properties": {
        -                        "quantity": {
        -                          "minimum": 0,
        -                          "type": "number"
        -                        },
        -                        "unit": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "quantity",
        -                        "unit"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "object"
        -                  }
        -                },
        -                "type": "object"
        -              },
        -              "warnings": {
        -                "items": {
        -                  "additionalProperties": false,
        -                  "description": "Schema § 1.8 — a non-fatal geometry advisory (56th-fire T2).\n\nThe wire projection of the engine's `core.GeometryWarning`. Advisory only:\na warning NEVER changes a measured quantity — it flags geometry that is\nvalid but likely a mistake (e.g. a stale dependent-height default). Present\non BOTH tiers — a correctness/safety signal, not a paid feature.",
        -                  "properties": {
        -                    "affected_params": {
        -                      "items": {
        -                        "type": "string"
        -                      },
        -                      "type": "array"
        -                    },
        -                    "code": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "detail": {
        -                      "additionalProperties": {
        -                        "type": "number"
        -                      },
        -                      "type": "object"
        -                    },
        -                    "message": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "severity": {
        -                      "enum": [
        -                        "info",
        -                        "advisory",
        -                        "caution"
        -                      ],
        -                      "type": "string"
        -                    }
        -                  },
        -                  "required": [
        -                    "code",
        -                    "severity",
        -                    "message"
        -                  ],
        -                  "type": "object"
        -                },
        -                "type": "array"
        -              }
        -            },
        -            "required": [
        -              "assembly_slug",
        -              "standard",
        -              "parameters_used",
        -              "boq_rows",
        -              "totals_summary",
        -              "text_summary"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      },
        -      "error": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        -            "properties": {
        -              "code": {
        -                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        -                "enum": [
        -                  "RATE_LIMIT_EXCEEDED",
        -                  "TIER_INSUFFICIENT",
        -                  "INVALID_INPUT",
        -                  "SCHEMA_VERSION_MISMATCH",
        -                  "SCHEMA_INVARIANT_VIOLATION",
        -                  "UPSTREAM_TIMEOUT",
        -                  "BACKEND_FAILURE",
        -                  "IP_BLOCKED",
        -                  "RESOURCE_NOT_FOUND",
        -                  "RENDER_FAILURE",
        -                  "OCR_LOW_CONFIDENCE",
        -                  "MANUAL_REVIEW_REQUIRED",
        -                  "ACCEPTANCE_REQUIRED",
        -                  "INVALID_TOKEN"
        -                ],
        -                "type": "string"
        -              },
        -              "details": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "message": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "recoverable": {
        -                "type": "boolean"
        -              },
        -              "retry_after_seconds": {
        -                "anyOf": [
        -                  {
        -                    "minimum": 0,
        -                    "type": "integer"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              }
        -            },
        -            "required": [
        -              "code",
        -              "message",
        -              "recoverable"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      }
        -    },
        -    "required": [
        -      "_meta"
        -    ],
        -    "type": "object"
        -  },
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "_meta": {
        -        "additionalProperties": false,
        -        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        -        "properties": {
        -          "deliverables": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        -                "properties": {
        -                  "docx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "dxf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "expires_at": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  },
        -                  "pdf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "xlsx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "expires_at"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "document_id": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "issued_at": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "rate_limit_remaining": {
        -            "anyOf": [
        -              {
        -                "minimum": 0,
        -                "type": "integer"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "request_id": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "schema_version": {
        -            "const": "1.0.0",
        -            "default": "1.0.0",
        -            "type": "string"
        -          },
        -          "scope_boundary": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        -                "properties": {
        -                  "not_in_scope": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "produced": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "recommended_companions": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "type": "string"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "produced",
        -                  "not_in_scope"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tier": {
        -            "enum": [
        -              "free",
        -              "paid"
        -            ],
        -            "type": "string"
        -          },
        -          "tier_upgrade": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        -                "properties": {
        -                  "available_tiers": {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        -                      "properties": {
        -                        "billing": {
        -                          "enum": [
        -                            "one_off",
        -                            "monthly",
        -                            "annual"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "currency": {
        -                          "enum": [
        -                            "GBP",
        -                            "SGD",
        -                            "EUR",
        -                            "USD",
        -                            "CAD",
        -                            "AUD",
        -                            "NZD",
        -                            "MYR"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "display_name": {
        -                          "type": "string"
        -                        },
        -                        "price_local": {
        -                          "type": "number"
        -                        },
        -                        "tier_slug": {
        -                          "enum": [
        -                            "7_day_pass",
        -                            "solo",
        -                            "studio",
        -                            "practice"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "unlock_summary": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "tier_slug",
        -                        "display_name",
        -                        "price_local",
        -                        "currency",
        -                        "billing",
        -                        "unlock_summary"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "current_tier": {
        -                    "const": "free",
        -                    "default": "free",
        -                    "type": "string"
        -                  },
        -                  "pass_credit": {
        -                    "anyOf": [
        -                      {
        -                        "additionalProperties": false,
        -                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        -                        "properties": {
        -                          "amount_local": {
        -                            "type": "number"
        -                          },
        -                          "applies_to": {
        -                            "const": "solo_first_month",
        -                            "default": "solo_first_month",
        -                            "type": "string"
        -                          },
        -                          "currency": {
        -                            "type": "string"
        -                          },
        -                          "redeemable_until": {
        -                            "type": "string"
        -                          }
        -                        },
        -                        "required": [
        -                          "amount_local",
        -                          "currency",
        -                          "redeemable_until"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "pricing_url": {
        -                    "default": "https://civilquants.com/pricing",
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "available_tiers"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tos_url": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "upgrade_hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "warranty_disclaimer": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          }
        -        },
        -        "required": [
        -          "request_id",
        -          "issued_at",
        -          "tier"
        -        ],
        -        "type": "object"
        -      },
        -      "data": {
        -        "default": null,
        -        "title": "Data"
        -      },
        -      "error": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        -            "properties": {
        -              "code": {
        -                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        -                "enum": [
        -                  "RATE_LIMIT_EXCEEDED",
        -                  "TIER_INSUFFICIENT",
        -                  "INVALID_INPUT",
        -                  "SCHEMA_VERSION_MISMATCH",
        -                  "SCHEMA_INVARIANT_VIOLATION",
        -                  "UPSTREAM_TIMEOUT",
        -                  "BACKEND_FAILURE",
        -                  "IP_BLOCKED",
        -                  "RESOURCE_NOT_FOUND",
        -                  "RENDER_FAILURE",
        -                  "OCR_LOW_CONFIDENCE",
        -                  "MANUAL_REVIEW_REQUIRED",
        -                  "ACCEPTANCE_REQUIRED",
        -                  "INVALID_TOKEN"
        -                ],
        -                "type": "string"
        -              },
        -              "details": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "message": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "recoverable": {
        -                "type": "boolean"
        -              },
        -              "retry_after_seconds": {
        -                "anyOf": [
        -                  {
        -                    "minimum": 0,
        -                    "type": "integer"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              }
        -            },
        -            "required": [
        -              "code",
        -              "message",
        -              "recoverable"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      }
        -    },
        -    "required": [
        -      "_meta"
        -    ],
        -    "type": "object"
        -  }
        -]New value: +[
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "_meta": {
        +        "additionalProperties": false,
        +        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        +        "properties": {
        +          "deliverables": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        +                "properties": {
        +                  "docx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "dxf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "expires_at": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  },
        +                  "pdf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "xlsx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "expires_at"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "document_id": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "issued_at": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "output_mode": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Surfaces what a trimmed ``output_mode`` withheld from ``data``.\n\nA trimmed mode (``summary`` / ``boq`` / ``boq_with_backup``) withholds\nalready-computed fields to keep the chat payload small. The withheld value\nreads to a client agent as \"capability missing\" (the box-culvert \"geometry\nbuilder isn't firing\" scare) rather than \"pared for size\": ``drawing`` and\n``audit_trail`` appear as ``null``, ``boq_rows`` as an empty list ``[]``\n(its type forbids ``null``) — both indistinguishable from a genuine absent\nresult. This names the withheld fields and the exact mode that brings each\nback, so the value is unambiguous. Absent on the default ``full_json`` mode\n— nothing is withheld, nothing to point at.",
        +                "properties": {
        +                  "mode": {
        +                    "enum": [
        +                      "summary",
        +                      "boq",
        +                      "boq_with_backup"
        +                    ],
        +                    "type": "string"
        +                  },
        +                  "omitted_fields": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "minItems": 1,
        +                    "type": "array"
        +                  },
        +                  "retrieve_with": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "mode",
        +                  "omitted_fields",
        +                  "retrieve_with"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "rate_limit_remaining": {
        +            "anyOf": [
        +              {
        +                "minimum": 0,
        +                "type": "integer"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "request_id": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "schema_version": {
        +            "const": "1.0.0",
        +            "default": "1.0.0",
        +            "type": "string"
        +          },
        +          "scope_boundary": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        +                "properties": {
        +                  "not_in_scope": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "produced": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "recommended_companions": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "type": "string"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "produced",
        +                  "not_in_scope"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tier": {
        +            "enum": [
        +              "free",
        +              "paid"
        +            ],
        +            "type": "string"
        +          },
        +          "tier_upgrade": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        +                "properties": {
        +                  "available_tiers": {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        +                      "properties": {
        +                        "billing": {
        +                          "enum": [
        +                            "one_off",
        +                            "monthly",
        +                            "annual"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "currency": {
        +                          "enum": [
        +                            "GBP",
        +                            "SGD",
        +                            "EUR",
        +                            "USD",
        +                            "CAD",
        +                            "AUD",
        +                            "NZD",
        +                            "MYR"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "display_name": {
        +                          "type": "string"
        +                        },
        +                        "price_local": {
        +                          "type": "number"
        +                        },
        +                        "tier_slug": {
        +                          "enum": [
        +                            "7_day_pass",
        +                            "solo",
        +                            "studio",
        +                            "practice"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "unlock_summary": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "tier_slug",
        +                        "display_name",
        +                        "price_local",
        +                        "currency",
        +                        "billing",
        +                        "unlock_summary"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "current_tier": {
        +                    "const": "free",
        +                    "default": "free",
        +                    "type": "string"
        +                  },
        +                  "pass_credit": {
        +                    "anyOf": [
        +                      {
        +                        "additionalProperties": false,
        +                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        +                        "properties": {
        +                          "amount_local": {
        +                            "type": "number"
        +                          },
        +                          "applies_to": {
        +                            "const": "solo_first_month",
        +                            "default": "solo_first_month",
        +                            "type": "string"
        +                          },
        +                          "currency": {
        +                            "type": "string"
        +                          },
        +                          "redeemable_until": {
        +                            "type": "string"
        +                          }
        +                        },
        +                        "required": [
        +                          "amount_local",
        +                          "currency",
        +                          "redeemable_until"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "pricing_url": {
        +                    "default": "https://civilquants.com/pricing",
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "available_tiers"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tos_url": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "upgrade_hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "warranty_disclaimer": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          }
        +        },
        +        "required": [
        +          "request_id",
        +          "issued_at",
        +          "tier"
        +        ],
        +        "type": "object"
        +      },
        +      "data": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Schema § 1.1 — the typed payload returned inside `MCPResponse[ComputeResult]`.\n\nFree-tier responses omit `drawings` (the downloadable CAD artefact\npointers — the paid differentiator); the bridge enforces this. The\n`audit_trail` and the inline `drawing` preview are present on BOTH tiers\n(V1 ALIGN / 60th-fire D + C). `text_summary` is bounded to 2000 chars —\nkeeps the LLM-facing summary token-cheap and forces longer narrative into\nBoQ row descriptions where it belongs. `warnings` is the non-fatal\ngeometry advisory list (both tiers).",
        +            "properties": {
        +              "assembly_slug": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "audit_trail": {
        +                "anyOf": [
        +                  {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.7 — paid-tier audit-trail entry.\n\nOne entry per BoQ row; `boq_row_index` ties to the row position in\n`ComputeResult.boq_rows`. `derivation` is the human-readable formula\nwalk-through; `formula` is the optional formal expression.",
        +                      "properties": {
        +                        "boq_row_index": {
        +                          "minimum": 0,
        +                          "type": "integer"
        +                        },
        +                        "derivation": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "formula": {
        +                          "anyOf": [
        +                            {
        +                              "type": "string"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ],
        +                          "default": null
        +                        },
        +                        "id": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "parameters_referenced": {
        +                          "items": {
        +                            "type": "string"
        +                          },
        +                          "type": "array"
        +                        }
        +                      },
        +                      "required": [
        +                        "id",
        +                        "boq_row_index",
        +                        "derivation"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "boq_rows": {
        +                "items": {
        +                  "additionalProperties": false,
        +                  "description": "Schema § 1.3 — a single bill row in the requested standard's format.\n\n`description` is the non-verbatim functional description per spec § 13.9 /\n§ 15 invariant — NEVER reproduces a standard's verbatim clause text.\n`rate` / `amount` ship null because rates are commodity data the customer\nowns; the engine's job is the measurement, not the pricing.",
        +                  "properties": {
        +                    "amount": {
        +                      "anyOf": [
        +                        {
        +                          "type": "number"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "attribution": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "audit_id": {
        +                      "anyOf": [
        +                        {
        +                          "type": "string"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "description": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "quantity": {
        +                      "minimum": 0,
        +                      "type": "number"
        +                    },
        +                    "rate": {
        +                      "anyOf": [
        +                        {
        +                          "type": "number"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "unit": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "work_section": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    }
        +                  },
        +                  "required": [
        +                    "work_section",
        +                    "description",
        +                    "quantity",
        +                    "unit",
        +                    "attribution"
        +                  ],
        +                  "type": "object"
        +                },
        +                "type": "array"
        +              },
        +              "drawing": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": false,
        +                    "description": "Schema § 1.6a — inline server-rendered SVG preview of the geometry.\n\nThe MCP mirror of the web ``/compute`` response's ``drawing`` field\n(``api.schemas.compute.DrawingRef``): the same on-screen dimensioned\ndrawing both tiers see in the workspace, surfaced on the MCP compute\nresponse so a chat client can render it inline (60th-fire item C). This\nis the on-screen preview — present on BOTH tiers per the free/paid\nboundary; the downloadable CAD artefacts (DXF / dimensioned PDF) remain\nthe paid differentiator via the export tools.\n\nDefined here rather than importing ``DrawingRef`` because the web\n``schemas`` package imports back into this module (``schemas.render``),\nso reusing it would create an import cycle — the MCP wire contract keeps\nits own copy, the same pattern as ``BoQRow`` / ``DrawingReference``.",
        +                    "properties": {
        +                      "entity_count": {
        +                        "minimum": 0,
        +                        "type": "integer"
        +                      },
        +                      "svg_b64": {
        +                        "minLength": 1,
        +                        "type": "string"
        +                      },
        +                      "unit_of_drawing": {
        +                        "const": "m",
        +                        "default": "m",
        +                        "type": "string"
        +                      },
        +                      "viewbox_height": {
        +                        "exclusiveMinimum": 0,
        +                        "type": "number"
        +                      },
        +                      "viewbox_width": {
        +                        "exclusiveMinimum": 0,
        +                        "type": "number"
        +                      },
        +                      "viewbox_x": {
        +                        "type": "number"
        +                      },
        +                      "viewbox_y": {
        +                        "type": "number"
        +                      }
        +                    },
        +                    "required": [
        +                      "svg_b64",
        +                      "viewbox_x",
        +                      "viewbox_y",
        +                      "viewbox_width",
        +                      "viewbox_height",
        +                      "entity_count"
        +                    ],
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "drawings": {
        +                "anyOf": [
        +                  {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.6 — paid-tier drawing artefact pointer.\n\n`url` is an R2-signed URL; expiry is carried in `_meta.deliverables.expires_at`\non the envelope (not duplicated here). `layers` is DXF-only; PDF/SVG\ncallers omit it.",
        +                      "properties": {
        +                        "drawing_type": {
        +                          "enum": [
        +                            "section",
        +                            "plan",
        +                            "elevation",
        +                            "isometric",
        +                            "detail"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "format": {
        +                          "enum": [
        +                            "DXF",
        +                            "PDF",
        +                            "SVG"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "layers": {
        +                          "anyOf": [
        +                            {
        +                              "items": {
        +                                "type": "string"
        +                              },
        +                              "type": "array"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ],
        +                          "default": null
        +                        },
        +                        "scale": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "sheet_size": {
        +                          "enum": [
        +                            "A1",
        +                            "A2",
        +                            "A3",
        +                            "A4"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "url": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "drawing_type",
        +                        "format",
        +                        "url",
        +                        "sheet_size",
        +                        "scale"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "parameters_used": {
        +                "additionalProperties": false,
        +                "description": "Schema § 1.2 — the parameter snapshot the engine actually used.\n\nSplits user-supplied values from engine defaults so customers can see\nwhich numbers came from them and which the engine filled in. Every\ndefaulted parameter SHOULD have a corresponding entry in `assumptions`\n— the bridge layer enforces this when wrapping engine output.",
        +                "properties": {
        +                  "assumptions": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "engine_defaults": {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  "user_supplied": {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  }
        +                },
        +                "type": "object"
        +              },
        +              "standard": {
        +                "enum": [
        +                  "CESMM4",
        +                  "NRM2",
        +                  "SMM7",
        +                  "MMHW"
        +                ],
        +                "type": "string"
        +              },
        +              "text_summary": {
        +                "maxLength": 2000,
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "totals_summary": {
        +                "additionalProperties": false,
        +                "description": "Schema § 1.4 — totals_summary as a typed wrapper around the free-form dict.\n\nWire shape is a flat object (`{\"concrete_m3\": {...}, \"rebar_t\": {...}}`).\nWe model it as `RootModel`-equivalent via `model_config(extra=\"allow\")`\n+ a single `__root__`-style `entries` dict. Pydantic v2 recommends\n`RootModel` for free-form roots; using a wrapper class keeps the import\nsurface uniform with the rest of this module.",
        +                "properties": {
        +                  "entries": {
        +                    "additionalProperties": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.4 — single material/work-class total entry.",
        +                      "properties": {
        +                        "quantity": {
        +                          "minimum": 0,
        +                          "type": "number"
        +                        },
        +                        "unit": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "quantity",
        +                        "unit"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "object"
        +                  }
        +                },
        +                "type": "object"
        +              },
        +              "warnings": {
        +                "items": {
        +                  "additionalProperties": false,
        +                  "description": "Schema § 1.8 — a non-fatal geometry advisory (56th-fire T2).\n\nThe wire projection of the engine's `core.GeometryWarning`. Advisory only:\na warning NEVER changes a measured quantity — it flags geometry that is\nvalid but likely a mistake (e.g. a stale dependent-height default). Present\non BOTH tiers — a correctness/safety signal, not a paid feature.",
        +                  "properties": {
        +                    "affected_params": {
        +                      "items": {
        +                        "type": "string"
        +                      },
        +                      "type": "array"
        +                    },
        +                    "code": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "detail": {
        +                      "additionalProperties": {
        +                        "type": "number"
        +                      },
        +                      "type": "object"
        +                    },
        +                    "message": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "severity": {
        +                      "enum": [
        +                        "info",
        +                        "advisory",
        +                        "caution"
        +                      ],
        +                      "type": "string"
        +                    }
        +                  },
        +                  "required": [
        +                    "code",
        +                    "severity",
        +                    "message"
        +                  ],
        +                  "type": "object"
        +                },
        +                "type": "array"
        +              }
        +            },
        +            "required": [
        +              "assembly_slug",
        +              "standard",
        +              "parameters_used",
        +              "boq_rows",
        +              "totals_summary",
        +              "text_summary"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      },
        +      "error": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        +            "properties": {
        +              "code": {
        +                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        +                "enum": [
        +                  "RATE_LIMIT_EXCEEDED",
        +                  "TIER_INSUFFICIENT",
        +                  "INVALID_INPUT",
        +                  "SCHEMA_VERSION_MISMATCH",
        +                  "SCHEMA_INVARIANT_VIOLATION",
        +                  "UPSTREAM_TIMEOUT",
        +                  "BACKEND_FAILURE",
        +                  "IP_BLOCKED",
        +                  "RESOURCE_NOT_FOUND",
        +                  "RENDER_FAILURE",
        +                  "OCR_LOW_CONFIDENCE",
        +                  "MANUAL_REVIEW_REQUIRED",
        +                  "ACCEPTANCE_REQUIRED",
        +                  "INVALID_TOKEN"
        +                ],
        +                "type": "string"
        +              },
        +              "details": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "message": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "recoverable": {
        +                "type": "boolean"
        +              },
        +              "retry_after_seconds": {
        +                "anyOf": [
        +                  {
        +                    "minimum": 0,
        +                    "type": "integer"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              }
        +            },
        +            "required": [
        +              "code",
        +              "message",
        +              "recoverable"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      }
        +    },
        +    "required": [
        +      "_meta"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "_meta": {
        +        "additionalProperties": false,
        +        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        +        "properties": {
        +          "deliverables": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        +                "properties": {
        +                  "docx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "dxf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "expires_at": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  },
        +                  "pdf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "xlsx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "expires_at"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "document_id": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "issued_at": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "output_mode": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Surfaces what a trimmed ``output_mode`` withheld from ``data``.\n\nA trimmed mode (``summary`` / ``boq`` / ``boq_with_backup``) withholds\nalready-computed fields to keep the chat payload small. The withheld value\nreads to a client agent as \"capability missing\" (the box-culvert \"geometry\nbuilder isn't firing\" scare) rather than \"pared for size\": ``drawing`` and\n``audit_trail`` appear as ``null``, ``boq_rows`` as an empty list ``[]``\n(its type forbids ``null``) — both indistinguishable from a genuine absent\nresult. This names the withheld fields and the exact mode that brings each\nback, so the value is unambiguous. Absent on the default ``full_json`` mode\n— nothing is withheld, nothing to point at.",
        +                "properties": {
        +                  "mode": {
        +                    "enum": [
        +                      "summary",
        +                      "boq",
        +                      "boq_with_backup"
        +                    ],
        +                    "type": "string"
        +                  },
        +                  "omitted_fields": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "minItems": 1,
        +                    "type": "array"
        +                  },
        +                  "retrieve_with": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "mode",
        +                  "omitted_fields",
        +                  "retrieve_with"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "rate_limit_remaining": {
        +            "anyOf": [
        +              {
        +                "minimum": 0,
        +                "type": "integer"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "request_id": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "schema_version": {
        +            "const": "1.0.0",
        +            "default": "1.0.0",
        +            "type": "string"
        +          },
        +          "scope_boundary": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        +                "properties": {
        +                  "not_in_scope": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "produced": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "recommended_companions": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "type": "string"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "produced",
        +                  "not_in_scope"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tier": {
        +            "enum": [
        +              "free",
        +              "paid"
        +            ],
        +            "type": "string"
        +          },
        +          "tier_upgrade": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        +                "properties": {
        +                  "available_tiers": {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        +                      "properties": {
        +                        "billing": {
        +                          "enum": [
        +                            "one_off",
        +                            "monthly",
        +                            "annual"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "currency": {
        +                          "enum": [
        +                            "GBP",
        +                            "SGD",
        +                            "EUR",
        +                            "USD",
        +                            "CAD",
        +                            "AUD",
        +                            "NZD",
        +                            "MYR"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "display_name": {
        +                          "type": "string"
        +                        },
        +                        "price_local": {
        +                          "type": "number"
        +                        },
        +                        "tier_slug": {
        +                          "enum": [
        +                            "7_day_pass",
        +                            "solo",
        +                            "studio",
        +                            "practice"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "unlock_summary": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "tier_slug",
        +                        "display_name",
        +                        "price_local",
        +                        "currency",
        +                        "billing",
        +                        "unlock_summary"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "current_tier": {
        +                    "const": "free",
        +                    "default": "free",
        +                    "type": "string"
        +                  },
        +                  "pass_credit": {
        +                    "anyOf": [
        +                      {
        +                        "additionalProperties": false,
        +                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        +                        "properties": {
        +                          "amount_local": {
        +                            "type": "number"
        +                          },
        +                          "applies_to": {
        +                            "const": "solo_first_month",
        +                            "default": "solo_first_month",
        +                            "type": "string"
        +                          },
        +                          "currency": {
        +                            "type": "string"
        +                          },
        +                          "redeemable_until": {
        +                            "type": "string"
        +                          }
        +                        },
        +                        "required": [
        +                          "amount_local",
        +                          "currency",
        +                          "redeemable_until"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "pricing_url": {
        +                    "default": "https://civilquants.com/pricing",
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "available_tiers"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tos_url": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "upgrade_hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "warranty_disclaimer": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          }
        +        },
        +        "required": [
        +          "request_id",
        +          "issued_at",
        +          "tier"
        +        ],
        +        "type": "object"
        +      },
        +      "data": {
        +        "default": null,
        +        "title": "Data"
        +      },
        +      "error": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        +            "properties": {
        +              "code": {
        +                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        +                "enum": [
        +                  "RATE_LIMIT_EXCEEDED",
        +                  "TIER_INSUFFICIENT",
        +                  "INVALID_INPUT",
        +                  "SCHEMA_VERSION_MISMATCH",
        +                  "SCHEMA_INVARIANT_VIOLATION",
        +                  "UPSTREAM_TIMEOUT",
        +                  "BACKEND_FAILURE",
        +                  "IP_BLOCKED",
        +                  "RESOURCE_NOT_FOUND",
        +                  "RENDER_FAILURE",
        +                  "OCR_LOW_CONFIDENCE",
        +                  "MANUAL_REVIEW_REQUIRED",
        +                  "ACCEPTANCE_REQUIRED",
        +                  "INVALID_TOKEN"
        +                ],
        +                "type": "string"
        +              },
        +              "details": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "message": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "recoverable": {
        +                "type": "boolean"
        +              },
        +              "retry_after_seconds": {
        +                "anyOf": [
        +                  {
        +                    "minimum": 0,
        +                    "type": "integer"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              }
        +            },
        +            "required": [
        +              "code",
        +              "message",
        +              "recoverable"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      }
        +    },
        +    "required": [
        +      "_meta"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedcompute_kerb_run1 field changed
      • changedOutput schema / properties / result / anyOf
        Previous value: -[
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "_meta": {
        -        "additionalProperties": false,
        -        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        -        "properties": {
        -          "deliverables": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        -                "properties": {
        -                  "docx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "dxf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "expires_at": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  },
        -                  "pdf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "xlsx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "expires_at"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "document_id": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "issued_at": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "rate_limit_remaining": {
        -            "anyOf": [
        -              {
        -                "minimum": 0,
        -                "type": "integer"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "request_id": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "schema_version": {
        -            "const": "1.0.0",
        -            "default": "1.0.0",
        -            "type": "string"
        -          },
        -          "scope_boundary": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        -                "properties": {
        -                  "not_in_scope": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "produced": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "recommended_companions": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "type": "string"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "produced",
        -                  "not_in_scope"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tier": {
        -            "enum": [
        -              "free",
        -              "paid"
        -            ],
        -            "type": "string"
        -          },
        -          "tier_upgrade": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        -                "properties": {
        -                  "available_tiers": {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        -                      "properties": {
        -                        "billing": {
        -                          "enum": [
        -                            "one_off",
        -                            "monthly",
        -                            "annual"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "currency": {
        -                          "enum": [
        -                            "GBP",
        -                            "SGD",
        -                            "EUR",
        -                            "USD",
        -                            "CAD",
        -                            "AUD",
        -                            "NZD",
        -                            "MYR"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "display_name": {
        -                          "type": "string"
        -                        },
        -                        "price_local": {
        -                          "type": "number"
        -                        },
        -                        "tier_slug": {
        -                          "enum": [
        -                            "7_day_pass",
        -                            "solo",
        -                            "studio",
        -                            "practice"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "unlock_summary": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "tier_slug",
        -                        "display_name",
        -                        "price_local",
        -                        "currency",
        -                        "billing",
        -                        "unlock_summary"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "current_tier": {
        -                    "const": "free",
        -                    "default": "free",
        -                    "type": "string"
        -                  },
        -                  "pass_credit": {
        -                    "anyOf": [
        -                      {
        -                        "additionalProperties": false,
        -                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        -                        "properties": {
        -                          "amount_local": {
        -                            "type": "number"
        -                          },
        -                          "applies_to": {
        -                            "const": "solo_first_month",
        -                            "default": "solo_first_month",
        -                            "type": "string"
        -                          },
        -                          "currency": {
        -                            "type": "string"
        -                          },
        -                          "redeemable_until": {
        -                            "type": "string"
        -                          }
        -                        },
        -                        "required": [
        -                          "amount_local",
        -                          "currency",
        -                          "redeemable_until"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "pricing_url": {
        -                    "default": "https://civilquants.com/pricing",
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "available_tiers"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tos_url": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "upgrade_hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "warranty_disclaimer": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          }
        -        },
        -        "required": [
        -          "request_id",
        -          "issued_at",
        -          "tier"
        -        ],
        -        "type": "object"
        -      },
        -      "data": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Schema § 1.1 — the typed payload returned inside `MCPResponse[ComputeResult]`.\n\nFree-tier responses omit `drawings` (the downloadable CAD artefact\npointers — the paid differentiator); the bridge enforces this. The\n`audit_trail` and the inline `drawing` preview are present on BOTH tiers\n(V1 ALIGN / 60th-fire D + C). `text_summary` is bounded to 2000 chars —\nkeeps the LLM-facing summary token-cheap and forces longer narrative into\nBoQ row descriptions where it belongs. `warnings` is the non-fatal\ngeometry advisory list (both tiers).",
        -            "properties": {
        -              "assembly_slug": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "audit_trail": {
        -                "anyOf": [
        -                  {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.7 — paid-tier audit-trail entry.\n\nOne entry per BoQ row; `boq_row_index` ties to the row position in\n`ComputeResult.boq_rows`. `derivation` is the human-readable formula\nwalk-through; `formula` is the optional formal expression.",
        -                      "properties": {
        -                        "boq_row_index": {
        -                          "minimum": 0,
        -                          "type": "integer"
        -                        },
        -                        "derivation": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "formula": {
        -                          "anyOf": [
        -                            {
        -                              "type": "string"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ],
        -                          "default": null
        -                        },
        -                        "id": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "parameters_referenced": {
        -                          "items": {
        -                            "type": "string"
        -                          },
        -                          "type": "array"
        -                        }
        -                      },
        -                      "required": [
        -                        "id",
        -                        "boq_row_index",
        -                        "derivation"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "boq_rows": {
        -                "items": {
        -                  "additionalProperties": false,
        -                  "description": "Schema § 1.3 — a single bill row in the requested standard's format.\n\n`description` is the non-verbatim functional description per spec § 13.9 /\n§ 15 invariant — NEVER reproduces a standard's verbatim clause text.\n`rate` / `amount` ship null because rates are commodity data the customer\nowns; the engine's job is the measurement, not the pricing.",
        -                  "properties": {
        -                    "amount": {
        -                      "anyOf": [
        -                        {
        -                          "type": "number"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "attribution": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "audit_id": {
        -                      "anyOf": [
        -                        {
        -                          "type": "string"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "description": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "quantity": {
        -                      "minimum": 0,
        -                      "type": "number"
        -                    },
        -                    "rate": {
        -                      "anyOf": [
        -                        {
        -                          "type": "number"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "unit": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "work_section": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    }
        -                  },
        -                  "required": [
        -                    "work_section",
        -                    "description",
        -                    "quantity",
        -                    "unit",
        -                    "attribution"
        -                  ],
        -                  "type": "object"
        -                },
        -                "type": "array"
        -              },
        -              "drawing": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": false,
        -                    "description": "Schema § 1.6a — inline server-rendered SVG preview of the geometry.\n\nThe MCP mirror of the web ``/compute`` response's ``drawing`` field\n(``api.schemas.compute.DrawingRef``): the same on-screen dimensioned\ndrawing both tiers see in the workspace, surfaced on the MCP compute\nresponse so a chat client can render it inline (60th-fire item C). This\nis the on-screen preview — present on BOTH tiers per the free/paid\nboundary; the downloadable CAD artefacts (DXF / dimensioned PDF) remain\nthe paid differentiator via the export tools.\n\nDefined here rather than importing ``DrawingRef`` because the web\n``schemas`` package imports back into this module (``schemas.render``),\nso reusing it would create an import cycle — the MCP wire contract keeps\nits own copy, the same pattern as ``BoQRow`` / ``DrawingReference``.",
        -                    "properties": {
        -                      "entity_count": {
        -                        "minimum": 0,
        -                        "type": "integer"
        -                      },
        -                      "svg_b64": {
        -                        "minLength": 1,
        -                        "type": "string"
        -                      },
        -                      "unit_of_drawing": {
        -                        "const": "m",
        -                        "default": "m",
        -                        "type": "string"
        -                      },
        -                      "viewbox_height": {
        -                        "exclusiveMinimum": 0,
        -                        "type": "number"
        -                      },
        -                      "viewbox_width": {
        -                        "exclusiveMinimum": 0,
        -                        "type": "number"
        -                      },
        -                      "viewbox_x": {
        -                        "type": "number"
        -                      },
        -                      "viewbox_y": {
        -                        "type": "number"
        -                      }
        -                    },
        -                    "required": [
        -                      "svg_b64",
        -                      "viewbox_x",
        -                      "viewbox_y",
        -                      "viewbox_width",
        -                      "viewbox_height",
        -                      "entity_count"
        -                    ],
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "drawings": {
        -                "anyOf": [
        -                  {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.6 — paid-tier drawing artefact pointer.\n\n`url` is an R2-signed URL; expiry is carried in `_meta.deliverables.expires_at`\non the envelope (not duplicated here). `layers` is DXF-only; PDF/SVG\ncallers omit it.",
        -                      "properties": {
        -                        "drawing_type": {
        -                          "enum": [
        -                            "section",
        -                            "plan",
        -                            "elevation",
        -                            "isometric",
        -                            "detail"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "format": {
        -                          "enum": [
        -                            "DXF",
        -                            "PDF",
        -                            "SVG"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "layers": {
        -                          "anyOf": [
        -                            {
        -                              "items": {
        -                                "type": "string"
        -                              },
        -                              "type": "array"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ],
        -                          "default": null
        -                        },
        -                        "scale": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "sheet_size": {
        -                          "enum": [
        -                            "A1",
        -                            "A2",
        -                            "A3",
        -                            "A4"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "url": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "drawing_type",
        -                        "format",
        -                        "url",
        -                        "sheet_size",
        -                        "scale"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "parameters_used": {
        -                "additionalProperties": false,
        -                "description": "Schema § 1.2 — the parameter snapshot the engine actually used.\n\nSplits user-supplied values from engine defaults so customers can see\nwhich numbers came from them and which the engine filled in. Every\ndefaulted parameter SHOULD have a corresponding entry in `assumptions`\n— the bridge layer enforces this when wrapping engine output.",
        -                "properties": {
        -                  "assumptions": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "engine_defaults": {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  "user_supplied": {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  }
        -                },
        -                "type": "object"
        -              },
        -              "standard": {
        -                "enum": [
        -                  "CESMM4",
        -                  "NRM2",
        -                  "SMM7",
        -                  "MMHW"
        -                ],
        -                "type": "string"
        -              },
        -              "text_summary": {
        -                "maxLength": 2000,
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "totals_summary": {
        -                "additionalProperties": false,
        -                "description": "Schema § 1.4 — totals_summary as a typed wrapper around the free-form dict.\n\nWire shape is a flat object (`{\"concrete_m3\": {...}, \"rebar_t\": {...}}`).\nWe model it as `RootModel`-equivalent via `model_config(extra=\"allow\")`\n+ a single `__root__`-style `entries` dict. Pydantic v2 recommends\n`RootModel` for free-form roots; using a wrapper class keeps the import\nsurface uniform with the rest of this module.",
        -                "properties": {
        -                  "entries": {
        -                    "additionalProperties": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.4 — single material/work-class total entry.",
        -                      "properties": {
        -                        "quantity": {
        -                          "minimum": 0,
        -                          "type": "number"
        -                        },
        -                        "unit": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "quantity",
        -                        "unit"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "object"
        -                  }
        -                },
        -                "type": "object"
        -              },
        -              "warnings": {
        -                "items": {
        -                  "additionalProperties": false,
        -                  "description": "Schema § 1.8 — a non-fatal geometry advisory (56th-fire T2).\n\nThe wire projection of the engine's `core.GeometryWarning`. Advisory only:\na warning NEVER changes a measured quantity — it flags geometry that is\nvalid but likely a mistake (e.g. a stale dependent-height default). Present\non BOTH tiers — a correctness/safety signal, not a paid feature.",
        -                  "properties": {
        -                    "affected_params": {
        -                      "items": {
        -                        "type": "string"
        -                      },
        -                      "type": "array"
        -                    },
        -                    "code": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "detail": {
        -                      "additionalProperties": {
        -                        "type": "number"
        -                      },
        -                      "type": "object"
        -                    },
        -                    "message": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "severity": {
        -                      "enum": [
        -                        "info",
        -                        "advisory",
        -                        "caution"
        -                      ],
        -                      "type": "string"
        -                    }
        -                  },
        -                  "required": [
        -                    "code",
        -                    "severity",
        -                    "message"
        -                  ],
        -                  "type": "object"
        -                },
        -                "type": "array"
        -              }
        -            },
        -            "required": [
        -              "assembly_slug",
        -              "standard",
        -              "parameters_used",
        -              "boq_rows",
        -              "totals_summary",
        -              "text_summary"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      },
        -      "error": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        -            "properties": {
        -              "code": {
        -                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        -                "enum": [
        -                  "RATE_LIMIT_EXCEEDED",
        -                  "TIER_INSUFFICIENT",
        -                  "INVALID_INPUT",
        -                  "SCHEMA_VERSION_MISMATCH",
        -                  "SCHEMA_INVARIANT_VIOLATION",
        -                  "UPSTREAM_TIMEOUT",
        -                  "BACKEND_FAILURE",
        -                  "IP_BLOCKED",
        -                  "RESOURCE_NOT_FOUND",
        -                  "RENDER_FAILURE",
        -                  "OCR_LOW_CONFIDENCE",
        -                  "MANUAL_REVIEW_REQUIRED",
        -                  "ACCEPTANCE_REQUIRED",
        -                  "INVALID_TOKEN"
        -                ],
        -                "type": "string"
        -              },
        -              "details": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "message": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "recoverable": {
        -                "type": "boolean"
        -              },
        -              "retry_after_seconds": {
        -                "anyOf": [
        -                  {
        -                    "minimum": 0,
        -                    "type": "integer"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              }
        -            },
        -            "required": [
        -              "code",
        -              "message",
        -              "recoverable"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      }
        -    },
        -    "required": [
        -      "_meta"
        -    ],
        -    "type": "object"
        -  },
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "_meta": {
        -        "additionalProperties": false,
        -        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        -        "properties": {
        -          "deliverables": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        -                "properties": {
        -                  "docx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "dxf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "expires_at": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  },
        -                  "pdf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "xlsx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "expires_at"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "document_id": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "issued_at": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "rate_limit_remaining": {
        -            "anyOf": [
        -              {
        -                "minimum": 0,
        -                "type": "integer"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "request_id": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "schema_version": {
        -            "const": "1.0.0",
        -            "default": "1.0.0",
        -            "type": "string"
        -          },
        -          "scope_boundary": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        -                "properties": {
        -                  "not_in_scope": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "produced": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "recommended_companions": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "type": "string"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "produced",
        -                  "not_in_scope"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tier": {
        -            "enum": [
        -              "free",
        -              "paid"
        -            ],
        -            "type": "string"
        -          },
        -          "tier_upgrade": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        -                "properties": {
        -                  "available_tiers": {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        -                      "properties": {
        -                        "billing": {
        -                          "enum": [
        -                            "one_off",
        -                            "monthly",
        -                            "annual"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "currency": {
        -                          "enum": [
        -                            "GBP",
        -                            "SGD",
        -                            "EUR",
        -                            "USD",
        -                            "CAD",
        -                            "AUD",
        -                            "NZD",
        -                            "MYR"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "display_name": {
        -                          "type": "string"
        -                        },
        -                        "price_local": {
        -                          "type": "number"
        -                        },
        -                        "tier_slug": {
        -                          "enum": [
        -                            "7_day_pass",
        -                            "solo",
        -                            "studio",
        -                            "practice"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "unlock_summary": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "tier_slug",
        -                        "display_name",
        -                        "price_local",
        -                        "currency",
        -                        "billing",
        -                        "unlock_summary"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "current_tier": {
        -                    "const": "free",
        -                    "default": "free",
        -                    "type": "string"
        -                  },
        -                  "pass_credit": {
        -                    "anyOf": [
        -                      {
        -                        "additionalProperties": false,
        -                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        -                        "properties": {
        -                          "amount_local": {
        -                            "type": "number"
        -                          },
        -                          "applies_to": {
        -                            "const": "solo_first_month",
        -                            "default": "solo_first_month",
        -                            "type": "string"
        -                          },
        -                          "currency": {
        -                            "type": "string"
        -                          },
        -                          "redeemable_until": {
        -                            "type": "string"
        -                          }
        -                        },
        -                        "required": [
        -                          "amount_local",
        -                          "currency",
        -                          "redeemable_until"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "pricing_url": {
        -                    "default": "https://civilquants.com/pricing",
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "available_tiers"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tos_url": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "upgrade_hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "warranty_disclaimer": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          }
        -        },
        -        "required": [
        -          "request_id",
        -          "issued_at",
        -          "tier"
        -        ],
        -        "type": "object"
        -      },
        -      "data": {
        -        "default": null,
        -        "title": "Data"
        -      },
        -      "error": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        -            "properties": {
        -              "code": {
        -                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        -                "enum": [
        -                  "RATE_LIMIT_EXCEEDED",
        -                  "TIER_INSUFFICIENT",
        -                  "INVALID_INPUT",
        -                  "SCHEMA_VERSION_MISMATCH",
        -                  "SCHEMA_INVARIANT_VIOLATION",
        -                  "UPSTREAM_TIMEOUT",
        -                  "BACKEND_FAILURE",
        -                  "IP_BLOCKED",
        -                  "RESOURCE_NOT_FOUND",
        -                  "RENDER_FAILURE",
        -                  "OCR_LOW_CONFIDENCE",
        -                  "MANUAL_REVIEW_REQUIRED",
        -                  "ACCEPTANCE_REQUIRED",
        -                  "INVALID_TOKEN"
        -                ],
        -                "type": "string"
        -              },
        -              "details": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "message": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "recoverable": {
        -                "type": "boolean"
        -              },
        -              "retry_after_seconds": {
        -                "anyOf": [
        -                  {
        -                    "minimum": 0,
        -                    "type": "integer"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              }
        -            },
        -            "required": [
        -              "code",
        -              "message",
        -              "recoverable"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      }
        -    },
        -    "required": [
        -      "_meta"
        -    ],
        -    "type": "object"
        -  }
        -]New value: +[
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "_meta": {
        +        "additionalProperties": false,
        +        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        +        "properties": {
        +          "deliverables": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        +                "properties": {
        +                  "docx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "dxf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "expires_at": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  },
        +                  "pdf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "xlsx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "expires_at"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "document_id": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "issued_at": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "output_mode": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Surfaces what a trimmed ``output_mode`` withheld from ``data``.\n\nA trimmed mode (``summary`` / ``boq`` / ``boq_with_backup``) withholds\nalready-computed fields to keep the chat payload small. The withheld value\nreads to a client agent as \"capability missing\" (the box-culvert \"geometry\nbuilder isn't firing\" scare) rather than \"pared for size\": ``drawing`` and\n``audit_trail`` appear as ``null``, ``boq_rows`` as an empty list ``[]``\n(its type forbids ``null``) — both indistinguishable from a genuine absent\nresult. This names the withheld fields and the exact mode that brings each\nback, so the value is unambiguous. Absent on the default ``full_json`` mode\n— nothing is withheld, nothing to point at.",
        +                "properties": {
        +                  "mode": {
        +                    "enum": [
        +                      "summary",
        +                      "boq",
        +                      "boq_with_backup"
        +                    ],
        +                    "type": "string"
        +                  },
        +                  "omitted_fields": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "minItems": 1,
        +                    "type": "array"
        +                  },
        +                  "retrieve_with": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "mode",
        +                  "omitted_fields",
        +                  "retrieve_with"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "rate_limit_remaining": {
        +            "anyOf": [
        +              {
        +                "minimum": 0,
        +                "type": "integer"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "request_id": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "schema_version": {
        +            "const": "1.0.0",
        +            "default": "1.0.0",
        +            "type": "string"
        +          },
        +          "scope_boundary": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        +                "properties": {
        +                  "not_in_scope": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "produced": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "recommended_companions": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "type": "string"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "produced",
        +                  "not_in_scope"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tier": {
        +            "enum": [
        +              "free",
        +              "paid"
        +            ],
        +            "type": "string"
        +          },
        +          "tier_upgrade": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        +                "properties": {
        +                  "available_tiers": {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        +                      "properties": {
        +                        "billing": {
        +                          "enum": [
        +                            "one_off",
        +                            "monthly",
        +                            "annual"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "currency": {
        +                          "enum": [
        +                            "GBP",
        +                            "SGD",
        +                            "EUR",
        +                            "USD",
        +                            "CAD",
        +                            "AUD",
        +                            "NZD",
        +                            "MYR"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "display_name": {
        +                          "type": "string"
        +                        },
        +                        "price_local": {
        +                          "type": "number"
        +                        },
        +                        "tier_slug": {
        +                          "enum": [
        +                            "7_day_pass",
        +                            "solo",
        +                            "studio",
        +                            "practice"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "unlock_summary": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "tier_slug",
        +                        "display_name",
        +                        "price_local",
        +                        "currency",
        +                        "billing",
        +                        "unlock_summary"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "current_tier": {
        +                    "const": "free",
        +                    "default": "free",
        +                    "type": "string"
        +                  },
        +                  "pass_credit": {
        +                    "anyOf": [
        +                      {
        +                        "additionalProperties": false,
        +                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        +                        "properties": {
        +                          "amount_local": {
        +                            "type": "number"
        +                          },
        +                          "applies_to": {
        +                            "const": "solo_first_month",
        +                            "default": "solo_first_month",
        +                            "type": "string"
        +                          },
        +                          "currency": {
        +                            "type": "string"
        +                          },
        +                          "redeemable_until": {
        +                            "type": "string"
        +                          }
        +                        },
        +                        "required": [
        +                          "amount_local",
        +                          "currency",
        +                          "redeemable_until"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "pricing_url": {
        +                    "default": "https://civilquants.com/pricing",
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "available_tiers"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tos_url": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "upgrade_hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "warranty_disclaimer": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          }
        +        },
        +        "required": [
        +          "request_id",
        +          "issued_at",
        +          "tier"
        +        ],
        +        "type": "object"
        +      },
        +      "data": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Schema § 1.1 — the typed payload returned inside `MCPResponse[ComputeResult]`.\n\nFree-tier responses omit `drawings` (the downloadable CAD artefact\npointers — the paid differentiator); the bridge enforces this. The\n`audit_trail` and the inline `drawing` preview are present on BOTH tiers\n(V1 ALIGN / 60th-fire D + C). `text_summary` is bounded to 2000 chars —\nkeeps the LLM-facing summary token-cheap and forces longer narrative into\nBoQ row descriptions where it belongs. `warnings` is the non-fatal\ngeometry advisory list (both tiers).",
        +            "properties": {
        +              "assembly_slug": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "audit_trail": {
        +                "anyOf": [
        +                  {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.7 — paid-tier audit-trail entry.\n\nOne entry per BoQ row; `boq_row_index` ties to the row position in\n`ComputeResult.boq_rows`. `derivation` is the human-readable formula\nwalk-through; `formula` is the optional formal expression.",
        +                      "properties": {
        +                        "boq_row_index": {
        +                          "minimum": 0,
        +                          "type": "integer"
        +                        },
        +                        "derivation": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "formula": {
        +                          "anyOf": [
        +                            {
        +                              "type": "string"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ],
        +                          "default": null
        +                        },
        +                        "id": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "parameters_referenced": {
        +                          "items": {
        +                            "type": "string"
        +                          },
        +                          "type": "array"
        +                        }
        +                      },
        +                      "required": [
        +                        "id",
        +                        "boq_row_index",
        +                        "derivation"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "boq_rows": {
        +                "items": {
        +                  "additionalProperties": false,
        +                  "description": "Schema § 1.3 — a single bill row in the requested standard's format.\n\n`description` is the non-verbatim functional description per spec § 13.9 /\n§ 15 invariant — NEVER reproduces a standard's verbatim clause text.\n`rate` / `amount` ship null because rates are commodity data the customer\nowns; the engine's job is the measurement, not the pricing.",
        +                  "properties": {
        +                    "amount": {
        +                      "anyOf": [
        +                        {
        +                          "type": "number"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "attribution": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "audit_id": {
        +                      "anyOf": [
        +                        {
        +                          "type": "string"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "description": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "quantity": {
        +                      "minimum": 0,
        +                      "type": "number"
        +                    },
        +                    "rate": {
        +                      "anyOf": [
        +                        {
        +                          "type": "number"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "unit": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "work_section": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    }
        +                  },
        +                  "required": [
        +                    "work_section",
        +                    "description",
        +                    "quantity",
        +                    "unit",
        +                    "attribution"
        +                  ],
        +                  "type": "object"
        +                },
        +                "type": "array"
        +              },
        +              "drawing": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": false,
        +                    "description": "Schema § 1.6a — inline server-rendered SVG preview of the geometry.\n\nThe MCP mirror of the web ``/compute`` response's ``drawing`` field\n(``api.schemas.compute.DrawingRef``): the same on-screen dimensioned\ndrawing both tiers see in the workspace, surfaced on the MCP compute\nresponse so a chat client can render it inline (60th-fire item C). This\nis the on-screen preview — present on BOTH tiers per the free/paid\nboundary; the downloadable CAD artefacts (DXF / dimensioned PDF) remain\nthe paid differentiator via the export tools.\n\nDefined here rather than importing ``DrawingRef`` because the web\n``schemas`` package imports back into this module (``schemas.render``),\nso reusing it would create an import cycle — the MCP wire contract keeps\nits own copy, the same pattern as ``BoQRow`` / ``DrawingReference``.",
        +                    "properties": {
        +                      "entity_count": {
        +                        "minimum": 0,
        +                        "type": "integer"
        +                      },
        +                      "svg_b64": {
        +                        "minLength": 1,
        +                        "type": "string"
        +                      },
        +                      "unit_of_drawing": {
        +                        "const": "m",
        +                        "default": "m",
        +                        "type": "string"
        +                      },
        +                      "viewbox_height": {
        +                        "exclusiveMinimum": 0,
        +                        "type": "number"
        +                      },
        +                      "viewbox_width": {
        +                        "exclusiveMinimum": 0,
        +                        "type": "number"
        +                      },
        +                      "viewbox_x": {
        +                        "type": "number"
        +                      },
        +                      "viewbox_y": {
        +                        "type": "number"
        +                      }
        +                    },
        +                    "required": [
        +                      "svg_b64",
        +                      "viewbox_x",
        +                      "viewbox_y",
        +                      "viewbox_width",
        +                      "viewbox_height",
        +                      "entity_count"
        +                    ],
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "drawings": {
        +                "anyOf": [
        +                  {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.6 — paid-tier drawing artefact pointer.\n\n`url` is an R2-signed URL; expiry is carried in `_meta.deliverables.expires_at`\non the envelope (not duplicated here). `layers` is DXF-only; PDF/SVG\ncallers omit it.",
        +                      "properties": {
        +                        "drawing_type": {
        +                          "enum": [
        +                            "section",
        +                            "plan",
        +                            "elevation",
        +                            "isometric",
        +                            "detail"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "format": {
        +                          "enum": [
        +                            "DXF",
        +                            "PDF",
        +                            "SVG"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "layers": {
        +                          "anyOf": [
        +                            {
        +                              "items": {
        +                                "type": "string"
        +                              },
        +                              "type": "array"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ],
        +                          "default": null
        +                        },
        +                        "scale": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "sheet_size": {
        +                          "enum": [
        +                            "A1",
        +                            "A2",
        +                            "A3",
        +                            "A4"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "url": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "drawing_type",
        +                        "format",
        +                        "url",
        +                        "sheet_size",
        +                        "scale"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "parameters_used": {
        +                "additionalProperties": false,
        +                "description": "Schema § 1.2 — the parameter snapshot the engine actually used.\n\nSplits user-supplied values from engine defaults so customers can see\nwhich numbers came from them and which the engine filled in. Every\ndefaulted parameter SHOULD have a corresponding entry in `assumptions`\n— the bridge layer enforces this when wrapping engine output.",
        +                "properties": {
        +                  "assumptions": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "engine_defaults": {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  "user_supplied": {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  }
        +                },
        +                "type": "object"
        +              },
        +              "standard": {
        +                "enum": [
        +                  "CESMM4",
        +                  "NRM2",
        +                  "SMM7",
        +                  "MMHW"
        +                ],
        +                "type": "string"
        +              },
        +              "text_summary": {
        +                "maxLength": 2000,
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "totals_summary": {
        +                "additionalProperties": false,
        +                "description": "Schema § 1.4 — totals_summary as a typed wrapper around the free-form dict.\n\nWire shape is a flat object (`{\"concrete_m3\": {...}, \"rebar_t\": {...}}`).\nWe model it as `RootModel`-equivalent via `model_config(extra=\"allow\")`\n+ a single `__root__`-style `entries` dict. Pydantic v2 recommends\n`RootModel` for free-form roots; using a wrapper class keeps the import\nsurface uniform with the rest of this module.",
        +                "properties": {
        +                  "entries": {
        +                    "additionalProperties": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.4 — single material/work-class total entry.",
        +                      "properties": {
        +                        "quantity": {
        +                          "minimum": 0,
        +                          "type": "number"
        +                        },
        +                        "unit": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "quantity",
        +                        "unit"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "object"
        +                  }
        +                },
        +                "type": "object"
        +              },
        +              "warnings": {
        +                "items": {
        +                  "additionalProperties": false,
        +                  "description": "Schema § 1.8 — a non-fatal geometry advisory (56th-fire T2).\n\nThe wire projection of the engine's `core.GeometryWarning`. Advisory only:\na warning NEVER changes a measured quantity — it flags geometry that is\nvalid but likely a mistake (e.g. a stale dependent-height default). Present\non BOTH tiers — a correctness/safety signal, not a paid feature.",
        +                  "properties": {
        +                    "affected_params": {
        +                      "items": {
        +                        "type": "string"
        +                      },
        +                      "type": "array"
        +                    },
        +                    "code": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "detail": {
        +                      "additionalProperties": {
        +                        "type": "number"
        +                      },
        +                      "type": "object"
        +                    },
        +                    "message": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "severity": {
        +                      "enum": [
        +                        "info",
        +                        "advisory",
        +                        "caution"
        +                      ],
        +                      "type": "string"
        +                    }
        +                  },
        +                  "required": [
        +                    "code",
        +                    "severity",
        +                    "message"
        +                  ],
        +                  "type": "object"
        +                },
        +                "type": "array"
        +              }
        +            },
        +            "required": [
        +              "assembly_slug",
        +              "standard",
        +              "parameters_used",
        +              "boq_rows",
        +              "totals_summary",
        +              "text_summary"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      },
        +      "error": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        +            "properties": {
        +              "code": {
        +                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        +                "enum": [
        +                  "RATE_LIMIT_EXCEEDED",
        +                  "TIER_INSUFFICIENT",
        +                  "INVALID_INPUT",
        +                  "SCHEMA_VERSION_MISMATCH",
        +                  "SCHEMA_INVARIANT_VIOLATION",
        +                  "UPSTREAM_TIMEOUT",
        +                  "BACKEND_FAILURE",
        +                  "IP_BLOCKED",
        +                  "RESOURCE_NOT_FOUND",
        +                  "RENDER_FAILURE",
        +                  "OCR_LOW_CONFIDENCE",
        +                  "MANUAL_REVIEW_REQUIRED",
        +                  "ACCEPTANCE_REQUIRED",
        +                  "INVALID_TOKEN"
        +                ],
        +                "type": "string"
        +              },
        +              "details": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "message": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "recoverable": {
        +                "type": "boolean"
        +              },
        +              "retry_after_seconds": {
        +                "anyOf": [
        +                  {
        +                    "minimum": 0,
        +                    "type": "integer"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              }
        +            },
        +            "required": [
        +              "code",
        +              "message",
        +              "recoverable"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      }
        +    },
        +    "required": [
        +      "_meta"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "_meta": {
        +        "additionalProperties": false,
        +        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        +        "properties": {
        +          "deliverables": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        +                "properties": {
        +                  "docx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "dxf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "expires_at": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  },
        +                  "pdf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "xlsx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "expires_at"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "document_id": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "issued_at": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "output_mode": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Surfaces what a trimmed ``output_mode`` withheld from ``data``.\n\nA trimmed mode (``summary`` / ``boq`` / ``boq_with_backup``) withholds\nalready-computed fields to keep the chat payload small. The withheld value\nreads to a client agent as \"capability missing\" (the box-culvert \"geometry\nbuilder isn't firing\" scare) rather than \"pared for size\": ``drawing`` and\n``audit_trail`` appear as ``null``, ``boq_rows`` as an empty list ``[]``\n(its type forbids ``null``) — both indistinguishable from a genuine absent\nresult. This names the withheld fields and the exact mode that brings each\nback, so the value is unambiguous. Absent on the default ``full_json`` mode\n— nothing is withheld, nothing to point at.",
        +                "properties": {
        +                  "mode": {
        +                    "enum": [
        +                      "summary",
        +                      "boq",
        +                      "boq_with_backup"
        +                    ],
        +                    "type": "string"
        +                  },
        +                  "omitted_fields": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "minItems": 1,
        +                    "type": "array"
        +                  },
        +                  "retrieve_with": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "mode",
        +                  "omitted_fields",
        +                  "retrieve_with"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "rate_limit_remaining": {
        +            "anyOf": [
        +              {
        +                "minimum": 0,
        +                "type": "integer"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "request_id": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "schema_version": {
        +            "const": "1.0.0",
        +            "default": "1.0.0",
        +            "type": "string"
        +          },
        +          "scope_boundary": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        +                "properties": {
        +                  "not_in_scope": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "produced": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "recommended_companions": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "type": "string"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "produced",
        +                  "not_in_scope"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tier": {
        +            "enum": [
        +              "free",
        +              "paid"
        +            ],
        +            "type": "string"
        +          },
        +          "tier_upgrade": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        +                "properties": {
        +                  "available_tiers": {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        +                      "properties": {
        +                        "billing": {
        +                          "enum": [
        +                            "one_off",
        +                            "monthly",
        +                            "annual"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "currency": {
        +                          "enum": [
        +                            "GBP",
        +                            "SGD",
        +                            "EUR",
        +                            "USD",
        +                            "CAD",
        +                            "AUD",
        +                            "NZD",
        +                            "MYR"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "display_name": {
        +                          "type": "string"
        +                        },
        +                        "price_local": {
        +                          "type": "number"
        +                        },
        +                        "tier_slug": {
        +                          "enum": [
        +                            "7_day_pass",
        +                            "solo",
        +                            "studio",
        +                            "practice"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "unlock_summary": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "tier_slug",
        +                        "display_name",
        +                        "price_local",
        +                        "currency",
        +                        "billing",
        +                        "unlock_summary"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "current_tier": {
        +                    "const": "free",
        +                    "default": "free",
        +                    "type": "string"
        +                  },
        +                  "pass_credit": {
        +                    "anyOf": [
        +                      {
        +                        "additionalProperties": false,
        +                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        +                        "properties": {
        +                          "amount_local": {
        +                            "type": "number"
        +                          },
        +                          "applies_to": {
        +                            "const": "solo_first_month",
        +                            "default": "solo_first_month",
        +                            "type": "string"
        +                          },
        +                          "currency": {
        +                            "type": "string"
        +                          },
        +                          "redeemable_until": {
        +                            "type": "string"
        +                          }
        +                        },
        +                        "required": [
        +                          "amount_local",
        +                          "currency",
        +                          "redeemable_until"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "pricing_url": {
        +                    "default": "https://civilquants.com/pricing",
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "available_tiers"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tos_url": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "upgrade_hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "warranty_disclaimer": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          }
        +        },
        +        "required": [
        +          "request_id",
        +          "issued_at",
        +          "tier"
        +        ],
        +        "type": "object"
        +      },
        +      "data": {
        +        "default": null,
        +        "title": "Data"
        +      },
        +      "error": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        +            "properties": {
        +              "code": {
        +                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        +                "enum": [
        +                  "RATE_LIMIT_EXCEEDED",
        +                  "TIER_INSUFFICIENT",
        +                  "INVALID_INPUT",
        +                  "SCHEMA_VERSION_MISMATCH",
        +                  "SCHEMA_INVARIANT_VIOLATION",
        +                  "UPSTREAM_TIMEOUT",
        +                  "BACKEND_FAILURE",
        +                  "IP_BLOCKED",
        +                  "RESOURCE_NOT_FOUND",
        +                  "RENDER_FAILURE",
        +                  "OCR_LOW_CONFIDENCE",
        +                  "MANUAL_REVIEW_REQUIRED",
        +                  "ACCEPTANCE_REQUIRED",
        +                  "INVALID_TOKEN"
        +                ],
        +                "type": "string"
        +              },
        +              "details": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "message": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "recoverable": {
        +                "type": "boolean"
        +              },
        +              "retry_after_seconds": {
        +                "anyOf": [
        +                  {
        +                    "minimum": 0,
        +                    "type": "integer"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              }
        +            },
        +            "required": [
        +              "code",
        +              "message",
        +              "recoverable"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      }
        +    },
        +    "required": [
        +      "_meta"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedcompute_lighting_column1 field changed
      • changedOutput schema / properties / result / anyOf
        Previous value: -[
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "_meta": {
        -        "additionalProperties": false,
        -        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        -        "properties": {
        -          "deliverables": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        -                "properties": {
        -                  "docx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "dxf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "expires_at": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  },
        -                  "pdf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "xlsx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "expires_at"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "document_id": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "issued_at": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "rate_limit_remaining": {
        -            "anyOf": [
        -              {
        -                "minimum": 0,
        -                "type": "integer"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "request_id": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "schema_version": {
        -            "const": "1.0.0",
        -            "default": "1.0.0",
        -            "type": "string"
        -          },
        -          "scope_boundary": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        -                "properties": {
        -                  "not_in_scope": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "produced": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "recommended_companions": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "type": "string"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "produced",
        -                  "not_in_scope"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tier": {
        -            "enum": [
        -              "free",
        -              "paid"
        -            ],
        -            "type": "string"
        -          },
        -          "tier_upgrade": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        -                "properties": {
        -                  "available_tiers": {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        -                      "properties": {
        -                        "billing": {
        -                          "enum": [
        -                            "one_off",
        -                            "monthly",
        -                            "annual"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "currency": {
        -                          "enum": [
        -                            "GBP",
        -                            "SGD",
        -                            "EUR",
        -                            "USD",
        -                            "CAD",
        -                            "AUD",
        -                            "NZD",
        -                            "MYR"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "display_name": {
        -                          "type": "string"
        -                        },
        -                        "price_local": {
        -                          "type": "number"
        -                        },
        -                        "tier_slug": {
        -                          "enum": [
        -                            "7_day_pass",
        -                            "solo",
        -                            "studio",
        -                            "practice"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "unlock_summary": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "tier_slug",
        -                        "display_name",
        -                        "price_local",
        -                        "currency",
        -                        "billing",
        -                        "unlock_summary"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "current_tier": {
        -                    "const": "free",
        -                    "default": "free",
        -                    "type": "string"
        -                  },
        -                  "pass_credit": {
        -                    "anyOf": [
        -                      {
        -                        "additionalProperties": false,
        -                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        -                        "properties": {
        -                          "amount_local": {
        -                            "type": "number"
        -                          },
        -                          "applies_to": {
        -                            "const": "solo_first_month",
        -                            "default": "solo_first_month",
        -                            "type": "string"
        -                          },
        -                          "currency": {
        -                            "type": "string"
        -                          },
        -                          "redeemable_until": {
        -                            "type": "string"
        -                          }
        -                        },
        -                        "required": [
        -                          "amount_local",
        -                          "currency",
        -                          "redeemable_until"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "pricing_url": {
        -                    "default": "https://civilquants.com/pricing",
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "available_tiers"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tos_url": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "upgrade_hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "warranty_disclaimer": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          }
        -        },
        -        "required": [
        -          "request_id",
        -          "issued_at",
        -          "tier"
        -        ],
        -        "type": "object"
        -      },
        -      "data": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Schema § 1.1 — the typed payload returned inside `MCPResponse[ComputeResult]`.\n\nFree-tier responses omit `drawings` (the downloadable CAD artefact\npointers — the paid differentiator); the bridge enforces this. The\n`audit_trail` and the inline `drawing` preview are present on BOTH tiers\n(V1 ALIGN / 60th-fire D + C). `text_summary` is bounded to 2000 chars —\nkeeps the LLM-facing summary token-cheap and forces longer narrative into\nBoQ row descriptions where it belongs. `warnings` is the non-fatal\ngeometry advisory list (both tiers).",
        -            "properties": {
        -              "assembly_slug": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "audit_trail": {
        -                "anyOf": [
        -                  {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.7 — paid-tier audit-trail entry.\n\nOne entry per BoQ row; `boq_row_index` ties to the row position in\n`ComputeResult.boq_rows`. `derivation` is the human-readable formula\nwalk-through; `formula` is the optional formal expression.",
        -                      "properties": {
        -                        "boq_row_index": {
        -                          "minimum": 0,
        -                          "type": "integer"
        -                        },
        -                        "derivation": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "formula": {
        -                          "anyOf": [
        -                            {
        -                              "type": "string"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ],
        -                          "default": null
        -                        },
        -                        "id": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "parameters_referenced": {
        -                          "items": {
        -                            "type": "string"
        -                          },
        -                          "type": "array"
        -                        }
        -                      },
        -                      "required": [
        -                        "id",
        -                        "boq_row_index",
        -                        "derivation"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "boq_rows": {
        -                "items": {
        -                  "additionalProperties": false,
        -                  "description": "Schema § 1.3 — a single bill row in the requested standard's format.\n\n`description` is the non-verbatim functional description per spec § 13.9 /\n§ 15 invariant — NEVER reproduces a standard's verbatim clause text.\n`rate` / `amount` ship null because rates are commodity data the customer\nowns; the engine's job is the measurement, not the pricing.",
        -                  "properties": {
        -                    "amount": {
        -                      "anyOf": [
        -                        {
        -                          "type": "number"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "attribution": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "audit_id": {
        -                      "anyOf": [
        -                        {
        -                          "type": "string"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "description": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "quantity": {
        -                      "minimum": 0,
        -                      "type": "number"
        -                    },
        -                    "rate": {
        -                      "anyOf": [
        -                        {
        -                          "type": "number"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "unit": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "work_section": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    }
        -                  },
        -                  "required": [
        -                    "work_section",
        -                    "description",
        -                    "quantity",
        -                    "unit",
        -                    "attribution"
        -                  ],
        -                  "type": "object"
        -                },
        -                "type": "array"
        -              },
        -              "drawing": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": false,
        -                    "description": "Schema § 1.6a — inline server-rendered SVG preview of the geometry.\n\nThe MCP mirror of the web ``/compute`` response's ``drawing`` field\n(``api.schemas.compute.DrawingRef``): the same on-screen dimensioned\ndrawing both tiers see in the workspace, surfaced on the MCP compute\nresponse so a chat client can render it inline (60th-fire item C). This\nis the on-screen preview — present on BOTH tiers per the free/paid\nboundary; the downloadable CAD artefacts (DXF / dimensioned PDF) remain\nthe paid differentiator via the export tools.\n\nDefined here rather than importing ``DrawingRef`` because the web\n``schemas`` package imports back into this module (``schemas.render``),\nso reusing it would create an import cycle — the MCP wire contract keeps\nits own copy, the same pattern as ``BoQRow`` / ``DrawingReference``.",
        -                    "properties": {
        -                      "entity_count": {
        -                        "minimum": 0,
        -                        "type": "integer"
        -                      },
        -                      "svg_b64": {
        -                        "minLength": 1,
        -                        "type": "string"
        -                      },
        -                      "unit_of_drawing": {
        -                        "const": "m",
        -                        "default": "m",
        -                        "type": "string"
        -                      },
        -                      "viewbox_height": {
        -                        "exclusiveMinimum": 0,
        -                        "type": "number"
        -                      },
        -                      "viewbox_width": {
        -                        "exclusiveMinimum": 0,
        -                        "type": "number"
        -                      },
        -                      "viewbox_x": {
        -                        "type": "number"
        -                      },
        -                      "viewbox_y": {
        -                        "type": "number"
        -                      }
        -                    },
        -                    "required": [
        -                      "svg_b64",
        -                      "viewbox_x",
        -                      "viewbox_y",
        -                      "viewbox_width",
        -                      "viewbox_height",
        -                      "entity_count"
        -                    ],
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "drawings": {
        -                "anyOf": [
        -                  {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.6 — paid-tier drawing artefact pointer.\n\n`url` is an R2-signed URL; expiry is carried in `_meta.deliverables.expires_at`\non the envelope (not duplicated here). `layers` is DXF-only; PDF/SVG\ncallers omit it.",
        -                      "properties": {
        -                        "drawing_type": {
        -                          "enum": [
        -                            "section",
        -                            "plan",
        -                            "elevation",
        -                            "isometric",
        -                            "detail"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "format": {
        -                          "enum": [
        -                            "DXF",
        -                            "PDF",
        -                            "SVG"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "layers": {
        -                          "anyOf": [
        -                            {
        -                              "items": {
        -                                "type": "string"
        -                              },
        -                              "type": "array"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ],
        -                          "default": null
        -                        },
        -                        "scale": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "sheet_size": {
        -                          "enum": [
        -                            "A1",
        -                            "A2",
        -                            "A3",
        -                            "A4"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "url": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "drawing_type",
        -                        "format",
        -                        "url",
        -                        "sheet_size",
        -                        "scale"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "parameters_used": {
        -                "additionalProperties": false,
        -                "description": "Schema § 1.2 — the parameter snapshot the engine actually used.\n\nSplits user-supplied values from engine defaults so customers can see\nwhich numbers came from them and which the engine filled in. Every\ndefaulted parameter SHOULD have a corresponding entry in `assumptions`\n— the bridge layer enforces this when wrapping engine output.",
        -                "properties": {
        -                  "assumptions": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "engine_defaults": {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  "user_supplied": {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  }
        -                },
        -                "type": "object"
        -              },
        -              "standard": {
        -                "enum": [
        -                  "CESMM4",
        -                  "NRM2",
        -                  "SMM7",
        -                  "MMHW"
        -                ],
        -                "type": "string"
        -              },
        -              "text_summary": {
        -                "maxLength": 2000,
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "totals_summary": {
        -                "additionalProperties": false,
        -                "description": "Schema § 1.4 — totals_summary as a typed wrapper around the free-form dict.\n\nWire shape is a flat object (`{\"concrete_m3\": {...}, \"rebar_t\": {...}}`).\nWe model it as `RootModel`-equivalent via `model_config(extra=\"allow\")`\n+ a single `__root__`-style `entries` dict. Pydantic v2 recommends\n`RootModel` for free-form roots; using a wrapper class keeps the import\nsurface uniform with the rest of this module.",
        -                "properties": {
        -                  "entries": {
        -                    "additionalProperties": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.4 — single material/work-class total entry.",
        -                      "properties": {
        -                        "quantity": {
        -                          "minimum": 0,
        -                          "type": "number"
        -                        },
        -                        "unit": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "quantity",
        -                        "unit"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "object"
        -                  }
        -                },
        -                "type": "object"
        -              },
        -              "warnings": {
        -                "items": {
        -                  "additionalProperties": false,
        -                  "description": "Schema § 1.8 — a non-fatal geometry advisory (56th-fire T2).\n\nThe wire projection of the engine's `core.GeometryWarning`. Advisory only:\na warning NEVER changes a measured quantity — it flags geometry that is\nvalid but likely a mistake (e.g. a stale dependent-height default). Present\non BOTH tiers — a correctness/safety signal, not a paid feature.",
        -                  "properties": {
        -                    "affected_params": {
        -                      "items": {
        -                        "type": "string"
        -                      },
        -                      "type": "array"
        -                    },
        -                    "code": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "detail": {
        -                      "additionalProperties": {
        -                        "type": "number"
        -                      },
        -                      "type": "object"
        -                    },
        -                    "message": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "severity": {
        -                      "enum": [
        -                        "info",
        -                        "advisory",
        -                        "caution"
        -                      ],
        -                      "type": "string"
        -                    }
        -                  },
        -                  "required": [
        -                    "code",
        -                    "severity",
        -                    "message"
        -                  ],
        -                  "type": "object"
        -                },
        -                "type": "array"
        -              }
        -            },
        -            "required": [
        -              "assembly_slug",
        -              "standard",
        -              "parameters_used",
        -              "boq_rows",
        -              "totals_summary",
        -              "text_summary"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      },
        -      "error": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        -            "properties": {
        -              "code": {
        -                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        -                "enum": [
        -                  "RATE_LIMIT_EXCEEDED",
        -                  "TIER_INSUFFICIENT",
        -                  "INVALID_INPUT",
        -                  "SCHEMA_VERSION_MISMATCH",
        -                  "SCHEMA_INVARIANT_VIOLATION",
        -                  "UPSTREAM_TIMEOUT",
        -                  "BACKEND_FAILURE",
        -                  "IP_BLOCKED",
        -                  "RESOURCE_NOT_FOUND",
        -                  "RENDER_FAILURE",
        -                  "OCR_LOW_CONFIDENCE",
        -                  "MANUAL_REVIEW_REQUIRED",
        -                  "ACCEPTANCE_REQUIRED",
        -                  "INVALID_TOKEN"
        -                ],
        -                "type": "string"
        -              },
        -              "details": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "message": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "recoverable": {
        -                "type": "boolean"
        -              },
        -              "retry_after_seconds": {
        -                "anyOf": [
        -                  {
        -                    "minimum": 0,
        -                    "type": "integer"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              }
        -            },
        -            "required": [
        -              "code",
        -              "message",
        -              "recoverable"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      }
        -    },
        -    "required": [
        -      "_meta"
        -    ],
        -    "type": "object"
        -  },
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "_meta": {
        -        "additionalProperties": false,
        -        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        -        "properties": {
        -          "deliverables": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        -                "properties": {
        -                  "docx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "dxf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "expires_at": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  },
        -                  "pdf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "xlsx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "expires_at"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "document_id": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "issued_at": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "rate_limit_remaining": {
        -            "anyOf": [
        -              {
        -                "minimum": 0,
        -                "type": "integer"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "request_id": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "schema_version": {
        -            "const": "1.0.0",
        -            "default": "1.0.0",
        -            "type": "string"
        -          },
        -          "scope_boundary": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        -                "properties": {
        -                  "not_in_scope": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "produced": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "recommended_companions": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "type": "string"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "produced",
        -                  "not_in_scope"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tier": {
        -            "enum": [
        -              "free",
        -              "paid"
        -            ],
        -            "type": "string"
        -          },
        -          "tier_upgrade": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        -                "properties": {
        -                  "available_tiers": {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        -                      "properties": {
        -                        "billing": {
        -                          "enum": [
        -                            "one_off",
        -                            "monthly",
        -                            "annual"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "currency": {
        -                          "enum": [
        -                            "GBP",
        -                            "SGD",
        -                            "EUR",
        -                            "USD",
        -                            "CAD",
        -                            "AUD",
        -                            "NZD",
        -                            "MYR"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "display_name": {
        -                          "type": "string"
        -                        },
        -                        "price_local": {
        -                          "type": "number"
        -                        },
        -                        "tier_slug": {
        -                          "enum": [
        -                            "7_day_pass",
        -                            "solo",
        -                            "studio",
        -                            "practice"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "unlock_summary": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "tier_slug",
        -                        "display_name",
        -                        "price_local",
        -                        "currency",
        -                        "billing",
        -                        "unlock_summary"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "current_tier": {
        -                    "const": "free",
        -                    "default": "free",
        -                    "type": "string"
        -                  },
        -                  "pass_credit": {
        -                    "anyOf": [
        -                      {
        -                        "additionalProperties": false,
        -                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        -                        "properties": {
        -                          "amount_local": {
        -                            "type": "number"
        -                          },
        -                          "applies_to": {
        -                            "const": "solo_first_month",
        -                            "default": "solo_first_month",
        -                            "type": "string"
        -                          },
        -                          "currency": {
        -                            "type": "string"
        -                          },
        -                          "redeemable_until": {
        -                            "type": "string"
        -                          }
        -                        },
        -                        "required": [
        -                          "amount_local",
        -                          "currency",
        -                          "redeemable_until"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "pricing_url": {
        -                    "default": "https://civilquants.com/pricing",
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "available_tiers"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tos_url": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "upgrade_hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "warranty_disclaimer": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          }
        -        },
        -        "required": [
        -          "request_id",
        -          "issued_at",
        -          "tier"
        -        ],
        -        "type": "object"
        -      },
        -      "data": {
        -        "default": null,
        -        "title": "Data"
        -      },
        -      "error": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        -            "properties": {
        -              "code": {
        -                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        -                "enum": [
        -                  "RATE_LIMIT_EXCEEDED",
        -                  "TIER_INSUFFICIENT",
        -                  "INVALID_INPUT",
        -                  "SCHEMA_VERSION_MISMATCH",
        -                  "SCHEMA_INVARIANT_VIOLATION",
        -                  "UPSTREAM_TIMEOUT",
        -                  "BACKEND_FAILURE",
        -                  "IP_BLOCKED",
        -                  "RESOURCE_NOT_FOUND",
        -                  "RENDER_FAILURE",
        -                  "OCR_LOW_CONFIDENCE",
        -                  "MANUAL_REVIEW_REQUIRED",
        -                  "ACCEPTANCE_REQUIRED",
        -                  "INVALID_TOKEN"
        -                ],
        -                "type": "string"
        -              },
        -              "details": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "message": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "recoverable": {
        -                "type": "boolean"
        -              },
        -              "retry_after_seconds": {
        -                "anyOf": [
        -                  {
        -                    "minimum": 0,
        -                    "type": "integer"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              }
        -            },
        -            "required": [
        -              "code",
        -              "message",
        -              "recoverable"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      }
        -    },
        -    "required": [
        -      "_meta"
        -    ],
        -    "type": "object"
        -  }
        -]New value: +[
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "_meta": {
        +        "additionalProperties": false,
        +        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        +        "properties": {
        +          "deliverables": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        +                "properties": {
        +                  "docx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "dxf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "expires_at": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  },
        +                  "pdf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "xlsx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "expires_at"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "document_id": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "issued_at": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "output_mode": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Surfaces what a trimmed ``output_mode`` withheld from ``data``.\n\nA trimmed mode (``summary`` / ``boq`` / ``boq_with_backup``) withholds\nalready-computed fields to keep the chat payload small. The withheld value\nreads to a client agent as \"capability missing\" (the box-culvert \"geometry\nbuilder isn't firing\" scare) rather than \"pared for size\": ``drawing`` and\n``audit_trail`` appear as ``null``, ``boq_rows`` as an empty list ``[]``\n(its type forbids ``null``) — both indistinguishable from a genuine absent\nresult. This names the withheld fields and the exact mode that brings each\nback, so the value is unambiguous. Absent on the default ``full_json`` mode\n— nothing is withheld, nothing to point at.",
        +                "properties": {
        +                  "mode": {
        +                    "enum": [
        +                      "summary",
        +                      "boq",
        +                      "boq_with_backup"
        +                    ],
        +                    "type": "string"
        +                  },
        +                  "omitted_fields": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "minItems": 1,
        +                    "type": "array"
        +                  },
        +                  "retrieve_with": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "mode",
        +                  "omitted_fields",
        +                  "retrieve_with"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "rate_limit_remaining": {
        +            "anyOf": [
        +              {
        +                "minimum": 0,
        +                "type": "integer"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "request_id": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "schema_version": {
        +            "const": "1.0.0",
        +            "default": "1.0.0",
        +            "type": "string"
        +          },
        +          "scope_boundary": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        +                "properties": {
        +                  "not_in_scope": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "produced": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "recommended_companions": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "type": "string"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "produced",
        +                  "not_in_scope"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tier": {
        +            "enum": [
        +              "free",
        +              "paid"
        +            ],
        +            "type": "string"
        +          },
        +          "tier_upgrade": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        +                "properties": {
        +                  "available_tiers": {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        +                      "properties": {
        +                        "billing": {
        +                          "enum": [
        +                            "one_off",
        +                            "monthly",
        +                            "annual"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "currency": {
        +                          "enum": [
        +                            "GBP",
        +                            "SGD",
        +                            "EUR",
        +                            "USD",
        +                            "CAD",
        +                            "AUD",
        +                            "NZD",
        +                            "MYR"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "display_name": {
        +                          "type": "string"
        +                        },
        +                        "price_local": {
        +                          "type": "number"
        +                        },
        +                        "tier_slug": {
        +                          "enum": [
        +                            "7_day_pass",
        +                            "solo",
        +                            "studio",
        +                            "practice"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "unlock_summary": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "tier_slug",
        +                        "display_name",
        +                        "price_local",
        +                        "currency",
        +                        "billing",
        +                        "unlock_summary"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "current_tier": {
        +                    "const": "free",
        +                    "default": "free",
        +                    "type": "string"
        +                  },
        +                  "pass_credit": {
        +                    "anyOf": [
        +                      {
        +                        "additionalProperties": false,
        +                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        +                        "properties": {
        +                          "amount_local": {
        +                            "type": "number"
        +                          },
        +                          "applies_to": {
        +                            "const": "solo_first_month",
        +                            "default": "solo_first_month",
        +                            "type": "string"
        +                          },
        +                          "currency": {
        +                            "type": "string"
        +                          },
        +                          "redeemable_until": {
        +                            "type": "string"
        +                          }
        +                        },
        +                        "required": [
        +                          "amount_local",
        +                          "currency",
        +                          "redeemable_until"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "pricing_url": {
        +                    "default": "https://civilquants.com/pricing",
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "available_tiers"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tos_url": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "upgrade_hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "warranty_disclaimer": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          }
        +        },
        +        "required": [
        +          "request_id",
        +          "issued_at",
        +          "tier"
        +        ],
        +        "type": "object"
        +      },
        +      "data": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Schema § 1.1 — the typed payload returned inside `MCPResponse[ComputeResult]`.\n\nFree-tier responses omit `drawings` (the downloadable CAD artefact\npointers — the paid differentiator); the bridge enforces this. The\n`audit_trail` and the inline `drawing` preview are present on BOTH tiers\n(V1 ALIGN / 60th-fire D + C). `text_summary` is bounded to 2000 chars —\nkeeps the LLM-facing summary token-cheap and forces longer narrative into\nBoQ row descriptions where it belongs. `warnings` is the non-fatal\ngeometry advisory list (both tiers).",
        +            "properties": {
        +              "assembly_slug": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "audit_trail": {
        +                "anyOf": [
        +                  {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.7 — paid-tier audit-trail entry.\n\nOne entry per BoQ row; `boq_row_index` ties to the row position in\n`ComputeResult.boq_rows`. `derivation` is the human-readable formula\nwalk-through; `formula` is the optional formal expression.",
        +                      "properties": {
        +                        "boq_row_index": {
        +                          "minimum": 0,
        +                          "type": "integer"
        +                        },
        +                        "derivation": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "formula": {
        +                          "anyOf": [
        +                            {
        +                              "type": "string"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ],
        +                          "default": null
        +                        },
        +                        "id": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "parameters_referenced": {
        +                          "items": {
        +                            "type": "string"
        +                          },
        +                          "type": "array"
        +                        }
        +                      },
        +                      "required": [
        +                        "id",
        +                        "boq_row_index",
        +                        "derivation"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "boq_rows": {
        +                "items": {
        +                  "additionalProperties": false,
        +                  "description": "Schema § 1.3 — a single bill row in the requested standard's format.\n\n`description` is the non-verbatim functional description per spec § 13.9 /\n§ 15 invariant — NEVER reproduces a standard's verbatim clause text.\n`rate` / `amount` ship null because rates are commodity data the customer\nowns; the engine's job is the measurement, not the pricing.",
        +                  "properties": {
        +                    "amount": {
        +                      "anyOf": [
        +                        {
        +                          "type": "number"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "attribution": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "audit_id": {
        +                      "anyOf": [
        +                        {
        +                          "type": "string"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "description": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "quantity": {
        +                      "minimum": 0,
        +                      "type": "number"
        +                    },
        +                    "rate": {
        +                      "anyOf": [
        +                        {
        +                          "type": "number"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "unit": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "work_section": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    }
        +                  },
        +                  "required": [
        +                    "work_section",
        +                    "description",
        +                    "quantity",
        +                    "unit",
        +                    "attribution"
        +                  ],
        +                  "type": "object"
        +                },
        +                "type": "array"
        +              },
        +              "drawing": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": false,
        +                    "description": "Schema § 1.6a — inline server-rendered SVG preview of the geometry.\n\nThe MCP mirror of the web ``/compute`` response's ``drawing`` field\n(``api.schemas.compute.DrawingRef``): the same on-screen dimensioned\ndrawing both tiers see in the workspace, surfaced on the MCP compute\nresponse so a chat client can render it inline (60th-fire item C). This\nis the on-screen preview — present on BOTH tiers per the free/paid\nboundary; the downloadable CAD artefacts (DXF / dimensioned PDF) remain\nthe paid differentiator via the export tools.\n\nDefined here rather than importing ``DrawingRef`` because the web\n``schemas`` package imports back into this module (``schemas.render``),\nso reusing it would create an import cycle — the MCP wire contract keeps\nits own copy, the same pattern as ``BoQRow`` / ``DrawingReference``.",
        +                    "properties": {
        +                      "entity_count": {
        +                        "minimum": 0,
        +                        "type": "integer"
        +                      },
        +                      "svg_b64": {
        +                        "minLength": 1,
        +                        "type": "string"
        +                      },
        +                      "unit_of_drawing": {
        +                        "const": "m",
        +                        "default": "m",
        +                        "type": "string"
        +                      },
        +                      "viewbox_height": {
        +                        "exclusiveMinimum": 0,
        +                        "type": "number"
        +                      },
        +                      "viewbox_width": {
        +                        "exclusiveMinimum": 0,
        +                        "type": "number"
        +                      },
        +                      "viewbox_x": {
        +                        "type": "number"
        +                      },
        +                      "viewbox_y": {
        +                        "type": "number"
        +                      }
        +                    },
        +                    "required": [
        +                      "svg_b64",
        +                      "viewbox_x",
        +                      "viewbox_y",
        +                      "viewbox_width",
        +                      "viewbox_height",
        +                      "entity_count"
        +                    ],
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "drawings": {
        +                "anyOf": [
        +                  {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.6 — paid-tier drawing artefact pointer.\n\n`url` is an R2-signed URL; expiry is carried in `_meta.deliverables.expires_at`\non the envelope (not duplicated here). `layers` is DXF-only; PDF/SVG\ncallers omit it.",
        +                      "properties": {
        +                        "drawing_type": {
        +                          "enum": [
        +                            "section",
        +                            "plan",
        +                            "elevation",
        +                            "isometric",
        +                            "detail"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "format": {
        +                          "enum": [
        +                            "DXF",
        +                            "PDF",
        +                            "SVG"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "layers": {
        +                          "anyOf": [
        +                            {
        +                              "items": {
        +                                "type": "string"
        +                              },
        +                              "type": "array"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ],
        +                          "default": null
        +                        },
        +                        "scale": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "sheet_size": {
        +                          "enum": [
        +                            "A1",
        +                            "A2",
        +                            "A3",
        +                            "A4"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "url": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "drawing_type",
        +                        "format",
        +                        "url",
        +                        "sheet_size",
        +                        "scale"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "parameters_used": {
        +                "additionalProperties": false,
        +                "description": "Schema § 1.2 — the parameter snapshot the engine actually used.\n\nSplits user-supplied values from engine defaults so customers can see\nwhich numbers came from them and which the engine filled in. Every\ndefaulted parameter SHOULD have a corresponding entry in `assumptions`\n— the bridge layer enforces this when wrapping engine output.",
        +                "properties": {
        +                  "assumptions": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "engine_defaults": {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  "user_supplied": {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  }
        +                },
        +                "type": "object"
        +              },
        +              "standard": {
        +                "enum": [
        +                  "CESMM4",
        +                  "NRM2",
        +                  "SMM7",
        +                  "MMHW"
        +                ],
        +                "type": "string"
        +              },
        +              "text_summary": {
        +                "maxLength": 2000,
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "totals_summary": {
        +                "additionalProperties": false,
        +                "description": "Schema § 1.4 — totals_summary as a typed wrapper around the free-form dict.\n\nWire shape is a flat object (`{\"concrete_m3\": {...}, \"rebar_t\": {...}}`).\nWe model it as `RootModel`-equivalent via `model_config(extra=\"allow\")`\n+ a single `__root__`-style `entries` dict. Pydantic v2 recommends\n`RootModel` for free-form roots; using a wrapper class keeps the import\nsurface uniform with the rest of this module.",
        +                "properties": {
        +                  "entries": {
        +                    "additionalProperties": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.4 — single material/work-class total entry.",
        +                      "properties": {
        +                        "quantity": {
        +                          "minimum": 0,
        +                          "type": "number"
        +                        },
        +                        "unit": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "quantity",
        +                        "unit"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "object"
        +                  }
        +                },
        +                "type": "object"
        +              },
        +              "warnings": {
        +                "items": {
        +                  "additionalProperties": false,
        +                  "description": "Schema § 1.8 — a non-fatal geometry advisory (56th-fire T2).\n\nThe wire projection of the engine's `core.GeometryWarning`. Advisory only:\na warning NEVER changes a measured quantity — it flags geometry that is\nvalid but likely a mistake (e.g. a stale dependent-height default). Present\non BOTH tiers — a correctness/safety signal, not a paid feature.",
        +                  "properties": {
        +                    "affected_params": {
        +                      "items": {
        +                        "type": "string"
        +                      },
        +                      "type": "array"
        +                    },
        +                    "code": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "detail": {
        +                      "additionalProperties": {
        +                        "type": "number"
        +                      },
        +                      "type": "object"
        +                    },
        +                    "message": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "severity": {
        +                      "enum": [
        +                        "info",
        +                        "advisory",
        +                        "caution"
        +                      ],
        +                      "type": "string"
        +                    }
        +                  },
        +                  "required": [
        +                    "code",
        +                    "severity",
        +                    "message"
        +                  ],
        +                  "type": "object"
        +                },
        +                "type": "array"
        +              }
        +            },
        +            "required": [
        +              "assembly_slug",
        +              "standard",
        +              "parameters_used",
        +              "boq_rows",
        +              "totals_summary",
        +              "text_summary"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      },
        +      "error": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        +            "properties": {
        +              "code": {
        +                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        +                "enum": [
        +                  "RATE_LIMIT_EXCEEDED",
        +                  "TIER_INSUFFICIENT",
        +                  "INVALID_INPUT",
        +                  "SCHEMA_VERSION_MISMATCH",
        +                  "SCHEMA_INVARIANT_VIOLATION",
        +                  "UPSTREAM_TIMEOUT",
        +                  "BACKEND_FAILURE",
        +                  "IP_BLOCKED",
        +                  "RESOURCE_NOT_FOUND",
        +                  "RENDER_FAILURE",
        +                  "OCR_LOW_CONFIDENCE",
        +                  "MANUAL_REVIEW_REQUIRED",
        +                  "ACCEPTANCE_REQUIRED",
        +                  "INVALID_TOKEN"
        +                ],
        +                "type": "string"
        +              },
        +              "details": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "message": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "recoverable": {
        +                "type": "boolean"
        +              },
        +              "retry_after_seconds": {
        +                "anyOf": [
        +                  {
        +                    "minimum": 0,
        +                    "type": "integer"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              }
        +            },
        +            "required": [
        +              "code",
        +              "message",
        +              "recoverable"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      }
        +    },
        +    "required": [
        +      "_meta"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "_meta": {
        +        "additionalProperties": false,
        +        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        +        "properties": {
        +          "deliverables": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        +                "properties": {
        +                  "docx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "dxf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "expires_at": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  },
        +                  "pdf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "xlsx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "expires_at"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "document_id": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "issued_at": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "output_mode": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Surfaces what a trimmed ``output_mode`` withheld from ``data``.\n\nA trimmed mode (``summary`` / ``boq`` / ``boq_with_backup``) withholds\nalready-computed fields to keep the chat payload small. The withheld value\nreads to a client agent as \"capability missing\" (the box-culvert \"geometry\nbuilder isn't firing\" scare) rather than \"pared for size\": ``drawing`` and\n``audit_trail`` appear as ``null``, ``boq_rows`` as an empty list ``[]``\n(its type forbids ``null``) — both indistinguishable from a genuine absent\nresult. This names the withheld fields and the exact mode that brings each\nback, so the value is unambiguous. Absent on the default ``full_json`` mode\n— nothing is withheld, nothing to point at.",
        +                "properties": {
        +                  "mode": {
        +                    "enum": [
        +                      "summary",
        +                      "boq",
        +                      "boq_with_backup"
        +                    ],
        +                    "type": "string"
        +                  },
        +                  "omitted_fields": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "minItems": 1,
        +                    "type": "array"
        +                  },
        +                  "retrieve_with": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "mode",
        +                  "omitted_fields",
        +                  "retrieve_with"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "rate_limit_remaining": {
        +            "anyOf": [
        +              {
        +                "minimum": 0,
        +                "type": "integer"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "request_id": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "schema_version": {
        +            "const": "1.0.0",
        +            "default": "1.0.0",
        +            "type": "string"
        +          },
        +          "scope_boundary": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        +                "properties": {
        +                  "not_in_scope": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "produced": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "recommended_companions": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "type": "string"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "produced",
        +                  "not_in_scope"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tier": {
        +            "enum": [
        +              "free",
        +              "paid"
        +            ],
        +            "type": "string"
        +          },
        +          "tier_upgrade": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        +                "properties": {
        +                  "available_tiers": {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        +                      "properties": {
        +                        "billing": {
        +                          "enum": [
        +                            "one_off",
        +                            "monthly",
        +                            "annual"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "currency": {
        +                          "enum": [
        +                            "GBP",
        +                            "SGD",
        +                            "EUR",
        +                            "USD",
        +                            "CAD",
        +                            "AUD",
        +                            "NZD",
        +                            "MYR"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "display_name": {
        +                          "type": "string"
        +                        },
        +                        "price_local": {
        +                          "type": "number"
        +                        },
        +                        "tier_slug": {
        +                          "enum": [
        +                            "7_day_pass",
        +                            "solo",
        +                            "studio",
        +                            "practice"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "unlock_summary": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "tier_slug",
        +                        "display_name",
        +                        "price_local",
        +                        "currency",
        +                        "billing",
        +                        "unlock_summary"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "current_tier": {
        +                    "const": "free",
        +                    "default": "free",
        +                    "type": "string"
        +                  },
        +                  "pass_credit": {
        +                    "anyOf": [
        +                      {
        +                        "additionalProperties": false,
        +                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        +                        "properties": {
        +                          "amount_local": {
        +                            "type": "number"
        +                          },
        +                          "applies_to": {
        +                            "const": "solo_first_month",
        +                            "default": "solo_first_month",
        +                            "type": "string"
        +                          },
        +                          "currency": {
        +                            "type": "string"
        +                          },
        +                          "redeemable_until": {
        +                            "type": "string"
        +                          }
        +                        },
        +                        "required": [
        +                          "amount_local",
        +                          "currency",
        +                          "redeemable_until"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "pricing_url": {
        +                    "default": "https://civilquants.com/pricing",
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "available_tiers"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tos_url": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "upgrade_hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "warranty_disclaimer": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          }
        +        },
        +        "required": [
        +          "request_id",
        +          "issued_at",
        +          "tier"
        +        ],
        +        "type": "object"
        +      },
        +      "data": {
        +        "default": null,
        +        "title": "Data"
        +      },
        +      "error": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        +            "properties": {
        +              "code": {
        +                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        +                "enum": [
        +                  "RATE_LIMIT_EXCEEDED",
        +                  "TIER_INSUFFICIENT",
        +                  "INVALID_INPUT",
        +                  "SCHEMA_VERSION_MISMATCH",
        +                  "SCHEMA_INVARIANT_VIOLATION",
        +                  "UPSTREAM_TIMEOUT",
        +                  "BACKEND_FAILURE",
        +                  "IP_BLOCKED",
        +                  "RESOURCE_NOT_FOUND",
        +                  "RENDER_FAILURE",
        +                  "OCR_LOW_CONFIDENCE",
        +                  "MANUAL_REVIEW_REQUIRED",
        +                  "ACCEPTANCE_REQUIRED",
        +                  "INVALID_TOKEN"
        +                ],
        +                "type": "string"
        +              },
        +              "details": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "message": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "recoverable": {
        +                "type": "boolean"
        +              },
        +              "retry_after_seconds": {
        +                "anyOf": [
        +                  {
        +                    "minimum": 0,
        +                    "type": "integer"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              }
        +            },
        +            "required": [
        +              "code",
        +              "message",
        +              "recoverable"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      }
        +    },
        +    "required": [
        +      "_meta"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedcompute_manhole1 field changed
      • changedOutput schema / properties / result / anyOf
        Previous value: -[
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "_meta": {
        -        "additionalProperties": false,
        -        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        -        "properties": {
        -          "deliverables": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        -                "properties": {
        -                  "docx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "dxf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "expires_at": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  },
        -                  "pdf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "xlsx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "expires_at"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "document_id": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "issued_at": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "rate_limit_remaining": {
        -            "anyOf": [
        -              {
        -                "minimum": 0,
        -                "type": "integer"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "request_id": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "schema_version": {
        -            "const": "1.0.0",
        -            "default": "1.0.0",
        -            "type": "string"
        -          },
        -          "scope_boundary": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        -                "properties": {
        -                  "not_in_scope": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "produced": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "recommended_companions": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "type": "string"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "produced",
        -                  "not_in_scope"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tier": {
        -            "enum": [
        -              "free",
        -              "paid"
        -            ],
        -            "type": "string"
        -          },
        -          "tier_upgrade": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        -                "properties": {
        -                  "available_tiers": {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        -                      "properties": {
        -                        "billing": {
        -                          "enum": [
        -                            "one_off",
        -                            "monthly",
        -                            "annual"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "currency": {
        -                          "enum": [
        -                            "GBP",
        -                            "SGD",
        -                            "EUR",
        -                            "USD",
        -                            "CAD",
        -                            "AUD",
        -                            "NZD",
        -                            "MYR"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "display_name": {
        -                          "type": "string"
        -                        },
        -                        "price_local": {
        -                          "type": "number"
        -                        },
        -                        "tier_slug": {
        -                          "enum": [
        -                            "7_day_pass",
        -                            "solo",
        -                            "studio",
        -                            "practice"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "unlock_summary": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "tier_slug",
        -                        "display_name",
        -                        "price_local",
        -                        "currency",
        -                        "billing",
        -                        "unlock_summary"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "current_tier": {
        -                    "const": "free",
        -                    "default": "free",
        -                    "type": "string"
        -                  },
        -                  "pass_credit": {
        -                    "anyOf": [
        -                      {
        -                        "additionalProperties": false,
        -                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        -                        "properties": {
        -                          "amount_local": {
        -                            "type": "number"
        -                          },
        -                          "applies_to": {
        -                            "const": "solo_first_month",
        -                            "default": "solo_first_month",
        -                            "type": "string"
        -                          },
        -                          "currency": {
        -                            "type": "string"
        -                          },
        -                          "redeemable_until": {
        -                            "type": "string"
        -                          }
        -                        },
        -                        "required": [
        -                          "amount_local",
        -                          "currency",
        -                          "redeemable_until"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "pricing_url": {
        -                    "default": "https://civilquants.com/pricing",
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "available_tiers"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tos_url": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "upgrade_hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "warranty_disclaimer": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          }
        -        },
        -        "required": [
        -          "request_id",
        -          "issued_at",
        -          "tier"
        -        ],
        -        "type": "object"
        -      },
        -      "data": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Schema § 1.1 — the typed payload returned inside `MCPResponse[ComputeResult]`.\n\nFree-tier responses omit `drawings` (the downloadable CAD artefact\npointers — the paid differentiator); the bridge enforces this. The\n`audit_trail` and the inline `drawing` preview are present on BOTH tiers\n(V1 ALIGN / 60th-fire D + C). `text_summary` is bounded to 2000 chars —\nkeeps the LLM-facing summary token-cheap and forces longer narrative into\nBoQ row descriptions where it belongs. `warnings` is the non-fatal\ngeometry advisory list (both tiers).",
        -            "properties": {
        -              "assembly_slug": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "audit_trail": {
        -                "anyOf": [
        -                  {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.7 — paid-tier audit-trail entry.\n\nOne entry per BoQ row; `boq_row_index` ties to the row position in\n`ComputeResult.boq_rows`. `derivation` is the human-readable formula\nwalk-through; `formula` is the optional formal expression.",
        -                      "properties": {
        -                        "boq_row_index": {
        -                          "minimum": 0,
        -                          "type": "integer"
        -                        },
        -                        "derivation": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "formula": {
        -                          "anyOf": [
        -                            {
        -                              "type": "string"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ],
        -                          "default": null
        -                        },
        -                        "id": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "parameters_referenced": {
        -                          "items": {
        -                            "type": "string"
        -                          },
        -                          "type": "array"
        -                        }
        -                      },
        -                      "required": [
        -                        "id",
        -                        "boq_row_index",
        -                        "derivation"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "boq_rows": {
        -                "items": {
        -                  "additionalProperties": false,
        -                  "description": "Schema § 1.3 — a single bill row in the requested standard's format.\n\n`description` is the non-verbatim functional description per spec § 13.9 /\n§ 15 invariant — NEVER reproduces a standard's verbatim clause text.\n`rate` / `amount` ship null because rates are commodity data the customer\nowns; the engine's job is the measurement, not the pricing.",
        -                  "properties": {
        -                    "amount": {
        -                      "anyOf": [
        -                        {
        -                          "type": "number"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "attribution": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "audit_id": {
        -                      "anyOf": [
        -                        {
        -                          "type": "string"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "description": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "quantity": {
        -                      "minimum": 0,
        -                      "type": "number"
        -                    },
        -                    "rate": {
        -                      "anyOf": [
        -                        {
        -                          "type": "number"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "unit": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "work_section": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    }
        -                  },
        -                  "required": [
        -                    "work_section",
        -                    "description",
        -                    "quantity",
        -                    "unit",
        -                    "attribution"
        -                  ],
        -                  "type": "object"
        -                },
        -                "type": "array"
        -              },
        -              "drawing": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": false,
        -                    "description": "Schema § 1.6a — inline server-rendered SVG preview of the geometry.\n\nThe MCP mirror of the web ``/compute`` response's ``drawing`` field\n(``api.schemas.compute.DrawingRef``): the same on-screen dimensioned\ndrawing both tiers see in the workspace, surfaced on the MCP compute\nresponse so a chat client can render it inline (60th-fire item C). This\nis the on-screen preview — present on BOTH tiers per the free/paid\nboundary; the downloadable CAD artefacts (DXF / dimensioned PDF) remain\nthe paid differentiator via the export tools.\n\nDefined here rather than importing ``DrawingRef`` because the web\n``schemas`` package imports back into this module (``schemas.render``),\nso reusing it would create an import cycle — the MCP wire contract keeps\nits own copy, the same pattern as ``BoQRow`` / ``DrawingReference``.",
        -                    "properties": {
        -                      "entity_count": {
        -                        "minimum": 0,
        -                        "type": "integer"
        -                      },
        -                      "svg_b64": {
        -                        "minLength": 1,
        -                        "type": "string"
        -                      },
        -                      "unit_of_drawing": {
        -                        "const": "m",
        -                        "default": "m",
        -                        "type": "string"
        -                      },
        -                      "viewbox_height": {
        -                        "exclusiveMinimum": 0,
        -                        "type": "number"
        -                      },
        -                      "viewbox_width": {
        -                        "exclusiveMinimum": 0,
        -                        "type": "number"
        -                      },
        -                      "viewbox_x": {
        -                        "type": "number"
        -                      },
        -                      "viewbox_y": {
        -                        "type": "number"
        -                      }
        -                    },
        -                    "required": [
        -                      "svg_b64",
        -                      "viewbox_x",
        -                      "viewbox_y",
        -                      "viewbox_width",
        -                      "viewbox_height",
        -                      "entity_count"
        -                    ],
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "drawings": {
        -                "anyOf": [
        -                  {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.6 — paid-tier drawing artefact pointer.\n\n`url` is an R2-signed URL; expiry is carried in `_meta.deliverables.expires_at`\non the envelope (not duplicated here). `layers` is DXF-only; PDF/SVG\ncallers omit it.",
        -                      "properties": {
        -                        "drawing_type": {
        -                          "enum": [
        -                            "section",
        -                            "plan",
        -                            "elevation",
        -                            "isometric",
        -                            "detail"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "format": {
        -                          "enum": [
        -                            "DXF",
        -                            "PDF",
        -                            "SVG"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "layers": {
        -                          "anyOf": [
        -                            {
        -                              "items": {
        -                                "type": "string"
        -                              },
        -                              "type": "array"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ],
        -                          "default": null
        -                        },
        -                        "scale": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "sheet_size": {
        -                          "enum": [
        -                            "A1",
        -                            "A2",
        -                            "A3",
        -                            "A4"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "url": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "drawing_type",
        -                        "format",
        -                        "url",
        -                        "sheet_size",
        -                        "scale"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "parameters_used": {
        -                "additionalProperties": false,
        -                "description": "Schema § 1.2 — the parameter snapshot the engine actually used.\n\nSplits user-supplied values from engine defaults so customers can see\nwhich numbers came from them and which the engine filled in. Every\ndefaulted parameter SHOULD have a corresponding entry in `assumptions`\n— the bridge layer enforces this when wrapping engine output.",
        -                "properties": {
        -                  "assumptions": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "engine_defaults": {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  "user_supplied": {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  }
        -                },
        -                "type": "object"
        -              },
        -              "standard": {
        -                "enum": [
        -                  "CESMM4",
        -                  "NRM2",
        -                  "SMM7",
        -                  "MMHW"
        -                ],
        -                "type": "string"
        -              },
        -              "text_summary": {
        -                "maxLength": 2000,
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "totals_summary": {
        -                "additionalProperties": false,
        -                "description": "Schema § 1.4 — totals_summary as a typed wrapper around the free-form dict.\n\nWire shape is a flat object (`{\"concrete_m3\": {...}, \"rebar_t\": {...}}`).\nWe model it as `RootModel`-equivalent via `model_config(extra=\"allow\")`\n+ a single `__root__`-style `entries` dict. Pydantic v2 recommends\n`RootModel` for free-form roots; using a wrapper class keeps the import\nsurface uniform with the rest of this module.",
        -                "properties": {
        -                  "entries": {
        -                    "additionalProperties": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.4 — single material/work-class total entry.",
        -                      "properties": {
        -                        "quantity": {
        -                          "minimum": 0,
        -                          "type": "number"
        -                        },
        -                        "unit": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "quantity",
        -                        "unit"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "object"
        -                  }
        -                },
        -                "type": "object"
        -              },
        -              "warnings": {
        -                "items": {
        -                  "additionalProperties": false,
        -                  "description": "Schema § 1.8 — a non-fatal geometry advisory (56th-fire T2).\n\nThe wire projection of the engine's `core.GeometryWarning`. Advisory only:\na warning NEVER changes a measured quantity — it flags geometry that is\nvalid but likely a mistake (e.g. a stale dependent-height default). Present\non BOTH tiers — a correctness/safety signal, not a paid feature.",
        -                  "properties": {
        -                    "affected_params": {
        -                      "items": {
        -                        "type": "string"
        -                      },
        -                      "type": "array"
        -                    },
        -                    "code": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "detail": {
        -                      "additionalProperties": {
        -                        "type": "number"
        -                      },
        -                      "type": "object"
        -                    },
        -                    "message": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "severity": {
        -                      "enum": [
        -                        "info",
        -                        "advisory",
        -                        "caution"
        -                      ],
        -                      "type": "string"
        -                    }
        -                  },
        -                  "required": [
        -                    "code",
        -                    "severity",
        -                    "message"
        -                  ],
        -                  "type": "object"
        -                },
        -                "type": "array"
        -              }
        -            },
        -            "required": [
        -              "assembly_slug",
        -              "standard",
        -              "parameters_used",
        -              "boq_rows",
        -              "totals_summary",
        -              "text_summary"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      },
        -      "error": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        -            "properties": {
        -              "code": {
        -                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        -                "enum": [
        -                  "RATE_LIMIT_EXCEEDED",
        -                  "TIER_INSUFFICIENT",
        -                  "INVALID_INPUT",
        -                  "SCHEMA_VERSION_MISMATCH",
        -                  "SCHEMA_INVARIANT_VIOLATION",
        -                  "UPSTREAM_TIMEOUT",
        -                  "BACKEND_FAILURE",
        -                  "IP_BLOCKED",
        -                  "RESOURCE_NOT_FOUND",
        -                  "RENDER_FAILURE",
        -                  "OCR_LOW_CONFIDENCE",
        -                  "MANUAL_REVIEW_REQUIRED",
        -                  "ACCEPTANCE_REQUIRED",
        -                  "INVALID_TOKEN"
        -                ],
        -                "type": "string"
        -              },
        -              "details": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "message": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "recoverable": {
        -                "type": "boolean"
        -              },
        -              "retry_after_seconds": {
        -                "anyOf": [
        -                  {
        -                    "minimum": 0,
        -                    "type": "integer"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              }
        -            },
        -            "required": [
        -              "code",
        -              "message",
        -              "recoverable"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      }
        -    },
        -    "required": [
        -      "_meta"
        -    ],
        -    "type": "object"
        -  },
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "_meta": {
        -        "additionalProperties": false,
        -        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        -        "properties": {
        -          "deliverables": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        -                "properties": {
        -                  "docx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "dxf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "expires_at": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  },
        -                  "pdf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "xlsx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "expires_at"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "document_id": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "issued_at": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "rate_limit_remaining": {
        -            "anyOf": [
        -              {
        -                "minimum": 0,
        -                "type": "integer"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "request_id": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "schema_version": {
        -            "const": "1.0.0",
        -            "default": "1.0.0",
        -            "type": "string"
        -          },
        -          "scope_boundary": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        -                "properties": {
        -                  "not_in_scope": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "produced": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "recommended_companions": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "type": "string"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "produced",
        -                  "not_in_scope"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tier": {
        -            "enum": [
        -              "free",
        -              "paid"
        -            ],
        -            "type": "string"
        -          },
        -          "tier_upgrade": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        -                "properties": {
        -                  "available_tiers": {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        -                      "properties": {
        -                        "billing": {
        -                          "enum": [
        -                            "one_off",
        -                            "monthly",
        -                            "annual"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "currency": {
        -                          "enum": [
        -                            "GBP",
        -                            "SGD",
        -                            "EUR",
        -                            "USD",
        -                            "CAD",
        -                            "AUD",
        -                            "NZD",
        -                            "MYR"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "display_name": {
        -                          "type": "string"
        -                        },
        -                        "price_local": {
        -                          "type": "number"
        -                        },
        -                        "tier_slug": {
        -                          "enum": [
        -                            "7_day_pass",
        -                            "solo",
        -                            "studio",
        -                            "practice"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "unlock_summary": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "tier_slug",
        -                        "display_name",
        -                        "price_local",
        -                        "currency",
        -                        "billing",
        -                        "unlock_summary"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "current_tier": {
        -                    "const": "free",
        -                    "default": "free",
        -                    "type": "string"
        -                  },
        -                  "pass_credit": {
        -                    "anyOf": [
        -                      {
        -                        "additionalProperties": false,
        -                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        -                        "properties": {
        -                          "amount_local": {
        -                            "type": "number"
        -                          },
        -                          "applies_to": {
        -                            "const": "solo_first_month",
        -                            "default": "solo_first_month",
        -                            "type": "string"
        -                          },
        -                          "currency": {
        -                            "type": "string"
        -                          },
        -                          "redeemable_until": {
        -                            "type": "string"
        -                          }
        -                        },
        -                        "required": [
        -                          "amount_local",
        -                          "currency",
        -                          "redeemable_until"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "pricing_url": {
        -                    "default": "https://civilquants.com/pricing",
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "available_tiers"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tos_url": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "upgrade_hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "warranty_disclaimer": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          }
        -        },
        -        "required": [
        -          "request_id",
        -          "issued_at",
        -          "tier"
        -        ],
        -        "type": "object"
        -      },
        -      "data": {
        -        "default": null,
        -        "title": "Data"
        -      },
        -      "error": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        -            "properties": {
        -              "code": {
        -                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        -                "enum": [
        -                  "RATE_LIMIT_EXCEEDED",
        -                  "TIER_INSUFFICIENT",
        -                  "INVALID_INPUT",
        -                  "SCHEMA_VERSION_MISMATCH",
        -                  "SCHEMA_INVARIANT_VIOLATION",
        -                  "UPSTREAM_TIMEOUT",
        -                  "BACKEND_FAILURE",
        -                  "IP_BLOCKED",
        -                  "RESOURCE_NOT_FOUND",
        -                  "RENDER_FAILURE",
        -                  "OCR_LOW_CONFIDENCE",
        -                  "MANUAL_REVIEW_REQUIRED",
        -                  "ACCEPTANCE_REQUIRED",
        -                  "INVALID_TOKEN"
        -                ],
        -                "type": "string"
        -              },
        -              "details": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "message": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "recoverable": {
        -                "type": "boolean"
        -              },
        -              "retry_after_seconds": {
        -                "anyOf": [
        -                  {
        -                    "minimum": 0,
        -                    "type": "integer"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              }
        -            },
        -            "required": [
        -              "code",
        -              "message",
        -              "recoverable"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      }
        -    },
        -    "required": [
        -      "_meta"
        -    ],
        -    "type": "object"
        -  }
        -]New value: +[
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "_meta": {
        +        "additionalProperties": false,
        +        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        +        "properties": {
        +          "deliverables": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        +                "properties": {
        +                  "docx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "dxf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "expires_at": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  },
        +                  "pdf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "xlsx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "expires_at"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "document_id": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "issued_at": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "output_mode": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Surfaces what a trimmed ``output_mode`` withheld from ``data``.\n\nA trimmed mode (``summary`` / ``boq`` / ``boq_with_backup``) withholds\nalready-computed fields to keep the chat payload small. The withheld value\nreads to a client agent as \"capability missing\" (the box-culvert \"geometry\nbuilder isn't firing\" scare) rather than \"pared for size\": ``drawing`` and\n``audit_trail`` appear as ``null``, ``boq_rows`` as an empty list ``[]``\n(its type forbids ``null``) — both indistinguishable from a genuine absent\nresult. This names the withheld fields and the exact mode that brings each\nback, so the value is unambiguous. Absent on the default ``full_json`` mode\n— nothing is withheld, nothing to point at.",
        +                "properties": {
        +                  "mode": {
        +                    "enum": [
        +                      "summary",
        +                      "boq",
        +                      "boq_with_backup"
        +                    ],
        +                    "type": "string"
        +                  },
        +                  "omitted_fields": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "minItems": 1,
        +                    "type": "array"
        +                  },
        +                  "retrieve_with": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "mode",
        +                  "omitted_fields",
        +                  "retrieve_with"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "rate_limit_remaining": {
        +            "anyOf": [
        +              {
        +                "minimum": 0,
        +                "type": "integer"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "request_id": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "schema_version": {
        +            "const": "1.0.0",
        +            "default": "1.0.0",
        +            "type": "string"
        +          },
        +          "scope_boundary": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        +                "properties": {
        +                  "not_in_scope": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "produced": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "recommended_companions": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "type": "string"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "produced",
        +                  "not_in_scope"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tier": {
        +            "enum": [
        +              "free",
        +              "paid"
        +            ],
        +            "type": "string"
        +          },
        +          "tier_upgrade": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        +                "properties": {
        +                  "available_tiers": {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        +                      "properties": {
        +                        "billing": {
        +                          "enum": [
        +                            "one_off",
        +                            "monthly",
        +                            "annual"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "currency": {
        +                          "enum": [
        +                            "GBP",
        +                            "SGD",
        +                            "EUR",
        +                            "USD",
        +                            "CAD",
        +                            "AUD",
        +                            "NZD",
        +                            "MYR"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "display_name": {
        +                          "type": "string"
        +                        },
        +                        "price_local": {
        +                          "type": "number"
        +                        },
        +                        "tier_slug": {
        +                          "enum": [
        +                            "7_day_pass",
        +                            "solo",
        +                            "studio",
        +                            "practice"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "unlock_summary": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "tier_slug",
        +                        "display_name",
        +                        "price_local",
        +                        "currency",
        +                        "billing",
        +                        "unlock_summary"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "current_tier": {
        +                    "const": "free",
        +                    "default": "free",
        +                    "type": "string"
        +                  },
        +                  "pass_credit": {
        +                    "anyOf": [
        +                      {
        +                        "additionalProperties": false,
        +                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        +                        "properties": {
        +                          "amount_local": {
        +                            "type": "number"
        +                          },
        +                          "applies_to": {
        +                            "const": "solo_first_month",
        +                            "default": "solo_first_month",
        +                            "type": "string"
        +                          },
        +                          "currency": {
        +                            "type": "string"
        +                          },
        +                          "redeemable_until": {
        +                            "type": "string"
        +                          }
        +                        },
        +                        "required": [
        +                          "amount_local",
        +                          "currency",
        +                          "redeemable_until"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "pricing_url": {
        +                    "default": "https://civilquants.com/pricing",
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "available_tiers"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tos_url": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "upgrade_hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "warranty_disclaimer": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          }
        +        },
        +        "required": [
        +          "request_id",
        +          "issued_at",
        +          "tier"
        +        ],
        +        "type": "object"
        +      },
        +      "data": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Schema § 1.1 — the typed payload returned inside `MCPResponse[ComputeResult]`.\n\nFree-tier responses omit `drawings` (the downloadable CAD artefact\npointers — the paid differentiator); the bridge enforces this. The\n`audit_trail` and the inline `drawing` preview are present on BOTH tiers\n(V1 ALIGN / 60th-fire D + C). `text_summary` is bounded to 2000 chars —\nkeeps the LLM-facing summary token-cheap and forces longer narrative into\nBoQ row descriptions where it belongs. `warnings` is the non-fatal\ngeometry advisory list (both tiers).",
        +            "properties": {
        +              "assembly_slug": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "audit_trail": {
        +                "anyOf": [
        +                  {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.7 — paid-tier audit-trail entry.\n\nOne entry per BoQ row; `boq_row_index` ties to the row position in\n`ComputeResult.boq_rows`. `derivation` is the human-readable formula\nwalk-through; `formula` is the optional formal expression.",
        +                      "properties": {
        +                        "boq_row_index": {
        +                          "minimum": 0,
        +                          "type": "integer"
        +                        },
        +                        "derivation": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "formula": {
        +                          "anyOf": [
        +                            {
        +                              "type": "string"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ],
        +                          "default": null
        +                        },
        +                        "id": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "parameters_referenced": {
        +                          "items": {
        +                            "type": "string"
        +                          },
        +                          "type": "array"
        +                        }
        +                      },
        +                      "required": [
        +                        "id",
        +                        "boq_row_index",
        +                        "derivation"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "boq_rows": {
        +                "items": {
        +                  "additionalProperties": false,
        +                  "description": "Schema § 1.3 — a single bill row in the requested standard's format.\n\n`description` is the non-verbatim functional description per spec § 13.9 /\n§ 15 invariant — NEVER reproduces a standard's verbatim clause text.\n`rate` / `amount` ship null because rates are commodity data the customer\nowns; the engine's job is the measurement, not the pricing.",
        +                  "properties": {
        +                    "amount": {
        +                      "anyOf": [
        +                        {
        +                          "type": "number"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "attribution": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "audit_id": {
        +                      "anyOf": [
        +                        {
        +                          "type": "string"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "description": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "quantity": {
        +                      "minimum": 0,
        +                      "type": "number"
        +                    },
        +                    "rate": {
        +                      "anyOf": [
        +                        {
        +                          "type": "number"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "unit": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "work_section": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    }
        +                  },
        +                  "required": [
        +                    "work_section",
        +                    "description",
        +                    "quantity",
        +                    "unit",
        +                    "attribution"
        +                  ],
        +                  "type": "object"
        +                },
        +                "type": "array"
        +              },
        +              "drawing": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": false,
        +                    "description": "Schema § 1.6a — inline server-rendered SVG preview of the geometry.\n\nThe MCP mirror of the web ``/compute`` response's ``drawing`` field\n(``api.schemas.compute.DrawingRef``): the same on-screen dimensioned\ndrawing both tiers see in the workspace, surfaced on the MCP compute\nresponse so a chat client can render it inline (60th-fire item C). This\nis the on-screen preview — present on BOTH tiers per the free/paid\nboundary; the downloadable CAD artefacts (DXF / dimensioned PDF) remain\nthe paid differentiator via the export tools.\n\nDefined here rather than importing ``DrawingRef`` because the web\n``schemas`` package imports back into this module (``schemas.render``),\nso reusing it would create an import cycle — the MCP wire contract keeps\nits own copy, the same pattern as ``BoQRow`` / ``DrawingReference``.",
        +                    "properties": {
        +                      "entity_count": {
        +                        "minimum": 0,
        +                        "type": "integer"
        +                      },
        +                      "svg_b64": {
        +                        "minLength": 1,
        +                        "type": "string"
        +                      },
        +                      "unit_of_drawing": {
        +                        "const": "m",
        +                        "default": "m",
        +                        "type": "string"
        +                      },
        +                      "viewbox_height": {
        +                        "exclusiveMinimum": 0,
        +                        "type": "number"
        +                      },
        +                      "viewbox_width": {
        +                        "exclusiveMinimum": 0,
        +                        "type": "number"
        +                      },
        +                      "viewbox_x": {
        +                        "type": "number"
        +                      },
        +                      "viewbox_y": {
        +                        "type": "number"
        +                      }
        +                    },
        +                    "required": [
        +                      "svg_b64",
        +                      "viewbox_x",
        +                      "viewbox_y",
        +                      "viewbox_width",
        +                      "viewbox_height",
        +                      "entity_count"
        +                    ],
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "drawings": {
        +                "anyOf": [
        +                  {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.6 — paid-tier drawing artefact pointer.\n\n`url` is an R2-signed URL; expiry is carried in `_meta.deliverables.expires_at`\non the envelope (not duplicated here). `layers` is DXF-only; PDF/SVG\ncallers omit it.",
        +                      "properties": {
        +                        "drawing_type": {
        +                          "enum": [
        +                            "section",
        +                            "plan",
        +                            "elevation",
        +                            "isometric",
        +                            "detail"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "format": {
        +                          "enum": [
        +                            "DXF",
        +                            "PDF",
        +                            "SVG"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "layers": {
        +                          "anyOf": [
        +                            {
        +                              "items": {
        +                                "type": "string"
        +                              },
        +                              "type": "array"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ],
        +                          "default": null
        +                        },
        +                        "scale": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "sheet_size": {
        +                          "enum": [
        +                            "A1",
        +                            "A2",
        +                            "A3",
        +                            "A4"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "url": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "drawing_type",
        +                        "format",
        +                        "url",
        +                        "sheet_size",
        +                        "scale"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "parameters_used": {
        +                "additionalProperties": false,
        +                "description": "Schema § 1.2 — the parameter snapshot the engine actually used.\n\nSplits user-supplied values from engine defaults so customers can see\nwhich numbers came from them and which the engine filled in. Every\ndefaulted parameter SHOULD have a corresponding entry in `assumptions`\n— the bridge layer enforces this when wrapping engine output.",
        +                "properties": {
        +                  "assumptions": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "engine_defaults": {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  "user_supplied": {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  }
        +                },
        +                "type": "object"
        +              },
        +              "standard": {
        +                "enum": [
        +                  "CESMM4",
        +                  "NRM2",
        +                  "SMM7",
        +                  "MMHW"
        +                ],
        +                "type": "string"
        +              },
        +              "text_summary": {
        +                "maxLength": 2000,
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "totals_summary": {
        +                "additionalProperties": false,
        +                "description": "Schema § 1.4 — totals_summary as a typed wrapper around the free-form dict.\n\nWire shape is a flat object (`{\"concrete_m3\": {...}, \"rebar_t\": {...}}`).\nWe model it as `RootModel`-equivalent via `model_config(extra=\"allow\")`\n+ a single `__root__`-style `entries` dict. Pydantic v2 recommends\n`RootModel` for free-form roots; using a wrapper class keeps the import\nsurface uniform with the rest of this module.",
        +                "properties": {
        +                  "entries": {
        +                    "additionalProperties": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.4 — single material/work-class total entry.",
        +                      "properties": {
        +                        "quantity": {
        +                          "minimum": 0,
        +                          "type": "number"
        +                        },
        +                        "unit": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "quantity",
        +                        "unit"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "object"
        +                  }
        +                },
        +                "type": "object"
        +              },
        +              "warnings": {
        +                "items": {
        +                  "additionalProperties": false,
        +                  "description": "Schema § 1.8 — a non-fatal geometry advisory (56th-fire T2).\n\nThe wire projection of the engine's `core.GeometryWarning`. Advisory only:\na warning NEVER changes a measured quantity — it flags geometry that is\nvalid but likely a mistake (e.g. a stale dependent-height default). Present\non BOTH tiers — a correctness/safety signal, not a paid feature.",
        +                  "properties": {
        +                    "affected_params": {
        +                      "items": {
        +                        "type": "string"
        +                      },
        +                      "type": "array"
        +                    },
        +                    "code": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "detail": {
        +                      "additionalProperties": {
        +                        "type": "number"
        +                      },
        +                      "type": "object"
        +                    },
        +                    "message": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "severity": {
        +                      "enum": [
        +                        "info",
        +                        "advisory",
        +                        "caution"
        +                      ],
        +                      "type": "string"
        +                    }
        +                  },
        +                  "required": [
        +                    "code",
        +                    "severity",
        +                    "message"
        +                  ],
        +                  "type": "object"
        +                },
        +                "type": "array"
        +              }
        +            },
        +            "required": [
        +              "assembly_slug",
        +              "standard",
        +              "parameters_used",
        +              "boq_rows",
        +              "totals_summary",
        +              "text_summary"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      },
        +      "error": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        +            "properties": {
        +              "code": {
        +                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        +                "enum": [
        +                  "RATE_LIMIT_EXCEEDED",
        +                  "TIER_INSUFFICIENT",
        +                  "INVALID_INPUT",
        +                  "SCHEMA_VERSION_MISMATCH",
        +                  "SCHEMA_INVARIANT_VIOLATION",
        +                  "UPSTREAM_TIMEOUT",
        +                  "BACKEND_FAILURE",
        +                  "IP_BLOCKED",
        +                  "RESOURCE_NOT_FOUND",
        +                  "RENDER_FAILURE",
        +                  "OCR_LOW_CONFIDENCE",
        +                  "MANUAL_REVIEW_REQUIRED",
        +                  "ACCEPTANCE_REQUIRED",
        +                  "INVALID_TOKEN"
        +                ],
        +                "type": "string"
        +              },
        +              "details": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "message": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "recoverable": {
        +                "type": "boolean"
        +              },
        +              "retry_after_seconds": {
        +                "anyOf": [
        +                  {
        +                    "minimum": 0,
        +                    "type": "integer"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              }
        +            },
        +            "required": [
        +              "code",
        +              "message",
        +              "recoverable"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      }
        +    },
        +    "required": [
        +      "_meta"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "_meta": {
        +        "additionalProperties": false,
        +        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        +        "properties": {
        +          "deliverables": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        +                "properties": {
        +                  "docx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "dxf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "expires_at": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  },
        +                  "pdf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "xlsx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "expires_at"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "document_id": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "issued_at": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "output_mode": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Surfaces what a trimmed ``output_mode`` withheld from ``data``.\n\nA trimmed mode (``summary`` / ``boq`` / ``boq_with_backup``) withholds\nalready-computed fields to keep the chat payload small. The withheld value\nreads to a client agent as \"capability missing\" (the box-culvert \"geometry\nbuilder isn't firing\" scare) rather than \"pared for size\": ``drawing`` and\n``audit_trail`` appear as ``null``, ``boq_rows`` as an empty list ``[]``\n(its type forbids ``null``) — both indistinguishable from a genuine absent\nresult. This names the withheld fields and the exact mode that brings each\nback, so the value is unambiguous. Absent on the default ``full_json`` mode\n— nothing is withheld, nothing to point at.",
        +                "properties": {
        +                  "mode": {
        +                    "enum": [
        +                      "summary",
        +                      "boq",
        +                      "boq_with_backup"
        +                    ],
        +                    "type": "string"
        +                  },
        +                  "omitted_fields": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "minItems": 1,
        +                    "type": "array"
        +                  },
        +                  "retrieve_with": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "mode",
        +                  "omitted_fields",
        +                  "retrieve_with"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "rate_limit_remaining": {
        +            "anyOf": [
        +              {
        +                "minimum": 0,
        +                "type": "integer"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "request_id": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "schema_version": {
        +            "const": "1.0.0",
        +            "default": "1.0.0",
        +            "type": "string"
        +          },
        +          "scope_boundary": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        +                "properties": {
        +                  "not_in_scope": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "produced": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "recommended_companions": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "type": "string"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "produced",
        +                  "not_in_scope"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tier": {
        +            "enum": [
        +              "free",
        +              "paid"
        +            ],
        +            "type": "string"
        +          },
        +          "tier_upgrade": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        +                "properties": {
        +                  "available_tiers": {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        +                      "properties": {
        +                        "billing": {
        +                          "enum": [
        +                            "one_off",
        +                            "monthly",
        +                            "annual"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "currency": {
        +                          "enum": [
        +                            "GBP",
        +                            "SGD",
        +                            "EUR",
        +                            "USD",
        +                            "CAD",
        +                            "AUD",
        +                            "NZD",
        +                            "MYR"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "display_name": {
        +                          "type": "string"
        +                        },
        +                        "price_local": {
        +                          "type": "number"
        +                        },
        +                        "tier_slug": {
        +                          "enum": [
        +                            "7_day_pass",
        +                            "solo",
        +                            "studio",
        +                            "practice"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "unlock_summary": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "tier_slug",
        +                        "display_name",
        +                        "price_local",
        +                        "currency",
        +                        "billing",
        +                        "unlock_summary"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "current_tier": {
        +                    "const": "free",
        +                    "default": "free",
        +                    "type": "string"
        +                  },
        +                  "pass_credit": {
        +                    "anyOf": [
        +                      {
        +                        "additionalProperties": false,
        +                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        +                        "properties": {
        +                          "amount_local": {
        +                            "type": "number"
        +                          },
        +                          "applies_to": {
        +                            "const": "solo_first_month",
        +                            "default": "solo_first_month",
        +                            "type": "string"
        +                          },
        +                          "currency": {
        +                            "type": "string"
        +                          },
        +                          "redeemable_until": {
        +                            "type": "string"
        +                          }
        +                        },
        +                        "required": [
        +                          "amount_local",
        +                          "currency",
        +                          "redeemable_until"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "pricing_url": {
        +                    "default": "https://civilquants.com/pricing",
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "available_tiers"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tos_url": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "upgrade_hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "warranty_disclaimer": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          }
        +        },
        +        "required": [
        +          "request_id",
        +          "issued_at",
        +          "tier"
        +        ],
        +        "type": "object"
        +      },
        +      "data": {
        +        "default": null,
        +        "title": "Data"
        +      },
        +      "error": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        +            "properties": {
        +              "code": {
        +                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        +                "enum": [
        +                  "RATE_LIMIT_EXCEEDED",
        +                  "TIER_INSUFFICIENT",
        +                  "INVALID_INPUT",
        +                  "SCHEMA_VERSION_MISMATCH",
        +                  "SCHEMA_INVARIANT_VIOLATION",
        +                  "UPSTREAM_TIMEOUT",
        +                  "BACKEND_FAILURE",
        +                  "IP_BLOCKED",
        +                  "RESOURCE_NOT_FOUND",
        +                  "RENDER_FAILURE",
        +                  "OCR_LOW_CONFIDENCE",
        +                  "MANUAL_REVIEW_REQUIRED",
        +                  "ACCEPTANCE_REQUIRED",
        +                  "INVALID_TOKEN"
        +                ],
        +                "type": "string"
        +              },
        +              "details": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "message": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "recoverable": {
        +                "type": "boolean"
        +              },
        +              "retry_after_seconds": {
        +                "anyOf": [
        +                  {
        +                    "minimum": 0,
        +                    "type": "integer"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              }
        +            },
        +            "required": [
        +              "code",
        +              "message",
        +              "recoverable"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      }
        +    },
        +    "required": [
        +      "_meta"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedcompute_manhole_precast1 field changed
      • changedOutput schema / properties / result / anyOf
        Previous value: -[
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "_meta": {
        -        "additionalProperties": false,
        -        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        -        "properties": {
        -          "deliverables": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        -                "properties": {
        -                  "docx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "dxf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "expires_at": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  },
        -                  "pdf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "xlsx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "expires_at"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "document_id": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "issued_at": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "rate_limit_remaining": {
        -            "anyOf": [
        -              {
        -                "minimum": 0,
        -                "type": "integer"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "request_id": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "schema_version": {
        -            "const": "1.0.0",
        -            "default": "1.0.0",
        -            "type": "string"
        -          },
        -          "scope_boundary": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        -                "properties": {
        -                  "not_in_scope": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "produced": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "recommended_companions": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "type": "string"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "produced",
        -                  "not_in_scope"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tier": {
        -            "enum": [
        -              "free",
        -              "paid"
        -            ],
        -            "type": "string"
        -          },
        -          "tier_upgrade": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        -                "properties": {
        -                  "available_tiers": {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        -                      "properties": {
        -                        "billing": {
        -                          "enum": [
        -                            "one_off",
        -                            "monthly",
        -                            "annual"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "currency": {
        -                          "enum": [
        -                            "GBP",
        -                            "SGD",
        -                            "EUR",
        -                            "USD",
        -                            "CAD",
        -                            "AUD",
        -                            "NZD",
        -                            "MYR"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "display_name": {
        -                          "type": "string"
        -                        },
        -                        "price_local": {
        -                          "type": "number"
        -                        },
        -                        "tier_slug": {
        -                          "enum": [
        -                            "7_day_pass",
        -                            "solo",
        -                            "studio",
        -                            "practice"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "unlock_summary": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "tier_slug",
        -                        "display_name",
        -                        "price_local",
        -                        "currency",
        -                        "billing",
        -                        "unlock_summary"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "current_tier": {
        -                    "const": "free",
        -                    "default": "free",
        -                    "type": "string"
        -                  },
        -                  "pass_credit": {
        -                    "anyOf": [
        -                      {
        -                        "additionalProperties": false,
        -                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        -                        "properties": {
        -                          "amount_local": {
        -                            "type": "number"
        -                          },
        -                          "applies_to": {
        -                            "const": "solo_first_month",
        -                            "default": "solo_first_month",
        -                            "type": "string"
        -                          },
        -                          "currency": {
        -                            "type": "string"
        -                          },
        -                          "redeemable_until": {
        -                            "type": "string"
        -                          }
        -                        },
        -                        "required": [
        -                          "amount_local",
        -                          "currency",
        -                          "redeemable_until"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "pricing_url": {
        -                    "default": "https://civilquants.com/pricing",
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "available_tiers"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tos_url": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "upgrade_hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "warranty_disclaimer": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          }
        -        },
        -        "required": [
        -          "request_id",
        -          "issued_at",
        -          "tier"
        -        ],
        -        "type": "object"
        -      },
        -      "data": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Schema § 1.1 — the typed payload returned inside `MCPResponse[ComputeResult]`.\n\nFree-tier responses omit `drawings` (the downloadable CAD artefact\npointers — the paid differentiator); the bridge enforces this. The\n`audit_trail` and the inline `drawing` preview are present on BOTH tiers\n(V1 ALIGN / 60th-fire D + C). `text_summary` is bounded to 2000 chars —\nkeeps the LLM-facing summary token-cheap and forces longer narrative into\nBoQ row descriptions where it belongs. `warnings` is the non-fatal\ngeometry advisory list (both tiers).",
        -            "properties": {
        -              "assembly_slug": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "audit_trail": {
        -                "anyOf": [
        -                  {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.7 — paid-tier audit-trail entry.\n\nOne entry per BoQ row; `boq_row_index` ties to the row position in\n`ComputeResult.boq_rows`. `derivation` is the human-readable formula\nwalk-through; `formula` is the optional formal expression.",
        -                      "properties": {
        -                        "boq_row_index": {
        -                          "minimum": 0,
        -                          "type": "integer"
        -                        },
        -                        "derivation": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "formula": {
        -                          "anyOf": [
        -                            {
        -                              "type": "string"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ],
        -                          "default": null
        -                        },
        -                        "id": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "parameters_referenced": {
        -                          "items": {
        -                            "type": "string"
        -                          },
        -                          "type": "array"
        -                        }
        -                      },
        -                      "required": [
        -                        "id",
        -                        "boq_row_index",
        -                        "derivation"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "boq_rows": {
        -                "items": {
        -                  "additionalProperties": false,
        -                  "description": "Schema § 1.3 — a single bill row in the requested standard's format.\n\n`description` is the non-verbatim functional description per spec § 13.9 /\n§ 15 invariant — NEVER reproduces a standard's verbatim clause text.\n`rate` / `amount` ship null because rates are commodity data the customer\nowns; the engine's job is the measurement, not the pricing.",
        -                  "properties": {
        -                    "amount": {
        -                      "anyOf": [
        -                        {
        -                          "type": "number"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "attribution": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "audit_id": {
        -                      "anyOf": [
        -                        {
        -                          "type": "string"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "description": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "quantity": {
        -                      "minimum": 0,
        -                      "type": "number"
        -                    },
        -                    "rate": {
        -                      "anyOf": [
        -                        {
        -                          "type": "number"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "unit": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "work_section": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    }
        -                  },
        -                  "required": [
        -                    "work_section",
        -                    "description",
        -                    "quantity",
        -                    "unit",
        -                    "attribution"
        -                  ],
        -                  "type": "object"
        -                },
        -                "type": "array"
        -              },
        -              "drawing": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": false,
        -                    "description": "Schema § 1.6a — inline server-rendered SVG preview of the geometry.\n\nThe MCP mirror of the web ``/compute`` response's ``drawing`` field\n(``api.schemas.compute.DrawingRef``): the same on-screen dimensioned\ndrawing both tiers see in the workspace, surfaced on the MCP compute\nresponse so a chat client can render it inline (60th-fire item C). This\nis the on-screen preview — present on BOTH tiers per the free/paid\nboundary; the downloadable CAD artefacts (DXF / dimensioned PDF) remain\nthe paid differentiator via the export tools.\n\nDefined here rather than importing ``DrawingRef`` because the web\n``schemas`` package imports back into this module (``schemas.render``),\nso reusing it would create an import cycle — the MCP wire contract keeps\nits own copy, the same pattern as ``BoQRow`` / ``DrawingReference``.",
        -                    "properties": {
        -                      "entity_count": {
        -                        "minimum": 0,
        -                        "type": "integer"
        -                      },
        -                      "svg_b64": {
        -                        "minLength": 1,
        -                        "type": "string"
        -                      },
        -                      "unit_of_drawing": {
        -                        "const": "m",
        -                        "default": "m",
        -                        "type": "string"
        -                      },
        -                      "viewbox_height": {
        -                        "exclusiveMinimum": 0,
        -                        "type": "number"
        -                      },
        -                      "viewbox_width": {
        -                        "exclusiveMinimum": 0,
        -                        "type": "number"
        -                      },
        -                      "viewbox_x": {
        -                        "type": "number"
        -                      },
        -                      "viewbox_y": {
        -                        "type": "number"
        -                      }
        -                    },
        -                    "required": [
        -                      "svg_b64",
        -                      "viewbox_x",
        -                      "viewbox_y",
        -                      "viewbox_width",
        -                      "viewbox_height",
        -                      "entity_count"
        -                    ],
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "drawings": {
        -                "anyOf": [
        -                  {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.6 — paid-tier drawing artefact pointer.\n\n`url` is an R2-signed URL; expiry is carried in `_meta.deliverables.expires_at`\non the envelope (not duplicated here). `layers` is DXF-only; PDF/SVG\ncallers omit it.",
        -                      "properties": {
        -                        "drawing_type": {
        -                          "enum": [
        -                            "section",
        -                            "plan",
        -                            "elevation",
        -                            "isometric",
        -                            "detail"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "format": {
        -                          "enum": [
        -                            "DXF",
        -                            "PDF",
        -                            "SVG"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "layers": {
        -                          "anyOf": [
        -                            {
        -                              "items": {
        -                                "type": "string"
        -                              },
        -                              "type": "array"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ],
        -                          "default": null
        -                        },
        -                        "scale": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "sheet_size": {
        -                          "enum": [
        -                            "A1",
        -                            "A2",
        -                            "A3",
        -                            "A4"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "url": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "drawing_type",
        -                        "format",
        -                        "url",
        -                        "sheet_size",
        -                        "scale"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "parameters_used": {
        -                "additionalProperties": false,
        -                "description": "Schema § 1.2 — the parameter snapshot the engine actually used.\n\nSplits user-supplied values from engine defaults so customers can see\nwhich numbers came from them and which the engine filled in. Every\ndefaulted parameter SHOULD have a corresponding entry in `assumptions`\n— the bridge layer enforces this when wrapping engine output.",
        -                "properties": {
        -                  "assumptions": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "engine_defaults": {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  "user_supplied": {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  }
        -                },
        -                "type": "object"
        -              },
        -              "standard": {
        -                "enum": [
        -                  "CESMM4",
        -                  "NRM2",
        -                  "SMM7",
        -                  "MMHW"
        -                ],
        -                "type": "string"
        -              },
        -              "text_summary": {
        -                "maxLength": 2000,
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "totals_summary": {
        -                "additionalProperties": false,
        -                "description": "Schema § 1.4 — totals_summary as a typed wrapper around the free-form dict.\n\nWire shape is a flat object (`{\"concrete_m3\": {...}, \"rebar_t\": {...}}`).\nWe model it as `RootModel`-equivalent via `model_config(extra=\"allow\")`\n+ a single `__root__`-style `entries` dict. Pydantic v2 recommends\n`RootModel` for free-form roots; using a wrapper class keeps the import\nsurface uniform with the rest of this module.",
        -                "properties": {
        -                  "entries": {
        -                    "additionalProperties": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.4 — single material/work-class total entry.",
        -                      "properties": {
        -                        "quantity": {
        -                          "minimum": 0,
        -                          "type": "number"
        -                        },
        -                        "unit": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "quantity",
        -                        "unit"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "object"
        -                  }
        -                },
        -                "type": "object"
        -              },
        -              "warnings": {
        -                "items": {
        -                  "additionalProperties": false,
        -                  "description": "Schema § 1.8 — a non-fatal geometry advisory (56th-fire T2).\n\nThe wire projection of the engine's `core.GeometryWarning`. Advisory only:\na warning NEVER changes a measured quantity — it flags geometry that is\nvalid but likely a mistake (e.g. a stale dependent-height default). Present\non BOTH tiers — a correctness/safety signal, not a paid feature.",
        -                  "properties": {
        -                    "affected_params": {
        -                      "items": {
        -                        "type": "string"
        -                      },
        -                      "type": "array"
        -                    },
        -                    "code": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "detail": {
        -                      "additionalProperties": {
        -                        "type": "number"
        -                      },
        -                      "type": "object"
        -                    },
        -                    "message": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "severity": {
        -                      "enum": [
        -                        "info",
        -                        "advisory",
        -                        "caution"
        -                      ],
        -                      "type": "string"
        -                    }
        -                  },
        -                  "required": [
        -                    "code",
        -                    "severity",
        -                    "message"
        -                  ],
        -                  "type": "object"
        -                },
        -                "type": "array"
        -              }
        -            },
        -            "required": [
        -              "assembly_slug",
        -              "standard",
        -              "parameters_used",
        -              "boq_rows",
        -              "totals_summary",
        -              "text_summary"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      },
        -      "error": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        -            "properties": {
        -              "code": {
        -                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        -                "enum": [
        -                  "RATE_LIMIT_EXCEEDED",
        -                  "TIER_INSUFFICIENT",
        -                  "INVALID_INPUT",
        -                  "SCHEMA_VERSION_MISMATCH",
        -                  "SCHEMA_INVARIANT_VIOLATION",
        -                  "UPSTREAM_TIMEOUT",
        -                  "BACKEND_FAILURE",
        -                  "IP_BLOCKED",
        -                  "RESOURCE_NOT_FOUND",
        -                  "RENDER_FAILURE",
        -                  "OCR_LOW_CONFIDENCE",
        -                  "MANUAL_REVIEW_REQUIRED",
        -                  "ACCEPTANCE_REQUIRED",
        -                  "INVALID_TOKEN"
        -                ],
        -                "type": "string"
        -              },
        -              "details": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "message": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "recoverable": {
        -                "type": "boolean"
        -              },
        -              "retry_after_seconds": {
        -                "anyOf": [
        -                  {
        -                    "minimum": 0,
        -                    "type": "integer"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              }
        -            },
        -            "required": [
        -              "code",
        -              "message",
        -              "recoverable"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      }
        -    },
        -    "required": [
        -      "_meta"
        -    ],
        -    "type": "object"
        -  },
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "_meta": {
        -        "additionalProperties": false,
        -        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        -        "properties": {
        -          "deliverables": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        -                "properties": {
        -                  "docx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "dxf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "expires_at": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  },
        -                  "pdf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "xlsx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "expires_at"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "document_id": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "issued_at": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "rate_limit_remaining": {
        -            "anyOf": [
        -              {
        -                "minimum": 0,
        -                "type": "integer"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "request_id": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "schema_version": {
        -            "const": "1.0.0",
        -            "default": "1.0.0",
        -            "type": "string"
        -          },
        -          "scope_boundary": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        -                "properties": {
        -                  "not_in_scope": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "produced": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "recommended_companions": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "type": "string"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "produced",
        -                  "not_in_scope"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tier": {
        -            "enum": [
        -              "free",
        -              "paid"
        -            ],
        -            "type": "string"
        -          },
        -          "tier_upgrade": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        -                "properties": {
        -                  "available_tiers": {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        -                      "properties": {
        -                        "billing": {
        -                          "enum": [
        -                            "one_off",
        -                            "monthly",
        -                            "annual"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "currency": {
        -                          "enum": [
        -                            "GBP",
        -                            "SGD",
        -                            "EUR",
        -                            "USD",
        -                            "CAD",
        -                            "AUD",
        -                            "NZD",
        -                            "MYR"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "display_name": {
        -                          "type": "string"
        -                        },
        -                        "price_local": {
        -                          "type": "number"
        -                        },
        -                        "tier_slug": {
        -                          "enum": [
        -                            "7_day_pass",
        -                            "solo",
        -                            "studio",
        -                            "practice"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "unlock_summary": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "tier_slug",
        -                        "display_name",
        -                        "price_local",
        -                        "currency",
        -                        "billing",
        -                        "unlock_summary"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "current_tier": {
        -                    "const": "free",
        -                    "default": "free",
        -                    "type": "string"
        -                  },
        -                  "pass_credit": {
        -                    "anyOf": [
        -                      {
        -                        "additionalProperties": false,
        -                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        -                        "properties": {
        -                          "amount_local": {
        -                            "type": "number"
        -                          },
        -                          "applies_to": {
        -                            "const": "solo_first_month",
        -                            "default": "solo_first_month",
        -                            "type": "string"
        -                          },
        -                          "currency": {
        -                            "type": "string"
        -                          },
        -                          "redeemable_until": {
        -                            "type": "string"
        -                          }
        -                        },
        -                        "required": [
        -                          "amount_local",
        -                          "currency",
        -                          "redeemable_until"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "pricing_url": {
        -                    "default": "https://civilquants.com/pricing",
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "available_tiers"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tos_url": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "upgrade_hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "warranty_disclaimer": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          }
        -        },
        -        "required": [
        -          "request_id",
        -          "issued_at",
        -          "tier"
        -        ],
        -        "type": "object"
        -      },
        -      "data": {
        -        "default": null,
        -        "title": "Data"
        -      },
        -      "error": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        -            "properties": {
        -              "code": {
        -                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        -                "enum": [
        -                  "RATE_LIMIT_EXCEEDED",
        -                  "TIER_INSUFFICIENT",
        -                  "INVALID_INPUT",
        -                  "SCHEMA_VERSION_MISMATCH",
        -                  "SCHEMA_INVARIANT_VIOLATION",
        -                  "UPSTREAM_TIMEOUT",
        -                  "BACKEND_FAILURE",
        -                  "IP_BLOCKED",
        -                  "RESOURCE_NOT_FOUND",
        -                  "RENDER_FAILURE",
        -                  "OCR_LOW_CONFIDENCE",
        -                  "MANUAL_REVIEW_REQUIRED",
        -                  "ACCEPTANCE_REQUIRED",
        -                  "INVALID_TOKEN"
        -                ],
        -                "type": "string"
        -              },
        -              "details": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "message": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "recoverable": {
        -                "type": "boolean"
        -              },
        -              "retry_after_seconds": {
        -                "anyOf": [
        -                  {
        -                    "minimum": 0,
        -                    "type": "integer"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              }
        -            },
        -            "required": [
        -              "code",
        -              "message",
        -              "recoverable"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      }
        -    },
        -    "required": [
        -      "_meta"
        -    ],
        -    "type": "object"
        -  }
        -]New value: +[
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "_meta": {
        +        "additionalProperties": false,
        +        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        +        "properties": {
        +          "deliverables": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        +                "properties": {
        +                  "docx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "dxf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "expires_at": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  },
        +                  "pdf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "xlsx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "expires_at"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "document_id": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "issued_at": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "output_mode": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Surfaces what a trimmed ``output_mode`` withheld from ``data``.\n\nA trimmed mode (``summary`` / ``boq`` / ``boq_with_backup``) withholds\nalready-computed fields to keep the chat payload small. The withheld value\nreads to a client agent as \"capability missing\" (the box-culvert \"geometry\nbuilder isn't firing\" scare) rather than \"pared for size\": ``drawing`` and\n``audit_trail`` appear as ``null``, ``boq_rows`` as an empty list ``[]``\n(its type forbids ``null``) — both indistinguishable from a genuine absent\nresult. This names the withheld fields and the exact mode that brings each\nback, so the value is unambiguous. Absent on the default ``full_json`` mode\n— nothing is withheld, nothing to point at.",
        +                "properties": {
        +                  "mode": {
        +                    "enum": [
        +                      "summary",
        +                      "boq",
        +                      "boq_with_backup"
        +                    ],
        +                    "type": "string"
        +                  },
        +                  "omitted_fields": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "minItems": 1,
        +                    "type": "array"
        +                  },
        +                  "retrieve_with": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "mode",
        +                  "omitted_fields",
        +                  "retrieve_with"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "rate_limit_remaining": {
        +            "anyOf": [
        +              {
        +                "minimum": 0,
        +                "type": "integer"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "request_id": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "schema_version": {
        +            "const": "1.0.0",
        +            "default": "1.0.0",
        +            "type": "string"
        +          },
        +          "scope_boundary": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        +                "properties": {
        +                  "not_in_scope": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "produced": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "recommended_companions": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "type": "string"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "produced",
        +                  "not_in_scope"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tier": {
        +            "enum": [
        +              "free",
        +              "paid"
        +            ],
        +            "type": "string"
        +          },
        +          "tier_upgrade": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        +                "properties": {
        +                  "available_tiers": {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        +                      "properties": {
        +                        "billing": {
        +                          "enum": [
        +                            "one_off",
        +                            "monthly",
        +                            "annual"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "currency": {
        +                          "enum": [
        +                            "GBP",
        +                            "SGD",
        +                            "EUR",
        +                            "USD",
        +                            "CAD",
        +                            "AUD",
        +                            "NZD",
        +                            "MYR"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "display_name": {
        +                          "type": "string"
        +                        },
        +                        "price_local": {
        +                          "type": "number"
        +                        },
        +                        "tier_slug": {
        +                          "enum": [
        +                            "7_day_pass",
        +                            "solo",
        +                            "studio",
        +                            "practice"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "unlock_summary": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "tier_slug",
        +                        "display_name",
        +                        "price_local",
        +                        "currency",
        +                        "billing",
        +                        "unlock_summary"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "current_tier": {
        +                    "const": "free",
        +                    "default": "free",
        +                    "type": "string"
        +                  },
        +                  "pass_credit": {
        +                    "anyOf": [
        +                      {
        +                        "additionalProperties": false,
        +                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        +                        "properties": {
        +                          "amount_local": {
        +                            "type": "number"
        +                          },
        +                          "applies_to": {
        +                            "const": "solo_first_month",
        +                            "default": "solo_first_month",
        +                            "type": "string"
        +                          },
        +                          "currency": {
        +                            "type": "string"
        +                          },
        +                          "redeemable_until": {
        +                            "type": "string"
        +                          }
        +                        },
        +                        "required": [
        +                          "amount_local",
        +                          "currency",
        +                          "redeemable_until"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "pricing_url": {
        +                    "default": "https://civilquants.com/pricing",
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "available_tiers"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tos_url": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "upgrade_hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "warranty_disclaimer": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          }
        +        },
        +        "required": [
        +          "request_id",
        +          "issued_at",
        +          "tier"
        +        ],
        +        "type": "object"
        +      },
        +      "data": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Schema § 1.1 — the typed payload returned inside `MCPResponse[ComputeResult]`.\n\nFree-tier responses omit `drawings` (the downloadable CAD artefact\npointers — the paid differentiator); the bridge enforces this. The\n`audit_trail` and the inline `drawing` preview are present on BOTH tiers\n(V1 ALIGN / 60th-fire D + C). `text_summary` is bounded to 2000 chars —\nkeeps the LLM-facing summary token-cheap and forces longer narrative into\nBoQ row descriptions where it belongs. `warnings` is the non-fatal\ngeometry advisory list (both tiers).",
        +            "properties": {
        +              "assembly_slug": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "audit_trail": {
        +                "anyOf": [
        +                  {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.7 — paid-tier audit-trail entry.\n\nOne entry per BoQ row; `boq_row_index` ties to the row position in\n`ComputeResult.boq_rows`. `derivation` is the human-readable formula\nwalk-through; `formula` is the optional formal expression.",
        +                      "properties": {
        +                        "boq_row_index": {
        +                          "minimum": 0,
        +                          "type": "integer"
        +                        },
        +                        "derivation": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "formula": {
        +                          "anyOf": [
        +                            {
        +                              "type": "string"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ],
        +                          "default": null
        +                        },
        +                        "id": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "parameters_referenced": {
        +                          "items": {
        +                            "type": "string"
        +                          },
        +                          "type": "array"
        +                        }
        +                      },
        +                      "required": [
        +                        "id",
        +                        "boq_row_index",
        +                        "derivation"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "boq_rows": {
        +                "items": {
        +                  "additionalProperties": false,
        +                  "description": "Schema § 1.3 — a single bill row in the requested standard's format.\n\n`description` is the non-verbatim functional description per spec § 13.9 /\n§ 15 invariant — NEVER reproduces a standard's verbatim clause text.\n`rate` / `amount` ship null because rates are commodity data the customer\nowns; the engine's job is the measurement, not the pricing.",
        +                  "properties": {
        +                    "amount": {
        +                      "anyOf": [
        +                        {
        +                          "type": "number"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "attribution": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "audit_id": {
        +                      "anyOf": [
        +                        {
        +                          "type": "string"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "description": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "quantity": {
        +                      "minimum": 0,
        +                      "type": "number"
        +                    },
        +                    "rate": {
        +                      "anyOf": [
        +                        {
        +                          "type": "number"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "unit": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "work_section": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    }
        +                  },
        +                  "required": [
        +                    "work_section",
        +                    "description",
        +                    "quantity",
        +                    "unit",
        +                    "attribution"
        +                  ],
        +                  "type": "object"
        +                },
        +                "type": "array"
        +              },
        +              "drawing": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": false,
        +                    "description": "Schema § 1.6a — inline server-rendered SVG preview of the geometry.\n\nThe MCP mirror of the web ``/compute`` response's ``drawing`` field\n(``api.schemas.compute.DrawingRef``): the same on-screen dimensioned\ndrawing both tiers see in the workspace, surfaced on the MCP compute\nresponse so a chat client can render it inline (60th-fire item C). This\nis the on-screen preview — present on BOTH tiers per the free/paid\nboundary; the downloadable CAD artefacts (DXF / dimensioned PDF) remain\nthe paid differentiator via the export tools.\n\nDefined here rather than importing ``DrawingRef`` because the web\n``schemas`` package imports back into this module (``schemas.render``),\nso reusing it would create an import cycle — the MCP wire contract keeps\nits own copy, the same pattern as ``BoQRow`` / ``DrawingReference``.",
        +                    "properties": {
        +                      "entity_count": {
        +                        "minimum": 0,
        +                        "type": "integer"
        +                      },
        +                      "svg_b64": {
        +                        "minLength": 1,
        +                        "type": "string"
        +                      },
        +                      "unit_of_drawing": {
        +                        "const": "m",
        +                        "default": "m",
        +                        "type": "string"
        +                      },
        +                      "viewbox_height": {
        +                        "exclusiveMinimum": 0,
        +                        "type": "number"
        +                      },
        +                      "viewbox_width": {
        +                        "exclusiveMinimum": 0,
        +                        "type": "number"
        +                      },
        +                      "viewbox_x": {
        +                        "type": "number"
        +                      },
        +                      "viewbox_y": {
        +                        "type": "number"
        +                      }
        +                    },
        +                    "required": [
        +                      "svg_b64",
        +                      "viewbox_x",
        +                      "viewbox_y",
        +                      "viewbox_width",
        +                      "viewbox_height",
        +                      "entity_count"
        +                    ],
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "drawings": {
        +                "anyOf": [
        +                  {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.6 — paid-tier drawing artefact pointer.\n\n`url` is an R2-signed URL; expiry is carried in `_meta.deliverables.expires_at`\non the envelope (not duplicated here). `layers` is DXF-only; PDF/SVG\ncallers omit it.",
        +                      "properties": {
        +                        "drawing_type": {
        +                          "enum": [
        +                            "section",
        +                            "plan",
        +                            "elevation",
        +                            "isometric",
        +                            "detail"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "format": {
        +                          "enum": [
        +                            "DXF",
        +                            "PDF",
        +                            "SVG"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "layers": {
        +                          "anyOf": [
        +                            {
        +                              "items": {
        +                                "type": "string"
        +                              },
        +                              "type": "array"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ],
        +                          "default": null
        +                        },
        +                        "scale": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "sheet_size": {
        +                          "enum": [
        +                            "A1",
        +                            "A2",
        +                            "A3",
        +                            "A4"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "url": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "drawing_type",
        +                        "format",
        +                        "url",
        +                        "sheet_size",
        +                        "scale"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "parameters_used": {
        +                "additionalProperties": false,
        +                "description": "Schema § 1.2 — the parameter snapshot the engine actually used.\n\nSplits user-supplied values from engine defaults so customers can see\nwhich numbers came from them and which the engine filled in. Every\ndefaulted parameter SHOULD have a corresponding entry in `assumptions`\n— the bridge layer enforces this when wrapping engine output.",
        +                "properties": {
        +                  "assumptions": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "engine_defaults": {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  "user_supplied": {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  }
        +                },
        +                "type": "object"
        +              },
        +              "standard": {
        +                "enum": [
        +                  "CESMM4",
        +                  "NRM2",
        +                  "SMM7",
        +                  "MMHW"
        +                ],
        +                "type": "string"
        +              },
        +              "text_summary": {
        +                "maxLength": 2000,
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "totals_summary": {
        +                "additionalProperties": false,
        +                "description": "Schema § 1.4 — totals_summary as a typed wrapper around the free-form dict.\n\nWire shape is a flat object (`{\"concrete_m3\": {...}, \"rebar_t\": {...}}`).\nWe model it as `RootModel`-equivalent via `model_config(extra=\"allow\")`\n+ a single `__root__`-style `entries` dict. Pydantic v2 recommends\n`RootModel` for free-form roots; using a wrapper class keeps the import\nsurface uniform with the rest of this module.",
        +                "properties": {
        +                  "entries": {
        +                    "additionalProperties": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.4 — single material/work-class total entry.",
        +                      "properties": {
        +                        "quantity": {
        +                          "minimum": 0,
        +                          "type": "number"
        +                        },
        +                        "unit": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "quantity",
        +                        "unit"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "object"
        +                  }
        +                },
        +                "type": "object"
        +              },
        +              "warnings": {
        +                "items": {
        +                  "additionalProperties": false,
        +                  "description": "Schema § 1.8 — a non-fatal geometry advisory (56th-fire T2).\n\nThe wire projection of the engine's `core.GeometryWarning`. Advisory only:\na warning NEVER changes a measured quantity — it flags geometry that is\nvalid but likely a mistake (e.g. a stale dependent-height default). Present\non BOTH tiers — a correctness/safety signal, not a paid feature.",
        +                  "properties": {
        +                    "affected_params": {
        +                      "items": {
        +                        "type": "string"
        +                      },
        +                      "type": "array"
        +                    },
        +                    "code": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "detail": {
        +                      "additionalProperties": {
        +                        "type": "number"
        +                      },
        +                      "type": "object"
        +                    },
        +                    "message": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "severity": {
        +                      "enum": [
        +                        "info",
        +                        "advisory",
        +                        "caution"
        +                      ],
        +                      "type": "string"
        +                    }
        +                  },
        +                  "required": [
        +                    "code",
        +                    "severity",
        +                    "message"
        +                  ],
        +                  "type": "object"
        +                },
        +                "type": "array"
        +              }
        +            },
        +            "required": [
        +              "assembly_slug",
        +              "standard",
        +              "parameters_used",
        +              "boq_rows",
        +              "totals_summary",
        +              "text_summary"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      },
        +      "error": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        +            "properties": {
        +              "code": {
        +                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        +                "enum": [
        +                  "RATE_LIMIT_EXCEEDED",
        +                  "TIER_INSUFFICIENT",
        +                  "INVALID_INPUT",
        +                  "SCHEMA_VERSION_MISMATCH",
        +                  "SCHEMA_INVARIANT_VIOLATION",
        +                  "UPSTREAM_TIMEOUT",
        +                  "BACKEND_FAILURE",
        +                  "IP_BLOCKED",
        +                  "RESOURCE_NOT_FOUND",
        +                  "RENDER_FAILURE",
        +                  "OCR_LOW_CONFIDENCE",
        +                  "MANUAL_REVIEW_REQUIRED",
        +                  "ACCEPTANCE_REQUIRED",
        +                  "INVALID_TOKEN"
        +                ],
        +                "type": "string"
        +              },
        +              "details": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "message": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "recoverable": {
        +                "type": "boolean"
        +              },
        +              "retry_after_seconds": {
        +                "anyOf": [
        +                  {
        +                    "minimum": 0,
        +                    "type": "integer"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              }
        +            },
        +            "required": [
        +              "code",
        +              "message",
        +              "recoverable"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      }
        +    },
        +    "required": [
        +      "_meta"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "_meta": {
        +        "additionalProperties": false,
        +        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        +        "properties": {
        +          "deliverables": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        +                "properties": {
        +                  "docx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "dxf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "expires_at": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  },
        +                  "pdf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "xlsx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "expires_at"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "document_id": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "issued_at": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "output_mode": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Surfaces what a trimmed ``output_mode`` withheld from ``data``.\n\nA trimmed mode (``summary`` / ``boq`` / ``boq_with_backup``) withholds\nalready-computed fields to keep the chat payload small. The withheld value\nreads to a client agent as \"capability missing\" (the box-culvert \"geometry\nbuilder isn't firing\" scare) rather than \"pared for size\": ``drawing`` and\n``audit_trail`` appear as ``null``, ``boq_rows`` as an empty list ``[]``\n(its type forbids ``null``) — both indistinguishable from a genuine absent\nresult. This names the withheld fields and the exact mode that brings each\nback, so the value is unambiguous. Absent on the default ``full_json`` mode\n— nothing is withheld, nothing to point at.",
        +                "properties": {
        +                  "mode": {
        +                    "enum": [
        +                      "summary",
        +                      "boq",
        +                      "boq_with_backup"
        +                    ],
        +                    "type": "string"
        +                  },
        +                  "omitted_fields": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "minItems": 1,
        +                    "type": "array"
        +                  },
        +                  "retrieve_with": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "mode",
        +                  "omitted_fields",
        +                  "retrieve_with"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "rate_limit_remaining": {
        +            "anyOf": [
        +              {
        +                "minimum": 0,
        +                "type": "integer"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "request_id": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "schema_version": {
        +            "const": "1.0.0",
        +            "default": "1.0.0",
        +            "type": "string"
        +          },
        +          "scope_boundary": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        +                "properties": {
        +                  "not_in_scope": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "produced": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "recommended_companions": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "type": "string"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "produced",
        +                  "not_in_scope"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tier": {
        +            "enum": [
        +              "free",
        +              "paid"
        +            ],
        +            "type": "string"
        +          },
        +          "tier_upgrade": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        +                "properties": {
        +                  "available_tiers": {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        +                      "properties": {
        +                        "billing": {
        +                          "enum": [
        +                            "one_off",
        +                            "monthly",
        +                            "annual"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "currency": {
        +                          "enum": [
        +                            "GBP",
        +                            "SGD",
        +                            "EUR",
        +                            "USD",
        +                            "CAD",
        +                            "AUD",
        +                            "NZD",
        +                            "MYR"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "display_name": {
        +                          "type": "string"
        +                        },
        +                        "price_local": {
        +                          "type": "number"
        +                        },
        +                        "tier_slug": {
        +                          "enum": [
        +                            "7_day_pass",
        +                            "solo",
        +                            "studio",
        +                            "practice"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "unlock_summary": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "tier_slug",
        +                        "display_name",
        +                        "price_local",
        +                        "currency",
        +                        "billing",
        +                        "unlock_summary"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "current_tier": {
        +                    "const": "free",
        +                    "default": "free",
        +                    "type": "string"
        +                  },
        +                  "pass_credit": {
        +                    "anyOf": [
        +                      {
        +                        "additionalProperties": false,
        +                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        +                        "properties": {
        +                          "amount_local": {
        +                            "type": "number"
        +                          },
        +                          "applies_to": {
        +                            "const": "solo_first_month",
        +                            "default": "solo_first_month",
        +                            "type": "string"
        +                          },
        +                          "currency": {
        +                            "type": "string"
        +                          },
        +                          "redeemable_until": {
        +                            "type": "string"
        +                          }
        +                        },
        +                        "required": [
        +                          "amount_local",
        +                          "currency",
        +                          "redeemable_until"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "pricing_url": {
        +                    "default": "https://civilquants.com/pricing",
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "available_tiers"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tos_url": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "upgrade_hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "warranty_disclaimer": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          }
        +        },
        +        "required": [
        +          "request_id",
        +          "issued_at",
        +          "tier"
        +        ],
        +        "type": "object"
        +      },
        +      "data": {
        +        "default": null,
        +        "title": "Data"
        +      },
        +      "error": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        +            "properties": {
        +              "code": {
        +                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        +                "enum": [
        +                  "RATE_LIMIT_EXCEEDED",
        +                  "TIER_INSUFFICIENT",
        +                  "INVALID_INPUT",
        +                  "SCHEMA_VERSION_MISMATCH",
        +                  "SCHEMA_INVARIANT_VIOLATION",
        +                  "UPSTREAM_TIMEOUT",
        +                  "BACKEND_FAILURE",
        +                  "IP_BLOCKED",
        +                  "RESOURCE_NOT_FOUND",
        +                  "RENDER_FAILURE",
        +                  "OCR_LOW_CONFIDENCE",
        +                  "MANUAL_REVIEW_REQUIRED",
        +                  "ACCEPTANCE_REQUIRED",
        +                  "INVALID_TOKEN"
        +                ],
        +                "type": "string"
        +              },
        +              "details": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "message": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "recoverable": {
        +                "type": "boolean"
        +              },
        +              "retry_after_seconds": {
        +                "anyOf": [
        +                  {
        +                    "minimum": 0,
        +                    "type": "integer"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              }
        +            },
        +            "required": [
        +              "code",
        +              "message",
        +              "recoverable"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      }
        +    },
        +    "required": [
        +      "_meta"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedcompute_multi_section_assembly1 field changed
      • changedOutput schema / properties / result / anyOf
        Previous value: -[
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "_meta": {
        -        "additionalProperties": false,
        -        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        -        "properties": {
        -          "deliverables": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        -                "properties": {
        -                  "docx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "dxf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "expires_at": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  },
        -                  "pdf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "xlsx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "expires_at"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "document_id": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "issued_at": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "rate_limit_remaining": {
        -            "anyOf": [
        -              {
        -                "minimum": 0,
        -                "type": "integer"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "request_id": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "schema_version": {
        -            "const": "1.0.0",
        -            "default": "1.0.0",
        -            "type": "string"
        -          },
        -          "scope_boundary": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        -                "properties": {
        -                  "not_in_scope": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "produced": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "recommended_companions": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "type": "string"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "produced",
        -                  "not_in_scope"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tier": {
        -            "enum": [
        -              "free",
        -              "paid"
        -            ],
        -            "type": "string"
        -          },
        -          "tier_upgrade": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        -                "properties": {
        -                  "available_tiers": {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        -                      "properties": {
        -                        "billing": {
        -                          "enum": [
        -                            "one_off",
        -                            "monthly",
        -                            "annual"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "currency": {
        -                          "enum": [
        -                            "GBP",
        -                            "SGD",
        -                            "EUR",
        -                            "USD",
        -                            "CAD",
        -                            "AUD",
        -                            "NZD",
        -                            "MYR"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "display_name": {
        -                          "type": "string"
        -                        },
        -                        "price_local": {
        -                          "type": "number"
        -                        },
        -                        "tier_slug": {
        -                          "enum": [
        -                            "7_day_pass",
        -                            "solo",
        -                            "studio",
        -                            "practice"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "unlock_summary": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "tier_slug",
        -                        "display_name",
        -                        "price_local",
        -                        "currency",
        -                        "billing",
        -                        "unlock_summary"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "current_tier": {
        -                    "const": "free",
        -                    "default": "free",
        -                    "type": "string"
        -                  },
        -                  "pass_credit": {
        -                    "anyOf": [
        -                      {
        -                        "additionalProperties": false,
        -                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        -                        "properties": {
        -                          "amount_local": {
        -                            "type": "number"
        -                          },
        -                          "applies_to": {
        -                            "const": "solo_first_month",
        -                            "default": "solo_first_month",
        -                            "type": "string"
        -                          },
        -                          "currency": {
        -                            "type": "string"
        -                          },
        -                          "redeemable_until": {
        -                            "type": "string"
        -                          }
        -                        },
        -                        "required": [
        -                          "amount_local",
        -                          "currency",
        -                          "redeemable_until"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "pricing_url": {
        -                    "default": "https://civilquants.com/pricing",
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "available_tiers"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tos_url": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "upgrade_hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "warranty_disclaimer": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          }
        -        },
        -        "required": [
        -          "request_id",
        -          "issued_at",
        -          "tier"
        -        ],
        -        "type": "object"
        -      },
        -      "data": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Aggregated + per-section result for a sectioned assembly run.",
        -            "properties": {
        -              "aggregated_boq_rows": {
        -                "items": {
        -                  "additionalProperties": false,
        -                  "description": "Schema § 1.3 — a single bill row in the requested standard's format.\n\n`description` is the non-verbatim functional description per spec § 13.9 /\n§ 15 invariant — NEVER reproduces a standard's verbatim clause text.\n`rate` / `amount` ship null because rates are commodity data the customer\nowns; the engine's job is the measurement, not the pricing.",
        -                  "properties": {
        -                    "amount": {
        -                      "anyOf": [
        -                        {
        -                          "type": "number"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "attribution": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "audit_id": {
        -                      "anyOf": [
        -                        {
        -                          "type": "string"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "description": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "quantity": {
        -                      "minimum": 0,
        -                      "type": "number"
        -                    },
        -                    "rate": {
        -                      "anyOf": [
        -                        {
        -                          "type": "number"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "unit": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "work_section": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    }
        -                  },
        -                  "required": [
        -                    "work_section",
        -                    "description",
        -                    "quantity",
        -                    "unit",
        -                    "attribution"
        -                  ],
        -                  "type": "object"
        -                },
        -                "type": "array"
        -              },
        -              "assembly_slug": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "parameters_used": {
        -                "additionalProperties": true,
        -                "type": "object"
        -              },
        -              "section_count": {
        -                "minimum": 1,
        -                "type": "integer"
        -              },
        -              "section_results": {
        -                "anyOf": [
        -                  {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.1 — the typed payload returned inside `MCPResponse[ComputeResult]`.\n\nFree-tier responses omit `drawings` (the downloadable CAD artefact\npointers — the paid differentiator); the bridge enforces this. The\n`audit_trail` and the inline `drawing` preview are present on BOTH tiers\n(V1 ALIGN / 60th-fire D + C). `text_summary` is bounded to 2000 chars —\nkeeps the LLM-facing summary token-cheap and forces longer narrative into\nBoQ row descriptions where it belongs. `warnings` is the non-fatal\ngeometry advisory list (both tiers).",
        -                      "properties": {
        -                        "assembly_slug": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "audit_trail": {
        -                          "anyOf": [
        -                            {
        -                              "items": {
        -                                "additionalProperties": false,
        -                                "description": "Schema § 1.7 — paid-tier audit-trail entry.\n\nOne entry per BoQ row; `boq_row_index` ties to the row position in\n`ComputeResult.boq_rows`. `derivation` is the human-readable formula\nwalk-through; `formula` is the optional formal expression.",
        -                                "properties": {
        -                                  "boq_row_index": {
        -                                    "minimum": 0,
        -                                    "type": "integer"
        -                                  },
        -                                  "derivation": {
        -                                    "minLength": 1,
        -                                    "type": "string"
        -                                  },
        -                                  "formula": {
        -                                    "anyOf": [
        -                                      {
        -                                        "type": "string"
        -                                      },
        -                                      {
        -                                        "type": "null"
        -                                      }
        -                                    ],
        -                                    "default": null
        -                                  },
        -                                  "id": {
        -                                    "minLength": 1,
        -                                    "type": "string"
        -                                  },
        -                                  "parameters_referenced": {
        -                                    "items": {
        -                                      "type": "string"
        -                                    },
        -                                    "type": "array"
        -                                  }
        -                                },
        -                                "required": [
        -                                  "id",
        -                                  "boq_row_index",
        -                                  "derivation"
        -                                ],
        -                                "type": "object"
        -                              },
        -                              "type": "array"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ],
        -                          "default": null
        -                        },
        -                        "boq_rows": {
        -                          "items": {
        -                            "additionalProperties": false,
        -                            "description": "Schema § 1.3 — a single bill row in the requested standard's format.\n\n`description` is the non-verbatim functional description per spec § 13.9 /\n§ 15 invariant — NEVER reproduces a standard's verbatim clause text.\n`rate` / `amount` ship null because rates are commodity data the customer\nowns; the engine's job is the measurement, not the pricing.",
        -                            "properties": {
        -                              "amount": {
        -                                "anyOf": [
        -                                  {
        -                                    "type": "number"
        -                                  },
        -                                  {
        -                                    "type": "null"
        -                                  }
        -                                ],
        -                                "default": null
        -                              },
        -                              "attribution": {
        -                                "minLength": 1,
        -                                "type": "string"
        -                              },
        -                              "audit_id": {
        -                                "anyOf": [
        -                                  {
        -                                    "type": "string"
        -                                  },
        -                                  {
        -                                    "type": "null"
        -                                  }
        -                                ],
        -                                "default": null
        -                              },
        -                              "description": {
        -                                "minLength": 1,
        -                                "type": "string"
        -                              },
        -                              "quantity": {
        -                                "minimum": 0,
        -                                "type": "number"
        -                              },
        -                              "rate": {
        -                                "anyOf": [
        -                                  {
        -                                    "type": "number"
        -                                  },
        -                                  {
        -                                    "type": "null"
        -                                  }
        -                                ],
        -                                "default": null
        -                              },
        -                              "unit": {
        -                                "minLength": 1,
        -                                "type": "string"
        -                              },
        -                              "work_section": {
        -                                "minLength": 1,
        -                                "type": "string"
        -                              }
        -                            },
        -                            "required": [
        -                              "work_section",
        -                              "description",
        -                              "quantity",
        -                              "unit",
        -                              "attribution"
        -                            ],
        -                            "type": "object"
        -                          },
        -                          "type": "array"
        -                        },
        -                        "drawing": {
        -                          "anyOf": [
        -                            {
        -                              "additionalProperties": false,
        -                              "description": "Schema § 1.6a — inline server-rendered SVG preview of the geometry.\n\nThe MCP mirror of the web ``/compute`` response's ``drawing`` field\n(``api.schemas.compute.DrawingRef``): the same on-screen dimensioned\ndrawing both tiers see in the workspace, surfaced on the MCP compute\nresponse so a chat client can render it inline (60th-fire item C). This\nis the on-screen preview — present on BOTH tiers per the free/paid\nboundary; the downloadable CAD artefacts (DXF / dimensioned PDF) remain\nthe paid differentiator via the export tools.\n\nDefined here rather than importing ``DrawingRef`` because the web\n``schemas`` package imports back into this module (``schemas.render``),\nso reusing it would create an import cycle — the MCP wire contract keeps\nits own copy, the same pattern as ``BoQRow`` / ``DrawingReference``.",
        -                              "properties": {
        -                                "entity_count": {
        -                                  "minimum": 0,
        -                                  "type": "integer"
        -                                },
        -                                "svg_b64": {
        -                                  "minLength": 1,
        -                                  "type": "string"
        -                                },
        -                                "unit_of_drawing": {
        -                                  "const": "m",
        -                                  "default": "m",
        -                                  "type": "string"
        -                                },
        -                                "viewbox_height": {
        -                                  "exclusiveMinimum": 0,
        -                                  "type": "number"
        -                                },
        -                                "viewbox_width": {
        -                                  "exclusiveMinimum": 0,
        -                                  "type": "number"
        -                                },
        -                                "viewbox_x": {
        -                                  "type": "number"
        -                                },
        -                                "viewbox_y": {
        -                                  "type": "number"
        -                                }
        -                              },
        -                              "required": [
        -                                "svg_b64",
        -                                "viewbox_x",
        -                                "viewbox_y",
        -                                "viewbox_width",
        -                                "viewbox_height",
        -                                "entity_count"
        -                              ],
        -                              "type": "object"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ],
        -                          "default": null
        -                        },
        -                        "drawings": {
        -                          "anyOf": [
        -                            {
        -                              "items": {
        -                                "additionalProperties": false,
        -                                "description": "Schema § 1.6 — paid-tier drawing artefact pointer.\n\n`url` is an R2-signed URL; expiry is carried in `_meta.deliverables.expires_at`\non the envelope (not duplicated here). `layers` is DXF-only; PDF/SVG\ncallers omit it.",
        -                                "properties": {
        -                                  "drawing_type": {
        -                                    "enum": [
        -                                      "section",
        -                                      "plan",
        -                                      "elevation",
        -                                      "isometric",
        -                                      "detail"
        -                                    ],
        -                                    "type": "string"
        -                                  },
        -                                  "format": {
        -                                    "enum": [
        -                                      "DXF",
        -                                      "PDF",
        -                                      "SVG"
        -                                    ],
        -                                    "type": "string"
        -                                  },
        -                                  "layers": {
        -                                    "anyOf": [
        -                                      {
        -                                        "items": {
        -                                          "type": "string"
        -                                        },
        -                                        "type": "array"
        -                                      },
        -                                      {
        -                                        "type": "null"
        -                                      }
        -                                    ],
        -                                    "default": null
        -                                  },
        -                                  "scale": {
        -                                    "minLength": 1,
        -                                    "type": "string"
        -                                  },
        -                                  "sheet_size": {
        -                                    "enum": [
        -                                      "A1",
        -                                      "A2",
        -                                      "A3",
        -                                      "A4"
        -                                    ],
        -                                    "type": "string"
        -                                  },
        -                                  "url": {
        -                                    "minLength": 1,
        -                                    "type": "string"
        -                                  }
        -                                },
        -                                "required": [
        -                                  "drawing_type",
        -                                  "format",
        -                                  "url",
        -                                  "sheet_size",
        -                                  "scale"
        -                                ],
        -                                "type": "object"
        -                              },
        -                              "type": "array"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ],
        -                          "default": null
        -                        },
        -                        "parameters_used": {
        -                          "additionalProperties": false,
        -                          "description": "Schema § 1.2 — the parameter snapshot the engine actually used.\n\nSplits user-supplied values from engine defaults so customers can see\nwhich numbers came from them and which the engine filled in. Every\ndefaulted parameter SHOULD have a corresponding entry in `assumptions`\n— the bridge layer enforces this when wrapping engine output.",
        -                          "properties": {
        -                            "assumptions": {
        -                              "items": {
        -                                "type": "string"
        -                              },
        -                              "type": "array"
        -                            },
        -                            "engine_defaults": {
        -                              "additionalProperties": true,
        -                              "type": "object"
        -                            },
        -                            "user_supplied": {
        -                              "additionalProperties": true,
        -                              "type": "object"
        -                            }
        -                          },
        -                          "type": "object"
        -                        },
        -                        "standard": {
        -                          "enum": [
        -                            "CESMM4",
        -                            "NRM2",
        -                            "SMM7",
        -                            "MMHW"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "text_summary": {
        -                          "maxLength": 2000,
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "totals_summary": {
        -                          "additionalProperties": false,
        -                          "description": "Schema § 1.4 — totals_summary as a typed wrapper around the free-form dict.\n\nWire shape is a flat object (`{\"concrete_m3\": {...}, \"rebar_t\": {...}}`).\nWe model it as `RootModel`-equivalent via `model_config(extra=\"allow\")`\n+ a single `__root__`-style `entries` dict. Pydantic v2 recommends\n`RootModel` for free-form roots; using a wrapper class keeps the import\nsurface uniform with the rest of this module.",
        -                          "properties": {
        -                            "entries": {
        -                              "additionalProperties": {
        -                                "additionalProperties": false,
        -                                "description": "Schema § 1.4 — single material/work-class total entry.",
        -                                "properties": {
        -                                  "quantity": {
        -                                    "minimum": 0,
        -                                    "type": "number"
        -                                  },
        -                                  "unit": {
        -                                    "minLength": 1,
        -                                    "type": "string"
        -                                  }
        -                                },
        -                                "required": [
        -                                  "quantity",
        -                                  "unit"
        -                                ],
        -                                "type": "object"
        -                              },
        -                              "type": "object"
        -                            }
        -                          },
        -                          "type": "object"
        -                        },
        -                        "warnings": {
        -                          "items": {
        -                            "additionalProperties": false,
        -                            "description": "Schema § 1.8 — a non-fatal geometry advisory (56th-fire T2).\n\nThe wire projection of the engine's `core.GeometryWarning`. Advisory only:\na warning NEVER changes a measured quantity — it flags geometry that is\nvalid but likely a mistake (e.g. a stale dependent-height default). Present\non BOTH tiers — a correctness/safety signal, not a paid feature.",
        -                            "properties": {
        -                              "affected_params": {
        -                                "items": {
        -                                  "type": "string"
        -                                },
        -                                "type": "array"
        -                              },
        -                              "code": {
        -                                "minLength": 1,
        -                                "type": "string"
        -                              },
        -                              "detail": {
        -                                "additionalProperties": {
        -                                  "type": "number"
        -                                },
        -                                "type": "object"
        -                              },
        -                              "message": {
        -                                "minLength": 1,
        -                                "type": "string"
        -                              },
        -                              "severity": {
        -                                "enum": [
        -                                  "info",
        -                                  "advisory",
        -                                  "caution"
        -                                ],
        -                                "type": "string"
        -                              }
        -                            },
        -                            "required": [
        -                              "code",
        -                              "severity",
        -                              "message"
        -                            ],
        -                            "type": "object"
        -                          },
        -                          "type": "array"
        -                        }
        -                      },
        -                      "required": [
        -                        "assembly_slug",
        -                        "standard",
        -                        "parameters_used",
        -                        "boq_rows",
        -                        "totals_summary",
        -                        "text_summary"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "section_summary": {
        -                "items": {
        -                  "additionalProperties": false,
        -                  "description": "Cheap always-on per-section line: label + run length + totals.",
        -                  "properties": {
        -                    "label": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "run_length": {
        -                      "anyOf": [
        -                        {
        -                          "type": "number"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "totals_summary": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.4 — totals_summary as a typed wrapper around the free-form dict.\n\nWire shape is a flat object (`{\"concrete_m3\": {...}, \"rebar_t\": {...}}`).\nWe model it as `RootModel`-equivalent via `model_config(extra=\"allow\")`\n+ a single `__root__`-style `entries` dict. Pydantic v2 recommends\n`RootModel` for free-form roots; using a wrapper class keeps the import\nsurface uniform with the rest of this module.",
        -                      "properties": {
        -                        "entries": {
        -                          "additionalProperties": {
        -                            "additionalProperties": false,
        -                            "description": "Schema § 1.4 — single material/work-class total entry.",
        -                            "properties": {
        -                              "quantity": {
        -                                "minimum": 0,
        -                                "type": "number"
        -                              },
        -                              "unit": {
        -                                "minLength": 1,
        -                                "type": "string"
        -                              }
        -                            },
        -                            "required": [
        -                              "quantity",
        -                              "unit"
        -                            ],
        -                            "type": "object"
        -                          },
        -                          "type": "object"
        -                        }
        -                      },
        -                      "type": "object"
        -                    }
        -                  },
        -                  "required": [
        -                    "label",
        -                    "totals_summary"
        -                  ],
        -                  "type": "object"
        -                },
        -                "type": "array"
        -              },
        -              "standard": {
        -                "enum": [
        -                  "CESMM4",
        -                  "NRM2",
        -                  "SMM7",
        -                  "MMHW"
        -                ],
        -                "type": "string"
        -              },
        -              "warnings": {
        -                "items": {
        -                  "additionalProperties": false,
        -                  "description": "A section-labelled geometry/advisory warning.",
        -                  "properties": {
        -                    "section_label": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "warning": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.8 — a non-fatal geometry advisory (56th-fire T2).\n\nThe wire projection of the engine's `core.GeometryWarning`. Advisory only:\na warning NEVER changes a measured quantity — it flags geometry that is\nvalid but likely a mistake (e.g. a stale dependent-height default). Present\non BOTH tiers — a correctness/safety signal, not a paid feature.",
        -                      "properties": {
        -                        "affected_params": {
        -                          "items": {
        -                            "type": "string"
        -                          },
        -                          "type": "array"
        -                        },
        -                        "code": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "detail": {
        -                          "additionalProperties": {
        -                            "type": "number"
        -                          },
        -                          "type": "object"
        -                        },
        -                        "message": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "severity": {
        -                          "enum": [
        -                            "info",
        -                            "advisory",
        -                            "caution"
        -                          ],
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "code",
        -                        "severity",
        -                        "message"
        -                      ],
        -                      "type": "object"
        -                    }
        -                  },
        -                  "required": [
        -                    "section_label",
        -                    "warning"
        -                  ],
        -                  "type": "object"
        -                },
        -                "type": "array"
        -              }
        -            },
        -            "required": [
        -              "assembly_slug",
        -              "standard",
        -              "section_count",
        -              "section_summary",
        -              "aggregated_boq_rows"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      },
        -      "error": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        -            "properties": {
        -              "code": {
        -                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        -                "enum": [
        -                  "RATE_LIMIT_EXCEEDED",
        -                  "TIER_INSUFFICIENT",
        -                  "INVALID_INPUT",
        -                  "SCHEMA_VERSION_MISMATCH",
        -                  "SCHEMA_INVARIANT_VIOLATION",
        -                  "UPSTREAM_TIMEOUT",
        -                  "BACKEND_FAILURE",
        -                  "IP_BLOCKED",
        -                  "RESOURCE_NOT_FOUND",
        -                  "RENDER_FAILURE",
        -                  "OCR_LOW_CONFIDENCE",
        -                  "MANUAL_REVIEW_REQUIRED",
        -                  "ACCEPTANCE_REQUIRED",
        -                  "INVALID_TOKEN"
        -                ],
        -                "type": "string"
        -              },
        -              "details": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "message": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "recoverable": {
        -                "type": "boolean"
        -              },
        -              "retry_after_seconds": {
        -                "anyOf": [
        -                  {
        -                    "minimum": 0,
        -                    "type": "integer"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              }
        -            },
        -            "required": [
        -              "code",
        -              "message",
        -              "recoverable"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      }
        -    },
        -    "required": [
        -      "_meta"
        -    ],
        -    "type": "object"
        -  },
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "_meta": {
        -        "additionalProperties": false,
        -        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        -        "properties": {
        -          "deliverables": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        -                "properties": {
        -                  "docx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "dxf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "expires_at": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  },
        -                  "pdf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "xlsx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "expires_at"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "document_id": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "issued_at": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "rate_limit_remaining": {
        -            "anyOf": [
        -              {
        -                "minimum": 0,
        -                "type": "integer"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "request_id": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "schema_version": {
        -            "const": "1.0.0",
        -            "default": "1.0.0",
        -            "type": "string"
        -          },
        -          "scope_boundary": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        -                "properties": {
        -                  "not_in_scope": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "produced": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "recommended_companions": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "type": "string"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "produced",
        -                  "not_in_scope"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tier": {
        -            "enum": [
        -              "free",
        -              "paid"
        -            ],
        -            "type": "string"
        -          },
        -          "tier_upgrade": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        -                "properties": {
        -                  "available_tiers": {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        -                      "properties": {
        -                        "billing": {
        -                          "enum": [
        -                            "one_off",
        -                            "monthly",
        -                            "annual"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "currency": {
        -                          "enum": [
        -                            "GBP",
        -                            "SGD",
        -                            "EUR",
        -                            "USD",
        -                            "CAD",
        -                            "AUD",
        -                            "NZD",
        -                            "MYR"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "display_name": {
        -                          "type": "string"
        -                        },
        -                        "price_local": {
        -                          "type": "number"
        -                        },
        -                        "tier_slug": {
        -                          "enum": [
        -                            "7_day_pass",
        -                            "solo",
        -                            "studio",
        -                            "practice"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "unlock_summary": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "tier_slug",
        -                        "display_name",
        -                        "price_local",
        -                        "currency",
        -                        "billing",
        -                        "unlock_summary"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "current_tier": {
        -                    "const": "free",
        -                    "default": "free",
        -                    "type": "string"
        -                  },
        -                  "pass_credit": {
        -                    "anyOf": [
        -                      {
        -                        "additionalProperties": false,
        -                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        -                        "properties": {
        -                          "amount_local": {
        -                            "type": "number"
        -                          },
        -                          "applies_to": {
        -                            "const": "solo_first_month",
        -                            "default": "solo_first_month",
        -                            "type": "string"
        -                          },
        -                          "currency": {
        -                            "type": "string"
        -                          },
        -                          "redeemable_until": {
        -                            "type": "string"
        -                          }
        -                        },
        -                        "required": [
        -                          "amount_local",
        -                          "currency",
        -                          "redeemable_until"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "pricing_url": {
        -                    "default": "https://civilquants.com/pricing",
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "available_tiers"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tos_url": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "upgrade_hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "warranty_disclaimer": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          }
        -        },
        -        "required": [
        -          "request_id",
        -          "issued_at",
        -          "tier"
        -        ],
        -        "type": "object"
        -      },
        -      "data": {
        -        "default": null,
        -        "title": "Data"
        -      },
        -      "error": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        -            "properties": {
        -              "code": {
        -                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        -                "enum": [
        -                  "RATE_LIMIT_EXCEEDED",
        -                  "TIER_INSUFFICIENT",
        -                  "INVALID_INPUT",
        -                  "SCHEMA_VERSION_MISMATCH",
        -                  "SCHEMA_INVARIANT_VIOLATION",
        -                  "UPSTREAM_TIMEOUT",
        -                  "BACKEND_FAILURE",
        -                  "IP_BLOCKED",
        -                  "RESOURCE_NOT_FOUND",
        -                  "RENDER_FAILURE",
        -                  "OCR_LOW_CONFIDENCE",
        -                  "MANUAL_REVIEW_REQUIRED",
        -                  "ACCEPTANCE_REQUIRED",
        -                  "INVALID_TOKEN"
        -                ],
        -                "type": "string"
        -              },
        -              "details": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "message": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "recoverable": {
        -                "type": "boolean"
        -              },
        -              "retry_after_seconds": {
        -                "anyOf": [
        -                  {
        -                    "minimum": 0,
        -                    "type": "integer"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              }
        -            },
        -            "required": [
        -              "code",
        -              "message",
        -              "recoverable"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      }
        -    },
        -    "required": [
        -      "_meta"
        -    ],
        -    "type": "object"
        -  }
        -]New value: +[
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "_meta": {
        +        "additionalProperties": false,
        +        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        +        "properties": {
        +          "deliverables": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        +                "properties": {
        +                  "docx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "dxf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "expires_at": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  },
        +                  "pdf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "xlsx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "expires_at"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "document_id": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "issued_at": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "output_mode": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Surfaces what a trimmed ``output_mode`` withheld from ``data``.\n\nA trimmed mode (``summary`` / ``boq`` / ``boq_with_backup``) withholds\nalready-computed fields to keep the chat payload small. The withheld value\nreads to a client agent as \"capability missing\" (the box-culvert \"geometry\nbuilder isn't firing\" scare) rather than \"pared for size\": ``drawing`` and\n``audit_trail`` appear as ``null``, ``boq_rows`` as an empty list ``[]``\n(its type forbids ``null``) — both indistinguishable from a genuine absent\nresult. This names the withheld fields and the exact mode that brings each\nback, so the value is unambiguous. Absent on the default ``full_json`` mode\n— nothing is withheld, nothing to point at.",
        +                "properties": {
        +                  "mode": {
        +                    "enum": [
        +                      "summary",
        +                      "boq",
        +                      "boq_with_backup"
        +                    ],
        +                    "type": "string"
        +                  },
        +                  "omitted_fields": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "minItems": 1,
        +                    "type": "array"
        +                  },
        +                  "retrieve_with": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "mode",
        +                  "omitted_fields",
        +                  "retrieve_with"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "rate_limit_remaining": {
        +            "anyOf": [
        +              {
        +                "minimum": 0,
        +                "type": "integer"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "request_id": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "schema_version": {
        +            "const": "1.0.0",
        +            "default": "1.0.0",
        +            "type": "string"
        +          },
        +          "scope_boundary": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        +                "properties": {
        +                  "not_in_scope": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "produced": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "recommended_companions": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "type": "string"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "produced",
        +                  "not_in_scope"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tier": {
        +            "enum": [
        +              "free",
        +              "paid"
        +            ],
        +            "type": "string"
        +          },
        +          "tier_upgrade": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        +                "properties": {
        +                  "available_tiers": {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        +                      "properties": {
        +                        "billing": {
        +                          "enum": [
        +                            "one_off",
        +                            "monthly",
        +                            "annual"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "currency": {
        +                          "enum": [
        +                            "GBP",
        +                            "SGD",
        +                            "EUR",
        +                            "USD",
        +                            "CAD",
        +                            "AUD",
        +                            "NZD",
        +                            "MYR"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "display_name": {
        +                          "type": "string"
        +                        },
        +                        "price_local": {
        +                          "type": "number"
        +                        },
        +                        "tier_slug": {
        +                          "enum": [
        +                            "7_day_pass",
        +                            "solo",
        +                            "studio",
        +                            "practice"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "unlock_summary": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "tier_slug",
        +                        "display_name",
        +                        "price_local",
        +                        "currency",
        +                        "billing",
        +                        "unlock_summary"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "current_tier": {
        +                    "const": "free",
        +                    "default": "free",
        +                    "type": "string"
        +                  },
        +                  "pass_credit": {
        +                    "anyOf": [
        +                      {
        +                        "additionalProperties": false,
        +                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        +                        "properties": {
        +                          "amount_local": {
        +                            "type": "number"
        +                          },
        +                          "applies_to": {
        +                            "const": "solo_first_month",
        +                            "default": "solo_first_month",
        +                            "type": "string"
        +                          },
        +                          "currency": {
        +                            "type": "string"
        +                          },
        +                          "redeemable_until": {
        +                            "type": "string"
        +                          }
        +                        },
        +                        "required": [
        +                          "amount_local",
        +                          "currency",
        +                          "redeemable_until"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "pricing_url": {
        +                    "default": "https://civilquants.com/pricing",
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "available_tiers"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tos_url": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "upgrade_hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "warranty_disclaimer": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          }
        +        },
        +        "required": [
        +          "request_id",
        +          "issued_at",
        +          "tier"
        +        ],
        +        "type": "object"
        +      },
        +      "data": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Aggregated + per-section result for a sectioned assembly run.",
        +            "properties": {
        +              "aggregated_boq_rows": {
        +                "items": {
        +                  "additionalProperties": false,
        +                  "description": "Schema § 1.3 — a single bill row in the requested standard's format.\n\n`description` is the non-verbatim functional description per spec § 13.9 /\n§ 15 invariant — NEVER reproduces a standard's verbatim clause text.\n`rate` / `amount` ship null because rates are commodity data the customer\nowns; the engine's job is the measurement, not the pricing.",
        +                  "properties": {
        +                    "amount": {
        +                      "anyOf": [
        +                        {
        +                          "type": "number"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "attribution": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "audit_id": {
        +                      "anyOf": [
        +                        {
        +                          "type": "string"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "description": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "quantity": {
        +                      "minimum": 0,
        +                      "type": "number"
        +                    },
        +                    "rate": {
        +                      "anyOf": [
        +                        {
        +                          "type": "number"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "unit": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "work_section": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    }
        +                  },
        +                  "required": [
        +                    "work_section",
        +                    "description",
        +                    "quantity",
        +                    "unit",
        +                    "attribution"
        +                  ],
        +                  "type": "object"
        +                },
        +                "type": "array"
        +              },
        +              "assembly_slug": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "parameters_used": {
        +                "additionalProperties": true,
        +                "type": "object"
        +              },
        +              "section_count": {
        +                "minimum": 1,
        +                "type": "integer"
        +              },
        +              "section_results": {
        +                "anyOf": [
        +                  {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.1 — the typed payload returned inside `MCPResponse[ComputeResult]`.\n\nFree-tier responses omit `drawings` (the downloadable CAD artefact\npointers — the paid differentiator); the bridge enforces this. The\n`audit_trail` and the inline `drawing` preview are present on BOTH tiers\n(V1 ALIGN / 60th-fire D + C). `text_summary` is bounded to 2000 chars —\nkeeps the LLM-facing summary token-cheap and forces longer narrative into\nBoQ row descriptions where it belongs. `warnings` is the non-fatal\ngeometry advisory list (both tiers).",
        +                      "properties": {
        +                        "assembly_slug": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "audit_trail": {
        +                          "anyOf": [
        +                            {
        +                              "items": {
        +                                "additionalProperties": false,
        +                                "description": "Schema § 1.7 — paid-tier audit-trail entry.\n\nOne entry per BoQ row; `boq_row_index` ties to the row position in\n`ComputeResult.boq_rows`. `derivation` is the human-readable formula\nwalk-through; `formula` is the optional formal expression.",
        +                                "properties": {
        +                                  "boq_row_index": {
        +                                    "minimum": 0,
        +                                    "type": "integer"
        +                                  },
        +                                  "derivation": {
        +                                    "minLength": 1,
        +                                    "type": "string"
        +                                  },
        +                                  "formula": {
        +                                    "anyOf": [
        +                                      {
        +                                        "type": "string"
        +                                      },
        +                                      {
        +                                        "type": "null"
        +                                      }
        +                                    ],
        +                                    "default": null
        +                                  },
        +                                  "id": {
        +                                    "minLength": 1,
        +                                    "type": "string"
        +                                  },
        +                                  "parameters_referenced": {
        +                                    "items": {
        +                                      "type": "string"
        +                                    },
        +                                    "type": "array"
        +                                  }
        +                                },
        +                                "required": [
        +                                  "id",
        +                                  "boq_row_index",
        +                                  "derivation"
        +                                ],
        +                                "type": "object"
        +                              },
        +                              "type": "array"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ],
        +                          "default": null
        +                        },
        +                        "boq_rows": {
        +                          "items": {
        +                            "additionalProperties": false,
        +                            "description": "Schema § 1.3 — a single bill row in the requested standard's format.\n\n`description` is the non-verbatim functional description per spec § 13.9 /\n§ 15 invariant — NEVER reproduces a standard's verbatim clause text.\n`rate` / `amount` ship null because rates are commodity data the customer\nowns; the engine's job is the measurement, not the pricing.",
        +                            "properties": {
        +                              "amount": {
        +                                "anyOf": [
        +                                  {
        +                                    "type": "number"
        +                                  },
        +                                  {
        +                                    "type": "null"
        +                                  }
        +                                ],
        +                                "default": null
        +                              },
        +                              "attribution": {
        +                                "minLength": 1,
        +                                "type": "string"
        +                              },
        +                              "audit_id": {
        +                                "anyOf": [
        +                                  {
        +                                    "type": "string"
        +                                  },
        +                                  {
        +                                    "type": "null"
        +                                  }
        +                                ],
        +                                "default": null
        +                              },
        +                              "description": {
        +                                "minLength": 1,
        +                                "type": "string"
        +                              },
        +                              "quantity": {
        +                                "minimum": 0,
        +                                "type": "number"
        +                              },
        +                              "rate": {
        +                                "anyOf": [
        +                                  {
        +                                    "type": "number"
        +                                  },
        +                                  {
        +                                    "type": "null"
        +                                  }
        +                                ],
        +                                "default": null
        +                              },
        +                              "unit": {
        +                                "minLength": 1,
        +                                "type": "string"
        +                              },
        +                              "work_section": {
        +                                "minLength": 1,
        +                                "type": "string"
        +                              }
        +                            },
        +                            "required": [
        +                              "work_section",
        +                              "description",
        +                              "quantity",
        +                              "unit",
        +                              "attribution"
        +                            ],
        +                            "type": "object"
        +                          },
        +                          "type": "array"
        +                        },
        +                        "drawing": {
        +                          "anyOf": [
        +                            {
        +                              "additionalProperties": false,
        +                              "description": "Schema § 1.6a — inline server-rendered SVG preview of the geometry.\n\nThe MCP mirror of the web ``/compute`` response's ``drawing`` field\n(``api.schemas.compute.DrawingRef``): the same on-screen dimensioned\ndrawing both tiers see in the workspace, surfaced on the MCP compute\nresponse so a chat client can render it inline (60th-fire item C). This\nis the on-screen preview — present on BOTH tiers per the free/paid\nboundary; the downloadable CAD artefacts (DXF / dimensioned PDF) remain\nthe paid differentiator via the export tools.\n\nDefined here rather than importing ``DrawingRef`` because the web\n``schemas`` package imports back into this module (``schemas.render``),\nso reusing it would create an import cycle — the MCP wire contract keeps\nits own copy, the same pattern as ``BoQRow`` / ``DrawingReference``.",
        +                              "properties": {
        +                                "entity_count": {
        +                                  "minimum": 0,
        +                                  "type": "integer"
        +                                },
        +                                "svg_b64": {
        +                                  "minLength": 1,
        +                                  "type": "string"
        +                                },
        +                                "unit_of_drawing": {
        +                                  "const": "m",
        +                                  "default": "m",
        +                                  "type": "string"
        +                                },
        +                                "viewbox_height": {
        +                                  "exclusiveMinimum": 0,
        +                                  "type": "number"
        +                                },
        +                                "viewbox_width": {
        +                                  "exclusiveMinimum": 0,
        +                                  "type": "number"
        +                                },
        +                                "viewbox_x": {
        +                                  "type": "number"
        +                                },
        +                                "viewbox_y": {
        +                                  "type": "number"
        +                                }
        +                              },
        +                              "required": [
        +                                "svg_b64",
        +                                "viewbox_x",
        +                                "viewbox_y",
        +                                "viewbox_width",
        +                                "viewbox_height",
        +                                "entity_count"
        +                              ],
        +                              "type": "object"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ],
        +                          "default": null
        +                        },
        +                        "drawings": {
        +                          "anyOf": [
        +                            {
        +                              "items": {
        +                                "additionalProperties": false,
        +                                "description": "Schema § 1.6 — paid-tier drawing artefact pointer.\n\n`url` is an R2-signed URL; expiry is carried in `_meta.deliverables.expires_at`\non the envelope (not duplicated here). `layers` is DXF-only; PDF/SVG\ncallers omit it.",
        +                                "properties": {
        +                                  "drawing_type": {
        +                                    "enum": [
        +                                      "section",
        +                                      "plan",
        +                                      "elevation",
        +                                      "isometric",
        +                                      "detail"
        +                                    ],
        +                                    "type": "string"
        +                                  },
        +                                  "format": {
        +                                    "enum": [
        +                                      "DXF",
        +                                      "PDF",
        +                                      "SVG"
        +                                    ],
        +                                    "type": "string"
        +                                  },
        +                                  "layers": {
        +                                    "anyOf": [
        +                                      {
        +                                        "items": {
        +                                          "type": "string"
        +                                        },
        +                                        "type": "array"
        +                                      },
        +                                      {
        +                                        "type": "null"
        +                                      }
        +                                    ],
        +                                    "default": null
        +                                  },
        +                                  "scale": {
        +                                    "minLength": 1,
        +                                    "type": "string"
        +                                  },
        +                                  "sheet_size": {
        +                                    "enum": [
        +                                      "A1",
        +                                      "A2",
        +                                      "A3",
        +                                      "A4"
        +                                    ],
        +                                    "type": "string"
        +                                  },
        +                                  "url": {
        +                                    "minLength": 1,
        +                                    "type": "string"
        +                                  }
        +                                },
        +                                "required": [
        +                                  "drawing_type",
        +                                  "format",
        +                                  "url",
        +                                  "sheet_size",
        +                                  "scale"
        +                                ],
        +                                "type": "object"
        +                              },
        +                              "type": "array"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ],
        +                          "default": null
        +                        },
        +                        "parameters_used": {
        +                          "additionalProperties": false,
        +                          "description": "Schema § 1.2 — the parameter snapshot the engine actually used.\n\nSplits user-supplied values from engine defaults so customers can see\nwhich numbers came from them and which the engine filled in. Every\ndefaulted parameter SHOULD have a corresponding entry in `assumptions`\n— the bridge layer enforces this when wrapping engine output.",
        +                          "properties": {
        +                            "assumptions": {
        +                              "items": {
        +                                "type": "string"
        +                              },
        +                              "type": "array"
        +                            },
        +                            "engine_defaults": {
        +                              "additionalProperties": true,
        +                              "type": "object"
        +                            },
        +                            "user_supplied": {
        +                              "additionalProperties": true,
        +                              "type": "object"
        +                            }
        +                          },
        +                          "type": "object"
        +                        },
        +                        "standard": {
        +                          "enum": [
        +                            "CESMM4",
        +                            "NRM2",
        +                            "SMM7",
        +                            "MMHW"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "text_summary": {
        +                          "maxLength": 2000,
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "totals_summary": {
        +                          "additionalProperties": false,
        +                          "description": "Schema § 1.4 — totals_summary as a typed wrapper around the free-form dict.\n\nWire shape is a flat object (`{\"concrete_m3\": {...}, \"rebar_t\": {...}}`).\nWe model it as `RootModel`-equivalent via `model_config(extra=\"allow\")`\n+ a single `__root__`-style `entries` dict. Pydantic v2 recommends\n`RootModel` for free-form roots; using a wrapper class keeps the import\nsurface uniform with the rest of this module.",
        +                          "properties": {
        +                            "entries": {
        +                              "additionalProperties": {
        +                                "additionalProperties": false,
        +                                "description": "Schema § 1.4 — single material/work-class total entry.",
        +                                "properties": {
        +                                  "quantity": {
        +                                    "minimum": 0,
        +                                    "type": "number"
        +                                  },
        +                                  "unit": {
        +                                    "minLength": 1,
        +                                    "type": "string"
        +                                  }
        +                                },
        +                                "required": [
        +                                  "quantity",
        +                                  "unit"
        +                                ],
        +                                "type": "object"
        +                              },
        +                              "type": "object"
        +                            }
        +                          },
        +                          "type": "object"
        +                        },
        +                        "warnings": {
        +                          "items": {
        +                            "additionalProperties": false,
        +                            "description": "Schema § 1.8 — a non-fatal geometry advisory (56th-fire T2).\n\nThe wire projection of the engine's `core.GeometryWarning`. Advisory only:\na warning NEVER changes a measured quantity — it flags geometry that is\nvalid but likely a mistake (e.g. a stale dependent-height default). Present\non BOTH tiers — a correctness/safety signal, not a paid feature.",
        +                            "properties": {
        +                              "affected_params": {
        +                                "items": {
        +                                  "type": "string"
        +                                },
        +                                "type": "array"
        +                              },
        +                              "code": {
        +                                "minLength": 1,
        +                                "type": "string"
        +                              },
        +                              "detail": {
        +                                "additionalProperties": {
        +                                  "type": "number"
        +                                },
        +                                "type": "object"
        +                              },
        +                              "message": {
        +                                "minLength": 1,
        +                                "type": "string"
        +                              },
        +                              "severity": {
        +                                "enum": [
        +                                  "info",
        +                                  "advisory",
        +                                  "caution"
        +                                ],
        +                                "type": "string"
        +                              }
        +                            },
        +                            "required": [
        +                              "code",
        +                              "severity",
        +                              "message"
        +                            ],
        +                            "type": "object"
        +                          },
        +                          "type": "array"
        +                        }
        +                      },
        +                      "required": [
        +                        "assembly_slug",
        +                        "standard",
        +                        "parameters_used",
        +                        "boq_rows",
        +                        "totals_summary",
        +                        "text_summary"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "section_summary": {
        +                "items": {
        +                  "additionalProperties": false,
        +                  "description": "Cheap always-on per-section line: label + run length + totals.",
        +                  "properties": {
        +                    "label": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "run_length": {
        +                      "anyOf": [
        +                        {
        +                          "type": "number"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "totals_summary": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.4 — totals_summary as a typed wrapper around the free-form dict.\n\nWire shape is a flat object (`{\"concrete_m3\": {...}, \"rebar_t\": {...}}`).\nWe model it as `RootModel`-equivalent via `model_config(extra=\"allow\")`\n+ a single `__root__`-style `entries` dict. Pydantic v2 recommends\n`RootModel` for free-form roots; using a wrapper class keeps the import\nsurface uniform with the rest of this module.",
        +                      "properties": {
        +                        "entries": {
        +                          "additionalProperties": {
        +                            "additionalProperties": false,
        +                            "description": "Schema § 1.4 — single material/work-class total entry.",
        +                            "properties": {
        +                              "quantity": {
        +                                "minimum": 0,
        +                                "type": "number"
        +                              },
        +                              "unit": {
        +                                "minLength": 1,
        +                                "type": "string"
        +                              }
        +                            },
        +                            "required": [
        +                              "quantity",
        +                              "unit"
        +                            ],
        +                            "type": "object"
        +                          },
        +                          "type": "object"
        +                        }
        +                      },
        +                      "type": "object"
        +                    }
        +                  },
        +                  "required": [
        +                    "label",
        +                    "totals_summary"
        +                  ],
        +                  "type": "object"
        +                },
        +                "type": "array"
        +              },
        +              "standard": {
        +                "enum": [
        +                  "CESMM4",
        +                  "NRM2",
        +                  "SMM7",
        +                  "MMHW"
        +                ],
        +                "type": "string"
        +              },
        +              "warnings": {
        +                "items": {
        +                  "additionalProperties": false,
        +                  "description": "A section-labelled geometry/advisory warning.",
        +                  "properties": {
        +                    "section_label": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "warning": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.8 — a non-fatal geometry advisory (56th-fire T2).\n\nThe wire projection of the engine's `core.GeometryWarning`. Advisory only:\na warning NEVER changes a measured quantity — it flags geometry that is\nvalid but likely a mistake (e.g. a stale dependent-height default). Present\non BOTH tiers — a correctness/safety signal, not a paid feature.",
        +                      "properties": {
        +                        "affected_params": {
        +                          "items": {
        +                            "type": "string"
        +                          },
        +                          "type": "array"
        +                        },
        +                        "code": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "detail": {
        +                          "additionalProperties": {
        +                            "type": "number"
        +                          },
        +                          "type": "object"
        +                        },
        +                        "message": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "severity": {
        +                          "enum": [
        +                            "info",
        +                            "advisory",
        +                            "caution"
        +                          ],
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "code",
        +                        "severity",
        +                        "message"
        +                      ],
        +                      "type": "object"
        +                    }
        +                  },
        +                  "required": [
        +                    "section_label",
        +                    "warning"
        +                  ],
        +                  "type": "object"
        +                },
        +                "type": "array"
        +              }
        +            },
        +            "required": [
        +              "assembly_slug",
        +              "standard",
        +              "section_count",
        +              "section_summary",
        +              "aggregated_boq_rows"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      },
        +      "error": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        +            "properties": {
        +              "code": {
        +                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        +                "enum": [
        +                  "RATE_LIMIT_EXCEEDED",
        +                  "TIER_INSUFFICIENT",
        +                  "INVALID_INPUT",
        +                  "SCHEMA_VERSION_MISMATCH",
        +                  "SCHEMA_INVARIANT_VIOLATION",
        +                  "UPSTREAM_TIMEOUT",
        +                  "BACKEND_FAILURE",
        +                  "IP_BLOCKED",
        +                  "RESOURCE_NOT_FOUND",
        +                  "RENDER_FAILURE",
        +                  "OCR_LOW_CONFIDENCE",
        +                  "MANUAL_REVIEW_REQUIRED",
        +                  "ACCEPTANCE_REQUIRED",
        +                  "INVALID_TOKEN"
        +                ],
        +                "type": "string"
        +              },
        +              "details": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "message": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "recoverable": {
        +                "type": "boolean"
        +              },
        +              "retry_after_seconds": {
        +                "anyOf": [
        +                  {
        +                    "minimum": 0,
        +                    "type": "integer"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              }
        +            },
        +            "required": [
        +              "code",
        +              "message",
        +              "recoverable"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      }
        +    },
        +    "required": [
        +      "_meta"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "_meta": {
        +        "additionalProperties": false,
        +        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        +        "properties": {
        +          "deliverables": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        +                "properties": {
        +                  "docx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "dxf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "expires_at": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  },
        +                  "pdf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "xlsx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "expires_at"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "document_id": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "issued_at": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "output_mode": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Surfaces what a trimmed ``output_mode`` withheld from ``data``.\n\nA trimmed mode (``summary`` / ``boq`` / ``boq_with_backup``) withholds\nalready-computed fields to keep the chat payload small. The withheld value\nreads to a client agent as \"capability missing\" (the box-culvert \"geometry\nbuilder isn't firing\" scare) rather than \"pared for size\": ``drawing`` and\n``audit_trail`` appear as ``null``, ``boq_rows`` as an empty list ``[]``\n(its type forbids ``null``) — both indistinguishable from a genuine absent\nresult. This names the withheld fields and the exact mode that brings each\nback, so the value is unambiguous. Absent on the default ``full_json`` mode\n— nothing is withheld, nothing to point at.",
        +                "properties": {
        +                  "mode": {
        +                    "enum": [
        +                      "summary",
        +                      "boq",
        +                      "boq_with_backup"
        +                    ],
        +                    "type": "string"
        +                  },
        +                  "omitted_fields": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "minItems": 1,
        +                    "type": "array"
        +                  },
        +                  "retrieve_with": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "mode",
        +                  "omitted_fields",
        +                  "retrieve_with"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "rate_limit_remaining": {
        +            "anyOf": [
        +              {
        +                "minimum": 0,
        +                "type": "integer"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "request_id": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "schema_version": {
        +            "const": "1.0.0",
        +            "default": "1.0.0",
        +            "type": "string"
        +          },
        +          "scope_boundary": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        +                "properties": {
        +                  "not_in_scope": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "produced": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "recommended_companions": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "type": "string"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "produced",
        +                  "not_in_scope"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tier": {
        +            "enum": [
        +              "free",
        +              "paid"
        +            ],
        +            "type": "string"
        +          },
        +          "tier_upgrade": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        +                "properties": {
        +                  "available_tiers": {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        +                      "properties": {
        +                        "billing": {
        +                          "enum": [
        +                            "one_off",
        +                            "monthly",
        +                            "annual"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "currency": {
        +                          "enum": [
        +                            "GBP",
        +                            "SGD",
        +                            "EUR",
        +                            "USD",
        +                            "CAD",
        +                            "AUD",
        +                            "NZD",
        +                            "MYR"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "display_name": {
        +                          "type": "string"
        +                        },
        +                        "price_local": {
        +                          "type": "number"
        +                        },
        +                        "tier_slug": {
        +                          "enum": [
        +                            "7_day_pass",
        +                            "solo",
        +                            "studio",
        +                            "practice"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "unlock_summary": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "tier_slug",
        +                        "display_name",
        +                        "price_local",
        +                        "currency",
        +                        "billing",
        +                        "unlock_summary"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "current_tier": {
        +                    "const": "free",
        +                    "default": "free",
        +                    "type": "string"
        +                  },
        +                  "pass_credit": {
        +                    "anyOf": [
        +                      {
        +                        "additionalProperties": false,
        +                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        +                        "properties": {
        +                          "amount_local": {
        +                            "type": "number"
        +                          },
        +                          "applies_to": {
        +                            "const": "solo_first_month",
        +                            "default": "solo_first_month",
        +                            "type": "string"
        +                          },
        +                          "currency": {
        +                            "type": "string"
        +                          },
        +                          "redeemable_until": {
        +                            "type": "string"
        +                          }
        +                        },
        +                        "required": [
        +                          "amount_local",
        +                          "currency",
        +                          "redeemable_until"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "pricing_url": {
        +                    "default": "https://civilquants.com/pricing",
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "available_tiers"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tos_url": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "upgrade_hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "warranty_disclaimer": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          }
        +        },
        +        "required": [
        +          "request_id",
        +          "issued_at",
        +          "tier"
        +        ],
        +        "type": "object"
        +      },
        +      "data": {
        +        "default": null,
        +        "title": "Data"
        +      },
        +      "error": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        +            "properties": {
        +              "code": {
        +                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        +                "enum": [
        +                  "RATE_LIMIT_EXCEEDED",
        +                  "TIER_INSUFFICIENT",
        +                  "INVALID_INPUT",
        +                  "SCHEMA_VERSION_MISMATCH",
        +                  "SCHEMA_INVARIANT_VIOLATION",
        +                  "UPSTREAM_TIMEOUT",
        +                  "BACKEND_FAILURE",
        +                  "IP_BLOCKED",
        +                  "RESOURCE_NOT_FOUND",
        +                  "RENDER_FAILURE",
        +                  "OCR_LOW_CONFIDENCE",
        +                  "MANUAL_REVIEW_REQUIRED",
        +                  "ACCEPTANCE_REQUIRED",
        +                  "INVALID_TOKEN"
        +                ],
        +                "type": "string"
        +              },
        +              "details": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "message": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "recoverable": {
        +                "type": "boolean"
        +              },
        +              "retry_after_seconds": {
        +                "anyOf": [
        +                  {
        +                    "minimum": 0,
        +                    "type": "integer"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              }
        +            },
        +            "required": [
        +              "code",
        +              "message",
        +              "recoverable"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      }
        +    },
        +    "required": [
        +      "_meta"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedcompute_pad_foundation1 field changed
      • changedOutput schema / properties / result / anyOf
        Previous value: -[
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "_meta": {
        -        "additionalProperties": false,
        -        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        -        "properties": {
        -          "deliverables": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        -                "properties": {
        -                  "docx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "dxf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "expires_at": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  },
        -                  "pdf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "xlsx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "expires_at"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "document_id": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "issued_at": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "rate_limit_remaining": {
        -            "anyOf": [
        -              {
        -                "minimum": 0,
        -                "type": "integer"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "request_id": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "schema_version": {
        -            "const": "1.0.0",
        -            "default": "1.0.0",
        -            "type": "string"
        -          },
        -          "scope_boundary": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        -                "properties": {
        -                  "not_in_scope": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "produced": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "recommended_companions": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "type": "string"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "produced",
        -                  "not_in_scope"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tier": {
        -            "enum": [
        -              "free",
        -              "paid"
        -            ],
        -            "type": "string"
        -          },
        -          "tier_upgrade": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        -                "properties": {
        -                  "available_tiers": {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        -                      "properties": {
        -                        "billing": {
        -                          "enum": [
        -                            "one_off",
        -                            "monthly",
        -                            "annual"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "currency": {
        -                          "enum": [
        -                            "GBP",
        -                            "SGD",
        -                            "EUR",
        -                            "USD",
        -                            "CAD",
        -                            "AUD",
        -                            "NZD",
        -                            "MYR"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "display_name": {
        -                          "type": "string"
        -                        },
        -                        "price_local": {
        -                          "type": "number"
        -                        },
        -                        "tier_slug": {
        -                          "enum": [
        -                            "7_day_pass",
        -                            "solo",
        -                            "studio",
        -                            "practice"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "unlock_summary": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "tier_slug",
        -                        "display_name",
        -                        "price_local",
        -                        "currency",
        -                        "billing",
        -                        "unlock_summary"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "current_tier": {
        -                    "const": "free",
        -                    "default": "free",
        -                    "type": "string"
        -                  },
        -                  "pass_credit": {
        -                    "anyOf": [
        -                      {
        -                        "additionalProperties": false,
        -                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        -                        "properties": {
        -                          "amount_local": {
        -                            "type": "number"
        -                          },
        -                          "applies_to": {
        -                            "const": "solo_first_month",
        -                            "default": "solo_first_month",
        -                            "type": "string"
        -                          },
        -                          "currency": {
        -                            "type": "string"
        -                          },
        -                          "redeemable_until": {
        -                            "type": "string"
        -                          }
        -                        },
        -                        "required": [
        -                          "amount_local",
        -                          "currency",
        -                          "redeemable_until"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "pricing_url": {
        -                    "default": "https://civilquants.com/pricing",
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "available_tiers"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tos_url": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "upgrade_hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "warranty_disclaimer": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          }
        -        },
        -        "required": [
        -          "request_id",
        -          "issued_at",
        -          "tier"
        -        ],
        -        "type": "object"
        -      },
        -      "data": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Schema § 1.1 — the typed payload returned inside `MCPResponse[ComputeResult]`.\n\nFree-tier responses omit `drawings` (the downloadable CAD artefact\npointers — the paid differentiator); the bridge enforces this. The\n`audit_trail` and the inline `drawing` preview are present on BOTH tiers\n(V1 ALIGN / 60th-fire D + C). `text_summary` is bounded to 2000 chars —\nkeeps the LLM-facing summary token-cheap and forces longer narrative into\nBoQ row descriptions where it belongs. `warnings` is the non-fatal\ngeometry advisory list (both tiers).",
        -            "properties": {
        -              "assembly_slug": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "audit_trail": {
        -                "anyOf": [
        -                  {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.7 — paid-tier audit-trail entry.\n\nOne entry per BoQ row; `boq_row_index` ties to the row position in\n`ComputeResult.boq_rows`. `derivation` is the human-readable formula\nwalk-through; `formula` is the optional formal expression.",
        -                      "properties": {
        -                        "boq_row_index": {
        -                          "minimum": 0,
        -                          "type": "integer"
        -                        },
        -                        "derivation": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "formula": {
        -                          "anyOf": [
        -                            {
        -                              "type": "string"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ],
        -                          "default": null
        -                        },
        -                        "id": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "parameters_referenced": {
        -                          "items": {
        -                            "type": "string"
        -                          },
        -                          "type": "array"
        -                        }
        -                      },
        -                      "required": [
        -                        "id",
        -                        "boq_row_index",
        -                        "derivation"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "boq_rows": {
        -                "items": {
        -                  "additionalProperties": false,
        -                  "description": "Schema § 1.3 — a single bill row in the requested standard's format.\n\n`description` is the non-verbatim functional description per spec § 13.9 /\n§ 15 invariant — NEVER reproduces a standard's verbatim clause text.\n`rate` / `amount` ship null because rates are commodity data the customer\nowns; the engine's job is the measurement, not the pricing.",
        -                  "properties": {
        -                    "amount": {
        -                      "anyOf": [
        -                        {
        -                          "type": "number"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "attribution": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "audit_id": {
        -                      "anyOf": [
        -                        {
        -                          "type": "string"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "description": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "quantity": {
        -                      "minimum": 0,
        -                      "type": "number"
        -                    },
        -                    "rate": {
        -                      "anyOf": [
        -                        {
        -                          "type": "number"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "unit": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "work_section": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    }
        -                  },
        -                  "required": [
        -                    "work_section",
        -                    "description",
        -                    "quantity",
        -                    "unit",
        -                    "attribution"
        -                  ],
        -                  "type": "object"
        -                },
        -                "type": "array"
        -              },
        -              "drawing": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": false,
        -                    "description": "Schema § 1.6a — inline server-rendered SVG preview of the geometry.\n\nThe MCP mirror of the web ``/compute`` response's ``drawing`` field\n(``api.schemas.compute.DrawingRef``): the same on-screen dimensioned\ndrawing both tiers see in the workspace, surfaced on the MCP compute\nresponse so a chat client can render it inline (60th-fire item C). This\nis the on-screen preview — present on BOTH tiers per the free/paid\nboundary; the downloadable CAD artefacts (DXF / dimensioned PDF) remain\nthe paid differentiator via the export tools.\n\nDefined here rather than importing ``DrawingRef`` because the web\n``schemas`` package imports back into this module (``schemas.render``),\nso reusing it would create an import cycle — the MCP wire contract keeps\nits own copy, the same pattern as ``BoQRow`` / ``DrawingReference``.",
        -                    "properties": {
        -                      "entity_count": {
        -                        "minimum": 0,
        -                        "type": "integer"
        -                      },
        -                      "svg_b64": {
        -                        "minLength": 1,
        -                        "type": "string"
        -                      },
        -                      "unit_of_drawing": {
        -                        "const": "m",
        -                        "default": "m",
        -                        "type": "string"
        -                      },
        -                      "viewbox_height": {
        -                        "exclusiveMinimum": 0,
        -                        "type": "number"
        -                      },
        -                      "viewbox_width": {
        -                        "exclusiveMinimum": 0,
        -                        "type": "number"
        -                      },
        -                      "viewbox_x": {
        -                        "type": "number"
        -                      },
        -                      "viewbox_y": {
        -                        "type": "number"
        -                      }
        -                    },
        -                    "required": [
        -                      "svg_b64",
        -                      "viewbox_x",
        -                      "viewbox_y",
        -                      "viewbox_width",
        -                      "viewbox_height",
        -                      "entity_count"
        -                    ],
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "drawings": {
        -                "anyOf": [
        -                  {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.6 — paid-tier drawing artefact pointer.\n\n`url` is an R2-signed URL; expiry is carried in `_meta.deliverables.expires_at`\non the envelope (not duplicated here). `layers` is DXF-only; PDF/SVG\ncallers omit it.",
        -                      "properties": {
        -                        "drawing_type": {
        -                          "enum": [
        -                            "section",
        -                            "plan",
        -                            "elevation",
        -                            "isometric",
        -                            "detail"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "format": {
        -                          "enum": [
        -                            "DXF",
        -                            "PDF",
        -                            "SVG"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "layers": {
        -                          "anyOf": [
        -                            {
        -                              "items": {
        -                                "type": "string"
        -                              },
        -                              "type": "array"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ],
        -                          "default": null
        -                        },
        -                        "scale": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "sheet_size": {
        -                          "enum": [
        -                            "A1",
        -                            "A2",
        -                            "A3",
        -                            "A4"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "url": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "drawing_type",
        -                        "format",
        -                        "url",
        -                        "sheet_size",
        -                        "scale"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "parameters_used": {
        -                "additionalProperties": false,
        -                "description": "Schema § 1.2 — the parameter snapshot the engine actually used.\n\nSplits user-supplied values from engine defaults so customers can see\nwhich numbers came from them and which the engine filled in. Every\ndefaulted parameter SHOULD have a corresponding entry in `assumptions`\n— the bridge layer enforces this when wrapping engine output.",
        -                "properties": {
        -                  "assumptions": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "engine_defaults": {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  "user_supplied": {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  }
        -                },
        -                "type": "object"
        -              },
        -              "standard": {
        -                "enum": [
        -                  "CESMM4",
        -                  "NRM2",
        -                  "SMM7",
        -                  "MMHW"
        -                ],
        -                "type": "string"
        -              },
        -              "text_summary": {
        -                "maxLength": 2000,
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "totals_summary": {
        -                "additionalProperties": false,
        -                "description": "Schema § 1.4 — totals_summary as a typed wrapper around the free-form dict.\n\nWire shape is a flat object (`{\"concrete_m3\": {...}, \"rebar_t\": {...}}`).\nWe model it as `RootModel`-equivalent via `model_config(extra=\"allow\")`\n+ a single `__root__`-style `entries` dict. Pydantic v2 recommends\n`RootModel` for free-form roots; using a wrapper class keeps the import\nsurface uniform with the rest of this module.",
        -                "properties": {
        -                  "entries": {
        -                    "additionalProperties": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.4 — single material/work-class total entry.",
        -                      "properties": {
        -                        "quantity": {
        -                          "minimum": 0,
        -                          "type": "number"
        -                        },
        -                        "unit": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "quantity",
        -                        "unit"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "object"
        -                  }
        -                },
        -                "type": "object"
        -              },
        -              "warnings": {
        -                "items": {
        -                  "additionalProperties": false,
        -                  "description": "Schema § 1.8 — a non-fatal geometry advisory (56th-fire T2).\n\nThe wire projection of the engine's `core.GeometryWarning`. Advisory only:\na warning NEVER changes a measured quantity — it flags geometry that is\nvalid but likely a mistake (e.g. a stale dependent-height default). Present\non BOTH tiers — a correctness/safety signal, not a paid feature.",
        -                  "properties": {
        -                    "affected_params": {
        -                      "items": {
        -                        "type": "string"
        -                      },
        -                      "type": "array"
        -                    },
        -                    "code": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "detail": {
        -                      "additionalProperties": {
        -                        "type": "number"
        -                      },
        -                      "type": "object"
        -                    },
        -                    "message": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "severity": {
        -                      "enum": [
        -                        "info",
        -                        "advisory",
        -                        "caution"
        -                      ],
        -                      "type": "string"
        -                    }
        -                  },
        -                  "required": [
        -                    "code",
        -                    "severity",
        -                    "message"
        -                  ],
        -                  "type": "object"
        -                },
        -                "type": "array"
        -              }
        -            },
        -            "required": [
        -              "assembly_slug",
        -              "standard",
        -              "parameters_used",
        -              "boq_rows",
        -              "totals_summary",
        -              "text_summary"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      },
        -      "error": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        -            "properties": {
        -              "code": {
        -                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        -                "enum": [
        -                  "RATE_LIMIT_EXCEEDED",
        -                  "TIER_INSUFFICIENT",
        -                  "INVALID_INPUT",
        -                  "SCHEMA_VERSION_MISMATCH",
        -                  "SCHEMA_INVARIANT_VIOLATION",
        -                  "UPSTREAM_TIMEOUT",
        -                  "BACKEND_FAILURE",
        -                  "IP_BLOCKED",
        -                  "RESOURCE_NOT_FOUND",
        -                  "RENDER_FAILURE",
        -                  "OCR_LOW_CONFIDENCE",
        -                  "MANUAL_REVIEW_REQUIRED",
        -                  "ACCEPTANCE_REQUIRED",
        -                  "INVALID_TOKEN"
        -                ],
        -                "type": "string"
        -              },
        -              "details": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "message": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "recoverable": {
        -                "type": "boolean"
        -              },
        -              "retry_after_seconds": {
        -                "anyOf": [
        -                  {
        -                    "minimum": 0,
        -                    "type": "integer"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              }
        -            },
        -            "required": [
        -              "code",
        -              "message",
        -              "recoverable"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      }
        -    },
        -    "required": [
        -      "_meta"
        -    ],
        -    "type": "object"
        -  },
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "_meta": {
        -        "additionalProperties": false,
        -        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        -        "properties": {
        -          "deliverables": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        -                "properties": {
        -                  "docx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "dxf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "expires_at": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  },
        -                  "pdf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "xlsx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "expires_at"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "document_id": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "issued_at": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "rate_limit_remaining": {
        -            "anyOf": [
        -              {
        -                "minimum": 0,
        -                "type": "integer"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "request_id": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "schema_version": {
        -            "const": "1.0.0",
        -            "default": "1.0.0",
        -            "type": "string"
        -          },
        -          "scope_boundary": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        -                "properties": {
        -                  "not_in_scope": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "produced": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "recommended_companions": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "type": "string"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "produced",
        -                  "not_in_scope"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tier": {
        -            "enum": [
        -              "free",
        -              "paid"
        -            ],
        -            "type": "string"
        -          },
        -          "tier_upgrade": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        -                "properties": {
        -                  "available_tiers": {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        -                      "properties": {
        -                        "billing": {
        -                          "enum": [
        -                            "one_off",
        -                            "monthly",
        -                            "annual"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "currency": {
        -                          "enum": [
        -                            "GBP",
        -                            "SGD",
        -                            "EUR",
        -                            "USD",
        -                            "CAD",
        -                            "AUD",
        -                            "NZD",
        -                            "MYR"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "display_name": {
        -                          "type": "string"
        -                        },
        -                        "price_local": {
        -                          "type": "number"
        -                        },
        -                        "tier_slug": {
        -                          "enum": [
        -                            "7_day_pass",
        -                            "solo",
        -                            "studio",
        -                            "practice"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "unlock_summary": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "tier_slug",
        -                        "display_name",
        -                        "price_local",
        -                        "currency",
        -                        "billing",
        -                        "unlock_summary"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "current_tier": {
        -                    "const": "free",
        -                    "default": "free",
        -                    "type": "string"
        -                  },
        -                  "pass_credit": {
        -                    "anyOf": [
        -                      {
        -                        "additionalProperties": false,
        -                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        -                        "properties": {
        -                          "amount_local": {
        -                            "type": "number"
        -                          },
        -                          "applies_to": {
        -                            "const": "solo_first_month",
        -                            "default": "solo_first_month",
        -                            "type": "string"
        -                          },
        -                          "currency": {
        -                            "type": "string"
        -                          },
        -                          "redeemable_until": {
        -                            "type": "string"
        -                          }
        -                        },
        -                        "required": [
        -                          "amount_local",
        -                          "currency",
        -                          "redeemable_until"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "pricing_url": {
        -                    "default": "https://civilquants.com/pricing",
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "available_tiers"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tos_url": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "upgrade_hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "warranty_disclaimer": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          }
        -        },
        -        "required": [
        -          "request_id",
        -          "issued_at",
        -          "tier"
        -        ],
        -        "type": "object"
        -      },
        -      "data": {
        -        "default": null,
        -        "title": "Data"
        -      },
        -      "error": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        -            "properties": {
        -              "code": {
        -                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        -                "enum": [
        -                  "RATE_LIMIT_EXCEEDED",
        -                  "TIER_INSUFFICIENT",
        -                  "INVALID_INPUT",
        -                  "SCHEMA_VERSION_MISMATCH",
        -                  "SCHEMA_INVARIANT_VIOLATION",
        -                  "UPSTREAM_TIMEOUT",
        -                  "BACKEND_FAILURE",
        -                  "IP_BLOCKED",
        -                  "RESOURCE_NOT_FOUND",
        -                  "RENDER_FAILURE",
        -                  "OCR_LOW_CONFIDENCE",
        -                  "MANUAL_REVIEW_REQUIRED",
        -                  "ACCEPTANCE_REQUIRED",
        -                  "INVALID_TOKEN"
        -                ],
        -                "type": "string"
        -              },
        -              "details": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "message": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "recoverable": {
        -                "type": "boolean"
        -              },
        -              "retry_after_seconds": {
        -                "anyOf": [
        -                  {
        -                    "minimum": 0,
        -                    "type": "integer"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              }
        -            },
        -            "required": [
        -              "code",
        -              "message",
        -              "recoverable"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      }
        -    },
        -    "required": [
        -      "_meta"
        -    ],
        -    "type": "object"
        -  }
        -]New value: +[
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "_meta": {
        +        "additionalProperties": false,
        +        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        +        "properties": {
        +          "deliverables": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        +                "properties": {
        +                  "docx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "dxf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "expires_at": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  },
        +                  "pdf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "xlsx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "expires_at"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "document_id": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "issued_at": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "output_mode": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Surfaces what a trimmed ``output_mode`` withheld from ``data``.\n\nA trimmed mode (``summary`` / ``boq`` / ``boq_with_backup``) withholds\nalready-computed fields to keep the chat payload small. The withheld value\nreads to a client agent as \"capability missing\" (the box-culvert \"geometry\nbuilder isn't firing\" scare) rather than \"pared for size\": ``drawing`` and\n``audit_trail`` appear as ``null``, ``boq_rows`` as an empty list ``[]``\n(its type forbids ``null``) — both indistinguishable from a genuine absent\nresult. This names the withheld fields and the exact mode that brings each\nback, so the value is unambiguous. Absent on the default ``full_json`` mode\n— nothing is withheld, nothing to point at.",
        +                "properties": {
        +                  "mode": {
        +                    "enum": [
        +                      "summary",
        +                      "boq",
        +                      "boq_with_backup"
        +                    ],
        +                    "type": "string"
        +                  },
        +                  "omitted_fields": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "minItems": 1,
        +                    "type": "array"
        +                  },
        +                  "retrieve_with": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "mode",
        +                  "omitted_fields",
        +                  "retrieve_with"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "rate_limit_remaining": {
        +            "anyOf": [
        +              {
        +                "minimum": 0,
        +                "type": "integer"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "request_id": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "schema_version": {
        +            "const": "1.0.0",
        +            "default": "1.0.0",
        +            "type": "string"
        +          },
        +          "scope_boundary": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        +                "properties": {
        +                  "not_in_scope": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "produced": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "recommended_companions": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "type": "string"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "produced",
        +                  "not_in_scope"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tier": {
        +            "enum": [
        +              "free",
        +              "paid"
        +            ],
        +            "type": "string"
        +          },
        +          "tier_upgrade": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        +                "properties": {
        +                  "available_tiers": {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        +                      "properties": {
        +                        "billing": {
        +                          "enum": [
        +                            "one_off",
        +                            "monthly",
        +                            "annual"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "currency": {
        +                          "enum": [
        +                            "GBP",
        +                            "SGD",
        +                            "EUR",
        +                            "USD",
        +                            "CAD",
        +                            "AUD",
        +                            "NZD",
        +                            "MYR"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "display_name": {
        +                          "type": "string"
        +                        },
        +                        "price_local": {
        +                          "type": "number"
        +                        },
        +                        "tier_slug": {
        +                          "enum": [
        +                            "7_day_pass",
        +                            "solo",
        +                            "studio",
        +                            "practice"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "unlock_summary": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "tier_slug",
        +                        "display_name",
        +                        "price_local",
        +                        "currency",
        +                        "billing",
        +                        "unlock_summary"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "current_tier": {
        +                    "const": "free",
        +                    "default": "free",
        +                    "type": "string"
        +                  },
        +                  "pass_credit": {
        +                    "anyOf": [
        +                      {
        +                        "additionalProperties": false,
        +                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        +                        "properties": {
        +                          "amount_local": {
        +                            "type": "number"
        +                          },
        +                          "applies_to": {
        +                            "const": "solo_first_month",
        +                            "default": "solo_first_month",
        +                            "type": "string"
        +                          },
        +                          "currency": {
        +                            "type": "string"
        +                          },
        +                          "redeemable_until": {
        +                            "type": "string"
        +                          }
        +                        },
        +                        "required": [
        +                          "amount_local",
        +                          "currency",
        +                          "redeemable_until"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "pricing_url": {
        +                    "default": "https://civilquants.com/pricing",
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "available_tiers"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tos_url": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "upgrade_hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "warranty_disclaimer": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          }
        +        },
        +        "required": [
        +          "request_id",
        +          "issued_at",
        +          "tier"
        +        ],
        +        "type": "object"
        +      },
        +      "data": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Schema § 1.1 — the typed payload returned inside `MCPResponse[ComputeResult]`.\n\nFree-tier responses omit `drawings` (the downloadable CAD artefact\npointers — the paid differentiator); the bridge enforces this. The\n`audit_trail` and the inline `drawing` preview are present on BOTH tiers\n(V1 ALIGN / 60th-fire D + C). `text_summary` is bounded to 2000 chars —\nkeeps the LLM-facing summary token-cheap and forces longer narrative into\nBoQ row descriptions where it belongs. `warnings` is the non-fatal\ngeometry advisory list (both tiers).",
        +            "properties": {
        +              "assembly_slug": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "audit_trail": {
        +                "anyOf": [
        +                  {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.7 — paid-tier audit-trail entry.\n\nOne entry per BoQ row; `boq_row_index` ties to the row position in\n`ComputeResult.boq_rows`. `derivation` is the human-readable formula\nwalk-through; `formula` is the optional formal expression.",
        +                      "properties": {
        +                        "boq_row_index": {
        +                          "minimum": 0,
        +                          "type": "integer"
        +                        },
        +                        "derivation": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "formula": {
        +                          "anyOf": [
        +                            {
        +                              "type": "string"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ],
        +                          "default": null
        +                        },
        +                        "id": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "parameters_referenced": {
        +                          "items": {
        +                            "type": "string"
        +                          },
        +                          "type": "array"
        +                        }
        +                      },
        +                      "required": [
        +                        "id",
        +                        "boq_row_index",
        +                        "derivation"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "boq_rows": {
        +                "items": {
        +                  "additionalProperties": false,
        +                  "description": "Schema § 1.3 — a single bill row in the requested standard's format.\n\n`description` is the non-verbatim functional description per spec § 13.9 /\n§ 15 invariant — NEVER reproduces a standard's verbatim clause text.\n`rate` / `amount` ship null because rates are commodity data the customer\nowns; the engine's job is the measurement, not the pricing.",
        +                  "properties": {
        +                    "amount": {
        +                      "anyOf": [
        +                        {
        +                          "type": "number"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "attribution": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "audit_id": {
        +                      "anyOf": [
        +                        {
        +                          "type": "string"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "description": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "quantity": {
        +                      "minimum": 0,
        +                      "type": "number"
        +                    },
        +                    "rate": {
        +                      "anyOf": [
        +                        {
        +                          "type": "number"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "unit": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "work_section": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    }
        +                  },
        +                  "required": [
        +                    "work_section",
        +                    "description",
        +                    "quantity",
        +                    "unit",
        +                    "attribution"
        +                  ],
        +                  "type": "object"
        +                },
        +                "type": "array"
        +              },
        +              "drawing": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": false,
        +                    "description": "Schema § 1.6a — inline server-rendered SVG preview of the geometry.\n\nThe MCP mirror of the web ``/compute`` response's ``drawing`` field\n(``api.schemas.compute.DrawingRef``): the same on-screen dimensioned\ndrawing both tiers see in the workspace, surfaced on the MCP compute\nresponse so a chat client can render it inline (60th-fire item C). This\nis the on-screen preview — present on BOTH tiers per the free/paid\nboundary; the downloadable CAD artefacts (DXF / dimensioned PDF) remain\nthe paid differentiator via the export tools.\n\nDefined here rather than importing ``DrawingRef`` because the web\n``schemas`` package imports back into this module (``schemas.render``),\nso reusing it would create an import cycle — the MCP wire contract keeps\nits own copy, the same pattern as ``BoQRow`` / ``DrawingReference``.",
        +                    "properties": {
        +                      "entity_count": {
        +                        "minimum": 0,
        +                        "type": "integer"
        +                      },
        +                      "svg_b64": {
        +                        "minLength": 1,
        +                        "type": "string"
        +                      },
        +                      "unit_of_drawing": {
        +                        "const": "m",
        +                        "default": "m",
        +                        "type": "string"
        +                      },
        +                      "viewbox_height": {
        +                        "exclusiveMinimum": 0,
        +                        "type": "number"
        +                      },
        +                      "viewbox_width": {
        +                        "exclusiveMinimum": 0,
        +                        "type": "number"
        +                      },
        +                      "viewbox_x": {
        +                        "type": "number"
        +                      },
        +                      "viewbox_y": {
        +                        "type": "number"
        +                      }
        +                    },
        +                    "required": [
        +                      "svg_b64",
        +                      "viewbox_x",
        +                      "viewbox_y",
        +                      "viewbox_width",
        +                      "viewbox_height",
        +                      "entity_count"
        +                    ],
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "drawings": {
        +                "anyOf": [
        +                  {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.6 — paid-tier drawing artefact pointer.\n\n`url` is an R2-signed URL; expiry is carried in `_meta.deliverables.expires_at`\non the envelope (not duplicated here). `layers` is DXF-only; PDF/SVG\ncallers omit it.",
        +                      "properties": {
        +                        "drawing_type": {
        +                          "enum": [
        +                            "section",
        +                            "plan",
        +                            "elevation",
        +                            "isometric",
        +                            "detail"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "format": {
        +                          "enum": [
        +                            "DXF",
        +                            "PDF",
        +                            "SVG"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "layers": {
        +                          "anyOf": [
        +                            {
        +                              "items": {
        +                                "type": "string"
        +                              },
        +                              "type": "array"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ],
        +                          "default": null
        +                        },
        +                        "scale": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "sheet_size": {
        +                          "enum": [
        +                            "A1",
        +                            "A2",
        +                            "A3",
        +                            "A4"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "url": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "drawing_type",
        +                        "format",
        +                        "url",
        +                        "sheet_size",
        +                        "scale"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "parameters_used": {
        +                "additionalProperties": false,
        +                "description": "Schema § 1.2 — the parameter snapshot the engine actually used.\n\nSplits user-supplied values from engine defaults so customers can see\nwhich numbers came from them and which the engine filled in. Every\ndefaulted parameter SHOULD have a corresponding entry in `assumptions`\n— the bridge layer enforces this when wrapping engine output.",
        +                "properties": {
        +                  "assumptions": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "engine_defaults": {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  "user_supplied": {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  }
        +                },
        +                "type": "object"
        +              },
        +              "standard": {
        +                "enum": [
        +                  "CESMM4",
        +                  "NRM2",
        +                  "SMM7",
        +                  "MMHW"
        +                ],
        +                "type": "string"
        +              },
        +              "text_summary": {
        +                "maxLength": 2000,
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "totals_summary": {
        +                "additionalProperties": false,
        +                "description": "Schema § 1.4 — totals_summary as a typed wrapper around the free-form dict.\n\nWire shape is a flat object (`{\"concrete_m3\": {...}, \"rebar_t\": {...}}`).\nWe model it as `RootModel`-equivalent via `model_config(extra=\"allow\")`\n+ a single `__root__`-style `entries` dict. Pydantic v2 recommends\n`RootModel` for free-form roots; using a wrapper class keeps the import\nsurface uniform with the rest of this module.",
        +                "properties": {
        +                  "entries": {
        +                    "additionalProperties": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.4 — single material/work-class total entry.",
        +                      "properties": {
        +                        "quantity": {
        +                          "minimum": 0,
        +                          "type": "number"
        +                        },
        +                        "unit": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "quantity",
        +                        "unit"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "object"
        +                  }
        +                },
        +                "type": "object"
        +              },
        +              "warnings": {
        +                "items": {
        +                  "additionalProperties": false,
        +                  "description": "Schema § 1.8 — a non-fatal geometry advisory (56th-fire T2).\n\nThe wire projection of the engine's `core.GeometryWarning`. Advisory only:\na warning NEVER changes a measured quantity — it flags geometry that is\nvalid but likely a mistake (e.g. a stale dependent-height default). Present\non BOTH tiers — a correctness/safety signal, not a paid feature.",
        +                  "properties": {
        +                    "affected_params": {
        +                      "items": {
        +                        "type": "string"
        +                      },
        +                      "type": "array"
        +                    },
        +                    "code": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "detail": {
        +                      "additionalProperties": {
        +                        "type": "number"
        +                      },
        +                      "type": "object"
        +                    },
        +                    "message": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "severity": {
        +                      "enum": [
        +                        "info",
        +                        "advisory",
        +                        "caution"
        +                      ],
        +                      "type": "string"
        +                    }
        +                  },
        +                  "required": [
        +                    "code",
        +                    "severity",
        +                    "message"
        +                  ],
        +                  "type": "object"
        +                },
        +                "type": "array"
        +              }
        +            },
        +            "required": [
        +              "assembly_slug",
        +              "standard",
        +              "parameters_used",
        +              "boq_rows",
        +              "totals_summary",
        +              "text_summary"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      },
        +      "error": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        +            "properties": {
        +              "code": {
        +                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        +                "enum": [
        +                  "RATE_LIMIT_EXCEEDED",
        +                  "TIER_INSUFFICIENT",
        +                  "INVALID_INPUT",
        +                  "SCHEMA_VERSION_MISMATCH",
        +                  "SCHEMA_INVARIANT_VIOLATION",
        +                  "UPSTREAM_TIMEOUT",
        +                  "BACKEND_FAILURE",
        +                  "IP_BLOCKED",
        +                  "RESOURCE_NOT_FOUND",
        +                  "RENDER_FAILURE",
        +                  "OCR_LOW_CONFIDENCE",
        +                  "MANUAL_REVIEW_REQUIRED",
        +                  "ACCEPTANCE_REQUIRED",
        +                  "INVALID_TOKEN"
        +                ],
        +                "type": "string"
        +              },
        +              "details": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "message": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "recoverable": {
        +                "type": "boolean"
        +              },
        +              "retry_after_seconds": {
        +                "anyOf": [
        +                  {
        +                    "minimum": 0,
        +                    "type": "integer"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              }
        +            },
        +            "required": [
        +              "code",
        +              "message",
        +              "recoverable"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      }
        +    },
        +    "required": [
        +      "_meta"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "_meta": {
        +        "additionalProperties": false,
        +        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        +        "properties": {
        +          "deliverables": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        +                "properties": {
        +                  "docx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "dxf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "expires_at": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  },
        +                  "pdf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "xlsx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "expires_at"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "document_id": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "issued_at": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "output_mode": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Surfaces what a trimmed ``output_mode`` withheld from ``data``.\n\nA trimmed mode (``summary`` / ``boq`` / ``boq_with_backup``) withholds\nalready-computed fields to keep the chat payload small. The withheld value\nreads to a client agent as \"capability missing\" (the box-culvert \"geometry\nbuilder isn't firing\" scare) rather than \"pared for size\": ``drawing`` and\n``audit_trail`` appear as ``null``, ``boq_rows`` as an empty list ``[]``\n(its type forbids ``null``) — both indistinguishable from a genuine absent\nresult. This names the withheld fields and the exact mode that brings each\nback, so the value is unambiguous. Absent on the default ``full_json`` mode\n— nothing is withheld, nothing to point at.",
        +                "properties": {
        +                  "mode": {
        +                    "enum": [
        +                      "summary",
        +                      "boq",
        +                      "boq_with_backup"
        +                    ],
        +                    "type": "string"
        +                  },
        +                  "omitted_fields": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "minItems": 1,
        +                    "type": "array"
        +                  },
        +                  "retrieve_with": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "mode",
        +                  "omitted_fields",
        +                  "retrieve_with"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "rate_limit_remaining": {
        +            "anyOf": [
        +              {
        +                "minimum": 0,
        +                "type": "integer"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "request_id": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "schema_version": {
        +            "const": "1.0.0",
        +            "default": "1.0.0",
        +            "type": "string"
        +          },
        +          "scope_boundary": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        +                "properties": {
        +                  "not_in_scope": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "produced": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "recommended_companions": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "type": "string"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "produced",
        +                  "not_in_scope"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tier": {
        +            "enum": [
        +              "free",
        +              "paid"
        +            ],
        +            "type": "string"
        +          },
        +          "tier_upgrade": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        +                "properties": {
        +                  "available_tiers": {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        +                      "properties": {
        +                        "billing": {
        +                          "enum": [
        +                            "one_off",
        +                            "monthly",
        +                            "annual"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "currency": {
        +                          "enum": [
        +                            "GBP",
        +                            "SGD",
        +                            "EUR",
        +                            "USD",
        +                            "CAD",
        +                            "AUD",
        +                            "NZD",
        +                            "MYR"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "display_name": {
        +                          "type": "string"
        +                        },
        +                        "price_local": {
        +                          "type": "number"
        +                        },
        +                        "tier_slug": {
        +                          "enum": [
        +                            "7_day_pass",
        +                            "solo",
        +                            "studio",
        +                            "practice"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "unlock_summary": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "tier_slug",
        +                        "display_name",
        +                        "price_local",
        +                        "currency",
        +                        "billing",
        +                        "unlock_summary"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "current_tier": {
        +                    "const": "free",
        +                    "default": "free",
        +                    "type": "string"
        +                  },
        +                  "pass_credit": {
        +                    "anyOf": [
        +                      {
        +                        "additionalProperties": false,
        +                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        +                        "properties": {
        +                          "amount_local": {
        +                            "type": "number"
        +                          },
        +                          "applies_to": {
        +                            "const": "solo_first_month",
        +                            "default": "solo_first_month",
        +                            "type": "string"
        +                          },
        +                          "currency": {
        +                            "type": "string"
        +                          },
        +                          "redeemable_until": {
        +                            "type": "string"
        +                          }
        +                        },
        +                        "required": [
        +                          "amount_local",
        +                          "currency",
        +                          "redeemable_until"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "pricing_url": {
        +                    "default": "https://civilquants.com/pricing",
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "available_tiers"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tos_url": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "upgrade_hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "warranty_disclaimer": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          }
        +        },
        +        "required": [
        +          "request_id",
        +          "issued_at",
        +          "tier"
        +        ],
        +        "type": "object"
        +      },
        +      "data": {
        +        "default": null,
        +        "title": "Data"
        +      },
        +      "error": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        +            "properties": {
        +              "code": {
        +                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        +                "enum": [
        +                  "RATE_LIMIT_EXCEEDED",
        +                  "TIER_INSUFFICIENT",
        +                  "INVALID_INPUT",
        +                  "SCHEMA_VERSION_MISMATCH",
        +                  "SCHEMA_INVARIANT_VIOLATION",
        +                  "UPSTREAM_TIMEOUT",
        +                  "BACKEND_FAILURE",
        +                  "IP_BLOCKED",
        +                  "RESOURCE_NOT_FOUND",
        +                  "RENDER_FAILURE",
        +                  "OCR_LOW_CONFIDENCE",
        +                  "MANUAL_REVIEW_REQUIRED",
        +                  "ACCEPTANCE_REQUIRED",
        +                  "INVALID_TOKEN"
        +                ],
        +                "type": "string"
        +              },
        +              "details": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "message": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "recoverable": {
        +                "type": "boolean"
        +              },
        +              "retry_after_seconds": {
        +                "anyOf": [
        +                  {
        +                    "minimum": 0,
        +                    "type": "integer"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              }
        +            },
        +            "required": [
        +              "code",
        +              "message",
        +              "recoverable"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      }
        +    },
        +    "required": [
        +      "_meta"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedcompute_parapet1 field changed
      • changedOutput schema / properties / result / anyOf
        Previous value: -[
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "_meta": {
        -        "additionalProperties": false,
        -        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        -        "properties": {
        -          "deliverables": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        -                "properties": {
        -                  "docx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "dxf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "expires_at": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  },
        -                  "pdf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "xlsx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "expires_at"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "document_id": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "issued_at": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "rate_limit_remaining": {
        -            "anyOf": [
        -              {
        -                "minimum": 0,
        -                "type": "integer"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "request_id": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "schema_version": {
        -            "const": "1.0.0",
        -            "default": "1.0.0",
        -            "type": "string"
        -          },
        -          "scope_boundary": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        -                "properties": {
        -                  "not_in_scope": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "produced": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "recommended_companions": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "type": "string"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "produced",
        -                  "not_in_scope"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tier": {
        -            "enum": [
        -              "free",
        -              "paid"
        -            ],
        -            "type": "string"
        -          },
        -          "tier_upgrade": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        -                "properties": {
        -                  "available_tiers": {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        -                      "properties": {
        -                        "billing": {
        -                          "enum": [
        -                            "one_off",
        -                            "monthly",
        -                            "annual"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "currency": {
        -                          "enum": [
        -                            "GBP",
        -                            "SGD",
        -                            "EUR",
        -                            "USD",
        -                            "CAD",
        -                            "AUD",
        -                            "NZD",
        -                            "MYR"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "display_name": {
        -                          "type": "string"
        -                        },
        -                        "price_local": {
        -                          "type": "number"
        -                        },
        -                        "tier_slug": {
        -                          "enum": [
        -                            "7_day_pass",
        -                            "solo",
        -                            "studio",
        -                            "practice"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "unlock_summary": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "tier_slug",
        -                        "display_name",
        -                        "price_local",
        -                        "currency",
        -                        "billing",
        -                        "unlock_summary"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "current_tier": {
        -                    "const": "free",
        -                    "default": "free",
        -                    "type": "string"
        -                  },
        -                  "pass_credit": {
        -                    "anyOf": [
        -                      {
        -                        "additionalProperties": false,
        -                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        -                        "properties": {
        -                          "amount_local": {
        -                            "type": "number"
        -                          },
        -                          "applies_to": {
        -                            "const": "solo_first_month",
        -                            "default": "solo_first_month",
        -                            "type": "string"
        -                          },
        -                          "currency": {
        -                            "type": "string"
        -                          },
        -                          "redeemable_until": {
        -                            "type": "string"
        -                          }
        -                        },
        -                        "required": [
        -                          "amount_local",
        -                          "currency",
        -                          "redeemable_until"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "pricing_url": {
        -                    "default": "https://civilquants.com/pricing",
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "available_tiers"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tos_url": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "upgrade_hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "warranty_disclaimer": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          }
        -        },
        -        "required": [
        -          "request_id",
        -          "issued_at",
        -          "tier"
        -        ],
        -        "type": "object"
        -      },
        -      "data": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Schema § 1.1 — the typed payload returned inside `MCPResponse[ComputeResult]`.\n\nFree-tier responses omit `drawings` (the downloadable CAD artefact\npointers — the paid differentiator); the bridge enforces this. The\n`audit_trail` and the inline `drawing` preview are present on BOTH tiers\n(V1 ALIGN / 60th-fire D + C). `text_summary` is bounded to 2000 chars —\nkeeps the LLM-facing summary token-cheap and forces longer narrative into\nBoQ row descriptions where it belongs. `warnings` is the non-fatal\ngeometry advisory list (both tiers).",
        -            "properties": {
        -              "assembly_slug": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "audit_trail": {
        -                "anyOf": [
        -                  {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.7 — paid-tier audit-trail entry.\n\nOne entry per BoQ row; `boq_row_index` ties to the row position in\n`ComputeResult.boq_rows`. `derivation` is the human-readable formula\nwalk-through; `formula` is the optional formal expression.",
        -                      "properties": {
        -                        "boq_row_index": {
        -                          "minimum": 0,
        -                          "type": "integer"
        -                        },
        -                        "derivation": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "formula": {
        -                          "anyOf": [
        -                            {
        -                              "type": "string"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ],
        -                          "default": null
        -                        },
        -                        "id": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "parameters_referenced": {
        -                          "items": {
        -                            "type": "string"
        -                          },
        -                          "type": "array"
        -                        }
        -                      },
        -                      "required": [
        -                        "id",
        -                        "boq_row_index",
        -                        "derivation"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "boq_rows": {
        -                "items": {
        -                  "additionalProperties": false,
        -                  "description": "Schema § 1.3 — a single bill row in the requested standard's format.\n\n`description` is the non-verbatim functional description per spec § 13.9 /\n§ 15 invariant — NEVER reproduces a standard's verbatim clause text.\n`rate` / `amount` ship null because rates are commodity data the customer\nowns; the engine's job is the measurement, not the pricing.",
        -                  "properties": {
        -                    "amount": {
        -                      "anyOf": [
        -                        {
        -                          "type": "number"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "attribution": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "audit_id": {
        -                      "anyOf": [
        -                        {
        -                          "type": "string"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "description": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "quantity": {
        -                      "minimum": 0,
        -                      "type": "number"
        -                    },
        -                    "rate": {
        -                      "anyOf": [
        -                        {
        -                          "type": "number"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "unit": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "work_section": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    }
        -                  },
        -                  "required": [
        -                    "work_section",
        -                    "description",
        -                    "quantity",
        -                    "unit",
        -                    "attribution"
        -                  ],
        -                  "type": "object"
        -                },
        -                "type": "array"
        -              },
        -              "drawing": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": false,
        -                    "description": "Schema § 1.6a — inline server-rendered SVG preview of the geometry.\n\nThe MCP mirror of the web ``/compute`` response's ``drawing`` field\n(``api.schemas.compute.DrawingRef``): the same on-screen dimensioned\ndrawing both tiers see in the workspace, surfaced on the MCP compute\nresponse so a chat client can render it inline (60th-fire item C). This\nis the on-screen preview — present on BOTH tiers per the free/paid\nboundary; the downloadable CAD artefacts (DXF / dimensioned PDF) remain\nthe paid differentiator via the export tools.\n\nDefined here rather than importing ``DrawingRef`` because the web\n``schemas`` package imports back into this module (``schemas.render``),\nso reusing it would create an import cycle — the MCP wire contract keeps\nits own copy, the same pattern as ``BoQRow`` / ``DrawingReference``.",
        -                    "properties": {
        -                      "entity_count": {
        -                        "minimum": 0,
        -                        "type": "integer"
        -                      },
        -                      "svg_b64": {
        -                        "minLength": 1,
        -                        "type": "string"
        -                      },
        -                      "unit_of_drawing": {
        -                        "const": "m",
        -                        "default": "m",
        -                        "type": "string"
        -                      },
        -                      "viewbox_height": {
        -                        "exclusiveMinimum": 0,
        -                        "type": "number"
        -                      },
        -                      "viewbox_width": {
        -                        "exclusiveMinimum": 0,
        -                        "type": "number"
        -                      },
        -                      "viewbox_x": {
        -                        "type": "number"
        -                      },
        -                      "viewbox_y": {
        -                        "type": "number"
        -                      }
        -                    },
        -                    "required": [
        -                      "svg_b64",
        -                      "viewbox_x",
        -                      "viewbox_y",
        -                      "viewbox_width",
        -                      "viewbox_height",
        -                      "entity_count"
        -                    ],
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "drawings": {
        -                "anyOf": [
        -                  {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.6 — paid-tier drawing artefact pointer.\n\n`url` is an R2-signed URL; expiry is carried in `_meta.deliverables.expires_at`\non the envelope (not duplicated here). `layers` is DXF-only; PDF/SVG\ncallers omit it.",
        -                      "properties": {
        -                        "drawing_type": {
        -                          "enum": [
        -                            "section",
        -                            "plan",
        -                            "elevation",
        -                            "isometric",
        -                            "detail"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "format": {
        -                          "enum": [
        -                            "DXF",
        -                            "PDF",
        -                            "SVG"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "layers": {
        -                          "anyOf": [
        -                            {
        -                              "items": {
        -                                "type": "string"
        -                              },
        -                              "type": "array"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ],
        -                          "default": null
        -                        },
        -                        "scale": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "sheet_size": {
        -                          "enum": [
        -                            "A1",
        -                            "A2",
        -                            "A3",
        -                            "A4"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "url": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "drawing_type",
        -                        "format",
        -                        "url",
        -                        "sheet_size",
        -                        "scale"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "parameters_used": {
        -                "additionalProperties": false,
        -                "description": "Schema § 1.2 — the parameter snapshot the engine actually used.\n\nSplits user-supplied values from engine defaults so customers can see\nwhich numbers came from them and which the engine filled in. Every\ndefaulted parameter SHOULD have a corresponding entry in `assumptions`\n— the bridge layer enforces this when wrapping engine output.",
        -                "properties": {
        -                  "assumptions": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "engine_defaults": {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  "user_supplied": {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  }
        -                },
        -                "type": "object"
        -              },
        -              "standard": {
        -                "enum": [
        -                  "CESMM4",
        -                  "NRM2",
        -                  "SMM7",
        -                  "MMHW"
        -                ],
        -                "type": "string"
        -              },
        -              "text_summary": {
        -                "maxLength": 2000,
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "totals_summary": {
        -                "additionalProperties": false,
        -                "description": "Schema § 1.4 — totals_summary as a typed wrapper around the free-form dict.\n\nWire shape is a flat object (`{\"concrete_m3\": {...}, \"rebar_t\": {...}}`).\nWe model it as `RootModel`-equivalent via `model_config(extra=\"allow\")`\n+ a single `__root__`-style `entries` dict. Pydantic v2 recommends\n`RootModel` for free-form roots; using a wrapper class keeps the import\nsurface uniform with the rest of this module.",
        -                "properties": {
        -                  "entries": {
        -                    "additionalProperties": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.4 — single material/work-class total entry.",
        -                      "properties": {
        -                        "quantity": {
        -                          "minimum": 0,
        -                          "type": "number"
        -                        },
        -                        "unit": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "quantity",
        -                        "unit"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "object"
        -                  }
        -                },
        -                "type": "object"
        -              },
        -              "warnings": {
        -                "items": {
        -                  "additionalProperties": false,
        -                  "description": "Schema § 1.8 — a non-fatal geometry advisory (56th-fire T2).\n\nThe wire projection of the engine's `core.GeometryWarning`. Advisory only:\na warning NEVER changes a measured quantity — it flags geometry that is\nvalid but likely a mistake (e.g. a stale dependent-height default). Present\non BOTH tiers — a correctness/safety signal, not a paid feature.",
        -                  "properties": {
        -                    "affected_params": {
        -                      "items": {
        -                        "type": "string"
        -                      },
        -                      "type": "array"
        -                    },
        -                    "code": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "detail": {
        -                      "additionalProperties": {
        -                        "type": "number"
        -                      },
        -                      "type": "object"
        -                    },
        -                    "message": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "severity": {
        -                      "enum": [
        -                        "info",
        -                        "advisory",
        -                        "caution"
        -                      ],
        -                      "type": "string"
        -                    }
        -                  },
        -                  "required": [
        -                    "code",
        -                    "severity",
        -                    "message"
        -                  ],
        -                  "type": "object"
        -                },
        -                "type": "array"
        -              }
        -            },
        -            "required": [
        -              "assembly_slug",
        -              "standard",
        -              "parameters_used",
        -              "boq_rows",
        -              "totals_summary",
        -              "text_summary"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      },
        -      "error": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        -            "properties": {
        -              "code": {
        -                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        -                "enum": [
        -                  "RATE_LIMIT_EXCEEDED",
        -                  "TIER_INSUFFICIENT",
        -                  "INVALID_INPUT",
        -                  "SCHEMA_VERSION_MISMATCH",
        -                  "SCHEMA_INVARIANT_VIOLATION",
        -                  "UPSTREAM_TIMEOUT",
        -                  "BACKEND_FAILURE",
        -                  "IP_BLOCKED",
        -                  "RESOURCE_NOT_FOUND",
        -                  "RENDER_FAILURE",
        -                  "OCR_LOW_CONFIDENCE",
        -                  "MANUAL_REVIEW_REQUIRED",
        -                  "ACCEPTANCE_REQUIRED",
        -                  "INVALID_TOKEN"
        -                ],
        -                "type": "string"
        -              },
        -              "details": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "message": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "recoverable": {
        -                "type": "boolean"
        -              },
        -              "retry_after_seconds": {
        -                "anyOf": [
        -                  {
        -                    "minimum": 0,
        -                    "type": "integer"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              }
        -            },
        -            "required": [
        -              "code",
        -              "message",
        -              "recoverable"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      }
        -    },
        -    "required": [
        -      "_meta"
        -    ],
        -    "type": "object"
        -  },
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "_meta": {
        -        "additionalProperties": false,
        -        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        -        "properties": {
        -          "deliverables": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        -                "properties": {
        -                  "docx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "dxf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "expires_at": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  },
        -                  "pdf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "xlsx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "expires_at"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "document_id": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "issued_at": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "rate_limit_remaining": {
        -            "anyOf": [
        -              {
        -                "minimum": 0,
        -                "type": "integer"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "request_id": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "schema_version": {
        -            "const": "1.0.0",
        -            "default": "1.0.0",
        -            "type": "string"
        -          },
        -          "scope_boundary": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        -                "properties": {
        -                  "not_in_scope": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "produced": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "recommended_companions": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "type": "string"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "produced",
        -                  "not_in_scope"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tier": {
        -            "enum": [
        -              "free",
        -              "paid"
        -            ],
        -            "type": "string"
        -          },
        -          "tier_upgrade": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        -                "properties": {
        -                  "available_tiers": {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        -                      "properties": {
        -                        "billing": {
        -                          "enum": [
        -                            "one_off",
        -                            "monthly",
        -                            "annual"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "currency": {
        -                          "enum": [
        -                            "GBP",
        -                            "SGD",
        -                            "EUR",
        -                            "USD",
        -                            "CAD",
        -                            "AUD",
        -                            "NZD",
        -                            "MYR"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "display_name": {
        -                          "type": "string"
        -                        },
        -                        "price_local": {
        -                          "type": "number"
        -                        },
        -                        "tier_slug": {
        -                          "enum": [
        -                            "7_day_pass",
        -                            "solo",
        -                            "studio",
        -                            "practice"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "unlock_summary": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "tier_slug",
        -                        "display_name",
        -                        "price_local",
        -                        "currency",
        -                        "billing",
        -                        "unlock_summary"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "current_tier": {
        -                    "const": "free",
        -                    "default": "free",
        -                    "type": "string"
        -                  },
        -                  "pass_credit": {
        -                    "anyOf": [
        -                      {
        -                        "additionalProperties": false,
        -                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        -                        "properties": {
        -                          "amount_local": {
        -                            "type": "number"
        -                          },
        -                          "applies_to": {
        -                            "const": "solo_first_month",
        -                            "default": "solo_first_month",
        -                            "type": "string"
        -                          },
        -                          "currency": {
        -                            "type": "string"
        -                          },
        -                          "redeemable_until": {
        -                            "type": "string"
        -                          }
        -                        },
        -                        "required": [
        -                          "amount_local",
        -                          "currency",
        -                          "redeemable_until"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "pricing_url": {
        -                    "default": "https://civilquants.com/pricing",
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "available_tiers"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tos_url": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "upgrade_hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "warranty_disclaimer": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          }
        -        },
        -        "required": [
        -          "request_id",
        -          "issued_at",
        -          "tier"
        -        ],
        -        "type": "object"
        -      },
        -      "data": {
        -        "default": null,
        -        "title": "Data"
        -      },
        -      "error": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        -            "properties": {
        -              "code": {
        -                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        -                "enum": [
        -                  "RATE_LIMIT_EXCEEDED",
        -                  "TIER_INSUFFICIENT",
        -                  "INVALID_INPUT",
        -                  "SCHEMA_VERSION_MISMATCH",
        -                  "SCHEMA_INVARIANT_VIOLATION",
        -                  "UPSTREAM_TIMEOUT",
        -                  "BACKEND_FAILURE",
        -                  "IP_BLOCKED",
        -                  "RESOURCE_NOT_FOUND",
        -                  "RENDER_FAILURE",
        -                  "OCR_LOW_CONFIDENCE",
        -                  "MANUAL_REVIEW_REQUIRED",
        -                  "ACCEPTANCE_REQUIRED",
        -                  "INVALID_TOKEN"
        -                ],
        -                "type": "string"
        -              },
        -              "details": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "message": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "recoverable": {
        -                "type": "boolean"
        -              },
        -              "retry_after_seconds": {
        -                "anyOf": [
        -                  {
        -                    "minimum": 0,
        -                    "type": "integer"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              }
        -            },
        -            "required": [
        -              "code",
        -              "message",
        -              "recoverable"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      }
        -    },
        -    "required": [
        -      "_meta"
        -    ],
        -    "type": "object"
        -  }
        -]New value: +[
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "_meta": {
        +        "additionalProperties": false,
        +        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        +        "properties": {
        +          "deliverables": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        +                "properties": {
        +                  "docx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "dxf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "expires_at": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  },
        +                  "pdf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "xlsx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "expires_at"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "document_id": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "issued_at": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "output_mode": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Surfaces what a trimmed ``output_mode`` withheld from ``data``.\n\nA trimmed mode (``summary`` / ``boq`` / ``boq_with_backup``) withholds\nalready-computed fields to keep the chat payload small. The withheld value\nreads to a client agent as \"capability missing\" (the box-culvert \"geometry\nbuilder isn't firing\" scare) rather than \"pared for size\": ``drawing`` and\n``audit_trail`` appear as ``null``, ``boq_rows`` as an empty list ``[]``\n(its type forbids ``null``) — both indistinguishable from a genuine absent\nresult. This names the withheld fields and the exact mode that brings each\nback, so the value is unambiguous. Absent on the default ``full_json`` mode\n— nothing is withheld, nothing to point at.",
        +                "properties": {
        +                  "mode": {
        +                    "enum": [
        +                      "summary",
        +                      "boq",
        +                      "boq_with_backup"
        +                    ],
        +                    "type": "string"
        +                  },
        +                  "omitted_fields": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "minItems": 1,
        +                    "type": "array"
        +                  },
        +                  "retrieve_with": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "mode",
        +                  "omitted_fields",
        +                  "retrieve_with"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "rate_limit_remaining": {
        +            "anyOf": [
        +              {
        +                "minimum": 0,
        +                "type": "integer"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "request_id": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "schema_version": {
        +            "const": "1.0.0",
        +            "default": "1.0.0",
        +            "type": "string"
        +          },
        +          "scope_boundary": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        +                "properties": {
        +                  "not_in_scope": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "produced": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "recommended_companions": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "type": "string"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "produced",
        +                  "not_in_scope"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tier": {
        +            "enum": [
        +              "free",
        +              "paid"
        +            ],
        +            "type": "string"
        +          },
        +          "tier_upgrade": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        +                "properties": {
        +                  "available_tiers": {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        +                      "properties": {
        +                        "billing": {
        +                          "enum": [
        +                            "one_off",
        +                            "monthly",
        +                            "annual"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "currency": {
        +                          "enum": [
        +                            "GBP",
        +                            "SGD",
        +                            "EUR",
        +                            "USD",
        +                            "CAD",
        +                            "AUD",
        +                            "NZD",
        +                            "MYR"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "display_name": {
        +                          "type": "string"
        +                        },
        +                        "price_local": {
        +                          "type": "number"
        +                        },
        +                        "tier_slug": {
        +                          "enum": [
        +                            "7_day_pass",
        +                            "solo",
        +                            "studio",
        +                            "practice"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "unlock_summary": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "tier_slug",
        +                        "display_name",
        +                        "price_local",
        +                        "currency",
        +                        "billing",
        +                        "unlock_summary"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "current_tier": {
        +                    "const": "free",
        +                    "default": "free",
        +                    "type": "string"
        +                  },
        +                  "pass_credit": {
        +                    "anyOf": [
        +                      {
        +                        "additionalProperties": false,
        +                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        +                        "properties": {
        +                          "amount_local": {
        +                            "type": "number"
        +                          },
        +                          "applies_to": {
        +                            "const": "solo_first_month",
        +                            "default": "solo_first_month",
        +                            "type": "string"
        +                          },
        +                          "currency": {
        +                            "type": "string"
        +                          },
        +                          "redeemable_until": {
        +                            "type": "string"
        +                          }
        +                        },
        +                        "required": [
        +                          "amount_local",
        +                          "currency",
        +                          "redeemable_until"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "pricing_url": {
        +                    "default": "https://civilquants.com/pricing",
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "available_tiers"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tos_url": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "upgrade_hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "warranty_disclaimer": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          }
        +        },
        +        "required": [
        +          "request_id",
        +          "issued_at",
        +          "tier"
        +        ],
        +        "type": "object"
        +      },
        +      "data": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Schema § 1.1 — the typed payload returned inside `MCPResponse[ComputeResult]`.\n\nFree-tier responses omit `drawings` (the downloadable CAD artefact\npointers — the paid differentiator); the bridge enforces this. The\n`audit_trail` and the inline `drawing` preview are present on BOTH tiers\n(V1 ALIGN / 60th-fire D + C). `text_summary` is bounded to 2000 chars —\nkeeps the LLM-facing summary token-cheap and forces longer narrative into\nBoQ row descriptions where it belongs. `warnings` is the non-fatal\ngeometry advisory list (both tiers).",
        +            "properties": {
        +              "assembly_slug": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "audit_trail": {
        +                "anyOf": [
        +                  {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.7 — paid-tier audit-trail entry.\n\nOne entry per BoQ row; `boq_row_index` ties to the row position in\n`ComputeResult.boq_rows`. `derivation` is the human-readable formula\nwalk-through; `formula` is the optional formal expression.",
        +                      "properties": {
        +                        "boq_row_index": {
        +                          "minimum": 0,
        +                          "type": "integer"
        +                        },
        +                        "derivation": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "formula": {
        +                          "anyOf": [
        +                            {
        +                              "type": "string"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ],
        +                          "default": null
        +                        },
        +                        "id": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "parameters_referenced": {
        +                          "items": {
        +                            "type": "string"
        +                          },
        +                          "type": "array"
        +                        }
        +                      },
        +                      "required": [
        +                        "id",
        +                        "boq_row_index",
        +                        "derivation"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "boq_rows": {
        +                "items": {
        +                  "additionalProperties": false,
        +                  "description": "Schema § 1.3 — a single bill row in the requested standard's format.\n\n`description` is the non-verbatim functional description per spec § 13.9 /\n§ 15 invariant — NEVER reproduces a standard's verbatim clause text.\n`rate` / `amount` ship null because rates are commodity data the customer\nowns; the engine's job is the measurement, not the pricing.",
        +                  "properties": {
        +                    "amount": {
        +                      "anyOf": [
        +                        {
        +                          "type": "number"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "attribution": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "audit_id": {
        +                      "anyOf": [
        +                        {
        +                          "type": "string"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "description": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "quantity": {
        +                      "minimum": 0,
        +                      "type": "number"
        +                    },
        +                    "rate": {
        +                      "anyOf": [
        +                        {
        +                          "type": "number"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "unit": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "work_section": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    }
        +                  },
        +                  "required": [
        +                    "work_section",
        +                    "description",
        +                    "quantity",
        +                    "unit",
        +                    "attribution"
        +                  ],
        +                  "type": "object"
        +                },
        +                "type": "array"
        +              },
        +              "drawing": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": false,
        +                    "description": "Schema § 1.6a — inline server-rendered SVG preview of the geometry.\n\nThe MCP mirror of the web ``/compute`` response's ``drawing`` field\n(``api.schemas.compute.DrawingRef``): the same on-screen dimensioned\ndrawing both tiers see in the workspace, surfaced on the MCP compute\nresponse so a chat client can render it inline (60th-fire item C). This\nis the on-screen preview — present on BOTH tiers per the free/paid\nboundary; the downloadable CAD artefacts (DXF / dimensioned PDF) remain\nthe paid differentiator via the export tools.\n\nDefined here rather than importing ``DrawingRef`` because the web\n``schemas`` package imports back into this module (``schemas.render``),\nso reusing it would create an import cycle — the MCP wire contract keeps\nits own copy, the same pattern as ``BoQRow`` / ``DrawingReference``.",
        +                    "properties": {
        +                      "entity_count": {
        +                        "minimum": 0,
        +                        "type": "integer"
        +                      },
        +                      "svg_b64": {
        +                        "minLength": 1,
        +                        "type": "string"
        +                      },
        +                      "unit_of_drawing": {
        +                        "const": "m",
        +                        "default": "m",
        +                        "type": "string"
        +                      },
        +                      "viewbox_height": {
        +                        "exclusiveMinimum": 0,
        +                        "type": "number"
        +                      },
        +                      "viewbox_width": {
        +                        "exclusiveMinimum": 0,
        +                        "type": "number"
        +                      },
        +                      "viewbox_x": {
        +                        "type": "number"
        +                      },
        +                      "viewbox_y": {
        +                        "type": "number"
        +                      }
        +                    },
        +                    "required": [
        +                      "svg_b64",
        +                      "viewbox_x",
        +                      "viewbox_y",
        +                      "viewbox_width",
        +                      "viewbox_height",
        +                      "entity_count"
        +                    ],
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "drawings": {
        +                "anyOf": [
        +                  {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.6 — paid-tier drawing artefact pointer.\n\n`url` is an R2-signed URL; expiry is carried in `_meta.deliverables.expires_at`\non the envelope (not duplicated here). `layers` is DXF-only; PDF/SVG\ncallers omit it.",
        +                      "properties": {
        +                        "drawing_type": {
        +                          "enum": [
        +                            "section",
        +                            "plan",
        +                            "elevation",
        +                            "isometric",
        +                            "detail"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "format": {
        +                          "enum": [
        +                            "DXF",
        +                            "PDF",
        +                            "SVG"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "layers": {
        +                          "anyOf": [
        +                            {
        +                              "items": {
        +                                "type": "string"
        +                              },
        +                              "type": "array"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ],
        +                          "default": null
        +                        },
        +                        "scale": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "sheet_size": {
        +                          "enum": [
        +                            "A1",
        +                            "A2",
        +                            "A3",
        +                            "A4"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "url": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "drawing_type",
        +                        "format",
        +                        "url",
        +                        "sheet_size",
        +                        "scale"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "parameters_used": {
        +                "additionalProperties": false,
        +                "description": "Schema § 1.2 — the parameter snapshot the engine actually used.\n\nSplits user-supplied values from engine defaults so customers can see\nwhich numbers came from them and which the engine filled in. Every\ndefaulted parameter SHOULD have a corresponding entry in `assumptions`\n— the bridge layer enforces this when wrapping engine output.",
        +                "properties": {
        +                  "assumptions": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "engine_defaults": {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  "user_supplied": {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  }
        +                },
        +                "type": "object"
        +              },
        +              "standard": {
        +                "enum": [
        +                  "CESMM4",
        +                  "NRM2",
        +                  "SMM7",
        +                  "MMHW"
        +                ],
        +                "type": "string"
        +              },
        +              "text_summary": {
        +                "maxLength": 2000,
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "totals_summary": {
        +                "additionalProperties": false,
        +                "description": "Schema § 1.4 — totals_summary as a typed wrapper around the free-form dict.\n\nWire shape is a flat object (`{\"concrete_m3\": {...}, \"rebar_t\": {...}}`).\nWe model it as `RootModel`-equivalent via `model_config(extra=\"allow\")`\n+ a single `__root__`-style `entries` dict. Pydantic v2 recommends\n`RootModel` for free-form roots; using a wrapper class keeps the import\nsurface uniform with the rest of this module.",
        +                "properties": {
        +                  "entries": {
        +                    "additionalProperties": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.4 — single material/work-class total entry.",
        +                      "properties": {
        +                        "quantity": {
        +                          "minimum": 0,
        +                          "type": "number"
        +                        },
        +                        "unit": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "quantity",
        +                        "unit"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "object"
        +                  }
        +                },
        +                "type": "object"
        +              },
        +              "warnings": {
        +                "items": {
        +                  "additionalProperties": false,
        +                  "description": "Schema § 1.8 — a non-fatal geometry advisory (56th-fire T2).\n\nThe wire projection of the engine's `core.GeometryWarning`. Advisory only:\na warning NEVER changes a measured quantity — it flags geometry that is\nvalid but likely a mistake (e.g. a stale dependent-height default). Present\non BOTH tiers — a correctness/safety signal, not a paid feature.",
        +                  "properties": {
        +                    "affected_params": {
        +                      "items": {
        +                        "type": "string"
        +                      },
        +                      "type": "array"
        +                    },
        +                    "code": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "detail": {
        +                      "additionalProperties": {
        +                        "type": "number"
        +                      },
        +                      "type": "object"
        +                    },
        +                    "message": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "severity": {
        +                      "enum": [
        +                        "info",
        +                        "advisory",
        +                        "caution"
        +                      ],
        +                      "type": "string"
        +                    }
        +                  },
        +                  "required": [
        +                    "code",
        +                    "severity",
        +                    "message"
        +                  ],
        +                  "type": "object"
        +                },
        +                "type": "array"
        +              }
        +            },
        +            "required": [
        +              "assembly_slug",
        +              "standard",
        +              "parameters_used",
        +              "boq_rows",
        +              "totals_summary",
        +              "text_summary"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      },
        +      "error": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        +            "properties": {
        +              "code": {
        +                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        +                "enum": [
        +                  "RATE_LIMIT_EXCEEDED",
        +                  "TIER_INSUFFICIENT",
        +                  "INVALID_INPUT",
        +                  "SCHEMA_VERSION_MISMATCH",
        +                  "SCHEMA_INVARIANT_VIOLATION",
        +                  "UPSTREAM_TIMEOUT",
        +                  "BACKEND_FAILURE",
        +                  "IP_BLOCKED",
        +                  "RESOURCE_NOT_FOUND",
        +                  "RENDER_FAILURE",
        +                  "OCR_LOW_CONFIDENCE",
        +                  "MANUAL_REVIEW_REQUIRED",
        +                  "ACCEPTANCE_REQUIRED",
        +                  "INVALID_TOKEN"
        +                ],
        +                "type": "string"
        +              },
        +              "details": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "message": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "recoverable": {
        +                "type": "boolean"
        +              },
        +              "retry_after_seconds": {
        +                "anyOf": [
        +                  {
        +                    "minimum": 0,
        +                    "type": "integer"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              }
        +            },
        +            "required": [
        +              "code",
        +              "message",
        +              "recoverable"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      }
        +    },
        +    "required": [
        +      "_meta"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "_meta": {
        +        "additionalProperties": false,
        +        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        +        "properties": {
        +          "deliverables": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        +                "properties": {
        +                  "docx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "dxf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "expires_at": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  },
        +                  "pdf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "xlsx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "expires_at"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "document_id": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "issued_at": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "output_mode": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Surfaces what a trimmed ``output_mode`` withheld from ``data``.\n\nA trimmed mode (``summary`` / ``boq`` / ``boq_with_backup``) withholds\nalready-computed fields to keep the chat payload small. The withheld value\nreads to a client agent as \"capability missing\" (the box-culvert \"geometry\nbuilder isn't firing\" scare) rather than \"pared for size\": ``drawing`` and\n``audit_trail`` appear as ``null``, ``boq_rows`` as an empty list ``[]``\n(its type forbids ``null``) — both indistinguishable from a genuine absent\nresult. This names the withheld fields and the exact mode that brings each\nback, so the value is unambiguous. Absent on the default ``full_json`` mode\n— nothing is withheld, nothing to point at.",
        +                "properties": {
        +                  "mode": {
        +                    "enum": [
        +                      "summary",
        +                      "boq",
        +                      "boq_with_backup"
        +                    ],
        +                    "type": "string"
        +                  },
        +                  "omitted_fields": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "minItems": 1,
        +                    "type": "array"
        +                  },
        +                  "retrieve_with": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "mode",
        +                  "omitted_fields",
        +                  "retrieve_with"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "rate_limit_remaining": {
        +            "anyOf": [
        +              {
        +                "minimum": 0,
        +                "type": "integer"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "request_id": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "schema_version": {
        +            "const": "1.0.0",
        +            "default": "1.0.0",
        +            "type": "string"
        +          },
        +          "scope_boundary": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        +                "properties": {
        +                  "not_in_scope": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "produced": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "recommended_companions": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "type": "string"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "produced",
        +                  "not_in_scope"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tier": {
        +            "enum": [
        +              "free",
        +              "paid"
        +            ],
        +            "type": "string"
        +          },
        +          "tier_upgrade": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        +                "properties": {
        +                  "available_tiers": {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        +                      "properties": {
        +                        "billing": {
        +                          "enum": [
        +                            "one_off",
        +                            "monthly",
        +                            "annual"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "currency": {
        +                          "enum": [
        +                            "GBP",
        +                            "SGD",
        +                            "EUR",
        +                            "USD",
        +                            "CAD",
        +                            "AUD",
        +                            "NZD",
        +                            "MYR"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "display_name": {
        +                          "type": "string"
        +                        },
        +                        "price_local": {
        +                          "type": "number"
        +                        },
        +                        "tier_slug": {
        +                          "enum": [
        +                            "7_day_pass",
        +                            "solo",
        +                            "studio",
        +                            "practice"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "unlock_summary": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "tier_slug",
        +                        "display_name",
        +                        "price_local",
        +                        "currency",
        +                        "billing",
        +                        "unlock_summary"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "current_tier": {
        +                    "const": "free",
        +                    "default": "free",
        +                    "type": "string"
        +                  },
        +                  "pass_credit": {
        +                    "anyOf": [
        +                      {
        +                        "additionalProperties": false,
        +                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        +                        "properties": {
        +                          "amount_local": {
        +                            "type": "number"
        +                          },
        +                          "applies_to": {
        +                            "const": "solo_first_month",
        +                            "default": "solo_first_month",
        +                            "type": "string"
        +                          },
        +                          "currency": {
        +                            "type": "string"
        +                          },
        +                          "redeemable_until": {
        +                            "type": "string"
        +                          }
        +                        },
        +                        "required": [
        +                          "amount_local",
        +                          "currency",
        +                          "redeemable_until"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "pricing_url": {
        +                    "default": "https://civilquants.com/pricing",
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "available_tiers"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tos_url": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "upgrade_hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "warranty_disclaimer": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          }
        +        },
        +        "required": [
        +          "request_id",
        +          "issued_at",
        +          "tier"
        +        ],
        +        "type": "object"
        +      },
        +      "data": {
        +        "default": null,
        +        "title": "Data"
        +      },
        +      "error": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        +            "properties": {
        +              "code": {
        +                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        +                "enum": [
        +                  "RATE_LIMIT_EXCEEDED",
        +                  "TIER_INSUFFICIENT",
        +                  "INVALID_INPUT",
        +                  "SCHEMA_VERSION_MISMATCH",
        +                  "SCHEMA_INVARIANT_VIOLATION",
        +                  "UPSTREAM_TIMEOUT",
        +                  "BACKEND_FAILURE",
        +                  "IP_BLOCKED",
        +                  "RESOURCE_NOT_FOUND",
        +                  "RENDER_FAILURE",
        +                  "OCR_LOW_CONFIDENCE",
        +                  "MANUAL_REVIEW_REQUIRED",
        +                  "ACCEPTANCE_REQUIRED",
        +                  "INVALID_TOKEN"
        +                ],
        +                "type": "string"
        +              },
        +              "details": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "message": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "recoverable": {
        +                "type": "boolean"
        +              },
        +              "retry_after_seconds": {
        +                "anyOf": [
        +                  {
        +                    "minimum": 0,
        +                    "type": "integer"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              }
        +            },
        +            "required": [
        +              "code",
        +              "message",
        +              "recoverable"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      }
        +    },
        +    "required": [
        +      "_meta"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedcompute_permeable_pavement1 field changed
      • changedOutput schema / properties / result / anyOf
        Previous value: -[
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "_meta": {
        -        "additionalProperties": false,
        -        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        -        "properties": {
        -          "deliverables": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        -                "properties": {
        -                  "docx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "dxf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "expires_at": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  },
        -                  "pdf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "xlsx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "expires_at"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "document_id": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "issued_at": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "rate_limit_remaining": {
        -            "anyOf": [
        -              {
        -                "minimum": 0,
        -                "type": "integer"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "request_id": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "schema_version": {
        -            "const": "1.0.0",
        -            "default": "1.0.0",
        -            "type": "string"
        -          },
        -          "scope_boundary": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        -                "properties": {
        -                  "not_in_scope": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "produced": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "recommended_companions": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "type": "string"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "produced",
        -                  "not_in_scope"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tier": {
        -            "enum": [
        -              "free",
        -              "paid"
        -            ],
        -            "type": "string"
        -          },
        -          "tier_upgrade": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        -                "properties": {
        -                  "available_tiers": {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        -                      "properties": {
        -                        "billing": {
        -                          "enum": [
        -                            "one_off",
        -                            "monthly",
        -                            "annual"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "currency": {
        -                          "enum": [
        -                            "GBP",
        -                            "SGD",
        -                            "EUR",
        -                            "USD",
        -                            "CAD",
        -                            "AUD",
        -                            "NZD",
        -                            "MYR"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "display_name": {
        -                          "type": "string"
        -                        },
        -                        "price_local": {
        -                          "type": "number"
        -                        },
        -                        "tier_slug": {
        -                          "enum": [
        -                            "7_day_pass",
        -                            "solo",
        -                            "studio",
        -                            "practice"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "unlock_summary": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "tier_slug",
        -                        "display_name",
        -                        "price_local",
        -                        "currency",
        -                        "billing",
        -                        "unlock_summary"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "current_tier": {
        -                    "const": "free",
        -                    "default": "free",
        -                    "type": "string"
        -                  },
        -                  "pass_credit": {
        -                    "anyOf": [
        -                      {
        -                        "additionalProperties": false,
        -                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        -                        "properties": {
        -                          "amount_local": {
        -                            "type": "number"
        -                          },
        -                          "applies_to": {
        -                            "const": "solo_first_month",
        -                            "default": "solo_first_month",
        -                            "type": "string"
        -                          },
        -                          "currency": {
        -                            "type": "string"
        -                          },
        -                          "redeemable_until": {
        -                            "type": "string"
        -                          }
        -                        },
        -                        "required": [
        -                          "amount_local",
        -                          "currency",
        -                          "redeemable_until"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "pricing_url": {
        -                    "default": "https://civilquants.com/pricing",
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "available_tiers"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tos_url": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "upgrade_hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "warranty_disclaimer": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          }
        -        },
        -        "required": [
        -          "request_id",
        -          "issued_at",
        -          "tier"
        -        ],
        -        "type": "object"
        -      },
        -      "data": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Schema § 1.1 — the typed payload returned inside `MCPResponse[ComputeResult]`.\n\nFree-tier responses omit `drawings` (the downloadable CAD artefact\npointers — the paid differentiator); the bridge enforces this. The\n`audit_trail` and the inline `drawing` preview are present on BOTH tiers\n(V1 ALIGN / 60th-fire D + C). `text_summary` is bounded to 2000 chars —\nkeeps the LLM-facing summary token-cheap and forces longer narrative into\nBoQ row descriptions where it belongs. `warnings` is the non-fatal\ngeometry advisory list (both tiers).",
        -            "properties": {
        -              "assembly_slug": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "audit_trail": {
        -                "anyOf": [
        -                  {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.7 — paid-tier audit-trail entry.\n\nOne entry per BoQ row; `boq_row_index` ties to the row position in\n`ComputeResult.boq_rows`. `derivation` is the human-readable formula\nwalk-through; `formula` is the optional formal expression.",
        -                      "properties": {
        -                        "boq_row_index": {
        -                          "minimum": 0,
        -                          "type": "integer"
        -                        },
        -                        "derivation": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "formula": {
        -                          "anyOf": [
        -                            {
        -                              "type": "string"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ],
        -                          "default": null
        -                        },
        -                        "id": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "parameters_referenced": {
        -                          "items": {
        -                            "type": "string"
        -                          },
        -                          "type": "array"
        -                        }
        -                      },
        -                      "required": [
        -                        "id",
        -                        "boq_row_index",
        -                        "derivation"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "boq_rows": {
        -                "items": {
        -                  "additionalProperties": false,
        -                  "description": "Schema § 1.3 — a single bill row in the requested standard's format.\n\n`description` is the non-verbatim functional description per spec § 13.9 /\n§ 15 invariant — NEVER reproduces a standard's verbatim clause text.\n`rate` / `amount` ship null because rates are commodity data the customer\nowns; the engine's job is the measurement, not the pricing.",
        -                  "properties": {
        -                    "amount": {
        -                      "anyOf": [
        -                        {
        -                          "type": "number"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "attribution": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "audit_id": {
        -                      "anyOf": [
        -                        {
        -                          "type": "string"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "description": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "quantity": {
        -                      "minimum": 0,
        -                      "type": "number"
        -                    },
        -                    "rate": {
        -                      "anyOf": [
        -                        {
        -                          "type": "number"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "unit": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "work_section": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    }
        -                  },
        -                  "required": [
        -                    "work_section",
        -                    "description",
        -                    "quantity",
        -                    "unit",
        -                    "attribution"
        -                  ],
        -                  "type": "object"
        -                },
        -                "type": "array"
        -              },
        -              "drawing": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": false,
        -                    "description": "Schema § 1.6a — inline server-rendered SVG preview of the geometry.\n\nThe MCP mirror of the web ``/compute`` response's ``drawing`` field\n(``api.schemas.compute.DrawingRef``): the same on-screen dimensioned\ndrawing both tiers see in the workspace, surfaced on the MCP compute\nresponse so a chat client can render it inline (60th-fire item C). This\nis the on-screen preview — present on BOTH tiers per the free/paid\nboundary; the downloadable CAD artefacts (DXF / dimensioned PDF) remain\nthe paid differentiator via the export tools.\n\nDefined here rather than importing ``DrawingRef`` because the web\n``schemas`` package imports back into this module (``schemas.render``),\nso reusing it would create an import cycle — the MCP wire contract keeps\nits own copy, the same pattern as ``BoQRow`` / ``DrawingReference``.",
        -                    "properties": {
        -                      "entity_count": {
        -                        "minimum": 0,
        -                        "type": "integer"
        -                      },
        -                      "svg_b64": {
        -                        "minLength": 1,
        -                        "type": "string"
        -                      },
        -                      "unit_of_drawing": {
        -                        "const": "m",
        -                        "default": "m",
        -                        "type": "string"
        -                      },
        -                      "viewbox_height": {
        -                        "exclusiveMinimum": 0,
        -                        "type": "number"
        -                      },
        -                      "viewbox_width": {
        -                        "exclusiveMinimum": 0,
        -                        "type": "number"
        -                      },
        -                      "viewbox_x": {
        -                        "type": "number"
        -                      },
        -                      "viewbox_y": {
        -                        "type": "number"
        -                      }
        -                    },
        -                    "required": [
        -                      "svg_b64",
        -                      "viewbox_x",
        -                      "viewbox_y",
        -                      "viewbox_width",
        -                      "viewbox_height",
        -                      "entity_count"
        -                    ],
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "drawings": {
        -                "anyOf": [
        -                  {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.6 — paid-tier drawing artefact pointer.\n\n`url` is an R2-signed URL; expiry is carried in `_meta.deliverables.expires_at`\non the envelope (not duplicated here). `layers` is DXF-only; PDF/SVG\ncallers omit it.",
        -                      "properties": {
        -                        "drawing_type": {
        -                          "enum": [
        -                            "section",
        -                            "plan",
        -                            "elevation",
        -                            "isometric",
        -                            "detail"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "format": {
        -                          "enum": [
        -                            "DXF",
        -                            "PDF",
        -                            "SVG"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "layers": {
        -                          "anyOf": [
        -                            {
        -                              "items": {
        -                                "type": "string"
        -                              },
        -                              "type": "array"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ],
        -                          "default": null
        -                        },
        -                        "scale": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "sheet_size": {
        -                          "enum": [
        -                            "A1",
        -                            "A2",
        -                            "A3",
        -                            "A4"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "url": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "drawing_type",
        -                        "format",
        -                        "url",
        -                        "sheet_size",
        -                        "scale"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "parameters_used": {
        -                "additionalProperties": false,
        -                "description": "Schema § 1.2 — the parameter snapshot the engine actually used.\n\nSplits user-supplied values from engine defaults so customers can see\nwhich numbers came from them and which the engine filled in. Every\ndefaulted parameter SHOULD have a corresponding entry in `assumptions`\n— the bridge layer enforces this when wrapping engine output.",
        -                "properties": {
        -                  "assumptions": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "engine_defaults": {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  "user_supplied": {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  }
        -                },
        -                "type": "object"
        -              },
        -              "standard": {
        -                "enum": [
        -                  "CESMM4",
        -                  "NRM2",
        -                  "SMM7",
        -                  "MMHW"
        -                ],
        -                "type": "string"
        -              },
        -              "text_summary": {
        -                "maxLength": 2000,
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "totals_summary": {
        -                "additionalProperties": false,
        -                "description": "Schema § 1.4 — totals_summary as a typed wrapper around the free-form dict.\n\nWire shape is a flat object (`{\"concrete_m3\": {...}, \"rebar_t\": {...}}`).\nWe model it as `RootModel`-equivalent via `model_config(extra=\"allow\")`\n+ a single `__root__`-style `entries` dict. Pydantic v2 recommends\n`RootModel` for free-form roots; using a wrapper class keeps the import\nsurface uniform with the rest of this module.",
        -                "properties": {
        -                  "entries": {
        -                    "additionalProperties": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.4 — single material/work-class total entry.",
        -                      "properties": {
        -                        "quantity": {
        -                          "minimum": 0,
        -                          "type": "number"
        -                        },
        -                        "unit": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "quantity",
        -                        "unit"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "object"
        -                  }
        -                },
        -                "type": "object"
        -              },
        -              "warnings": {
        -                "items": {
        -                  "additionalProperties": false,
        -                  "description": "Schema § 1.8 — a non-fatal geometry advisory (56th-fire T2).\n\nThe wire projection of the engine's `core.GeometryWarning`. Advisory only:\na warning NEVER changes a measured quantity — it flags geometry that is\nvalid but likely a mistake (e.g. a stale dependent-height default). Present\non BOTH tiers — a correctness/safety signal, not a paid feature.",
        -                  "properties": {
        -                    "affected_params": {
        -                      "items": {
        -                        "type": "string"
        -                      },
        -                      "type": "array"
        -                    },
        -                    "code": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "detail": {
        -                      "additionalProperties": {
        -                        "type": "number"
        -                      },
        -                      "type": "object"
        -                    },
        -                    "message": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "severity": {
        -                      "enum": [
        -                        "info",
        -                        "advisory",
        -                        "caution"
        -                      ],
        -                      "type": "string"
        -                    }
        -                  },
        -                  "required": [
        -                    "code",
        -                    "severity",
        -                    "message"
        -                  ],
        -                  "type": "object"
        -                },
        -                "type": "array"
        -              }
        -            },
        -            "required": [
        -              "assembly_slug",
        -              "standard",
        -              "parameters_used",
        -              "boq_rows",
        -              "totals_summary",
        -              "text_summary"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      },
        -      "error": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        -            "properties": {
        -              "code": {
        -                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        -                "enum": [
        -                  "RATE_LIMIT_EXCEEDED",
        -                  "TIER_INSUFFICIENT",
        -                  "INVALID_INPUT",
        -                  "SCHEMA_VERSION_MISMATCH",
        -                  "SCHEMA_INVARIANT_VIOLATION",
        -                  "UPSTREAM_TIMEOUT",
        -                  "BACKEND_FAILURE",
        -                  "IP_BLOCKED",
        -                  "RESOURCE_NOT_FOUND",
        -                  "RENDER_FAILURE",
        -                  "OCR_LOW_CONFIDENCE",
        -                  "MANUAL_REVIEW_REQUIRED",
        -                  "ACCEPTANCE_REQUIRED",
        -                  "INVALID_TOKEN"
        -                ],
        -                "type": "string"
        -              },
        -              "details": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "message": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "recoverable": {
        -                "type": "boolean"
        -              },
        -              "retry_after_seconds": {
        -                "anyOf": [
        -                  {
        -                    "minimum": 0,
        -                    "type": "integer"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              }
        -            },
        -            "required": [
        -              "code",
        -              "message",
        -              "recoverable"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      }
        -    },
        -    "required": [
        -      "_meta"
        -    ],
        -    "type": "object"
        -  },
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "_meta": {
        -        "additionalProperties": false,
        -        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        -        "properties": {
        -          "deliverables": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        -                "properties": {
        -                  "docx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "dxf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "expires_at": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  },
        -                  "pdf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "xlsx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "expires_at"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "document_id": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "issued_at": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "rate_limit_remaining": {
        -            "anyOf": [
        -              {
        -                "minimum": 0,
        -                "type": "integer"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "request_id": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "schema_version": {
        -            "const": "1.0.0",
        -            "default": "1.0.0",
        -            "type": "string"
        -          },
        -          "scope_boundary": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        -                "properties": {
        -                  "not_in_scope": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "produced": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "recommended_companions": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "type": "string"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "produced",
        -                  "not_in_scope"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tier": {
        -            "enum": [
        -              "free",
        -              "paid"
        -            ],
        -            "type": "string"
        -          },
        -          "tier_upgrade": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        -                "properties": {
        -                  "available_tiers": {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        -                      "properties": {
        -                        "billing": {
        -                          "enum": [
        -                            "one_off",
        -                            "monthly",
        -                            "annual"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "currency": {
        -                          "enum": [
        -                            "GBP",
        -                            "SGD",
        -                            "EUR",
        -                            "USD",
        -                            "CAD",
        -                            "AUD",
        -                            "NZD",
        -                            "MYR"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "display_name": {
        -                          "type": "string"
        -                        },
        -                        "price_local": {
        -                          "type": "number"
        -                        },
        -                        "tier_slug": {
        -                          "enum": [
        -                            "7_day_pass",
        -                            "solo",
        -                            "studio",
        -                            "practice"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "unlock_summary": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "tier_slug",
        -                        "display_name",
        -                        "price_local",
        -                        "currency",
        -                        "billing",
        -                        "unlock_summary"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "current_tier": {
        -                    "const": "free",
        -                    "default": "free",
        -                    "type": "string"
        -                  },
        -                  "pass_credit": {
        -                    "anyOf": [
        -                      {
        -                        "additionalProperties": false,
        -                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        -                        "properties": {
        -                          "amount_local": {
        -                            "type": "number"
        -                          },
        -                          "applies_to": {
        -                            "const": "solo_first_month",
        -                            "default": "solo_first_month",
        -                            "type": "string"
        -                          },
        -                          "currency": {
        -                            "type": "string"
        -                          },
        -                          "redeemable_until": {
        -                            "type": "string"
        -                          }
        -                        },
        -                        "required": [
        -                          "amount_local",
        -                          "currency",
        -                          "redeemable_until"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "pricing_url": {
        -                    "default": "https://civilquants.com/pricing",
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "available_tiers"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tos_url": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "upgrade_hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "warranty_disclaimer": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          }
        -        },
        -        "required": [
        -          "request_id",
        -          "issued_at",
        -          "tier"
        -        ],
        -        "type": "object"
        -      },
        -      "data": {
        -        "default": null,
        -        "title": "Data"
        -      },
        -      "error": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        -            "properties": {
        -              "code": {
        -                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        -                "enum": [
        -                  "RATE_LIMIT_EXCEEDED",
        -                  "TIER_INSUFFICIENT",
        -                  "INVALID_INPUT",
        -                  "SCHEMA_VERSION_MISMATCH",
        -                  "SCHEMA_INVARIANT_VIOLATION",
        -                  "UPSTREAM_TIMEOUT",
        -                  "BACKEND_FAILURE",
        -                  "IP_BLOCKED",
        -                  "RESOURCE_NOT_FOUND",
        -                  "RENDER_FAILURE",
        -                  "OCR_LOW_CONFIDENCE",
        -                  "MANUAL_REVIEW_REQUIRED",
        -                  "ACCEPTANCE_REQUIRED",
        -                  "INVALID_TOKEN"
        -                ],
        -                "type": "string"
        -              },
        -              "details": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "message": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "recoverable": {
        -                "type": "boolean"
        -              },
        -              "retry_after_seconds": {
        -                "anyOf": [
        -                  {
        -                    "minimum": 0,
        -                    "type": "integer"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              }
        -            },
        -            "required": [
        -              "code",
        -              "message",
        -              "recoverable"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      }
        -    },
        -    "required": [
        -      "_meta"
        -    ],
        -    "type": "object"
        -  }
        -]New value: +[
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "_meta": {
        +        "additionalProperties": false,
        +        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        +        "properties": {
        +          "deliverables": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        +                "properties": {
        +                  "docx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "dxf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "expires_at": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  },
        +                  "pdf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "xlsx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "expires_at"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "document_id": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "issued_at": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "output_mode": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Surfaces what a trimmed ``output_mode`` withheld from ``data``.\n\nA trimmed mode (``summary`` / ``boq`` / ``boq_with_backup``) withholds\nalready-computed fields to keep the chat payload small. The withheld value\nreads to a client agent as \"capability missing\" (the box-culvert \"geometry\nbuilder isn't firing\" scare) rather than \"pared for size\": ``drawing`` and\n``audit_trail`` appear as ``null``, ``boq_rows`` as an empty list ``[]``\n(its type forbids ``null``) — both indistinguishable from a genuine absent\nresult. This names the withheld fields and the exact mode that brings each\nback, so the value is unambiguous. Absent on the default ``full_json`` mode\n— nothing is withheld, nothing to point at.",
        +                "properties": {
        +                  "mode": {
        +                    "enum": [
        +                      "summary",
        +                      "boq",
        +                      "boq_with_backup"
        +                    ],
        +                    "type": "string"
        +                  },
        +                  "omitted_fields": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "minItems": 1,
        +                    "type": "array"
        +                  },
        +                  "retrieve_with": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "mode",
        +                  "omitted_fields",
        +                  "retrieve_with"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "rate_limit_remaining": {
        +            "anyOf": [
        +              {
        +                "minimum": 0,
        +                "type": "integer"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "request_id": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "schema_version": {
        +            "const": "1.0.0",
        +            "default": "1.0.0",
        +            "type": "string"
        +          },
        +          "scope_boundary": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        +                "properties": {
        +                  "not_in_scope": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "produced": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "recommended_companions": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "type": "string"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "produced",
        +                  "not_in_scope"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tier": {
        +            "enum": [
        +              "free",
        +              "paid"
        +            ],
        +            "type": "string"
        +          },
        +          "tier_upgrade": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        +                "properties": {
        +                  "available_tiers": {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        +                      "properties": {
        +                        "billing": {
        +                          "enum": [
        +                            "one_off",
        +                            "monthly",
        +                            "annual"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "currency": {
        +                          "enum": [
        +                            "GBP",
        +                            "SGD",
        +                            "EUR",
        +                            "USD",
        +                            "CAD",
        +                            "AUD",
        +                            "NZD",
        +                            "MYR"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "display_name": {
        +                          "type": "string"
        +                        },
        +                        "price_local": {
        +                          "type": "number"
        +                        },
        +                        "tier_slug": {
        +                          "enum": [
        +                            "7_day_pass",
        +                            "solo",
        +                            "studio",
        +                            "practice"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "unlock_summary": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "tier_slug",
        +                        "display_name",
        +                        "price_local",
        +                        "currency",
        +                        "billing",
        +                        "unlock_summary"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "current_tier": {
        +                    "const": "free",
        +                    "default": "free",
        +                    "type": "string"
        +                  },
        +                  "pass_credit": {
        +                    "anyOf": [
        +                      {
        +                        "additionalProperties": false,
        +                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        +                        "properties": {
        +                          "amount_local": {
        +                            "type": "number"
        +                          },
        +                          "applies_to": {
        +                            "const": "solo_first_month",
        +                            "default": "solo_first_month",
        +                            "type": "string"
        +                          },
        +                          "currency": {
        +                            "type": "string"
        +                          },
        +                          "redeemable_until": {
        +                            "type": "string"
        +                          }
        +                        },
        +                        "required": [
        +                          "amount_local",
        +                          "currency",
        +                          "redeemable_until"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "pricing_url": {
        +                    "default": "https://civilquants.com/pricing",
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "available_tiers"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tos_url": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "upgrade_hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "warranty_disclaimer": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          }
        +        },
        +        "required": [
        +          "request_id",
        +          "issued_at",
        +          "tier"
        +        ],
        +        "type": "object"
        +      },
        +      "data": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Schema § 1.1 — the typed payload returned inside `MCPResponse[ComputeResult]`.\n\nFree-tier responses omit `drawings` (the downloadable CAD artefact\npointers — the paid differentiator); the bridge enforces this. The\n`audit_trail` and the inline `drawing` preview are present on BOTH tiers\n(V1 ALIGN / 60th-fire D + C). `text_summary` is bounded to 2000 chars —\nkeeps the LLM-facing summary token-cheap and forces longer narrative into\nBoQ row descriptions where it belongs. `warnings` is the non-fatal\ngeometry advisory list (both tiers).",
        +            "properties": {
        +              "assembly_slug": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "audit_trail": {
        +                "anyOf": [
        +                  {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.7 — paid-tier audit-trail entry.\n\nOne entry per BoQ row; `boq_row_index` ties to the row position in\n`ComputeResult.boq_rows`. `derivation` is the human-readable formula\nwalk-through; `formula` is the optional formal expression.",
        +                      "properties": {
        +                        "boq_row_index": {
        +                          "minimum": 0,
        +                          "type": "integer"
        +                        },
        +                        "derivation": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "formula": {
        +                          "anyOf": [
        +                            {
        +                              "type": "string"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ],
        +                          "default": null
        +                        },
        +                        "id": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "parameters_referenced": {
        +                          "items": {
        +                            "type": "string"
        +                          },
        +                          "type": "array"
        +                        }
        +                      },
        +                      "required": [
        +                        "id",
        +                        "boq_row_index",
        +                        "derivation"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "boq_rows": {
        +                "items": {
        +                  "additionalProperties": false,
        +                  "description": "Schema § 1.3 — a single bill row in the requested standard's format.\n\n`description` is the non-verbatim functional description per spec § 13.9 /\n§ 15 invariant — NEVER reproduces a standard's verbatim clause text.\n`rate` / `amount` ship null because rates are commodity data the customer\nowns; the engine's job is the measurement, not the pricing.",
        +                  "properties": {
        +                    "amount": {
        +                      "anyOf": [
        +                        {
        +                          "type": "number"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "attribution": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "audit_id": {
        +                      "anyOf": [
        +                        {
        +                          "type": "string"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "description": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "quantity": {
        +                      "minimum": 0,
        +                      "type": "number"
        +                    },
        +                    "rate": {
        +                      "anyOf": [
        +                        {
        +                          "type": "number"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "unit": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "work_section": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    }
        +                  },
        +                  "required": [
        +                    "work_section",
        +                    "description",
        +                    "quantity",
        +                    "unit",
        +                    "attribution"
        +                  ],
        +                  "type": "object"
        +                },
        +                "type": "array"
        +              },
        +              "drawing": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": false,
        +                    "description": "Schema § 1.6a — inline server-rendered SVG preview of the geometry.\n\nThe MCP mirror of the web ``/compute`` response's ``drawing`` field\n(``api.schemas.compute.DrawingRef``): the same on-screen dimensioned\ndrawing both tiers see in the workspace, surfaced on the MCP compute\nresponse so a chat client can render it inline (60th-fire item C). This\nis the on-screen preview — present on BOTH tiers per the free/paid\nboundary; the downloadable CAD artefacts (DXF / dimensioned PDF) remain\nthe paid differentiator via the export tools.\n\nDefined here rather than importing ``DrawingRef`` because the web\n``schemas`` package imports back into this module (``schemas.render``),\nso reusing it would create an import cycle — the MCP wire contract keeps\nits own copy, the same pattern as ``BoQRow`` / ``DrawingReference``.",
        +                    "properties": {
        +                      "entity_count": {
        +                        "minimum": 0,
        +                        "type": "integer"
        +                      },
        +                      "svg_b64": {
        +                        "minLength": 1,
        +                        "type": "string"
        +                      },
        +                      "unit_of_drawing": {
        +                        "const": "m",
        +                        "default": "m",
        +                        "type": "string"
        +                      },
        +                      "viewbox_height": {
        +                        "exclusiveMinimum": 0,
        +                        "type": "number"
        +                      },
        +                      "viewbox_width": {
        +                        "exclusiveMinimum": 0,
        +                        "type": "number"
        +                      },
        +                      "viewbox_x": {
        +                        "type": "number"
        +                      },
        +                      "viewbox_y": {
        +                        "type": "number"
        +                      }
        +                    },
        +                    "required": [
        +                      "svg_b64",
        +                      "viewbox_x",
        +                      "viewbox_y",
        +                      "viewbox_width",
        +                      "viewbox_height",
        +                      "entity_count"
        +                    ],
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "drawings": {
        +                "anyOf": [
        +                  {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.6 — paid-tier drawing artefact pointer.\n\n`url` is an R2-signed URL; expiry is carried in `_meta.deliverables.expires_at`\non the envelope (not duplicated here). `layers` is DXF-only; PDF/SVG\ncallers omit it.",
        +                      "properties": {
        +                        "drawing_type": {
        +                          "enum": [
        +                            "section",
        +                            "plan",
        +                            "elevation",
        +                            "isometric",
        +                            "detail"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "format": {
        +                          "enum": [
        +                            "DXF",
        +                            "PDF",
        +                            "SVG"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "layers": {
        +                          "anyOf": [
        +                            {
        +                              "items": {
        +                                "type": "string"
        +                              },
        +                              "type": "array"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ],
        +                          "default": null
        +                        },
        +                        "scale": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "sheet_size": {
        +                          "enum": [
        +                            "A1",
        +                            "A2",
        +                            "A3",
        +                            "A4"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "url": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "drawing_type",
        +                        "format",
        +                        "url",
        +                        "sheet_size",
        +                        "scale"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "parameters_used": {
        +                "additionalProperties": false,
        +                "description": "Schema § 1.2 — the parameter snapshot the engine actually used.\n\nSplits user-supplied values from engine defaults so customers can see\nwhich numbers came from them and which the engine filled in. Every\ndefaulted parameter SHOULD have a corresponding entry in `assumptions`\n— the bridge layer enforces this when wrapping engine output.",
        +                "properties": {
        +                  "assumptions": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "engine_defaults": {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  "user_supplied": {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  }
        +                },
        +                "type": "object"
        +              },
        +              "standard": {
        +                "enum": [
        +                  "CESMM4",
        +                  "NRM2",
        +                  "SMM7",
        +                  "MMHW"
        +                ],
        +                "type": "string"
        +              },
        +              "text_summary": {
        +                "maxLength": 2000,
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "totals_summary": {
        +                "additionalProperties": false,
        +                "description": "Schema § 1.4 — totals_summary as a typed wrapper around the free-form dict.\n\nWire shape is a flat object (`{\"concrete_m3\": {...}, \"rebar_t\": {...}}`).\nWe model it as `RootModel`-equivalent via `model_config(extra=\"allow\")`\n+ a single `__root__`-style `entries` dict. Pydantic v2 recommends\n`RootModel` for free-form roots; using a wrapper class keeps the import\nsurface uniform with the rest of this module.",
        +                "properties": {
        +                  "entries": {
        +                    "additionalProperties": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.4 — single material/work-class total entry.",
        +                      "properties": {
        +                        "quantity": {
        +                          "minimum": 0,
        +                          "type": "number"
        +                        },
        +                        "unit": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "quantity",
        +                        "unit"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "object"
        +                  }
        +                },
        +                "type": "object"
        +              },
        +              "warnings": {
        +                "items": {
        +                  "additionalProperties": false,
        +                  "description": "Schema § 1.8 — a non-fatal geometry advisory (56th-fire T2).\n\nThe wire projection of the engine's `core.GeometryWarning`. Advisory only:\na warning NEVER changes a measured quantity — it flags geometry that is\nvalid but likely a mistake (e.g. a stale dependent-height default). Present\non BOTH tiers — a correctness/safety signal, not a paid feature.",
        +                  "properties": {
        +                    "affected_params": {
        +                      "items": {
        +                        "type": "string"
        +                      },
        +                      "type": "array"
        +                    },
        +                    "code": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "detail": {
        +                      "additionalProperties": {
        +                        "type": "number"
        +                      },
        +                      "type": "object"
        +                    },
        +                    "message": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "severity": {
        +                      "enum": [
        +                        "info",
        +                        "advisory",
        +                        "caution"
        +                      ],
        +                      "type": "string"
        +                    }
        +                  },
        +                  "required": [
        +                    "code",
        +                    "severity",
        +                    "message"
        +                  ],
        +                  "type": "object"
        +                },
        +                "type": "array"
        +              }
        +            },
        +            "required": [
        +              "assembly_slug",
        +              "standard",
        +              "parameters_used",
        +              "boq_rows",
        +              "totals_summary",
        +              "text_summary"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      },
        +      "error": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        +            "properties": {
        +              "code": {
        +                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        +                "enum": [
        +                  "RATE_LIMIT_EXCEEDED",
        +                  "TIER_INSUFFICIENT",
        +                  "INVALID_INPUT",
        +                  "SCHEMA_VERSION_MISMATCH",
        +                  "SCHEMA_INVARIANT_VIOLATION",
        +                  "UPSTREAM_TIMEOUT",
        +                  "BACKEND_FAILURE",
        +                  "IP_BLOCKED",
        +                  "RESOURCE_NOT_FOUND",
        +                  "RENDER_FAILURE",
        +                  "OCR_LOW_CONFIDENCE",
        +                  "MANUAL_REVIEW_REQUIRED",
        +                  "ACCEPTANCE_REQUIRED",
        +                  "INVALID_TOKEN"
        +                ],
        +                "type": "string"
        +              },
        +              "details": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "message": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "recoverable": {
        +                "type": "boolean"
        +              },
        +              "retry_after_seconds": {
        +                "anyOf": [
        +                  {
        +                    "minimum": 0,
        +                    "type": "integer"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              }
        +            },
        +            "required": [
        +              "code",
        +              "message",
        +              "recoverable"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      }
        +    },
        +    "required": [
        +      "_meta"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "_meta": {
        +        "additionalProperties": false,
        +        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        +        "properties": {
        +          "deliverables": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        +                "properties": {
        +                  "docx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "dxf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "expires_at": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  },
        +                  "pdf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "xlsx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "expires_at"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "document_id": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "issued_at": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "output_mode": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Surfaces what a trimmed ``output_mode`` withheld from ``data``.\n\nA trimmed mode (``summary`` / ``boq`` / ``boq_with_backup``) withholds\nalready-computed fields to keep the chat payload small. The withheld value\nreads to a client agent as \"capability missing\" (the box-culvert \"geometry\nbuilder isn't firing\" scare) rather than \"pared for size\": ``drawing`` and\n``audit_trail`` appear as ``null``, ``boq_rows`` as an empty list ``[]``\n(its type forbids ``null``) — both indistinguishable from a genuine absent\nresult. This names the withheld fields and the exact mode that brings each\nback, so the value is unambiguous. Absent on the default ``full_json`` mode\n— nothing is withheld, nothing to point at.",
        +                "properties": {
        +                  "mode": {
        +                    "enum": [
        +                      "summary",
        +                      "boq",
        +                      "boq_with_backup"
        +                    ],
        +                    "type": "string"
        +                  },
        +                  "omitted_fields": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "minItems": 1,
        +                    "type": "array"
        +                  },
        +                  "retrieve_with": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "mode",
        +                  "omitted_fields",
        +                  "retrieve_with"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "rate_limit_remaining": {
        +            "anyOf": [
        +              {
        +                "minimum": 0,
        +                "type": "integer"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "request_id": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "schema_version": {
        +            "const": "1.0.0",
        +            "default": "1.0.0",
        +            "type": "string"
        +          },
        +          "scope_boundary": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        +                "properties": {
        +                  "not_in_scope": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "produced": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "recommended_companions": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "type": "string"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "produced",
        +                  "not_in_scope"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tier": {
        +            "enum": [
        +              "free",
        +              "paid"
        +            ],
        +            "type": "string"
        +          },
        +          "tier_upgrade": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        +                "properties": {
        +                  "available_tiers": {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        +                      "properties": {
        +                        "billing": {
        +                          "enum": [
        +                            "one_off",
        +                            "monthly",
        +                            "annual"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "currency": {
        +                          "enum": [
        +                            "GBP",
        +                            "SGD",
        +                            "EUR",
        +                            "USD",
        +                            "CAD",
        +                            "AUD",
        +                            "NZD",
        +                            "MYR"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "display_name": {
        +                          "type": "string"
        +                        },
        +                        "price_local": {
        +                          "type": "number"
        +                        },
        +                        "tier_slug": {
        +                          "enum": [
        +                            "7_day_pass",
        +                            "solo",
        +                            "studio",
        +                            "practice"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "unlock_summary": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "tier_slug",
        +                        "display_name",
        +                        "price_local",
        +                        "currency",
        +                        "billing",
        +                        "unlock_summary"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "current_tier": {
        +                    "const": "free",
        +                    "default": "free",
        +                    "type": "string"
        +                  },
        +                  "pass_credit": {
        +                    "anyOf": [
        +                      {
        +                        "additionalProperties": false,
        +                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        +                        "properties": {
        +                          "amount_local": {
        +                            "type": "number"
        +                          },
        +                          "applies_to": {
        +                            "const": "solo_first_month",
        +                            "default": "solo_first_month",
        +                            "type": "string"
        +                          },
        +                          "currency": {
        +                            "type": "string"
        +                          },
        +                          "redeemable_until": {
        +                            "type": "string"
        +                          }
        +                        },
        +                        "required": [
        +                          "amount_local",
        +                          "currency",
        +                          "redeemable_until"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "pricing_url": {
        +                    "default": "https://civilquants.com/pricing",
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "available_tiers"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tos_url": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "upgrade_hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "warranty_disclaimer": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          }
        +        },
        +        "required": [
        +          "request_id",
        +          "issued_at",
        +          "tier"
        +        ],
        +        "type": "object"
        +      },
        +      "data": {
        +        "default": null,
        +        "title": "Data"
        +      },
        +      "error": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        +            "properties": {
        +              "code": {
        +                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        +                "enum": [
        +                  "RATE_LIMIT_EXCEEDED",
        +                  "TIER_INSUFFICIENT",
        +                  "INVALID_INPUT",
        +                  "SCHEMA_VERSION_MISMATCH",
        +                  "SCHEMA_INVARIANT_VIOLATION",
        +                  "UPSTREAM_TIMEOUT",
        +                  "BACKEND_FAILURE",
        +                  "IP_BLOCKED",
        +                  "RESOURCE_NOT_FOUND",
        +                  "RENDER_FAILURE",
        +                  "OCR_LOW_CONFIDENCE",
        +                  "MANUAL_REVIEW_REQUIRED",
        +                  "ACCEPTANCE_REQUIRED",
        +                  "INVALID_TOKEN"
        +                ],
        +                "type": "string"
        +              },
        +              "details": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "message": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "recoverable": {
        +                "type": "boolean"
        +              },
        +              "retry_after_seconds": {
        +                "anyOf": [
        +                  {
        +                    "minimum": 0,
        +                    "type": "integer"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              }
        +            },
        +            "required": [
        +              "code",
        +              "message",
        +              "recoverable"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      }
        +    },
        +    "required": [
        +      "_meta"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedcompute_petrol_oil_interceptor1 field changed
      • changedOutput schema / properties / result / anyOf
        Previous value: -[
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "_meta": {
        -        "additionalProperties": false,
        -        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        -        "properties": {
        -          "deliverables": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        -                "properties": {
        -                  "docx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "dxf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "expires_at": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  },
        -                  "pdf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "xlsx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "expires_at"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "document_id": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "issued_at": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "rate_limit_remaining": {
        -            "anyOf": [
        -              {
        -                "minimum": 0,
        -                "type": "integer"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "request_id": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "schema_version": {
        -            "const": "1.0.0",
        -            "default": "1.0.0",
        -            "type": "string"
        -          },
        -          "scope_boundary": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        -                "properties": {
        -                  "not_in_scope": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "produced": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "recommended_companions": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "type": "string"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "produced",
        -                  "not_in_scope"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tier": {
        -            "enum": [
        -              "free",
        -              "paid"
        -            ],
        -            "type": "string"
        -          },
        -          "tier_upgrade": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        -                "properties": {
        -                  "available_tiers": {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        -                      "properties": {
        -                        "billing": {
        -                          "enum": [
        -                            "one_off",
        -                            "monthly",
        -                            "annual"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "currency": {
        -                          "enum": [
        -                            "GBP",
        -                            "SGD",
        -                            "EUR",
        -                            "USD",
        -                            "CAD",
        -                            "AUD",
        -                            "NZD",
        -                            "MYR"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "display_name": {
        -                          "type": "string"
        -                        },
        -                        "price_local": {
        -                          "type": "number"
        -                        },
        -                        "tier_slug": {
        -                          "enum": [
        -                            "7_day_pass",
        -                            "solo",
        -                            "studio",
        -                            "practice"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "unlock_summary": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "tier_slug",
        -                        "display_name",
        -                        "price_local",
        -                        "currency",
        -                        "billing",
        -                        "unlock_summary"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "current_tier": {
        -                    "const": "free",
        -                    "default": "free",
        -                    "type": "string"
        -                  },
        -                  "pass_credit": {
        -                    "anyOf": [
        -                      {
        -                        "additionalProperties": false,
        -                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        -                        "properties": {
        -                          "amount_local": {
        -                            "type": "number"
        -                          },
        -                          "applies_to": {
        -                            "const": "solo_first_month",
        -                            "default": "solo_first_month",
        -                            "type": "string"
        -                          },
        -                          "currency": {
        -                            "type": "string"
        -                          },
        -                          "redeemable_until": {
        -                            "type": "string"
        -                          }
        -                        },
        -                        "required": [
        -                          "amount_local",
        -                          "currency",
        -                          "redeemable_until"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "pricing_url": {
        -                    "default": "https://civilquants.com/pricing",
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "available_tiers"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tos_url": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "upgrade_hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "warranty_disclaimer": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          }
        -        },
        -        "required": [
        -          "request_id",
        -          "issued_at",
        -          "tier"
        -        ],
        -        "type": "object"
        -      },
        -      "data": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Schema § 1.1 — the typed payload returned inside `MCPResponse[ComputeResult]`.\n\nFree-tier responses omit `drawings` (the downloadable CAD artefact\npointers — the paid differentiator); the bridge enforces this. The\n`audit_trail` and the inline `drawing` preview are present on BOTH tiers\n(V1 ALIGN / 60th-fire D + C). `text_summary` is bounded to 2000 chars —\nkeeps the LLM-facing summary token-cheap and forces longer narrative into\nBoQ row descriptions where it belongs. `warnings` is the non-fatal\ngeometry advisory list (both tiers).",
        -            "properties": {
        -              "assembly_slug": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "audit_trail": {
        -                "anyOf": [
        -                  {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.7 — paid-tier audit-trail entry.\n\nOne entry per BoQ row; `boq_row_index` ties to the row position in\n`ComputeResult.boq_rows`. `derivation` is the human-readable formula\nwalk-through; `formula` is the optional formal expression.",
        -                      "properties": {
        -                        "boq_row_index": {
        -                          "minimum": 0,
        -                          "type": "integer"
        -                        },
        -                        "derivation": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "formula": {
        -                          "anyOf": [
        -                            {
        -                              "type": "string"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ],
        -                          "default": null
        -                        },
        -                        "id": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "parameters_referenced": {
        -                          "items": {
        -                            "type": "string"
        -                          },
        -                          "type": "array"
        -                        }
        -                      },
        -                      "required": [
        -                        "id",
        -                        "boq_row_index",
        -                        "derivation"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "boq_rows": {
        -                "items": {
        -                  "additionalProperties": false,
        -                  "description": "Schema § 1.3 — a single bill row in the requested standard's format.\n\n`description` is the non-verbatim functional description per spec § 13.9 /\n§ 15 invariant — NEVER reproduces a standard's verbatim clause text.\n`rate` / `amount` ship null because rates are commodity data the customer\nowns; the engine's job is the measurement, not the pricing.",
        -                  "properties": {
        -                    "amount": {
        -                      "anyOf": [
        -                        {
        -                          "type": "number"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "attribution": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "audit_id": {
        -                      "anyOf": [
        -                        {
        -                          "type": "string"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "description": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "quantity": {
        -                      "minimum": 0,
        -                      "type": "number"
        -                    },
        -                    "rate": {
        -                      "anyOf": [
        -                        {
        -                          "type": "number"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "unit": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "work_section": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    }
        -                  },
        -                  "required": [
        -                    "work_section",
        -                    "description",
        -                    "quantity",
        -                    "unit",
        -                    "attribution"
        -                  ],
        -                  "type": "object"
        -                },
        -                "type": "array"
        -              },
        -              "drawing": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": false,
        -                    "description": "Schema § 1.6a — inline server-rendered SVG preview of the geometry.\n\nThe MCP mirror of the web ``/compute`` response's ``drawing`` field\n(``api.schemas.compute.DrawingRef``): the same on-screen dimensioned\ndrawing both tiers see in the workspace, surfaced on the MCP compute\nresponse so a chat client can render it inline (60th-fire item C). This\nis the on-screen preview — present on BOTH tiers per the free/paid\nboundary; the downloadable CAD artefacts (DXF / dimensioned PDF) remain\nthe paid differentiator via the export tools.\n\nDefined here rather than importing ``DrawingRef`` because the web\n``schemas`` package imports back into this module (``schemas.render``),\nso reusing it would create an import cycle — the MCP wire contract keeps\nits own copy, the same pattern as ``BoQRow`` / ``DrawingReference``.",
        -                    "properties": {
        -                      "entity_count": {
        -                        "minimum": 0,
        -                        "type": "integer"
        -                      },
        -                      "svg_b64": {
        -                        "minLength": 1,
        -                        "type": "string"
        -                      },
        -                      "unit_of_drawing": {
        -                        "const": "m",
        -                        "default": "m",
        -                        "type": "string"
        -                      },
        -                      "viewbox_height": {
        -                        "exclusiveMinimum": 0,
        -                        "type": "number"
        -                      },
        -                      "viewbox_width": {
        -                        "exclusiveMinimum": 0,
        -                        "type": "number"
        -                      },
        -                      "viewbox_x": {
        -                        "type": "number"
        -                      },
        -                      "viewbox_y": {
        -                        "type": "number"
        -                      }
        -                    },
        -                    "required": [
        -                      "svg_b64",
        -                      "viewbox_x",
        -                      "viewbox_y",
        -                      "viewbox_width",
        -                      "viewbox_height",
        -                      "entity_count"
        -                    ],
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "drawings": {
        -                "anyOf": [
        -                  {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.6 — paid-tier drawing artefact pointer.\n\n`url` is an R2-signed URL; expiry is carried in `_meta.deliverables.expires_at`\non the envelope (not duplicated here). `layers` is DXF-only; PDF/SVG\ncallers omit it.",
        -                      "properties": {
        -                        "drawing_type": {
        -                          "enum": [
        -                            "section",
        -                            "plan",
        -                            "elevation",
        -                            "isometric",
        -                            "detail"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "format": {
        -                          "enum": [
        -                            "DXF",
        -                            "PDF",
        -                            "SVG"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "layers": {
        -                          "anyOf": [
        -                            {
        -                              "items": {
        -                                "type": "string"
        -                              },
        -                              "type": "array"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ],
        -                          "default": null
        -                        },
        -                        "scale": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "sheet_size": {
        -                          "enum": [
        -                            "A1",
        -                            "A2",
        -                            "A3",
        -                            "A4"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "url": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "drawing_type",
        -                        "format",
        -                        "url",
        -                        "sheet_size",
        -                        "scale"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "parameters_used": {
        -                "additionalProperties": false,
        -                "description": "Schema § 1.2 — the parameter snapshot the engine actually used.\n\nSplits user-supplied values from engine defaults so customers can see\nwhich numbers came from them and which the engine filled in. Every\ndefaulted parameter SHOULD have a corresponding entry in `assumptions`\n— the bridge layer enforces this when wrapping engine output.",
        -                "properties": {
        -                  "assumptions": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "engine_defaults": {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  "user_supplied": {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  }
        -                },
        -                "type": "object"
        -              },
        -              "standard": {
        -                "enum": [
        -                  "CESMM4",
        -                  "NRM2",
        -                  "SMM7",
        -                  "MMHW"
        -                ],
        -                "type": "string"
        -              },
        -              "text_summary": {
        -                "maxLength": 2000,
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "totals_summary": {
        -                "additionalProperties": false,
        -                "description": "Schema § 1.4 — totals_summary as a typed wrapper around the free-form dict.\n\nWire shape is a flat object (`{\"concrete_m3\": {...}, \"rebar_t\": {...}}`).\nWe model it as `RootModel`-equivalent via `model_config(extra=\"allow\")`\n+ a single `__root__`-style `entries` dict. Pydantic v2 recommends\n`RootModel` for free-form roots; using a wrapper class keeps the import\nsurface uniform with the rest of this module.",
        -                "properties": {
        -                  "entries": {
        -                    "additionalProperties": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.4 — single material/work-class total entry.",
        -                      "properties": {
        -                        "quantity": {
        -                          "minimum": 0,
        -                          "type": "number"
        -                        },
        -                        "unit": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "quantity",
        -                        "unit"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "object"
        -                  }
        -                },
        -                "type": "object"
        -              },
        -              "warnings": {
        -                "items": {
        -                  "additionalProperties": false,
        -                  "description": "Schema § 1.8 — a non-fatal geometry advisory (56th-fire T2).\n\nThe wire projection of the engine's `core.GeometryWarning`. Advisory only:\na warning NEVER changes a measured quantity — it flags geometry that is\nvalid but likely a mistake (e.g. a stale dependent-height default). Present\non BOTH tiers — a correctness/safety signal, not a paid feature.",
        -                  "properties": {
        -                    "affected_params": {
        -                      "items": {
        -                        "type": "string"
        -                      },
        -                      "type": "array"
        -                    },
        -                    "code": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "detail": {
        -                      "additionalProperties": {
        -                        "type": "number"
        -                      },
        -                      "type": "object"
        -                    },
        -                    "message": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "severity": {
        -                      "enum": [
        -                        "info",
        -                        "advisory",
        -                        "caution"
        -                      ],
        -                      "type": "string"
        -                    }
        -                  },
        -                  "required": [
        -                    "code",
        -                    "severity",
        -                    "message"
        -                  ],
        -                  "type": "object"
        -                },
        -                "type": "array"
        -              }
        -            },
        -            "required": [
        -              "assembly_slug",
        -              "standard",
        -              "parameters_used",
        -              "boq_rows",
        -              "totals_summary",
        -              "text_summary"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      },
        -      "error": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        -            "properties": {
        -              "code": {
        -                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        -                "enum": [
        -                  "RATE_LIMIT_EXCEEDED",
        -                  "TIER_INSUFFICIENT",
        -                  "INVALID_INPUT",
        -                  "SCHEMA_VERSION_MISMATCH",
        -                  "SCHEMA_INVARIANT_VIOLATION",
        -                  "UPSTREAM_TIMEOUT",
        -                  "BACKEND_FAILURE",
        -                  "IP_BLOCKED",
        -                  "RESOURCE_NOT_FOUND",
        -                  "RENDER_FAILURE",
        -                  "OCR_LOW_CONFIDENCE",
        -                  "MANUAL_REVIEW_REQUIRED",
        -                  "ACCEPTANCE_REQUIRED",
        -                  "INVALID_TOKEN"
        -                ],
        -                "type": "string"
        -              },
        -              "details": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "message": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "recoverable": {
        -                "type": "boolean"
        -              },
        -              "retry_after_seconds": {
        -                "anyOf": [
        -                  {
        -                    "minimum": 0,
        -                    "type": "integer"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              }
        -            },
        -            "required": [
        -              "code",
        -              "message",
        -              "recoverable"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      }
        -    },
        -    "required": [
        -      "_meta"
        -    ],
        -    "type": "object"
        -  },
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "_meta": {
        -        "additionalProperties": false,
        -        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        -        "properties": {
        -          "deliverables": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        -                "properties": {
        -                  "docx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "dxf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "expires_at": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  },
        -                  "pdf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "xlsx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "expires_at"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "document_id": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "issued_at": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "rate_limit_remaining": {
        -            "anyOf": [
        -              {
        -                "minimum": 0,
        -                "type": "integer"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "request_id": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "schema_version": {
        -            "const": "1.0.0",
        -            "default": "1.0.0",
        -            "type": "string"
        -          },
        -          "scope_boundary": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        -                "properties": {
        -                  "not_in_scope": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "produced": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "recommended_companions": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "type": "string"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "produced",
        -                  "not_in_scope"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tier": {
        -            "enum": [
        -              "free",
        -              "paid"
        -            ],
        -            "type": "string"
        -          },
        -          "tier_upgrade": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        -                "properties": {
        -                  "available_tiers": {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        -                      "properties": {
        -                        "billing": {
        -                          "enum": [
        -                            "one_off",
        -                            "monthly",
        -                            "annual"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "currency": {
        -                          "enum": [
        -                            "GBP",
        -                            "SGD",
        -                            "EUR",
        -                            "USD",
        -                            "CAD",
        -                            "AUD",
        -                            "NZD",
        -                            "MYR"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "display_name": {
        -                          "type": "string"
        -                        },
        -                        "price_local": {
        -                          "type": "number"
        -                        },
        -                        "tier_slug": {
        -                          "enum": [
        -                            "7_day_pass",
        -                            "solo",
        -                            "studio",
        -                            "practice"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "unlock_summary": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "tier_slug",
        -                        "display_name",
        -                        "price_local",
        -                        "currency",
        -                        "billing",
        -                        "unlock_summary"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "current_tier": {
        -                    "const": "free",
        -                    "default": "free",
        -                    "type": "string"
        -                  },
        -                  "pass_credit": {
        -                    "anyOf": [
        -                      {
        -                        "additionalProperties": false,
        -                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        -                        "properties": {
        -                          "amount_local": {
        -                            "type": "number"
        -                          },
        -                          "applies_to": {
        -                            "const": "solo_first_month",
        -                            "default": "solo_first_month",
        -                            "type": "string"
        -                          },
        -                          "currency": {
        -                            "type": "string"
        -                          },
        -                          "redeemable_until": {
        -                            "type": "string"
        -                          }
        -                        },
        -                        "required": [
        -                          "amount_local",
        -                          "currency",
        -                          "redeemable_until"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "pricing_url": {
        -                    "default": "https://civilquants.com/pricing",
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "available_tiers"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tos_url": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "upgrade_hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "warranty_disclaimer": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          }
        -        },
        -        "required": [
        -          "request_id",
        -          "issued_at",
        -          "tier"
        -        ],
        -        "type": "object"
        -      },
        -      "data": {
        -        "default": null,
        -        "title": "Data"
        -      },
        -      "error": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        -            "properties": {
        -              "code": {
        -                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        -                "enum": [
        -                  "RATE_LIMIT_EXCEEDED",
        -                  "TIER_INSUFFICIENT",
        -                  "INVALID_INPUT",
        -                  "SCHEMA_VERSION_MISMATCH",
        -                  "SCHEMA_INVARIANT_VIOLATION",
        -                  "UPSTREAM_TIMEOUT",
        -                  "BACKEND_FAILURE",
        -                  "IP_BLOCKED",
        -                  "RESOURCE_NOT_FOUND",
        -                  "RENDER_FAILURE",
        -                  "OCR_LOW_CONFIDENCE",
        -                  "MANUAL_REVIEW_REQUIRED",
        -                  "ACCEPTANCE_REQUIRED",
        -                  "INVALID_TOKEN"
        -                ],
        -                "type": "string"
        -              },
        -              "details": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "message": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "recoverable": {
        -                "type": "boolean"
        -              },
        -              "retry_after_seconds": {
        -                "anyOf": [
        -                  {
        -                    "minimum": 0,
        -                    "type": "integer"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              }
        -            },
        -            "required": [
        -              "code",
        -              "message",
        -              "recoverable"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      }
        -    },
        -    "required": [
        -      "_meta"
        -    ],
        -    "type": "object"
        -  }
        -]New value: +[
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "_meta": {
        +        "additionalProperties": false,
        +        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        +        "properties": {
        +          "deliverables": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        +                "properties": {
        +                  "docx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "dxf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "expires_at": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  },
        +                  "pdf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "xlsx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "expires_at"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "document_id": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "issued_at": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "output_mode": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Surfaces what a trimmed ``output_mode`` withheld from ``data``.\n\nA trimmed mode (``summary`` / ``boq`` / ``boq_with_backup``) withholds\nalready-computed fields to keep the chat payload small. The withheld value\nreads to a client agent as \"capability missing\" (the box-culvert \"geometry\nbuilder isn't firing\" scare) rather than \"pared for size\": ``drawing`` and\n``audit_trail`` appear as ``null``, ``boq_rows`` as an empty list ``[]``\n(its type forbids ``null``) — both indistinguishable from a genuine absent\nresult. This names the withheld fields and the exact mode that brings each\nback, so the value is unambiguous. Absent on the default ``full_json`` mode\n— nothing is withheld, nothing to point at.",
        +                "properties": {
        +                  "mode": {
        +                    "enum": [
        +                      "summary",
        +                      "boq",
        +                      "boq_with_backup"
        +                    ],
        +                    "type": "string"
        +                  },
        +                  "omitted_fields": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "minItems": 1,
        +                    "type": "array"
        +                  },
        +                  "retrieve_with": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "mode",
        +                  "omitted_fields",
        +                  "retrieve_with"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "rate_limit_remaining": {
        +            "anyOf": [
        +              {
        +                "minimum": 0,
        +                "type": "integer"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "request_id": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "schema_version": {
        +            "const": "1.0.0",
        +            "default": "1.0.0",
        +            "type": "string"
        +          },
        +          "scope_boundary": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        +                "properties": {
        +                  "not_in_scope": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "produced": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "recommended_companions": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "type": "string"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "produced",
        +                  "not_in_scope"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tier": {
        +            "enum": [
        +              "free",
        +              "paid"
        +            ],
        +            "type": "string"
        +          },
        +          "tier_upgrade": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        +                "properties": {
        +                  "available_tiers": {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        +                      "properties": {
        +                        "billing": {
        +                          "enum": [
        +                            "one_off",
        +                            "monthly",
        +                            "annual"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "currency": {
        +                          "enum": [
        +                            "GBP",
        +                            "SGD",
        +                            "EUR",
        +                            "USD",
        +                            "CAD",
        +                            "AUD",
        +                            "NZD",
        +                            "MYR"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "display_name": {
        +                          "type": "string"
        +                        },
        +                        "price_local": {
        +                          "type": "number"
        +                        },
        +                        "tier_slug": {
        +                          "enum": [
        +                            "7_day_pass",
        +                            "solo",
        +                            "studio",
        +                            "practice"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "unlock_summary": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "tier_slug",
        +                        "display_name",
        +                        "price_local",
        +                        "currency",
        +                        "billing",
        +                        "unlock_summary"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "current_tier": {
        +                    "const": "free",
        +                    "default": "free",
        +                    "type": "string"
        +                  },
        +                  "pass_credit": {
        +                    "anyOf": [
        +                      {
        +                        "additionalProperties": false,
        +                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        +                        "properties": {
        +                          "amount_local": {
        +                            "type": "number"
        +                          },
        +                          "applies_to": {
        +                            "const": "solo_first_month",
        +                            "default": "solo_first_month",
        +                            "type": "string"
        +                          },
        +                          "currency": {
        +                            "type": "string"
        +                          },
        +                          "redeemable_until": {
        +                            "type": "string"
        +                          }
        +                        },
        +                        "required": [
        +                          "amount_local",
        +                          "currency",
        +                          "redeemable_until"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "pricing_url": {
        +                    "default": "https://civilquants.com/pricing",
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "available_tiers"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tos_url": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "upgrade_hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "warranty_disclaimer": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          }
        +        },
        +        "required": [
        +          "request_id",
        +          "issued_at",
        +          "tier"
        +        ],
        +        "type": "object"
        +      },
        +      "data": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Schema § 1.1 — the typed payload returned inside `MCPResponse[ComputeResult]`.\n\nFree-tier responses omit `drawings` (the downloadable CAD artefact\npointers — the paid differentiator); the bridge enforces this. The\n`audit_trail` and the inline `drawing` preview are present on BOTH tiers\n(V1 ALIGN / 60th-fire D + C). `text_summary` is bounded to 2000 chars —\nkeeps the LLM-facing summary token-cheap and forces longer narrative into\nBoQ row descriptions where it belongs. `warnings` is the non-fatal\ngeometry advisory list (both tiers).",
        +            "properties": {
        +              "assembly_slug": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "audit_trail": {
        +                "anyOf": [
        +                  {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.7 — paid-tier audit-trail entry.\n\nOne entry per BoQ row; `boq_row_index` ties to the row position in\n`ComputeResult.boq_rows`. `derivation` is the human-readable formula\nwalk-through; `formula` is the optional formal expression.",
        +                      "properties": {
        +                        "boq_row_index": {
        +                          "minimum": 0,
        +                          "type": "integer"
        +                        },
        +                        "derivation": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "formula": {
        +                          "anyOf": [
        +                            {
        +                              "type": "string"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ],
        +                          "default": null
        +                        },
        +                        "id": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "parameters_referenced": {
        +                          "items": {
        +                            "type": "string"
        +                          },
        +                          "type": "array"
        +                        }
        +                      },
        +                      "required": [
        +                        "id",
        +                        "boq_row_index",
        +                        "derivation"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "boq_rows": {
        +                "items": {
        +                  "additionalProperties": false,
        +                  "description": "Schema § 1.3 — a single bill row in the requested standard's format.\n\n`description` is the non-verbatim functional description per spec § 13.9 /\n§ 15 invariant — NEVER reproduces a standard's verbatim clause text.\n`rate` / `amount` ship null because rates are commodity data the customer\nowns; the engine's job is the measurement, not the pricing.",
        +                  "properties": {
        +                    "amount": {
        +                      "anyOf": [
        +                        {
        +                          "type": "number"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "attribution": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "audit_id": {
        +                      "anyOf": [
        +                        {
        +                          "type": "string"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "description": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "quantity": {
        +                      "minimum": 0,
        +                      "type": "number"
        +                    },
        +                    "rate": {
        +                      "anyOf": [
        +                        {
        +                          "type": "number"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "unit": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "work_section": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    }
        +                  },
        +                  "required": [
        +                    "work_section",
        +                    "description",
        +                    "quantity",
        +                    "unit",
        +                    "attribution"
        +                  ],
        +                  "type": "object"
        +                },
        +                "type": "array"
        +              },
        +              "drawing": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": false,
        +                    "description": "Schema § 1.6a — inline server-rendered SVG preview of the geometry.\n\nThe MCP mirror of the web ``/compute`` response's ``drawing`` field\n(``api.schemas.compute.DrawingRef``): the same on-screen dimensioned\ndrawing both tiers see in the workspace, surfaced on the MCP compute\nresponse so a chat client can render it inline (60th-fire item C). This\nis the on-screen preview — present on BOTH tiers per the free/paid\nboundary; the downloadable CAD artefacts (DXF / dimensioned PDF) remain\nthe paid differentiator via the export tools.\n\nDefined here rather than importing ``DrawingRef`` because the web\n``schemas`` package imports back into this module (``schemas.render``),\nso reusing it would create an import cycle — the MCP wire contract keeps\nits own copy, the same pattern as ``BoQRow`` / ``DrawingReference``.",
        +                    "properties": {
        +                      "entity_count": {
        +                        "minimum": 0,
        +                        "type": "integer"
        +                      },
        +                      "svg_b64": {
        +                        "minLength": 1,
        +                        "type": "string"
        +                      },
        +                      "unit_of_drawing": {
        +                        "const": "m",
        +                        "default": "m",
        +                        "type": "string"
        +                      },
        +                      "viewbox_height": {
        +                        "exclusiveMinimum": 0,
        +                        "type": "number"
        +                      },
        +                      "viewbox_width": {
        +                        "exclusiveMinimum": 0,
        +                        "type": "number"
        +                      },
        +                      "viewbox_x": {
        +                        "type": "number"
        +                      },
        +                      "viewbox_y": {
        +                        "type": "number"
        +                      }
        +                    },
        +                    "required": [
        +                      "svg_b64",
        +                      "viewbox_x",
        +                      "viewbox_y",
        +                      "viewbox_width",
        +                      "viewbox_height",
        +                      "entity_count"
        +                    ],
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "drawings": {
        +                "anyOf": [
        +                  {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.6 — paid-tier drawing artefact pointer.\n\n`url` is an R2-signed URL; expiry is carried in `_meta.deliverables.expires_at`\non the envelope (not duplicated here). `layers` is DXF-only; PDF/SVG\ncallers omit it.",
        +                      "properties": {
        +                        "drawing_type": {
        +                          "enum": [
        +                            "section",
        +                            "plan",
        +                            "elevation",
        +                            "isometric",
        +                            "detail"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "format": {
        +                          "enum": [
        +                            "DXF",
        +                            "PDF",
        +                            "SVG"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "layers": {
        +                          "anyOf": [
        +                            {
        +                              "items": {
        +                                "type": "string"
        +                              },
        +                              "type": "array"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ],
        +                          "default": null
        +                        },
        +                        "scale": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "sheet_size": {
        +                          "enum": [
        +                            "A1",
        +                            "A2",
        +                            "A3",
        +                            "A4"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "url": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "drawing_type",
        +                        "format",
        +                        "url",
        +                        "sheet_size",
        +                        "scale"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "parameters_used": {
        +                "additionalProperties": false,
        +                "description": "Schema § 1.2 — the parameter snapshot the engine actually used.\n\nSplits user-supplied values from engine defaults so customers can see\nwhich numbers came from them and which the engine filled in. Every\ndefaulted parameter SHOULD have a corresponding entry in `assumptions`\n— the bridge layer enforces this when wrapping engine output.",
        +                "properties": {
        +                  "assumptions": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "engine_defaults": {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  "user_supplied": {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  }
        +                },
        +                "type": "object"
        +              },
        +              "standard": {
        +                "enum": [
        +                  "CESMM4",
        +                  "NRM2",
        +                  "SMM7",
        +                  "MMHW"
        +                ],
        +                "type": "string"
        +              },
        +              "text_summary": {
        +                "maxLength": 2000,
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "totals_summary": {
        +                "additionalProperties": false,
        +                "description": "Schema § 1.4 — totals_summary as a typed wrapper around the free-form dict.\n\nWire shape is a flat object (`{\"concrete_m3\": {...}, \"rebar_t\": {...}}`).\nWe model it as `RootModel`-equivalent via `model_config(extra=\"allow\")`\n+ a single `__root__`-style `entries` dict. Pydantic v2 recommends\n`RootModel` for free-form roots; using a wrapper class keeps the import\nsurface uniform with the rest of this module.",
        +                "properties": {
        +                  "entries": {
        +                    "additionalProperties": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.4 — single material/work-class total entry.",
        +                      "properties": {
        +                        "quantity": {
        +                          "minimum": 0,
        +                          "type": "number"
        +                        },
        +                        "unit": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "quantity",
        +                        "unit"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "object"
        +                  }
        +                },
        +                "type": "object"
        +              },
        +              "warnings": {
        +                "items": {
        +                  "additionalProperties": false,
        +                  "description": "Schema § 1.8 — a non-fatal geometry advisory (56th-fire T2).\n\nThe wire projection of the engine's `core.GeometryWarning`. Advisory only:\na warning NEVER changes a measured quantity — it flags geometry that is\nvalid but likely a mistake (e.g. a stale dependent-height default). Present\non BOTH tiers — a correctness/safety signal, not a paid feature.",
        +                  "properties": {
        +                    "affected_params": {
        +                      "items": {
        +                        "type": "string"
        +                      },
        +                      "type": "array"
        +                    },
        +                    "code": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "detail": {
        +                      "additionalProperties": {
        +                        "type": "number"
        +                      },
        +                      "type": "object"
        +                    },
        +                    "message": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "severity": {
        +                      "enum": [
        +                        "info",
        +                        "advisory",
        +                        "caution"
        +                      ],
        +                      "type": "string"
        +                    }
        +                  },
        +                  "required": [
        +                    "code",
        +                    "severity",
        +                    "message"
        +                  ],
        +                  "type": "object"
        +                },
        +                "type": "array"
        +              }
        +            },
        +            "required": [
        +              "assembly_slug",
        +              "standard",
        +              "parameters_used",
        +              "boq_rows",
        +              "totals_summary",
        +              "text_summary"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      },
        +      "error": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        +            "properties": {
        +              "code": {
        +                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        +                "enum": [
        +                  "RATE_LIMIT_EXCEEDED",
        +                  "TIER_INSUFFICIENT",
        +                  "INVALID_INPUT",
        +                  "SCHEMA_VERSION_MISMATCH",
        +                  "SCHEMA_INVARIANT_VIOLATION",
        +                  "UPSTREAM_TIMEOUT",
        +                  "BACKEND_FAILURE",
        +                  "IP_BLOCKED",
        +                  "RESOURCE_NOT_FOUND",
        +                  "RENDER_FAILURE",
        +                  "OCR_LOW_CONFIDENCE",
        +                  "MANUAL_REVIEW_REQUIRED",
        +                  "ACCEPTANCE_REQUIRED",
        +                  "INVALID_TOKEN"
        +                ],
        +                "type": "string"
        +              },
        +              "details": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "message": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "recoverable": {
        +                "type": "boolean"
        +              },
        +              "retry_after_seconds": {
        +                "anyOf": [
        +                  {
        +                    "minimum": 0,
        +                    "type": "integer"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              }
        +            },
        +            "required": [
        +              "code",
        +              "message",
        +              "recoverable"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      }
        +    },
        +    "required": [
        +      "_meta"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "_meta": {
        +        "additionalProperties": false,
        +        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        +        "properties": {
        +          "deliverables": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        +                "properties": {
        +                  "docx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "dxf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "expires_at": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  },
        +                  "pdf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "xlsx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "expires_at"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "document_id": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "issued_at": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "output_mode": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Surfaces what a trimmed ``output_mode`` withheld from ``data``.\n\nA trimmed mode (``summary`` / ``boq`` / ``boq_with_backup``) withholds\nalready-computed fields to keep the chat payload small. The withheld value\nreads to a client agent as \"capability missing\" (the box-culvert \"geometry\nbuilder isn't firing\" scare) rather than \"pared for size\": ``drawing`` and\n``audit_trail`` appear as ``null``, ``boq_rows`` as an empty list ``[]``\n(its type forbids ``null``) — both indistinguishable from a genuine absent\nresult. This names the withheld fields and the exact mode that brings each\nback, so the value is unambiguous. Absent on the default ``full_json`` mode\n— nothing is withheld, nothing to point at.",
        +                "properties": {
        +                  "mode": {
        +                    "enum": [
        +                      "summary",
        +                      "boq",
        +                      "boq_with_backup"
        +                    ],
        +                    "type": "string"
        +                  },
        +                  "omitted_fields": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "minItems": 1,
        +                    "type": "array"
        +                  },
        +                  "retrieve_with": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "mode",
        +                  "omitted_fields",
        +                  "retrieve_with"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "rate_limit_remaining": {
        +            "anyOf": [
        +              {
        +                "minimum": 0,
        +                "type": "integer"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "request_id": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "schema_version": {
        +            "const": "1.0.0",
        +            "default": "1.0.0",
        +            "type": "string"
        +          },
        +          "scope_boundary": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        +                "properties": {
        +                  "not_in_scope": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "produced": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "recommended_companions": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "type": "string"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "produced",
        +                  "not_in_scope"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tier": {
        +            "enum": [
        +              "free",
        +              "paid"
        +            ],
        +            "type": "string"
        +          },
        +          "tier_upgrade": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        +                "properties": {
        +                  "available_tiers": {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        +                      "properties": {
        +                        "billing": {
        +                          "enum": [
        +                            "one_off",
        +                            "monthly",
        +                            "annual"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "currency": {
        +                          "enum": [
        +                            "GBP",
        +                            "SGD",
        +                            "EUR",
        +                            "USD",
        +                            "CAD",
        +                            "AUD",
        +                            "NZD",
        +                            "MYR"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "display_name": {
        +                          "type": "string"
        +                        },
        +                        "price_local": {
        +                          "type": "number"
        +                        },
        +                        "tier_slug": {
        +                          "enum": [
        +                            "7_day_pass",
        +                            "solo",
        +                            "studio",
        +                            "practice"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "unlock_summary": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "tier_slug",
        +                        "display_name",
        +                        "price_local",
        +                        "currency",
        +                        "billing",
        +                        "unlock_summary"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "current_tier": {
        +                    "const": "free",
        +                    "default": "free",
        +                    "type": "string"
        +                  },
        +                  "pass_credit": {
        +                    "anyOf": [
        +                      {
        +                        "additionalProperties": false,
        +                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        +                        "properties": {
        +                          "amount_local": {
        +                            "type": "number"
        +                          },
        +                          "applies_to": {
        +                            "const": "solo_first_month",
        +                            "default": "solo_first_month",
        +                            "type": "string"
        +                          },
        +                          "currency": {
        +                            "type": "string"
        +                          },
        +                          "redeemable_until": {
        +                            "type": "string"
        +                          }
        +                        },
        +                        "required": [
        +                          "amount_local",
        +                          "currency",
        +                          "redeemable_until"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "pricing_url": {
        +                    "default": "https://civilquants.com/pricing",
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "available_tiers"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tos_url": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "upgrade_hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "warranty_disclaimer": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          }
        +        },
        +        "required": [
        +          "request_id",
        +          "issued_at",
        +          "tier"
        +        ],
        +        "type": "object"
        +      },
        +      "data": {
        +        "default": null,
        +        "title": "Data"
        +      },
        +      "error": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        +            "properties": {
        +              "code": {
        +                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        +                "enum": [
        +                  "RATE_LIMIT_EXCEEDED",
        +                  "TIER_INSUFFICIENT",
        +                  "INVALID_INPUT",
        +                  "SCHEMA_VERSION_MISMATCH",
        +                  "SCHEMA_INVARIANT_VIOLATION",
        +                  "UPSTREAM_TIMEOUT",
        +                  "BACKEND_FAILURE",
        +                  "IP_BLOCKED",
        +                  "RESOURCE_NOT_FOUND",
        +                  "RENDER_FAILURE",
        +                  "OCR_LOW_CONFIDENCE",
        +                  "MANUAL_REVIEW_REQUIRED",
        +                  "ACCEPTANCE_REQUIRED",
        +                  "INVALID_TOKEN"
        +                ],
        +                "type": "string"
        +              },
        +              "details": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "message": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "recoverable": {
        +                "type": "boolean"
        +              },
        +              "retry_after_seconds": {
        +                "anyOf": [
        +                  {
        +                    "minimum": 0,
        +                    "type": "integer"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              }
        +            },
        +            "required": [
        +              "code",
        +              "message",
        +              "recoverable"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      }
        +    },
        +    "required": [
        +      "_meta"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedcompute_pipe_bedding1 field changed
      • changedOutput schema / properties / result / anyOf
        Previous value: -[
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "_meta": {
        -        "additionalProperties": false,
        -        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        -        "properties": {
        -          "deliverables": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        -                "properties": {
        -                  "docx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "dxf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "expires_at": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  },
        -                  "pdf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "xlsx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "expires_at"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "document_id": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "issued_at": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "rate_limit_remaining": {
        -            "anyOf": [
        -              {
        -                "minimum": 0,
        -                "type": "integer"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "request_id": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "schema_version": {
        -            "const": "1.0.0",
        -            "default": "1.0.0",
        -            "type": "string"
        -          },
        -          "scope_boundary": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        -                "properties": {
        -                  "not_in_scope": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "produced": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "recommended_companions": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "type": "string"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "produced",
        -                  "not_in_scope"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tier": {
        -            "enum": [
        -              "free",
        -              "paid"
        -            ],
        -            "type": "string"
        -          },
        -          "tier_upgrade": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        -                "properties": {
        -                  "available_tiers": {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        -                      "properties": {
        -                        "billing": {
        -                          "enum": [
        -                            "one_off",
        -                            "monthly",
        -                            "annual"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "currency": {
        -                          "enum": [
        -                            "GBP",
        -                            "SGD",
        -                            "EUR",
        -                            "USD",
        -                            "CAD",
        -                            "AUD",
        -                            "NZD",
        -                            "MYR"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "display_name": {
        -                          "type": "string"
        -                        },
        -                        "price_local": {
        -                          "type": "number"
        -                        },
        -                        "tier_slug": {
        -                          "enum": [
        -                            "7_day_pass",
        -                            "solo",
        -                            "studio",
        -                            "practice"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "unlock_summary": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "tier_slug",
        -                        "display_name",
        -                        "price_local",
        -                        "currency",
        -                        "billing",
        -                        "unlock_summary"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "current_tier": {
        -                    "const": "free",
        -                    "default": "free",
        -                    "type": "string"
        -                  },
        -                  "pass_credit": {
        -                    "anyOf": [
        -                      {
        -                        "additionalProperties": false,
        -                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        -                        "properties": {
        -                          "amount_local": {
        -                            "type": "number"
        -                          },
        -                          "applies_to": {
        -                            "const": "solo_first_month",
        -                            "default": "solo_first_month",
        -                            "type": "string"
        -                          },
        -                          "currency": {
        -                            "type": "string"
        -                          },
        -                          "redeemable_until": {
        -                            "type": "string"
        -                          }
        -                        },
        -                        "required": [
        -                          "amount_local",
        -                          "currency",
        -                          "redeemable_until"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "pricing_url": {
        -                    "default": "https://civilquants.com/pricing",
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "available_tiers"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tos_url": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "upgrade_hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "warranty_disclaimer": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          }
        -        },
        -        "required": [
        -          "request_id",
        -          "issued_at",
        -          "tier"
        -        ],
        -        "type": "object"
        -      },
        -      "data": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Schema § 1.1 — the typed payload returned inside `MCPResponse[ComputeResult]`.\n\nFree-tier responses omit `drawings` (the downloadable CAD artefact\npointers — the paid differentiator); the bridge enforces this. The\n`audit_trail` and the inline `drawing` preview are present on BOTH tiers\n(V1 ALIGN / 60th-fire D + C). `text_summary` is bounded to 2000 chars —\nkeeps the LLM-facing summary token-cheap and forces longer narrative into\nBoQ row descriptions where it belongs. `warnings` is the non-fatal\ngeometry advisory list (both tiers).",
        -            "properties": {
        -              "assembly_slug": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "audit_trail": {
        -                "anyOf": [
        -                  {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.7 — paid-tier audit-trail entry.\n\nOne entry per BoQ row; `boq_row_index` ties to the row position in\n`ComputeResult.boq_rows`. `derivation` is the human-readable formula\nwalk-through; `formula` is the optional formal expression.",
        -                      "properties": {
        -                        "boq_row_index": {
        -                          "minimum": 0,
        -                          "type": "integer"
        -                        },
        -                        "derivation": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "formula": {
        -                          "anyOf": [
        -                            {
        -                              "type": "string"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ],
        -                          "default": null
        -                        },
        -                        "id": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "parameters_referenced": {
        -                          "items": {
        -                            "type": "string"
        -                          },
        -                          "type": "array"
        -                        }
        -                      },
        -                      "required": [
        -                        "id",
        -                        "boq_row_index",
        -                        "derivation"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "boq_rows": {
        -                "items": {
        -                  "additionalProperties": false,
        -                  "description": "Schema § 1.3 — a single bill row in the requested standard's format.\n\n`description` is the non-verbatim functional description per spec § 13.9 /\n§ 15 invariant — NEVER reproduces a standard's verbatim clause text.\n`rate` / `amount` ship null because rates are commodity data the customer\nowns; the engine's job is the measurement, not the pricing.",
        -                  "properties": {
        -                    "amount": {
        -                      "anyOf": [
        -                        {
        -                          "type": "number"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "attribution": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "audit_id": {
        -                      "anyOf": [
        -                        {
        -                          "type": "string"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "description": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "quantity": {
        -                      "minimum": 0,
        -                      "type": "number"
        -                    },
        -                    "rate": {
        -                      "anyOf": [
        -                        {
        -                          "type": "number"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "unit": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "work_section": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    }
        -                  },
        -                  "required": [
        -                    "work_section",
        -                    "description",
        -                    "quantity",
        -                    "unit",
        -                    "attribution"
        -                  ],
        -                  "type": "object"
        -                },
        -                "type": "array"
        -              },
        -              "drawing": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": false,
        -                    "description": "Schema § 1.6a — inline server-rendered SVG preview of the geometry.\n\nThe MCP mirror of the web ``/compute`` response's ``drawing`` field\n(``api.schemas.compute.DrawingRef``): the same on-screen dimensioned\ndrawing both tiers see in the workspace, surfaced on the MCP compute\nresponse so a chat client can render it inline (60th-fire item C). This\nis the on-screen preview — present on BOTH tiers per the free/paid\nboundary; the downloadable CAD artefacts (DXF / dimensioned PDF) remain\nthe paid differentiator via the export tools.\n\nDefined here rather than importing ``DrawingRef`` because the web\n``schemas`` package imports back into this module (``schemas.render``),\nso reusing it would create an import cycle — the MCP wire contract keeps\nits own copy, the same pattern as ``BoQRow`` / ``DrawingReference``.",
        -                    "properties": {
        -                      "entity_count": {
        -                        "minimum": 0,
        -                        "type": "integer"
        -                      },
        -                      "svg_b64": {
        -                        "minLength": 1,
        -                        "type": "string"
        -                      },
        -                      "unit_of_drawing": {
        -                        "const": "m",
        -                        "default": "m",
        -                        "type": "string"
        -                      },
        -                      "viewbox_height": {
        -                        "exclusiveMinimum": 0,
        -                        "type": "number"
        -                      },
        -                      "viewbox_width": {
        -                        "exclusiveMinimum": 0,
        -                        "type": "number"
        -                      },
        -                      "viewbox_x": {
        -                        "type": "number"
        -                      },
        -                      "viewbox_y": {
        -                        "type": "number"
        -                      }
        -                    },
        -                    "required": [
        -                      "svg_b64",
        -                      "viewbox_x",
        -                      "viewbox_y",
        -                      "viewbox_width",
        -                      "viewbox_height",
        -                      "entity_count"
        -                    ],
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "drawings": {
        -                "anyOf": [
        -                  {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.6 — paid-tier drawing artefact pointer.\n\n`url` is an R2-signed URL; expiry is carried in `_meta.deliverables.expires_at`\non the envelope (not duplicated here). `layers` is DXF-only; PDF/SVG\ncallers omit it.",
        -                      "properties": {
        -                        "drawing_type": {
        -                          "enum": [
        -                            "section",
        -                            "plan",
        -                            "elevation",
        -                            "isometric",
        -                            "detail"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "format": {
        -                          "enum": [
        -                            "DXF",
        -                            "PDF",
        -                            "SVG"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "layers": {
        -                          "anyOf": [
        -                            {
        -                              "items": {
        -                                "type": "string"
        -                              },
        -                              "type": "array"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ],
        -                          "default": null
        -                        },
        -                        "scale": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "sheet_size": {
        -                          "enum": [
        -                            "A1",
        -                            "A2",
        -                            "A3",
        -                            "A4"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "url": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "drawing_type",
        -                        "format",
        -                        "url",
        -                        "sheet_size",
        -                        "scale"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "parameters_used": {
        -                "additionalProperties": false,
        -                "description": "Schema § 1.2 — the parameter snapshot the engine actually used.\n\nSplits user-supplied values from engine defaults so customers can see\nwhich numbers came from them and which the engine filled in. Every\ndefaulted parameter SHOULD have a corresponding entry in `assumptions`\n— the bridge layer enforces this when wrapping engine output.",
        -                "properties": {
        -                  "assumptions": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "engine_defaults": {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  "user_supplied": {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  }
        -                },
        -                "type": "object"
        -              },
        -              "standard": {
        -                "enum": [
        -                  "CESMM4",
        -                  "NRM2",
        -                  "SMM7",
        -                  "MMHW"
        -                ],
        -                "type": "string"
        -              },
        -              "text_summary": {
        -                "maxLength": 2000,
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "totals_summary": {
        -                "additionalProperties": false,
        -                "description": "Schema § 1.4 — totals_summary as a typed wrapper around the free-form dict.\n\nWire shape is a flat object (`{\"concrete_m3\": {...}, \"rebar_t\": {...}}`).\nWe model it as `RootModel`-equivalent via `model_config(extra=\"allow\")`\n+ a single `__root__`-style `entries` dict. Pydantic v2 recommends\n`RootModel` for free-form roots; using a wrapper class keeps the import\nsurface uniform with the rest of this module.",
        -                "properties": {
        -                  "entries": {
        -                    "additionalProperties": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.4 — single material/work-class total entry.",
        -                      "properties": {
        -                        "quantity": {
        -                          "minimum": 0,
        -                          "type": "number"
        -                        },
        -                        "unit": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "quantity",
        -                        "unit"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "object"
        -                  }
        -                },
        -                "type": "object"
        -              },
        -              "warnings": {
        -                "items": {
        -                  "additionalProperties": false,
        -                  "description": "Schema § 1.8 — a non-fatal geometry advisory (56th-fire T2).\n\nThe wire projection of the engine's `core.GeometryWarning`. Advisory only:\na warning NEVER changes a measured quantity — it flags geometry that is\nvalid but likely a mistake (e.g. a stale dependent-height default). Present\non BOTH tiers — a correctness/safety signal, not a paid feature.",
        -                  "properties": {
        -                    "affected_params": {
        -                      "items": {
        -                        "type": "string"
        -                      },
        -                      "type": "array"
        -                    },
        -                    "code": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "detail": {
        -                      "additionalProperties": {
        -                        "type": "number"
        -                      },
        -                      "type": "object"
        -                    },
        -                    "message": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "severity": {
        -                      "enum": [
        -                        "info",
        -                        "advisory",
        -                        "caution"
        -                      ],
        -                      "type": "string"
        -                    }
        -                  },
        -                  "required": [
        -                    "code",
        -                    "severity",
        -                    "message"
        -                  ],
        -                  "type": "object"
        -                },
        -                "type": "array"
        -              }
        -            },
        -            "required": [
        -              "assembly_slug",
        -              "standard",
        -              "parameters_used",
        -              "boq_rows",
        -              "totals_summary",
        -              "text_summary"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      },
        -      "error": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        -            "properties": {
        -              "code": {
        -                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        -                "enum": [
        -                  "RATE_LIMIT_EXCEEDED",
        -                  "TIER_INSUFFICIENT",
        -                  "INVALID_INPUT",
        -                  "SCHEMA_VERSION_MISMATCH",
        -                  "SCHEMA_INVARIANT_VIOLATION",
        -                  "UPSTREAM_TIMEOUT",
        -                  "BACKEND_FAILURE",
        -                  "IP_BLOCKED",
        -                  "RESOURCE_NOT_FOUND",
        -                  "RENDER_FAILURE",
        -                  "OCR_LOW_CONFIDENCE",
        -                  "MANUAL_REVIEW_REQUIRED",
        -                  "ACCEPTANCE_REQUIRED",
        -                  "INVALID_TOKEN"
        -                ],
        -                "type": "string"
        -              },
        -              "details": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "message": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "recoverable": {
        -                "type": "boolean"
        -              },
        -              "retry_after_seconds": {
        -                "anyOf": [
        -                  {
        -                    "minimum": 0,
        -                    "type": "integer"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              }
        -            },
        -            "required": [
        -              "code",
        -              "message",
        -              "recoverable"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      }
        -    },
        -    "required": [
        -      "_meta"
        -    ],
        -    "type": "object"
        -  },
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "_meta": {
        -        "additionalProperties": false,
        -        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        -        "properties": {
        -          "deliverables": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        -                "properties": {
        -                  "docx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "dxf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "expires_at": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  },
        -                  "pdf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "xlsx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "expires_at"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "document_id": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "issued_at": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "rate_limit_remaining": {
        -            "anyOf": [
        -              {
        -                "minimum": 0,
        -                "type": "integer"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "request_id": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "schema_version": {
        -            "const": "1.0.0",
        -            "default": "1.0.0",
        -            "type": "string"
        -          },
        -          "scope_boundary": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        -                "properties": {
        -                  "not_in_scope": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "produced": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "recommended_companions": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "type": "string"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "produced",
        -                  "not_in_scope"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tier": {
        -            "enum": [
        -              "free",
        -              "paid"
        -            ],
        -            "type": "string"
        -          },
        -          "tier_upgrade": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        -                "properties": {
        -                  "available_tiers": {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        -                      "properties": {
        -                        "billing": {
        -                          "enum": [
        -                            "one_off",
        -                            "monthly",
        -                            "annual"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "currency": {
        -                          "enum": [
        -                            "GBP",
        -                            "SGD",
        -                            "EUR",
        -                            "USD",
        -                            "CAD",
        -                            "AUD",
        -                            "NZD",
        -                            "MYR"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "display_name": {
        -                          "type": "string"
        -                        },
        -                        "price_local": {
        -                          "type": "number"
        -                        },
        -                        "tier_slug": {
        -                          "enum": [
        -                            "7_day_pass",
        -                            "solo",
        -                            "studio",
        -                            "practice"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "unlock_summary": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "tier_slug",
        -                        "display_name",
        -                        "price_local",
        -                        "currency",
        -                        "billing",
        -                        "unlock_summary"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "current_tier": {
        -                    "const": "free",
        -                    "default": "free",
        -                    "type": "string"
        -                  },
        -                  "pass_credit": {
        -                    "anyOf": [
        -                      {
        -                        "additionalProperties": false,
        -                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        -                        "properties": {
        -                          "amount_local": {
        -                            "type": "number"
        -                          },
        -                          "applies_to": {
        -                            "const": "solo_first_month",
        -                            "default": "solo_first_month",
        -                            "type": "string"
        -                          },
        -                          "currency": {
        -                            "type": "string"
        -                          },
        -                          "redeemable_until": {
        -                            "type": "string"
        -                          }
        -                        },
        -                        "required": [
        -                          "amount_local",
        -                          "currency",
        -                          "redeemable_until"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "pricing_url": {
        -                    "default": "https://civilquants.com/pricing",
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "available_tiers"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tos_url": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "upgrade_hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "warranty_disclaimer": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          }
        -        },
        -        "required": [
        -          "request_id",
        -          "issued_at",
        -          "tier"
        -        ],
        -        "type": "object"
        -      },
        -      "data": {
        -        "default": null,
        -        "title": "Data"
        -      },
        -      "error": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        -            "properties": {
        -              "code": {
        -                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        -                "enum": [
        -                  "RATE_LIMIT_EXCEEDED",
        -                  "TIER_INSUFFICIENT",
        -                  "INVALID_INPUT",
        -                  "SCHEMA_VERSION_MISMATCH",
        -                  "SCHEMA_INVARIANT_VIOLATION",
        -                  "UPSTREAM_TIMEOUT",
        -                  "BACKEND_FAILURE",
        -                  "IP_BLOCKED",
        -                  "RESOURCE_NOT_FOUND",
        -                  "RENDER_FAILURE",
        -                  "OCR_LOW_CONFIDENCE",
        -                  "MANUAL_REVIEW_REQUIRED",
        -                  "ACCEPTANCE_REQUIRED",
        -                  "INVALID_TOKEN"
        -                ],
        -                "type": "string"
        -              },
        -              "details": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "message": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "recoverable": {
        -                "type": "boolean"
        -              },
        -              "retry_after_seconds": {
        -                "anyOf": [
        -                  {
        -                    "minimum": 0,
        -                    "type": "integer"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              }
        -            },
        -            "required": [
        -              "code",
        -              "message",
        -              "recoverable"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      }
        -    },
        -    "required": [
        -      "_meta"
        -    ],
        -    "type": "object"
        -  }
        -]New value: +[
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "_meta": {
        +        "additionalProperties": false,
        +        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        +        "properties": {
        +          "deliverables": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        +                "properties": {
        +                  "docx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "dxf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "expires_at": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  },
        +                  "pdf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "xlsx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "expires_at"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "document_id": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "issued_at": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "output_mode": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Surfaces what a trimmed ``output_mode`` withheld from ``data``.\n\nA trimmed mode (``summary`` / ``boq`` / ``boq_with_backup``) withholds\nalready-computed fields to keep the chat payload small. The withheld value\nreads to a client agent as \"capability missing\" (the box-culvert \"geometry\nbuilder isn't firing\" scare) rather than \"pared for size\": ``drawing`` and\n``audit_trail`` appear as ``null``, ``boq_rows`` as an empty list ``[]``\n(its type forbids ``null``) — both indistinguishable from a genuine absent\nresult. This names the withheld fields and the exact mode that brings each\nback, so the value is unambiguous. Absent on the default ``full_json`` mode\n— nothing is withheld, nothing to point at.",
        +                "properties": {
        +                  "mode": {
        +                    "enum": [
        +                      "summary",
        +                      "boq",
        +                      "boq_with_backup"
        +                    ],
        +                    "type": "string"
        +                  },
        +                  "omitted_fields": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "minItems": 1,
        +                    "type": "array"
        +                  },
        +                  "retrieve_with": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "mode",
        +                  "omitted_fields",
        +                  "retrieve_with"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "rate_limit_remaining": {
        +            "anyOf": [
        +              {
        +                "minimum": 0,
        +                "type": "integer"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "request_id": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "schema_version": {
        +            "const": "1.0.0",
        +            "default": "1.0.0",
        +            "type": "string"
        +          },
        +          "scope_boundary": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        +                "properties": {
        +                  "not_in_scope": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "produced": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "recommended_companions": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "type": "string"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "produced",
        +                  "not_in_scope"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tier": {
        +            "enum": [
        +              "free",
        +              "paid"
        +            ],
        +            "type": "string"
        +          },
        +          "tier_upgrade": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        +                "properties": {
        +                  "available_tiers": {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        +                      "properties": {
        +                        "billing": {
        +                          "enum": [
        +                            "one_off",
        +                            "monthly",
        +                            "annual"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "currency": {
        +                          "enum": [
        +                            "GBP",
        +                            "SGD",
        +                            "EUR",
        +                            "USD",
        +                            "CAD",
        +                            "AUD",
        +                            "NZD",
        +                            "MYR"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "display_name": {
        +                          "type": "string"
        +                        },
        +                        "price_local": {
        +                          "type": "number"
        +                        },
        +                        "tier_slug": {
        +                          "enum": [
        +                            "7_day_pass",
        +                            "solo",
        +                            "studio",
        +                            "practice"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "unlock_summary": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "tier_slug",
        +                        "display_name",
        +                        "price_local",
        +                        "currency",
        +                        "billing",
        +                        "unlock_summary"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "current_tier": {
        +                    "const": "free",
        +                    "default": "free",
        +                    "type": "string"
        +                  },
        +                  "pass_credit": {
        +                    "anyOf": [
        +                      {
        +                        "additionalProperties": false,
        +                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        +                        "properties": {
        +                          "amount_local": {
        +                            "type": "number"
        +                          },
        +                          "applies_to": {
        +                            "const": "solo_first_month",
        +                            "default": "solo_first_month",
        +                            "type": "string"
        +                          },
        +                          "currency": {
        +                            "type": "string"
        +                          },
        +                          "redeemable_until": {
        +                            "type": "string"
        +                          }
        +                        },
        +                        "required": [
        +                          "amount_local",
        +                          "currency",
        +                          "redeemable_until"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "pricing_url": {
        +                    "default": "https://civilquants.com/pricing",
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "available_tiers"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tos_url": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "upgrade_hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "warranty_disclaimer": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          }
        +        },
        +        "required": [
        +          "request_id",
        +          "issued_at",
        +          "tier"
        +        ],
        +        "type": "object"
        +      },
        +      "data": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Schema § 1.1 — the typed payload returned inside `MCPResponse[ComputeResult]`.\n\nFree-tier responses omit `drawings` (the downloadable CAD artefact\npointers — the paid differentiator); the bridge enforces this. The\n`audit_trail` and the inline `drawing` preview are present on BOTH tiers\n(V1 ALIGN / 60th-fire D + C). `text_summary` is bounded to 2000 chars —\nkeeps the LLM-facing summary token-cheap and forces longer narrative into\nBoQ row descriptions where it belongs. `warnings` is the non-fatal\ngeometry advisory list (both tiers).",
        +            "properties": {
        +              "assembly_slug": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "audit_trail": {
        +                "anyOf": [
        +                  {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.7 — paid-tier audit-trail entry.\n\nOne entry per BoQ row; `boq_row_index` ties to the row position in\n`ComputeResult.boq_rows`. `derivation` is the human-readable formula\nwalk-through; `formula` is the optional formal expression.",
        +                      "properties": {
        +                        "boq_row_index": {
        +                          "minimum": 0,
        +                          "type": "integer"
        +                        },
        +                        "derivation": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "formula": {
        +                          "anyOf": [
        +                            {
        +                              "type": "string"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ],
        +                          "default": null
        +                        },
        +                        "id": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "parameters_referenced": {
        +                          "items": {
        +                            "type": "string"
        +                          },
        +                          "type": "array"
        +                        }
        +                      },
        +                      "required": [
        +                        "id",
        +                        "boq_row_index",
        +                        "derivation"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "boq_rows": {
        +                "items": {
        +                  "additionalProperties": false,
        +                  "description": "Schema § 1.3 — a single bill row in the requested standard's format.\n\n`description` is the non-verbatim functional description per spec § 13.9 /\n§ 15 invariant — NEVER reproduces a standard's verbatim clause text.\n`rate` / `amount` ship null because rates are commodity data the customer\nowns; the engine's job is the measurement, not the pricing.",
        +                  "properties": {
        +                    "amount": {
        +                      "anyOf": [
        +                        {
        +                          "type": "number"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "attribution": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "audit_id": {
        +                      "anyOf": [
        +                        {
        +                          "type": "string"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "description": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "quantity": {
        +                      "minimum": 0,
        +                      "type": "number"
        +                    },
        +                    "rate": {
        +                      "anyOf": [
        +                        {
        +                          "type": "number"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "unit": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "work_section": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    }
        +                  },
        +                  "required": [
        +                    "work_section",
        +                    "description",
        +                    "quantity",
        +                    "unit",
        +                    "attribution"
        +                  ],
        +                  "type": "object"
        +                },
        +                "type": "array"
        +              },
        +              "drawing": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": false,
        +                    "description": "Schema § 1.6a — inline server-rendered SVG preview of the geometry.\n\nThe MCP mirror of the web ``/compute`` response's ``drawing`` field\n(``api.schemas.compute.DrawingRef``): the same on-screen dimensioned\ndrawing both tiers see in the workspace, surfaced on the MCP compute\nresponse so a chat client can render it inline (60th-fire item C). This\nis the on-screen preview — present on BOTH tiers per the free/paid\nboundary; the downloadable CAD artefacts (DXF / dimensioned PDF) remain\nthe paid differentiator via the export tools.\n\nDefined here rather than importing ``DrawingRef`` because the web\n``schemas`` package imports back into this module (``schemas.render``),\nso reusing it would create an import cycle — the MCP wire contract keeps\nits own copy, the same pattern as ``BoQRow`` / ``DrawingReference``.",
        +                    "properties": {
        +                      "entity_count": {
        +                        "minimum": 0,
        +                        "type": "integer"
        +                      },
        +                      "svg_b64": {
        +                        "minLength": 1,
        +                        "type": "string"
        +                      },
        +                      "unit_of_drawing": {
        +                        "const": "m",
        +                        "default": "m",
        +                        "type": "string"
        +                      },
        +                      "viewbox_height": {
        +                        "exclusiveMinimum": 0,
        +                        "type": "number"
        +                      },
        +                      "viewbox_width": {
        +                        "exclusiveMinimum": 0,
        +                        "type": "number"
        +                      },
        +                      "viewbox_x": {
        +                        "type": "number"
        +                      },
        +                      "viewbox_y": {
        +                        "type": "number"
        +                      }
        +                    },
        +                    "required": [
        +                      "svg_b64",
        +                      "viewbox_x",
        +                      "viewbox_y",
        +                      "viewbox_width",
        +                      "viewbox_height",
        +                      "entity_count"
        +                    ],
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "drawings": {
        +                "anyOf": [
        +                  {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.6 — paid-tier drawing artefact pointer.\n\n`url` is an R2-signed URL; expiry is carried in `_meta.deliverables.expires_at`\non the envelope (not duplicated here). `layers` is DXF-only; PDF/SVG\ncallers omit it.",
        +                      "properties": {
        +                        "drawing_type": {
        +                          "enum": [
        +                            "section",
        +                            "plan",
        +                            "elevation",
        +                            "isometric",
        +                            "detail"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "format": {
        +                          "enum": [
        +                            "DXF",
        +                            "PDF",
        +                            "SVG"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "layers": {
        +                          "anyOf": [
        +                            {
        +                              "items": {
        +                                "type": "string"
        +                              },
        +                              "type": "array"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ],
        +                          "default": null
        +                        },
        +                        "scale": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "sheet_size": {
        +                          "enum": [
        +                            "A1",
        +                            "A2",
        +                            "A3",
        +                            "A4"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "url": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "drawing_type",
        +                        "format",
        +                        "url",
        +                        "sheet_size",
        +                        "scale"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "parameters_used": {
        +                "additionalProperties": false,
        +                "description": "Schema § 1.2 — the parameter snapshot the engine actually used.\n\nSplits user-supplied values from engine defaults so customers can see\nwhich numbers came from them and which the engine filled in. Every\ndefaulted parameter SHOULD have a corresponding entry in `assumptions`\n— the bridge layer enforces this when wrapping engine output.",
        +                "properties": {
        +                  "assumptions": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "engine_defaults": {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  "user_supplied": {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  }
        +                },
        +                "type": "object"
        +              },
        +              "standard": {
        +                "enum": [
        +                  "CESMM4",
        +                  "NRM2",
        +                  "SMM7",
        +                  "MMHW"
        +                ],
        +                "type": "string"
        +              },
        +              "text_summary": {
        +                "maxLength": 2000,
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "totals_summary": {
        +                "additionalProperties": false,
        +                "description": "Schema § 1.4 — totals_summary as a typed wrapper around the free-form dict.\n\nWire shape is a flat object (`{\"concrete_m3\": {...}, \"rebar_t\": {...}}`).\nWe model it as `RootModel`-equivalent via `model_config(extra=\"allow\")`\n+ a single `__root__`-style `entries` dict. Pydantic v2 recommends\n`RootModel` for free-form roots; using a wrapper class keeps the import\nsurface uniform with the rest of this module.",
        +                "properties": {
        +                  "entries": {
        +                    "additionalProperties": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.4 — single material/work-class total entry.",
        +                      "properties": {
        +                        "quantity": {
        +                          "minimum": 0,
        +                          "type": "number"
        +                        },
        +                        "unit": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "quantity",
        +                        "unit"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "object"
        +                  }
        +                },
        +                "type": "object"
        +              },
        +              "warnings": {
        +                "items": {
        +                  "additionalProperties": false,
        +                  "description": "Schema § 1.8 — a non-fatal geometry advisory (56th-fire T2).\n\nThe wire projection of the engine's `core.GeometryWarning`. Advisory only:\na warning NEVER changes a measured quantity — it flags geometry that is\nvalid but likely a mistake (e.g. a stale dependent-height default). Present\non BOTH tiers — a correctness/safety signal, not a paid feature.",
        +                  "properties": {
        +                    "affected_params": {
        +                      "items": {
        +                        "type": "string"
        +                      },
        +                      "type": "array"
        +                    },
        +                    "code": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "detail": {
        +                      "additionalProperties": {
        +                        "type": "number"
        +                      },
        +                      "type": "object"
        +                    },
        +                    "message": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "severity": {
        +                      "enum": [
        +                        "info",
        +                        "advisory",
        +                        "caution"
        +                      ],
        +                      "type": "string"
        +                    }
        +                  },
        +                  "required": [
        +                    "code",
        +                    "severity",
        +                    "message"
        +                  ],
        +                  "type": "object"
        +                },
        +                "type": "array"
        +              }
        +            },
        +            "required": [
        +              "assembly_slug",
        +              "standard",
        +              "parameters_used",
        +              "boq_rows",
        +              "totals_summary",
        +              "text_summary"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      },
        +      "error": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        +            "properties": {
        +              "code": {
        +                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        +                "enum": [
        +                  "RATE_LIMIT_EXCEEDED",
        +                  "TIER_INSUFFICIENT",
        +                  "INVALID_INPUT",
        +                  "SCHEMA_VERSION_MISMATCH",
        +                  "SCHEMA_INVARIANT_VIOLATION",
        +                  "UPSTREAM_TIMEOUT",
        +                  "BACKEND_FAILURE",
        +                  "IP_BLOCKED",
        +                  "RESOURCE_NOT_FOUND",
        +                  "RENDER_FAILURE",
        +                  "OCR_LOW_CONFIDENCE",
        +                  "MANUAL_REVIEW_REQUIRED",
        +                  "ACCEPTANCE_REQUIRED",
        +                  "INVALID_TOKEN"
        +                ],
        +                "type": "string"
        +              },
        +              "details": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "message": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "recoverable": {
        +                "type": "boolean"
        +              },
        +              "retry_after_seconds": {
        +                "anyOf": [
        +                  {
        +                    "minimum": 0,
        +                    "type": "integer"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              }
        +            },
        +            "required": [
        +              "code",
        +              "message",
        +              "recoverable"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      }
        +    },
        +    "required": [
        +      "_meta"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "_meta": {
        +        "additionalProperties": false,
        +        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        +        "properties": {
        +          "deliverables": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        +                "properties": {
        +                  "docx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "dxf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "expires_at": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  },
        +                  "pdf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "xlsx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "expires_at"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "document_id": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "issued_at": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "output_mode": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Surfaces what a trimmed ``output_mode`` withheld from ``data``.\n\nA trimmed mode (``summary`` / ``boq`` / ``boq_with_backup``) withholds\nalready-computed fields to keep the chat payload small. The withheld value\nreads to a client agent as \"capability missing\" (the box-culvert \"geometry\nbuilder isn't firing\" scare) rather than \"pared for size\": ``drawing`` and\n``audit_trail`` appear as ``null``, ``boq_rows`` as an empty list ``[]``\n(its type forbids ``null``) — both indistinguishable from a genuine absent\nresult. This names the withheld fields and the exact mode that brings each\nback, so the value is unambiguous. Absent on the default ``full_json`` mode\n— nothing is withheld, nothing to point at.",
        +                "properties": {
        +                  "mode": {
        +                    "enum": [
        +                      "summary",
        +                      "boq",
        +                      "boq_with_backup"
        +                    ],
        +                    "type": "string"
        +                  },
        +                  "omitted_fields": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "minItems": 1,
        +                    "type": "array"
        +                  },
        +                  "retrieve_with": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "mode",
        +                  "omitted_fields",
        +                  "retrieve_with"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "rate_limit_remaining": {
        +            "anyOf": [
        +              {
        +                "minimum": 0,
        +                "type": "integer"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "request_id": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "schema_version": {
        +            "const": "1.0.0",
        +            "default": "1.0.0",
        +            "type": "string"
        +          },
        +          "scope_boundary": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        +                "properties": {
        +                  "not_in_scope": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "produced": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "recommended_companions": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "type": "string"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "produced",
        +                  "not_in_scope"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tier": {
        +            "enum": [
        +              "free",
        +              "paid"
        +            ],
        +            "type": "string"
        +          },
        +          "tier_upgrade": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        +                "properties": {
        +                  "available_tiers": {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        +                      "properties": {
        +                        "billing": {
        +                          "enum": [
        +                            "one_off",
        +                            "monthly",
        +                            "annual"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "currency": {
        +                          "enum": [
        +                            "GBP",
        +                            "SGD",
        +                            "EUR",
        +                            "USD",
        +                            "CAD",
        +                            "AUD",
        +                            "NZD",
        +                            "MYR"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "display_name": {
        +                          "type": "string"
        +                        },
        +                        "price_local": {
        +                          "type": "number"
        +                        },
        +                        "tier_slug": {
        +                          "enum": [
        +                            "7_day_pass",
        +                            "solo",
        +                            "studio",
        +                            "practice"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "unlock_summary": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "tier_slug",
        +                        "display_name",
        +                        "price_local",
        +                        "currency",
        +                        "billing",
        +                        "unlock_summary"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "current_tier": {
        +                    "const": "free",
        +                    "default": "free",
        +                    "type": "string"
        +                  },
        +                  "pass_credit": {
        +                    "anyOf": [
        +                      {
        +                        "additionalProperties": false,
        +                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        +                        "properties": {
        +                          "amount_local": {
        +                            "type": "number"
        +                          },
        +                          "applies_to": {
        +                            "const": "solo_first_month",
        +                            "default": "solo_first_month",
        +                            "type": "string"
        +                          },
        +                          "currency": {
        +                            "type": "string"
        +                          },
        +                          "redeemable_until": {
        +                            "type": "string"
        +                          }
        +                        },
        +                        "required": [
        +                          "amount_local",
        +                          "currency",
        +                          "redeemable_until"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "pricing_url": {
        +                    "default": "https://civilquants.com/pricing",
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "available_tiers"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tos_url": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "upgrade_hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "warranty_disclaimer": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          }
        +        },
        +        "required": [
        +          "request_id",
        +          "issued_at",
        +          "tier"
        +        ],
        +        "type": "object"
        +      },
        +      "data": {
        +        "default": null,
        +        "title": "Data"
        +      },
        +      "error": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        +            "properties": {
        +              "code": {
        +                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        +                "enum": [
        +                  "RATE_LIMIT_EXCEEDED",
        +                  "TIER_INSUFFICIENT",
        +                  "INVALID_INPUT",
        +                  "SCHEMA_VERSION_MISMATCH",
        +                  "SCHEMA_INVARIANT_VIOLATION",
        +                  "UPSTREAM_TIMEOUT",
        +                  "BACKEND_FAILURE",
        +                  "IP_BLOCKED",
        +                  "RESOURCE_NOT_FOUND",
        +                  "RENDER_FAILURE",
        +                  "OCR_LOW_CONFIDENCE",
        +                  "MANUAL_REVIEW_REQUIRED",
        +                  "ACCEPTANCE_REQUIRED",
        +                  "INVALID_TOKEN"
        +                ],
        +                "type": "string"
        +              },
        +              "details": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "message": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "recoverable": {
        +                "type": "boolean"
        +              },
        +              "retry_after_seconds": {
        +                "anyOf": [
        +                  {
        +                    "minimum": 0,
        +                    "type": "integer"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              }
        +            },
        +            "required": [
        +              "code",
        +              "message",
        +              "recoverable"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      }
        +    },
        +    "required": [
        +      "_meta"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedcompute_pipework_testing1 field changed
      • changedOutput schema / properties / result / anyOf
        Previous value: -[
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "_meta": {
        -        "additionalProperties": false,
        -        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        -        "properties": {
        -          "deliverables": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        -                "properties": {
        -                  "docx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "dxf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "expires_at": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  },
        -                  "pdf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "xlsx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "expires_at"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "document_id": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "issued_at": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "rate_limit_remaining": {
        -            "anyOf": [
        -              {
        -                "minimum": 0,
        -                "type": "integer"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "request_id": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "schema_version": {
        -            "const": "1.0.0",
        -            "default": "1.0.0",
        -            "type": "string"
        -          },
        -          "scope_boundary": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        -                "properties": {
        -                  "not_in_scope": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "produced": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "recommended_companions": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "type": "string"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "produced",
        -                  "not_in_scope"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tier": {
        -            "enum": [
        -              "free",
        -              "paid"
        -            ],
        -            "type": "string"
        -          },
        -          "tier_upgrade": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        -                "properties": {
        -                  "available_tiers": {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        -                      "properties": {
        -                        "billing": {
        -                          "enum": [
        -                            "one_off",
        -                            "monthly",
        -                            "annual"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "currency": {
        -                          "enum": [
        -                            "GBP",
        -                            "SGD",
        -                            "EUR",
        -                            "USD",
        -                            "CAD",
        -                            "AUD",
        -                            "NZD",
        -                            "MYR"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "display_name": {
        -                          "type": "string"
        -                        },
        -                        "price_local": {
        -                          "type": "number"
        -                        },
        -                        "tier_slug": {
        -                          "enum": [
        -                            "7_day_pass",
        -                            "solo",
        -                            "studio",
        -                            "practice"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "unlock_summary": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "tier_slug",
        -                        "display_name",
        -                        "price_local",
        -                        "currency",
        -                        "billing",
        -                        "unlock_summary"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "current_tier": {
        -                    "const": "free",
        -                    "default": "free",
        -                    "type": "string"
        -                  },
        -                  "pass_credit": {
        -                    "anyOf": [
        -                      {
        -                        "additionalProperties": false,
        -                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        -                        "properties": {
        -                          "amount_local": {
        -                            "type": "number"
        -                          },
        -                          "applies_to": {
        -                            "const": "solo_first_month",
        -                            "default": "solo_first_month",
        -                            "type": "string"
        -                          },
        -                          "currency": {
        -                            "type": "string"
        -                          },
        -                          "redeemable_until": {
        -                            "type": "string"
        -                          }
        -                        },
        -                        "required": [
        -                          "amount_local",
        -                          "currency",
        -                          "redeemable_until"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "pricing_url": {
        -                    "default": "https://civilquants.com/pricing",
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "available_tiers"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tos_url": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "upgrade_hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "warranty_disclaimer": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          }
        -        },
        -        "required": [
        -          "request_id",
        -          "issued_at",
        -          "tier"
        -        ],
        -        "type": "object"
        -      },
        -      "data": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Schema § 1.1 — the typed payload returned inside `MCPResponse[ComputeResult]`.\n\nFree-tier responses omit `drawings` (the downloadable CAD artefact\npointers — the paid differentiator); the bridge enforces this. The\n`audit_trail` and the inline `drawing` preview are present on BOTH tiers\n(V1 ALIGN / 60th-fire D + C). `text_summary` is bounded to 2000 chars —\nkeeps the LLM-facing summary token-cheap and forces longer narrative into\nBoQ row descriptions where it belongs. `warnings` is the non-fatal\ngeometry advisory list (both tiers).",
        -            "properties": {
        -              "assembly_slug": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "audit_trail": {
        -                "anyOf": [
        -                  {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.7 — paid-tier audit-trail entry.\n\nOne entry per BoQ row; `boq_row_index` ties to the row position in\n`ComputeResult.boq_rows`. `derivation` is the human-readable formula\nwalk-through; `formula` is the optional formal expression.",
        -                      "properties": {
        -                        "boq_row_index": {
        -                          "minimum": 0,
        -                          "type": "integer"
        -                        },
        -                        "derivation": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "formula": {
        -                          "anyOf": [
        -                            {
        -                              "type": "string"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ],
        -                          "default": null
        -                        },
        -                        "id": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "parameters_referenced": {
        -                          "items": {
        -                            "type": "string"
        -                          },
        -                          "type": "array"
        -                        }
        -                      },
        -                      "required": [
        -                        "id",
        -                        "boq_row_index",
        -                        "derivation"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "boq_rows": {
        -                "items": {
        -                  "additionalProperties": false,
        -                  "description": "Schema § 1.3 — a single bill row in the requested standard's format.\n\n`description` is the non-verbatim functional description per spec § 13.9 /\n§ 15 invariant — NEVER reproduces a standard's verbatim clause text.\n`rate` / `amount` ship null because rates are commodity data the customer\nowns; the engine's job is the measurement, not the pricing.",
        -                  "properties": {
        -                    "amount": {
        -                      "anyOf": [
        -                        {
        -                          "type": "number"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "attribution": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "audit_id": {
        -                      "anyOf": [
        -                        {
        -                          "type": "string"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "description": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "quantity": {
        -                      "minimum": 0,
        -                      "type": "number"
        -                    },
        -                    "rate": {
        -                      "anyOf": [
        -                        {
        -                          "type": "number"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "unit": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "work_section": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    }
        -                  },
        -                  "required": [
        -                    "work_section",
        -                    "description",
        -                    "quantity",
        -                    "unit",
        -                    "attribution"
        -                  ],
        -                  "type": "object"
        -                },
        -                "type": "array"
        -              },
        -              "drawing": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": false,
        -                    "description": "Schema § 1.6a — inline server-rendered SVG preview of the geometry.\n\nThe MCP mirror of the web ``/compute`` response's ``drawing`` field\n(``api.schemas.compute.DrawingRef``): the same on-screen dimensioned\ndrawing both tiers see in the workspace, surfaced on the MCP compute\nresponse so a chat client can render it inline (60th-fire item C). This\nis the on-screen preview — present on BOTH tiers per the free/paid\nboundary; the downloadable CAD artefacts (DXF / dimensioned PDF) remain\nthe paid differentiator via the export tools.\n\nDefined here rather than importing ``DrawingRef`` because the web\n``schemas`` package imports back into this module (``schemas.render``),\nso reusing it would create an import cycle — the MCP wire contract keeps\nits own copy, the same pattern as ``BoQRow`` / ``DrawingReference``.",
        -                    "properties": {
        -                      "entity_count": {
        -                        "minimum": 0,
        -                        "type": "integer"
        -                      },
        -                      "svg_b64": {
        -                        "minLength": 1,
        -                        "type": "string"
        -                      },
        -                      "unit_of_drawing": {
        -                        "const": "m",
        -                        "default": "m",
        -                        "type": "string"
        -                      },
        -                      "viewbox_height": {
        -                        "exclusiveMinimum": 0,
        -                        "type": "number"
        -                      },
        -                      "viewbox_width": {
        -                        "exclusiveMinimum": 0,
        -                        "type": "number"
        -                      },
        -                      "viewbox_x": {
        -                        "type": "number"
        -                      },
        -                      "viewbox_y": {
        -                        "type": "number"
        -                      }
        -                    },
        -                    "required": [
        -                      "svg_b64",
        -                      "viewbox_x",
        -                      "viewbox_y",
        -                      "viewbox_width",
        -                      "viewbox_height",
        -                      "entity_count"
        -                    ],
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "drawings": {
        -                "anyOf": [
        -                  {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.6 — paid-tier drawing artefact pointer.\n\n`url` is an R2-signed URL; expiry is carried in `_meta.deliverables.expires_at`\non the envelope (not duplicated here). `layers` is DXF-only; PDF/SVG\ncallers omit it.",
        -                      "properties": {
        -                        "drawing_type": {
        -                          "enum": [
        -                            "section",
        -                            "plan",
        -                            "elevation",
        -                            "isometric",
        -                            "detail"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "format": {
        -                          "enum": [
        -                            "DXF",
        -                            "PDF",
        -                            "SVG"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "layers": {
        -                          "anyOf": [
        -                            {
        -                              "items": {
        -                                "type": "string"
        -                              },
        -                              "type": "array"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ],
        -                          "default": null
        -                        },
        -                        "scale": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "sheet_size": {
        -                          "enum": [
        -                            "A1",
        -                            "A2",
        -                            "A3",
        -                            "A4"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "url": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "drawing_type",
        -                        "format",
        -                        "url",
        -                        "sheet_size",
        -                        "scale"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "parameters_used": {
        -                "additionalProperties": false,
        -                "description": "Schema § 1.2 — the parameter snapshot the engine actually used.\n\nSplits user-supplied values from engine defaults so customers can see\nwhich numbers came from them and which the engine filled in. Every\ndefaulted parameter SHOULD have a corresponding entry in `assumptions`\n— the bridge layer enforces this when wrapping engine output.",
        -                "properties": {
        -                  "assumptions": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "engine_defaults": {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  "user_supplied": {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  }
        -                },
        -                "type": "object"
        -              },
        -              "standard": {
        -                "enum": [
        -                  "CESMM4",
        -                  "NRM2",
        -                  "SMM7",
        -                  "MMHW"
        -                ],
        -                "type": "string"
        -              },
        -              "text_summary": {
        -                "maxLength": 2000,
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "totals_summary": {
        -                "additionalProperties": false,
        -                "description": "Schema § 1.4 — totals_summary as a typed wrapper around the free-form dict.\n\nWire shape is a flat object (`{\"concrete_m3\": {...}, \"rebar_t\": {...}}`).\nWe model it as `RootModel`-equivalent via `model_config(extra=\"allow\")`\n+ a single `__root__`-style `entries` dict. Pydantic v2 recommends\n`RootModel` for free-form roots; using a wrapper class keeps the import\nsurface uniform with the rest of this module.",
        -                "properties": {
        -                  "entries": {
        -                    "additionalProperties": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.4 — single material/work-class total entry.",
        -                      "properties": {
        -                        "quantity": {
        -                          "minimum": 0,
        -                          "type": "number"
        -                        },
        -                        "unit": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "quantity",
        -                        "unit"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "object"
        -                  }
        -                },
        -                "type": "object"
        -              },
        -              "warnings": {
        -                "items": {
        -                  "additionalProperties": false,
        -                  "description": "Schema § 1.8 — a non-fatal geometry advisory (56th-fire T2).\n\nThe wire projection of the engine's `core.GeometryWarning`. Advisory only:\na warning NEVER changes a measured quantity — it flags geometry that is\nvalid but likely a mistake (e.g. a stale dependent-height default). Present\non BOTH tiers — a correctness/safety signal, not a paid feature.",
        -                  "properties": {
        -                    "affected_params": {
        -                      "items": {
        -                        "type": "string"
        -                      },
        -                      "type": "array"
        -                    },
        -                    "code": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "detail": {
        -                      "additionalProperties": {
        -                        "type": "number"
        -                      },
        -                      "type": "object"
        -                    },
        -                    "message": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "severity": {
        -                      "enum": [
        -                        "info",
        -                        "advisory",
        -                        "caution"
        -                      ],
        -                      "type": "string"
        -                    }
        -                  },
        -                  "required": [
        -                    "code",
        -                    "severity",
        -                    "message"
        -                  ],
        -                  "type": "object"
        -                },
        -                "type": "array"
        -              }
        -            },
        -            "required": [
        -              "assembly_slug",
        -              "standard",
        -              "parameters_used",
        -              "boq_rows",
        -              "totals_summary",
        -              "text_summary"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      },
        -      "error": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        -            "properties": {
        -              "code": {
        -                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        -                "enum": [
        -                  "RATE_LIMIT_EXCEEDED",
        -                  "TIER_INSUFFICIENT",
        -                  "INVALID_INPUT",
        -                  "SCHEMA_VERSION_MISMATCH",
        -                  "SCHEMA_INVARIANT_VIOLATION",
        -                  "UPSTREAM_TIMEOUT",
        -                  "BACKEND_FAILURE",
        -                  "IP_BLOCKED",
        -                  "RESOURCE_NOT_FOUND",
        -                  "RENDER_FAILURE",
        -                  "OCR_LOW_CONFIDENCE",
        -                  "MANUAL_REVIEW_REQUIRED",
        -                  "ACCEPTANCE_REQUIRED",
        -                  "INVALID_TOKEN"
        -                ],
        -                "type": "string"
        -              },
        -              "details": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "message": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "recoverable": {
        -                "type": "boolean"
        -              },
        -              "retry_after_seconds": {
        -                "anyOf": [
        -                  {
        -                    "minimum": 0,
        -                    "type": "integer"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              }
        -            },
        -            "required": [
        -              "code",
        -              "message",
        -              "recoverable"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      }
        -    },
        -    "required": [
        -      "_meta"
        -    ],
        -    "type": "object"
        -  },
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "_meta": {
        -        "additionalProperties": false,
        -        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        -        "properties": {
        -          "deliverables": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        -                "properties": {
        -                  "docx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "dxf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "expires_at": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  },
        -                  "pdf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "xlsx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "expires_at"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "document_id": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "issued_at": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "rate_limit_remaining": {
        -            "anyOf": [
        -              {
        -                "minimum": 0,
        -                "type": "integer"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "request_id": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "schema_version": {
        -            "const": "1.0.0",
        -            "default": "1.0.0",
        -            "type": "string"
        -          },
        -          "scope_boundary": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        -                "properties": {
        -                  "not_in_scope": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "produced": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "recommended_companions": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "type": "string"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "produced",
        -                  "not_in_scope"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tier": {
        -            "enum": [
        -              "free",
        -              "paid"
        -            ],
        -            "type": "string"
        -          },
        -          "tier_upgrade": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        -                "properties": {
        -                  "available_tiers": {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        -                      "properties": {
        -                        "billing": {
        -                          "enum": [
        -                            "one_off",
        -                            "monthly",
        -                            "annual"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "currency": {
        -                          "enum": [
        -                            "GBP",
        -                            "SGD",
        -                            "EUR",
        -                            "USD",
        -                            "CAD",
        -                            "AUD",
        -                            "NZD",
        -                            "MYR"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "display_name": {
        -                          "type": "string"
        -                        },
        -                        "price_local": {
        -                          "type": "number"
        -                        },
        -                        "tier_slug": {
        -                          "enum": [
        -                            "7_day_pass",
        -                            "solo",
        -                            "studio",
        -                            "practice"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "unlock_summary": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "tier_slug",
        -                        "display_name",
        -                        "price_local",
        -                        "currency",
        -                        "billing",
        -                        "unlock_summary"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "current_tier": {
        -                    "const": "free",
        -                    "default": "free",
        -                    "type": "string"
        -                  },
        -                  "pass_credit": {
        -                    "anyOf": [
        -                      {
        -                        "additionalProperties": false,
        -                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        -                        "properties": {
        -                          "amount_local": {
        -                            "type": "number"
        -                          },
        -                          "applies_to": {
        -                            "const": "solo_first_month",
        -                            "default": "solo_first_month",
        -                            "type": "string"
        -                          },
        -                          "currency": {
        -                            "type": "string"
        -                          },
        -                          "redeemable_until": {
        -                            "type": "string"
        -                          }
        -                        },
        -                        "required": [
        -                          "amount_local",
        -                          "currency",
        -                          "redeemable_until"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "pricing_url": {
        -                    "default": "https://civilquants.com/pricing",
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "available_tiers"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tos_url": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "upgrade_hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "warranty_disclaimer": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          }
        -        },
        -        "required": [
        -          "request_id",
        -          "issued_at",
        -          "tier"
        -        ],
        -        "type": "object"
        -      },
        -      "data": {
        -        "default": null,
        -        "title": "Data"
        -      },
        -      "error": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        -            "properties": {
        -              "code": {
        -                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        -                "enum": [
        -                  "RATE_LIMIT_EXCEEDED",
        -                  "TIER_INSUFFICIENT",
        -                  "INVALID_INPUT",
        -                  "SCHEMA_VERSION_MISMATCH",
        -                  "SCHEMA_INVARIANT_VIOLATION",
        -                  "UPSTREAM_TIMEOUT",
        -                  "BACKEND_FAILURE",
        -                  "IP_BLOCKED",
        -                  "RESOURCE_NOT_FOUND",
        -                  "RENDER_FAILURE",
        -                  "OCR_LOW_CONFIDENCE",
        -                  "MANUAL_REVIEW_REQUIRED",
        -                  "ACCEPTANCE_REQUIRED",
        -                  "INVALID_TOKEN"
        -                ],
        -                "type": "string"
        -              },
        -              "details": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "message": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "recoverable": {
        -                "type": "boolean"
        -              },
        -              "retry_after_seconds": {
        -                "anyOf": [
        -                  {
        -                    "minimum": 0,
        -                    "type": "integer"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              }
        -            },
        -            "required": [
        -              "code",
        -              "message",
        -              "recoverable"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      }
        -    },
        -    "required": [
        -      "_meta"
        -    ],
        -    "type": "object"
        -  }
        -]New value: +[
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "_meta": {
        +        "additionalProperties": false,
        +        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        +        "properties": {
        +          "deliverables": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        +                "properties": {
        +                  "docx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "dxf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "expires_at": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  },
        +                  "pdf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "xlsx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "expires_at"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "document_id": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "issued_at": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "output_mode": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Surfaces what a trimmed ``output_mode`` withheld from ``data``.\n\nA trimmed mode (``summary`` / ``boq`` / ``boq_with_backup``) withholds\nalready-computed fields to keep the chat payload small. The withheld value\nreads to a client agent as \"capability missing\" (the box-culvert \"geometry\nbuilder isn't firing\" scare) rather than \"pared for size\": ``drawing`` and\n``audit_trail`` appear as ``null``, ``boq_rows`` as an empty list ``[]``\n(its type forbids ``null``) — both indistinguishable from a genuine absent\nresult. This names the withheld fields and the exact mode that brings each\nback, so the value is unambiguous. Absent on the default ``full_json`` mode\n— nothing is withheld, nothing to point at.",
        +                "properties": {
        +                  "mode": {
        +                    "enum": [
        +                      "summary",
        +                      "boq",
        +                      "boq_with_backup"
        +                    ],
        +                    "type": "string"
        +                  },
        +                  "omitted_fields": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "minItems": 1,
        +                    "type": "array"
        +                  },
        +                  "retrieve_with": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "mode",
        +                  "omitted_fields",
        +                  "retrieve_with"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "rate_limit_remaining": {
        +            "anyOf": [
        +              {
        +                "minimum": 0,
        +                "type": "integer"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "request_id": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "schema_version": {
        +            "const": "1.0.0",
        +            "default": "1.0.0",
        +            "type": "string"
        +          },
        +          "scope_boundary": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        +                "properties": {
        +                  "not_in_scope": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "produced": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "recommended_companions": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "type": "string"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "produced",
        +                  "not_in_scope"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tier": {
        +            "enum": [
        +              "free",
        +              "paid"
        +            ],
        +            "type": "string"
        +          },
        +          "tier_upgrade": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        +                "properties": {
        +                  "available_tiers": {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        +                      "properties": {
        +                        "billing": {
        +                          "enum": [
        +                            "one_off",
        +                            "monthly",
        +                            "annual"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "currency": {
        +                          "enum": [
        +                            "GBP",
        +                            "SGD",
        +                            "EUR",
        +                            "USD",
        +                            "CAD",
        +                            "AUD",
        +                            "NZD",
        +                            "MYR"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "display_name": {
        +                          "type": "string"
        +                        },
        +                        "price_local": {
        +                          "type": "number"
        +                        },
        +                        "tier_slug": {
        +                          "enum": [
        +                            "7_day_pass",
        +                            "solo",
        +                            "studio",
        +                            "practice"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "unlock_summary": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "tier_slug",
        +                        "display_name",
        +                        "price_local",
        +                        "currency",
        +                        "billing",
        +                        "unlock_summary"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "current_tier": {
        +                    "const": "free",
        +                    "default": "free",
        +                    "type": "string"
        +                  },
        +                  "pass_credit": {
        +                    "anyOf": [
        +                      {
        +                        "additionalProperties": false,
        +                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        +                        "properties": {
        +                          "amount_local": {
        +                            "type": "number"
        +                          },
        +                          "applies_to": {
        +                            "const": "solo_first_month",
        +                            "default": "solo_first_month",
        +                            "type": "string"
        +                          },
        +                          "currency": {
        +                            "type": "string"
        +                          },
        +                          "redeemable_until": {
        +                            "type": "string"
        +                          }
        +                        },
        +                        "required": [
        +                          "amount_local",
        +                          "currency",
        +                          "redeemable_until"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "pricing_url": {
        +                    "default": "https://civilquants.com/pricing",
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "available_tiers"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tos_url": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "upgrade_hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "warranty_disclaimer": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          }
        +        },
        +        "required": [
        +          "request_id",
        +          "issued_at",
        +          "tier"
        +        ],
        +        "type": "object"
        +      },
        +      "data": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Schema § 1.1 — the typed payload returned inside `MCPResponse[ComputeResult]`.\n\nFree-tier responses omit `drawings` (the downloadable CAD artefact\npointers — the paid differentiator); the bridge enforces this. The\n`audit_trail` and the inline `drawing` preview are present on BOTH tiers\n(V1 ALIGN / 60th-fire D + C). `text_summary` is bounded to 2000 chars —\nkeeps the LLM-facing summary token-cheap and forces longer narrative into\nBoQ row descriptions where it belongs. `warnings` is the non-fatal\ngeometry advisory list (both tiers).",
        +            "properties": {
        +              "assembly_slug": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "audit_trail": {
        +                "anyOf": [
        +                  {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.7 — paid-tier audit-trail entry.\n\nOne entry per BoQ row; `boq_row_index` ties to the row position in\n`ComputeResult.boq_rows`. `derivation` is the human-readable formula\nwalk-through; `formula` is the optional formal expression.",
        +                      "properties": {
        +                        "boq_row_index": {
        +                          "minimum": 0,
        +                          "type": "integer"
        +                        },
        +                        "derivation": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "formula": {
        +                          "anyOf": [
        +                            {
        +                              "type": "string"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ],
        +                          "default": null
        +                        },
        +                        "id": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "parameters_referenced": {
        +                          "items": {
        +                            "type": "string"
        +                          },
        +                          "type": "array"
        +                        }
        +                      },
        +                      "required": [
        +                        "id",
        +                        "boq_row_index",
        +                        "derivation"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "boq_rows": {
        +                "items": {
        +                  "additionalProperties": false,
        +                  "description": "Schema § 1.3 — a single bill row in the requested standard's format.\n\n`description` is the non-verbatim functional description per spec § 13.9 /\n§ 15 invariant — NEVER reproduces a standard's verbatim clause text.\n`rate` / `amount` ship null because rates are commodity data the customer\nowns; the engine's job is the measurement, not the pricing.",
        +                  "properties": {
        +                    "amount": {
        +                      "anyOf": [
        +                        {
        +                          "type": "number"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "attribution": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "audit_id": {
        +                      "anyOf": [
        +                        {
        +                          "type": "string"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "description": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "quantity": {
        +                      "minimum": 0,
        +                      "type": "number"
        +                    },
        +                    "rate": {
        +                      "anyOf": [
        +                        {
        +                          "type": "number"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "unit": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "work_section": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    }
        +                  },
        +                  "required": [
        +                    "work_section",
        +                    "description",
        +                    "quantity",
        +                    "unit",
        +                    "attribution"
        +                  ],
        +                  "type": "object"
        +                },
        +                "type": "array"
        +              },
        +              "drawing": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": false,
        +                    "description": "Schema § 1.6a — inline server-rendered SVG preview of the geometry.\n\nThe MCP mirror of the web ``/compute`` response's ``drawing`` field\n(``api.schemas.compute.DrawingRef``): the same on-screen dimensioned\ndrawing both tiers see in the workspace, surfaced on the MCP compute\nresponse so a chat client can render it inline (60th-fire item C). This\nis the on-screen preview — present on BOTH tiers per the free/paid\nboundary; the downloadable CAD artefacts (DXF / dimensioned PDF) remain\nthe paid differentiator via the export tools.\n\nDefined here rather than importing ``DrawingRef`` because the web\n``schemas`` package imports back into this module (``schemas.render``),\nso reusing it would create an import cycle — the MCP wire contract keeps\nits own copy, the same pattern as ``BoQRow`` / ``DrawingReference``.",
        +                    "properties": {
        +                      "entity_count": {
        +                        "minimum": 0,
        +                        "type": "integer"
        +                      },
        +                      "svg_b64": {
        +                        "minLength": 1,
        +                        "type": "string"
        +                      },
        +                      "unit_of_drawing": {
        +                        "const": "m",
        +                        "default": "m",
        +                        "type": "string"
        +                      },
        +                      "viewbox_height": {
        +                        "exclusiveMinimum": 0,
        +                        "type": "number"
        +                      },
        +                      "viewbox_width": {
        +                        "exclusiveMinimum": 0,
        +                        "type": "number"
        +                      },
        +                      "viewbox_x": {
        +                        "type": "number"
        +                      },
        +                      "viewbox_y": {
        +                        "type": "number"
        +                      }
        +                    },
        +                    "required": [
        +                      "svg_b64",
        +                      "viewbox_x",
        +                      "viewbox_y",
        +                      "viewbox_width",
        +                      "viewbox_height",
        +                      "entity_count"
        +                    ],
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "drawings": {
        +                "anyOf": [
        +                  {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.6 — paid-tier drawing artefact pointer.\n\n`url` is an R2-signed URL; expiry is carried in `_meta.deliverables.expires_at`\non the envelope (not duplicated here). `layers` is DXF-only; PDF/SVG\ncallers omit it.",
        +                      "properties": {
        +                        "drawing_type": {
        +                          "enum": [
        +                            "section",
        +                            "plan",
        +                            "elevation",
        +                            "isometric",
        +                            "detail"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "format": {
        +                          "enum": [
        +                            "DXF",
        +                            "PDF",
        +                            "SVG"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "layers": {
        +                          "anyOf": [
        +                            {
        +                              "items": {
        +                                "type": "string"
        +                              },
        +                              "type": "array"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ],
        +                          "default": null
        +                        },
        +                        "scale": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "sheet_size": {
        +                          "enum": [
        +                            "A1",
        +                            "A2",
        +                            "A3",
        +                            "A4"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "url": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "drawing_type",
        +                        "format",
        +                        "url",
        +                        "sheet_size",
        +                        "scale"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "parameters_used": {
        +                "additionalProperties": false,
        +                "description": "Schema § 1.2 — the parameter snapshot the engine actually used.\n\nSplits user-supplied values from engine defaults so customers can see\nwhich numbers came from them and which the engine filled in. Every\ndefaulted parameter SHOULD have a corresponding entry in `assumptions`\n— the bridge layer enforces this when wrapping engine output.",
        +                "properties": {
        +                  "assumptions": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "engine_defaults": {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  "user_supplied": {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  }
        +                },
        +                "type": "object"
        +              },
        +              "standard": {
        +                "enum": [
        +                  "CESMM4",
        +                  "NRM2",
        +                  "SMM7",
        +                  "MMHW"
        +                ],
        +                "type": "string"
        +              },
        +              "text_summary": {
        +                "maxLength": 2000,
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "totals_summary": {
        +                "additionalProperties": false,
        +                "description": "Schema § 1.4 — totals_summary as a typed wrapper around the free-form dict.\n\nWire shape is a flat object (`{\"concrete_m3\": {...}, \"rebar_t\": {...}}`).\nWe model it as `RootModel`-equivalent via `model_config(extra=\"allow\")`\n+ a single `__root__`-style `entries` dict. Pydantic v2 recommends\n`RootModel` for free-form roots; using a wrapper class keeps the import\nsurface uniform with the rest of this module.",
        +                "properties": {
        +                  "entries": {
        +                    "additionalProperties": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.4 — single material/work-class total entry.",
        +                      "properties": {
        +                        "quantity": {
        +                          "minimum": 0,
        +                          "type": "number"
        +                        },
        +                        "unit": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "quantity",
        +                        "unit"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "object"
        +                  }
        +                },
        +                "type": "object"
        +              },
        +              "warnings": {
        +                "items": {
        +                  "additionalProperties": false,
        +                  "description": "Schema § 1.8 — a non-fatal geometry advisory (56th-fire T2).\n\nThe wire projection of the engine's `core.GeometryWarning`. Advisory only:\na warning NEVER changes a measured quantity — it flags geometry that is\nvalid but likely a mistake (e.g. a stale dependent-height default). Present\non BOTH tiers — a correctness/safety signal, not a paid feature.",
        +                  "properties": {
        +                    "affected_params": {
        +                      "items": {
        +                        "type": "string"
        +                      },
        +                      "type": "array"
        +                    },
        +                    "code": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "detail": {
        +                      "additionalProperties": {
        +                        "type": "number"
        +                      },
        +                      "type": "object"
        +                    },
        +                    "message": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "severity": {
        +                      "enum": [
        +                        "info",
        +                        "advisory",
        +                        "caution"
        +                      ],
        +                      "type": "string"
        +                    }
        +                  },
        +                  "required": [
        +                    "code",
        +                    "severity",
        +                    "message"
        +                  ],
        +                  "type": "object"
        +                },
        +                "type": "array"
        +              }
        +            },
        +            "required": [
        +              "assembly_slug",
        +              "standard",
        +              "parameters_used",
        +              "boq_rows",
        +              "totals_summary",
        +              "text_summary"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      },
        +      "error": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        +            "properties": {
        +              "code": {
        +                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        +                "enum": [
        +                  "RATE_LIMIT_EXCEEDED",
        +                  "TIER_INSUFFICIENT",
        +                  "INVALID_INPUT",
        +                  "SCHEMA_VERSION_MISMATCH",
        +                  "SCHEMA_INVARIANT_VIOLATION",
        +                  "UPSTREAM_TIMEOUT",
        +                  "BACKEND_FAILURE",
        +                  "IP_BLOCKED",
        +                  "RESOURCE_NOT_FOUND",
        +                  "RENDER_FAILURE",
        +                  "OCR_LOW_CONFIDENCE",
        +                  "MANUAL_REVIEW_REQUIRED",
        +                  "ACCEPTANCE_REQUIRED",
        +                  "INVALID_TOKEN"
        +                ],
        +                "type": "string"
        +              },
        +              "details": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "message": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "recoverable": {
        +                "type": "boolean"
        +              },
        +              "retry_after_seconds": {
        +                "anyOf": [
        +                  {
        +                    "minimum": 0,
        +                    "type": "integer"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              }
        +            },
        +            "required": [
        +              "code",
        +              "message",
        +              "recoverable"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      }
        +    },
        +    "required": [
        +      "_meta"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "_meta": {
        +        "additionalProperties": false,
        +        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        +        "properties": {
        +          "deliverables": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        +                "properties": {
        +                  "docx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "dxf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "expires_at": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  },
        +                  "pdf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "xlsx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "expires_at"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "document_id": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "issued_at": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "output_mode": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Surfaces what a trimmed ``output_mode`` withheld from ``data``.\n\nA trimmed mode (``summary`` / ``boq`` / ``boq_with_backup``) withholds\nalready-computed fields to keep the chat payload small. The withheld value\nreads to a client agent as \"capability missing\" (the box-culvert \"geometry\nbuilder isn't firing\" scare) rather than \"pared for size\": ``drawing`` and\n``audit_trail`` appear as ``null``, ``boq_rows`` as an empty list ``[]``\n(its type forbids ``null``) — both indistinguishable from a genuine absent\nresult. This names the withheld fields and the exact mode that brings each\nback, so the value is unambiguous. Absent on the default ``full_json`` mode\n— nothing is withheld, nothing to point at.",
        +                "properties": {
        +                  "mode": {
        +                    "enum": [
        +                      "summary",
        +                      "boq",
        +                      "boq_with_backup"
        +                    ],
        +                    "type": "string"
        +                  },
        +                  "omitted_fields": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "minItems": 1,
        +                    "type": "array"
        +                  },
        +                  "retrieve_with": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "mode",
        +                  "omitted_fields",
        +                  "retrieve_with"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "rate_limit_remaining": {
        +            "anyOf": [
        +              {
        +                "minimum": 0,
        +                "type": "integer"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "request_id": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "schema_version": {
        +            "const": "1.0.0",
        +            "default": "1.0.0",
        +            "type": "string"
        +          },
        +          "scope_boundary": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        +                "properties": {
        +                  "not_in_scope": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "produced": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "recommended_companions": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "type": "string"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "produced",
        +                  "not_in_scope"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tier": {
        +            "enum": [
        +              "free",
        +              "paid"
        +            ],
        +            "type": "string"
        +          },
        +          "tier_upgrade": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        +                "properties": {
        +                  "available_tiers": {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        +                      "properties": {
        +                        "billing": {
        +                          "enum": [
        +                            "one_off",
        +                            "monthly",
        +                            "annual"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "currency": {
        +                          "enum": [
        +                            "GBP",
        +                            "SGD",
        +                            "EUR",
        +                            "USD",
        +                            "CAD",
        +                            "AUD",
        +                            "NZD",
        +                            "MYR"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "display_name": {
        +                          "type": "string"
        +                        },
        +                        "price_local": {
        +                          "type": "number"
        +                        },
        +                        "tier_slug": {
        +                          "enum": [
        +                            "7_day_pass",
        +                            "solo",
        +                            "studio",
        +                            "practice"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "unlock_summary": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "tier_slug",
        +                        "display_name",
        +                        "price_local",
        +                        "currency",
        +                        "billing",
        +                        "unlock_summary"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "current_tier": {
        +                    "const": "free",
        +                    "default": "free",
        +                    "type": "string"
        +                  },
        +                  "pass_credit": {
        +                    "anyOf": [
        +                      {
        +                        "additionalProperties": false,
        +                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        +                        "properties": {
        +                          "amount_local": {
        +                            "type": "number"
        +                          },
        +                          "applies_to": {
        +                            "const": "solo_first_month",
        +                            "default": "solo_first_month",
        +                            "type": "string"
        +                          },
        +                          "currency": {
        +                            "type": "string"
        +                          },
        +                          "redeemable_until": {
        +                            "type": "string"
        +                          }
        +                        },
        +                        "required": [
        +                          "amount_local",
        +                          "currency",
        +                          "redeemable_until"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "pricing_url": {
        +                    "default": "https://civilquants.com/pricing",
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "available_tiers"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tos_url": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "upgrade_hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "warranty_disclaimer": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          }
        +        },
        +        "required": [
        +          "request_id",
        +          "issued_at",
        +          "tier"
        +        ],
        +        "type": "object"
        +      },
        +      "data": {
        +        "default": null,
        +        "title": "Data"
        +      },
        +      "error": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        +            "properties": {
        +              "code": {
        +                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        +                "enum": [
        +                  "RATE_LIMIT_EXCEEDED",
        +                  "TIER_INSUFFICIENT",
        +                  "INVALID_INPUT",
        +                  "SCHEMA_VERSION_MISMATCH",
        +                  "SCHEMA_INVARIANT_VIOLATION",
        +                  "UPSTREAM_TIMEOUT",
        +                  "BACKEND_FAILURE",
        +                  "IP_BLOCKED",
        +                  "RESOURCE_NOT_FOUND",
        +                  "RENDER_FAILURE",
        +                  "OCR_LOW_CONFIDENCE",
        +                  "MANUAL_REVIEW_REQUIRED",
        +                  "ACCEPTANCE_REQUIRED",
        +                  "INVALID_TOKEN"
        +                ],
        +                "type": "string"
        +              },
        +              "details": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "message": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "recoverable": {
        +                "type": "boolean"
        +              },
        +              "retry_after_seconds": {
        +                "anyOf": [
        +                  {
        +                    "minimum": 0,
        +                    "type": "integer"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              }
        +            },
        +            "required": [
        +              "code",
        +              "message",
        +              "recoverable"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      }
        +    },
        +    "required": [
        +      "_meta"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedcompute_reinforced_soil_wall1 field changed
      • changedOutput schema / properties / result / anyOf
        Previous value: -[
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "_meta": {
        -        "additionalProperties": false,
        -        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        -        "properties": {
        -          "deliverables": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        -                "properties": {
        -                  "docx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "dxf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "expires_at": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  },
        -                  "pdf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "xlsx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "expires_at"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "document_id": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "issued_at": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "rate_limit_remaining": {
        -            "anyOf": [
        -              {
        -                "minimum": 0,
        -                "type": "integer"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "request_id": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "schema_version": {
        -            "const": "1.0.0",
        -            "default": "1.0.0",
        -            "type": "string"
        -          },
        -          "scope_boundary": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        -                "properties": {
        -                  "not_in_scope": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "produced": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "recommended_companions": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "type": "string"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "produced",
        -                  "not_in_scope"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tier": {
        -            "enum": [
        -              "free",
        -              "paid"
        -            ],
        -            "type": "string"
        -          },
        -          "tier_upgrade": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        -                "properties": {
        -                  "available_tiers": {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        -                      "properties": {
        -                        "billing": {
        -                          "enum": [
        -                            "one_off",
        -                            "monthly",
        -                            "annual"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "currency": {
        -                          "enum": [
        -                            "GBP",
        -                            "SGD",
        -                            "EUR",
        -                            "USD",
        -                            "CAD",
        -                            "AUD",
        -                            "NZD",
        -                            "MYR"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "display_name": {
        -                          "type": "string"
        -                        },
        -                        "price_local": {
        -                          "type": "number"
        -                        },
        -                        "tier_slug": {
        -                          "enum": [
        -                            "7_day_pass",
        -                            "solo",
        -                            "studio",
        -                            "practice"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "unlock_summary": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "tier_slug",
        -                        "display_name",
        -                        "price_local",
        -                        "currency",
        -                        "billing",
        -                        "unlock_summary"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "current_tier": {
        -                    "const": "free",
        -                    "default": "free",
        -                    "type": "string"
        -                  },
        -                  "pass_credit": {
        -                    "anyOf": [
        -                      {
        -                        "additionalProperties": false,
        -                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        -                        "properties": {
        -                          "amount_local": {
        -                            "type": "number"
        -                          },
        -                          "applies_to": {
        -                            "const": "solo_first_month",
        -                            "default": "solo_first_month",
        -                            "type": "string"
        -                          },
        -                          "currency": {
        -                            "type": "string"
        -                          },
        -                          "redeemable_until": {
        -                            "type": "string"
        -                          }
        -                        },
        -                        "required": [
        -                          "amount_local",
        -                          "currency",
        -                          "redeemable_until"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "pricing_url": {
        -                    "default": "https://civilquants.com/pricing",
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "available_tiers"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tos_url": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "upgrade_hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "warranty_disclaimer": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          }
        -        },
        -        "required": [
        -          "request_id",
        -          "issued_at",
        -          "tier"
        -        ],
        -        "type": "object"
        -      },
        -      "data": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Schema § 1.1 — the typed payload returned inside `MCPResponse[ComputeResult]`.\n\nFree-tier responses omit `drawings` (the downloadable CAD artefact\npointers — the paid differentiator); the bridge enforces this. The\n`audit_trail` and the inline `drawing` preview are present on BOTH tiers\n(V1 ALIGN / 60th-fire D + C). `text_summary` is bounded to 2000 chars —\nkeeps the LLM-facing summary token-cheap and forces longer narrative into\nBoQ row descriptions where it belongs. `warnings` is the non-fatal\ngeometry advisory list (both tiers).",
        -            "properties": {
        -              "assembly_slug": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "audit_trail": {
        -                "anyOf": [
        -                  {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.7 — paid-tier audit-trail entry.\n\nOne entry per BoQ row; `boq_row_index` ties to the row position in\n`ComputeResult.boq_rows`. `derivation` is the human-readable formula\nwalk-through; `formula` is the optional formal expression.",
        -                      "properties": {
        -                        "boq_row_index": {
        -                          "minimum": 0,
        -                          "type": "integer"
        -                        },
        -                        "derivation": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "formula": {
        -                          "anyOf": [
        -                            {
        -                              "type": "string"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ],
        -                          "default": null
        -                        },
        -                        "id": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "parameters_referenced": {
        -                          "items": {
        -                            "type": "string"
        -                          },
        -                          "type": "array"
        -                        }
        -                      },
        -                      "required": [
        -                        "id",
        -                        "boq_row_index",
        -                        "derivation"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "boq_rows": {
        -                "items": {
        -                  "additionalProperties": false,
        -                  "description": "Schema § 1.3 — a single bill row in the requested standard's format.\n\n`description` is the non-verbatim functional description per spec § 13.9 /\n§ 15 invariant — NEVER reproduces a standard's verbatim clause text.\n`rate` / `amount` ship null because rates are commodity data the customer\nowns; the engine's job is the measurement, not the pricing.",
        -                  "properties": {
        -                    "amount": {
        -                      "anyOf": [
        -                        {
        -                          "type": "number"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "attribution": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "audit_id": {
        -                      "anyOf": [
        -                        {
        -                          "type": "string"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "description": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "quantity": {
        -                      "minimum": 0,
        -                      "type": "number"
        -                    },
        -                    "rate": {
        -                      "anyOf": [
        -                        {
        -                          "type": "number"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "unit": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "work_section": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    }
        -                  },
        -                  "required": [
        -                    "work_section",
        -                    "description",
        -                    "quantity",
        -                    "unit",
        -                    "attribution"
        -                  ],
        -                  "type": "object"
        -                },
        -                "type": "array"
        -              },
        -              "drawing": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": false,
        -                    "description": "Schema § 1.6a — inline server-rendered SVG preview of the geometry.\n\nThe MCP mirror of the web ``/compute`` response's ``drawing`` field\n(``api.schemas.compute.DrawingRef``): the same on-screen dimensioned\ndrawing both tiers see in the workspace, surfaced on the MCP compute\nresponse so a chat client can render it inline (60th-fire item C). This\nis the on-screen preview — present on BOTH tiers per the free/paid\nboundary; the downloadable CAD artefacts (DXF / dimensioned PDF) remain\nthe paid differentiator via the export tools.\n\nDefined here rather than importing ``DrawingRef`` because the web\n``schemas`` package imports back into this module (``schemas.render``),\nso reusing it would create an import cycle — the MCP wire contract keeps\nits own copy, the same pattern as ``BoQRow`` / ``DrawingReference``.",
        -                    "properties": {
        -                      "entity_count": {
        -                        "minimum": 0,
        -                        "type": "integer"
        -                      },
        -                      "svg_b64": {
        -                        "minLength": 1,
        -                        "type": "string"
        -                      },
        -                      "unit_of_drawing": {
        -                        "const": "m",
        -                        "default": "m",
        -                        "type": "string"
        -                      },
        -                      "viewbox_height": {
        -                        "exclusiveMinimum": 0,
        -                        "type": "number"
        -                      },
        -                      "viewbox_width": {
        -                        "exclusiveMinimum": 0,
        -                        "type": "number"
        -                      },
        -                      "viewbox_x": {
        -                        "type": "number"
        -                      },
        -                      "viewbox_y": {
        -                        "type": "number"
        -                      }
        -                    },
        -                    "required": [
        -                      "svg_b64",
        -                      "viewbox_x",
        -                      "viewbox_y",
        -                      "viewbox_width",
        -                      "viewbox_height",
        -                      "entity_count"
        -                    ],
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "drawings": {
        -                "anyOf": [
        -                  {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.6 — paid-tier drawing artefact pointer.\n\n`url` is an R2-signed URL; expiry is carried in `_meta.deliverables.expires_at`\non the envelope (not duplicated here). `layers` is DXF-only; PDF/SVG\ncallers omit it.",
        -                      "properties": {
        -                        "drawing_type": {
        -                          "enum": [
        -                            "section",
        -                            "plan",
        -                            "elevation",
        -                            "isometric",
        -                            "detail"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "format": {
        -                          "enum": [
        -                            "DXF",
        -                            "PDF",
        -                            "SVG"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "layers": {
        -                          "anyOf": [
        -                            {
        -                              "items": {
        -                                "type": "string"
        -                              },
        -                              "type": "array"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ],
        -                          "default": null
        -                        },
        -                        "scale": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "sheet_size": {
        -                          "enum": [
        -                            "A1",
        -                            "A2",
        -                            "A3",
        -                            "A4"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "url": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "drawing_type",
        -                        "format",
        -                        "url",
        -                        "sheet_size",
        -                        "scale"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "parameters_used": {
        -                "additionalProperties": false,
        -                "description": "Schema § 1.2 — the parameter snapshot the engine actually used.\n\nSplits user-supplied values from engine defaults so customers can see\nwhich numbers came from them and which the engine filled in. Every\ndefaulted parameter SHOULD have a corresponding entry in `assumptions`\n— the bridge layer enforces this when wrapping engine output.",
        -                "properties": {
        -                  "assumptions": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "engine_defaults": {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  "user_supplied": {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  }
        -                },
        -                "type": "object"
        -              },
        -              "standard": {
        -                "enum": [
        -                  "CESMM4",
        -                  "NRM2",
        -                  "SMM7",
        -                  "MMHW"
        -                ],
        -                "type": "string"
        -              },
        -              "text_summary": {
        -                "maxLength": 2000,
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "totals_summary": {
        -                "additionalProperties": false,
        -                "description": "Schema § 1.4 — totals_summary as a typed wrapper around the free-form dict.\n\nWire shape is a flat object (`{\"concrete_m3\": {...}, \"rebar_t\": {...}}`).\nWe model it as `RootModel`-equivalent via `model_config(extra=\"allow\")`\n+ a single `__root__`-style `entries` dict. Pydantic v2 recommends\n`RootModel` for free-form roots; using a wrapper class keeps the import\nsurface uniform with the rest of this module.",
        -                "properties": {
        -                  "entries": {
        -                    "additionalProperties": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.4 — single material/work-class total entry.",
        -                      "properties": {
        -                        "quantity": {
        -                          "minimum": 0,
        -                          "type": "number"
        -                        },
        -                        "unit": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "quantity",
        -                        "unit"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "object"
        -                  }
        -                },
        -                "type": "object"
        -              },
        -              "warnings": {
        -                "items": {
        -                  "additionalProperties": false,
        -                  "description": "Schema § 1.8 — a non-fatal geometry advisory (56th-fire T2).\n\nThe wire projection of the engine's `core.GeometryWarning`. Advisory only:\na warning NEVER changes a measured quantity — it flags geometry that is\nvalid but likely a mistake (e.g. a stale dependent-height default). Present\non BOTH tiers — a correctness/safety signal, not a paid feature.",
        -                  "properties": {
        -                    "affected_params": {
        -                      "items": {
        -                        "type": "string"
        -                      },
        -                      "type": "array"
        -                    },
        -                    "code": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "detail": {
        -                      "additionalProperties": {
        -                        "type": "number"
        -                      },
        -                      "type": "object"
        -                    },
        -                    "message": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "severity": {
        -                      "enum": [
        -                        "info",
        -                        "advisory",
        -                        "caution"
        -                      ],
        -                      "type": "string"
        -                    }
        -                  },
        -                  "required": [
        -                    "code",
        -                    "severity",
        -                    "message"
        -                  ],
        -                  "type": "object"
        -                },
        -                "type": "array"
        -              }
        -            },
        -            "required": [
        -              "assembly_slug",
        -              "standard",
        -              "parameters_used",
        -              "boq_rows",
        -              "totals_summary",
        -              "text_summary"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      },
        -      "error": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        -            "properties": {
        -              "code": {
        -                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        -                "enum": [
        -                  "RATE_LIMIT_EXCEEDED",
        -                  "TIER_INSUFFICIENT",
        -                  "INVALID_INPUT",
        -                  "SCHEMA_VERSION_MISMATCH",
        -                  "SCHEMA_INVARIANT_VIOLATION",
        -                  "UPSTREAM_TIMEOUT",
        -                  "BACKEND_FAILURE",
        -                  "IP_BLOCKED",
        -                  "RESOURCE_NOT_FOUND",
        -                  "RENDER_FAILURE",
        -                  "OCR_LOW_CONFIDENCE",
        -                  "MANUAL_REVIEW_REQUIRED",
        -                  "ACCEPTANCE_REQUIRED",
        -                  "INVALID_TOKEN"
        -                ],
        -                "type": "string"
        -              },
        -              "details": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "message": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "recoverable": {
        -                "type": "boolean"
        -              },
        -              "retry_after_seconds": {
        -                "anyOf": [
        -                  {
        -                    "minimum": 0,
        -                    "type": "integer"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              }
        -            },
        -            "required": [
        -              "code",
        -              "message",
        -              "recoverable"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      }
        -    },
        -    "required": [
        -      "_meta"
        -    ],
        -    "type": "object"
        -  },
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "_meta": {
        -        "additionalProperties": false,
        -        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        -        "properties": {
        -          "deliverables": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        -                "properties": {
        -                  "docx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "dxf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "expires_at": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  },
        -                  "pdf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "xlsx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "expires_at"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "document_id": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "issued_at": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "rate_limit_remaining": {
        -            "anyOf": [
        -              {
        -                "minimum": 0,
        -                "type": "integer"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "request_id": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "schema_version": {
        -            "const": "1.0.0",
        -            "default": "1.0.0",
        -            "type": "string"
        -          },
        -          "scope_boundary": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        -                "properties": {
        -                  "not_in_scope": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "produced": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "recommended_companions": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "type": "string"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "produced",
        -                  "not_in_scope"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tier": {
        -            "enum": [
        -              "free",
        -              "paid"
        -            ],
        -            "type": "string"
        -          },
        -          "tier_upgrade": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        -                "properties": {
        -                  "available_tiers": {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        -                      "properties": {
        -                        "billing": {
        -                          "enum": [
        -                            "one_off",
        -                            "monthly",
        -                            "annual"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "currency": {
        -                          "enum": [
        -                            "GBP",
        -                            "SGD",
        -                            "EUR",
        -                            "USD",
        -                            "CAD",
        -                            "AUD",
        -                            "NZD",
        -                            "MYR"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "display_name": {
        -                          "type": "string"
        -                        },
        -                        "price_local": {
        -                          "type": "number"
        -                        },
        -                        "tier_slug": {
        -                          "enum": [
        -                            "7_day_pass",
        -                            "solo",
        -                            "studio",
        -                            "practice"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "unlock_summary": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "tier_slug",
        -                        "display_name",
        -                        "price_local",
        -                        "currency",
        -                        "billing",
        -                        "unlock_summary"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "current_tier": {
        -                    "const": "free",
        -                    "default": "free",
        -                    "type": "string"
        -                  },
        -                  "pass_credit": {
        -                    "anyOf": [
        -                      {
        -                        "additionalProperties": false,
        -                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        -                        "properties": {
        -                          "amount_local": {
        -                            "type": "number"
        -                          },
        -                          "applies_to": {
        -                            "const": "solo_first_month",
        -                            "default": "solo_first_month",
        -                            "type": "string"
        -                          },
        -                          "currency": {
        -                            "type": "string"
        -                          },
        -                          "redeemable_until": {
        -                            "type": "string"
        -                          }
        -                        },
        -                        "required": [
        -                          "amount_local",
        -                          "currency",
        -                          "redeemable_until"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "pricing_url": {
        -                    "default": "https://civilquants.com/pricing",
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "available_tiers"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tos_url": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "upgrade_hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "warranty_disclaimer": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          }
        -        },
        -        "required": [
        -          "request_id",
        -          "issued_at",
        -          "tier"
        -        ],
        -        "type": "object"
        -      },
        -      "data": {
        -        "default": null,
        -        "title": "Data"
        -      },
        -      "error": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        -            "properties": {
        -              "code": {
        -                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        -                "enum": [
        -                  "RATE_LIMIT_EXCEEDED",
        -                  "TIER_INSUFFICIENT",
        -                  "INVALID_INPUT",
        -                  "SCHEMA_VERSION_MISMATCH",
        -                  "SCHEMA_INVARIANT_VIOLATION",
        -                  "UPSTREAM_TIMEOUT",
        -                  "BACKEND_FAILURE",
        -                  "IP_BLOCKED",
        -                  "RESOURCE_NOT_FOUND",
        -                  "RENDER_FAILURE",
        -                  "OCR_LOW_CONFIDENCE",
        -                  "MANUAL_REVIEW_REQUIRED",
        -                  "ACCEPTANCE_REQUIRED",
        -                  "INVALID_TOKEN"
        -                ],
        -                "type": "string"
        -              },
        -              "details": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "message": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "recoverable": {
        -                "type": "boolean"
        -              },
        -              "retry_after_seconds": {
        -                "anyOf": [
        -                  {
        -                    "minimum": 0,
        -                    "type": "integer"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              }
        -            },
        -            "required": [
        -              "code",
        -              "message",
        -              "recoverable"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      }
        -    },
        -    "required": [
        -      "_meta"
        -    ],
        -    "type": "object"
        -  }
        -]New value: +[
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "_meta": {
        +        "additionalProperties": false,
        +        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        +        "properties": {
        +          "deliverables": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        +                "properties": {
        +                  "docx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "dxf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "expires_at": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  },
        +                  "pdf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "xlsx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "expires_at"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "document_id": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "issued_at": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "output_mode": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Surfaces what a trimmed ``output_mode`` withheld from ``data``.\n\nA trimmed mode (``summary`` / ``boq`` / ``boq_with_backup``) withholds\nalready-computed fields to keep the chat payload small. The withheld value\nreads to a client agent as \"capability missing\" (the box-culvert \"geometry\nbuilder isn't firing\" scare) rather than \"pared for size\": ``drawing`` and\n``audit_trail`` appear as ``null``, ``boq_rows`` as an empty list ``[]``\n(its type forbids ``null``) — both indistinguishable from a genuine absent\nresult. This names the withheld fields and the exact mode that brings each\nback, so the value is unambiguous. Absent on the default ``full_json`` mode\n— nothing is withheld, nothing to point at.",
        +                "properties": {
        +                  "mode": {
        +                    "enum": [
        +                      "summary",
        +                      "boq",
        +                      "boq_with_backup"
        +                    ],
        +                    "type": "string"
        +                  },
        +                  "omitted_fields": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "minItems": 1,
        +                    "type": "array"
        +                  },
        +                  "retrieve_with": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "mode",
        +                  "omitted_fields",
        +                  "retrieve_with"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "rate_limit_remaining": {
        +            "anyOf": [
        +              {
        +                "minimum": 0,
        +                "type": "integer"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "request_id": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "schema_version": {
        +            "const": "1.0.0",
        +            "default": "1.0.0",
        +            "type": "string"
        +          },
        +          "scope_boundary": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        +                "properties": {
        +                  "not_in_scope": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "produced": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "recommended_companions": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "type": "string"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "produced",
        +                  "not_in_scope"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tier": {
        +            "enum": [
        +              "free",
        +              "paid"
        +            ],
        +            "type": "string"
        +          },
        +          "tier_upgrade": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        +                "properties": {
        +                  "available_tiers": {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        +                      "properties": {
        +                        "billing": {
        +                          "enum": [
        +                            "one_off",
        +                            "monthly",
        +                            "annual"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "currency": {
        +                          "enum": [
        +                            "GBP",
        +                            "SGD",
        +                            "EUR",
        +                            "USD",
        +                            "CAD",
        +                            "AUD",
        +                            "NZD",
        +                            "MYR"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "display_name": {
        +                          "type": "string"
        +                        },
        +                        "price_local": {
        +                          "type": "number"
        +                        },
        +                        "tier_slug": {
        +                          "enum": [
        +                            "7_day_pass",
        +                            "solo",
        +                            "studio",
        +                            "practice"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "unlock_summary": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "tier_slug",
        +                        "display_name",
        +                        "price_local",
        +                        "currency",
        +                        "billing",
        +                        "unlock_summary"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "current_tier": {
        +                    "const": "free",
        +                    "default": "free",
        +                    "type": "string"
        +                  },
        +                  "pass_credit": {
        +                    "anyOf": [
        +                      {
        +                        "additionalProperties": false,
        +                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        +                        "properties": {
        +                          "amount_local": {
        +                            "type": "number"
        +                          },
        +                          "applies_to": {
        +                            "const": "solo_first_month",
        +                            "default": "solo_first_month",
        +                            "type": "string"
        +                          },
        +                          "currency": {
        +                            "type": "string"
        +                          },
        +                          "redeemable_until": {
        +                            "type": "string"
        +                          }
        +                        },
        +                        "required": [
        +                          "amount_local",
        +                          "currency",
        +                          "redeemable_until"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "pricing_url": {
        +                    "default": "https://civilquants.com/pricing",
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "available_tiers"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tos_url": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "upgrade_hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "warranty_disclaimer": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          }
        +        },
        +        "required": [
        +          "request_id",
        +          "issued_at",
        +          "tier"
        +        ],
        +        "type": "object"
        +      },
        +      "data": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Schema § 1.1 — the typed payload returned inside `MCPResponse[ComputeResult]`.\n\nFree-tier responses omit `drawings` (the downloadable CAD artefact\npointers — the paid differentiator); the bridge enforces this. The\n`audit_trail` and the inline `drawing` preview are present on BOTH tiers\n(V1 ALIGN / 60th-fire D + C). `text_summary` is bounded to 2000 chars —\nkeeps the LLM-facing summary token-cheap and forces longer narrative into\nBoQ row descriptions where it belongs. `warnings` is the non-fatal\ngeometry advisory list (both tiers).",
        +            "properties": {
        +              "assembly_slug": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "audit_trail": {
        +                "anyOf": [
        +                  {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.7 — paid-tier audit-trail entry.\n\nOne entry per BoQ row; `boq_row_index` ties to the row position in\n`ComputeResult.boq_rows`. `derivation` is the human-readable formula\nwalk-through; `formula` is the optional formal expression.",
        +                      "properties": {
        +                        "boq_row_index": {
        +                          "minimum": 0,
        +                          "type": "integer"
        +                        },
        +                        "derivation": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "formula": {
        +                          "anyOf": [
        +                            {
        +                              "type": "string"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ],
        +                          "default": null
        +                        },
        +                        "id": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "parameters_referenced": {
        +                          "items": {
        +                            "type": "string"
        +                          },
        +                          "type": "array"
        +                        }
        +                      },
        +                      "required": [
        +                        "id",
        +                        "boq_row_index",
        +                        "derivation"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "boq_rows": {
        +                "items": {
        +                  "additionalProperties": false,
        +                  "description": "Schema § 1.3 — a single bill row in the requested standard's format.\n\n`description` is the non-verbatim functional description per spec § 13.9 /\n§ 15 invariant — NEVER reproduces a standard's verbatim clause text.\n`rate` / `amount` ship null because rates are commodity data the customer\nowns; the engine's job is the measurement, not the pricing.",
        +                  "properties": {
        +                    "amount": {
        +                      "anyOf": [
        +                        {
        +                          "type": "number"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "attribution": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "audit_id": {
        +                      "anyOf": [
        +                        {
        +                          "type": "string"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "description": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "quantity": {
        +                      "minimum": 0,
        +                      "type": "number"
        +                    },
        +                    "rate": {
        +                      "anyOf": [
        +                        {
        +                          "type": "number"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "unit": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "work_section": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    }
        +                  },
        +                  "required": [
        +                    "work_section",
        +                    "description",
        +                    "quantity",
        +                    "unit",
        +                    "attribution"
        +                  ],
        +                  "type": "object"
        +                },
        +                "type": "array"
        +              },
        +              "drawing": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": false,
        +                    "description": "Schema § 1.6a — inline server-rendered SVG preview of the geometry.\n\nThe MCP mirror of the web ``/compute`` response's ``drawing`` field\n(``api.schemas.compute.DrawingRef``): the same on-screen dimensioned\ndrawing both tiers see in the workspace, surfaced on the MCP compute\nresponse so a chat client can render it inline (60th-fire item C). This\nis the on-screen preview — present on BOTH tiers per the free/paid\nboundary; the downloadable CAD artefacts (DXF / dimensioned PDF) remain\nthe paid differentiator via the export tools.\n\nDefined here rather than importing ``DrawingRef`` because the web\n``schemas`` package imports back into this module (``schemas.render``),\nso reusing it would create an import cycle — the MCP wire contract keeps\nits own copy, the same pattern as ``BoQRow`` / ``DrawingReference``.",
        +                    "properties": {
        +                      "entity_count": {
        +                        "minimum": 0,
        +                        "type": "integer"
        +                      },
        +                      "svg_b64": {
        +                        "minLength": 1,
        +                        "type": "string"
        +                      },
        +                      "unit_of_drawing": {
        +                        "const": "m",
        +                        "default": "m",
        +                        "type": "string"
        +                      },
        +                      "viewbox_height": {
        +                        "exclusiveMinimum": 0,
        +                        "type": "number"
        +                      },
        +                      "viewbox_width": {
        +                        "exclusiveMinimum": 0,
        +                        "type": "number"
        +                      },
        +                      "viewbox_x": {
        +                        "type": "number"
        +                      },
        +                      "viewbox_y": {
        +                        "type": "number"
        +                      }
        +                    },
        +                    "required": [
        +                      "svg_b64",
        +                      "viewbox_x",
        +                      "viewbox_y",
        +                      "viewbox_width",
        +                      "viewbox_height",
        +                      "entity_count"
        +                    ],
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "drawings": {
        +                "anyOf": [
        +                  {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.6 — paid-tier drawing artefact pointer.\n\n`url` is an R2-signed URL; expiry is carried in `_meta.deliverables.expires_at`\non the envelope (not duplicated here). `layers` is DXF-only; PDF/SVG\ncallers omit it.",
        +                      "properties": {
        +                        "drawing_type": {
        +                          "enum": [
        +                            "section",
        +                            "plan",
        +                            "elevation",
        +                            "isometric",
        +                            "detail"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "format": {
        +                          "enum": [
        +                            "DXF",
        +                            "PDF",
        +                            "SVG"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "layers": {
        +                          "anyOf": [
        +                            {
        +                              "items": {
        +                                "type": "string"
        +                              },
        +                              "type": "array"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ],
        +                          "default": null
        +                        },
        +                        "scale": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "sheet_size": {
        +                          "enum": [
        +                            "A1",
        +                            "A2",
        +                            "A3",
        +                            "A4"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "url": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "drawing_type",
        +                        "format",
        +                        "url",
        +                        "sheet_size",
        +                        "scale"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "parameters_used": {
        +                "additionalProperties": false,
        +                "description": "Schema § 1.2 — the parameter snapshot the engine actually used.\n\nSplits user-supplied values from engine defaults so customers can see\nwhich numbers came from them and which the engine filled in. Every\ndefaulted parameter SHOULD have a corresponding entry in `assumptions`\n— the bridge layer enforces this when wrapping engine output.",
        +                "properties": {
        +                  "assumptions": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "engine_defaults": {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  "user_supplied": {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  }
        +                },
        +                "type": "object"
        +              },
        +              "standard": {
        +                "enum": [
        +                  "CESMM4",
        +                  "NRM2",
        +                  "SMM7",
        +                  "MMHW"
        +                ],
        +                "type": "string"
        +              },
        +              "text_summary": {
        +                "maxLength": 2000,
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "totals_summary": {
        +                "additionalProperties": false,
        +                "description": "Schema § 1.4 — totals_summary as a typed wrapper around the free-form dict.\n\nWire shape is a flat object (`{\"concrete_m3\": {...}, \"rebar_t\": {...}}`).\nWe model it as `RootModel`-equivalent via `model_config(extra=\"allow\")`\n+ a single `__root__`-style `entries` dict. Pydantic v2 recommends\n`RootModel` for free-form roots; using a wrapper class keeps the import\nsurface uniform with the rest of this module.",
        +                "properties": {
        +                  "entries": {
        +                    "additionalProperties": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.4 — single material/work-class total entry.",
        +                      "properties": {
        +                        "quantity": {
        +                          "minimum": 0,
        +                          "type": "number"
        +                        },
        +                        "unit": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "quantity",
        +                        "unit"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "object"
        +                  }
        +                },
        +                "type": "object"
        +              },
        +              "warnings": {
        +                "items": {
        +                  "additionalProperties": false,
        +                  "description": "Schema § 1.8 — a non-fatal geometry advisory (56th-fire T2).\n\nThe wire projection of the engine's `core.GeometryWarning`. Advisory only:\na warning NEVER changes a measured quantity — it flags geometry that is\nvalid but likely a mistake (e.g. a stale dependent-height default). Present\non BOTH tiers — a correctness/safety signal, not a paid feature.",
        +                  "properties": {
        +                    "affected_params": {
        +                      "items": {
        +                        "type": "string"
        +                      },
        +                      "type": "array"
        +                    },
        +                    "code": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "detail": {
        +                      "additionalProperties": {
        +                        "type": "number"
        +                      },
        +                      "type": "object"
        +                    },
        +                    "message": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "severity": {
        +                      "enum": [
        +                        "info",
        +                        "advisory",
        +                        "caution"
        +                      ],
        +                      "type": "string"
        +                    }
        +                  },
        +                  "required": [
        +                    "code",
        +                    "severity",
        +                    "message"
        +                  ],
        +                  "type": "object"
        +                },
        +                "type": "array"
        +              }
        +            },
        +            "required": [
        +              "assembly_slug",
        +              "standard",
        +              "parameters_used",
        +              "boq_rows",
        +              "totals_summary",
        +              "text_summary"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      },
        +      "error": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        +            "properties": {
        +              "code": {
        +                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        +                "enum": [
        +                  "RATE_LIMIT_EXCEEDED",
        +                  "TIER_INSUFFICIENT",
        +                  "INVALID_INPUT",
        +                  "SCHEMA_VERSION_MISMATCH",
        +                  "SCHEMA_INVARIANT_VIOLATION",
        +                  "UPSTREAM_TIMEOUT",
        +                  "BACKEND_FAILURE",
        +                  "IP_BLOCKED",
        +                  "RESOURCE_NOT_FOUND",
        +                  "RENDER_FAILURE",
        +                  "OCR_LOW_CONFIDENCE",
        +                  "MANUAL_REVIEW_REQUIRED",
        +                  "ACCEPTANCE_REQUIRED",
        +                  "INVALID_TOKEN"
        +                ],
        +                "type": "string"
        +              },
        +              "details": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "message": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "recoverable": {
        +                "type": "boolean"
        +              },
        +              "retry_after_seconds": {
        +                "anyOf": [
        +                  {
        +                    "minimum": 0,
        +                    "type": "integer"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              }
        +            },
        +            "required": [
        +              "code",
        +              "message",
        +              "recoverable"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      }
        +    },
        +    "required": [
        +      "_meta"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "_meta": {
        +        "additionalProperties": false,
        +        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        +        "properties": {
        +          "deliverables": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        +                "properties": {
        +                  "docx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "dxf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "expires_at": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  },
        +                  "pdf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "xlsx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "expires_at"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "document_id": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "issued_at": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "output_mode": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Surfaces what a trimmed ``output_mode`` withheld from ``data``.\n\nA trimmed mode (``summary`` / ``boq`` / ``boq_with_backup``) withholds\nalready-computed fields to keep the chat payload small. The withheld value\nreads to a client agent as \"capability missing\" (the box-culvert \"geometry\nbuilder isn't firing\" scare) rather than \"pared for size\": ``drawing`` and\n``audit_trail`` appear as ``null``, ``boq_rows`` as an empty list ``[]``\n(its type forbids ``null``) — both indistinguishable from a genuine absent\nresult. This names the withheld fields and the exact mode that brings each\nback, so the value is unambiguous. Absent on the default ``full_json`` mode\n— nothing is withheld, nothing to point at.",
        +                "properties": {
        +                  "mode": {
        +                    "enum": [
        +                      "summary",
        +                      "boq",
        +                      "boq_with_backup"
        +                    ],
        +                    "type": "string"
        +                  },
        +                  "omitted_fields": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "minItems": 1,
        +                    "type": "array"
        +                  },
        +                  "retrieve_with": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "mode",
        +                  "omitted_fields",
        +                  "retrieve_with"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "rate_limit_remaining": {
        +            "anyOf": [
        +              {
        +                "minimum": 0,
        +                "type": "integer"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "request_id": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "schema_version": {
        +            "const": "1.0.0",
        +            "default": "1.0.0",
        +            "type": "string"
        +          },
        +          "scope_boundary": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        +                "properties": {
        +                  "not_in_scope": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "produced": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "recommended_companions": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "type": "string"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "produced",
        +                  "not_in_scope"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tier": {
        +            "enum": [
        +              "free",
        +              "paid"
        +            ],
        +            "type": "string"
        +          },
        +          "tier_upgrade": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        +                "properties": {
        +                  "available_tiers": {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        +                      "properties": {
        +                        "billing": {
        +                          "enum": [
        +                            "one_off",
        +                            "monthly",
        +                            "annual"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "currency": {
        +                          "enum": [
        +                            "GBP",
        +                            "SGD",
        +                            "EUR",
        +                            "USD",
        +                            "CAD",
        +                            "AUD",
        +                            "NZD",
        +                            "MYR"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "display_name": {
        +                          "type": "string"
        +                        },
        +                        "price_local": {
        +                          "type": "number"
        +                        },
        +                        "tier_slug": {
        +                          "enum": [
        +                            "7_day_pass",
        +                            "solo",
        +                            "studio",
        +                            "practice"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "unlock_summary": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "tier_slug",
        +                        "display_name",
        +                        "price_local",
        +                        "currency",
        +                        "billing",
        +                        "unlock_summary"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "current_tier": {
        +                    "const": "free",
        +                    "default": "free",
        +                    "type": "string"
        +                  },
        +                  "pass_credit": {
        +                    "anyOf": [
        +                      {
        +                        "additionalProperties": false,
        +                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        +                        "properties": {
        +                          "amount_local": {
        +                            "type": "number"
        +                          },
        +                          "applies_to": {
        +                            "const": "solo_first_month",
        +                            "default": "solo_first_month",
        +                            "type": "string"
        +                          },
        +                          "currency": {
        +                            "type": "string"
        +                          },
        +                          "redeemable_until": {
        +                            "type": "string"
        +                          }
        +                        },
        +                        "required": [
        +                          "amount_local",
        +                          "currency",
        +                          "redeemable_until"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "pricing_url": {
        +                    "default": "https://civilquants.com/pricing",
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "available_tiers"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tos_url": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "upgrade_hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "warranty_disclaimer": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          }
        +        },
        +        "required": [
        +          "request_id",
        +          "issued_at",
        +          "tier"
        +        ],
        +        "type": "object"
        +      },
        +      "data": {
        +        "default": null,
        +        "title": "Data"
        +      },
        +      "error": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        +            "properties": {
        +              "code": {
        +                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        +                "enum": [
        +                  "RATE_LIMIT_EXCEEDED",
        +                  "TIER_INSUFFICIENT",
        +                  "INVALID_INPUT",
        +                  "SCHEMA_VERSION_MISMATCH",
        +                  "SCHEMA_INVARIANT_VIOLATION",
        +                  "UPSTREAM_TIMEOUT",
        +                  "BACKEND_FAILURE",
        +                  "IP_BLOCKED",
        +                  "RESOURCE_NOT_FOUND",
        +                  "RENDER_FAILURE",
        +                  "OCR_LOW_CONFIDENCE",
        +                  "MANUAL_REVIEW_REQUIRED",
        +                  "ACCEPTANCE_REQUIRED",
        +                  "INVALID_TOKEN"
        +                ],
        +                "type": "string"
        +              },
        +              "details": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "message": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "recoverable": {
        +                "type": "boolean"
        +              },
        +              "retry_after_seconds": {
        +                "anyOf": [
        +                  {
        +                    "minimum": 0,
        +                    "type": "integer"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              }
        +            },
        +            "required": [
        +              "code",
        +              "message",
        +              "recoverable"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      }
        +    },
        +    "required": [
        +      "_meta"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedcompute_rigid_pavement1 field changed
      • changedOutput schema / properties / result / anyOf
        Previous value: -[
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "_meta": {
        -        "additionalProperties": false,
        -        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        -        "properties": {
        -          "deliverables": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        -                "properties": {
        -                  "docx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "dxf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "expires_at": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  },
        -                  "pdf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "xlsx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "expires_at"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "document_id": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "issued_at": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "rate_limit_remaining": {
        -            "anyOf": [
        -              {
        -                "minimum": 0,
        -                "type": "integer"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "request_id": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "schema_version": {
        -            "const": "1.0.0",
        -            "default": "1.0.0",
        -            "type": "string"
        -          },
        -          "scope_boundary": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        -                "properties": {
        -                  "not_in_scope": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "produced": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "recommended_companions": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "type": "string"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "produced",
        -                  "not_in_scope"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tier": {
        -            "enum": [
        -              "free",
        -              "paid"
        -            ],
        -            "type": "string"
        -          },
        -          "tier_upgrade": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        -                "properties": {
        -                  "available_tiers": {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        -                      "properties": {
        -                        "billing": {
        -                          "enum": [
        -                            "one_off",
        -                            "monthly",
        -                            "annual"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "currency": {
        -                          "enum": [
        -                            "GBP",
        -                            "SGD",
        -                            "EUR",
        -                            "USD",
        -                            "CAD",
        -                            "AUD",
        -                            "NZD",
        -                            "MYR"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "display_name": {
        -                          "type": "string"
        -                        },
        -                        "price_local": {
        -                          "type": "number"
        -                        },
        -                        "tier_slug": {
        -                          "enum": [
        -                            "7_day_pass",
        -                            "solo",
        -                            "studio",
        -                            "practice"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "unlock_summary": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "tier_slug",
        -                        "display_name",
        -                        "price_local",
        -                        "currency",
        -                        "billing",
        -                        "unlock_summary"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "current_tier": {
        -                    "const": "free",
        -                    "default": "free",
        -                    "type": "string"
        -                  },
        -                  "pass_credit": {
        -                    "anyOf": [
        -                      {
        -                        "additionalProperties": false,
        -                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        -                        "properties": {
        -                          "amount_local": {
        -                            "type": "number"
        -                          },
        -                          "applies_to": {
        -                            "const": "solo_first_month",
        -                            "default": "solo_first_month",
        -                            "type": "string"
        -                          },
        -                          "currency": {
        -                            "type": "string"
        -                          },
        -                          "redeemable_until": {
        -                            "type": "string"
        -                          }
        -                        },
        -                        "required": [
        -                          "amount_local",
        -                          "currency",
        -                          "redeemable_until"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "pricing_url": {
        -                    "default": "https://civilquants.com/pricing",
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "available_tiers"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tos_url": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "upgrade_hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "warranty_disclaimer": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          }
        -        },
        -        "required": [
        -          "request_id",
        -          "issued_at",
        -          "tier"
        -        ],
        -        "type": "object"
        -      },
        -      "data": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Schema § 1.1 — the typed payload returned inside `MCPResponse[ComputeResult]`.\n\nFree-tier responses omit `drawings` (the downloadable CAD artefact\npointers — the paid differentiator); the bridge enforces this. The\n`audit_trail` and the inline `drawing` preview are present on BOTH tiers\n(V1 ALIGN / 60th-fire D + C). `text_summary` is bounded to 2000 chars —\nkeeps the LLM-facing summary token-cheap and forces longer narrative into\nBoQ row descriptions where it belongs. `warnings` is the non-fatal\ngeometry advisory list (both tiers).",
        -            "properties": {
        -              "assembly_slug": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "audit_trail": {
        -                "anyOf": [
        -                  {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.7 — paid-tier audit-trail entry.\n\nOne entry per BoQ row; `boq_row_index` ties to the row position in\n`ComputeResult.boq_rows`. `derivation` is the human-readable formula\nwalk-through; `formula` is the optional formal expression.",
        -                      "properties": {
        -                        "boq_row_index": {
        -                          "minimum": 0,
        -                          "type": "integer"
        -                        },
        -                        "derivation": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "formula": {
        -                          "anyOf": [
        -                            {
        -                              "type": "string"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ],
        -                          "default": null
        -                        },
        -                        "id": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "parameters_referenced": {
        -                          "items": {
        -                            "type": "string"
        -                          },
        -                          "type": "array"
        -                        }
        -                      },
        -                      "required": [
        -                        "id",
        -                        "boq_row_index",
        -                        "derivation"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "boq_rows": {
        -                "items": {
        -                  "additionalProperties": false,
        -                  "description": "Schema § 1.3 — a single bill row in the requested standard's format.\n\n`description` is the non-verbatim functional description per spec § 13.9 /\n§ 15 invariant — NEVER reproduces a standard's verbatim clause text.\n`rate` / `amount` ship null because rates are commodity data the customer\nowns; the engine's job is the measurement, not the pricing.",
        -                  "properties": {
        -                    "amount": {
        -                      "anyOf": [
        -                        {
        -                          "type": "number"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "attribution": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "audit_id": {
        -                      "anyOf": [
        -                        {
        -                          "type": "string"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "description": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "quantity": {
        -                      "minimum": 0,
        -                      "type": "number"
        -                    },
        -                    "rate": {
        -                      "anyOf": [
        -                        {
        -                          "type": "number"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "unit": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "work_section": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    }
        -                  },
        -                  "required": [
        -                    "work_section",
        -                    "description",
        -                    "quantity",
        -                    "unit",
        -                    "attribution"
        -                  ],
        -                  "type": "object"
        -                },
        -                "type": "array"
        -              },
        -              "drawing": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": false,
        -                    "description": "Schema § 1.6a — inline server-rendered SVG preview of the geometry.\n\nThe MCP mirror of the web ``/compute`` response's ``drawing`` field\n(``api.schemas.compute.DrawingRef``): the same on-screen dimensioned\ndrawing both tiers see in the workspace, surfaced on the MCP compute\nresponse so a chat client can render it inline (60th-fire item C). This\nis the on-screen preview — present on BOTH tiers per the free/paid\nboundary; the downloadable CAD artefacts (DXF / dimensioned PDF) remain\nthe paid differentiator via the export tools.\n\nDefined here rather than importing ``DrawingRef`` because the web\n``schemas`` package imports back into this module (``schemas.render``),\nso reusing it would create an import cycle — the MCP wire contract keeps\nits own copy, the same pattern as ``BoQRow`` / ``DrawingReference``.",
        -                    "properties": {
        -                      "entity_count": {
        -                        "minimum": 0,
        -                        "type": "integer"
        -                      },
        -                      "svg_b64": {
        -                        "minLength": 1,
        -                        "type": "string"
        -                      },
        -                      "unit_of_drawing": {
        -                        "const": "m",
        -                        "default": "m",
        -                        "type": "string"
        -                      },
        -                      "viewbox_height": {
        -                        "exclusiveMinimum": 0,
        -                        "type": "number"
        -                      },
        -                      "viewbox_width": {
        -                        "exclusiveMinimum": 0,
        -                        "type": "number"
        -                      },
        -                      "viewbox_x": {
        -                        "type": "number"
        -                      },
        -                      "viewbox_y": {
        -                        "type": "number"
        -                      }
        -                    },
        -                    "required": [
        -                      "svg_b64",
        -                      "viewbox_x",
        -                      "viewbox_y",
        -                      "viewbox_width",
        -                      "viewbox_height",
        -                      "entity_count"
        -                    ],
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "drawings": {
        -                "anyOf": [
        -                  {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.6 — paid-tier drawing artefact pointer.\n\n`url` is an R2-signed URL; expiry is carried in `_meta.deliverables.expires_at`\non the envelope (not duplicated here). `layers` is DXF-only; PDF/SVG\ncallers omit it.",
        -                      "properties": {
        -                        "drawing_type": {
        -                          "enum": [
        -                            "section",
        -                            "plan",
        -                            "elevation",
        -                            "isometric",
        -                            "detail"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "format": {
        -                          "enum": [
        -                            "DXF",
        -                            "PDF",
        -                            "SVG"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "layers": {
        -                          "anyOf": [
        -                            {
        -                              "items": {
        -                                "type": "string"
        -                              },
        -                              "type": "array"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ],
        -                          "default": null
        -                        },
        -                        "scale": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "sheet_size": {
        -                          "enum": [
        -                            "A1",
        -                            "A2",
        -                            "A3",
        -                            "A4"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "url": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "drawing_type",
        -                        "format",
        -                        "url",
        -                        "sheet_size",
        -                        "scale"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "parameters_used": {
        -                "additionalProperties": false,
        -                "description": "Schema § 1.2 — the parameter snapshot the engine actually used.\n\nSplits user-supplied values from engine defaults so customers can see\nwhich numbers came from them and which the engine filled in. Every\ndefaulted parameter SHOULD have a corresponding entry in `assumptions`\n— the bridge layer enforces this when wrapping engine output.",
        -                "properties": {
        -                  "assumptions": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "engine_defaults": {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  "user_supplied": {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  }
        -                },
        -                "type": "object"
        -              },
        -              "standard": {
        -                "enum": [
        -                  "CESMM4",
        -                  "NRM2",
        -                  "SMM7",
        -                  "MMHW"
        -                ],
        -                "type": "string"
        -              },
        -              "text_summary": {
        -                "maxLength": 2000,
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "totals_summary": {
        -                "additionalProperties": false,
        -                "description": "Schema § 1.4 — totals_summary as a typed wrapper around the free-form dict.\n\nWire shape is a flat object (`{\"concrete_m3\": {...}, \"rebar_t\": {...}}`).\nWe model it as `RootModel`-equivalent via `model_config(extra=\"allow\")`\n+ a single `__root__`-style `entries` dict. Pydantic v2 recommends\n`RootModel` for free-form roots; using a wrapper class keeps the import\nsurface uniform with the rest of this module.",
        -                "properties": {
        -                  "entries": {
        -                    "additionalProperties": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.4 — single material/work-class total entry.",
        -                      "properties": {
        -                        "quantity": {
        -                          "minimum": 0,
        -                          "type": "number"
        -                        },
        -                        "unit": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "quantity",
        -                        "unit"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "object"
        -                  }
        -                },
        -                "type": "object"
        -              },
        -              "warnings": {
        -                "items": {
        -                  "additionalProperties": false,
        -                  "description": "Schema § 1.8 — a non-fatal geometry advisory (56th-fire T2).\n\nThe wire projection of the engine's `core.GeometryWarning`. Advisory only:\na warning NEVER changes a measured quantity — it flags geometry that is\nvalid but likely a mistake (e.g. a stale dependent-height default). Present\non BOTH tiers — a correctness/safety signal, not a paid feature.",
        -                  "properties": {
        -                    "affected_params": {
        -                      "items": {
        -                        "type": "string"
        -                      },
        -                      "type": "array"
        -                    },
        -                    "code": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "detail": {
        -                      "additionalProperties": {
        -                        "type": "number"
        -                      },
        -                      "type": "object"
        -                    },
        -                    "message": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "severity": {
        -                      "enum": [
        -                        "info",
        -                        "advisory",
        -                        "caution"
        -                      ],
        -                      "type": "string"
        -                    }
        -                  },
        -                  "required": [
        -                    "code",
        -                    "severity",
        -                    "message"
        -                  ],
        -                  "type": "object"
        -                },
        -                "type": "array"
        -              }
        -            },
        -            "required": [
        -              "assembly_slug",
        -              "standard",
        -              "parameters_used",
        -              "boq_rows",
        -              "totals_summary",
        -              "text_summary"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      },
        -      "error": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        -            "properties": {
        -              "code": {
        -                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        -                "enum": [
        -                  "RATE_LIMIT_EXCEEDED",
        -                  "TIER_INSUFFICIENT",
        -                  "INVALID_INPUT",
        -                  "SCHEMA_VERSION_MISMATCH",
        -                  "SCHEMA_INVARIANT_VIOLATION",
        -                  "UPSTREAM_TIMEOUT",
        -                  "BACKEND_FAILURE",
        -                  "IP_BLOCKED",
        -                  "RESOURCE_NOT_FOUND",
        -                  "RENDER_FAILURE",
        -                  "OCR_LOW_CONFIDENCE",
        -                  "MANUAL_REVIEW_REQUIRED",
        -                  "ACCEPTANCE_REQUIRED",
        -                  "INVALID_TOKEN"
        -                ],
        -                "type": "string"
        -              },
        -              "details": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "message": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "recoverable": {
        -                "type": "boolean"
        -              },
        -              "retry_after_seconds": {
        -                "anyOf": [
        -                  {
        -                    "minimum": 0,
        -                    "type": "integer"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              }
        -            },
        -            "required": [
        -              "code",
        -              "message",
        -              "recoverable"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      }
        -    },
        -    "required": [
        -      "_meta"
        -    ],
        -    "type": "object"
        -  },
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "_meta": {
        -        "additionalProperties": false,
        -        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        -        "properties": {
        -          "deliverables": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        -                "properties": {
        -                  "docx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "dxf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "expires_at": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  },
        -                  "pdf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "xlsx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "expires_at"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "document_id": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "issued_at": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "rate_limit_remaining": {
        -            "anyOf": [
        -              {
        -                "minimum": 0,
        -                "type": "integer"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "request_id": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "schema_version": {
        -            "const": "1.0.0",
        -            "default": "1.0.0",
        -            "type": "string"
        -          },
        -          "scope_boundary": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        -                "properties": {
        -                  "not_in_scope": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "produced": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "recommended_companions": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "type": "string"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "produced",
        -                  "not_in_scope"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tier": {
        -            "enum": [
        -              "free",
        -              "paid"
        -            ],
        -            "type": "string"
        -          },
        -          "tier_upgrade": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        -                "properties": {
        -                  "available_tiers": {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        -                      "properties": {
        -                        "billing": {
        -                          "enum": [
        -                            "one_off",
        -                            "monthly",
        -                            "annual"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "currency": {
        -                          "enum": [
        -                            "GBP",
        -                            "SGD",
        -                            "EUR",
        -                            "USD",
        -                            "CAD",
        -                            "AUD",
        -                            "NZD",
        -                            "MYR"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "display_name": {
        -                          "type": "string"
        -                        },
        -                        "price_local": {
        -                          "type": "number"
        -                        },
        -                        "tier_slug": {
        -                          "enum": [
        -                            "7_day_pass",
        -                            "solo",
        -                            "studio",
        -                            "practice"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "unlock_summary": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "tier_slug",
        -                        "display_name",
        -                        "price_local",
        -                        "currency",
        -                        "billing",
        -                        "unlock_summary"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "current_tier": {
        -                    "const": "free",
        -                    "default": "free",
        -                    "type": "string"
        -                  },
        -                  "pass_credit": {
        -                    "anyOf": [
        -                      {
        -                        "additionalProperties": false,
        -                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        -                        "properties": {
        -                          "amount_local": {
        -                            "type": "number"
        -                          },
        -                          "applies_to": {
        -                            "const": "solo_first_month",
        -                            "default": "solo_first_month",
        -                            "type": "string"
        -                          },
        -                          "currency": {
        -                            "type": "string"
        -                          },
        -                          "redeemable_until": {
        -                            "type": "string"
        -                          }
        -                        },
        -                        "required": [
        -                          "amount_local",
        -                          "currency",
        -                          "redeemable_until"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "pricing_url": {
        -                    "default": "https://civilquants.com/pricing",
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "available_tiers"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tos_url": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "upgrade_hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "warranty_disclaimer": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          }
        -        },
        -        "required": [
        -          "request_id",
        -          "issued_at",
        -          "tier"
        -        ],
        -        "type": "object"
        -      },
        -      "data": {
        -        "default": null,
        -        "title": "Data"
        -      },
        -      "error": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        -            "properties": {
        -              "code": {
        -                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        -                "enum": [
        -                  "RATE_LIMIT_EXCEEDED",
        -                  "TIER_INSUFFICIENT",
        -                  "INVALID_INPUT",
        -                  "SCHEMA_VERSION_MISMATCH",
        -                  "SCHEMA_INVARIANT_VIOLATION",
        -                  "UPSTREAM_TIMEOUT",
        -                  "BACKEND_FAILURE",
        -                  "IP_BLOCKED",
        -                  "RESOURCE_NOT_FOUND",
        -                  "RENDER_FAILURE",
        -                  "OCR_LOW_CONFIDENCE",
        -                  "MANUAL_REVIEW_REQUIRED",
        -                  "ACCEPTANCE_REQUIRED",
        -                  "INVALID_TOKEN"
        -                ],
        -                "type": "string"
        -              },
        -              "details": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "message": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "recoverable": {
        -                "type": "boolean"
        -              },
        -              "retry_after_seconds": {
        -                "anyOf": [
        -                  {
        -                    "minimum": 0,
        -                    "type": "integer"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              }
        -            },
        -            "required": [
        -              "code",
        -              "message",
        -              "recoverable"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      }
        -    },
        -    "required": [
        -      "_meta"
        -    ],
        -    "type": "object"
        -  }
        -]New value: +[
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "_meta": {
        +        "additionalProperties": false,
        +        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        +        "properties": {
        +          "deliverables": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        +                "properties": {
        +                  "docx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "dxf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "expires_at": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  },
        +                  "pdf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "xlsx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "expires_at"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "document_id": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "issued_at": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "output_mode": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Surfaces what a trimmed ``output_mode`` withheld from ``data``.\n\nA trimmed mode (``summary`` / ``boq`` / ``boq_with_backup``) withholds\nalready-computed fields to keep the chat payload small. The withheld value\nreads to a client agent as \"capability missing\" (the box-culvert \"geometry\nbuilder isn't firing\" scare) rather than \"pared for size\": ``drawing`` and\n``audit_trail`` appear as ``null``, ``boq_rows`` as an empty list ``[]``\n(its type forbids ``null``) — both indistinguishable from a genuine absent\nresult. This names the withheld fields and the exact mode that brings each\nback, so the value is unambiguous. Absent on the default ``full_json`` mode\n— nothing is withheld, nothing to point at.",
        +                "properties": {
        +                  "mode": {
        +                    "enum": [
        +                      "summary",
        +                      "boq",
        +                      "boq_with_backup"
        +                    ],
        +                    "type": "string"
        +                  },
        +                  "omitted_fields": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "minItems": 1,
        +                    "type": "array"
        +                  },
        +                  "retrieve_with": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "mode",
        +                  "omitted_fields",
        +                  "retrieve_with"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "rate_limit_remaining": {
        +            "anyOf": [
        +              {
        +                "minimum": 0,
        +                "type": "integer"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "request_id": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "schema_version": {
        +            "const": "1.0.0",
        +            "default": "1.0.0",
        +            "type": "string"
        +          },
        +          "scope_boundary": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        +                "properties": {
        +                  "not_in_scope": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "produced": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "recommended_companions": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "type": "string"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "produced",
        +                  "not_in_scope"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tier": {
        +            "enum": [
        +              "free",
        +              "paid"
        +            ],
        +            "type": "string"
        +          },
        +          "tier_upgrade": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        +                "properties": {
        +                  "available_tiers": {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        +                      "properties": {
        +                        "billing": {
        +                          "enum": [
        +                            "one_off",
        +                            "monthly",
        +                            "annual"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "currency": {
        +                          "enum": [
        +                            "GBP",
        +                            "SGD",
        +                            "EUR",
        +                            "USD",
        +                            "CAD",
        +                            "AUD",
        +                            "NZD",
        +                            "MYR"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "display_name": {
        +                          "type": "string"
        +                        },
        +                        "price_local": {
        +                          "type": "number"
        +                        },
        +                        "tier_slug": {
        +                          "enum": [
        +                            "7_day_pass",
        +                            "solo",
        +                            "studio",
        +                            "practice"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "unlock_summary": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "tier_slug",
        +                        "display_name",
        +                        "price_local",
        +                        "currency",
        +                        "billing",
        +                        "unlock_summary"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "current_tier": {
        +                    "const": "free",
        +                    "default": "free",
        +                    "type": "string"
        +                  },
        +                  "pass_credit": {
        +                    "anyOf": [
        +                      {
        +                        "additionalProperties": false,
        +                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        +                        "properties": {
        +                          "amount_local": {
        +                            "type": "number"
        +                          },
        +                          "applies_to": {
        +                            "const": "solo_first_month",
        +                            "default": "solo_first_month",
        +                            "type": "string"
        +                          },
        +                          "currency": {
        +                            "type": "string"
        +                          },
        +                          "redeemable_until": {
        +                            "type": "string"
        +                          }
        +                        },
        +                        "required": [
        +                          "amount_local",
        +                          "currency",
        +                          "redeemable_until"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "pricing_url": {
        +                    "default": "https://civilquants.com/pricing",
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "available_tiers"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tos_url": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "upgrade_hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "warranty_disclaimer": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          }
        +        },
        +        "required": [
        +          "request_id",
        +          "issued_at",
        +          "tier"
        +        ],
        +        "type": "object"
        +      },
        +      "data": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Schema § 1.1 — the typed payload returned inside `MCPResponse[ComputeResult]`.\n\nFree-tier responses omit `drawings` (the downloadable CAD artefact\npointers — the paid differentiator); the bridge enforces this. The\n`audit_trail` and the inline `drawing` preview are present on BOTH tiers\n(V1 ALIGN / 60th-fire D + C). `text_summary` is bounded to 2000 chars —\nkeeps the LLM-facing summary token-cheap and forces longer narrative into\nBoQ row descriptions where it belongs. `warnings` is the non-fatal\ngeometry advisory list (both tiers).",
        +            "properties": {
        +              "assembly_slug": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "audit_trail": {
        +                "anyOf": [
        +                  {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.7 — paid-tier audit-trail entry.\n\nOne entry per BoQ row; `boq_row_index` ties to the row position in\n`ComputeResult.boq_rows`. `derivation` is the human-readable formula\nwalk-through; `formula` is the optional formal expression.",
        +                      "properties": {
        +                        "boq_row_index": {
        +                          "minimum": 0,
        +                          "type": "integer"
        +                        },
        +                        "derivation": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "formula": {
        +                          "anyOf": [
        +                            {
        +                              "type": "string"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ],
        +                          "default": null
        +                        },
        +                        "id": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "parameters_referenced": {
        +                          "items": {
        +                            "type": "string"
        +                          },
        +                          "type": "array"
        +                        }
        +                      },
        +                      "required": [
        +                        "id",
        +                        "boq_row_index",
        +                        "derivation"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "boq_rows": {
        +                "items": {
        +                  "additionalProperties": false,
        +                  "description": "Schema § 1.3 — a single bill row in the requested standard's format.\n\n`description` is the non-verbatim functional description per spec § 13.9 /\n§ 15 invariant — NEVER reproduces a standard's verbatim clause text.\n`rate` / `amount` ship null because rates are commodity data the customer\nowns; the engine's job is the measurement, not the pricing.",
        +                  "properties": {
        +                    "amount": {
        +                      "anyOf": [
        +                        {
        +                          "type": "number"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "attribution": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "audit_id": {
        +                      "anyOf": [
        +                        {
        +                          "type": "string"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "description": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "quantity": {
        +                      "minimum": 0,
        +                      "type": "number"
        +                    },
        +                    "rate": {
        +                      "anyOf": [
        +                        {
        +                          "type": "number"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "unit": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "work_section": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    }
        +                  },
        +                  "required": [
        +                    "work_section",
        +                    "description",
        +                    "quantity",
        +                    "unit",
        +                    "attribution"
        +                  ],
        +                  "type": "object"
        +                },
        +                "type": "array"
        +              },
        +              "drawing": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": false,
        +                    "description": "Schema § 1.6a — inline server-rendered SVG preview of the geometry.\n\nThe MCP mirror of the web ``/compute`` response's ``drawing`` field\n(``api.schemas.compute.DrawingRef``): the same on-screen dimensioned\ndrawing both tiers see in the workspace, surfaced on the MCP compute\nresponse so a chat client can render it inline (60th-fire item C). This\nis the on-screen preview — present on BOTH tiers per the free/paid\nboundary; the downloadable CAD artefacts (DXF / dimensioned PDF) remain\nthe paid differentiator via the export tools.\n\nDefined here rather than importing ``DrawingRef`` because the web\n``schemas`` package imports back into this module (``schemas.render``),\nso reusing it would create an import cycle — the MCP wire contract keeps\nits own copy, the same pattern as ``BoQRow`` / ``DrawingReference``.",
        +                    "properties": {
        +                      "entity_count": {
        +                        "minimum": 0,
        +                        "type": "integer"
        +                      },
        +                      "svg_b64": {
        +                        "minLength": 1,
        +                        "type": "string"
        +                      },
        +                      "unit_of_drawing": {
        +                        "const": "m",
        +                        "default": "m",
        +                        "type": "string"
        +                      },
        +                      "viewbox_height": {
        +                        "exclusiveMinimum": 0,
        +                        "type": "number"
        +                      },
        +                      "viewbox_width": {
        +                        "exclusiveMinimum": 0,
        +                        "type": "number"
        +                      },
        +                      "viewbox_x": {
        +                        "type": "number"
        +                      },
        +                      "viewbox_y": {
        +                        "type": "number"
        +                      }
        +                    },
        +                    "required": [
        +                      "svg_b64",
        +                      "viewbox_x",
        +                      "viewbox_y",
        +                      "viewbox_width",
        +                      "viewbox_height",
        +                      "entity_count"
        +                    ],
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "drawings": {
        +                "anyOf": [
        +                  {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.6 — paid-tier drawing artefact pointer.\n\n`url` is an R2-signed URL; expiry is carried in `_meta.deliverables.expires_at`\non the envelope (not duplicated here). `layers` is DXF-only; PDF/SVG\ncallers omit it.",
        +                      "properties": {
        +                        "drawing_type": {
        +                          "enum": [
        +                            "section",
        +                            "plan",
        +                            "elevation",
        +                            "isometric",
        +                            "detail"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "format": {
        +                          "enum": [
        +                            "DXF",
        +                            "PDF",
        +                            "SVG"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "layers": {
        +                          "anyOf": [
        +                            {
        +                              "items": {
        +                                "type": "string"
        +                              },
        +                              "type": "array"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ],
        +                          "default": null
        +                        },
        +                        "scale": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "sheet_size": {
        +                          "enum": [
        +                            "A1",
        +                            "A2",
        +                            "A3",
        +                            "A4"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "url": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "drawing_type",
        +                        "format",
        +                        "url",
        +                        "sheet_size",
        +                        "scale"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "parameters_used": {
        +                "additionalProperties": false,
        +                "description": "Schema § 1.2 — the parameter snapshot the engine actually used.\n\nSplits user-supplied values from engine defaults so customers can see\nwhich numbers came from them and which the engine filled in. Every\ndefaulted parameter SHOULD have a corresponding entry in `assumptions`\n— the bridge layer enforces this when wrapping engine output.",
        +                "properties": {
        +                  "assumptions": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "engine_defaults": {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  "user_supplied": {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  }
        +                },
        +                "type": "object"
        +              },
        +              "standard": {
        +                "enum": [
        +                  "CESMM4",
        +                  "NRM2",
        +                  "SMM7",
        +                  "MMHW"
        +                ],
        +                "type": "string"
        +              },
        +              "text_summary": {
        +                "maxLength": 2000,
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "totals_summary": {
        +                "additionalProperties": false,
        +                "description": "Schema § 1.4 — totals_summary as a typed wrapper around the free-form dict.\n\nWire shape is a flat object (`{\"concrete_m3\": {...}, \"rebar_t\": {...}}`).\nWe model it as `RootModel`-equivalent via `model_config(extra=\"allow\")`\n+ a single `__root__`-style `entries` dict. Pydantic v2 recommends\n`RootModel` for free-form roots; using a wrapper class keeps the import\nsurface uniform with the rest of this module.",
        +                "properties": {
        +                  "entries": {
        +                    "additionalProperties": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.4 — single material/work-class total entry.",
        +                      "properties": {
        +                        "quantity": {
        +                          "minimum": 0,
        +                          "type": "number"
        +                        },
        +                        "unit": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "quantity",
        +                        "unit"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "object"
        +                  }
        +                },
        +                "type": "object"
        +              },
        +              "warnings": {
        +                "items": {
        +                  "additionalProperties": false,
        +                  "description": "Schema § 1.8 — a non-fatal geometry advisory (56th-fire T2).\n\nThe wire projection of the engine's `core.GeometryWarning`. Advisory only:\na warning NEVER changes a measured quantity — it flags geometry that is\nvalid but likely a mistake (e.g. a stale dependent-height default). Present\non BOTH tiers — a correctness/safety signal, not a paid feature.",
        +                  "properties": {
        +                    "affected_params": {
        +                      "items": {
        +                        "type": "string"
        +                      },
        +                      "type": "array"
        +                    },
        +                    "code": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "detail": {
        +                      "additionalProperties": {
        +                        "type": "number"
        +                      },
        +                      "type": "object"
        +                    },
        +                    "message": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "severity": {
        +                      "enum": [
        +                        "info",
        +                        "advisory",
        +                        "caution"
        +                      ],
        +                      "type": "string"
        +                    }
        +                  },
        +                  "required": [
        +                    "code",
        +                    "severity",
        +                    "message"
        +                  ],
        +                  "type": "object"
        +                },
        +                "type": "array"
        +              }
        +            },
        +            "required": [
        +              "assembly_slug",
        +              "standard",
        +              "parameters_used",
        +              "boq_rows",
        +              "totals_summary",
        +              "text_summary"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      },
        +      "error": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        +            "properties": {
        +              "code": {
        +                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        +                "enum": [
        +                  "RATE_LIMIT_EXCEEDED",
        +                  "TIER_INSUFFICIENT",
        +                  "INVALID_INPUT",
        +                  "SCHEMA_VERSION_MISMATCH",
        +                  "SCHEMA_INVARIANT_VIOLATION",
        +                  "UPSTREAM_TIMEOUT",
        +                  "BACKEND_FAILURE",
        +                  "IP_BLOCKED",
        +                  "RESOURCE_NOT_FOUND",
        +                  "RENDER_FAILURE",
        +                  "OCR_LOW_CONFIDENCE",
        +                  "MANUAL_REVIEW_REQUIRED",
        +                  "ACCEPTANCE_REQUIRED",
        +                  "INVALID_TOKEN"
        +                ],
        +                "type": "string"
        +              },
        +              "details": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "message": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "recoverable": {
        +                "type": "boolean"
        +              },
        +              "retry_after_seconds": {
        +                "anyOf": [
        +                  {
        +                    "minimum": 0,
        +                    "type": "integer"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              }
        +            },
        +            "required": [
        +              "code",
        +              "message",
        +              "recoverable"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      }
        +    },
        +    "required": [
        +      "_meta"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "_meta": {
        +        "additionalProperties": false,
        +        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        +        "properties": {
        +          "deliverables": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        +                "properties": {
        +                  "docx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "dxf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "expires_at": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  },
        +                  "pdf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "xlsx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "expires_at"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "document_id": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "issued_at": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "output_mode": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Surfaces what a trimmed ``output_mode`` withheld from ``data``.\n\nA trimmed mode (``summary`` / ``boq`` / ``boq_with_backup``) withholds\nalready-computed fields to keep the chat payload small. The withheld value\nreads to a client agent as \"capability missing\" (the box-culvert \"geometry\nbuilder isn't firing\" scare) rather than \"pared for size\": ``drawing`` and\n``audit_trail`` appear as ``null``, ``boq_rows`` as an empty list ``[]``\n(its type forbids ``null``) — both indistinguishable from a genuine absent\nresult. This names the withheld fields and the exact mode that brings each\nback, so the value is unambiguous. Absent on the default ``full_json`` mode\n— nothing is withheld, nothing to point at.",
        +                "properties": {
        +                  "mode": {
        +                    "enum": [
        +                      "summary",
        +                      "boq",
        +                      "boq_with_backup"
        +                    ],
        +                    "type": "string"
        +                  },
        +                  "omitted_fields": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "minItems": 1,
        +                    "type": "array"
        +                  },
        +                  "retrieve_with": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "mode",
        +                  "omitted_fields",
        +                  "retrieve_with"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "rate_limit_remaining": {
        +            "anyOf": [
        +              {
        +                "minimum": 0,
        +                "type": "integer"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "request_id": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "schema_version": {
        +            "const": "1.0.0",
        +            "default": "1.0.0",
        +            "type": "string"
        +          },
        +          "scope_boundary": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        +                "properties": {
        +                  "not_in_scope": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "produced": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "recommended_companions": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "type": "string"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "produced",
        +                  "not_in_scope"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tier": {
        +            "enum": [
        +              "free",
        +              "paid"
        +            ],
        +            "type": "string"
        +          },
        +          "tier_upgrade": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        +                "properties": {
        +                  "available_tiers": {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        +                      "properties": {
        +                        "billing": {
        +                          "enum": [
        +                            "one_off",
        +                            "monthly",
        +                            "annual"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "currency": {
        +                          "enum": [
        +                            "GBP",
        +                            "SGD",
        +                            "EUR",
        +                            "USD",
        +                            "CAD",
        +                            "AUD",
        +                            "NZD",
        +                            "MYR"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "display_name": {
        +                          "type": "string"
        +                        },
        +                        "price_local": {
        +                          "type": "number"
        +                        },
        +                        "tier_slug": {
        +                          "enum": [
        +                            "7_day_pass",
        +                            "solo",
        +                            "studio",
        +                            "practice"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "unlock_summary": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "tier_slug",
        +                        "display_name",
        +                        "price_local",
        +                        "currency",
        +                        "billing",
        +                        "unlock_summary"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "current_tier": {
        +                    "const": "free",
        +                    "default": "free",
        +                    "type": "string"
        +                  },
        +                  "pass_credit": {
        +                    "anyOf": [
        +                      {
        +                        "additionalProperties": false,
        +                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        +                        "properties": {
        +                          "amount_local": {
        +                            "type": "number"
        +                          },
        +                          "applies_to": {
        +                            "const": "solo_first_month",
        +                            "default": "solo_first_month",
        +                            "type": "string"
        +                          },
        +                          "currency": {
        +                            "type": "string"
        +                          },
        +                          "redeemable_until": {
        +                            "type": "string"
        +                          }
        +                        },
        +                        "required": [
        +                          "amount_local",
        +                          "currency",
        +                          "redeemable_until"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "pricing_url": {
        +                    "default": "https://civilquants.com/pricing",
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "available_tiers"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tos_url": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "upgrade_hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "warranty_disclaimer": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          }
        +        },
        +        "required": [
        +          "request_id",
        +          "issued_at",
        +          "tier"
        +        ],
        +        "type": "object"
        +      },
        +      "data": {
        +        "default": null,
        +        "title": "Data"
        +      },
        +      "error": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        +            "properties": {
        +              "code": {
        +                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        +                "enum": [
        +                  "RATE_LIMIT_EXCEEDED",
        +                  "TIER_INSUFFICIENT",
        +                  "INVALID_INPUT",
        +                  "SCHEMA_VERSION_MISMATCH",
        +                  "SCHEMA_INVARIANT_VIOLATION",
        +                  "UPSTREAM_TIMEOUT",
        +                  "BACKEND_FAILURE",
        +                  "IP_BLOCKED",
        +                  "RESOURCE_NOT_FOUND",
        +                  "RENDER_FAILURE",
        +                  "OCR_LOW_CONFIDENCE",
        +                  "MANUAL_REVIEW_REQUIRED",
        +                  "ACCEPTANCE_REQUIRED",
        +                  "INVALID_TOKEN"
        +                ],
        +                "type": "string"
        +              },
        +              "details": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "message": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "recoverable": {
        +                "type": "boolean"
        +              },
        +              "retry_after_seconds": {
        +                "anyOf": [
        +                  {
        +                    "minimum": 0,
        +                    "type": "integer"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              }
        +            },
        +            "required": [
        +              "code",
        +              "message",
        +              "recoverable"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      }
        +    },
        +    "required": [
        +      "_meta"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedcompute_road_marking1 field changed
      • changedOutput schema / properties / result / anyOf
        Previous value: -[
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "_meta": {
        -        "additionalProperties": false,
        -        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        -        "properties": {
        -          "deliverables": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        -                "properties": {
        -                  "docx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "dxf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "expires_at": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  },
        -                  "pdf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "xlsx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "expires_at"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "document_id": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "issued_at": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "rate_limit_remaining": {
        -            "anyOf": [
        -              {
        -                "minimum": 0,
        -                "type": "integer"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "request_id": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "schema_version": {
        -            "const": "1.0.0",
        -            "default": "1.0.0",
        -            "type": "string"
        -          },
        -          "scope_boundary": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        -                "properties": {
        -                  "not_in_scope": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "produced": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "recommended_companions": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "type": "string"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "produced",
        -                  "not_in_scope"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tier": {
        -            "enum": [
        -              "free",
        -              "paid"
        -            ],
        -            "type": "string"
        -          },
        -          "tier_upgrade": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        -                "properties": {
        -                  "available_tiers": {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        -                      "properties": {
        -                        "billing": {
        -                          "enum": [
        -                            "one_off",
        -                            "monthly",
        -                            "annual"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "currency": {
        -                          "enum": [
        -                            "GBP",
        -                            "SGD",
        -                            "EUR",
        -                            "USD",
        -                            "CAD",
        -                            "AUD",
        -                            "NZD",
        -                            "MYR"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "display_name": {
        -                          "type": "string"
        -                        },
        -                        "price_local": {
        -                          "type": "number"
        -                        },
        -                        "tier_slug": {
        -                          "enum": [
        -                            "7_day_pass",
        -                            "solo",
        -                            "studio",
        -                            "practice"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "unlock_summary": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "tier_slug",
        -                        "display_name",
        -                        "price_local",
        -                        "currency",
        -                        "billing",
        -                        "unlock_summary"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "current_tier": {
        -                    "const": "free",
        -                    "default": "free",
        -                    "type": "string"
        -                  },
        -                  "pass_credit": {
        -                    "anyOf": [
        -                      {
        -                        "additionalProperties": false,
        -                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        -                        "properties": {
        -                          "amount_local": {
        -                            "type": "number"
        -                          },
        -                          "applies_to": {
        -                            "const": "solo_first_month",
        -                            "default": "solo_first_month",
        -                            "type": "string"
        -                          },
        -                          "currency": {
        -                            "type": "string"
        -                          },
        -                          "redeemable_until": {
        -                            "type": "string"
        -                          }
        -                        },
        -                        "required": [
        -                          "amount_local",
        -                          "currency",
        -                          "redeemable_until"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "pricing_url": {
        -                    "default": "https://civilquants.com/pricing",
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "available_tiers"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tos_url": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "upgrade_hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "warranty_disclaimer": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          }
        -        },
        -        "required": [
        -          "request_id",
        -          "issued_at",
        -          "tier"
        -        ],
        -        "type": "object"
        -      },
        -      "data": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Schema § 1.1 — the typed payload returned inside `MCPResponse[ComputeResult]`.\n\nFree-tier responses omit `drawings` (the downloadable CAD artefact\npointers — the paid differentiator); the bridge enforces this. The\n`audit_trail` and the inline `drawing` preview are present on BOTH tiers\n(V1 ALIGN / 60th-fire D + C). `text_summary` is bounded to 2000 chars —\nkeeps the LLM-facing summary token-cheap and forces longer narrative into\nBoQ row descriptions where it belongs. `warnings` is the non-fatal\ngeometry advisory list (both tiers).",
        -            "properties": {
        -              "assembly_slug": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "audit_trail": {
        -                "anyOf": [
        -                  {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.7 — paid-tier audit-trail entry.\n\nOne entry per BoQ row; `boq_row_index` ties to the row position in\n`ComputeResult.boq_rows`. `derivation` is the human-readable formula\nwalk-through; `formula` is the optional formal expression.",
        -                      "properties": {
        -                        "boq_row_index": {
        -                          "minimum": 0,
        -                          "type": "integer"
        -                        },
        -                        "derivation": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "formula": {
        -                          "anyOf": [
        -                            {
        -                              "type": "string"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ],
        -                          "default": null
        -                        },
        -                        "id": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "parameters_referenced": {
        -                          "items": {
        -                            "type": "string"
        -                          },
        -                          "type": "array"
        -                        }
        -                      },
        -                      "required": [
        -                        "id",
        -                        "boq_row_index",
        -                        "derivation"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "boq_rows": {
        -                "items": {
        -                  "additionalProperties": false,
        -                  "description": "Schema § 1.3 — a single bill row in the requested standard's format.\n\n`description` is the non-verbatim functional description per spec § 13.9 /\n§ 15 invariant — NEVER reproduces a standard's verbatim clause text.\n`rate` / `amount` ship null because rates are commodity data the customer\nowns; the engine's job is the measurement, not the pricing.",
        -                  "properties": {
        -                    "amount": {
        -                      "anyOf": [
        -                        {
        -                          "type": "number"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "attribution": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "audit_id": {
        -                      "anyOf": [
        -                        {
        -                          "type": "string"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "description": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "quantity": {
        -                      "minimum": 0,
        -                      "type": "number"
        -                    },
        -                    "rate": {
        -                      "anyOf": [
        -                        {
        -                          "type": "number"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "unit": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "work_section": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    }
        -                  },
        -                  "required": [
        -                    "work_section",
        -                    "description",
        -                    "quantity",
        -                    "unit",
        -                    "attribution"
        -                  ],
        -                  "type": "object"
        -                },
        -                "type": "array"
        -              },
        -              "drawing": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": false,
        -                    "description": "Schema § 1.6a — inline server-rendered SVG preview of the geometry.\n\nThe MCP mirror of the web ``/compute`` response's ``drawing`` field\n(``api.schemas.compute.DrawingRef``): the same on-screen dimensioned\ndrawing both tiers see in the workspace, surfaced on the MCP compute\nresponse so a chat client can render it inline (60th-fire item C). This\nis the on-screen preview — present on BOTH tiers per the free/paid\nboundary; the downloadable CAD artefacts (DXF / dimensioned PDF) remain\nthe paid differentiator via the export tools.\n\nDefined here rather than importing ``DrawingRef`` because the web\n``schemas`` package imports back into this module (``schemas.render``),\nso reusing it would create an import cycle — the MCP wire contract keeps\nits own copy, the same pattern as ``BoQRow`` / ``DrawingReference``.",
        -                    "properties": {
        -                      "entity_count": {
        -                        "minimum": 0,
        -                        "type": "integer"
        -                      },
        -                      "svg_b64": {
        -                        "minLength": 1,
        -                        "type": "string"
        -                      },
        -                      "unit_of_drawing": {
        -                        "const": "m",
        -                        "default": "m",
        -                        "type": "string"
        -                      },
        -                      "viewbox_height": {
        -                        "exclusiveMinimum": 0,
        -                        "type": "number"
        -                      },
        -                      "viewbox_width": {
        -                        "exclusiveMinimum": 0,
        -                        "type": "number"
        -                      },
        -                      "viewbox_x": {
        -                        "type": "number"
        -                      },
        -                      "viewbox_y": {
        -                        "type": "number"
        -                      }
        -                    },
        -                    "required": [
        -                      "svg_b64",
        -                      "viewbox_x",
        -                      "viewbox_y",
        -                      "viewbox_width",
        -                      "viewbox_height",
        -                      "entity_count"
        -                    ],
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "drawings": {
        -                "anyOf": [
        -                  {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.6 — paid-tier drawing artefact pointer.\n\n`url` is an R2-signed URL; expiry is carried in `_meta.deliverables.expires_at`\non the envelope (not duplicated here). `layers` is DXF-only; PDF/SVG\ncallers omit it.",
        -                      "properties": {
        -                        "drawing_type": {
        -                          "enum": [
        -                            "section",
        -                            "plan",
        -                            "elevation",
        -                            "isometric",
        -                            "detail"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "format": {
        -                          "enum": [
        -                            "DXF",
        -                            "PDF",
        -                            "SVG"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "layers": {
        -                          "anyOf": [
        -                            {
        -                              "items": {
        -                                "type": "string"
        -                              },
        -                              "type": "array"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ],
        -                          "default": null
        -                        },
        -                        "scale": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "sheet_size": {
        -                          "enum": [
        -                            "A1",
        -                            "A2",
        -                            "A3",
        -                            "A4"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "url": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "drawing_type",
        -                        "format",
        -                        "url",
        -                        "sheet_size",
        -                        "scale"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "parameters_used": {
        -                "additionalProperties": false,
        -                "description": "Schema § 1.2 — the parameter snapshot the engine actually used.\n\nSplits user-supplied values from engine defaults so customers can see\nwhich numbers came from them and which the engine filled in. Every\ndefaulted parameter SHOULD have a corresponding entry in `assumptions`\n— the bridge layer enforces this when wrapping engine output.",
        -                "properties": {
        -                  "assumptions": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "engine_defaults": {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  "user_supplied": {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  }
        -                },
        -                "type": "object"
        -              },
        -              "standard": {
        -                "enum": [
        -                  "CESMM4",
        -                  "NRM2",
        -                  "SMM7",
        -                  "MMHW"
        -                ],
        -                "type": "string"
        -              },
        -              "text_summary": {
        -                "maxLength": 2000,
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "totals_summary": {
        -                "additionalProperties": false,
        -                "description": "Schema § 1.4 — totals_summary as a typed wrapper around the free-form dict.\n\nWire shape is a flat object (`{\"concrete_m3\": {...}, \"rebar_t\": {...}}`).\nWe model it as `RootModel`-equivalent via `model_config(extra=\"allow\")`\n+ a single `__root__`-style `entries` dict. Pydantic v2 recommends\n`RootModel` for free-form roots; using a wrapper class keeps the import\nsurface uniform with the rest of this module.",
        -                "properties": {
        -                  "entries": {
        -                    "additionalProperties": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.4 — single material/work-class total entry.",
        -                      "properties": {
        -                        "quantity": {
        -                          "minimum": 0,
        -                          "type": "number"
        -                        },
        -                        "unit": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "quantity",
        -                        "unit"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "object"
        -                  }
        -                },
        -                "type": "object"
        -              },
        -              "warnings": {
        -                "items": {
        -                  "additionalProperties": false,
        -                  "description": "Schema § 1.8 — a non-fatal geometry advisory (56th-fire T2).\n\nThe wire projection of the engine's `core.GeometryWarning`. Advisory only:\na warning NEVER changes a measured quantity — it flags geometry that is\nvalid but likely a mistake (e.g. a stale dependent-height default). Present\non BOTH tiers — a correctness/safety signal, not a paid feature.",
        -                  "properties": {
        -                    "affected_params": {
        -                      "items": {
        -                        "type": "string"
        -                      },
        -                      "type": "array"
        -                    },
        -                    "code": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "detail": {
        -                      "additionalProperties": {
        -                        "type": "number"
        -                      },
        -                      "type": "object"
        -                    },
        -                    "message": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "severity": {
        -                      "enum": [
        -                        "info",
        -                        "advisory",
        -                        "caution"
        -                      ],
        -                      "type": "string"
        -                    }
        -                  },
        -                  "required": [
        -                    "code",
        -                    "severity",
        -                    "message"
        -                  ],
        -                  "type": "object"
        -                },
        -                "type": "array"
        -              }
        -            },
        -            "required": [
        -              "assembly_slug",
        -              "standard",
        -              "parameters_used",
        -              "boq_rows",
        -              "totals_summary",
        -              "text_summary"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      },
        -      "error": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        -            "properties": {
        -              "code": {
        -                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        -                "enum": [
        -                  "RATE_LIMIT_EXCEEDED",
        -                  "TIER_INSUFFICIENT",
        -                  "INVALID_INPUT",
        -                  "SCHEMA_VERSION_MISMATCH",
        -                  "SCHEMA_INVARIANT_VIOLATION",
        -                  "UPSTREAM_TIMEOUT",
        -                  "BACKEND_FAILURE",
        -                  "IP_BLOCKED",
        -                  "RESOURCE_NOT_FOUND",
        -                  "RENDER_FAILURE",
        -                  "OCR_LOW_CONFIDENCE",
        -                  "MANUAL_REVIEW_REQUIRED",
        -                  "ACCEPTANCE_REQUIRED",
        -                  "INVALID_TOKEN"
        -                ],
        -                "type": "string"
        -              },
        -              "details": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "message": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "recoverable": {
        -                "type": "boolean"
        -              },
        -              "retry_after_seconds": {
        -                "anyOf": [
        -                  {
        -                    "minimum": 0,
        -                    "type": "integer"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              }
        -            },
        -            "required": [
        -              "code",
        -              "message",
        -              "recoverable"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      }
        -    },
        -    "required": [
        -      "_meta"
        -    ],
        -    "type": "object"
        -  },
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "_meta": {
        -        "additionalProperties": false,
        -        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        -        "properties": {
        -          "deliverables": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        -                "properties": {
        -                  "docx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "dxf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "expires_at": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  },
        -                  "pdf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "xlsx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "expires_at"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "document_id": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "issued_at": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "rate_limit_remaining": {
        -            "anyOf": [
        -              {
        -                "minimum": 0,
        -                "type": "integer"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "request_id": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "schema_version": {
        -            "const": "1.0.0",
        -            "default": "1.0.0",
        -            "type": "string"
        -          },
        -          "scope_boundary": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        -                "properties": {
        -                  "not_in_scope": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "produced": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "recommended_companions": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "type": "string"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "produced",
        -                  "not_in_scope"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tier": {
        -            "enum": [
        -              "free",
        -              "paid"
        -            ],
        -            "type": "string"
        -          },
        -          "tier_upgrade": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        -                "properties": {
        -                  "available_tiers": {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        -                      "properties": {
        -                        "billing": {
        -                          "enum": [
        -                            "one_off",
        -                            "monthly",
        -                            "annual"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "currency": {
        -                          "enum": [
        -                            "GBP",
        -                            "SGD",
        -                            "EUR",
        -                            "USD",
        -                            "CAD",
        -                            "AUD",
        -                            "NZD",
        -                            "MYR"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "display_name": {
        -                          "type": "string"
        -                        },
        -                        "price_local": {
        -                          "type": "number"
        -                        },
        -                        "tier_slug": {
        -                          "enum": [
        -                            "7_day_pass",
        -                            "solo",
        -                            "studio",
        -                            "practice"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "unlock_summary": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "tier_slug",
        -                        "display_name",
        -                        "price_local",
        -                        "currency",
        -                        "billing",
        -                        "unlock_summary"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "current_tier": {
        -                    "const": "free",
        -                    "default": "free",
        -                    "type": "string"
        -                  },
        -                  "pass_credit": {
        -                    "anyOf": [
        -                      {
        -                        "additionalProperties": false,
        -                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        -                        "properties": {
        -                          "amount_local": {
        -                            "type": "number"
        -                          },
        -                          "applies_to": {
        -                            "const": "solo_first_month",
        -                            "default": "solo_first_month",
        -                            "type": "string"
        -                          },
        -                          "currency": {
        -                            "type": "string"
        -                          },
        -                          "redeemable_until": {
        -                            "type": "string"
        -                          }
        -                        },
        -                        "required": [
        -                          "amount_local",
        -                          "currency",
        -                          "redeemable_until"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "pricing_url": {
        -                    "default": "https://civilquants.com/pricing",
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "available_tiers"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tos_url": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "upgrade_hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "warranty_disclaimer": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          }
        -        },
        -        "required": [
        -          "request_id",
        -          "issued_at",
        -          "tier"
        -        ],
        -        "type": "object"
        -      },
        -      "data": {
        -        "default": null,
        -        "title": "Data"
        -      },
        -      "error": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        -            "properties": {
        -              "code": {
        -                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        -                "enum": [
        -                  "RATE_LIMIT_EXCEEDED",
        -                  "TIER_INSUFFICIENT",
        -                  "INVALID_INPUT",
        -                  "SCHEMA_VERSION_MISMATCH",
        -                  "SCHEMA_INVARIANT_VIOLATION",
        -                  "UPSTREAM_TIMEOUT",
        -                  "BACKEND_FAILURE",
        -                  "IP_BLOCKED",
        -                  "RESOURCE_NOT_FOUND",
        -                  "RENDER_FAILURE",
        -                  "OCR_LOW_CONFIDENCE",
        -                  "MANUAL_REVIEW_REQUIRED",
        -                  "ACCEPTANCE_REQUIRED",
        -                  "INVALID_TOKEN"
        -                ],
        -                "type": "string"
        -              },
        -              "details": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "message": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "recoverable": {
        -                "type": "boolean"
        -              },
        -              "retry_after_seconds": {
        -                "anyOf": [
        -                  {
        -                    "minimum": 0,
        -                    "type": "integer"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              }
        -            },
        -            "required": [
        -              "code",
        -              "message",
        -              "recoverable"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      }
        -    },
        -    "required": [
        -      "_meta"
        -    ],
        -    "type": "object"
        -  }
        -]New value: +[
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "_meta": {
        +        "additionalProperties": false,
        +        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        +        "properties": {
        +          "deliverables": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        +                "properties": {
        +                  "docx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "dxf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "expires_at": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  },
        +                  "pdf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "xlsx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "expires_at"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "document_id": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "issued_at": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "output_mode": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Surfaces what a trimmed ``output_mode`` withheld from ``data``.\n\nA trimmed mode (``summary`` / ``boq`` / ``boq_with_backup``) withholds\nalready-computed fields to keep the chat payload small. The withheld value\nreads to a client agent as \"capability missing\" (the box-culvert \"geometry\nbuilder isn't firing\" scare) rather than \"pared for size\": ``drawing`` and\n``audit_trail`` appear as ``null``, ``boq_rows`` as an empty list ``[]``\n(its type forbids ``null``) — both indistinguishable from a genuine absent\nresult. This names the withheld fields and the exact mode that brings each\nback, so the value is unambiguous. Absent on the default ``full_json`` mode\n— nothing is withheld, nothing to point at.",
        +                "properties": {
        +                  "mode": {
        +                    "enum": [
        +                      "summary",
        +                      "boq",
        +                      "boq_with_backup"
        +                    ],
        +                    "type": "string"
        +                  },
        +                  "omitted_fields": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "minItems": 1,
        +                    "type": "array"
        +                  },
        +                  "retrieve_with": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "mode",
        +                  "omitted_fields",
        +                  "retrieve_with"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "rate_limit_remaining": {
        +            "anyOf": [
        +              {
        +                "minimum": 0,
        +                "type": "integer"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "request_id": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "schema_version": {
        +            "const": "1.0.0",
        +            "default": "1.0.0",
        +            "type": "string"
        +          },
        +          "scope_boundary": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        +                "properties": {
        +                  "not_in_scope": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "produced": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "recommended_companions": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "type": "string"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "produced",
        +                  "not_in_scope"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tier": {
        +            "enum": [
        +              "free",
        +              "paid"
        +            ],
        +            "type": "string"
        +          },
        +          "tier_upgrade": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        +                "properties": {
        +                  "available_tiers": {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        +                      "properties": {
        +                        "billing": {
        +                          "enum": [
        +                            "one_off",
        +                            "monthly",
        +                            "annual"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "currency": {
        +                          "enum": [
        +                            "GBP",
        +                            "SGD",
        +                            "EUR",
        +                            "USD",
        +                            "CAD",
        +                            "AUD",
        +                            "NZD",
        +                            "MYR"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "display_name": {
        +                          "type": "string"
        +                        },
        +                        "price_local": {
        +                          "type": "number"
        +                        },
        +                        "tier_slug": {
        +                          "enum": [
        +                            "7_day_pass",
        +                            "solo",
        +                            "studio",
        +                            "practice"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "unlock_summary": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "tier_slug",
        +                        "display_name",
        +                        "price_local",
        +                        "currency",
        +                        "billing",
        +                        "unlock_summary"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "current_tier": {
        +                    "const": "free",
        +                    "default": "free",
        +                    "type": "string"
        +                  },
        +                  "pass_credit": {
        +                    "anyOf": [
        +                      {
        +                        "additionalProperties": false,
        +                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        +                        "properties": {
        +                          "amount_local": {
        +                            "type": "number"
        +                          },
        +                          "applies_to": {
        +                            "const": "solo_first_month",
        +                            "default": "solo_first_month",
        +                            "type": "string"
        +                          },
        +                          "currency": {
        +                            "type": "string"
        +                          },
        +                          "redeemable_until": {
        +                            "type": "string"
        +                          }
        +                        },
        +                        "required": [
        +                          "amount_local",
        +                          "currency",
        +                          "redeemable_until"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "pricing_url": {
        +                    "default": "https://civilquants.com/pricing",
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "available_tiers"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tos_url": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "upgrade_hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "warranty_disclaimer": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          }
        +        },
        +        "required": [
        +          "request_id",
        +          "issued_at",
        +          "tier"
        +        ],
        +        "type": "object"
        +      },
        +      "data": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Schema § 1.1 — the typed payload returned inside `MCPResponse[ComputeResult]`.\n\nFree-tier responses omit `drawings` (the downloadable CAD artefact\npointers — the paid differentiator); the bridge enforces this. The\n`audit_trail` and the inline `drawing` preview are present on BOTH tiers\n(V1 ALIGN / 60th-fire D + C). `text_summary` is bounded to 2000 chars —\nkeeps the LLM-facing summary token-cheap and forces longer narrative into\nBoQ row descriptions where it belongs. `warnings` is the non-fatal\ngeometry advisory list (both tiers).",
        +            "properties": {
        +              "assembly_slug": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "audit_trail": {
        +                "anyOf": [
        +                  {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.7 — paid-tier audit-trail entry.\n\nOne entry per BoQ row; `boq_row_index` ties to the row position in\n`ComputeResult.boq_rows`. `derivation` is the human-readable formula\nwalk-through; `formula` is the optional formal expression.",
        +                      "properties": {
        +                        "boq_row_index": {
        +                          "minimum": 0,
        +                          "type": "integer"
        +                        },
        +                        "derivation": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "formula": {
        +                          "anyOf": [
        +                            {
        +                              "type": "string"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ],
        +                          "default": null
        +                        },
        +                        "id": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "parameters_referenced": {
        +                          "items": {
        +                            "type": "string"
        +                          },
        +                          "type": "array"
        +                        }
        +                      },
        +                      "required": [
        +                        "id",
        +                        "boq_row_index",
        +                        "derivation"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "boq_rows": {
        +                "items": {
        +                  "additionalProperties": false,
        +                  "description": "Schema § 1.3 — a single bill row in the requested standard's format.\n\n`description` is the non-verbatim functional description per spec § 13.9 /\n§ 15 invariant — NEVER reproduces a standard's verbatim clause text.\n`rate` / `amount` ship null because rates are commodity data the customer\nowns; the engine's job is the measurement, not the pricing.",
        +                  "properties": {
        +                    "amount": {
        +                      "anyOf": [
        +                        {
        +                          "type": "number"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "attribution": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "audit_id": {
        +                      "anyOf": [
        +                        {
        +                          "type": "string"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "description": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "quantity": {
        +                      "minimum": 0,
        +                      "type": "number"
        +                    },
        +                    "rate": {
        +                      "anyOf": [
        +                        {
        +                          "type": "number"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "unit": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "work_section": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    }
        +                  },
        +                  "required": [
        +                    "work_section",
        +                    "description",
        +                    "quantity",
        +                    "unit",
        +                    "attribution"
        +                  ],
        +                  "type": "object"
        +                },
        +                "type": "array"
        +              },
        +              "drawing": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": false,
        +                    "description": "Schema § 1.6a — inline server-rendered SVG preview of the geometry.\n\nThe MCP mirror of the web ``/compute`` response's ``drawing`` field\n(``api.schemas.compute.DrawingRef``): the same on-screen dimensioned\ndrawing both tiers see in the workspace, surfaced on the MCP compute\nresponse so a chat client can render it inline (60th-fire item C). This\nis the on-screen preview — present on BOTH tiers per the free/paid\nboundary; the downloadable CAD artefacts (DXF / dimensioned PDF) remain\nthe paid differentiator via the export tools.\n\nDefined here rather than importing ``DrawingRef`` because the web\n``schemas`` package imports back into this module (``schemas.render``),\nso reusing it would create an import cycle — the MCP wire contract keeps\nits own copy, the same pattern as ``BoQRow`` / ``DrawingReference``.",
        +                    "properties": {
        +                      "entity_count": {
        +                        "minimum": 0,
        +                        "type": "integer"
        +                      },
        +                      "svg_b64": {
        +                        "minLength": 1,
        +                        "type": "string"
        +                      },
        +                      "unit_of_drawing": {
        +                        "const": "m",
        +                        "default": "m",
        +                        "type": "string"
        +                      },
        +                      "viewbox_height": {
        +                        "exclusiveMinimum": 0,
        +                        "type": "number"
        +                      },
        +                      "viewbox_width": {
        +                        "exclusiveMinimum": 0,
        +                        "type": "number"
        +                      },
        +                      "viewbox_x": {
        +                        "type": "number"
        +                      },
        +                      "viewbox_y": {
        +                        "type": "number"
        +                      }
        +                    },
        +                    "required": [
        +                      "svg_b64",
        +                      "viewbox_x",
        +                      "viewbox_y",
        +                      "viewbox_width",
        +                      "viewbox_height",
        +                      "entity_count"
        +                    ],
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "drawings": {
        +                "anyOf": [
        +                  {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.6 — paid-tier drawing artefact pointer.\n\n`url` is an R2-signed URL; expiry is carried in `_meta.deliverables.expires_at`\non the envelope (not duplicated here). `layers` is DXF-only; PDF/SVG\ncallers omit it.",
        +                      "properties": {
        +                        "drawing_type": {
        +                          "enum": [
        +                            "section",
        +                            "plan",
        +                            "elevation",
        +                            "isometric",
        +                            "detail"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "format": {
        +                          "enum": [
        +                            "DXF",
        +                            "PDF",
        +                            "SVG"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "layers": {
        +                          "anyOf": [
        +                            {
        +                              "items": {
        +                                "type": "string"
        +                              },
        +                              "type": "array"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ],
        +                          "default": null
        +                        },
        +                        "scale": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "sheet_size": {
        +                          "enum": [
        +                            "A1",
        +                            "A2",
        +                            "A3",
        +                            "A4"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "url": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "drawing_type",
        +                        "format",
        +                        "url",
        +                        "sheet_size",
        +                        "scale"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "parameters_used": {
        +                "additionalProperties": false,
        +                "description": "Schema § 1.2 — the parameter snapshot the engine actually used.\n\nSplits user-supplied values from engine defaults so customers can see\nwhich numbers came from them and which the engine filled in. Every\ndefaulted parameter SHOULD have a corresponding entry in `assumptions`\n— the bridge layer enforces this when wrapping engine output.",
        +                "properties": {
        +                  "assumptions": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "engine_defaults": {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  "user_supplied": {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  }
        +                },
        +                "type": "object"
        +              },
        +              "standard": {
        +                "enum": [
        +                  "CESMM4",
        +                  "NRM2",
        +                  "SMM7",
        +                  "MMHW"
        +                ],
        +                "type": "string"
        +              },
        +              "text_summary": {
        +                "maxLength": 2000,
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "totals_summary": {
        +                "additionalProperties": false,
        +                "description": "Schema § 1.4 — totals_summary as a typed wrapper around the free-form dict.\n\nWire shape is a flat object (`{\"concrete_m3\": {...}, \"rebar_t\": {...}}`).\nWe model it as `RootModel`-equivalent via `model_config(extra=\"allow\")`\n+ a single `__root__`-style `entries` dict. Pydantic v2 recommends\n`RootModel` for free-form roots; using a wrapper class keeps the import\nsurface uniform with the rest of this module.",
        +                "properties": {
        +                  "entries": {
        +                    "additionalProperties": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.4 — single material/work-class total entry.",
        +                      "properties": {
        +                        "quantity": {
        +                          "minimum": 0,
        +                          "type": "number"
        +                        },
        +                        "unit": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "quantity",
        +                        "unit"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "object"
        +                  }
        +                },
        +                "type": "object"
        +              },
        +              "warnings": {
        +                "items": {
        +                  "additionalProperties": false,
        +                  "description": "Schema § 1.8 — a non-fatal geometry advisory (56th-fire T2).\n\nThe wire projection of the engine's `core.GeometryWarning`. Advisory only:\na warning NEVER changes a measured quantity — it flags geometry that is\nvalid but likely a mistake (e.g. a stale dependent-height default). Present\non BOTH tiers — a correctness/safety signal, not a paid feature.",
        +                  "properties": {
        +                    "affected_params": {
        +                      "items": {
        +                        "type": "string"
        +                      },
        +                      "type": "array"
        +                    },
        +                    "code": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "detail": {
        +                      "additionalProperties": {
        +                        "type": "number"
        +                      },
        +                      "type": "object"
        +                    },
        +                    "message": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "severity": {
        +                      "enum": [
        +                        "info",
        +                        "advisory",
        +                        "caution"
        +                      ],
        +                      "type": "string"
        +                    }
        +                  },
        +                  "required": [
        +                    "code",
        +                    "severity",
        +                    "message"
        +                  ],
        +                  "type": "object"
        +                },
        +                "type": "array"
        +              }
        +            },
        +            "required": [
        +              "assembly_slug",
        +              "standard",
        +              "parameters_used",
        +              "boq_rows",
        +              "totals_summary",
        +              "text_summary"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      },
        +      "error": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        +            "properties": {
        +              "code": {
        +                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        +                "enum": [
        +                  "RATE_LIMIT_EXCEEDED",
        +                  "TIER_INSUFFICIENT",
        +                  "INVALID_INPUT",
        +                  "SCHEMA_VERSION_MISMATCH",
        +                  "SCHEMA_INVARIANT_VIOLATION",
        +                  "UPSTREAM_TIMEOUT",
        +                  "BACKEND_FAILURE",
        +                  "IP_BLOCKED",
        +                  "RESOURCE_NOT_FOUND",
        +                  "RENDER_FAILURE",
        +                  "OCR_LOW_CONFIDENCE",
        +                  "MANUAL_REVIEW_REQUIRED",
        +                  "ACCEPTANCE_REQUIRED",
        +                  "INVALID_TOKEN"
        +                ],
        +                "type": "string"
        +              },
        +              "details": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "message": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "recoverable": {
        +                "type": "boolean"
        +              },
        +              "retry_after_seconds": {
        +                "anyOf": [
        +                  {
        +                    "minimum": 0,
        +                    "type": "integer"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              }
        +            },
        +            "required": [
        +              "code",
        +              "message",
        +              "recoverable"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      }
        +    },
        +    "required": [
        +      "_meta"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "_meta": {
        +        "additionalProperties": false,
        +        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        +        "properties": {
        +          "deliverables": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        +                "properties": {
        +                  "docx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "dxf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "expires_at": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  },
        +                  "pdf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "xlsx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "expires_at"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "document_id": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "issued_at": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "output_mode": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Surfaces what a trimmed ``output_mode`` withheld from ``data``.\n\nA trimmed mode (``summary`` / ``boq`` / ``boq_with_backup``) withholds\nalready-computed fields to keep the chat payload small. The withheld value\nreads to a client agent as \"capability missing\" (the box-culvert \"geometry\nbuilder isn't firing\" scare) rather than \"pared for size\": ``drawing`` and\n``audit_trail`` appear as ``null``, ``boq_rows`` as an empty list ``[]``\n(its type forbids ``null``) — both indistinguishable from a genuine absent\nresult. This names the withheld fields and the exact mode that brings each\nback, so the value is unambiguous. Absent on the default ``full_json`` mode\n— nothing is withheld, nothing to point at.",
        +                "properties": {
        +                  "mode": {
        +                    "enum": [
        +                      "summary",
        +                      "boq",
        +                      "boq_with_backup"
        +                    ],
        +                    "type": "string"
        +                  },
        +                  "omitted_fields": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "minItems": 1,
        +                    "type": "array"
        +                  },
        +                  "retrieve_with": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "mode",
        +                  "omitted_fields",
        +                  "retrieve_with"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "rate_limit_remaining": {
        +            "anyOf": [
        +              {
        +                "minimum": 0,
        +                "type": "integer"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "request_id": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "schema_version": {
        +            "const": "1.0.0",
        +            "default": "1.0.0",
        +            "type": "string"
        +          },
        +          "scope_boundary": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        +                "properties": {
        +                  "not_in_scope": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "produced": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "recommended_companions": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "type": "string"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "produced",
        +                  "not_in_scope"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tier": {
        +            "enum": [
        +              "free",
        +              "paid"
        +            ],
        +            "type": "string"
        +          },
        +          "tier_upgrade": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        +                "properties": {
        +                  "available_tiers": {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        +                      "properties": {
        +                        "billing": {
        +                          "enum": [
        +                            "one_off",
        +                            "monthly",
        +                            "annual"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "currency": {
        +                          "enum": [
        +                            "GBP",
        +                            "SGD",
        +                            "EUR",
        +                            "USD",
        +                            "CAD",
        +                            "AUD",
        +                            "NZD",
        +                            "MYR"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "display_name": {
        +                          "type": "string"
        +                        },
        +                        "price_local": {
        +                          "type": "number"
        +                        },
        +                        "tier_slug": {
        +                          "enum": [
        +                            "7_day_pass",
        +                            "solo",
        +                            "studio",
        +                            "practice"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "unlock_summary": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "tier_slug",
        +                        "display_name",
        +                        "price_local",
        +                        "currency",
        +                        "billing",
        +                        "unlock_summary"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "current_tier": {
        +                    "const": "free",
        +                    "default": "free",
        +                    "type": "string"
        +                  },
        +                  "pass_credit": {
        +                    "anyOf": [
        +                      {
        +                        "additionalProperties": false,
        +                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        +                        "properties": {
        +                          "amount_local": {
        +                            "type": "number"
        +                          },
        +                          "applies_to": {
        +                            "const": "solo_first_month",
        +                            "default": "solo_first_month",
        +                            "type": "string"
        +                          },
        +                          "currency": {
        +                            "type": "string"
        +                          },
        +                          "redeemable_until": {
        +                            "type": "string"
        +                          }
        +                        },
        +                        "required": [
        +                          "amount_local",
        +                          "currency",
        +                          "redeemable_until"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "pricing_url": {
        +                    "default": "https://civilquants.com/pricing",
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "available_tiers"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tos_url": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "upgrade_hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "warranty_disclaimer": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          }
        +        },
        +        "required": [
        +          "request_id",
        +          "issued_at",
        +          "tier"
        +        ],
        +        "type": "object"
        +      },
        +      "data": {
        +        "default": null,
        +        "title": "Data"
        +      },
        +      "error": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        +            "properties": {
        +              "code": {
        +                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        +                "enum": [
        +                  "RATE_LIMIT_EXCEEDED",
        +                  "TIER_INSUFFICIENT",
        +                  "INVALID_INPUT",
        +                  "SCHEMA_VERSION_MISMATCH",
        +                  "SCHEMA_INVARIANT_VIOLATION",
        +                  "UPSTREAM_TIMEOUT",
        +                  "BACKEND_FAILURE",
        +                  "IP_BLOCKED",
        +                  "RESOURCE_NOT_FOUND",
        +                  "RENDER_FAILURE",
        +                  "OCR_LOW_CONFIDENCE",
        +                  "MANUAL_REVIEW_REQUIRED",
        +                  "ACCEPTANCE_REQUIRED",
        +                  "INVALID_TOKEN"
        +                ],
        +                "type": "string"
        +              },
        +              "details": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "message": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "recoverable": {
        +                "type": "boolean"
        +              },
        +              "retry_after_seconds": {
        +                "anyOf": [
        +                  {
        +                    "minimum": 0,
        +                    "type": "integer"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              }
        +            },
        +            "required": [
        +              "code",
        +              "message",
        +              "recoverable"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      }
        +    },
        +    "required": [
        +      "_meta"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedcompute_single_service_run1 field changed
      • changedOutput schema / properties / result / anyOf
        Previous value: -[
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "_meta": {
        -        "additionalProperties": false,
        -        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        -        "properties": {
        -          "deliverables": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        -                "properties": {
        -                  "docx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "dxf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "expires_at": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  },
        -                  "pdf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "xlsx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "expires_at"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "document_id": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "issued_at": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "rate_limit_remaining": {
        -            "anyOf": [
        -              {
        -                "minimum": 0,
        -                "type": "integer"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "request_id": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "schema_version": {
        -            "const": "1.0.0",
        -            "default": "1.0.0",
        -            "type": "string"
        -          },
        -          "scope_boundary": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        -                "properties": {
        -                  "not_in_scope": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "produced": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "recommended_companions": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "type": "string"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "produced",
        -                  "not_in_scope"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tier": {
        -            "enum": [
        -              "free",
        -              "paid"
        -            ],
        -            "type": "string"
        -          },
        -          "tier_upgrade": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        -                "properties": {
        -                  "available_tiers": {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        -                      "properties": {
        -                        "billing": {
        -                          "enum": [
        -                            "one_off",
        -                            "monthly",
        -                            "annual"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "currency": {
        -                          "enum": [
        -                            "GBP",
        -                            "SGD",
        -                            "EUR",
        -                            "USD",
        -                            "CAD",
        -                            "AUD",
        -                            "NZD",
        -                            "MYR"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "display_name": {
        -                          "type": "string"
        -                        },
        -                        "price_local": {
        -                          "type": "number"
        -                        },
        -                        "tier_slug": {
        -                          "enum": [
        -                            "7_day_pass",
        -                            "solo",
        -                            "studio",
        -                            "practice"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "unlock_summary": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "tier_slug",
        -                        "display_name",
        -                        "price_local",
        -                        "currency",
        -                        "billing",
        -                        "unlock_summary"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "current_tier": {
        -                    "const": "free",
        -                    "default": "free",
        -                    "type": "string"
        -                  },
        -                  "pass_credit": {
        -                    "anyOf": [
        -                      {
        -                        "additionalProperties": false,
        -                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        -                        "properties": {
        -                          "amount_local": {
        -                            "type": "number"
        -                          },
        -                          "applies_to": {
        -                            "const": "solo_first_month",
        -                            "default": "solo_first_month",
        -                            "type": "string"
        -                          },
        -                          "currency": {
        -                            "type": "string"
        -                          },
        -                          "redeemable_until": {
        -                            "type": "string"
        -                          }
        -                        },
        -                        "required": [
        -                          "amount_local",
        -                          "currency",
        -                          "redeemable_until"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "pricing_url": {
        -                    "default": "https://civilquants.com/pricing",
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "available_tiers"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tos_url": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "upgrade_hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "warranty_disclaimer": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          }
        -        },
        -        "required": [
        -          "request_id",
        -          "issued_at",
        -          "tier"
        -        ],
        -        "type": "object"
        -      },
        -      "data": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Schema § 1.1 — the typed payload returned inside `MCPResponse[ComputeResult]`.\n\nFree-tier responses omit `drawings` (the downloadable CAD artefact\npointers — the paid differentiator); the bridge enforces this. The\n`audit_trail` and the inline `drawing` preview are present on BOTH tiers\n(V1 ALIGN / 60th-fire D + C). `text_summary` is bounded to 2000 chars —\nkeeps the LLM-facing summary token-cheap and forces longer narrative into\nBoQ row descriptions where it belongs. `warnings` is the non-fatal\ngeometry advisory list (both tiers).",
        -            "properties": {
        -              "assembly_slug": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "audit_trail": {
        -                "anyOf": [
        -                  {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.7 — paid-tier audit-trail entry.\n\nOne entry per BoQ row; `boq_row_index` ties to the row position in\n`ComputeResult.boq_rows`. `derivation` is the human-readable formula\nwalk-through; `formula` is the optional formal expression.",
        -                      "properties": {
        -                        "boq_row_index": {
        -                          "minimum": 0,
        -                          "type": "integer"
        -                        },
        -                        "derivation": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "formula": {
        -                          "anyOf": [
        -                            {
        -                              "type": "string"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ],
        -                          "default": null
        -                        },
        -                        "id": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "parameters_referenced": {
        -                          "items": {
        -                            "type": "string"
        -                          },
        -                          "type": "array"
        -                        }
        -                      },
        -                      "required": [
        -                        "id",
        -                        "boq_row_index",
        -                        "derivation"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "boq_rows": {
        -                "items": {
        -                  "additionalProperties": false,
        -                  "description": "Schema § 1.3 — a single bill row in the requested standard's format.\n\n`description` is the non-verbatim functional description per spec § 13.9 /\n§ 15 invariant — NEVER reproduces a standard's verbatim clause text.\n`rate` / `amount` ship null because rates are commodity data the customer\nowns; the engine's job is the measurement, not the pricing.",
        -                  "properties": {
        -                    "amount": {
        -                      "anyOf": [
        -                        {
        -                          "type": "number"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "attribution": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "audit_id": {
        -                      "anyOf": [
        -                        {
        -                          "type": "string"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "description": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "quantity": {
        -                      "minimum": 0,
        -                      "type": "number"
        -                    },
        -                    "rate": {
        -                      "anyOf": [
        -                        {
        -                          "type": "number"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "unit": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "work_section": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    }
        -                  },
        -                  "required": [
        -                    "work_section",
        -                    "description",
        -                    "quantity",
        -                    "unit",
        -                    "attribution"
        -                  ],
        -                  "type": "object"
        -                },
        -                "type": "array"
        -              },
        -              "drawing": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": false,
        -                    "description": "Schema § 1.6a — inline server-rendered SVG preview of the geometry.\n\nThe MCP mirror of the web ``/compute`` response's ``drawing`` field\n(``api.schemas.compute.DrawingRef``): the same on-screen dimensioned\ndrawing both tiers see in the workspace, surfaced on the MCP compute\nresponse so a chat client can render it inline (60th-fire item C). This\nis the on-screen preview — present on BOTH tiers per the free/paid\nboundary; the downloadable CAD artefacts (DXF / dimensioned PDF) remain\nthe paid differentiator via the export tools.\n\nDefined here rather than importing ``DrawingRef`` because the web\n``schemas`` package imports back into this module (``schemas.render``),\nso reusing it would create an import cycle — the MCP wire contract keeps\nits own copy, the same pattern as ``BoQRow`` / ``DrawingReference``.",
        -                    "properties": {
        -                      "entity_count": {
        -                        "minimum": 0,
        -                        "type": "integer"
        -                      },
        -                      "svg_b64": {
        -                        "minLength": 1,
        -                        "type": "string"
        -                      },
        -                      "unit_of_drawing": {
        -                        "const": "m",
        -                        "default": "m",
        -                        "type": "string"
        -                      },
        -                      "viewbox_height": {
        -                        "exclusiveMinimum": 0,
        -                        "type": "number"
        -                      },
        -                      "viewbox_width": {
        -                        "exclusiveMinimum": 0,
        -                        "type": "number"
        -                      },
        -                      "viewbox_x": {
        -                        "type": "number"
        -                      },
        -                      "viewbox_y": {
        -                        "type": "number"
        -                      }
        -                    },
        -                    "required": [
        -                      "svg_b64",
        -                      "viewbox_x",
        -                      "viewbox_y",
        -                      "viewbox_width",
        -                      "viewbox_height",
        -                      "entity_count"
        -                    ],
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "drawings": {
        -                "anyOf": [
        -                  {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.6 — paid-tier drawing artefact pointer.\n\n`url` is an R2-signed URL; expiry is carried in `_meta.deliverables.expires_at`\non the envelope (not duplicated here). `layers` is DXF-only; PDF/SVG\ncallers omit it.",
        -                      "properties": {
        -                        "drawing_type": {
        -                          "enum": [
        -                            "section",
        -                            "plan",
        -                            "elevation",
        -                            "isometric",
        -                            "detail"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "format": {
        -                          "enum": [
        -                            "DXF",
        -                            "PDF",
        -                            "SVG"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "layers": {
        -                          "anyOf": [
        -                            {
        -                              "items": {
        -                                "type": "string"
        -                              },
        -                              "type": "array"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ],
        -                          "default": null
        -                        },
        -                        "scale": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "sheet_size": {
        -                          "enum": [
        -                            "A1",
        -                            "A2",
        -                            "A3",
        -                            "A4"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "url": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "drawing_type",
        -                        "format",
        -                        "url",
        -                        "sheet_size",
        -                        "scale"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "parameters_used": {
        -                "additionalProperties": false,
        -                "description": "Schema § 1.2 — the parameter snapshot the engine actually used.\n\nSplits user-supplied values from engine defaults so customers can see\nwhich numbers came from them and which the engine filled in. Every\ndefaulted parameter SHOULD have a corresponding entry in `assumptions`\n— the bridge layer enforces this when wrapping engine output.",
        -                "properties": {
        -                  "assumptions": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "engine_defaults": {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  "user_supplied": {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  }
        -                },
        -                "type": "object"
        -              },
        -              "standard": {
        -                "enum": [
        -                  "CESMM4",
        -                  "NRM2",
        -                  "SMM7",
        -                  "MMHW"
        -                ],
        -                "type": "string"
        -              },
        -              "text_summary": {
        -                "maxLength": 2000,
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "totals_summary": {
        -                "additionalProperties": false,
        -                "description": "Schema § 1.4 — totals_summary as a typed wrapper around the free-form dict.\n\nWire shape is a flat object (`{\"concrete_m3\": {...}, \"rebar_t\": {...}}`).\nWe model it as `RootModel`-equivalent via `model_config(extra=\"allow\")`\n+ a single `__root__`-style `entries` dict. Pydantic v2 recommends\n`RootModel` for free-form roots; using a wrapper class keeps the import\nsurface uniform with the rest of this module.",
        -                "properties": {
        -                  "entries": {
        -                    "additionalProperties": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.4 — single material/work-class total entry.",
        -                      "properties": {
        -                        "quantity": {
        -                          "minimum": 0,
        -                          "type": "number"
        -                        },
        -                        "unit": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "quantity",
        -                        "unit"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "object"
        -                  }
        -                },
        -                "type": "object"
        -              },
        -              "warnings": {
        -                "items": {
        -                  "additionalProperties": false,
        -                  "description": "Schema § 1.8 — a non-fatal geometry advisory (56th-fire T2).\n\nThe wire projection of the engine's `core.GeometryWarning`. Advisory only:\na warning NEVER changes a measured quantity — it flags geometry that is\nvalid but likely a mistake (e.g. a stale dependent-height default). Present\non BOTH tiers — a correctness/safety signal, not a paid feature.",
        -                  "properties": {
        -                    "affected_params": {
        -                      "items": {
        -                        "type": "string"
        -                      },
        -                      "type": "array"
        -                    },
        -                    "code": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "detail": {
        -                      "additionalProperties": {
        -                        "type": "number"
        -                      },
        -                      "type": "object"
        -                    },
        -                    "message": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "severity": {
        -                      "enum": [
        -                        "info",
        -                        "advisory",
        -                        "caution"
        -                      ],
        -                      "type": "string"
        -                    }
        -                  },
        -                  "required": [
        -                    "code",
        -                    "severity",
        -                    "message"
        -                  ],
        -                  "type": "object"
        -                },
        -                "type": "array"
        -              }
        -            },
        -            "required": [
        -              "assembly_slug",
        -              "standard",
        -              "parameters_used",
        -              "boq_rows",
        -              "totals_summary",
        -              "text_summary"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      },
        -      "error": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        -            "properties": {
        -              "code": {
        -                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        -                "enum": [
        -                  "RATE_LIMIT_EXCEEDED",
        -                  "TIER_INSUFFICIENT",
        -                  "INVALID_INPUT",
        -                  "SCHEMA_VERSION_MISMATCH",
        -                  "SCHEMA_INVARIANT_VIOLATION",
        -                  "UPSTREAM_TIMEOUT",
        -                  "BACKEND_FAILURE",
        -                  "IP_BLOCKED",
        -                  "RESOURCE_NOT_FOUND",
        -                  "RENDER_FAILURE",
        -                  "OCR_LOW_CONFIDENCE",
        -                  "MANUAL_REVIEW_REQUIRED",
        -                  "ACCEPTANCE_REQUIRED",
        -                  "INVALID_TOKEN"
        -                ],
        -                "type": "string"
        -              },
        -              "details": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "message": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "recoverable": {
        -                "type": "boolean"
        -              },
        -              "retry_after_seconds": {
        -                "anyOf": [
        -                  {
        -                    "minimum": 0,
        -                    "type": "integer"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              }
        -            },
        -            "required": [
        -              "code",
        -              "message",
        -              "recoverable"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      }
        -    },
        -    "required": [
        -      "_meta"
        -    ],
        -    "type": "object"
        -  },
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "_meta": {
        -        "additionalProperties": false,
        -        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        -        "properties": {
        -          "deliverables": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        -                "properties": {
        -                  "docx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "dxf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "expires_at": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  },
        -                  "pdf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "xlsx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "expires_at"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "document_id": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "issued_at": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "rate_limit_remaining": {
        -            "anyOf": [
        -              {
        -                "minimum": 0,
        -                "type": "integer"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "request_id": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "schema_version": {
        -            "const": "1.0.0",
        -            "default": "1.0.0",
        -            "type": "string"
        -          },
        -          "scope_boundary": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        -                "properties": {
        -                  "not_in_scope": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "produced": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "recommended_companions": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "type": "string"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "produced",
        -                  "not_in_scope"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tier": {
        -            "enum": [
        -              "free",
        -              "paid"
        -            ],
        -            "type": "string"
        -          },
        -          "tier_upgrade": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        -                "properties": {
        -                  "available_tiers": {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        -                      "properties": {
        -                        "billing": {
        -                          "enum": [
        -                            "one_off",
        -                            "monthly",
        -                            "annual"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "currency": {
        -                          "enum": [
        -                            "GBP",
        -                            "SGD",
        -                            "EUR",
        -                            "USD",
        -                            "CAD",
        -                            "AUD",
        -                            "NZD",
        -                            "MYR"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "display_name": {
        -                          "type": "string"
        -                        },
        -                        "price_local": {
        -                          "type": "number"
        -                        },
        -                        "tier_slug": {
        -                          "enum": [
        -                            "7_day_pass",
        -                            "solo",
        -                            "studio",
        -                            "practice"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "unlock_summary": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "tier_slug",
        -                        "display_name",
        -                        "price_local",
        -                        "currency",
        -                        "billing",
        -                        "unlock_summary"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "current_tier": {
        -                    "const": "free",
        -                    "default": "free",
        -                    "type": "string"
        -                  },
        -                  "pass_credit": {
        -                    "anyOf": [
        -                      {
        -                        "additionalProperties": false,
        -                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        -                        "properties": {
        -                          "amount_local": {
        -                            "type": "number"
        -                          },
        -                          "applies_to": {
        -                            "const": "solo_first_month",
        -                            "default": "solo_first_month",
        -                            "type": "string"
        -                          },
        -                          "currency": {
        -                            "type": "string"
        -                          },
        -                          "redeemable_until": {
        -                            "type": "string"
        -                          }
        -                        },
        -                        "required": [
        -                          "amount_local",
        -                          "currency",
        -                          "redeemable_until"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "pricing_url": {
        -                    "default": "https://civilquants.com/pricing",
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "available_tiers"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tos_url": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "upgrade_hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "warranty_disclaimer": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          }
        -        },
        -        "required": [
        -          "request_id",
        -          "issued_at",
        -          "tier"
        -        ],
        -        "type": "object"
        -      },
        -      "data": {
        -        "default": null,
        -        "title": "Data"
        -      },
        -      "error": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        -            "properties": {
        -              "code": {
        -                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        -                "enum": [
        -                  "RATE_LIMIT_EXCEEDED",
        -                  "TIER_INSUFFICIENT",
        -                  "INVALID_INPUT",
        -                  "SCHEMA_VERSION_MISMATCH",
        -                  "SCHEMA_INVARIANT_VIOLATION",
        -                  "UPSTREAM_TIMEOUT",
        -                  "BACKEND_FAILURE",
        -                  "IP_BLOCKED",
        -                  "RESOURCE_NOT_FOUND",
        -                  "RENDER_FAILURE",
        -                  "OCR_LOW_CONFIDENCE",
        -                  "MANUAL_REVIEW_REQUIRED",
        -                  "ACCEPTANCE_REQUIRED",
        -                  "INVALID_TOKEN"
        -                ],
        -                "type": "string"
        -              },
        -              "details": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "message": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "recoverable": {
        -                "type": "boolean"
        -              },
        -              "retry_after_seconds": {
        -                "anyOf": [
        -                  {
        -                    "minimum": 0,
        -                    "type": "integer"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              }
        -            },
        -            "required": [
        -              "code",
        -              "message",
        -              "recoverable"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      }
        -    },
        -    "required": [
        -      "_meta"
        -    ],
        -    "type": "object"
        -  }
        -]New value: +[
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "_meta": {
        +        "additionalProperties": false,
        +        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        +        "properties": {
        +          "deliverables": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        +                "properties": {
        +                  "docx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "dxf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "expires_at": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  },
        +                  "pdf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "xlsx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "expires_at"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "document_id": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "issued_at": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "output_mode": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Surfaces what a trimmed ``output_mode`` withheld from ``data``.\n\nA trimmed mode (``summary`` / ``boq`` / ``boq_with_backup``) withholds\nalready-computed fields to keep the chat payload small. The withheld value\nreads to a client agent as \"capability missing\" (the box-culvert \"geometry\nbuilder isn't firing\" scare) rather than \"pared for size\": ``drawing`` and\n``audit_trail`` appear as ``null``, ``boq_rows`` as an empty list ``[]``\n(its type forbids ``null``) — both indistinguishable from a genuine absent\nresult. This names the withheld fields and the exact mode that brings each\nback, so the value is unambiguous. Absent on the default ``full_json`` mode\n— nothing is withheld, nothing to point at.",
        +                "properties": {
        +                  "mode": {
        +                    "enum": [
        +                      "summary",
        +                      "boq",
        +                      "boq_with_backup"
        +                    ],
        +                    "type": "string"
        +                  },
        +                  "omitted_fields": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "minItems": 1,
        +                    "type": "array"
        +                  },
        +                  "retrieve_with": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "mode",
        +                  "omitted_fields",
        +                  "retrieve_with"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "rate_limit_remaining": {
        +            "anyOf": [
        +              {
        +                "minimum": 0,
        +                "type": "integer"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "request_id": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "schema_version": {
        +            "const": "1.0.0",
        +            "default": "1.0.0",
        +            "type": "string"
        +          },
        +          "scope_boundary": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        +                "properties": {
        +                  "not_in_scope": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "produced": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "recommended_companions": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "type": "string"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "produced",
        +                  "not_in_scope"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tier": {
        +            "enum": [
        +              "free",
        +              "paid"
        +            ],
        +            "type": "string"
        +          },
        +          "tier_upgrade": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        +                "properties": {
        +                  "available_tiers": {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        +                      "properties": {
        +                        "billing": {
        +                          "enum": [
        +                            "one_off",
        +                            "monthly",
        +                            "annual"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "currency": {
        +                          "enum": [
        +                            "GBP",
        +                            "SGD",
        +                            "EUR",
        +                            "USD",
        +                            "CAD",
        +                            "AUD",
        +                            "NZD",
        +                            "MYR"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "display_name": {
        +                          "type": "string"
        +                        },
        +                        "price_local": {
        +                          "type": "number"
        +                        },
        +                        "tier_slug": {
        +                          "enum": [
        +                            "7_day_pass",
        +                            "solo",
        +                            "studio",
        +                            "practice"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "unlock_summary": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "tier_slug",
        +                        "display_name",
        +                        "price_local",
        +                        "currency",
        +                        "billing",
        +                        "unlock_summary"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "current_tier": {
        +                    "const": "free",
        +                    "default": "free",
        +                    "type": "string"
        +                  },
        +                  "pass_credit": {
        +                    "anyOf": [
        +                      {
        +                        "additionalProperties": false,
        +                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        +                        "properties": {
        +                          "amount_local": {
        +                            "type": "number"
        +                          },
        +                          "applies_to": {
        +                            "const": "solo_first_month",
        +                            "default": "solo_first_month",
        +                            "type": "string"
        +                          },
        +                          "currency": {
        +                            "type": "string"
        +                          },
        +                          "redeemable_until": {
        +                            "type": "string"
        +                          }
        +                        },
        +                        "required": [
        +                          "amount_local",
        +                          "currency",
        +                          "redeemable_until"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "pricing_url": {
        +                    "default": "https://civilquants.com/pricing",
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "available_tiers"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tos_url": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "upgrade_hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "warranty_disclaimer": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          }
        +        },
        +        "required": [
        +          "request_id",
        +          "issued_at",
        +          "tier"
        +        ],
        +        "type": "object"
        +      },
        +      "data": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Schema § 1.1 — the typed payload returned inside `MCPResponse[ComputeResult]`.\n\nFree-tier responses omit `drawings` (the downloadable CAD artefact\npointers — the paid differentiator); the bridge enforces this. The\n`audit_trail` and the inline `drawing` preview are present on BOTH tiers\n(V1 ALIGN / 60th-fire D + C). `text_summary` is bounded to 2000 chars —\nkeeps the LLM-facing summary token-cheap and forces longer narrative into\nBoQ row descriptions where it belongs. `warnings` is the non-fatal\ngeometry advisory list (both tiers).",
        +            "properties": {
        +              "assembly_slug": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "audit_trail": {
        +                "anyOf": [
        +                  {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.7 — paid-tier audit-trail entry.\n\nOne entry per BoQ row; `boq_row_index` ties to the row position in\n`ComputeResult.boq_rows`. `derivation` is the human-readable formula\nwalk-through; `formula` is the optional formal expression.",
        +                      "properties": {
        +                        "boq_row_index": {
        +                          "minimum": 0,
        +                          "type": "integer"
        +                        },
        +                        "derivation": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "formula": {
        +                          "anyOf": [
        +                            {
        +                              "type": "string"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ],
        +                          "default": null
        +                        },
        +                        "id": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "parameters_referenced": {
        +                          "items": {
        +                            "type": "string"
        +                          },
        +                          "type": "array"
        +                        }
        +                      },
        +                      "required": [
        +                        "id",
        +                        "boq_row_index",
        +                        "derivation"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "boq_rows": {
        +                "items": {
        +                  "additionalProperties": false,
        +                  "description": "Schema § 1.3 — a single bill row in the requested standard's format.\n\n`description` is the non-verbatim functional description per spec § 13.9 /\n§ 15 invariant — NEVER reproduces a standard's verbatim clause text.\n`rate` / `amount` ship null because rates are commodity data the customer\nowns; the engine's job is the measurement, not the pricing.",
        +                  "properties": {
        +                    "amount": {
        +                      "anyOf": [
        +                        {
        +                          "type": "number"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "attribution": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "audit_id": {
        +                      "anyOf": [
        +                        {
        +                          "type": "string"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "description": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "quantity": {
        +                      "minimum": 0,
        +                      "type": "number"
        +                    },
        +                    "rate": {
        +                      "anyOf": [
        +                        {
        +                          "type": "number"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "unit": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "work_section": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    }
        +                  },
        +                  "required": [
        +                    "work_section",
        +                    "description",
        +                    "quantity",
        +                    "unit",
        +                    "attribution"
        +                  ],
        +                  "type": "object"
        +                },
        +                "type": "array"
        +              },
        +              "drawing": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": false,
        +                    "description": "Schema § 1.6a — inline server-rendered SVG preview of the geometry.\n\nThe MCP mirror of the web ``/compute`` response's ``drawing`` field\n(``api.schemas.compute.DrawingRef``): the same on-screen dimensioned\ndrawing both tiers see in the workspace, surfaced on the MCP compute\nresponse so a chat client can render it inline (60th-fire item C). This\nis the on-screen preview — present on BOTH tiers per the free/paid\nboundary; the downloadable CAD artefacts (DXF / dimensioned PDF) remain\nthe paid differentiator via the export tools.\n\nDefined here rather than importing ``DrawingRef`` because the web\n``schemas`` package imports back into this module (``schemas.render``),\nso reusing it would create an import cycle — the MCP wire contract keeps\nits own copy, the same pattern as ``BoQRow`` / ``DrawingReference``.",
        +                    "properties": {
        +                      "entity_count": {
        +                        "minimum": 0,
        +                        "type": "integer"
        +                      },
        +                      "svg_b64": {
        +                        "minLength": 1,
        +                        "type": "string"
        +                      },
        +                      "unit_of_drawing": {
        +                        "const": "m",
        +                        "default": "m",
        +                        "type": "string"
        +                      },
        +                      "viewbox_height": {
        +                        "exclusiveMinimum": 0,
        +                        "type": "number"
        +                      },
        +                      "viewbox_width": {
        +                        "exclusiveMinimum": 0,
        +                        "type": "number"
        +                      },
        +                      "viewbox_x": {
        +                        "type": "number"
        +                      },
        +                      "viewbox_y": {
        +                        "type": "number"
        +                      }
        +                    },
        +                    "required": [
        +                      "svg_b64",
        +                      "viewbox_x",
        +                      "viewbox_y",
        +                      "viewbox_width",
        +                      "viewbox_height",
        +                      "entity_count"
        +                    ],
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "drawings": {
        +                "anyOf": [
        +                  {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.6 — paid-tier drawing artefact pointer.\n\n`url` is an R2-signed URL; expiry is carried in `_meta.deliverables.expires_at`\non the envelope (not duplicated here). `layers` is DXF-only; PDF/SVG\ncallers omit it.",
        +                      "properties": {
        +                        "drawing_type": {
        +                          "enum": [
        +                            "section",
        +                            "plan",
        +                            "elevation",
        +                            "isometric",
        +                            "detail"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "format": {
        +                          "enum": [
        +                            "DXF",
        +                            "PDF",
        +                            "SVG"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "layers": {
        +                          "anyOf": [
        +                            {
        +                              "items": {
        +                                "type": "string"
        +                              },
        +                              "type": "array"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ],
        +                          "default": null
        +                        },
        +                        "scale": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "sheet_size": {
        +                          "enum": [
        +                            "A1",
        +                            "A2",
        +                            "A3",
        +                            "A4"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "url": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "drawing_type",
        +                        "format",
        +                        "url",
        +                        "sheet_size",
        +                        "scale"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "parameters_used": {
        +                "additionalProperties": false,
        +                "description": "Schema § 1.2 — the parameter snapshot the engine actually used.\n\nSplits user-supplied values from engine defaults so customers can see\nwhich numbers came from them and which the engine filled in. Every\ndefaulted parameter SHOULD have a corresponding entry in `assumptions`\n— the bridge layer enforces this when wrapping engine output.",
        +                "properties": {
        +                  "assumptions": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "engine_defaults": {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  "user_supplied": {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  }
        +                },
        +                "type": "object"
        +              },
        +              "standard": {
        +                "enum": [
        +                  "CESMM4",
        +                  "NRM2",
        +                  "SMM7",
        +                  "MMHW"
        +                ],
        +                "type": "string"
        +              },
        +              "text_summary": {
        +                "maxLength": 2000,
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "totals_summary": {
        +                "additionalProperties": false,
        +                "description": "Schema § 1.4 — totals_summary as a typed wrapper around the free-form dict.\n\nWire shape is a flat object (`{\"concrete_m3\": {...}, \"rebar_t\": {...}}`).\nWe model it as `RootModel`-equivalent via `model_config(extra=\"allow\")`\n+ a single `__root__`-style `entries` dict. Pydantic v2 recommends\n`RootModel` for free-form roots; using a wrapper class keeps the import\nsurface uniform with the rest of this module.",
        +                "properties": {
        +                  "entries": {
        +                    "additionalProperties": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.4 — single material/work-class total entry.",
        +                      "properties": {
        +                        "quantity": {
        +                          "minimum": 0,
        +                          "type": "number"
        +                        },
        +                        "unit": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "quantity",
        +                        "unit"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "object"
        +                  }
        +                },
        +                "type": "object"
        +              },
        +              "warnings": {
        +                "items": {
        +                  "additionalProperties": false,
        +                  "description": "Schema § 1.8 — a non-fatal geometry advisory (56th-fire T2).\n\nThe wire projection of the engine's `core.GeometryWarning`. Advisory only:\na warning NEVER changes a measured quantity — it flags geometry that is\nvalid but likely a mistake (e.g. a stale dependent-height default). Present\non BOTH tiers — a correctness/safety signal, not a paid feature.",
        +                  "properties": {
        +                    "affected_params": {
        +                      "items": {
        +                        "type": "string"
        +                      },
        +                      "type": "array"
        +                    },
        +                    "code": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "detail": {
        +                      "additionalProperties": {
        +                        "type": "number"
        +                      },
        +                      "type": "object"
        +                    },
        +                    "message": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "severity": {
        +                      "enum": [
        +                        "info",
        +                        "advisory",
        +                        "caution"
        +                      ],
        +                      "type": "string"
        +                    }
        +                  },
        +                  "required": [
        +                    "code",
        +                    "severity",
        +                    "message"
        +                  ],
        +                  "type": "object"
        +                },
        +                "type": "array"
        +              }
        +            },
        +            "required": [
        +              "assembly_slug",
        +              "standard",
        +              "parameters_used",
        +              "boq_rows",
        +              "totals_summary",
        +              "text_summary"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      },
        +      "error": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        +            "properties": {
        +              "code": {
        +                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        +                "enum": [
        +                  "RATE_LIMIT_EXCEEDED",
        +                  "TIER_INSUFFICIENT",
        +                  "INVALID_INPUT",
        +                  "SCHEMA_VERSION_MISMATCH",
        +                  "SCHEMA_INVARIANT_VIOLATION",
        +                  "UPSTREAM_TIMEOUT",
        +                  "BACKEND_FAILURE",
        +                  "IP_BLOCKED",
        +                  "RESOURCE_NOT_FOUND",
        +                  "RENDER_FAILURE",
        +                  "OCR_LOW_CONFIDENCE",
        +                  "MANUAL_REVIEW_REQUIRED",
        +                  "ACCEPTANCE_REQUIRED",
        +                  "INVALID_TOKEN"
        +                ],
        +                "type": "string"
        +              },
        +              "details": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "message": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "recoverable": {
        +                "type": "boolean"
        +              },
        +              "retry_after_seconds": {
        +                "anyOf": [
        +                  {
        +                    "minimum": 0,
        +                    "type": "integer"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              }
        +            },
        +            "required": [
        +              "code",
        +              "message",
        +              "recoverable"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      }
        +    },
        +    "required": [
        +      "_meta"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "_meta": {
        +        "additionalProperties": false,
        +        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        +        "properties": {
        +          "deliverables": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        +                "properties": {
        +                  "docx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "dxf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "expires_at": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  },
        +                  "pdf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "xlsx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "expires_at"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "document_id": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "issued_at": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "output_mode": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Surfaces what a trimmed ``output_mode`` withheld from ``data``.\n\nA trimmed mode (``summary`` / ``boq`` / ``boq_with_backup``) withholds\nalready-computed fields to keep the chat payload small. The withheld value\nreads to a client agent as \"capability missing\" (the box-culvert \"geometry\nbuilder isn't firing\" scare) rather than \"pared for size\": ``drawing`` and\n``audit_trail`` appear as ``null``, ``boq_rows`` as an empty list ``[]``\n(its type forbids ``null``) — both indistinguishable from a genuine absent\nresult. This names the withheld fields and the exact mode that brings each\nback, so the value is unambiguous. Absent on the default ``full_json`` mode\n— nothing is withheld, nothing to point at.",
        +                "properties": {
        +                  "mode": {
        +                    "enum": [
        +                      "summary",
        +                      "boq",
        +                      "boq_with_backup"
        +                    ],
        +                    "type": "string"
        +                  },
        +                  "omitted_fields": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "minItems": 1,
        +                    "type": "array"
        +                  },
        +                  "retrieve_with": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "mode",
        +                  "omitted_fields",
        +                  "retrieve_with"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "rate_limit_remaining": {
        +            "anyOf": [
        +              {
        +                "minimum": 0,
        +                "type": "integer"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "request_id": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "schema_version": {
        +            "const": "1.0.0",
        +            "default": "1.0.0",
        +            "type": "string"
        +          },
        +          "scope_boundary": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        +                "properties": {
        +                  "not_in_scope": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "produced": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "recommended_companions": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "type": "string"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "produced",
        +                  "not_in_scope"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tier": {
        +            "enum": [
        +              "free",
        +              "paid"
        +            ],
        +            "type": "string"
        +          },
        +          "tier_upgrade": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        +                "properties": {
        +                  "available_tiers": {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        +                      "properties": {
        +                        "billing": {
        +                          "enum": [
        +                            "one_off",
        +                            "monthly",
        +                            "annual"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "currency": {
        +                          "enum": [
        +                            "GBP",
        +                            "SGD",
        +                            "EUR",
        +                            "USD",
        +                            "CAD",
        +                            "AUD",
        +                            "NZD",
        +                            "MYR"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "display_name": {
        +                          "type": "string"
        +                        },
        +                        "price_local": {
        +                          "type": "number"
        +                        },
        +                        "tier_slug": {
        +                          "enum": [
        +                            "7_day_pass",
        +                            "solo",
        +                            "studio",
        +                            "practice"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "unlock_summary": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "tier_slug",
        +                        "display_name",
        +                        "price_local",
        +                        "currency",
        +                        "billing",
        +                        "unlock_summary"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "current_tier": {
        +                    "const": "free",
        +                    "default": "free",
        +                    "type": "string"
        +                  },
        +                  "pass_credit": {
        +                    "anyOf": [
        +                      {
        +                        "additionalProperties": false,
        +                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        +                        "properties": {
        +                          "amount_local": {
        +                            "type": "number"
        +                          },
        +                          "applies_to": {
        +                            "const": "solo_first_month",
        +                            "default": "solo_first_month",
        +                            "type": "string"
        +                          },
        +                          "currency": {
        +                            "type": "string"
        +                          },
        +                          "redeemable_until": {
        +                            "type": "string"
        +                          }
        +                        },
        +                        "required": [
        +                          "amount_local",
        +                          "currency",
        +                          "redeemable_until"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "pricing_url": {
        +                    "default": "https://civilquants.com/pricing",
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "available_tiers"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tos_url": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "upgrade_hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "warranty_disclaimer": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          }
        +        },
        +        "required": [
        +          "request_id",
        +          "issued_at",
        +          "tier"
        +        ],
        +        "type": "object"
        +      },
        +      "data": {
        +        "default": null,
        +        "title": "Data"
        +      },
        +      "error": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        +            "properties": {
        +              "code": {
        +                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        +                "enum": [
        +                  "RATE_LIMIT_EXCEEDED",
        +                  "TIER_INSUFFICIENT",
        +                  "INVALID_INPUT",
        +                  "SCHEMA_VERSION_MISMATCH",
        +                  "SCHEMA_INVARIANT_VIOLATION",
        +                  "UPSTREAM_TIMEOUT",
        +                  "BACKEND_FAILURE",
        +                  "IP_BLOCKED",
        +                  "RESOURCE_NOT_FOUND",
        +                  "RENDER_FAILURE",
        +                  "OCR_LOW_CONFIDENCE",
        +                  "MANUAL_REVIEW_REQUIRED",
        +                  "ACCEPTANCE_REQUIRED",
        +                  "INVALID_TOKEN"
        +                ],
        +                "type": "string"
        +              },
        +              "details": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "message": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "recoverable": {
        +                "type": "boolean"
        +              },
        +              "retry_after_seconds": {
        +                "anyOf": [
        +                  {
        +                    "minimum": 0,
        +                    "type": "integer"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              }
        +            },
        +            "required": [
        +              "code",
        +              "message",
        +              "recoverable"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      }
        +    },
        +    "required": [
        +      "_meta"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedcompute_soakaway1 field changed
      • changedOutput schema / properties / result / anyOf
        Previous value: -[
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "_meta": {
        -        "additionalProperties": false,
        -        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        -        "properties": {
        -          "deliverables": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        -                "properties": {
        -                  "docx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "dxf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "expires_at": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  },
        -                  "pdf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "xlsx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "expires_at"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "document_id": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "issued_at": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "rate_limit_remaining": {
        -            "anyOf": [
        -              {
        -                "minimum": 0,
        -                "type": "integer"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "request_id": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "schema_version": {
        -            "const": "1.0.0",
        -            "default": "1.0.0",
        -            "type": "string"
        -          },
        -          "scope_boundary": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        -                "properties": {
        -                  "not_in_scope": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "produced": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "recommended_companions": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "type": "string"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "produced",
        -                  "not_in_scope"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tier": {
        -            "enum": [
        -              "free",
        -              "paid"
        -            ],
        -            "type": "string"
        -          },
        -          "tier_upgrade": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        -                "properties": {
        -                  "available_tiers": {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        -                      "properties": {
        -                        "billing": {
        -                          "enum": [
        -                            "one_off",
        -                            "monthly",
        -                            "annual"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "currency": {
        -                          "enum": [
        -                            "GBP",
        -                            "SGD",
        -                            "EUR",
        -                            "USD",
        -                            "CAD",
        -                            "AUD",
        -                            "NZD",
        -                            "MYR"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "display_name": {
        -                          "type": "string"
        -                        },
        -                        "price_local": {
        -                          "type": "number"
        -                        },
        -                        "tier_slug": {
        -                          "enum": [
        -                            "7_day_pass",
        -                            "solo",
        -                            "studio",
        -                            "practice"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "unlock_summary": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "tier_slug",
        -                        "display_name",
        -                        "price_local",
        -                        "currency",
        -                        "billing",
        -                        "unlock_summary"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "current_tier": {
        -                    "const": "free",
        -                    "default": "free",
        -                    "type": "string"
        -                  },
        -                  "pass_credit": {
        -                    "anyOf": [
        -                      {
        -                        "additionalProperties": false,
        -                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        -                        "properties": {
        -                          "amount_local": {
        -                            "type": "number"
        -                          },
        -                          "applies_to": {
        -                            "const": "solo_first_month",
        -                            "default": "solo_first_month",
        -                            "type": "string"
        -                          },
        -                          "currency": {
        -                            "type": "string"
        -                          },
        -                          "redeemable_until": {
        -                            "type": "string"
        -                          }
        -                        },
        -                        "required": [
        -                          "amount_local",
        -                          "currency",
        -                          "redeemable_until"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "pricing_url": {
        -                    "default": "https://civilquants.com/pricing",
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "available_tiers"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tos_url": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "upgrade_hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "warranty_disclaimer": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          }
        -        },
        -        "required": [
        -          "request_id",
        -          "issued_at",
        -          "tier"
        -        ],
        -        "type": "object"
        -      },
        -      "data": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Schema § 1.1 — the typed payload returned inside `MCPResponse[ComputeResult]`.\n\nFree-tier responses omit `drawings` (the downloadable CAD artefact\npointers — the paid differentiator); the bridge enforces this. The\n`audit_trail` and the inline `drawing` preview are present on BOTH tiers\n(V1 ALIGN / 60th-fire D + C). `text_summary` is bounded to 2000 chars —\nkeeps the LLM-facing summary token-cheap and forces longer narrative into\nBoQ row descriptions where it belongs. `warnings` is the non-fatal\ngeometry advisory list (both tiers).",
        -            "properties": {
        -              "assembly_slug": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "audit_trail": {
        -                "anyOf": [
        -                  {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.7 — paid-tier audit-trail entry.\n\nOne entry per BoQ row; `boq_row_index` ties to the row position in\n`ComputeResult.boq_rows`. `derivation` is the human-readable formula\nwalk-through; `formula` is the optional formal expression.",
        -                      "properties": {
        -                        "boq_row_index": {
        -                          "minimum": 0,
        -                          "type": "integer"
        -                        },
        -                        "derivation": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "formula": {
        -                          "anyOf": [
        -                            {
        -                              "type": "string"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ],
        -                          "default": null
        -                        },
        -                        "id": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "parameters_referenced": {
        -                          "items": {
        -                            "type": "string"
        -                          },
        -                          "type": "array"
        -                        }
        -                      },
        -                      "required": [
        -                        "id",
        -                        "boq_row_index",
        -                        "derivation"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "boq_rows": {
        -                "items": {
        -                  "additionalProperties": false,
        -                  "description": "Schema § 1.3 — a single bill row in the requested standard's format.\n\n`description` is the non-verbatim functional description per spec § 13.9 /\n§ 15 invariant — NEVER reproduces a standard's verbatim clause text.\n`rate` / `amount` ship null because rates are commodity data the customer\nowns; the engine's job is the measurement, not the pricing.",
        -                  "properties": {
        -                    "amount": {
        -                      "anyOf": [
        -                        {
        -                          "type": "number"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "attribution": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "audit_id": {
        -                      "anyOf": [
        -                        {
        -                          "type": "string"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "description": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "quantity": {
        -                      "minimum": 0,
        -                      "type": "number"
        -                    },
        -                    "rate": {
        -                      "anyOf": [
        -                        {
        -                          "type": "number"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "unit": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "work_section": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    }
        -                  },
        -                  "required": [
        -                    "work_section",
        -                    "description",
        -                    "quantity",
        -                    "unit",
        -                    "attribution"
        -                  ],
        -                  "type": "object"
        -                },
        -                "type": "array"
        -              },
        -              "drawing": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": false,
        -                    "description": "Schema § 1.6a — inline server-rendered SVG preview of the geometry.\n\nThe MCP mirror of the web ``/compute`` response's ``drawing`` field\n(``api.schemas.compute.DrawingRef``): the same on-screen dimensioned\ndrawing both tiers see in the workspace, surfaced on the MCP compute\nresponse so a chat client can render it inline (60th-fire item C). This\nis the on-screen preview — present on BOTH tiers per the free/paid\nboundary; the downloadable CAD artefacts (DXF / dimensioned PDF) remain\nthe paid differentiator via the export tools.\n\nDefined here rather than importing ``DrawingRef`` because the web\n``schemas`` package imports back into this module (``schemas.render``),\nso reusing it would create an import cycle — the MCP wire contract keeps\nits own copy, the same pattern as ``BoQRow`` / ``DrawingReference``.",
        -                    "properties": {
        -                      "entity_count": {
        -                        "minimum": 0,
        -                        "type": "integer"
        -                      },
        -                      "svg_b64": {
        -                        "minLength": 1,
        -                        "type": "string"
        -                      },
        -                      "unit_of_drawing": {
        -                        "const": "m",
        -                        "default": "m",
        -                        "type": "string"
        -                      },
        -                      "viewbox_height": {
        -                        "exclusiveMinimum": 0,
        -                        "type": "number"
        -                      },
        -                      "viewbox_width": {
        -                        "exclusiveMinimum": 0,
        -                        "type": "number"
        -                      },
        -                      "viewbox_x": {
        -                        "type": "number"
        -                      },
        -                      "viewbox_y": {
        -                        "type": "number"
        -                      }
        -                    },
        -                    "required": [
        -                      "svg_b64",
        -                      "viewbox_x",
        -                      "viewbox_y",
        -                      "viewbox_width",
        -                      "viewbox_height",
        -                      "entity_count"
        -                    ],
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "drawings": {
        -                "anyOf": [
        -                  {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.6 — paid-tier drawing artefact pointer.\n\n`url` is an R2-signed URL; expiry is carried in `_meta.deliverables.expires_at`\non the envelope (not duplicated here). `layers` is DXF-only; PDF/SVG\ncallers omit it.",
        -                      "properties": {
        -                        "drawing_type": {
        -                          "enum": [
        -                            "section",
        -                            "plan",
        -                            "elevation",
        -                            "isometric",
        -                            "detail"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "format": {
        -                          "enum": [
        -                            "DXF",
        -                            "PDF",
        -                            "SVG"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "layers": {
        -                          "anyOf": [
        -                            {
        -                              "items": {
        -                                "type": "string"
        -                              },
        -                              "type": "array"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ],
        -                          "default": null
        -                        },
        -                        "scale": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "sheet_size": {
        -                          "enum": [
        -                            "A1",
        -                            "A2",
        -                            "A3",
        -                            "A4"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "url": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "drawing_type",
        -                        "format",
        -                        "url",
        -                        "sheet_size",
        -                        "scale"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "parameters_used": {
        -                "additionalProperties": false,
        -                "description": "Schema § 1.2 — the parameter snapshot the engine actually used.\n\nSplits user-supplied values from engine defaults so customers can see\nwhich numbers came from them and which the engine filled in. Every\ndefaulted parameter SHOULD have a corresponding entry in `assumptions`\n— the bridge layer enforces this when wrapping engine output.",
        -                "properties": {
        -                  "assumptions": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "engine_defaults": {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  "user_supplied": {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  }
        -                },
        -                "type": "object"
        -              },
        -              "standard": {
        -                "enum": [
        -                  "CESMM4",
        -                  "NRM2",
        -                  "SMM7",
        -                  "MMHW"
        -                ],
        -                "type": "string"
        -              },
        -              "text_summary": {
        -                "maxLength": 2000,
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "totals_summary": {
        -                "additionalProperties": false,
        -                "description": "Schema § 1.4 — totals_summary as a typed wrapper around the free-form dict.\n\nWire shape is a flat object (`{\"concrete_m3\": {...}, \"rebar_t\": {...}}`).\nWe model it as `RootModel`-equivalent via `model_config(extra=\"allow\")`\n+ a single `__root__`-style `entries` dict. Pydantic v2 recommends\n`RootModel` for free-form roots; using a wrapper class keeps the import\nsurface uniform with the rest of this module.",
        -                "properties": {
        -                  "entries": {
        -                    "additionalProperties": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.4 — single material/work-class total entry.",
        -                      "properties": {
        -                        "quantity": {
        -                          "minimum": 0,
        -                          "type": "number"
        -                        },
        -                        "unit": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "quantity",
        -                        "unit"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "object"
        -                  }
        -                },
        -                "type": "object"
        -              },
        -              "warnings": {
        -                "items": {
        -                  "additionalProperties": false,
        -                  "description": "Schema § 1.8 — a non-fatal geometry advisory (56th-fire T2).\n\nThe wire projection of the engine's `core.GeometryWarning`. Advisory only:\na warning NEVER changes a measured quantity — it flags geometry that is\nvalid but likely a mistake (e.g. a stale dependent-height default). Present\non BOTH tiers — a correctness/safety signal, not a paid feature.",
        -                  "properties": {
        -                    "affected_params": {
        -                      "items": {
        -                        "type": "string"
        -                      },
        -                      "type": "array"
        -                    },
        -                    "code": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "detail": {
        -                      "additionalProperties": {
        -                        "type": "number"
        -                      },
        -                      "type": "object"
        -                    },
        -                    "message": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "severity": {
        -                      "enum": [
        -                        "info",
        -                        "advisory",
        -                        "caution"
        -                      ],
        -                      "type": "string"
        -                    }
        -                  },
        -                  "required": [
        -                    "code",
        -                    "severity",
        -                    "message"
        -                  ],
        -                  "type": "object"
        -                },
        -                "type": "array"
        -              }
        -            },
        -            "required": [
        -              "assembly_slug",
        -              "standard",
        -              "parameters_used",
        -              "boq_rows",
        -              "totals_summary",
        -              "text_summary"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      },
        -      "error": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        -            "properties": {
        -              "code": {
        -                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        -                "enum": [
        -                  "RATE_LIMIT_EXCEEDED",
        -                  "TIER_INSUFFICIENT",
        -                  "INVALID_INPUT",
        -                  "SCHEMA_VERSION_MISMATCH",
        -                  "SCHEMA_INVARIANT_VIOLATION",
        -                  "UPSTREAM_TIMEOUT",
        -                  "BACKEND_FAILURE",
        -                  "IP_BLOCKED",
        -                  "RESOURCE_NOT_FOUND",
        -                  "RENDER_FAILURE",
        -                  "OCR_LOW_CONFIDENCE",
        -                  "MANUAL_REVIEW_REQUIRED",
        -                  "ACCEPTANCE_REQUIRED",
        -                  "INVALID_TOKEN"
        -                ],
        -                "type": "string"
        -              },
        -              "details": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "message": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "recoverable": {
        -                "type": "boolean"
        -              },
        -              "retry_after_seconds": {
        -                "anyOf": [
        -                  {
        -                    "minimum": 0,
        -                    "type": "integer"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              }
        -            },
        -            "required": [
        -              "code",
        -              "message",
        -              "recoverable"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      }
        -    },
        -    "required": [
        -      "_meta"
        -    ],
        -    "type": "object"
        -  },
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "_meta": {
        -        "additionalProperties": false,
        -        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        -        "properties": {
        -          "deliverables": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        -                "properties": {
        -                  "docx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "dxf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "expires_at": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  },
        -                  "pdf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "xlsx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "expires_at"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "document_id": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "issued_at": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "rate_limit_remaining": {
        -            "anyOf": [
        -              {
        -                "minimum": 0,
        -                "type": "integer"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "request_id": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "schema_version": {
        -            "const": "1.0.0",
        -            "default": "1.0.0",
        -            "type": "string"
        -          },
        -          "scope_boundary": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        -                "properties": {
        -                  "not_in_scope": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "produced": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "recommended_companions": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "type": "string"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "produced",
        -                  "not_in_scope"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tier": {
        -            "enum": [
        -              "free",
        -              "paid"
        -            ],
        -            "type": "string"
        -          },
        -          "tier_upgrade": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        -                "properties": {
        -                  "available_tiers": {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        -                      "properties": {
        -                        "billing": {
        -                          "enum": [
        -                            "one_off",
        -                            "monthly",
        -                            "annual"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "currency": {
        -                          "enum": [
        -                            "GBP",
        -                            "SGD",
        -                            "EUR",
        -                            "USD",
        -                            "CAD",
        -                            "AUD",
        -                            "NZD",
        -                            "MYR"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "display_name": {
        -                          "type": "string"
        -                        },
        -                        "price_local": {
        -                          "type": "number"
        -                        },
        -                        "tier_slug": {
        -                          "enum": [
        -                            "7_day_pass",
        -                            "solo",
        -                            "studio",
        -                            "practice"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "unlock_summary": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "tier_slug",
        -                        "display_name",
        -                        "price_local",
        -                        "currency",
        -                        "billing",
        -                        "unlock_summary"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "current_tier": {
        -                    "const": "free",
        -                    "default": "free",
        -                    "type": "string"
        -                  },
        -                  "pass_credit": {
        -                    "anyOf": [
        -                      {
        -                        "additionalProperties": false,
        -                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        -                        "properties": {
        -                          "amount_local": {
        -                            "type": "number"
        -                          },
        -                          "applies_to": {
        -                            "const": "solo_first_month",
        -                            "default": "solo_first_month",
        -                            "type": "string"
        -                          },
        -                          "currency": {
        -                            "type": "string"
        -                          },
        -                          "redeemable_until": {
        -                            "type": "string"
        -                          }
        -                        },
        -                        "required": [
        -                          "amount_local",
        -                          "currency",
        -                          "redeemable_until"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "pricing_url": {
        -                    "default": "https://civilquants.com/pricing",
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "available_tiers"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tos_url": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "upgrade_hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "warranty_disclaimer": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          }
        -        },
        -        "required": [
        -          "request_id",
        -          "issued_at",
        -          "tier"
        -        ],
        -        "type": "object"
        -      },
        -      "data": {
        -        "default": null,
        -        "title": "Data"
        -      },
        -      "error": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        -            "properties": {
        -              "code": {
        -                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        -                "enum": [
        -                  "RATE_LIMIT_EXCEEDED",
        -                  "TIER_INSUFFICIENT",
        -                  "INVALID_INPUT",
        -                  "SCHEMA_VERSION_MISMATCH",
        -                  "SCHEMA_INVARIANT_VIOLATION",
        -                  "UPSTREAM_TIMEOUT",
        -                  "BACKEND_FAILURE",
        -                  "IP_BLOCKED",
        -                  "RESOURCE_NOT_FOUND",
        -                  "RENDER_FAILURE",
        -                  "OCR_LOW_CONFIDENCE",
        -                  "MANUAL_REVIEW_REQUIRED",
        -                  "ACCEPTANCE_REQUIRED",
        -                  "INVALID_TOKEN"
        -                ],
        -                "type": "string"
        -              },
        -              "details": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "message": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "recoverable": {
        -                "type": "boolean"
        -              },
        -              "retry_after_seconds": {
        -                "anyOf": [
        -                  {
        -                    "minimum": 0,
        -                    "type": "integer"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              }
        -            },
        -            "required": [
        -              "code",
        -              "message",
        -              "recoverable"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      }
        -    },
        -    "required": [
        -      "_meta"
        -    ],
        -    "type": "object"
        -  }
        -]New value: +[
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "_meta": {
        +        "additionalProperties": false,
        +        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        +        "properties": {
        +          "deliverables": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        +                "properties": {
        +                  "docx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "dxf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "expires_at": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  },
        +                  "pdf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "xlsx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "expires_at"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "document_id": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "issued_at": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "output_mode": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Surfaces what a trimmed ``output_mode`` withheld from ``data``.\n\nA trimmed mode (``summary`` / ``boq`` / ``boq_with_backup``) withholds\nalready-computed fields to keep the chat payload small. The withheld value\nreads to a client agent as \"capability missing\" (the box-culvert \"geometry\nbuilder isn't firing\" scare) rather than \"pared for size\": ``drawing`` and\n``audit_trail`` appear as ``null``, ``boq_rows`` as an empty list ``[]``\n(its type forbids ``null``) — both indistinguishable from a genuine absent\nresult. This names the withheld fields and the exact mode that brings each\nback, so the value is unambiguous. Absent on the default ``full_json`` mode\n— nothing is withheld, nothing to point at.",
        +                "properties": {
        +                  "mode": {
        +                    "enum": [
        +                      "summary",
        +                      "boq",
        +                      "boq_with_backup"
        +                    ],
        +                    "type": "string"
        +                  },
        +                  "omitted_fields": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "minItems": 1,
        +                    "type": "array"
        +                  },
        +                  "retrieve_with": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "mode",
        +                  "omitted_fields",
        +                  "retrieve_with"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "rate_limit_remaining": {
        +            "anyOf": [
        +              {
        +                "minimum": 0,
        +                "type": "integer"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "request_id": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "schema_version": {
        +            "const": "1.0.0",
        +            "default": "1.0.0",
        +            "type": "string"
        +          },
        +          "scope_boundary": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        +                "properties": {
        +                  "not_in_scope": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "produced": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "recommended_companions": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "type": "string"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "produced",
        +                  "not_in_scope"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tier": {
        +            "enum": [
        +              "free",
        +              "paid"
        +            ],
        +            "type": "string"
        +          },
        +          "tier_upgrade": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        +                "properties": {
        +                  "available_tiers": {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        +                      "properties": {
        +                        "billing": {
        +                          "enum": [
        +                            "one_off",
        +                            "monthly",
        +                            "annual"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "currency": {
        +                          "enum": [
        +                            "GBP",
        +                            "SGD",
        +                            "EUR",
        +                            "USD",
        +                            "CAD",
        +                            "AUD",
        +                            "NZD",
        +                            "MYR"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "display_name": {
        +                          "type": "string"
        +                        },
        +                        "price_local": {
        +                          "type": "number"
        +                        },
        +                        "tier_slug": {
        +                          "enum": [
        +                            "7_day_pass",
        +                            "solo",
        +                            "studio",
        +                            "practice"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "unlock_summary": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "tier_slug",
        +                        "display_name",
        +                        "price_local",
        +                        "currency",
        +                        "billing",
        +                        "unlock_summary"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "current_tier": {
        +                    "const": "free",
        +                    "default": "free",
        +                    "type": "string"
        +                  },
        +                  "pass_credit": {
        +                    "anyOf": [
        +                      {
        +                        "additionalProperties": false,
        +                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        +                        "properties": {
        +                          "amount_local": {
        +                            "type": "number"
        +                          },
        +                          "applies_to": {
        +                            "const": "solo_first_month",
        +                            "default": "solo_first_month",
        +                            "type": "string"
        +                          },
        +                          "currency": {
        +                            "type": "string"
        +                          },
        +                          "redeemable_until": {
        +                            "type": "string"
        +                          }
        +                        },
        +                        "required": [
        +                          "amount_local",
        +                          "currency",
        +                          "redeemable_until"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "pricing_url": {
        +                    "default": "https://civilquants.com/pricing",
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "available_tiers"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tos_url": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "upgrade_hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "warranty_disclaimer": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          }
        +        },
        +        "required": [
        +          "request_id",
        +          "issued_at",
        +          "tier"
        +        ],
        +        "type": "object"
        +      },
        +      "data": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Schema § 1.1 — the typed payload returned inside `MCPResponse[ComputeResult]`.\n\nFree-tier responses omit `drawings` (the downloadable CAD artefact\npointers — the paid differentiator); the bridge enforces this. The\n`audit_trail` and the inline `drawing` preview are present on BOTH tiers\n(V1 ALIGN / 60th-fire D + C). `text_summary` is bounded to 2000 chars —\nkeeps the LLM-facing summary token-cheap and forces longer narrative into\nBoQ row descriptions where it belongs. `warnings` is the non-fatal\ngeometry advisory list (both tiers).",
        +            "properties": {
        +              "assembly_slug": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "audit_trail": {
        +                "anyOf": [
        +                  {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.7 — paid-tier audit-trail entry.\n\nOne entry per BoQ row; `boq_row_index` ties to the row position in\n`ComputeResult.boq_rows`. `derivation` is the human-readable formula\nwalk-through; `formula` is the optional formal expression.",
        +                      "properties": {
        +                        "boq_row_index": {
        +                          "minimum": 0,
        +                          "type": "integer"
        +                        },
        +                        "derivation": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "formula": {
        +                          "anyOf": [
        +                            {
        +                              "type": "string"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ],
        +                          "default": null
        +                        },
        +                        "id": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "parameters_referenced": {
        +                          "items": {
        +                            "type": "string"
        +                          },
        +                          "type": "array"
        +                        }
        +                      },
        +                      "required": [
        +                        "id",
        +                        "boq_row_index",
        +                        "derivation"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "boq_rows": {
        +                "items": {
        +                  "additionalProperties": false,
        +                  "description": "Schema § 1.3 — a single bill row in the requested standard's format.\n\n`description` is the non-verbatim functional description per spec § 13.9 /\n§ 15 invariant — NEVER reproduces a standard's verbatim clause text.\n`rate` / `amount` ship null because rates are commodity data the customer\nowns; the engine's job is the measurement, not the pricing.",
        +                  "properties": {
        +                    "amount": {
        +                      "anyOf": [
        +                        {
        +                          "type": "number"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "attribution": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "audit_id": {
        +                      "anyOf": [
        +                        {
        +                          "type": "string"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "description": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "quantity": {
        +                      "minimum": 0,
        +                      "type": "number"
        +                    },
        +                    "rate": {
        +                      "anyOf": [
        +                        {
        +                          "type": "number"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "unit": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "work_section": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    }
        +                  },
        +                  "required": [
        +                    "work_section",
        +                    "description",
        +                    "quantity",
        +                    "unit",
        +                    "attribution"
        +                  ],
        +                  "type": "object"
        +                },
        +                "type": "array"
        +              },
        +              "drawing": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": false,
        +                    "description": "Schema § 1.6a — inline server-rendered SVG preview of the geometry.\n\nThe MCP mirror of the web ``/compute`` response's ``drawing`` field\n(``api.schemas.compute.DrawingRef``): the same on-screen dimensioned\ndrawing both tiers see in the workspace, surfaced on the MCP compute\nresponse so a chat client can render it inline (60th-fire item C). This\nis the on-screen preview — present on BOTH tiers per the free/paid\nboundary; the downloadable CAD artefacts (DXF / dimensioned PDF) remain\nthe paid differentiator via the export tools.\n\nDefined here rather than importing ``DrawingRef`` because the web\n``schemas`` package imports back into this module (``schemas.render``),\nso reusing it would create an import cycle — the MCP wire contract keeps\nits own copy, the same pattern as ``BoQRow`` / ``DrawingReference``.",
        +                    "properties": {
        +                      "entity_count": {
        +                        "minimum": 0,
        +                        "type": "integer"
        +                      },
        +                      "svg_b64": {
        +                        "minLength": 1,
        +                        "type": "string"
        +                      },
        +                      "unit_of_drawing": {
        +                        "const": "m",
        +                        "default": "m",
        +                        "type": "string"
        +                      },
        +                      "viewbox_height": {
        +                        "exclusiveMinimum": 0,
        +                        "type": "number"
        +                      },
        +                      "viewbox_width": {
        +                        "exclusiveMinimum": 0,
        +                        "type": "number"
        +                      },
        +                      "viewbox_x": {
        +                        "type": "number"
        +                      },
        +                      "viewbox_y": {
        +                        "type": "number"
        +                      }
        +                    },
        +                    "required": [
        +                      "svg_b64",
        +                      "viewbox_x",
        +                      "viewbox_y",
        +                      "viewbox_width",
        +                      "viewbox_height",
        +                      "entity_count"
        +                    ],
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "drawings": {
        +                "anyOf": [
        +                  {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.6 — paid-tier drawing artefact pointer.\n\n`url` is an R2-signed URL; expiry is carried in `_meta.deliverables.expires_at`\non the envelope (not duplicated here). `layers` is DXF-only; PDF/SVG\ncallers omit it.",
        +                      "properties": {
        +                        "drawing_type": {
        +                          "enum": [
        +                            "section",
        +                            "plan",
        +                            "elevation",
        +                            "isometric",
        +                            "detail"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "format": {
        +                          "enum": [
        +                            "DXF",
        +                            "PDF",
        +                            "SVG"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "layers": {
        +                          "anyOf": [
        +                            {
        +                              "items": {
        +                                "type": "string"
        +                              },
        +                              "type": "array"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ],
        +                          "default": null
        +                        },
        +                        "scale": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "sheet_size": {
        +                          "enum": [
        +                            "A1",
        +                            "A2",
        +                            "A3",
        +                            "A4"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "url": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "drawing_type",
        +                        "format",
        +                        "url",
        +                        "sheet_size",
        +                        "scale"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "parameters_used": {
        +                "additionalProperties": false,
        +                "description": "Schema § 1.2 — the parameter snapshot the engine actually used.\n\nSplits user-supplied values from engine defaults so customers can see\nwhich numbers came from them and which the engine filled in. Every\ndefaulted parameter SHOULD have a corresponding entry in `assumptions`\n— the bridge layer enforces this when wrapping engine output.",
        +                "properties": {
        +                  "assumptions": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "engine_defaults": {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  "user_supplied": {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  }
        +                },
        +                "type": "object"
        +              },
        +              "standard": {
        +                "enum": [
        +                  "CESMM4",
        +                  "NRM2",
        +                  "SMM7",
        +                  "MMHW"
        +                ],
        +                "type": "string"
        +              },
        +              "text_summary": {
        +                "maxLength": 2000,
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "totals_summary": {
        +                "additionalProperties": false,
        +                "description": "Schema § 1.4 — totals_summary as a typed wrapper around the free-form dict.\n\nWire shape is a flat object (`{\"concrete_m3\": {...}, \"rebar_t\": {...}}`).\nWe model it as `RootModel`-equivalent via `model_config(extra=\"allow\")`\n+ a single `__root__`-style `entries` dict. Pydantic v2 recommends\n`RootModel` for free-form roots; using a wrapper class keeps the import\nsurface uniform with the rest of this module.",
        +                "properties": {
        +                  "entries": {
        +                    "additionalProperties": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.4 — single material/work-class total entry.",
        +                      "properties": {
        +                        "quantity": {
        +                          "minimum": 0,
        +                          "type": "number"
        +                        },
        +                        "unit": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "quantity",
        +                        "unit"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "object"
        +                  }
        +                },
        +                "type": "object"
        +              },
        +              "warnings": {
        +                "items": {
        +                  "additionalProperties": false,
        +                  "description": "Schema § 1.8 — a non-fatal geometry advisory (56th-fire T2).\n\nThe wire projection of the engine's `core.GeometryWarning`. Advisory only:\na warning NEVER changes a measured quantity — it flags geometry that is\nvalid but likely a mistake (e.g. a stale dependent-height default). Present\non BOTH tiers — a correctness/safety signal, not a paid feature.",
        +                  "properties": {
        +                    "affected_params": {
        +                      "items": {
        +                        "type": "string"
        +                      },
        +                      "type": "array"
        +                    },
        +                    "code": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "detail": {
        +                      "additionalProperties": {
        +                        "type": "number"
        +                      },
        +                      "type": "object"
        +                    },
        +                    "message": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "severity": {
        +                      "enum": [
        +                        "info",
        +                        "advisory",
        +                        "caution"
        +                      ],
        +                      "type": "string"
        +                    }
        +                  },
        +                  "required": [
        +                    "code",
        +                    "severity",
        +                    "message"
        +                  ],
        +                  "type": "object"
        +                },
        +                "type": "array"
        +              }
        +            },
        +            "required": [
        +              "assembly_slug",
        +              "standard",
        +              "parameters_used",
        +              "boq_rows",
        +              "totals_summary",
        +              "text_summary"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      },
        +      "error": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        +            "properties": {
        +              "code": {
        +                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        +                "enum": [
        +                  "RATE_LIMIT_EXCEEDED",
        +                  "TIER_INSUFFICIENT",
        +                  "INVALID_INPUT",
        +                  "SCHEMA_VERSION_MISMATCH",
        +                  "SCHEMA_INVARIANT_VIOLATION",
        +                  "UPSTREAM_TIMEOUT",
        +                  "BACKEND_FAILURE",
        +                  "IP_BLOCKED",
        +                  "RESOURCE_NOT_FOUND",
        +                  "RENDER_FAILURE",
        +                  "OCR_LOW_CONFIDENCE",
        +                  "MANUAL_REVIEW_REQUIRED",
        +                  "ACCEPTANCE_REQUIRED",
        +                  "INVALID_TOKEN"
        +                ],
        +                "type": "string"
        +              },
        +              "details": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "message": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "recoverable": {
        +                "type": "boolean"
        +              },
        +              "retry_after_seconds": {
        +                "anyOf": [
        +                  {
        +                    "minimum": 0,
        +                    "type": "integer"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              }
        +            },
        +            "required": [
        +              "code",
        +              "message",
        +              "recoverable"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      }
        +    },
        +    "required": [
        +      "_meta"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "_meta": {
        +        "additionalProperties": false,
        +        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        +        "properties": {
        +          "deliverables": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        +                "properties": {
        +                  "docx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "dxf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "expires_at": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  },
        +                  "pdf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "xlsx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "expires_at"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "document_id": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "issued_at": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "output_mode": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Surfaces what a trimmed ``output_mode`` withheld from ``data``.\n\nA trimmed mode (``summary`` / ``boq`` / ``boq_with_backup``) withholds\nalready-computed fields to keep the chat payload small. The withheld value\nreads to a client agent as \"capability missing\" (the box-culvert \"geometry\nbuilder isn't firing\" scare) rather than \"pared for size\": ``drawing`` and\n``audit_trail`` appear as ``null``, ``boq_rows`` as an empty list ``[]``\n(its type forbids ``null``) — both indistinguishable from a genuine absent\nresult. This names the withheld fields and the exact mode that brings each\nback, so the value is unambiguous. Absent on the default ``full_json`` mode\n— nothing is withheld, nothing to point at.",
        +                "properties": {
        +                  "mode": {
        +                    "enum": [
        +                      "summary",
        +                      "boq",
        +                      "boq_with_backup"
        +                    ],
        +                    "type": "string"
        +                  },
        +                  "omitted_fields": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "minItems": 1,
        +                    "type": "array"
        +                  },
        +                  "retrieve_with": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "mode",
        +                  "omitted_fields",
        +                  "retrieve_with"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "rate_limit_remaining": {
        +            "anyOf": [
        +              {
        +                "minimum": 0,
        +                "type": "integer"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "request_id": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "schema_version": {
        +            "const": "1.0.0",
        +            "default": "1.0.0",
        +            "type": "string"
        +          },
        +          "scope_boundary": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        +                "properties": {
        +                  "not_in_scope": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "produced": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "recommended_companions": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "type": "string"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "produced",
        +                  "not_in_scope"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tier": {
        +            "enum": [
        +              "free",
        +              "paid"
        +            ],
        +            "type": "string"
        +          },
        +          "tier_upgrade": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        +                "properties": {
        +                  "available_tiers": {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        +                      "properties": {
        +                        "billing": {
        +                          "enum": [
        +                            "one_off",
        +                            "monthly",
        +                            "annual"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "currency": {
        +                          "enum": [
        +                            "GBP",
        +                            "SGD",
        +                            "EUR",
        +                            "USD",
        +                            "CAD",
        +                            "AUD",
        +                            "NZD",
        +                            "MYR"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "display_name": {
        +                          "type": "string"
        +                        },
        +                        "price_local": {
        +                          "type": "number"
        +                        },
        +                        "tier_slug": {
        +                          "enum": [
        +                            "7_day_pass",
        +                            "solo",
        +                            "studio",
        +                            "practice"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "unlock_summary": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "tier_slug",
        +                        "display_name",
        +                        "price_local",
        +                        "currency",
        +                        "billing",
        +                        "unlock_summary"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "current_tier": {
        +                    "const": "free",
        +                    "default": "free",
        +                    "type": "string"
        +                  },
        +                  "pass_credit": {
        +                    "anyOf": [
        +                      {
        +                        "additionalProperties": false,
        +                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        +                        "properties": {
        +                          "amount_local": {
        +                            "type": "number"
        +                          },
        +                          "applies_to": {
        +                            "const": "solo_first_month",
        +                            "default": "solo_first_month",
        +                            "type": "string"
        +                          },
        +                          "currency": {
        +                            "type": "string"
        +                          },
        +                          "redeemable_until": {
        +                            "type": "string"
        +                          }
        +                        },
        +                        "required": [
        +                          "amount_local",
        +                          "currency",
        +                          "redeemable_until"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "pricing_url": {
        +                    "default": "https://civilquants.com/pricing",
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "available_tiers"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tos_url": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "upgrade_hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "warranty_disclaimer": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          }
        +        },
        +        "required": [
        +          "request_id",
        +          "issued_at",
        +          "tier"
        +        ],
        +        "type": "object"
        +      },
        +      "data": {
        +        "default": null,
        +        "title": "Data"
        +      },
        +      "error": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        +            "properties": {
        +              "code": {
        +                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        +                "enum": [
        +                  "RATE_LIMIT_EXCEEDED",
        +                  "TIER_INSUFFICIENT",
        +                  "INVALID_INPUT",
        +                  "SCHEMA_VERSION_MISMATCH",
        +                  "SCHEMA_INVARIANT_VIOLATION",
        +                  "UPSTREAM_TIMEOUT",
        +                  "BACKEND_FAILURE",
        +                  "IP_BLOCKED",
        +                  "RESOURCE_NOT_FOUND",
        +                  "RENDER_FAILURE",
        +                  "OCR_LOW_CONFIDENCE",
        +                  "MANUAL_REVIEW_REQUIRED",
        +                  "ACCEPTANCE_REQUIRED",
        +                  "INVALID_TOKEN"
        +                ],
        +                "type": "string"
        +              },
        +              "details": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "message": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "recoverable": {
        +                "type": "boolean"
        +              },
        +              "retry_after_seconds": {
        +                "anyOf": [
        +                  {
        +                    "minimum": 0,
        +                    "type": "integer"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              }
        +            },
        +            "required": [
        +              "code",
        +              "message",
        +              "recoverable"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      }
        +    },
        +    "required": [
        +      "_meta"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedcompute_soil_nailed_slope1 field changed
      • changedOutput schema / properties / result / anyOf
        Previous value: -[
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "_meta": {
        -        "additionalProperties": false,
        -        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        -        "properties": {
        -          "deliverables": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        -                "properties": {
        -                  "docx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "dxf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "expires_at": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  },
        -                  "pdf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "xlsx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "expires_at"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "document_id": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "issued_at": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "rate_limit_remaining": {
        -            "anyOf": [
        -              {
        -                "minimum": 0,
        -                "type": "integer"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "request_id": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "schema_version": {
        -            "const": "1.0.0",
        -            "default": "1.0.0",
        -            "type": "string"
        -          },
        -          "scope_boundary": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        -                "properties": {
        -                  "not_in_scope": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "produced": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "recommended_companions": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "type": "string"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "produced",
        -                  "not_in_scope"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tier": {
        -            "enum": [
        -              "free",
        -              "paid"
        -            ],
        -            "type": "string"
        -          },
        -          "tier_upgrade": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        -                "properties": {
        -                  "available_tiers": {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        -                      "properties": {
        -                        "billing": {
        -                          "enum": [
        -                            "one_off",
        -                            "monthly",
        -                            "annual"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "currency": {
        -                          "enum": [
        -                            "GBP",
        -                            "SGD",
        -                            "EUR",
        -                            "USD",
        -                            "CAD",
        -                            "AUD",
        -                            "NZD",
        -                            "MYR"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "display_name": {
        -                          "type": "string"
        -                        },
        -                        "price_local": {
        -                          "type": "number"
        -                        },
        -                        "tier_slug": {
        -                          "enum": [
        -                            "7_day_pass",
        -                            "solo",
        -                            "studio",
        -                            "practice"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "unlock_summary": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "tier_slug",
        -                        "display_name",
        -                        "price_local",
        -                        "currency",
        -                        "billing",
        -                        "unlock_summary"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "current_tier": {
        -                    "const": "free",
        -                    "default": "free",
        -                    "type": "string"
        -                  },
        -                  "pass_credit": {
        -                    "anyOf": [
        -                      {
        -                        "additionalProperties": false,
        -                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        -                        "properties": {
        -                          "amount_local": {
        -                            "type": "number"
        -                          },
        -                          "applies_to": {
        -                            "const": "solo_first_month",
        -                            "default": "solo_first_month",
        -                            "type": "string"
        -                          },
        -                          "currency": {
        -                            "type": "string"
        -                          },
        -                          "redeemable_until": {
        -                            "type": "string"
        -                          }
        -                        },
        -                        "required": [
        -                          "amount_local",
        -                          "currency",
        -                          "redeemable_until"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "pricing_url": {
        -                    "default": "https://civilquants.com/pricing",
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "available_tiers"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tos_url": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "upgrade_hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "warranty_disclaimer": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          }
        -        },
        -        "required": [
        -          "request_id",
        -          "issued_at",
        -          "tier"
        -        ],
        -        "type": "object"
        -      },
        -      "data": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Schema § 1.1 — the typed payload returned inside `MCPResponse[ComputeResult]`.\n\nFree-tier responses omit `drawings` (the downloadable CAD artefact\npointers — the paid differentiator); the bridge enforces this. The\n`audit_trail` and the inline `drawing` preview are present on BOTH tiers\n(V1 ALIGN / 60th-fire D + C). `text_summary` is bounded to 2000 chars —\nkeeps the LLM-facing summary token-cheap and forces longer narrative into\nBoQ row descriptions where it belongs. `warnings` is the non-fatal\ngeometry advisory list (both tiers).",
        -            "properties": {
        -              "assembly_slug": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "audit_trail": {
        -                "anyOf": [
        -                  {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.7 — paid-tier audit-trail entry.\n\nOne entry per BoQ row; `boq_row_index` ties to the row position in\n`ComputeResult.boq_rows`. `derivation` is the human-readable formula\nwalk-through; `formula` is the optional formal expression.",
        -                      "properties": {
        -                        "boq_row_index": {
        -                          "minimum": 0,
        -                          "type": "integer"
        -                        },
        -                        "derivation": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "formula": {
        -                          "anyOf": [
        -                            {
        -                              "type": "string"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ],
        -                          "default": null
        -                        },
        -                        "id": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "parameters_referenced": {
        -                          "items": {
        -                            "type": "string"
        -                          },
        -                          "type": "array"
        -                        }
        -                      },
        -                      "required": [
        -                        "id",
        -                        "boq_row_index",
        -                        "derivation"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "boq_rows": {
        -                "items": {
        -                  "additionalProperties": false,
        -                  "description": "Schema § 1.3 — a single bill row in the requested standard's format.\n\n`description` is the non-verbatim functional description per spec § 13.9 /\n§ 15 invariant — NEVER reproduces a standard's verbatim clause text.\n`rate` / `amount` ship null because rates are commodity data the customer\nowns; the engine's job is the measurement, not the pricing.",
        -                  "properties": {
        -                    "amount": {
        -                      "anyOf": [
        -                        {
        -                          "type": "number"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "attribution": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "audit_id": {
        -                      "anyOf": [
        -                        {
        -                          "type": "string"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "description": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "quantity": {
        -                      "minimum": 0,
        -                      "type": "number"
        -                    },
        -                    "rate": {
        -                      "anyOf": [
        -                        {
        -                          "type": "number"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "unit": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "work_section": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    }
        -                  },
        -                  "required": [
        -                    "work_section",
        -                    "description",
        -                    "quantity",
        -                    "unit",
        -                    "attribution"
        -                  ],
        -                  "type": "object"
        -                },
        -                "type": "array"
        -              },
        -              "drawing": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": false,
        -                    "description": "Schema § 1.6a — inline server-rendered SVG preview of the geometry.\n\nThe MCP mirror of the web ``/compute`` response's ``drawing`` field\n(``api.schemas.compute.DrawingRef``): the same on-screen dimensioned\ndrawing both tiers see in the workspace, surfaced on the MCP compute\nresponse so a chat client can render it inline (60th-fire item C). This\nis the on-screen preview — present on BOTH tiers per the free/paid\nboundary; the downloadable CAD artefacts (DXF / dimensioned PDF) remain\nthe paid differentiator via the export tools.\n\nDefined here rather than importing ``DrawingRef`` because the web\n``schemas`` package imports back into this module (``schemas.render``),\nso reusing it would create an import cycle — the MCP wire contract keeps\nits own copy, the same pattern as ``BoQRow`` / ``DrawingReference``.",
        -                    "properties": {
        -                      "entity_count": {
        -                        "minimum": 0,
        -                        "type": "integer"
        -                      },
        -                      "svg_b64": {
        -                        "minLength": 1,
        -                        "type": "string"
        -                      },
        -                      "unit_of_drawing": {
        -                        "const": "m",
        -                        "default": "m",
        -                        "type": "string"
        -                      },
        -                      "viewbox_height": {
        -                        "exclusiveMinimum": 0,
        -                        "type": "number"
        -                      },
        -                      "viewbox_width": {
        -                        "exclusiveMinimum": 0,
        -                        "type": "number"
        -                      },
        -                      "viewbox_x": {
        -                        "type": "number"
        -                      },
        -                      "viewbox_y": {
        -                        "type": "number"
        -                      }
        -                    },
        -                    "required": [
        -                      "svg_b64",
        -                      "viewbox_x",
        -                      "viewbox_y",
        -                      "viewbox_width",
        -                      "viewbox_height",
        -                      "entity_count"
        -                    ],
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "drawings": {
        -                "anyOf": [
        -                  {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.6 — paid-tier drawing artefact pointer.\n\n`url` is an R2-signed URL; expiry is carried in `_meta.deliverables.expires_at`\non the envelope (not duplicated here). `layers` is DXF-only; PDF/SVG\ncallers omit it.",
        -                      "properties": {
        -                        "drawing_type": {
        -                          "enum": [
        -                            "section",
        -                            "plan",
        -                            "elevation",
        -                            "isometric",
        -                            "detail"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "format": {
        -                          "enum": [
        -                            "DXF",
        -                            "PDF",
        -                            "SVG"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "layers": {
        -                          "anyOf": [
        -                            {
        -                              "items": {
        -                                "type": "string"
        -                              },
        -                              "type": "array"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ],
        -                          "default": null
        -                        },
        -                        "scale": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "sheet_size": {
        -                          "enum": [
        -                            "A1",
        -                            "A2",
        -                            "A3",
        -                            "A4"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "url": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "drawing_type",
        -                        "format",
        -                        "url",
        -                        "sheet_size",
        -                        "scale"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "parameters_used": {
        -                "additionalProperties": false,
        -                "description": "Schema § 1.2 — the parameter snapshot the engine actually used.\n\nSplits user-supplied values from engine defaults so customers can see\nwhich numbers came from them and which the engine filled in. Every\ndefaulted parameter SHOULD have a corresponding entry in `assumptions`\n— the bridge layer enforces this when wrapping engine output.",
        -                "properties": {
        -                  "assumptions": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "engine_defaults": {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  "user_supplied": {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  }
        -                },
        -                "type": "object"
        -              },
        -              "standard": {
        -                "enum": [
        -                  "CESMM4",
        -                  "NRM2",
        -                  "SMM7",
        -                  "MMHW"
        -                ],
        -                "type": "string"
        -              },
        -              "text_summary": {
        -                "maxLength": 2000,
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "totals_summary": {
        -                "additionalProperties": false,
        -                "description": "Schema § 1.4 — totals_summary as a typed wrapper around the free-form dict.\n\nWire shape is a flat object (`{\"concrete_m3\": {...}, \"rebar_t\": {...}}`).\nWe model it as `RootModel`-equivalent via `model_config(extra=\"allow\")`\n+ a single `__root__`-style `entries` dict. Pydantic v2 recommends\n`RootModel` for free-form roots; using a wrapper class keeps the import\nsurface uniform with the rest of this module.",
        -                "properties": {
        -                  "entries": {
        -                    "additionalProperties": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.4 — single material/work-class total entry.",
        -                      "properties": {
        -                        "quantity": {
        -                          "minimum": 0,
        -                          "type": "number"
        -                        },
        -                        "unit": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "quantity",
        -                        "unit"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "object"
        -                  }
        -                },
        -                "type": "object"
        -              },
        -              "warnings": {
        -                "items": {
        -                  "additionalProperties": false,
        -                  "description": "Schema § 1.8 — a non-fatal geometry advisory (56th-fire T2).\n\nThe wire projection of the engine's `core.GeometryWarning`. Advisory only:\na warning NEVER changes a measured quantity — it flags geometry that is\nvalid but likely a mistake (e.g. a stale dependent-height default). Present\non BOTH tiers — a correctness/safety signal, not a paid feature.",
        -                  "properties": {
        -                    "affected_params": {
        -                      "items": {
        -                        "type": "string"
        -                      },
        -                      "type": "array"
        -                    },
        -                    "code": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "detail": {
        -                      "additionalProperties": {
        -                        "type": "number"
        -                      },
        -                      "type": "object"
        -                    },
        -                    "message": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "severity": {
        -                      "enum": [
        -                        "info",
        -                        "advisory",
        -                        "caution"
        -                      ],
        -                      "type": "string"
        -                    }
        -                  },
        -                  "required": [
        -                    "code",
        -                    "severity",
        -                    "message"
        -                  ],
        -                  "type": "object"
        -                },
        -                "type": "array"
        -              }
        -            },
        -            "required": [
        -              "assembly_slug",
        -              "standard",
        -              "parameters_used",
        -              "boq_rows",
        -              "totals_summary",
        -              "text_summary"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      },
        -      "error": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        -            "properties": {
        -              "code": {
        -                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        -                "enum": [
        -                  "RATE_LIMIT_EXCEEDED",
        -                  "TIER_INSUFFICIENT",
        -                  "INVALID_INPUT",
        -                  "SCHEMA_VERSION_MISMATCH",
        -                  "SCHEMA_INVARIANT_VIOLATION",
        -                  "UPSTREAM_TIMEOUT",
        -                  "BACKEND_FAILURE",
        -                  "IP_BLOCKED",
        -                  "RESOURCE_NOT_FOUND",
        -                  "RENDER_FAILURE",
        -                  "OCR_LOW_CONFIDENCE",
        -                  "MANUAL_REVIEW_REQUIRED",
        -                  "ACCEPTANCE_REQUIRED",
        -                  "INVALID_TOKEN"
        -                ],
        -                "type": "string"
        -              },
        -              "details": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "message": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "recoverable": {
        -                "type": "boolean"
        -              },
        -              "retry_after_seconds": {
        -                "anyOf": [
        -                  {
        -                    "minimum": 0,
        -                    "type": "integer"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              }
        -            },
        -            "required": [
        -              "code",
        -              "message",
        -              "recoverable"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      }
        -    },
        -    "required": [
        -      "_meta"
        -    ],
        -    "type": "object"
        -  },
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "_meta": {
        -        "additionalProperties": false,
        -        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        -        "properties": {
        -          "deliverables": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        -                "properties": {
        -                  "docx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "dxf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "expires_at": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  },
        -                  "pdf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "xlsx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "expires_at"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "document_id": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "issued_at": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "rate_limit_remaining": {
        -            "anyOf": [
        -              {
        -                "minimum": 0,
        -                "type": "integer"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "request_id": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "schema_version": {
        -            "const": "1.0.0",
        -            "default": "1.0.0",
        -            "type": "string"
        -          },
        -          "scope_boundary": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        -                "properties": {
        -                  "not_in_scope": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "produced": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "recommended_companions": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "type": "string"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "produced",
        -                  "not_in_scope"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tier": {
        -            "enum": [
        -              "free",
        -              "paid"
        -            ],
        -            "type": "string"
        -          },
        -          "tier_upgrade": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        -                "properties": {
        -                  "available_tiers": {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        -                      "properties": {
        -                        "billing": {
        -                          "enum": [
        -                            "one_off",
        -                            "monthly",
        -                            "annual"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "currency": {
        -                          "enum": [
        -                            "GBP",
        -                            "SGD",
        -                            "EUR",
        -                            "USD",
        -                            "CAD",
        -                            "AUD",
        -                            "NZD",
        -                            "MYR"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "display_name": {
        -                          "type": "string"
        -                        },
        -                        "price_local": {
        -                          "type": "number"
        -                        },
        -                        "tier_slug": {
        -                          "enum": [
        -                            "7_day_pass",
        -                            "solo",
        -                            "studio",
        -                            "practice"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "unlock_summary": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "tier_slug",
        -                        "display_name",
        -                        "price_local",
        -                        "currency",
        -                        "billing",
        -                        "unlock_summary"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "current_tier": {
        -                    "const": "free",
        -                    "default": "free",
        -                    "type": "string"
        -                  },
        -                  "pass_credit": {
        -                    "anyOf": [
        -                      {
        -                        "additionalProperties": false,
        -                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        -                        "properties": {
        -                          "amount_local": {
        -                            "type": "number"
        -                          },
        -                          "applies_to": {
        -                            "const": "solo_first_month",
        -                            "default": "solo_first_month",
        -                            "type": "string"
        -                          },
        -                          "currency": {
        -                            "type": "string"
        -                          },
        -                          "redeemable_until": {
        -                            "type": "string"
        -                          }
        -                        },
        -                        "required": [
        -                          "amount_local",
        -                          "currency",
        -                          "redeemable_until"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "pricing_url": {
        -                    "default": "https://civilquants.com/pricing",
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "available_tiers"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tos_url": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "upgrade_hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "warranty_disclaimer": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          }
        -        },
        -        "required": [
        -          "request_id",
        -          "issued_at",
        -          "tier"
        -        ],
        -        "type": "object"
        -      },
        -      "data": {
        -        "default": null,
        -        "title": "Data"
        -      },
        -      "error": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        -            "properties": {
        -              "code": {
        -                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        -                "enum": [
        -                  "RATE_LIMIT_EXCEEDED",
        -                  "TIER_INSUFFICIENT",
        -                  "INVALID_INPUT",
        -                  "SCHEMA_VERSION_MISMATCH",
        -                  "SCHEMA_INVARIANT_VIOLATION",
        -                  "UPSTREAM_TIMEOUT",
        -                  "BACKEND_FAILURE",
        -                  "IP_BLOCKED",
        -                  "RESOURCE_NOT_FOUND",
        -                  "RENDER_FAILURE",
        -                  "OCR_LOW_CONFIDENCE",
        -                  "MANUAL_REVIEW_REQUIRED",
        -                  "ACCEPTANCE_REQUIRED",
        -                  "INVALID_TOKEN"
        -                ],
        -                "type": "string"
        -              },
        -              "details": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "message": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "recoverable": {
        -                "type": "boolean"
        -              },
        -              "retry_after_seconds": {
        -                "anyOf": [
        -                  {
        -                    "minimum": 0,
        -                    "type": "integer"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              }
        -            },
        -            "required": [
        -              "code",
        -              "message",
        -              "recoverable"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      }
        -    },
        -    "required": [
        -      "_meta"
        -    ],
        -    "type": "object"
        -  }
        -]New value: +[
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "_meta": {
        +        "additionalProperties": false,
        +        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        +        "properties": {
        +          "deliverables": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        +                "properties": {
        +                  "docx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "dxf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "expires_at": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  },
        +                  "pdf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "xlsx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "expires_at"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "document_id": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "issued_at": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "output_mode": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Surfaces what a trimmed ``output_mode`` withheld from ``data``.\n\nA trimmed mode (``summary`` / ``boq`` / ``boq_with_backup``) withholds\nalready-computed fields to keep the chat payload small. The withheld value\nreads to a client agent as \"capability missing\" (the box-culvert \"geometry\nbuilder isn't firing\" scare) rather than \"pared for size\": ``drawing`` and\n``audit_trail`` appear as ``null``, ``boq_rows`` as an empty list ``[]``\n(its type forbids ``null``) — both indistinguishable from a genuine absent\nresult. This names the withheld fields and the exact mode that brings each\nback, so the value is unambiguous. Absent on the default ``full_json`` mode\n— nothing is withheld, nothing to point at.",
        +                "properties": {
        +                  "mode": {
        +                    "enum": [
        +                      "summary",
        +                      "boq",
        +                      "boq_with_backup"
        +                    ],
        +                    "type": "string"
        +                  },
        +                  "omitted_fields": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "minItems": 1,
        +                    "type": "array"
        +                  },
        +                  "retrieve_with": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "mode",
        +                  "omitted_fields",
        +                  "retrieve_with"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "rate_limit_remaining": {
        +            "anyOf": [
        +              {
        +                "minimum": 0,
        +                "type": "integer"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "request_id": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "schema_version": {
        +            "const": "1.0.0",
        +            "default": "1.0.0",
        +            "type": "string"
        +          },
        +          "scope_boundary": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        +                "properties": {
        +                  "not_in_scope": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "produced": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "recommended_companions": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "type": "string"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "produced",
        +                  "not_in_scope"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tier": {
        +            "enum": [
        +              "free",
        +              "paid"
        +            ],
        +            "type": "string"
        +          },
        +          "tier_upgrade": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        +                "properties": {
        +                  "available_tiers": {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        +                      "properties": {
        +                        "billing": {
        +                          "enum": [
        +                            "one_off",
        +                            "monthly",
        +                            "annual"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "currency": {
        +                          "enum": [
        +                            "GBP",
        +                            "SGD",
        +                            "EUR",
        +                            "USD",
        +                            "CAD",
        +                            "AUD",
        +                            "NZD",
        +                            "MYR"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "display_name": {
        +                          "type": "string"
        +                        },
        +                        "price_local": {
        +                          "type": "number"
        +                        },
        +                        "tier_slug": {
        +                          "enum": [
        +                            "7_day_pass",
        +                            "solo",
        +                            "studio",
        +                            "practice"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "unlock_summary": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "tier_slug",
        +                        "display_name",
        +                        "price_local",
        +                        "currency",
        +                        "billing",
        +                        "unlock_summary"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "current_tier": {
        +                    "const": "free",
        +                    "default": "free",
        +                    "type": "string"
        +                  },
        +                  "pass_credit": {
        +                    "anyOf": [
        +                      {
        +                        "additionalProperties": false,
        +                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        +                        "properties": {
        +                          "amount_local": {
        +                            "type": "number"
        +                          },
        +                          "applies_to": {
        +                            "const": "solo_first_month",
        +                            "default": "solo_first_month",
        +                            "type": "string"
        +                          },
        +                          "currency": {
        +                            "type": "string"
        +                          },
        +                          "redeemable_until": {
        +                            "type": "string"
        +                          }
        +                        },
        +                        "required": [
        +                          "amount_local",
        +                          "currency",
        +                          "redeemable_until"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "pricing_url": {
        +                    "default": "https://civilquants.com/pricing",
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "available_tiers"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tos_url": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "upgrade_hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "warranty_disclaimer": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          }
        +        },
        +        "required": [
        +          "request_id",
        +          "issued_at",
        +          "tier"
        +        ],
        +        "type": "object"
        +      },
        +      "data": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Schema § 1.1 — the typed payload returned inside `MCPResponse[ComputeResult]`.\n\nFree-tier responses omit `drawings` (the downloadable CAD artefact\npointers — the paid differentiator); the bridge enforces this. The\n`audit_trail` and the inline `drawing` preview are present on BOTH tiers\n(V1 ALIGN / 60th-fire D + C). `text_summary` is bounded to 2000 chars —\nkeeps the LLM-facing summary token-cheap and forces longer narrative into\nBoQ row descriptions where it belongs. `warnings` is the non-fatal\ngeometry advisory list (both tiers).",
        +            "properties": {
        +              "assembly_slug": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "audit_trail": {
        +                "anyOf": [
        +                  {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.7 — paid-tier audit-trail entry.\n\nOne entry per BoQ row; `boq_row_index` ties to the row position in\n`ComputeResult.boq_rows`. `derivation` is the human-readable formula\nwalk-through; `formula` is the optional formal expression.",
        +                      "properties": {
        +                        "boq_row_index": {
        +                          "minimum": 0,
        +                          "type": "integer"
        +                        },
        +                        "derivation": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "formula": {
        +                          "anyOf": [
        +                            {
        +                              "type": "string"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ],
        +                          "default": null
        +                        },
        +                        "id": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "parameters_referenced": {
        +                          "items": {
        +                            "type": "string"
        +                          },
        +                          "type": "array"
        +                        }
        +                      },
        +                      "required": [
        +                        "id",
        +                        "boq_row_index",
        +                        "derivation"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "boq_rows": {
        +                "items": {
        +                  "additionalProperties": false,
        +                  "description": "Schema § 1.3 — a single bill row in the requested standard's format.\n\n`description` is the non-verbatim functional description per spec § 13.9 /\n§ 15 invariant — NEVER reproduces a standard's verbatim clause text.\n`rate` / `amount` ship null because rates are commodity data the customer\nowns; the engine's job is the measurement, not the pricing.",
        +                  "properties": {
        +                    "amount": {
        +                      "anyOf": [
        +                        {
        +                          "type": "number"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "attribution": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "audit_id": {
        +                      "anyOf": [
        +                        {
        +                          "type": "string"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "description": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "quantity": {
        +                      "minimum": 0,
        +                      "type": "number"
        +                    },
        +                    "rate": {
        +                      "anyOf": [
        +                        {
        +                          "type": "number"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "unit": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "work_section": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    }
        +                  },
        +                  "required": [
        +                    "work_section",
        +                    "description",
        +                    "quantity",
        +                    "unit",
        +                    "attribution"
        +                  ],
        +                  "type": "object"
        +                },
        +                "type": "array"
        +              },
        +              "drawing": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": false,
        +                    "description": "Schema § 1.6a — inline server-rendered SVG preview of the geometry.\n\nThe MCP mirror of the web ``/compute`` response's ``drawing`` field\n(``api.schemas.compute.DrawingRef``): the same on-screen dimensioned\ndrawing both tiers see in the workspace, surfaced on the MCP compute\nresponse so a chat client can render it inline (60th-fire item C). This\nis the on-screen preview — present on BOTH tiers per the free/paid\nboundary; the downloadable CAD artefacts (DXF / dimensioned PDF) remain\nthe paid differentiator via the export tools.\n\nDefined here rather than importing ``DrawingRef`` because the web\n``schemas`` package imports back into this module (``schemas.render``),\nso reusing it would create an import cycle — the MCP wire contract keeps\nits own copy, the same pattern as ``BoQRow`` / ``DrawingReference``.",
        +                    "properties": {
        +                      "entity_count": {
        +                        "minimum": 0,
        +                        "type": "integer"
        +                      },
        +                      "svg_b64": {
        +                        "minLength": 1,
        +                        "type": "string"
        +                      },
        +                      "unit_of_drawing": {
        +                        "const": "m",
        +                        "default": "m",
        +                        "type": "string"
        +                      },
        +                      "viewbox_height": {
        +                        "exclusiveMinimum": 0,
        +                        "type": "number"
        +                      },
        +                      "viewbox_width": {
        +                        "exclusiveMinimum": 0,
        +                        "type": "number"
        +                      },
        +                      "viewbox_x": {
        +                        "type": "number"
        +                      },
        +                      "viewbox_y": {
        +                        "type": "number"
        +                      }
        +                    },
        +                    "required": [
        +                      "svg_b64",
        +                      "viewbox_x",
        +                      "viewbox_y",
        +                      "viewbox_width",
        +                      "viewbox_height",
        +                      "entity_count"
        +                    ],
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "drawings": {
        +                "anyOf": [
        +                  {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.6 — paid-tier drawing artefact pointer.\n\n`url` is an R2-signed URL; expiry is carried in `_meta.deliverables.expires_at`\non the envelope (not duplicated here). `layers` is DXF-only; PDF/SVG\ncallers omit it.",
        +                      "properties": {
        +                        "drawing_type": {
        +                          "enum": [
        +                            "section",
        +                            "plan",
        +                            "elevation",
        +                            "isometric",
        +                            "detail"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "format": {
        +                          "enum": [
        +                            "DXF",
        +                            "PDF",
        +                            "SVG"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "layers": {
        +                          "anyOf": [
        +                            {
        +                              "items": {
        +                                "type": "string"
        +                              },
        +                              "type": "array"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ],
        +                          "default": null
        +                        },
        +                        "scale": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "sheet_size": {
        +                          "enum": [
        +                            "A1",
        +                            "A2",
        +                            "A3",
        +                            "A4"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "url": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "drawing_type",
        +                        "format",
        +                        "url",
        +                        "sheet_size",
        +                        "scale"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "parameters_used": {
        +                "additionalProperties": false,
        +                "description": "Schema § 1.2 — the parameter snapshot the engine actually used.\n\nSplits user-supplied values from engine defaults so customers can see\nwhich numbers came from them and which the engine filled in. Every\ndefaulted parameter SHOULD have a corresponding entry in `assumptions`\n— the bridge layer enforces this when wrapping engine output.",
        +                "properties": {
        +                  "assumptions": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "engine_defaults": {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  "user_supplied": {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  }
        +                },
        +                "type": "object"
        +              },
        +              "standard": {
        +                "enum": [
        +                  "CESMM4",
        +                  "NRM2",
        +                  "SMM7",
        +                  "MMHW"
        +                ],
        +                "type": "string"
        +              },
        +              "text_summary": {
        +                "maxLength": 2000,
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "totals_summary": {
        +                "additionalProperties": false,
        +                "description": "Schema § 1.4 — totals_summary as a typed wrapper around the free-form dict.\n\nWire shape is a flat object (`{\"concrete_m3\": {...}, \"rebar_t\": {...}}`).\nWe model it as `RootModel`-equivalent via `model_config(extra=\"allow\")`\n+ a single `__root__`-style `entries` dict. Pydantic v2 recommends\n`RootModel` for free-form roots; using a wrapper class keeps the import\nsurface uniform with the rest of this module.",
        +                "properties": {
        +                  "entries": {
        +                    "additionalProperties": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.4 — single material/work-class total entry.",
        +                      "properties": {
        +                        "quantity": {
        +                          "minimum": 0,
        +                          "type": "number"
        +                        },
        +                        "unit": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "quantity",
        +                        "unit"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "object"
        +                  }
        +                },
        +                "type": "object"
        +              },
        +              "warnings": {
        +                "items": {
        +                  "additionalProperties": false,
        +                  "description": "Schema § 1.8 — a non-fatal geometry advisory (56th-fire T2).\n\nThe wire projection of the engine's `core.GeometryWarning`. Advisory only:\na warning NEVER changes a measured quantity — it flags geometry that is\nvalid but likely a mistake (e.g. a stale dependent-height default). Present\non BOTH tiers — a correctness/safety signal, not a paid feature.",
        +                  "properties": {
        +                    "affected_params": {
        +                      "items": {
        +                        "type": "string"
        +                      },
        +                      "type": "array"
        +                    },
        +                    "code": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "detail": {
        +                      "additionalProperties": {
        +                        "type": "number"
        +                      },
        +                      "type": "object"
        +                    },
        +                    "message": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "severity": {
        +                      "enum": [
        +                        "info",
        +                        "advisory",
        +                        "caution"
        +                      ],
        +                      "type": "string"
        +                    }
        +                  },
        +                  "required": [
        +                    "code",
        +                    "severity",
        +                    "message"
        +                  ],
        +                  "type": "object"
        +                },
        +                "type": "array"
        +              }
        +            },
        +            "required": [
        +              "assembly_slug",
        +              "standard",
        +              "parameters_used",
        +              "boq_rows",
        +              "totals_summary",
        +              "text_summary"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      },
        +      "error": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        +            "properties": {
        +              "code": {
        +                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        +                "enum": [
        +                  "RATE_LIMIT_EXCEEDED",
        +                  "TIER_INSUFFICIENT",
        +                  "INVALID_INPUT",
        +                  "SCHEMA_VERSION_MISMATCH",
        +                  "SCHEMA_INVARIANT_VIOLATION",
        +                  "UPSTREAM_TIMEOUT",
        +                  "BACKEND_FAILURE",
        +                  "IP_BLOCKED",
        +                  "RESOURCE_NOT_FOUND",
        +                  "RENDER_FAILURE",
        +                  "OCR_LOW_CONFIDENCE",
        +                  "MANUAL_REVIEW_REQUIRED",
        +                  "ACCEPTANCE_REQUIRED",
        +                  "INVALID_TOKEN"
        +                ],
        +                "type": "string"
        +              },
        +              "details": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "message": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "recoverable": {
        +                "type": "boolean"
        +              },
        +              "retry_after_seconds": {
        +                "anyOf": [
        +                  {
        +                    "minimum": 0,
        +                    "type": "integer"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              }
        +            },
        +            "required": [
        +              "code",
        +              "message",
        +              "recoverable"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      }
        +    },
        +    "required": [
        +      "_meta"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "_meta": {
        +        "additionalProperties": false,
        +        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        +        "properties": {
        +          "deliverables": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        +                "properties": {
        +                  "docx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "dxf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "expires_at": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  },
        +                  "pdf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "xlsx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "expires_at"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "document_id": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "issued_at": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "output_mode": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Surfaces what a trimmed ``output_mode`` withheld from ``data``.\n\nA trimmed mode (``summary`` / ``boq`` / ``boq_with_backup``) withholds\nalready-computed fields to keep the chat payload small. The withheld value\nreads to a client agent as \"capability missing\" (the box-culvert \"geometry\nbuilder isn't firing\" scare) rather than \"pared for size\": ``drawing`` and\n``audit_trail`` appear as ``null``, ``boq_rows`` as an empty list ``[]``\n(its type forbids ``null``) — both indistinguishable from a genuine absent\nresult. This names the withheld fields and the exact mode that brings each\nback, so the value is unambiguous. Absent on the default ``full_json`` mode\n— nothing is withheld, nothing to point at.",
        +                "properties": {
        +                  "mode": {
        +                    "enum": [
        +                      "summary",
        +                      "boq",
        +                      "boq_with_backup"
        +                    ],
        +                    "type": "string"
        +                  },
        +                  "omitted_fields": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "minItems": 1,
        +                    "type": "array"
        +                  },
        +                  "retrieve_with": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "mode",
        +                  "omitted_fields",
        +                  "retrieve_with"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "rate_limit_remaining": {
        +            "anyOf": [
        +              {
        +                "minimum": 0,
        +                "type": "integer"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "request_id": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "schema_version": {
        +            "const": "1.0.0",
        +            "default": "1.0.0",
        +            "type": "string"
        +          },
        +          "scope_boundary": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        +                "properties": {
        +                  "not_in_scope": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "produced": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "recommended_companions": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "type": "string"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "produced",
        +                  "not_in_scope"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tier": {
        +            "enum": [
        +              "free",
        +              "paid"
        +            ],
        +            "type": "string"
        +          },
        +          "tier_upgrade": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        +                "properties": {
        +                  "available_tiers": {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        +                      "properties": {
        +                        "billing": {
        +                          "enum": [
        +                            "one_off",
        +                            "monthly",
        +                            "annual"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "currency": {
        +                          "enum": [
        +                            "GBP",
        +                            "SGD",
        +                            "EUR",
        +                            "USD",
        +                            "CAD",
        +                            "AUD",
        +                            "NZD",
        +                            "MYR"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "display_name": {
        +                          "type": "string"
        +                        },
        +                        "price_local": {
        +                          "type": "number"
        +                        },
        +                        "tier_slug": {
        +                          "enum": [
        +                            "7_day_pass",
        +                            "solo",
        +                            "studio",
        +                            "practice"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "unlock_summary": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "tier_slug",
        +                        "display_name",
        +                        "price_local",
        +                        "currency",
        +                        "billing",
        +                        "unlock_summary"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "current_tier": {
        +                    "const": "free",
        +                    "default": "free",
        +                    "type": "string"
        +                  },
        +                  "pass_credit": {
        +                    "anyOf": [
        +                      {
        +                        "additionalProperties": false,
        +                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        +                        "properties": {
        +                          "amount_local": {
        +                            "type": "number"
        +                          },
        +                          "applies_to": {
        +                            "const": "solo_first_month",
        +                            "default": "solo_first_month",
        +                            "type": "string"
        +                          },
        +                          "currency": {
        +                            "type": "string"
        +                          },
        +                          "redeemable_until": {
        +                            "type": "string"
        +                          }
        +                        },
        +                        "required": [
        +                          "amount_local",
        +                          "currency",
        +                          "redeemable_until"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "pricing_url": {
        +                    "default": "https://civilquants.com/pricing",
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "available_tiers"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tos_url": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "upgrade_hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "warranty_disclaimer": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          }
        +        },
        +        "required": [
        +          "request_id",
        +          "issued_at",
        +          "tier"
        +        ],
        +        "type": "object"
        +      },
        +      "data": {
        +        "default": null,
        +        "title": "Data"
        +      },
        +      "error": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        +            "properties": {
        +              "code": {
        +                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        +                "enum": [
        +                  "RATE_LIMIT_EXCEEDED",
        +                  "TIER_INSUFFICIENT",
        +                  "INVALID_INPUT",
        +                  "SCHEMA_VERSION_MISMATCH",
        +                  "SCHEMA_INVARIANT_VIOLATION",
        +                  "UPSTREAM_TIMEOUT",
        +                  "BACKEND_FAILURE",
        +                  "IP_BLOCKED",
        +                  "RESOURCE_NOT_FOUND",
        +                  "RENDER_FAILURE",
        +                  "OCR_LOW_CONFIDENCE",
        +                  "MANUAL_REVIEW_REQUIRED",
        +                  "ACCEPTANCE_REQUIRED",
        +                  "INVALID_TOKEN"
        +                ],
        +                "type": "string"
        +              },
        +              "details": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "message": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "recoverable": {
        +                "type": "boolean"
        +              },
        +              "retry_after_seconds": {
        +                "anyOf": [
        +                  {
        +                    "minimum": 0,
        +                    "type": "integer"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              }
        +            },
        +            "required": [
        +              "code",
        +              "message",
        +              "recoverable"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      }
        +    },
        +    "required": [
        +      "_meta"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedcompute_strip_foundation1 field changed
      • changedOutput schema / properties / result / anyOf
        Previous value: -[
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "_meta": {
        -        "additionalProperties": false,
        -        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        -        "properties": {
        -          "deliverables": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        -                "properties": {
        -                  "docx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "dxf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "expires_at": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  },
        -                  "pdf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "xlsx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "expires_at"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "document_id": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "issued_at": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "rate_limit_remaining": {
        -            "anyOf": [
        -              {
        -                "minimum": 0,
        -                "type": "integer"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "request_id": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "schema_version": {
        -            "const": "1.0.0",
        -            "default": "1.0.0",
        -            "type": "string"
        -          },
        -          "scope_boundary": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        -                "properties": {
        -                  "not_in_scope": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "produced": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "recommended_companions": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "type": "string"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "produced",
        -                  "not_in_scope"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tier": {
        -            "enum": [
        -              "free",
        -              "paid"
        -            ],
        -            "type": "string"
        -          },
        -          "tier_upgrade": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        -                "properties": {
        -                  "available_tiers": {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        -                      "properties": {
        -                        "billing": {
        -                          "enum": [
        -                            "one_off",
        -                            "monthly",
        -                            "annual"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "currency": {
        -                          "enum": [
        -                            "GBP",
        -                            "SGD",
        -                            "EUR",
        -                            "USD",
        -                            "CAD",
        -                            "AUD",
        -                            "NZD",
        -                            "MYR"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "display_name": {
        -                          "type": "string"
        -                        },
        -                        "price_local": {
        -                          "type": "number"
        -                        },
        -                        "tier_slug": {
        -                          "enum": [
        -                            "7_day_pass",
        -                            "solo",
        -                            "studio",
        -                            "practice"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "unlock_summary": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "tier_slug",
        -                        "display_name",
        -                        "price_local",
        -                        "currency",
        -                        "billing",
        -                        "unlock_summary"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "current_tier": {
        -                    "const": "free",
        -                    "default": "free",
        -                    "type": "string"
        -                  },
        -                  "pass_credit": {
        -                    "anyOf": [
        -                      {
        -                        "additionalProperties": false,
        -                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        -                        "properties": {
        -                          "amount_local": {
        -                            "type": "number"
        -                          },
        -                          "applies_to": {
        -                            "const": "solo_first_month",
        -                            "default": "solo_first_month",
        -                            "type": "string"
        -                          },
        -                          "currency": {
        -                            "type": "string"
        -                          },
        -                          "redeemable_until": {
        -                            "type": "string"
        -                          }
        -                        },
        -                        "required": [
        -                          "amount_local",
        -                          "currency",
        -                          "redeemable_until"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "pricing_url": {
        -                    "default": "https://civilquants.com/pricing",
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "available_tiers"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tos_url": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "upgrade_hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "warranty_disclaimer": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          }
        -        },
        -        "required": [
        -          "request_id",
        -          "issued_at",
        -          "tier"
        -        ],
        -        "type": "object"
        -      },
        -      "data": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Schema § 1.1 — the typed payload returned inside `MCPResponse[ComputeResult]`.\n\nFree-tier responses omit `drawings` (the downloadable CAD artefact\npointers — the paid differentiator); the bridge enforces this. The\n`audit_trail` and the inline `drawing` preview are present on BOTH tiers\n(V1 ALIGN / 60th-fire D + C). `text_summary` is bounded to 2000 chars —\nkeeps the LLM-facing summary token-cheap and forces longer narrative into\nBoQ row descriptions where it belongs. `warnings` is the non-fatal\ngeometry advisory list (both tiers).",
        -            "properties": {
        -              "assembly_slug": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "audit_trail": {
        -                "anyOf": [
        -                  {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.7 — paid-tier audit-trail entry.\n\nOne entry per BoQ row; `boq_row_index` ties to the row position in\n`ComputeResult.boq_rows`. `derivation` is the human-readable formula\nwalk-through; `formula` is the optional formal expression.",
        -                      "properties": {
        -                        "boq_row_index": {
        -                          "minimum": 0,
        -                          "type": "integer"
        -                        },
        -                        "derivation": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "formula": {
        -                          "anyOf": [
        -                            {
        -                              "type": "string"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ],
        -                          "default": null
        -                        },
        -                        "id": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "parameters_referenced": {
        -                          "items": {
        -                            "type": "string"
        -                          },
        -                          "type": "array"
        -                        }
        -                      },
        -                      "required": [
        -                        "id",
        -                        "boq_row_index",
        -                        "derivation"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "boq_rows": {
        -                "items": {
        -                  "additionalProperties": false,
        -                  "description": "Schema § 1.3 — a single bill row in the requested standard's format.\n\n`description` is the non-verbatim functional description per spec § 13.9 /\n§ 15 invariant — NEVER reproduces a standard's verbatim clause text.\n`rate` / `amount` ship null because rates are commodity data the customer\nowns; the engine's job is the measurement, not the pricing.",
        -                  "properties": {
        -                    "amount": {
        -                      "anyOf": [
        -                        {
        -                          "type": "number"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "attribution": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "audit_id": {
        -                      "anyOf": [
        -                        {
        -                          "type": "string"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "description": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "quantity": {
        -                      "minimum": 0,
        -                      "type": "number"
        -                    },
        -                    "rate": {
        -                      "anyOf": [
        -                        {
        -                          "type": "number"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "unit": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "work_section": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    }
        -                  },
        -                  "required": [
        -                    "work_section",
        -                    "description",
        -                    "quantity",
        -                    "unit",
        -                    "attribution"
        -                  ],
        -                  "type": "object"
        -                },
        -                "type": "array"
        -              },
        -              "drawing": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": false,
        -                    "description": "Schema § 1.6a — inline server-rendered SVG preview of the geometry.\n\nThe MCP mirror of the web ``/compute`` response's ``drawing`` field\n(``api.schemas.compute.DrawingRef``): the same on-screen dimensioned\ndrawing both tiers see in the workspace, surfaced on the MCP compute\nresponse so a chat client can render it inline (60th-fire item C). This\nis the on-screen preview — present on BOTH tiers per the free/paid\nboundary; the downloadable CAD artefacts (DXF / dimensioned PDF) remain\nthe paid differentiator via the export tools.\n\nDefined here rather than importing ``DrawingRef`` because the web\n``schemas`` package imports back into this module (``schemas.render``),\nso reusing it would create an import cycle — the MCP wire contract keeps\nits own copy, the same pattern as ``BoQRow`` / ``DrawingReference``.",
        -                    "properties": {
        -                      "entity_count": {
        -                        "minimum": 0,
        -                        "type": "integer"
        -                      },
        -                      "svg_b64": {
        -                        "minLength": 1,
        -                        "type": "string"
        -                      },
        -                      "unit_of_drawing": {
        -                        "const": "m",
        -                        "default": "m",
        -                        "type": "string"
        -                      },
        -                      "viewbox_height": {
        -                        "exclusiveMinimum": 0,
        -                        "type": "number"
        -                      },
        -                      "viewbox_width": {
        -                        "exclusiveMinimum": 0,
        -                        "type": "number"
        -                      },
        -                      "viewbox_x": {
        -                        "type": "number"
        -                      },
        -                      "viewbox_y": {
        -                        "type": "number"
        -                      }
        -                    },
        -                    "required": [
        -                      "svg_b64",
        -                      "viewbox_x",
        -                      "viewbox_y",
        -                      "viewbox_width",
        -                      "viewbox_height",
        -                      "entity_count"
        -                    ],
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "drawings": {
        -                "anyOf": [
        -                  {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.6 — paid-tier drawing artefact pointer.\n\n`url` is an R2-signed URL; expiry is carried in `_meta.deliverables.expires_at`\non the envelope (not duplicated here). `layers` is DXF-only; PDF/SVG\ncallers omit it.",
        -                      "properties": {
        -                        "drawing_type": {
        -                          "enum": [
        -                            "section",
        -                            "plan",
        -                            "elevation",
        -                            "isometric",
        -                            "detail"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "format": {
        -                          "enum": [
        -                            "DXF",
        -                            "PDF",
        -                            "SVG"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "layers": {
        -                          "anyOf": [
        -                            {
        -                              "items": {
        -                                "type": "string"
        -                              },
        -                              "type": "array"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ],
        -                          "default": null
        -                        },
        -                        "scale": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "sheet_size": {
        -                          "enum": [
        -                            "A1",
        -                            "A2",
        -                            "A3",
        -                            "A4"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "url": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "drawing_type",
        -                        "format",
        -                        "url",
        -                        "sheet_size",
        -                        "scale"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "parameters_used": {
        -                "additionalProperties": false,
        -                "description": "Schema § 1.2 — the parameter snapshot the engine actually used.\n\nSplits user-supplied values from engine defaults so customers can see\nwhich numbers came from them and which the engine filled in. Every\ndefaulted parameter SHOULD have a corresponding entry in `assumptions`\n— the bridge layer enforces this when wrapping engine output.",
        -                "properties": {
        -                  "assumptions": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "engine_defaults": {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  "user_supplied": {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  }
        -                },
        -                "type": "object"
        -              },
        -              "standard": {
        -                "enum": [
        -                  "CESMM4",
        -                  "NRM2",
        -                  "SMM7",
        -                  "MMHW"
        -                ],
        -                "type": "string"
        -              },
        -              "text_summary": {
        -                "maxLength": 2000,
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "totals_summary": {
        -                "additionalProperties": false,
        -                "description": "Schema § 1.4 — totals_summary as a typed wrapper around the free-form dict.\n\nWire shape is a flat object (`{\"concrete_m3\": {...}, \"rebar_t\": {...}}`).\nWe model it as `RootModel`-equivalent via `model_config(extra=\"allow\")`\n+ a single `__root__`-style `entries` dict. Pydantic v2 recommends\n`RootModel` for free-form roots; using a wrapper class keeps the import\nsurface uniform with the rest of this module.",
        -                "properties": {
        -                  "entries": {
        -                    "additionalProperties": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.4 — single material/work-class total entry.",
        -                      "properties": {
        -                        "quantity": {
        -                          "minimum": 0,
        -                          "type": "number"
        -                        },
        -                        "unit": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "quantity",
        -                        "unit"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "object"
        -                  }
        -                },
        -                "type": "object"
        -              },
        -              "warnings": {
        -                "items": {
        -                  "additionalProperties": false,
        -                  "description": "Schema § 1.8 — a non-fatal geometry advisory (56th-fire T2).\n\nThe wire projection of the engine's `core.GeometryWarning`. Advisory only:\na warning NEVER changes a measured quantity — it flags geometry that is\nvalid but likely a mistake (e.g. a stale dependent-height default). Present\non BOTH tiers — a correctness/safety signal, not a paid feature.",
        -                  "properties": {
        -                    "affected_params": {
        -                      "items": {
        -                        "type": "string"
        -                      },
        -                      "type": "array"
        -                    },
        -                    "code": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "detail": {
        -                      "additionalProperties": {
        -                        "type": "number"
        -                      },
        -                      "type": "object"
        -                    },
        -                    "message": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "severity": {
        -                      "enum": [
        -                        "info",
        -                        "advisory",
        -                        "caution"
        -                      ],
        -                      "type": "string"
        -                    }
        -                  },
        -                  "required": [
        -                    "code",
        -                    "severity",
        -                    "message"
        -                  ],
        -                  "type": "object"
        -                },
        -                "type": "array"
        -              }
        -            },
        -            "required": [
        -              "assembly_slug",
        -              "standard",
        -              "parameters_used",
        -              "boq_rows",
        -              "totals_summary",
        -              "text_summary"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      },
        -      "error": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        -            "properties": {
        -              "code": {
        -                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        -                "enum": [
        -                  "RATE_LIMIT_EXCEEDED",
        -                  "TIER_INSUFFICIENT",
        -                  "INVALID_INPUT",
        -                  "SCHEMA_VERSION_MISMATCH",
        -                  "SCHEMA_INVARIANT_VIOLATION",
        -                  "UPSTREAM_TIMEOUT",
        -                  "BACKEND_FAILURE",
        -                  "IP_BLOCKED",
        -                  "RESOURCE_NOT_FOUND",
        -                  "RENDER_FAILURE",
        -                  "OCR_LOW_CONFIDENCE",
        -                  "MANUAL_REVIEW_REQUIRED",
        -                  "ACCEPTANCE_REQUIRED",
        -                  "INVALID_TOKEN"
        -                ],
        -                "type": "string"
        -              },
        -              "details": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "message": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "recoverable": {
        -                "type": "boolean"
        -              },
        -              "retry_after_seconds": {
        -                "anyOf": [
        -                  {
        -                    "minimum": 0,
        -                    "type": "integer"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              }
        -            },
        -            "required": [
        -              "code",
        -              "message",
        -              "recoverable"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      }
        -    },
        -    "required": [
        -      "_meta"
        -    ],
        -    "type": "object"
        -  },
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "_meta": {
        -        "additionalProperties": false,
        -        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        -        "properties": {
        -          "deliverables": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        -                "properties": {
        -                  "docx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "dxf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "expires_at": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  },
        -                  "pdf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "xlsx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "expires_at"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "document_id": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "issued_at": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "rate_limit_remaining": {
        -            "anyOf": [
        -              {
        -                "minimum": 0,
        -                "type": "integer"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "request_id": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "schema_version": {
        -            "const": "1.0.0",
        -            "default": "1.0.0",
        -            "type": "string"
        -          },
        -          "scope_boundary": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        -                "properties": {
        -                  "not_in_scope": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "produced": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "recommended_companions": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "type": "string"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "produced",
        -                  "not_in_scope"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tier": {
        -            "enum": [
        -              "free",
        -              "paid"
        -            ],
        -            "type": "string"
        -          },
        -          "tier_upgrade": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        -                "properties": {
        -                  "available_tiers": {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        -                      "properties": {
        -                        "billing": {
        -                          "enum": [
        -                            "one_off",
        -                            "monthly",
        -                            "annual"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "currency": {
        -                          "enum": [
        -                            "GBP",
        -                            "SGD",
        -                            "EUR",
        -                            "USD",
        -                            "CAD",
        -                            "AUD",
        -                            "NZD",
        -                            "MYR"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "display_name": {
        -                          "type": "string"
        -                        },
        -                        "price_local": {
        -                          "type": "number"
        -                        },
        -                        "tier_slug": {
        -                          "enum": [
        -                            "7_day_pass",
        -                            "solo",
        -                            "studio",
        -                            "practice"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "unlock_summary": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "tier_slug",
        -                        "display_name",
        -                        "price_local",
        -                        "currency",
        -                        "billing",
        -                        "unlock_summary"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "current_tier": {
        -                    "const": "free",
        -                    "default": "free",
        -                    "type": "string"
        -                  },
        -                  "pass_credit": {
        -                    "anyOf": [
        -                      {
        -                        "additionalProperties": false,
        -                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        -                        "properties": {
        -                          "amount_local": {
        -                            "type": "number"
        -                          },
        -                          "applies_to": {
        -                            "const": "solo_first_month",
        -                            "default": "solo_first_month",
        -                            "type": "string"
        -                          },
        -                          "currency": {
        -                            "type": "string"
        -                          },
        -                          "redeemable_until": {
        -                            "type": "string"
        -                          }
        -                        },
        -                        "required": [
        -                          "amount_local",
        -                          "currency",
        -                          "redeemable_until"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "pricing_url": {
        -                    "default": "https://civilquants.com/pricing",
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "available_tiers"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tos_url": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "upgrade_hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "warranty_disclaimer": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          }
        -        },
        -        "required": [
        -          "request_id",
        -          "issued_at",
        -          "tier"
        -        ],
        -        "type": "object"
        -      },
        -      "data": {
        -        "default": null,
        -        "title": "Data"
        -      },
        -      "error": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        -            "properties": {
        -              "code": {
        -                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        -                "enum": [
        -                  "RATE_LIMIT_EXCEEDED",
        -                  "TIER_INSUFFICIENT",
        -                  "INVALID_INPUT",
        -                  "SCHEMA_VERSION_MISMATCH",
        -                  "SCHEMA_INVARIANT_VIOLATION",
        -                  "UPSTREAM_TIMEOUT",
        -                  "BACKEND_FAILURE",
        -                  "IP_BLOCKED",
        -                  "RESOURCE_NOT_FOUND",
        -                  "RENDER_FAILURE",
        -                  "OCR_LOW_CONFIDENCE",
        -                  "MANUAL_REVIEW_REQUIRED",
        -                  "ACCEPTANCE_REQUIRED",
        -                  "INVALID_TOKEN"
        -                ],
        -                "type": "string"
        -              },
        -              "details": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "message": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "recoverable": {
        -                "type": "boolean"
        -              },
        -              "retry_after_seconds": {
        -                "anyOf": [
        -                  {
        -                    "minimum": 0,
        -                    "type": "integer"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              }
        -            },
        -            "required": [
        -              "code",
        -              "message",
        -              "recoverable"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      }
        -    },
        -    "required": [
        -      "_meta"
        -    ],
        -    "type": "object"
        -  }
        -]New value: +[
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "_meta": {
        +        "additionalProperties": false,
        +        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        +        "properties": {
        +          "deliverables": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        +                "properties": {
        +                  "docx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "dxf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "expires_at": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  },
        +                  "pdf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "xlsx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "expires_at"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "document_id": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "issued_at": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "output_mode": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Surfaces what a trimmed ``output_mode`` withheld from ``data``.\n\nA trimmed mode (``summary`` / ``boq`` / ``boq_with_backup``) withholds\nalready-computed fields to keep the chat payload small. The withheld value\nreads to a client agent as \"capability missing\" (the box-culvert \"geometry\nbuilder isn't firing\" scare) rather than \"pared for size\": ``drawing`` and\n``audit_trail`` appear as ``null``, ``boq_rows`` as an empty list ``[]``\n(its type forbids ``null``) — both indistinguishable from a genuine absent\nresult. This names the withheld fields and the exact mode that brings each\nback, so the value is unambiguous. Absent on the default ``full_json`` mode\n— nothing is withheld, nothing to point at.",
        +                "properties": {
        +                  "mode": {
        +                    "enum": [
        +                      "summary",
        +                      "boq",
        +                      "boq_with_backup"
        +                    ],
        +                    "type": "string"
        +                  },
        +                  "omitted_fields": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "minItems": 1,
        +                    "type": "array"
        +                  },
        +                  "retrieve_with": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "mode",
        +                  "omitted_fields",
        +                  "retrieve_with"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "rate_limit_remaining": {
        +            "anyOf": [
        +              {
        +                "minimum": 0,
        +                "type": "integer"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "request_id": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "schema_version": {
        +            "const": "1.0.0",
        +            "default": "1.0.0",
        +            "type": "string"
        +          },
        +          "scope_boundary": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        +                "properties": {
        +                  "not_in_scope": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "produced": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "recommended_companions": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "type": "string"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "produced",
        +                  "not_in_scope"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tier": {
        +            "enum": [
        +              "free",
        +              "paid"
        +            ],
        +            "type": "string"
        +          },
        +          "tier_upgrade": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        +                "properties": {
        +                  "available_tiers": {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        +                      "properties": {
        +                        "billing": {
        +                          "enum": [
        +                            "one_off",
        +                            "monthly",
        +                            "annual"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "currency": {
        +                          "enum": [
        +                            "GBP",
        +                            "SGD",
        +                            "EUR",
        +                            "USD",
        +                            "CAD",
        +                            "AUD",
        +                            "NZD",
        +                            "MYR"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "display_name": {
        +                          "type": "string"
        +                        },
        +                        "price_local": {
        +                          "type": "number"
        +                        },
        +                        "tier_slug": {
        +                          "enum": [
        +                            "7_day_pass",
        +                            "solo",
        +                            "studio",
        +                            "practice"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "unlock_summary": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "tier_slug",
        +                        "display_name",
        +                        "price_local",
        +                        "currency",
        +                        "billing",
        +                        "unlock_summary"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "current_tier": {
        +                    "const": "free",
        +                    "default": "free",
        +                    "type": "string"
        +                  },
        +                  "pass_credit": {
        +                    "anyOf": [
        +                      {
        +                        "additionalProperties": false,
        +                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        +                        "properties": {
        +                          "amount_local": {
        +                            "type": "number"
        +                          },
        +                          "applies_to": {
        +                            "const": "solo_first_month",
        +                            "default": "solo_first_month",
        +                            "type": "string"
        +                          },
        +                          "currency": {
        +                            "type": "string"
        +                          },
        +                          "redeemable_until": {
        +                            "type": "string"
        +                          }
        +                        },
        +                        "required": [
        +                          "amount_local",
        +                          "currency",
        +                          "redeemable_until"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "pricing_url": {
        +                    "default": "https://civilquants.com/pricing",
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "available_tiers"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tos_url": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "upgrade_hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "warranty_disclaimer": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          }
        +        },
        +        "required": [
        +          "request_id",
        +          "issued_at",
        +          "tier"
        +        ],
        +        "type": "object"
        +      },
        +      "data": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Schema § 1.1 — the typed payload returned inside `MCPResponse[ComputeResult]`.\n\nFree-tier responses omit `drawings` (the downloadable CAD artefact\npointers — the paid differentiator); the bridge enforces this. The\n`audit_trail` and the inline `drawing` preview are present on BOTH tiers\n(V1 ALIGN / 60th-fire D + C). `text_summary` is bounded to 2000 chars —\nkeeps the LLM-facing summary token-cheap and forces longer narrative into\nBoQ row descriptions where it belongs. `warnings` is the non-fatal\ngeometry advisory list (both tiers).",
        +            "properties": {
        +              "assembly_slug": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "audit_trail": {
        +                "anyOf": [
        +                  {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.7 — paid-tier audit-trail entry.\n\nOne entry per BoQ row; `boq_row_index` ties to the row position in\n`ComputeResult.boq_rows`. `derivation` is the human-readable formula\nwalk-through; `formula` is the optional formal expression.",
        +                      "properties": {
        +                        "boq_row_index": {
        +                          "minimum": 0,
        +                          "type": "integer"
        +                        },
        +                        "derivation": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "formula": {
        +                          "anyOf": [
        +                            {
        +                              "type": "string"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ],
        +                          "default": null
        +                        },
        +                        "id": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "parameters_referenced": {
        +                          "items": {
        +                            "type": "string"
        +                          },
        +                          "type": "array"
        +                        }
        +                      },
        +                      "required": [
        +                        "id",
        +                        "boq_row_index",
        +                        "derivation"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "boq_rows": {
        +                "items": {
        +                  "additionalProperties": false,
        +                  "description": "Schema § 1.3 — a single bill row in the requested standard's format.\n\n`description` is the non-verbatim functional description per spec § 13.9 /\n§ 15 invariant — NEVER reproduces a standard's verbatim clause text.\n`rate` / `amount` ship null because rates are commodity data the customer\nowns; the engine's job is the measurement, not the pricing.",
        +                  "properties": {
        +                    "amount": {
        +                      "anyOf": [
        +                        {
        +                          "type": "number"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "attribution": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "audit_id": {
        +                      "anyOf": [
        +                        {
        +                          "type": "string"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "description": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "quantity": {
        +                      "minimum": 0,
        +                      "type": "number"
        +                    },
        +                    "rate": {
        +                      "anyOf": [
        +                        {
        +                          "type": "number"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "unit": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "work_section": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    }
        +                  },
        +                  "required": [
        +                    "work_section",
        +                    "description",
        +                    "quantity",
        +                    "unit",
        +                    "attribution"
        +                  ],
        +                  "type": "object"
        +                },
        +                "type": "array"
        +              },
        +              "drawing": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": false,
        +                    "description": "Schema § 1.6a — inline server-rendered SVG preview of the geometry.\n\nThe MCP mirror of the web ``/compute`` response's ``drawing`` field\n(``api.schemas.compute.DrawingRef``): the same on-screen dimensioned\ndrawing both tiers see in the workspace, surfaced on the MCP compute\nresponse so a chat client can render it inline (60th-fire item C). This\nis the on-screen preview — present on BOTH tiers per the free/paid\nboundary; the downloadable CAD artefacts (DXF / dimensioned PDF) remain\nthe paid differentiator via the export tools.\n\nDefined here rather than importing ``DrawingRef`` because the web\n``schemas`` package imports back into this module (``schemas.render``),\nso reusing it would create an import cycle — the MCP wire contract keeps\nits own copy, the same pattern as ``BoQRow`` / ``DrawingReference``.",
        +                    "properties": {
        +                      "entity_count": {
        +                        "minimum": 0,
        +                        "type": "integer"
        +                      },
        +                      "svg_b64": {
        +                        "minLength": 1,
        +                        "type": "string"
        +                      },
        +                      "unit_of_drawing": {
        +                        "const": "m",
        +                        "default": "m",
        +                        "type": "string"
        +                      },
        +                      "viewbox_height": {
        +                        "exclusiveMinimum": 0,
        +                        "type": "number"
        +                      },
        +                      "viewbox_width": {
        +                        "exclusiveMinimum": 0,
        +                        "type": "number"
        +                      },
        +                      "viewbox_x": {
        +                        "type": "number"
        +                      },
        +                      "viewbox_y": {
        +                        "type": "number"
        +                      }
        +                    },
        +                    "required": [
        +                      "svg_b64",
        +                      "viewbox_x",
        +                      "viewbox_y",
        +                      "viewbox_width",
        +                      "viewbox_height",
        +                      "entity_count"
        +                    ],
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "drawings": {
        +                "anyOf": [
        +                  {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.6 — paid-tier drawing artefact pointer.\n\n`url` is an R2-signed URL; expiry is carried in `_meta.deliverables.expires_at`\non the envelope (not duplicated here). `layers` is DXF-only; PDF/SVG\ncallers omit it.",
        +                      "properties": {
        +                        "drawing_type": {
        +                          "enum": [
        +                            "section",
        +                            "plan",
        +                            "elevation",
        +                            "isometric",
        +                            "detail"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "format": {
        +                          "enum": [
        +                            "DXF",
        +                            "PDF",
        +                            "SVG"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "layers": {
        +                          "anyOf": [
        +                            {
        +                              "items": {
        +                                "type": "string"
        +                              },
        +                              "type": "array"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ],
        +                          "default": null
        +                        },
        +                        "scale": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "sheet_size": {
        +                          "enum": [
        +                            "A1",
        +                            "A2",
        +                            "A3",
        +                            "A4"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "url": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "drawing_type",
        +                        "format",
        +                        "url",
        +                        "sheet_size",
        +                        "scale"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "parameters_used": {
        +                "additionalProperties": false,
        +                "description": "Schema § 1.2 — the parameter snapshot the engine actually used.\n\nSplits user-supplied values from engine defaults so customers can see\nwhich numbers came from them and which the engine filled in. Every\ndefaulted parameter SHOULD have a corresponding entry in `assumptions`\n— the bridge layer enforces this when wrapping engine output.",
        +                "properties": {
        +                  "assumptions": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "engine_defaults": {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  "user_supplied": {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  }
        +                },
        +                "type": "object"
        +              },
        +              "standard": {
        +                "enum": [
        +                  "CESMM4",
        +                  "NRM2",
        +                  "SMM7",
        +                  "MMHW"
        +                ],
        +                "type": "string"
        +              },
        +              "text_summary": {
        +                "maxLength": 2000,
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "totals_summary": {
        +                "additionalProperties": false,
        +                "description": "Schema § 1.4 — totals_summary as a typed wrapper around the free-form dict.\n\nWire shape is a flat object (`{\"concrete_m3\": {...}, \"rebar_t\": {...}}`).\nWe model it as `RootModel`-equivalent via `model_config(extra=\"allow\")`\n+ a single `__root__`-style `entries` dict. Pydantic v2 recommends\n`RootModel` for free-form roots; using a wrapper class keeps the import\nsurface uniform with the rest of this module.",
        +                "properties": {
        +                  "entries": {
        +                    "additionalProperties": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.4 — single material/work-class total entry.",
        +                      "properties": {
        +                        "quantity": {
        +                          "minimum": 0,
        +                          "type": "number"
        +                        },
        +                        "unit": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "quantity",
        +                        "unit"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "object"
        +                  }
        +                },
        +                "type": "object"
        +              },
        +              "warnings": {
        +                "items": {
        +                  "additionalProperties": false,
        +                  "description": "Schema § 1.8 — a non-fatal geometry advisory (56th-fire T2).\n\nThe wire projection of the engine's `core.GeometryWarning`. Advisory only:\na warning NEVER changes a measured quantity — it flags geometry that is\nvalid but likely a mistake (e.g. a stale dependent-height default). Present\non BOTH tiers — a correctness/safety signal, not a paid feature.",
        +                  "properties": {
        +                    "affected_params": {
        +                      "items": {
        +                        "type": "string"
        +                      },
        +                      "type": "array"
        +                    },
        +                    "code": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "detail": {
        +                      "additionalProperties": {
        +                        "type": "number"
        +                      },
        +                      "type": "object"
        +                    },
        +                    "message": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "severity": {
        +                      "enum": [
        +                        "info",
        +                        "advisory",
        +                        "caution"
        +                      ],
        +                      "type": "string"
        +                    }
        +                  },
        +                  "required": [
        +                    "code",
        +                    "severity",
        +                    "message"
        +                  ],
        +                  "type": "object"
        +                },
        +                "type": "array"
        +              }
        +            },
        +            "required": [
        +              "assembly_slug",
        +              "standard",
        +              "parameters_used",
        +              "boq_rows",
        +              "totals_summary",
        +              "text_summary"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      },
        +      "error": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        +            "properties": {
        +              "code": {
        +                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        +                "enum": [
        +                  "RATE_LIMIT_EXCEEDED",
        +                  "TIER_INSUFFICIENT",
        +                  "INVALID_INPUT",
        +                  "SCHEMA_VERSION_MISMATCH",
        +                  "SCHEMA_INVARIANT_VIOLATION",
        +                  "UPSTREAM_TIMEOUT",
        +                  "BACKEND_FAILURE",
        +                  "IP_BLOCKED",
        +                  "RESOURCE_NOT_FOUND",
        +                  "RENDER_FAILURE",
        +                  "OCR_LOW_CONFIDENCE",
        +                  "MANUAL_REVIEW_REQUIRED",
        +                  "ACCEPTANCE_REQUIRED",
        +                  "INVALID_TOKEN"
        +                ],
        +                "type": "string"
        +              },
        +              "details": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "message": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "recoverable": {
        +                "type": "boolean"
        +              },
        +              "retry_after_seconds": {
        +                "anyOf": [
        +                  {
        +                    "minimum": 0,
        +                    "type": "integer"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              }
        +            },
        +            "required": [
        +              "code",
        +              "message",
        +              "recoverable"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      }
        +    },
        +    "required": [
        +      "_meta"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "_meta": {
        +        "additionalProperties": false,
        +        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        +        "properties": {
        +          "deliverables": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        +                "properties": {
        +                  "docx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "dxf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "expires_at": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  },
        +                  "pdf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "xlsx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "expires_at"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "document_id": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "issued_at": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "output_mode": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Surfaces what a trimmed ``output_mode`` withheld from ``data``.\n\nA trimmed mode (``summary`` / ``boq`` / ``boq_with_backup``) withholds\nalready-computed fields to keep the chat payload small. The withheld value\nreads to a client agent as \"capability missing\" (the box-culvert \"geometry\nbuilder isn't firing\" scare) rather than \"pared for size\": ``drawing`` and\n``audit_trail`` appear as ``null``, ``boq_rows`` as an empty list ``[]``\n(its type forbids ``null``) — both indistinguishable from a genuine absent\nresult. This names the withheld fields and the exact mode that brings each\nback, so the value is unambiguous. Absent on the default ``full_json`` mode\n— nothing is withheld, nothing to point at.",
        +                "properties": {
        +                  "mode": {
        +                    "enum": [
        +                      "summary",
        +                      "boq",
        +                      "boq_with_backup"
        +                    ],
        +                    "type": "string"
        +                  },
        +                  "omitted_fields": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "minItems": 1,
        +                    "type": "array"
        +                  },
        +                  "retrieve_with": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "mode",
        +                  "omitted_fields",
        +                  "retrieve_with"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "rate_limit_remaining": {
        +            "anyOf": [
        +              {
        +                "minimum": 0,
        +                "type": "integer"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "request_id": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "schema_version": {
        +            "const": "1.0.0",
        +            "default": "1.0.0",
        +            "type": "string"
        +          },
        +          "scope_boundary": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        +                "properties": {
        +                  "not_in_scope": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "produced": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "recommended_companions": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "type": "string"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "produced",
        +                  "not_in_scope"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tier": {
        +            "enum": [
        +              "free",
        +              "paid"
        +            ],
        +            "type": "string"
        +          },
        +          "tier_upgrade": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        +                "properties": {
        +                  "available_tiers": {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        +                      "properties": {
        +                        "billing": {
        +                          "enum": [
        +                            "one_off",
        +                            "monthly",
        +                            "annual"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "currency": {
        +                          "enum": [
        +                            "GBP",
        +                            "SGD",
        +                            "EUR",
        +                            "USD",
        +                            "CAD",
        +                            "AUD",
        +                            "NZD",
        +                            "MYR"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "display_name": {
        +                          "type": "string"
        +                        },
        +                        "price_local": {
        +                          "type": "number"
        +                        },
        +                        "tier_slug": {
        +                          "enum": [
        +                            "7_day_pass",
        +                            "solo",
        +                            "studio",
        +                            "practice"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "unlock_summary": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "tier_slug",
        +                        "display_name",
        +                        "price_local",
        +                        "currency",
        +                        "billing",
        +                        "unlock_summary"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "current_tier": {
        +                    "const": "free",
        +                    "default": "free",
        +                    "type": "string"
        +                  },
        +                  "pass_credit": {
        +                    "anyOf": [
        +                      {
        +                        "additionalProperties": false,
        +                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        +                        "properties": {
        +                          "amount_local": {
        +                            "type": "number"
        +                          },
        +                          "applies_to": {
        +                            "const": "solo_first_month",
        +                            "default": "solo_first_month",
        +                            "type": "string"
        +                          },
        +                          "currency": {
        +                            "type": "string"
        +                          },
        +                          "redeemable_until": {
        +                            "type": "string"
        +                          }
        +                        },
        +                        "required": [
        +                          "amount_local",
        +                          "currency",
        +                          "redeemable_until"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "pricing_url": {
        +                    "default": "https://civilquants.com/pricing",
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "available_tiers"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tos_url": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "upgrade_hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "warranty_disclaimer": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          }
        +        },
        +        "required": [
        +          "request_id",
        +          "issued_at",
        +          "tier"
        +        ],
        +        "type": "object"
        +      },
        +      "data": {
        +        "default": null,
        +        "title": "Data"
        +      },
        +      "error": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        +            "properties": {
        +              "code": {
        +                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        +                "enum": [
        +                  "RATE_LIMIT_EXCEEDED",
        +                  "TIER_INSUFFICIENT",
        +                  "INVALID_INPUT",
        +                  "SCHEMA_VERSION_MISMATCH",
        +                  "SCHEMA_INVARIANT_VIOLATION",
        +                  "UPSTREAM_TIMEOUT",
        +                  "BACKEND_FAILURE",
        +                  "IP_BLOCKED",
        +                  "RESOURCE_NOT_FOUND",
        +                  "RENDER_FAILURE",
        +                  "OCR_LOW_CONFIDENCE",
        +                  "MANUAL_REVIEW_REQUIRED",
        +                  "ACCEPTANCE_REQUIRED",
        +                  "INVALID_TOKEN"
        +                ],
        +                "type": "string"
        +              },
        +              "details": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "message": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "recoverable": {
        +                "type": "boolean"
        +              },
        +              "retry_after_seconds": {
        +                "anyOf": [
        +                  {
        +                    "minimum": 0,
        +                    "type": "integer"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              }
        +            },
        +            "required": [
        +              "code",
        +              "message",
        +              "recoverable"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      }
        +    },
        +    "required": [
        +      "_meta"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedcompute_swale1 field changed
      • changedOutput schema / properties / result / anyOf
        Previous value: -[
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "_meta": {
        -        "additionalProperties": false,
        -        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        -        "properties": {
        -          "deliverables": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        -                "properties": {
        -                  "docx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "dxf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "expires_at": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  },
        -                  "pdf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "xlsx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "expires_at"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "document_id": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "issued_at": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "rate_limit_remaining": {
        -            "anyOf": [
        -              {
        -                "minimum": 0,
        -                "type": "integer"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "request_id": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "schema_version": {
        -            "const": "1.0.0",
        -            "default": "1.0.0",
        -            "type": "string"
        -          },
        -          "scope_boundary": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        -                "properties": {
        -                  "not_in_scope": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "produced": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "recommended_companions": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "type": "string"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "produced",
        -                  "not_in_scope"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tier": {
        -            "enum": [
        -              "free",
        -              "paid"
        -            ],
        -            "type": "string"
        -          },
        -          "tier_upgrade": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        -                "properties": {
        -                  "available_tiers": {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        -                      "properties": {
        -                        "billing": {
        -                          "enum": [
        -                            "one_off",
        -                            "monthly",
        -                            "annual"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "currency": {
        -                          "enum": [
        -                            "GBP",
        -                            "SGD",
        -                            "EUR",
        -                            "USD",
        -                            "CAD",
        -                            "AUD",
        -                            "NZD",
        -                            "MYR"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "display_name": {
        -                          "type": "string"
        -                        },
        -                        "price_local": {
        -                          "type": "number"
        -                        },
        -                        "tier_slug": {
        -                          "enum": [
        -                            "7_day_pass",
        -                            "solo",
        -                            "studio",
        -                            "practice"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "unlock_summary": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "tier_slug",
        -                        "display_name",
        -                        "price_local",
        -                        "currency",
        -                        "billing",
        -                        "unlock_summary"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "current_tier": {
        -                    "const": "free",
        -                    "default": "free",
        -                    "type": "string"
        -                  },
        -                  "pass_credit": {
        -                    "anyOf": [
        -                      {
        -                        "additionalProperties": false,
        -                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        -                        "properties": {
        -                          "amount_local": {
        -                            "type": "number"
        -                          },
        -                          "applies_to": {
        -                            "const": "solo_first_month",
        -                            "default": "solo_first_month",
        -                            "type": "string"
        -                          },
        -                          "currency": {
        -                            "type": "string"
        -                          },
        -                          "redeemable_until": {
        -                            "type": "string"
        -                          }
        -                        },
        -                        "required": [
        -                          "amount_local",
        -                          "currency",
        -                          "redeemable_until"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "pricing_url": {
        -                    "default": "https://civilquants.com/pricing",
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "available_tiers"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tos_url": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "upgrade_hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "warranty_disclaimer": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          }
        -        },
        -        "required": [
        -          "request_id",
        -          "issued_at",
        -          "tier"
        -        ],
        -        "type": "object"
        -      },
        -      "data": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Schema § 1.1 — the typed payload returned inside `MCPResponse[ComputeResult]`.\n\nFree-tier responses omit `drawings` (the downloadable CAD artefact\npointers — the paid differentiator); the bridge enforces this. The\n`audit_trail` and the inline `drawing` preview are present on BOTH tiers\n(V1 ALIGN / 60th-fire D + C). `text_summary` is bounded to 2000 chars —\nkeeps the LLM-facing summary token-cheap and forces longer narrative into\nBoQ row descriptions where it belongs. `warnings` is the non-fatal\ngeometry advisory list (both tiers).",
        -            "properties": {
        -              "assembly_slug": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "audit_trail": {
        -                "anyOf": [
        -                  {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.7 — paid-tier audit-trail entry.\n\nOne entry per BoQ row; `boq_row_index` ties to the row position in\n`ComputeResult.boq_rows`. `derivation` is the human-readable formula\nwalk-through; `formula` is the optional formal expression.",
        -                      "properties": {
        -                        "boq_row_index": {
        -                          "minimum": 0,
        -                          "type": "integer"
        -                        },
        -                        "derivation": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "formula": {
        -                          "anyOf": [
        -                            {
        -                              "type": "string"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ],
        -                          "default": null
        -                        },
        -                        "id": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "parameters_referenced": {
        -                          "items": {
        -                            "type": "string"
        -                          },
        -                          "type": "array"
        -                        }
        -                      },
        -                      "required": [
        -                        "id",
        -                        "boq_row_index",
        -                        "derivation"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "boq_rows": {
        -                "items": {
        -                  "additionalProperties": false,
        -                  "description": "Schema § 1.3 — a single bill row in the requested standard's format.\n\n`description` is the non-verbatim functional description per spec § 13.9 /\n§ 15 invariant — NEVER reproduces a standard's verbatim clause text.\n`rate` / `amount` ship null because rates are commodity data the customer\nowns; the engine's job is the measurement, not the pricing.",
        -                  "properties": {
        -                    "amount": {
        -                      "anyOf": [
        -                        {
        -                          "type": "number"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "attribution": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "audit_id": {
        -                      "anyOf": [
        -                        {
        -                          "type": "string"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "description": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "quantity": {
        -                      "minimum": 0,
        -                      "type": "number"
        -                    },
        -                    "rate": {
        -                      "anyOf": [
        -                        {
        -                          "type": "number"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "unit": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "work_section": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    }
        -                  },
        -                  "required": [
        -                    "work_section",
        -                    "description",
        -                    "quantity",
        -                    "unit",
        -                    "attribution"
        -                  ],
        -                  "type": "object"
        -                },
        -                "type": "array"
        -              },
        -              "drawing": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": false,
        -                    "description": "Schema § 1.6a — inline server-rendered SVG preview of the geometry.\n\nThe MCP mirror of the web ``/compute`` response's ``drawing`` field\n(``api.schemas.compute.DrawingRef``): the same on-screen dimensioned\ndrawing both tiers see in the workspace, surfaced on the MCP compute\nresponse so a chat client can render it inline (60th-fire item C). This\nis the on-screen preview — present on BOTH tiers per the free/paid\nboundary; the downloadable CAD artefacts (DXF / dimensioned PDF) remain\nthe paid differentiator via the export tools.\n\nDefined here rather than importing ``DrawingRef`` because the web\n``schemas`` package imports back into this module (``schemas.render``),\nso reusing it would create an import cycle — the MCP wire contract keeps\nits own copy, the same pattern as ``BoQRow`` / ``DrawingReference``.",
        -                    "properties": {
        -                      "entity_count": {
        -                        "minimum": 0,
        -                        "type": "integer"
        -                      },
        -                      "svg_b64": {
        -                        "minLength": 1,
        -                        "type": "string"
        -                      },
        -                      "unit_of_drawing": {
        -                        "const": "m",
        -                        "default": "m",
        -                        "type": "string"
        -                      },
        -                      "viewbox_height": {
        -                        "exclusiveMinimum": 0,
        -                        "type": "number"
        -                      },
        -                      "viewbox_width": {
        -                        "exclusiveMinimum": 0,
        -                        "type": "number"
        -                      },
        -                      "viewbox_x": {
        -                        "type": "number"
        -                      },
        -                      "viewbox_y": {
        -                        "type": "number"
        -                      }
        -                    },
        -                    "required": [
        -                      "svg_b64",
        -                      "viewbox_x",
        -                      "viewbox_y",
        -                      "viewbox_width",
        -                      "viewbox_height",
        -                      "entity_count"
        -                    ],
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "drawings": {
        -                "anyOf": [
        -                  {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.6 — paid-tier drawing artefact pointer.\n\n`url` is an R2-signed URL; expiry is carried in `_meta.deliverables.expires_at`\non the envelope (not duplicated here). `layers` is DXF-only; PDF/SVG\ncallers omit it.",
        -                      "properties": {
        -                        "drawing_type": {
        -                          "enum": [
        -                            "section",
        -                            "plan",
        -                            "elevation",
        -                            "isometric",
        -                            "detail"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "format": {
        -                          "enum": [
        -                            "DXF",
        -                            "PDF",
        -                            "SVG"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "layers": {
        -                          "anyOf": [
        -                            {
        -                              "items": {
        -                                "type": "string"
        -                              },
        -                              "type": "array"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ],
        -                          "default": null
        -                        },
        -                        "scale": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "sheet_size": {
        -                          "enum": [
        -                            "A1",
        -                            "A2",
        -                            "A3",
        -                            "A4"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "url": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "drawing_type",
        -                        "format",
        -                        "url",
        -                        "sheet_size",
        -                        "scale"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "parameters_used": {
        -                "additionalProperties": false,
        -                "description": "Schema § 1.2 — the parameter snapshot the engine actually used.\n\nSplits user-supplied values from engine defaults so customers can see\nwhich numbers came from them and which the engine filled in. Every\ndefaulted parameter SHOULD have a corresponding entry in `assumptions`\n— the bridge layer enforces this when wrapping engine output.",
        -                "properties": {
        -                  "assumptions": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "engine_defaults": {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  "user_supplied": {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  }
        -                },
        -                "type": "object"
        -              },
        -              "standard": {
        -                "enum": [
        -                  "CESMM4",
        -                  "NRM2",
        -                  "SMM7",
        -                  "MMHW"
        -                ],
        -                "type": "string"
        -              },
        -              "text_summary": {
        -                "maxLength": 2000,
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "totals_summary": {
        -                "additionalProperties": false,
        -                "description": "Schema § 1.4 — totals_summary as a typed wrapper around the free-form dict.\n\nWire shape is a flat object (`{\"concrete_m3\": {...}, \"rebar_t\": {...}}`).\nWe model it as `RootModel`-equivalent via `model_config(extra=\"allow\")`\n+ a single `__root__`-style `entries` dict. Pydantic v2 recommends\n`RootModel` for free-form roots; using a wrapper class keeps the import\nsurface uniform with the rest of this module.",
        -                "properties": {
        -                  "entries": {
        -                    "additionalProperties": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.4 — single material/work-class total entry.",
        -                      "properties": {
        -                        "quantity": {
        -                          "minimum": 0,
        -                          "type": "number"
        -                        },
        -                        "unit": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "quantity",
        -                        "unit"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "object"
        -                  }
        -                },
        -                "type": "object"
        -              },
        -              "warnings": {
        -                "items": {
        -                  "additionalProperties": false,
        -                  "description": "Schema § 1.8 — a non-fatal geometry advisory (56th-fire T2).\n\nThe wire projection of the engine's `core.GeometryWarning`. Advisory only:\na warning NEVER changes a measured quantity — it flags geometry that is\nvalid but likely a mistake (e.g. a stale dependent-height default). Present\non BOTH tiers — a correctness/safety signal, not a paid feature.",
        -                  "properties": {
        -                    "affected_params": {
        -                      "items": {
        -                        "type": "string"
        -                      },
        -                      "type": "array"
        -                    },
        -                    "code": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "detail": {
        -                      "additionalProperties": {
        -                        "type": "number"
        -                      },
        -                      "type": "object"
        -                    },
        -                    "message": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "severity": {
        -                      "enum": [
        -                        "info",
        -                        "advisory",
        -                        "caution"
        -                      ],
        -                      "type": "string"
        -                    }
        -                  },
        -                  "required": [
        -                    "code",
        -                    "severity",
        -                    "message"
        -                  ],
        -                  "type": "object"
        -                },
        -                "type": "array"
        -              }
        -            },
        -            "required": [
        -              "assembly_slug",
        -              "standard",
        -              "parameters_used",
        -              "boq_rows",
        -              "totals_summary",
        -              "text_summary"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      },
        -      "error": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        -            "properties": {
        -              "code": {
        -                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        -                "enum": [
        -                  "RATE_LIMIT_EXCEEDED",
        -                  "TIER_INSUFFICIENT",
        -                  "INVALID_INPUT",
        -                  "SCHEMA_VERSION_MISMATCH",
        -                  "SCHEMA_INVARIANT_VIOLATION",
        -                  "UPSTREAM_TIMEOUT",
        -                  "BACKEND_FAILURE",
        -                  "IP_BLOCKED",
        -                  "RESOURCE_NOT_FOUND",
        -                  "RENDER_FAILURE",
        -                  "OCR_LOW_CONFIDENCE",
        -                  "MANUAL_REVIEW_REQUIRED",
        -                  "ACCEPTANCE_REQUIRED",
        -                  "INVALID_TOKEN"
        -                ],
        -                "type": "string"
        -              },
        -              "details": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "message": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "recoverable": {
        -                "type": "boolean"
        -              },
        -              "retry_after_seconds": {
        -                "anyOf": [
        -                  {
        -                    "minimum": 0,
        -                    "type": "integer"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              }
        -            },
        -            "required": [
        -              "code",
        -              "message",
        -              "recoverable"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      }
        -    },
        -    "required": [
        -      "_meta"
        -    ],
        -    "type": "object"
        -  },
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "_meta": {
        -        "additionalProperties": false,
        -        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        -        "properties": {
        -          "deliverables": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        -                "properties": {
        -                  "docx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "dxf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "expires_at": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  },
        -                  "pdf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "xlsx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "expires_at"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "document_id": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "issued_at": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "rate_limit_remaining": {
        -            "anyOf": [
        -              {
        -                "minimum": 0,
        -                "type": "integer"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "request_id": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "schema_version": {
        -            "const": "1.0.0",
        -            "default": "1.0.0",
        -            "type": "string"
        -          },
        -          "scope_boundary": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        -                "properties": {
        -                  "not_in_scope": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "produced": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "recommended_companions": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "type": "string"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "produced",
        -                  "not_in_scope"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tier": {
        -            "enum": [
        -              "free",
        -              "paid"
        -            ],
        -            "type": "string"
        -          },
        -          "tier_upgrade": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        -                "properties": {
        -                  "available_tiers": {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        -                      "properties": {
        -                        "billing": {
        -                          "enum": [
        -                            "one_off",
        -                            "monthly",
        -                            "annual"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "currency": {
        -                          "enum": [
        -                            "GBP",
        -                            "SGD",
        -                            "EUR",
        -                            "USD",
        -                            "CAD",
        -                            "AUD",
        -                            "NZD",
        -                            "MYR"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "display_name": {
        -                          "type": "string"
        -                        },
        -                        "price_local": {
        -                          "type": "number"
        -                        },
        -                        "tier_slug": {
        -                          "enum": [
        -                            "7_day_pass",
        -                            "solo",
        -                            "studio",
        -                            "practice"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "unlock_summary": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "tier_slug",
        -                        "display_name",
        -                        "price_local",
        -                        "currency",
        -                        "billing",
        -                        "unlock_summary"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "current_tier": {
        -                    "const": "free",
        -                    "default": "free",
        -                    "type": "string"
        -                  },
        -                  "pass_credit": {
        -                    "anyOf": [
        -                      {
        -                        "additionalProperties": false,
        -                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        -                        "properties": {
        -                          "amount_local": {
        -                            "type": "number"
        -                          },
        -                          "applies_to": {
        -                            "const": "solo_first_month",
        -                            "default": "solo_first_month",
        -                            "type": "string"
        -                          },
        -                          "currency": {
        -                            "type": "string"
        -                          },
        -                          "redeemable_until": {
        -                            "type": "string"
        -                          }
        -                        },
        -                        "required": [
        -                          "amount_local",
        -                          "currency",
        -                          "redeemable_until"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "pricing_url": {
        -                    "default": "https://civilquants.com/pricing",
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "available_tiers"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tos_url": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "upgrade_hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "warranty_disclaimer": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          }
        -        },
        -        "required": [
        -          "request_id",
        -          "issued_at",
        -          "tier"
        -        ],
        -        "type": "object"
        -      },
        -      "data": {
        -        "default": null,
        -        "title": "Data"
        -      },
        -      "error": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        -            "properties": {
        -              "code": {
        -                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        -                "enum": [
        -                  "RATE_LIMIT_EXCEEDED",
        -                  "TIER_INSUFFICIENT",
        -                  "INVALID_INPUT",
        -                  "SCHEMA_VERSION_MISMATCH",
        -                  "SCHEMA_INVARIANT_VIOLATION",
        -                  "UPSTREAM_TIMEOUT",
        -                  "BACKEND_FAILURE",
        -                  "IP_BLOCKED",
        -                  "RESOURCE_NOT_FOUND",
        -                  "RENDER_FAILURE",
        -                  "OCR_LOW_CONFIDENCE",
        -                  "MANUAL_REVIEW_REQUIRED",
        -                  "ACCEPTANCE_REQUIRED",
        -                  "INVALID_TOKEN"
        -                ],
        -                "type": "string"
        -              },
        -              "details": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "message": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "recoverable": {
        -                "type": "boolean"
        -              },
        -              "retry_after_seconds": {
        -                "anyOf": [
        -                  {
        -                    "minimum": 0,
        -                    "type": "integer"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              }
        -            },
        -            "required": [
        -              "code",
        -              "message",
        -              "recoverable"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      }
        -    },
        -    "required": [
        -      "_meta"
        -    ],
        -    "type": "object"
        -  }
        -]New value: +[
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "_meta": {
        +        "additionalProperties": false,
        +        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        +        "properties": {
        +          "deliverables": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        +                "properties": {
        +                  "docx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "dxf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "expires_at": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  },
        +                  "pdf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "xlsx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "expires_at"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "document_id": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "issued_at": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "output_mode": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Surfaces what a trimmed ``output_mode`` withheld from ``data``.\n\nA trimmed mode (``summary`` / ``boq`` / ``boq_with_backup``) withholds\nalready-computed fields to keep the chat payload small. The withheld value\nreads to a client agent as \"capability missing\" (the box-culvert \"geometry\nbuilder isn't firing\" scare) rather than \"pared for size\": ``drawing`` and\n``audit_trail`` appear as ``null``, ``boq_rows`` as an empty list ``[]``\n(its type forbids ``null``) — both indistinguishable from a genuine absent\nresult. This names the withheld fields and the exact mode that brings each\nback, so the value is unambiguous. Absent on the default ``full_json`` mode\n— nothing is withheld, nothing to point at.",
        +                "properties": {
        +                  "mode": {
        +                    "enum": [
        +                      "summary",
        +                      "boq",
        +                      "boq_with_backup"
        +                    ],
        +                    "type": "string"
        +                  },
        +                  "omitted_fields": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "minItems": 1,
        +                    "type": "array"
        +                  },
        +                  "retrieve_with": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "mode",
        +                  "omitted_fields",
        +                  "retrieve_with"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "rate_limit_remaining": {
        +            "anyOf": [
        +              {
        +                "minimum": 0,
        +                "type": "integer"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "request_id": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "schema_version": {
        +            "const": "1.0.0",
        +            "default": "1.0.0",
        +            "type": "string"
        +          },
        +          "scope_boundary": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        +                "properties": {
        +                  "not_in_scope": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "produced": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "recommended_companions": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "type": "string"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "produced",
        +                  "not_in_scope"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tier": {
        +            "enum": [
        +              "free",
        +              "paid"
        +            ],
        +            "type": "string"
        +          },
        +          "tier_upgrade": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        +                "properties": {
        +                  "available_tiers": {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        +                      "properties": {
        +                        "billing": {
        +                          "enum": [
        +                            "one_off",
        +                            "monthly",
        +                            "annual"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "currency": {
        +                          "enum": [
        +                            "GBP",
        +                            "SGD",
        +                            "EUR",
        +                            "USD",
        +                            "CAD",
        +                            "AUD",
        +                            "NZD",
        +                            "MYR"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "display_name": {
        +                          "type": "string"
        +                        },
        +                        "price_local": {
        +                          "type": "number"
        +                        },
        +                        "tier_slug": {
        +                          "enum": [
        +                            "7_day_pass",
        +                            "solo",
        +                            "studio",
        +                            "practice"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "unlock_summary": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "tier_slug",
        +                        "display_name",
        +                        "price_local",
        +                        "currency",
        +                        "billing",
        +                        "unlock_summary"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "current_tier": {
        +                    "const": "free",
        +                    "default": "free",
        +                    "type": "string"
        +                  },
        +                  "pass_credit": {
        +                    "anyOf": [
        +                      {
        +                        "additionalProperties": false,
        +                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        +                        "properties": {
        +                          "amount_local": {
        +                            "type": "number"
        +                          },
        +                          "applies_to": {
        +                            "const": "solo_first_month",
        +                            "default": "solo_first_month",
        +                            "type": "string"
        +                          },
        +                          "currency": {
        +                            "type": "string"
        +                          },
        +                          "redeemable_until": {
        +                            "type": "string"
        +                          }
        +                        },
        +                        "required": [
        +                          "amount_local",
        +                          "currency",
        +                          "redeemable_until"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "pricing_url": {
        +                    "default": "https://civilquants.com/pricing",
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "available_tiers"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tos_url": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "upgrade_hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "warranty_disclaimer": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          }
        +        },
        +        "required": [
        +          "request_id",
        +          "issued_at",
        +          "tier"
        +        ],
        +        "type": "object"
        +      },
        +      "data": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Schema § 1.1 — the typed payload returned inside `MCPResponse[ComputeResult]`.\n\nFree-tier responses omit `drawings` (the downloadable CAD artefact\npointers — the paid differentiator); the bridge enforces this. The\n`audit_trail` and the inline `drawing` preview are present on BOTH tiers\n(V1 ALIGN / 60th-fire D + C). `text_summary` is bounded to 2000 chars —\nkeeps the LLM-facing summary token-cheap and forces longer narrative into\nBoQ row descriptions where it belongs. `warnings` is the non-fatal\ngeometry advisory list (both tiers).",
        +            "properties": {
        +              "assembly_slug": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "audit_trail": {
        +                "anyOf": [
        +                  {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.7 — paid-tier audit-trail entry.\n\nOne entry per BoQ row; `boq_row_index` ties to the row position in\n`ComputeResult.boq_rows`. `derivation` is the human-readable formula\nwalk-through; `formula` is the optional formal expression.",
        +                      "properties": {
        +                        "boq_row_index": {
        +                          "minimum": 0,
        +                          "type": "integer"
        +                        },
        +                        "derivation": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "formula": {
        +                          "anyOf": [
        +                            {
        +                              "type": "string"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ],
        +                          "default": null
        +                        },
        +                        "id": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "parameters_referenced": {
        +                          "items": {
        +                            "type": "string"
        +                          },
        +                          "type": "array"
        +                        }
        +                      },
        +                      "required": [
        +                        "id",
        +                        "boq_row_index",
        +                        "derivation"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "boq_rows": {
        +                "items": {
        +                  "additionalProperties": false,
        +                  "description": "Schema § 1.3 — a single bill row in the requested standard's format.\n\n`description` is the non-verbatim functional description per spec § 13.9 /\n§ 15 invariant — NEVER reproduces a standard's verbatim clause text.\n`rate` / `amount` ship null because rates are commodity data the customer\nowns; the engine's job is the measurement, not the pricing.",
        +                  "properties": {
        +                    "amount": {
        +                      "anyOf": [
        +                        {
        +                          "type": "number"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "attribution": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "audit_id": {
        +                      "anyOf": [
        +                        {
        +                          "type": "string"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "description": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "quantity": {
        +                      "minimum": 0,
        +                      "type": "number"
        +                    },
        +                    "rate": {
        +                      "anyOf": [
        +                        {
        +                          "type": "number"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "unit": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "work_section": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    }
        +                  },
        +                  "required": [
        +                    "work_section",
        +                    "description",
        +                    "quantity",
        +                    "unit",
        +                    "attribution"
        +                  ],
        +                  "type": "object"
        +                },
        +                "type": "array"
        +              },
        +              "drawing": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": false,
        +                    "description": "Schema § 1.6a — inline server-rendered SVG preview of the geometry.\n\nThe MCP mirror of the web ``/compute`` response's ``drawing`` field\n(``api.schemas.compute.DrawingRef``): the same on-screen dimensioned\ndrawing both tiers see in the workspace, surfaced on the MCP compute\nresponse so a chat client can render it inline (60th-fire item C). This\nis the on-screen preview — present on BOTH tiers per the free/paid\nboundary; the downloadable CAD artefacts (DXF / dimensioned PDF) remain\nthe paid differentiator via the export tools.\n\nDefined here rather than importing ``DrawingRef`` because the web\n``schemas`` package imports back into this module (``schemas.render``),\nso reusing it would create an import cycle — the MCP wire contract keeps\nits own copy, the same pattern as ``BoQRow`` / ``DrawingReference``.",
        +                    "properties": {
        +                      "entity_count": {
        +                        "minimum": 0,
        +                        "type": "integer"
        +                      },
        +                      "svg_b64": {
        +                        "minLength": 1,
        +                        "type": "string"
        +                      },
        +                      "unit_of_drawing": {
        +                        "const": "m",
        +                        "default": "m",
        +                        "type": "string"
        +                      },
        +                      "viewbox_height": {
        +                        "exclusiveMinimum": 0,
        +                        "type": "number"
        +                      },
        +                      "viewbox_width": {
        +                        "exclusiveMinimum": 0,
        +                        "type": "number"
        +                      },
        +                      "viewbox_x": {
        +                        "type": "number"
        +                      },
        +                      "viewbox_y": {
        +                        "type": "number"
        +                      }
        +                    },
        +                    "required": [
        +                      "svg_b64",
        +                      "viewbox_x",
        +                      "viewbox_y",
        +                      "viewbox_width",
        +                      "viewbox_height",
        +                      "entity_count"
        +                    ],
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "drawings": {
        +                "anyOf": [
        +                  {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.6 — paid-tier drawing artefact pointer.\n\n`url` is an R2-signed URL; expiry is carried in `_meta.deliverables.expires_at`\non the envelope (not duplicated here). `layers` is DXF-only; PDF/SVG\ncallers omit it.",
        +                      "properties": {
        +                        "drawing_type": {
        +                          "enum": [
        +                            "section",
        +                            "plan",
        +                            "elevation",
        +                            "isometric",
        +                            "detail"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "format": {
        +                          "enum": [
        +                            "DXF",
        +                            "PDF",
        +                            "SVG"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "layers": {
        +                          "anyOf": [
        +                            {
        +                              "items": {
        +                                "type": "string"
        +                              },
        +                              "type": "array"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ],
        +                          "default": null
        +                        },
        +                        "scale": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "sheet_size": {
        +                          "enum": [
        +                            "A1",
        +                            "A2",
        +                            "A3",
        +                            "A4"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "url": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "drawing_type",
        +                        "format",
        +                        "url",
        +                        "sheet_size",
        +                        "scale"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "parameters_used": {
        +                "additionalProperties": false,
        +                "description": "Schema § 1.2 — the parameter snapshot the engine actually used.\n\nSplits user-supplied values from engine defaults so customers can see\nwhich numbers came from them and which the engine filled in. Every\ndefaulted parameter SHOULD have a corresponding entry in `assumptions`\n— the bridge layer enforces this when wrapping engine output.",
        +                "properties": {
        +                  "assumptions": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "engine_defaults": {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  "user_supplied": {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  }
        +                },
        +                "type": "object"
        +              },
        +              "standard": {
        +                "enum": [
        +                  "CESMM4",
        +                  "NRM2",
        +                  "SMM7",
        +                  "MMHW"
        +                ],
        +                "type": "string"
        +              },
        +              "text_summary": {
        +                "maxLength": 2000,
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "totals_summary": {
        +                "additionalProperties": false,
        +                "description": "Schema § 1.4 — totals_summary as a typed wrapper around the free-form dict.\n\nWire shape is a flat object (`{\"concrete_m3\": {...}, \"rebar_t\": {...}}`).\nWe model it as `RootModel`-equivalent via `model_config(extra=\"allow\")`\n+ a single `__root__`-style `entries` dict. Pydantic v2 recommends\n`RootModel` for free-form roots; using a wrapper class keeps the import\nsurface uniform with the rest of this module.",
        +                "properties": {
        +                  "entries": {
        +                    "additionalProperties": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.4 — single material/work-class total entry.",
        +                      "properties": {
        +                        "quantity": {
        +                          "minimum": 0,
        +                          "type": "number"
        +                        },
        +                        "unit": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "quantity",
        +                        "unit"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "object"
        +                  }
        +                },
        +                "type": "object"
        +              },
        +              "warnings": {
        +                "items": {
        +                  "additionalProperties": false,
        +                  "description": "Schema § 1.8 — a non-fatal geometry advisory (56th-fire T2).\n\nThe wire projection of the engine's `core.GeometryWarning`. Advisory only:\na warning NEVER changes a measured quantity — it flags geometry that is\nvalid but likely a mistake (e.g. a stale dependent-height default). Present\non BOTH tiers — a correctness/safety signal, not a paid feature.",
        +                  "properties": {
        +                    "affected_params": {
        +                      "items": {
        +                        "type": "string"
        +                      },
        +                      "type": "array"
        +                    },
        +                    "code": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "detail": {
        +                      "additionalProperties": {
        +                        "type": "number"
        +                      },
        +                      "type": "object"
        +                    },
        +                    "message": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "severity": {
        +                      "enum": [
        +                        "info",
        +                        "advisory",
        +                        "caution"
        +                      ],
        +                      "type": "string"
        +                    }
        +                  },
        +                  "required": [
        +                    "code",
        +                    "severity",
        +                    "message"
        +                  ],
        +                  "type": "object"
        +                },
        +                "type": "array"
        +              }
        +            },
        +            "required": [
        +              "assembly_slug",
        +              "standard",
        +              "parameters_used",
        +              "boq_rows",
        +              "totals_summary",
        +              "text_summary"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      },
        +      "error": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        +            "properties": {
        +              "code": {
        +                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        +                "enum": [
        +                  "RATE_LIMIT_EXCEEDED",
        +                  "TIER_INSUFFICIENT",
        +                  "INVALID_INPUT",
        +                  "SCHEMA_VERSION_MISMATCH",
        +                  "SCHEMA_INVARIANT_VIOLATION",
        +                  "UPSTREAM_TIMEOUT",
        +                  "BACKEND_FAILURE",
        +                  "IP_BLOCKED",
        +                  "RESOURCE_NOT_FOUND",
        +                  "RENDER_FAILURE",
        +                  "OCR_LOW_CONFIDENCE",
        +                  "MANUAL_REVIEW_REQUIRED",
        +                  "ACCEPTANCE_REQUIRED",
        +                  "INVALID_TOKEN"
        +                ],
        +                "type": "string"
        +              },
        +              "details": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "message": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "recoverable": {
        +                "type": "boolean"
        +              },
        +              "retry_after_seconds": {
        +                "anyOf": [
        +                  {
        +                    "minimum": 0,
        +                    "type": "integer"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              }
        +            },
        +            "required": [
        +              "code",
        +              "message",
        +              "recoverable"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      }
        +    },
        +    "required": [
        +      "_meta"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "_meta": {
        +        "additionalProperties": false,
        +        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        +        "properties": {
        +          "deliverables": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        +                "properties": {
        +                  "docx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "dxf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "expires_at": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  },
        +                  "pdf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "xlsx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "expires_at"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "document_id": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "issued_at": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "output_mode": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Surfaces what a trimmed ``output_mode`` withheld from ``data``.\n\nA trimmed mode (``summary`` / ``boq`` / ``boq_with_backup``) withholds\nalready-computed fields to keep the chat payload small. The withheld value\nreads to a client agent as \"capability missing\" (the box-culvert \"geometry\nbuilder isn't firing\" scare) rather than \"pared for size\": ``drawing`` and\n``audit_trail`` appear as ``null``, ``boq_rows`` as an empty list ``[]``\n(its type forbids ``null``) — both indistinguishable from a genuine absent\nresult. This names the withheld fields and the exact mode that brings each\nback, so the value is unambiguous. Absent on the default ``full_json`` mode\n— nothing is withheld, nothing to point at.",
        +                "properties": {
        +                  "mode": {
        +                    "enum": [
        +                      "summary",
        +                      "boq",
        +                      "boq_with_backup"
        +                    ],
        +                    "type": "string"
        +                  },
        +                  "omitted_fields": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "minItems": 1,
        +                    "type": "array"
        +                  },
        +                  "retrieve_with": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "mode",
        +                  "omitted_fields",
        +                  "retrieve_with"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "rate_limit_remaining": {
        +            "anyOf": [
        +              {
        +                "minimum": 0,
        +                "type": "integer"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "request_id": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "schema_version": {
        +            "const": "1.0.0",
        +            "default": "1.0.0",
        +            "type": "string"
        +          },
        +          "scope_boundary": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        +                "properties": {
        +                  "not_in_scope": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "produced": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "recommended_companions": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "type": "string"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "produced",
        +                  "not_in_scope"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tier": {
        +            "enum": [
        +              "free",
        +              "paid"
        +            ],
        +            "type": "string"
        +          },
        +          "tier_upgrade": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        +                "properties": {
        +                  "available_tiers": {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        +                      "properties": {
        +                        "billing": {
        +                          "enum": [
        +                            "one_off",
        +                            "monthly",
        +                            "annual"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "currency": {
        +                          "enum": [
        +                            "GBP",
        +                            "SGD",
        +                            "EUR",
        +                            "USD",
        +                            "CAD",
        +                            "AUD",
        +                            "NZD",
        +                            "MYR"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "display_name": {
        +                          "type": "string"
        +                        },
        +                        "price_local": {
        +                          "type": "number"
        +                        },
        +                        "tier_slug": {
        +                          "enum": [
        +                            "7_day_pass",
        +                            "solo",
        +                            "studio",
        +                            "practice"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "unlock_summary": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "tier_slug",
        +                        "display_name",
        +                        "price_local",
        +                        "currency",
        +                        "billing",
        +                        "unlock_summary"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "current_tier": {
        +                    "const": "free",
        +                    "default": "free",
        +                    "type": "string"
        +                  },
        +                  "pass_credit": {
        +                    "anyOf": [
        +                      {
        +                        "additionalProperties": false,
        +                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        +                        "properties": {
        +                          "amount_local": {
        +                            "type": "number"
        +                          },
        +                          "applies_to": {
        +                            "const": "solo_first_month",
        +                            "default": "solo_first_month",
        +                            "type": "string"
        +                          },
        +                          "currency": {
        +                            "type": "string"
        +                          },
        +                          "redeemable_until": {
        +                            "type": "string"
        +                          }
        +                        },
        +                        "required": [
        +                          "amount_local",
        +                          "currency",
        +                          "redeemable_until"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "pricing_url": {
        +                    "default": "https://civilquants.com/pricing",
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "available_tiers"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tos_url": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "upgrade_hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "warranty_disclaimer": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          }
        +        },
        +        "required": [
        +          "request_id",
        +          "issued_at",
        +          "tier"
        +        ],
        +        "type": "object"
        +      },
        +      "data": {
        +        "default": null,
        +        "title": "Data"
        +      },
        +      "error": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        +            "properties": {
        +              "code": {
        +                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        +                "enum": [
        +                  "RATE_LIMIT_EXCEEDED",
        +                  "TIER_INSUFFICIENT",
        +                  "INVALID_INPUT",
        +                  "SCHEMA_VERSION_MISMATCH",
        +                  "SCHEMA_INVARIANT_VIOLATION",
        +                  "UPSTREAM_TIMEOUT",
        +                  "BACKEND_FAILURE",
        +                  "IP_BLOCKED",
        +                  "RESOURCE_NOT_FOUND",
        +                  "RENDER_FAILURE",
        +                  "OCR_LOW_CONFIDENCE",
        +                  "MANUAL_REVIEW_REQUIRED",
        +                  "ACCEPTANCE_REQUIRED",
        +                  "INVALID_TOKEN"
        +                ],
        +                "type": "string"
        +              },
        +              "details": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "message": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "recoverable": {
        +                "type": "boolean"
        +              },
        +              "retry_after_seconds": {
        +                "anyOf": [
        +                  {
        +                    "minimum": 0,
        +                    "type": "integer"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              }
        +            },
        +            "required": [
        +              "code",
        +              "message",
        +              "recoverable"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      }
        +    },
        +    "required": [
        +      "_meta"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedcompute_traffic_sign1 field changed
      • changedOutput schema / properties / result / anyOf
        Previous value: -[
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "_meta": {
        -        "additionalProperties": false,
        -        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        -        "properties": {
        -          "deliverables": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        -                "properties": {
        -                  "docx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "dxf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "expires_at": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  },
        -                  "pdf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "xlsx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "expires_at"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "document_id": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "issued_at": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "rate_limit_remaining": {
        -            "anyOf": [
        -              {
        -                "minimum": 0,
        -                "type": "integer"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "request_id": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "schema_version": {
        -            "const": "1.0.0",
        -            "default": "1.0.0",
        -            "type": "string"
        -          },
        -          "scope_boundary": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        -                "properties": {
        -                  "not_in_scope": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "produced": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "recommended_companions": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "type": "string"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "produced",
        -                  "not_in_scope"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tier": {
        -            "enum": [
        -              "free",
        -              "paid"
        -            ],
        -            "type": "string"
        -          },
        -          "tier_upgrade": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        -                "properties": {
        -                  "available_tiers": {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        -                      "properties": {
        -                        "billing": {
        -                          "enum": [
        -                            "one_off",
        -                            "monthly",
        -                            "annual"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "currency": {
        -                          "enum": [
        -                            "GBP",
        -                            "SGD",
        -                            "EUR",
        -                            "USD",
        -                            "CAD",
        -                            "AUD",
        -                            "NZD",
        -                            "MYR"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "display_name": {
        -                          "type": "string"
        -                        },
        -                        "price_local": {
        -                          "type": "number"
        -                        },
        -                        "tier_slug": {
        -                          "enum": [
        -                            "7_day_pass",
        -                            "solo",
        -                            "studio",
        -                            "practice"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "unlock_summary": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "tier_slug",
        -                        "display_name",
        -                        "price_local",
        -                        "currency",
        -                        "billing",
        -                        "unlock_summary"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "current_tier": {
        -                    "const": "free",
        -                    "default": "free",
        -                    "type": "string"
        -                  },
        -                  "pass_credit": {
        -                    "anyOf": [
        -                      {
        -                        "additionalProperties": false,
        -                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        -                        "properties": {
        -                          "amount_local": {
        -                            "type": "number"
        -                          },
        -                          "applies_to": {
        -                            "const": "solo_first_month",
        -                            "default": "solo_first_month",
        -                            "type": "string"
        -                          },
        -                          "currency": {
        -                            "type": "string"
        -                          },
        -                          "redeemable_until": {
        -                            "type": "string"
        -                          }
        -                        },
        -                        "required": [
        -                          "amount_local",
        -                          "currency",
        -                          "redeemable_until"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "pricing_url": {
        -                    "default": "https://civilquants.com/pricing",
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "available_tiers"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tos_url": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "upgrade_hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "warranty_disclaimer": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          }
        -        },
        -        "required": [
        -          "request_id",
        -          "issued_at",
        -          "tier"
        -        ],
        -        "type": "object"
        -      },
        -      "data": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Schema § 1.1 — the typed payload returned inside `MCPResponse[ComputeResult]`.\n\nFree-tier responses omit `drawings` (the downloadable CAD artefact\npointers — the paid differentiator); the bridge enforces this. The\n`audit_trail` and the inline `drawing` preview are present on BOTH tiers\n(V1 ALIGN / 60th-fire D + C). `text_summary` is bounded to 2000 chars —\nkeeps the LLM-facing summary token-cheap and forces longer narrative into\nBoQ row descriptions where it belongs. `warnings` is the non-fatal\ngeometry advisory list (both tiers).",
        -            "properties": {
        -              "assembly_slug": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "audit_trail": {
        -                "anyOf": [
        -                  {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.7 — paid-tier audit-trail entry.\n\nOne entry per BoQ row; `boq_row_index` ties to the row position in\n`ComputeResult.boq_rows`. `derivation` is the human-readable formula\nwalk-through; `formula` is the optional formal expression.",
        -                      "properties": {
        -                        "boq_row_index": {
        -                          "minimum": 0,
        -                          "type": "integer"
        -                        },
        -                        "derivation": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "formula": {
        -                          "anyOf": [
        -                            {
        -                              "type": "string"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ],
        -                          "default": null
        -                        },
        -                        "id": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "parameters_referenced": {
        -                          "items": {
        -                            "type": "string"
        -                          },
        -                          "type": "array"
        -                        }
        -                      },
        -                      "required": [
        -                        "id",
        -                        "boq_row_index",
        -                        "derivation"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "boq_rows": {
        -                "items": {
        -                  "additionalProperties": false,
        -                  "description": "Schema § 1.3 — a single bill row in the requested standard's format.\n\n`description` is the non-verbatim functional description per spec § 13.9 /\n§ 15 invariant — NEVER reproduces a standard's verbatim clause text.\n`rate` / `amount` ship null because rates are commodity data the customer\nowns; the engine's job is the measurement, not the pricing.",
        -                  "properties": {
        -                    "amount": {
        -                      "anyOf": [
        -                        {
        -                          "type": "number"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "attribution": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "audit_id": {
        -                      "anyOf": [
        -                        {
        -                          "type": "string"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "description": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "quantity": {
        -                      "minimum": 0,
        -                      "type": "number"
        -                    },
        -                    "rate": {
        -                      "anyOf": [
        -                        {
        -                          "type": "number"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "unit": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "work_section": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    }
        -                  },
        -                  "required": [
        -                    "work_section",
        -                    "description",
        -                    "quantity",
        -                    "unit",
        -                    "attribution"
        -                  ],
        -                  "type": "object"
        -                },
        -                "type": "array"
        -              },
        -              "drawing": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": false,
        -                    "description": "Schema § 1.6a — inline server-rendered SVG preview of the geometry.\n\nThe MCP mirror of the web ``/compute`` response's ``drawing`` field\n(``api.schemas.compute.DrawingRef``): the same on-screen dimensioned\ndrawing both tiers see in the workspace, surfaced on the MCP compute\nresponse so a chat client can render it inline (60th-fire item C). This\nis the on-screen preview — present on BOTH tiers per the free/paid\nboundary; the downloadable CAD artefacts (DXF / dimensioned PDF) remain\nthe paid differentiator via the export tools.\n\nDefined here rather than importing ``DrawingRef`` because the web\n``schemas`` package imports back into this module (``schemas.render``),\nso reusing it would create an import cycle — the MCP wire contract keeps\nits own copy, the same pattern as ``BoQRow`` / ``DrawingReference``.",
        -                    "properties": {
        -                      "entity_count": {
        -                        "minimum": 0,
        -                        "type": "integer"
        -                      },
        -                      "svg_b64": {
        -                        "minLength": 1,
        -                        "type": "string"
        -                      },
        -                      "unit_of_drawing": {
        -                        "const": "m",
        -                        "default": "m",
        -                        "type": "string"
        -                      },
        -                      "viewbox_height": {
        -                        "exclusiveMinimum": 0,
        -                        "type": "number"
        -                      },
        -                      "viewbox_width": {
        -                        "exclusiveMinimum": 0,
        -                        "type": "number"
        -                      },
        -                      "viewbox_x": {
        -                        "type": "number"
        -                      },
        -                      "viewbox_y": {
        -                        "type": "number"
        -                      }
        -                    },
        -                    "required": [
        -                      "svg_b64",
        -                      "viewbox_x",
        -                      "viewbox_y",
        -                      "viewbox_width",
        -                      "viewbox_height",
        -                      "entity_count"
        -                    ],
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "drawings": {
        -                "anyOf": [
        -                  {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.6 — paid-tier drawing artefact pointer.\n\n`url` is an R2-signed URL; expiry is carried in `_meta.deliverables.expires_at`\non the envelope (not duplicated here). `layers` is DXF-only; PDF/SVG\ncallers omit it.",
        -                      "properties": {
        -                        "drawing_type": {
        -                          "enum": [
        -                            "section",
        -                            "plan",
        -                            "elevation",
        -                            "isometric",
        -                            "detail"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "format": {
        -                          "enum": [
        -                            "DXF",
        -                            "PDF",
        -                            "SVG"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "layers": {
        -                          "anyOf": [
        -                            {
        -                              "items": {
        -                                "type": "string"
        -                              },
        -                              "type": "array"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ],
        -                          "default": null
        -                        },
        -                        "scale": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "sheet_size": {
        -                          "enum": [
        -                            "A1",
        -                            "A2",
        -                            "A3",
        -                            "A4"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "url": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "drawing_type",
        -                        "format",
        -                        "url",
        -                        "sheet_size",
        -                        "scale"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "parameters_used": {
        -                "additionalProperties": false,
        -                "description": "Schema § 1.2 — the parameter snapshot the engine actually used.\n\nSplits user-supplied values from engine defaults so customers can see\nwhich numbers came from them and which the engine filled in. Every\ndefaulted parameter SHOULD have a corresponding entry in `assumptions`\n— the bridge layer enforces this when wrapping engine output.",
        -                "properties": {
        -                  "assumptions": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "engine_defaults": {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  "user_supplied": {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  }
        -                },
        -                "type": "object"
        -              },
        -              "standard": {
        -                "enum": [
        -                  "CESMM4",
        -                  "NRM2",
        -                  "SMM7",
        -                  "MMHW"
        -                ],
        -                "type": "string"
        -              },
        -              "text_summary": {
        -                "maxLength": 2000,
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "totals_summary": {
        -                "additionalProperties": false,
        -                "description": "Schema § 1.4 — totals_summary as a typed wrapper around the free-form dict.\n\nWire shape is a flat object (`{\"concrete_m3\": {...}, \"rebar_t\": {...}}`).\nWe model it as `RootModel`-equivalent via `model_config(extra=\"allow\")`\n+ a single `__root__`-style `entries` dict. Pydantic v2 recommends\n`RootModel` for free-form roots; using a wrapper class keeps the import\nsurface uniform with the rest of this module.",
        -                "properties": {
        -                  "entries": {
        -                    "additionalProperties": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.4 — single material/work-class total entry.",
        -                      "properties": {
        -                        "quantity": {
        -                          "minimum": 0,
        -                          "type": "number"
        -                        },
        -                        "unit": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "quantity",
        -                        "unit"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "object"
        -                  }
        -                },
        -                "type": "object"
        -              },
        -              "warnings": {
        -                "items": {
        -                  "additionalProperties": false,
        -                  "description": "Schema § 1.8 — a non-fatal geometry advisory (56th-fire T2).\n\nThe wire projection of the engine's `core.GeometryWarning`. Advisory only:\na warning NEVER changes a measured quantity — it flags geometry that is\nvalid but likely a mistake (e.g. a stale dependent-height default). Present\non BOTH tiers — a correctness/safety signal, not a paid feature.",
        -                  "properties": {
        -                    "affected_params": {
        -                      "items": {
        -                        "type": "string"
        -                      },
        -                      "type": "array"
        -                    },
        -                    "code": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "detail": {
        -                      "additionalProperties": {
        -                        "type": "number"
        -                      },
        -                      "type": "object"
        -                    },
        -                    "message": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "severity": {
        -                      "enum": [
        -                        "info",
        -                        "advisory",
        -                        "caution"
        -                      ],
        -                      "type": "string"
        -                    }
        -                  },
        -                  "required": [
        -                    "code",
        -                    "severity",
        -                    "message"
        -                  ],
        -                  "type": "object"
        -                },
        -                "type": "array"
        -              }
        -            },
        -            "required": [
        -              "assembly_slug",
        -              "standard",
        -              "parameters_used",
        -              "boq_rows",
        -              "totals_summary",
        -              "text_summary"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      },
        -      "error": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        -            "properties": {
        -              "code": {
        -                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        -                "enum": [
        -                  "RATE_LIMIT_EXCEEDED",
        -                  "TIER_INSUFFICIENT",
        -                  "INVALID_INPUT",
        -                  "SCHEMA_VERSION_MISMATCH",
        -                  "SCHEMA_INVARIANT_VIOLATION",
        -                  "UPSTREAM_TIMEOUT",
        -                  "BACKEND_FAILURE",
        -                  "IP_BLOCKED",
        -                  "RESOURCE_NOT_FOUND",
        -                  "RENDER_FAILURE",
        -                  "OCR_LOW_CONFIDENCE",
        -                  "MANUAL_REVIEW_REQUIRED",
        -                  "ACCEPTANCE_REQUIRED",
        -                  "INVALID_TOKEN"
        -                ],
        -                "type": "string"
        -              },
        -              "details": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "message": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "recoverable": {
        -                "type": "boolean"
        -              },
        -              "retry_after_seconds": {
        -                "anyOf": [
        -                  {
        -                    "minimum": 0,
        -                    "type": "integer"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              }
        -            },
        -            "required": [
        -              "code",
        -              "message",
        -              "recoverable"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      }
        -    },
        -    "required": [
        -      "_meta"
        -    ],
        -    "type": "object"
        -  },
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "_meta": {
        -        "additionalProperties": false,
        -        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        -        "properties": {
        -          "deliverables": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        -                "properties": {
        -                  "docx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "dxf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "expires_at": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  },
        -                  "pdf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "xlsx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "expires_at"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "document_id": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "issued_at": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "rate_limit_remaining": {
        -            "anyOf": [
        -              {
        -                "minimum": 0,
        -                "type": "integer"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "request_id": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "schema_version": {
        -            "const": "1.0.0",
        -            "default": "1.0.0",
        -            "type": "string"
        -          },
        -          "scope_boundary": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        -                "properties": {
        -                  "not_in_scope": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "produced": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "recommended_companions": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "type": "string"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "produced",
        -                  "not_in_scope"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tier": {
        -            "enum": [
        -              "free",
        -              "paid"
        -            ],
        -            "type": "string"
        -          },
        -          "tier_upgrade": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        -                "properties": {
        -                  "available_tiers": {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        -                      "properties": {
        -                        "billing": {
        -                          "enum": [
        -                            "one_off",
        -                            "monthly",
        -                            "annual"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "currency": {
        -                          "enum": [
        -                            "GBP",
        -                            "SGD",
        -                            "EUR",
        -                            "USD",
        -                            "CAD",
        -                            "AUD",
        -                            "NZD",
        -                            "MYR"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "display_name": {
        -                          "type": "string"
        -                        },
        -                        "price_local": {
        -                          "type": "number"
        -                        },
        -                        "tier_slug": {
        -                          "enum": [
        -                            "7_day_pass",
        -                            "solo",
        -                            "studio",
        -                            "practice"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "unlock_summary": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "tier_slug",
        -                        "display_name",
        -                        "price_local",
        -                        "currency",
        -                        "billing",
        -                        "unlock_summary"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "current_tier": {
        -                    "const": "free",
        -                    "default": "free",
        -                    "type": "string"
        -                  },
        -                  "pass_credit": {
        -                    "anyOf": [
        -                      {
        -                        "additionalProperties": false,
        -                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        -                        "properties": {
        -                          "amount_local": {
        -                            "type": "number"
        -                          },
        -                          "applies_to": {
        -                            "const": "solo_first_month",
        -                            "default": "solo_first_month",
        -                            "type": "string"
        -                          },
        -                          "currency": {
        -                            "type": "string"
        -                          },
        -                          "redeemable_until": {
        -                            "type": "string"
        -                          }
        -                        },
        -                        "required": [
        -                          "amount_local",
        -                          "currency",
        -                          "redeemable_until"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "pricing_url": {
        -                    "default": "https://civilquants.com/pricing",
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "available_tiers"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tos_url": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "upgrade_hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "warranty_disclaimer": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          }
        -        },
        -        "required": [
        -          "request_id",
        -          "issued_at",
        -          "tier"
        -        ],
        -        "type": "object"
        -      },
        -      "data": {
        -        "default": null,
        -        "title": "Data"
        -      },
        -      "error": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        -            "properties": {
        -              "code": {
        -                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        -                "enum": [
        -                  "RATE_LIMIT_EXCEEDED",
        -                  "TIER_INSUFFICIENT",
        -                  "INVALID_INPUT",
        -                  "SCHEMA_VERSION_MISMATCH",
        -                  "SCHEMA_INVARIANT_VIOLATION",
        -                  "UPSTREAM_TIMEOUT",
        -                  "BACKEND_FAILURE",
        -                  "IP_BLOCKED",
        -                  "RESOURCE_NOT_FOUND",
        -                  "RENDER_FAILURE",
        -                  "OCR_LOW_CONFIDENCE",
        -                  "MANUAL_REVIEW_REQUIRED",
        -                  "ACCEPTANCE_REQUIRED",
        -                  "INVALID_TOKEN"
        -                ],
        -                "type": "string"
        -              },
        -              "details": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "message": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "recoverable": {
        -                "type": "boolean"
        -              },
        -              "retry_after_seconds": {
        -                "anyOf": [
        -                  {
        -                    "minimum": 0,
        -                    "type": "integer"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              }
        -            },
        -            "required": [
        -              "code",
        -              "message",
        -              "recoverable"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      }
        -    },
        -    "required": [
        -      "_meta"
        -    ],
        -    "type": "object"
        -  }
        -]New value: +[
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "_meta": {
        +        "additionalProperties": false,
        +        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        +        "properties": {
        +          "deliverables": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        +                "properties": {
        +                  "docx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "dxf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "expires_at": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  },
        +                  "pdf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "xlsx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "expires_at"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "document_id": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "issued_at": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "output_mode": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Surfaces what a trimmed ``output_mode`` withheld from ``data``.\n\nA trimmed mode (``summary`` / ``boq`` / ``boq_with_backup``) withholds\nalready-computed fields to keep the chat payload small. The withheld value\nreads to a client agent as \"capability missing\" (the box-culvert \"geometry\nbuilder isn't firing\" scare) rather than \"pared for size\": ``drawing`` and\n``audit_trail`` appear as ``null``, ``boq_rows`` as an empty list ``[]``\n(its type forbids ``null``) — both indistinguishable from a genuine absent\nresult. This names the withheld fields and the exact mode that brings each\nback, so the value is unambiguous. Absent on the default ``full_json`` mode\n— nothing is withheld, nothing to point at.",
        +                "properties": {
        +                  "mode": {
        +                    "enum": [
        +                      "summary",
        +                      "boq",
        +                      "boq_with_backup"
        +                    ],
        +                    "type": "string"
        +                  },
        +                  "omitted_fields": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "minItems": 1,
        +                    "type": "array"
        +                  },
        +                  "retrieve_with": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "mode",
        +                  "omitted_fields",
        +                  "retrieve_with"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "rate_limit_remaining": {
        +            "anyOf": [
        +              {
        +                "minimum": 0,
        +                "type": "integer"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "request_id": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "schema_version": {
        +            "const": "1.0.0",
        +            "default": "1.0.0",
        +            "type": "string"
        +          },
        +          "scope_boundary": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        +                "properties": {
        +                  "not_in_scope": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "produced": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "recommended_companions": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "type": "string"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "produced",
        +                  "not_in_scope"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tier": {
        +            "enum": [
        +              "free",
        +              "paid"
        +            ],
        +            "type": "string"
        +          },
        +          "tier_upgrade": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        +                "properties": {
        +                  "available_tiers": {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        +                      "properties": {
        +                        "billing": {
        +                          "enum": [
        +                            "one_off",
        +                            "monthly",
        +                            "annual"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "currency": {
        +                          "enum": [
        +                            "GBP",
        +                            "SGD",
        +                            "EUR",
        +                            "USD",
        +                            "CAD",
        +                            "AUD",
        +                            "NZD",
        +                            "MYR"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "display_name": {
        +                          "type": "string"
        +                        },
        +                        "price_local": {
        +                          "type": "number"
        +                        },
        +                        "tier_slug": {
        +                          "enum": [
        +                            "7_day_pass",
        +                            "solo",
        +                            "studio",
        +                            "practice"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "unlock_summary": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "tier_slug",
        +                        "display_name",
        +                        "price_local",
        +                        "currency",
        +                        "billing",
        +                        "unlock_summary"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "current_tier": {
        +                    "const": "free",
        +                    "default": "free",
        +                    "type": "string"
        +                  },
        +                  "pass_credit": {
        +                    "anyOf": [
        +                      {
        +                        "additionalProperties": false,
        +                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        +                        "properties": {
        +                          "amount_local": {
        +                            "type": "number"
        +                          },
        +                          "applies_to": {
        +                            "const": "solo_first_month",
        +                            "default": "solo_first_month",
        +                            "type": "string"
        +                          },
        +                          "currency": {
        +                            "type": "string"
        +                          },
        +                          "redeemable_until": {
        +                            "type": "string"
        +                          }
        +                        },
        +                        "required": [
        +                          "amount_local",
        +                          "currency",
        +                          "redeemable_until"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "pricing_url": {
        +                    "default": "https://civilquants.com/pricing",
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "available_tiers"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tos_url": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "upgrade_hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "warranty_disclaimer": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          }
        +        },
        +        "required": [
        +          "request_id",
        +          "issued_at",
        +          "tier"
        +        ],
        +        "type": "object"
        +      },
        +      "data": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Schema § 1.1 — the typed payload returned inside `MCPResponse[ComputeResult]`.\n\nFree-tier responses omit `drawings` (the downloadable CAD artefact\npointers — the paid differentiator); the bridge enforces this. The\n`audit_trail` and the inline `drawing` preview are present on BOTH tiers\n(V1 ALIGN / 60th-fire D + C). `text_summary` is bounded to 2000 chars —\nkeeps the LLM-facing summary token-cheap and forces longer narrative into\nBoQ row descriptions where it belongs. `warnings` is the non-fatal\ngeometry advisory list (both tiers).",
        +            "properties": {
        +              "assembly_slug": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "audit_trail": {
        +                "anyOf": [
        +                  {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.7 — paid-tier audit-trail entry.\n\nOne entry per BoQ row; `boq_row_index` ties to the row position in\n`ComputeResult.boq_rows`. `derivation` is the human-readable formula\nwalk-through; `formula` is the optional formal expression.",
        +                      "properties": {
        +                        "boq_row_index": {
        +                          "minimum": 0,
        +                          "type": "integer"
        +                        },
        +                        "derivation": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "formula": {
        +                          "anyOf": [
        +                            {
        +                              "type": "string"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ],
        +                          "default": null
        +                        },
        +                        "id": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "parameters_referenced": {
        +                          "items": {
        +                            "type": "string"
        +                          },
        +                          "type": "array"
        +                        }
        +                      },
        +                      "required": [
        +                        "id",
        +                        "boq_row_index",
        +                        "derivation"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "boq_rows": {
        +                "items": {
        +                  "additionalProperties": false,
        +                  "description": "Schema § 1.3 — a single bill row in the requested standard's format.\n\n`description` is the non-verbatim functional description per spec § 13.9 /\n§ 15 invariant — NEVER reproduces a standard's verbatim clause text.\n`rate` / `amount` ship null because rates are commodity data the customer\nowns; the engine's job is the measurement, not the pricing.",
        +                  "properties": {
        +                    "amount": {
        +                      "anyOf": [
        +                        {
        +                          "type": "number"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "attribution": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "audit_id": {
        +                      "anyOf": [
        +                        {
        +                          "type": "string"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "description": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "quantity": {
        +                      "minimum": 0,
        +                      "type": "number"
        +                    },
        +                    "rate": {
        +                      "anyOf": [
        +                        {
        +                          "type": "number"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "unit": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "work_section": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    }
        +                  },
        +                  "required": [
        +                    "work_section",
        +                    "description",
        +                    "quantity",
        +                    "unit",
        +                    "attribution"
        +                  ],
        +                  "type": "object"
        +                },
        +                "type": "array"
        +              },
        +              "drawing": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": false,
        +                    "description": "Schema § 1.6a — inline server-rendered SVG preview of the geometry.\n\nThe MCP mirror of the web ``/compute`` response's ``drawing`` field\n(``api.schemas.compute.DrawingRef``): the same on-screen dimensioned\ndrawing both tiers see in the workspace, surfaced on the MCP compute\nresponse so a chat client can render it inline (60th-fire item C). This\nis the on-screen preview — present on BOTH tiers per the free/paid\nboundary; the downloadable CAD artefacts (DXF / dimensioned PDF) remain\nthe paid differentiator via the export tools.\n\nDefined here rather than importing ``DrawingRef`` because the web\n``schemas`` package imports back into this module (``schemas.render``),\nso reusing it would create an import cycle — the MCP wire contract keeps\nits own copy, the same pattern as ``BoQRow`` / ``DrawingReference``.",
        +                    "properties": {
        +                      "entity_count": {
        +                        "minimum": 0,
        +                        "type": "integer"
        +                      },
        +                      "svg_b64": {
        +                        "minLength": 1,
        +                        "type": "string"
        +                      },
        +                      "unit_of_drawing": {
        +                        "const": "m",
        +                        "default": "m",
        +                        "type": "string"
        +                      },
        +                      "viewbox_height": {
        +                        "exclusiveMinimum": 0,
        +                        "type": "number"
        +                      },
        +                      "viewbox_width": {
        +                        "exclusiveMinimum": 0,
        +                        "type": "number"
        +                      },
        +                      "viewbox_x": {
        +                        "type": "number"
        +                      },
        +                      "viewbox_y": {
        +                        "type": "number"
        +                      }
        +                    },
        +                    "required": [
        +                      "svg_b64",
        +                      "viewbox_x",
        +                      "viewbox_y",
        +                      "viewbox_width",
        +                      "viewbox_height",
        +                      "entity_count"
        +                    ],
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "drawings": {
        +                "anyOf": [
        +                  {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.6 — paid-tier drawing artefact pointer.\n\n`url` is an R2-signed URL; expiry is carried in `_meta.deliverables.expires_at`\non the envelope (not duplicated here). `layers` is DXF-only; PDF/SVG\ncallers omit it.",
        +                      "properties": {
        +                        "drawing_type": {
        +                          "enum": [
        +                            "section",
        +                            "plan",
        +                            "elevation",
        +                            "isometric",
        +                            "detail"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "format": {
        +                          "enum": [
        +                            "DXF",
        +                            "PDF",
        +                            "SVG"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "layers": {
        +                          "anyOf": [
        +                            {
        +                              "items": {
        +                                "type": "string"
        +                              },
        +                              "type": "array"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ],
        +                          "default": null
        +                        },
        +                        "scale": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "sheet_size": {
        +                          "enum": [
        +                            "A1",
        +                            "A2",
        +                            "A3",
        +                            "A4"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "url": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "drawing_type",
        +                        "format",
        +                        "url",
        +                        "sheet_size",
        +                        "scale"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "parameters_used": {
        +                "additionalProperties": false,
        +                "description": "Schema § 1.2 — the parameter snapshot the engine actually used.\n\nSplits user-supplied values from engine defaults so customers can see\nwhich numbers came from them and which the engine filled in. Every\ndefaulted parameter SHOULD have a corresponding entry in `assumptions`\n— the bridge layer enforces this when wrapping engine output.",
        +                "properties": {
        +                  "assumptions": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "engine_defaults": {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  "user_supplied": {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  }
        +                },
        +                "type": "object"
        +              },
        +              "standard": {
        +                "enum": [
        +                  "CESMM4",
        +                  "NRM2",
        +                  "SMM7",
        +                  "MMHW"
        +                ],
        +                "type": "string"
        +              },
        +              "text_summary": {
        +                "maxLength": 2000,
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "totals_summary": {
        +                "additionalProperties": false,
        +                "description": "Schema § 1.4 — totals_summary as a typed wrapper around the free-form dict.\n\nWire shape is a flat object (`{\"concrete_m3\": {...}, \"rebar_t\": {...}}`).\nWe model it as `RootModel`-equivalent via `model_config(extra=\"allow\")`\n+ a single `__root__`-style `entries` dict. Pydantic v2 recommends\n`RootModel` for free-form roots; using a wrapper class keeps the import\nsurface uniform with the rest of this module.",
        +                "properties": {
        +                  "entries": {
        +                    "additionalProperties": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.4 — single material/work-class total entry.",
        +                      "properties": {
        +                        "quantity": {
        +                          "minimum": 0,
        +                          "type": "number"
        +                        },
        +                        "unit": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "quantity",
        +                        "unit"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "object"
        +                  }
        +                },
        +                "type": "object"
        +              },
        +              "warnings": {
        +                "items": {
        +                  "additionalProperties": false,
        +                  "description": "Schema § 1.8 — a non-fatal geometry advisory (56th-fire T2).\n\nThe wire projection of the engine's `core.GeometryWarning`. Advisory only:\na warning NEVER changes a measured quantity — it flags geometry that is\nvalid but likely a mistake (e.g. a stale dependent-height default). Present\non BOTH tiers — a correctness/safety signal, not a paid feature.",
        +                  "properties": {
        +                    "affected_params": {
        +                      "items": {
        +                        "type": "string"
        +                      },
        +                      "type": "array"
        +                    },
        +                    "code": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "detail": {
        +                      "additionalProperties": {
        +                        "type": "number"
        +                      },
        +                      "type": "object"
        +                    },
        +                    "message": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "severity": {
        +                      "enum": [
        +                        "info",
        +                        "advisory",
        +                        "caution"
        +                      ],
        +                      "type": "string"
        +                    }
        +                  },
        +                  "required": [
        +                    "code",
        +                    "severity",
        +                    "message"
        +                  ],
        +                  "type": "object"
        +                },
        +                "type": "array"
        +              }
        +            },
        +            "required": [
        +              "assembly_slug",
        +              "standard",
        +              "parameters_used",
        +              "boq_rows",
        +              "totals_summary",
        +              "text_summary"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      },
        +      "error": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        +            "properties": {
        +              "code": {
        +                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        +                "enum": [
        +                  "RATE_LIMIT_EXCEEDED",
        +                  "TIER_INSUFFICIENT",
        +                  "INVALID_INPUT",
        +                  "SCHEMA_VERSION_MISMATCH",
        +                  "SCHEMA_INVARIANT_VIOLATION",
        +                  "UPSTREAM_TIMEOUT",
        +                  "BACKEND_FAILURE",
        +                  "IP_BLOCKED",
        +                  "RESOURCE_NOT_FOUND",
        +                  "RENDER_FAILURE",
        +                  "OCR_LOW_CONFIDENCE",
        +                  "MANUAL_REVIEW_REQUIRED",
        +                  "ACCEPTANCE_REQUIRED",
        +                  "INVALID_TOKEN"
        +                ],
        +                "type": "string"
        +              },
        +              "details": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "message": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "recoverable": {
        +                "type": "boolean"
        +              },
        +              "retry_after_seconds": {
        +                "anyOf": [
        +                  {
        +                    "minimum": 0,
        +                    "type": "integer"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              }
        +            },
        +            "required": [
        +              "code",
        +              "message",
        +              "recoverable"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      }
        +    },
        +    "required": [
        +      "_meta"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "_meta": {
        +        "additionalProperties": false,
        +        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        +        "properties": {
        +          "deliverables": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        +                "properties": {
        +                  "docx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "dxf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "expires_at": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  },
        +                  "pdf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "xlsx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "expires_at"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "document_id": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "issued_at": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "output_mode": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Surfaces what a trimmed ``output_mode`` withheld from ``data``.\n\nA trimmed mode (``summary`` / ``boq`` / ``boq_with_backup``) withholds\nalready-computed fields to keep the chat payload small. The withheld value\nreads to a client agent as \"capability missing\" (the box-culvert \"geometry\nbuilder isn't firing\" scare) rather than \"pared for size\": ``drawing`` and\n``audit_trail`` appear as ``null``, ``boq_rows`` as an empty list ``[]``\n(its type forbids ``null``) — both indistinguishable from a genuine absent\nresult. This names the withheld fields and the exact mode that brings each\nback, so the value is unambiguous. Absent on the default ``full_json`` mode\n— nothing is withheld, nothing to point at.",
        +                "properties": {
        +                  "mode": {
        +                    "enum": [
        +                      "summary",
        +                      "boq",
        +                      "boq_with_backup"
        +                    ],
        +                    "type": "string"
        +                  },
        +                  "omitted_fields": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "minItems": 1,
        +                    "type": "array"
        +                  },
        +                  "retrieve_with": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "mode",
        +                  "omitted_fields",
        +                  "retrieve_with"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "rate_limit_remaining": {
        +            "anyOf": [
        +              {
        +                "minimum": 0,
        +                "type": "integer"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "request_id": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "schema_version": {
        +            "const": "1.0.0",
        +            "default": "1.0.0",
        +            "type": "string"
        +          },
        +          "scope_boundary": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        +                "properties": {
        +                  "not_in_scope": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "produced": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "recommended_companions": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "type": "string"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "produced",
        +                  "not_in_scope"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tier": {
        +            "enum": [
        +              "free",
        +              "paid"
        +            ],
        +            "type": "string"
        +          },
        +          "tier_upgrade": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        +                "properties": {
        +                  "available_tiers": {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        +                      "properties": {
        +                        "billing": {
        +                          "enum": [
        +                            "one_off",
        +                            "monthly",
        +                            "annual"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "currency": {
        +                          "enum": [
        +                            "GBP",
        +                            "SGD",
        +                            "EUR",
        +                            "USD",
        +                            "CAD",
        +                            "AUD",
        +                            "NZD",
        +                            "MYR"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "display_name": {
        +                          "type": "string"
        +                        },
        +                        "price_local": {
        +                          "type": "number"
        +                        },
        +                        "tier_slug": {
        +                          "enum": [
        +                            "7_day_pass",
        +                            "solo",
        +                            "studio",
        +                            "practice"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "unlock_summary": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "tier_slug",
        +                        "display_name",
        +                        "price_local",
        +                        "currency",
        +                        "billing",
        +                        "unlock_summary"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "current_tier": {
        +                    "const": "free",
        +                    "default": "free",
        +                    "type": "string"
        +                  },
        +                  "pass_credit": {
        +                    "anyOf": [
        +                      {
        +                        "additionalProperties": false,
        +                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        +                        "properties": {
        +                          "amount_local": {
        +                            "type": "number"
        +                          },
        +                          "applies_to": {
        +                            "const": "solo_first_month",
        +                            "default": "solo_first_month",
        +                            "type": "string"
        +                          },
        +                          "currency": {
        +                            "type": "string"
        +                          },
        +                          "redeemable_until": {
        +                            "type": "string"
        +                          }
        +                        },
        +                        "required": [
        +                          "amount_local",
        +                          "currency",
        +                          "redeemable_until"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "pricing_url": {
        +                    "default": "https://civilquants.com/pricing",
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "available_tiers"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tos_url": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "upgrade_hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "warranty_disclaimer": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          }
        +        },
        +        "required": [
        +          "request_id",
        +          "issued_at",
        +          "tier"
        +        ],
        +        "type": "object"
        +      },
        +      "data": {
        +        "default": null,
        +        "title": "Data"
        +      },
        +      "error": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        +            "properties": {
        +              "code": {
        +                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        +                "enum": [
        +                  "RATE_LIMIT_EXCEEDED",
        +                  "TIER_INSUFFICIENT",
        +                  "INVALID_INPUT",
        +                  "SCHEMA_VERSION_MISMATCH",
        +                  "SCHEMA_INVARIANT_VIOLATION",
        +                  "UPSTREAM_TIMEOUT",
        +                  "BACKEND_FAILURE",
        +                  "IP_BLOCKED",
        +                  "RESOURCE_NOT_FOUND",
        +                  "RENDER_FAILURE",
        +                  "OCR_LOW_CONFIDENCE",
        +                  "MANUAL_REVIEW_REQUIRED",
        +                  "ACCEPTANCE_REQUIRED",
        +                  "INVALID_TOKEN"
        +                ],
        +                "type": "string"
        +              },
        +              "details": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "message": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "recoverable": {
        +                "type": "boolean"
        +              },
        +              "retry_after_seconds": {
        +                "anyOf": [
        +                  {
        +                    "minimum": 0,
        +                    "type": "integer"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              }
        +            },
        +            "required": [
        +              "code",
        +              "message",
        +              "recoverable"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      }
        +    },
        +    "required": [
        +      "_meta"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedcompute_utility_chamber1 field changed
      • changedOutput schema / properties / result / anyOf
        Previous value: -[
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "_meta": {
        -        "additionalProperties": false,
        -        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        -        "properties": {
        -          "deliverables": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        -                "properties": {
        -                  "docx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "dxf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "expires_at": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  },
        -                  "pdf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "xlsx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "expires_at"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "document_id": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "issued_at": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "rate_limit_remaining": {
        -            "anyOf": [
        -              {
        -                "minimum": 0,
        -                "type": "integer"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "request_id": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "schema_version": {
        -            "const": "1.0.0",
        -            "default": "1.0.0",
        -            "type": "string"
        -          },
        -          "scope_boundary": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        -                "properties": {
        -                  "not_in_scope": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "produced": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "recommended_companions": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "type": "string"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "produced",
        -                  "not_in_scope"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tier": {
        -            "enum": [
        -              "free",
        -              "paid"
        -            ],
        -            "type": "string"
        -          },
        -          "tier_upgrade": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        -                "properties": {
        -                  "available_tiers": {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        -                      "properties": {
        -                        "billing": {
        -                          "enum": [
        -                            "one_off",
        -                            "monthly",
        -                            "annual"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "currency": {
        -                          "enum": [
        -                            "GBP",
        -                            "SGD",
        -                            "EUR",
        -                            "USD",
        -                            "CAD",
        -                            "AUD",
        -                            "NZD",
        -                            "MYR"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "display_name": {
        -                          "type": "string"
        -                        },
        -                        "price_local": {
        -                          "type": "number"
        -                        },
        -                        "tier_slug": {
        -                          "enum": [
        -                            "7_day_pass",
        -                            "solo",
        -                            "studio",
        -                            "practice"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "unlock_summary": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "tier_slug",
        -                        "display_name",
        -                        "price_local",
        -                        "currency",
        -                        "billing",
        -                        "unlock_summary"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "current_tier": {
        -                    "const": "free",
        -                    "default": "free",
        -                    "type": "string"
        -                  },
        -                  "pass_credit": {
        -                    "anyOf": [
        -                      {
        -                        "additionalProperties": false,
        -                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        -                        "properties": {
        -                          "amount_local": {
        -                            "type": "number"
        -                          },
        -                          "applies_to": {
        -                            "const": "solo_first_month",
        -                            "default": "solo_first_month",
        -                            "type": "string"
        -                          },
        -                          "currency": {
        -                            "type": "string"
        -                          },
        -                          "redeemable_until": {
        -                            "type": "string"
        -                          }
        -                        },
        -                        "required": [
        -                          "amount_local",
        -                          "currency",
        -                          "redeemable_until"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "pricing_url": {
        -                    "default": "https://civilquants.com/pricing",
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "available_tiers"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tos_url": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "upgrade_hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "warranty_disclaimer": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          }
        -        },
        -        "required": [
        -          "request_id",
        -          "issued_at",
        -          "tier"
        -        ],
        -        "type": "object"
        -      },
        -      "data": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Schema § 1.1 — the typed payload returned inside `MCPResponse[ComputeResult]`.\n\nFree-tier responses omit `drawings` (the downloadable CAD artefact\npointers — the paid differentiator); the bridge enforces this. The\n`audit_trail` and the inline `drawing` preview are present on BOTH tiers\n(V1 ALIGN / 60th-fire D + C). `text_summary` is bounded to 2000 chars —\nkeeps the LLM-facing summary token-cheap and forces longer narrative into\nBoQ row descriptions where it belongs. `warnings` is the non-fatal\ngeometry advisory list (both tiers).",
        -            "properties": {
        -              "assembly_slug": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "audit_trail": {
        -                "anyOf": [
        -                  {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.7 — paid-tier audit-trail entry.\n\nOne entry per BoQ row; `boq_row_index` ties to the row position in\n`ComputeResult.boq_rows`. `derivation` is the human-readable formula\nwalk-through; `formula` is the optional formal expression.",
        -                      "properties": {
        -                        "boq_row_index": {
        -                          "minimum": 0,
        -                          "type": "integer"
        -                        },
        -                        "derivation": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "formula": {
        -                          "anyOf": [
        -                            {
        -                              "type": "string"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ],
        -                          "default": null
        -                        },
        -                        "id": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "parameters_referenced": {
        -                          "items": {
        -                            "type": "string"
        -                          },
        -                          "type": "array"
        -                        }
        -                      },
        -                      "required": [
        -                        "id",
        -                        "boq_row_index",
        -                        "derivation"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "boq_rows": {
        -                "items": {
        -                  "additionalProperties": false,
        -                  "description": "Schema § 1.3 — a single bill row in the requested standard's format.\n\n`description` is the non-verbatim functional description per spec § 13.9 /\n§ 15 invariant — NEVER reproduces a standard's verbatim clause text.\n`rate` / `amount` ship null because rates are commodity data the customer\nowns; the engine's job is the measurement, not the pricing.",
        -                  "properties": {
        -                    "amount": {
        -                      "anyOf": [
        -                        {
        -                          "type": "number"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "attribution": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "audit_id": {
        -                      "anyOf": [
        -                        {
        -                          "type": "string"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "description": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "quantity": {
        -                      "minimum": 0,
        -                      "type": "number"
        -                    },
        -                    "rate": {
        -                      "anyOf": [
        -                        {
        -                          "type": "number"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "unit": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "work_section": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    }
        -                  },
        -                  "required": [
        -                    "work_section",
        -                    "description",
        -                    "quantity",
        -                    "unit",
        -                    "attribution"
        -                  ],
        -                  "type": "object"
        -                },
        -                "type": "array"
        -              },
        -              "drawing": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": false,
        -                    "description": "Schema § 1.6a — inline server-rendered SVG preview of the geometry.\n\nThe MCP mirror of the web ``/compute`` response's ``drawing`` field\n(``api.schemas.compute.DrawingRef``): the same on-screen dimensioned\ndrawing both tiers see in the workspace, surfaced on the MCP compute\nresponse so a chat client can render it inline (60th-fire item C). This\nis the on-screen preview — present on BOTH tiers per the free/paid\nboundary; the downloadable CAD artefacts (DXF / dimensioned PDF) remain\nthe paid differentiator via the export tools.\n\nDefined here rather than importing ``DrawingRef`` because the web\n``schemas`` package imports back into this module (``schemas.render``),\nso reusing it would create an import cycle — the MCP wire contract keeps\nits own copy, the same pattern as ``BoQRow`` / ``DrawingReference``.",
        -                    "properties": {
        -                      "entity_count": {
        -                        "minimum": 0,
        -                        "type": "integer"
        -                      },
        -                      "svg_b64": {
        -                        "minLength": 1,
        -                        "type": "string"
        -                      },
        -                      "unit_of_drawing": {
        -                        "const": "m",
        -                        "default": "m",
        -                        "type": "string"
        -                      },
        -                      "viewbox_height": {
        -                        "exclusiveMinimum": 0,
        -                        "type": "number"
        -                      },
        -                      "viewbox_width": {
        -                        "exclusiveMinimum": 0,
        -                        "type": "number"
        -                      },
        -                      "viewbox_x": {
        -                        "type": "number"
        -                      },
        -                      "viewbox_y": {
        -                        "type": "number"
        -                      }
        -                    },
        -                    "required": [
        -                      "svg_b64",
        -                      "viewbox_x",
        -                      "viewbox_y",
        -                      "viewbox_width",
        -                      "viewbox_height",
        -                      "entity_count"
        -                    ],
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "drawings": {
        -                "anyOf": [
        -                  {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.6 — paid-tier drawing artefact pointer.\n\n`url` is an R2-signed URL; expiry is carried in `_meta.deliverables.expires_at`\non the envelope (not duplicated here). `layers` is DXF-only; PDF/SVG\ncallers omit it.",
        -                      "properties": {
        -                        "drawing_type": {
        -                          "enum": [
        -                            "section",
        -                            "plan",
        -                            "elevation",
        -                            "isometric",
        -                            "detail"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "format": {
        -                          "enum": [
        -                            "DXF",
        -                            "PDF",
        -                            "SVG"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "layers": {
        -                          "anyOf": [
        -                            {
        -                              "items": {
        -                                "type": "string"
        -                              },
        -                              "type": "array"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ],
        -                          "default": null
        -                        },
        -                        "scale": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "sheet_size": {
        -                          "enum": [
        -                            "A1",
        -                            "A2",
        -                            "A3",
        -                            "A4"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "url": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "drawing_type",
        -                        "format",
        -                        "url",
        -                        "sheet_size",
        -                        "scale"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "parameters_used": {
        -                "additionalProperties": false,
        -                "description": "Schema § 1.2 — the parameter snapshot the engine actually used.\n\nSplits user-supplied values from engine defaults so customers can see\nwhich numbers came from them and which the engine filled in. Every\ndefaulted parameter SHOULD have a corresponding entry in `assumptions`\n— the bridge layer enforces this when wrapping engine output.",
        -                "properties": {
        -                  "assumptions": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "engine_defaults": {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  "user_supplied": {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  }
        -                },
        -                "type": "object"
        -              },
        -              "standard": {
        -                "enum": [
        -                  "CESMM4",
        -                  "NRM2",
        -                  "SMM7",
        -                  "MMHW"
        -                ],
        -                "type": "string"
        -              },
        -              "text_summary": {
        -                "maxLength": 2000,
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "totals_summary": {
        -                "additionalProperties": false,
        -                "description": "Schema § 1.4 — totals_summary as a typed wrapper around the free-form dict.\n\nWire shape is a flat object (`{\"concrete_m3\": {...}, \"rebar_t\": {...}}`).\nWe model it as `RootModel`-equivalent via `model_config(extra=\"allow\")`\n+ a single `__root__`-style `entries` dict. Pydantic v2 recommends\n`RootModel` for free-form roots; using a wrapper class keeps the import\nsurface uniform with the rest of this module.",
        -                "properties": {
        -                  "entries": {
        -                    "additionalProperties": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.4 — single material/work-class total entry.",
        -                      "properties": {
        -                        "quantity": {
        -                          "minimum": 0,
        -                          "type": "number"
        -                        },
        -                        "unit": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "quantity",
        -                        "unit"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "object"
        -                  }
        -                },
        -                "type": "object"
        -              },
        -              "warnings": {
        -                "items": {
        -                  "additionalProperties": false,
        -                  "description": "Schema § 1.8 — a non-fatal geometry advisory (56th-fire T2).\n\nThe wire projection of the engine's `core.GeometryWarning`. Advisory only:\na warning NEVER changes a measured quantity — it flags geometry that is\nvalid but likely a mistake (e.g. a stale dependent-height default). Present\non BOTH tiers — a correctness/safety signal, not a paid feature.",
        -                  "properties": {
        -                    "affected_params": {
        -                      "items": {
        -                        "type": "string"
        -                      },
        -                      "type": "array"
        -                    },
        -                    "code": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "detail": {
        -                      "additionalProperties": {
        -                        "type": "number"
        -                      },
        -                      "type": "object"
        -                    },
        -                    "message": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "severity": {
        -                      "enum": [
        -                        "info",
        -                        "advisory",
        -                        "caution"
        -                      ],
        -                      "type": "string"
        -                    }
        -                  },
        -                  "required": [
        -                    "code",
        -                    "severity",
        -                    "message"
        -                  ],
        -                  "type": "object"
        -                },
        -                "type": "array"
        -              }
        -            },
        -            "required": [
        -              "assembly_slug",
        -              "standard",
        -              "parameters_used",
        -              "boq_rows",
        -              "totals_summary",
        -              "text_summary"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      },
        -      "error": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        -            "properties": {
        -              "code": {
        -                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        -                "enum": [
        -                  "RATE_LIMIT_EXCEEDED",
        -                  "TIER_INSUFFICIENT",
        -                  "INVALID_INPUT",
        -                  "SCHEMA_VERSION_MISMATCH",
        -                  "SCHEMA_INVARIANT_VIOLATION",
        -                  "UPSTREAM_TIMEOUT",
        -                  "BACKEND_FAILURE",
        -                  "IP_BLOCKED",
        -                  "RESOURCE_NOT_FOUND",
        -                  "RENDER_FAILURE",
        -                  "OCR_LOW_CONFIDENCE",
        -                  "MANUAL_REVIEW_REQUIRED",
        -                  "ACCEPTANCE_REQUIRED",
        -                  "INVALID_TOKEN"
        -                ],
        -                "type": "string"
        -              },
        -              "details": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "message": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "recoverable": {
        -                "type": "boolean"
        -              },
        -              "retry_after_seconds": {
        -                "anyOf": [
        -                  {
        -                    "minimum": 0,
        -                    "type": "integer"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              }
        -            },
        -            "required": [
        -              "code",
        -              "message",
        -              "recoverable"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      }
        -    },
        -    "required": [
        -      "_meta"
        -    ],
        -    "type": "object"
        -  },
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "_meta": {
        -        "additionalProperties": false,
        -        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        -        "properties": {
        -          "deliverables": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        -                "properties": {
        -                  "docx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "dxf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "expires_at": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  },
        -                  "pdf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "xlsx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "expires_at"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "document_id": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "issued_at": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "rate_limit_remaining": {
        -            "anyOf": [
        -              {
        -                "minimum": 0,
        -                "type": "integer"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "request_id": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "schema_version": {
        -            "const": "1.0.0",
        -            "default": "1.0.0",
        -            "type": "string"
        -          },
        -          "scope_boundary": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        -                "properties": {
        -                  "not_in_scope": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "produced": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "recommended_companions": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "type": "string"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "produced",
        -                  "not_in_scope"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tier": {
        -            "enum": [
        -              "free",
        -              "paid"
        -            ],
        -            "type": "string"
        -          },
        -          "tier_upgrade": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        -                "properties": {
        -                  "available_tiers": {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        -                      "properties": {
        -                        "billing": {
        -                          "enum": [
        -                            "one_off",
        -                            "monthly",
        -                            "annual"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "currency": {
        -                          "enum": [
        -                            "GBP",
        -                            "SGD",
        -                            "EUR",
        -                            "USD",
        -                            "CAD",
        -                            "AUD",
        -                            "NZD",
        -                            "MYR"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "display_name": {
        -                          "type": "string"
        -                        },
        -                        "price_local": {
        -                          "type": "number"
        -                        },
        -                        "tier_slug": {
        -                          "enum": [
        -                            "7_day_pass",
        -                            "solo",
        -                            "studio",
        -                            "practice"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "unlock_summary": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "tier_slug",
        -                        "display_name",
        -                        "price_local",
        -                        "currency",
        -                        "billing",
        -                        "unlock_summary"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "current_tier": {
        -                    "const": "free",
        -                    "default": "free",
        -                    "type": "string"
        -                  },
        -                  "pass_credit": {
        -                    "anyOf": [
        -                      {
        -                        "additionalProperties": false,
        -                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        -                        "properties": {
        -                          "amount_local": {
        -                            "type": "number"
        -                          },
        -                          "applies_to": {
        -                            "const": "solo_first_month",
        -                            "default": "solo_first_month",
        -                            "type": "string"
        -                          },
        -                          "currency": {
        -                            "type": "string"
        -                          },
        -                          "redeemable_until": {
        -                            "type": "string"
        -                          }
        -                        },
        -                        "required": [
        -                          "amount_local",
        -                          "currency",
        -                          "redeemable_until"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "pricing_url": {
        -                    "default": "https://civilquants.com/pricing",
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "available_tiers"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tos_url": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "upgrade_hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "warranty_disclaimer": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          }
        -        },
        -        "required": [
        -          "request_id",
        -          "issued_at",
        -          "tier"
        -        ],
        -        "type": "object"
        -      },
        -      "data": {
        -        "default": null,
        -        "title": "Data"
        -      },
        -      "error": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        -            "properties": {
        -              "code": {
        -                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        -                "enum": [
        -                  "RATE_LIMIT_EXCEEDED",
        -                  "TIER_INSUFFICIENT",
        -                  "INVALID_INPUT",
        -                  "SCHEMA_VERSION_MISMATCH",
        -                  "SCHEMA_INVARIANT_VIOLATION",
        -                  "UPSTREAM_TIMEOUT",
        -                  "BACKEND_FAILURE",
        -                  "IP_BLOCKED",
        -                  "RESOURCE_NOT_FOUND",
        -                  "RENDER_FAILURE",
        -                  "OCR_LOW_CONFIDENCE",
        -                  "MANUAL_REVIEW_REQUIRED",
        -                  "ACCEPTANCE_REQUIRED",
        -                  "INVALID_TOKEN"
        -                ],
        -                "type": "string"
        -              },
        -              "details": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "message": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "recoverable": {
        -                "type": "boolean"
        -              },
        -              "retry_after_seconds": {
        -                "anyOf": [
        -                  {
        -                    "minimum": 0,
        -                    "type": "integer"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              }
        -            },
        -            "required": [
        -              "code",
        -              "message",
        -              "recoverable"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      }
        -    },
        -    "required": [
        -      "_meta"
        -    ],
        -    "type": "object"
        -  }
        -]New value: +[
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "_meta": {
        +        "additionalProperties": false,
        +        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        +        "properties": {
        +          "deliverables": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        +                "properties": {
        +                  "docx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "dxf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "expires_at": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  },
        +                  "pdf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "xlsx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "expires_at"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "document_id": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "issued_at": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "output_mode": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Surfaces what a trimmed ``output_mode`` withheld from ``data``.\n\nA trimmed mode (``summary`` / ``boq`` / ``boq_with_backup``) withholds\nalready-computed fields to keep the chat payload small. The withheld value\nreads to a client agent as \"capability missing\" (the box-culvert \"geometry\nbuilder isn't firing\" scare) rather than \"pared for size\": ``drawing`` and\n``audit_trail`` appear as ``null``, ``boq_rows`` as an empty list ``[]``\n(its type forbids ``null``) — both indistinguishable from a genuine absent\nresult. This names the withheld fields and the exact mode that brings each\nback, so the value is unambiguous. Absent on the default ``full_json`` mode\n— nothing is withheld, nothing to point at.",
        +                "properties": {
        +                  "mode": {
        +                    "enum": [
        +                      "summary",
        +                      "boq",
        +                      "boq_with_backup"
        +                    ],
        +                    "type": "string"
        +                  },
        +                  "omitted_fields": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "minItems": 1,
        +                    "type": "array"
        +                  },
        +                  "retrieve_with": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "mode",
        +                  "omitted_fields",
        +                  "retrieve_with"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "rate_limit_remaining": {
        +            "anyOf": [
        +              {
        +                "minimum": 0,
        +                "type": "integer"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "request_id": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "schema_version": {
        +            "const": "1.0.0",
        +            "default": "1.0.0",
        +            "type": "string"
        +          },
        +          "scope_boundary": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        +                "properties": {
        +                  "not_in_scope": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "produced": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "recommended_companions": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "type": "string"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "produced",
        +                  "not_in_scope"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tier": {
        +            "enum": [
        +              "free",
        +              "paid"
        +            ],
        +            "type": "string"
        +          },
        +          "tier_upgrade": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        +                "properties": {
        +                  "available_tiers": {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        +                      "properties": {
        +                        "billing": {
        +                          "enum": [
        +                            "one_off",
        +                            "monthly",
        +                            "annual"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "currency": {
        +                          "enum": [
        +                            "GBP",
        +                            "SGD",
        +                            "EUR",
        +                            "USD",
        +                            "CAD",
        +                            "AUD",
        +                            "NZD",
        +                            "MYR"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "display_name": {
        +                          "type": "string"
        +                        },
        +                        "price_local": {
        +                          "type": "number"
        +                        },
        +                        "tier_slug": {
        +                          "enum": [
        +                            "7_day_pass",
        +                            "solo",
        +                            "studio",
        +                            "practice"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "unlock_summary": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "tier_slug",
        +                        "display_name",
        +                        "price_local",
        +                        "currency",
        +                        "billing",
        +                        "unlock_summary"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "current_tier": {
        +                    "const": "free",
        +                    "default": "free",
        +                    "type": "string"
        +                  },
        +                  "pass_credit": {
        +                    "anyOf": [
        +                      {
        +                        "additionalProperties": false,
        +                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        +                        "properties": {
        +                          "amount_local": {
        +                            "type": "number"
        +                          },
        +                          "applies_to": {
        +                            "const": "solo_first_month",
        +                            "default": "solo_first_month",
        +                            "type": "string"
        +                          },
        +                          "currency": {
        +                            "type": "string"
        +                          },
        +                          "redeemable_until": {
        +                            "type": "string"
        +                          }
        +                        },
        +                        "required": [
        +                          "amount_local",
        +                          "currency",
        +                          "redeemable_until"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "pricing_url": {
        +                    "default": "https://civilquants.com/pricing",
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "available_tiers"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tos_url": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "upgrade_hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "warranty_disclaimer": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          }
        +        },
        +        "required": [
        +          "request_id",
        +          "issued_at",
        +          "tier"
        +        ],
        +        "type": "object"
        +      },
        +      "data": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Schema § 1.1 — the typed payload returned inside `MCPResponse[ComputeResult]`.\n\nFree-tier responses omit `drawings` (the downloadable CAD artefact\npointers — the paid differentiator); the bridge enforces this. The\n`audit_trail` and the inline `drawing` preview are present on BOTH tiers\n(V1 ALIGN / 60th-fire D + C). `text_summary` is bounded to 2000 chars —\nkeeps the LLM-facing summary token-cheap and forces longer narrative into\nBoQ row descriptions where it belongs. `warnings` is the non-fatal\ngeometry advisory list (both tiers).",
        +            "properties": {
        +              "assembly_slug": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "audit_trail": {
        +                "anyOf": [
        +                  {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.7 — paid-tier audit-trail entry.\n\nOne entry per BoQ row; `boq_row_index` ties to the row position in\n`ComputeResult.boq_rows`. `derivation` is the human-readable formula\nwalk-through; `formula` is the optional formal expression.",
        +                      "properties": {
        +                        "boq_row_index": {
        +                          "minimum": 0,
        +                          "type": "integer"
        +                        },
        +                        "derivation": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "formula": {
        +                          "anyOf": [
        +                            {
        +                              "type": "string"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ],
        +                          "default": null
        +                        },
        +                        "id": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "parameters_referenced": {
        +                          "items": {
        +                            "type": "string"
        +                          },
        +                          "type": "array"
        +                        }
        +                      },
        +                      "required": [
        +                        "id",
        +                        "boq_row_index",
        +                        "derivation"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "boq_rows": {
        +                "items": {
        +                  "additionalProperties": false,
        +                  "description": "Schema § 1.3 — a single bill row in the requested standard's format.\n\n`description` is the non-verbatim functional description per spec § 13.9 /\n§ 15 invariant — NEVER reproduces a standard's verbatim clause text.\n`rate` / `amount` ship null because rates are commodity data the customer\nowns; the engine's job is the measurement, not the pricing.",
        +                  "properties": {
        +                    "amount": {
        +                      "anyOf": [
        +                        {
        +                          "type": "number"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "attribution": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "audit_id": {
        +                      "anyOf": [
        +                        {
        +                          "type": "string"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "description": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "quantity": {
        +                      "minimum": 0,
        +                      "type": "number"
        +                    },
        +                    "rate": {
        +                      "anyOf": [
        +                        {
        +                          "type": "number"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "unit": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "work_section": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    }
        +                  },
        +                  "required": [
        +                    "work_section",
        +                    "description",
        +                    "quantity",
        +                    "unit",
        +                    "attribution"
        +                  ],
        +                  "type": "object"
        +                },
        +                "type": "array"
        +              },
        +              "drawing": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": false,
        +                    "description": "Schema § 1.6a — inline server-rendered SVG preview of the geometry.\n\nThe MCP mirror of the web ``/compute`` response's ``drawing`` field\n(``api.schemas.compute.DrawingRef``): the same on-screen dimensioned\ndrawing both tiers see in the workspace, surfaced on the MCP compute\nresponse so a chat client can render it inline (60th-fire item C). This\nis the on-screen preview — present on BOTH tiers per the free/paid\nboundary; the downloadable CAD artefacts (DXF / dimensioned PDF) remain\nthe paid differentiator via the export tools.\n\nDefined here rather than importing ``DrawingRef`` because the web\n``schemas`` package imports back into this module (``schemas.render``),\nso reusing it would create an import cycle — the MCP wire contract keeps\nits own copy, the same pattern as ``BoQRow`` / ``DrawingReference``.",
        +                    "properties": {
        +                      "entity_count": {
        +                        "minimum": 0,
        +                        "type": "integer"
        +                      },
        +                      "svg_b64": {
        +                        "minLength": 1,
        +                        "type": "string"
        +                      },
        +                      "unit_of_drawing": {
        +                        "const": "m",
        +                        "default": "m",
        +                        "type": "string"
        +                      },
        +                      "viewbox_height": {
        +                        "exclusiveMinimum": 0,
        +                        "type": "number"
        +                      },
        +                      "viewbox_width": {
        +                        "exclusiveMinimum": 0,
        +                        "type": "number"
        +                      },
        +                      "viewbox_x": {
        +                        "type": "number"
        +                      },
        +                      "viewbox_y": {
        +                        "type": "number"
        +                      }
        +                    },
        +                    "required": [
        +                      "svg_b64",
        +                      "viewbox_x",
        +                      "viewbox_y",
        +                      "viewbox_width",
        +                      "viewbox_height",
        +                      "entity_count"
        +                    ],
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "drawings": {
        +                "anyOf": [
        +                  {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.6 — paid-tier drawing artefact pointer.\n\n`url` is an R2-signed URL; expiry is carried in `_meta.deliverables.expires_at`\non the envelope (not duplicated here). `layers` is DXF-only; PDF/SVG\ncallers omit it.",
        +                      "properties": {
        +                        "drawing_type": {
        +                          "enum": [
        +                            "section",
        +                            "plan",
        +                            "elevation",
        +                            "isometric",
        +                            "detail"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "format": {
        +                          "enum": [
        +                            "DXF",
        +                            "PDF",
        +                            "SVG"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "layers": {
        +                          "anyOf": [
        +                            {
        +                              "items": {
        +                                "type": "string"
        +                              },
        +                              "type": "array"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ],
        +                          "default": null
        +                        },
        +                        "scale": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "sheet_size": {
        +                          "enum": [
        +                            "A1",
        +                            "A2",
        +                            "A3",
        +                            "A4"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "url": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "drawing_type",
        +                        "format",
        +                        "url",
        +                        "sheet_size",
        +                        "scale"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "parameters_used": {
        +                "additionalProperties": false,
        +                "description": "Schema § 1.2 — the parameter snapshot the engine actually used.\n\nSplits user-supplied values from engine defaults so customers can see\nwhich numbers came from them and which the engine filled in. Every\ndefaulted parameter SHOULD have a corresponding entry in `assumptions`\n— the bridge layer enforces this when wrapping engine output.",
        +                "properties": {
        +                  "assumptions": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "engine_defaults": {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  "user_supplied": {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  }
        +                },
        +                "type": "object"
        +              },
        +              "standard": {
        +                "enum": [
        +                  "CESMM4",
        +                  "NRM2",
        +                  "SMM7",
        +                  "MMHW"
        +                ],
        +                "type": "string"
        +              },
        +              "text_summary": {
        +                "maxLength": 2000,
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "totals_summary": {
        +                "additionalProperties": false,
        +                "description": "Schema § 1.4 — totals_summary as a typed wrapper around the free-form dict.\n\nWire shape is a flat object (`{\"concrete_m3\": {...}, \"rebar_t\": {...}}`).\nWe model it as `RootModel`-equivalent via `model_config(extra=\"allow\")`\n+ a single `__root__`-style `entries` dict. Pydantic v2 recommends\n`RootModel` for free-form roots; using a wrapper class keeps the import\nsurface uniform with the rest of this module.",
        +                "properties": {
        +                  "entries": {
        +                    "additionalProperties": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.4 — single material/work-class total entry.",
        +                      "properties": {
        +                        "quantity": {
        +                          "minimum": 0,
        +                          "type": "number"
        +                        },
        +                        "unit": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "quantity",
        +                        "unit"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "object"
        +                  }
        +                },
        +                "type": "object"
        +              },
        +              "warnings": {
        +                "items": {
        +                  "additionalProperties": false,
        +                  "description": "Schema § 1.8 — a non-fatal geometry advisory (56th-fire T2).\n\nThe wire projection of the engine's `core.GeometryWarning`. Advisory only:\na warning NEVER changes a measured quantity — it flags geometry that is\nvalid but likely a mistake (e.g. a stale dependent-height default). Present\non BOTH tiers — a correctness/safety signal, not a paid feature.",
        +                  "properties": {
        +                    "affected_params": {
        +                      "items": {
        +                        "type": "string"
        +                      },
        +                      "type": "array"
        +                    },
        +                    "code": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "detail": {
        +                      "additionalProperties": {
        +                        "type": "number"
        +                      },
        +                      "type": "object"
        +                    },
        +                    "message": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "severity": {
        +                      "enum": [
        +                        "info",
        +                        "advisory",
        +                        "caution"
        +                      ],
        +                      "type": "string"
        +                    }
        +                  },
        +                  "required": [
        +                    "code",
        +                    "severity",
        +                    "message"
        +                  ],
        +                  "type": "object"
        +                },
        +                "type": "array"
        +              }
        +            },
        +            "required": [
        +              "assembly_slug",
        +              "standard",
        +              "parameters_used",
        +              "boq_rows",
        +              "totals_summary",
        +              "text_summary"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      },
        +      "error": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        +            "properties": {
        +              "code": {
        +                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        +                "enum": [
        +                  "RATE_LIMIT_EXCEEDED",
        +                  "TIER_INSUFFICIENT",
        +                  "INVALID_INPUT",
        +                  "SCHEMA_VERSION_MISMATCH",
        +                  "SCHEMA_INVARIANT_VIOLATION",
        +                  "UPSTREAM_TIMEOUT",
        +                  "BACKEND_FAILURE",
        +                  "IP_BLOCKED",
        +                  "RESOURCE_NOT_FOUND",
        +                  "RENDER_FAILURE",
        +                  "OCR_LOW_CONFIDENCE",
        +                  "MANUAL_REVIEW_REQUIRED",
        +                  "ACCEPTANCE_REQUIRED",
        +                  "INVALID_TOKEN"
        +                ],
        +                "type": "string"
        +              },
        +              "details": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "message": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "recoverable": {
        +                "type": "boolean"
        +              },
        +              "retry_after_seconds": {
        +                "anyOf": [
        +                  {
        +                    "minimum": 0,
        +                    "type": "integer"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              }
        +            },
        +            "required": [
        +              "code",
        +              "message",
        +              "recoverable"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      }
        +    },
        +    "required": [
        +      "_meta"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "_meta": {
        +        "additionalProperties": false,
        +        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        +        "properties": {
        +          "deliverables": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        +                "properties": {
        +                  "docx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "dxf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "expires_at": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  },
        +                  "pdf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "xlsx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "expires_at"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "document_id": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "issued_at": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "output_mode": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Surfaces what a trimmed ``output_mode`` withheld from ``data``.\n\nA trimmed mode (``summary`` / ``boq`` / ``boq_with_backup``) withholds\nalready-computed fields to keep the chat payload small. The withheld value\nreads to a client agent as \"capability missing\" (the box-culvert \"geometry\nbuilder isn't firing\" scare) rather than \"pared for size\": ``drawing`` and\n``audit_trail`` appear as ``null``, ``boq_rows`` as an empty list ``[]``\n(its type forbids ``null``) — both indistinguishable from a genuine absent\nresult. This names the withheld fields and the exact mode that brings each\nback, so the value is unambiguous. Absent on the default ``full_json`` mode\n— nothing is withheld, nothing to point at.",
        +                "properties": {
        +                  "mode": {
        +                    "enum": [
        +                      "summary",
        +                      "boq",
        +                      "boq_with_backup"
        +                    ],
        +                    "type": "string"
        +                  },
        +                  "omitted_fields": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "minItems": 1,
        +                    "type": "array"
        +                  },
        +                  "retrieve_with": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "mode",
        +                  "omitted_fields",
        +                  "retrieve_with"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "rate_limit_remaining": {
        +            "anyOf": [
        +              {
        +                "minimum": 0,
        +                "type": "integer"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "request_id": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "schema_version": {
        +            "const": "1.0.0",
        +            "default": "1.0.0",
        +            "type": "string"
        +          },
        +          "scope_boundary": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        +                "properties": {
        +                  "not_in_scope": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "produced": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "recommended_companions": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "type": "string"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "produced",
        +                  "not_in_scope"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tier": {
        +            "enum": [
        +              "free",
        +              "paid"
        +            ],
        +            "type": "string"
        +          },
        +          "tier_upgrade": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        +                "properties": {
        +                  "available_tiers": {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        +                      "properties": {
        +                        "billing": {
        +                          "enum": [
        +                            "one_off",
        +                            "monthly",
        +                            "annual"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "currency": {
        +                          "enum": [
        +                            "GBP",
        +                            "SGD",
        +                            "EUR",
        +                            "USD",
        +                            "CAD",
        +                            "AUD",
        +                            "NZD",
        +                            "MYR"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "display_name": {
        +                          "type": "string"
        +                        },
        +                        "price_local": {
        +                          "type": "number"
        +                        },
        +                        "tier_slug": {
        +                          "enum": [
        +                            "7_day_pass",
        +                            "solo",
        +                            "studio",
        +                            "practice"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "unlock_summary": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "tier_slug",
        +                        "display_name",
        +                        "price_local",
        +                        "currency",
        +                        "billing",
        +                        "unlock_summary"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "current_tier": {
        +                    "const": "free",
        +                    "default": "free",
        +                    "type": "string"
        +                  },
        +                  "pass_credit": {
        +                    "anyOf": [
        +                      {
        +                        "additionalProperties": false,
        +                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        +                        "properties": {
        +                          "amount_local": {
        +                            "type": "number"
        +                          },
        +                          "applies_to": {
        +                            "const": "solo_first_month",
        +                            "default": "solo_first_month",
        +                            "type": "string"
        +                          },
        +                          "currency": {
        +                            "type": "string"
        +                          },
        +                          "redeemable_until": {
        +                            "type": "string"
        +                          }
        +                        },
        +                        "required": [
        +                          "amount_local",
        +                          "currency",
        +                          "redeemable_until"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "pricing_url": {
        +                    "default": "https://civilquants.com/pricing",
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "available_tiers"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tos_url": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "upgrade_hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "warranty_disclaimer": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          }
        +        },
        +        "required": [
        +          "request_id",
        +          "issued_at",
        +          "tier"
        +        ],
        +        "type": "object"
        +      },
        +      "data": {
        +        "default": null,
        +        "title": "Data"
        +      },
        +      "error": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        +            "properties": {
        +              "code": {
        +                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        +                "enum": [
        +                  "RATE_LIMIT_EXCEEDED",
        +                  "TIER_INSUFFICIENT",
        +                  "INVALID_INPUT",
        +                  "SCHEMA_VERSION_MISMATCH",
        +                  "SCHEMA_INVARIANT_VIOLATION",
        +                  "UPSTREAM_TIMEOUT",
        +                  "BACKEND_FAILURE",
        +                  "IP_BLOCKED",
        +                  "RESOURCE_NOT_FOUND",
        +                  "RENDER_FAILURE",
        +                  "OCR_LOW_CONFIDENCE",
        +                  "MANUAL_REVIEW_REQUIRED",
        +                  "ACCEPTANCE_REQUIRED",
        +                  "INVALID_TOKEN"
        +                ],
        +                "type": "string"
        +              },
        +              "details": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "message": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "recoverable": {
        +                "type": "boolean"
        +              },
        +              "retry_after_seconds": {
        +                "anyOf": [
        +                  {
        +                    "minimum": 0,
        +                    "type": "integer"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              }
        +            },
        +            "required": [
        +              "code",
        +              "message",
        +              "recoverable"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      }
        +    },
        +    "required": [
        +      "_meta"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedcompute_utility_kiosk_base1 field changed
      • changedOutput schema / properties / result / anyOf
        Previous value: -[
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "_meta": {
        -        "additionalProperties": false,
        -        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        -        "properties": {
        -          "deliverables": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        -                "properties": {
        -                  "docx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "dxf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "expires_at": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  },
        -                  "pdf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "xlsx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "expires_at"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "document_id": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "issued_at": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "rate_limit_remaining": {
        -            "anyOf": [
        -              {
        -                "minimum": 0,
        -                "type": "integer"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "request_id": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "schema_version": {
        -            "const": "1.0.0",
        -            "default": "1.0.0",
        -            "type": "string"
        -          },
        -          "scope_boundary": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        -                "properties": {
        -                  "not_in_scope": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "produced": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "recommended_companions": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "type": "string"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "produced",
        -                  "not_in_scope"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tier": {
        -            "enum": [
        -              "free",
        -              "paid"
        -            ],
        -            "type": "string"
        -          },
        -          "tier_upgrade": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        -                "properties": {
        -                  "available_tiers": {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        -                      "properties": {
        -                        "billing": {
        -                          "enum": [
        -                            "one_off",
        -                            "monthly",
        -                            "annual"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "currency": {
        -                          "enum": [
        -                            "GBP",
        -                            "SGD",
        -                            "EUR",
        -                            "USD",
        -                            "CAD",
        -                            "AUD",
        -                            "NZD",
        -                            "MYR"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "display_name": {
        -                          "type": "string"
        -                        },
        -                        "price_local": {
        -                          "type": "number"
        -                        },
        -                        "tier_slug": {
        -                          "enum": [
        -                            "7_day_pass",
        -                            "solo",
        -                            "studio",
        -                            "practice"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "unlock_summary": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "tier_slug",
        -                        "display_name",
        -                        "price_local",
        -                        "currency",
        -                        "billing",
        -                        "unlock_summary"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "current_tier": {
        -                    "const": "free",
        -                    "default": "free",
        -                    "type": "string"
        -                  },
        -                  "pass_credit": {
        -                    "anyOf": [
        -                      {
        -                        "additionalProperties": false,
        -                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        -                        "properties": {
        -                          "amount_local": {
        -                            "type": "number"
        -                          },
        -                          "applies_to": {
        -                            "const": "solo_first_month",
        -                            "default": "solo_first_month",
        -                            "type": "string"
        -                          },
        -                          "currency": {
        -                            "type": "string"
        -                          },
        -                          "redeemable_until": {
        -                            "type": "string"
        -                          }
        -                        },
        -                        "required": [
        -                          "amount_local",
        -                          "currency",
        -                          "redeemable_until"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "pricing_url": {
        -                    "default": "https://civilquants.com/pricing",
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "available_tiers"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tos_url": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "upgrade_hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "warranty_disclaimer": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          }
        -        },
        -        "required": [
        -          "request_id",
        -          "issued_at",
        -          "tier"
        -        ],
        -        "type": "object"
        -      },
        -      "data": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Schema § 1.1 — the typed payload returned inside `MCPResponse[ComputeResult]`.\n\nFree-tier responses omit `drawings` (the downloadable CAD artefact\npointers — the paid differentiator); the bridge enforces this. The\n`audit_trail` and the inline `drawing` preview are present on BOTH tiers\n(V1 ALIGN / 60th-fire D + C). `text_summary` is bounded to 2000 chars —\nkeeps the LLM-facing summary token-cheap and forces longer narrative into\nBoQ row descriptions where it belongs. `warnings` is the non-fatal\ngeometry advisory list (both tiers).",
        -            "properties": {
        -              "assembly_slug": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "audit_trail": {
        -                "anyOf": [
        -                  {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.7 — paid-tier audit-trail entry.\n\nOne entry per BoQ row; `boq_row_index` ties to the row position in\n`ComputeResult.boq_rows`. `derivation` is the human-readable formula\nwalk-through; `formula` is the optional formal expression.",
        -                      "properties": {
        -                        "boq_row_index": {
        -                          "minimum": 0,
        -                          "type": "integer"
        -                        },
        -                        "derivation": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "formula": {
        -                          "anyOf": [
        -                            {
        -                              "type": "string"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ],
        -                          "default": null
        -                        },
        -                        "id": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "parameters_referenced": {
        -                          "items": {
        -                            "type": "string"
        -                          },
        -                          "type": "array"
        -                        }
        -                      },
        -                      "required": [
        -                        "id",
        -                        "boq_row_index",
        -                        "derivation"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "boq_rows": {
        -                "items": {
        -                  "additionalProperties": false,
        -                  "description": "Schema § 1.3 — a single bill row in the requested standard's format.\n\n`description` is the non-verbatim functional description per spec § 13.9 /\n§ 15 invariant — NEVER reproduces a standard's verbatim clause text.\n`rate` / `amount` ship null because rates are commodity data the customer\nowns; the engine's job is the measurement, not the pricing.",
        -                  "properties": {
        -                    "amount": {
        -                      "anyOf": [
        -                        {
        -                          "type": "number"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "attribution": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "audit_id": {
        -                      "anyOf": [
        -                        {
        -                          "type": "string"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "description": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "quantity": {
        -                      "minimum": 0,
        -                      "type": "number"
        -                    },
        -                    "rate": {
        -                      "anyOf": [
        -                        {
        -                          "type": "number"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "unit": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "work_section": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    }
        -                  },
        -                  "required": [
        -                    "work_section",
        -                    "description",
        -                    "quantity",
        -                    "unit",
        -                    "attribution"
        -                  ],
        -                  "type": "object"
        -                },
        -                "type": "array"
        -              },
        -              "drawing": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": false,
        -                    "description": "Schema § 1.6a — inline server-rendered SVG preview of the geometry.\n\nThe MCP mirror of the web ``/compute`` response's ``drawing`` field\n(``api.schemas.compute.DrawingRef``): the same on-screen dimensioned\ndrawing both tiers see in the workspace, surfaced on the MCP compute\nresponse so a chat client can render it inline (60th-fire item C). This\nis the on-screen preview — present on BOTH tiers per the free/paid\nboundary; the downloadable CAD artefacts (DXF / dimensioned PDF) remain\nthe paid differentiator via the export tools.\n\nDefined here rather than importing ``DrawingRef`` because the web\n``schemas`` package imports back into this module (``schemas.render``),\nso reusing it would create an import cycle — the MCP wire contract keeps\nits own copy, the same pattern as ``BoQRow`` / ``DrawingReference``.",
        -                    "properties": {
        -                      "entity_count": {
        -                        "minimum": 0,
        -                        "type": "integer"
        -                      },
        -                      "svg_b64": {
        -                        "minLength": 1,
        -                        "type": "string"
        -                      },
        -                      "unit_of_drawing": {
        -                        "const": "m",
        -                        "default": "m",
        -                        "type": "string"
        -                      },
        -                      "viewbox_height": {
        -                        "exclusiveMinimum": 0,
        -                        "type": "number"
        -                      },
        -                      "viewbox_width": {
        -                        "exclusiveMinimum": 0,
        -                        "type": "number"
        -                      },
        -                      "viewbox_x": {
        -                        "type": "number"
        -                      },
        -                      "viewbox_y": {
        -                        "type": "number"
        -                      }
        -                    },
        -                    "required": [
        -                      "svg_b64",
        -                      "viewbox_x",
        -                      "viewbox_y",
        -                      "viewbox_width",
        -                      "viewbox_height",
        -                      "entity_count"
        -                    ],
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "drawings": {
        -                "anyOf": [
        -                  {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.6 — paid-tier drawing artefact pointer.\n\n`url` is an R2-signed URL; expiry is carried in `_meta.deliverables.expires_at`\non the envelope (not duplicated here). `layers` is DXF-only; PDF/SVG\ncallers omit it.",
        -                      "properties": {
        -                        "drawing_type": {
        -                          "enum": [
        -                            "section",
        -                            "plan",
        -                            "elevation",
        -                            "isometric",
        -                            "detail"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "format": {
        -                          "enum": [
        -                            "DXF",
        -                            "PDF",
        -                            "SVG"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "layers": {
        -                          "anyOf": [
        -                            {
        -                              "items": {
        -                                "type": "string"
        -                              },
        -                              "type": "array"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ],
        -                          "default": null
        -                        },
        -                        "scale": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "sheet_size": {
        -                          "enum": [
        -                            "A1",
        -                            "A2",
        -                            "A3",
        -                            "A4"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "url": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "drawing_type",
        -                        "format",
        -                        "url",
        -                        "sheet_size",
        -                        "scale"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "parameters_used": {
        -                "additionalProperties": false,
        -                "description": "Schema § 1.2 — the parameter snapshot the engine actually used.\n\nSplits user-supplied values from engine defaults so customers can see\nwhich numbers came from them and which the engine filled in. Every\ndefaulted parameter SHOULD have a corresponding entry in `assumptions`\n— the bridge layer enforces this when wrapping engine output.",
        -                "properties": {
        -                  "assumptions": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "engine_defaults": {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  "user_supplied": {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  }
        -                },
        -                "type": "object"
        -              },
        -              "standard": {
        -                "enum": [
        -                  "CESMM4",
        -                  "NRM2",
        -                  "SMM7",
        -                  "MMHW"
        -                ],
        -                "type": "string"
        -              },
        -              "text_summary": {
        -                "maxLength": 2000,
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "totals_summary": {
        -                "additionalProperties": false,
        -                "description": "Schema § 1.4 — totals_summary as a typed wrapper around the free-form dict.\n\nWire shape is a flat object (`{\"concrete_m3\": {...}, \"rebar_t\": {...}}`).\nWe model it as `RootModel`-equivalent via `model_config(extra=\"allow\")`\n+ a single `__root__`-style `entries` dict. Pydantic v2 recommends\n`RootModel` for free-form roots; using a wrapper class keeps the import\nsurface uniform with the rest of this module.",
        -                "properties": {
        -                  "entries": {
        -                    "additionalProperties": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.4 — single material/work-class total entry.",
        -                      "properties": {
        -                        "quantity": {
        -                          "minimum": 0,
        -                          "type": "number"
        -                        },
        -                        "unit": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "quantity",
        -                        "unit"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "object"
        -                  }
        -                },
        -                "type": "object"
        -              },
        -              "warnings": {
        -                "items": {
        -                  "additionalProperties": false,
        -                  "description": "Schema § 1.8 — a non-fatal geometry advisory (56th-fire T2).\n\nThe wire projection of the engine's `core.GeometryWarning`. Advisory only:\na warning NEVER changes a measured quantity — it flags geometry that is\nvalid but likely a mistake (e.g. a stale dependent-height default). Present\non BOTH tiers — a correctness/safety signal, not a paid feature.",
        -                  "properties": {
        -                    "affected_params": {
        -                      "items": {
        -                        "type": "string"
        -                      },
        -                      "type": "array"
        -                    },
        -                    "code": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "detail": {
        -                      "additionalProperties": {
        -                        "type": "number"
        -                      },
        -                      "type": "object"
        -                    },
        -                    "message": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "severity": {
        -                      "enum": [
        -                        "info",
        -                        "advisory",
        -                        "caution"
        -                      ],
        -                      "type": "string"
        -                    }
        -                  },
        -                  "required": [
        -                    "code",
        -                    "severity",
        -                    "message"
        -                  ],
        -                  "type": "object"
        -                },
        -                "type": "array"
        -              }
        -            },
        -            "required": [
        -              "assembly_slug",
        -              "standard",
        -              "parameters_used",
        -              "boq_rows",
        -              "totals_summary",
        -              "text_summary"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      },
        -      "error": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        -            "properties": {
        -              "code": {
        -                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        -                "enum": [
        -                  "RATE_LIMIT_EXCEEDED",
        -                  "TIER_INSUFFICIENT",
        -                  "INVALID_INPUT",
        -                  "SCHEMA_VERSION_MISMATCH",
        -                  "SCHEMA_INVARIANT_VIOLATION",
        -                  "UPSTREAM_TIMEOUT",
        -                  "BACKEND_FAILURE",
        -                  "IP_BLOCKED",
        -                  "RESOURCE_NOT_FOUND",
        -                  "RENDER_FAILURE",
        -                  "OCR_LOW_CONFIDENCE",
        -                  "MANUAL_REVIEW_REQUIRED",
        -                  "ACCEPTANCE_REQUIRED",
        -                  "INVALID_TOKEN"
        -                ],
        -                "type": "string"
        -              },
        -              "details": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "message": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "recoverable": {
        -                "type": "boolean"
        -              },
        -              "retry_after_seconds": {
        -                "anyOf": [
        -                  {
        -                    "minimum": 0,
        -                    "type": "integer"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              }
        -            },
        -            "required": [
        -              "code",
        -              "message",
        -              "recoverable"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      }
        -    },
        -    "required": [
        -      "_meta"
        -    ],
        -    "type": "object"
        -  },
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "_meta": {
        -        "additionalProperties": false,
        -        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        -        "properties": {
        -          "deliverables": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        -                "properties": {
        -                  "docx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "dxf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "expires_at": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  },
        -                  "pdf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "xlsx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "expires_at"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "document_id": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "issued_at": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "rate_limit_remaining": {
        -            "anyOf": [
        -              {
        -                "minimum": 0,
        -                "type": "integer"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "request_id": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "schema_version": {
        -            "const": "1.0.0",
        -            "default": "1.0.0",
        -            "type": "string"
        -          },
        -          "scope_boundary": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        -                "properties": {
        -                  "not_in_scope": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "produced": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "recommended_companions": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "type": "string"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "produced",
        -                  "not_in_scope"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tier": {
        -            "enum": [
        -              "free",
        -              "paid"
        -            ],
        -            "type": "string"
        -          },
        -          "tier_upgrade": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        -                "properties": {
        -                  "available_tiers": {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        -                      "properties": {
        -                        "billing": {
        -                          "enum": [
        -                            "one_off",
        -                            "monthly",
        -                            "annual"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "currency": {
        -                          "enum": [
        -                            "GBP",
        -                            "SGD",
        -                            "EUR",
        -                            "USD",
        -                            "CAD",
        -                            "AUD",
        -                            "NZD",
        -                            "MYR"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "display_name": {
        -                          "type": "string"
        -                        },
        -                        "price_local": {
        -                          "type": "number"
        -                        },
        -                        "tier_slug": {
        -                          "enum": [
        -                            "7_day_pass",
        -                            "solo",
        -                            "studio",
        -                            "practice"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "unlock_summary": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "tier_slug",
        -                        "display_name",
        -                        "price_local",
        -                        "currency",
        -                        "billing",
        -                        "unlock_summary"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "current_tier": {
        -                    "const": "free",
        -                    "default": "free",
        -                    "type": "string"
        -                  },
        -                  "pass_credit": {
        -                    "anyOf": [
        -                      {
        -                        "additionalProperties": false,
        -                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        -                        "properties": {
        -                          "amount_local": {
        -                            "type": "number"
        -                          },
        -                          "applies_to": {
        -                            "const": "solo_first_month",
        -                            "default": "solo_first_month",
        -                            "type": "string"
        -                          },
        -                          "currency": {
        -                            "type": "string"
        -                          },
        -                          "redeemable_until": {
        -                            "type": "string"
        -                          }
        -                        },
        -                        "required": [
        -                          "amount_local",
        -                          "currency",
        -                          "redeemable_until"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "pricing_url": {
        -                    "default": "https://civilquants.com/pricing",
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "available_tiers"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tos_url": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "upgrade_hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "warranty_disclaimer": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          }
        -        },
        -        "required": [
        -          "request_id",
        -          "issued_at",
        -          "tier"
        -        ],
        -        "type": "object"
        -      },
        -      "data": {
        -        "default": null,
        -        "title": "Data"
        -      },
        -      "error": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        -            "properties": {
        -              "code": {
        -                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        -                "enum": [
        -                  "RATE_LIMIT_EXCEEDED",
        -                  "TIER_INSUFFICIENT",
        -                  "INVALID_INPUT",
        -                  "SCHEMA_VERSION_MISMATCH",
        -                  "SCHEMA_INVARIANT_VIOLATION",
        -                  "UPSTREAM_TIMEOUT",
        -                  "BACKEND_FAILURE",
        -                  "IP_BLOCKED",
        -                  "RESOURCE_NOT_FOUND",
        -                  "RENDER_FAILURE",
        -                  "OCR_LOW_CONFIDENCE",
        -                  "MANUAL_REVIEW_REQUIRED",
        -                  "ACCEPTANCE_REQUIRED",
        -                  "INVALID_TOKEN"
        -                ],
        -                "type": "string"
        -              },
        -              "details": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "message": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "recoverable": {
        -                "type": "boolean"
        -              },
        -              "retry_after_seconds": {
        -                "anyOf": [
        -                  {
        -                    "minimum": 0,
        -                    "type": "integer"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              }
        -            },
        -            "required": [
        -              "code",
        -              "message",
        -              "recoverable"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      }
        -    },
        -    "required": [
        -      "_meta"
        -    ],
        -    "type": "object"
        -  }
        -]New value: +[
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "_meta": {
        +        "additionalProperties": false,
        +        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        +        "properties": {
        +          "deliverables": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        +                "properties": {
        +                  "docx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "dxf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "expires_at": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  },
        +                  "pdf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "xlsx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "expires_at"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "document_id": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "issued_at": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "output_mode": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Surfaces what a trimmed ``output_mode`` withheld from ``data``.\n\nA trimmed mode (``summary`` / ``boq`` / ``boq_with_backup``) withholds\nalready-computed fields to keep the chat payload small. The withheld value\nreads to a client agent as \"capability missing\" (the box-culvert \"geometry\nbuilder isn't firing\" scare) rather than \"pared for size\": ``drawing`` and\n``audit_trail`` appear as ``null``, ``boq_rows`` as an empty list ``[]``\n(its type forbids ``null``) — both indistinguishable from a genuine absent\nresult. This names the withheld fields and the exact mode that brings each\nback, so the value is unambiguous. Absent on the default ``full_json`` mode\n— nothing is withheld, nothing to point at.",
        +                "properties": {
        +                  "mode": {
        +                    "enum": [
        +                      "summary",
        +                      "boq",
        +                      "boq_with_backup"
        +                    ],
        +                    "type": "string"
        +                  },
        +                  "omitted_fields": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "minItems": 1,
        +                    "type": "array"
        +                  },
        +                  "retrieve_with": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "mode",
        +                  "omitted_fields",
        +                  "retrieve_with"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "rate_limit_remaining": {
        +            "anyOf": [
        +              {
        +                "minimum": 0,
        +                "type": "integer"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "request_id": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "schema_version": {
        +            "const": "1.0.0",
        +            "default": "1.0.0",
        +            "type": "string"
        +          },
        +          "scope_boundary": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        +                "properties": {
        +                  "not_in_scope": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "produced": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "recommended_companions": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "type": "string"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "produced",
        +                  "not_in_scope"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tier": {
        +            "enum": [
        +              "free",
        +              "paid"
        +            ],
        +            "type": "string"
        +          },
        +          "tier_upgrade": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        +                "properties": {
        +                  "available_tiers": {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        +                      "properties": {
        +                        "billing": {
        +                          "enum": [
        +                            "one_off",
        +                            "monthly",
        +                            "annual"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "currency": {
        +                          "enum": [
        +                            "GBP",
        +                            "SGD",
        +                            "EUR",
        +                            "USD",
        +                            "CAD",
        +                            "AUD",
        +                            "NZD",
        +                            "MYR"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "display_name": {
        +                          "type": "string"
        +                        },
        +                        "price_local": {
        +                          "type": "number"
        +                        },
        +                        "tier_slug": {
        +                          "enum": [
        +                            "7_day_pass",
        +                            "solo",
        +                            "studio",
        +                            "practice"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "unlock_summary": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "tier_slug",
        +                        "display_name",
        +                        "price_local",
        +                        "currency",
        +                        "billing",
        +                        "unlock_summary"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "current_tier": {
        +                    "const": "free",
        +                    "default": "free",
        +                    "type": "string"
        +                  },
        +                  "pass_credit": {
        +                    "anyOf": [
        +                      {
        +                        "additionalProperties": false,
        +                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        +                        "properties": {
        +                          "amount_local": {
        +                            "type": "number"
        +                          },
        +                          "applies_to": {
        +                            "const": "solo_first_month",
        +                            "default": "solo_first_month",
        +                            "type": "string"
        +                          },
        +                          "currency": {
        +                            "type": "string"
        +                          },
        +                          "redeemable_until": {
        +                            "type": "string"
        +                          }
        +                        },
        +                        "required": [
        +                          "amount_local",
        +                          "currency",
        +                          "redeemable_until"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "pricing_url": {
        +                    "default": "https://civilquants.com/pricing",
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "available_tiers"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tos_url": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "upgrade_hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "warranty_disclaimer": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          }
        +        },
        +        "required": [
        +          "request_id",
        +          "issued_at",
        +          "tier"
        +        ],
        +        "type": "object"
        +      },
        +      "data": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Schema § 1.1 — the typed payload returned inside `MCPResponse[ComputeResult]`.\n\nFree-tier responses omit `drawings` (the downloadable CAD artefact\npointers — the paid differentiator); the bridge enforces this. The\n`audit_trail` and the inline `drawing` preview are present on BOTH tiers\n(V1 ALIGN / 60th-fire D + C). `text_summary` is bounded to 2000 chars —\nkeeps the LLM-facing summary token-cheap and forces longer narrative into\nBoQ row descriptions where it belongs. `warnings` is the non-fatal\ngeometry advisory list (both tiers).",
        +            "properties": {
        +              "assembly_slug": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "audit_trail": {
        +                "anyOf": [
        +                  {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.7 — paid-tier audit-trail entry.\n\nOne entry per BoQ row; `boq_row_index` ties to the row position in\n`ComputeResult.boq_rows`. `derivation` is the human-readable formula\nwalk-through; `formula` is the optional formal expression.",
        +                      "properties": {
        +                        "boq_row_index": {
        +                          "minimum": 0,
        +                          "type": "integer"
        +                        },
        +                        "derivation": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "formula": {
        +                          "anyOf": [
        +                            {
        +                              "type": "string"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ],
        +                          "default": null
        +                        },
        +                        "id": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "parameters_referenced": {
        +                          "items": {
        +                            "type": "string"
        +                          },
        +                          "type": "array"
        +                        }
        +                      },
        +                      "required": [
        +                        "id",
        +                        "boq_row_index",
        +                        "derivation"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "boq_rows": {
        +                "items": {
        +                  "additionalProperties": false,
        +                  "description": "Schema § 1.3 — a single bill row in the requested standard's format.\n\n`description` is the non-verbatim functional description per spec § 13.9 /\n§ 15 invariant — NEVER reproduces a standard's verbatim clause text.\n`rate` / `amount` ship null because rates are commodity data the customer\nowns; the engine's job is the measurement, not the pricing.",
        +                  "properties": {
        +                    "amount": {
        +                      "anyOf": [
        +                        {
        +                          "type": "number"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "attribution": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "audit_id": {
        +                      "anyOf": [
        +                        {
        +                          "type": "string"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "description": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "quantity": {
        +                      "minimum": 0,
        +                      "type": "number"
        +                    },
        +                    "rate": {
        +                      "anyOf": [
        +                        {
        +                          "type": "number"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "unit": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "work_section": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    }
        +                  },
        +                  "required": [
        +                    "work_section",
        +                    "description",
        +                    "quantity",
        +                    "unit",
        +                    "attribution"
        +                  ],
        +                  "type": "object"
        +                },
        +                "type": "array"
        +              },
        +              "drawing": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": false,
        +                    "description": "Schema § 1.6a — inline server-rendered SVG preview of the geometry.\n\nThe MCP mirror of the web ``/compute`` response's ``drawing`` field\n(``api.schemas.compute.DrawingRef``): the same on-screen dimensioned\ndrawing both tiers see in the workspace, surfaced on the MCP compute\nresponse so a chat client can render it inline (60th-fire item C). This\nis the on-screen preview — present on BOTH tiers per the free/paid\nboundary; the downloadable CAD artefacts (DXF / dimensioned PDF) remain\nthe paid differentiator via the export tools.\n\nDefined here rather than importing ``DrawingRef`` because the web\n``schemas`` package imports back into this module (``schemas.render``),\nso reusing it would create an import cycle — the MCP wire contract keeps\nits own copy, the same pattern as ``BoQRow`` / ``DrawingReference``.",
        +                    "properties": {
        +                      "entity_count": {
        +                        "minimum": 0,
        +                        "type": "integer"
        +                      },
        +                      "svg_b64": {
        +                        "minLength": 1,
        +                        "type": "string"
        +                      },
        +                      "unit_of_drawing": {
        +                        "const": "m",
        +                        "default": "m",
        +                        "type": "string"
        +                      },
        +                      "viewbox_height": {
        +                        "exclusiveMinimum": 0,
        +                        "type": "number"
        +                      },
        +                      "viewbox_width": {
        +                        "exclusiveMinimum": 0,
        +                        "type": "number"
        +                      },
        +                      "viewbox_x": {
        +                        "type": "number"
        +                      },
        +                      "viewbox_y": {
        +                        "type": "number"
        +                      }
        +                    },
        +                    "required": [
        +                      "svg_b64",
        +                      "viewbox_x",
        +                      "viewbox_y",
        +                      "viewbox_width",
        +                      "viewbox_height",
        +                      "entity_count"
        +                    ],
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "drawings": {
        +                "anyOf": [
        +                  {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.6 — paid-tier drawing artefact pointer.\n\n`url` is an R2-signed URL; expiry is carried in `_meta.deliverables.expires_at`\non the envelope (not duplicated here). `layers` is DXF-only; PDF/SVG\ncallers omit it.",
        +                      "properties": {
        +                        "drawing_type": {
        +                          "enum": [
        +                            "section",
        +                            "plan",
        +                            "elevation",
        +                            "isometric",
        +                            "detail"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "format": {
        +                          "enum": [
        +                            "DXF",
        +                            "PDF",
        +                            "SVG"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "layers": {
        +                          "anyOf": [
        +                            {
        +                              "items": {
        +                                "type": "string"
        +                              },
        +                              "type": "array"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ],
        +                          "default": null
        +                        },
        +                        "scale": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "sheet_size": {
        +                          "enum": [
        +                            "A1",
        +                            "A2",
        +                            "A3",
        +                            "A4"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "url": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "drawing_type",
        +                        "format",
        +                        "url",
        +                        "sheet_size",
        +                        "scale"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "parameters_used": {
        +                "additionalProperties": false,
        +                "description": "Schema § 1.2 — the parameter snapshot the engine actually used.\n\nSplits user-supplied values from engine defaults so customers can see\nwhich numbers came from them and which the engine filled in. Every\ndefaulted parameter SHOULD have a corresponding entry in `assumptions`\n— the bridge layer enforces this when wrapping engine output.",
        +                "properties": {
        +                  "assumptions": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "engine_defaults": {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  "user_supplied": {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  }
        +                },
        +                "type": "object"
        +              },
        +              "standard": {
        +                "enum": [
        +                  "CESMM4",
        +                  "NRM2",
        +                  "SMM7",
        +                  "MMHW"
        +                ],
        +                "type": "string"
        +              },
        +              "text_summary": {
        +                "maxLength": 2000,
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "totals_summary": {
        +                "additionalProperties": false,
        +                "description": "Schema § 1.4 — totals_summary as a typed wrapper around the free-form dict.\n\nWire shape is a flat object (`{\"concrete_m3\": {...}, \"rebar_t\": {...}}`).\nWe model it as `RootModel`-equivalent via `model_config(extra=\"allow\")`\n+ a single `__root__`-style `entries` dict. Pydantic v2 recommends\n`RootModel` for free-form roots; using a wrapper class keeps the import\nsurface uniform with the rest of this module.",
        +                "properties": {
        +                  "entries": {
        +                    "additionalProperties": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.4 — single material/work-class total entry.",
        +                      "properties": {
        +                        "quantity": {
        +                          "minimum": 0,
        +                          "type": "number"
        +                        },
        +                        "unit": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "quantity",
        +                        "unit"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "object"
        +                  }
        +                },
        +                "type": "object"
        +              },
        +              "warnings": {
        +                "items": {
        +                  "additionalProperties": false,
        +                  "description": "Schema § 1.8 — a non-fatal geometry advisory (56th-fire T2).\n\nThe wire projection of the engine's `core.GeometryWarning`. Advisory only:\na warning NEVER changes a measured quantity — it flags geometry that is\nvalid but likely a mistake (e.g. a stale dependent-height default). Present\non BOTH tiers — a correctness/safety signal, not a paid feature.",
        +                  "properties": {
        +                    "affected_params": {
        +                      "items": {
        +                        "type": "string"
        +                      },
        +                      "type": "array"
        +                    },
        +                    "code": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "detail": {
        +                      "additionalProperties": {
        +                        "type": "number"
        +                      },
        +                      "type": "object"
        +                    },
        +                    "message": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "severity": {
        +                      "enum": [
        +                        "info",
        +                        "advisory",
        +                        "caution"
        +                      ],
        +                      "type": "string"
        +                    }
        +                  },
        +                  "required": [
        +                    "code",
        +                    "severity",
        +                    "message"
        +                  ],
        +                  "type": "object"
        +                },
        +                "type": "array"
        +              }
        +            },
        +            "required": [
        +              "assembly_slug",
        +              "standard",
        +              "parameters_used",
        +              "boq_rows",
        +              "totals_summary",
        +              "text_summary"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      },
        +      "error": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        +            "properties": {
        +              "code": {
        +                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        +                "enum": [
        +                  "RATE_LIMIT_EXCEEDED",
        +                  "TIER_INSUFFICIENT",
        +                  "INVALID_INPUT",
        +                  "SCHEMA_VERSION_MISMATCH",
        +                  "SCHEMA_INVARIANT_VIOLATION",
        +                  "UPSTREAM_TIMEOUT",
        +                  "BACKEND_FAILURE",
        +                  "IP_BLOCKED",
        +                  "RESOURCE_NOT_FOUND",
        +                  "RENDER_FAILURE",
        +                  "OCR_LOW_CONFIDENCE",
        +                  "MANUAL_REVIEW_REQUIRED",
        +                  "ACCEPTANCE_REQUIRED",
        +                  "INVALID_TOKEN"
        +                ],
        +                "type": "string"
        +              },
        +              "details": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "message": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "recoverable": {
        +                "type": "boolean"
        +              },
        +              "retry_after_seconds": {
        +                "anyOf": [
        +                  {
        +                    "minimum": 0,
        +                    "type": "integer"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              }
        +            },
        +            "required": [
        +              "code",
        +              "message",
        +              "recoverable"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      }
        +    },
        +    "required": [
        +      "_meta"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "_meta": {
        +        "additionalProperties": false,
        +        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        +        "properties": {
        +          "deliverables": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        +                "properties": {
        +                  "docx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "dxf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "expires_at": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  },
        +                  "pdf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "xlsx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "expires_at"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "document_id": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "issued_at": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "output_mode": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Surfaces what a trimmed ``output_mode`` withheld from ``data``.\n\nA trimmed mode (``summary`` / ``boq`` / ``boq_with_backup``) withholds\nalready-computed fields to keep the chat payload small. The withheld value\nreads to a client agent as \"capability missing\" (the box-culvert \"geometry\nbuilder isn't firing\" scare) rather than \"pared for size\": ``drawing`` and\n``audit_trail`` appear as ``null``, ``boq_rows`` as an empty list ``[]``\n(its type forbids ``null``) — both indistinguishable from a genuine absent\nresult. This names the withheld fields and the exact mode that brings each\nback, so the value is unambiguous. Absent on the default ``full_json`` mode\n— nothing is withheld, nothing to point at.",
        +                "properties": {
        +                  "mode": {
        +                    "enum": [
        +                      "summary",
        +                      "boq",
        +                      "boq_with_backup"
        +                    ],
        +                    "type": "string"
        +                  },
        +                  "omitted_fields": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "minItems": 1,
        +                    "type": "array"
        +                  },
        +                  "retrieve_with": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "mode",
        +                  "omitted_fields",
        +                  "retrieve_with"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "rate_limit_remaining": {
        +            "anyOf": [
        +              {
        +                "minimum": 0,
        +                "type": "integer"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "request_id": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "schema_version": {
        +            "const": "1.0.0",
        +            "default": "1.0.0",
        +            "type": "string"
        +          },
        +          "scope_boundary": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        +                "properties": {
        +                  "not_in_scope": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "produced": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "recommended_companions": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "type": "string"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "produced",
        +                  "not_in_scope"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tier": {
        +            "enum": [
        +              "free",
        +              "paid"
        +            ],
        +            "type": "string"
        +          },
        +          "tier_upgrade": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        +                "properties": {
        +                  "available_tiers": {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        +                      "properties": {
        +                        "billing": {
        +                          "enum": [
        +                            "one_off",
        +                            "monthly",
        +                            "annual"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "currency": {
        +                          "enum": [
        +                            "GBP",
        +                            "SGD",
        +                            "EUR",
        +                            "USD",
        +                            "CAD",
        +                            "AUD",
        +                            "NZD",
        +                            "MYR"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "display_name": {
        +                          "type": "string"
        +                        },
        +                        "price_local": {
        +                          "type": "number"
        +                        },
        +                        "tier_slug": {
        +                          "enum": [
        +                            "7_day_pass",
        +                            "solo",
        +                            "studio",
        +                            "practice"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "unlock_summary": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "tier_slug",
        +                        "display_name",
        +                        "price_local",
        +                        "currency",
        +                        "billing",
        +                        "unlock_summary"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "current_tier": {
        +                    "const": "free",
        +                    "default": "free",
        +                    "type": "string"
        +                  },
        +                  "pass_credit": {
        +                    "anyOf": [
        +                      {
        +                        "additionalProperties": false,
        +                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        +                        "properties": {
        +                          "amount_local": {
        +                            "type": "number"
        +                          },
        +                          "applies_to": {
        +                            "const": "solo_first_month",
        +                            "default": "solo_first_month",
        +                            "type": "string"
        +                          },
        +                          "currency": {
        +                            "type": "string"
        +                          },
        +                          "redeemable_until": {
        +                            "type": "string"
        +                          }
        +                        },
        +                        "required": [
        +                          "amount_local",
        +                          "currency",
        +                          "redeemable_until"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "pricing_url": {
        +                    "default": "https://civilquants.com/pricing",
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "available_tiers"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tos_url": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "upgrade_hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "warranty_disclaimer": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          }
        +        },
        +        "required": [
        +          "request_id",
        +          "issued_at",
        +          "tier"
        +        ],
        +        "type": "object"
        +      },
        +      "data": {
        +        "default": null,
        +        "title": "Data"
        +      },
        +      "error": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        +            "properties": {
        +              "code": {
        +                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        +                "enum": [
        +                  "RATE_LIMIT_EXCEEDED",
        +                  "TIER_INSUFFICIENT",
        +                  "INVALID_INPUT",
        +                  "SCHEMA_VERSION_MISMATCH",
        +                  "SCHEMA_INVARIANT_VIOLATION",
        +                  "UPSTREAM_TIMEOUT",
        +                  "BACKEND_FAILURE",
        +                  "IP_BLOCKED",
        +                  "RESOURCE_NOT_FOUND",
        +                  "RENDER_FAILURE",
        +                  "OCR_LOW_CONFIDENCE",
        +                  "MANUAL_REVIEW_REQUIRED",
        +                  "ACCEPTANCE_REQUIRED",
        +                  "INVALID_TOKEN"
        +                ],
        +                "type": "string"
        +              },
        +              "details": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "message": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "recoverable": {
        +                "type": "boolean"
        +              },
        +              "retry_after_seconds": {
        +                "anyOf": [
        +                  {
        +                    "minimum": 0,
        +                    "type": "integer"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              }
        +            },
        +            "required": [
        +              "code",
        +              "message",
        +              "recoverable"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      }
        +    },
        +    "required": [
        +      "_meta"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedcompute_vehicle_restraint_system1 field changed
      • changedOutput schema / properties / result / anyOf
        Previous value: -[
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "_meta": {
        -        "additionalProperties": false,
        -        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        -        "properties": {
        -          "deliverables": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        -                "properties": {
        -                  "docx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "dxf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "expires_at": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  },
        -                  "pdf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "xlsx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "expires_at"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "document_id": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "issued_at": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "rate_limit_remaining": {
        -            "anyOf": [
        -              {
        -                "minimum": 0,
        -                "type": "integer"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "request_id": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "schema_version": {
        -            "const": "1.0.0",
        -            "default": "1.0.0",
        -            "type": "string"
        -          },
        -          "scope_boundary": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        -                "properties": {
        -                  "not_in_scope": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "produced": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "recommended_companions": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "type": "string"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "produced",
        -                  "not_in_scope"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tier": {
        -            "enum": [
        -              "free",
        -              "paid"
        -            ],
        -            "type": "string"
        -          },
        -          "tier_upgrade": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        -                "properties": {
        -                  "available_tiers": {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        -                      "properties": {
        -                        "billing": {
        -                          "enum": [
        -                            "one_off",
        -                            "monthly",
        -                            "annual"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "currency": {
        -                          "enum": [
        -                            "GBP",
        -                            "SGD",
        -                            "EUR",
        -                            "USD",
        -                            "CAD",
        -                            "AUD",
        -                            "NZD",
        -                            "MYR"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "display_name": {
        -                          "type": "string"
        -                        },
        -                        "price_local": {
        -                          "type": "number"
        -                        },
        -                        "tier_slug": {
        -                          "enum": [
        -                            "7_day_pass",
        -                            "solo",
        -                            "studio",
        -                            "practice"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "unlock_summary": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "tier_slug",
        -                        "display_name",
        -                        "price_local",
        -                        "currency",
        -                        "billing",
        -                        "unlock_summary"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "current_tier": {
        -                    "const": "free",
        -                    "default": "free",
        -                    "type": "string"
        -                  },
        -                  "pass_credit": {
        -                    "anyOf": [
        -                      {
        -                        "additionalProperties": false,
        -                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        -                        "properties": {
        -                          "amount_local": {
        -                            "type": "number"
        -                          },
        -                          "applies_to": {
        -                            "const": "solo_first_month",
        -                            "default": "solo_first_month",
        -                            "type": "string"
        -                          },
        -                          "currency": {
        -                            "type": "string"
        -                          },
        -                          "redeemable_until": {
        -                            "type": "string"
        -                          }
        -                        },
        -                        "required": [
        -                          "amount_local",
        -                          "currency",
        -                          "redeemable_until"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "pricing_url": {
        -                    "default": "https://civilquants.com/pricing",
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "available_tiers"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tos_url": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "upgrade_hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "warranty_disclaimer": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          }
        -        },
        -        "required": [
        -          "request_id",
        -          "issued_at",
        -          "tier"
        -        ],
        -        "type": "object"
        -      },
        -      "data": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Schema § 1.1 — the typed payload returned inside `MCPResponse[ComputeResult]`.\n\nFree-tier responses omit `drawings` (the downloadable CAD artefact\npointers — the paid differentiator); the bridge enforces this. The\n`audit_trail` and the inline `drawing` preview are present on BOTH tiers\n(V1 ALIGN / 60th-fire D + C). `text_summary` is bounded to 2000 chars —\nkeeps the LLM-facing summary token-cheap and forces longer narrative into\nBoQ row descriptions where it belongs. `warnings` is the non-fatal\ngeometry advisory list (both tiers).",
        -            "properties": {
        -              "assembly_slug": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "audit_trail": {
        -                "anyOf": [
        -                  {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.7 — paid-tier audit-trail entry.\n\nOne entry per BoQ row; `boq_row_index` ties to the row position in\n`ComputeResult.boq_rows`. `derivation` is the human-readable formula\nwalk-through; `formula` is the optional formal expression.",
        -                      "properties": {
        -                        "boq_row_index": {
        -                          "minimum": 0,
        -                          "type": "integer"
        -                        },
        -                        "derivation": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "formula": {
        -                          "anyOf": [
        -                            {
        -                              "type": "string"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ],
        -                          "default": null
        -                        },
        -                        "id": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "parameters_referenced": {
        -                          "items": {
        -                            "type": "string"
        -                          },
        -                          "type": "array"
        -                        }
        -                      },
        -                      "required": [
        -                        "id",
        -                        "boq_row_index",
        -                        "derivation"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "boq_rows": {
        -                "items": {
        -                  "additionalProperties": false,
        -                  "description": "Schema § 1.3 — a single bill row in the requested standard's format.\n\n`description` is the non-verbatim functional description per spec § 13.9 /\n§ 15 invariant — NEVER reproduces a standard's verbatim clause text.\n`rate` / `amount` ship null because rates are commodity data the customer\nowns; the engine's job is the measurement, not the pricing.",
        -                  "properties": {
        -                    "amount": {
        -                      "anyOf": [
        -                        {
        -                          "type": "number"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "attribution": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "audit_id": {
        -                      "anyOf": [
        -                        {
        -                          "type": "string"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "description": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "quantity": {
        -                      "minimum": 0,
        -                      "type": "number"
        -                    },
        -                    "rate": {
        -                      "anyOf": [
        -                        {
        -                          "type": "number"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "unit": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "work_section": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    }
        -                  },
        -                  "required": [
        -                    "work_section",
        -                    "description",
        -                    "quantity",
        -                    "unit",
        -                    "attribution"
        -                  ],
        -                  "type": "object"
        -                },
        -                "type": "array"
        -              },
        -              "drawing": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": false,
        -                    "description": "Schema § 1.6a — inline server-rendered SVG preview of the geometry.\n\nThe MCP mirror of the web ``/compute`` response's ``drawing`` field\n(``api.schemas.compute.DrawingRef``): the same on-screen dimensioned\ndrawing both tiers see in the workspace, surfaced on the MCP compute\nresponse so a chat client can render it inline (60th-fire item C). This\nis the on-screen preview — present on BOTH tiers per the free/paid\nboundary; the downloadable CAD artefacts (DXF / dimensioned PDF) remain\nthe paid differentiator via the export tools.\n\nDefined here rather than importing ``DrawingRef`` because the web\n``schemas`` package imports back into this module (``schemas.render``),\nso reusing it would create an import cycle — the MCP wire contract keeps\nits own copy, the same pattern as ``BoQRow`` / ``DrawingReference``.",
        -                    "properties": {
        -                      "entity_count": {
        -                        "minimum": 0,
        -                        "type": "integer"
        -                      },
        -                      "svg_b64": {
        -                        "minLength": 1,
        -                        "type": "string"
        -                      },
        -                      "unit_of_drawing": {
        -                        "const": "m",
        -                        "default": "m",
        -                        "type": "string"
        -                      },
        -                      "viewbox_height": {
        -                        "exclusiveMinimum": 0,
        -                        "type": "number"
        -                      },
        -                      "viewbox_width": {
        -                        "exclusiveMinimum": 0,
        -                        "type": "number"
        -                      },
        -                      "viewbox_x": {
        -                        "type": "number"
        -                      },
        -                      "viewbox_y": {
        -                        "type": "number"
        -                      }
        -                    },
        -                    "required": [
        -                      "svg_b64",
        -                      "viewbox_x",
        -                      "viewbox_y",
        -                      "viewbox_width",
        -                      "viewbox_height",
        -                      "entity_count"
        -                    ],
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "drawings": {
        -                "anyOf": [
        -                  {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.6 — paid-tier drawing artefact pointer.\n\n`url` is an R2-signed URL; expiry is carried in `_meta.deliverables.expires_at`\non the envelope (not duplicated here). `layers` is DXF-only; PDF/SVG\ncallers omit it.",
        -                      "properties": {
        -                        "drawing_type": {
        -                          "enum": [
        -                            "section",
        -                            "plan",
        -                            "elevation",
        -                            "isometric",
        -                            "detail"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "format": {
        -                          "enum": [
        -                            "DXF",
        -                            "PDF",
        -                            "SVG"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "layers": {
        -                          "anyOf": [
        -                            {
        -                              "items": {
        -                                "type": "string"
        -                              },
        -                              "type": "array"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ],
        -                          "default": null
        -                        },
        -                        "scale": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "sheet_size": {
        -                          "enum": [
        -                            "A1",
        -                            "A2",
        -                            "A3",
        -                            "A4"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "url": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "drawing_type",
        -                        "format",
        -                        "url",
        -                        "sheet_size",
        -                        "scale"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "parameters_used": {
        -                "additionalProperties": false,
        -                "description": "Schema § 1.2 — the parameter snapshot the engine actually used.\n\nSplits user-supplied values from engine defaults so customers can see\nwhich numbers came from them and which the engine filled in. Every\ndefaulted parameter SHOULD have a corresponding entry in `assumptions`\n— the bridge layer enforces this when wrapping engine output.",
        -                "properties": {
        -                  "assumptions": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "engine_defaults": {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  "user_supplied": {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  }
        -                },
        -                "type": "object"
        -              },
        -              "standard": {
        -                "enum": [
        -                  "CESMM4",
        -                  "NRM2",
        -                  "SMM7",
        -                  "MMHW"
        -                ],
        -                "type": "string"
        -              },
        -              "text_summary": {
        -                "maxLength": 2000,
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "totals_summary": {
        -                "additionalProperties": false,
        -                "description": "Schema § 1.4 — totals_summary as a typed wrapper around the free-form dict.\n\nWire shape is a flat object (`{\"concrete_m3\": {...}, \"rebar_t\": {...}}`).\nWe model it as `RootModel`-equivalent via `model_config(extra=\"allow\")`\n+ a single `__root__`-style `entries` dict. Pydantic v2 recommends\n`RootModel` for free-form roots; using a wrapper class keeps the import\nsurface uniform with the rest of this module.",
        -                "properties": {
        -                  "entries": {
        -                    "additionalProperties": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.4 — single material/work-class total entry.",
        -                      "properties": {
        -                        "quantity": {
        -                          "minimum": 0,
        -                          "type": "number"
        -                        },
        -                        "unit": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "quantity",
        -                        "unit"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "object"
        -                  }
        -                },
        -                "type": "object"
        -              },
        -              "warnings": {
        -                "items": {
        -                  "additionalProperties": false,
        -                  "description": "Schema § 1.8 — a non-fatal geometry advisory (56th-fire T2).\n\nThe wire projection of the engine's `core.GeometryWarning`. Advisory only:\na warning NEVER changes a measured quantity — it flags geometry that is\nvalid but likely a mistake (e.g. a stale dependent-height default). Present\non BOTH tiers — a correctness/safety signal, not a paid feature.",
        -                  "properties": {
        -                    "affected_params": {
        -                      "items": {
        -                        "type": "string"
        -                      },
        -                      "type": "array"
        -                    },
        -                    "code": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "detail": {
        -                      "additionalProperties": {
        -                        "type": "number"
        -                      },
        -                      "type": "object"
        -                    },
        -                    "message": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "severity": {
        -                      "enum": [
        -                        "info",
        -                        "advisory",
        -                        "caution"
        -                      ],
        -                      "type": "string"
        -                    }
        -                  },
        -                  "required": [
        -                    "code",
        -                    "severity",
        -                    "message"
        -                  ],
        -                  "type": "object"
        -                },
        -                "type": "array"
        -              }
        -            },
        -            "required": [
        -              "assembly_slug",
        -              "standard",
        -              "parameters_used",
        -              "boq_rows",
        -              "totals_summary",
        -              "text_summary"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      },
        -      "error": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        -            "properties": {
        -              "code": {
        -                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        -                "enum": [
        -                  "RATE_LIMIT_EXCEEDED",
        -                  "TIER_INSUFFICIENT",
        -                  "INVALID_INPUT",
        -                  "SCHEMA_VERSION_MISMATCH",
        -                  "SCHEMA_INVARIANT_VIOLATION",
        -                  "UPSTREAM_TIMEOUT",
        -                  "BACKEND_FAILURE",
        -                  "IP_BLOCKED",
        -                  "RESOURCE_NOT_FOUND",
        -                  "RENDER_FAILURE",
        -                  "OCR_LOW_CONFIDENCE",
        -                  "MANUAL_REVIEW_REQUIRED",
        -                  "ACCEPTANCE_REQUIRED",
        -                  "INVALID_TOKEN"
        -                ],
        -                "type": "string"
        -              },
        -              "details": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "message": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "recoverable": {
        -                "type": "boolean"
        -              },
        -              "retry_after_seconds": {
        -                "anyOf": [
        -                  {
        -                    "minimum": 0,
        -                    "type": "integer"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              }
        -            },
        -            "required": [
        -              "code",
        -              "message",
        -              "recoverable"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      }
        -    },
        -    "required": [
        -      "_meta"
        -    ],
        -    "type": "object"
        -  },
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "_meta": {
        -        "additionalProperties": false,
        -        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        -        "properties": {
        -          "deliverables": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        -                "properties": {
        -                  "docx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "dxf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "expires_at": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  },
        -                  "pdf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "xlsx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "expires_at"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "document_id": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "issued_at": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "rate_limit_remaining": {
        -            "anyOf": [
        -              {
        -                "minimum": 0,
        -                "type": "integer"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "request_id": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "schema_version": {
        -            "const": "1.0.0",
        -            "default": "1.0.0",
        -            "type": "string"
        -          },
        -          "scope_boundary": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        -                "properties": {
        -                  "not_in_scope": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "produced": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "recommended_companions": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "type": "string"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "produced",
        -                  "not_in_scope"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tier": {
        -            "enum": [
        -              "free",
        -              "paid"
        -            ],
        -            "type": "string"
        -          },
        -          "tier_upgrade": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        -                "properties": {
        -                  "available_tiers": {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        -                      "properties": {
        -                        "billing": {
        -                          "enum": [
        -                            "one_off",
        -                            "monthly",
        -                            "annual"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "currency": {
        -                          "enum": [
        -                            "GBP",
        -                            "SGD",
        -                            "EUR",
        -                            "USD",
        -                            "CAD",
        -                            "AUD",
        -                            "NZD",
        -                            "MYR"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "display_name": {
        -                          "type": "string"
        -                        },
        -                        "price_local": {
        -                          "type": "number"
        -                        },
        -                        "tier_slug": {
        -                          "enum": [
        -                            "7_day_pass",
        -                            "solo",
        -                            "studio",
        -                            "practice"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "unlock_summary": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "tier_slug",
        -                        "display_name",
        -                        "price_local",
        -                        "currency",
        -                        "billing",
        -                        "unlock_summary"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "current_tier": {
        -                    "const": "free",
        -                    "default": "free",
        -                    "type": "string"
        -                  },
        -                  "pass_credit": {
        -                    "anyOf": [
        -                      {
        -                        "additionalProperties": false,
        -                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        -                        "properties": {
        -                          "amount_local": {
        -                            "type": "number"
        -                          },
        -                          "applies_to": {
        -                            "const": "solo_first_month",
        -                            "default": "solo_first_month",
        -                            "type": "string"
        -                          },
        -                          "currency": {
        -                            "type": "string"
        -                          },
        -                          "redeemable_until": {
        -                            "type": "string"
        -                          }
        -                        },
        -                        "required": [
        -                          "amount_local",
        -                          "currency",
        -                          "redeemable_until"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "pricing_url": {
        -                    "default": "https://civilquants.com/pricing",
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "available_tiers"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tos_url": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "upgrade_hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "warranty_disclaimer": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          }
        -        },
        -        "required": [
        -          "request_id",
        -          "issued_at",
        -          "tier"
        -        ],
        -        "type": "object"
        -      },
        -      "data": {
        -        "default": null,
        -        "title": "Data"
        -      },
        -      "error": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        -            "properties": {
        -              "code": {
        -                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        -                "enum": [
        -                  "RATE_LIMIT_EXCEEDED",
        -                  "TIER_INSUFFICIENT",
        -                  "INVALID_INPUT",
        -                  "SCHEMA_VERSION_MISMATCH",
        -                  "SCHEMA_INVARIANT_VIOLATION",
        -                  "UPSTREAM_TIMEOUT",
        -                  "BACKEND_FAILURE",
        -                  "IP_BLOCKED",
        -                  "RESOURCE_NOT_FOUND",
        -                  "RENDER_FAILURE",
        -                  "OCR_LOW_CONFIDENCE",
        -                  "MANUAL_REVIEW_REQUIRED",
        -                  "ACCEPTANCE_REQUIRED",
        -                  "INVALID_TOKEN"
        -                ],
        -                "type": "string"
        -              },
        -              "details": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "message": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "recoverable": {
        -                "type": "boolean"
        -              },
        -              "retry_after_seconds": {
        -                "anyOf": [
        -                  {
        -                    "minimum": 0,
        -                    "type": "integer"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              }
        -            },
        -            "required": [
        -              "code",
        -              "message",
        -              "recoverable"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      }
        -    },
        -    "required": [
        -      "_meta"
        -    ],
        -    "type": "object"
        -  }
        -]New value: +[
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "_meta": {
        +        "additionalProperties": false,
        +        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        +        "properties": {
        +          "deliverables": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        +                "properties": {
        +                  "docx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "dxf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "expires_at": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  },
        +                  "pdf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "xlsx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "expires_at"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "document_id": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "issued_at": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "output_mode": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Surfaces what a trimmed ``output_mode`` withheld from ``data``.\n\nA trimmed mode (``summary`` / ``boq`` / ``boq_with_backup``) withholds\nalready-computed fields to keep the chat payload small. The withheld value\nreads to a client agent as \"capability missing\" (the box-culvert \"geometry\nbuilder isn't firing\" scare) rather than \"pared for size\": ``drawing`` and\n``audit_trail`` appear as ``null``, ``boq_rows`` as an empty list ``[]``\n(its type forbids ``null``) — both indistinguishable from a genuine absent\nresult. This names the withheld fields and the exact mode that brings each\nback, so the value is unambiguous. Absent on the default ``full_json`` mode\n— nothing is withheld, nothing to point at.",
        +                "properties": {
        +                  "mode": {
        +                    "enum": [
        +                      "summary",
        +                      "boq",
        +                      "boq_with_backup"
        +                    ],
        +                    "type": "string"
        +                  },
        +                  "omitted_fields": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "minItems": 1,
        +                    "type": "array"
        +                  },
        +                  "retrieve_with": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "mode",
        +                  "omitted_fields",
        +                  "retrieve_with"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "rate_limit_remaining": {
        +            "anyOf": [
        +              {
        +                "minimum": 0,
        +                "type": "integer"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "request_id": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "schema_version": {
        +            "const": "1.0.0",
        +            "default": "1.0.0",
        +            "type": "string"
        +          },
        +          "scope_boundary": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        +                "properties": {
        +                  "not_in_scope": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "produced": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "recommended_companions": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "type": "string"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "produced",
        +                  "not_in_scope"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tier": {
        +            "enum": [
        +              "free",
        +              "paid"
        +            ],
        +            "type": "string"
        +          },
        +          "tier_upgrade": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        +                "properties": {
        +                  "available_tiers": {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        +                      "properties": {
        +                        "billing": {
        +                          "enum": [
        +                            "one_off",
        +                            "monthly",
        +                            "annual"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "currency": {
        +                          "enum": [
        +                            "GBP",
        +                            "SGD",
        +                            "EUR",
        +                            "USD",
        +                            "CAD",
        +                            "AUD",
        +                            "NZD",
        +                            "MYR"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "display_name": {
        +                          "type": "string"
        +                        },
        +                        "price_local": {
        +                          "type": "number"
        +                        },
        +                        "tier_slug": {
        +                          "enum": [
        +                            "7_day_pass",
        +                            "solo",
        +                            "studio",
        +                            "practice"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "unlock_summary": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "tier_slug",
        +                        "display_name",
        +                        "price_local",
        +                        "currency",
        +                        "billing",
        +                        "unlock_summary"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "current_tier": {
        +                    "const": "free",
        +                    "default": "free",
        +                    "type": "string"
        +                  },
        +                  "pass_credit": {
        +                    "anyOf": [
        +                      {
        +                        "additionalProperties": false,
        +                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        +                        "properties": {
        +                          "amount_local": {
        +                            "type": "number"
        +                          },
        +                          "applies_to": {
        +                            "const": "solo_first_month",
        +                            "default": "solo_first_month",
        +                            "type": "string"
        +                          },
        +                          "currency": {
        +                            "type": "string"
        +                          },
        +                          "redeemable_until": {
        +                            "type": "string"
        +                          }
        +                        },
        +                        "required": [
        +                          "amount_local",
        +                          "currency",
        +                          "redeemable_until"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "pricing_url": {
        +                    "default": "https://civilquants.com/pricing",
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "available_tiers"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tos_url": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "upgrade_hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "warranty_disclaimer": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          }
        +        },
        +        "required": [
        +          "request_id",
        +          "issued_at",
        +          "tier"
        +        ],
        +        "type": "object"
        +      },
        +      "data": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Schema § 1.1 — the typed payload returned inside `MCPResponse[ComputeResult]`.\n\nFree-tier responses omit `drawings` (the downloadable CAD artefact\npointers — the paid differentiator); the bridge enforces this. The\n`audit_trail` and the inline `drawing` preview are present on BOTH tiers\n(V1 ALIGN / 60th-fire D + C). `text_summary` is bounded to 2000 chars —\nkeeps the LLM-facing summary token-cheap and forces longer narrative into\nBoQ row descriptions where it belongs. `warnings` is the non-fatal\ngeometry advisory list (both tiers).",
        +            "properties": {
        +              "assembly_slug": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "audit_trail": {
        +                "anyOf": [
        +                  {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.7 — paid-tier audit-trail entry.\n\nOne entry per BoQ row; `boq_row_index` ties to the row position in\n`ComputeResult.boq_rows`. `derivation` is the human-readable formula\nwalk-through; `formula` is the optional formal expression.",
        +                      "properties": {
        +                        "boq_row_index": {
        +                          "minimum": 0,
        +                          "type": "integer"
        +                        },
        +                        "derivation": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "formula": {
        +                          "anyOf": [
        +                            {
        +                              "type": "string"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ],
        +                          "default": null
        +                        },
        +                        "id": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "parameters_referenced": {
        +                          "items": {
        +                            "type": "string"
        +                          },
        +                          "type": "array"
        +                        }
        +                      },
        +                      "required": [
        +                        "id",
        +                        "boq_row_index",
        +                        "derivation"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "boq_rows": {
        +                "items": {
        +                  "additionalProperties": false,
        +                  "description": "Schema § 1.3 — a single bill row in the requested standard's format.\n\n`description` is the non-verbatim functional description per spec § 13.9 /\n§ 15 invariant — NEVER reproduces a standard's verbatim clause text.\n`rate` / `amount` ship null because rates are commodity data the customer\nowns; the engine's job is the measurement, not the pricing.",
        +                  "properties": {
        +                    "amount": {
        +                      "anyOf": [
        +                        {
        +                          "type": "number"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "attribution": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "audit_id": {
        +                      "anyOf": [
        +                        {
        +                          "type": "string"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "description": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "quantity": {
        +                      "minimum": 0,
        +                      "type": "number"
        +                    },
        +                    "rate": {
        +                      "anyOf": [
        +                        {
        +                          "type": "number"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "unit": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "work_section": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    }
        +                  },
        +                  "required": [
        +                    "work_section",
        +                    "description",
        +                    "quantity",
        +                    "unit",
        +                    "attribution"
        +                  ],
        +                  "type": "object"
        +                },
        +                "type": "array"
        +              },
        +              "drawing": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": false,
        +                    "description": "Schema § 1.6a — inline server-rendered SVG preview of the geometry.\n\nThe MCP mirror of the web ``/compute`` response's ``drawing`` field\n(``api.schemas.compute.DrawingRef``): the same on-screen dimensioned\ndrawing both tiers see in the workspace, surfaced on the MCP compute\nresponse so a chat client can render it inline (60th-fire item C). This\nis the on-screen preview — present on BOTH tiers per the free/paid\nboundary; the downloadable CAD artefacts (DXF / dimensioned PDF) remain\nthe paid differentiator via the export tools.\n\nDefined here rather than importing ``DrawingRef`` because the web\n``schemas`` package imports back into this module (``schemas.render``),\nso reusing it would create an import cycle — the MCP wire contract keeps\nits own copy, the same pattern as ``BoQRow`` / ``DrawingReference``.",
        +                    "properties": {
        +                      "entity_count": {
        +                        "minimum": 0,
        +                        "type": "integer"
        +                      },
        +                      "svg_b64": {
        +                        "minLength": 1,
        +                        "type": "string"
        +                      },
        +                      "unit_of_drawing": {
        +                        "const": "m",
        +                        "default": "m",
        +                        "type": "string"
        +                      },
        +                      "viewbox_height": {
        +                        "exclusiveMinimum": 0,
        +                        "type": "number"
        +                      },
        +                      "viewbox_width": {
        +                        "exclusiveMinimum": 0,
        +                        "type": "number"
        +                      },
        +                      "viewbox_x": {
        +                        "type": "number"
        +                      },
        +                      "viewbox_y": {
        +                        "type": "number"
        +                      }
        +                    },
        +                    "required": [
        +                      "svg_b64",
        +                      "viewbox_x",
        +                      "viewbox_y",
        +                      "viewbox_width",
        +                      "viewbox_height",
        +                      "entity_count"
        +                    ],
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "drawings": {
        +                "anyOf": [
        +                  {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.6 — paid-tier drawing artefact pointer.\n\n`url` is an R2-signed URL; expiry is carried in `_meta.deliverables.expires_at`\non the envelope (not duplicated here). `layers` is DXF-only; PDF/SVG\ncallers omit it.",
        +                      "properties": {
        +                        "drawing_type": {
        +                          "enum": [
        +                            "section",
        +                            "plan",
        +                            "elevation",
        +                            "isometric",
        +                            "detail"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "format": {
        +                          "enum": [
        +                            "DXF",
        +                            "PDF",
        +                            "SVG"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "layers": {
        +                          "anyOf": [
        +                            {
        +                              "items": {
        +                                "type": "string"
        +                              },
        +                              "type": "array"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ],
        +                          "default": null
        +                        },
        +                        "scale": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "sheet_size": {
        +                          "enum": [
        +                            "A1",
        +                            "A2",
        +                            "A3",
        +                            "A4"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "url": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "drawing_type",
        +                        "format",
        +                        "url",
        +                        "sheet_size",
        +                        "scale"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "parameters_used": {
        +                "additionalProperties": false,
        +                "description": "Schema § 1.2 — the parameter snapshot the engine actually used.\n\nSplits user-supplied values from engine defaults so customers can see\nwhich numbers came from them and which the engine filled in. Every\ndefaulted parameter SHOULD have a corresponding entry in `assumptions`\n— the bridge layer enforces this when wrapping engine output.",
        +                "properties": {
        +                  "assumptions": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "engine_defaults": {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  "user_supplied": {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  }
        +                },
        +                "type": "object"
        +              },
        +              "standard": {
        +                "enum": [
        +                  "CESMM4",
        +                  "NRM2",
        +                  "SMM7",
        +                  "MMHW"
        +                ],
        +                "type": "string"
        +              },
        +              "text_summary": {
        +                "maxLength": 2000,
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "totals_summary": {
        +                "additionalProperties": false,
        +                "description": "Schema § 1.4 — totals_summary as a typed wrapper around the free-form dict.\n\nWire shape is a flat object (`{\"concrete_m3\": {...}, \"rebar_t\": {...}}`).\nWe model it as `RootModel`-equivalent via `model_config(extra=\"allow\")`\n+ a single `__root__`-style `entries` dict. Pydantic v2 recommends\n`RootModel` for free-form roots; using a wrapper class keeps the import\nsurface uniform with the rest of this module.",
        +                "properties": {
        +                  "entries": {
        +                    "additionalProperties": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.4 — single material/work-class total entry.",
        +                      "properties": {
        +                        "quantity": {
        +                          "minimum": 0,
        +                          "type": "number"
        +                        },
        +                        "unit": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "quantity",
        +                        "unit"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "object"
        +                  }
        +                },
        +                "type": "object"
        +              },
        +              "warnings": {
        +                "items": {
        +                  "additionalProperties": false,
        +                  "description": "Schema § 1.8 — a non-fatal geometry advisory (56th-fire T2).\n\nThe wire projection of the engine's `core.GeometryWarning`. Advisory only:\na warning NEVER changes a measured quantity — it flags geometry that is\nvalid but likely a mistake (e.g. a stale dependent-height default). Present\non BOTH tiers — a correctness/safety signal, not a paid feature.",
        +                  "properties": {
        +                    "affected_params": {
        +                      "items": {
        +                        "type": "string"
        +                      },
        +                      "type": "array"
        +                    },
        +                    "code": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "detail": {
        +                      "additionalProperties": {
        +                        "type": "number"
        +                      },
        +                      "type": "object"
        +                    },
        +                    "message": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "severity": {
        +                      "enum": [
        +                        "info",
        +                        "advisory",
        +                        "caution"
        +                      ],
        +                      "type": "string"
        +                    }
        +                  },
        +                  "required": [
        +                    "code",
        +                    "severity",
        +                    "message"
        +                  ],
        +                  "type": "object"
        +                },
        +                "type": "array"
        +              }
        +            },
        +            "required": [
        +              "assembly_slug",
        +              "standard",
        +              "parameters_used",
        +              "boq_rows",
        +              "totals_summary",
        +              "text_summary"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      },
        +      "error": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        +            "properties": {
        +              "code": {
        +                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        +                "enum": [
        +                  "RATE_LIMIT_EXCEEDED",
        +                  "TIER_INSUFFICIENT",
        +                  "INVALID_INPUT",
        +                  "SCHEMA_VERSION_MISMATCH",
        +                  "SCHEMA_INVARIANT_VIOLATION",
        +                  "UPSTREAM_TIMEOUT",
        +                  "BACKEND_FAILURE",
        +                  "IP_BLOCKED",
        +                  "RESOURCE_NOT_FOUND",
        +                  "RENDER_FAILURE",
        +                  "OCR_LOW_CONFIDENCE",
        +                  "MANUAL_REVIEW_REQUIRED",
        +                  "ACCEPTANCE_REQUIRED",
        +                  "INVALID_TOKEN"
        +                ],
        +                "type": "string"
        +              },
        +              "details": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "message": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "recoverable": {
        +                "type": "boolean"
        +              },
        +              "retry_after_seconds": {
        +                "anyOf": [
        +                  {
        +                    "minimum": 0,
        +                    "type": "integer"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              }
        +            },
        +            "required": [
        +              "code",
        +              "message",
        +              "recoverable"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      }
        +    },
        +    "required": [
        +      "_meta"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "_meta": {
        +        "additionalProperties": false,
        +        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        +        "properties": {
        +          "deliverables": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        +                "properties": {
        +                  "docx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "dxf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "expires_at": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  },
        +                  "pdf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "xlsx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "expires_at"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "document_id": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "issued_at": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "output_mode": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Surfaces what a trimmed ``output_mode`` withheld from ``data``.\n\nA trimmed mode (``summary`` / ``boq`` / ``boq_with_backup``) withholds\nalready-computed fields to keep the chat payload small. The withheld value\nreads to a client agent as \"capability missing\" (the box-culvert \"geometry\nbuilder isn't firing\" scare) rather than \"pared for size\": ``drawing`` and\n``audit_trail`` appear as ``null``, ``boq_rows`` as an empty list ``[]``\n(its type forbids ``null``) — both indistinguishable from a genuine absent\nresult. This names the withheld fields and the exact mode that brings each\nback, so the value is unambiguous. Absent on the default ``full_json`` mode\n— nothing is withheld, nothing to point at.",
        +                "properties": {
        +                  "mode": {
        +                    "enum": [
        +                      "summary",
        +                      "boq",
        +                      "boq_with_backup"
        +                    ],
        +                    "type": "string"
        +                  },
        +                  "omitted_fields": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "minItems": 1,
        +                    "type": "array"
        +                  },
        +                  "retrieve_with": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "mode",
        +                  "omitted_fields",
        +                  "retrieve_with"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "rate_limit_remaining": {
        +            "anyOf": [
        +              {
        +                "minimum": 0,
        +                "type": "integer"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "request_id": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "schema_version": {
        +            "const": "1.0.0",
        +            "default": "1.0.0",
        +            "type": "string"
        +          },
        +          "scope_boundary": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        +                "properties": {
        +                  "not_in_scope": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "produced": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "recommended_companions": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "type": "string"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "produced",
        +                  "not_in_scope"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tier": {
        +            "enum": [
        +              "free",
        +              "paid"
        +            ],
        +            "type": "string"
        +          },
        +          "tier_upgrade": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        +                "properties": {
        +                  "available_tiers": {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        +                      "properties": {
        +                        "billing": {
        +                          "enum": [
        +                            "one_off",
        +                            "monthly",
        +                            "annual"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "currency": {
        +                          "enum": [
        +                            "GBP",
        +                            "SGD",
        +                            "EUR",
        +                            "USD",
        +                            "CAD",
        +                            "AUD",
        +                            "NZD",
        +                            "MYR"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "display_name": {
        +                          "type": "string"
        +                        },
        +                        "price_local": {
        +                          "type": "number"
        +                        },
        +                        "tier_slug": {
        +                          "enum": [
        +                            "7_day_pass",
        +                            "solo",
        +                            "studio",
        +                            "practice"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "unlock_summary": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "tier_slug",
        +                        "display_name",
        +                        "price_local",
        +                        "currency",
        +                        "billing",
        +                        "unlock_summary"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "current_tier": {
        +                    "const": "free",
        +                    "default": "free",
        +                    "type": "string"
        +                  },
        +                  "pass_credit": {
        +                    "anyOf": [
        +                      {
        +                        "additionalProperties": false,
        +                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        +                        "properties": {
        +                          "amount_local": {
        +                            "type": "number"
        +                          },
        +                          "applies_to": {
        +                            "const": "solo_first_month",
        +                            "default": "solo_first_month",
        +                            "type": "string"
        +                          },
        +                          "currency": {
        +                            "type": "string"
        +                          },
        +                          "redeemable_until": {
        +                            "type": "string"
        +                          }
        +                        },
        +                        "required": [
        +                          "amount_local",
        +                          "currency",
        +                          "redeemable_until"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "pricing_url": {
        +                    "default": "https://civilquants.com/pricing",
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "available_tiers"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tos_url": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "upgrade_hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "warranty_disclaimer": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          }
        +        },
        +        "required": [
        +          "request_id",
        +          "issued_at",
        +          "tier"
        +        ],
        +        "type": "object"
        +      },
        +      "data": {
        +        "default": null,
        +        "title": "Data"
        +      },
        +      "error": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        +            "properties": {
        +              "code": {
        +                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        +                "enum": [
        +                  "RATE_LIMIT_EXCEEDED",
        +                  "TIER_INSUFFICIENT",
        +                  "INVALID_INPUT",
        +                  "SCHEMA_VERSION_MISMATCH",
        +                  "SCHEMA_INVARIANT_VIOLATION",
        +                  "UPSTREAM_TIMEOUT",
        +                  "BACKEND_FAILURE",
        +                  "IP_BLOCKED",
        +                  "RESOURCE_NOT_FOUND",
        +                  "RENDER_FAILURE",
        +                  "OCR_LOW_CONFIDENCE",
        +                  "MANUAL_REVIEW_REQUIRED",
        +                  "ACCEPTANCE_REQUIRED",
        +                  "INVALID_TOKEN"
        +                ],
        +                "type": "string"
        +              },
        +              "details": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "message": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "recoverable": {
        +                "type": "boolean"
        +              },
        +              "retry_after_seconds": {
        +                "anyOf": [
        +                  {
        +                    "minimum": 0,
        +                    "type": "integer"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              }
        +            },
        +            "required": [
        +              "code",
        +              "message",
        +              "recoverable"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      }
        +    },
        +    "required": [
        +      "_meta"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedget_project1 field changed
      • changedOutput schema / properties / result / anyOf
        Previous value: -[
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "_meta": {
        -        "additionalProperties": false,
        -        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        -        "properties": {
        -          "deliverables": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        -                "properties": {
        -                  "docx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "dxf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "expires_at": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  },
        -                  "pdf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "xlsx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "expires_at"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "document_id": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "issued_at": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "rate_limit_remaining": {
        -            "anyOf": [
        -              {
        -                "minimum": 0,
        -                "type": "integer"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "request_id": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "schema_version": {
        -            "const": "1.0.0",
        -            "default": "1.0.0",
        -            "type": "string"
        -          },
        -          "scope_boundary": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        -                "properties": {
        -                  "not_in_scope": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "produced": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "recommended_companions": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "type": "string"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "produced",
        -                  "not_in_scope"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tier": {
        -            "enum": [
        -              "free",
        -              "paid"
        -            ],
        -            "type": "string"
        -          },
        -          "tier_upgrade": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        -                "properties": {
        -                  "available_tiers": {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        -                      "properties": {
        -                        "billing": {
        -                          "enum": [
        -                            "one_off",
        -                            "monthly",
        -                            "annual"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "currency": {
        -                          "enum": [
        -                            "GBP",
        -                            "SGD",
        -                            "EUR",
        -                            "USD",
        -                            "CAD",
        -                            "AUD",
        -                            "NZD",
        -                            "MYR"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "display_name": {
        -                          "type": "string"
        -                        },
        -                        "price_local": {
        -                          "type": "number"
        -                        },
        -                        "tier_slug": {
        -                          "enum": [
        -                            "7_day_pass",
        -                            "solo",
        -                            "studio",
        -                            "practice"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "unlock_summary": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "tier_slug",
        -                        "display_name",
        -                        "price_local",
        -                        "currency",
        -                        "billing",
        -                        "unlock_summary"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "current_tier": {
        -                    "const": "free",
        -                    "default": "free",
        -                    "type": "string"
        -                  },
        -                  "pass_credit": {
        -                    "anyOf": [
        -                      {
        -                        "additionalProperties": false,
        -                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        -                        "properties": {
        -                          "amount_local": {
        -                            "type": "number"
        -                          },
        -                          "applies_to": {
        -                            "const": "solo_first_month",
        -                            "default": "solo_first_month",
        -                            "type": "string"
        -                          },
        -                          "currency": {
        -                            "type": "string"
        -                          },
        -                          "redeemable_until": {
        -                            "type": "string"
        -                          }
        -                        },
        -                        "required": [
        -                          "amount_local",
        -                          "currency",
        -                          "redeemable_until"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "pricing_url": {
        -                    "default": "https://civilquants.com/pricing",
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "available_tiers"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tos_url": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "upgrade_hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "warranty_disclaimer": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          }
        -        },
        -        "required": [
        -          "request_id",
        -          "issued_at",
        -          "tier"
        -        ],
        -        "type": "object"
        -      },
        -      "data": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "properties": {
        -              "assemblies": {
        -                "items": {
        -                  "additionalProperties": false,
        -                  "description": "Single assembly row inside a fetched project payload.",
        -                  "properties": {
        -                    "enabled": {
        -                      "type": "boolean"
        -                    },
        -                    "id": {
        -                      "type": "string"
        -                    },
        -                    "label": {
        -                      "type": "string"
        -                    },
        -                    "notes": {
        -                      "type": "string"
        -                    },
        -                    "parameters": {
        -                      "additionalProperties": true,
        -                      "type": "object"
        -                    },
        -                    "position": {
        -                      "type": "integer"
        -                    },
        -                    "slug": {
        -                      "type": "string"
        -                    }
        -                  },
        -                  "required": [
        -                    "id",
        -                    "slug",
        -                    "label",
        -                    "position",
        -                    "parameters",
        -                    "notes",
        -                    "enabled"
        -                  ],
        -                  "type": "object"
        -                },
        -                "type": "array"
        -              },
        -              "client": {
        -                "type": "string"
        -              },
        -              "currency": {
        -                "type": "string"
        -              },
        -              "default_standard": {
        -                "type": "string"
        -              },
        -              "description": {
        -                "type": "string"
        -              },
        -              "location": {
        -                "type": "string"
        -              },
        -              "name": {
        -                "type": "string"
        -              },
        -              "project_id": {
        -                "type": "string"
        -              },
        -              "project_number": {
        -                "type": "string"
        -              },
        -              "status": {
        -                "type": "string"
        -              }
        -            },
        -            "required": [
        -              "project_id",
        -              "name",
        -              "client",
        -              "project_number",
        -              "location",
        -              "description",
        -              "status",
        -              "default_standard",
        -              "currency",
        -              "assemblies"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      },
        -      "error": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        -            "properties": {
        -              "code": {
        -                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        -                "enum": [
        -                  "RATE_LIMIT_EXCEEDED",
        -                  "TIER_INSUFFICIENT",
        -                  "INVALID_INPUT",
        -                  "SCHEMA_VERSION_MISMATCH",
        -                  "SCHEMA_INVARIANT_VIOLATION",
        -                  "UPSTREAM_TIMEOUT",
        -                  "BACKEND_FAILURE",
        -                  "IP_BLOCKED",
        -                  "RESOURCE_NOT_FOUND",
        -                  "RENDER_FAILURE",
        -                  "OCR_LOW_CONFIDENCE",
        -                  "MANUAL_REVIEW_REQUIRED",
        -                  "ACCEPTANCE_REQUIRED",
        -                  "INVALID_TOKEN"
        -                ],
        -                "type": "string"
        -              },
        -              "details": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "message": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "recoverable": {
        -                "type": "boolean"
        -              },
        -              "retry_after_seconds": {
        -                "anyOf": [
        -                  {
        -                    "minimum": 0,
        -                    "type": "integer"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              }
        -            },
        -            "required": [
        -              "code",
        -              "message",
        -              "recoverable"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      }
        -    },
        -    "required": [
        -      "_meta"
        -    ],
        -    "type": "object"
        -  },
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "_meta": {
        -        "additionalProperties": false,
        -        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        -        "properties": {
        -          "deliverables": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        -                "properties": {
        -                  "docx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "dxf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "expires_at": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  },
        -                  "pdf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "xlsx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "expires_at"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "document_id": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "issued_at": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "rate_limit_remaining": {
        -            "anyOf": [
        -              {
        -                "minimum": 0,
        -                "type": "integer"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "request_id": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "schema_version": {
        -            "const": "1.0.0",
        -            "default": "1.0.0",
        -            "type": "string"
        -          },
        -          "scope_boundary": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        -                "properties": {
        -                  "not_in_scope": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "produced": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "recommended_companions": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "type": "string"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "produced",
        -                  "not_in_scope"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tier": {
        -            "enum": [
        -              "free",
        -              "paid"
        -            ],
        -            "type": "string"
        -          },
        -          "tier_upgrade": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        -                "properties": {
        -                  "available_tiers": {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        -                      "properties": {
        -                        "billing": {
        -                          "enum": [
        -                            "one_off",
        -                            "monthly",
        -                            "annual"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "currency": {
        -                          "enum": [
        -                            "GBP",
        -                            "SGD",
        -                            "EUR",
        -                            "USD",
        -                            "CAD",
        -                            "AUD",
        -                            "NZD",
        -                            "MYR"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "display_name": {
        -                          "type": "string"
        -                        },
        -                        "price_local": {
        -                          "type": "number"
        -                        },
        -                        "tier_slug": {
        -                          "enum": [
        -                            "7_day_pass",
        -                            "solo",
        -                            "studio",
        -                            "practice"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "unlock_summary": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "tier_slug",
        -                        "display_name",
        -                        "price_local",
        -                        "currency",
        -                        "billing",
        -                        "unlock_summary"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "current_tier": {
        -                    "const": "free",
        -                    "default": "free",
        -                    "type": "string"
        -                  },
        -                  "pass_credit": {
        -                    "anyOf": [
        -                      {
        -                        "additionalProperties": false,
        -                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        -                        "properties": {
        -                          "amount_local": {
        -                            "type": "number"
        -                          },
        -                          "applies_to": {
        -                            "const": "solo_first_month",
        -                            "default": "solo_first_month",
        -                            "type": "string"
        -                          },
        -                          "currency": {
        -                            "type": "string"
        -                          },
        -                          "redeemable_until": {
        -                            "type": "string"
        -                          }
        -                        },
        -                        "required": [
        -                          "amount_local",
        -                          "currency",
        -                          "redeemable_until"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "pricing_url": {
        -                    "default": "https://civilquants.com/pricing",
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "available_tiers"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tos_url": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "upgrade_hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "warranty_disclaimer": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          }
        -        },
        -        "required": [
        -          "request_id",
        -          "issued_at",
        -          "tier"
        -        ],
        -        "type": "object"
        -      },
        -      "data": {
        -        "default": null,
        -        "title": "Data"
        -      },
        -      "error": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        -            "properties": {
        -              "code": {
        -                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        -                "enum": [
        -                  "RATE_LIMIT_EXCEEDED",
        -                  "TIER_INSUFFICIENT",
        -                  "INVALID_INPUT",
        -                  "SCHEMA_VERSION_MISMATCH",
        -                  "SCHEMA_INVARIANT_VIOLATION",
        -                  "UPSTREAM_TIMEOUT",
        -                  "BACKEND_FAILURE",
        -                  "IP_BLOCKED",
        -                  "RESOURCE_NOT_FOUND",
        -                  "RENDER_FAILURE",
        -                  "OCR_LOW_CONFIDENCE",
        -                  "MANUAL_REVIEW_REQUIRED",
        -                  "ACCEPTANCE_REQUIRED",
        -                  "INVALID_TOKEN"
        -                ],
        -                "type": "string"
        -              },
        -              "details": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "message": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "recoverable": {
        -                "type": "boolean"
        -              },
        -              "retry_after_seconds": {
        -                "anyOf": [
        -                  {
        -                    "minimum": 0,
        -                    "type": "integer"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              }
        -            },
        -            "required": [
        -              "code",
        -              "message",
        -              "recoverable"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      }
        -    },
        -    "required": [
        -      "_meta"
        -    ],
        -    "type": "object"
        -  }
        -]New value: +[
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "_meta": {
        +        "additionalProperties": false,
        +        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        +        "properties": {
        +          "deliverables": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        +                "properties": {
        +                  "docx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "dxf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "expires_at": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  },
        +                  "pdf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "xlsx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "expires_at"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "document_id": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "issued_at": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "output_mode": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Surfaces what a trimmed ``output_mode`` withheld from ``data``.\n\nA trimmed mode (``summary`` / ``boq`` / ``boq_with_backup``) withholds\nalready-computed fields to keep the chat payload small. The withheld value\nreads to a client agent as \"capability missing\" (the box-culvert \"geometry\nbuilder isn't firing\" scare) rather than \"pared for size\": ``drawing`` and\n``audit_trail`` appear as ``null``, ``boq_rows`` as an empty list ``[]``\n(its type forbids ``null``) — both indistinguishable from a genuine absent\nresult. This names the withheld fields and the exact mode that brings each\nback, so the value is unambiguous. Absent on the default ``full_json`` mode\n— nothing is withheld, nothing to point at.",
        +                "properties": {
        +                  "mode": {
        +                    "enum": [
        +                      "summary",
        +                      "boq",
        +                      "boq_with_backup"
        +                    ],
        +                    "type": "string"
        +                  },
        +                  "omitted_fields": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "minItems": 1,
        +                    "type": "array"
        +                  },
        +                  "retrieve_with": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "mode",
        +                  "omitted_fields",
        +                  "retrieve_with"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "rate_limit_remaining": {
        +            "anyOf": [
        +              {
        +                "minimum": 0,
        +                "type": "integer"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "request_id": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "schema_version": {
        +            "const": "1.0.0",
        +            "default": "1.0.0",
        +            "type": "string"
        +          },
        +          "scope_boundary": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        +                "properties": {
        +                  "not_in_scope": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "produced": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "recommended_companions": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "type": "string"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "produced",
        +                  "not_in_scope"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tier": {
        +            "enum": [
        +              "free",
        +              "paid"
        +            ],
        +            "type": "string"
        +          },
        +          "tier_upgrade": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        +                "properties": {
        +                  "available_tiers": {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        +                      "properties": {
        +                        "billing": {
        +                          "enum": [
        +                            "one_off",
        +                            "monthly",
        +                            "annual"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "currency": {
        +                          "enum": [
        +                            "GBP",
        +                            "SGD",
        +                            "EUR",
        +                            "USD",
        +                            "CAD",
        +                            "AUD",
        +                            "NZD",
        +                            "MYR"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "display_name": {
        +                          "type": "string"
        +                        },
        +                        "price_local": {
        +                          "type": "number"
        +                        },
        +                        "tier_slug": {
        +                          "enum": [
        +                            "7_day_pass",
        +                            "solo",
        +                            "studio",
        +                            "practice"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "unlock_summary": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "tier_slug",
        +                        "display_name",
        +                        "price_local",
        +                        "currency",
        +                        "billing",
        +                        "unlock_summary"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "current_tier": {
        +                    "const": "free",
        +                    "default": "free",
        +                    "type": "string"
        +                  },
        +                  "pass_credit": {
        +                    "anyOf": [
        +                      {
        +                        "additionalProperties": false,
        +                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        +                        "properties": {
        +                          "amount_local": {
        +                            "type": "number"
        +                          },
        +                          "applies_to": {
        +                            "const": "solo_first_month",
        +                            "default": "solo_first_month",
        +                            "type": "string"
        +                          },
        +                          "currency": {
        +                            "type": "string"
        +                          },
        +                          "redeemable_until": {
        +                            "type": "string"
        +                          }
        +                        },
        +                        "required": [
        +                          "amount_local",
        +                          "currency",
        +                          "redeemable_until"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "pricing_url": {
        +                    "default": "https://civilquants.com/pricing",
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "available_tiers"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tos_url": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "upgrade_hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "warranty_disclaimer": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          }
        +        },
        +        "required": [
        +          "request_id",
        +          "issued_at",
        +          "tier"
        +        ],
        +        "type": "object"
        +      },
        +      "data": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "properties": {
        +              "assemblies": {
        +                "items": {
        +                  "additionalProperties": false,
        +                  "description": "Single assembly row inside a fetched project payload.",
        +                  "properties": {
        +                    "enabled": {
        +                      "type": "boolean"
        +                    },
        +                    "id": {
        +                      "type": "string"
        +                    },
        +                    "label": {
        +                      "type": "string"
        +                    },
        +                    "notes": {
        +                      "type": "string"
        +                    },
        +                    "parameters": {
        +                      "additionalProperties": true,
        +                      "type": "object"
        +                    },
        +                    "position": {
        +                      "type": "integer"
        +                    },
        +                    "slug": {
        +                      "type": "string"
        +                    }
        +                  },
        +                  "required": [
        +                    "id",
        +                    "slug",
        +                    "label",
        +                    "position",
        +                    "parameters",
        +                    "notes",
        +                    "enabled"
        +                  ],
        +                  "type": "object"
        +                },
        +                "type": "array"
        +              },
        +              "client": {
        +                "type": "string"
        +              },
        +              "currency": {
        +                "type": "string"
        +              },
        +              "default_standard": {
        +                "type": "string"
        +              },
        +              "description": {
        +                "type": "string"
        +              },
        +              "location": {
        +                "type": "string"
        +              },
        +              "name": {
        +                "type": "string"
        +              },
        +              "project_id": {
        +                "type": "string"
        +              },
        +              "project_number": {
        +                "type": "string"
        +              },
        +              "status": {
        +                "type": "string"
        +              }
        +            },
        +            "required": [
        +              "project_id",
        +              "name",
        +              "client",
        +              "project_number",
        +              "location",
        +              "description",
        +              "status",
        +              "default_standard",
        +              "currency",
        +              "assemblies"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      },
        +      "error": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        +            "properties": {
        +              "code": {
        +                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        +                "enum": [
        +                  "RATE_LIMIT_EXCEEDED",
        +                  "TIER_INSUFFICIENT",
        +                  "INVALID_INPUT",
        +                  "SCHEMA_VERSION_MISMATCH",
        +                  "SCHEMA_INVARIANT_VIOLATION",
        +                  "UPSTREAM_TIMEOUT",
        +                  "BACKEND_FAILURE",
        +                  "IP_BLOCKED",
        +                  "RESOURCE_NOT_FOUND",
        +                  "RENDER_FAILURE",
        +                  "OCR_LOW_CONFIDENCE",
        +                  "MANUAL_REVIEW_REQUIRED",
        +                  "ACCEPTANCE_REQUIRED",
        +                  "INVALID_TOKEN"
        +                ],
        +                "type": "string"
        +              },
        +              "details": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "message": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "recoverable": {
        +                "type": "boolean"
        +              },
        +              "retry_after_seconds": {
        +                "anyOf": [
        +                  {
        +                    "minimum": 0,
        +                    "type": "integer"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              }
        +            },
        +            "required": [
        +              "code",
        +              "message",
        +              "recoverable"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      }
        +    },
        +    "required": [
        +      "_meta"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "_meta": {
        +        "additionalProperties": false,
        +        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        +        "properties": {
        +          "deliverables": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        +                "properties": {
        +                  "docx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "dxf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "expires_at": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  },
        +                  "pdf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "xlsx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "expires_at"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "document_id": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "issued_at": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "output_mode": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Surfaces what a trimmed ``output_mode`` withheld from ``data``.\n\nA trimmed mode (``summary`` / ``boq`` / ``boq_with_backup``) withholds\nalready-computed fields to keep the chat payload small. The withheld value\nreads to a client agent as \"capability missing\" (the box-culvert \"geometry\nbuilder isn't firing\" scare) rather than \"pared for size\": ``drawing`` and\n``audit_trail`` appear as ``null``, ``boq_rows`` as an empty list ``[]``\n(its type forbids ``null``) — both indistinguishable from a genuine absent\nresult. This names the withheld fields and the exact mode that brings each\nback, so the value is unambiguous. Absent on the default ``full_json`` mode\n— nothing is withheld, nothing to point at.",
        +                "properties": {
        +                  "mode": {
        +                    "enum": [
        +                      "summary",
        +                      "boq",
        +                      "boq_with_backup"
        +                    ],
        +                    "type": "string"
        +                  },
        +                  "omitted_fields": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "minItems": 1,
        +                    "type": "array"
        +                  },
        +                  "retrieve_with": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "mode",
        +                  "omitted_fields",
        +                  "retrieve_with"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "rate_limit_remaining": {
        +            "anyOf": [
        +              {
        +                "minimum": 0,
        +                "type": "integer"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "request_id": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "schema_version": {
        +            "const": "1.0.0",
        +            "default": "1.0.0",
        +            "type": "string"
        +          },
        +          "scope_boundary": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        +                "properties": {
        +                  "not_in_scope": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "produced": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "recommended_companions": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "type": "string"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "produced",
        +                  "not_in_scope"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tier": {
        +            "enum": [
        +              "free",
        +              "paid"
        +            ],
        +            "type": "string"
        +          },
        +          "tier_upgrade": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        +                "properties": {
        +                  "available_tiers": {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        +                      "properties": {
        +                        "billing": {
        +                          "enum": [
        +                            "one_off",
        +                            "monthly",
        +                            "annual"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "currency": {
        +                          "enum": [
        +                            "GBP",
        +                            "SGD",
        +                            "EUR",
        +                            "USD",
        +                            "CAD",
        +                            "AUD",
        +                            "NZD",
        +                            "MYR"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "display_name": {
        +                          "type": "string"
        +                        },
        +                        "price_local": {
        +                          "type": "number"
        +                        },
        +                        "tier_slug": {
        +                          "enum": [
        +                            "7_day_pass",
        +                            "solo",
        +                            "studio",
        +                            "practice"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "unlock_summary": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "tier_slug",
        +                        "display_name",
        +                        "price_local",
        +                        "currency",
        +                        "billing",
        +                        "unlock_summary"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "current_tier": {
        +                    "const": "free",
        +                    "default": "free",
        +                    "type": "string"
        +                  },
        +                  "pass_credit": {
        +                    "anyOf": [
        +                      {
        +                        "additionalProperties": false,
        +                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        +                        "properties": {
        +                          "amount_local": {
        +                            "type": "number"
        +                          },
        +                          "applies_to": {
        +                            "const": "solo_first_month",
        +                            "default": "solo_first_month",
        +                            "type": "string"
        +                          },
        +                          "currency": {
        +                            "type": "string"
        +                          },
        +                          "redeemable_until": {
        +                            "type": "string"
        +                          }
        +                        },
        +                        "required": [
        +                          "amount_local",
        +                          "currency",
        +                          "redeemable_until"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "pricing_url": {
        +                    "default": "https://civilquants.com/pricing",
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "available_tiers"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tos_url": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "upgrade_hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "warranty_disclaimer": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          }
        +        },
        +        "required": [
        +          "request_id",
        +          "issued_at",
        +          "tier"
        +        ],
        +        "type": "object"
        +      },
        +      "data": {
        +        "default": null,
        +        "title": "Data"
        +      },
        +      "error": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        +            "properties": {
        +              "code": {
        +                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        +                "enum": [
        +                  "RATE_LIMIT_EXCEEDED",
        +                  "TIER_INSUFFICIENT",
        +                  "INVALID_INPUT",
        +                  "SCHEMA_VERSION_MISMATCH",
        +                  "SCHEMA_INVARIANT_VIOLATION",
        +                  "UPSTREAM_TIMEOUT",
        +                  "BACKEND_FAILURE",
        +                  "IP_BLOCKED",
        +                  "RESOURCE_NOT_FOUND",
        +                  "RENDER_FAILURE",
        +                  "OCR_LOW_CONFIDENCE",
        +                  "MANUAL_REVIEW_REQUIRED",
        +                  "ACCEPTANCE_REQUIRED",
        +                  "INVALID_TOKEN"
        +                ],
        +                "type": "string"
        +              },
        +              "details": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "message": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "recoverable": {
        +                "type": "boolean"
        +              },
        +              "retry_after_seconds": {
        +                "anyOf": [
        +                  {
        +                    "minimum": 0,
        +                    "type": "integer"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              }
        +            },
        +            "required": [
        +              "code",
        +              "message",
        +              "recoverable"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      }
        +    },
        +    "required": [
        +      "_meta"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedrecompute_project1 field changed
      • changedOutput schema / properties / result / anyOf
        Previous value: -[
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "_meta": {
        -        "additionalProperties": false,
        -        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        -        "properties": {
        -          "deliverables": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        -                "properties": {
        -                  "docx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "dxf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "expires_at": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  },
        -                  "pdf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "xlsx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "expires_at"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "document_id": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "issued_at": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "rate_limit_remaining": {
        -            "anyOf": [
        -              {
        -                "minimum": 0,
        -                "type": "integer"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "request_id": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "schema_version": {
        -            "const": "1.0.0",
        -            "default": "1.0.0",
        -            "type": "string"
        -          },
        -          "scope_boundary": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        -                "properties": {
        -                  "not_in_scope": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "produced": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "recommended_companions": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "type": "string"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "produced",
        -                  "not_in_scope"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tier": {
        -            "enum": [
        -              "free",
        -              "paid"
        -            ],
        -            "type": "string"
        -          },
        -          "tier_upgrade": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        -                "properties": {
        -                  "available_tiers": {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        -                      "properties": {
        -                        "billing": {
        -                          "enum": [
        -                            "one_off",
        -                            "monthly",
        -                            "annual"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "currency": {
        -                          "enum": [
        -                            "GBP",
        -                            "SGD",
        -                            "EUR",
        -                            "USD",
        -                            "CAD",
        -                            "AUD",
        -                            "NZD",
        -                            "MYR"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "display_name": {
        -                          "type": "string"
        -                        },
        -                        "price_local": {
        -                          "type": "number"
        -                        },
        -                        "tier_slug": {
        -                          "enum": [
        -                            "7_day_pass",
        -                            "solo",
        -                            "studio",
        -                            "practice"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "unlock_summary": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "tier_slug",
        -                        "display_name",
        -                        "price_local",
        -                        "currency",
        -                        "billing",
        -                        "unlock_summary"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "current_tier": {
        -                    "const": "free",
        -                    "default": "free",
        -                    "type": "string"
        -                  },
        -                  "pass_credit": {
        -                    "anyOf": [
        -                      {
        -                        "additionalProperties": false,
        -                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        -                        "properties": {
        -                          "amount_local": {
        -                            "type": "number"
        -                          },
        -                          "applies_to": {
        -                            "const": "solo_first_month",
        -                            "default": "solo_first_month",
        -                            "type": "string"
        -                          },
        -                          "currency": {
        -                            "type": "string"
        -                          },
        -                          "redeemable_until": {
        -                            "type": "string"
        -                          }
        -                        },
        -                        "required": [
        -                          "amount_local",
        -                          "currency",
        -                          "redeemable_until"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "pricing_url": {
        -                    "default": "https://civilquants.com/pricing",
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "available_tiers"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tos_url": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "upgrade_hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "warranty_disclaimer": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          }
        -        },
        -        "required": [
        -          "request_id",
        -          "issued_at",
        -          "tier"
        -        ],
        -        "type": "object"
        -      },
        -      "data": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "properties": {
        -              "assembly_count": {
        -                "type": "integer"
        -              },
        -              "assembly_drawings": {
        -                "items": {
        -                  "additionalProperties": false,
        -                  "description": "One enabled assembly's drawing payload for the project recompute\nresponse (G.4.4b Step 2).\n\nMirrors the per-assembly drawing surface from\n``POST /api/assemblies/{slug}/compute`` (same ``DrawingRef`` shape,\nsame SVG renderer via ``build_drawing_ref``) so the project view's\ncontact-sheet centre pane renders identically to the single-assembly\ncalculator preview. ``drawing`` is nullable to stay backward-\ncompatible with assemblies that don't emit ``draw_entities`` (older\nshape); the few assemblies emitting an empty list still get a tiny\nplaceholder SVG so the UI never has to special-case absence.",
        -                  "properties": {
        -                    "assembly_id": {
        -                      "type": "string"
        -                    },
        -                    "drawing": {
        -                      "anyOf": [
        -                        {
        -                          "additionalProperties": false,
        -                          "description": "Server-rendered SVG preview of the assembly geometry.\n\nPer G.6.3 / STATUS.md decision 6 (2026-05-19): one source of\ngeometry (`DrawEntity` list emitted by `Assembly.compute`), two\noutput paths (this SVG for inline preview, the `GET .../dxf`\nendpoint for the real CAD download). The browser displays\n`svg_b64` decoded inline; `viewbox` drives client zoom/pan\ncontrols without re-parsing the SVG.\n\n`svg_b64` is base64 of a UTF-8 SVG document with one `<g\nclass=\"cq-layer cq-layer-<name>\">` per layer. Styling defaults are\ninlined so the preview renders without an external stylesheet;\nfront-end CSS may override via the class names.",
        -                          "properties": {
        -                            "entity_count": {
        -                              "description": "Number of DrawEntities rendered",
        -                              "minimum": 0,
        -                              "type": "integer"
        -                            },
        -                            "svg_b64": {
        -                              "description": "Base64-encoded SVG document",
        -                              "minLength": 1,
        -                              "type": "string"
        -                            },
        -                            "unit_of_drawing": {
        -                              "const": "m",
        -                              "default": "m",
        -                              "description": "Engine geometry is in metres. Surfaced here so the client never has to guess; if a future engine switches to mm this becomes the discriminator.",
        -                              "type": "string"
        -                            },
        -                            "viewbox_height": {
        -                              "description": "SVG viewBox height in engine units (m)",
        -                              "exclusiveMinimum": 0,
        -                              "type": "number"
        -                            },
        -                            "viewbox_width": {
        -                              "description": "SVG viewBox width in engine units (m)",
        -                              "exclusiveMinimum": 0,
        -                              "type": "number"
        -                            },
        -                            "viewbox_x": {
        -                              "description": "SVG viewBox x in engine units (m)",
        -                              "type": "number"
        -                            },
        -                            "viewbox_y": {
        -                              "description": "SVG viewBox y in engine units (m)",
        -                              "type": "number"
        -                            }
        -                          },
        -                          "required": [
        -                            "svg_b64",
        -                            "viewbox_x",
        -                            "viewbox_y",
        -                            "viewbox_width",
        -                            "viewbox_height",
        -                            "entity_count"
        -                          ],
        -                          "type": "object"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "label": {
        -                      "type": "string"
        -                    },
        -                    "position": {
        -                      "type": "integer"
        -                    },
        -                    "slug": {
        -                      "type": "string"
        -                    }
        -                  },
        -                  "required": [
        -                    "assembly_id",
        -                    "slug",
        -                    "label",
        -                    "position"
        -                  ],
        -                  "type": "object"
        -                },
        -                "type": "array"
        -              },
        -              "boqs_by_standard": {
        -                "additionalProperties": {
        -                  "items": {
        -                    "additionalProperties": false,
        -                    "description": "Slim BoQ row for the recompute response. Matches the engine's own\n``BoQItem`` columns; rate / amount stay null per the freemium-MCP\npricing-is-yours discipline (schema § 1.3).",
        -                    "properties": {
        -                      "amount": {
        -                        "anyOf": [
        -                          {
        -                            "type": "number"
        -                          },
        -                          {
        -                            "type": "null"
        -                          }
        -                        ],
        -                        "default": null
        -                      },
        -                      "code": {
        -                        "type": "string"
        -                      },
        -                      "description": {
        -                        "type": "string"
        -                      },
        -                      "group": {
        -                        "anyOf": [
        -                          {
        -                            "type": "string"
        -                          },
        -                          {
        -                            "type": "null"
        -                          }
        -                        ],
        -                        "default": null
        -                      },
        -                      "nrm1_element": {
        -                        "anyOf": [
        -                          {
        -                            "type": "string"
        -                          },
        -                          {
        -                            "type": "null"
        -                          }
        -                        ],
        -                        "default": null
        -                      },
        -                      "nrm1_group_element": {
        -                        "anyOf": [
        -                          {
        -                            "type": "integer"
        -                          },
        -                          {
        -                            "type": "null"
        -                          }
        -                        ],
        -                        "default": null
        -                      },
        -                      "nrm1_sub_element": {
        -                        "anyOf": [
        -                          {
        -                            "type": "string"
        -                          },
        -                          {
        -                            "type": "null"
        -                          }
        -                        ],
        -                        "default": null
        -                      },
        -                      "quantity": {
        -                        "minimum": 0,
        -                        "type": "number"
        -                      },
        -                      "rate": {
        -                        "anyOf": [
        -                          {
        -                            "type": "number"
        -                          },
        -                          {
        -                            "type": "null"
        -                          }
        -                        ],
        -                        "default": null
        -                      },
        -                      "sub_group": {
        -                        "anyOf": [
        -                          {
        -                            "type": "string"
        -                          },
        -                          {
        -                            "type": "null"
        -                          }
        -                        ],
        -                        "default": null
        -                      },
        -                      "unit": {
        -                        "type": "string"
        -                      }
        -                    },
        -                    "required": [
        -                      "code",
        -                      "description",
        -                      "unit",
        -                      "quantity"
        -                    ],
        -                    "type": "object"
        -                  },
        -                  "type": "array"
        -                },
        -                "type": "object"
        -              },
        -              "procurement_summary": {
        -                "items": {
        -                  "additionalProperties": false,
        -                  "description": "One row of the project's procurement summary (G.4.4b Step 1).\n\nThe procurement summary is the standard-agnostic material rollup keyed\non ``(category, spec, unit)`` — distinct from ``boqs_by_standard`` (a\nmeasurement-standard projection) and identical across all four\nstandards by construction. Drives the right pane of\n``/workspace/[project_id]`` and the ``Procurement`` sheet of the\nproject XLSX (per launch spec § 3.4.2).",
        -                  "properties": {
        -                    "category": {
        -                      "type": "string"
        -                    },
        -                    "quantity": {
        -                      "minimum": 0,
        -                      "type": "number"
        -                    },
        -                    "source_assemblies": {
        -                      "items": {
        -                        "type": "string"
        -                      },
        -                      "type": "array"
        -                    },
        -                    "spec": {
        -                      "type": "string"
        -                    },
        -                    "unit": {
        -                      "type": "string"
        -                    }
        -                  },
        -                  "required": [
        -                    "category",
        -                    "spec",
        -                    "quantity",
        -                    "unit",
        -                    "source_assemblies"
        -                  ],
        -                  "type": "object"
        -                },
        -                "type": "array"
        -              },
        -              "project_id": {
        -                "type": "string"
        -              },
        -              "standards_rendered": {
        -                "items": {
        -                  "type": "string"
        -                },
        -                "type": "array"
        -              },
        -              "work_item_count": {
        -                "type": "integer"
        -              }
        -            },
        -            "required": [
        -              "project_id",
        -              "standards_rendered",
        -              "assembly_count",
        -              "work_item_count",
        -              "boqs_by_standard",
        -              "procurement_summary",
        -              "assembly_drawings"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      },
        -      "error": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        -            "properties": {
        -              "code": {
        -                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        -                "enum": [
        -                  "RATE_LIMIT_EXCEEDED",
        -                  "TIER_INSUFFICIENT",
        -                  "INVALID_INPUT",
        -                  "SCHEMA_VERSION_MISMATCH",
        -                  "SCHEMA_INVARIANT_VIOLATION",
        -                  "UPSTREAM_TIMEOUT",
        -                  "BACKEND_FAILURE",
        -                  "IP_BLOCKED",
        -                  "RESOURCE_NOT_FOUND",
        -                  "RENDER_FAILURE",
        -                  "OCR_LOW_CONFIDENCE",
        -                  "MANUAL_REVIEW_REQUIRED",
        -                  "ACCEPTANCE_REQUIRED",
        -                  "INVALID_TOKEN"
        -                ],
        -                "type": "string"
        -              },
        -              "details": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "message": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "recoverable": {
        -                "type": "boolean"
        -              },
        -              "retry_after_seconds": {
        -                "anyOf": [
        -                  {
        -                    "minimum": 0,
        -                    "type": "integer"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              }
        -            },
        -            "required": [
        -              "code",
        -              "message",
        -              "recoverable"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      }
        -    },
        -    "required": [
        -      "_meta"
        -    ],
        -    "type": "object"
        -  },
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "_meta": {
        -        "additionalProperties": false,
        -        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        -        "properties": {
        -          "deliverables": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        -                "properties": {
        -                  "docx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "dxf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "expires_at": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  },
        -                  "pdf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "xlsx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "expires_at"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "document_id": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "issued_at": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "rate_limit_remaining": {
        -            "anyOf": [
        -              {
        -                "minimum": 0,
        -                "type": "integer"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "request_id": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "schema_version": {
        -            "const": "1.0.0",
        -            "default": "1.0.0",
        -            "type": "string"
        -          },
        -          "scope_boundary": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        -                "properties": {
        -                  "not_in_scope": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "produced": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "recommended_companions": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "type": "string"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "produced",
        -                  "not_in_scope"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tier": {
        -            "enum": [
        -              "free",
        -              "paid"
        -            ],
        -            "type": "string"
        -          },
        -          "tier_upgrade": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        -                "properties": {
        -                  "available_tiers": {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        -                      "properties": {
        -                        "billing": {
        -                          "enum": [
        -                            "one_off",
        -                            "monthly",
        -                            "annual"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "currency": {
        -                          "enum": [
        -                            "GBP",
        -                            "SGD",
        -                            "EUR",
        -                            "USD",
        -                            "CAD",
        -                            "AUD",
        -                            "NZD",
        -                            "MYR"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "display_name": {
        -                          "type": "string"
        -                        },
        -                        "price_local": {
        -                          "type": "number"
        -                        },
        -                        "tier_slug": {
        -                          "enum": [
        -                            "7_day_pass",
        -                            "solo",
        -                            "studio",
        -                            "practice"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "unlock_summary": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "tier_slug",
        -                        "display_name",
        -                        "price_local",
        -                        "currency",
        -                        "billing",
        -                        "unlock_summary"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "current_tier": {
        -                    "const": "free",
        -                    "default": "free",
        -                    "type": "string"
        -                  },
        -                  "pass_credit": {
        -                    "anyOf": [
        -                      {
        -                        "additionalProperties": false,
        -                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        -                        "properties": {
        -                          "amount_local": {
        -                            "type": "number"
        -                          },
        -                          "applies_to": {
        -                            "const": "solo_first_month",
        -                            "default": "solo_first_month",
        -                            "type": "string"
        -                          },
        -                          "currency": {
        -                            "type": "string"
        -                          },
        -                          "redeemable_until": {
        -                            "type": "string"
        -                          }
        -                        },
        -                        "required": [
        -                          "amount_local",
        -                          "currency",
        -                          "redeemable_until"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "pricing_url": {
        -                    "default": "https://civilquants.com/pricing",
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "available_tiers"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tos_url": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "upgrade_hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "warranty_disclaimer": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          }
        -        },
        -        "required": [
        -          "request_id",
        -          "issued_at",
        -          "tier"
        -        ],
        -        "type": "object"
        -      },
        -      "data": {
        -        "default": null,
        -        "title": "Data"
        -      },
        -      "error": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        -            "properties": {
        -              "code": {
        -                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        -                "enum": [
        -                  "RATE_LIMIT_EXCEEDED",
        -                  "TIER_INSUFFICIENT",
        -                  "INVALID_INPUT",
        -                  "SCHEMA_VERSION_MISMATCH",
        -                  "SCHEMA_INVARIANT_VIOLATION",
        -                  "UPSTREAM_TIMEOUT",
        -                  "BACKEND_FAILURE",
        -                  "IP_BLOCKED",
        -                  "RESOURCE_NOT_FOUND",
        -                  "RENDER_FAILURE",
        -                  "OCR_LOW_CONFIDENCE",
        -                  "MANUAL_REVIEW_REQUIRED",
        -                  "ACCEPTANCE_REQUIRED",
        -                  "INVALID_TOKEN"
        -                ],
        -                "type": "string"
        -              },
        -              "details": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "message": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "recoverable": {
        -                "type": "boolean"
        -              },
        -              "retry_after_seconds": {
        -                "anyOf": [
        -                  {
        -                    "minimum": 0,
        -                    "type": "integer"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              }
        -            },
        -            "required": [
        -              "code",
        -              "message",
        -              "recoverable"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      }
        -    },
        -    "required": [
        -      "_meta"
        -    ],
        -    "type": "object"
        -  }
        -]New value: +[
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "_meta": {
        +        "additionalProperties": false,
        +        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        +        "properties": {
        +          "deliverables": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        +                "properties": {
        +                  "docx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "dxf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "expires_at": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  },
        +                  "pdf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "xlsx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "expires_at"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "document_id": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "issued_at": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "output_mode": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Surfaces what a trimmed ``output_mode`` withheld from ``data``.\n\nA trimmed mode (``summary`` / ``boq`` / ``boq_with_backup``) withholds\nalready-computed fields to keep the chat payload small. The withheld value\nreads to a client agent as \"capability missing\" (the box-culvert \"geometry\nbuilder isn't firing\" scare) rather than \"pared for size\": ``drawing`` and\n``audit_trail`` appear as ``null``, ``boq_rows`` as an empty list ``[]``\n(its type forbids ``null``) — both indistinguishable from a genuine absent\nresult. This names the withheld fields and the exact mode that brings each\nback, so the value is unambiguous. Absent on the default ``full_json`` mode\n— nothing is withheld, nothing to point at.",
        +                "properties": {
        +                  "mode": {
        +                    "enum": [
        +                      "summary",
        +                      "boq",
        +                      "boq_with_backup"
        +                    ],
        +                    "type": "string"
        +                  },
        +                  "omitted_fields": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "minItems": 1,
        +                    "type": "array"
        +                  },
        +                  "retrieve_with": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "mode",
        +                  "omitted_fields",
        +                  "retrieve_with"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "rate_limit_remaining": {
        +            "anyOf": [
        +              {
        +                "minimum": 0,
        +                "type": "integer"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "request_id": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "schema_version": {
        +            "const": "1.0.0",
        +            "default": "1.0.0",
        +            "type": "string"
        +          },
        +          "scope_boundary": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        +                "properties": {
        +                  "not_in_scope": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "produced": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "recommended_companions": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "type": "string"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "produced",
        +                  "not_in_scope"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tier": {
        +            "enum": [
        +              "free",
        +              "paid"
        +            ],
        +            "type": "string"
        +          },
        +          "tier_upgrade": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        +                "properties": {
        +                  "available_tiers": {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        +                      "properties": {
        +                        "billing": {
        +                          "enum": [
        +                            "one_off",
        +                            "monthly",
        +                            "annual"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "currency": {
        +                          "enum": [
        +                            "GBP",
        +                            "SGD",
        +                            "EUR",
        +                            "USD",
        +                            "CAD",
        +                            "AUD",
        +                            "NZD",
        +                            "MYR"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "display_name": {
        +                          "type": "string"
        +                        },
        +                        "price_local": {
        +                          "type": "number"
        +                        },
        +                        "tier_slug": {
        +                          "enum": [
        +                            "7_day_pass",
        +                            "solo",
        +                            "studio",
        +                            "practice"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "unlock_summary": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "tier_slug",
        +                        "display_name",
        +                        "price_local",
        +                        "currency",
        +                        "billing",
        +                        "unlock_summary"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "current_tier": {
        +                    "const": "free",
        +                    "default": "free",
        +                    "type": "string"
        +                  },
        +                  "pass_credit": {
        +                    "anyOf": [
        +                      {
        +                        "additionalProperties": false,
        +                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        +                        "properties": {
        +                          "amount_local": {
        +                            "type": "number"
        +                          },
        +                          "applies_to": {
        +                            "const": "solo_first_month",
        +                            "default": "solo_first_month",
        +                            "type": "string"
        +                          },
        +                          "currency": {
        +                            "type": "string"
        +                          },
        +                          "redeemable_until": {
        +                            "type": "string"
        +                          }
        +                        },
        +                        "required": [
        +                          "amount_local",
        +                          "currency",
        +                          "redeemable_until"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "pricing_url": {
        +                    "default": "https://civilquants.com/pricing",
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "available_tiers"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tos_url": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "upgrade_hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "warranty_disclaimer": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          }
        +        },
        +        "required": [
        +          "request_id",
        +          "issued_at",
        +          "tier"
        +        ],
        +        "type": "object"
        +      },
        +      "data": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "properties": {
        +              "assembly_count": {
        +                "type": "integer"
        +              },
        +              "assembly_drawings": {
        +                "items": {
        +                  "additionalProperties": false,
        +                  "description": "One enabled assembly's drawing payload for the project recompute\nresponse (G.4.4b Step 2).\n\nMirrors the per-assembly drawing surface from\n``POST /api/assemblies/{slug}/compute`` (same ``DrawingRef`` shape,\nsame SVG renderer via ``build_drawing_ref``) so the project view's\ncontact-sheet centre pane renders identically to the single-assembly\ncalculator preview. ``drawing`` is nullable to stay backward-\ncompatible with assemblies that don't emit ``draw_entities`` (older\nshape); the few assemblies emitting an empty list still get a tiny\nplaceholder SVG so the UI never has to special-case absence.",
        +                  "properties": {
        +                    "assembly_id": {
        +                      "type": "string"
        +                    },
        +                    "drawing": {
        +                      "anyOf": [
        +                        {
        +                          "additionalProperties": false,
        +                          "description": "Server-rendered SVG preview of the assembly geometry.\n\nPer G.6.3 / STATUS.md decision 6 (2026-05-19): one source of\ngeometry (`DrawEntity` list emitted by `Assembly.compute`), two\noutput paths (this SVG for inline preview, the `GET .../dxf`\nendpoint for the real CAD download). The browser displays\n`svg_b64` decoded inline; `viewbox` drives client zoom/pan\ncontrols without re-parsing the SVG.\n\n`svg_b64` is base64 of a UTF-8 SVG document with one `<g\nclass=\"cq-layer cq-layer-<name>\">` per layer. Styling defaults are\ninlined so the preview renders without an external stylesheet;\nfront-end CSS may override via the class names.",
        +                          "properties": {
        +                            "entity_count": {
        +                              "description": "Number of DrawEntities rendered",
        +                              "minimum": 0,
        +                              "type": "integer"
        +                            },
        +                            "svg_b64": {
        +                              "description": "Base64-encoded SVG document",
        +                              "minLength": 1,
        +                              "type": "string"
        +                            },
        +                            "unit_of_drawing": {
        +                              "const": "m",
        +                              "default": "m",
        +                              "description": "Engine geometry is in metres. Surfaced here so the client never has to guess; if a future engine switches to mm this becomes the discriminator.",
        +                              "type": "string"
        +                            },
        +                            "viewbox_height": {
        +                              "description": "SVG viewBox height in engine units (m)",
        +                              "exclusiveMinimum": 0,
        +                              "type": "number"
        +                            },
        +                            "viewbox_width": {
        +                              "description": "SVG viewBox width in engine units (m)",
        +                              "exclusiveMinimum": 0,
        +                              "type": "number"
        +                            },
        +                            "viewbox_x": {
        +                              "description": "SVG viewBox x in engine units (m)",
        +                              "type": "number"
        +                            },
        +                            "viewbox_y": {
        +                              "description": "SVG viewBox y in engine units (m)",
        +                              "type": "number"
        +                            }
        +                          },
        +                          "required": [
        +                            "svg_b64",
        +                            "viewbox_x",
        +                            "viewbox_y",
        +                            "viewbox_width",
        +                            "viewbox_height",
        +                            "entity_count"
        +                          ],
        +                          "type": "object"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "label": {
        +                      "type": "string"
        +                    },
        +                    "position": {
        +                      "type": "integer"
        +                    },
        +                    "slug": {
        +                      "type": "string"
        +                    }
        +                  },
        +                  "required": [
        +                    "assembly_id",
        +                    "slug",
        +                    "label",
        +                    "position"
        +                  ],
        +                  "type": "object"
        +                },
        +                "type": "array"
        +              },
        +              "boqs_by_standard": {
        +                "additionalProperties": {
        +                  "items": {
        +                    "additionalProperties": false,
        +                    "description": "Slim BoQ row for the recompute response. Matches the engine's own\n``BoQItem`` columns; rate / amount stay null per the freemium-MCP\npricing-is-yours discipline (schema § 1.3).",
        +                    "properties": {
        +                      "amount": {
        +                        "anyOf": [
        +                          {
        +                            "type": "number"
        +                          },
        +                          {
        +                            "type": "null"
        +                          }
        +                        ],
        +                        "default": null
        +                      },
        +                      "code": {
        +                        "type": "string"
        +                      },
        +                      "description": {
        +                        "type": "string"
        +                      },
        +                      "group": {
        +                        "anyOf": [
        +                          {
        +                            "type": "string"
        +                          },
        +                          {
        +                            "type": "null"
        +                          }
        +                        ],
        +                        "default": null
        +                      },
        +                      "nrm1_element": {
        +                        "anyOf": [
        +                          {
        +                            "type": "string"
        +                          },
        +                          {
        +                            "type": "null"
        +                          }
        +                        ],
        +                        "default": null
        +                      },
        +                      "nrm1_group_element": {
        +                        "anyOf": [
        +                          {
        +                            "type": "integer"
        +                          },
        +                          {
        +                            "type": "null"
        +                          }
        +                        ],
        +                        "default": null
        +                      },
        +                      "nrm1_sub_element": {
        +                        "anyOf": [
        +                          {
        +                            "type": "string"
        +                          },
        +                          {
        +                            "type": "null"
        +                          }
        +                        ],
        +                        "default": null
        +                      },
        +                      "quantity": {
        +                        "minimum": 0,
        +                        "type": "number"
        +                      },
        +                      "rate": {
        +                        "anyOf": [
        +                          {
        +                            "type": "number"
        +                          },
        +                          {
        +                            "type": "null"
        +                          }
        +                        ],
        +                        "default": null
        +                      },
        +                      "sub_group": {
        +                        "anyOf": [
        +                          {
        +                            "type": "string"
        +                          },
        +                          {
        +                            "type": "null"
        +                          }
        +                        ],
        +                        "default": null
        +                      },
        +                      "unit": {
        +                        "type": "string"
        +                      }
        +                    },
        +                    "required": [
        +                      "code",
        +                      "description",
        +                      "unit",
        +                      "quantity"
        +                    ],
        +                    "type": "object"
        +                  },
        +                  "type": "array"
        +                },
        +                "type": "object"
        +              },
        +              "procurement_summary": {
        +                "items": {
        +                  "additionalProperties": false,
        +                  "description": "One row of the project's procurement summary (G.4.4b Step 1).\n\nThe procurement summary is the standard-agnostic material rollup keyed\non ``(category, spec, unit)`` — distinct from ``boqs_by_standard`` (a\nmeasurement-standard projection) and identical across all four\nstandards by construction. Drives the right pane of\n``/workspace/[project_id]`` and the ``Procurement`` sheet of the\nproject XLSX (per launch spec § 3.4.2).",
        +                  "properties": {
        +                    "category": {
        +                      "type": "string"
        +                    },
        +                    "quantity": {
        +                      "minimum": 0,
        +                      "type": "number"
        +                    },
        +                    "source_assemblies": {
        +                      "items": {
        +                        "type": "string"
        +                      },
        +                      "type": "array"
        +                    },
        +                    "spec": {
        +                      "type": "string"
        +                    },
        +                    "unit": {
        +                      "type": "string"
        +                    }
        +                  },
        +                  "required": [
        +                    "category",
        +                    "spec",
        +                    "quantity",
        +                    "unit",
        +                    "source_assemblies"
        +                  ],
        +                  "type": "object"
        +                },
        +                "type": "array"
        +              },
        +              "project_id": {
        +                "type": "string"
        +              },
        +              "standards_rendered": {
        +                "items": {
        +                  "type": "string"
        +                },
        +                "type": "array"
        +              },
        +              "work_item_count": {
        +                "type": "integer"
        +              }
        +            },
        +            "required": [
        +              "project_id",
        +              "standards_rendered",
        +              "assembly_count",
        +              "work_item_count",
        +              "boqs_by_standard",
        +              "procurement_summary",
        +              "assembly_drawings"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      },
        +      "error": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        +            "properties": {
        +              "code": {
        +                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        +                "enum": [
        +                  "RATE_LIMIT_EXCEEDED",
        +                  "TIER_INSUFFICIENT",
        +                  "INVALID_INPUT",
        +                  "SCHEMA_VERSION_MISMATCH",
        +                  "SCHEMA_INVARIANT_VIOLATION",
        +                  "UPSTREAM_TIMEOUT",
        +                  "BACKEND_FAILURE",
        +                  "IP_BLOCKED",
        +                  "RESOURCE_NOT_FOUND",
        +                  "RENDER_FAILURE",
        +                  "OCR_LOW_CONFIDENCE",
        +                  "MANUAL_REVIEW_REQUIRED",
        +                  "ACCEPTANCE_REQUIRED",
        +                  "INVALID_TOKEN"
        +                ],
        +                "type": "string"
        +              },
        +              "details": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "message": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "recoverable": {
        +                "type": "boolean"
        +              },
        +              "retry_after_seconds": {
        +                "anyOf": [
        +                  {
        +                    "minimum": 0,
        +                    "type": "integer"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              }
        +            },
        +            "required": [
        +              "code",
        +              "message",
        +              "recoverable"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      }
        +    },
        +    "required": [
        +      "_meta"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "_meta": {
        +        "additionalProperties": false,
        +        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        +        "properties": {
        +          "deliverables": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        +                "properties": {
        +                  "docx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "dxf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "expires_at": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  },
        +                  "pdf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "xlsx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "expires_at"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "document_id": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "issued_at": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "output_mode": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Surfaces what a trimmed ``output_mode`` withheld from ``data``.\n\nA trimmed mode (``summary`` / ``boq`` / ``boq_with_backup``) withholds\nalready-computed fields to keep the chat payload small. The withheld value\nreads to a client agent as \"capability missing\" (the box-culvert \"geometry\nbuilder isn't firing\" scare) rather than \"pared for size\": ``drawing`` and\n``audit_trail`` appear as ``null``, ``boq_rows`` as an empty list ``[]``\n(its type forbids ``null``) — both indistinguishable from a genuine absent\nresult. This names the withheld fields and the exact mode that brings each\nback, so the value is unambiguous. Absent on the default ``full_json`` mode\n— nothing is withheld, nothing to point at.",
        +                "properties": {
        +                  "mode": {
        +                    "enum": [
        +                      "summary",
        +                      "boq",
        +                      "boq_with_backup"
        +                    ],
        +                    "type": "string"
        +                  },
        +                  "omitted_fields": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "minItems": 1,
        +                    "type": "array"
        +                  },
        +                  "retrieve_with": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "mode",
        +                  "omitted_fields",
        +                  "retrieve_with"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "rate_limit_remaining": {
        +            "anyOf": [
        +              {
        +                "minimum": 0,
        +                "type": "integer"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "request_id": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "schema_version": {
        +            "const": "1.0.0",
        +            "default": "1.0.0",
        +            "type": "string"
        +          },
        +          "scope_boundary": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        +                "properties": {
        +                  "not_in_scope": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "produced": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "recommended_companions": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "type": "string"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "produced",
        +                  "not_in_scope"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tier": {
        +            "enum": [
        +              "free",
        +              "paid"
        +            ],
        +            "type": "string"
        +          },
        +          "tier_upgrade": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        +                "properties": {
        +                  "available_tiers": {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        +                      "properties": {
        +                        "billing": {
        +                          "enum": [
        +                            "one_off",
        +                            "monthly",
        +                            "annual"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "currency": {
        +                          "enum": [
        +                            "GBP",
        +                            "SGD",
        +                            "EUR",
        +                            "USD",
        +                            "CAD",
        +                            "AUD",
        +                            "NZD",
        +                            "MYR"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "display_name": {
        +                          "type": "string"
        +                        },
        +                        "price_local": {
        +                          "type": "number"
        +                        },
        +                        "tier_slug": {
        +                          "enum": [
        +                            "7_day_pass",
        +                            "solo",
        +                            "studio",
        +                            "practice"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "unlock_summary": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "tier_slug",
        +                        "display_name",
        +                        "price_local",
        +                        "currency",
        +                        "billing",
        +                        "unlock_summary"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "current_tier": {
        +                    "const": "free",
        +                    "default": "free",
        +                    "type": "string"
        +                  },
        +                  "pass_credit": {
        +                    "anyOf": [
        +                      {
        +                        "additionalProperties": false,
        +                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        +                        "properties": {
        +                          "amount_local": {
        +                            "type": "number"
        +                          },
        +                          "applies_to": {
        +                            "const": "solo_first_month",
        +                            "default": "solo_first_month",
        +                            "type": "string"
        +                          },
        +                          "currency": {
        +                            "type": "string"
        +                          },
        +                          "redeemable_until": {
        +                            "type": "string"
        +                          }
        +                        },
        +                        "required": [
        +                          "amount_local",
        +                          "currency",
        +                          "redeemable_until"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "pricing_url": {
        +                    "default": "https://civilquants.com/pricing",
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "available_tiers"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tos_url": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "upgrade_hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "warranty_disclaimer": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          }
        +        },
        +        "required": [
        +          "request_id",
        +          "issued_at",
        +          "tier"
        +        ],
        +        "type": "object"
        +      },
        +      "data": {
        +        "default": null,
        +        "title": "Data"
        +      },
        +      "error": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        +            "properties": {
        +              "code": {
        +                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        +                "enum": [
        +                  "RATE_LIMIT_EXCEEDED",
        +                  "TIER_INSUFFICIENT",
        +                  "INVALID_INPUT",
        +                  "SCHEMA_VERSION_MISMATCH",
        +                  "SCHEMA_INVARIANT_VIOLATION",
        +                  "UPSTREAM_TIMEOUT",
        +                  "BACKEND_FAILURE",
        +                  "IP_BLOCKED",
        +                  "RESOURCE_NOT_FOUND",
        +                  "RENDER_FAILURE",
        +                  "OCR_LOW_CONFIDENCE",
        +                  "MANUAL_REVIEW_REQUIRED",
        +                  "ACCEPTANCE_REQUIRED",
        +                  "INVALID_TOKEN"
        +                ],
        +                "type": "string"
        +              },
        +              "details": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "message": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "recoverable": {
        +                "type": "boolean"
        +              },
        +              "retry_after_seconds": {
        +                "anyOf": [
        +                  {
        +                    "minimum": 0,
        +                    "type": "integer"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              }
        +            },
        +            "required": [
        +              "code",
        +              "message",
        +              "recoverable"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      }
        +    },
        +    "required": [
        +      "_meta"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedrender_skill_report1 field changed
      • changedOutput schema / properties / result / anyOf
        Previous value: -[
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "_meta": {
        -        "additionalProperties": false,
        -        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        -        "properties": {
        -          "deliverables": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        -                "properties": {
        -                  "docx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "dxf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "expires_at": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  },
        -                  "pdf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "xlsx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "expires_at"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "document_id": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "issued_at": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "rate_limit_remaining": {
        -            "anyOf": [
        -              {
        -                "minimum": 0,
        -                "type": "integer"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "request_id": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "schema_version": {
        -            "const": "1.0.0",
        -            "default": "1.0.0",
        -            "type": "string"
        -          },
        -          "scope_boundary": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        -                "properties": {
        -                  "not_in_scope": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "produced": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "recommended_companions": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "type": "string"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "produced",
        -                  "not_in_scope"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tier": {
        -            "enum": [
        -              "free",
        -              "paid"
        -            ],
        -            "type": "string"
        -          },
        -          "tier_upgrade": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        -                "properties": {
        -                  "available_tiers": {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        -                      "properties": {
        -                        "billing": {
        -                          "enum": [
        -                            "one_off",
        -                            "monthly",
        -                            "annual"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "currency": {
        -                          "enum": [
        -                            "GBP",
        -                            "SGD",
        -                            "EUR",
        -                            "USD",
        -                            "CAD",
        -                            "AUD",
        -                            "NZD",
        -                            "MYR"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "display_name": {
        -                          "type": "string"
        -                        },
        -                        "price_local": {
        -                          "type": "number"
        -                        },
        -                        "tier_slug": {
        -                          "enum": [
        -                            "7_day_pass",
        -                            "solo",
        -                            "studio",
        -                            "practice"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "unlock_summary": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "tier_slug",
        -                        "display_name",
        -                        "price_local",
        -                        "currency",
        -                        "billing",
        -                        "unlock_summary"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "current_tier": {
        -                    "const": "free",
        -                    "default": "free",
        -                    "type": "string"
        -                  },
        -                  "pass_credit": {
        -                    "anyOf": [
        -                      {
        -                        "additionalProperties": false,
        -                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        -                        "properties": {
        -                          "amount_local": {
        -                            "type": "number"
        -                          },
        -                          "applies_to": {
        -                            "const": "solo_first_month",
        -                            "default": "solo_first_month",
        -                            "type": "string"
        -                          },
        -                          "currency": {
        -                            "type": "string"
        -                          },
        -                          "redeemable_until": {
        -                            "type": "string"
        -                          }
        -                        },
        -                        "required": [
        -                          "amount_local",
        -                          "currency",
        -                          "redeemable_until"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "pricing_url": {
        -                    "default": "https://civilquants.com/pricing",
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "available_tiers"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tos_url": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "upgrade_hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "warranty_disclaimer": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          }
        -        },
        -        "required": [
        -          "request_id",
        -          "issued_at",
        -          "tier"
        -        ],
        -        "type": "object"
        -      },
        -      "data": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Wire response shape — schema § 4 RenderResult.\n\nPer Phase 3.4 A.3: each skill has TWO possible delivery modes that\nmap to ``CIVILQUANTS_ARTEFACT_STORE``:\n  * ``local`` (dev default) — base64-inline in ``xlsx_b64`` / ``docx_b64``\n  * ``r2`` (production) — pre-signed URL in ``xlsx_url`` / ``docx_url``\nThe validator enforces \"exactly one delivery channel per skill\" — a\nsingle render call returns exactly one of {b64, url} for its target\nformat, never both. The other skill's fields stay null.",
        -            "properties": {
        -              "byte_size": {
        -                "description": "Decoded size of whichever deliverable was rendered.",
        -                "minimum": 0,
        -                "type": "integer"
        -              },
        -              "docx_b64": {
        -                "anyOf": [
        -                  {
        -                    "type": "string"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null,
        -                "description": "Base64-encoded .docx document bytes (Word skill, local store mode only)."
        -              },
        -              "docx_url": {
        -                "anyOf": [
        -                  {
        -                    "type": "string"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null,
        -                "description": "Pre-signed R2 GET URL for .docx (Word skill, R2 store mode)."
        -              },
        -              "pdf_url": {
        -                "anyOf": [
        -                  {
        -                    "type": "string"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null,
        -                "description": "Reserved for a future PDF skill backend."
        -              },
        -              "skill": {
        -                "description": "Echoes the resolved skill slug.",
        -                "type": "string"
        -              },
        -              "watermark_state": {
        -                "description": "`free` when the free-tier sheet protection + watermark is applied; `none` for paid output.",
        -                "enum": [
        -                  "free",
        -                  "none"
        -                ],
        -                "type": "string"
        -              },
        -              "xlsx_b64": {
        -                "anyOf": [
        -                  {
        -                    "type": "string"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null,
        -                "description": "Base64-encoded .xlsx workbook bytes (Excel skill, local store mode only)."
        -              },
        -              "xlsx_url": {
        -                "anyOf": [
        -                  {
        -                    "type": "string"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null,
        -                "description": "Pre-signed R2 GET URL for .xlsx (Excel skill, R2 store mode)."
        -              }
        -            },
        -            "required": [
        -              "watermark_state",
        -              "byte_size",
        -              "skill"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      },
        -      "error": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        -            "properties": {
        -              "code": {
        -                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        -                "enum": [
        -                  "RATE_LIMIT_EXCEEDED",
        -                  "TIER_INSUFFICIENT",
        -                  "INVALID_INPUT",
        -                  "SCHEMA_VERSION_MISMATCH",
        -                  "SCHEMA_INVARIANT_VIOLATION",
        -                  "UPSTREAM_TIMEOUT",
        -                  "BACKEND_FAILURE",
        -                  "IP_BLOCKED",
        -                  "RESOURCE_NOT_FOUND",
        -                  "RENDER_FAILURE",
        -                  "OCR_LOW_CONFIDENCE",
        -                  "MANUAL_REVIEW_REQUIRED",
        -                  "ACCEPTANCE_REQUIRED",
        -                  "INVALID_TOKEN"
        -                ],
        -                "type": "string"
        -              },
        -              "details": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "message": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "recoverable": {
        -                "type": "boolean"
        -              },
        -              "retry_after_seconds": {
        -                "anyOf": [
        -                  {
        -                    "minimum": 0,
        -                    "type": "integer"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              }
        -            },
        -            "required": [
        -              "code",
        -              "message",
        -              "recoverable"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      }
        -    },
        -    "required": [
        -      "_meta"
        -    ],
        -    "type": "object"
        -  },
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "_meta": {
        -        "additionalProperties": false,
        -        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        -        "properties": {
        -          "deliverables": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        -                "properties": {
        -                  "docx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "dxf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "expires_at": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  },
        -                  "pdf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "xlsx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "expires_at"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "document_id": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "issued_at": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "rate_limit_remaining": {
        -            "anyOf": [
        -              {
        -                "minimum": 0,
        -                "type": "integer"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "request_id": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "schema_version": {
        -            "const": "1.0.0",
        -            "default": "1.0.0",
        -            "type": "string"
        -          },
        -          "scope_boundary": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        -                "properties": {
        -                  "not_in_scope": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "produced": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "recommended_companions": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "type": "string"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "produced",
        -                  "not_in_scope"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tier": {
        -            "enum": [
        -              "free",
        -              "paid"
        -            ],
        -            "type": "string"
        -          },
        -          "tier_upgrade": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        -                "properties": {
        -                  "available_tiers": {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        -                      "properties": {
        -                        "billing": {
        -                          "enum": [
        -                            "one_off",
        -                            "monthly",
        -                            "annual"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "currency": {
        -                          "enum": [
        -                            "GBP",
        -                            "SGD",
        -                            "EUR",
        -                            "USD",
        -                            "CAD",
        -                            "AUD",
        -                            "NZD",
        -                            "MYR"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "display_name": {
        -                          "type": "string"
        -                        },
        -                        "price_local": {
        -                          "type": "number"
        -                        },
        -                        "tier_slug": {
        -                          "enum": [
        -                            "7_day_pass",
        -                            "solo",
        -                            "studio",
        -                            "practice"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "unlock_summary": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "tier_slug",
        -                        "display_name",
        -                        "price_local",
        -                        "currency",
        -                        "billing",
        -                        "unlock_summary"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "current_tier": {
        -                    "const": "free",
        -                    "default": "free",
        -                    "type": "string"
        -                  },
        -                  "pass_credit": {
        -                    "anyOf": [
        -                      {
        -                        "additionalProperties": false,
        -                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        -                        "properties": {
        -                          "amount_local": {
        -                            "type": "number"
        -                          },
        -                          "applies_to": {
        -                            "const": "solo_first_month",
        -                            "default": "solo_first_month",
        -                            "type": "string"
        -                          },
        -                          "currency": {
        -                            "type": "string"
        -                          },
        -                          "redeemable_until": {
        -                            "type": "string"
        -                          }
        -                        },
        -                        "required": [
        -                          "amount_local",
        -                          "currency",
        -                          "redeemable_until"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "pricing_url": {
        -                    "default": "https://civilquants.com/pricing",
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "available_tiers"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tos_url": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "upgrade_hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "warranty_disclaimer": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          }
        -        },
        -        "required": [
        -          "request_id",
        -          "issued_at",
        -          "tier"
        -        ],
        -        "type": "object"
        -      },
        -      "data": {
        -        "default": null,
        -        "title": "Data"
        -      },
        -      "error": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        -            "properties": {
        -              "code": {
        -                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        -                "enum": [
        -                  "RATE_LIMIT_EXCEEDED",
        -                  "TIER_INSUFFICIENT",
        -                  "INVALID_INPUT",
        -                  "SCHEMA_VERSION_MISMATCH",
        -                  "SCHEMA_INVARIANT_VIOLATION",
        -                  "UPSTREAM_TIMEOUT",
        -                  "BACKEND_FAILURE",
        -                  "IP_BLOCKED",
        -                  "RESOURCE_NOT_FOUND",
        -                  "RENDER_FAILURE",
        -                  "OCR_LOW_CONFIDENCE",
        -                  "MANUAL_REVIEW_REQUIRED",
        -                  "ACCEPTANCE_REQUIRED",
        -                  "INVALID_TOKEN"
        -                ],
        -                "type": "string"
        -              },
        -              "details": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "message": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "recoverable": {
        -                "type": "boolean"
        -              },
        -              "retry_after_seconds": {
        -                "anyOf": [
        -                  {
        -                    "minimum": 0,
        -                    "type": "integer"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              }
        -            },
        -            "required": [
        -              "code",
        -              "message",
        -              "recoverable"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      }
        -    },
        -    "required": [
        -      "_meta"
        -    ],
        -    "type": "object"
        -  }
        -]New value: +[
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "_meta": {
        +        "additionalProperties": false,
        +        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        +        "properties": {
        +          "deliverables": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        +                "properties": {
        +                  "docx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "dxf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "expires_at": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  },
        +                  "pdf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "xlsx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "expires_at"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "document_id": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "issued_at": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "output_mode": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Surfaces what a trimmed ``output_mode`` withheld from ``data``.\n\nA trimmed mode (``summary`` / ``boq`` / ``boq_with_backup``) withholds\nalready-computed fields to keep the chat payload small. The withheld value\nreads to a client agent as \"capability missing\" (the box-culvert \"geometry\nbuilder isn't firing\" scare) rather than \"pared for size\": ``drawing`` and\n``audit_trail`` appear as ``null``, ``boq_rows`` as an empty list ``[]``\n(its type forbids ``null``) — both indistinguishable from a genuine absent\nresult. This names the withheld fields and the exact mode that brings each\nback, so the value is unambiguous. Absent on the default ``full_json`` mode\n— nothing is withheld, nothing to point at.",
        +                "properties": {
        +                  "mode": {
        +                    "enum": [
        +                      "summary",
        +                      "boq",
        +                      "boq_with_backup"
        +                    ],
        +                    "type": "string"
        +                  },
        +                  "omitted_fields": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "minItems": 1,
        +                    "type": "array"
        +                  },
        +                  "retrieve_with": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "mode",
        +                  "omitted_fields",
        +                  "retrieve_with"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "rate_limit_remaining": {
        +            "anyOf": [
        +              {
        +                "minimum": 0,
        +                "type": "integer"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "request_id": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "schema_version": {
        +            "const": "1.0.0",
        +            "default": "1.0.0",
        +            "type": "string"
        +          },
        +          "scope_boundary": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        +                "properties": {
        +                  "not_in_scope": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "produced": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "recommended_companions": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "type": "string"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "produced",
        +                  "not_in_scope"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tier": {
        +            "enum": [
        +              "free",
        +              "paid"
        +            ],
        +            "type": "string"
        +          },
        +          "tier_upgrade": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        +                "properties": {
        +                  "available_tiers": {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        +                      "properties": {
        +                        "billing": {
        +                          "enum": [
        +                            "one_off",
        +                            "monthly",
        +                            "annual"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "currency": {
        +                          "enum": [
        +                            "GBP",
        +                            "SGD",
        +                            "EUR",
        +                            "USD",
        +                            "CAD",
        +                            "AUD",
        +                            "NZD",
        +                            "MYR"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "display_name": {
        +                          "type": "string"
        +                        },
        +                        "price_local": {
        +                          "type": "number"
        +                        },
        +                        "tier_slug": {
        +                          "enum": [
        +                            "7_day_pass",
        +                            "solo",
        +                            "studio",
        +                            "practice"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "unlock_summary": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "tier_slug",
        +                        "display_name",
        +                        "price_local",
        +                        "currency",
        +                        "billing",
        +                        "unlock_summary"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "current_tier": {
        +                    "const": "free",
        +                    "default": "free",
        +                    "type": "string"
        +                  },
        +                  "pass_credit": {
        +                    "anyOf": [
        +                      {
        +                        "additionalProperties": false,
        +                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        +                        "properties": {
        +                          "amount_local": {
        +                            "type": "number"
        +                          },
        +                          "applies_to": {
        +                            "const": "solo_first_month",
        +                            "default": "solo_first_month",
        +                            "type": "string"
        +                          },
        +                          "currency": {
        +                            "type": "string"
        +                          },
        +                          "redeemable_until": {
        +                            "type": "string"
        +                          }
        +                        },
        +                        "required": [
        +                          "amount_local",
        +                          "currency",
        +                          "redeemable_until"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "pricing_url": {
        +                    "default": "https://civilquants.com/pricing",
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "available_tiers"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tos_url": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "upgrade_hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "warranty_disclaimer": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          }
        +        },
        +        "required": [
        +          "request_id",
        +          "issued_at",
        +          "tier"
        +        ],
        +        "type": "object"
        +      },
        +      "data": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Wire response shape — schema § 4 RenderResult.\n\nPer Phase 3.4 A.3: each skill has TWO possible delivery modes that\nmap to ``CIVILQUANTS_ARTEFACT_STORE``:\n  * ``local`` (dev default) — base64-inline in ``xlsx_b64`` / ``docx_b64``\n  * ``r2`` (production) — pre-signed URL in ``xlsx_url`` / ``docx_url``\nThe validator enforces \"exactly one delivery channel per skill\" — a\nsingle render call returns exactly one of {b64, url} for its target\nformat, never both. The other skill's fields stay null.",
        +            "properties": {
        +              "byte_size": {
        +                "description": "Decoded size of whichever deliverable was rendered.",
        +                "minimum": 0,
        +                "type": "integer"
        +              },
        +              "docx_b64": {
        +                "anyOf": [
        +                  {
        +                    "type": "string"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null,
        +                "description": "Base64-encoded .docx document bytes (Word skill, local store mode only)."
        +              },
        +              "docx_url": {
        +                "anyOf": [
        +                  {
        +                    "type": "string"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null,
        +                "description": "Pre-signed R2 GET URL for .docx (Word skill, R2 store mode)."
        +              },
        +              "pdf_url": {
        +                "anyOf": [
        +                  {
        +                    "type": "string"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null,
        +                "description": "Reserved for a future PDF skill backend."
        +              },
        +              "skill": {
        +                "description": "Echoes the resolved skill slug.",
        +                "type": "string"
        +              },
        +              "watermark_state": {
        +                "description": "`free` when the free-tier sheet protection + watermark is applied; `none` for paid output.",
        +                "enum": [
        +                  "free",
        +                  "none"
        +                ],
        +                "type": "string"
        +              },
        +              "xlsx_b64": {
        +                "anyOf": [
        +                  {
        +                    "type": "string"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null,
        +                "description": "Base64-encoded .xlsx workbook bytes (Excel skill, local store mode only)."
        +              },
        +              "xlsx_url": {
        +                "anyOf": [
        +                  {
        +                    "type": "string"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null,
        +                "description": "Pre-signed R2 GET URL for .xlsx (Excel skill, R2 store mode)."
        +              }
        +            },
        +            "required": [
        +              "watermark_state",
        +              "byte_size",
        +              "skill"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      },
        +      "error": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        +            "properties": {
        +              "code": {
        +                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        +                "enum": [
        +                  "RATE_LIMIT_EXCEEDED",
        +                  "TIER_INSUFFICIENT",
        +                  "INVALID_INPUT",
        +                  "SCHEMA_VERSION_MISMATCH",
        +                  "SCHEMA_INVARIANT_VIOLATION",
        +                  "UPSTREAM_TIMEOUT",
        +                  "BACKEND_FAILURE",
        +                  "IP_BLOCKED",
        +                  "RESOURCE_NOT_FOUND",
        +                  "RENDER_FAILURE",
        +                  "OCR_LOW_CONFIDENCE",
        +                  "MANUAL_REVIEW_REQUIRED",
        +                  "ACCEPTANCE_REQUIRED",
        +                  "INVALID_TOKEN"
        +                ],
        +                "type": "string"
        +              },
        +              "details": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "message": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "recoverable": {
        +                "type": "boolean"
        +              },
        +              "retry_after_seconds": {
        +                "anyOf": [
        +                  {
        +                    "minimum": 0,
        +                    "type": "integer"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              }
        +            },
        +            "required": [
        +              "code",
        +              "message",
        +              "recoverable"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      }
        +    },
        +    "required": [
        +      "_meta"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "_meta": {
        +        "additionalProperties": false,
        +        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        +        "properties": {
        +          "deliverables": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        +                "properties": {
        +                  "docx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "dxf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "expires_at": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  },
        +                  "pdf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "xlsx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "expires_at"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "document_id": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "issued_at": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "output_mode": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Surfaces what a trimmed ``output_mode`` withheld from ``data``.\n\nA trimmed mode (``summary`` / ``boq`` / ``boq_with_backup``) withholds\nalready-computed fields to keep the chat payload small. The withheld value\nreads to a client agent as \"capability missing\" (the box-culvert \"geometry\nbuilder isn't firing\" scare) rather than \"pared for size\": ``drawing`` and\n``audit_trail`` appear as ``null``, ``boq_rows`` as an empty list ``[]``\n(its type forbids ``null``) — both indistinguishable from a genuine absent\nresult. This names the withheld fields and the exact mode that brings each\nback, so the value is unambiguous. Absent on the default ``full_json`` mode\n— nothing is withheld, nothing to point at.",
        +                "properties": {
        +                  "mode": {
        +                    "enum": [
        +                      "summary",
        +                      "boq",
        +                      "boq_with_backup"
        +                    ],
        +                    "type": "string"
        +                  },
        +                  "omitted_fields": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "minItems": 1,
        +                    "type": "array"
        +                  },
        +                  "retrieve_with": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "mode",
        +                  "omitted_fields",
        +                  "retrieve_with"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "rate_limit_remaining": {
        +            "anyOf": [
        +              {
        +                "minimum": 0,
        +                "type": "integer"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "request_id": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "schema_version": {
        +            "const": "1.0.0",
        +            "default": "1.0.0",
        +            "type": "string"
        +          },
        +          "scope_boundary": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        +                "properties": {
        +                  "not_in_scope": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "produced": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "recommended_companions": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "type": "string"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "produced",
        +                  "not_in_scope"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tier": {
        +            "enum": [
        +              "free",
        +              "paid"
        +            ],
        +            "type": "string"
        +          },
        +          "tier_upgrade": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        +                "properties": {
        +                  "available_tiers": {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        +                      "properties": {
        +                        "billing": {
        +                          "enum": [
        +                            "one_off",
        +                            "monthly",
        +                            "annual"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "currency": {
        +                          "enum": [
        +                            "GBP",
        +                            "SGD",
        +                            "EUR",
        +                            "USD",
        +                            "CAD",
        +                            "AUD",
        +                            "NZD",
        +                            "MYR"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "display_name": {
        +                          "type": "string"
        +                        },
        +                        "price_local": {
        +                          "type": "number"
        +                        },
        +                        "tier_slug": {
        +                          "enum": [
        +                            "7_day_pass",
        +                            "solo",
        +                            "studio",
        +                            "practice"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "unlock_summary": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "tier_slug",
        +                        "display_name",
        +                        "price_local",
        +                        "currency",
        +                        "billing",
        +                        "unlock_summary"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "current_tier": {
        +                    "const": "free",
        +                    "default": "free",
        +                    "type": "string"
        +                  },
        +                  "pass_credit": {
        +                    "anyOf": [
        +                      {
        +                        "additionalProperties": false,
        +                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        +                        "properties": {
        +                          "amount_local": {
        +                            "type": "number"
        +                          },
        +                          "applies_to": {
        +                            "const": "solo_first_month",
        +                            "default": "solo_first_month",
        +                            "type": "string"
        +                          },
        +                          "currency": {
        +                            "type": "string"
        +                          },
        +                          "redeemable_until": {
        +                            "type": "string"
        +                          }
        +                        },
        +                        "required": [
        +                          "amount_local",
        +                          "currency",
        +                          "redeemable_until"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "pricing_url": {
        +                    "default": "https://civilquants.com/pricing",
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "available_tiers"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tos_url": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "upgrade_hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "warranty_disclaimer": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          }
        +        },
        +        "required": [
        +          "request_id",
        +          "issued_at",
        +          "tier"
        +        ],
        +        "type": "object"
        +      },
        +      "data": {
        +        "default": null,
        +        "title": "Data"
        +      },
        +      "error": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        +            "properties": {
        +              "code": {
        +                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        +                "enum": [
        +                  "RATE_LIMIT_EXCEEDED",
        +                  "TIER_INSUFFICIENT",
        +                  "INVALID_INPUT",
        +                  "SCHEMA_VERSION_MISMATCH",
        +                  "SCHEMA_INVARIANT_VIOLATION",
        +                  "UPSTREAM_TIMEOUT",
        +                  "BACKEND_FAILURE",
        +                  "IP_BLOCKED",
        +                  "RESOURCE_NOT_FOUND",
        +                  "RENDER_FAILURE",
        +                  "OCR_LOW_CONFIDENCE",
        +                  "MANUAL_REVIEW_REQUIRED",
        +                  "ACCEPTANCE_REQUIRED",
        +                  "INVALID_TOKEN"
        +                ],
        +                "type": "string"
        +              },
        +              "details": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "message": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "recoverable": {
        +                "type": "boolean"
        +              },
        +              "retry_after_seconds": {
        +                "anyOf": [
        +                  {
        +                    "minimum": 0,
        +                    "type": "integer"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              }
        +            },
        +            "required": [
        +              "code",
        +              "message",
        +              "recoverable"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      }
        +    },
        +    "required": [
        +      "_meta"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedresolve_assembly_from_description1 field changed
      • changedOutput schema / properties / result / anyOf
        Previous value: -[
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "_meta": {
        -        "additionalProperties": false,
        -        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        -        "properties": {
        -          "deliverables": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        -                "properties": {
        -                  "docx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "dxf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "expires_at": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  },
        -                  "pdf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "xlsx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "expires_at"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "document_id": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "issued_at": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "rate_limit_remaining": {
        -            "anyOf": [
        -              {
        -                "minimum": 0,
        -                "type": "integer"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "request_id": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "schema_version": {
        -            "const": "1.0.0",
        -            "default": "1.0.0",
        -            "type": "string"
        -          },
        -          "scope_boundary": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        -                "properties": {
        -                  "not_in_scope": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "produced": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "recommended_companions": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "type": "string"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "produced",
        -                  "not_in_scope"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tier": {
        -            "enum": [
        -              "free",
        -              "paid"
        -            ],
        -            "type": "string"
        -          },
        -          "tier_upgrade": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        -                "properties": {
        -                  "available_tiers": {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        -                      "properties": {
        -                        "billing": {
        -                          "enum": [
        -                            "one_off",
        -                            "monthly",
        -                            "annual"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "currency": {
        -                          "enum": [
        -                            "GBP",
        -                            "SGD",
        -                            "EUR",
        -                            "USD",
        -                            "CAD",
        -                            "AUD",
        -                            "NZD",
        -                            "MYR"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "display_name": {
        -                          "type": "string"
        -                        },
        -                        "price_local": {
        -                          "type": "number"
        -                        },
        -                        "tier_slug": {
        -                          "enum": [
        -                            "7_day_pass",
        -                            "solo",
        -                            "studio",
        -                            "practice"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "unlock_summary": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "tier_slug",
        -                        "display_name",
        -                        "price_local",
        -                        "currency",
        -                        "billing",
        -                        "unlock_summary"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "current_tier": {
        -                    "const": "free",
        -                    "default": "free",
        -                    "type": "string"
        -                  },
        -                  "pass_credit": {
        -                    "anyOf": [
        -                      {
        -                        "additionalProperties": false,
        -                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        -                        "properties": {
        -                          "amount_local": {
        -                            "type": "number"
        -                          },
        -                          "applies_to": {
        -                            "const": "solo_first_month",
        -                            "default": "solo_first_month",
        -                            "type": "string"
        -                          },
        -                          "currency": {
        -                            "type": "string"
        -                          },
        -                          "redeemable_until": {
        -                            "type": "string"
        -                          }
        -                        },
        -                        "required": [
        -                          "amount_local",
        -                          "currency",
        -                          "redeemable_until"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "pricing_url": {
        -                    "default": "https://civilquants.com/pricing",
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "available_tiers"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tos_url": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "upgrade_hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "warranty_disclaimer": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          }
        -        },
        -        "required": [
        -          "request_id",
        -          "issued_at",
        -          "tier"
        -        ],
        -        "type": "object"
        -      },
        -      "data": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "The typed payload wrapped in MCPResponse[ResolveResult].",
        -            "properties": {
        -              "candidates": {
        -                "items": {
        -                  "additionalProperties": false,
        -                  "description": "A candidate assembly the description routed to.",
        -                  "properties": {
        -                    "category_l1": {
        -                      "type": "string"
        -                    },
        -                    "category_l2": {
        -                      "type": "string"
        -                    },
        -                    "compute_tool": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "display_name": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "fields": {
        -                      "items": {
        -                        "additionalProperties": false,
        -                        "description": "One Parameters field, with the metadata a caller fills a value from.",
        -                        "properties": {
        -                          "default": {
        -                            "anyOf": [
        -                              {
        -                                "type": "number"
        -                              },
        -                              {
        -                                "type": "integer"
        -                              },
        -                              {
        -                                "type": "string"
        -                              },
        -                              {
        -                                "type": "boolean"
        -                              },
        -                              {
        -                                "type": "null"
        -                              }
        -                            ]
        -                          },
        -                          "group": {
        -                            "minLength": 1,
        -                            "type": "string"
        -                          },
        -                          "help_text": {
        -                            "anyOf": [
        -                              {
        -                                "type": "string"
        -                              },
        -                              {
        -                                "type": "null"
        -                              }
        -                            ],
        -                            "default": null
        -                          },
        -                          "is_run_length": {
        -                            "default": false,
        -                            "type": "boolean"
        -                          },
        -                          "label": {
        -                            "minLength": 1,
        -                            "type": "string"
        -                          },
        -                          "load_bearing": {
        -                            "default": false,
        -                            "type": "boolean"
        -                          },
        -                          "max": {
        -                            "anyOf": [
        -                              {
        -                                "type": "number"
        -                              },
        -                              {
        -                                "type": "null"
        -                              }
        -                            ],
        -                            "default": null
        -                          },
        -                          "min": {
        -                            "anyOf": [
        -                              {
        -                                "type": "number"
        -                              },
        -                              {
        -                                "type": "null"
        -                              }
        -                            ],
        -                            "default": null
        -                          },
        -                          "name": {
        -                            "minLength": 1,
        -                            "type": "string"
        -                          },
        -                          "unit": {
        -                            "anyOf": [
        -                              {
        -                                "type": "string"
        -                              },
        -                              {
        -                                "type": "null"
        -                              }
        -                            ],
        -                            "default": null
        -                          }
        -                        },
        -                        "required": [
        -                          "name",
        -                          "label",
        -                          "default",
        -                          "group"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      "type": "array"
        -                    },
        -                    "free_alternative": {
        -                      "anyOf": [
        -                        {
        -                          "type": "string"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "multi_section_tool": {
        -                      "anyOf": [
        -                        {
        -                          "type": "string"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "slug": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "standard_note": {
        -                      "anyOf": [
        -                        {
        -                          "type": "string"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "suggested_params": {
        -                      "items": {
        -                        "additionalProperties": false,
        -                        "description": "A value the description stated with a clear anchor — a caller-confirmed\nsuggestion, NOT an authoritative value and never auto-fed to compute.",
        -                        "properties": {
        -                          "name": {
        -                            "minLength": 1,
        -                            "type": "string"
        -                          },
        -                          "source": {
        -                            "minLength": 1,
        -                            "type": "string"
        -                          },
        -                          "unit": {
        -                            "anyOf": [
        -                              {
        -                                "type": "string"
        -                              },
        -                              {
        -                                "type": "null"
        -                              }
        -                            ],
        -                            "default": null
        -                          },
        -                          "value": {
        -                            "type": "number"
        -                          }
        -                        },
        -                        "required": [
        -                          "name",
        -                          "value",
        -                          "source"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      "type": "array"
        -                    },
        -                    "supports_multi_section": {
        -                      "default": false,
        -                      "type": "boolean"
        -                    },
        -                    "tier": {
        -                      "enum": [
        -                        "free",
        -                        "paid"
        -                      ],
        -                      "type": "string"
        -                    }
        -                  },
        -                  "required": [
        -                    "slug",
        -                    "display_name",
        -                    "tier",
        -                    "category_l1",
        -                    "category_l2",
        -                    "compute_tool"
        -                  ],
        -                  "type": "object"
        -                },
        -                "type": "array"
        -              },
        -              "confidence": {
        -                "enum": [
        -                  "high",
        -                  "medium",
        -                  "low"
        -                ],
        -                "type": "string"
        -              },
        -              "preferred_standard": {
        -                "anyOf": [
        -                  {
        -                    "enum": [
        -                      "CESMM4",
        -                      "NRM2",
        -                      "SMM7",
        -                      "MMHW"
        -                    ],
        -                    "type": "string"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "query": {
        -                "type": "string"
        -              },
        -              "questions": {
        -                "items": {
        -                  "type": "string"
        -                },
        -                "type": "array"
        -              },
        -              "resolution_log": {
        -                "anyOf": [
        -                  {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "One row of the optional resolution log (return_resolution_log).",
        -                      "properties": {
        -                        "matched_terms": {
        -                          "items": {
        -                            "type": "string"
        -                          },
        -                          "type": "array"
        -                        },
        -                        "score": {
        -                          "type": "number"
        -                        },
        -                        "slug": {
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "slug",
        -                        "score"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              }
        -            },
        -            "required": [
        -              "query",
        -              "confidence"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      },
        -      "error": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        -            "properties": {
        -              "code": {
        -                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        -                "enum": [
        -                  "RATE_LIMIT_EXCEEDED",
        -                  "TIER_INSUFFICIENT",
        -                  "INVALID_INPUT",
        -                  "SCHEMA_VERSION_MISMATCH",
        -                  "SCHEMA_INVARIANT_VIOLATION",
        -                  "UPSTREAM_TIMEOUT",
        -                  "BACKEND_FAILURE",
        -                  "IP_BLOCKED",
        -                  "RESOURCE_NOT_FOUND",
        -                  "RENDER_FAILURE",
        -                  "OCR_LOW_CONFIDENCE",
        -                  "MANUAL_REVIEW_REQUIRED",
        -                  "ACCEPTANCE_REQUIRED",
        -                  "INVALID_TOKEN"
        -                ],
        -                "type": "string"
        -              },
        -              "details": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "message": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "recoverable": {
        -                "type": "boolean"
        -              },
        -              "retry_after_seconds": {
        -                "anyOf": [
        -                  {
        -                    "minimum": 0,
        -                    "type": "integer"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              }
        -            },
        -            "required": [
        -              "code",
        -              "message",
        -              "recoverable"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      }
        -    },
        -    "required": [
        -      "_meta"
        -    ],
        -    "type": "object"
        -  },
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "_meta": {
        -        "additionalProperties": false,
        -        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        -        "properties": {
        -          "deliverables": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        -                "properties": {
        -                  "docx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "dxf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "expires_at": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  },
        -                  "pdf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "xlsx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "expires_at"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "document_id": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "issued_at": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "rate_limit_remaining": {
        -            "anyOf": [
        -              {
        -                "minimum": 0,
        -                "type": "integer"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "request_id": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "schema_version": {
        -            "const": "1.0.0",
        -            "default": "1.0.0",
        -            "type": "string"
        -          },
        -          "scope_boundary": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        -                "properties": {
        -                  "not_in_scope": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "produced": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "recommended_companions": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "type": "string"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "produced",
        -                  "not_in_scope"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tier": {
        -            "enum": [
        -              "free",
        -              "paid"
        -            ],
        -            "type": "string"
        -          },
        -          "tier_upgrade": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        -                "properties": {
        -                  "available_tiers": {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        -                      "properties": {
        -                        "billing": {
        -                          "enum": [
        -                            "one_off",
        -                            "monthly",
        -                            "annual"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "currency": {
        -                          "enum": [
        -                            "GBP",
        -                            "SGD",
        -                            "EUR",
        -                            "USD",
        -                            "CAD",
        -                            "AUD",
        -                            "NZD",
        -                            "MYR"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "display_name": {
        -                          "type": "string"
        -                        },
        -                        "price_local": {
        -                          "type": "number"
        -                        },
        -                        "tier_slug": {
        -                          "enum": [
        -                            "7_day_pass",
        -                            "solo",
        -                            "studio",
        -                            "practice"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "unlock_summary": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "tier_slug",
        -                        "display_name",
        -                        "price_local",
        -                        "currency",
        -                        "billing",
        -                        "unlock_summary"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "current_tier": {
        -                    "const": "free",
        -                    "default": "free",
        -                    "type": "string"
        -                  },
        -                  "pass_credit": {
        -                    "anyOf": [
        -                      {
        -                        "additionalProperties": false,
        -                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        -                        "properties": {
        -                          "amount_local": {
        -                            "type": "number"
        -                          },
        -                          "applies_to": {
        -                            "const": "solo_first_month",
        -                            "default": "solo_first_month",
        -                            "type": "string"
        -                          },
        -                          "currency": {
        -                            "type": "string"
        -                          },
        -                          "redeemable_until": {
        -                            "type": "string"
        -                          }
        -                        },
        -                        "required": [
        -                          "amount_local",
        -                          "currency",
        -                          "redeemable_until"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "pricing_url": {
        -                    "default": "https://civilquants.com/pricing",
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "available_tiers"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tos_url": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "upgrade_hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "warranty_disclaimer": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          }
        -        },
        -        "required": [
        -          "request_id",
        -          "issued_at",
        -          "tier"
        -        ],
        -        "type": "object"
        -      },
        -      "data": {
        -        "default": null,
        -        "title": "Data"
        -      },
        -      "error": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        -            "properties": {
        -              "code": {
        -                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        -                "enum": [
        -                  "RATE_LIMIT_EXCEEDED",
        -                  "TIER_INSUFFICIENT",
        -                  "INVALID_INPUT",
        -                  "SCHEMA_VERSION_MISMATCH",
        -                  "SCHEMA_INVARIANT_VIOLATION",
        -                  "UPSTREAM_TIMEOUT",
        -                  "BACKEND_FAILURE",
        -                  "IP_BLOCKED",
        -                  "RESOURCE_NOT_FOUND",
        -                  "RENDER_FAILURE",
        -                  "OCR_LOW_CONFIDENCE",
        -                  "MANUAL_REVIEW_REQUIRED",
        -                  "ACCEPTANCE_REQUIRED",
        -                  "INVALID_TOKEN"
        -                ],
        -                "type": "string"
        -              },
        -              "details": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "message": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "recoverable": {
        -                "type": "boolean"
        -              },
        -              "retry_after_seconds": {
        -                "anyOf": [
        -                  {
        -                    "minimum": 0,
        -                    "type": "integer"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              }
        -            },
        -            "required": [
        -              "code",
        -              "message",
        -              "recoverable"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      }
        -    },
        -    "required": [
        -      "_meta"
        -    ],
        -    "type": "object"
        -  }
        -]New value: +[
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "_meta": {
        +        "additionalProperties": false,
        +        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        +        "properties": {
        +          "deliverables": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        +                "properties": {
        +                  "docx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "dxf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "expires_at": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  },
        +                  "pdf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "xlsx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "expires_at"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "document_id": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "issued_at": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "output_mode": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Surfaces what a trimmed ``output_mode`` withheld from ``data``.\n\nA trimmed mode (``summary`` / ``boq`` / ``boq_with_backup``) withholds\nalready-computed fields to keep the chat payload small. The withheld value\nreads to a client agent as \"capability missing\" (the box-culvert \"geometry\nbuilder isn't firing\" scare) rather than \"pared for size\": ``drawing`` and\n``audit_trail`` appear as ``null``, ``boq_rows`` as an empty list ``[]``\n(its type forbids ``null``) — both indistinguishable from a genuine absent\nresult. This names the withheld fields and the exact mode that brings each\nback, so the value is unambiguous. Absent on the default ``full_json`` mode\n— nothing is withheld, nothing to point at.",
        +                "properties": {
        +                  "mode": {
        +                    "enum": [
        +                      "summary",
        +                      "boq",
        +                      "boq_with_backup"
        +                    ],
        +                    "type": "string"
        +                  },
        +                  "omitted_fields": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "minItems": 1,
        +                    "type": "array"
        +                  },
        +                  "retrieve_with": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "mode",
        +                  "omitted_fields",
        +                  "retrieve_with"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "rate_limit_remaining": {
        +            "anyOf": [
        +              {
        +                "minimum": 0,
        +                "type": "integer"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "request_id": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "schema_version": {
        +            "const": "1.0.0",
        +            "default": "1.0.0",
        +            "type": "string"
        +          },
        +          "scope_boundary": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        +                "properties": {
        +                  "not_in_scope": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "produced": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "recommended_companions": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "type": "string"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "produced",
        +                  "not_in_scope"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tier": {
        +            "enum": [
        +              "free",
        +              "paid"
        +            ],
        +            "type": "string"
        +          },
        +          "tier_upgrade": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        +                "properties": {
        +                  "available_tiers": {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        +                      "properties": {
        +                        "billing": {
        +                          "enum": [
        +                            "one_off",
        +                            "monthly",
        +                            "annual"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "currency": {
        +                          "enum": [
        +                            "GBP",
        +                            "SGD",
        +                            "EUR",
        +                            "USD",
        +                            "CAD",
        +                            "AUD",
        +                            "NZD",
        +                            "MYR"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "display_name": {
        +                          "type": "string"
        +                        },
        +                        "price_local": {
        +                          "type": "number"
        +                        },
        +                        "tier_slug": {
        +                          "enum": [
        +                            "7_day_pass",
        +                            "solo",
        +                            "studio",
        +                            "practice"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "unlock_summary": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "tier_slug",
        +                        "display_name",
        +                        "price_local",
        +                        "currency",
        +                        "billing",
        +                        "unlock_summary"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "current_tier": {
        +                    "const": "free",
        +                    "default": "free",
        +                    "type": "string"
        +                  },
        +                  "pass_credit": {
        +                    "anyOf": [
        +                      {
        +                        "additionalProperties": false,
        +                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        +                        "properties": {
        +                          "amount_local": {
        +                            "type": "number"
        +                          },
        +                          "applies_to": {
        +                            "const": "solo_first_month",
        +                            "default": "solo_first_month",
        +                            "type": "string"
        +                          },
        +                          "currency": {
        +                            "type": "string"
        +                          },
        +                          "redeemable_until": {
        +                            "type": "string"
        +                          }
        +                        },
        +                        "required": [
        +                          "amount_local",
        +                          "currency",
        +                          "redeemable_until"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "pricing_url": {
        +                    "default": "https://civilquants.com/pricing",
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "available_tiers"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tos_url": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "upgrade_hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "warranty_disclaimer": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          }
        +        },
        +        "required": [
        +          "request_id",
        +          "issued_at",
        +          "tier"
        +        ],
        +        "type": "object"
        +      },
        +      "data": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "The typed payload wrapped in MCPResponse[ResolveResult].",
        +            "properties": {
        +              "candidates": {
        +                "items": {
        +                  "additionalProperties": false,
        +                  "description": "A candidate assembly the description routed to.",
        +                  "properties": {
        +                    "category_l1": {
        +                      "type": "string"
        +                    },
        +                    "category_l2": {
        +                      "type": "string"
        +                    },
        +                    "compute_tool": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "display_name": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "fields": {
        +                      "items": {
        +                        "additionalProperties": false,
        +                        "description": "One Parameters field, with the metadata a caller fills a value from.",
        +                        "properties": {
        +                          "default": {
        +                            "anyOf": [
        +                              {
        +                                "type": "number"
        +                              },
        +                              {
        +                                "type": "integer"
        +                              },
        +                              {
        +                                "type": "string"
        +                              },
        +                              {
        +                                "type": "boolean"
        +                              },
        +                              {
        +                                "type": "null"
        +                              }
        +                            ]
        +                          },
        +                          "group": {
        +                            "minLength": 1,
        +                            "type": "string"
        +                          },
        +                          "help_text": {
        +                            "anyOf": [
        +                              {
        +                                "type": "string"
        +                              },
        +                              {
        +                                "type": "null"
        +                              }
        +                            ],
        +                            "default": null
        +                          },
        +                          "is_run_length": {
        +                            "default": false,
        +                            "type": "boolean"
        +                          },
        +                          "label": {
        +                            "minLength": 1,
        +                            "type": "string"
        +                          },
        +                          "load_bearing": {
        +                            "default": false,
        +                            "type": "boolean"
        +                          },
        +                          "max": {
        +                            "anyOf": [
        +                              {
        +                                "type": "number"
        +                              },
        +                              {
        +                                "type": "null"
        +                              }
        +                            ],
        +                            "default": null
        +                          },
        +                          "min": {
        +                            "anyOf": [
        +                              {
        +                                "type": "number"
        +                              },
        +                              {
        +                                "type": "null"
        +                              }
        +                            ],
        +                            "default": null
        +                          },
        +                          "name": {
        +                            "minLength": 1,
        +                            "type": "string"
        +                          },
        +                          "unit": {
        +                            "anyOf": [
        +                              {
        +                                "type": "string"
        +                              },
        +                              {
        +                                "type": "null"
        +                              }
        +                            ],
        +                            "default": null
        +                          }
        +                        },
        +                        "required": [
        +                          "name",
        +                          "label",
        +                          "default",
        +                          "group"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      "type": "array"
        +                    },
        +                    "free_alternative": {
        +                      "anyOf": [
        +                        {
        +                          "type": "string"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "multi_section_tool": {
        +                      "anyOf": [
        +                        {
        +                          "type": "string"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "slug": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "standard_note": {
        +                      "anyOf": [
        +                        {
        +                          "type": "string"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "suggested_params": {
        +                      "items": {
        +                        "additionalProperties": false,
        +                        "description": "A value the description stated with a clear anchor — a caller-confirmed\nsuggestion, NOT an authoritative value and never auto-fed to compute.",
        +                        "properties": {
        +                          "name": {
        +                            "minLength": 1,
        +                            "type": "string"
        +                          },
        +                          "source": {
        +                            "minLength": 1,
        +                            "type": "string"
        +                          },
        +                          "unit": {
        +                            "anyOf": [
        +                              {
        +                                "type": "string"
        +                              },
        +                              {
        +                                "type": "null"
        +                              }
        +                            ],
        +                            "default": null
        +                          },
        +                          "value": {
        +                            "type": "number"
        +                          }
        +                        },
        +                        "required": [
        +                          "name",
        +                          "value",
        +                          "source"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      "type": "array"
        +                    },
        +                    "supports_multi_section": {
        +                      "default": false,
        +                      "type": "boolean"
        +                    },
        +                    "tier": {
        +                      "enum": [
        +                        "free",
        +                        "paid"
        +                      ],
        +                      "type": "string"
        +                    }
        +                  },
        +                  "required": [
        +                    "slug",
        +                    "display_name",
        +                    "tier",
        +                    "category_l1",
        +                    "category_l2",
        +                    "compute_tool"
        +                  ],
        +                  "type": "object"
        +                },
        +                "type": "array"
        +              },
        +              "confidence": {
        +                "enum": [
        +                  "high",
        +                  "medium",
        +                  "low"
        +                ],
        +                "type": "string"
        +              },
        +              "preferred_standard": {
        +                "anyOf": [
        +                  {
        +                    "enum": [
        +                      "CESMM4",
        +                      "NRM2",
        +                      "SMM7",
        +                      "MMHW"
        +                    ],
        +                    "type": "string"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "query": {
        +                "type": "string"
        +              },
        +              "questions": {
        +                "items": {
        +                  "type": "string"
        +                },
        +                "type": "array"
        +              },
        +              "resolution_log": {
        +                "anyOf": [
        +                  {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "One row of the optional resolution log (return_resolution_log).",
        +                      "properties": {
        +                        "matched_terms": {
        +                          "items": {
        +                            "type": "string"
        +                          },
        +                          "type": "array"
        +                        },
        +                        "score": {
        +                          "type": "number"
        +                        },
        +                        "slug": {
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "slug",
        +                        "score"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              }
        +            },
        +            "required": [
        +              "query",
        +              "confidence"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      },
        +      "error": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        +            "properties": {
        +              "code": {
        +                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        +                "enum": [
        +                  "RATE_LIMIT_EXCEEDED",
        +                  "TIER_INSUFFICIENT",
        +                  "INVALID_INPUT",
        +                  "SCHEMA_VERSION_MISMATCH",
        +                  "SCHEMA_INVARIANT_VIOLATION",
        +                  "UPSTREAM_TIMEOUT",
        +                  "BACKEND_FAILURE",
        +                  "IP_BLOCKED",
        +                  "RESOURCE_NOT_FOUND",
        +                  "RENDER_FAILURE",
        +                  "OCR_LOW_CONFIDENCE",
        +                  "MANUAL_REVIEW_REQUIRED",
        +                  "ACCEPTANCE_REQUIRED",
        +                  "INVALID_TOKEN"
        +                ],
        +                "type": "string"
        +              },
        +              "details": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "message": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "recoverable": {
        +                "type": "boolean"
        +              },
        +              "retry_after_seconds": {
        +                "anyOf": [
        +                  {
        +                    "minimum": 0,
        +                    "type": "integer"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              }
        +            },
        +            "required": [
        +              "code",
        +              "message",
        +              "recoverable"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      }
        +    },
        +    "required": [
        +      "_meta"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "_meta": {
        +        "additionalProperties": false,
        +        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        +        "properties": {
        +          "deliverables": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        +                "properties": {
        +                  "docx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "dxf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "expires_at": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  },
        +                  "pdf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "xlsx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "expires_at"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "document_id": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "issued_at": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "output_mode": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Surfaces what a trimmed ``output_mode`` withheld from ``data``.\n\nA trimmed mode (``summary`` / ``boq`` / ``boq_with_backup``) withholds\nalready-computed fields to keep the chat payload small. The withheld value\nreads to a client agent as \"capability missing\" (the box-culvert \"geometry\nbuilder isn't firing\" scare) rather than \"pared for size\": ``drawing`` and\n``audit_trail`` appear as ``null``, ``boq_rows`` as an empty list ``[]``\n(its type forbids ``null``) — both indistinguishable from a genuine absent\nresult. This names the withheld fields and the exact mode that brings each\nback, so the value is unambiguous. Absent on the default ``full_json`` mode\n— nothing is withheld, nothing to point at.",
        +                "properties": {
        +                  "mode": {
        +                    "enum": [
        +                      "summary",
        +                      "boq",
        +                      "boq_with_backup"
        +                    ],
        +                    "type": "string"
        +                  },
        +                  "omitted_fields": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "minItems": 1,
        +                    "type": "array"
        +                  },
        +                  "retrieve_with": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "mode",
        +                  "omitted_fields",
        +                  "retrieve_with"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "rate_limit_remaining": {
        +            "anyOf": [
        +              {
        +                "minimum": 0,
        +                "type": "integer"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "request_id": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "schema_version": {
        +            "const": "1.0.0",
        +            "default": "1.0.0",
        +            "type": "string"
        +          },
        +          "scope_boundary": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        +                "properties": {
        +                  "not_in_scope": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "produced": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "recommended_companions": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "type": "string"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "produced",
        +                  "not_in_scope"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tier": {
        +            "enum": [
        +              "free",
        +              "paid"
        +            ],
        +            "type": "string"
        +          },
        +          "tier_upgrade": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        +                "properties": {
        +                  "available_tiers": {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        +                      "properties": {
        +                        "billing": {
        +                          "enum": [
        +                            "one_off",
        +                            "monthly",
        +                            "annual"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "currency": {
        +                          "enum": [
        +                            "GBP",
        +                            "SGD",
        +                            "EUR",
        +                            "USD",
        +                            "CAD",
        +                            "AUD",
        +                            "NZD",
        +                            "MYR"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "display_name": {
        +                          "type": "string"
        +                        },
        +                        "price_local": {
        +                          "type": "number"
        +                        },
        +                        "tier_slug": {
        +                          "enum": [
        +                            "7_day_pass",
        +                            "solo",
        +                            "studio",
        +                            "practice"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "unlock_summary": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "tier_slug",
        +                        "display_name",
        +                        "price_local",
        +                        "currency",
        +                        "billing",
        +                        "unlock_summary"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "current_tier": {
        +                    "const": "free",
        +                    "default": "free",
        +                    "type": "string"
        +                  },
        +                  "pass_credit": {
        +                    "anyOf": [
        +                      {
        +                        "additionalProperties": false,
        +                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        +                        "properties": {
        +                          "amount_local": {
        +                            "type": "number"
        +                          },
        +                          "applies_to": {
        +                            "const": "solo_first_month",
        +                            "default": "solo_first_month",
        +                            "type": "string"
        +                          },
        +                          "currency": {
        +                            "type": "string"
        +                          },
        +                          "redeemable_until": {
        +                            "type": "string"
        +                          }
        +                        },
        +                        "required": [
        +                          "amount_local",
        +                          "currency",
        +                          "redeemable_until"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "pricing_url": {
        +                    "default": "https://civilquants.com/pricing",
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "available_tiers"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tos_url": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "upgrade_hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "warranty_disclaimer": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          }
        +        },
        +        "required": [
        +          "request_id",
        +          "issued_at",
        +          "tier"
        +        ],
        +        "type": "object"
        +      },
        +      "data": {
        +        "default": null,
        +        "title": "Data"
        +      },
        +      "error": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        +            "properties": {
        +              "code": {
        +                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        +                "enum": [
        +                  "RATE_LIMIT_EXCEEDED",
        +                  "TIER_INSUFFICIENT",
        +                  "INVALID_INPUT",
        +                  "SCHEMA_VERSION_MISMATCH",
        +                  "SCHEMA_INVARIANT_VIOLATION",
        +                  "UPSTREAM_TIMEOUT",
        +                  "BACKEND_FAILURE",
        +                  "IP_BLOCKED",
        +                  "RESOURCE_NOT_FOUND",
        +                  "RENDER_FAILURE",
        +                  "OCR_LOW_CONFIDENCE",
        +                  "MANUAL_REVIEW_REQUIRED",
        +                  "ACCEPTANCE_REQUIRED",
        +                  "INVALID_TOKEN"
        +                ],
        +                "type": "string"
        +              },
        +              "details": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "message": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "recoverable": {
        +                "type": "boolean"
        +              },
        +              "retry_after_seconds": {
        +                "anyOf": [
        +                  {
        +                    "minimum": 0,
        +                    "type": "integer"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              }
        +            },
        +            "required": [
        +              "code",
        +              "message",
        +              "recoverable"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      }
        +    },
        +    "required": [
        +      "_meta"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedsave_project1 field changed
      • changedOutput schema / properties / result / anyOf
        Previous value: -[
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "_meta": {
        -        "additionalProperties": false,
        -        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        -        "properties": {
        -          "deliverables": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        -                "properties": {
        -                  "docx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "dxf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "expires_at": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  },
        -                  "pdf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "xlsx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "expires_at"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "document_id": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "issued_at": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "rate_limit_remaining": {
        -            "anyOf": [
        -              {
        -                "minimum": 0,
        -                "type": "integer"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "request_id": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "schema_version": {
        -            "const": "1.0.0",
        -            "default": "1.0.0",
        -            "type": "string"
        -          },
        -          "scope_boundary": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        -                "properties": {
        -                  "not_in_scope": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "produced": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "recommended_companions": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "type": "string"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "produced",
        -                  "not_in_scope"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tier": {
        -            "enum": [
        -              "free",
        -              "paid"
        -            ],
        -            "type": "string"
        -          },
        -          "tier_upgrade": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        -                "properties": {
        -                  "available_tiers": {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        -                      "properties": {
        -                        "billing": {
        -                          "enum": [
        -                            "one_off",
        -                            "monthly",
        -                            "annual"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "currency": {
        -                          "enum": [
        -                            "GBP",
        -                            "SGD",
        -                            "EUR",
        -                            "USD",
        -                            "CAD",
        -                            "AUD",
        -                            "NZD",
        -                            "MYR"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "display_name": {
        -                          "type": "string"
        -                        },
        -                        "price_local": {
        -                          "type": "number"
        -                        },
        -                        "tier_slug": {
        -                          "enum": [
        -                            "7_day_pass",
        -                            "solo",
        -                            "studio",
        -                            "practice"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "unlock_summary": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "tier_slug",
        -                        "display_name",
        -                        "price_local",
        -                        "currency",
        -                        "billing",
        -                        "unlock_summary"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "current_tier": {
        -                    "const": "free",
        -                    "default": "free",
        -                    "type": "string"
        -                  },
        -                  "pass_credit": {
        -                    "anyOf": [
        -                      {
        -                        "additionalProperties": false,
        -                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        -                        "properties": {
        -                          "amount_local": {
        -                            "type": "number"
        -                          },
        -                          "applies_to": {
        -                            "const": "solo_first_month",
        -                            "default": "solo_first_month",
        -                            "type": "string"
        -                          },
        -                          "currency": {
        -                            "type": "string"
        -                          },
        -                          "redeemable_until": {
        -                            "type": "string"
        -                          }
        -                        },
        -                        "required": [
        -                          "amount_local",
        -                          "currency",
        -                          "redeemable_until"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "pricing_url": {
        -                    "default": "https://civilquants.com/pricing",
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "available_tiers"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tos_url": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "upgrade_hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "warranty_disclaimer": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          }
        -        },
        -        "required": [
        -          "request_id",
        -          "issued_at",
        -          "tier"
        -        ],
        -        "type": "object"
        -      },
        -      "data": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "properties": {
        -              "assembly_ids": {
        -                "items": {
        -                  "type": "string"
        -                },
        -                "type": "array"
        -              },
        -              "project_id": {
        -                "type": "string"
        -              }
        -            },
        -            "required": [
        -              "project_id",
        -              "assembly_ids"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      },
        -      "error": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        -            "properties": {
        -              "code": {
        -                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        -                "enum": [
        -                  "RATE_LIMIT_EXCEEDED",
        -                  "TIER_INSUFFICIENT",
        -                  "INVALID_INPUT",
        -                  "SCHEMA_VERSION_MISMATCH",
        -                  "SCHEMA_INVARIANT_VIOLATION",
        -                  "UPSTREAM_TIMEOUT",
        -                  "BACKEND_FAILURE",
        -                  "IP_BLOCKED",
        -                  "RESOURCE_NOT_FOUND",
        -                  "RENDER_FAILURE",
        -                  "OCR_LOW_CONFIDENCE",
        -                  "MANUAL_REVIEW_REQUIRED",
        -                  "ACCEPTANCE_REQUIRED",
        -                  "INVALID_TOKEN"
        -                ],
        -                "type": "string"
        -              },
        -              "details": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "message": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "recoverable": {
        -                "type": "boolean"
        -              },
        -              "retry_after_seconds": {
        -                "anyOf": [
        -                  {
        -                    "minimum": 0,
        -                    "type": "integer"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              }
        -            },
        -            "required": [
        -              "code",
        -              "message",
        -              "recoverable"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      }
        -    },
        -    "required": [
        -      "_meta"
        -    ],
        -    "type": "object"
        -  },
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "_meta": {
        -        "additionalProperties": false,
        -        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        -        "properties": {
        -          "deliverables": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        -                "properties": {
        -                  "docx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "dxf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "expires_at": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  },
        -                  "pdf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "xlsx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "expires_at"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "document_id": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "issued_at": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "rate_limit_remaining": {
        -            "anyOf": [
        -              {
        -                "minimum": 0,
        -                "type": "integer"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "request_id": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "schema_version": {
        -            "const": "1.0.0",
        -            "default": "1.0.0",
        -            "type": "string"
        -          },
        -          "scope_boundary": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        -                "properties": {
        -                  "not_in_scope": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "produced": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "recommended_companions": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "type": "string"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "produced",
        -                  "not_in_scope"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tier": {
        -            "enum": [
        -              "free",
        -              "paid"
        -            ],
        -            "type": "string"
        -          },
        -          "tier_upgrade": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        -                "properties": {
        -                  "available_tiers": {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        -                      "properties": {
        -                        "billing": {
        -                          "enum": [
        -                            "one_off",
        -                            "monthly",
        -                            "annual"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "currency": {
        -                          "enum": [
        -                            "GBP",
        -                            "SGD",
        -                            "EUR",
        -                            "USD",
        -                            "CAD",
        -                            "AUD",
        -                            "NZD",
        -                            "MYR"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "display_name": {
        -                          "type": "string"
        -                        },
        -                        "price_local": {
        -                          "type": "number"
        -                        },
        -                        "tier_slug": {
        -                          "enum": [
        -                            "7_day_pass",
        -                            "solo",
        -                            "studio",
        -                            "practice"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "unlock_summary": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "tier_slug",
        -                        "display_name",
        -                        "price_local",
        -                        "currency",
        -                        "billing",
        -                        "unlock_summary"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "current_tier": {
        -                    "const": "free",
        -                    "default": "free",
        -                    "type": "string"
        -                  },
        -                  "pass_credit": {
        -                    "anyOf": [
        -                      {
        -                        "additionalProperties": false,
        -                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        -                        "properties": {
        -                          "amount_local": {
        -                            "type": "number"
        -                          },
        -                          "applies_to": {
        -                            "const": "solo_first_month",
        -                            "default": "solo_first_month",
        -                            "type": "string"
        -                          },
        -                          "currency": {
        -                            "type": "string"
        -                          },
        -                          "redeemable_until": {
        -                            "type": "string"
        -                          }
        -                        },
        -                        "required": [
        -                          "amount_local",
        -                          "currency",
        -                          "redeemable_until"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "pricing_url": {
        -                    "default": "https://civilquants.com/pricing",
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "available_tiers"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tos_url": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "upgrade_hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "warranty_disclaimer": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          }
        -        },
        -        "required": [
        -          "request_id",
        -          "issued_at",
        -          "tier"
        -        ],
        -        "type": "object"
        -      },
        -      "data": {
        -        "default": null,
        -        "title": "Data"
        -      },
        -      "error": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        -            "properties": {
        -              "code": {
        -                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        -                "enum": [
        -                  "RATE_LIMIT_EXCEEDED",
        -                  "TIER_INSUFFICIENT",
        -                  "INVALID_INPUT",
        -                  "SCHEMA_VERSION_MISMATCH",
        -                  "SCHEMA_INVARIANT_VIOLATION",
        -                  "UPSTREAM_TIMEOUT",
        -                  "BACKEND_FAILURE",
        -                  "IP_BLOCKED",
        -                  "RESOURCE_NOT_FOUND",
        -                  "RENDER_FAILURE",
        -                  "OCR_LOW_CONFIDENCE",
        -                  "MANUAL_REVIEW_REQUIRED",
        -                  "ACCEPTANCE_REQUIRED",
        -                  "INVALID_TOKEN"
        -                ],
        -                "type": "string"
        -              },
        -              "details": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "message": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "recoverable": {
        -                "type": "boolean"
        -              },
        -              "retry_after_seconds": {
        -                "anyOf": [
        -                  {
        -                    "minimum": 0,
        -                    "type": "integer"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              }
        -            },
        -            "required": [
        -              "code",
        -              "message",
        -              "recoverable"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      }
        -    },
        -    "required": [
        -      "_meta"
        -    ],
        -    "type": "object"
        -  }
        -]New value: +[
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "_meta": {
        +        "additionalProperties": false,
        +        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        +        "properties": {
        +          "deliverables": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        +                "properties": {
        +                  "docx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "dxf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "expires_at": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  },
        +                  "pdf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "xlsx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "expires_at"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "document_id": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "issued_at": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "output_mode": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Surfaces what a trimmed ``output_mode`` withheld from ``data``.\n\nA trimmed mode (``summary`` / ``boq`` / ``boq_with_backup``) withholds\nalready-computed fields to keep the chat payload small. The withheld value\nreads to a client agent as \"capability missing\" (the box-culvert \"geometry\nbuilder isn't firing\" scare) rather than \"pared for size\": ``drawing`` and\n``audit_trail`` appear as ``null``, ``boq_rows`` as an empty list ``[]``\n(its type forbids ``null``) — both indistinguishable from a genuine absent\nresult. This names the withheld fields and the exact mode that brings each\nback, so the value is unambiguous. Absent on the default ``full_json`` mode\n— nothing is withheld, nothing to point at.",
        +                "properties": {
        +                  "mode": {
        +                    "enum": [
        +                      "summary",
        +                      "boq",
        +                      "boq_with_backup"
        +                    ],
        +                    "type": "string"
        +                  },
        +                  "omitted_fields": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "minItems": 1,
        +                    "type": "array"
        +                  },
        +                  "retrieve_with": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "mode",
        +                  "omitted_fields",
        +                  "retrieve_with"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "rate_limit_remaining": {
        +            "anyOf": [
        +              {
        +                "minimum": 0,
        +                "type": "integer"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "request_id": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "schema_version": {
        +            "const": "1.0.0",
        +            "default": "1.0.0",
        +            "type": "string"
        +          },
        +          "scope_boundary": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        +                "properties": {
        +                  "not_in_scope": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "produced": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "recommended_companions": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "type": "string"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "produced",
        +                  "not_in_scope"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tier": {
        +            "enum": [
        +              "free",
        +              "paid"
        +            ],
        +            "type": "string"
        +          },
        +          "tier_upgrade": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        +                "properties": {
        +                  "available_tiers": {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        +                      "properties": {
        +                        "billing": {
        +                          "enum": [
        +                            "one_off",
        +                            "monthly",
        +                            "annual"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "currency": {
        +                          "enum": [
        +                            "GBP",
        +                            "SGD",
        +                            "EUR",
        +                            "USD",
        +                            "CAD",
        +                            "AUD",
        +                            "NZD",
        +                            "MYR"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "display_name": {
        +                          "type": "string"
        +                        },
        +                        "price_local": {
        +                          "type": "number"
        +                        },
        +                        "tier_slug": {
        +                          "enum": [
        +                            "7_day_pass",
        +                            "solo",
        +                            "studio",
        +                            "practice"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "unlock_summary": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "tier_slug",
        +                        "display_name",
        +                        "price_local",
        +                        "currency",
        +                        "billing",
        +                        "unlock_summary"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "current_tier": {
        +                    "const": "free",
        +                    "default": "free",
        +                    "type": "string"
        +                  },
        +                  "pass_credit": {
        +                    "anyOf": [
        +                      {
        +                        "additionalProperties": false,
        +                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        +                        "properties": {
        +                          "amount_local": {
        +                            "type": "number"
        +                          },
        +                          "applies_to": {
        +                            "const": "solo_first_month",
        +                            "default": "solo_first_month",
        +                            "type": "string"
        +                          },
        +                          "currency": {
        +                            "type": "string"
        +                          },
        +                          "redeemable_until": {
        +                            "type": "string"
        +                          }
        +                        },
        +                        "required": [
        +                          "amount_local",
        +                          "currency",
        +                          "redeemable_until"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "pricing_url": {
        +                    "default": "https://civilquants.com/pricing",
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "available_tiers"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tos_url": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "upgrade_hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "warranty_disclaimer": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          }
        +        },
        +        "required": [
        +          "request_id",
        +          "issued_at",
        +          "tier"
        +        ],
        +        "type": "object"
        +      },
        +      "data": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "properties": {
        +              "assembly_ids": {
        +                "items": {
        +                  "type": "string"
        +                },
        +                "type": "array"
        +              },
        +              "project_id": {
        +                "type": "string"
        +              }
        +            },
        +            "required": [
        +              "project_id",
        +              "assembly_ids"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      },
        +      "error": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        +            "properties": {
        +              "code": {
        +                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        +                "enum": [
        +                  "RATE_LIMIT_EXCEEDED",
        +                  "TIER_INSUFFICIENT",
        +                  "INVALID_INPUT",
        +                  "SCHEMA_VERSION_MISMATCH",
        +                  "SCHEMA_INVARIANT_VIOLATION",
        +                  "UPSTREAM_TIMEOUT",
        +                  "BACKEND_FAILURE",
        +                  "IP_BLOCKED",
        +                  "RESOURCE_NOT_FOUND",
        +                  "RENDER_FAILURE",
        +                  "OCR_LOW_CONFIDENCE",
        +                  "MANUAL_REVIEW_REQUIRED",
        +                  "ACCEPTANCE_REQUIRED",
        +                  "INVALID_TOKEN"
        +                ],
        +                "type": "string"
        +              },
        +              "details": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "message": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "recoverable": {
        +                "type": "boolean"
        +              },
        +              "retry_after_seconds": {
        +                "anyOf": [
        +                  {
        +                    "minimum": 0,
        +                    "type": "integer"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              }
        +            },
        +            "required": [
        +              "code",
        +              "message",
        +              "recoverable"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      }
        +    },
        +    "required": [
        +      "_meta"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "_meta": {
        +        "additionalProperties": false,
        +        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        +        "properties": {
        +          "deliverables": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        +                "properties": {
        +                  "docx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "dxf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "expires_at": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  },
        +                  "pdf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "xlsx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "expires_at"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "document_id": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "issued_at": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "output_mode": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Surfaces what a trimmed ``output_mode`` withheld from ``data``.\n\nA trimmed mode (``summary`` / ``boq`` / ``boq_with_backup``) withholds\nalready-computed fields to keep the chat payload small. The withheld value\nreads to a client agent as \"capability missing\" (the box-culvert \"geometry\nbuilder isn't firing\" scare) rather than \"pared for size\": ``drawing`` and\n``audit_trail`` appear as ``null``, ``boq_rows`` as an empty list ``[]``\n(its type forbids ``null``) — both indistinguishable from a genuine absent\nresult. This names the withheld fields and the exact mode that brings each\nback, so the value is unambiguous. Absent on the default ``full_json`` mode\n— nothing is withheld, nothing to point at.",
        +                "properties": {
        +                  "mode": {
        +                    "enum": [
        +                      "summary",
        +                      "boq",
        +                      "boq_with_backup"
        +                    ],
        +                    "type": "string"
        +                  },
        +                  "omitted_fields": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "minItems": 1,
        +                    "type": "array"
        +                  },
        +                  "retrieve_with": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "mode",
        +                  "omitted_fields",
        +                  "retrieve_with"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "rate_limit_remaining": {
        +            "anyOf": [
        +              {
        +                "minimum": 0,
        +                "type": "integer"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "request_id": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "schema_version": {
        +            "const": "1.0.0",
        +            "default": "1.0.0",
        +            "type": "string"
        +          },
        +          "scope_boundary": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        +                "properties": {
        +                  "not_in_scope": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "produced": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "recommended_companions": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "type": "string"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "produced",
        +                  "not_in_scope"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tier": {
        +            "enum": [
        +              "free",
        +              "paid"
        +            ],
        +            "type": "string"
        +          },
        +          "tier_upgrade": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        +                "properties": {
        +                  "available_tiers": {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        +                      "properties": {
        +                        "billing": {
        +                          "enum": [
        +                            "one_off",
        +                            "monthly",
        +                            "annual"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "currency": {
        +                          "enum": [
        +                            "GBP",
        +                            "SGD",
        +                            "EUR",
        +                            "USD",
        +                            "CAD",
        +                            "AUD",
        +                            "NZD",
        +                            "MYR"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "display_name": {
        +                          "type": "string"
        +                        },
        +                        "price_local": {
        +                          "type": "number"
        +                        },
        +                        "tier_slug": {
        +                          "enum": [
        +                            "7_day_pass",
        +                            "solo",
        +                            "studio",
        +                            "practice"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "unlock_summary": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "tier_slug",
        +                        "display_name",
        +                        "price_local",
        +                        "currency",
        +                        "billing",
        +                        "unlock_summary"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "current_tier": {
        +                    "const": "free",
        +                    "default": "free",
        +                    "type": "string"
        +                  },
        +                  "pass_credit": {
        +                    "anyOf": [
        +                      {
        +                        "additionalProperties": false,
        +                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        +                        "properties": {
        +                          "amount_local": {
        +                            "type": "number"
        +                          },
        +                          "applies_to": {
        +                            "const": "solo_first_month",
        +                            "default": "solo_first_month",
        +                            "type": "string"
        +                          },
        +                          "currency": {
        +                            "type": "string"
        +                          },
        +                          "redeemable_until": {
        +                            "type": "string"
        +                          }
        +                        },
        +                        "required": [
        +                          "amount_local",
        +                          "currency",
        +                          "redeemable_until"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "pricing_url": {
        +                    "default": "https://civilquants.com/pricing",
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "available_tiers"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tos_url": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "upgrade_hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "warranty_disclaimer": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          }
        +        },
        +        "required": [
        +          "request_id",
        +          "issued_at",
        +          "tier"
        +        ],
        +        "type": "object"
        +      },
        +      "data": {
        +        "default": null,
        +        "title": "Data"
        +      },
        +      "error": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        +            "properties": {
        +              "code": {
        +                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        +                "enum": [
        +                  "RATE_LIMIT_EXCEEDED",
        +                  "TIER_INSUFFICIENT",
        +                  "INVALID_INPUT",
        +                  "SCHEMA_VERSION_MISMATCH",
        +                  "SCHEMA_INVARIANT_VIOLATION",
        +                  "UPSTREAM_TIMEOUT",
        +                  "BACKEND_FAILURE",
        +                  "IP_BLOCKED",
        +                  "RESOURCE_NOT_FOUND",
        +                  "RENDER_FAILURE",
        +                  "OCR_LOW_CONFIDENCE",
        +                  "MANUAL_REVIEW_REQUIRED",
        +                  "ACCEPTANCE_REQUIRED",
        +                  "INVALID_TOKEN"
        +                ],
        +                "type": "string"
        +              },
        +              "details": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "message": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "recoverable": {
        +                "type": "boolean"
        +              },
        +              "retry_after_seconds": {
        +                "anyOf": [
        +                  {
        +                    "minimum": 0,
        +                    "type": "integer"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              }
        +            },
        +            "required": [
        +              "code",
        +              "message",
        +              "recoverable"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      }
        +    },
        +    "required": [
        +      "_meta"
        +    ],
        +    "type": "object"
        +  }
        +]
  6. 1 tool update
    • Addedget_document_pipeline
  7. 1 tool update
    • Changedcompute_box_culvert1 field changed
      • addedInput schema / properties / params / properties / include_outlet_flow_control
        Added value: +{
        +  "default": false,
        +  "type": "boolean"
        +}
  8. 50 tool updates
    • Changedcompute_anchored_wall1 field changed
      • changedInput schema / properties / deliverables / anyOf
        Previous value: -[
        -  {
        -    "items": {
        -      "const": "xlsx",
        -      "type": "string"
        -    },
        -    "type": "array"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]New value: +[
        +  {
        +    "items": {
        +      "enum": [
        +        "xlsx",
        +        "dxf",
        +        "pdf"
        +      ],
        +      "type": "string"
        +    },
        +    "type": "array"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
    • Changedcompute_attenuation_tank1 field changed
      • changedInput schema / properties / deliverables / anyOf
        Previous value: -[
        -  {
        -    "items": {
        -      "const": "xlsx",
        -      "type": "string"
        -    },
        -    "type": "array"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]New value: +[
        +  {
        +    "items": {
        +      "enum": [
        +        "xlsx",
        +        "dxf",
        +        "pdf"
        +      ],
        +      "type": "string"
        +    },
        +    "type": "array"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
    • Changedcompute_bored_pile_wall1 field changed
      • changedInput schema / properties / deliverables / anyOf
        Previous value: -[
        -  {
        -    "items": {
        -      "const": "xlsx",
        -      "type": "string"
        -    },
        -    "type": "array"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]New value: +[
        +  {
        +    "items": {
        +      "enum": [
        +        "xlsx",
        +        "dxf",
        +        "pdf"
        +      ],
        +      "type": "string"
        +    },
        +    "type": "array"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
    • Changedcompute_box_culvert1 field changed
      • changedInput schema / properties / deliverables / anyOf
        Previous value: -[
        -  {
        -    "items": {
        -      "const": "xlsx",
        -      "type": "string"
        -    },
        -    "type": "array"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]New value: +[
        +  {
        +    "items": {
        +      "enum": [
        +        "xlsx",
        +        "dxf",
        +        "pdf"
        +      ],
        +      "type": "string"
        +    },
        +    "type": "array"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
    • Changedcompute_cantilever_wall1 field changed
      • changedInput schema / properties / deliverables / anyOf
        Previous value: -[
        -  {
        -    "items": {
        -      "const": "xlsx",
        -      "type": "string"
        -    },
        -    "type": "array"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]New value: +[
        +  {
        +    "items": {
        +      "enum": [
        +        "xlsx",
        +        "dxf",
        +        "pdf"
        +      ],
        +      "type": "string"
        +    },
        +    "type": "array"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
    • Changedcompute_carrier_pipe_run1 field changed
      • changedInput schema / properties / deliverables / anyOf
        Previous value: -[
        -  {
        -    "items": {
        -      "const": "xlsx",
        -      "type": "string"
        -    },
        -    "type": "array"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]New value: +[
        +  {
        +    "items": {
        +      "enum": [
        +        "xlsx",
        +        "dxf",
        +        "pdf"
        +      ],
        +      "type": "string"
        +    },
        +    "type": "array"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
    • Changedcompute_catchpit1 field changed
      • changedInput schema / properties / deliverables / anyOf
        Previous value: -[
        -  {
        -    "items": {
        -      "const": "xlsx",
        -      "type": "string"
        -    },
        -    "type": "array"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]New value: +[
        +  {
        +    "items": {
        +      "enum": [
        +        "xlsx",
        +        "dxf",
        +        "pdf"
        +      ],
        +      "type": "string"
        +    },
        +    "type": "array"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
    • Changedcompute_combined_services_trench1 field changed
      • changedInput schema / properties / deliverables / anyOf
        Previous value: -[
        -  {
        -    "items": {
        -      "const": "xlsx",
        -      "type": "string"
        -    },
        -    "type": "array"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]New value: +[
        +  {
        +    "items": {
        +      "enum": [
        +        "xlsx",
        +        "dxf",
        +        "pdf"
        +      ],
        +      "type": "string"
        +    },
        +    "type": "array"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
    • Changedcompute_connection_to_existing1 field changed
      • changedInput schema / properties / deliverables / anyOf
        Previous value: -[
        -  {
        -    "items": {
        -      "const": "xlsx",
        -      "type": "string"
        -    },
        -    "type": "array"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]New value: +[
        +  {
        +    "items": {
        +      "enum": [
        +        "xlsx",
        +        "dxf",
        +        "pdf"
        +      ],
        +      "type": "string"
        +    },
        +    "type": "array"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
    • Changedcompute_counterfort_wall1 field changed
      • changedInput schema / properties / deliverables / anyOf
        Previous value: -[
        -  {
        -    "items": {
        -      "const": "xlsx",
        -      "type": "string"
        -    },
        -    "type": "array"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]New value: +[
        +  {
        +    "items": {
        +      "enum": [
        +        "xlsx",
        +        "dxf",
        +        "pdf"
        +      ],
        +      "type": "string"
        +    },
        +    "type": "array"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
    • Changedcompute_ditch1 field changed
      • changedInput schema / properties / deliverables / anyOf
        Previous value: -[
        -  {
        -    "items": {
        -      "const": "xlsx",
        -      "type": "string"
        -    },
        -    "type": "array"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]New value: +[
        +  {
        +    "items": {
        +      "enum": [
        +        "xlsx",
        +        "dxf",
        +        "pdf"
        +      ],
        +      "type": "string"
        +    },
        +    "type": "array"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
    • Changedcompute_edge_drain1 field changed
      • changedInput schema / properties / deliverables / anyOf
        Previous value: -[
        -  {
        -    "items": {
        -      "const": "xlsx",
        -      "type": "string"
        -    },
        -    "type": "array"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]New value: +[
        +  {
        +    "items": {
        +      "enum": [
        +        "xlsx",
        +        "dxf",
        +        "pdf"
        +      ],
        +      "type": "string"
        +    },
        +    "type": "array"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
    • Changedcompute_embankment_cross_section1 field changed
      • changedInput schema / properties / deliverables / anyOf
        Previous value: -[
        -  {
        -    "items": {
        -      "const": "xlsx",
        -      "type": "string"
        -    },
        -    "type": "array"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]New value: +[
        +  {
        +    "items": {
        +      "enum": [
        +        "xlsx",
        +        "dxf",
        +        "pdf"
        +      ],
        +      "type": "string"
        +    },
        +    "type": "array"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
    • Changedcompute_end_area_earthworks1 field changed
      • changedInput schema / properties / deliverables / anyOf
        Previous value: -[
        -  {
        -    "items": {
        -      "const": "xlsx",
        -      "type": "string"
        -    },
        -    "type": "array"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]New value: +[
        +  {
        +    "items": {
        +      "enum": [
        +        "xlsx",
        +        "dxf",
        +        "pdf"
        +      ],
        +      "type": "string"
        +    },
        +    "type": "array"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
    • Changedcompute_flexible_pavement1 field changed
      • changedInput schema / properties / deliverables / anyOf
        Previous value: -[
        -  {
        -    "items": {
        -      "const": "xlsx",
        -      "type": "string"
        -    },
        -    "type": "array"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]New value: +[
        +  {
        +    "items": {
        +      "enum": [
        +        "xlsx",
        +        "dxf",
        +        "pdf"
        +      ],
        +      "type": "string"
        +    },
        +    "type": "array"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
    • Changedcompute_french_drain1 field changed
      • changedInput schema / properties / deliverables / anyOf
        Previous value: -[
        -  {
        -    "items": {
        -      "const": "xlsx",
        -      "type": "string"
        -    },
        -    "type": "array"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]New value: +[
        +  {
        +    "items": {
        +      "enum": [
        +        "xlsx",
        +        "dxf",
        +        "pdf"
        +      ],
        +      "type": "string"
        +    },
        +    "type": "array"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
    • Changedcompute_gabion_wall1 field changed
      • changedInput schema / properties / deliverables / anyOf
        Previous value: -[
        -  {
        -    "items": {
        -      "const": "xlsx",
        -      "type": "string"
        -    },
        -    "type": "array"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]New value: +[
        +  {
        +    "items": {
        +      "enum": [
        +        "xlsx",
        +        "dxf",
        +        "pdf"
        +      ],
        +      "type": "string"
        +    },
        +    "type": "array"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
    • Changedcompute_gravity_wall1 field changed
      • changedInput schema / properties / deliverables / anyOf
        Previous value: -[
        -  {
        -    "items": {
        -      "const": "xlsx",
        -      "type": "string"
        -    },
        -    "type": "array"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]New value: +[
        +  {
        +    "items": {
        +      "enum": [
        +        "xlsx",
        +        "dxf",
        +        "pdf"
        +      ],
        +      "type": "string"
        +    },
        +    "type": "array"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
    • Changedcompute_gully1 field changed
      • changedInput schema / properties / deliverables / anyOf
        Previous value: -[
        -  {
        -    "items": {
        -      "const": "xlsx",
        -      "type": "string"
        -    },
        -    "type": "array"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]New value: +[
        +  {
        +    "items": {
        +      "enum": [
        +        "xlsx",
        +        "dxf",
        +        "pdf"
        +      ],
        +      "type": "string"
        +    },
        +    "type": "array"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
    • Changedcompute_hard_material_in_trench1 field changed
      • changedInput schema / properties / deliverables / anyOf
        Previous value: -[
        -  {
        -    "items": {
        -      "const": "xlsx",
        -      "type": "string"
        -    },
        -    "type": "array"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]New value: +[
        +  {
        +    "items": {
        +      "enum": [
        +        "xlsx",
        +        "dxf",
        +        "pdf"
        +      ],
        +      "type": "string"
        +    },
        +    "type": "array"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
    • Changedcompute_headwall1 field changed
      • changedInput schema / properties / deliverables / anyOf
        Previous value: -[
        -  {
        -    "items": {
        -      "const": "xlsx",
        -      "type": "string"
        -    },
        -    "type": "array"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]New value: +[
        +  {
        +    "items": {
        +      "enum": [
        +        "xlsx",
        +        "dxf",
        +        "pdf"
        +      ],
        +      "type": "string"
        +    },
        +    "type": "array"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
    • Changedcompute_headwall_attenuation_outlet1 field changed
      • changedInput schema / properties / deliverables / anyOf
        Previous value: -[
        -  {
        -    "items": {
        -      "const": "xlsx",
        -      "type": "string"
        -    },
        -    "type": "array"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]New value: +[
        +  {
        +    "items": {
        +      "enum": [
        +        "xlsx",
        +        "dxf",
        +        "pdf"
        +      ],
        +      "type": "string"
        +    },
        +    "type": "array"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
    • Changedcompute_headwall_precast1 field changed
      • changedInput schema / properties / deliverables / anyOf
        Previous value: -[
        -  {
        -    "items": {
        -      "const": "xlsx",
        -      "type": "string"
        -    },
        -    "type": "array"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]New value: +[
        +  {
        +    "items": {
        +      "enum": [
        +        "xlsx",
        +        "dxf",
        +        "pdf"
        +      ],
        +      "type": "string"
        +    },
        +    "type": "array"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
    • Changedcompute_highway_drainage_channel1 field changed
      • changedInput schema / properties / deliverables / anyOf
        Previous value: -[
        -  {
        -    "items": {
        -      "const": "xlsx",
        -      "type": "string"
        -    },
        -    "type": "array"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]New value: +[
        +  {
        +    "items": {
        +      "enum": [
        +        "xlsx",
        +        "dxf",
        +        "pdf"
        +      ],
        +      "type": "string"
        +    },
        +    "type": "array"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
    • Changedcompute_kerb_run1 field changed
      • changedInput schema / properties / deliverables / anyOf
        Previous value: -[
        -  {
        -    "items": {
        -      "const": "xlsx",
        -      "type": "string"
        -    },
        -    "type": "array"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]New value: +[
        +  {
        +    "items": {
        +      "enum": [
        +        "xlsx",
        +        "dxf",
        +        "pdf"
        +      ],
        +      "type": "string"
        +    },
        +    "type": "array"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
    • Changedcompute_lighting_column1 field changed
      • changedInput schema / properties / deliverables / anyOf
        Previous value: -[
        -  {
        -    "items": {
        -      "const": "xlsx",
        -      "type": "string"
        -    },
        -    "type": "array"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]New value: +[
        +  {
        +    "items": {
        +      "enum": [
        +        "xlsx",
        +        "dxf",
        +        "pdf"
        +      ],
        +      "type": "string"
        +    },
        +    "type": "array"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
    • Changedcompute_manhole1 field changed
      • changedInput schema / properties / deliverables / anyOf
        Previous value: -[
        -  {
        -    "items": {
        -      "const": "xlsx",
        -      "type": "string"
        -    },
        -    "type": "array"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]New value: +[
        +  {
        +    "items": {
        +      "enum": [
        +        "xlsx",
        +        "dxf",
        +        "pdf"
        +      ],
        +      "type": "string"
        +    },
        +    "type": "array"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
    • Changedcompute_manhole_precast1 field changed
      • changedInput schema / properties / deliverables / anyOf
        Previous value: -[
        -  {
        -    "items": {
        -      "const": "xlsx",
        -      "type": "string"
        -    },
        -    "type": "array"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]New value: +[
        +  {
        +    "items": {
        +      "enum": [
        +        "xlsx",
        +        "dxf",
        +        "pdf"
        +      ],
        +      "type": "string"
        +    },
        +    "type": "array"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
    • Changedcompute_multi_section_assembly1 field changed
      • changedInput schema / properties / deliverables / anyOf
        Previous value: -[
        -  {
        -    "items": {
        -      "const": "xlsx",
        -      "type": "string"
        -    },
        -    "type": "array"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]New value: +[
        +  {
        +    "items": {
        +      "enum": [
        +        "xlsx",
        +        "dxf",
        +        "pdf"
        +      ],
        +      "type": "string"
        +    },
        +    "type": "array"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
    • Changedcompute_pad_foundation1 field changed
      • changedInput schema / properties / deliverables / anyOf
        Previous value: -[
        -  {
        -    "items": {
        -      "const": "xlsx",
        -      "type": "string"
        -    },
        -    "type": "array"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]New value: +[
        +  {
        +    "items": {
        +      "enum": [
        +        "xlsx",
        +        "dxf",
        +        "pdf"
        +      ],
        +      "type": "string"
        +    },
        +    "type": "array"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
    • Changedcompute_parapet1 field changed
      • changedInput schema / properties / deliverables / anyOf
        Previous value: -[
        -  {
        -    "items": {
        -      "const": "xlsx",
        -      "type": "string"
        -    },
        -    "type": "array"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]New value: +[
        +  {
        +    "items": {
        +      "enum": [
        +        "xlsx",
        +        "dxf",
        +        "pdf"
        +      ],
        +      "type": "string"
        +    },
        +    "type": "array"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
    • Changedcompute_permeable_pavement1 field changed
      • changedInput schema / properties / deliverables / anyOf
        Previous value: -[
        -  {
        -    "items": {
        -      "const": "xlsx",
        -      "type": "string"
        -    },
        -    "type": "array"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]New value: +[
        +  {
        +    "items": {
        +      "enum": [
        +        "xlsx",
        +        "dxf",
        +        "pdf"
        +      ],
        +      "type": "string"
        +    },
        +    "type": "array"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
    • Changedcompute_petrol_oil_interceptor1 field changed
      • changedInput schema / properties / deliverables / anyOf
        Previous value: -[
        -  {
        -    "items": {
        -      "const": "xlsx",
        -      "type": "string"
        -    },
        -    "type": "array"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]New value: +[
        +  {
        +    "items": {
        +      "enum": [
        +        "xlsx",
        +        "dxf",
        +        "pdf"
        +      ],
        +      "type": "string"
        +    },
        +    "type": "array"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
    • Changedcompute_pipe_bedding1 field changed
      • changedInput schema / properties / deliverables / anyOf
        Previous value: -[
        -  {
        -    "items": {
        -      "const": "xlsx",
        -      "type": "string"
        -    },
        -    "type": "array"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]New value: +[
        +  {
        +    "items": {
        +      "enum": [
        +        "xlsx",
        +        "dxf",
        +        "pdf"
        +      ],
        +      "type": "string"
        +    },
        +    "type": "array"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
    • Changedcompute_pipework_testing1 field changed
      • changedInput schema / properties / deliverables / anyOf
        Previous value: -[
        -  {
        -    "items": {
        -      "const": "xlsx",
        -      "type": "string"
        -    },
        -    "type": "array"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]New value: +[
        +  {
        +    "items": {
        +      "enum": [
        +        "xlsx",
        +        "dxf",
        +        "pdf"
        +      ],
        +      "type": "string"
        +    },
        +    "type": "array"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
    • Changedcompute_reinforced_soil_wall1 field changed
      • changedInput schema / properties / deliverables / anyOf
        Previous value: -[
        -  {
        -    "items": {
        -      "const": "xlsx",
        -      "type": "string"
        -    },
        -    "type": "array"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]New value: +[
        +  {
        +    "items": {
        +      "enum": [
        +        "xlsx",
        +        "dxf",
        +        "pdf"
        +      ],
        +      "type": "string"
        +    },
        +    "type": "array"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
    • Changedcompute_rigid_pavement1 field changed
      • changedInput schema / properties / deliverables / anyOf
        Previous value: -[
        -  {
        -    "items": {
        -      "const": "xlsx",
        -      "type": "string"
        -    },
        -    "type": "array"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]New value: +[
        +  {
        +    "items": {
        +      "enum": [
        +        "xlsx",
        +        "dxf",
        +        "pdf"
        +      ],
        +      "type": "string"
        +    },
        +    "type": "array"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
    • Changedcompute_road_marking1 field changed
      • changedInput schema / properties / deliverables / anyOf
        Previous value: -[
        -  {
        -    "items": {
        -      "const": "xlsx",
        -      "type": "string"
        -    },
        -    "type": "array"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]New value: +[
        +  {
        +    "items": {
        +      "enum": [
        +        "xlsx",
        +        "dxf",
        +        "pdf"
        +      ],
        +      "type": "string"
        +    },
        +    "type": "array"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
    • Changedcompute_single_service_run1 field changed
      • changedInput schema / properties / deliverables / anyOf
        Previous value: -[
        -  {
        -    "items": {
        -      "const": "xlsx",
        -      "type": "string"
        -    },
        -    "type": "array"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]New value: +[
        +  {
        +    "items": {
        +      "enum": [
        +        "xlsx",
        +        "dxf",
        +        "pdf"
        +      ],
        +      "type": "string"
        +    },
        +    "type": "array"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
    • Changedcompute_soakaway1 field changed
      • changedInput schema / properties / deliverables / anyOf
        Previous value: -[
        -  {
        -    "items": {
        -      "const": "xlsx",
        -      "type": "string"
        -    },
        -    "type": "array"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]New value: +[
        +  {
        +    "items": {
        +      "enum": [
        +        "xlsx",
        +        "dxf",
        +        "pdf"
        +      ],
        +      "type": "string"
        +    },
        +    "type": "array"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
    • Changedcompute_soil_nailed_slope1 field changed
      • changedInput schema / properties / deliverables / anyOf
        Previous value: -[
        -  {
        -    "items": {
        -      "const": "xlsx",
        -      "type": "string"
        -    },
        -    "type": "array"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]New value: +[
        +  {
        +    "items": {
        +      "enum": [
        +        "xlsx",
        +        "dxf",
        +        "pdf"
        +      ],
        +      "type": "string"
        +    },
        +    "type": "array"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
    • Changedcompute_strip_foundation1 field changed
      • changedInput schema / properties / deliverables / anyOf
        Previous value: -[
        -  {
        -    "items": {
        -      "const": "xlsx",
        -      "type": "string"
        -    },
        -    "type": "array"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]New value: +[
        +  {
        +    "items": {
        +      "enum": [
        +        "xlsx",
        +        "dxf",
        +        "pdf"
        +      ],
        +      "type": "string"
        +    },
        +    "type": "array"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
    • Changedcompute_swale1 field changed
      • changedInput schema / properties / deliverables / anyOf
        Previous value: -[
        -  {
        -    "items": {
        -      "const": "xlsx",
        -      "type": "string"
        -    },
        -    "type": "array"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]New value: +[
        +  {
        +    "items": {
        +      "enum": [
        +        "xlsx",
        +        "dxf",
        +        "pdf"
        +      ],
        +      "type": "string"
        +    },
        +    "type": "array"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
    • Changedcompute_traffic_sign1 field changed
      • changedInput schema / properties / deliverables / anyOf
        Previous value: -[
        -  {
        -    "items": {
        -      "const": "xlsx",
        -      "type": "string"
        -    },
        -    "type": "array"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]New value: +[
        +  {
        +    "items": {
        +      "enum": [
        +        "xlsx",
        +        "dxf",
        +        "pdf"
        +      ],
        +      "type": "string"
        +    },
        +    "type": "array"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
    • Changedcompute_utility_chamber1 field changed
      • changedInput schema / properties / deliverables / anyOf
        Previous value: -[
        -  {
        -    "items": {
        -      "const": "xlsx",
        -      "type": "string"
        -    },
        -    "type": "array"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]New value: +[
        +  {
        +    "items": {
        +      "enum": [
        +        "xlsx",
        +        "dxf",
        +        "pdf"
        +      ],
        +      "type": "string"
        +    },
        +    "type": "array"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
    • Changedcompute_utility_kiosk_base1 field changed
      • changedInput schema / properties / deliverables / anyOf
        Previous value: -[
        -  {
        -    "items": {
        -      "const": "xlsx",
        -      "type": "string"
        -    },
        -    "type": "array"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]New value: +[
        +  {
        +    "items": {
        +      "enum": [
        +        "xlsx",
        +        "dxf",
        +        "pdf"
        +      ],
        +      "type": "string"
        +    },
        +    "type": "array"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
    • Changedcompute_vehicle_restraint_system1 field changed
      • changedInput schema / properties / deliverables / anyOf
        Previous value: -[
        -  {
        -    "items": {
        -      "const": "xlsx",
        -      "type": "string"
        -    },
        -    "type": "array"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]New value: +[
        +  {
        +    "items": {
        +      "enum": [
        +        "xlsx",
        +        "dxf",
        +        "pdf"
        +      ],
        +      "type": "string"
        +    },
        +    "type": "array"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
    • Addedget_skill
    • Addedlist_skills
    • Changedresolve_assembly_from_description1 field changed
      • changedOutput schema / properties / result / anyOf
        Previous value: -[
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "_meta": {
        -        "additionalProperties": false,
        -        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        -        "properties": {
        -          "deliverables": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        -                "properties": {
        -                  "docx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "dxf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "expires_at": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  },
        -                  "pdf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "xlsx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "expires_at"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "document_id": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "issued_at": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "rate_limit_remaining": {
        -            "anyOf": [
        -              {
        -                "minimum": 0,
        -                "type": "integer"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "request_id": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "schema_version": {
        -            "const": "1.0.0",
        -            "default": "1.0.0",
        -            "type": "string"
        -          },
        -          "scope_boundary": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        -                "properties": {
        -                  "not_in_scope": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "produced": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "recommended_companions": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "type": "string"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "produced",
        -                  "not_in_scope"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tier": {
        -            "enum": [
        -              "free",
        -              "paid"
        -            ],
        -            "type": "string"
        -          },
        -          "tier_upgrade": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        -                "properties": {
        -                  "available_tiers": {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        -                      "properties": {
        -                        "billing": {
        -                          "enum": [
        -                            "one_off",
        -                            "monthly",
        -                            "annual"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "currency": {
        -                          "enum": [
        -                            "GBP",
        -                            "SGD",
        -                            "EUR",
        -                            "USD",
        -                            "CAD",
        -                            "AUD",
        -                            "NZD",
        -                            "MYR"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "display_name": {
        -                          "type": "string"
        -                        },
        -                        "price_local": {
        -                          "type": "number"
        -                        },
        -                        "tier_slug": {
        -                          "enum": [
        -                            "7_day_pass",
        -                            "solo",
        -                            "studio",
        -                            "practice"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "unlock_summary": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "tier_slug",
        -                        "display_name",
        -                        "price_local",
        -                        "currency",
        -                        "billing",
        -                        "unlock_summary"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "current_tier": {
        -                    "const": "free",
        -                    "default": "free",
        -                    "type": "string"
        -                  },
        -                  "pass_credit": {
        -                    "anyOf": [
        -                      {
        -                        "additionalProperties": false,
        -                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        -                        "properties": {
        -                          "amount_local": {
        -                            "type": "number"
        -                          },
        -                          "applies_to": {
        -                            "const": "solo_first_month",
        -                            "default": "solo_first_month",
        -                            "type": "string"
        -                          },
        -                          "currency": {
        -                            "type": "string"
        -                          },
        -                          "redeemable_until": {
        -                            "type": "string"
        -                          }
        -                        },
        -                        "required": [
        -                          "amount_local",
        -                          "currency",
        -                          "redeemable_until"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "pricing_url": {
        -                    "default": "https://civilquants.com/pricing",
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "available_tiers"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tos_url": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "upgrade_hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "warranty_disclaimer": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          }
        -        },
        -        "required": [
        -          "request_id",
        -          "issued_at",
        -          "tier"
        -        ],
        -        "type": "object"
        -      },
        -      "data": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "The typed payload wrapped in MCPResponse[ResolveResult].",
        -            "properties": {
        -              "candidates": {
        -                "items": {
        -                  "additionalProperties": false,
        -                  "description": "A candidate assembly the description routed to.",
        -                  "properties": {
        -                    "category_l1": {
        -                      "type": "string"
        -                    },
        -                    "category_l2": {
        -                      "type": "string"
        -                    },
        -                    "compute_tool": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "display_name": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "fields": {
        -                      "items": {
        -                        "additionalProperties": false,
        -                        "description": "One Parameters field, with the metadata a caller fills a value from.",
        -                        "properties": {
        -                          "default": {
        -                            "anyOf": [
        -                              {
        -                                "type": "number"
        -                              },
        -                              {
        -                                "type": "integer"
        -                              },
        -                              {
        -                                "type": "string"
        -                              },
        -                              {
        -                                "type": "boolean"
        -                              },
        -                              {
        -                                "type": "null"
        -                              }
        -                            ]
        -                          },
        -                          "group": {
        -                            "minLength": 1,
        -                            "type": "string"
        -                          },
        -                          "help_text": {
        -                            "anyOf": [
        -                              {
        -                                "type": "string"
        -                              },
        -                              {
        -                                "type": "null"
        -                              }
        -                            ],
        -                            "default": null
        -                          },
        -                          "is_run_length": {
        -                            "default": false,
        -                            "type": "boolean"
        -                          },
        -                          "label": {
        -                            "minLength": 1,
        -                            "type": "string"
        -                          },
        -                          "load_bearing": {
        -                            "default": false,
        -                            "type": "boolean"
        -                          },
        -                          "max": {
        -                            "anyOf": [
        -                              {
        -                                "type": "number"
        -                              },
        -                              {
        -                                "type": "null"
        -                              }
        -                            ],
        -                            "default": null
        -                          },
        -                          "min": {
        -                            "anyOf": [
        -                              {
        -                                "type": "number"
        -                              },
        -                              {
        -                                "type": "null"
        -                              }
        -                            ],
        -                            "default": null
        -                          },
        -                          "name": {
        -                            "minLength": 1,
        -                            "type": "string"
        -                          },
        -                          "unit": {
        -                            "anyOf": [
        -                              {
        -                                "type": "string"
        -                              },
        -                              {
        -                                "type": "null"
        -                              }
        -                            ],
        -                            "default": null
        -                          }
        -                        },
        -                        "required": [
        -                          "name",
        -                          "label",
        -                          "default",
        -                          "group"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      "type": "array"
        -                    },
        -                    "multi_section_tool": {
        -                      "anyOf": [
        -                        {
        -                          "type": "string"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "slug": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "standard_note": {
        -                      "anyOf": [
        -                        {
        -                          "type": "string"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "supports_multi_section": {
        -                      "default": false,
        -                      "type": "boolean"
        -                    },
        -                    "tier": {
        -                      "enum": [
        -                        "free",
        -                        "paid"
        -                      ],
        -                      "type": "string"
        -                    }
        -                  },
        -                  "required": [
        -                    "slug",
        -                    "display_name",
        -                    "tier",
        -                    "category_l1",
        -                    "category_l2",
        -                    "compute_tool"
        -                  ],
        -                  "type": "object"
        -                },
        -                "type": "array"
        -              },
        -              "confidence": {
        -                "enum": [
        -                  "high",
        -                  "medium",
        -                  "low"
        -                ],
        -                "type": "string"
        -              },
        -              "preferred_standard": {
        -                "anyOf": [
        -                  {
        -                    "enum": [
        -                      "CESMM4",
        -                      "NRM2",
        -                      "SMM7",
        -                      "MMHW"
        -                    ],
        -                    "type": "string"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "query": {
        -                "type": "string"
        -              },
        -              "questions": {
        -                "items": {
        -                  "type": "string"
        -                },
        -                "type": "array"
        -              },
        -              "resolution_log": {
        -                "anyOf": [
        -                  {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "One row of the optional resolution log (return_resolution_log).",
        -                      "properties": {
        -                        "matched_terms": {
        -                          "items": {
        -                            "type": "string"
        -                          },
        -                          "type": "array"
        -                        },
        -                        "score": {
        -                          "type": "number"
        -                        },
        -                        "slug": {
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "slug",
        -                        "score"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              }
        -            },
        -            "required": [
        -              "query",
        -              "confidence"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      },
        -      "error": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        -            "properties": {
        -              "code": {
        -                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        -                "enum": [
        -                  "RATE_LIMIT_EXCEEDED",
        -                  "TIER_INSUFFICIENT",
        -                  "INVALID_INPUT",
        -                  "SCHEMA_VERSION_MISMATCH",
        -                  "SCHEMA_INVARIANT_VIOLATION",
        -                  "UPSTREAM_TIMEOUT",
        -                  "BACKEND_FAILURE",
        -                  "IP_BLOCKED",
        -                  "RESOURCE_NOT_FOUND",
        -                  "RENDER_FAILURE",
        -                  "OCR_LOW_CONFIDENCE",
        -                  "MANUAL_REVIEW_REQUIRED",
        -                  "ACCEPTANCE_REQUIRED",
        -                  "INVALID_TOKEN"
        -                ],
        -                "type": "string"
        -              },
        -              "details": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "message": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "recoverable": {
        -                "type": "boolean"
        -              },
        -              "retry_after_seconds": {
        -                "anyOf": [
        -                  {
        -                    "minimum": 0,
        -                    "type": "integer"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              }
        -            },
        -            "required": [
        -              "code",
        -              "message",
        -              "recoverable"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      }
        -    },
        -    "required": [
        -      "_meta"
        -    ],
        -    "type": "object"
        -  },
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "_meta": {
        -        "additionalProperties": false,
        -        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        -        "properties": {
        -          "deliverables": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        -                "properties": {
        -                  "docx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "dxf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "expires_at": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  },
        -                  "pdf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "xlsx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "expires_at"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "document_id": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "issued_at": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "rate_limit_remaining": {
        -            "anyOf": [
        -              {
        -                "minimum": 0,
        -                "type": "integer"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "request_id": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "schema_version": {
        -            "const": "1.0.0",
        -            "default": "1.0.0",
        -            "type": "string"
        -          },
        -          "scope_boundary": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        -                "properties": {
        -                  "not_in_scope": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "produced": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "recommended_companions": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "type": "string"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "produced",
        -                  "not_in_scope"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tier": {
        -            "enum": [
        -              "free",
        -              "paid"
        -            ],
        -            "type": "string"
        -          },
        -          "tier_upgrade": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        -                "properties": {
        -                  "available_tiers": {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        -                      "properties": {
        -                        "billing": {
        -                          "enum": [
        -                            "one_off",
        -                            "monthly",
        -                            "annual"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "currency": {
        -                          "enum": [
        -                            "GBP",
        -                            "SGD",
        -                            "EUR",
        -                            "USD",
        -                            "CAD",
        -                            "AUD",
        -                            "NZD",
        -                            "MYR"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "display_name": {
        -                          "type": "string"
        -                        },
        -                        "price_local": {
        -                          "type": "number"
        -                        },
        -                        "tier_slug": {
        -                          "enum": [
        -                            "7_day_pass",
        -                            "solo",
        -                            "studio",
        -                            "practice"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "unlock_summary": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "tier_slug",
        -                        "display_name",
        -                        "price_local",
        -                        "currency",
        -                        "billing",
        -                        "unlock_summary"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "current_tier": {
        -                    "const": "free",
        -                    "default": "free",
        -                    "type": "string"
        -                  },
        -                  "pass_credit": {
        -                    "anyOf": [
        -                      {
        -                        "additionalProperties": false,
        -                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        -                        "properties": {
        -                          "amount_local": {
        -                            "type": "number"
        -                          },
        -                          "applies_to": {
        -                            "const": "solo_first_month",
        -                            "default": "solo_first_month",
        -                            "type": "string"
        -                          },
        -                          "currency": {
        -                            "type": "string"
        -                          },
        -                          "redeemable_until": {
        -                            "type": "string"
        -                          }
        -                        },
        -                        "required": [
        -                          "amount_local",
        -                          "currency",
        -                          "redeemable_until"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "pricing_url": {
        -                    "default": "https://civilquants.com/pricing",
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "available_tiers"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tos_url": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "upgrade_hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "warranty_disclaimer": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          }
        -        },
        -        "required": [
        -          "request_id",
        -          "issued_at",
        -          "tier"
        -        ],
        -        "type": "object"
        -      },
        -      "data": {
        -        "default": null,
        -        "title": "Data"
        -      },
        -      "error": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        -            "properties": {
        -              "code": {
        -                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        -                "enum": [
        -                  "RATE_LIMIT_EXCEEDED",
        -                  "TIER_INSUFFICIENT",
        -                  "INVALID_INPUT",
        -                  "SCHEMA_VERSION_MISMATCH",
        -                  "SCHEMA_INVARIANT_VIOLATION",
        -                  "UPSTREAM_TIMEOUT",
        -                  "BACKEND_FAILURE",
        -                  "IP_BLOCKED",
        -                  "RESOURCE_NOT_FOUND",
        -                  "RENDER_FAILURE",
        -                  "OCR_LOW_CONFIDENCE",
        -                  "MANUAL_REVIEW_REQUIRED",
        -                  "ACCEPTANCE_REQUIRED",
        -                  "INVALID_TOKEN"
        -                ],
        -                "type": "string"
        -              },
        -              "details": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "message": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "recoverable": {
        -                "type": "boolean"
        -              },
        -              "retry_after_seconds": {
        -                "anyOf": [
        -                  {
        -                    "minimum": 0,
        -                    "type": "integer"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              }
        -            },
        -            "required": [
        -              "code",
        -              "message",
        -              "recoverable"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      }
        -    },
        -    "required": [
        -      "_meta"
        -    ],
        -    "type": "object"
        -  }
        -]New value: +[
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "_meta": {
        +        "additionalProperties": false,
        +        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        +        "properties": {
        +          "deliverables": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        +                "properties": {
        +                  "docx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "dxf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "expires_at": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  },
        +                  "pdf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "xlsx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "expires_at"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "document_id": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "issued_at": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "rate_limit_remaining": {
        +            "anyOf": [
        +              {
        +                "minimum": 0,
        +                "type": "integer"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "request_id": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "schema_version": {
        +            "const": "1.0.0",
        +            "default": "1.0.0",
        +            "type": "string"
        +          },
        +          "scope_boundary": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        +                "properties": {
        +                  "not_in_scope": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "produced": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "recommended_companions": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "type": "string"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "produced",
        +                  "not_in_scope"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tier": {
        +            "enum": [
        +              "free",
        +              "paid"
        +            ],
        +            "type": "string"
        +          },
        +          "tier_upgrade": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        +                "properties": {
        +                  "available_tiers": {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        +                      "properties": {
        +                        "billing": {
        +                          "enum": [
        +                            "one_off",
        +                            "monthly",
        +                            "annual"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "currency": {
        +                          "enum": [
        +                            "GBP",
        +                            "SGD",
        +                            "EUR",
        +                            "USD",
        +                            "CAD",
        +                            "AUD",
        +                            "NZD",
        +                            "MYR"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "display_name": {
        +                          "type": "string"
        +                        },
        +                        "price_local": {
        +                          "type": "number"
        +                        },
        +                        "tier_slug": {
        +                          "enum": [
        +                            "7_day_pass",
        +                            "solo",
        +                            "studio",
        +                            "practice"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "unlock_summary": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "tier_slug",
        +                        "display_name",
        +                        "price_local",
        +                        "currency",
        +                        "billing",
        +                        "unlock_summary"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "current_tier": {
        +                    "const": "free",
        +                    "default": "free",
        +                    "type": "string"
        +                  },
        +                  "pass_credit": {
        +                    "anyOf": [
        +                      {
        +                        "additionalProperties": false,
        +                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        +                        "properties": {
        +                          "amount_local": {
        +                            "type": "number"
        +                          },
        +                          "applies_to": {
        +                            "const": "solo_first_month",
        +                            "default": "solo_first_month",
        +                            "type": "string"
        +                          },
        +                          "currency": {
        +                            "type": "string"
        +                          },
        +                          "redeemable_until": {
        +                            "type": "string"
        +                          }
        +                        },
        +                        "required": [
        +                          "amount_local",
        +                          "currency",
        +                          "redeemable_until"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "pricing_url": {
        +                    "default": "https://civilquants.com/pricing",
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "available_tiers"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tos_url": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "upgrade_hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "warranty_disclaimer": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          }
        +        },
        +        "required": [
        +          "request_id",
        +          "issued_at",
        +          "tier"
        +        ],
        +        "type": "object"
        +      },
        +      "data": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "The typed payload wrapped in MCPResponse[ResolveResult].",
        +            "properties": {
        +              "candidates": {
        +                "items": {
        +                  "additionalProperties": false,
        +                  "description": "A candidate assembly the description routed to.",
        +                  "properties": {
        +                    "category_l1": {
        +                      "type": "string"
        +                    },
        +                    "category_l2": {
        +                      "type": "string"
        +                    },
        +                    "compute_tool": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "display_name": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "fields": {
        +                      "items": {
        +                        "additionalProperties": false,
        +                        "description": "One Parameters field, with the metadata a caller fills a value from.",
        +                        "properties": {
        +                          "default": {
        +                            "anyOf": [
        +                              {
        +                                "type": "number"
        +                              },
        +                              {
        +                                "type": "integer"
        +                              },
        +                              {
        +                                "type": "string"
        +                              },
        +                              {
        +                                "type": "boolean"
        +                              },
        +                              {
        +                                "type": "null"
        +                              }
        +                            ]
        +                          },
        +                          "group": {
        +                            "minLength": 1,
        +                            "type": "string"
        +                          },
        +                          "help_text": {
        +                            "anyOf": [
        +                              {
        +                                "type": "string"
        +                              },
        +                              {
        +                                "type": "null"
        +                              }
        +                            ],
        +                            "default": null
        +                          },
        +                          "is_run_length": {
        +                            "default": false,
        +                            "type": "boolean"
        +                          },
        +                          "label": {
        +                            "minLength": 1,
        +                            "type": "string"
        +                          },
        +                          "load_bearing": {
        +                            "default": false,
        +                            "type": "boolean"
        +                          },
        +                          "max": {
        +                            "anyOf": [
        +                              {
        +                                "type": "number"
        +                              },
        +                              {
        +                                "type": "null"
        +                              }
        +                            ],
        +                            "default": null
        +                          },
        +                          "min": {
        +                            "anyOf": [
        +                              {
        +                                "type": "number"
        +                              },
        +                              {
        +                                "type": "null"
        +                              }
        +                            ],
        +                            "default": null
        +                          },
        +                          "name": {
        +                            "minLength": 1,
        +                            "type": "string"
        +                          },
        +                          "unit": {
        +                            "anyOf": [
        +                              {
        +                                "type": "string"
        +                              },
        +                              {
        +                                "type": "null"
        +                              }
        +                            ],
        +                            "default": null
        +                          }
        +                        },
        +                        "required": [
        +                          "name",
        +                          "label",
        +                          "default",
        +                          "group"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      "type": "array"
        +                    },
        +                    "free_alternative": {
        +                      "anyOf": [
        +                        {
        +                          "type": "string"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "multi_section_tool": {
        +                      "anyOf": [
        +                        {
        +                          "type": "string"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "slug": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "standard_note": {
        +                      "anyOf": [
        +                        {
        +                          "type": "string"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "suggested_params": {
        +                      "items": {
        +                        "additionalProperties": false,
        +                        "description": "A value the description stated with a clear anchor — a caller-confirmed\nsuggestion, NOT an authoritative value and never auto-fed to compute.",
        +                        "properties": {
        +                          "name": {
        +                            "minLength": 1,
        +                            "type": "string"
        +                          },
        +                          "source": {
        +                            "minLength": 1,
        +                            "type": "string"
        +                          },
        +                          "unit": {
        +                            "anyOf": [
        +                              {
        +                                "type": "string"
        +                              },
        +                              {
        +                                "type": "null"
        +                              }
        +                            ],
        +                            "default": null
        +                          },
        +                          "value": {
        +                            "type": "number"
        +                          }
        +                        },
        +                        "required": [
        +                          "name",
        +                          "value",
        +                          "source"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      "type": "array"
        +                    },
        +                    "supports_multi_section": {
        +                      "default": false,
        +                      "type": "boolean"
        +                    },
        +                    "tier": {
        +                      "enum": [
        +                        "free",
        +                        "paid"
        +                      ],
        +                      "type": "string"
        +                    }
        +                  },
        +                  "required": [
        +                    "slug",
        +                    "display_name",
        +                    "tier",
        +                    "category_l1",
        +                    "category_l2",
        +                    "compute_tool"
        +                  ],
        +                  "type": "object"
        +                },
        +                "type": "array"
        +              },
        +              "confidence": {
        +                "enum": [
        +                  "high",
        +                  "medium",
        +                  "low"
        +                ],
        +                "type": "string"
        +              },
        +              "preferred_standard": {
        +                "anyOf": [
        +                  {
        +                    "enum": [
        +                      "CESMM4",
        +                      "NRM2",
        +                      "SMM7",
        +                      "MMHW"
        +                    ],
        +                    "type": "string"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "query": {
        +                "type": "string"
        +              },
        +              "questions": {
        +                "items": {
        +                  "type": "string"
        +                },
        +                "type": "array"
        +              },
        +              "resolution_log": {
        +                "anyOf": [
        +                  {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "One row of the optional resolution log (return_resolution_log).",
        +                      "properties": {
        +                        "matched_terms": {
        +                          "items": {
        +                            "type": "string"
        +                          },
        +                          "type": "array"
        +                        },
        +                        "score": {
        +                          "type": "number"
        +                        },
        +                        "slug": {
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "slug",
        +                        "score"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              }
        +            },
        +            "required": [
        +              "query",
        +              "confidence"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      },
        +      "error": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        +            "properties": {
        +              "code": {
        +                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        +                "enum": [
        +                  "RATE_LIMIT_EXCEEDED",
        +                  "TIER_INSUFFICIENT",
        +                  "INVALID_INPUT",
        +                  "SCHEMA_VERSION_MISMATCH",
        +                  "SCHEMA_INVARIANT_VIOLATION",
        +                  "UPSTREAM_TIMEOUT",
        +                  "BACKEND_FAILURE",
        +                  "IP_BLOCKED",
        +                  "RESOURCE_NOT_FOUND",
        +                  "RENDER_FAILURE",
        +                  "OCR_LOW_CONFIDENCE",
        +                  "MANUAL_REVIEW_REQUIRED",
        +                  "ACCEPTANCE_REQUIRED",
        +                  "INVALID_TOKEN"
        +                ],
        +                "type": "string"
        +              },
        +              "details": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "message": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "recoverable": {
        +                "type": "boolean"
        +              },
        +              "retry_after_seconds": {
        +                "anyOf": [
        +                  {
        +                    "minimum": 0,
        +                    "type": "integer"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              }
        +            },
        +            "required": [
        +              "code",
        +              "message",
        +              "recoverable"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      }
        +    },
        +    "required": [
        +      "_meta"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "_meta": {
        +        "additionalProperties": false,
        +        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        +        "properties": {
        +          "deliverables": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        +                "properties": {
        +                  "docx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "dxf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "expires_at": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  },
        +                  "pdf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "xlsx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "expires_at"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "document_id": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "issued_at": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "rate_limit_remaining": {
        +            "anyOf": [
        +              {
        +                "minimum": 0,
        +                "type": "integer"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "request_id": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "schema_version": {
        +            "const": "1.0.0",
        +            "default": "1.0.0",
        +            "type": "string"
        +          },
        +          "scope_boundary": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        +                "properties": {
        +                  "not_in_scope": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "produced": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "recommended_companions": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "type": "string"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "produced",
        +                  "not_in_scope"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tier": {
        +            "enum": [
        +              "free",
        +              "paid"
        +            ],
        +            "type": "string"
        +          },
        +          "tier_upgrade": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        +                "properties": {
        +                  "available_tiers": {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        +                      "properties": {
        +                        "billing": {
        +                          "enum": [
        +                            "one_off",
        +                            "monthly",
        +                            "annual"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "currency": {
        +                          "enum": [
        +                            "GBP",
        +                            "SGD",
        +                            "EUR",
        +                            "USD",
        +                            "CAD",
        +                            "AUD",
        +                            "NZD",
        +                            "MYR"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "display_name": {
        +                          "type": "string"
        +                        },
        +                        "price_local": {
        +                          "type": "number"
        +                        },
        +                        "tier_slug": {
        +                          "enum": [
        +                            "7_day_pass",
        +                            "solo",
        +                            "studio",
        +                            "practice"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "unlock_summary": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "tier_slug",
        +                        "display_name",
        +                        "price_local",
        +                        "currency",
        +                        "billing",
        +                        "unlock_summary"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "current_tier": {
        +                    "const": "free",
        +                    "default": "free",
        +                    "type": "string"
        +                  },
        +                  "pass_credit": {
        +                    "anyOf": [
        +                      {
        +                        "additionalProperties": false,
        +                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        +                        "properties": {
        +                          "amount_local": {
        +                            "type": "number"
        +                          },
        +                          "applies_to": {
        +                            "const": "solo_first_month",
        +                            "default": "solo_first_month",
        +                            "type": "string"
        +                          },
        +                          "currency": {
        +                            "type": "string"
        +                          },
        +                          "redeemable_until": {
        +                            "type": "string"
        +                          }
        +                        },
        +                        "required": [
        +                          "amount_local",
        +                          "currency",
        +                          "redeemable_until"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "pricing_url": {
        +                    "default": "https://civilquants.com/pricing",
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "available_tiers"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tos_url": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "upgrade_hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "warranty_disclaimer": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          }
        +        },
        +        "required": [
        +          "request_id",
        +          "issued_at",
        +          "tier"
        +        ],
        +        "type": "object"
        +      },
        +      "data": {
        +        "default": null,
        +        "title": "Data"
        +      },
        +      "error": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        +            "properties": {
        +              "code": {
        +                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        +                "enum": [
        +                  "RATE_LIMIT_EXCEEDED",
        +                  "TIER_INSUFFICIENT",
        +                  "INVALID_INPUT",
        +                  "SCHEMA_VERSION_MISMATCH",
        +                  "SCHEMA_INVARIANT_VIOLATION",
        +                  "UPSTREAM_TIMEOUT",
        +                  "BACKEND_FAILURE",
        +                  "IP_BLOCKED",
        +                  "RESOURCE_NOT_FOUND",
        +                  "RENDER_FAILURE",
        +                  "OCR_LOW_CONFIDENCE",
        +                  "MANUAL_REVIEW_REQUIRED",
        +                  "ACCEPTANCE_REQUIRED",
        +                  "INVALID_TOKEN"
        +                ],
        +                "type": "string"
        +              },
        +              "details": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "message": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "recoverable": {
        +                "type": "boolean"
        +              },
        +              "retry_after_seconds": {
        +                "anyOf": [
        +                  {
        +                    "minimum": 0,
        +                    "type": "integer"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              }
        +            },
        +            "required": [
        +              "code",
        +              "message",
        +              "recoverable"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      }
        +    },
        +    "required": [
        +      "_meta"
        +    ],
        +    "type": "object"
        +  }
        +]
  9. 49 tool updates
    • Changedcompute_anchored_wall1 field changed
      • changedOutput schema / properties / result / anyOf
        Previous value: -[
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "_meta": {
        -        "additionalProperties": false,
        -        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        -        "properties": {
        -          "deliverables": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        -                "properties": {
        -                  "docx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "dxf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "expires_at": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  },
        -                  "pdf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "xlsx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "expires_at"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "document_id": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "issued_at": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "rate_limit_remaining": {
        -            "anyOf": [
        -              {
        -                "minimum": 0,
        -                "type": "integer"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "request_id": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "schema_version": {
        -            "const": "1.0.0",
        -            "default": "1.0.0",
        -            "type": "string"
        -          },
        -          "scope_boundary": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        -                "properties": {
        -                  "not_in_scope": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "produced": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "recommended_companions": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "type": "string"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "produced",
        -                  "not_in_scope"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tier": {
        -            "enum": [
        -              "free",
        -              "paid"
        -            ],
        -            "type": "string"
        -          },
        -          "tier_upgrade": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        -                "properties": {
        -                  "available_tiers": {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        -                      "properties": {
        -                        "billing": {
        -                          "enum": [
        -                            "one_off",
        -                            "monthly",
        -                            "annual"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "currency": {
        -                          "enum": [
        -                            "GBP",
        -                            "SGD",
        -                            "EUR",
        -                            "USD",
        -                            "CAD",
        -                            "AUD",
        -                            "NZD",
        -                            "MYR"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "display_name": {
        -                          "type": "string"
        -                        },
        -                        "price_local": {
        -                          "type": "number"
        -                        },
        -                        "tier_slug": {
        -                          "enum": [
        -                            "7_day_pass",
        -                            "solo",
        -                            "studio",
        -                            "practice"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "unlock_summary": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "tier_slug",
        -                        "display_name",
        -                        "price_local",
        -                        "currency",
        -                        "billing",
        -                        "unlock_summary"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "current_tier": {
        -                    "const": "free",
        -                    "default": "free",
        -                    "type": "string"
        -                  },
        -                  "pass_credit": {
        -                    "anyOf": [
        -                      {
        -                        "additionalProperties": false,
        -                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        -                        "properties": {
        -                          "amount_local": {
        -                            "type": "number"
        -                          },
        -                          "applies_to": {
        -                            "const": "solo_first_month",
        -                            "default": "solo_first_month",
        -                            "type": "string"
        -                          },
        -                          "currency": {
        -                            "type": "string"
        -                          },
        -                          "redeemable_until": {
        -                            "type": "string"
        -                          }
        -                        },
        -                        "required": [
        -                          "amount_local",
        -                          "currency",
        -                          "redeemable_until"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "pricing_url": {
        -                    "default": "https://civilquants.com/pricing",
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "available_tiers"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tos_url": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "upgrade_hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "warranty_disclaimer": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          }
        -        },
        -        "required": [
        -          "request_id",
        -          "issued_at",
        -          "tier"
        -        ],
        -        "type": "object"
        -      },
        -      "data": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Schema § 1.1 — the typed payload returned inside `MCPResponse[ComputeResult]`.\n\nFree-tier responses omit `drawings` (the downloadable CAD artefact\npointers — the paid differentiator); the bridge enforces this. The\n`audit_trail` and the inline `drawing` preview are present on BOTH tiers\n(V1 ALIGN / 60th-fire D + C). `text_summary` is bounded to 2000 chars —\nkeeps the LLM-facing summary token-cheap and forces longer narrative into\nBoQ row descriptions where it belongs. `warnings` is the non-fatal\ngeometry advisory list (both tiers).",
        -            "properties": {
        -              "assembly_slug": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "audit_trail": {
        -                "anyOf": [
        -                  {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.7 — paid-tier audit-trail entry.\n\nOne entry per BoQ row; `boq_row_index` ties to the row position in\n`ComputeResult.boq_rows`. `derivation` is the human-readable formula\nwalk-through; `formula` is the optional formal expression.",
        -                      "properties": {
        -                        "boq_row_index": {
        -                          "minimum": 0,
        -                          "type": "integer"
        -                        },
        -                        "derivation": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "formula": {
        -                          "anyOf": [
        -                            {
        -                              "type": "string"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ],
        -                          "default": null
        -                        },
        -                        "id": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "parameters_referenced": {
        -                          "items": {
        -                            "type": "string"
        -                          },
        -                          "type": "array"
        -                        }
        -                      },
        -                      "required": [
        -                        "id",
        -                        "boq_row_index",
        -                        "derivation"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "boq_rows": {
        -                "items": {
        -                  "additionalProperties": false,
        -                  "description": "Schema § 1.3 — a single bill row in the requested standard's format.\n\n`description` is the non-verbatim functional description per spec § 13.9 /\n§ 15 invariant — NEVER reproduces a standard's verbatim clause text.\n`rate` / `amount` ship null because rates are commodity data the customer\nowns; the engine's job is the measurement, not the pricing.",
        -                  "properties": {
        -                    "amount": {
        -                      "anyOf": [
        -                        {
        -                          "type": "number"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "attribution": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "audit_id": {
        -                      "anyOf": [
        -                        {
        -                          "type": "string"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "description": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "quantity": {
        -                      "minimum": 0,
        -                      "type": "number"
        -                    },
        -                    "rate": {
        -                      "anyOf": [
        -                        {
        -                          "type": "number"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "unit": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "work_section": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    }
        -                  },
        -                  "required": [
        -                    "work_section",
        -                    "description",
        -                    "quantity",
        -                    "unit",
        -                    "attribution"
        -                  ],
        -                  "type": "object"
        -                },
        -                "type": "array"
        -              },
        -              "drawing": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": false,
        -                    "description": "Schema § 1.6a — inline server-rendered SVG preview of the geometry.\n\nThe MCP mirror of the web ``/compute`` response's ``drawing`` field\n(``api.schemas.compute.DrawingRef``): the same on-screen dimensioned\ndrawing both tiers see in the workspace, surfaced on the MCP compute\nresponse so a chat client can render it inline (60th-fire item C). This\nis the on-screen preview — present on BOTH tiers per the free/paid\nboundary; the downloadable CAD artefacts (DXF / dimensioned PDF) remain\nthe paid differentiator via the export tools.\n\nDefined here rather than importing ``DrawingRef`` because the web\n``schemas`` package imports back into this module (``schemas.render``),\nso reusing it would create an import cycle — the MCP wire contract keeps\nits own copy, the same pattern as ``BoQRow`` / ``DrawingReference``.",
        -                    "properties": {
        -                      "entity_count": {
        -                        "minimum": 0,
        -                        "type": "integer"
        -                      },
        -                      "svg_b64": {
        -                        "minLength": 1,
        -                        "type": "string"
        -                      },
        -                      "unit_of_drawing": {
        -                        "const": "m",
        -                        "default": "m",
        -                        "type": "string"
        -                      },
        -                      "viewbox_height": {
        -                        "exclusiveMinimum": 0,
        -                        "type": "number"
        -                      },
        -                      "viewbox_width": {
        -                        "exclusiveMinimum": 0,
        -                        "type": "number"
        -                      },
        -                      "viewbox_x": {
        -                        "type": "number"
        -                      },
        -                      "viewbox_y": {
        -                        "type": "number"
        -                      }
        -                    },
        -                    "required": [
        -                      "svg_b64",
        -                      "viewbox_x",
        -                      "viewbox_y",
        -                      "viewbox_width",
        -                      "viewbox_height",
        -                      "entity_count"
        -                    ],
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "drawings": {
        -                "anyOf": [
        -                  {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.6 — paid-tier drawing artefact pointer.\n\n`url` is an R2-signed URL; expiry is carried in `_meta.deliverables.expires_at`\non the envelope (not duplicated here). `layers` is DXF-only; PDF/SVG\ncallers omit it.",
        -                      "properties": {
        -                        "drawing_type": {
        -                          "enum": [
        -                            "section",
        -                            "plan",
        -                            "elevation",
        -                            "isometric",
        -                            "detail"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "format": {
        -                          "enum": [
        -                            "DXF",
        -                            "PDF",
        -                            "SVG"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "layers": {
        -                          "anyOf": [
        -                            {
        -                              "items": {
        -                                "type": "string"
        -                              },
        -                              "type": "array"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ],
        -                          "default": null
        -                        },
        -                        "scale": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "sheet_size": {
        -                          "enum": [
        -                            "A1",
        -                            "A2",
        -                            "A3",
        -                            "A4"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "url": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "drawing_type",
        -                        "format",
        -                        "url",
        -                        "sheet_size",
        -                        "scale"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "parameters_used": {
        -                "additionalProperties": false,
        -                "description": "Schema § 1.2 — the parameter snapshot the engine actually used.\n\nSplits user-supplied values from engine defaults so customers can see\nwhich numbers came from them and which the engine filled in. Every\ndefaulted parameter SHOULD have a corresponding entry in `assumptions`\n— the bridge layer enforces this when wrapping engine output.",
        -                "properties": {
        -                  "assumptions": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "engine_defaults": {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  "resolved_from_description": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "additionalProperties": false,
        -                          "description": "Schema § 1.2 — a parameter resolved by the forgiving-input layer.\n\nPopulated by the Track B-Forgiving Haiku-4.5 resolution pass; until that\nlayer lands, instances are constructed only by tests. `source` distinguishes\nthe resolution path so customers can audit which fields were inferred.",
        -                          "properties": {
        -                            "confidence": {
        -                              "anyOf": [
        -                                {
        -                                  "enum": [
        -                                    "high",
        -                                    "medium",
        -                                    "low"
        -                                  ],
        -                                  "type": "string"
        -                                },
        -                                {
        -                                  "type": "null"
        -                                }
        -                              ],
        -                              "default": null
        -                            },
        -                            "field_name": {
        -                              "minLength": 1,
        -                              "type": "string"
        -                            },
        -                            "resolved_value": {},
        -                            "source": {
        -                              "enum": [
        -                                "description_field",
        -                                "haiku_resolution",
        -                                "engine_default"
        -                              ],
        -                              "type": "string"
        -                            }
        -                          },
        -                          "required": [
        -                            "field_name",
        -                            "resolved_value",
        -                            "source"
        -                          ],
        -                          "type": "object"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "user_supplied": {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  }
        -                },
        -                "type": "object"
        -              },
        -              "standard": {
        -                "enum": [
        -                  "CESMM4",
        -                  "NRM2",
        -                  "SMM7",
        -                  "MMHW"
        -                ],
        -                "type": "string"
        -              },
        -              "text_summary": {
        -                "maxLength": 2000,
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "totals_summary": {
        -                "additionalProperties": false,
        -                "description": "Schema § 1.4 — totals_summary as a typed wrapper around the free-form dict.\n\nWire shape is a flat object (`{\"concrete_m3\": {...}, \"rebar_t\": {...}}`).\nWe model it as `RootModel`-equivalent via `model_config(extra=\"allow\")`\n+ a single `__root__`-style `entries` dict. Pydantic v2 recommends\n`RootModel` for free-form roots; using a wrapper class keeps the import\nsurface uniform with the rest of this module.",
        -                "properties": {
        -                  "entries": {
        -                    "additionalProperties": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.4 — single material/work-class total entry.",
        -                      "properties": {
        -                        "quantity": {
        -                          "minimum": 0,
        -                          "type": "number"
        -                        },
        -                        "unit": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "quantity",
        -                        "unit"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "object"
        -                  }
        -                },
        -                "type": "object"
        -              },
        -              "warnings": {
        -                "items": {
        -                  "additionalProperties": false,
        -                  "description": "Schema § 1.8 — a non-fatal geometry advisory (56th-fire T2).\n\nThe wire projection of the engine's `core.GeometryWarning`. Advisory only:\na warning NEVER changes a measured quantity — it flags geometry that is\nvalid but likely a mistake (e.g. a stale dependent-height default). Present\non BOTH tiers — a correctness/safety signal, not a paid feature.",
        -                  "properties": {
        -                    "affected_params": {
        -                      "items": {
        -                        "type": "string"
        -                      },
        -                      "type": "array"
        -                    },
        -                    "code": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "detail": {
        -                      "additionalProperties": {
        -                        "type": "number"
        -                      },
        -                      "type": "object"
        -                    },
        -                    "message": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "severity": {
        -                      "enum": [
        -                        "info",
        -                        "advisory",
        -                        "caution"
        -                      ],
        -                      "type": "string"
        -                    }
        -                  },
        -                  "required": [
        -                    "code",
        -                    "severity",
        -                    "message"
        -                  ],
        -                  "type": "object"
        -                },
        -                "type": "array"
        -              }
        -            },
        -            "required": [
        -              "assembly_slug",
        -              "standard",
        -              "parameters_used",
        -              "boq_rows",
        -              "totals_summary",
        -              "text_summary"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      },
        -      "error": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        -            "properties": {
        -              "code": {
        -                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        -                "enum": [
        -                  "RATE_LIMIT_EXCEEDED",
        -                  "TIER_INSUFFICIENT",
        -                  "INVALID_INPUT",
        -                  "SCHEMA_VERSION_MISMATCH",
        -                  "SCHEMA_INVARIANT_VIOLATION",
        -                  "UPSTREAM_TIMEOUT",
        -                  "BACKEND_FAILURE",
        -                  "IP_BLOCKED",
        -                  "RESOURCE_NOT_FOUND",
        -                  "RENDER_FAILURE",
        -                  "OCR_LOW_CONFIDENCE",
        -                  "MANUAL_REVIEW_REQUIRED",
        -                  "ACCEPTANCE_REQUIRED",
        -                  "INVALID_TOKEN"
        -                ],
        -                "type": "string"
        -              },
        -              "details": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "message": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "recoverable": {
        -                "type": "boolean"
        -              },
        -              "retry_after_seconds": {
        -                "anyOf": [
        -                  {
        -                    "minimum": 0,
        -                    "type": "integer"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              }
        -            },
        -            "required": [
        -              "code",
        -              "message",
        -              "recoverable"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      }
        -    },
        -    "required": [
        -      "_meta"
        -    ],
        -    "type": "object"
        -  },
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "_meta": {
        -        "additionalProperties": false,
        -        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        -        "properties": {
        -          "deliverables": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        -                "properties": {
        -                  "docx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "dxf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "expires_at": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  },
        -                  "pdf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "xlsx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "expires_at"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "document_id": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "issued_at": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "rate_limit_remaining": {
        -            "anyOf": [
        -              {
        -                "minimum": 0,
        -                "type": "integer"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "request_id": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "schema_version": {
        -            "const": "1.0.0",
        -            "default": "1.0.0",
        -            "type": "string"
        -          },
        -          "scope_boundary": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        -                "properties": {
        -                  "not_in_scope": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "produced": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "recommended_companions": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "type": "string"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "produced",
        -                  "not_in_scope"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tier": {
        -            "enum": [
        -              "free",
        -              "paid"
        -            ],
        -            "type": "string"
        -          },
        -          "tier_upgrade": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        -                "properties": {
        -                  "available_tiers": {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        -                      "properties": {
        -                        "billing": {
        -                          "enum": [
        -                            "one_off",
        -                            "monthly",
        -                            "annual"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "currency": {
        -                          "enum": [
        -                            "GBP",
        -                            "SGD",
        -                            "EUR",
        -                            "USD",
        -                            "CAD",
        -                            "AUD",
        -                            "NZD",
        -                            "MYR"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "display_name": {
        -                          "type": "string"
        -                        },
        -                        "price_local": {
        -                          "type": "number"
        -                        },
        -                        "tier_slug": {
        -                          "enum": [
        -                            "7_day_pass",
        -                            "solo",
        -                            "studio",
        -                            "practice"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "unlock_summary": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "tier_slug",
        -                        "display_name",
        -                        "price_local",
        -                        "currency",
        -                        "billing",
        -                        "unlock_summary"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "current_tier": {
        -                    "const": "free",
        -                    "default": "free",
        -                    "type": "string"
        -                  },
        -                  "pass_credit": {
        -                    "anyOf": [
        -                      {
        -                        "additionalProperties": false,
        -                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        -                        "properties": {
        -                          "amount_local": {
        -                            "type": "number"
        -                          },
        -                          "applies_to": {
        -                            "const": "solo_first_month",
        -                            "default": "solo_first_month",
        -                            "type": "string"
        -                          },
        -                          "currency": {
        -                            "type": "string"
        -                          },
        -                          "redeemable_until": {
        -                            "type": "string"
        -                          }
        -                        },
        -                        "required": [
        -                          "amount_local",
        -                          "currency",
        -                          "redeemable_until"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "pricing_url": {
        -                    "default": "https://civilquants.com/pricing",
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "available_tiers"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tos_url": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "upgrade_hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "warranty_disclaimer": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          }
        -        },
        -        "required": [
        -          "request_id",
        -          "issued_at",
        -          "tier"
        -        ],
        -        "type": "object"
        -      },
        -      "data": {
        -        "default": null,
        -        "title": "Data"
        -      },
        -      "error": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        -            "properties": {
        -              "code": {
        -                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        -                "enum": [
        -                  "RATE_LIMIT_EXCEEDED",
        -                  "TIER_INSUFFICIENT",
        -                  "INVALID_INPUT",
        -                  "SCHEMA_VERSION_MISMATCH",
        -                  "SCHEMA_INVARIANT_VIOLATION",
        -                  "UPSTREAM_TIMEOUT",
        -                  "BACKEND_FAILURE",
        -                  "IP_BLOCKED",
        -                  "RESOURCE_NOT_FOUND",
        -                  "RENDER_FAILURE",
        -                  "OCR_LOW_CONFIDENCE",
        -                  "MANUAL_REVIEW_REQUIRED",
        -                  "ACCEPTANCE_REQUIRED",
        -                  "INVALID_TOKEN"
        -                ],
        -                "type": "string"
        -              },
        -              "details": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "message": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "recoverable": {
        -                "type": "boolean"
        -              },
        -              "retry_after_seconds": {
        -                "anyOf": [
        -                  {
        -                    "minimum": 0,
        -                    "type": "integer"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              }
        -            },
        -            "required": [
        -              "code",
        -              "message",
        -              "recoverable"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      }
        -    },
        -    "required": [
        -      "_meta"
        -    ],
        -    "type": "object"
        -  }
        -]New value: +[
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "_meta": {
        +        "additionalProperties": false,
        +        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        +        "properties": {
        +          "deliverables": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        +                "properties": {
        +                  "docx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "dxf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "expires_at": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  },
        +                  "pdf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "xlsx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "expires_at"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "document_id": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "issued_at": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "rate_limit_remaining": {
        +            "anyOf": [
        +              {
        +                "minimum": 0,
        +                "type": "integer"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "request_id": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "schema_version": {
        +            "const": "1.0.0",
        +            "default": "1.0.0",
        +            "type": "string"
        +          },
        +          "scope_boundary": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        +                "properties": {
        +                  "not_in_scope": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "produced": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "recommended_companions": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "type": "string"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "produced",
        +                  "not_in_scope"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tier": {
        +            "enum": [
        +              "free",
        +              "paid"
        +            ],
        +            "type": "string"
        +          },
        +          "tier_upgrade": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        +                "properties": {
        +                  "available_tiers": {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        +                      "properties": {
        +                        "billing": {
        +                          "enum": [
        +                            "one_off",
        +                            "monthly",
        +                            "annual"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "currency": {
        +                          "enum": [
        +                            "GBP",
        +                            "SGD",
        +                            "EUR",
        +                            "USD",
        +                            "CAD",
        +                            "AUD",
        +                            "NZD",
        +                            "MYR"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "display_name": {
        +                          "type": "string"
        +                        },
        +                        "price_local": {
        +                          "type": "number"
        +                        },
        +                        "tier_slug": {
        +                          "enum": [
        +                            "7_day_pass",
        +                            "solo",
        +                            "studio",
        +                            "practice"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "unlock_summary": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "tier_slug",
        +                        "display_name",
        +                        "price_local",
        +                        "currency",
        +                        "billing",
        +                        "unlock_summary"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "current_tier": {
        +                    "const": "free",
        +                    "default": "free",
        +                    "type": "string"
        +                  },
        +                  "pass_credit": {
        +                    "anyOf": [
        +                      {
        +                        "additionalProperties": false,
        +                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        +                        "properties": {
        +                          "amount_local": {
        +                            "type": "number"
        +                          },
        +                          "applies_to": {
        +                            "const": "solo_first_month",
        +                            "default": "solo_first_month",
        +                            "type": "string"
        +                          },
        +                          "currency": {
        +                            "type": "string"
        +                          },
        +                          "redeemable_until": {
        +                            "type": "string"
        +                          }
        +                        },
        +                        "required": [
        +                          "amount_local",
        +                          "currency",
        +                          "redeemable_until"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "pricing_url": {
        +                    "default": "https://civilquants.com/pricing",
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "available_tiers"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tos_url": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "upgrade_hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "warranty_disclaimer": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          }
        +        },
        +        "required": [
        +          "request_id",
        +          "issued_at",
        +          "tier"
        +        ],
        +        "type": "object"
        +      },
        +      "data": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Schema § 1.1 — the typed payload returned inside `MCPResponse[ComputeResult]`.\n\nFree-tier responses omit `drawings` (the downloadable CAD artefact\npointers — the paid differentiator); the bridge enforces this. The\n`audit_trail` and the inline `drawing` preview are present on BOTH tiers\n(V1 ALIGN / 60th-fire D + C). `text_summary` is bounded to 2000 chars —\nkeeps the LLM-facing summary token-cheap and forces longer narrative into\nBoQ row descriptions where it belongs. `warnings` is the non-fatal\ngeometry advisory list (both tiers).",
        +            "properties": {
        +              "assembly_slug": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "audit_trail": {
        +                "anyOf": [
        +                  {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.7 — paid-tier audit-trail entry.\n\nOne entry per BoQ row; `boq_row_index` ties to the row position in\n`ComputeResult.boq_rows`. `derivation` is the human-readable formula\nwalk-through; `formula` is the optional formal expression.",
        +                      "properties": {
        +                        "boq_row_index": {
        +                          "minimum": 0,
        +                          "type": "integer"
        +                        },
        +                        "derivation": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "formula": {
        +                          "anyOf": [
        +                            {
        +                              "type": "string"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ],
        +                          "default": null
        +                        },
        +                        "id": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "parameters_referenced": {
        +                          "items": {
        +                            "type": "string"
        +                          },
        +                          "type": "array"
        +                        }
        +                      },
        +                      "required": [
        +                        "id",
        +                        "boq_row_index",
        +                        "derivation"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "boq_rows": {
        +                "items": {
        +                  "additionalProperties": false,
        +                  "description": "Schema § 1.3 — a single bill row in the requested standard's format.\n\n`description` is the non-verbatim functional description per spec § 13.9 /\n§ 15 invariant — NEVER reproduces a standard's verbatim clause text.\n`rate` / `amount` ship null because rates are commodity data the customer\nowns; the engine's job is the measurement, not the pricing.",
        +                  "properties": {
        +                    "amount": {
        +                      "anyOf": [
        +                        {
        +                          "type": "number"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "attribution": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "audit_id": {
        +                      "anyOf": [
        +                        {
        +                          "type": "string"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "description": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "quantity": {
        +                      "minimum": 0,
        +                      "type": "number"
        +                    },
        +                    "rate": {
        +                      "anyOf": [
        +                        {
        +                          "type": "number"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "unit": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "work_section": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    }
        +                  },
        +                  "required": [
        +                    "work_section",
        +                    "description",
        +                    "quantity",
        +                    "unit",
        +                    "attribution"
        +                  ],
        +                  "type": "object"
        +                },
        +                "type": "array"
        +              },
        +              "drawing": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": false,
        +                    "description": "Schema § 1.6a — inline server-rendered SVG preview of the geometry.\n\nThe MCP mirror of the web ``/compute`` response's ``drawing`` field\n(``api.schemas.compute.DrawingRef``): the same on-screen dimensioned\ndrawing both tiers see in the workspace, surfaced on the MCP compute\nresponse so a chat client can render it inline (60th-fire item C). This\nis the on-screen preview — present on BOTH tiers per the free/paid\nboundary; the downloadable CAD artefacts (DXF / dimensioned PDF) remain\nthe paid differentiator via the export tools.\n\nDefined here rather than importing ``DrawingRef`` because the web\n``schemas`` package imports back into this module (``schemas.render``),\nso reusing it would create an import cycle — the MCP wire contract keeps\nits own copy, the same pattern as ``BoQRow`` / ``DrawingReference``.",
        +                    "properties": {
        +                      "entity_count": {
        +                        "minimum": 0,
        +                        "type": "integer"
        +                      },
        +                      "svg_b64": {
        +                        "minLength": 1,
        +                        "type": "string"
        +                      },
        +                      "unit_of_drawing": {
        +                        "const": "m",
        +                        "default": "m",
        +                        "type": "string"
        +                      },
        +                      "viewbox_height": {
        +                        "exclusiveMinimum": 0,
        +                        "type": "number"
        +                      },
        +                      "viewbox_width": {
        +                        "exclusiveMinimum": 0,
        +                        "type": "number"
        +                      },
        +                      "viewbox_x": {
        +                        "type": "number"
        +                      },
        +                      "viewbox_y": {
        +                        "type": "number"
        +                      }
        +                    },
        +                    "required": [
        +                      "svg_b64",
        +                      "viewbox_x",
        +                      "viewbox_y",
        +                      "viewbox_width",
        +                      "viewbox_height",
        +                      "entity_count"
        +                    ],
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "drawings": {
        +                "anyOf": [
        +                  {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.6 — paid-tier drawing artefact pointer.\n\n`url` is an R2-signed URL; expiry is carried in `_meta.deliverables.expires_at`\non the envelope (not duplicated here). `layers` is DXF-only; PDF/SVG\ncallers omit it.",
        +                      "properties": {
        +                        "drawing_type": {
        +                          "enum": [
        +                            "section",
        +                            "plan",
        +                            "elevation",
        +                            "isometric",
        +                            "detail"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "format": {
        +                          "enum": [
        +                            "DXF",
        +                            "PDF",
        +                            "SVG"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "layers": {
        +                          "anyOf": [
        +                            {
        +                              "items": {
        +                                "type": "string"
        +                              },
        +                              "type": "array"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ],
        +                          "default": null
        +                        },
        +                        "scale": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "sheet_size": {
        +                          "enum": [
        +                            "A1",
        +                            "A2",
        +                            "A3",
        +                            "A4"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "url": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "drawing_type",
        +                        "format",
        +                        "url",
        +                        "sheet_size",
        +                        "scale"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "parameters_used": {
        +                "additionalProperties": false,
        +                "description": "Schema § 1.2 — the parameter snapshot the engine actually used.\n\nSplits user-supplied values from engine defaults so customers can see\nwhich numbers came from them and which the engine filled in. Every\ndefaulted parameter SHOULD have a corresponding entry in `assumptions`\n— the bridge layer enforces this when wrapping engine output.",
        +                "properties": {
        +                  "assumptions": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "engine_defaults": {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  "user_supplied": {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  }
        +                },
        +                "type": "object"
        +              },
        +              "standard": {
        +                "enum": [
        +                  "CESMM4",
        +                  "NRM2",
        +                  "SMM7",
        +                  "MMHW"
        +                ],
        +                "type": "string"
        +              },
        +              "text_summary": {
        +                "maxLength": 2000,
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "totals_summary": {
        +                "additionalProperties": false,
        +                "description": "Schema § 1.4 — totals_summary as a typed wrapper around the free-form dict.\n\nWire shape is a flat object (`{\"concrete_m3\": {...}, \"rebar_t\": {...}}`).\nWe model it as `RootModel`-equivalent via `model_config(extra=\"allow\")`\n+ a single `__root__`-style `entries` dict. Pydantic v2 recommends\n`RootModel` for free-form roots; using a wrapper class keeps the import\nsurface uniform with the rest of this module.",
        +                "properties": {
        +                  "entries": {
        +                    "additionalProperties": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.4 — single material/work-class total entry.",
        +                      "properties": {
        +                        "quantity": {
        +                          "minimum": 0,
        +                          "type": "number"
        +                        },
        +                        "unit": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "quantity",
        +                        "unit"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "object"
        +                  }
        +                },
        +                "type": "object"
        +              },
        +              "warnings": {
        +                "items": {
        +                  "additionalProperties": false,
        +                  "description": "Schema § 1.8 — a non-fatal geometry advisory (56th-fire T2).\n\nThe wire projection of the engine's `core.GeometryWarning`. Advisory only:\na warning NEVER changes a measured quantity — it flags geometry that is\nvalid but likely a mistake (e.g. a stale dependent-height default). Present\non BOTH tiers — a correctness/safety signal, not a paid feature.",
        +                  "properties": {
        +                    "affected_params": {
        +                      "items": {
        +                        "type": "string"
        +                      },
        +                      "type": "array"
        +                    },
        +                    "code": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "detail": {
        +                      "additionalProperties": {
        +                        "type": "number"
        +                      },
        +                      "type": "object"
        +                    },
        +                    "message": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "severity": {
        +                      "enum": [
        +                        "info",
        +                        "advisory",
        +                        "caution"
        +                      ],
        +                      "type": "string"
        +                    }
        +                  },
        +                  "required": [
        +                    "code",
        +                    "severity",
        +                    "message"
        +                  ],
        +                  "type": "object"
        +                },
        +                "type": "array"
        +              }
        +            },
        +            "required": [
        +              "assembly_slug",
        +              "standard",
        +              "parameters_used",
        +              "boq_rows",
        +              "totals_summary",
        +              "text_summary"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      },
        +      "error": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        +            "properties": {
        +              "code": {
        +                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        +                "enum": [
        +                  "RATE_LIMIT_EXCEEDED",
        +                  "TIER_INSUFFICIENT",
        +                  "INVALID_INPUT",
        +                  "SCHEMA_VERSION_MISMATCH",
        +                  "SCHEMA_INVARIANT_VIOLATION",
        +                  "UPSTREAM_TIMEOUT",
        +                  "BACKEND_FAILURE",
        +                  "IP_BLOCKED",
        +                  "RESOURCE_NOT_FOUND",
        +                  "RENDER_FAILURE",
        +                  "OCR_LOW_CONFIDENCE",
        +                  "MANUAL_REVIEW_REQUIRED",
        +                  "ACCEPTANCE_REQUIRED",
        +                  "INVALID_TOKEN"
        +                ],
        +                "type": "string"
        +              },
        +              "details": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "message": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "recoverable": {
        +                "type": "boolean"
        +              },
        +              "retry_after_seconds": {
        +                "anyOf": [
        +                  {
        +                    "minimum": 0,
        +                    "type": "integer"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              }
        +            },
        +            "required": [
        +              "code",
        +              "message",
        +              "recoverable"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      }
        +    },
        +    "required": [
        +      "_meta"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "_meta": {
        +        "additionalProperties": false,
        +        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        +        "properties": {
        +          "deliverables": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        +                "properties": {
        +                  "docx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "dxf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "expires_at": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  },
        +                  "pdf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "xlsx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "expires_at"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "document_id": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "issued_at": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "rate_limit_remaining": {
        +            "anyOf": [
        +              {
        +                "minimum": 0,
        +                "type": "integer"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "request_id": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "schema_version": {
        +            "const": "1.0.0",
        +            "default": "1.0.0",
        +            "type": "string"
        +          },
        +          "scope_boundary": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        +                "properties": {
        +                  "not_in_scope": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "produced": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "recommended_companions": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "type": "string"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "produced",
        +                  "not_in_scope"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tier": {
        +            "enum": [
        +              "free",
        +              "paid"
        +            ],
        +            "type": "string"
        +          },
        +          "tier_upgrade": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        +                "properties": {
        +                  "available_tiers": {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        +                      "properties": {
        +                        "billing": {
        +                          "enum": [
        +                            "one_off",
        +                            "monthly",
        +                            "annual"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "currency": {
        +                          "enum": [
        +                            "GBP",
        +                            "SGD",
        +                            "EUR",
        +                            "USD",
        +                            "CAD",
        +                            "AUD",
        +                            "NZD",
        +                            "MYR"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "display_name": {
        +                          "type": "string"
        +                        },
        +                        "price_local": {
        +                          "type": "number"
        +                        },
        +                        "tier_slug": {
        +                          "enum": [
        +                            "7_day_pass",
        +                            "solo",
        +                            "studio",
        +                            "practice"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "unlock_summary": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "tier_slug",
        +                        "display_name",
        +                        "price_local",
        +                        "currency",
        +                        "billing",
        +                        "unlock_summary"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "current_tier": {
        +                    "const": "free",
        +                    "default": "free",
        +                    "type": "string"
        +                  },
        +                  "pass_credit": {
        +                    "anyOf": [
        +                      {
        +                        "additionalProperties": false,
        +                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        +                        "properties": {
        +                          "amount_local": {
        +                            "type": "number"
        +                          },
        +                          "applies_to": {
        +                            "const": "solo_first_month",
        +                            "default": "solo_first_month",
        +                            "type": "string"
        +                          },
        +                          "currency": {
        +                            "type": "string"
        +                          },
        +                          "redeemable_until": {
        +                            "type": "string"
        +                          }
        +                        },
        +                        "required": [
        +                          "amount_local",
        +                          "currency",
        +                          "redeemable_until"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "pricing_url": {
        +                    "default": "https://civilquants.com/pricing",
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "available_tiers"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tos_url": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "upgrade_hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "warranty_disclaimer": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          }
        +        },
        +        "required": [
        +          "request_id",
        +          "issued_at",
        +          "tier"
        +        ],
        +        "type": "object"
        +      },
        +      "data": {
        +        "default": null,
        +        "title": "Data"
        +      },
        +      "error": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        +            "properties": {
        +              "code": {
        +                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        +                "enum": [
        +                  "RATE_LIMIT_EXCEEDED",
        +                  "TIER_INSUFFICIENT",
        +                  "INVALID_INPUT",
        +                  "SCHEMA_VERSION_MISMATCH",
        +                  "SCHEMA_INVARIANT_VIOLATION",
        +                  "UPSTREAM_TIMEOUT",
        +                  "BACKEND_FAILURE",
        +                  "IP_BLOCKED",
        +                  "RESOURCE_NOT_FOUND",
        +                  "RENDER_FAILURE",
        +                  "OCR_LOW_CONFIDENCE",
        +                  "MANUAL_REVIEW_REQUIRED",
        +                  "ACCEPTANCE_REQUIRED",
        +                  "INVALID_TOKEN"
        +                ],
        +                "type": "string"
        +              },
        +              "details": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "message": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "recoverable": {
        +                "type": "boolean"
        +              },
        +              "retry_after_seconds": {
        +                "anyOf": [
        +                  {
        +                    "minimum": 0,
        +                    "type": "integer"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              }
        +            },
        +            "required": [
        +              "code",
        +              "message",
        +              "recoverable"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      }
        +    },
        +    "required": [
        +      "_meta"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedcompute_attenuation_tank1 field changed
      • changedOutput schema / properties / result / anyOf
        Previous value: -[
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "_meta": {
        -        "additionalProperties": false,
        -        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        -        "properties": {
        -          "deliverables": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        -                "properties": {
        -                  "docx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "dxf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "expires_at": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  },
        -                  "pdf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "xlsx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "expires_at"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "document_id": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "issued_at": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "rate_limit_remaining": {
        -            "anyOf": [
        -              {
        -                "minimum": 0,
        -                "type": "integer"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "request_id": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "schema_version": {
        -            "const": "1.0.0",
        -            "default": "1.0.0",
        -            "type": "string"
        -          },
        -          "scope_boundary": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        -                "properties": {
        -                  "not_in_scope": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "produced": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "recommended_companions": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "type": "string"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "produced",
        -                  "not_in_scope"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tier": {
        -            "enum": [
        -              "free",
        -              "paid"
        -            ],
        -            "type": "string"
        -          },
        -          "tier_upgrade": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        -                "properties": {
        -                  "available_tiers": {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        -                      "properties": {
        -                        "billing": {
        -                          "enum": [
        -                            "one_off",
        -                            "monthly",
        -                            "annual"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "currency": {
        -                          "enum": [
        -                            "GBP",
        -                            "SGD",
        -                            "EUR",
        -                            "USD",
        -                            "CAD",
        -                            "AUD",
        -                            "NZD",
        -                            "MYR"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "display_name": {
        -                          "type": "string"
        -                        },
        -                        "price_local": {
        -                          "type": "number"
        -                        },
        -                        "tier_slug": {
        -                          "enum": [
        -                            "7_day_pass",
        -                            "solo",
        -                            "studio",
        -                            "practice"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "unlock_summary": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "tier_slug",
        -                        "display_name",
        -                        "price_local",
        -                        "currency",
        -                        "billing",
        -                        "unlock_summary"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "current_tier": {
        -                    "const": "free",
        -                    "default": "free",
        -                    "type": "string"
        -                  },
        -                  "pass_credit": {
        -                    "anyOf": [
        -                      {
        -                        "additionalProperties": false,
        -                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        -                        "properties": {
        -                          "amount_local": {
        -                            "type": "number"
        -                          },
        -                          "applies_to": {
        -                            "const": "solo_first_month",
        -                            "default": "solo_first_month",
        -                            "type": "string"
        -                          },
        -                          "currency": {
        -                            "type": "string"
        -                          },
        -                          "redeemable_until": {
        -                            "type": "string"
        -                          }
        -                        },
        -                        "required": [
        -                          "amount_local",
        -                          "currency",
        -                          "redeemable_until"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "pricing_url": {
        -                    "default": "https://civilquants.com/pricing",
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "available_tiers"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tos_url": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "upgrade_hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "warranty_disclaimer": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          }
        -        },
        -        "required": [
        -          "request_id",
        -          "issued_at",
        -          "tier"
        -        ],
        -        "type": "object"
        -      },
        -      "data": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Schema § 1.1 — the typed payload returned inside `MCPResponse[ComputeResult]`.\n\nFree-tier responses omit `drawings` (the downloadable CAD artefact\npointers — the paid differentiator); the bridge enforces this. The\n`audit_trail` and the inline `drawing` preview are present on BOTH tiers\n(V1 ALIGN / 60th-fire D + C). `text_summary` is bounded to 2000 chars —\nkeeps the LLM-facing summary token-cheap and forces longer narrative into\nBoQ row descriptions where it belongs. `warnings` is the non-fatal\ngeometry advisory list (both tiers).",
        -            "properties": {
        -              "assembly_slug": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "audit_trail": {
        -                "anyOf": [
        -                  {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.7 — paid-tier audit-trail entry.\n\nOne entry per BoQ row; `boq_row_index` ties to the row position in\n`ComputeResult.boq_rows`. `derivation` is the human-readable formula\nwalk-through; `formula` is the optional formal expression.",
        -                      "properties": {
        -                        "boq_row_index": {
        -                          "minimum": 0,
        -                          "type": "integer"
        -                        },
        -                        "derivation": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "formula": {
        -                          "anyOf": [
        -                            {
        -                              "type": "string"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ],
        -                          "default": null
        -                        },
        -                        "id": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "parameters_referenced": {
        -                          "items": {
        -                            "type": "string"
        -                          },
        -                          "type": "array"
        -                        }
        -                      },
        -                      "required": [
        -                        "id",
        -                        "boq_row_index",
        -                        "derivation"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "boq_rows": {
        -                "items": {
        -                  "additionalProperties": false,
        -                  "description": "Schema § 1.3 — a single bill row in the requested standard's format.\n\n`description` is the non-verbatim functional description per spec § 13.9 /\n§ 15 invariant — NEVER reproduces a standard's verbatim clause text.\n`rate` / `amount` ship null because rates are commodity data the customer\nowns; the engine's job is the measurement, not the pricing.",
        -                  "properties": {
        -                    "amount": {
        -                      "anyOf": [
        -                        {
        -                          "type": "number"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "attribution": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "audit_id": {
        -                      "anyOf": [
        -                        {
        -                          "type": "string"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "description": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "quantity": {
        -                      "minimum": 0,
        -                      "type": "number"
        -                    },
        -                    "rate": {
        -                      "anyOf": [
        -                        {
        -                          "type": "number"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "unit": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "work_section": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    }
        -                  },
        -                  "required": [
        -                    "work_section",
        -                    "description",
        -                    "quantity",
        -                    "unit",
        -                    "attribution"
        -                  ],
        -                  "type": "object"
        -                },
        -                "type": "array"
        -              },
        -              "drawing": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": false,
        -                    "description": "Schema § 1.6a — inline server-rendered SVG preview of the geometry.\n\nThe MCP mirror of the web ``/compute`` response's ``drawing`` field\n(``api.schemas.compute.DrawingRef``): the same on-screen dimensioned\ndrawing both tiers see in the workspace, surfaced on the MCP compute\nresponse so a chat client can render it inline (60th-fire item C). This\nis the on-screen preview — present on BOTH tiers per the free/paid\nboundary; the downloadable CAD artefacts (DXF / dimensioned PDF) remain\nthe paid differentiator via the export tools.\n\nDefined here rather than importing ``DrawingRef`` because the web\n``schemas`` package imports back into this module (``schemas.render``),\nso reusing it would create an import cycle — the MCP wire contract keeps\nits own copy, the same pattern as ``BoQRow`` / ``DrawingReference``.",
        -                    "properties": {
        -                      "entity_count": {
        -                        "minimum": 0,
        -                        "type": "integer"
        -                      },
        -                      "svg_b64": {
        -                        "minLength": 1,
        -                        "type": "string"
        -                      },
        -                      "unit_of_drawing": {
        -                        "const": "m",
        -                        "default": "m",
        -                        "type": "string"
        -                      },
        -                      "viewbox_height": {
        -                        "exclusiveMinimum": 0,
        -                        "type": "number"
        -                      },
        -                      "viewbox_width": {
        -                        "exclusiveMinimum": 0,
        -                        "type": "number"
        -                      },
        -                      "viewbox_x": {
        -                        "type": "number"
        -                      },
        -                      "viewbox_y": {
        -                        "type": "number"
        -                      }
        -                    },
        -                    "required": [
        -                      "svg_b64",
        -                      "viewbox_x",
        -                      "viewbox_y",
        -                      "viewbox_width",
        -                      "viewbox_height",
        -                      "entity_count"
        -                    ],
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "drawings": {
        -                "anyOf": [
        -                  {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.6 — paid-tier drawing artefact pointer.\n\n`url` is an R2-signed URL; expiry is carried in `_meta.deliverables.expires_at`\non the envelope (not duplicated here). `layers` is DXF-only; PDF/SVG\ncallers omit it.",
        -                      "properties": {
        -                        "drawing_type": {
        -                          "enum": [
        -                            "section",
        -                            "plan",
        -                            "elevation",
        -                            "isometric",
        -                            "detail"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "format": {
        -                          "enum": [
        -                            "DXF",
        -                            "PDF",
        -                            "SVG"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "layers": {
        -                          "anyOf": [
        -                            {
        -                              "items": {
        -                                "type": "string"
        -                              },
        -                              "type": "array"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ],
        -                          "default": null
        -                        },
        -                        "scale": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "sheet_size": {
        -                          "enum": [
        -                            "A1",
        -                            "A2",
        -                            "A3",
        -                            "A4"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "url": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "drawing_type",
        -                        "format",
        -                        "url",
        -                        "sheet_size",
        -                        "scale"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "parameters_used": {
        -                "additionalProperties": false,
        -                "description": "Schema § 1.2 — the parameter snapshot the engine actually used.\n\nSplits user-supplied values from engine defaults so customers can see\nwhich numbers came from them and which the engine filled in. Every\ndefaulted parameter SHOULD have a corresponding entry in `assumptions`\n— the bridge layer enforces this when wrapping engine output.",
        -                "properties": {
        -                  "assumptions": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "engine_defaults": {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  "resolved_from_description": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "additionalProperties": false,
        -                          "description": "Schema § 1.2 — a parameter resolved by the forgiving-input layer.\n\nPopulated by the Track B-Forgiving Haiku-4.5 resolution pass; until that\nlayer lands, instances are constructed only by tests. `source` distinguishes\nthe resolution path so customers can audit which fields were inferred.",
        -                          "properties": {
        -                            "confidence": {
        -                              "anyOf": [
        -                                {
        -                                  "enum": [
        -                                    "high",
        -                                    "medium",
        -                                    "low"
        -                                  ],
        -                                  "type": "string"
        -                                },
        -                                {
        -                                  "type": "null"
        -                                }
        -                              ],
        -                              "default": null
        -                            },
        -                            "field_name": {
        -                              "minLength": 1,
        -                              "type": "string"
        -                            },
        -                            "resolved_value": {},
        -                            "source": {
        -                              "enum": [
        -                                "description_field",
        -                                "haiku_resolution",
        -                                "engine_default"
        -                              ],
        -                              "type": "string"
        -                            }
        -                          },
        -                          "required": [
        -                            "field_name",
        -                            "resolved_value",
        -                            "source"
        -                          ],
        -                          "type": "object"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "user_supplied": {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  }
        -                },
        -                "type": "object"
        -              },
        -              "standard": {
        -                "enum": [
        -                  "CESMM4",
        -                  "NRM2",
        -                  "SMM7",
        -                  "MMHW"
        -                ],
        -                "type": "string"
        -              },
        -              "text_summary": {
        -                "maxLength": 2000,
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "totals_summary": {
        -                "additionalProperties": false,
        -                "description": "Schema § 1.4 — totals_summary as a typed wrapper around the free-form dict.\n\nWire shape is a flat object (`{\"concrete_m3\": {...}, \"rebar_t\": {...}}`).\nWe model it as `RootModel`-equivalent via `model_config(extra=\"allow\")`\n+ a single `__root__`-style `entries` dict. Pydantic v2 recommends\n`RootModel` for free-form roots; using a wrapper class keeps the import\nsurface uniform with the rest of this module.",
        -                "properties": {
        -                  "entries": {
        -                    "additionalProperties": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.4 — single material/work-class total entry.",
        -                      "properties": {
        -                        "quantity": {
        -                          "minimum": 0,
        -                          "type": "number"
        -                        },
        -                        "unit": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "quantity",
        -                        "unit"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "object"
        -                  }
        -                },
        -                "type": "object"
        -              },
        -              "warnings": {
        -                "items": {
        -                  "additionalProperties": false,
        -                  "description": "Schema § 1.8 — a non-fatal geometry advisory (56th-fire T2).\n\nThe wire projection of the engine's `core.GeometryWarning`. Advisory only:\na warning NEVER changes a measured quantity — it flags geometry that is\nvalid but likely a mistake (e.g. a stale dependent-height default). Present\non BOTH tiers — a correctness/safety signal, not a paid feature.",
        -                  "properties": {
        -                    "affected_params": {
        -                      "items": {
        -                        "type": "string"
        -                      },
        -                      "type": "array"
        -                    },
        -                    "code": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "detail": {
        -                      "additionalProperties": {
        -                        "type": "number"
        -                      },
        -                      "type": "object"
        -                    },
        -                    "message": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "severity": {
        -                      "enum": [
        -                        "info",
        -                        "advisory",
        -                        "caution"
        -                      ],
        -                      "type": "string"
        -                    }
        -                  },
        -                  "required": [
        -                    "code",
        -                    "severity",
        -                    "message"
        -                  ],
        -                  "type": "object"
        -                },
        -                "type": "array"
        -              }
        -            },
        -            "required": [
        -              "assembly_slug",
        -              "standard",
        -              "parameters_used",
        -              "boq_rows",
        -              "totals_summary",
        -              "text_summary"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      },
        -      "error": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        -            "properties": {
        -              "code": {
        -                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        -                "enum": [
        -                  "RATE_LIMIT_EXCEEDED",
        -                  "TIER_INSUFFICIENT",
        -                  "INVALID_INPUT",
        -                  "SCHEMA_VERSION_MISMATCH",
        -                  "SCHEMA_INVARIANT_VIOLATION",
        -                  "UPSTREAM_TIMEOUT",
        -                  "BACKEND_FAILURE",
        -                  "IP_BLOCKED",
        -                  "RESOURCE_NOT_FOUND",
        -                  "RENDER_FAILURE",
        -                  "OCR_LOW_CONFIDENCE",
        -                  "MANUAL_REVIEW_REQUIRED",
        -                  "ACCEPTANCE_REQUIRED",
        -                  "INVALID_TOKEN"
        -                ],
        -                "type": "string"
        -              },
        -              "details": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "message": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "recoverable": {
        -                "type": "boolean"
        -              },
        -              "retry_after_seconds": {
        -                "anyOf": [
        -                  {
        -                    "minimum": 0,
        -                    "type": "integer"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              }
        -            },
        -            "required": [
        -              "code",
        -              "message",
        -              "recoverable"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      }
        -    },
        -    "required": [
        -      "_meta"
        -    ],
        -    "type": "object"
        -  },
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "_meta": {
        -        "additionalProperties": false,
        -        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        -        "properties": {
        -          "deliverables": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        -                "properties": {
        -                  "docx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "dxf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "expires_at": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  },
        -                  "pdf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "xlsx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "expires_at"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "document_id": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "issued_at": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "rate_limit_remaining": {
        -            "anyOf": [
        -              {
        -                "minimum": 0,
        -                "type": "integer"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "request_id": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "schema_version": {
        -            "const": "1.0.0",
        -            "default": "1.0.0",
        -            "type": "string"
        -          },
        -          "scope_boundary": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        -                "properties": {
        -                  "not_in_scope": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "produced": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "recommended_companions": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "type": "string"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "produced",
        -                  "not_in_scope"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tier": {
        -            "enum": [
        -              "free",
        -              "paid"
        -            ],
        -            "type": "string"
        -          },
        -          "tier_upgrade": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        -                "properties": {
        -                  "available_tiers": {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        -                      "properties": {
        -                        "billing": {
        -                          "enum": [
        -                            "one_off",
        -                            "monthly",
        -                            "annual"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "currency": {
        -                          "enum": [
        -                            "GBP",
        -                            "SGD",
        -                            "EUR",
        -                            "USD",
        -                            "CAD",
        -                            "AUD",
        -                            "NZD",
        -                            "MYR"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "display_name": {
        -                          "type": "string"
        -                        },
        -                        "price_local": {
        -                          "type": "number"
        -                        },
        -                        "tier_slug": {
        -                          "enum": [
        -                            "7_day_pass",
        -                            "solo",
        -                            "studio",
        -                            "practice"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "unlock_summary": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "tier_slug",
        -                        "display_name",
        -                        "price_local",
        -                        "currency",
        -                        "billing",
        -                        "unlock_summary"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "current_tier": {
        -                    "const": "free",
        -                    "default": "free",
        -                    "type": "string"
        -                  },
        -                  "pass_credit": {
        -                    "anyOf": [
        -                      {
        -                        "additionalProperties": false,
        -                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        -                        "properties": {
        -                          "amount_local": {
        -                            "type": "number"
        -                          },
        -                          "applies_to": {
        -                            "const": "solo_first_month",
        -                            "default": "solo_first_month",
        -                            "type": "string"
        -                          },
        -                          "currency": {
        -                            "type": "string"
        -                          },
        -                          "redeemable_until": {
        -                            "type": "string"
        -                          }
        -                        },
        -                        "required": [
        -                          "amount_local",
        -                          "currency",
        -                          "redeemable_until"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "pricing_url": {
        -                    "default": "https://civilquants.com/pricing",
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "available_tiers"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tos_url": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "upgrade_hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "warranty_disclaimer": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          }
        -        },
        -        "required": [
        -          "request_id",
        -          "issued_at",
        -          "tier"
        -        ],
        -        "type": "object"
        -      },
        -      "data": {
        -        "default": null,
        -        "title": "Data"
        -      },
        -      "error": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        -            "properties": {
        -              "code": {
        -                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        -                "enum": [
        -                  "RATE_LIMIT_EXCEEDED",
        -                  "TIER_INSUFFICIENT",
        -                  "INVALID_INPUT",
        -                  "SCHEMA_VERSION_MISMATCH",
        -                  "SCHEMA_INVARIANT_VIOLATION",
        -                  "UPSTREAM_TIMEOUT",
        -                  "BACKEND_FAILURE",
        -                  "IP_BLOCKED",
        -                  "RESOURCE_NOT_FOUND",
        -                  "RENDER_FAILURE",
        -                  "OCR_LOW_CONFIDENCE",
        -                  "MANUAL_REVIEW_REQUIRED",
        -                  "ACCEPTANCE_REQUIRED",
        -                  "INVALID_TOKEN"
        -                ],
        -                "type": "string"
        -              },
        -              "details": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "message": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "recoverable": {
        -                "type": "boolean"
        -              },
        -              "retry_after_seconds": {
        -                "anyOf": [
        -                  {
        -                    "minimum": 0,
        -                    "type": "integer"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              }
        -            },
        -            "required": [
        -              "code",
        -              "message",
        -              "recoverable"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      }
        -    },
        -    "required": [
        -      "_meta"
        -    ],
        -    "type": "object"
        -  }
        -]New value: +[
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "_meta": {
        +        "additionalProperties": false,
        +        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        +        "properties": {
        +          "deliverables": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        +                "properties": {
        +                  "docx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "dxf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "expires_at": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  },
        +                  "pdf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "xlsx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "expires_at"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "document_id": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "issued_at": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "rate_limit_remaining": {
        +            "anyOf": [
        +              {
        +                "minimum": 0,
        +                "type": "integer"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "request_id": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "schema_version": {
        +            "const": "1.0.0",
        +            "default": "1.0.0",
        +            "type": "string"
        +          },
        +          "scope_boundary": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        +                "properties": {
        +                  "not_in_scope": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "produced": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "recommended_companions": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "type": "string"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "produced",
        +                  "not_in_scope"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tier": {
        +            "enum": [
        +              "free",
        +              "paid"
        +            ],
        +            "type": "string"
        +          },
        +          "tier_upgrade": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        +                "properties": {
        +                  "available_tiers": {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        +                      "properties": {
        +                        "billing": {
        +                          "enum": [
        +                            "one_off",
        +                            "monthly",
        +                            "annual"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "currency": {
        +                          "enum": [
        +                            "GBP",
        +                            "SGD",
        +                            "EUR",
        +                            "USD",
        +                            "CAD",
        +                            "AUD",
        +                            "NZD",
        +                            "MYR"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "display_name": {
        +                          "type": "string"
        +                        },
        +                        "price_local": {
        +                          "type": "number"
        +                        },
        +                        "tier_slug": {
        +                          "enum": [
        +                            "7_day_pass",
        +                            "solo",
        +                            "studio",
        +                            "practice"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "unlock_summary": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "tier_slug",
        +                        "display_name",
        +                        "price_local",
        +                        "currency",
        +                        "billing",
        +                        "unlock_summary"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "current_tier": {
        +                    "const": "free",
        +                    "default": "free",
        +                    "type": "string"
        +                  },
        +                  "pass_credit": {
        +                    "anyOf": [
        +                      {
        +                        "additionalProperties": false,
        +                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        +                        "properties": {
        +                          "amount_local": {
        +                            "type": "number"
        +                          },
        +                          "applies_to": {
        +                            "const": "solo_first_month",
        +                            "default": "solo_first_month",
        +                            "type": "string"
        +                          },
        +                          "currency": {
        +                            "type": "string"
        +                          },
        +                          "redeemable_until": {
        +                            "type": "string"
        +                          }
        +                        },
        +                        "required": [
        +                          "amount_local",
        +                          "currency",
        +                          "redeemable_until"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "pricing_url": {
        +                    "default": "https://civilquants.com/pricing",
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "available_tiers"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tos_url": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "upgrade_hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "warranty_disclaimer": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          }
        +        },
        +        "required": [
        +          "request_id",
        +          "issued_at",
        +          "tier"
        +        ],
        +        "type": "object"
        +      },
        +      "data": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Schema § 1.1 — the typed payload returned inside `MCPResponse[ComputeResult]`.\n\nFree-tier responses omit `drawings` (the downloadable CAD artefact\npointers — the paid differentiator); the bridge enforces this. The\n`audit_trail` and the inline `drawing` preview are present on BOTH tiers\n(V1 ALIGN / 60th-fire D + C). `text_summary` is bounded to 2000 chars —\nkeeps the LLM-facing summary token-cheap and forces longer narrative into\nBoQ row descriptions where it belongs. `warnings` is the non-fatal\ngeometry advisory list (both tiers).",
        +            "properties": {
        +              "assembly_slug": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "audit_trail": {
        +                "anyOf": [
        +                  {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.7 — paid-tier audit-trail entry.\n\nOne entry per BoQ row; `boq_row_index` ties to the row position in\n`ComputeResult.boq_rows`. `derivation` is the human-readable formula\nwalk-through; `formula` is the optional formal expression.",
        +                      "properties": {
        +                        "boq_row_index": {
        +                          "minimum": 0,
        +                          "type": "integer"
        +                        },
        +                        "derivation": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "formula": {
        +                          "anyOf": [
        +                            {
        +                              "type": "string"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ],
        +                          "default": null
        +                        },
        +                        "id": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "parameters_referenced": {
        +                          "items": {
        +                            "type": "string"
        +                          },
        +                          "type": "array"
        +                        }
        +                      },
        +                      "required": [
        +                        "id",
        +                        "boq_row_index",
        +                        "derivation"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "boq_rows": {
        +                "items": {
        +                  "additionalProperties": false,
        +                  "description": "Schema § 1.3 — a single bill row in the requested standard's format.\n\n`description` is the non-verbatim functional description per spec § 13.9 /\n§ 15 invariant — NEVER reproduces a standard's verbatim clause text.\n`rate` / `amount` ship null because rates are commodity data the customer\nowns; the engine's job is the measurement, not the pricing.",
        +                  "properties": {
        +                    "amount": {
        +                      "anyOf": [
        +                        {
        +                          "type": "number"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "attribution": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "audit_id": {
        +                      "anyOf": [
        +                        {
        +                          "type": "string"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "description": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "quantity": {
        +                      "minimum": 0,
        +                      "type": "number"
        +                    },
        +                    "rate": {
        +                      "anyOf": [
        +                        {
        +                          "type": "number"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "unit": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "work_section": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    }
        +                  },
        +                  "required": [
        +                    "work_section",
        +                    "description",
        +                    "quantity",
        +                    "unit",
        +                    "attribution"
        +                  ],
        +                  "type": "object"
        +                },
        +                "type": "array"
        +              },
        +              "drawing": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": false,
        +                    "description": "Schema § 1.6a — inline server-rendered SVG preview of the geometry.\n\nThe MCP mirror of the web ``/compute`` response's ``drawing`` field\n(``api.schemas.compute.DrawingRef``): the same on-screen dimensioned\ndrawing both tiers see in the workspace, surfaced on the MCP compute\nresponse so a chat client can render it inline (60th-fire item C). This\nis the on-screen preview — present on BOTH tiers per the free/paid\nboundary; the downloadable CAD artefacts (DXF / dimensioned PDF) remain\nthe paid differentiator via the export tools.\n\nDefined here rather than importing ``DrawingRef`` because the web\n``schemas`` package imports back into this module (``schemas.render``),\nso reusing it would create an import cycle — the MCP wire contract keeps\nits own copy, the same pattern as ``BoQRow`` / ``DrawingReference``.",
        +                    "properties": {
        +                      "entity_count": {
        +                        "minimum": 0,
        +                        "type": "integer"
        +                      },
        +                      "svg_b64": {
        +                        "minLength": 1,
        +                        "type": "string"
        +                      },
        +                      "unit_of_drawing": {
        +                        "const": "m",
        +                        "default": "m",
        +                        "type": "string"
        +                      },
        +                      "viewbox_height": {
        +                        "exclusiveMinimum": 0,
        +                        "type": "number"
        +                      },
        +                      "viewbox_width": {
        +                        "exclusiveMinimum": 0,
        +                        "type": "number"
        +                      },
        +                      "viewbox_x": {
        +                        "type": "number"
        +                      },
        +                      "viewbox_y": {
        +                        "type": "number"
        +                      }
        +                    },
        +                    "required": [
        +                      "svg_b64",
        +                      "viewbox_x",
        +                      "viewbox_y",
        +                      "viewbox_width",
        +                      "viewbox_height",
        +                      "entity_count"
        +                    ],
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "drawings": {
        +                "anyOf": [
        +                  {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.6 — paid-tier drawing artefact pointer.\n\n`url` is an R2-signed URL; expiry is carried in `_meta.deliverables.expires_at`\non the envelope (not duplicated here). `layers` is DXF-only; PDF/SVG\ncallers omit it.",
        +                      "properties": {
        +                        "drawing_type": {
        +                          "enum": [
        +                            "section",
        +                            "plan",
        +                            "elevation",
        +                            "isometric",
        +                            "detail"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "format": {
        +                          "enum": [
        +                            "DXF",
        +                            "PDF",
        +                            "SVG"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "layers": {
        +                          "anyOf": [
        +                            {
        +                              "items": {
        +                                "type": "string"
        +                              },
        +                              "type": "array"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ],
        +                          "default": null
        +                        },
        +                        "scale": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "sheet_size": {
        +                          "enum": [
        +                            "A1",
        +                            "A2",
        +                            "A3",
        +                            "A4"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "url": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "drawing_type",
        +                        "format",
        +                        "url",
        +                        "sheet_size",
        +                        "scale"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "parameters_used": {
        +                "additionalProperties": false,
        +                "description": "Schema § 1.2 — the parameter snapshot the engine actually used.\n\nSplits user-supplied values from engine defaults so customers can see\nwhich numbers came from them and which the engine filled in. Every\ndefaulted parameter SHOULD have a corresponding entry in `assumptions`\n— the bridge layer enforces this when wrapping engine output.",
        +                "properties": {
        +                  "assumptions": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "engine_defaults": {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  "user_supplied": {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  }
        +                },
        +                "type": "object"
        +              },
        +              "standard": {
        +                "enum": [
        +                  "CESMM4",
        +                  "NRM2",
        +                  "SMM7",
        +                  "MMHW"
        +                ],
        +                "type": "string"
        +              },
        +              "text_summary": {
        +                "maxLength": 2000,
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "totals_summary": {
        +                "additionalProperties": false,
        +                "description": "Schema § 1.4 — totals_summary as a typed wrapper around the free-form dict.\n\nWire shape is a flat object (`{\"concrete_m3\": {...}, \"rebar_t\": {...}}`).\nWe model it as `RootModel`-equivalent via `model_config(extra=\"allow\")`\n+ a single `__root__`-style `entries` dict. Pydantic v2 recommends\n`RootModel` for free-form roots; using a wrapper class keeps the import\nsurface uniform with the rest of this module.",
        +                "properties": {
        +                  "entries": {
        +                    "additionalProperties": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.4 — single material/work-class total entry.",
        +                      "properties": {
        +                        "quantity": {
        +                          "minimum": 0,
        +                          "type": "number"
        +                        },
        +                        "unit": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "quantity",
        +                        "unit"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "object"
        +                  }
        +                },
        +                "type": "object"
        +              },
        +              "warnings": {
        +                "items": {
        +                  "additionalProperties": false,
        +                  "description": "Schema § 1.8 — a non-fatal geometry advisory (56th-fire T2).\n\nThe wire projection of the engine's `core.GeometryWarning`. Advisory only:\na warning NEVER changes a measured quantity — it flags geometry that is\nvalid but likely a mistake (e.g. a stale dependent-height default). Present\non BOTH tiers — a correctness/safety signal, not a paid feature.",
        +                  "properties": {
        +                    "affected_params": {
        +                      "items": {
        +                        "type": "string"
        +                      },
        +                      "type": "array"
        +                    },
        +                    "code": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "detail": {
        +                      "additionalProperties": {
        +                        "type": "number"
        +                      },
        +                      "type": "object"
        +                    },
        +                    "message": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "severity": {
        +                      "enum": [
        +                        "info",
        +                        "advisory",
        +                        "caution"
        +                      ],
        +                      "type": "string"
        +                    }
        +                  },
        +                  "required": [
        +                    "code",
        +                    "severity",
        +                    "message"
        +                  ],
        +                  "type": "object"
        +                },
        +                "type": "array"
        +              }
        +            },
        +            "required": [
        +              "assembly_slug",
        +              "standard",
        +              "parameters_used",
        +              "boq_rows",
        +              "totals_summary",
        +              "text_summary"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      },
        +      "error": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        +            "properties": {
        +              "code": {
        +                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        +                "enum": [
        +                  "RATE_LIMIT_EXCEEDED",
        +                  "TIER_INSUFFICIENT",
        +                  "INVALID_INPUT",
        +                  "SCHEMA_VERSION_MISMATCH",
        +                  "SCHEMA_INVARIANT_VIOLATION",
        +                  "UPSTREAM_TIMEOUT",
        +                  "BACKEND_FAILURE",
        +                  "IP_BLOCKED",
        +                  "RESOURCE_NOT_FOUND",
        +                  "RENDER_FAILURE",
        +                  "OCR_LOW_CONFIDENCE",
        +                  "MANUAL_REVIEW_REQUIRED",
        +                  "ACCEPTANCE_REQUIRED",
        +                  "INVALID_TOKEN"
        +                ],
        +                "type": "string"
        +              },
        +              "details": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "message": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "recoverable": {
        +                "type": "boolean"
        +              },
        +              "retry_after_seconds": {
        +                "anyOf": [
        +                  {
        +                    "minimum": 0,
        +                    "type": "integer"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              }
        +            },
        +            "required": [
        +              "code",
        +              "message",
        +              "recoverable"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      }
        +    },
        +    "required": [
        +      "_meta"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "_meta": {
        +        "additionalProperties": false,
        +        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        +        "properties": {
        +          "deliverables": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        +                "properties": {
        +                  "docx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "dxf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "expires_at": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  },
        +                  "pdf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "xlsx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "expires_at"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "document_id": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "issued_at": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "rate_limit_remaining": {
        +            "anyOf": [
        +              {
        +                "minimum": 0,
        +                "type": "integer"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "request_id": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "schema_version": {
        +            "const": "1.0.0",
        +            "default": "1.0.0",
        +            "type": "string"
        +          },
        +          "scope_boundary": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        +                "properties": {
        +                  "not_in_scope": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "produced": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "recommended_companions": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "type": "string"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "produced",
        +                  "not_in_scope"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tier": {
        +            "enum": [
        +              "free",
        +              "paid"
        +            ],
        +            "type": "string"
        +          },
        +          "tier_upgrade": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        +                "properties": {
        +                  "available_tiers": {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        +                      "properties": {
        +                        "billing": {
        +                          "enum": [
        +                            "one_off",
        +                            "monthly",
        +                            "annual"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "currency": {
        +                          "enum": [
        +                            "GBP",
        +                            "SGD",
        +                            "EUR",
        +                            "USD",
        +                            "CAD",
        +                            "AUD",
        +                            "NZD",
        +                            "MYR"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "display_name": {
        +                          "type": "string"
        +                        },
        +                        "price_local": {
        +                          "type": "number"
        +                        },
        +                        "tier_slug": {
        +                          "enum": [
        +                            "7_day_pass",
        +                            "solo",
        +                            "studio",
        +                            "practice"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "unlock_summary": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "tier_slug",
        +                        "display_name",
        +                        "price_local",
        +                        "currency",
        +                        "billing",
        +                        "unlock_summary"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "current_tier": {
        +                    "const": "free",
        +                    "default": "free",
        +                    "type": "string"
        +                  },
        +                  "pass_credit": {
        +                    "anyOf": [
        +                      {
        +                        "additionalProperties": false,
        +                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        +                        "properties": {
        +                          "amount_local": {
        +                            "type": "number"
        +                          },
        +                          "applies_to": {
        +                            "const": "solo_first_month",
        +                            "default": "solo_first_month",
        +                            "type": "string"
        +                          },
        +                          "currency": {
        +                            "type": "string"
        +                          },
        +                          "redeemable_until": {
        +                            "type": "string"
        +                          }
        +                        },
        +                        "required": [
        +                          "amount_local",
        +                          "currency",
        +                          "redeemable_until"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "pricing_url": {
        +                    "default": "https://civilquants.com/pricing",
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "available_tiers"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tos_url": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "upgrade_hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "warranty_disclaimer": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          }
        +        },
        +        "required": [
        +          "request_id",
        +          "issued_at",
        +          "tier"
        +        ],
        +        "type": "object"
        +      },
        +      "data": {
        +        "default": null,
        +        "title": "Data"
        +      },
        +      "error": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        +            "properties": {
        +              "code": {
        +                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        +                "enum": [
        +                  "RATE_LIMIT_EXCEEDED",
        +                  "TIER_INSUFFICIENT",
        +                  "INVALID_INPUT",
        +                  "SCHEMA_VERSION_MISMATCH",
        +                  "SCHEMA_INVARIANT_VIOLATION",
        +                  "UPSTREAM_TIMEOUT",
        +                  "BACKEND_FAILURE",
        +                  "IP_BLOCKED",
        +                  "RESOURCE_NOT_FOUND",
        +                  "RENDER_FAILURE",
        +                  "OCR_LOW_CONFIDENCE",
        +                  "MANUAL_REVIEW_REQUIRED",
        +                  "ACCEPTANCE_REQUIRED",
        +                  "INVALID_TOKEN"
        +                ],
        +                "type": "string"
        +              },
        +              "details": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "message": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "recoverable": {
        +                "type": "boolean"
        +              },
        +              "retry_after_seconds": {
        +                "anyOf": [
        +                  {
        +                    "minimum": 0,
        +                    "type": "integer"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              }
        +            },
        +            "required": [
        +              "code",
        +              "message",
        +              "recoverable"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      }
        +    },
        +    "required": [
        +      "_meta"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedcompute_bored_pile_wall1 field changed
      • changedOutput schema / properties / result / anyOf
        Previous value: -[
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "_meta": {
        -        "additionalProperties": false,
        -        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        -        "properties": {
        -          "deliverables": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        -                "properties": {
        -                  "docx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "dxf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "expires_at": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  },
        -                  "pdf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "xlsx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "expires_at"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "document_id": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "issued_at": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "rate_limit_remaining": {
        -            "anyOf": [
        -              {
        -                "minimum": 0,
        -                "type": "integer"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "request_id": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "schema_version": {
        -            "const": "1.0.0",
        -            "default": "1.0.0",
        -            "type": "string"
        -          },
        -          "scope_boundary": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        -                "properties": {
        -                  "not_in_scope": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "produced": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "recommended_companions": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "type": "string"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "produced",
        -                  "not_in_scope"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tier": {
        -            "enum": [
        -              "free",
        -              "paid"
        -            ],
        -            "type": "string"
        -          },
        -          "tier_upgrade": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        -                "properties": {
        -                  "available_tiers": {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        -                      "properties": {
        -                        "billing": {
        -                          "enum": [
        -                            "one_off",
        -                            "monthly",
        -                            "annual"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "currency": {
        -                          "enum": [
        -                            "GBP",
        -                            "SGD",
        -                            "EUR",
        -                            "USD",
        -                            "CAD",
        -                            "AUD",
        -                            "NZD",
        -                            "MYR"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "display_name": {
        -                          "type": "string"
        -                        },
        -                        "price_local": {
        -                          "type": "number"
        -                        },
        -                        "tier_slug": {
        -                          "enum": [
        -                            "7_day_pass",
        -                            "solo",
        -                            "studio",
        -                            "practice"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "unlock_summary": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "tier_slug",
        -                        "display_name",
        -                        "price_local",
        -                        "currency",
        -                        "billing",
        -                        "unlock_summary"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "current_tier": {
        -                    "const": "free",
        -                    "default": "free",
        -                    "type": "string"
        -                  },
        -                  "pass_credit": {
        -                    "anyOf": [
        -                      {
        -                        "additionalProperties": false,
        -                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        -                        "properties": {
        -                          "amount_local": {
        -                            "type": "number"
        -                          },
        -                          "applies_to": {
        -                            "const": "solo_first_month",
        -                            "default": "solo_first_month",
        -                            "type": "string"
        -                          },
        -                          "currency": {
        -                            "type": "string"
        -                          },
        -                          "redeemable_until": {
        -                            "type": "string"
        -                          }
        -                        },
        -                        "required": [
        -                          "amount_local",
        -                          "currency",
        -                          "redeemable_until"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "pricing_url": {
        -                    "default": "https://civilquants.com/pricing",
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "available_tiers"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tos_url": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "upgrade_hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "warranty_disclaimer": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          }
        -        },
        -        "required": [
        -          "request_id",
        -          "issued_at",
        -          "tier"
        -        ],
        -        "type": "object"
        -      },
        -      "data": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Schema § 1.1 — the typed payload returned inside `MCPResponse[ComputeResult]`.\n\nFree-tier responses omit `drawings` (the downloadable CAD artefact\npointers — the paid differentiator); the bridge enforces this. The\n`audit_trail` and the inline `drawing` preview are present on BOTH tiers\n(V1 ALIGN / 60th-fire D + C). `text_summary` is bounded to 2000 chars —\nkeeps the LLM-facing summary token-cheap and forces longer narrative into\nBoQ row descriptions where it belongs. `warnings` is the non-fatal\ngeometry advisory list (both tiers).",
        -            "properties": {
        -              "assembly_slug": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "audit_trail": {
        -                "anyOf": [
        -                  {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.7 — paid-tier audit-trail entry.\n\nOne entry per BoQ row; `boq_row_index` ties to the row position in\n`ComputeResult.boq_rows`. `derivation` is the human-readable formula\nwalk-through; `formula` is the optional formal expression.",
        -                      "properties": {
        -                        "boq_row_index": {
        -                          "minimum": 0,
        -                          "type": "integer"
        -                        },
        -                        "derivation": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "formula": {
        -                          "anyOf": [
        -                            {
        -                              "type": "string"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ],
        -                          "default": null
        -                        },
        -                        "id": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "parameters_referenced": {
        -                          "items": {
        -                            "type": "string"
        -                          },
        -                          "type": "array"
        -                        }
        -                      },
        -                      "required": [
        -                        "id",
        -                        "boq_row_index",
        -                        "derivation"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "boq_rows": {
        -                "items": {
        -                  "additionalProperties": false,
        -                  "description": "Schema § 1.3 — a single bill row in the requested standard's format.\n\n`description` is the non-verbatim functional description per spec § 13.9 /\n§ 15 invariant — NEVER reproduces a standard's verbatim clause text.\n`rate` / `amount` ship null because rates are commodity data the customer\nowns; the engine's job is the measurement, not the pricing.",
        -                  "properties": {
        -                    "amount": {
        -                      "anyOf": [
        -                        {
        -                          "type": "number"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "attribution": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "audit_id": {
        -                      "anyOf": [
        -                        {
        -                          "type": "string"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "description": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "quantity": {
        -                      "minimum": 0,
        -                      "type": "number"
        -                    },
        -                    "rate": {
        -                      "anyOf": [
        -                        {
        -                          "type": "number"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "unit": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "work_section": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    }
        -                  },
        -                  "required": [
        -                    "work_section",
        -                    "description",
        -                    "quantity",
        -                    "unit",
        -                    "attribution"
        -                  ],
        -                  "type": "object"
        -                },
        -                "type": "array"
        -              },
        -              "drawing": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": false,
        -                    "description": "Schema § 1.6a — inline server-rendered SVG preview of the geometry.\n\nThe MCP mirror of the web ``/compute`` response's ``drawing`` field\n(``api.schemas.compute.DrawingRef``): the same on-screen dimensioned\ndrawing both tiers see in the workspace, surfaced on the MCP compute\nresponse so a chat client can render it inline (60th-fire item C). This\nis the on-screen preview — present on BOTH tiers per the free/paid\nboundary; the downloadable CAD artefacts (DXF / dimensioned PDF) remain\nthe paid differentiator via the export tools.\n\nDefined here rather than importing ``DrawingRef`` because the web\n``schemas`` package imports back into this module (``schemas.render``),\nso reusing it would create an import cycle — the MCP wire contract keeps\nits own copy, the same pattern as ``BoQRow`` / ``DrawingReference``.",
        -                    "properties": {
        -                      "entity_count": {
        -                        "minimum": 0,
        -                        "type": "integer"
        -                      },
        -                      "svg_b64": {
        -                        "minLength": 1,
        -                        "type": "string"
        -                      },
        -                      "unit_of_drawing": {
        -                        "const": "m",
        -                        "default": "m",
        -                        "type": "string"
        -                      },
        -                      "viewbox_height": {
        -                        "exclusiveMinimum": 0,
        -                        "type": "number"
        -                      },
        -                      "viewbox_width": {
        -                        "exclusiveMinimum": 0,
        -                        "type": "number"
        -                      },
        -                      "viewbox_x": {
        -                        "type": "number"
        -                      },
        -                      "viewbox_y": {
        -                        "type": "number"
        -                      }
        -                    },
        -                    "required": [
        -                      "svg_b64",
        -                      "viewbox_x",
        -                      "viewbox_y",
        -                      "viewbox_width",
        -                      "viewbox_height",
        -                      "entity_count"
        -                    ],
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "drawings": {
        -                "anyOf": [
        -                  {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.6 — paid-tier drawing artefact pointer.\n\n`url` is an R2-signed URL; expiry is carried in `_meta.deliverables.expires_at`\non the envelope (not duplicated here). `layers` is DXF-only; PDF/SVG\ncallers omit it.",
        -                      "properties": {
        -                        "drawing_type": {
        -                          "enum": [
        -                            "section",
        -                            "plan",
        -                            "elevation",
        -                            "isometric",
        -                            "detail"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "format": {
        -                          "enum": [
        -                            "DXF",
        -                            "PDF",
        -                            "SVG"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "layers": {
        -                          "anyOf": [
        -                            {
        -                              "items": {
        -                                "type": "string"
        -                              },
        -                              "type": "array"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ],
        -                          "default": null
        -                        },
        -                        "scale": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "sheet_size": {
        -                          "enum": [
        -                            "A1",
        -                            "A2",
        -                            "A3",
        -                            "A4"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "url": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "drawing_type",
        -                        "format",
        -                        "url",
        -                        "sheet_size",
        -                        "scale"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "parameters_used": {
        -                "additionalProperties": false,
        -                "description": "Schema § 1.2 — the parameter snapshot the engine actually used.\n\nSplits user-supplied values from engine defaults so customers can see\nwhich numbers came from them and which the engine filled in. Every\ndefaulted parameter SHOULD have a corresponding entry in `assumptions`\n— the bridge layer enforces this when wrapping engine output.",
        -                "properties": {
        -                  "assumptions": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "engine_defaults": {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  "resolved_from_description": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "additionalProperties": false,
        -                          "description": "Schema § 1.2 — a parameter resolved by the forgiving-input layer.\n\nPopulated by the Track B-Forgiving Haiku-4.5 resolution pass; until that\nlayer lands, instances are constructed only by tests. `source` distinguishes\nthe resolution path so customers can audit which fields were inferred.",
        -                          "properties": {
        -                            "confidence": {
        -                              "anyOf": [
        -                                {
        -                                  "enum": [
        -                                    "high",
        -                                    "medium",
        -                                    "low"
        -                                  ],
        -                                  "type": "string"
        -                                },
        -                                {
        -                                  "type": "null"
        -                                }
        -                              ],
        -                              "default": null
        -                            },
        -                            "field_name": {
        -                              "minLength": 1,
        -                              "type": "string"
        -                            },
        -                            "resolved_value": {},
        -                            "source": {
        -                              "enum": [
        -                                "description_field",
        -                                "haiku_resolution",
        -                                "engine_default"
        -                              ],
        -                              "type": "string"
        -                            }
        -                          },
        -                          "required": [
        -                            "field_name",
        -                            "resolved_value",
        -                            "source"
        -                          ],
        -                          "type": "object"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "user_supplied": {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  }
        -                },
        -                "type": "object"
        -              },
        -              "standard": {
        -                "enum": [
        -                  "CESMM4",
        -                  "NRM2",
        -                  "SMM7",
        -                  "MMHW"
        -                ],
        -                "type": "string"
        -              },
        -              "text_summary": {
        -                "maxLength": 2000,
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "totals_summary": {
        -                "additionalProperties": false,
        -                "description": "Schema § 1.4 — totals_summary as a typed wrapper around the free-form dict.\n\nWire shape is a flat object (`{\"concrete_m3\": {...}, \"rebar_t\": {...}}`).\nWe model it as `RootModel`-equivalent via `model_config(extra=\"allow\")`\n+ a single `__root__`-style `entries` dict. Pydantic v2 recommends\n`RootModel` for free-form roots; using a wrapper class keeps the import\nsurface uniform with the rest of this module.",
        -                "properties": {
        -                  "entries": {
        -                    "additionalProperties": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.4 — single material/work-class total entry.",
        -                      "properties": {
        -                        "quantity": {
        -                          "minimum": 0,
        -                          "type": "number"
        -                        },
        -                        "unit": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "quantity",
        -                        "unit"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "object"
        -                  }
        -                },
        -                "type": "object"
        -              },
        -              "warnings": {
        -                "items": {
        -                  "additionalProperties": false,
        -                  "description": "Schema § 1.8 — a non-fatal geometry advisory (56th-fire T2).\n\nThe wire projection of the engine's `core.GeometryWarning`. Advisory only:\na warning NEVER changes a measured quantity — it flags geometry that is\nvalid but likely a mistake (e.g. a stale dependent-height default). Present\non BOTH tiers — a correctness/safety signal, not a paid feature.",
        -                  "properties": {
        -                    "affected_params": {
        -                      "items": {
        -                        "type": "string"
        -                      },
        -                      "type": "array"
        -                    },
        -                    "code": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "detail": {
        -                      "additionalProperties": {
        -                        "type": "number"
        -                      },
        -                      "type": "object"
        -                    },
        -                    "message": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "severity": {
        -                      "enum": [
        -                        "info",
        -                        "advisory",
        -                        "caution"
        -                      ],
        -                      "type": "string"
        -                    }
        -                  },
        -                  "required": [
        -                    "code",
        -                    "severity",
        -                    "message"
        -                  ],
        -                  "type": "object"
        -                },
        -                "type": "array"
        -              }
        -            },
        -            "required": [
        -              "assembly_slug",
        -              "standard",
        -              "parameters_used",
        -              "boq_rows",
        -              "totals_summary",
        -              "text_summary"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      },
        -      "error": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        -            "properties": {
        -              "code": {
        -                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        -                "enum": [
        -                  "RATE_LIMIT_EXCEEDED",
        -                  "TIER_INSUFFICIENT",
        -                  "INVALID_INPUT",
        -                  "SCHEMA_VERSION_MISMATCH",
        -                  "SCHEMA_INVARIANT_VIOLATION",
        -                  "UPSTREAM_TIMEOUT",
        -                  "BACKEND_FAILURE",
        -                  "IP_BLOCKED",
        -                  "RESOURCE_NOT_FOUND",
        -                  "RENDER_FAILURE",
        -                  "OCR_LOW_CONFIDENCE",
        -                  "MANUAL_REVIEW_REQUIRED",
        -                  "ACCEPTANCE_REQUIRED",
        -                  "INVALID_TOKEN"
        -                ],
        -                "type": "string"
        -              },
        -              "details": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "message": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "recoverable": {
        -                "type": "boolean"
        -              },
        -              "retry_after_seconds": {
        -                "anyOf": [
        -                  {
        -                    "minimum": 0,
        -                    "type": "integer"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              }
        -            },
        -            "required": [
        -              "code",
        -              "message",
        -              "recoverable"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      }
        -    },
        -    "required": [
        -      "_meta"
        -    ],
        -    "type": "object"
        -  },
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "_meta": {
        -        "additionalProperties": false,
        -        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        -        "properties": {
        -          "deliverables": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        -                "properties": {
        -                  "docx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "dxf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "expires_at": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  },
        -                  "pdf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "xlsx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "expires_at"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "document_id": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "issued_at": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "rate_limit_remaining": {
        -            "anyOf": [
        -              {
        -                "minimum": 0,
        -                "type": "integer"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "request_id": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "schema_version": {
        -            "const": "1.0.0",
        -            "default": "1.0.0",
        -            "type": "string"
        -          },
        -          "scope_boundary": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        -                "properties": {
        -                  "not_in_scope": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "produced": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "recommended_companions": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "type": "string"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "produced",
        -                  "not_in_scope"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tier": {
        -            "enum": [
        -              "free",
        -              "paid"
        -            ],
        -            "type": "string"
        -          },
        -          "tier_upgrade": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        -                "properties": {
        -                  "available_tiers": {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        -                      "properties": {
        -                        "billing": {
        -                          "enum": [
        -                            "one_off",
        -                            "monthly",
        -                            "annual"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "currency": {
        -                          "enum": [
        -                            "GBP",
        -                            "SGD",
        -                            "EUR",
        -                            "USD",
        -                            "CAD",
        -                            "AUD",
        -                            "NZD",
        -                            "MYR"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "display_name": {
        -                          "type": "string"
        -                        },
        -                        "price_local": {
        -                          "type": "number"
        -                        },
        -                        "tier_slug": {
        -                          "enum": [
        -                            "7_day_pass",
        -                            "solo",
        -                            "studio",
        -                            "practice"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "unlock_summary": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "tier_slug",
        -                        "display_name",
        -                        "price_local",
        -                        "currency",
        -                        "billing",
        -                        "unlock_summary"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "current_tier": {
        -                    "const": "free",
        -                    "default": "free",
        -                    "type": "string"
        -                  },
        -                  "pass_credit": {
        -                    "anyOf": [
        -                      {
        -                        "additionalProperties": false,
        -                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        -                        "properties": {
        -                          "amount_local": {
        -                            "type": "number"
        -                          },
        -                          "applies_to": {
        -                            "const": "solo_first_month",
        -                            "default": "solo_first_month",
        -                            "type": "string"
        -                          },
        -                          "currency": {
        -                            "type": "string"
        -                          },
        -                          "redeemable_until": {
        -                            "type": "string"
        -                          }
        -                        },
        -                        "required": [
        -                          "amount_local",
        -                          "currency",
        -                          "redeemable_until"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "pricing_url": {
        -                    "default": "https://civilquants.com/pricing",
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "available_tiers"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tos_url": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "upgrade_hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "warranty_disclaimer": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          }
        -        },
        -        "required": [
        -          "request_id",
        -          "issued_at",
        -          "tier"
        -        ],
        -        "type": "object"
        -      },
        -      "data": {
        -        "default": null,
        -        "title": "Data"
        -      },
        -      "error": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        -            "properties": {
        -              "code": {
        -                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        -                "enum": [
        -                  "RATE_LIMIT_EXCEEDED",
        -                  "TIER_INSUFFICIENT",
        -                  "INVALID_INPUT",
        -                  "SCHEMA_VERSION_MISMATCH",
        -                  "SCHEMA_INVARIANT_VIOLATION",
        -                  "UPSTREAM_TIMEOUT",
        -                  "BACKEND_FAILURE",
        -                  "IP_BLOCKED",
        -                  "RESOURCE_NOT_FOUND",
        -                  "RENDER_FAILURE",
        -                  "OCR_LOW_CONFIDENCE",
        -                  "MANUAL_REVIEW_REQUIRED",
        -                  "ACCEPTANCE_REQUIRED",
        -                  "INVALID_TOKEN"
        -                ],
        -                "type": "string"
        -              },
        -              "details": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "message": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "recoverable": {
        -                "type": "boolean"
        -              },
        -              "retry_after_seconds": {
        -                "anyOf": [
        -                  {
        -                    "minimum": 0,
        -                    "type": "integer"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              }
        -            },
        -            "required": [
        -              "code",
        -              "message",
        -              "recoverable"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      }
        -    },
        -    "required": [
        -      "_meta"
        -    ],
        -    "type": "object"
        -  }
        -]New value: +[
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "_meta": {
        +        "additionalProperties": false,
        +        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        +        "properties": {
        +          "deliverables": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        +                "properties": {
        +                  "docx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "dxf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "expires_at": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  },
        +                  "pdf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "xlsx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "expires_at"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "document_id": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "issued_at": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "rate_limit_remaining": {
        +            "anyOf": [
        +              {
        +                "minimum": 0,
        +                "type": "integer"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "request_id": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "schema_version": {
        +            "const": "1.0.0",
        +            "default": "1.0.0",
        +            "type": "string"
        +          },
        +          "scope_boundary": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        +                "properties": {
        +                  "not_in_scope": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "produced": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "recommended_companions": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "type": "string"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "produced",
        +                  "not_in_scope"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tier": {
        +            "enum": [
        +              "free",
        +              "paid"
        +            ],
        +            "type": "string"
        +          },
        +          "tier_upgrade": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        +                "properties": {
        +                  "available_tiers": {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        +                      "properties": {
        +                        "billing": {
        +                          "enum": [
        +                            "one_off",
        +                            "monthly",
        +                            "annual"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "currency": {
        +                          "enum": [
        +                            "GBP",
        +                            "SGD",
        +                            "EUR",
        +                            "USD",
        +                            "CAD",
        +                            "AUD",
        +                            "NZD",
        +                            "MYR"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "display_name": {
        +                          "type": "string"
        +                        },
        +                        "price_local": {
        +                          "type": "number"
        +                        },
        +                        "tier_slug": {
        +                          "enum": [
        +                            "7_day_pass",
        +                            "solo",
        +                            "studio",
        +                            "practice"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "unlock_summary": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "tier_slug",
        +                        "display_name",
        +                        "price_local",
        +                        "currency",
        +                        "billing",
        +                        "unlock_summary"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "current_tier": {
        +                    "const": "free",
        +                    "default": "free",
        +                    "type": "string"
        +                  },
        +                  "pass_credit": {
        +                    "anyOf": [
        +                      {
        +                        "additionalProperties": false,
        +                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        +                        "properties": {
        +                          "amount_local": {
        +                            "type": "number"
        +                          },
        +                          "applies_to": {
        +                            "const": "solo_first_month",
        +                            "default": "solo_first_month",
        +                            "type": "string"
        +                          },
        +                          "currency": {
        +                            "type": "string"
        +                          },
        +                          "redeemable_until": {
        +                            "type": "string"
        +                          }
        +                        },
        +                        "required": [
        +                          "amount_local",
        +                          "currency",
        +                          "redeemable_until"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "pricing_url": {
        +                    "default": "https://civilquants.com/pricing",
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "available_tiers"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tos_url": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "upgrade_hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "warranty_disclaimer": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          }
        +        },
        +        "required": [
        +          "request_id",
        +          "issued_at",
        +          "tier"
        +        ],
        +        "type": "object"
        +      },
        +      "data": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Schema § 1.1 — the typed payload returned inside `MCPResponse[ComputeResult]`.\n\nFree-tier responses omit `drawings` (the downloadable CAD artefact\npointers — the paid differentiator); the bridge enforces this. The\n`audit_trail` and the inline `drawing` preview are present on BOTH tiers\n(V1 ALIGN / 60th-fire D + C). `text_summary` is bounded to 2000 chars —\nkeeps the LLM-facing summary token-cheap and forces longer narrative into\nBoQ row descriptions where it belongs. `warnings` is the non-fatal\ngeometry advisory list (both tiers).",
        +            "properties": {
        +              "assembly_slug": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "audit_trail": {
        +                "anyOf": [
        +                  {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.7 — paid-tier audit-trail entry.\n\nOne entry per BoQ row; `boq_row_index` ties to the row position in\n`ComputeResult.boq_rows`. `derivation` is the human-readable formula\nwalk-through; `formula` is the optional formal expression.",
        +                      "properties": {
        +                        "boq_row_index": {
        +                          "minimum": 0,
        +                          "type": "integer"
        +                        },
        +                        "derivation": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "formula": {
        +                          "anyOf": [
        +                            {
        +                              "type": "string"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ],
        +                          "default": null
        +                        },
        +                        "id": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "parameters_referenced": {
        +                          "items": {
        +                            "type": "string"
        +                          },
        +                          "type": "array"
        +                        }
        +                      },
        +                      "required": [
        +                        "id",
        +                        "boq_row_index",
        +                        "derivation"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "boq_rows": {
        +                "items": {
        +                  "additionalProperties": false,
        +                  "description": "Schema § 1.3 — a single bill row in the requested standard's format.\n\n`description` is the non-verbatim functional description per spec § 13.9 /\n§ 15 invariant — NEVER reproduces a standard's verbatim clause text.\n`rate` / `amount` ship null because rates are commodity data the customer\nowns; the engine's job is the measurement, not the pricing.",
        +                  "properties": {
        +                    "amount": {
        +                      "anyOf": [
        +                        {
        +                          "type": "number"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "attribution": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "audit_id": {
        +                      "anyOf": [
        +                        {
        +                          "type": "string"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "description": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "quantity": {
        +                      "minimum": 0,
        +                      "type": "number"
        +                    },
        +                    "rate": {
        +                      "anyOf": [
        +                        {
        +                          "type": "number"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "unit": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "work_section": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    }
        +                  },
        +                  "required": [
        +                    "work_section",
        +                    "description",
        +                    "quantity",
        +                    "unit",
        +                    "attribution"
        +                  ],
        +                  "type": "object"
        +                },
        +                "type": "array"
        +              },
        +              "drawing": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": false,
        +                    "description": "Schema § 1.6a — inline server-rendered SVG preview of the geometry.\n\nThe MCP mirror of the web ``/compute`` response's ``drawing`` field\n(``api.schemas.compute.DrawingRef``): the same on-screen dimensioned\ndrawing both tiers see in the workspace, surfaced on the MCP compute\nresponse so a chat client can render it inline (60th-fire item C). This\nis the on-screen preview — present on BOTH tiers per the free/paid\nboundary; the downloadable CAD artefacts (DXF / dimensioned PDF) remain\nthe paid differentiator via the export tools.\n\nDefined here rather than importing ``DrawingRef`` because the web\n``schemas`` package imports back into this module (``schemas.render``),\nso reusing it would create an import cycle — the MCP wire contract keeps\nits own copy, the same pattern as ``BoQRow`` / ``DrawingReference``.",
        +                    "properties": {
        +                      "entity_count": {
        +                        "minimum": 0,
        +                        "type": "integer"
        +                      },
        +                      "svg_b64": {
        +                        "minLength": 1,
        +                        "type": "string"
        +                      },
        +                      "unit_of_drawing": {
        +                        "const": "m",
        +                        "default": "m",
        +                        "type": "string"
        +                      },
        +                      "viewbox_height": {
        +                        "exclusiveMinimum": 0,
        +                        "type": "number"
        +                      },
        +                      "viewbox_width": {
        +                        "exclusiveMinimum": 0,
        +                        "type": "number"
        +                      },
        +                      "viewbox_x": {
        +                        "type": "number"
        +                      },
        +                      "viewbox_y": {
        +                        "type": "number"
        +                      }
        +                    },
        +                    "required": [
        +                      "svg_b64",
        +                      "viewbox_x",
        +                      "viewbox_y",
        +                      "viewbox_width",
        +                      "viewbox_height",
        +                      "entity_count"
        +                    ],
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "drawings": {
        +                "anyOf": [
        +                  {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.6 — paid-tier drawing artefact pointer.\n\n`url` is an R2-signed URL; expiry is carried in `_meta.deliverables.expires_at`\non the envelope (not duplicated here). `layers` is DXF-only; PDF/SVG\ncallers omit it.",
        +                      "properties": {
        +                        "drawing_type": {
        +                          "enum": [
        +                            "section",
        +                            "plan",
        +                            "elevation",
        +                            "isometric",
        +                            "detail"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "format": {
        +                          "enum": [
        +                            "DXF",
        +                            "PDF",
        +                            "SVG"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "layers": {
        +                          "anyOf": [
        +                            {
        +                              "items": {
        +                                "type": "string"
        +                              },
        +                              "type": "array"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ],
        +                          "default": null
        +                        },
        +                        "scale": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "sheet_size": {
        +                          "enum": [
        +                            "A1",
        +                            "A2",
        +                            "A3",
        +                            "A4"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "url": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "drawing_type",
        +                        "format",
        +                        "url",
        +                        "sheet_size",
        +                        "scale"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "parameters_used": {
        +                "additionalProperties": false,
        +                "description": "Schema § 1.2 — the parameter snapshot the engine actually used.\n\nSplits user-supplied values from engine defaults so customers can see\nwhich numbers came from them and which the engine filled in. Every\ndefaulted parameter SHOULD have a corresponding entry in `assumptions`\n— the bridge layer enforces this when wrapping engine output.",
        +                "properties": {
        +                  "assumptions": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "engine_defaults": {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  "user_supplied": {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  }
        +                },
        +                "type": "object"
        +              },
        +              "standard": {
        +                "enum": [
        +                  "CESMM4",
        +                  "NRM2",
        +                  "SMM7",
        +                  "MMHW"
        +                ],
        +                "type": "string"
        +              },
        +              "text_summary": {
        +                "maxLength": 2000,
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "totals_summary": {
        +                "additionalProperties": false,
        +                "description": "Schema § 1.4 — totals_summary as a typed wrapper around the free-form dict.\n\nWire shape is a flat object (`{\"concrete_m3\": {...}, \"rebar_t\": {...}}`).\nWe model it as `RootModel`-equivalent via `model_config(extra=\"allow\")`\n+ a single `__root__`-style `entries` dict. Pydantic v2 recommends\n`RootModel` for free-form roots; using a wrapper class keeps the import\nsurface uniform with the rest of this module.",
        +                "properties": {
        +                  "entries": {
        +                    "additionalProperties": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.4 — single material/work-class total entry.",
        +                      "properties": {
        +                        "quantity": {
        +                          "minimum": 0,
        +                          "type": "number"
        +                        },
        +                        "unit": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "quantity",
        +                        "unit"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "object"
        +                  }
        +                },
        +                "type": "object"
        +              },
        +              "warnings": {
        +                "items": {
        +                  "additionalProperties": false,
        +                  "description": "Schema § 1.8 — a non-fatal geometry advisory (56th-fire T2).\n\nThe wire projection of the engine's `core.GeometryWarning`. Advisory only:\na warning NEVER changes a measured quantity — it flags geometry that is\nvalid but likely a mistake (e.g. a stale dependent-height default). Present\non BOTH tiers — a correctness/safety signal, not a paid feature.",
        +                  "properties": {
        +                    "affected_params": {
        +                      "items": {
        +                        "type": "string"
        +                      },
        +                      "type": "array"
        +                    },
        +                    "code": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "detail": {
        +                      "additionalProperties": {
        +                        "type": "number"
        +                      },
        +                      "type": "object"
        +                    },
        +                    "message": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "severity": {
        +                      "enum": [
        +                        "info",
        +                        "advisory",
        +                        "caution"
        +                      ],
        +                      "type": "string"
        +                    }
        +                  },
        +                  "required": [
        +                    "code",
        +                    "severity",
        +                    "message"
        +                  ],
        +                  "type": "object"
        +                },
        +                "type": "array"
        +              }
        +            },
        +            "required": [
        +              "assembly_slug",
        +              "standard",
        +              "parameters_used",
        +              "boq_rows",
        +              "totals_summary",
        +              "text_summary"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      },
        +      "error": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        +            "properties": {
        +              "code": {
        +                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        +                "enum": [
        +                  "RATE_LIMIT_EXCEEDED",
        +                  "TIER_INSUFFICIENT",
        +                  "INVALID_INPUT",
        +                  "SCHEMA_VERSION_MISMATCH",
        +                  "SCHEMA_INVARIANT_VIOLATION",
        +                  "UPSTREAM_TIMEOUT",
        +                  "BACKEND_FAILURE",
        +                  "IP_BLOCKED",
        +                  "RESOURCE_NOT_FOUND",
        +                  "RENDER_FAILURE",
        +                  "OCR_LOW_CONFIDENCE",
        +                  "MANUAL_REVIEW_REQUIRED",
        +                  "ACCEPTANCE_REQUIRED",
        +                  "INVALID_TOKEN"
        +                ],
        +                "type": "string"
        +              },
        +              "details": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "message": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "recoverable": {
        +                "type": "boolean"
        +              },
        +              "retry_after_seconds": {
        +                "anyOf": [
        +                  {
        +                    "minimum": 0,
        +                    "type": "integer"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              }
        +            },
        +            "required": [
        +              "code",
        +              "message",
        +              "recoverable"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      }
        +    },
        +    "required": [
        +      "_meta"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "_meta": {
        +        "additionalProperties": false,
        +        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        +        "properties": {
        +          "deliverables": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        +                "properties": {
        +                  "docx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "dxf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "expires_at": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  },
        +                  "pdf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "xlsx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "expires_at"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "document_id": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "issued_at": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "rate_limit_remaining": {
        +            "anyOf": [
        +              {
        +                "minimum": 0,
        +                "type": "integer"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "request_id": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "schema_version": {
        +            "const": "1.0.0",
        +            "default": "1.0.0",
        +            "type": "string"
        +          },
        +          "scope_boundary": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        +                "properties": {
        +                  "not_in_scope": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "produced": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "recommended_companions": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "type": "string"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "produced",
        +                  "not_in_scope"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tier": {
        +            "enum": [
        +              "free",
        +              "paid"
        +            ],
        +            "type": "string"
        +          },
        +          "tier_upgrade": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        +                "properties": {
        +                  "available_tiers": {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        +                      "properties": {
        +                        "billing": {
        +                          "enum": [
        +                            "one_off",
        +                            "monthly",
        +                            "annual"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "currency": {
        +                          "enum": [
        +                            "GBP",
        +                            "SGD",
        +                            "EUR",
        +                            "USD",
        +                            "CAD",
        +                            "AUD",
        +                            "NZD",
        +                            "MYR"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "display_name": {
        +                          "type": "string"
        +                        },
        +                        "price_local": {
        +                          "type": "number"
        +                        },
        +                        "tier_slug": {
        +                          "enum": [
        +                            "7_day_pass",
        +                            "solo",
        +                            "studio",
        +                            "practice"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "unlock_summary": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "tier_slug",
        +                        "display_name",
        +                        "price_local",
        +                        "currency",
        +                        "billing",
        +                        "unlock_summary"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "current_tier": {
        +                    "const": "free",
        +                    "default": "free",
        +                    "type": "string"
        +                  },
        +                  "pass_credit": {
        +                    "anyOf": [
        +                      {
        +                        "additionalProperties": false,
        +                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        +                        "properties": {
        +                          "amount_local": {
        +                            "type": "number"
        +                          },
        +                          "applies_to": {
        +                            "const": "solo_first_month",
        +                            "default": "solo_first_month",
        +                            "type": "string"
        +                          },
        +                          "currency": {
        +                            "type": "string"
        +                          },
        +                          "redeemable_until": {
        +                            "type": "string"
        +                          }
        +                        },
        +                        "required": [
        +                          "amount_local",
        +                          "currency",
        +                          "redeemable_until"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "pricing_url": {
        +                    "default": "https://civilquants.com/pricing",
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "available_tiers"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tos_url": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "upgrade_hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "warranty_disclaimer": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          }
        +        },
        +        "required": [
        +          "request_id",
        +          "issued_at",
        +          "tier"
        +        ],
        +        "type": "object"
        +      },
        +      "data": {
        +        "default": null,
        +        "title": "Data"
        +      },
        +      "error": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        +            "properties": {
        +              "code": {
        +                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        +                "enum": [
        +                  "RATE_LIMIT_EXCEEDED",
        +                  "TIER_INSUFFICIENT",
        +                  "INVALID_INPUT",
        +                  "SCHEMA_VERSION_MISMATCH",
        +                  "SCHEMA_INVARIANT_VIOLATION",
        +                  "UPSTREAM_TIMEOUT",
        +                  "BACKEND_FAILURE",
        +                  "IP_BLOCKED",
        +                  "RESOURCE_NOT_FOUND",
        +                  "RENDER_FAILURE",
        +                  "OCR_LOW_CONFIDENCE",
        +                  "MANUAL_REVIEW_REQUIRED",
        +                  "ACCEPTANCE_REQUIRED",
        +                  "INVALID_TOKEN"
        +                ],
        +                "type": "string"
        +              },
        +              "details": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "message": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "recoverable": {
        +                "type": "boolean"
        +              },
        +              "retry_after_seconds": {
        +                "anyOf": [
        +                  {
        +                    "minimum": 0,
        +                    "type": "integer"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              }
        +            },
        +            "required": [
        +              "code",
        +              "message",
        +              "recoverable"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      }
        +    },
        +    "required": [
        +      "_meta"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedcompute_box_culvert1 field changed
      • changedOutput schema / properties / result / anyOf
        Previous value: -[
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "_meta": {
        -        "additionalProperties": false,
        -        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        -        "properties": {
        -          "deliverables": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        -                "properties": {
        -                  "docx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "dxf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "expires_at": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  },
        -                  "pdf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "xlsx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "expires_at"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "document_id": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "issued_at": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "rate_limit_remaining": {
        -            "anyOf": [
        -              {
        -                "minimum": 0,
        -                "type": "integer"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "request_id": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "schema_version": {
        -            "const": "1.0.0",
        -            "default": "1.0.0",
        -            "type": "string"
        -          },
        -          "scope_boundary": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        -                "properties": {
        -                  "not_in_scope": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "produced": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "recommended_companions": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "type": "string"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "produced",
        -                  "not_in_scope"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tier": {
        -            "enum": [
        -              "free",
        -              "paid"
        -            ],
        -            "type": "string"
        -          },
        -          "tier_upgrade": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        -                "properties": {
        -                  "available_tiers": {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        -                      "properties": {
        -                        "billing": {
        -                          "enum": [
        -                            "one_off",
        -                            "monthly",
        -                            "annual"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "currency": {
        -                          "enum": [
        -                            "GBP",
        -                            "SGD",
        -                            "EUR",
        -                            "USD",
        -                            "CAD",
        -                            "AUD",
        -                            "NZD",
        -                            "MYR"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "display_name": {
        -                          "type": "string"
        -                        },
        -                        "price_local": {
        -                          "type": "number"
        -                        },
        -                        "tier_slug": {
        -                          "enum": [
        -                            "7_day_pass",
        -                            "solo",
        -                            "studio",
        -                            "practice"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "unlock_summary": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "tier_slug",
        -                        "display_name",
        -                        "price_local",
        -                        "currency",
        -                        "billing",
        -                        "unlock_summary"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "current_tier": {
        -                    "const": "free",
        -                    "default": "free",
        -                    "type": "string"
        -                  },
        -                  "pass_credit": {
        -                    "anyOf": [
        -                      {
        -                        "additionalProperties": false,
        -                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        -                        "properties": {
        -                          "amount_local": {
        -                            "type": "number"
        -                          },
        -                          "applies_to": {
        -                            "const": "solo_first_month",
        -                            "default": "solo_first_month",
        -                            "type": "string"
        -                          },
        -                          "currency": {
        -                            "type": "string"
        -                          },
        -                          "redeemable_until": {
        -                            "type": "string"
        -                          }
        -                        },
        -                        "required": [
        -                          "amount_local",
        -                          "currency",
        -                          "redeemable_until"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "pricing_url": {
        -                    "default": "https://civilquants.com/pricing",
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "available_tiers"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tos_url": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "upgrade_hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "warranty_disclaimer": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          }
        -        },
        -        "required": [
        -          "request_id",
        -          "issued_at",
        -          "tier"
        -        ],
        -        "type": "object"
        -      },
        -      "data": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Schema § 1.1 — the typed payload returned inside `MCPResponse[ComputeResult]`.\n\nFree-tier responses omit `drawings` (the downloadable CAD artefact\npointers — the paid differentiator); the bridge enforces this. The\n`audit_trail` and the inline `drawing` preview are present on BOTH tiers\n(V1 ALIGN / 60th-fire D + C). `text_summary` is bounded to 2000 chars —\nkeeps the LLM-facing summary token-cheap and forces longer narrative into\nBoQ row descriptions where it belongs. `warnings` is the non-fatal\ngeometry advisory list (both tiers).",
        -            "properties": {
        -              "assembly_slug": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "audit_trail": {
        -                "anyOf": [
        -                  {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.7 — paid-tier audit-trail entry.\n\nOne entry per BoQ row; `boq_row_index` ties to the row position in\n`ComputeResult.boq_rows`. `derivation` is the human-readable formula\nwalk-through; `formula` is the optional formal expression.",
        -                      "properties": {
        -                        "boq_row_index": {
        -                          "minimum": 0,
        -                          "type": "integer"
        -                        },
        -                        "derivation": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "formula": {
        -                          "anyOf": [
        -                            {
        -                              "type": "string"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ],
        -                          "default": null
        -                        },
        -                        "id": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "parameters_referenced": {
        -                          "items": {
        -                            "type": "string"
        -                          },
        -                          "type": "array"
        -                        }
        -                      },
        -                      "required": [
        -                        "id",
        -                        "boq_row_index",
        -                        "derivation"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "boq_rows": {
        -                "items": {
        -                  "additionalProperties": false,
        -                  "description": "Schema § 1.3 — a single bill row in the requested standard's format.\n\n`description` is the non-verbatim functional description per spec § 13.9 /\n§ 15 invariant — NEVER reproduces a standard's verbatim clause text.\n`rate` / `amount` ship null because rates are commodity data the customer\nowns; the engine's job is the measurement, not the pricing.",
        -                  "properties": {
        -                    "amount": {
        -                      "anyOf": [
        -                        {
        -                          "type": "number"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "attribution": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "audit_id": {
        -                      "anyOf": [
        -                        {
        -                          "type": "string"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "description": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "quantity": {
        -                      "minimum": 0,
        -                      "type": "number"
        -                    },
        -                    "rate": {
        -                      "anyOf": [
        -                        {
        -                          "type": "number"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "unit": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "work_section": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    }
        -                  },
        -                  "required": [
        -                    "work_section",
        -                    "description",
        -                    "quantity",
        -                    "unit",
        -                    "attribution"
        -                  ],
        -                  "type": "object"
        -                },
        -                "type": "array"
        -              },
        -              "drawing": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": false,
        -                    "description": "Schema § 1.6a — inline server-rendered SVG preview of the geometry.\n\nThe MCP mirror of the web ``/compute`` response's ``drawing`` field\n(``api.schemas.compute.DrawingRef``): the same on-screen dimensioned\ndrawing both tiers see in the workspace, surfaced on the MCP compute\nresponse so a chat client can render it inline (60th-fire item C). This\nis the on-screen preview — present on BOTH tiers per the free/paid\nboundary; the downloadable CAD artefacts (DXF / dimensioned PDF) remain\nthe paid differentiator via the export tools.\n\nDefined here rather than importing ``DrawingRef`` because the web\n``schemas`` package imports back into this module (``schemas.render``),\nso reusing it would create an import cycle — the MCP wire contract keeps\nits own copy, the same pattern as ``BoQRow`` / ``DrawingReference``.",
        -                    "properties": {
        -                      "entity_count": {
        -                        "minimum": 0,
        -                        "type": "integer"
        -                      },
        -                      "svg_b64": {
        -                        "minLength": 1,
        -                        "type": "string"
        -                      },
        -                      "unit_of_drawing": {
        -                        "const": "m",
        -                        "default": "m",
        -                        "type": "string"
        -                      },
        -                      "viewbox_height": {
        -                        "exclusiveMinimum": 0,
        -                        "type": "number"
        -                      },
        -                      "viewbox_width": {
        -                        "exclusiveMinimum": 0,
        -                        "type": "number"
        -                      },
        -                      "viewbox_x": {
        -                        "type": "number"
        -                      },
        -                      "viewbox_y": {
        -                        "type": "number"
        -                      }
        -                    },
        -                    "required": [
        -                      "svg_b64",
        -                      "viewbox_x",
        -                      "viewbox_y",
        -                      "viewbox_width",
        -                      "viewbox_height",
        -                      "entity_count"
        -                    ],
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "drawings": {
        -                "anyOf": [
        -                  {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.6 — paid-tier drawing artefact pointer.\n\n`url` is an R2-signed URL; expiry is carried in `_meta.deliverables.expires_at`\non the envelope (not duplicated here). `layers` is DXF-only; PDF/SVG\ncallers omit it.",
        -                      "properties": {
        -                        "drawing_type": {
        -                          "enum": [
        -                            "section",
        -                            "plan",
        -                            "elevation",
        -                            "isometric",
        -                            "detail"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "format": {
        -                          "enum": [
        -                            "DXF",
        -                            "PDF",
        -                            "SVG"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "layers": {
        -                          "anyOf": [
        -                            {
        -                              "items": {
        -                                "type": "string"
        -                              },
        -                              "type": "array"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ],
        -                          "default": null
        -                        },
        -                        "scale": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "sheet_size": {
        -                          "enum": [
        -                            "A1",
        -                            "A2",
        -                            "A3",
        -                            "A4"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "url": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "drawing_type",
        -                        "format",
        -                        "url",
        -                        "sheet_size",
        -                        "scale"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "parameters_used": {
        -                "additionalProperties": false,
        -                "description": "Schema § 1.2 — the parameter snapshot the engine actually used.\n\nSplits user-supplied values from engine defaults so customers can see\nwhich numbers came from them and which the engine filled in. Every\ndefaulted parameter SHOULD have a corresponding entry in `assumptions`\n— the bridge layer enforces this when wrapping engine output.",
        -                "properties": {
        -                  "assumptions": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "engine_defaults": {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  "resolved_from_description": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "additionalProperties": false,
        -                          "description": "Schema § 1.2 — a parameter resolved by the forgiving-input layer.\n\nPopulated by the Track B-Forgiving Haiku-4.5 resolution pass; until that\nlayer lands, instances are constructed only by tests. `source` distinguishes\nthe resolution path so customers can audit which fields were inferred.",
        -                          "properties": {
        -                            "confidence": {
        -                              "anyOf": [
        -                                {
        -                                  "enum": [
        -                                    "high",
        -                                    "medium",
        -                                    "low"
        -                                  ],
        -                                  "type": "string"
        -                                },
        -                                {
        -                                  "type": "null"
        -                                }
        -                              ],
        -                              "default": null
        -                            },
        -                            "field_name": {
        -                              "minLength": 1,
        -                              "type": "string"
        -                            },
        -                            "resolved_value": {},
        -                            "source": {
        -                              "enum": [
        -                                "description_field",
        -                                "haiku_resolution",
        -                                "engine_default"
        -                              ],
        -                              "type": "string"
        -                            }
        -                          },
        -                          "required": [
        -                            "field_name",
        -                            "resolved_value",
        -                            "source"
        -                          ],
        -                          "type": "object"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "user_supplied": {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  }
        -                },
        -                "type": "object"
        -              },
        -              "standard": {
        -                "enum": [
        -                  "CESMM4",
        -                  "NRM2",
        -                  "SMM7",
        -                  "MMHW"
        -                ],
        -                "type": "string"
        -              },
        -              "text_summary": {
        -                "maxLength": 2000,
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "totals_summary": {
        -                "additionalProperties": false,
        -                "description": "Schema § 1.4 — totals_summary as a typed wrapper around the free-form dict.\n\nWire shape is a flat object (`{\"concrete_m3\": {...}, \"rebar_t\": {...}}`).\nWe model it as `RootModel`-equivalent via `model_config(extra=\"allow\")`\n+ a single `__root__`-style `entries` dict. Pydantic v2 recommends\n`RootModel` for free-form roots; using a wrapper class keeps the import\nsurface uniform with the rest of this module.",
        -                "properties": {
        -                  "entries": {
        -                    "additionalProperties": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.4 — single material/work-class total entry.",
        -                      "properties": {
        -                        "quantity": {
        -                          "minimum": 0,
        -                          "type": "number"
        -                        },
        -                        "unit": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "quantity",
        -                        "unit"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "object"
        -                  }
        -                },
        -                "type": "object"
        -              },
        -              "warnings": {
        -                "items": {
        -                  "additionalProperties": false,
        -                  "description": "Schema § 1.8 — a non-fatal geometry advisory (56th-fire T2).\n\nThe wire projection of the engine's `core.GeometryWarning`. Advisory only:\na warning NEVER changes a measured quantity — it flags geometry that is\nvalid but likely a mistake (e.g. a stale dependent-height default). Present\non BOTH tiers — a correctness/safety signal, not a paid feature.",
        -                  "properties": {
        -                    "affected_params": {
        -                      "items": {
        -                        "type": "string"
        -                      },
        -                      "type": "array"
        -                    },
        -                    "code": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "detail": {
        -                      "additionalProperties": {
        -                        "type": "number"
        -                      },
        -                      "type": "object"
        -                    },
        -                    "message": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "severity": {
        -                      "enum": [
        -                        "info",
        -                        "advisory",
        -                        "caution"
        -                      ],
        -                      "type": "string"
        -                    }
        -                  },
        -                  "required": [
        -                    "code",
        -                    "severity",
        -                    "message"
        -                  ],
        -                  "type": "object"
        -                },
        -                "type": "array"
        -              }
        -            },
        -            "required": [
        -              "assembly_slug",
        -              "standard",
        -              "parameters_used",
        -              "boq_rows",
        -              "totals_summary",
        -              "text_summary"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      },
        -      "error": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        -            "properties": {
        -              "code": {
        -                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        -                "enum": [
        -                  "RATE_LIMIT_EXCEEDED",
        -                  "TIER_INSUFFICIENT",
        -                  "INVALID_INPUT",
        -                  "SCHEMA_VERSION_MISMATCH",
        -                  "SCHEMA_INVARIANT_VIOLATION",
        -                  "UPSTREAM_TIMEOUT",
        -                  "BACKEND_FAILURE",
        -                  "IP_BLOCKED",
        -                  "RESOURCE_NOT_FOUND",
        -                  "RENDER_FAILURE",
        -                  "OCR_LOW_CONFIDENCE",
        -                  "MANUAL_REVIEW_REQUIRED",
        -                  "ACCEPTANCE_REQUIRED",
        -                  "INVALID_TOKEN"
        -                ],
        -                "type": "string"
        -              },
        -              "details": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "message": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "recoverable": {
        -                "type": "boolean"
        -              },
        -              "retry_after_seconds": {
        -                "anyOf": [
        -                  {
        -                    "minimum": 0,
        -                    "type": "integer"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              }
        -            },
        -            "required": [
        -              "code",
        -              "message",
        -              "recoverable"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      }
        -    },
        -    "required": [
        -      "_meta"
        -    ],
        -    "type": "object"
        -  },
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "_meta": {
        -        "additionalProperties": false,
        -        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        -        "properties": {
        -          "deliverables": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        -                "properties": {
        -                  "docx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "dxf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "expires_at": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  },
        -                  "pdf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "xlsx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "expires_at"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "document_id": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "issued_at": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "rate_limit_remaining": {
        -            "anyOf": [
        -              {
        -                "minimum": 0,
        -                "type": "integer"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "request_id": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "schema_version": {
        -            "const": "1.0.0",
        -            "default": "1.0.0",
        -            "type": "string"
        -          },
        -          "scope_boundary": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        -                "properties": {
        -                  "not_in_scope": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "produced": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "recommended_companions": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "type": "string"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "produced",
        -                  "not_in_scope"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tier": {
        -            "enum": [
        -              "free",
        -              "paid"
        -            ],
        -            "type": "string"
        -          },
        -          "tier_upgrade": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        -                "properties": {
        -                  "available_tiers": {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        -                      "properties": {
        -                        "billing": {
        -                          "enum": [
        -                            "one_off",
        -                            "monthly",
        -                            "annual"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "currency": {
        -                          "enum": [
        -                            "GBP",
        -                            "SGD",
        -                            "EUR",
        -                            "USD",
        -                            "CAD",
        -                            "AUD",
        -                            "NZD",
        -                            "MYR"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "display_name": {
        -                          "type": "string"
        -                        },
        -                        "price_local": {
        -                          "type": "number"
        -                        },
        -                        "tier_slug": {
        -                          "enum": [
        -                            "7_day_pass",
        -                            "solo",
        -                            "studio",
        -                            "practice"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "unlock_summary": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "tier_slug",
        -                        "display_name",
        -                        "price_local",
        -                        "currency",
        -                        "billing",
        -                        "unlock_summary"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "current_tier": {
        -                    "const": "free",
        -                    "default": "free",
        -                    "type": "string"
        -                  },
        -                  "pass_credit": {
        -                    "anyOf": [
        -                      {
        -                        "additionalProperties": false,
        -                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        -                        "properties": {
        -                          "amount_local": {
        -                            "type": "number"
        -                          },
        -                          "applies_to": {
        -                            "const": "solo_first_month",
        -                            "default": "solo_first_month",
        -                            "type": "string"
        -                          },
        -                          "currency": {
        -                            "type": "string"
        -                          },
        -                          "redeemable_until": {
        -                            "type": "string"
        -                          }
        -                        },
        -                        "required": [
        -                          "amount_local",
        -                          "currency",
        -                          "redeemable_until"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "pricing_url": {
        -                    "default": "https://civilquants.com/pricing",
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "available_tiers"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tos_url": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "upgrade_hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "warranty_disclaimer": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          }
        -        },
        -        "required": [
        -          "request_id",
        -          "issued_at",
        -          "tier"
        -        ],
        -        "type": "object"
        -      },
        -      "data": {
        -        "default": null,
        -        "title": "Data"
        -      },
        -      "error": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        -            "properties": {
        -              "code": {
        -                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        -                "enum": [
        -                  "RATE_LIMIT_EXCEEDED",
        -                  "TIER_INSUFFICIENT",
        -                  "INVALID_INPUT",
        -                  "SCHEMA_VERSION_MISMATCH",
        -                  "SCHEMA_INVARIANT_VIOLATION",
        -                  "UPSTREAM_TIMEOUT",
        -                  "BACKEND_FAILURE",
        -                  "IP_BLOCKED",
        -                  "RESOURCE_NOT_FOUND",
        -                  "RENDER_FAILURE",
        -                  "OCR_LOW_CONFIDENCE",
        -                  "MANUAL_REVIEW_REQUIRED",
        -                  "ACCEPTANCE_REQUIRED",
        -                  "INVALID_TOKEN"
        -                ],
        -                "type": "string"
        -              },
        -              "details": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "message": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "recoverable": {
        -                "type": "boolean"
        -              },
        -              "retry_after_seconds": {
        -                "anyOf": [
        -                  {
        -                    "minimum": 0,
        -                    "type": "integer"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              }
        -            },
        -            "required": [
        -              "code",
        -              "message",
        -              "recoverable"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      }
        -    },
        -    "required": [
        -      "_meta"
        -    ],
        -    "type": "object"
        -  }
        -]New value: +[
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "_meta": {
        +        "additionalProperties": false,
        +        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        +        "properties": {
        +          "deliverables": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        +                "properties": {
        +                  "docx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "dxf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "expires_at": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  },
        +                  "pdf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "xlsx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "expires_at"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "document_id": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "issued_at": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "rate_limit_remaining": {
        +            "anyOf": [
        +              {
        +                "minimum": 0,
        +                "type": "integer"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "request_id": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "schema_version": {
        +            "const": "1.0.0",
        +            "default": "1.0.0",
        +            "type": "string"
        +          },
        +          "scope_boundary": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        +                "properties": {
        +                  "not_in_scope": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "produced": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "recommended_companions": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "type": "string"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "produced",
        +                  "not_in_scope"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tier": {
        +            "enum": [
        +              "free",
        +              "paid"
        +            ],
        +            "type": "string"
        +          },
        +          "tier_upgrade": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        +                "properties": {
        +                  "available_tiers": {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        +                      "properties": {
        +                        "billing": {
        +                          "enum": [
        +                            "one_off",
        +                            "monthly",
        +                            "annual"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "currency": {
        +                          "enum": [
        +                            "GBP",
        +                            "SGD",
        +                            "EUR",
        +                            "USD",
        +                            "CAD",
        +                            "AUD",
        +                            "NZD",
        +                            "MYR"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "display_name": {
        +                          "type": "string"
        +                        },
        +                        "price_local": {
        +                          "type": "number"
        +                        },
        +                        "tier_slug": {
        +                          "enum": [
        +                            "7_day_pass",
        +                            "solo",
        +                            "studio",
        +                            "practice"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "unlock_summary": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "tier_slug",
        +                        "display_name",
        +                        "price_local",
        +                        "currency",
        +                        "billing",
        +                        "unlock_summary"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "current_tier": {
        +                    "const": "free",
        +                    "default": "free",
        +                    "type": "string"
        +                  },
        +                  "pass_credit": {
        +                    "anyOf": [
        +                      {
        +                        "additionalProperties": false,
        +                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        +                        "properties": {
        +                          "amount_local": {
        +                            "type": "number"
        +                          },
        +                          "applies_to": {
        +                            "const": "solo_first_month",
        +                            "default": "solo_first_month",
        +                            "type": "string"
        +                          },
        +                          "currency": {
        +                            "type": "string"
        +                          },
        +                          "redeemable_until": {
        +                            "type": "string"
        +                          }
        +                        },
        +                        "required": [
        +                          "amount_local",
        +                          "currency",
        +                          "redeemable_until"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "pricing_url": {
        +                    "default": "https://civilquants.com/pricing",
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "available_tiers"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tos_url": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "upgrade_hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "warranty_disclaimer": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          }
        +        },
        +        "required": [
        +          "request_id",
        +          "issued_at",
        +          "tier"
        +        ],
        +        "type": "object"
        +      },
        +      "data": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Schema § 1.1 — the typed payload returned inside `MCPResponse[ComputeResult]`.\n\nFree-tier responses omit `drawings` (the downloadable CAD artefact\npointers — the paid differentiator); the bridge enforces this. The\n`audit_trail` and the inline `drawing` preview are present on BOTH tiers\n(V1 ALIGN / 60th-fire D + C). `text_summary` is bounded to 2000 chars —\nkeeps the LLM-facing summary token-cheap and forces longer narrative into\nBoQ row descriptions where it belongs. `warnings` is the non-fatal\ngeometry advisory list (both tiers).",
        +            "properties": {
        +              "assembly_slug": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "audit_trail": {
        +                "anyOf": [
        +                  {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.7 — paid-tier audit-trail entry.\n\nOne entry per BoQ row; `boq_row_index` ties to the row position in\n`ComputeResult.boq_rows`. `derivation` is the human-readable formula\nwalk-through; `formula` is the optional formal expression.",
        +                      "properties": {
        +                        "boq_row_index": {
        +                          "minimum": 0,
        +                          "type": "integer"
        +                        },
        +                        "derivation": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "formula": {
        +                          "anyOf": [
        +                            {
        +                              "type": "string"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ],
        +                          "default": null
        +                        },
        +                        "id": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "parameters_referenced": {
        +                          "items": {
        +                            "type": "string"
        +                          },
        +                          "type": "array"
        +                        }
        +                      },
        +                      "required": [
        +                        "id",
        +                        "boq_row_index",
        +                        "derivation"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "boq_rows": {
        +                "items": {
        +                  "additionalProperties": false,
        +                  "description": "Schema § 1.3 — a single bill row in the requested standard's format.\n\n`description` is the non-verbatim functional description per spec § 13.9 /\n§ 15 invariant — NEVER reproduces a standard's verbatim clause text.\n`rate` / `amount` ship null because rates are commodity data the customer\nowns; the engine's job is the measurement, not the pricing.",
        +                  "properties": {
        +                    "amount": {
        +                      "anyOf": [
        +                        {
        +                          "type": "number"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "attribution": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "audit_id": {
        +                      "anyOf": [
        +                        {
        +                          "type": "string"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "description": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "quantity": {
        +                      "minimum": 0,
        +                      "type": "number"
        +                    },
        +                    "rate": {
        +                      "anyOf": [
        +                        {
        +                          "type": "number"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "unit": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "work_section": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    }
        +                  },
        +                  "required": [
        +                    "work_section",
        +                    "description",
        +                    "quantity",
        +                    "unit",
        +                    "attribution"
        +                  ],
        +                  "type": "object"
        +                },
        +                "type": "array"
        +              },
        +              "drawing": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": false,
        +                    "description": "Schema § 1.6a — inline server-rendered SVG preview of the geometry.\n\nThe MCP mirror of the web ``/compute`` response's ``drawing`` field\n(``api.schemas.compute.DrawingRef``): the same on-screen dimensioned\ndrawing both tiers see in the workspace, surfaced on the MCP compute\nresponse so a chat client can render it inline (60th-fire item C). This\nis the on-screen preview — present on BOTH tiers per the free/paid\nboundary; the downloadable CAD artefacts (DXF / dimensioned PDF) remain\nthe paid differentiator via the export tools.\n\nDefined here rather than importing ``DrawingRef`` because the web\n``schemas`` package imports back into this module (``schemas.render``),\nso reusing it would create an import cycle — the MCP wire contract keeps\nits own copy, the same pattern as ``BoQRow`` / ``DrawingReference``.",
        +                    "properties": {
        +                      "entity_count": {
        +                        "minimum": 0,
        +                        "type": "integer"
        +                      },
        +                      "svg_b64": {
        +                        "minLength": 1,
        +                        "type": "string"
        +                      },
        +                      "unit_of_drawing": {
        +                        "const": "m",
        +                        "default": "m",
        +                        "type": "string"
        +                      },
        +                      "viewbox_height": {
        +                        "exclusiveMinimum": 0,
        +                        "type": "number"
        +                      },
        +                      "viewbox_width": {
        +                        "exclusiveMinimum": 0,
        +                        "type": "number"
        +                      },
        +                      "viewbox_x": {
        +                        "type": "number"
        +                      },
        +                      "viewbox_y": {
        +                        "type": "number"
        +                      }
        +                    },
        +                    "required": [
        +                      "svg_b64",
        +                      "viewbox_x",
        +                      "viewbox_y",
        +                      "viewbox_width",
        +                      "viewbox_height",
        +                      "entity_count"
        +                    ],
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "drawings": {
        +                "anyOf": [
        +                  {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.6 — paid-tier drawing artefact pointer.\n\n`url` is an R2-signed URL; expiry is carried in `_meta.deliverables.expires_at`\non the envelope (not duplicated here). `layers` is DXF-only; PDF/SVG\ncallers omit it.",
        +                      "properties": {
        +                        "drawing_type": {
        +                          "enum": [
        +                            "section",
        +                            "plan",
        +                            "elevation",
        +                            "isometric",
        +                            "detail"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "format": {
        +                          "enum": [
        +                            "DXF",
        +                            "PDF",
        +                            "SVG"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "layers": {
        +                          "anyOf": [
        +                            {
        +                              "items": {
        +                                "type": "string"
        +                              },
        +                              "type": "array"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ],
        +                          "default": null
        +                        },
        +                        "scale": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "sheet_size": {
        +                          "enum": [
        +                            "A1",
        +                            "A2",
        +                            "A3",
        +                            "A4"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "url": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "drawing_type",
        +                        "format",
        +                        "url",
        +                        "sheet_size",
        +                        "scale"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "parameters_used": {
        +                "additionalProperties": false,
        +                "description": "Schema § 1.2 — the parameter snapshot the engine actually used.\n\nSplits user-supplied values from engine defaults so customers can see\nwhich numbers came from them and which the engine filled in. Every\ndefaulted parameter SHOULD have a corresponding entry in `assumptions`\n— the bridge layer enforces this when wrapping engine output.",
        +                "properties": {
        +                  "assumptions": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "engine_defaults": {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  "user_supplied": {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  }
        +                },
        +                "type": "object"
        +              },
        +              "standard": {
        +                "enum": [
        +                  "CESMM4",
        +                  "NRM2",
        +                  "SMM7",
        +                  "MMHW"
        +                ],
        +                "type": "string"
        +              },
        +              "text_summary": {
        +                "maxLength": 2000,
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "totals_summary": {
        +                "additionalProperties": false,
        +                "description": "Schema § 1.4 — totals_summary as a typed wrapper around the free-form dict.\n\nWire shape is a flat object (`{\"concrete_m3\": {...}, \"rebar_t\": {...}}`).\nWe model it as `RootModel`-equivalent via `model_config(extra=\"allow\")`\n+ a single `__root__`-style `entries` dict. Pydantic v2 recommends\n`RootModel` for free-form roots; using a wrapper class keeps the import\nsurface uniform with the rest of this module.",
        +                "properties": {
        +                  "entries": {
        +                    "additionalProperties": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.4 — single material/work-class total entry.",
        +                      "properties": {
        +                        "quantity": {
        +                          "minimum": 0,
        +                          "type": "number"
        +                        },
        +                        "unit": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "quantity",
        +                        "unit"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "object"
        +                  }
        +                },
        +                "type": "object"
        +              },
        +              "warnings": {
        +                "items": {
        +                  "additionalProperties": false,
        +                  "description": "Schema § 1.8 — a non-fatal geometry advisory (56th-fire T2).\n\nThe wire projection of the engine's `core.GeometryWarning`. Advisory only:\na warning NEVER changes a measured quantity — it flags geometry that is\nvalid but likely a mistake (e.g. a stale dependent-height default). Present\non BOTH tiers — a correctness/safety signal, not a paid feature.",
        +                  "properties": {
        +                    "affected_params": {
        +                      "items": {
        +                        "type": "string"
        +                      },
        +                      "type": "array"
        +                    },
        +                    "code": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "detail": {
        +                      "additionalProperties": {
        +                        "type": "number"
        +                      },
        +                      "type": "object"
        +                    },
        +                    "message": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "severity": {
        +                      "enum": [
        +                        "info",
        +                        "advisory",
        +                        "caution"
        +                      ],
        +                      "type": "string"
        +                    }
        +                  },
        +                  "required": [
        +                    "code",
        +                    "severity",
        +                    "message"
        +                  ],
        +                  "type": "object"
        +                },
        +                "type": "array"
        +              }
        +            },
        +            "required": [
        +              "assembly_slug",
        +              "standard",
        +              "parameters_used",
        +              "boq_rows",
        +              "totals_summary",
        +              "text_summary"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      },
        +      "error": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        +            "properties": {
        +              "code": {
        +                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        +                "enum": [
        +                  "RATE_LIMIT_EXCEEDED",
        +                  "TIER_INSUFFICIENT",
        +                  "INVALID_INPUT",
        +                  "SCHEMA_VERSION_MISMATCH",
        +                  "SCHEMA_INVARIANT_VIOLATION",
        +                  "UPSTREAM_TIMEOUT",
        +                  "BACKEND_FAILURE",
        +                  "IP_BLOCKED",
        +                  "RESOURCE_NOT_FOUND",
        +                  "RENDER_FAILURE",
        +                  "OCR_LOW_CONFIDENCE",
        +                  "MANUAL_REVIEW_REQUIRED",
        +                  "ACCEPTANCE_REQUIRED",
        +                  "INVALID_TOKEN"
        +                ],
        +                "type": "string"
        +              },
        +              "details": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "message": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "recoverable": {
        +                "type": "boolean"
        +              },
        +              "retry_after_seconds": {
        +                "anyOf": [
        +                  {
        +                    "minimum": 0,
        +                    "type": "integer"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              }
        +            },
        +            "required": [
        +              "code",
        +              "message",
        +              "recoverable"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      }
        +    },
        +    "required": [
        +      "_meta"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "_meta": {
        +        "additionalProperties": false,
        +        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        +        "properties": {
        +          "deliverables": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        +                "properties": {
        +                  "docx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "dxf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "expires_at": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  },
        +                  "pdf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "xlsx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "expires_at"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "document_id": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "issued_at": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "rate_limit_remaining": {
        +            "anyOf": [
        +              {
        +                "minimum": 0,
        +                "type": "integer"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "request_id": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "schema_version": {
        +            "const": "1.0.0",
        +            "default": "1.0.0",
        +            "type": "string"
        +          },
        +          "scope_boundary": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        +                "properties": {
        +                  "not_in_scope": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "produced": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "recommended_companions": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "type": "string"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "produced",
        +                  "not_in_scope"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tier": {
        +            "enum": [
        +              "free",
        +              "paid"
        +            ],
        +            "type": "string"
        +          },
        +          "tier_upgrade": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        +                "properties": {
        +                  "available_tiers": {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        +                      "properties": {
        +                        "billing": {
        +                          "enum": [
        +                            "one_off",
        +                            "monthly",
        +                            "annual"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "currency": {
        +                          "enum": [
        +                            "GBP",
        +                            "SGD",
        +                            "EUR",
        +                            "USD",
        +                            "CAD",
        +                            "AUD",
        +                            "NZD",
        +                            "MYR"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "display_name": {
        +                          "type": "string"
        +                        },
        +                        "price_local": {
        +                          "type": "number"
        +                        },
        +                        "tier_slug": {
        +                          "enum": [
        +                            "7_day_pass",
        +                            "solo",
        +                            "studio",
        +                            "practice"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "unlock_summary": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "tier_slug",
        +                        "display_name",
        +                        "price_local",
        +                        "currency",
        +                        "billing",
        +                        "unlock_summary"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "current_tier": {
        +                    "const": "free",
        +                    "default": "free",
        +                    "type": "string"
        +                  },
        +                  "pass_credit": {
        +                    "anyOf": [
        +                      {
        +                        "additionalProperties": false,
        +                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        +                        "properties": {
        +                          "amount_local": {
        +                            "type": "number"
        +                          },
        +                          "applies_to": {
        +                            "const": "solo_first_month",
        +                            "default": "solo_first_month",
        +                            "type": "string"
        +                          },
        +                          "currency": {
        +                            "type": "string"
        +                          },
        +                          "redeemable_until": {
        +                            "type": "string"
        +                          }
        +                        },
        +                        "required": [
        +                          "amount_local",
        +                          "currency",
        +                          "redeemable_until"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "pricing_url": {
        +                    "default": "https://civilquants.com/pricing",
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "available_tiers"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tos_url": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "upgrade_hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "warranty_disclaimer": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          }
        +        },
        +        "required": [
        +          "request_id",
        +          "issued_at",
        +          "tier"
        +        ],
        +        "type": "object"
        +      },
        +      "data": {
        +        "default": null,
        +        "title": "Data"
        +      },
        +      "error": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        +            "properties": {
        +              "code": {
        +                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        +                "enum": [
        +                  "RATE_LIMIT_EXCEEDED",
        +                  "TIER_INSUFFICIENT",
        +                  "INVALID_INPUT",
        +                  "SCHEMA_VERSION_MISMATCH",
        +                  "SCHEMA_INVARIANT_VIOLATION",
        +                  "UPSTREAM_TIMEOUT",
        +                  "BACKEND_FAILURE",
        +                  "IP_BLOCKED",
        +                  "RESOURCE_NOT_FOUND",
        +                  "RENDER_FAILURE",
        +                  "OCR_LOW_CONFIDENCE",
        +                  "MANUAL_REVIEW_REQUIRED",
        +                  "ACCEPTANCE_REQUIRED",
        +                  "INVALID_TOKEN"
        +                ],
        +                "type": "string"
        +              },
        +              "details": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "message": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "recoverable": {
        +                "type": "boolean"
        +              },
        +              "retry_after_seconds": {
        +                "anyOf": [
        +                  {
        +                    "minimum": 0,
        +                    "type": "integer"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              }
        +            },
        +            "required": [
        +              "code",
        +              "message",
        +              "recoverable"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      }
        +    },
        +    "required": [
        +      "_meta"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedcompute_cantilever_wall1 field changed
      • changedOutput schema / properties / result / anyOf
        Previous value: -[
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "_meta": {
        -        "additionalProperties": false,
        -        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        -        "properties": {
        -          "deliverables": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        -                "properties": {
        -                  "docx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "dxf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "expires_at": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  },
        -                  "pdf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "xlsx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "expires_at"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "document_id": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "issued_at": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "rate_limit_remaining": {
        -            "anyOf": [
        -              {
        -                "minimum": 0,
        -                "type": "integer"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "request_id": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "schema_version": {
        -            "const": "1.0.0",
        -            "default": "1.0.0",
        -            "type": "string"
        -          },
        -          "scope_boundary": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        -                "properties": {
        -                  "not_in_scope": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "produced": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "recommended_companions": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "type": "string"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "produced",
        -                  "not_in_scope"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tier": {
        -            "enum": [
        -              "free",
        -              "paid"
        -            ],
        -            "type": "string"
        -          },
        -          "tier_upgrade": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        -                "properties": {
        -                  "available_tiers": {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        -                      "properties": {
        -                        "billing": {
        -                          "enum": [
        -                            "one_off",
        -                            "monthly",
        -                            "annual"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "currency": {
        -                          "enum": [
        -                            "GBP",
        -                            "SGD",
        -                            "EUR",
        -                            "USD",
        -                            "CAD",
        -                            "AUD",
        -                            "NZD",
        -                            "MYR"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "display_name": {
        -                          "type": "string"
        -                        },
        -                        "price_local": {
        -                          "type": "number"
        -                        },
        -                        "tier_slug": {
        -                          "enum": [
        -                            "7_day_pass",
        -                            "solo",
        -                            "studio",
        -                            "practice"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "unlock_summary": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "tier_slug",
        -                        "display_name",
        -                        "price_local",
        -                        "currency",
        -                        "billing",
        -                        "unlock_summary"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "current_tier": {
        -                    "const": "free",
        -                    "default": "free",
        -                    "type": "string"
        -                  },
        -                  "pass_credit": {
        -                    "anyOf": [
        -                      {
        -                        "additionalProperties": false,
        -                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        -                        "properties": {
        -                          "amount_local": {
        -                            "type": "number"
        -                          },
        -                          "applies_to": {
        -                            "const": "solo_first_month",
        -                            "default": "solo_first_month",
        -                            "type": "string"
        -                          },
        -                          "currency": {
        -                            "type": "string"
        -                          },
        -                          "redeemable_until": {
        -                            "type": "string"
        -                          }
        -                        },
        -                        "required": [
        -                          "amount_local",
        -                          "currency",
        -                          "redeemable_until"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "pricing_url": {
        -                    "default": "https://civilquants.com/pricing",
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "available_tiers"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tos_url": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "upgrade_hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "warranty_disclaimer": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          }
        -        },
        -        "required": [
        -          "request_id",
        -          "issued_at",
        -          "tier"
        -        ],
        -        "type": "object"
        -      },
        -      "data": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Schema § 1.1 — the typed payload returned inside `MCPResponse[ComputeResult]`.\n\nFree-tier responses omit `drawings` (the downloadable CAD artefact\npointers — the paid differentiator); the bridge enforces this. The\n`audit_trail` and the inline `drawing` preview are present on BOTH tiers\n(V1 ALIGN / 60th-fire D + C). `text_summary` is bounded to 2000 chars —\nkeeps the LLM-facing summary token-cheap and forces longer narrative into\nBoQ row descriptions where it belongs. `warnings` is the non-fatal\ngeometry advisory list (both tiers).",
        -            "properties": {
        -              "assembly_slug": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "audit_trail": {
        -                "anyOf": [
        -                  {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.7 — paid-tier audit-trail entry.\n\nOne entry per BoQ row; `boq_row_index` ties to the row position in\n`ComputeResult.boq_rows`. `derivation` is the human-readable formula\nwalk-through; `formula` is the optional formal expression.",
        -                      "properties": {
        -                        "boq_row_index": {
        -                          "minimum": 0,
        -                          "type": "integer"
        -                        },
        -                        "derivation": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "formula": {
        -                          "anyOf": [
        -                            {
        -                              "type": "string"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ],
        -                          "default": null
        -                        },
        -                        "id": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "parameters_referenced": {
        -                          "items": {
        -                            "type": "string"
        -                          },
        -                          "type": "array"
        -                        }
        -                      },
        -                      "required": [
        -                        "id",
        -                        "boq_row_index",
        -                        "derivation"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "boq_rows": {
        -                "items": {
        -                  "additionalProperties": false,
        -                  "description": "Schema § 1.3 — a single bill row in the requested standard's format.\n\n`description` is the non-verbatim functional description per spec § 13.9 /\n§ 15 invariant — NEVER reproduces a standard's verbatim clause text.\n`rate` / `amount` ship null because rates are commodity data the customer\nowns; the engine's job is the measurement, not the pricing.",
        -                  "properties": {
        -                    "amount": {
        -                      "anyOf": [
        -                        {
        -                          "type": "number"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "attribution": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "audit_id": {
        -                      "anyOf": [
        -                        {
        -                          "type": "string"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "description": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "quantity": {
        -                      "minimum": 0,
        -                      "type": "number"
        -                    },
        -                    "rate": {
        -                      "anyOf": [
        -                        {
        -                          "type": "number"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "unit": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "work_section": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    }
        -                  },
        -                  "required": [
        -                    "work_section",
        -                    "description",
        -                    "quantity",
        -                    "unit",
        -                    "attribution"
        -                  ],
        -                  "type": "object"
        -                },
        -                "type": "array"
        -              },
        -              "drawing": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": false,
        -                    "description": "Schema § 1.6a — inline server-rendered SVG preview of the geometry.\n\nThe MCP mirror of the web ``/compute`` response's ``drawing`` field\n(``api.schemas.compute.DrawingRef``): the same on-screen dimensioned\ndrawing both tiers see in the workspace, surfaced on the MCP compute\nresponse so a chat client can render it inline (60th-fire item C). This\nis the on-screen preview — present on BOTH tiers per the free/paid\nboundary; the downloadable CAD artefacts (DXF / dimensioned PDF) remain\nthe paid differentiator via the export tools.\n\nDefined here rather than importing ``DrawingRef`` because the web\n``schemas`` package imports back into this module (``schemas.render``),\nso reusing it would create an import cycle — the MCP wire contract keeps\nits own copy, the same pattern as ``BoQRow`` / ``DrawingReference``.",
        -                    "properties": {
        -                      "entity_count": {
        -                        "minimum": 0,
        -                        "type": "integer"
        -                      },
        -                      "svg_b64": {
        -                        "minLength": 1,
        -                        "type": "string"
        -                      },
        -                      "unit_of_drawing": {
        -                        "const": "m",
        -                        "default": "m",
        -                        "type": "string"
        -                      },
        -                      "viewbox_height": {
        -                        "exclusiveMinimum": 0,
        -                        "type": "number"
        -                      },
        -                      "viewbox_width": {
        -                        "exclusiveMinimum": 0,
        -                        "type": "number"
        -                      },
        -                      "viewbox_x": {
        -                        "type": "number"
        -                      },
        -                      "viewbox_y": {
        -                        "type": "number"
        -                      }
        -                    },
        -                    "required": [
        -                      "svg_b64",
        -                      "viewbox_x",
        -                      "viewbox_y",
        -                      "viewbox_width",
        -                      "viewbox_height",
        -                      "entity_count"
        -                    ],
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "drawings": {
        -                "anyOf": [
        -                  {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.6 — paid-tier drawing artefact pointer.\n\n`url` is an R2-signed URL; expiry is carried in `_meta.deliverables.expires_at`\non the envelope (not duplicated here). `layers` is DXF-only; PDF/SVG\ncallers omit it.",
        -                      "properties": {
        -                        "drawing_type": {
        -                          "enum": [
        -                            "section",
        -                            "plan",
        -                            "elevation",
        -                            "isometric",
        -                            "detail"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "format": {
        -                          "enum": [
        -                            "DXF",
        -                            "PDF",
        -                            "SVG"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "layers": {
        -                          "anyOf": [
        -                            {
        -                              "items": {
        -                                "type": "string"
        -                              },
        -                              "type": "array"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ],
        -                          "default": null
        -                        },
        -                        "scale": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "sheet_size": {
        -                          "enum": [
        -                            "A1",
        -                            "A2",
        -                            "A3",
        -                            "A4"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "url": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "drawing_type",
        -                        "format",
        -                        "url",
        -                        "sheet_size",
        -                        "scale"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "parameters_used": {
        -                "additionalProperties": false,
        -                "description": "Schema § 1.2 — the parameter snapshot the engine actually used.\n\nSplits user-supplied values from engine defaults so customers can see\nwhich numbers came from them and which the engine filled in. Every\ndefaulted parameter SHOULD have a corresponding entry in `assumptions`\n— the bridge layer enforces this when wrapping engine output.",
        -                "properties": {
        -                  "assumptions": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "engine_defaults": {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  "resolved_from_description": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "additionalProperties": false,
        -                          "description": "Schema § 1.2 — a parameter resolved by the forgiving-input layer.\n\nPopulated by the Track B-Forgiving Haiku-4.5 resolution pass; until that\nlayer lands, instances are constructed only by tests. `source` distinguishes\nthe resolution path so customers can audit which fields were inferred.",
        -                          "properties": {
        -                            "confidence": {
        -                              "anyOf": [
        -                                {
        -                                  "enum": [
        -                                    "high",
        -                                    "medium",
        -                                    "low"
        -                                  ],
        -                                  "type": "string"
        -                                },
        -                                {
        -                                  "type": "null"
        -                                }
        -                              ],
        -                              "default": null
        -                            },
        -                            "field_name": {
        -                              "minLength": 1,
        -                              "type": "string"
        -                            },
        -                            "resolved_value": {},
        -                            "source": {
        -                              "enum": [
        -                                "description_field",
        -                                "haiku_resolution",
        -                                "engine_default"
        -                              ],
        -                              "type": "string"
        -                            }
        -                          },
        -                          "required": [
        -                            "field_name",
        -                            "resolved_value",
        -                            "source"
        -                          ],
        -                          "type": "object"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "user_supplied": {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  }
        -                },
        -                "type": "object"
        -              },
        -              "standard": {
        -                "enum": [
        -                  "CESMM4",
        -                  "NRM2",
        -                  "SMM7",
        -                  "MMHW"
        -                ],
        -                "type": "string"
        -              },
        -              "text_summary": {
        -                "maxLength": 2000,
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "totals_summary": {
        -                "additionalProperties": false,
        -                "description": "Schema § 1.4 — totals_summary as a typed wrapper around the free-form dict.\n\nWire shape is a flat object (`{\"concrete_m3\": {...}, \"rebar_t\": {...}}`).\nWe model it as `RootModel`-equivalent via `model_config(extra=\"allow\")`\n+ a single `__root__`-style `entries` dict. Pydantic v2 recommends\n`RootModel` for free-form roots; using a wrapper class keeps the import\nsurface uniform with the rest of this module.",
        -                "properties": {
        -                  "entries": {
        -                    "additionalProperties": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.4 — single material/work-class total entry.",
        -                      "properties": {
        -                        "quantity": {
        -                          "minimum": 0,
        -                          "type": "number"
        -                        },
        -                        "unit": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "quantity",
        -                        "unit"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "object"
        -                  }
        -                },
        -                "type": "object"
        -              },
        -              "warnings": {
        -                "items": {
        -                  "additionalProperties": false,
        -                  "description": "Schema § 1.8 — a non-fatal geometry advisory (56th-fire T2).\n\nThe wire projection of the engine's `core.GeometryWarning`. Advisory only:\na warning NEVER changes a measured quantity — it flags geometry that is\nvalid but likely a mistake (e.g. a stale dependent-height default). Present\non BOTH tiers — a correctness/safety signal, not a paid feature.",
        -                  "properties": {
        -                    "affected_params": {
        -                      "items": {
        -                        "type": "string"
        -                      },
        -                      "type": "array"
        -                    },
        -                    "code": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "detail": {
        -                      "additionalProperties": {
        -                        "type": "number"
        -                      },
        -                      "type": "object"
        -                    },
        -                    "message": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "severity": {
        -                      "enum": [
        -                        "info",
        -                        "advisory",
        -                        "caution"
        -                      ],
        -                      "type": "string"
        -                    }
        -                  },
        -                  "required": [
        -                    "code",
        -                    "severity",
        -                    "message"
        -                  ],
        -                  "type": "object"
        -                },
        -                "type": "array"
        -              }
        -            },
        -            "required": [
        -              "assembly_slug",
        -              "standard",
        -              "parameters_used",
        -              "boq_rows",
        -              "totals_summary",
        -              "text_summary"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      },
        -      "error": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        -            "properties": {
        -              "code": {
        -                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        -                "enum": [
        -                  "RATE_LIMIT_EXCEEDED",
        -                  "TIER_INSUFFICIENT",
        -                  "INVALID_INPUT",
        -                  "SCHEMA_VERSION_MISMATCH",
        -                  "SCHEMA_INVARIANT_VIOLATION",
        -                  "UPSTREAM_TIMEOUT",
        -                  "BACKEND_FAILURE",
        -                  "IP_BLOCKED",
        -                  "RESOURCE_NOT_FOUND",
        -                  "RENDER_FAILURE",
        -                  "OCR_LOW_CONFIDENCE",
        -                  "MANUAL_REVIEW_REQUIRED",
        -                  "ACCEPTANCE_REQUIRED",
        -                  "INVALID_TOKEN"
        -                ],
        -                "type": "string"
        -              },
        -              "details": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "message": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "recoverable": {
        -                "type": "boolean"
        -              },
        -              "retry_after_seconds": {
        -                "anyOf": [
        -                  {
        -                    "minimum": 0,
        -                    "type": "integer"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              }
        -            },
        -            "required": [
        -              "code",
        -              "message",
        -              "recoverable"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      }
        -    },
        -    "required": [
        -      "_meta"
        -    ],
        -    "type": "object"
        -  },
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "_meta": {
        -        "additionalProperties": false,
        -        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        -        "properties": {
        -          "deliverables": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        -                "properties": {
        -                  "docx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "dxf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "expires_at": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  },
        -                  "pdf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "xlsx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "expires_at"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "document_id": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "issued_at": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "rate_limit_remaining": {
        -            "anyOf": [
        -              {
        -                "minimum": 0,
        -                "type": "integer"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "request_id": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "schema_version": {
        -            "const": "1.0.0",
        -            "default": "1.0.0",
        -            "type": "string"
        -          },
        -          "scope_boundary": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        -                "properties": {
        -                  "not_in_scope": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "produced": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "recommended_companions": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "type": "string"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "produced",
        -                  "not_in_scope"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tier": {
        -            "enum": [
        -              "free",
        -              "paid"
        -            ],
        -            "type": "string"
        -          },
        -          "tier_upgrade": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        -                "properties": {
        -                  "available_tiers": {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        -                      "properties": {
        -                        "billing": {
        -                          "enum": [
        -                            "one_off",
        -                            "monthly",
        -                            "annual"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "currency": {
        -                          "enum": [
        -                            "GBP",
        -                            "SGD",
        -                            "EUR",
        -                            "USD",
        -                            "CAD",
        -                            "AUD",
        -                            "NZD",
        -                            "MYR"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "display_name": {
        -                          "type": "string"
        -                        },
        -                        "price_local": {
        -                          "type": "number"
        -                        },
        -                        "tier_slug": {
        -                          "enum": [
        -                            "7_day_pass",
        -                            "solo",
        -                            "studio",
        -                            "practice"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "unlock_summary": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "tier_slug",
        -                        "display_name",
        -                        "price_local",
        -                        "currency",
        -                        "billing",
        -                        "unlock_summary"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "current_tier": {
        -                    "const": "free",
        -                    "default": "free",
        -                    "type": "string"
        -                  },
        -                  "pass_credit": {
        -                    "anyOf": [
        -                      {
        -                        "additionalProperties": false,
        -                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        -                        "properties": {
        -                          "amount_local": {
        -                            "type": "number"
        -                          },
        -                          "applies_to": {
        -                            "const": "solo_first_month",
        -                            "default": "solo_first_month",
        -                            "type": "string"
        -                          },
        -                          "currency": {
        -                            "type": "string"
        -                          },
        -                          "redeemable_until": {
        -                            "type": "string"
        -                          }
        -                        },
        -                        "required": [
        -                          "amount_local",
        -                          "currency",
        -                          "redeemable_until"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "pricing_url": {
        -                    "default": "https://civilquants.com/pricing",
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "available_tiers"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tos_url": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "upgrade_hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "warranty_disclaimer": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          }
        -        },
        -        "required": [
        -          "request_id",
        -          "issued_at",
        -          "tier"
        -        ],
        -        "type": "object"
        -      },
        -      "data": {
        -        "default": null,
        -        "title": "Data"
        -      },
        -      "error": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        -            "properties": {
        -              "code": {
        -                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        -                "enum": [
        -                  "RATE_LIMIT_EXCEEDED",
        -                  "TIER_INSUFFICIENT",
        -                  "INVALID_INPUT",
        -                  "SCHEMA_VERSION_MISMATCH",
        -                  "SCHEMA_INVARIANT_VIOLATION",
        -                  "UPSTREAM_TIMEOUT",
        -                  "BACKEND_FAILURE",
        -                  "IP_BLOCKED",
        -                  "RESOURCE_NOT_FOUND",
        -                  "RENDER_FAILURE",
        -                  "OCR_LOW_CONFIDENCE",
        -                  "MANUAL_REVIEW_REQUIRED",
        -                  "ACCEPTANCE_REQUIRED",
        -                  "INVALID_TOKEN"
        -                ],
        -                "type": "string"
        -              },
        -              "details": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "message": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "recoverable": {
        -                "type": "boolean"
        -              },
        -              "retry_after_seconds": {
        -                "anyOf": [
        -                  {
        -                    "minimum": 0,
        -                    "type": "integer"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              }
        -            },
        -            "required": [
        -              "code",
        -              "message",
        -              "recoverable"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      }
        -    },
        -    "required": [
        -      "_meta"
        -    ],
        -    "type": "object"
        -  }
        -]New value: +[
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "_meta": {
        +        "additionalProperties": false,
        +        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        +        "properties": {
        +          "deliverables": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        +                "properties": {
        +                  "docx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "dxf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "expires_at": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  },
        +                  "pdf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "xlsx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "expires_at"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "document_id": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "issued_at": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "rate_limit_remaining": {
        +            "anyOf": [
        +              {
        +                "minimum": 0,
        +                "type": "integer"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "request_id": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "schema_version": {
        +            "const": "1.0.0",
        +            "default": "1.0.0",
        +            "type": "string"
        +          },
        +          "scope_boundary": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        +                "properties": {
        +                  "not_in_scope": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "produced": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "recommended_companions": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "type": "string"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "produced",
        +                  "not_in_scope"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tier": {
        +            "enum": [
        +              "free",
        +              "paid"
        +            ],
        +            "type": "string"
        +          },
        +          "tier_upgrade": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        +                "properties": {
        +                  "available_tiers": {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        +                      "properties": {
        +                        "billing": {
        +                          "enum": [
        +                            "one_off",
        +                            "monthly",
        +                            "annual"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "currency": {
        +                          "enum": [
        +                            "GBP",
        +                            "SGD",
        +                            "EUR",
        +                            "USD",
        +                            "CAD",
        +                            "AUD",
        +                            "NZD",
        +                            "MYR"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "display_name": {
        +                          "type": "string"
        +                        },
        +                        "price_local": {
        +                          "type": "number"
        +                        },
        +                        "tier_slug": {
        +                          "enum": [
        +                            "7_day_pass",
        +                            "solo",
        +                            "studio",
        +                            "practice"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "unlock_summary": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "tier_slug",
        +                        "display_name",
        +                        "price_local",
        +                        "currency",
        +                        "billing",
        +                        "unlock_summary"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "current_tier": {
        +                    "const": "free",
        +                    "default": "free",
        +                    "type": "string"
        +                  },
        +                  "pass_credit": {
        +                    "anyOf": [
        +                      {
        +                        "additionalProperties": false,
        +                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        +                        "properties": {
        +                          "amount_local": {
        +                            "type": "number"
        +                          },
        +                          "applies_to": {
        +                            "const": "solo_first_month",
        +                            "default": "solo_first_month",
        +                            "type": "string"
        +                          },
        +                          "currency": {
        +                            "type": "string"
        +                          },
        +                          "redeemable_until": {
        +                            "type": "string"
        +                          }
        +                        },
        +                        "required": [
        +                          "amount_local",
        +                          "currency",
        +                          "redeemable_until"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "pricing_url": {
        +                    "default": "https://civilquants.com/pricing",
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "available_tiers"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tos_url": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "upgrade_hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "warranty_disclaimer": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          }
        +        },
        +        "required": [
        +          "request_id",
        +          "issued_at",
        +          "tier"
        +        ],
        +        "type": "object"
        +      },
        +      "data": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Schema § 1.1 — the typed payload returned inside `MCPResponse[ComputeResult]`.\n\nFree-tier responses omit `drawings` (the downloadable CAD artefact\npointers — the paid differentiator); the bridge enforces this. The\n`audit_trail` and the inline `drawing` preview are present on BOTH tiers\n(V1 ALIGN / 60th-fire D + C). `text_summary` is bounded to 2000 chars —\nkeeps the LLM-facing summary token-cheap and forces longer narrative into\nBoQ row descriptions where it belongs. `warnings` is the non-fatal\ngeometry advisory list (both tiers).",
        +            "properties": {
        +              "assembly_slug": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "audit_trail": {
        +                "anyOf": [
        +                  {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.7 — paid-tier audit-trail entry.\n\nOne entry per BoQ row; `boq_row_index` ties to the row position in\n`ComputeResult.boq_rows`. `derivation` is the human-readable formula\nwalk-through; `formula` is the optional formal expression.",
        +                      "properties": {
        +                        "boq_row_index": {
        +                          "minimum": 0,
        +                          "type": "integer"
        +                        },
        +                        "derivation": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "formula": {
        +                          "anyOf": [
        +                            {
        +                              "type": "string"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ],
        +                          "default": null
        +                        },
        +                        "id": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "parameters_referenced": {
        +                          "items": {
        +                            "type": "string"
        +                          },
        +                          "type": "array"
        +                        }
        +                      },
        +                      "required": [
        +                        "id",
        +                        "boq_row_index",
        +                        "derivation"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "boq_rows": {
        +                "items": {
        +                  "additionalProperties": false,
        +                  "description": "Schema § 1.3 — a single bill row in the requested standard's format.\n\n`description` is the non-verbatim functional description per spec § 13.9 /\n§ 15 invariant — NEVER reproduces a standard's verbatim clause text.\n`rate` / `amount` ship null because rates are commodity data the customer\nowns; the engine's job is the measurement, not the pricing.",
        +                  "properties": {
        +                    "amount": {
        +                      "anyOf": [
        +                        {
        +                          "type": "number"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "attribution": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "audit_id": {
        +                      "anyOf": [
        +                        {
        +                          "type": "string"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "description": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "quantity": {
        +                      "minimum": 0,
        +                      "type": "number"
        +                    },
        +                    "rate": {
        +                      "anyOf": [
        +                        {
        +                          "type": "number"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "unit": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "work_section": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    }
        +                  },
        +                  "required": [
        +                    "work_section",
        +                    "description",
        +                    "quantity",
        +                    "unit",
        +                    "attribution"
        +                  ],
        +                  "type": "object"
        +                },
        +                "type": "array"
        +              },
        +              "drawing": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": false,
        +                    "description": "Schema § 1.6a — inline server-rendered SVG preview of the geometry.\n\nThe MCP mirror of the web ``/compute`` response's ``drawing`` field\n(``api.schemas.compute.DrawingRef``): the same on-screen dimensioned\ndrawing both tiers see in the workspace, surfaced on the MCP compute\nresponse so a chat client can render it inline (60th-fire item C). This\nis the on-screen preview — present on BOTH tiers per the free/paid\nboundary; the downloadable CAD artefacts (DXF / dimensioned PDF) remain\nthe paid differentiator via the export tools.\n\nDefined here rather than importing ``DrawingRef`` because the web\n``schemas`` package imports back into this module (``schemas.render``),\nso reusing it would create an import cycle — the MCP wire contract keeps\nits own copy, the same pattern as ``BoQRow`` / ``DrawingReference``.",
        +                    "properties": {
        +                      "entity_count": {
        +                        "minimum": 0,
        +                        "type": "integer"
        +                      },
        +                      "svg_b64": {
        +                        "minLength": 1,
        +                        "type": "string"
        +                      },
        +                      "unit_of_drawing": {
        +                        "const": "m",
        +                        "default": "m",
        +                        "type": "string"
        +                      },
        +                      "viewbox_height": {
        +                        "exclusiveMinimum": 0,
        +                        "type": "number"
        +                      },
        +                      "viewbox_width": {
        +                        "exclusiveMinimum": 0,
        +                        "type": "number"
        +                      },
        +                      "viewbox_x": {
        +                        "type": "number"
        +                      },
        +                      "viewbox_y": {
        +                        "type": "number"
        +                      }
        +                    },
        +                    "required": [
        +                      "svg_b64",
        +                      "viewbox_x",
        +                      "viewbox_y",
        +                      "viewbox_width",
        +                      "viewbox_height",
        +                      "entity_count"
        +                    ],
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "drawings": {
        +                "anyOf": [
        +                  {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.6 — paid-tier drawing artefact pointer.\n\n`url` is an R2-signed URL; expiry is carried in `_meta.deliverables.expires_at`\non the envelope (not duplicated here). `layers` is DXF-only; PDF/SVG\ncallers omit it.",
        +                      "properties": {
        +                        "drawing_type": {
        +                          "enum": [
        +                            "section",
        +                            "plan",
        +                            "elevation",
        +                            "isometric",
        +                            "detail"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "format": {
        +                          "enum": [
        +                            "DXF",
        +                            "PDF",
        +                            "SVG"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "layers": {
        +                          "anyOf": [
        +                            {
        +                              "items": {
        +                                "type": "string"
        +                              },
        +                              "type": "array"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ],
        +                          "default": null
        +                        },
        +                        "scale": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "sheet_size": {
        +                          "enum": [
        +                            "A1",
        +                            "A2",
        +                            "A3",
        +                            "A4"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "url": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "drawing_type",
        +                        "format",
        +                        "url",
        +                        "sheet_size",
        +                        "scale"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "parameters_used": {
        +                "additionalProperties": false,
        +                "description": "Schema § 1.2 — the parameter snapshot the engine actually used.\n\nSplits user-supplied values from engine defaults so customers can see\nwhich numbers came from them and which the engine filled in. Every\ndefaulted parameter SHOULD have a corresponding entry in `assumptions`\n— the bridge layer enforces this when wrapping engine output.",
        +                "properties": {
        +                  "assumptions": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "engine_defaults": {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  "user_supplied": {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  }
        +                },
        +                "type": "object"
        +              },
        +              "standard": {
        +                "enum": [
        +                  "CESMM4",
        +                  "NRM2",
        +                  "SMM7",
        +                  "MMHW"
        +                ],
        +                "type": "string"
        +              },
        +              "text_summary": {
        +                "maxLength": 2000,
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "totals_summary": {
        +                "additionalProperties": false,
        +                "description": "Schema § 1.4 — totals_summary as a typed wrapper around the free-form dict.\n\nWire shape is a flat object (`{\"concrete_m3\": {...}, \"rebar_t\": {...}}`).\nWe model it as `RootModel`-equivalent via `model_config(extra=\"allow\")`\n+ a single `__root__`-style `entries` dict. Pydantic v2 recommends\n`RootModel` for free-form roots; using a wrapper class keeps the import\nsurface uniform with the rest of this module.",
        +                "properties": {
        +                  "entries": {
        +                    "additionalProperties": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.4 — single material/work-class total entry.",
        +                      "properties": {
        +                        "quantity": {
        +                          "minimum": 0,
        +                          "type": "number"
        +                        },
        +                        "unit": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "quantity",
        +                        "unit"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "object"
        +                  }
        +                },
        +                "type": "object"
        +              },
        +              "warnings": {
        +                "items": {
        +                  "additionalProperties": false,
        +                  "description": "Schema § 1.8 — a non-fatal geometry advisory (56th-fire T2).\n\nThe wire projection of the engine's `core.GeometryWarning`. Advisory only:\na warning NEVER changes a measured quantity — it flags geometry that is\nvalid but likely a mistake (e.g. a stale dependent-height default). Present\non BOTH tiers — a correctness/safety signal, not a paid feature.",
        +                  "properties": {
        +                    "affected_params": {
        +                      "items": {
        +                        "type": "string"
        +                      },
        +                      "type": "array"
        +                    },
        +                    "code": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "detail": {
        +                      "additionalProperties": {
        +                        "type": "number"
        +                      },
        +                      "type": "object"
        +                    },
        +                    "message": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "severity": {
        +                      "enum": [
        +                        "info",
        +                        "advisory",
        +                        "caution"
        +                      ],
        +                      "type": "string"
        +                    }
        +                  },
        +                  "required": [
        +                    "code",
        +                    "severity",
        +                    "message"
        +                  ],
        +                  "type": "object"
        +                },
        +                "type": "array"
        +              }
        +            },
        +            "required": [
        +              "assembly_slug",
        +              "standard",
        +              "parameters_used",
        +              "boq_rows",
        +              "totals_summary",
        +              "text_summary"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      },
        +      "error": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        +            "properties": {
        +              "code": {
        +                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        +                "enum": [
        +                  "RATE_LIMIT_EXCEEDED",
        +                  "TIER_INSUFFICIENT",
        +                  "INVALID_INPUT",
        +                  "SCHEMA_VERSION_MISMATCH",
        +                  "SCHEMA_INVARIANT_VIOLATION",
        +                  "UPSTREAM_TIMEOUT",
        +                  "BACKEND_FAILURE",
        +                  "IP_BLOCKED",
        +                  "RESOURCE_NOT_FOUND",
        +                  "RENDER_FAILURE",
        +                  "OCR_LOW_CONFIDENCE",
        +                  "MANUAL_REVIEW_REQUIRED",
        +                  "ACCEPTANCE_REQUIRED",
        +                  "INVALID_TOKEN"
        +                ],
        +                "type": "string"
        +              },
        +              "details": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "message": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "recoverable": {
        +                "type": "boolean"
        +              },
        +              "retry_after_seconds": {
        +                "anyOf": [
        +                  {
        +                    "minimum": 0,
        +                    "type": "integer"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              }
        +            },
        +            "required": [
        +              "code",
        +              "message",
        +              "recoverable"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      }
        +    },
        +    "required": [
        +      "_meta"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "_meta": {
        +        "additionalProperties": false,
        +        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        +        "properties": {
        +          "deliverables": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        +                "properties": {
        +                  "docx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "dxf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "expires_at": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  },
        +                  "pdf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "xlsx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "expires_at"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "document_id": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "issued_at": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "rate_limit_remaining": {
        +            "anyOf": [
        +              {
        +                "minimum": 0,
        +                "type": "integer"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "request_id": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "schema_version": {
        +            "const": "1.0.0",
        +            "default": "1.0.0",
        +            "type": "string"
        +          },
        +          "scope_boundary": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        +                "properties": {
        +                  "not_in_scope": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "produced": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "recommended_companions": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "type": "string"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "produced",
        +                  "not_in_scope"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tier": {
        +            "enum": [
        +              "free",
        +              "paid"
        +            ],
        +            "type": "string"
        +          },
        +          "tier_upgrade": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        +                "properties": {
        +                  "available_tiers": {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        +                      "properties": {
        +                        "billing": {
        +                          "enum": [
        +                            "one_off",
        +                            "monthly",
        +                            "annual"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "currency": {
        +                          "enum": [
        +                            "GBP",
        +                            "SGD",
        +                            "EUR",
        +                            "USD",
        +                            "CAD",
        +                            "AUD",
        +                            "NZD",
        +                            "MYR"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "display_name": {
        +                          "type": "string"
        +                        },
        +                        "price_local": {
        +                          "type": "number"
        +                        },
        +                        "tier_slug": {
        +                          "enum": [
        +                            "7_day_pass",
        +                            "solo",
        +                            "studio",
        +                            "practice"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "unlock_summary": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "tier_slug",
        +                        "display_name",
        +                        "price_local",
        +                        "currency",
        +                        "billing",
        +                        "unlock_summary"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "current_tier": {
        +                    "const": "free",
        +                    "default": "free",
        +                    "type": "string"
        +                  },
        +                  "pass_credit": {
        +                    "anyOf": [
        +                      {
        +                        "additionalProperties": false,
        +                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        +                        "properties": {
        +                          "amount_local": {
        +                            "type": "number"
        +                          },
        +                          "applies_to": {
        +                            "const": "solo_first_month",
        +                            "default": "solo_first_month",
        +                            "type": "string"
        +                          },
        +                          "currency": {
        +                            "type": "string"
        +                          },
        +                          "redeemable_until": {
        +                            "type": "string"
        +                          }
        +                        },
        +                        "required": [
        +                          "amount_local",
        +                          "currency",
        +                          "redeemable_until"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "pricing_url": {
        +                    "default": "https://civilquants.com/pricing",
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "available_tiers"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tos_url": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "upgrade_hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "warranty_disclaimer": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          }
        +        },
        +        "required": [
        +          "request_id",
        +          "issued_at",
        +          "tier"
        +        ],
        +        "type": "object"
        +      },
        +      "data": {
        +        "default": null,
        +        "title": "Data"
        +      },
        +      "error": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        +            "properties": {
        +              "code": {
        +                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        +                "enum": [
        +                  "RATE_LIMIT_EXCEEDED",
        +                  "TIER_INSUFFICIENT",
        +                  "INVALID_INPUT",
        +                  "SCHEMA_VERSION_MISMATCH",
        +                  "SCHEMA_INVARIANT_VIOLATION",
        +                  "UPSTREAM_TIMEOUT",
        +                  "BACKEND_FAILURE",
        +                  "IP_BLOCKED",
        +                  "RESOURCE_NOT_FOUND",
        +                  "RENDER_FAILURE",
        +                  "OCR_LOW_CONFIDENCE",
        +                  "MANUAL_REVIEW_REQUIRED",
        +                  "ACCEPTANCE_REQUIRED",
        +                  "INVALID_TOKEN"
        +                ],
        +                "type": "string"
        +              },
        +              "details": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "message": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "recoverable": {
        +                "type": "boolean"
        +              },
        +              "retry_after_seconds": {
        +                "anyOf": [
        +                  {
        +                    "minimum": 0,
        +                    "type": "integer"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              }
        +            },
        +            "required": [
        +              "code",
        +              "message",
        +              "recoverable"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      }
        +    },
        +    "required": [
        +      "_meta"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedcompute_carrier_pipe_run1 field changed
      • changedOutput schema / properties / result / anyOf
        Previous value: -[
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "_meta": {
        -        "additionalProperties": false,
        -        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        -        "properties": {
        -          "deliverables": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        -                "properties": {
        -                  "docx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "dxf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "expires_at": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  },
        -                  "pdf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "xlsx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "expires_at"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "document_id": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "issued_at": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "rate_limit_remaining": {
        -            "anyOf": [
        -              {
        -                "minimum": 0,
        -                "type": "integer"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "request_id": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "schema_version": {
        -            "const": "1.0.0",
        -            "default": "1.0.0",
        -            "type": "string"
        -          },
        -          "scope_boundary": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        -                "properties": {
        -                  "not_in_scope": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "produced": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "recommended_companions": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "type": "string"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "produced",
        -                  "not_in_scope"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tier": {
        -            "enum": [
        -              "free",
        -              "paid"
        -            ],
        -            "type": "string"
        -          },
        -          "tier_upgrade": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        -                "properties": {
        -                  "available_tiers": {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        -                      "properties": {
        -                        "billing": {
        -                          "enum": [
        -                            "one_off",
        -                            "monthly",
        -                            "annual"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "currency": {
        -                          "enum": [
        -                            "GBP",
        -                            "SGD",
        -                            "EUR",
        -                            "USD",
        -                            "CAD",
        -                            "AUD",
        -                            "NZD",
        -                            "MYR"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "display_name": {
        -                          "type": "string"
        -                        },
        -                        "price_local": {
        -                          "type": "number"
        -                        },
        -                        "tier_slug": {
        -                          "enum": [
        -                            "7_day_pass",
        -                            "solo",
        -                            "studio",
        -                            "practice"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "unlock_summary": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "tier_slug",
        -                        "display_name",
        -                        "price_local",
        -                        "currency",
        -                        "billing",
        -                        "unlock_summary"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "current_tier": {
        -                    "const": "free",
        -                    "default": "free",
        -                    "type": "string"
        -                  },
        -                  "pass_credit": {
        -                    "anyOf": [
        -                      {
        -                        "additionalProperties": false,
        -                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        -                        "properties": {
        -                          "amount_local": {
        -                            "type": "number"
        -                          },
        -                          "applies_to": {
        -                            "const": "solo_first_month",
        -                            "default": "solo_first_month",
        -                            "type": "string"
        -                          },
        -                          "currency": {
        -                            "type": "string"
        -                          },
        -                          "redeemable_until": {
        -                            "type": "string"
        -                          }
        -                        },
        -                        "required": [
        -                          "amount_local",
        -                          "currency",
        -                          "redeemable_until"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "pricing_url": {
        -                    "default": "https://civilquants.com/pricing",
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "available_tiers"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tos_url": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "upgrade_hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "warranty_disclaimer": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          }
        -        },
        -        "required": [
        -          "request_id",
        -          "issued_at",
        -          "tier"
        -        ],
        -        "type": "object"
        -      },
        -      "data": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Schema § 1.1 — the typed payload returned inside `MCPResponse[ComputeResult]`.\n\nFree-tier responses omit `drawings` (the downloadable CAD artefact\npointers — the paid differentiator); the bridge enforces this. The\n`audit_trail` and the inline `drawing` preview are present on BOTH tiers\n(V1 ALIGN / 60th-fire D + C). `text_summary` is bounded to 2000 chars —\nkeeps the LLM-facing summary token-cheap and forces longer narrative into\nBoQ row descriptions where it belongs. `warnings` is the non-fatal\ngeometry advisory list (both tiers).",
        -            "properties": {
        -              "assembly_slug": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "audit_trail": {
        -                "anyOf": [
        -                  {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.7 — paid-tier audit-trail entry.\n\nOne entry per BoQ row; `boq_row_index` ties to the row position in\n`ComputeResult.boq_rows`. `derivation` is the human-readable formula\nwalk-through; `formula` is the optional formal expression.",
        -                      "properties": {
        -                        "boq_row_index": {
        -                          "minimum": 0,
        -                          "type": "integer"
        -                        },
        -                        "derivation": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "formula": {
        -                          "anyOf": [
        -                            {
        -                              "type": "string"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ],
        -                          "default": null
        -                        },
        -                        "id": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "parameters_referenced": {
        -                          "items": {
        -                            "type": "string"
        -                          },
        -                          "type": "array"
        -                        }
        -                      },
        -                      "required": [
        -                        "id",
        -                        "boq_row_index",
        -                        "derivation"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "boq_rows": {
        -                "items": {
        -                  "additionalProperties": false,
        -                  "description": "Schema § 1.3 — a single bill row in the requested standard's format.\n\n`description` is the non-verbatim functional description per spec § 13.9 /\n§ 15 invariant — NEVER reproduces a standard's verbatim clause text.\n`rate` / `amount` ship null because rates are commodity data the customer\nowns; the engine's job is the measurement, not the pricing.",
        -                  "properties": {
        -                    "amount": {
        -                      "anyOf": [
        -                        {
        -                          "type": "number"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "attribution": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "audit_id": {
        -                      "anyOf": [
        -                        {
        -                          "type": "string"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "description": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "quantity": {
        -                      "minimum": 0,
        -                      "type": "number"
        -                    },
        -                    "rate": {
        -                      "anyOf": [
        -                        {
        -                          "type": "number"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "unit": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "work_section": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    }
        -                  },
        -                  "required": [
        -                    "work_section",
        -                    "description",
        -                    "quantity",
        -                    "unit",
        -                    "attribution"
        -                  ],
        -                  "type": "object"
        -                },
        -                "type": "array"
        -              },
        -              "drawing": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": false,
        -                    "description": "Schema § 1.6a — inline server-rendered SVG preview of the geometry.\n\nThe MCP mirror of the web ``/compute`` response's ``drawing`` field\n(``api.schemas.compute.DrawingRef``): the same on-screen dimensioned\ndrawing both tiers see in the workspace, surfaced on the MCP compute\nresponse so a chat client can render it inline (60th-fire item C). This\nis the on-screen preview — present on BOTH tiers per the free/paid\nboundary; the downloadable CAD artefacts (DXF / dimensioned PDF) remain\nthe paid differentiator via the export tools.\n\nDefined here rather than importing ``DrawingRef`` because the web\n``schemas`` package imports back into this module (``schemas.render``),\nso reusing it would create an import cycle — the MCP wire contract keeps\nits own copy, the same pattern as ``BoQRow`` / ``DrawingReference``.",
        -                    "properties": {
        -                      "entity_count": {
        -                        "minimum": 0,
        -                        "type": "integer"
        -                      },
        -                      "svg_b64": {
        -                        "minLength": 1,
        -                        "type": "string"
        -                      },
        -                      "unit_of_drawing": {
        -                        "const": "m",
        -                        "default": "m",
        -                        "type": "string"
        -                      },
        -                      "viewbox_height": {
        -                        "exclusiveMinimum": 0,
        -                        "type": "number"
        -                      },
        -                      "viewbox_width": {
        -                        "exclusiveMinimum": 0,
        -                        "type": "number"
        -                      },
        -                      "viewbox_x": {
        -                        "type": "number"
        -                      },
        -                      "viewbox_y": {
        -                        "type": "number"
        -                      }
        -                    },
        -                    "required": [
        -                      "svg_b64",
        -                      "viewbox_x",
        -                      "viewbox_y",
        -                      "viewbox_width",
        -                      "viewbox_height",
        -                      "entity_count"
        -                    ],
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "drawings": {
        -                "anyOf": [
        -                  {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.6 — paid-tier drawing artefact pointer.\n\n`url` is an R2-signed URL; expiry is carried in `_meta.deliverables.expires_at`\non the envelope (not duplicated here). `layers` is DXF-only; PDF/SVG\ncallers omit it.",
        -                      "properties": {
        -                        "drawing_type": {
        -                          "enum": [
        -                            "section",
        -                            "plan",
        -                            "elevation",
        -                            "isometric",
        -                            "detail"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "format": {
        -                          "enum": [
        -                            "DXF",
        -                            "PDF",
        -                            "SVG"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "layers": {
        -                          "anyOf": [
        -                            {
        -                              "items": {
        -                                "type": "string"
        -                              },
        -                              "type": "array"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ],
        -                          "default": null
        -                        },
        -                        "scale": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "sheet_size": {
        -                          "enum": [
        -                            "A1",
        -                            "A2",
        -                            "A3",
        -                            "A4"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "url": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "drawing_type",
        -                        "format",
        -                        "url",
        -                        "sheet_size",
        -                        "scale"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "parameters_used": {
        -                "additionalProperties": false,
        -                "description": "Schema § 1.2 — the parameter snapshot the engine actually used.\n\nSplits user-supplied values from engine defaults so customers can see\nwhich numbers came from them and which the engine filled in. Every\ndefaulted parameter SHOULD have a corresponding entry in `assumptions`\n— the bridge layer enforces this when wrapping engine output.",
        -                "properties": {
        -                  "assumptions": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "engine_defaults": {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  "resolved_from_description": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "additionalProperties": false,
        -                          "description": "Schema § 1.2 — a parameter resolved by the forgiving-input layer.\n\nPopulated by the Track B-Forgiving Haiku-4.5 resolution pass; until that\nlayer lands, instances are constructed only by tests. `source` distinguishes\nthe resolution path so customers can audit which fields were inferred.",
        -                          "properties": {
        -                            "confidence": {
        -                              "anyOf": [
        -                                {
        -                                  "enum": [
        -                                    "high",
        -                                    "medium",
        -                                    "low"
        -                                  ],
        -                                  "type": "string"
        -                                },
        -                                {
        -                                  "type": "null"
        -                                }
        -                              ],
        -                              "default": null
        -                            },
        -                            "field_name": {
        -                              "minLength": 1,
        -                              "type": "string"
        -                            },
        -                            "resolved_value": {},
        -                            "source": {
        -                              "enum": [
        -                                "description_field",
        -                                "haiku_resolution",
        -                                "engine_default"
        -                              ],
        -                              "type": "string"
        -                            }
        -                          },
        -                          "required": [
        -                            "field_name",
        -                            "resolved_value",
        -                            "source"
        -                          ],
        -                          "type": "object"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "user_supplied": {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  }
        -                },
        -                "type": "object"
        -              },
        -              "standard": {
        -                "enum": [
        -                  "CESMM4",
        -                  "NRM2",
        -                  "SMM7",
        -                  "MMHW"
        -                ],
        -                "type": "string"
        -              },
        -              "text_summary": {
        -                "maxLength": 2000,
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "totals_summary": {
        -                "additionalProperties": false,
        -                "description": "Schema § 1.4 — totals_summary as a typed wrapper around the free-form dict.\n\nWire shape is a flat object (`{\"concrete_m3\": {...}, \"rebar_t\": {...}}`).\nWe model it as `RootModel`-equivalent via `model_config(extra=\"allow\")`\n+ a single `__root__`-style `entries` dict. Pydantic v2 recommends\n`RootModel` for free-form roots; using a wrapper class keeps the import\nsurface uniform with the rest of this module.",
        -                "properties": {
        -                  "entries": {
        -                    "additionalProperties": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.4 — single material/work-class total entry.",
        -                      "properties": {
        -                        "quantity": {
        -                          "minimum": 0,
        -                          "type": "number"
        -                        },
        -                        "unit": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "quantity",
        -                        "unit"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "object"
        -                  }
        -                },
        -                "type": "object"
        -              },
        -              "warnings": {
        -                "items": {
        -                  "additionalProperties": false,
        -                  "description": "Schema § 1.8 — a non-fatal geometry advisory (56th-fire T2).\n\nThe wire projection of the engine's `core.GeometryWarning`. Advisory only:\na warning NEVER changes a measured quantity — it flags geometry that is\nvalid but likely a mistake (e.g. a stale dependent-height default). Present\non BOTH tiers — a correctness/safety signal, not a paid feature.",
        -                  "properties": {
        -                    "affected_params": {
        -                      "items": {
        -                        "type": "string"
        -                      },
        -                      "type": "array"
        -                    },
        -                    "code": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "detail": {
        -                      "additionalProperties": {
        -                        "type": "number"
        -                      },
        -                      "type": "object"
        -                    },
        -                    "message": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "severity": {
        -                      "enum": [
        -                        "info",
        -                        "advisory",
        -                        "caution"
        -                      ],
        -                      "type": "string"
        -                    }
        -                  },
        -                  "required": [
        -                    "code",
        -                    "severity",
        -                    "message"
        -                  ],
        -                  "type": "object"
        -                },
        -                "type": "array"
        -              }
        -            },
        -            "required": [
        -              "assembly_slug",
        -              "standard",
        -              "parameters_used",
        -              "boq_rows",
        -              "totals_summary",
        -              "text_summary"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      },
        -      "error": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        -            "properties": {
        -              "code": {
        -                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        -                "enum": [
        -                  "RATE_LIMIT_EXCEEDED",
        -                  "TIER_INSUFFICIENT",
        -                  "INVALID_INPUT",
        -                  "SCHEMA_VERSION_MISMATCH",
        -                  "SCHEMA_INVARIANT_VIOLATION",
        -                  "UPSTREAM_TIMEOUT",
        -                  "BACKEND_FAILURE",
        -                  "IP_BLOCKED",
        -                  "RESOURCE_NOT_FOUND",
        -                  "RENDER_FAILURE",
        -                  "OCR_LOW_CONFIDENCE",
        -                  "MANUAL_REVIEW_REQUIRED",
        -                  "ACCEPTANCE_REQUIRED",
        -                  "INVALID_TOKEN"
        -                ],
        -                "type": "string"
        -              },
        -              "details": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "message": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "recoverable": {
        -                "type": "boolean"
        -              },
        -              "retry_after_seconds": {
        -                "anyOf": [
        -                  {
        -                    "minimum": 0,
        -                    "type": "integer"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              }
        -            },
        -            "required": [
        -              "code",
        -              "message",
        -              "recoverable"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      }
        -    },
        -    "required": [
        -      "_meta"
        -    ],
        -    "type": "object"
        -  },
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "_meta": {
        -        "additionalProperties": false,
        -        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        -        "properties": {
        -          "deliverables": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        -                "properties": {
        -                  "docx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "dxf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "expires_at": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  },
        -                  "pdf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "xlsx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "expires_at"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "document_id": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "issued_at": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "rate_limit_remaining": {
        -            "anyOf": [
        -              {
        -                "minimum": 0,
        -                "type": "integer"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "request_id": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "schema_version": {
        -            "const": "1.0.0",
        -            "default": "1.0.0",
        -            "type": "string"
        -          },
        -          "scope_boundary": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        -                "properties": {
        -                  "not_in_scope": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "produced": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "recommended_companions": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "type": "string"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "produced",
        -                  "not_in_scope"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tier": {
        -            "enum": [
        -              "free",
        -              "paid"
        -            ],
        -            "type": "string"
        -          },
        -          "tier_upgrade": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        -                "properties": {
        -                  "available_tiers": {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        -                      "properties": {
        -                        "billing": {
        -                          "enum": [
        -                            "one_off",
        -                            "monthly",
        -                            "annual"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "currency": {
        -                          "enum": [
        -                            "GBP",
        -                            "SGD",
        -                            "EUR",
        -                            "USD",
        -                            "CAD",
        -                            "AUD",
        -                            "NZD",
        -                            "MYR"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "display_name": {
        -                          "type": "string"
        -                        },
        -                        "price_local": {
        -                          "type": "number"
        -                        },
        -                        "tier_slug": {
        -                          "enum": [
        -                            "7_day_pass",
        -                            "solo",
        -                            "studio",
        -                            "practice"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "unlock_summary": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "tier_slug",
        -                        "display_name",
        -                        "price_local",
        -                        "currency",
        -                        "billing",
        -                        "unlock_summary"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "current_tier": {
        -                    "const": "free",
        -                    "default": "free",
        -                    "type": "string"
        -                  },
        -                  "pass_credit": {
        -                    "anyOf": [
        -                      {
        -                        "additionalProperties": false,
        -                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        -                        "properties": {
        -                          "amount_local": {
        -                            "type": "number"
        -                          },
        -                          "applies_to": {
        -                            "const": "solo_first_month",
        -                            "default": "solo_first_month",
        -                            "type": "string"
        -                          },
        -                          "currency": {
        -                            "type": "string"
        -                          },
        -                          "redeemable_until": {
        -                            "type": "string"
        -                          }
        -                        },
        -                        "required": [
        -                          "amount_local",
        -                          "currency",
        -                          "redeemable_until"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "pricing_url": {
        -                    "default": "https://civilquants.com/pricing",
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "available_tiers"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tos_url": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "upgrade_hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "warranty_disclaimer": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          }
        -        },
        -        "required": [
        -          "request_id",
        -          "issued_at",
        -          "tier"
        -        ],
        -        "type": "object"
        -      },
        -      "data": {
        -        "default": null,
        -        "title": "Data"
        -      },
        -      "error": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        -            "properties": {
        -              "code": {
        -                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        -                "enum": [
        -                  "RATE_LIMIT_EXCEEDED",
        -                  "TIER_INSUFFICIENT",
        -                  "INVALID_INPUT",
        -                  "SCHEMA_VERSION_MISMATCH",
        -                  "SCHEMA_INVARIANT_VIOLATION",
        -                  "UPSTREAM_TIMEOUT",
        -                  "BACKEND_FAILURE",
        -                  "IP_BLOCKED",
        -                  "RESOURCE_NOT_FOUND",
        -                  "RENDER_FAILURE",
        -                  "OCR_LOW_CONFIDENCE",
        -                  "MANUAL_REVIEW_REQUIRED",
        -                  "ACCEPTANCE_REQUIRED",
        -                  "INVALID_TOKEN"
        -                ],
        -                "type": "string"
        -              },
        -              "details": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "message": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "recoverable": {
        -                "type": "boolean"
        -              },
        -              "retry_after_seconds": {
        -                "anyOf": [
        -                  {
        -                    "minimum": 0,
        -                    "type": "integer"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              }
        -            },
        -            "required": [
        -              "code",
        -              "message",
        -              "recoverable"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      }
        -    },
        -    "required": [
        -      "_meta"
        -    ],
        -    "type": "object"
        -  }
        -]New value: +[
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "_meta": {
        +        "additionalProperties": false,
        +        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        +        "properties": {
        +          "deliverables": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        +                "properties": {
        +                  "docx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "dxf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "expires_at": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  },
        +                  "pdf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "xlsx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "expires_at"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "document_id": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "issued_at": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "rate_limit_remaining": {
        +            "anyOf": [
        +              {
        +                "minimum": 0,
        +                "type": "integer"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "request_id": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "schema_version": {
        +            "const": "1.0.0",
        +            "default": "1.0.0",
        +            "type": "string"
        +          },
        +          "scope_boundary": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        +                "properties": {
        +                  "not_in_scope": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "produced": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "recommended_companions": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "type": "string"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "produced",
        +                  "not_in_scope"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tier": {
        +            "enum": [
        +              "free",
        +              "paid"
        +            ],
        +            "type": "string"
        +          },
        +          "tier_upgrade": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        +                "properties": {
        +                  "available_tiers": {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        +                      "properties": {
        +                        "billing": {
        +                          "enum": [
        +                            "one_off",
        +                            "monthly",
        +                            "annual"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "currency": {
        +                          "enum": [
        +                            "GBP",
        +                            "SGD",
        +                            "EUR",
        +                            "USD",
        +                            "CAD",
        +                            "AUD",
        +                            "NZD",
        +                            "MYR"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "display_name": {
        +                          "type": "string"
        +                        },
        +                        "price_local": {
        +                          "type": "number"
        +                        },
        +                        "tier_slug": {
        +                          "enum": [
        +                            "7_day_pass",
        +                            "solo",
        +                            "studio",
        +                            "practice"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "unlock_summary": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "tier_slug",
        +                        "display_name",
        +                        "price_local",
        +                        "currency",
        +                        "billing",
        +                        "unlock_summary"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "current_tier": {
        +                    "const": "free",
        +                    "default": "free",
        +                    "type": "string"
        +                  },
        +                  "pass_credit": {
        +                    "anyOf": [
        +                      {
        +                        "additionalProperties": false,
        +                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        +                        "properties": {
        +                          "amount_local": {
        +                            "type": "number"
        +                          },
        +                          "applies_to": {
        +                            "const": "solo_first_month",
        +                            "default": "solo_first_month",
        +                            "type": "string"
        +                          },
        +                          "currency": {
        +                            "type": "string"
        +                          },
        +                          "redeemable_until": {
        +                            "type": "string"
        +                          }
        +                        },
        +                        "required": [
        +                          "amount_local",
        +                          "currency",
        +                          "redeemable_until"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "pricing_url": {
        +                    "default": "https://civilquants.com/pricing",
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "available_tiers"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tos_url": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "upgrade_hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "warranty_disclaimer": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          }
        +        },
        +        "required": [
        +          "request_id",
        +          "issued_at",
        +          "tier"
        +        ],
        +        "type": "object"
        +      },
        +      "data": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Schema § 1.1 — the typed payload returned inside `MCPResponse[ComputeResult]`.\n\nFree-tier responses omit `drawings` (the downloadable CAD artefact\npointers — the paid differentiator); the bridge enforces this. The\n`audit_trail` and the inline `drawing` preview are present on BOTH tiers\n(V1 ALIGN / 60th-fire D + C). `text_summary` is bounded to 2000 chars —\nkeeps the LLM-facing summary token-cheap and forces longer narrative into\nBoQ row descriptions where it belongs. `warnings` is the non-fatal\ngeometry advisory list (both tiers).",
        +            "properties": {
        +              "assembly_slug": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "audit_trail": {
        +                "anyOf": [
        +                  {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.7 — paid-tier audit-trail entry.\n\nOne entry per BoQ row; `boq_row_index` ties to the row position in\n`ComputeResult.boq_rows`. `derivation` is the human-readable formula\nwalk-through; `formula` is the optional formal expression.",
        +                      "properties": {
        +                        "boq_row_index": {
        +                          "minimum": 0,
        +                          "type": "integer"
        +                        },
        +                        "derivation": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "formula": {
        +                          "anyOf": [
        +                            {
        +                              "type": "string"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ],
        +                          "default": null
        +                        },
        +                        "id": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "parameters_referenced": {
        +                          "items": {
        +                            "type": "string"
        +                          },
        +                          "type": "array"
        +                        }
        +                      },
        +                      "required": [
        +                        "id",
        +                        "boq_row_index",
        +                        "derivation"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "boq_rows": {
        +                "items": {
        +                  "additionalProperties": false,
        +                  "description": "Schema § 1.3 — a single bill row in the requested standard's format.\n\n`description` is the non-verbatim functional description per spec § 13.9 /\n§ 15 invariant — NEVER reproduces a standard's verbatim clause text.\n`rate` / `amount` ship null because rates are commodity data the customer\nowns; the engine's job is the measurement, not the pricing.",
        +                  "properties": {
        +                    "amount": {
        +                      "anyOf": [
        +                        {
        +                          "type": "number"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "attribution": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "audit_id": {
        +                      "anyOf": [
        +                        {
        +                          "type": "string"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "description": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "quantity": {
        +                      "minimum": 0,
        +                      "type": "number"
        +                    },
        +                    "rate": {
        +                      "anyOf": [
        +                        {
        +                          "type": "number"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "unit": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "work_section": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    }
        +                  },
        +                  "required": [
        +                    "work_section",
        +                    "description",
        +                    "quantity",
        +                    "unit",
        +                    "attribution"
        +                  ],
        +                  "type": "object"
        +                },
        +                "type": "array"
        +              },
        +              "drawing": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": false,
        +                    "description": "Schema § 1.6a — inline server-rendered SVG preview of the geometry.\n\nThe MCP mirror of the web ``/compute`` response's ``drawing`` field\n(``api.schemas.compute.DrawingRef``): the same on-screen dimensioned\ndrawing both tiers see in the workspace, surfaced on the MCP compute\nresponse so a chat client can render it inline (60th-fire item C). This\nis the on-screen preview — present on BOTH tiers per the free/paid\nboundary; the downloadable CAD artefacts (DXF / dimensioned PDF) remain\nthe paid differentiator via the export tools.\n\nDefined here rather than importing ``DrawingRef`` because the web\n``schemas`` package imports back into this module (``schemas.render``),\nso reusing it would create an import cycle — the MCP wire contract keeps\nits own copy, the same pattern as ``BoQRow`` / ``DrawingReference``.",
        +                    "properties": {
        +                      "entity_count": {
        +                        "minimum": 0,
        +                        "type": "integer"
        +                      },
        +                      "svg_b64": {
        +                        "minLength": 1,
        +                        "type": "string"
        +                      },
        +                      "unit_of_drawing": {
        +                        "const": "m",
        +                        "default": "m",
        +                        "type": "string"
        +                      },
        +                      "viewbox_height": {
        +                        "exclusiveMinimum": 0,
        +                        "type": "number"
        +                      },
        +                      "viewbox_width": {
        +                        "exclusiveMinimum": 0,
        +                        "type": "number"
        +                      },
        +                      "viewbox_x": {
        +                        "type": "number"
        +                      },
        +                      "viewbox_y": {
        +                        "type": "number"
        +                      }
        +                    },
        +                    "required": [
        +                      "svg_b64",
        +                      "viewbox_x",
        +                      "viewbox_y",
        +                      "viewbox_width",
        +                      "viewbox_height",
        +                      "entity_count"
        +                    ],
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "drawings": {
        +                "anyOf": [
        +                  {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.6 — paid-tier drawing artefact pointer.\n\n`url` is an R2-signed URL; expiry is carried in `_meta.deliverables.expires_at`\non the envelope (not duplicated here). `layers` is DXF-only; PDF/SVG\ncallers omit it.",
        +                      "properties": {
        +                        "drawing_type": {
        +                          "enum": [
        +                            "section",
        +                            "plan",
        +                            "elevation",
        +                            "isometric",
        +                            "detail"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "format": {
        +                          "enum": [
        +                            "DXF",
        +                            "PDF",
        +                            "SVG"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "layers": {
        +                          "anyOf": [
        +                            {
        +                              "items": {
        +                                "type": "string"
        +                              },
        +                              "type": "array"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ],
        +                          "default": null
        +                        },
        +                        "scale": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "sheet_size": {
        +                          "enum": [
        +                            "A1",
        +                            "A2",
        +                            "A3",
        +                            "A4"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "url": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "drawing_type",
        +                        "format",
        +                        "url",
        +                        "sheet_size",
        +                        "scale"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "parameters_used": {
        +                "additionalProperties": false,
        +                "description": "Schema § 1.2 — the parameter snapshot the engine actually used.\n\nSplits user-supplied values from engine defaults so customers can see\nwhich numbers came from them and which the engine filled in. Every\ndefaulted parameter SHOULD have a corresponding entry in `assumptions`\n— the bridge layer enforces this when wrapping engine output.",
        +                "properties": {
        +                  "assumptions": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "engine_defaults": {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  "user_supplied": {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  }
        +                },
        +                "type": "object"
        +              },
        +              "standard": {
        +                "enum": [
        +                  "CESMM4",
        +                  "NRM2",
        +                  "SMM7",
        +                  "MMHW"
        +                ],
        +                "type": "string"
        +              },
        +              "text_summary": {
        +                "maxLength": 2000,
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "totals_summary": {
        +                "additionalProperties": false,
        +                "description": "Schema § 1.4 — totals_summary as a typed wrapper around the free-form dict.\n\nWire shape is a flat object (`{\"concrete_m3\": {...}, \"rebar_t\": {...}}`).\nWe model it as `RootModel`-equivalent via `model_config(extra=\"allow\")`\n+ a single `__root__`-style `entries` dict. Pydantic v2 recommends\n`RootModel` for free-form roots; using a wrapper class keeps the import\nsurface uniform with the rest of this module.",
        +                "properties": {
        +                  "entries": {
        +                    "additionalProperties": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.4 — single material/work-class total entry.",
        +                      "properties": {
        +                        "quantity": {
        +                          "minimum": 0,
        +                          "type": "number"
        +                        },
        +                        "unit": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "quantity",
        +                        "unit"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "object"
        +                  }
        +                },
        +                "type": "object"
        +              },
        +              "warnings": {
        +                "items": {
        +                  "additionalProperties": false,
        +                  "description": "Schema § 1.8 — a non-fatal geometry advisory (56th-fire T2).\n\nThe wire projection of the engine's `core.GeometryWarning`. Advisory only:\na warning NEVER changes a measured quantity — it flags geometry that is\nvalid but likely a mistake (e.g. a stale dependent-height default). Present\non BOTH tiers — a correctness/safety signal, not a paid feature.",
        +                  "properties": {
        +                    "affected_params": {
        +                      "items": {
        +                        "type": "string"
        +                      },
        +                      "type": "array"
        +                    },
        +                    "code": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "detail": {
        +                      "additionalProperties": {
        +                        "type": "number"
        +                      },
        +                      "type": "object"
        +                    },
        +                    "message": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "severity": {
        +                      "enum": [
        +                        "info",
        +                        "advisory",
        +                        "caution"
        +                      ],
        +                      "type": "string"
        +                    }
        +                  },
        +                  "required": [
        +                    "code",
        +                    "severity",
        +                    "message"
        +                  ],
        +                  "type": "object"
        +                },
        +                "type": "array"
        +              }
        +            },
        +            "required": [
        +              "assembly_slug",
        +              "standard",
        +              "parameters_used",
        +              "boq_rows",
        +              "totals_summary",
        +              "text_summary"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      },
        +      "error": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        +            "properties": {
        +              "code": {
        +                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        +                "enum": [
        +                  "RATE_LIMIT_EXCEEDED",
        +                  "TIER_INSUFFICIENT",
        +                  "INVALID_INPUT",
        +                  "SCHEMA_VERSION_MISMATCH",
        +                  "SCHEMA_INVARIANT_VIOLATION",
        +                  "UPSTREAM_TIMEOUT",
        +                  "BACKEND_FAILURE",
        +                  "IP_BLOCKED",
        +                  "RESOURCE_NOT_FOUND",
        +                  "RENDER_FAILURE",
        +                  "OCR_LOW_CONFIDENCE",
        +                  "MANUAL_REVIEW_REQUIRED",
        +                  "ACCEPTANCE_REQUIRED",
        +                  "INVALID_TOKEN"
        +                ],
        +                "type": "string"
        +              },
        +              "details": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "message": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "recoverable": {
        +                "type": "boolean"
        +              },
        +              "retry_after_seconds": {
        +                "anyOf": [
        +                  {
        +                    "minimum": 0,
        +                    "type": "integer"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              }
        +            },
        +            "required": [
        +              "code",
        +              "message",
        +              "recoverable"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      }
        +    },
        +    "required": [
        +      "_meta"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "_meta": {
        +        "additionalProperties": false,
        +        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        +        "properties": {
        +          "deliverables": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        +                "properties": {
        +                  "docx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "dxf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "expires_at": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  },
        +                  "pdf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "xlsx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "expires_at"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "document_id": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "issued_at": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "rate_limit_remaining": {
        +            "anyOf": [
        +              {
        +                "minimum": 0,
        +                "type": "integer"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "request_id": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "schema_version": {
        +            "const": "1.0.0",
        +            "default": "1.0.0",
        +            "type": "string"
        +          },
        +          "scope_boundary": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        +                "properties": {
        +                  "not_in_scope": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "produced": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "recommended_companions": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "type": "string"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "produced",
        +                  "not_in_scope"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tier": {
        +            "enum": [
        +              "free",
        +              "paid"
        +            ],
        +            "type": "string"
        +          },
        +          "tier_upgrade": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        +                "properties": {
        +                  "available_tiers": {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        +                      "properties": {
        +                        "billing": {
        +                          "enum": [
        +                            "one_off",
        +                            "monthly",
        +                            "annual"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "currency": {
        +                          "enum": [
        +                            "GBP",
        +                            "SGD",
        +                            "EUR",
        +                            "USD",
        +                            "CAD",
        +                            "AUD",
        +                            "NZD",
        +                            "MYR"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "display_name": {
        +                          "type": "string"
        +                        },
        +                        "price_local": {
        +                          "type": "number"
        +                        },
        +                        "tier_slug": {
        +                          "enum": [
        +                            "7_day_pass",
        +                            "solo",
        +                            "studio",
        +                            "practice"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "unlock_summary": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "tier_slug",
        +                        "display_name",
        +                        "price_local",
        +                        "currency",
        +                        "billing",
        +                        "unlock_summary"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "current_tier": {
        +                    "const": "free",
        +                    "default": "free",
        +                    "type": "string"
        +                  },
        +                  "pass_credit": {
        +                    "anyOf": [
        +                      {
        +                        "additionalProperties": false,
        +                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        +                        "properties": {
        +                          "amount_local": {
        +                            "type": "number"
        +                          },
        +                          "applies_to": {
        +                            "const": "solo_first_month",
        +                            "default": "solo_first_month",
        +                            "type": "string"
        +                          },
        +                          "currency": {
        +                            "type": "string"
        +                          },
        +                          "redeemable_until": {
        +                            "type": "string"
        +                          }
        +                        },
        +                        "required": [
        +                          "amount_local",
        +                          "currency",
        +                          "redeemable_until"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "pricing_url": {
        +                    "default": "https://civilquants.com/pricing",
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "available_tiers"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tos_url": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "upgrade_hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "warranty_disclaimer": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          }
        +        },
        +        "required": [
        +          "request_id",
        +          "issued_at",
        +          "tier"
        +        ],
        +        "type": "object"
        +      },
        +      "data": {
        +        "default": null,
        +        "title": "Data"
        +      },
        +      "error": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        +            "properties": {
        +              "code": {
        +                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        +                "enum": [
        +                  "RATE_LIMIT_EXCEEDED",
        +                  "TIER_INSUFFICIENT",
        +                  "INVALID_INPUT",
        +                  "SCHEMA_VERSION_MISMATCH",
        +                  "SCHEMA_INVARIANT_VIOLATION",
        +                  "UPSTREAM_TIMEOUT",
        +                  "BACKEND_FAILURE",
        +                  "IP_BLOCKED",
        +                  "RESOURCE_NOT_FOUND",
        +                  "RENDER_FAILURE",
        +                  "OCR_LOW_CONFIDENCE",
        +                  "MANUAL_REVIEW_REQUIRED",
        +                  "ACCEPTANCE_REQUIRED",
        +                  "INVALID_TOKEN"
        +                ],
        +                "type": "string"
        +              },
        +              "details": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "message": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "recoverable": {
        +                "type": "boolean"
        +              },
        +              "retry_after_seconds": {
        +                "anyOf": [
        +                  {
        +                    "minimum": 0,
        +                    "type": "integer"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              }
        +            },
        +            "required": [
        +              "code",
        +              "message",
        +              "recoverable"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      }
        +    },
        +    "required": [
        +      "_meta"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedcompute_catchpit1 field changed
      • changedOutput schema / properties / result / anyOf
        Previous value: -[
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "_meta": {
        -        "additionalProperties": false,
        -        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        -        "properties": {
        -          "deliverables": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        -                "properties": {
        -                  "docx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "dxf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "expires_at": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  },
        -                  "pdf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "xlsx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "expires_at"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "document_id": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "issued_at": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "rate_limit_remaining": {
        -            "anyOf": [
        -              {
        -                "minimum": 0,
        -                "type": "integer"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "request_id": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "schema_version": {
        -            "const": "1.0.0",
        -            "default": "1.0.0",
        -            "type": "string"
        -          },
        -          "scope_boundary": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        -                "properties": {
        -                  "not_in_scope": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "produced": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "recommended_companions": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "type": "string"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "produced",
        -                  "not_in_scope"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tier": {
        -            "enum": [
        -              "free",
        -              "paid"
        -            ],
        -            "type": "string"
        -          },
        -          "tier_upgrade": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        -                "properties": {
        -                  "available_tiers": {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        -                      "properties": {
        -                        "billing": {
        -                          "enum": [
        -                            "one_off",
        -                            "monthly",
        -                            "annual"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "currency": {
        -                          "enum": [
        -                            "GBP",
        -                            "SGD",
        -                            "EUR",
        -                            "USD",
        -                            "CAD",
        -                            "AUD",
        -                            "NZD",
        -                            "MYR"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "display_name": {
        -                          "type": "string"
        -                        },
        -                        "price_local": {
        -                          "type": "number"
        -                        },
        -                        "tier_slug": {
        -                          "enum": [
        -                            "7_day_pass",
        -                            "solo",
        -                            "studio",
        -                            "practice"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "unlock_summary": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "tier_slug",
        -                        "display_name",
        -                        "price_local",
        -                        "currency",
        -                        "billing",
        -                        "unlock_summary"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "current_tier": {
        -                    "const": "free",
        -                    "default": "free",
        -                    "type": "string"
        -                  },
        -                  "pass_credit": {
        -                    "anyOf": [
        -                      {
        -                        "additionalProperties": false,
        -                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        -                        "properties": {
        -                          "amount_local": {
        -                            "type": "number"
        -                          },
        -                          "applies_to": {
        -                            "const": "solo_first_month",
        -                            "default": "solo_first_month",
        -                            "type": "string"
        -                          },
        -                          "currency": {
        -                            "type": "string"
        -                          },
        -                          "redeemable_until": {
        -                            "type": "string"
        -                          }
        -                        },
        -                        "required": [
        -                          "amount_local",
        -                          "currency",
        -                          "redeemable_until"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "pricing_url": {
        -                    "default": "https://civilquants.com/pricing",
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "available_tiers"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tos_url": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "upgrade_hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "warranty_disclaimer": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          }
        -        },
        -        "required": [
        -          "request_id",
        -          "issued_at",
        -          "tier"
        -        ],
        -        "type": "object"
        -      },
        -      "data": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Schema § 1.1 — the typed payload returned inside `MCPResponse[ComputeResult]`.\n\nFree-tier responses omit `drawings` (the downloadable CAD artefact\npointers — the paid differentiator); the bridge enforces this. The\n`audit_trail` and the inline `drawing` preview are present on BOTH tiers\n(V1 ALIGN / 60th-fire D + C). `text_summary` is bounded to 2000 chars —\nkeeps the LLM-facing summary token-cheap and forces longer narrative into\nBoQ row descriptions where it belongs. `warnings` is the non-fatal\ngeometry advisory list (both tiers).",
        -            "properties": {
        -              "assembly_slug": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "audit_trail": {
        -                "anyOf": [
        -                  {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.7 — paid-tier audit-trail entry.\n\nOne entry per BoQ row; `boq_row_index` ties to the row position in\n`ComputeResult.boq_rows`. `derivation` is the human-readable formula\nwalk-through; `formula` is the optional formal expression.",
        -                      "properties": {
        -                        "boq_row_index": {
        -                          "minimum": 0,
        -                          "type": "integer"
        -                        },
        -                        "derivation": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "formula": {
        -                          "anyOf": [
        -                            {
        -                              "type": "string"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ],
        -                          "default": null
        -                        },
        -                        "id": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "parameters_referenced": {
        -                          "items": {
        -                            "type": "string"
        -                          },
        -                          "type": "array"
        -                        }
        -                      },
        -                      "required": [
        -                        "id",
        -                        "boq_row_index",
        -                        "derivation"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "boq_rows": {
        -                "items": {
        -                  "additionalProperties": false,
        -                  "description": "Schema § 1.3 — a single bill row in the requested standard's format.\n\n`description` is the non-verbatim functional description per spec § 13.9 /\n§ 15 invariant — NEVER reproduces a standard's verbatim clause text.\n`rate` / `amount` ship null because rates are commodity data the customer\nowns; the engine's job is the measurement, not the pricing.",
        -                  "properties": {
        -                    "amount": {
        -                      "anyOf": [
        -                        {
        -                          "type": "number"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "attribution": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "audit_id": {
        -                      "anyOf": [
        -                        {
        -                          "type": "string"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "description": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "quantity": {
        -                      "minimum": 0,
        -                      "type": "number"
        -                    },
        -                    "rate": {
        -                      "anyOf": [
        -                        {
        -                          "type": "number"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "unit": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "work_section": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    }
        -                  },
        -                  "required": [
        -                    "work_section",
        -                    "description",
        -                    "quantity",
        -                    "unit",
        -                    "attribution"
        -                  ],
        -                  "type": "object"
        -                },
        -                "type": "array"
        -              },
        -              "drawing": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": false,
        -                    "description": "Schema § 1.6a — inline server-rendered SVG preview of the geometry.\n\nThe MCP mirror of the web ``/compute`` response's ``drawing`` field\n(``api.schemas.compute.DrawingRef``): the same on-screen dimensioned\ndrawing both tiers see in the workspace, surfaced on the MCP compute\nresponse so a chat client can render it inline (60th-fire item C). This\nis the on-screen preview — present on BOTH tiers per the free/paid\nboundary; the downloadable CAD artefacts (DXF / dimensioned PDF) remain\nthe paid differentiator via the export tools.\n\nDefined here rather than importing ``DrawingRef`` because the web\n``schemas`` package imports back into this module (``schemas.render``),\nso reusing it would create an import cycle — the MCP wire contract keeps\nits own copy, the same pattern as ``BoQRow`` / ``DrawingReference``.",
        -                    "properties": {
        -                      "entity_count": {
        -                        "minimum": 0,
        -                        "type": "integer"
        -                      },
        -                      "svg_b64": {
        -                        "minLength": 1,
        -                        "type": "string"
        -                      },
        -                      "unit_of_drawing": {
        -                        "const": "m",
        -                        "default": "m",
        -                        "type": "string"
        -                      },
        -                      "viewbox_height": {
        -                        "exclusiveMinimum": 0,
        -                        "type": "number"
        -                      },
        -                      "viewbox_width": {
        -                        "exclusiveMinimum": 0,
        -                        "type": "number"
        -                      },
        -                      "viewbox_x": {
        -                        "type": "number"
        -                      },
        -                      "viewbox_y": {
        -                        "type": "number"
        -                      }
        -                    },
        -                    "required": [
        -                      "svg_b64",
        -                      "viewbox_x",
        -                      "viewbox_y",
        -                      "viewbox_width",
        -                      "viewbox_height",
        -                      "entity_count"
        -                    ],
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "drawings": {
        -                "anyOf": [
        -                  {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.6 — paid-tier drawing artefact pointer.\n\n`url` is an R2-signed URL; expiry is carried in `_meta.deliverables.expires_at`\non the envelope (not duplicated here). `layers` is DXF-only; PDF/SVG\ncallers omit it.",
        -                      "properties": {
        -                        "drawing_type": {
        -                          "enum": [
        -                            "section",
        -                            "plan",
        -                            "elevation",
        -                            "isometric",
        -                            "detail"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "format": {
        -                          "enum": [
        -                            "DXF",
        -                            "PDF",
        -                            "SVG"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "layers": {
        -                          "anyOf": [
        -                            {
        -                              "items": {
        -                                "type": "string"
        -                              },
        -                              "type": "array"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ],
        -                          "default": null
        -                        },
        -                        "scale": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "sheet_size": {
        -                          "enum": [
        -                            "A1",
        -                            "A2",
        -                            "A3",
        -                            "A4"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "url": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "drawing_type",
        -                        "format",
        -                        "url",
        -                        "sheet_size",
        -                        "scale"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "parameters_used": {
        -                "additionalProperties": false,
        -                "description": "Schema § 1.2 — the parameter snapshot the engine actually used.\n\nSplits user-supplied values from engine defaults so customers can see\nwhich numbers came from them and which the engine filled in. Every\ndefaulted parameter SHOULD have a corresponding entry in `assumptions`\n— the bridge layer enforces this when wrapping engine output.",
        -                "properties": {
        -                  "assumptions": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "engine_defaults": {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  "resolved_from_description": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "additionalProperties": false,
        -                          "description": "Schema § 1.2 — a parameter resolved by the forgiving-input layer.\n\nPopulated by the Track B-Forgiving Haiku-4.5 resolution pass; until that\nlayer lands, instances are constructed only by tests. `source` distinguishes\nthe resolution path so customers can audit which fields were inferred.",
        -                          "properties": {
        -                            "confidence": {
        -                              "anyOf": [
        -                                {
        -                                  "enum": [
        -                                    "high",
        -                                    "medium",
        -                                    "low"
        -                                  ],
        -                                  "type": "string"
        -                                },
        -                                {
        -                                  "type": "null"
        -                                }
        -                              ],
        -                              "default": null
        -                            },
        -                            "field_name": {
        -                              "minLength": 1,
        -                              "type": "string"
        -                            },
        -                            "resolved_value": {},
        -                            "source": {
        -                              "enum": [
        -                                "description_field",
        -                                "haiku_resolution",
        -                                "engine_default"
        -                              ],
        -                              "type": "string"
        -                            }
        -                          },
        -                          "required": [
        -                            "field_name",
        -                            "resolved_value",
        -                            "source"
        -                          ],
        -                          "type": "object"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "user_supplied": {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  }
        -                },
        -                "type": "object"
        -              },
        -              "standard": {
        -                "enum": [
        -                  "CESMM4",
        -                  "NRM2",
        -                  "SMM7",
        -                  "MMHW"
        -                ],
        -                "type": "string"
        -              },
        -              "text_summary": {
        -                "maxLength": 2000,
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "totals_summary": {
        -                "additionalProperties": false,
        -                "description": "Schema § 1.4 — totals_summary as a typed wrapper around the free-form dict.\n\nWire shape is a flat object (`{\"concrete_m3\": {...}, \"rebar_t\": {...}}`).\nWe model it as `RootModel`-equivalent via `model_config(extra=\"allow\")`\n+ a single `__root__`-style `entries` dict. Pydantic v2 recommends\n`RootModel` for free-form roots; using a wrapper class keeps the import\nsurface uniform with the rest of this module.",
        -                "properties": {
        -                  "entries": {
        -                    "additionalProperties": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.4 — single material/work-class total entry.",
        -                      "properties": {
        -                        "quantity": {
        -                          "minimum": 0,
        -                          "type": "number"
        -                        },
        -                        "unit": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "quantity",
        -                        "unit"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "object"
        -                  }
        -                },
        -                "type": "object"
        -              },
        -              "warnings": {
        -                "items": {
        -                  "additionalProperties": false,
        -                  "description": "Schema § 1.8 — a non-fatal geometry advisory (56th-fire T2).\n\nThe wire projection of the engine's `core.GeometryWarning`. Advisory only:\na warning NEVER changes a measured quantity — it flags geometry that is\nvalid but likely a mistake (e.g. a stale dependent-height default). Present\non BOTH tiers — a correctness/safety signal, not a paid feature.",
        -                  "properties": {
        -                    "affected_params": {
        -                      "items": {
        -                        "type": "string"
        -                      },
        -                      "type": "array"
        -                    },
        -                    "code": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "detail": {
        -                      "additionalProperties": {
        -                        "type": "number"
        -                      },
        -                      "type": "object"
        -                    },
        -                    "message": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "severity": {
        -                      "enum": [
        -                        "info",
        -                        "advisory",
        -                        "caution"
        -                      ],
        -                      "type": "string"
        -                    }
        -                  },
        -                  "required": [
        -                    "code",
        -                    "severity",
        -                    "message"
        -                  ],
        -                  "type": "object"
        -                },
        -                "type": "array"
        -              }
        -            },
        -            "required": [
        -              "assembly_slug",
        -              "standard",
        -              "parameters_used",
        -              "boq_rows",
        -              "totals_summary",
        -              "text_summary"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      },
        -      "error": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        -            "properties": {
        -              "code": {
        -                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        -                "enum": [
        -                  "RATE_LIMIT_EXCEEDED",
        -                  "TIER_INSUFFICIENT",
        -                  "INVALID_INPUT",
        -                  "SCHEMA_VERSION_MISMATCH",
        -                  "SCHEMA_INVARIANT_VIOLATION",
        -                  "UPSTREAM_TIMEOUT",
        -                  "BACKEND_FAILURE",
        -                  "IP_BLOCKED",
        -                  "RESOURCE_NOT_FOUND",
        -                  "RENDER_FAILURE",
        -                  "OCR_LOW_CONFIDENCE",
        -                  "MANUAL_REVIEW_REQUIRED",
        -                  "ACCEPTANCE_REQUIRED",
        -                  "INVALID_TOKEN"
        -                ],
        -                "type": "string"
        -              },
        -              "details": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "message": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "recoverable": {
        -                "type": "boolean"
        -              },
        -              "retry_after_seconds": {
        -                "anyOf": [
        -                  {
        -                    "minimum": 0,
        -                    "type": "integer"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              }
        -            },
        -            "required": [
        -              "code",
        -              "message",
        -              "recoverable"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      }
        -    },
        -    "required": [
        -      "_meta"
        -    ],
        -    "type": "object"
        -  },
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "_meta": {
        -        "additionalProperties": false,
        -        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        -        "properties": {
        -          "deliverables": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        -                "properties": {
        -                  "docx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "dxf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "expires_at": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  },
        -                  "pdf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "xlsx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "expires_at"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "document_id": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "issued_at": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "rate_limit_remaining": {
        -            "anyOf": [
        -              {
        -                "minimum": 0,
        -                "type": "integer"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "request_id": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "schema_version": {
        -            "const": "1.0.0",
        -            "default": "1.0.0",
        -            "type": "string"
        -          },
        -          "scope_boundary": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        -                "properties": {
        -                  "not_in_scope": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "produced": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "recommended_companions": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "type": "string"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "produced",
        -                  "not_in_scope"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tier": {
        -            "enum": [
        -              "free",
        -              "paid"
        -            ],
        -            "type": "string"
        -          },
        -          "tier_upgrade": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        -                "properties": {
        -                  "available_tiers": {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        -                      "properties": {
        -                        "billing": {
        -                          "enum": [
        -                            "one_off",
        -                            "monthly",
        -                            "annual"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "currency": {
        -                          "enum": [
        -                            "GBP",
        -                            "SGD",
        -                            "EUR",
        -                            "USD",
        -                            "CAD",
        -                            "AUD",
        -                            "NZD",
        -                            "MYR"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "display_name": {
        -                          "type": "string"
        -                        },
        -                        "price_local": {
        -                          "type": "number"
        -                        },
        -                        "tier_slug": {
        -                          "enum": [
        -                            "7_day_pass",
        -                            "solo",
        -                            "studio",
        -                            "practice"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "unlock_summary": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "tier_slug",
        -                        "display_name",
        -                        "price_local",
        -                        "currency",
        -                        "billing",
        -                        "unlock_summary"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "current_tier": {
        -                    "const": "free",
        -                    "default": "free",
        -                    "type": "string"
        -                  },
        -                  "pass_credit": {
        -                    "anyOf": [
        -                      {
        -                        "additionalProperties": false,
        -                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        -                        "properties": {
        -                          "amount_local": {
        -                            "type": "number"
        -                          },
        -                          "applies_to": {
        -                            "const": "solo_first_month",
        -                            "default": "solo_first_month",
        -                            "type": "string"
        -                          },
        -                          "currency": {
        -                            "type": "string"
        -                          },
        -                          "redeemable_until": {
        -                            "type": "string"
        -                          }
        -                        },
        -                        "required": [
        -                          "amount_local",
        -                          "currency",
        -                          "redeemable_until"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "pricing_url": {
        -                    "default": "https://civilquants.com/pricing",
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "available_tiers"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tos_url": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "upgrade_hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "warranty_disclaimer": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          }
        -        },
        -        "required": [
        -          "request_id",
        -          "issued_at",
        -          "tier"
        -        ],
        -        "type": "object"
        -      },
        -      "data": {
        -        "default": null,
        -        "title": "Data"
        -      },
        -      "error": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        -            "properties": {
        -              "code": {
        -                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        -                "enum": [
        -                  "RATE_LIMIT_EXCEEDED",
        -                  "TIER_INSUFFICIENT",
        -                  "INVALID_INPUT",
        -                  "SCHEMA_VERSION_MISMATCH",
        -                  "SCHEMA_INVARIANT_VIOLATION",
        -                  "UPSTREAM_TIMEOUT",
        -                  "BACKEND_FAILURE",
        -                  "IP_BLOCKED",
        -                  "RESOURCE_NOT_FOUND",
        -                  "RENDER_FAILURE",
        -                  "OCR_LOW_CONFIDENCE",
        -                  "MANUAL_REVIEW_REQUIRED",
        -                  "ACCEPTANCE_REQUIRED",
        -                  "INVALID_TOKEN"
        -                ],
        -                "type": "string"
        -              },
        -              "details": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "message": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "recoverable": {
        -                "type": "boolean"
        -              },
        -              "retry_after_seconds": {
        -                "anyOf": [
        -                  {
        -                    "minimum": 0,
        -                    "type": "integer"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              }
        -            },
        -            "required": [
        -              "code",
        -              "message",
        -              "recoverable"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      }
        -    },
        -    "required": [
        -      "_meta"
        -    ],
        -    "type": "object"
        -  }
        -]New value: +[
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "_meta": {
        +        "additionalProperties": false,
        +        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        +        "properties": {
        +          "deliverables": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        +                "properties": {
        +                  "docx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "dxf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "expires_at": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  },
        +                  "pdf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "xlsx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "expires_at"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "document_id": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "issued_at": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "rate_limit_remaining": {
        +            "anyOf": [
        +              {
        +                "minimum": 0,
        +                "type": "integer"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "request_id": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "schema_version": {
        +            "const": "1.0.0",
        +            "default": "1.0.0",
        +            "type": "string"
        +          },
        +          "scope_boundary": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        +                "properties": {
        +                  "not_in_scope": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "produced": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "recommended_companions": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "type": "string"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "produced",
        +                  "not_in_scope"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tier": {
        +            "enum": [
        +              "free",
        +              "paid"
        +            ],
        +            "type": "string"
        +          },
        +          "tier_upgrade": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        +                "properties": {
        +                  "available_tiers": {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        +                      "properties": {
        +                        "billing": {
        +                          "enum": [
        +                            "one_off",
        +                            "monthly",
        +                            "annual"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "currency": {
        +                          "enum": [
        +                            "GBP",
        +                            "SGD",
        +                            "EUR",
        +                            "USD",
        +                            "CAD",
        +                            "AUD",
        +                            "NZD",
        +                            "MYR"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "display_name": {
        +                          "type": "string"
        +                        },
        +                        "price_local": {
        +                          "type": "number"
        +                        },
        +                        "tier_slug": {
        +                          "enum": [
        +                            "7_day_pass",
        +                            "solo",
        +                            "studio",
        +                            "practice"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "unlock_summary": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "tier_slug",
        +                        "display_name",
        +                        "price_local",
        +                        "currency",
        +                        "billing",
        +                        "unlock_summary"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "current_tier": {
        +                    "const": "free",
        +                    "default": "free",
        +                    "type": "string"
        +                  },
        +                  "pass_credit": {
        +                    "anyOf": [
        +                      {
        +                        "additionalProperties": false,
        +                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        +                        "properties": {
        +                          "amount_local": {
        +                            "type": "number"
        +                          },
        +                          "applies_to": {
        +                            "const": "solo_first_month",
        +                            "default": "solo_first_month",
        +                            "type": "string"
        +                          },
        +                          "currency": {
        +                            "type": "string"
        +                          },
        +                          "redeemable_until": {
        +                            "type": "string"
        +                          }
        +                        },
        +                        "required": [
        +                          "amount_local",
        +                          "currency",
        +                          "redeemable_until"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "pricing_url": {
        +                    "default": "https://civilquants.com/pricing",
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "available_tiers"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tos_url": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "upgrade_hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "warranty_disclaimer": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          }
        +        },
        +        "required": [
        +          "request_id",
        +          "issued_at",
        +          "tier"
        +        ],
        +        "type": "object"
        +      },
        +      "data": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Schema § 1.1 — the typed payload returned inside `MCPResponse[ComputeResult]`.\n\nFree-tier responses omit `drawings` (the downloadable CAD artefact\npointers — the paid differentiator); the bridge enforces this. The\n`audit_trail` and the inline `drawing` preview are present on BOTH tiers\n(V1 ALIGN / 60th-fire D + C). `text_summary` is bounded to 2000 chars —\nkeeps the LLM-facing summary token-cheap and forces longer narrative into\nBoQ row descriptions where it belongs. `warnings` is the non-fatal\ngeometry advisory list (both tiers).",
        +            "properties": {
        +              "assembly_slug": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "audit_trail": {
        +                "anyOf": [
        +                  {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.7 — paid-tier audit-trail entry.\n\nOne entry per BoQ row; `boq_row_index` ties to the row position in\n`ComputeResult.boq_rows`. `derivation` is the human-readable formula\nwalk-through; `formula` is the optional formal expression.",
        +                      "properties": {
        +                        "boq_row_index": {
        +                          "minimum": 0,
        +                          "type": "integer"
        +                        },
        +                        "derivation": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "formula": {
        +                          "anyOf": [
        +                            {
        +                              "type": "string"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ],
        +                          "default": null
        +                        },
        +                        "id": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "parameters_referenced": {
        +                          "items": {
        +                            "type": "string"
        +                          },
        +                          "type": "array"
        +                        }
        +                      },
        +                      "required": [
        +                        "id",
        +                        "boq_row_index",
        +                        "derivation"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "boq_rows": {
        +                "items": {
        +                  "additionalProperties": false,
        +                  "description": "Schema § 1.3 — a single bill row in the requested standard's format.\n\n`description` is the non-verbatim functional description per spec § 13.9 /\n§ 15 invariant — NEVER reproduces a standard's verbatim clause text.\n`rate` / `amount` ship null because rates are commodity data the customer\nowns; the engine's job is the measurement, not the pricing.",
        +                  "properties": {
        +                    "amount": {
        +                      "anyOf": [
        +                        {
        +                          "type": "number"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "attribution": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "audit_id": {
        +                      "anyOf": [
        +                        {
        +                          "type": "string"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "description": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "quantity": {
        +                      "minimum": 0,
        +                      "type": "number"
        +                    },
        +                    "rate": {
        +                      "anyOf": [
        +                        {
        +                          "type": "number"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "unit": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "work_section": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    }
        +                  },
        +                  "required": [
        +                    "work_section",
        +                    "description",
        +                    "quantity",
        +                    "unit",
        +                    "attribution"
        +                  ],
        +                  "type": "object"
        +                },
        +                "type": "array"
        +              },
        +              "drawing": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": false,
        +                    "description": "Schema § 1.6a — inline server-rendered SVG preview of the geometry.\n\nThe MCP mirror of the web ``/compute`` response's ``drawing`` field\n(``api.schemas.compute.DrawingRef``): the same on-screen dimensioned\ndrawing both tiers see in the workspace, surfaced on the MCP compute\nresponse so a chat client can render it inline (60th-fire item C). This\nis the on-screen preview — present on BOTH tiers per the free/paid\nboundary; the downloadable CAD artefacts (DXF / dimensioned PDF) remain\nthe paid differentiator via the export tools.\n\nDefined here rather than importing ``DrawingRef`` because the web\n``schemas`` package imports back into this module (``schemas.render``),\nso reusing it would create an import cycle — the MCP wire contract keeps\nits own copy, the same pattern as ``BoQRow`` / ``DrawingReference``.",
        +                    "properties": {
        +                      "entity_count": {
        +                        "minimum": 0,
        +                        "type": "integer"
        +                      },
        +                      "svg_b64": {
        +                        "minLength": 1,
        +                        "type": "string"
        +                      },
        +                      "unit_of_drawing": {
        +                        "const": "m",
        +                        "default": "m",
        +                        "type": "string"
        +                      },
        +                      "viewbox_height": {
        +                        "exclusiveMinimum": 0,
        +                        "type": "number"
        +                      },
        +                      "viewbox_width": {
        +                        "exclusiveMinimum": 0,
        +                        "type": "number"
        +                      },
        +                      "viewbox_x": {
        +                        "type": "number"
        +                      },
        +                      "viewbox_y": {
        +                        "type": "number"
        +                      }
        +                    },
        +                    "required": [
        +                      "svg_b64",
        +                      "viewbox_x",
        +                      "viewbox_y",
        +                      "viewbox_width",
        +                      "viewbox_height",
        +                      "entity_count"
        +                    ],
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "drawings": {
        +                "anyOf": [
        +                  {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.6 — paid-tier drawing artefact pointer.\n\n`url` is an R2-signed URL; expiry is carried in `_meta.deliverables.expires_at`\non the envelope (not duplicated here). `layers` is DXF-only; PDF/SVG\ncallers omit it.",
        +                      "properties": {
        +                        "drawing_type": {
        +                          "enum": [
        +                            "section",
        +                            "plan",
        +                            "elevation",
        +                            "isometric",
        +                            "detail"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "format": {
        +                          "enum": [
        +                            "DXF",
        +                            "PDF",
        +                            "SVG"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "layers": {
        +                          "anyOf": [
        +                            {
        +                              "items": {
        +                                "type": "string"
        +                              },
        +                              "type": "array"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ],
        +                          "default": null
        +                        },
        +                        "scale": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "sheet_size": {
        +                          "enum": [
        +                            "A1",
        +                            "A2",
        +                            "A3",
        +                            "A4"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "url": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "drawing_type",
        +                        "format",
        +                        "url",
        +                        "sheet_size",
        +                        "scale"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "parameters_used": {
        +                "additionalProperties": false,
        +                "description": "Schema § 1.2 — the parameter snapshot the engine actually used.\n\nSplits user-supplied values from engine defaults so customers can see\nwhich numbers came from them and which the engine filled in. Every\ndefaulted parameter SHOULD have a corresponding entry in `assumptions`\n— the bridge layer enforces this when wrapping engine output.",
        +                "properties": {
        +                  "assumptions": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "engine_defaults": {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  "user_supplied": {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  }
        +                },
        +                "type": "object"
        +              },
        +              "standard": {
        +                "enum": [
        +                  "CESMM4",
        +                  "NRM2",
        +                  "SMM7",
        +                  "MMHW"
        +                ],
        +                "type": "string"
        +              },
        +              "text_summary": {
        +                "maxLength": 2000,
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "totals_summary": {
        +                "additionalProperties": false,
        +                "description": "Schema § 1.4 — totals_summary as a typed wrapper around the free-form dict.\n\nWire shape is a flat object (`{\"concrete_m3\": {...}, \"rebar_t\": {...}}`).\nWe model it as `RootModel`-equivalent via `model_config(extra=\"allow\")`\n+ a single `__root__`-style `entries` dict. Pydantic v2 recommends\n`RootModel` for free-form roots; using a wrapper class keeps the import\nsurface uniform with the rest of this module.",
        +                "properties": {
        +                  "entries": {
        +                    "additionalProperties": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.4 — single material/work-class total entry.",
        +                      "properties": {
        +                        "quantity": {
        +                          "minimum": 0,
        +                          "type": "number"
        +                        },
        +                        "unit": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "quantity",
        +                        "unit"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "object"
        +                  }
        +                },
        +                "type": "object"
        +              },
        +              "warnings": {
        +                "items": {
        +                  "additionalProperties": false,
        +                  "description": "Schema § 1.8 — a non-fatal geometry advisory (56th-fire T2).\n\nThe wire projection of the engine's `core.GeometryWarning`. Advisory only:\na warning NEVER changes a measured quantity — it flags geometry that is\nvalid but likely a mistake (e.g. a stale dependent-height default). Present\non BOTH tiers — a correctness/safety signal, not a paid feature.",
        +                  "properties": {
        +                    "affected_params": {
        +                      "items": {
        +                        "type": "string"
        +                      },
        +                      "type": "array"
        +                    },
        +                    "code": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "detail": {
        +                      "additionalProperties": {
        +                        "type": "number"
        +                      },
        +                      "type": "object"
        +                    },
        +                    "message": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "severity": {
        +                      "enum": [
        +                        "info",
        +                        "advisory",
        +                        "caution"
        +                      ],
        +                      "type": "string"
        +                    }
        +                  },
        +                  "required": [
        +                    "code",
        +                    "severity",
        +                    "message"
        +                  ],
        +                  "type": "object"
        +                },
        +                "type": "array"
        +              }
        +            },
        +            "required": [
        +              "assembly_slug",
        +              "standard",
        +              "parameters_used",
        +              "boq_rows",
        +              "totals_summary",
        +              "text_summary"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      },
        +      "error": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        +            "properties": {
        +              "code": {
        +                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        +                "enum": [
        +                  "RATE_LIMIT_EXCEEDED",
        +                  "TIER_INSUFFICIENT",
        +                  "INVALID_INPUT",
        +                  "SCHEMA_VERSION_MISMATCH",
        +                  "SCHEMA_INVARIANT_VIOLATION",
        +                  "UPSTREAM_TIMEOUT",
        +                  "BACKEND_FAILURE",
        +                  "IP_BLOCKED",
        +                  "RESOURCE_NOT_FOUND",
        +                  "RENDER_FAILURE",
        +                  "OCR_LOW_CONFIDENCE",
        +                  "MANUAL_REVIEW_REQUIRED",
        +                  "ACCEPTANCE_REQUIRED",
        +                  "INVALID_TOKEN"
        +                ],
        +                "type": "string"
        +              },
        +              "details": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "message": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "recoverable": {
        +                "type": "boolean"
        +              },
        +              "retry_after_seconds": {
        +                "anyOf": [
        +                  {
        +                    "minimum": 0,
        +                    "type": "integer"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              }
        +            },
        +            "required": [
        +              "code",
        +              "message",
        +              "recoverable"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      }
        +    },
        +    "required": [
        +      "_meta"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "_meta": {
        +        "additionalProperties": false,
        +        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        +        "properties": {
        +          "deliverables": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        +                "properties": {
        +                  "docx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "dxf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "expires_at": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  },
        +                  "pdf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "xlsx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "expires_at"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "document_id": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "issued_at": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "rate_limit_remaining": {
        +            "anyOf": [
        +              {
        +                "minimum": 0,
        +                "type": "integer"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "request_id": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "schema_version": {
        +            "const": "1.0.0",
        +            "default": "1.0.0",
        +            "type": "string"
        +          },
        +          "scope_boundary": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        +                "properties": {
        +                  "not_in_scope": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "produced": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "recommended_companions": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "type": "string"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "produced",
        +                  "not_in_scope"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tier": {
        +            "enum": [
        +              "free",
        +              "paid"
        +            ],
        +            "type": "string"
        +          },
        +          "tier_upgrade": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        +                "properties": {
        +                  "available_tiers": {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        +                      "properties": {
        +                        "billing": {
        +                          "enum": [
        +                            "one_off",
        +                            "monthly",
        +                            "annual"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "currency": {
        +                          "enum": [
        +                            "GBP",
        +                            "SGD",
        +                            "EUR",
        +                            "USD",
        +                            "CAD",
        +                            "AUD",
        +                            "NZD",
        +                            "MYR"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "display_name": {
        +                          "type": "string"
        +                        },
        +                        "price_local": {
        +                          "type": "number"
        +                        },
        +                        "tier_slug": {
        +                          "enum": [
        +                            "7_day_pass",
        +                            "solo",
        +                            "studio",
        +                            "practice"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "unlock_summary": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "tier_slug",
        +                        "display_name",
        +                        "price_local",
        +                        "currency",
        +                        "billing",
        +                        "unlock_summary"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "current_tier": {
        +                    "const": "free",
        +                    "default": "free",
        +                    "type": "string"
        +                  },
        +                  "pass_credit": {
        +                    "anyOf": [
        +                      {
        +                        "additionalProperties": false,
        +                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        +                        "properties": {
        +                          "amount_local": {
        +                            "type": "number"
        +                          },
        +                          "applies_to": {
        +                            "const": "solo_first_month",
        +                            "default": "solo_first_month",
        +                            "type": "string"
        +                          },
        +                          "currency": {
        +                            "type": "string"
        +                          },
        +                          "redeemable_until": {
        +                            "type": "string"
        +                          }
        +                        },
        +                        "required": [
        +                          "amount_local",
        +                          "currency",
        +                          "redeemable_until"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "pricing_url": {
        +                    "default": "https://civilquants.com/pricing",
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "available_tiers"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tos_url": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "upgrade_hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "warranty_disclaimer": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          }
        +        },
        +        "required": [
        +          "request_id",
        +          "issued_at",
        +          "tier"
        +        ],
        +        "type": "object"
        +      },
        +      "data": {
        +        "default": null,
        +        "title": "Data"
        +      },
        +      "error": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        +            "properties": {
        +              "code": {
        +                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        +                "enum": [
        +                  "RATE_LIMIT_EXCEEDED",
        +                  "TIER_INSUFFICIENT",
        +                  "INVALID_INPUT",
        +                  "SCHEMA_VERSION_MISMATCH",
        +                  "SCHEMA_INVARIANT_VIOLATION",
        +                  "UPSTREAM_TIMEOUT",
        +                  "BACKEND_FAILURE",
        +                  "IP_BLOCKED",
        +                  "RESOURCE_NOT_FOUND",
        +                  "RENDER_FAILURE",
        +                  "OCR_LOW_CONFIDENCE",
        +                  "MANUAL_REVIEW_REQUIRED",
        +                  "ACCEPTANCE_REQUIRED",
        +                  "INVALID_TOKEN"
        +                ],
        +                "type": "string"
        +              },
        +              "details": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "message": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "recoverable": {
        +                "type": "boolean"
        +              },
        +              "retry_after_seconds": {
        +                "anyOf": [
        +                  {
        +                    "minimum": 0,
        +                    "type": "integer"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              }
        +            },
        +            "required": [
        +              "code",
        +              "message",
        +              "recoverable"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      }
        +    },
        +    "required": [
        +      "_meta"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedcompute_combined_services_trench1 field changed
      • changedOutput schema / properties / result / anyOf
        Previous value: -[
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "_meta": {
        -        "additionalProperties": false,
        -        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        -        "properties": {
        -          "deliverables": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        -                "properties": {
        -                  "docx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "dxf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "expires_at": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  },
        -                  "pdf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "xlsx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "expires_at"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "document_id": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "issued_at": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "rate_limit_remaining": {
        -            "anyOf": [
        -              {
        -                "minimum": 0,
        -                "type": "integer"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "request_id": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "schema_version": {
        -            "const": "1.0.0",
        -            "default": "1.0.0",
        -            "type": "string"
        -          },
        -          "scope_boundary": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        -                "properties": {
        -                  "not_in_scope": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "produced": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "recommended_companions": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "type": "string"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "produced",
        -                  "not_in_scope"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tier": {
        -            "enum": [
        -              "free",
        -              "paid"
        -            ],
        -            "type": "string"
        -          },
        -          "tier_upgrade": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        -                "properties": {
        -                  "available_tiers": {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        -                      "properties": {
        -                        "billing": {
        -                          "enum": [
        -                            "one_off",
        -                            "monthly",
        -                            "annual"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "currency": {
        -                          "enum": [
        -                            "GBP",
        -                            "SGD",
        -                            "EUR",
        -                            "USD",
        -                            "CAD",
        -                            "AUD",
        -                            "NZD",
        -                            "MYR"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "display_name": {
        -                          "type": "string"
        -                        },
        -                        "price_local": {
        -                          "type": "number"
        -                        },
        -                        "tier_slug": {
        -                          "enum": [
        -                            "7_day_pass",
        -                            "solo",
        -                            "studio",
        -                            "practice"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "unlock_summary": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "tier_slug",
        -                        "display_name",
        -                        "price_local",
        -                        "currency",
        -                        "billing",
        -                        "unlock_summary"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "current_tier": {
        -                    "const": "free",
        -                    "default": "free",
        -                    "type": "string"
        -                  },
        -                  "pass_credit": {
        -                    "anyOf": [
        -                      {
        -                        "additionalProperties": false,
        -                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        -                        "properties": {
        -                          "amount_local": {
        -                            "type": "number"
        -                          },
        -                          "applies_to": {
        -                            "const": "solo_first_month",
        -                            "default": "solo_first_month",
        -                            "type": "string"
        -                          },
        -                          "currency": {
        -                            "type": "string"
        -                          },
        -                          "redeemable_until": {
        -                            "type": "string"
        -                          }
        -                        },
        -                        "required": [
        -                          "amount_local",
        -                          "currency",
        -                          "redeemable_until"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "pricing_url": {
        -                    "default": "https://civilquants.com/pricing",
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "available_tiers"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tos_url": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "upgrade_hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "warranty_disclaimer": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          }
        -        },
        -        "required": [
        -          "request_id",
        -          "issued_at",
        -          "tier"
        -        ],
        -        "type": "object"
        -      },
        -      "data": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Schema § 1.1 — the typed payload returned inside `MCPResponse[ComputeResult]`.\n\nFree-tier responses omit `drawings` (the downloadable CAD artefact\npointers — the paid differentiator); the bridge enforces this. The\n`audit_trail` and the inline `drawing` preview are present on BOTH tiers\n(V1 ALIGN / 60th-fire D + C). `text_summary` is bounded to 2000 chars —\nkeeps the LLM-facing summary token-cheap and forces longer narrative into\nBoQ row descriptions where it belongs. `warnings` is the non-fatal\ngeometry advisory list (both tiers).",
        -            "properties": {
        -              "assembly_slug": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "audit_trail": {
        -                "anyOf": [
        -                  {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.7 — paid-tier audit-trail entry.\n\nOne entry per BoQ row; `boq_row_index` ties to the row position in\n`ComputeResult.boq_rows`. `derivation` is the human-readable formula\nwalk-through; `formula` is the optional formal expression.",
        -                      "properties": {
        -                        "boq_row_index": {
        -                          "minimum": 0,
        -                          "type": "integer"
        -                        },
        -                        "derivation": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "formula": {
        -                          "anyOf": [
        -                            {
        -                              "type": "string"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ],
        -                          "default": null
        -                        },
        -                        "id": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "parameters_referenced": {
        -                          "items": {
        -                            "type": "string"
        -                          },
        -                          "type": "array"
        -                        }
        -                      },
        -                      "required": [
        -                        "id",
        -                        "boq_row_index",
        -                        "derivation"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "boq_rows": {
        -                "items": {
        -                  "additionalProperties": false,
        -                  "description": "Schema § 1.3 — a single bill row in the requested standard's format.\n\n`description` is the non-verbatim functional description per spec § 13.9 /\n§ 15 invariant — NEVER reproduces a standard's verbatim clause text.\n`rate` / `amount` ship null because rates are commodity data the customer\nowns; the engine's job is the measurement, not the pricing.",
        -                  "properties": {
        -                    "amount": {
        -                      "anyOf": [
        -                        {
        -                          "type": "number"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "attribution": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "audit_id": {
        -                      "anyOf": [
        -                        {
        -                          "type": "string"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "description": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "quantity": {
        -                      "minimum": 0,
        -                      "type": "number"
        -                    },
        -                    "rate": {
        -                      "anyOf": [
        -                        {
        -                          "type": "number"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "unit": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "work_section": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    }
        -                  },
        -                  "required": [
        -                    "work_section",
        -                    "description",
        -                    "quantity",
        -                    "unit",
        -                    "attribution"
        -                  ],
        -                  "type": "object"
        -                },
        -                "type": "array"
        -              },
        -              "drawing": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": false,
        -                    "description": "Schema § 1.6a — inline server-rendered SVG preview of the geometry.\n\nThe MCP mirror of the web ``/compute`` response's ``drawing`` field\n(``api.schemas.compute.DrawingRef``): the same on-screen dimensioned\ndrawing both tiers see in the workspace, surfaced on the MCP compute\nresponse so a chat client can render it inline (60th-fire item C). This\nis the on-screen preview — present on BOTH tiers per the free/paid\nboundary; the downloadable CAD artefacts (DXF / dimensioned PDF) remain\nthe paid differentiator via the export tools.\n\nDefined here rather than importing ``DrawingRef`` because the web\n``schemas`` package imports back into this module (``schemas.render``),\nso reusing it would create an import cycle — the MCP wire contract keeps\nits own copy, the same pattern as ``BoQRow`` / ``DrawingReference``.",
        -                    "properties": {
        -                      "entity_count": {
        -                        "minimum": 0,
        -                        "type": "integer"
        -                      },
        -                      "svg_b64": {
        -                        "minLength": 1,
        -                        "type": "string"
        -                      },
        -                      "unit_of_drawing": {
        -                        "const": "m",
        -                        "default": "m",
        -                        "type": "string"
        -                      },
        -                      "viewbox_height": {
        -                        "exclusiveMinimum": 0,
        -                        "type": "number"
        -                      },
        -                      "viewbox_width": {
        -                        "exclusiveMinimum": 0,
        -                        "type": "number"
        -                      },
        -                      "viewbox_x": {
        -                        "type": "number"
        -                      },
        -                      "viewbox_y": {
        -                        "type": "number"
        -                      }
        -                    },
        -                    "required": [
        -                      "svg_b64",
        -                      "viewbox_x",
        -                      "viewbox_y",
        -                      "viewbox_width",
        -                      "viewbox_height",
        -                      "entity_count"
        -                    ],
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "drawings": {
        -                "anyOf": [
        -                  {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.6 — paid-tier drawing artefact pointer.\n\n`url` is an R2-signed URL; expiry is carried in `_meta.deliverables.expires_at`\non the envelope (not duplicated here). `layers` is DXF-only; PDF/SVG\ncallers omit it.",
        -                      "properties": {
        -                        "drawing_type": {
        -                          "enum": [
        -                            "section",
        -                            "plan",
        -                            "elevation",
        -                            "isometric",
        -                            "detail"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "format": {
        -                          "enum": [
        -                            "DXF",
        -                            "PDF",
        -                            "SVG"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "layers": {
        -                          "anyOf": [
        -                            {
        -                              "items": {
        -                                "type": "string"
        -                              },
        -                              "type": "array"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ],
        -                          "default": null
        -                        },
        -                        "scale": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "sheet_size": {
        -                          "enum": [
        -                            "A1",
        -                            "A2",
        -                            "A3",
        -                            "A4"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "url": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "drawing_type",
        -                        "format",
        -                        "url",
        -                        "sheet_size",
        -                        "scale"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "parameters_used": {
        -                "additionalProperties": false,
        -                "description": "Schema § 1.2 — the parameter snapshot the engine actually used.\n\nSplits user-supplied values from engine defaults so customers can see\nwhich numbers came from them and which the engine filled in. Every\ndefaulted parameter SHOULD have a corresponding entry in `assumptions`\n— the bridge layer enforces this when wrapping engine output.",
        -                "properties": {
        -                  "assumptions": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "engine_defaults": {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  "resolved_from_description": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "additionalProperties": false,
        -                          "description": "Schema § 1.2 — a parameter resolved by the forgiving-input layer.\n\nPopulated by the Track B-Forgiving Haiku-4.5 resolution pass; until that\nlayer lands, instances are constructed only by tests. `source` distinguishes\nthe resolution path so customers can audit which fields were inferred.",
        -                          "properties": {
        -                            "confidence": {
        -                              "anyOf": [
        -                                {
        -                                  "enum": [
        -                                    "high",
        -                                    "medium",
        -                                    "low"
        -                                  ],
        -                                  "type": "string"
        -                                },
        -                                {
        -                                  "type": "null"
        -                                }
        -                              ],
        -                              "default": null
        -                            },
        -                            "field_name": {
        -                              "minLength": 1,
        -                              "type": "string"
        -                            },
        -                            "resolved_value": {},
        -                            "source": {
        -                              "enum": [
        -                                "description_field",
        -                                "haiku_resolution",
        -                                "engine_default"
        -                              ],
        -                              "type": "string"
        -                            }
        -                          },
        -                          "required": [
        -                            "field_name",
        -                            "resolved_value",
        -                            "source"
        -                          ],
        -                          "type": "object"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "user_supplied": {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  }
        -                },
        -                "type": "object"
        -              },
        -              "standard": {
        -                "enum": [
        -                  "CESMM4",
        -                  "NRM2",
        -                  "SMM7",
        -                  "MMHW"
        -                ],
        -                "type": "string"
        -              },
        -              "text_summary": {
        -                "maxLength": 2000,
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "totals_summary": {
        -                "additionalProperties": false,
        -                "description": "Schema § 1.4 — totals_summary as a typed wrapper around the free-form dict.\n\nWire shape is a flat object (`{\"concrete_m3\": {...}, \"rebar_t\": {...}}`).\nWe model it as `RootModel`-equivalent via `model_config(extra=\"allow\")`\n+ a single `__root__`-style `entries` dict. Pydantic v2 recommends\n`RootModel` for free-form roots; using a wrapper class keeps the import\nsurface uniform with the rest of this module.",
        -                "properties": {
        -                  "entries": {
        -                    "additionalProperties": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.4 — single material/work-class total entry.",
        -                      "properties": {
        -                        "quantity": {
        -                          "minimum": 0,
        -                          "type": "number"
        -                        },
        -                        "unit": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "quantity",
        -                        "unit"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "object"
        -                  }
        -                },
        -                "type": "object"
        -              },
        -              "warnings": {
        -                "items": {
        -                  "additionalProperties": false,
        -                  "description": "Schema § 1.8 — a non-fatal geometry advisory (56th-fire T2).\n\nThe wire projection of the engine's `core.GeometryWarning`. Advisory only:\na warning NEVER changes a measured quantity — it flags geometry that is\nvalid but likely a mistake (e.g. a stale dependent-height default). Present\non BOTH tiers — a correctness/safety signal, not a paid feature.",
        -                  "properties": {
        -                    "affected_params": {
        -                      "items": {
        -                        "type": "string"
        -                      },
        -                      "type": "array"
        -                    },
        -                    "code": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "detail": {
        -                      "additionalProperties": {
        -                        "type": "number"
        -                      },
        -                      "type": "object"
        -                    },
        -                    "message": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "severity": {
        -                      "enum": [
        -                        "info",
        -                        "advisory",
        -                        "caution"
        -                      ],
        -                      "type": "string"
        -                    }
        -                  },
        -                  "required": [
        -                    "code",
        -                    "severity",
        -                    "message"
        -                  ],
        -                  "type": "object"
        -                },
        -                "type": "array"
        -              }
        -            },
        -            "required": [
        -              "assembly_slug",
        -              "standard",
        -              "parameters_used",
        -              "boq_rows",
        -              "totals_summary",
        -              "text_summary"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      },
        -      "error": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        -            "properties": {
        -              "code": {
        -                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        -                "enum": [
        -                  "RATE_LIMIT_EXCEEDED",
        -                  "TIER_INSUFFICIENT",
        -                  "INVALID_INPUT",
        -                  "SCHEMA_VERSION_MISMATCH",
        -                  "SCHEMA_INVARIANT_VIOLATION",
        -                  "UPSTREAM_TIMEOUT",
        -                  "BACKEND_FAILURE",
        -                  "IP_BLOCKED",
        -                  "RESOURCE_NOT_FOUND",
        -                  "RENDER_FAILURE",
        -                  "OCR_LOW_CONFIDENCE",
        -                  "MANUAL_REVIEW_REQUIRED",
        -                  "ACCEPTANCE_REQUIRED",
        -                  "INVALID_TOKEN"
        -                ],
        -                "type": "string"
        -              },
        -              "details": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "message": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "recoverable": {
        -                "type": "boolean"
        -              },
        -              "retry_after_seconds": {
        -                "anyOf": [
        -                  {
        -                    "minimum": 0,
        -                    "type": "integer"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              }
        -            },
        -            "required": [
        -              "code",
        -              "message",
        -              "recoverable"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      }
        -    },
        -    "required": [
        -      "_meta"
        -    ],
        -    "type": "object"
        -  },
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "_meta": {
        -        "additionalProperties": false,
        -        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        -        "properties": {
        -          "deliverables": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        -                "properties": {
        -                  "docx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "dxf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "expires_at": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  },
        -                  "pdf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "xlsx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "expires_at"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "document_id": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "issued_at": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "rate_limit_remaining": {
        -            "anyOf": [
        -              {
        -                "minimum": 0,
        -                "type": "integer"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "request_id": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "schema_version": {
        -            "const": "1.0.0",
        -            "default": "1.0.0",
        -            "type": "string"
        -          },
        -          "scope_boundary": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        -                "properties": {
        -                  "not_in_scope": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "produced": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "recommended_companions": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "type": "string"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "produced",
        -                  "not_in_scope"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tier": {
        -            "enum": [
        -              "free",
        -              "paid"
        -            ],
        -            "type": "string"
        -          },
        -          "tier_upgrade": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        -                "properties": {
        -                  "available_tiers": {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        -                      "properties": {
        -                        "billing": {
        -                          "enum": [
        -                            "one_off",
        -                            "monthly",
        -                            "annual"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "currency": {
        -                          "enum": [
        -                            "GBP",
        -                            "SGD",
        -                            "EUR",
        -                            "USD",
        -                            "CAD",
        -                            "AUD",
        -                            "NZD",
        -                            "MYR"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "display_name": {
        -                          "type": "string"
        -                        },
        -                        "price_local": {
        -                          "type": "number"
        -                        },
        -                        "tier_slug": {
        -                          "enum": [
        -                            "7_day_pass",
        -                            "solo",
        -                            "studio",
        -                            "practice"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "unlock_summary": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "tier_slug",
        -                        "display_name",
        -                        "price_local",
        -                        "currency",
        -                        "billing",
        -                        "unlock_summary"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "current_tier": {
        -                    "const": "free",
        -                    "default": "free",
        -                    "type": "string"
        -                  },
        -                  "pass_credit": {
        -                    "anyOf": [
        -                      {
        -                        "additionalProperties": false,
        -                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        -                        "properties": {
        -                          "amount_local": {
        -                            "type": "number"
        -                          },
        -                          "applies_to": {
        -                            "const": "solo_first_month",
        -                            "default": "solo_first_month",
        -                            "type": "string"
        -                          },
        -                          "currency": {
        -                            "type": "string"
        -                          },
        -                          "redeemable_until": {
        -                            "type": "string"
        -                          }
        -                        },
        -                        "required": [
        -                          "amount_local",
        -                          "currency",
        -                          "redeemable_until"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "pricing_url": {
        -                    "default": "https://civilquants.com/pricing",
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "available_tiers"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tos_url": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "upgrade_hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "warranty_disclaimer": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          }
        -        },
        -        "required": [
        -          "request_id",
        -          "issued_at",
        -          "tier"
        -        ],
        -        "type": "object"
        -      },
        -      "data": {
        -        "default": null,
        -        "title": "Data"
        -      },
        -      "error": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        -            "properties": {
        -              "code": {
        -                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        -                "enum": [
        -                  "RATE_LIMIT_EXCEEDED",
        -                  "TIER_INSUFFICIENT",
        -                  "INVALID_INPUT",
        -                  "SCHEMA_VERSION_MISMATCH",
        -                  "SCHEMA_INVARIANT_VIOLATION",
        -                  "UPSTREAM_TIMEOUT",
        -                  "BACKEND_FAILURE",
        -                  "IP_BLOCKED",
        -                  "RESOURCE_NOT_FOUND",
        -                  "RENDER_FAILURE",
        -                  "OCR_LOW_CONFIDENCE",
        -                  "MANUAL_REVIEW_REQUIRED",
        -                  "ACCEPTANCE_REQUIRED",
        -                  "INVALID_TOKEN"
        -                ],
        -                "type": "string"
        -              },
        -              "details": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "message": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "recoverable": {
        -                "type": "boolean"
        -              },
        -              "retry_after_seconds": {
        -                "anyOf": [
        -                  {
        -                    "minimum": 0,
        -                    "type": "integer"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              }
        -            },
        -            "required": [
        -              "code",
        -              "message",
        -              "recoverable"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      }
        -    },
        -    "required": [
        -      "_meta"
        -    ],
        -    "type": "object"
        -  }
        -]New value: +[
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "_meta": {
        +        "additionalProperties": false,
        +        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        +        "properties": {
        +          "deliverables": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        +                "properties": {
        +                  "docx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "dxf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "expires_at": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  },
        +                  "pdf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "xlsx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "expires_at"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "document_id": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "issued_at": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "rate_limit_remaining": {
        +            "anyOf": [
        +              {
        +                "minimum": 0,
        +                "type": "integer"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "request_id": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "schema_version": {
        +            "const": "1.0.0",
        +            "default": "1.0.0",
        +            "type": "string"
        +          },
        +          "scope_boundary": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        +                "properties": {
        +                  "not_in_scope": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "produced": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "recommended_companions": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "type": "string"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "produced",
        +                  "not_in_scope"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tier": {
        +            "enum": [
        +              "free",
        +              "paid"
        +            ],
        +            "type": "string"
        +          },
        +          "tier_upgrade": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        +                "properties": {
        +                  "available_tiers": {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        +                      "properties": {
        +                        "billing": {
        +                          "enum": [
        +                            "one_off",
        +                            "monthly",
        +                            "annual"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "currency": {
        +                          "enum": [
        +                            "GBP",
        +                            "SGD",
        +                            "EUR",
        +                            "USD",
        +                            "CAD",
        +                            "AUD",
        +                            "NZD",
        +                            "MYR"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "display_name": {
        +                          "type": "string"
        +                        },
        +                        "price_local": {
        +                          "type": "number"
        +                        },
        +                        "tier_slug": {
        +                          "enum": [
        +                            "7_day_pass",
        +                            "solo",
        +                            "studio",
        +                            "practice"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "unlock_summary": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "tier_slug",
        +                        "display_name",
        +                        "price_local",
        +                        "currency",
        +                        "billing",
        +                        "unlock_summary"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "current_tier": {
        +                    "const": "free",
        +                    "default": "free",
        +                    "type": "string"
        +                  },
        +                  "pass_credit": {
        +                    "anyOf": [
        +                      {
        +                        "additionalProperties": false,
        +                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        +                        "properties": {
        +                          "amount_local": {
        +                            "type": "number"
        +                          },
        +                          "applies_to": {
        +                            "const": "solo_first_month",
        +                            "default": "solo_first_month",
        +                            "type": "string"
        +                          },
        +                          "currency": {
        +                            "type": "string"
        +                          },
        +                          "redeemable_until": {
        +                            "type": "string"
        +                          }
        +                        },
        +                        "required": [
        +                          "amount_local",
        +                          "currency",
        +                          "redeemable_until"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "pricing_url": {
        +                    "default": "https://civilquants.com/pricing",
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "available_tiers"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tos_url": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "upgrade_hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "warranty_disclaimer": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          }
        +        },
        +        "required": [
        +          "request_id",
        +          "issued_at",
        +          "tier"
        +        ],
        +        "type": "object"
        +      },
        +      "data": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Schema § 1.1 — the typed payload returned inside `MCPResponse[ComputeResult]`.\n\nFree-tier responses omit `drawings` (the downloadable CAD artefact\npointers — the paid differentiator); the bridge enforces this. The\n`audit_trail` and the inline `drawing` preview are present on BOTH tiers\n(V1 ALIGN / 60th-fire D + C). `text_summary` is bounded to 2000 chars —\nkeeps the LLM-facing summary token-cheap and forces longer narrative into\nBoQ row descriptions where it belongs. `warnings` is the non-fatal\ngeometry advisory list (both tiers).",
        +            "properties": {
        +              "assembly_slug": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "audit_trail": {
        +                "anyOf": [
        +                  {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.7 — paid-tier audit-trail entry.\n\nOne entry per BoQ row; `boq_row_index` ties to the row position in\n`ComputeResult.boq_rows`. `derivation` is the human-readable formula\nwalk-through; `formula` is the optional formal expression.",
        +                      "properties": {
        +                        "boq_row_index": {
        +                          "minimum": 0,
        +                          "type": "integer"
        +                        },
        +                        "derivation": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "formula": {
        +                          "anyOf": [
        +                            {
        +                              "type": "string"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ],
        +                          "default": null
        +                        },
        +                        "id": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "parameters_referenced": {
        +                          "items": {
        +                            "type": "string"
        +                          },
        +                          "type": "array"
        +                        }
        +                      },
        +                      "required": [
        +                        "id",
        +                        "boq_row_index",
        +                        "derivation"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "boq_rows": {
        +                "items": {
        +                  "additionalProperties": false,
        +                  "description": "Schema § 1.3 — a single bill row in the requested standard's format.\n\n`description` is the non-verbatim functional description per spec § 13.9 /\n§ 15 invariant — NEVER reproduces a standard's verbatim clause text.\n`rate` / `amount` ship null because rates are commodity data the customer\nowns; the engine's job is the measurement, not the pricing.",
        +                  "properties": {
        +                    "amount": {
        +                      "anyOf": [
        +                        {
        +                          "type": "number"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "attribution": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "audit_id": {
        +                      "anyOf": [
        +                        {
        +                          "type": "string"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "description": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "quantity": {
        +                      "minimum": 0,
        +                      "type": "number"
        +                    },
        +                    "rate": {
        +                      "anyOf": [
        +                        {
        +                          "type": "number"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "unit": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "work_section": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    }
        +                  },
        +                  "required": [
        +                    "work_section",
        +                    "description",
        +                    "quantity",
        +                    "unit",
        +                    "attribution"
        +                  ],
        +                  "type": "object"
        +                },
        +                "type": "array"
        +              },
        +              "drawing": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": false,
        +                    "description": "Schema § 1.6a — inline server-rendered SVG preview of the geometry.\n\nThe MCP mirror of the web ``/compute`` response's ``drawing`` field\n(``api.schemas.compute.DrawingRef``): the same on-screen dimensioned\ndrawing both tiers see in the workspace, surfaced on the MCP compute\nresponse so a chat client can render it inline (60th-fire item C). This\nis the on-screen preview — present on BOTH tiers per the free/paid\nboundary; the downloadable CAD artefacts (DXF / dimensioned PDF) remain\nthe paid differentiator via the export tools.\n\nDefined here rather than importing ``DrawingRef`` because the web\n``schemas`` package imports back into this module (``schemas.render``),\nso reusing it would create an import cycle — the MCP wire contract keeps\nits own copy, the same pattern as ``BoQRow`` / ``DrawingReference``.",
        +                    "properties": {
        +                      "entity_count": {
        +                        "minimum": 0,
        +                        "type": "integer"
        +                      },
        +                      "svg_b64": {
        +                        "minLength": 1,
        +                        "type": "string"
        +                      },
        +                      "unit_of_drawing": {
        +                        "const": "m",
        +                        "default": "m",
        +                        "type": "string"
        +                      },
        +                      "viewbox_height": {
        +                        "exclusiveMinimum": 0,
        +                        "type": "number"
        +                      },
        +                      "viewbox_width": {
        +                        "exclusiveMinimum": 0,
        +                        "type": "number"
        +                      },
        +                      "viewbox_x": {
        +                        "type": "number"
        +                      },
        +                      "viewbox_y": {
        +                        "type": "number"
        +                      }
        +                    },
        +                    "required": [
        +                      "svg_b64",
        +                      "viewbox_x",
        +                      "viewbox_y",
        +                      "viewbox_width",
        +                      "viewbox_height",
        +                      "entity_count"
        +                    ],
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "drawings": {
        +                "anyOf": [
        +                  {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.6 — paid-tier drawing artefact pointer.\n\n`url` is an R2-signed URL; expiry is carried in `_meta.deliverables.expires_at`\non the envelope (not duplicated here). `layers` is DXF-only; PDF/SVG\ncallers omit it.",
        +                      "properties": {
        +                        "drawing_type": {
        +                          "enum": [
        +                            "section",
        +                            "plan",
        +                            "elevation",
        +                            "isometric",
        +                            "detail"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "format": {
        +                          "enum": [
        +                            "DXF",
        +                            "PDF",
        +                            "SVG"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "layers": {
        +                          "anyOf": [
        +                            {
        +                              "items": {
        +                                "type": "string"
        +                              },
        +                              "type": "array"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ],
        +                          "default": null
        +                        },
        +                        "scale": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "sheet_size": {
        +                          "enum": [
        +                            "A1",
        +                            "A2",
        +                            "A3",
        +                            "A4"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "url": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "drawing_type",
        +                        "format",
        +                        "url",
        +                        "sheet_size",
        +                        "scale"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "parameters_used": {
        +                "additionalProperties": false,
        +                "description": "Schema § 1.2 — the parameter snapshot the engine actually used.\n\nSplits user-supplied values from engine defaults so customers can see\nwhich numbers came from them and which the engine filled in. Every\ndefaulted parameter SHOULD have a corresponding entry in `assumptions`\n— the bridge layer enforces this when wrapping engine output.",
        +                "properties": {
        +                  "assumptions": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "engine_defaults": {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  "user_supplied": {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  }
        +                },
        +                "type": "object"
        +              },
        +              "standard": {
        +                "enum": [
        +                  "CESMM4",
        +                  "NRM2",
        +                  "SMM7",
        +                  "MMHW"
        +                ],
        +                "type": "string"
        +              },
        +              "text_summary": {
        +                "maxLength": 2000,
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "totals_summary": {
        +                "additionalProperties": false,
        +                "description": "Schema § 1.4 — totals_summary as a typed wrapper around the free-form dict.\n\nWire shape is a flat object (`{\"concrete_m3\": {...}, \"rebar_t\": {...}}`).\nWe model it as `RootModel`-equivalent via `model_config(extra=\"allow\")`\n+ a single `__root__`-style `entries` dict. Pydantic v2 recommends\n`RootModel` for free-form roots; using a wrapper class keeps the import\nsurface uniform with the rest of this module.",
        +                "properties": {
        +                  "entries": {
        +                    "additionalProperties": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.4 — single material/work-class total entry.",
        +                      "properties": {
        +                        "quantity": {
        +                          "minimum": 0,
        +                          "type": "number"
        +                        },
        +                        "unit": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "quantity",
        +                        "unit"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "object"
        +                  }
        +                },
        +                "type": "object"
        +              },
        +              "warnings": {
        +                "items": {
        +                  "additionalProperties": false,
        +                  "description": "Schema § 1.8 — a non-fatal geometry advisory (56th-fire T2).\n\nThe wire projection of the engine's `core.GeometryWarning`. Advisory only:\na warning NEVER changes a measured quantity — it flags geometry that is\nvalid but likely a mistake (e.g. a stale dependent-height default). Present\non BOTH tiers — a correctness/safety signal, not a paid feature.",
        +                  "properties": {
        +                    "affected_params": {
        +                      "items": {
        +                        "type": "string"
        +                      },
        +                      "type": "array"
        +                    },
        +                    "code": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "detail": {
        +                      "additionalProperties": {
        +                        "type": "number"
        +                      },
        +                      "type": "object"
        +                    },
        +                    "message": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "severity": {
        +                      "enum": [
        +                        "info",
        +                        "advisory",
        +                        "caution"
        +                      ],
        +                      "type": "string"
        +                    }
        +                  },
        +                  "required": [
        +                    "code",
        +                    "severity",
        +                    "message"
        +                  ],
        +                  "type": "object"
        +                },
        +                "type": "array"
        +              }
        +            },
        +            "required": [
        +              "assembly_slug",
        +              "standard",
        +              "parameters_used",
        +              "boq_rows",
        +              "totals_summary",
        +              "text_summary"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      },
        +      "error": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        +            "properties": {
        +              "code": {
        +                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        +                "enum": [
        +                  "RATE_LIMIT_EXCEEDED",
        +                  "TIER_INSUFFICIENT",
        +                  "INVALID_INPUT",
        +                  "SCHEMA_VERSION_MISMATCH",
        +                  "SCHEMA_INVARIANT_VIOLATION",
        +                  "UPSTREAM_TIMEOUT",
        +                  "BACKEND_FAILURE",
        +                  "IP_BLOCKED",
        +                  "RESOURCE_NOT_FOUND",
        +                  "RENDER_FAILURE",
        +                  "OCR_LOW_CONFIDENCE",
        +                  "MANUAL_REVIEW_REQUIRED",
        +                  "ACCEPTANCE_REQUIRED",
        +                  "INVALID_TOKEN"
        +                ],
        +                "type": "string"
        +              },
        +              "details": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "message": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "recoverable": {
        +                "type": "boolean"
        +              },
        +              "retry_after_seconds": {
        +                "anyOf": [
        +                  {
        +                    "minimum": 0,
        +                    "type": "integer"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              }
        +            },
        +            "required": [
        +              "code",
        +              "message",
        +              "recoverable"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      }
        +    },
        +    "required": [
        +      "_meta"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "_meta": {
        +        "additionalProperties": false,
        +        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        +        "properties": {
        +          "deliverables": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        +                "properties": {
        +                  "docx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "dxf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "expires_at": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  },
        +                  "pdf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "xlsx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "expires_at"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "document_id": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "issued_at": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "rate_limit_remaining": {
        +            "anyOf": [
        +              {
        +                "minimum": 0,
        +                "type": "integer"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "request_id": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "schema_version": {
        +            "const": "1.0.0",
        +            "default": "1.0.0",
        +            "type": "string"
        +          },
        +          "scope_boundary": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        +                "properties": {
        +                  "not_in_scope": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "produced": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "recommended_companions": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "type": "string"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "produced",
        +                  "not_in_scope"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tier": {
        +            "enum": [
        +              "free",
        +              "paid"
        +            ],
        +            "type": "string"
        +          },
        +          "tier_upgrade": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        +                "properties": {
        +                  "available_tiers": {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        +                      "properties": {
        +                        "billing": {
        +                          "enum": [
        +                            "one_off",
        +                            "monthly",
        +                            "annual"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "currency": {
        +                          "enum": [
        +                            "GBP",
        +                            "SGD",
        +                            "EUR",
        +                            "USD",
        +                            "CAD",
        +                            "AUD",
        +                            "NZD",
        +                            "MYR"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "display_name": {
        +                          "type": "string"
        +                        },
        +                        "price_local": {
        +                          "type": "number"
        +                        },
        +                        "tier_slug": {
        +                          "enum": [
        +                            "7_day_pass",
        +                            "solo",
        +                            "studio",
        +                            "practice"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "unlock_summary": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "tier_slug",
        +                        "display_name",
        +                        "price_local",
        +                        "currency",
        +                        "billing",
        +                        "unlock_summary"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "current_tier": {
        +                    "const": "free",
        +                    "default": "free",
        +                    "type": "string"
        +                  },
        +                  "pass_credit": {
        +                    "anyOf": [
        +                      {
        +                        "additionalProperties": false,
        +                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        +                        "properties": {
        +                          "amount_local": {
        +                            "type": "number"
        +                          },
        +                          "applies_to": {
        +                            "const": "solo_first_month",
        +                            "default": "solo_first_month",
        +                            "type": "string"
        +                          },
        +                          "currency": {
        +                            "type": "string"
        +                          },
        +                          "redeemable_until": {
        +                            "type": "string"
        +                          }
        +                        },
        +                        "required": [
        +                          "amount_local",
        +                          "currency",
        +                          "redeemable_until"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "pricing_url": {
        +                    "default": "https://civilquants.com/pricing",
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "available_tiers"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tos_url": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "upgrade_hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "warranty_disclaimer": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          }
        +        },
        +        "required": [
        +          "request_id",
        +          "issued_at",
        +          "tier"
        +        ],
        +        "type": "object"
        +      },
        +      "data": {
        +        "default": null,
        +        "title": "Data"
        +      },
        +      "error": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        +            "properties": {
        +              "code": {
        +                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        +                "enum": [
        +                  "RATE_LIMIT_EXCEEDED",
        +                  "TIER_INSUFFICIENT",
        +                  "INVALID_INPUT",
        +                  "SCHEMA_VERSION_MISMATCH",
        +                  "SCHEMA_INVARIANT_VIOLATION",
        +                  "UPSTREAM_TIMEOUT",
        +                  "BACKEND_FAILURE",
        +                  "IP_BLOCKED",
        +                  "RESOURCE_NOT_FOUND",
        +                  "RENDER_FAILURE",
        +                  "OCR_LOW_CONFIDENCE",
        +                  "MANUAL_REVIEW_REQUIRED",
        +                  "ACCEPTANCE_REQUIRED",
        +                  "INVALID_TOKEN"
        +                ],
        +                "type": "string"
        +              },
        +              "details": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "message": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "recoverable": {
        +                "type": "boolean"
        +              },
        +              "retry_after_seconds": {
        +                "anyOf": [
        +                  {
        +                    "minimum": 0,
        +                    "type": "integer"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              }
        +            },
        +            "required": [
        +              "code",
        +              "message",
        +              "recoverable"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      }
        +    },
        +    "required": [
        +      "_meta"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedcompute_connection_to_existing1 field changed
      • changedOutput schema / properties / result / anyOf
        Previous value: -[
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "_meta": {
        -        "additionalProperties": false,
        -        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        -        "properties": {
        -          "deliverables": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        -                "properties": {
        -                  "docx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "dxf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "expires_at": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  },
        -                  "pdf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "xlsx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "expires_at"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "document_id": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "issued_at": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "rate_limit_remaining": {
        -            "anyOf": [
        -              {
        -                "minimum": 0,
        -                "type": "integer"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "request_id": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "schema_version": {
        -            "const": "1.0.0",
        -            "default": "1.0.0",
        -            "type": "string"
        -          },
        -          "scope_boundary": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        -                "properties": {
        -                  "not_in_scope": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "produced": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "recommended_companions": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "type": "string"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "produced",
        -                  "not_in_scope"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tier": {
        -            "enum": [
        -              "free",
        -              "paid"
        -            ],
        -            "type": "string"
        -          },
        -          "tier_upgrade": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        -                "properties": {
        -                  "available_tiers": {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        -                      "properties": {
        -                        "billing": {
        -                          "enum": [
        -                            "one_off",
        -                            "monthly",
        -                            "annual"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "currency": {
        -                          "enum": [
        -                            "GBP",
        -                            "SGD",
        -                            "EUR",
        -                            "USD",
        -                            "CAD",
        -                            "AUD",
        -                            "NZD",
        -                            "MYR"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "display_name": {
        -                          "type": "string"
        -                        },
        -                        "price_local": {
        -                          "type": "number"
        -                        },
        -                        "tier_slug": {
        -                          "enum": [
        -                            "7_day_pass",
        -                            "solo",
        -                            "studio",
        -                            "practice"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "unlock_summary": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "tier_slug",
        -                        "display_name",
        -                        "price_local",
        -                        "currency",
        -                        "billing",
        -                        "unlock_summary"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "current_tier": {
        -                    "const": "free",
        -                    "default": "free",
        -                    "type": "string"
        -                  },
        -                  "pass_credit": {
        -                    "anyOf": [
        -                      {
        -                        "additionalProperties": false,
        -                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        -                        "properties": {
        -                          "amount_local": {
        -                            "type": "number"
        -                          },
        -                          "applies_to": {
        -                            "const": "solo_first_month",
        -                            "default": "solo_first_month",
        -                            "type": "string"
        -                          },
        -                          "currency": {
        -                            "type": "string"
        -                          },
        -                          "redeemable_until": {
        -                            "type": "string"
        -                          }
        -                        },
        -                        "required": [
        -                          "amount_local",
        -                          "currency",
        -                          "redeemable_until"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "pricing_url": {
        -                    "default": "https://civilquants.com/pricing",
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "available_tiers"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tos_url": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "upgrade_hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "warranty_disclaimer": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          }
        -        },
        -        "required": [
        -          "request_id",
        -          "issued_at",
        -          "tier"
        -        ],
        -        "type": "object"
        -      },
        -      "data": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Schema § 1.1 — the typed payload returned inside `MCPResponse[ComputeResult]`.\n\nFree-tier responses omit `drawings` (the downloadable CAD artefact\npointers — the paid differentiator); the bridge enforces this. The\n`audit_trail` and the inline `drawing` preview are present on BOTH tiers\n(V1 ALIGN / 60th-fire D + C). `text_summary` is bounded to 2000 chars —\nkeeps the LLM-facing summary token-cheap and forces longer narrative into\nBoQ row descriptions where it belongs. `warnings` is the non-fatal\ngeometry advisory list (both tiers).",
        -            "properties": {
        -              "assembly_slug": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "audit_trail": {
        -                "anyOf": [
        -                  {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.7 — paid-tier audit-trail entry.\n\nOne entry per BoQ row; `boq_row_index` ties to the row position in\n`ComputeResult.boq_rows`. `derivation` is the human-readable formula\nwalk-through; `formula` is the optional formal expression.",
        -                      "properties": {
        -                        "boq_row_index": {
        -                          "minimum": 0,
        -                          "type": "integer"
        -                        },
        -                        "derivation": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "formula": {
        -                          "anyOf": [
        -                            {
        -                              "type": "string"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ],
        -                          "default": null
        -                        },
        -                        "id": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "parameters_referenced": {
        -                          "items": {
        -                            "type": "string"
        -                          },
        -                          "type": "array"
        -                        }
        -                      },
        -                      "required": [
        -                        "id",
        -                        "boq_row_index",
        -                        "derivation"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "boq_rows": {
        -                "items": {
        -                  "additionalProperties": false,
        -                  "description": "Schema § 1.3 — a single bill row in the requested standard's format.\n\n`description` is the non-verbatim functional description per spec § 13.9 /\n§ 15 invariant — NEVER reproduces a standard's verbatim clause text.\n`rate` / `amount` ship null because rates are commodity data the customer\nowns; the engine's job is the measurement, not the pricing.",
        -                  "properties": {
        -                    "amount": {
        -                      "anyOf": [
        -                        {
        -                          "type": "number"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "attribution": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "audit_id": {
        -                      "anyOf": [
        -                        {
        -                          "type": "string"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "description": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "quantity": {
        -                      "minimum": 0,
        -                      "type": "number"
        -                    },
        -                    "rate": {
        -                      "anyOf": [
        -                        {
        -                          "type": "number"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "unit": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "work_section": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    }
        -                  },
        -                  "required": [
        -                    "work_section",
        -                    "description",
        -                    "quantity",
        -                    "unit",
        -                    "attribution"
        -                  ],
        -                  "type": "object"
        -                },
        -                "type": "array"
        -              },
        -              "drawing": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": false,
        -                    "description": "Schema § 1.6a — inline server-rendered SVG preview of the geometry.\n\nThe MCP mirror of the web ``/compute`` response's ``drawing`` field\n(``api.schemas.compute.DrawingRef``): the same on-screen dimensioned\ndrawing both tiers see in the workspace, surfaced on the MCP compute\nresponse so a chat client can render it inline (60th-fire item C). This\nis the on-screen preview — present on BOTH tiers per the free/paid\nboundary; the downloadable CAD artefacts (DXF / dimensioned PDF) remain\nthe paid differentiator via the export tools.\n\nDefined here rather than importing ``DrawingRef`` because the web\n``schemas`` package imports back into this module (``schemas.render``),\nso reusing it would create an import cycle — the MCP wire contract keeps\nits own copy, the same pattern as ``BoQRow`` / ``DrawingReference``.",
        -                    "properties": {
        -                      "entity_count": {
        -                        "minimum": 0,
        -                        "type": "integer"
        -                      },
        -                      "svg_b64": {
        -                        "minLength": 1,
        -                        "type": "string"
        -                      },
        -                      "unit_of_drawing": {
        -                        "const": "m",
        -                        "default": "m",
        -                        "type": "string"
        -                      },
        -                      "viewbox_height": {
        -                        "exclusiveMinimum": 0,
        -                        "type": "number"
        -                      },
        -                      "viewbox_width": {
        -                        "exclusiveMinimum": 0,
        -                        "type": "number"
        -                      },
        -                      "viewbox_x": {
        -                        "type": "number"
        -                      },
        -                      "viewbox_y": {
        -                        "type": "number"
        -                      }
        -                    },
        -                    "required": [
        -                      "svg_b64",
        -                      "viewbox_x",
        -                      "viewbox_y",
        -                      "viewbox_width",
        -                      "viewbox_height",
        -                      "entity_count"
        -                    ],
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "drawings": {
        -                "anyOf": [
        -                  {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.6 — paid-tier drawing artefact pointer.\n\n`url` is an R2-signed URL; expiry is carried in `_meta.deliverables.expires_at`\non the envelope (not duplicated here). `layers` is DXF-only; PDF/SVG\ncallers omit it.",
        -                      "properties": {
        -                        "drawing_type": {
        -                          "enum": [
        -                            "section",
        -                            "plan",
        -                            "elevation",
        -                            "isometric",
        -                            "detail"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "format": {
        -                          "enum": [
        -                            "DXF",
        -                            "PDF",
        -                            "SVG"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "layers": {
        -                          "anyOf": [
        -                            {
        -                              "items": {
        -                                "type": "string"
        -                              },
        -                              "type": "array"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ],
        -                          "default": null
        -                        },
        -                        "scale": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "sheet_size": {
        -                          "enum": [
        -                            "A1",
        -                            "A2",
        -                            "A3",
        -                            "A4"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "url": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "drawing_type",
        -                        "format",
        -                        "url",
        -                        "sheet_size",
        -                        "scale"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "parameters_used": {
        -                "additionalProperties": false,
        -                "description": "Schema § 1.2 — the parameter snapshot the engine actually used.\n\nSplits user-supplied values from engine defaults so customers can see\nwhich numbers came from them and which the engine filled in. Every\ndefaulted parameter SHOULD have a corresponding entry in `assumptions`\n— the bridge layer enforces this when wrapping engine output.",
        -                "properties": {
        -                  "assumptions": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "engine_defaults": {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  "resolved_from_description": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "additionalProperties": false,
        -                          "description": "Schema § 1.2 — a parameter resolved by the forgiving-input layer.\n\nPopulated by the Track B-Forgiving Haiku-4.5 resolution pass; until that\nlayer lands, instances are constructed only by tests. `source` distinguishes\nthe resolution path so customers can audit which fields were inferred.",
        -                          "properties": {
        -                            "confidence": {
        -                              "anyOf": [
        -                                {
        -                                  "enum": [
        -                                    "high",
        -                                    "medium",
        -                                    "low"
        -                                  ],
        -                                  "type": "string"
        -                                },
        -                                {
        -                                  "type": "null"
        -                                }
        -                              ],
        -                              "default": null
        -                            },
        -                            "field_name": {
        -                              "minLength": 1,
        -                              "type": "string"
        -                            },
        -                            "resolved_value": {},
        -                            "source": {
        -                              "enum": [
        -                                "description_field",
        -                                "haiku_resolution",
        -                                "engine_default"
        -                              ],
        -                              "type": "string"
        -                            }
        -                          },
        -                          "required": [
        -                            "field_name",
        -                            "resolved_value",
        -                            "source"
        -                          ],
        -                          "type": "object"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "user_supplied": {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  }
        -                },
        -                "type": "object"
        -              },
        -              "standard": {
        -                "enum": [
        -                  "CESMM4",
        -                  "NRM2",
        -                  "SMM7",
        -                  "MMHW"
        -                ],
        -                "type": "string"
        -              },
        -              "text_summary": {
        -                "maxLength": 2000,
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "totals_summary": {
        -                "additionalProperties": false,
        -                "description": "Schema § 1.4 — totals_summary as a typed wrapper around the free-form dict.\n\nWire shape is a flat object (`{\"concrete_m3\": {...}, \"rebar_t\": {...}}`).\nWe model it as `RootModel`-equivalent via `model_config(extra=\"allow\")`\n+ a single `__root__`-style `entries` dict. Pydantic v2 recommends\n`RootModel` for free-form roots; using a wrapper class keeps the import\nsurface uniform with the rest of this module.",
        -                "properties": {
        -                  "entries": {
        -                    "additionalProperties": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.4 — single material/work-class total entry.",
        -                      "properties": {
        -                        "quantity": {
        -                          "minimum": 0,
        -                          "type": "number"
        -                        },
        -                        "unit": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "quantity",
        -                        "unit"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "object"
        -                  }
        -                },
        -                "type": "object"
        -              },
        -              "warnings": {
        -                "items": {
        -                  "additionalProperties": false,
        -                  "description": "Schema § 1.8 — a non-fatal geometry advisory (56th-fire T2).\n\nThe wire projection of the engine's `core.GeometryWarning`. Advisory only:\na warning NEVER changes a measured quantity — it flags geometry that is\nvalid but likely a mistake (e.g. a stale dependent-height default). Present\non BOTH tiers — a correctness/safety signal, not a paid feature.",
        -                  "properties": {
        -                    "affected_params": {
        -                      "items": {
        -                        "type": "string"
        -                      },
        -                      "type": "array"
        -                    },
        -                    "code": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "detail": {
        -                      "additionalProperties": {
        -                        "type": "number"
        -                      },
        -                      "type": "object"
        -                    },
        -                    "message": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "severity": {
        -                      "enum": [
        -                        "info",
        -                        "advisory",
        -                        "caution"
        -                      ],
        -                      "type": "string"
        -                    }
        -                  },
        -                  "required": [
        -                    "code",
        -                    "severity",
        -                    "message"
        -                  ],
        -                  "type": "object"
        -                },
        -                "type": "array"
        -              }
        -            },
        -            "required": [
        -              "assembly_slug",
        -              "standard",
        -              "parameters_used",
        -              "boq_rows",
        -              "totals_summary",
        -              "text_summary"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      },
        -      "error": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        -            "properties": {
        -              "code": {
        -                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        -                "enum": [
        -                  "RATE_LIMIT_EXCEEDED",
        -                  "TIER_INSUFFICIENT",
        -                  "INVALID_INPUT",
        -                  "SCHEMA_VERSION_MISMATCH",
        -                  "SCHEMA_INVARIANT_VIOLATION",
        -                  "UPSTREAM_TIMEOUT",
        -                  "BACKEND_FAILURE",
        -                  "IP_BLOCKED",
        -                  "RESOURCE_NOT_FOUND",
        -                  "RENDER_FAILURE",
        -                  "OCR_LOW_CONFIDENCE",
        -                  "MANUAL_REVIEW_REQUIRED",
        -                  "ACCEPTANCE_REQUIRED",
        -                  "INVALID_TOKEN"
        -                ],
        -                "type": "string"
        -              },
        -              "details": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "message": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "recoverable": {
        -                "type": "boolean"
        -              },
        -              "retry_after_seconds": {
        -                "anyOf": [
        -                  {
        -                    "minimum": 0,
        -                    "type": "integer"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              }
        -            },
        -            "required": [
        -              "code",
        -              "message",
        -              "recoverable"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      }
        -    },
        -    "required": [
        -      "_meta"
        -    ],
        -    "type": "object"
        -  },
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "_meta": {
        -        "additionalProperties": false,
        -        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        -        "properties": {
        -          "deliverables": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        -                "properties": {
        -                  "docx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "dxf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "expires_at": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  },
        -                  "pdf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "xlsx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "expires_at"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "document_id": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "issued_at": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "rate_limit_remaining": {
        -            "anyOf": [
        -              {
        -                "minimum": 0,
        -                "type": "integer"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "request_id": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "schema_version": {
        -            "const": "1.0.0",
        -            "default": "1.0.0",
        -            "type": "string"
        -          },
        -          "scope_boundary": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        -                "properties": {
        -                  "not_in_scope": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "produced": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "recommended_companions": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "type": "string"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "produced",
        -                  "not_in_scope"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tier": {
        -            "enum": [
        -              "free",
        -              "paid"
        -            ],
        -            "type": "string"
        -          },
        -          "tier_upgrade": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        -                "properties": {
        -                  "available_tiers": {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        -                      "properties": {
        -                        "billing": {
        -                          "enum": [
        -                            "one_off",
        -                            "monthly",
        -                            "annual"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "currency": {
        -                          "enum": [
        -                            "GBP",
        -                            "SGD",
        -                            "EUR",
        -                            "USD",
        -                            "CAD",
        -                            "AUD",
        -                            "NZD",
        -                            "MYR"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "display_name": {
        -                          "type": "string"
        -                        },
        -                        "price_local": {
        -                          "type": "number"
        -                        },
        -                        "tier_slug": {
        -                          "enum": [
        -                            "7_day_pass",
        -                            "solo",
        -                            "studio",
        -                            "practice"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "unlock_summary": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "tier_slug",
        -                        "display_name",
        -                        "price_local",
        -                        "currency",
        -                        "billing",
        -                        "unlock_summary"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "current_tier": {
        -                    "const": "free",
        -                    "default": "free",
        -                    "type": "string"
        -                  },
        -                  "pass_credit": {
        -                    "anyOf": [
        -                      {
        -                        "additionalProperties": false,
        -                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        -                        "properties": {
        -                          "amount_local": {
        -                            "type": "number"
        -                          },
        -                          "applies_to": {
        -                            "const": "solo_first_month",
        -                            "default": "solo_first_month",
        -                            "type": "string"
        -                          },
        -                          "currency": {
        -                            "type": "string"
        -                          },
        -                          "redeemable_until": {
        -                            "type": "string"
        -                          }
        -                        },
        -                        "required": [
        -                          "amount_local",
        -                          "currency",
        -                          "redeemable_until"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "pricing_url": {
        -                    "default": "https://civilquants.com/pricing",
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "available_tiers"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tos_url": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "upgrade_hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "warranty_disclaimer": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          }
        -        },
        -        "required": [
        -          "request_id",
        -          "issued_at",
        -          "tier"
        -        ],
        -        "type": "object"
        -      },
        -      "data": {
        -        "default": null,
        -        "title": "Data"
        -      },
        -      "error": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        -            "properties": {
        -              "code": {
        -                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        -                "enum": [
        -                  "RATE_LIMIT_EXCEEDED",
        -                  "TIER_INSUFFICIENT",
        -                  "INVALID_INPUT",
        -                  "SCHEMA_VERSION_MISMATCH",
        -                  "SCHEMA_INVARIANT_VIOLATION",
        -                  "UPSTREAM_TIMEOUT",
        -                  "BACKEND_FAILURE",
        -                  "IP_BLOCKED",
        -                  "RESOURCE_NOT_FOUND",
        -                  "RENDER_FAILURE",
        -                  "OCR_LOW_CONFIDENCE",
        -                  "MANUAL_REVIEW_REQUIRED",
        -                  "ACCEPTANCE_REQUIRED",
        -                  "INVALID_TOKEN"
        -                ],
        -                "type": "string"
        -              },
        -              "details": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "message": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "recoverable": {
        -                "type": "boolean"
        -              },
        -              "retry_after_seconds": {
        -                "anyOf": [
        -                  {
        -                    "minimum": 0,
        -                    "type": "integer"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              }
        -            },
        -            "required": [
        -              "code",
        -              "message",
        -              "recoverable"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      }
        -    },
        -    "required": [
        -      "_meta"
        -    ],
        -    "type": "object"
        -  }
        -]New value: +[
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "_meta": {
        +        "additionalProperties": false,
        +        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        +        "properties": {
        +          "deliverables": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        +                "properties": {
        +                  "docx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "dxf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "expires_at": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  },
        +                  "pdf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "xlsx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "expires_at"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "document_id": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "issued_at": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "rate_limit_remaining": {
        +            "anyOf": [
        +              {
        +                "minimum": 0,
        +                "type": "integer"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "request_id": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "schema_version": {
        +            "const": "1.0.0",
        +            "default": "1.0.0",
        +            "type": "string"
        +          },
        +          "scope_boundary": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        +                "properties": {
        +                  "not_in_scope": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "produced": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "recommended_companions": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "type": "string"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "produced",
        +                  "not_in_scope"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tier": {
        +            "enum": [
        +              "free",
        +              "paid"
        +            ],
        +            "type": "string"
        +          },
        +          "tier_upgrade": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        +                "properties": {
        +                  "available_tiers": {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        +                      "properties": {
        +                        "billing": {
        +                          "enum": [
        +                            "one_off",
        +                            "monthly",
        +                            "annual"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "currency": {
        +                          "enum": [
        +                            "GBP",
        +                            "SGD",
        +                            "EUR",
        +                            "USD",
        +                            "CAD",
        +                            "AUD",
        +                            "NZD",
        +                            "MYR"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "display_name": {
        +                          "type": "string"
        +                        },
        +                        "price_local": {
        +                          "type": "number"
        +                        },
        +                        "tier_slug": {
        +                          "enum": [
        +                            "7_day_pass",
        +                            "solo",
        +                            "studio",
        +                            "practice"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "unlock_summary": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "tier_slug",
        +                        "display_name",
        +                        "price_local",
        +                        "currency",
        +                        "billing",
        +                        "unlock_summary"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "current_tier": {
        +                    "const": "free",
        +                    "default": "free",
        +                    "type": "string"
        +                  },
        +                  "pass_credit": {
        +                    "anyOf": [
        +                      {
        +                        "additionalProperties": false,
        +                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        +                        "properties": {
        +                          "amount_local": {
        +                            "type": "number"
        +                          },
        +                          "applies_to": {
        +                            "const": "solo_first_month",
        +                            "default": "solo_first_month",
        +                            "type": "string"
        +                          },
        +                          "currency": {
        +                            "type": "string"
        +                          },
        +                          "redeemable_until": {
        +                            "type": "string"
        +                          }
        +                        },
        +                        "required": [
        +                          "amount_local",
        +                          "currency",
        +                          "redeemable_until"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "pricing_url": {
        +                    "default": "https://civilquants.com/pricing",
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "available_tiers"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tos_url": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "upgrade_hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "warranty_disclaimer": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          }
        +        },
        +        "required": [
        +          "request_id",
        +          "issued_at",
        +          "tier"
        +        ],
        +        "type": "object"
        +      },
        +      "data": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Schema § 1.1 — the typed payload returned inside `MCPResponse[ComputeResult]`.\n\nFree-tier responses omit `drawings` (the downloadable CAD artefact\npointers — the paid differentiator); the bridge enforces this. The\n`audit_trail` and the inline `drawing` preview are present on BOTH tiers\n(V1 ALIGN / 60th-fire D + C). `text_summary` is bounded to 2000 chars —\nkeeps the LLM-facing summary token-cheap and forces longer narrative into\nBoQ row descriptions where it belongs. `warnings` is the non-fatal\ngeometry advisory list (both tiers).",
        +            "properties": {
        +              "assembly_slug": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "audit_trail": {
        +                "anyOf": [
        +                  {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.7 — paid-tier audit-trail entry.\n\nOne entry per BoQ row; `boq_row_index` ties to the row position in\n`ComputeResult.boq_rows`. `derivation` is the human-readable formula\nwalk-through; `formula` is the optional formal expression.",
        +                      "properties": {
        +                        "boq_row_index": {
        +                          "minimum": 0,
        +                          "type": "integer"
        +                        },
        +                        "derivation": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "formula": {
        +                          "anyOf": [
        +                            {
        +                              "type": "string"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ],
        +                          "default": null
        +                        },
        +                        "id": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "parameters_referenced": {
        +                          "items": {
        +                            "type": "string"
        +                          },
        +                          "type": "array"
        +                        }
        +                      },
        +                      "required": [
        +                        "id",
        +                        "boq_row_index",
        +                        "derivation"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "boq_rows": {
        +                "items": {
        +                  "additionalProperties": false,
        +                  "description": "Schema § 1.3 — a single bill row in the requested standard's format.\n\n`description` is the non-verbatim functional description per spec § 13.9 /\n§ 15 invariant — NEVER reproduces a standard's verbatim clause text.\n`rate` / `amount` ship null because rates are commodity data the customer\nowns; the engine's job is the measurement, not the pricing.",
        +                  "properties": {
        +                    "amount": {
        +                      "anyOf": [
        +                        {
        +                          "type": "number"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "attribution": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "audit_id": {
        +                      "anyOf": [
        +                        {
        +                          "type": "string"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "description": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "quantity": {
        +                      "minimum": 0,
        +                      "type": "number"
        +                    },
        +                    "rate": {
        +                      "anyOf": [
        +                        {
        +                          "type": "number"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "unit": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "work_section": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    }
        +                  },
        +                  "required": [
        +                    "work_section",
        +                    "description",
        +                    "quantity",
        +                    "unit",
        +                    "attribution"
        +                  ],
        +                  "type": "object"
        +                },
        +                "type": "array"
        +              },
        +              "drawing": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": false,
        +                    "description": "Schema § 1.6a — inline server-rendered SVG preview of the geometry.\n\nThe MCP mirror of the web ``/compute`` response's ``drawing`` field\n(``api.schemas.compute.DrawingRef``): the same on-screen dimensioned\ndrawing both tiers see in the workspace, surfaced on the MCP compute\nresponse so a chat client can render it inline (60th-fire item C). This\nis the on-screen preview — present on BOTH tiers per the free/paid\nboundary; the downloadable CAD artefacts (DXF / dimensioned PDF) remain\nthe paid differentiator via the export tools.\n\nDefined here rather than importing ``DrawingRef`` because the web\n``schemas`` package imports back into this module (``schemas.render``),\nso reusing it would create an import cycle — the MCP wire contract keeps\nits own copy, the same pattern as ``BoQRow`` / ``DrawingReference``.",
        +                    "properties": {
        +                      "entity_count": {
        +                        "minimum": 0,
        +                        "type": "integer"
        +                      },
        +                      "svg_b64": {
        +                        "minLength": 1,
        +                        "type": "string"
        +                      },
        +                      "unit_of_drawing": {
        +                        "const": "m",
        +                        "default": "m",
        +                        "type": "string"
        +                      },
        +                      "viewbox_height": {
        +                        "exclusiveMinimum": 0,
        +                        "type": "number"
        +                      },
        +                      "viewbox_width": {
        +                        "exclusiveMinimum": 0,
        +                        "type": "number"
        +                      },
        +                      "viewbox_x": {
        +                        "type": "number"
        +                      },
        +                      "viewbox_y": {
        +                        "type": "number"
        +                      }
        +                    },
        +                    "required": [
        +                      "svg_b64",
        +                      "viewbox_x",
        +                      "viewbox_y",
        +                      "viewbox_width",
        +                      "viewbox_height",
        +                      "entity_count"
        +                    ],
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "drawings": {
        +                "anyOf": [
        +                  {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.6 — paid-tier drawing artefact pointer.\n\n`url` is an R2-signed URL; expiry is carried in `_meta.deliverables.expires_at`\non the envelope (not duplicated here). `layers` is DXF-only; PDF/SVG\ncallers omit it.",
        +                      "properties": {
        +                        "drawing_type": {
        +                          "enum": [
        +                            "section",
        +                            "plan",
        +                            "elevation",
        +                            "isometric",
        +                            "detail"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "format": {
        +                          "enum": [
        +                            "DXF",
        +                            "PDF",
        +                            "SVG"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "layers": {
        +                          "anyOf": [
        +                            {
        +                              "items": {
        +                                "type": "string"
        +                              },
        +                              "type": "array"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ],
        +                          "default": null
        +                        },
        +                        "scale": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "sheet_size": {
        +                          "enum": [
        +                            "A1",
        +                            "A2",
        +                            "A3",
        +                            "A4"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "url": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "drawing_type",
        +                        "format",
        +                        "url",
        +                        "sheet_size",
        +                        "scale"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "parameters_used": {
        +                "additionalProperties": false,
        +                "description": "Schema § 1.2 — the parameter snapshot the engine actually used.\n\nSplits user-supplied values from engine defaults so customers can see\nwhich numbers came from them and which the engine filled in. Every\ndefaulted parameter SHOULD have a corresponding entry in `assumptions`\n— the bridge layer enforces this when wrapping engine output.",
        +                "properties": {
        +                  "assumptions": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "engine_defaults": {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  "user_supplied": {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  }
        +                },
        +                "type": "object"
        +              },
        +              "standard": {
        +                "enum": [
        +                  "CESMM4",
        +                  "NRM2",
        +                  "SMM7",
        +                  "MMHW"
        +                ],
        +                "type": "string"
        +              },
        +              "text_summary": {
        +                "maxLength": 2000,
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "totals_summary": {
        +                "additionalProperties": false,
        +                "description": "Schema § 1.4 — totals_summary as a typed wrapper around the free-form dict.\n\nWire shape is a flat object (`{\"concrete_m3\": {...}, \"rebar_t\": {...}}`).\nWe model it as `RootModel`-equivalent via `model_config(extra=\"allow\")`\n+ a single `__root__`-style `entries` dict. Pydantic v2 recommends\n`RootModel` for free-form roots; using a wrapper class keeps the import\nsurface uniform with the rest of this module.",
        +                "properties": {
        +                  "entries": {
        +                    "additionalProperties": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.4 — single material/work-class total entry.",
        +                      "properties": {
        +                        "quantity": {
        +                          "minimum": 0,
        +                          "type": "number"
        +                        },
        +                        "unit": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "quantity",
        +                        "unit"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "object"
        +                  }
        +                },
        +                "type": "object"
        +              },
        +              "warnings": {
        +                "items": {
        +                  "additionalProperties": false,
        +                  "description": "Schema § 1.8 — a non-fatal geometry advisory (56th-fire T2).\n\nThe wire projection of the engine's `core.GeometryWarning`. Advisory only:\na warning NEVER changes a measured quantity — it flags geometry that is\nvalid but likely a mistake (e.g. a stale dependent-height default). Present\non BOTH tiers — a correctness/safety signal, not a paid feature.",
        +                  "properties": {
        +                    "affected_params": {
        +                      "items": {
        +                        "type": "string"
        +                      },
        +                      "type": "array"
        +                    },
        +                    "code": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "detail": {
        +                      "additionalProperties": {
        +                        "type": "number"
        +                      },
        +                      "type": "object"
        +                    },
        +                    "message": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "severity": {
        +                      "enum": [
        +                        "info",
        +                        "advisory",
        +                        "caution"
        +                      ],
        +                      "type": "string"
        +                    }
        +                  },
        +                  "required": [
        +                    "code",
        +                    "severity",
        +                    "message"
        +                  ],
        +                  "type": "object"
        +                },
        +                "type": "array"
        +              }
        +            },
        +            "required": [
        +              "assembly_slug",
        +              "standard",
        +              "parameters_used",
        +              "boq_rows",
        +              "totals_summary",
        +              "text_summary"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      },
        +      "error": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        +            "properties": {
        +              "code": {
        +                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        +                "enum": [
        +                  "RATE_LIMIT_EXCEEDED",
        +                  "TIER_INSUFFICIENT",
        +                  "INVALID_INPUT",
        +                  "SCHEMA_VERSION_MISMATCH",
        +                  "SCHEMA_INVARIANT_VIOLATION",
        +                  "UPSTREAM_TIMEOUT",
        +                  "BACKEND_FAILURE",
        +                  "IP_BLOCKED",
        +                  "RESOURCE_NOT_FOUND",
        +                  "RENDER_FAILURE",
        +                  "OCR_LOW_CONFIDENCE",
        +                  "MANUAL_REVIEW_REQUIRED",
        +                  "ACCEPTANCE_REQUIRED",
        +                  "INVALID_TOKEN"
        +                ],
        +                "type": "string"
        +              },
        +              "details": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "message": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "recoverable": {
        +                "type": "boolean"
        +              },
        +              "retry_after_seconds": {
        +                "anyOf": [
        +                  {
        +                    "minimum": 0,
        +                    "type": "integer"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              }
        +            },
        +            "required": [
        +              "code",
        +              "message",
        +              "recoverable"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      }
        +    },
        +    "required": [
        +      "_meta"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "_meta": {
        +        "additionalProperties": false,
        +        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        +        "properties": {
        +          "deliverables": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        +                "properties": {
        +                  "docx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "dxf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "expires_at": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  },
        +                  "pdf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "xlsx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "expires_at"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "document_id": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "issued_at": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "rate_limit_remaining": {
        +            "anyOf": [
        +              {
        +                "minimum": 0,
        +                "type": "integer"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "request_id": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "schema_version": {
        +            "const": "1.0.0",
        +            "default": "1.0.0",
        +            "type": "string"
        +          },
        +          "scope_boundary": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        +                "properties": {
        +                  "not_in_scope": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "produced": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "recommended_companions": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "type": "string"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "produced",
        +                  "not_in_scope"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tier": {
        +            "enum": [
        +              "free",
        +              "paid"
        +            ],
        +            "type": "string"
        +          },
        +          "tier_upgrade": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        +                "properties": {
        +                  "available_tiers": {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        +                      "properties": {
        +                        "billing": {
        +                          "enum": [
        +                            "one_off",
        +                            "monthly",
        +                            "annual"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "currency": {
        +                          "enum": [
        +                            "GBP",
        +                            "SGD",
        +                            "EUR",
        +                            "USD",
        +                            "CAD",
        +                            "AUD",
        +                            "NZD",
        +                            "MYR"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "display_name": {
        +                          "type": "string"
        +                        },
        +                        "price_local": {
        +                          "type": "number"
        +                        },
        +                        "tier_slug": {
        +                          "enum": [
        +                            "7_day_pass",
        +                            "solo",
        +                            "studio",
        +                            "practice"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "unlock_summary": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "tier_slug",
        +                        "display_name",
        +                        "price_local",
        +                        "currency",
        +                        "billing",
        +                        "unlock_summary"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "current_tier": {
        +                    "const": "free",
        +                    "default": "free",
        +                    "type": "string"
        +                  },
        +                  "pass_credit": {
        +                    "anyOf": [
        +                      {
        +                        "additionalProperties": false,
        +                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        +                        "properties": {
        +                          "amount_local": {
        +                            "type": "number"
        +                          },
        +                          "applies_to": {
        +                            "const": "solo_first_month",
        +                            "default": "solo_first_month",
        +                            "type": "string"
        +                          },
        +                          "currency": {
        +                            "type": "string"
        +                          },
        +                          "redeemable_until": {
        +                            "type": "string"
        +                          }
        +                        },
        +                        "required": [
        +                          "amount_local",
        +                          "currency",
        +                          "redeemable_until"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "pricing_url": {
        +                    "default": "https://civilquants.com/pricing",
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "available_tiers"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tos_url": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "upgrade_hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "warranty_disclaimer": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          }
        +        },
        +        "required": [
        +          "request_id",
        +          "issued_at",
        +          "tier"
        +        ],
        +        "type": "object"
        +      },
        +      "data": {
        +        "default": null,
        +        "title": "Data"
        +      },
        +      "error": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        +            "properties": {
        +              "code": {
        +                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        +                "enum": [
        +                  "RATE_LIMIT_EXCEEDED",
        +                  "TIER_INSUFFICIENT",
        +                  "INVALID_INPUT",
        +                  "SCHEMA_VERSION_MISMATCH",
        +                  "SCHEMA_INVARIANT_VIOLATION",
        +                  "UPSTREAM_TIMEOUT",
        +                  "BACKEND_FAILURE",
        +                  "IP_BLOCKED",
        +                  "RESOURCE_NOT_FOUND",
        +                  "RENDER_FAILURE",
        +                  "OCR_LOW_CONFIDENCE",
        +                  "MANUAL_REVIEW_REQUIRED",
        +                  "ACCEPTANCE_REQUIRED",
        +                  "INVALID_TOKEN"
        +                ],
        +                "type": "string"
        +              },
        +              "details": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "message": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "recoverable": {
        +                "type": "boolean"
        +              },
        +              "retry_after_seconds": {
        +                "anyOf": [
        +                  {
        +                    "minimum": 0,
        +                    "type": "integer"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              }
        +            },
        +            "required": [
        +              "code",
        +              "message",
        +              "recoverable"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      }
        +    },
        +    "required": [
        +      "_meta"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedcompute_counterfort_wall1 field changed
      • changedOutput schema / properties / result / anyOf
        Previous value: -[
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "_meta": {
        -        "additionalProperties": false,
        -        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        -        "properties": {
        -          "deliverables": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        -                "properties": {
        -                  "docx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "dxf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "expires_at": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  },
        -                  "pdf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "xlsx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "expires_at"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "document_id": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "issued_at": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "rate_limit_remaining": {
        -            "anyOf": [
        -              {
        -                "minimum": 0,
        -                "type": "integer"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "request_id": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "schema_version": {
        -            "const": "1.0.0",
        -            "default": "1.0.0",
        -            "type": "string"
        -          },
        -          "scope_boundary": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        -                "properties": {
        -                  "not_in_scope": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "produced": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "recommended_companions": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "type": "string"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "produced",
        -                  "not_in_scope"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tier": {
        -            "enum": [
        -              "free",
        -              "paid"
        -            ],
        -            "type": "string"
        -          },
        -          "tier_upgrade": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        -                "properties": {
        -                  "available_tiers": {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        -                      "properties": {
        -                        "billing": {
        -                          "enum": [
        -                            "one_off",
        -                            "monthly",
        -                            "annual"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "currency": {
        -                          "enum": [
        -                            "GBP",
        -                            "SGD",
        -                            "EUR",
        -                            "USD",
        -                            "CAD",
        -                            "AUD",
        -                            "NZD",
        -                            "MYR"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "display_name": {
        -                          "type": "string"
        -                        },
        -                        "price_local": {
        -                          "type": "number"
        -                        },
        -                        "tier_slug": {
        -                          "enum": [
        -                            "7_day_pass",
        -                            "solo",
        -                            "studio",
        -                            "practice"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "unlock_summary": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "tier_slug",
        -                        "display_name",
        -                        "price_local",
        -                        "currency",
        -                        "billing",
        -                        "unlock_summary"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "current_tier": {
        -                    "const": "free",
        -                    "default": "free",
        -                    "type": "string"
        -                  },
        -                  "pass_credit": {
        -                    "anyOf": [
        -                      {
        -                        "additionalProperties": false,
        -                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        -                        "properties": {
        -                          "amount_local": {
        -                            "type": "number"
        -                          },
        -                          "applies_to": {
        -                            "const": "solo_first_month",
        -                            "default": "solo_first_month",
        -                            "type": "string"
        -                          },
        -                          "currency": {
        -                            "type": "string"
        -                          },
        -                          "redeemable_until": {
        -                            "type": "string"
        -                          }
        -                        },
        -                        "required": [
        -                          "amount_local",
        -                          "currency",
        -                          "redeemable_until"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "pricing_url": {
        -                    "default": "https://civilquants.com/pricing",
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "available_tiers"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tos_url": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "upgrade_hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "warranty_disclaimer": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          }
        -        },
        -        "required": [
        -          "request_id",
        -          "issued_at",
        -          "tier"
        -        ],
        -        "type": "object"
        -      },
        -      "data": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Schema § 1.1 — the typed payload returned inside `MCPResponse[ComputeResult]`.\n\nFree-tier responses omit `drawings` (the downloadable CAD artefact\npointers — the paid differentiator); the bridge enforces this. The\n`audit_trail` and the inline `drawing` preview are present on BOTH tiers\n(V1 ALIGN / 60th-fire D + C). `text_summary` is bounded to 2000 chars —\nkeeps the LLM-facing summary token-cheap and forces longer narrative into\nBoQ row descriptions where it belongs. `warnings` is the non-fatal\ngeometry advisory list (both tiers).",
        -            "properties": {
        -              "assembly_slug": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "audit_trail": {
        -                "anyOf": [
        -                  {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.7 — paid-tier audit-trail entry.\n\nOne entry per BoQ row; `boq_row_index` ties to the row position in\n`ComputeResult.boq_rows`. `derivation` is the human-readable formula\nwalk-through; `formula` is the optional formal expression.",
        -                      "properties": {
        -                        "boq_row_index": {
        -                          "minimum": 0,
        -                          "type": "integer"
        -                        },
        -                        "derivation": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "formula": {
        -                          "anyOf": [
        -                            {
        -                              "type": "string"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ],
        -                          "default": null
        -                        },
        -                        "id": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "parameters_referenced": {
        -                          "items": {
        -                            "type": "string"
        -                          },
        -                          "type": "array"
        -                        }
        -                      },
        -                      "required": [
        -                        "id",
        -                        "boq_row_index",
        -                        "derivation"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "boq_rows": {
        -                "items": {
        -                  "additionalProperties": false,
        -                  "description": "Schema § 1.3 — a single bill row in the requested standard's format.\n\n`description` is the non-verbatim functional description per spec § 13.9 /\n§ 15 invariant — NEVER reproduces a standard's verbatim clause text.\n`rate` / `amount` ship null because rates are commodity data the customer\nowns; the engine's job is the measurement, not the pricing.",
        -                  "properties": {
        -                    "amount": {
        -                      "anyOf": [
        -                        {
        -                          "type": "number"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "attribution": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "audit_id": {
        -                      "anyOf": [
        -                        {
        -                          "type": "string"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "description": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "quantity": {
        -                      "minimum": 0,
        -                      "type": "number"
        -                    },
        -                    "rate": {
        -                      "anyOf": [
        -                        {
        -                          "type": "number"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "unit": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "work_section": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    }
        -                  },
        -                  "required": [
        -                    "work_section",
        -                    "description",
        -                    "quantity",
        -                    "unit",
        -                    "attribution"
        -                  ],
        -                  "type": "object"
        -                },
        -                "type": "array"
        -              },
        -              "drawing": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": false,
        -                    "description": "Schema § 1.6a — inline server-rendered SVG preview of the geometry.\n\nThe MCP mirror of the web ``/compute`` response's ``drawing`` field\n(``api.schemas.compute.DrawingRef``): the same on-screen dimensioned\ndrawing both tiers see in the workspace, surfaced on the MCP compute\nresponse so a chat client can render it inline (60th-fire item C). This\nis the on-screen preview — present on BOTH tiers per the free/paid\nboundary; the downloadable CAD artefacts (DXF / dimensioned PDF) remain\nthe paid differentiator via the export tools.\n\nDefined here rather than importing ``DrawingRef`` because the web\n``schemas`` package imports back into this module (``schemas.render``),\nso reusing it would create an import cycle — the MCP wire contract keeps\nits own copy, the same pattern as ``BoQRow`` / ``DrawingReference``.",
        -                    "properties": {
        -                      "entity_count": {
        -                        "minimum": 0,
        -                        "type": "integer"
        -                      },
        -                      "svg_b64": {
        -                        "minLength": 1,
        -                        "type": "string"
        -                      },
        -                      "unit_of_drawing": {
        -                        "const": "m",
        -                        "default": "m",
        -                        "type": "string"
        -                      },
        -                      "viewbox_height": {
        -                        "exclusiveMinimum": 0,
        -                        "type": "number"
        -                      },
        -                      "viewbox_width": {
        -                        "exclusiveMinimum": 0,
        -                        "type": "number"
        -                      },
        -                      "viewbox_x": {
        -                        "type": "number"
        -                      },
        -                      "viewbox_y": {
        -                        "type": "number"
        -                      }
        -                    },
        -                    "required": [
        -                      "svg_b64",
        -                      "viewbox_x",
        -                      "viewbox_y",
        -                      "viewbox_width",
        -                      "viewbox_height",
        -                      "entity_count"
        -                    ],
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "drawings": {
        -                "anyOf": [
        -                  {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.6 — paid-tier drawing artefact pointer.\n\n`url` is an R2-signed URL; expiry is carried in `_meta.deliverables.expires_at`\non the envelope (not duplicated here). `layers` is DXF-only; PDF/SVG\ncallers omit it.",
        -                      "properties": {
        -                        "drawing_type": {
        -                          "enum": [
        -                            "section",
        -                            "plan",
        -                            "elevation",
        -                            "isometric",
        -                            "detail"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "format": {
        -                          "enum": [
        -                            "DXF",
        -                            "PDF",
        -                            "SVG"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "layers": {
        -                          "anyOf": [
        -                            {
        -                              "items": {
        -                                "type": "string"
        -                              },
        -                              "type": "array"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ],
        -                          "default": null
        -                        },
        -                        "scale": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "sheet_size": {
        -                          "enum": [
        -                            "A1",
        -                            "A2",
        -                            "A3",
        -                            "A4"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "url": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "drawing_type",
        -                        "format",
        -                        "url",
        -                        "sheet_size",
        -                        "scale"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "parameters_used": {
        -                "additionalProperties": false,
        -                "description": "Schema § 1.2 — the parameter snapshot the engine actually used.\n\nSplits user-supplied values from engine defaults so customers can see\nwhich numbers came from them and which the engine filled in. Every\ndefaulted parameter SHOULD have a corresponding entry in `assumptions`\n— the bridge layer enforces this when wrapping engine output.",
        -                "properties": {
        -                  "assumptions": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "engine_defaults": {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  "resolved_from_description": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "additionalProperties": false,
        -                          "description": "Schema § 1.2 — a parameter resolved by the forgiving-input layer.\n\nPopulated by the Track B-Forgiving Haiku-4.5 resolution pass; until that\nlayer lands, instances are constructed only by tests. `source` distinguishes\nthe resolution path so customers can audit which fields were inferred.",
        -                          "properties": {
        -                            "confidence": {
        -                              "anyOf": [
        -                                {
        -                                  "enum": [
        -                                    "high",
        -                                    "medium",
        -                                    "low"
        -                                  ],
        -                                  "type": "string"
        -                                },
        -                                {
        -                                  "type": "null"
        -                                }
        -                              ],
        -                              "default": null
        -                            },
        -                            "field_name": {
        -                              "minLength": 1,
        -                              "type": "string"
        -                            },
        -                            "resolved_value": {},
        -                            "source": {
        -                              "enum": [
        -                                "description_field",
        -                                "haiku_resolution",
        -                                "engine_default"
        -                              ],
        -                              "type": "string"
        -                            }
        -                          },
        -                          "required": [
        -                            "field_name",
        -                            "resolved_value",
        -                            "source"
        -                          ],
        -                          "type": "object"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "user_supplied": {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  }
        -                },
        -                "type": "object"
        -              },
        -              "standard": {
        -                "enum": [
        -                  "CESMM4",
        -                  "NRM2",
        -                  "SMM7",
        -                  "MMHW"
        -                ],
        -                "type": "string"
        -              },
        -              "text_summary": {
        -                "maxLength": 2000,
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "totals_summary": {
        -                "additionalProperties": false,
        -                "description": "Schema § 1.4 — totals_summary as a typed wrapper around the free-form dict.\n\nWire shape is a flat object (`{\"concrete_m3\": {...}, \"rebar_t\": {...}}`).\nWe model it as `RootModel`-equivalent via `model_config(extra=\"allow\")`\n+ a single `__root__`-style `entries` dict. Pydantic v2 recommends\n`RootModel` for free-form roots; using a wrapper class keeps the import\nsurface uniform with the rest of this module.",
        -                "properties": {
        -                  "entries": {
        -                    "additionalProperties": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.4 — single material/work-class total entry.",
        -                      "properties": {
        -                        "quantity": {
        -                          "minimum": 0,
        -                          "type": "number"
        -                        },
        -                        "unit": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "quantity",
        -                        "unit"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "object"
        -                  }
        -                },
        -                "type": "object"
        -              },
        -              "warnings": {
        -                "items": {
        -                  "additionalProperties": false,
        -                  "description": "Schema § 1.8 — a non-fatal geometry advisory (56th-fire T2).\n\nThe wire projection of the engine's `core.GeometryWarning`. Advisory only:\na warning NEVER changes a measured quantity — it flags geometry that is\nvalid but likely a mistake (e.g. a stale dependent-height default). Present\non BOTH tiers — a correctness/safety signal, not a paid feature.",
        -                  "properties": {
        -                    "affected_params": {
        -                      "items": {
        -                        "type": "string"
        -                      },
        -                      "type": "array"
        -                    },
        -                    "code": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "detail": {
        -                      "additionalProperties": {
        -                        "type": "number"
        -                      },
        -                      "type": "object"
        -                    },
        -                    "message": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "severity": {
        -                      "enum": [
        -                        "info",
        -                        "advisory",
        -                        "caution"
        -                      ],
        -                      "type": "string"
        -                    }
        -                  },
        -                  "required": [
        -                    "code",
        -                    "severity",
        -                    "message"
        -                  ],
        -                  "type": "object"
        -                },
        -                "type": "array"
        -              }
        -            },
        -            "required": [
        -              "assembly_slug",
        -              "standard",
        -              "parameters_used",
        -              "boq_rows",
        -              "totals_summary",
        -              "text_summary"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      },
        -      "error": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        -            "properties": {
        -              "code": {
        -                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        -                "enum": [
        -                  "RATE_LIMIT_EXCEEDED",
        -                  "TIER_INSUFFICIENT",
        -                  "INVALID_INPUT",
        -                  "SCHEMA_VERSION_MISMATCH",
        -                  "SCHEMA_INVARIANT_VIOLATION",
        -                  "UPSTREAM_TIMEOUT",
        -                  "BACKEND_FAILURE",
        -                  "IP_BLOCKED",
        -                  "RESOURCE_NOT_FOUND",
        -                  "RENDER_FAILURE",
        -                  "OCR_LOW_CONFIDENCE",
        -                  "MANUAL_REVIEW_REQUIRED",
        -                  "ACCEPTANCE_REQUIRED",
        -                  "INVALID_TOKEN"
        -                ],
        -                "type": "string"
        -              },
        -              "details": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "message": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "recoverable": {
        -                "type": "boolean"
        -              },
        -              "retry_after_seconds": {
        -                "anyOf": [
        -                  {
        -                    "minimum": 0,
        -                    "type": "integer"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              }
        -            },
        -            "required": [
        -              "code",
        -              "message",
        -              "recoverable"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      }
        -    },
        -    "required": [
        -      "_meta"
        -    ],
        -    "type": "object"
        -  },
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "_meta": {
        -        "additionalProperties": false,
        -        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        -        "properties": {
        -          "deliverables": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        -                "properties": {
        -                  "docx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "dxf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "expires_at": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  },
        -                  "pdf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "xlsx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "expires_at"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "document_id": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "issued_at": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "rate_limit_remaining": {
        -            "anyOf": [
        -              {
        -                "minimum": 0,
        -                "type": "integer"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "request_id": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "schema_version": {
        -            "const": "1.0.0",
        -            "default": "1.0.0",
        -            "type": "string"
        -          },
        -          "scope_boundary": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        -                "properties": {
        -                  "not_in_scope": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "produced": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "recommended_companions": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "type": "string"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "produced",
        -                  "not_in_scope"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tier": {
        -            "enum": [
        -              "free",
        -              "paid"
        -            ],
        -            "type": "string"
        -          },
        -          "tier_upgrade": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        -                "properties": {
        -                  "available_tiers": {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        -                      "properties": {
        -                        "billing": {
        -                          "enum": [
        -                            "one_off",
        -                            "monthly",
        -                            "annual"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "currency": {
        -                          "enum": [
        -                            "GBP",
        -                            "SGD",
        -                            "EUR",
        -                            "USD",
        -                            "CAD",
        -                            "AUD",
        -                            "NZD",
        -                            "MYR"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "display_name": {
        -                          "type": "string"
        -                        },
        -                        "price_local": {
        -                          "type": "number"
        -                        },
        -                        "tier_slug": {
        -                          "enum": [
        -                            "7_day_pass",
        -                            "solo",
        -                            "studio",
        -                            "practice"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "unlock_summary": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "tier_slug",
        -                        "display_name",
        -                        "price_local",
        -                        "currency",
        -                        "billing",
        -                        "unlock_summary"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "current_tier": {
        -                    "const": "free",
        -                    "default": "free",
        -                    "type": "string"
        -                  },
        -                  "pass_credit": {
        -                    "anyOf": [
        -                      {
        -                        "additionalProperties": false,
        -                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        -                        "properties": {
        -                          "amount_local": {
        -                            "type": "number"
        -                          },
        -                          "applies_to": {
        -                            "const": "solo_first_month",
        -                            "default": "solo_first_month",
        -                            "type": "string"
        -                          },
        -                          "currency": {
        -                            "type": "string"
        -                          },
        -                          "redeemable_until": {
        -                            "type": "string"
        -                          }
        -                        },
        -                        "required": [
        -                          "amount_local",
        -                          "currency",
        -                          "redeemable_until"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "pricing_url": {
        -                    "default": "https://civilquants.com/pricing",
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "available_tiers"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tos_url": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "upgrade_hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "warranty_disclaimer": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          }
        -        },
        -        "required": [
        -          "request_id",
        -          "issued_at",
        -          "tier"
        -        ],
        -        "type": "object"
        -      },
        -      "data": {
        -        "default": null,
        -        "title": "Data"
        -      },
        -      "error": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        -            "properties": {
        -              "code": {
        -                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        -                "enum": [
        -                  "RATE_LIMIT_EXCEEDED",
        -                  "TIER_INSUFFICIENT",
        -                  "INVALID_INPUT",
        -                  "SCHEMA_VERSION_MISMATCH",
        -                  "SCHEMA_INVARIANT_VIOLATION",
        -                  "UPSTREAM_TIMEOUT",
        -                  "BACKEND_FAILURE",
        -                  "IP_BLOCKED",
        -                  "RESOURCE_NOT_FOUND",
        -                  "RENDER_FAILURE",
        -                  "OCR_LOW_CONFIDENCE",
        -                  "MANUAL_REVIEW_REQUIRED",
        -                  "ACCEPTANCE_REQUIRED",
        -                  "INVALID_TOKEN"
        -                ],
        -                "type": "string"
        -              },
        -              "details": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "message": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "recoverable": {
        -                "type": "boolean"
        -              },
        -              "retry_after_seconds": {
        -                "anyOf": [
        -                  {
        -                    "minimum": 0,
        -                    "type": "integer"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              }
        -            },
        -            "required": [
        -              "code",
        -              "message",
        -              "recoverable"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      }
        -    },
        -    "required": [
        -      "_meta"
        -    ],
        -    "type": "object"
        -  }
        -]New value: +[
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "_meta": {
        +        "additionalProperties": false,
        +        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        +        "properties": {
        +          "deliverables": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        +                "properties": {
        +                  "docx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "dxf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "expires_at": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  },
        +                  "pdf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "xlsx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "expires_at"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "document_id": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "issued_at": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "rate_limit_remaining": {
        +            "anyOf": [
        +              {
        +                "minimum": 0,
        +                "type": "integer"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "request_id": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "schema_version": {
        +            "const": "1.0.0",
        +            "default": "1.0.0",
        +            "type": "string"
        +          },
        +          "scope_boundary": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        +                "properties": {
        +                  "not_in_scope": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "produced": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "recommended_companions": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "type": "string"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "produced",
        +                  "not_in_scope"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tier": {
        +            "enum": [
        +              "free",
        +              "paid"
        +            ],
        +            "type": "string"
        +          },
        +          "tier_upgrade": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        +                "properties": {
        +                  "available_tiers": {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        +                      "properties": {
        +                        "billing": {
        +                          "enum": [
        +                            "one_off",
        +                            "monthly",
        +                            "annual"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "currency": {
        +                          "enum": [
        +                            "GBP",
        +                            "SGD",
        +                            "EUR",
        +                            "USD",
        +                            "CAD",
        +                            "AUD",
        +                            "NZD",
        +                            "MYR"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "display_name": {
        +                          "type": "string"
        +                        },
        +                        "price_local": {
        +                          "type": "number"
        +                        },
        +                        "tier_slug": {
        +                          "enum": [
        +                            "7_day_pass",
        +                            "solo",
        +                            "studio",
        +                            "practice"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "unlock_summary": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "tier_slug",
        +                        "display_name",
        +                        "price_local",
        +                        "currency",
        +                        "billing",
        +                        "unlock_summary"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "current_tier": {
        +                    "const": "free",
        +                    "default": "free",
        +                    "type": "string"
        +                  },
        +                  "pass_credit": {
        +                    "anyOf": [
        +                      {
        +                        "additionalProperties": false,
        +                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        +                        "properties": {
        +                          "amount_local": {
        +                            "type": "number"
        +                          },
        +                          "applies_to": {
        +                            "const": "solo_first_month",
        +                            "default": "solo_first_month",
        +                            "type": "string"
        +                          },
        +                          "currency": {
        +                            "type": "string"
        +                          },
        +                          "redeemable_until": {
        +                            "type": "string"
        +                          }
        +                        },
        +                        "required": [
        +                          "amount_local",
        +                          "currency",
        +                          "redeemable_until"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "pricing_url": {
        +                    "default": "https://civilquants.com/pricing",
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "available_tiers"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tos_url": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "upgrade_hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "warranty_disclaimer": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          }
        +        },
        +        "required": [
        +          "request_id",
        +          "issued_at",
        +          "tier"
        +        ],
        +        "type": "object"
        +      },
        +      "data": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Schema § 1.1 — the typed payload returned inside `MCPResponse[ComputeResult]`.\n\nFree-tier responses omit `drawings` (the downloadable CAD artefact\npointers — the paid differentiator); the bridge enforces this. The\n`audit_trail` and the inline `drawing` preview are present on BOTH tiers\n(V1 ALIGN / 60th-fire D + C). `text_summary` is bounded to 2000 chars —\nkeeps the LLM-facing summary token-cheap and forces longer narrative into\nBoQ row descriptions where it belongs. `warnings` is the non-fatal\ngeometry advisory list (both tiers).",
        +            "properties": {
        +              "assembly_slug": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "audit_trail": {
        +                "anyOf": [
        +                  {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.7 — paid-tier audit-trail entry.\n\nOne entry per BoQ row; `boq_row_index` ties to the row position in\n`ComputeResult.boq_rows`. `derivation` is the human-readable formula\nwalk-through; `formula` is the optional formal expression.",
        +                      "properties": {
        +                        "boq_row_index": {
        +                          "minimum": 0,
        +                          "type": "integer"
        +                        },
        +                        "derivation": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "formula": {
        +                          "anyOf": [
        +                            {
        +                              "type": "string"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ],
        +                          "default": null
        +                        },
        +                        "id": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "parameters_referenced": {
        +                          "items": {
        +                            "type": "string"
        +                          },
        +                          "type": "array"
        +                        }
        +                      },
        +                      "required": [
        +                        "id",
        +                        "boq_row_index",
        +                        "derivation"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "boq_rows": {
        +                "items": {
        +                  "additionalProperties": false,
        +                  "description": "Schema § 1.3 — a single bill row in the requested standard's format.\n\n`description` is the non-verbatim functional description per spec § 13.9 /\n§ 15 invariant — NEVER reproduces a standard's verbatim clause text.\n`rate` / `amount` ship null because rates are commodity data the customer\nowns; the engine's job is the measurement, not the pricing.",
        +                  "properties": {
        +                    "amount": {
        +                      "anyOf": [
        +                        {
        +                          "type": "number"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "attribution": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "audit_id": {
        +                      "anyOf": [
        +                        {
        +                          "type": "string"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "description": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "quantity": {
        +                      "minimum": 0,
        +                      "type": "number"
        +                    },
        +                    "rate": {
        +                      "anyOf": [
        +                        {
        +                          "type": "number"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "unit": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "work_section": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    }
        +                  },
        +                  "required": [
        +                    "work_section",
        +                    "description",
        +                    "quantity",
        +                    "unit",
        +                    "attribution"
        +                  ],
        +                  "type": "object"
        +                },
        +                "type": "array"
        +              },
        +              "drawing": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": false,
        +                    "description": "Schema § 1.6a — inline server-rendered SVG preview of the geometry.\n\nThe MCP mirror of the web ``/compute`` response's ``drawing`` field\n(``api.schemas.compute.DrawingRef``): the same on-screen dimensioned\ndrawing both tiers see in the workspace, surfaced on the MCP compute\nresponse so a chat client can render it inline (60th-fire item C). This\nis the on-screen preview — present on BOTH tiers per the free/paid\nboundary; the downloadable CAD artefacts (DXF / dimensioned PDF) remain\nthe paid differentiator via the export tools.\n\nDefined here rather than importing ``DrawingRef`` because the web\n``schemas`` package imports back into this module (``schemas.render``),\nso reusing it would create an import cycle — the MCP wire contract keeps\nits own copy, the same pattern as ``BoQRow`` / ``DrawingReference``.",
        +                    "properties": {
        +                      "entity_count": {
        +                        "minimum": 0,
        +                        "type": "integer"
        +                      },
        +                      "svg_b64": {
        +                        "minLength": 1,
        +                        "type": "string"
        +                      },
        +                      "unit_of_drawing": {
        +                        "const": "m",
        +                        "default": "m",
        +                        "type": "string"
        +                      },
        +                      "viewbox_height": {
        +                        "exclusiveMinimum": 0,
        +                        "type": "number"
        +                      },
        +                      "viewbox_width": {
        +                        "exclusiveMinimum": 0,
        +                        "type": "number"
        +                      },
        +                      "viewbox_x": {
        +                        "type": "number"
        +                      },
        +                      "viewbox_y": {
        +                        "type": "number"
        +                      }
        +                    },
        +                    "required": [
        +                      "svg_b64",
        +                      "viewbox_x",
        +                      "viewbox_y",
        +                      "viewbox_width",
        +                      "viewbox_height",
        +                      "entity_count"
        +                    ],
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "drawings": {
        +                "anyOf": [
        +                  {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.6 — paid-tier drawing artefact pointer.\n\n`url` is an R2-signed URL; expiry is carried in `_meta.deliverables.expires_at`\non the envelope (not duplicated here). `layers` is DXF-only; PDF/SVG\ncallers omit it.",
        +                      "properties": {
        +                        "drawing_type": {
        +                          "enum": [
        +                            "section",
        +                            "plan",
        +                            "elevation",
        +                            "isometric",
        +                            "detail"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "format": {
        +                          "enum": [
        +                            "DXF",
        +                            "PDF",
        +                            "SVG"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "layers": {
        +                          "anyOf": [
        +                            {
        +                              "items": {
        +                                "type": "string"
        +                              },
        +                              "type": "array"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ],
        +                          "default": null
        +                        },
        +                        "scale": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "sheet_size": {
        +                          "enum": [
        +                            "A1",
        +                            "A2",
        +                            "A3",
        +                            "A4"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "url": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "drawing_type",
        +                        "format",
        +                        "url",
        +                        "sheet_size",
        +                        "scale"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "parameters_used": {
        +                "additionalProperties": false,
        +                "description": "Schema § 1.2 — the parameter snapshot the engine actually used.\n\nSplits user-supplied values from engine defaults so customers can see\nwhich numbers came from them and which the engine filled in. Every\ndefaulted parameter SHOULD have a corresponding entry in `assumptions`\n— the bridge layer enforces this when wrapping engine output.",
        +                "properties": {
        +                  "assumptions": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "engine_defaults": {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  "user_supplied": {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  }
        +                },
        +                "type": "object"
        +              },
        +              "standard": {
        +                "enum": [
        +                  "CESMM4",
        +                  "NRM2",
        +                  "SMM7",
        +                  "MMHW"
        +                ],
        +                "type": "string"
        +              },
        +              "text_summary": {
        +                "maxLength": 2000,
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "totals_summary": {
        +                "additionalProperties": false,
        +                "description": "Schema § 1.4 — totals_summary as a typed wrapper around the free-form dict.\n\nWire shape is a flat object (`{\"concrete_m3\": {...}, \"rebar_t\": {...}}`).\nWe model it as `RootModel`-equivalent via `model_config(extra=\"allow\")`\n+ a single `__root__`-style `entries` dict. Pydantic v2 recommends\n`RootModel` for free-form roots; using a wrapper class keeps the import\nsurface uniform with the rest of this module.",
        +                "properties": {
        +                  "entries": {
        +                    "additionalProperties": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.4 — single material/work-class total entry.",
        +                      "properties": {
        +                        "quantity": {
        +                          "minimum": 0,
        +                          "type": "number"
        +                        },
        +                        "unit": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "quantity",
        +                        "unit"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "object"
        +                  }
        +                },
        +                "type": "object"
        +              },
        +              "warnings": {
        +                "items": {
        +                  "additionalProperties": false,
        +                  "description": "Schema § 1.8 — a non-fatal geometry advisory (56th-fire T2).\n\nThe wire projection of the engine's `core.GeometryWarning`. Advisory only:\na warning NEVER changes a measured quantity — it flags geometry that is\nvalid but likely a mistake (e.g. a stale dependent-height default). Present\non BOTH tiers — a correctness/safety signal, not a paid feature.",
        +                  "properties": {
        +                    "affected_params": {
        +                      "items": {
        +                        "type": "string"
        +                      },
        +                      "type": "array"
        +                    },
        +                    "code": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "detail": {
        +                      "additionalProperties": {
        +                        "type": "number"
        +                      },
        +                      "type": "object"
        +                    },
        +                    "message": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "severity": {
        +                      "enum": [
        +                        "info",
        +                        "advisory",
        +                        "caution"
        +                      ],
        +                      "type": "string"
        +                    }
        +                  },
        +                  "required": [
        +                    "code",
        +                    "severity",
        +                    "message"
        +                  ],
        +                  "type": "object"
        +                },
        +                "type": "array"
        +              }
        +            },
        +            "required": [
        +              "assembly_slug",
        +              "standard",
        +              "parameters_used",
        +              "boq_rows",
        +              "totals_summary",
        +              "text_summary"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      },
        +      "error": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        +            "properties": {
        +              "code": {
        +                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        +                "enum": [
        +                  "RATE_LIMIT_EXCEEDED",
        +                  "TIER_INSUFFICIENT",
        +                  "INVALID_INPUT",
        +                  "SCHEMA_VERSION_MISMATCH",
        +                  "SCHEMA_INVARIANT_VIOLATION",
        +                  "UPSTREAM_TIMEOUT",
        +                  "BACKEND_FAILURE",
        +                  "IP_BLOCKED",
        +                  "RESOURCE_NOT_FOUND",
        +                  "RENDER_FAILURE",
        +                  "OCR_LOW_CONFIDENCE",
        +                  "MANUAL_REVIEW_REQUIRED",
        +                  "ACCEPTANCE_REQUIRED",
        +                  "INVALID_TOKEN"
        +                ],
        +                "type": "string"
        +              },
        +              "details": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "message": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "recoverable": {
        +                "type": "boolean"
        +              },
        +              "retry_after_seconds": {
        +                "anyOf": [
        +                  {
        +                    "minimum": 0,
        +                    "type": "integer"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              }
        +            },
        +            "required": [
        +              "code",
        +              "message",
        +              "recoverable"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      }
        +    },
        +    "required": [
        +      "_meta"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "_meta": {
        +        "additionalProperties": false,
        +        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        +        "properties": {
        +          "deliverables": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        +                "properties": {
        +                  "docx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "dxf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "expires_at": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  },
        +                  "pdf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "xlsx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "expires_at"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "document_id": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "issued_at": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "rate_limit_remaining": {
        +            "anyOf": [
        +              {
        +                "minimum": 0,
        +                "type": "integer"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "request_id": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "schema_version": {
        +            "const": "1.0.0",
        +            "default": "1.0.0",
        +            "type": "string"
        +          },
        +          "scope_boundary": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        +                "properties": {
        +                  "not_in_scope": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "produced": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "recommended_companions": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "type": "string"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "produced",
        +                  "not_in_scope"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tier": {
        +            "enum": [
        +              "free",
        +              "paid"
        +            ],
        +            "type": "string"
        +          },
        +          "tier_upgrade": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        +                "properties": {
        +                  "available_tiers": {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        +                      "properties": {
        +                        "billing": {
        +                          "enum": [
        +                            "one_off",
        +                            "monthly",
        +                            "annual"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "currency": {
        +                          "enum": [
        +                            "GBP",
        +                            "SGD",
        +                            "EUR",
        +                            "USD",
        +                            "CAD",
        +                            "AUD",
        +                            "NZD",
        +                            "MYR"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "display_name": {
        +                          "type": "string"
        +                        },
        +                        "price_local": {
        +                          "type": "number"
        +                        },
        +                        "tier_slug": {
        +                          "enum": [
        +                            "7_day_pass",
        +                            "solo",
        +                            "studio",
        +                            "practice"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "unlock_summary": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "tier_slug",
        +                        "display_name",
        +                        "price_local",
        +                        "currency",
        +                        "billing",
        +                        "unlock_summary"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "current_tier": {
        +                    "const": "free",
        +                    "default": "free",
        +                    "type": "string"
        +                  },
        +                  "pass_credit": {
        +                    "anyOf": [
        +                      {
        +                        "additionalProperties": false,
        +                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        +                        "properties": {
        +                          "amount_local": {
        +                            "type": "number"
        +                          },
        +                          "applies_to": {
        +                            "const": "solo_first_month",
        +                            "default": "solo_first_month",
        +                            "type": "string"
        +                          },
        +                          "currency": {
        +                            "type": "string"
        +                          },
        +                          "redeemable_until": {
        +                            "type": "string"
        +                          }
        +                        },
        +                        "required": [
        +                          "amount_local",
        +                          "currency",
        +                          "redeemable_until"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "pricing_url": {
        +                    "default": "https://civilquants.com/pricing",
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "available_tiers"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tos_url": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "upgrade_hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "warranty_disclaimer": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          }
        +        },
        +        "required": [
        +          "request_id",
        +          "issued_at",
        +          "tier"
        +        ],
        +        "type": "object"
        +      },
        +      "data": {
        +        "default": null,
        +        "title": "Data"
        +      },
        +      "error": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        +            "properties": {
        +              "code": {
        +                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        +                "enum": [
        +                  "RATE_LIMIT_EXCEEDED",
        +                  "TIER_INSUFFICIENT",
        +                  "INVALID_INPUT",
        +                  "SCHEMA_VERSION_MISMATCH",
        +                  "SCHEMA_INVARIANT_VIOLATION",
        +                  "UPSTREAM_TIMEOUT",
        +                  "BACKEND_FAILURE",
        +                  "IP_BLOCKED",
        +                  "RESOURCE_NOT_FOUND",
        +                  "RENDER_FAILURE",
        +                  "OCR_LOW_CONFIDENCE",
        +                  "MANUAL_REVIEW_REQUIRED",
        +                  "ACCEPTANCE_REQUIRED",
        +                  "INVALID_TOKEN"
        +                ],
        +                "type": "string"
        +              },
        +              "details": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "message": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "recoverable": {
        +                "type": "boolean"
        +              },
        +              "retry_after_seconds": {
        +                "anyOf": [
        +                  {
        +                    "minimum": 0,
        +                    "type": "integer"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              }
        +            },
        +            "required": [
        +              "code",
        +              "message",
        +              "recoverable"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      }
        +    },
        +    "required": [
        +      "_meta"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedcompute_ditch1 field changed
      • changedOutput schema / properties / result / anyOf
        Previous value: -[
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "_meta": {
        -        "additionalProperties": false,
        -        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        -        "properties": {
        -          "deliverables": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        -                "properties": {
        -                  "docx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "dxf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "expires_at": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  },
        -                  "pdf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "xlsx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "expires_at"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "document_id": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "issued_at": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "rate_limit_remaining": {
        -            "anyOf": [
        -              {
        -                "minimum": 0,
        -                "type": "integer"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "request_id": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "schema_version": {
        -            "const": "1.0.0",
        -            "default": "1.0.0",
        -            "type": "string"
        -          },
        -          "scope_boundary": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        -                "properties": {
        -                  "not_in_scope": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "produced": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "recommended_companions": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "type": "string"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "produced",
        -                  "not_in_scope"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tier": {
        -            "enum": [
        -              "free",
        -              "paid"
        -            ],
        -            "type": "string"
        -          },
        -          "tier_upgrade": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        -                "properties": {
        -                  "available_tiers": {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        -                      "properties": {
        -                        "billing": {
        -                          "enum": [
        -                            "one_off",
        -                            "monthly",
        -                            "annual"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "currency": {
        -                          "enum": [
        -                            "GBP",
        -                            "SGD",
        -                            "EUR",
        -                            "USD",
        -                            "CAD",
        -                            "AUD",
        -                            "NZD",
        -                            "MYR"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "display_name": {
        -                          "type": "string"
        -                        },
        -                        "price_local": {
        -                          "type": "number"
        -                        },
        -                        "tier_slug": {
        -                          "enum": [
        -                            "7_day_pass",
        -                            "solo",
        -                            "studio",
        -                            "practice"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "unlock_summary": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "tier_slug",
        -                        "display_name",
        -                        "price_local",
        -                        "currency",
        -                        "billing",
        -                        "unlock_summary"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "current_tier": {
        -                    "const": "free",
        -                    "default": "free",
        -                    "type": "string"
        -                  },
        -                  "pass_credit": {
        -                    "anyOf": [
        -                      {
        -                        "additionalProperties": false,
        -                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        -                        "properties": {
        -                          "amount_local": {
        -                            "type": "number"
        -                          },
        -                          "applies_to": {
        -                            "const": "solo_first_month",
        -                            "default": "solo_first_month",
        -                            "type": "string"
        -                          },
        -                          "currency": {
        -                            "type": "string"
        -                          },
        -                          "redeemable_until": {
        -                            "type": "string"
        -                          }
        -                        },
        -                        "required": [
        -                          "amount_local",
        -                          "currency",
        -                          "redeemable_until"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "pricing_url": {
        -                    "default": "https://civilquants.com/pricing",
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "available_tiers"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tos_url": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "upgrade_hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "warranty_disclaimer": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          }
        -        },
        -        "required": [
        -          "request_id",
        -          "issued_at",
        -          "tier"
        -        ],
        -        "type": "object"
        -      },
        -      "data": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Schema § 1.1 — the typed payload returned inside `MCPResponse[ComputeResult]`.\n\nFree-tier responses omit `drawings` (the downloadable CAD artefact\npointers — the paid differentiator); the bridge enforces this. The\n`audit_trail` and the inline `drawing` preview are present on BOTH tiers\n(V1 ALIGN / 60th-fire D + C). `text_summary` is bounded to 2000 chars —\nkeeps the LLM-facing summary token-cheap and forces longer narrative into\nBoQ row descriptions where it belongs. `warnings` is the non-fatal\ngeometry advisory list (both tiers).",
        -            "properties": {
        -              "assembly_slug": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "audit_trail": {
        -                "anyOf": [
        -                  {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.7 — paid-tier audit-trail entry.\n\nOne entry per BoQ row; `boq_row_index` ties to the row position in\n`ComputeResult.boq_rows`. `derivation` is the human-readable formula\nwalk-through; `formula` is the optional formal expression.",
        -                      "properties": {
        -                        "boq_row_index": {
        -                          "minimum": 0,
        -                          "type": "integer"
        -                        },
        -                        "derivation": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "formula": {
        -                          "anyOf": [
        -                            {
        -                              "type": "string"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ],
        -                          "default": null
        -                        },
        -                        "id": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "parameters_referenced": {
        -                          "items": {
        -                            "type": "string"
        -                          },
        -                          "type": "array"
        -                        }
        -                      },
        -                      "required": [
        -                        "id",
        -                        "boq_row_index",
        -                        "derivation"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "boq_rows": {
        -                "items": {
        -                  "additionalProperties": false,
        -                  "description": "Schema § 1.3 — a single bill row in the requested standard's format.\n\n`description` is the non-verbatim functional description per spec § 13.9 /\n§ 15 invariant — NEVER reproduces a standard's verbatim clause text.\n`rate` / `amount` ship null because rates are commodity data the customer\nowns; the engine's job is the measurement, not the pricing.",
        -                  "properties": {
        -                    "amount": {
        -                      "anyOf": [
        -                        {
        -                          "type": "number"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "attribution": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "audit_id": {
        -                      "anyOf": [
        -                        {
        -                          "type": "string"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "description": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "quantity": {
        -                      "minimum": 0,
        -                      "type": "number"
        -                    },
        -                    "rate": {
        -                      "anyOf": [
        -                        {
        -                          "type": "number"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "unit": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "work_section": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    }
        -                  },
        -                  "required": [
        -                    "work_section",
        -                    "description",
        -                    "quantity",
        -                    "unit",
        -                    "attribution"
        -                  ],
        -                  "type": "object"
        -                },
        -                "type": "array"
        -              },
        -              "drawing": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": false,
        -                    "description": "Schema § 1.6a — inline server-rendered SVG preview of the geometry.\n\nThe MCP mirror of the web ``/compute`` response's ``drawing`` field\n(``api.schemas.compute.DrawingRef``): the same on-screen dimensioned\ndrawing both tiers see in the workspace, surfaced on the MCP compute\nresponse so a chat client can render it inline (60th-fire item C). This\nis the on-screen preview — present on BOTH tiers per the free/paid\nboundary; the downloadable CAD artefacts (DXF / dimensioned PDF) remain\nthe paid differentiator via the export tools.\n\nDefined here rather than importing ``DrawingRef`` because the web\n``schemas`` package imports back into this module (``schemas.render``),\nso reusing it would create an import cycle — the MCP wire contract keeps\nits own copy, the same pattern as ``BoQRow`` / ``DrawingReference``.",
        -                    "properties": {
        -                      "entity_count": {
        -                        "minimum": 0,
        -                        "type": "integer"
        -                      },
        -                      "svg_b64": {
        -                        "minLength": 1,
        -                        "type": "string"
        -                      },
        -                      "unit_of_drawing": {
        -                        "const": "m",
        -                        "default": "m",
        -                        "type": "string"
        -                      },
        -                      "viewbox_height": {
        -                        "exclusiveMinimum": 0,
        -                        "type": "number"
        -                      },
        -                      "viewbox_width": {
        -                        "exclusiveMinimum": 0,
        -                        "type": "number"
        -                      },
        -                      "viewbox_x": {
        -                        "type": "number"
        -                      },
        -                      "viewbox_y": {
        -                        "type": "number"
        -                      }
        -                    },
        -                    "required": [
        -                      "svg_b64",
        -                      "viewbox_x",
        -                      "viewbox_y",
        -                      "viewbox_width",
        -                      "viewbox_height",
        -                      "entity_count"
        -                    ],
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "drawings": {
        -                "anyOf": [
        -                  {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.6 — paid-tier drawing artefact pointer.\n\n`url` is an R2-signed URL; expiry is carried in `_meta.deliverables.expires_at`\non the envelope (not duplicated here). `layers` is DXF-only; PDF/SVG\ncallers omit it.",
        -                      "properties": {
        -                        "drawing_type": {
        -                          "enum": [
        -                            "section",
        -                            "plan",
        -                            "elevation",
        -                            "isometric",
        -                            "detail"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "format": {
        -                          "enum": [
        -                            "DXF",
        -                            "PDF",
        -                            "SVG"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "layers": {
        -                          "anyOf": [
        -                            {
        -                              "items": {
        -                                "type": "string"
        -                              },
        -                              "type": "array"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ],
        -                          "default": null
        -                        },
        -                        "scale": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "sheet_size": {
        -                          "enum": [
        -                            "A1",
        -                            "A2",
        -                            "A3",
        -                            "A4"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "url": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "drawing_type",
        -                        "format",
        -                        "url",
        -                        "sheet_size",
        -                        "scale"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "parameters_used": {
        -                "additionalProperties": false,
        -                "description": "Schema § 1.2 — the parameter snapshot the engine actually used.\n\nSplits user-supplied values from engine defaults so customers can see\nwhich numbers came from them and which the engine filled in. Every\ndefaulted parameter SHOULD have a corresponding entry in `assumptions`\n— the bridge layer enforces this when wrapping engine output.",
        -                "properties": {
        -                  "assumptions": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "engine_defaults": {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  "resolved_from_description": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "additionalProperties": false,
        -                          "description": "Schema § 1.2 — a parameter resolved by the forgiving-input layer.\n\nPopulated by the Track B-Forgiving Haiku-4.5 resolution pass; until that\nlayer lands, instances are constructed only by tests. `source` distinguishes\nthe resolution path so customers can audit which fields were inferred.",
        -                          "properties": {
        -                            "confidence": {
        -                              "anyOf": [
        -                                {
        -                                  "enum": [
        -                                    "high",
        -                                    "medium",
        -                                    "low"
        -                                  ],
        -                                  "type": "string"
        -                                },
        -                                {
        -                                  "type": "null"
        -                                }
        -                              ],
        -                              "default": null
        -                            },
        -                            "field_name": {
        -                              "minLength": 1,
        -                              "type": "string"
        -                            },
        -                            "resolved_value": {},
        -                            "source": {
        -                              "enum": [
        -                                "description_field",
        -                                "haiku_resolution",
        -                                "engine_default"
        -                              ],
        -                              "type": "string"
        -                            }
        -                          },
        -                          "required": [
        -                            "field_name",
        -                            "resolved_value",
        -                            "source"
        -                          ],
        -                          "type": "object"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "user_supplied": {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  }
        -                },
        -                "type": "object"
        -              },
        -              "standard": {
        -                "enum": [
        -                  "CESMM4",
        -                  "NRM2",
        -                  "SMM7",
        -                  "MMHW"
        -                ],
        -                "type": "string"
        -              },
        -              "text_summary": {
        -                "maxLength": 2000,
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "totals_summary": {
        -                "additionalProperties": false,
        -                "description": "Schema § 1.4 — totals_summary as a typed wrapper around the free-form dict.\n\nWire shape is a flat object (`{\"concrete_m3\": {...}, \"rebar_t\": {...}}`).\nWe model it as `RootModel`-equivalent via `model_config(extra=\"allow\")`\n+ a single `__root__`-style `entries` dict. Pydantic v2 recommends\n`RootModel` for free-form roots; using a wrapper class keeps the import\nsurface uniform with the rest of this module.",
        -                "properties": {
        -                  "entries": {
        -                    "additionalProperties": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.4 — single material/work-class total entry.",
        -                      "properties": {
        -                        "quantity": {
        -                          "minimum": 0,
        -                          "type": "number"
        -                        },
        -                        "unit": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "quantity",
        -                        "unit"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "object"
        -                  }
        -                },
        -                "type": "object"
        -              },
        -              "warnings": {
        -                "items": {
        -                  "additionalProperties": false,
        -                  "description": "Schema § 1.8 — a non-fatal geometry advisory (56th-fire T2).\n\nThe wire projection of the engine's `core.GeometryWarning`. Advisory only:\na warning NEVER changes a measured quantity — it flags geometry that is\nvalid but likely a mistake (e.g. a stale dependent-height default). Present\non BOTH tiers — a correctness/safety signal, not a paid feature.",
        -                  "properties": {
        -                    "affected_params": {
        -                      "items": {
        -                        "type": "string"
        -                      },
        -                      "type": "array"
        -                    },
        -                    "code": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "detail": {
        -                      "additionalProperties": {
        -                        "type": "number"
        -                      },
        -                      "type": "object"
        -                    },
        -                    "message": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "severity": {
        -                      "enum": [
        -                        "info",
        -                        "advisory",
        -                        "caution"
        -                      ],
        -                      "type": "string"
        -                    }
        -                  },
        -                  "required": [
        -                    "code",
        -                    "severity",
        -                    "message"
        -                  ],
        -                  "type": "object"
        -                },
        -                "type": "array"
        -              }
        -            },
        -            "required": [
        -              "assembly_slug",
        -              "standard",
        -              "parameters_used",
        -              "boq_rows",
        -              "totals_summary",
        -              "text_summary"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      },
        -      "error": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        -            "properties": {
        -              "code": {
        -                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        -                "enum": [
        -                  "RATE_LIMIT_EXCEEDED",
        -                  "TIER_INSUFFICIENT",
        -                  "INVALID_INPUT",
        -                  "SCHEMA_VERSION_MISMATCH",
        -                  "SCHEMA_INVARIANT_VIOLATION",
        -                  "UPSTREAM_TIMEOUT",
        -                  "BACKEND_FAILURE",
        -                  "IP_BLOCKED",
        -                  "RESOURCE_NOT_FOUND",
        -                  "RENDER_FAILURE",
        -                  "OCR_LOW_CONFIDENCE",
        -                  "MANUAL_REVIEW_REQUIRED",
        -                  "ACCEPTANCE_REQUIRED",
        -                  "INVALID_TOKEN"
        -                ],
        -                "type": "string"
        -              },
        -              "details": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "message": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "recoverable": {
        -                "type": "boolean"
        -              },
        -              "retry_after_seconds": {
        -                "anyOf": [
        -                  {
        -                    "minimum": 0,
        -                    "type": "integer"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              }
        -            },
        -            "required": [
        -              "code",
        -              "message",
        -              "recoverable"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      }
        -    },
        -    "required": [
        -      "_meta"
        -    ],
        -    "type": "object"
        -  },
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "_meta": {
        -        "additionalProperties": false,
        -        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        -        "properties": {
        -          "deliverables": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        -                "properties": {
        -                  "docx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "dxf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "expires_at": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  },
        -                  "pdf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "xlsx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "expires_at"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "document_id": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "issued_at": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "rate_limit_remaining": {
        -            "anyOf": [
        -              {
        -                "minimum": 0,
        -                "type": "integer"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "request_id": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "schema_version": {
        -            "const": "1.0.0",
        -            "default": "1.0.0",
        -            "type": "string"
        -          },
        -          "scope_boundary": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        -                "properties": {
        -                  "not_in_scope": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "produced": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "recommended_companions": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "type": "string"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "produced",
        -                  "not_in_scope"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tier": {
        -            "enum": [
        -              "free",
        -              "paid"
        -            ],
        -            "type": "string"
        -          },
        -          "tier_upgrade": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        -                "properties": {
        -                  "available_tiers": {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        -                      "properties": {
        -                        "billing": {
        -                          "enum": [
        -                            "one_off",
        -                            "monthly",
        -                            "annual"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "currency": {
        -                          "enum": [
        -                            "GBP",
        -                            "SGD",
        -                            "EUR",
        -                            "USD",
        -                            "CAD",
        -                            "AUD",
        -                            "NZD",
        -                            "MYR"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "display_name": {
        -                          "type": "string"
        -                        },
        -                        "price_local": {
        -                          "type": "number"
        -                        },
        -                        "tier_slug": {
        -                          "enum": [
        -                            "7_day_pass",
        -                            "solo",
        -                            "studio",
        -                            "practice"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "unlock_summary": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "tier_slug",
        -                        "display_name",
        -                        "price_local",
        -                        "currency",
        -                        "billing",
        -                        "unlock_summary"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "current_tier": {
        -                    "const": "free",
        -                    "default": "free",
        -                    "type": "string"
        -                  },
        -                  "pass_credit": {
        -                    "anyOf": [
        -                      {
        -                        "additionalProperties": false,
        -                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        -                        "properties": {
        -                          "amount_local": {
        -                            "type": "number"
        -                          },
        -                          "applies_to": {
        -                            "const": "solo_first_month",
        -                            "default": "solo_first_month",
        -                            "type": "string"
        -                          },
        -                          "currency": {
        -                            "type": "string"
        -                          },
        -                          "redeemable_until": {
        -                            "type": "string"
        -                          }
        -                        },
        -                        "required": [
        -                          "amount_local",
        -                          "currency",
        -                          "redeemable_until"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "pricing_url": {
        -                    "default": "https://civilquants.com/pricing",
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "available_tiers"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tos_url": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "upgrade_hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "warranty_disclaimer": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          }
        -        },
        -        "required": [
        -          "request_id",
        -          "issued_at",
        -          "tier"
        -        ],
        -        "type": "object"
        -      },
        -      "data": {
        -        "default": null,
        -        "title": "Data"
        -      },
        -      "error": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        -            "properties": {
        -              "code": {
        -                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        -                "enum": [
        -                  "RATE_LIMIT_EXCEEDED",
        -                  "TIER_INSUFFICIENT",
        -                  "INVALID_INPUT",
        -                  "SCHEMA_VERSION_MISMATCH",
        -                  "SCHEMA_INVARIANT_VIOLATION",
        -                  "UPSTREAM_TIMEOUT",
        -                  "BACKEND_FAILURE",
        -                  "IP_BLOCKED",
        -                  "RESOURCE_NOT_FOUND",
        -                  "RENDER_FAILURE",
        -                  "OCR_LOW_CONFIDENCE",
        -                  "MANUAL_REVIEW_REQUIRED",
        -                  "ACCEPTANCE_REQUIRED",
        -                  "INVALID_TOKEN"
        -                ],
        -                "type": "string"
        -              },
        -              "details": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "message": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "recoverable": {
        -                "type": "boolean"
        -              },
        -              "retry_after_seconds": {
        -                "anyOf": [
        -                  {
        -                    "minimum": 0,
        -                    "type": "integer"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              }
        -            },
        -            "required": [
        -              "code",
        -              "message",
        -              "recoverable"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      }
        -    },
        -    "required": [
        -      "_meta"
        -    ],
        -    "type": "object"
        -  }
        -]New value: +[
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "_meta": {
        +        "additionalProperties": false,
        +        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        +        "properties": {
        +          "deliverables": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        +                "properties": {
        +                  "docx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "dxf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "expires_at": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  },
        +                  "pdf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "xlsx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "expires_at"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "document_id": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "issued_at": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "rate_limit_remaining": {
        +            "anyOf": [
        +              {
        +                "minimum": 0,
        +                "type": "integer"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "request_id": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "schema_version": {
        +            "const": "1.0.0",
        +            "default": "1.0.0",
        +            "type": "string"
        +          },
        +          "scope_boundary": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        +                "properties": {
        +                  "not_in_scope": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "produced": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "recommended_companions": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "type": "string"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "produced",
        +                  "not_in_scope"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tier": {
        +            "enum": [
        +              "free",
        +              "paid"
        +            ],
        +            "type": "string"
        +          },
        +          "tier_upgrade": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        +                "properties": {
        +                  "available_tiers": {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        +                      "properties": {
        +                        "billing": {
        +                          "enum": [
        +                            "one_off",
        +                            "monthly",
        +                            "annual"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "currency": {
        +                          "enum": [
        +                            "GBP",
        +                            "SGD",
        +                            "EUR",
        +                            "USD",
        +                            "CAD",
        +                            "AUD",
        +                            "NZD",
        +                            "MYR"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "display_name": {
        +                          "type": "string"
        +                        },
        +                        "price_local": {
        +                          "type": "number"
        +                        },
        +                        "tier_slug": {
        +                          "enum": [
        +                            "7_day_pass",
        +                            "solo",
        +                            "studio",
        +                            "practice"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "unlock_summary": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "tier_slug",
        +                        "display_name",
        +                        "price_local",
        +                        "currency",
        +                        "billing",
        +                        "unlock_summary"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "current_tier": {
        +                    "const": "free",
        +                    "default": "free",
        +                    "type": "string"
        +                  },
        +                  "pass_credit": {
        +                    "anyOf": [
        +                      {
        +                        "additionalProperties": false,
        +                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        +                        "properties": {
        +                          "amount_local": {
        +                            "type": "number"
        +                          },
        +                          "applies_to": {
        +                            "const": "solo_first_month",
        +                            "default": "solo_first_month",
        +                            "type": "string"
        +                          },
        +                          "currency": {
        +                            "type": "string"
        +                          },
        +                          "redeemable_until": {
        +                            "type": "string"
        +                          }
        +                        },
        +                        "required": [
        +                          "amount_local",
        +                          "currency",
        +                          "redeemable_until"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "pricing_url": {
        +                    "default": "https://civilquants.com/pricing",
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "available_tiers"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tos_url": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "upgrade_hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "warranty_disclaimer": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          }
        +        },
        +        "required": [
        +          "request_id",
        +          "issued_at",
        +          "tier"
        +        ],
        +        "type": "object"
        +      },
        +      "data": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Schema § 1.1 — the typed payload returned inside `MCPResponse[ComputeResult]`.\n\nFree-tier responses omit `drawings` (the downloadable CAD artefact\npointers — the paid differentiator); the bridge enforces this. The\n`audit_trail` and the inline `drawing` preview are present on BOTH tiers\n(V1 ALIGN / 60th-fire D + C). `text_summary` is bounded to 2000 chars —\nkeeps the LLM-facing summary token-cheap and forces longer narrative into\nBoQ row descriptions where it belongs. `warnings` is the non-fatal\ngeometry advisory list (both tiers).",
        +            "properties": {
        +              "assembly_slug": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "audit_trail": {
        +                "anyOf": [
        +                  {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.7 — paid-tier audit-trail entry.\n\nOne entry per BoQ row; `boq_row_index` ties to the row position in\n`ComputeResult.boq_rows`. `derivation` is the human-readable formula\nwalk-through; `formula` is the optional formal expression.",
        +                      "properties": {
        +                        "boq_row_index": {
        +                          "minimum": 0,
        +                          "type": "integer"
        +                        },
        +                        "derivation": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "formula": {
        +                          "anyOf": [
        +                            {
        +                              "type": "string"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ],
        +                          "default": null
        +                        },
        +                        "id": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "parameters_referenced": {
        +                          "items": {
        +                            "type": "string"
        +                          },
        +                          "type": "array"
        +                        }
        +                      },
        +                      "required": [
        +                        "id",
        +                        "boq_row_index",
        +                        "derivation"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "boq_rows": {
        +                "items": {
        +                  "additionalProperties": false,
        +                  "description": "Schema § 1.3 — a single bill row in the requested standard's format.\n\n`description` is the non-verbatim functional description per spec § 13.9 /\n§ 15 invariant — NEVER reproduces a standard's verbatim clause text.\n`rate` / `amount` ship null because rates are commodity data the customer\nowns; the engine's job is the measurement, not the pricing.",
        +                  "properties": {
        +                    "amount": {
        +                      "anyOf": [
        +                        {
        +                          "type": "number"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "attribution": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "audit_id": {
        +                      "anyOf": [
        +                        {
        +                          "type": "string"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "description": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "quantity": {
        +                      "minimum": 0,
        +                      "type": "number"
        +                    },
        +                    "rate": {
        +                      "anyOf": [
        +                        {
        +                          "type": "number"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "unit": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "work_section": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    }
        +                  },
        +                  "required": [
        +                    "work_section",
        +                    "description",
        +                    "quantity",
        +                    "unit",
        +                    "attribution"
        +                  ],
        +                  "type": "object"
        +                },
        +                "type": "array"
        +              },
        +              "drawing": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": false,
        +                    "description": "Schema § 1.6a — inline server-rendered SVG preview of the geometry.\n\nThe MCP mirror of the web ``/compute`` response's ``drawing`` field\n(``api.schemas.compute.DrawingRef``): the same on-screen dimensioned\ndrawing both tiers see in the workspace, surfaced on the MCP compute\nresponse so a chat client can render it inline (60th-fire item C). This\nis the on-screen preview — present on BOTH tiers per the free/paid\nboundary; the downloadable CAD artefacts (DXF / dimensioned PDF) remain\nthe paid differentiator via the export tools.\n\nDefined here rather than importing ``DrawingRef`` because the web\n``schemas`` package imports back into this module (``schemas.render``),\nso reusing it would create an import cycle — the MCP wire contract keeps\nits own copy, the same pattern as ``BoQRow`` / ``DrawingReference``.",
        +                    "properties": {
        +                      "entity_count": {
        +                        "minimum": 0,
        +                        "type": "integer"
        +                      },
        +                      "svg_b64": {
        +                        "minLength": 1,
        +                        "type": "string"
        +                      },
        +                      "unit_of_drawing": {
        +                        "const": "m",
        +                        "default": "m",
        +                        "type": "string"
        +                      },
        +                      "viewbox_height": {
        +                        "exclusiveMinimum": 0,
        +                        "type": "number"
        +                      },
        +                      "viewbox_width": {
        +                        "exclusiveMinimum": 0,
        +                        "type": "number"
        +                      },
        +                      "viewbox_x": {
        +                        "type": "number"
        +                      },
        +                      "viewbox_y": {
        +                        "type": "number"
        +                      }
        +                    },
        +                    "required": [
        +                      "svg_b64",
        +                      "viewbox_x",
        +                      "viewbox_y",
        +                      "viewbox_width",
        +                      "viewbox_height",
        +                      "entity_count"
        +                    ],
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "drawings": {
        +                "anyOf": [
        +                  {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.6 — paid-tier drawing artefact pointer.\n\n`url` is an R2-signed URL; expiry is carried in `_meta.deliverables.expires_at`\non the envelope (not duplicated here). `layers` is DXF-only; PDF/SVG\ncallers omit it.",
        +                      "properties": {
        +                        "drawing_type": {
        +                          "enum": [
        +                            "section",
        +                            "plan",
        +                            "elevation",
        +                            "isometric",
        +                            "detail"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "format": {
        +                          "enum": [
        +                            "DXF",
        +                            "PDF",
        +                            "SVG"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "layers": {
        +                          "anyOf": [
        +                            {
        +                              "items": {
        +                                "type": "string"
        +                              },
        +                              "type": "array"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ],
        +                          "default": null
        +                        },
        +                        "scale": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "sheet_size": {
        +                          "enum": [
        +                            "A1",
        +                            "A2",
        +                            "A3",
        +                            "A4"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "url": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "drawing_type",
        +                        "format",
        +                        "url",
        +                        "sheet_size",
        +                        "scale"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "parameters_used": {
        +                "additionalProperties": false,
        +                "description": "Schema § 1.2 — the parameter snapshot the engine actually used.\n\nSplits user-supplied values from engine defaults so customers can see\nwhich numbers came from them and which the engine filled in. Every\ndefaulted parameter SHOULD have a corresponding entry in `assumptions`\n— the bridge layer enforces this when wrapping engine output.",
        +                "properties": {
        +                  "assumptions": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "engine_defaults": {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  "user_supplied": {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  }
        +                },
        +                "type": "object"
        +              },
        +              "standard": {
        +                "enum": [
        +                  "CESMM4",
        +                  "NRM2",
        +                  "SMM7",
        +                  "MMHW"
        +                ],
        +                "type": "string"
        +              },
        +              "text_summary": {
        +                "maxLength": 2000,
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "totals_summary": {
        +                "additionalProperties": false,
        +                "description": "Schema § 1.4 — totals_summary as a typed wrapper around the free-form dict.\n\nWire shape is a flat object (`{\"concrete_m3\": {...}, \"rebar_t\": {...}}`).\nWe model it as `RootModel`-equivalent via `model_config(extra=\"allow\")`\n+ a single `__root__`-style `entries` dict. Pydantic v2 recommends\n`RootModel` for free-form roots; using a wrapper class keeps the import\nsurface uniform with the rest of this module.",
        +                "properties": {
        +                  "entries": {
        +                    "additionalProperties": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.4 — single material/work-class total entry.",
        +                      "properties": {
        +                        "quantity": {
        +                          "minimum": 0,
        +                          "type": "number"
        +                        },
        +                        "unit": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "quantity",
        +                        "unit"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "object"
        +                  }
        +                },
        +                "type": "object"
        +              },
        +              "warnings": {
        +                "items": {
        +                  "additionalProperties": false,
        +                  "description": "Schema § 1.8 — a non-fatal geometry advisory (56th-fire T2).\n\nThe wire projection of the engine's `core.GeometryWarning`. Advisory only:\na warning NEVER changes a measured quantity — it flags geometry that is\nvalid but likely a mistake (e.g. a stale dependent-height default). Present\non BOTH tiers — a correctness/safety signal, not a paid feature.",
        +                  "properties": {
        +                    "affected_params": {
        +                      "items": {
        +                        "type": "string"
        +                      },
        +                      "type": "array"
        +                    },
        +                    "code": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "detail": {
        +                      "additionalProperties": {
        +                        "type": "number"
        +                      },
        +                      "type": "object"
        +                    },
        +                    "message": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "severity": {
        +                      "enum": [
        +                        "info",
        +                        "advisory",
        +                        "caution"
        +                      ],
        +                      "type": "string"
        +                    }
        +                  },
        +                  "required": [
        +                    "code",
        +                    "severity",
        +                    "message"
        +                  ],
        +                  "type": "object"
        +                },
        +                "type": "array"
        +              }
        +            },
        +            "required": [
        +              "assembly_slug",
        +              "standard",
        +              "parameters_used",
        +              "boq_rows",
        +              "totals_summary",
        +              "text_summary"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      },
        +      "error": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        +            "properties": {
        +              "code": {
        +                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        +                "enum": [
        +                  "RATE_LIMIT_EXCEEDED",
        +                  "TIER_INSUFFICIENT",
        +                  "INVALID_INPUT",
        +                  "SCHEMA_VERSION_MISMATCH",
        +                  "SCHEMA_INVARIANT_VIOLATION",
        +                  "UPSTREAM_TIMEOUT",
        +                  "BACKEND_FAILURE",
        +                  "IP_BLOCKED",
        +                  "RESOURCE_NOT_FOUND",
        +                  "RENDER_FAILURE",
        +                  "OCR_LOW_CONFIDENCE",
        +                  "MANUAL_REVIEW_REQUIRED",
        +                  "ACCEPTANCE_REQUIRED",
        +                  "INVALID_TOKEN"
        +                ],
        +                "type": "string"
        +              },
        +              "details": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "message": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "recoverable": {
        +                "type": "boolean"
        +              },
        +              "retry_after_seconds": {
        +                "anyOf": [
        +                  {
        +                    "minimum": 0,
        +                    "type": "integer"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              }
        +            },
        +            "required": [
        +              "code",
        +              "message",
        +              "recoverable"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      }
        +    },
        +    "required": [
        +      "_meta"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "_meta": {
        +        "additionalProperties": false,
        +        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        +        "properties": {
        +          "deliverables": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        +                "properties": {
        +                  "docx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "dxf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "expires_at": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  },
        +                  "pdf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "xlsx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "expires_at"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "document_id": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "issued_at": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "rate_limit_remaining": {
        +            "anyOf": [
        +              {
        +                "minimum": 0,
        +                "type": "integer"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "request_id": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "schema_version": {
        +            "const": "1.0.0",
        +            "default": "1.0.0",
        +            "type": "string"
        +          },
        +          "scope_boundary": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        +                "properties": {
        +                  "not_in_scope": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "produced": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "recommended_companions": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "type": "string"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "produced",
        +                  "not_in_scope"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tier": {
        +            "enum": [
        +              "free",
        +              "paid"
        +            ],
        +            "type": "string"
        +          },
        +          "tier_upgrade": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        +                "properties": {
        +                  "available_tiers": {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        +                      "properties": {
        +                        "billing": {
        +                          "enum": [
        +                            "one_off",
        +                            "monthly",
        +                            "annual"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "currency": {
        +                          "enum": [
        +                            "GBP",
        +                            "SGD",
        +                            "EUR",
        +                            "USD",
        +                            "CAD",
        +                            "AUD",
        +                            "NZD",
        +                            "MYR"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "display_name": {
        +                          "type": "string"
        +                        },
        +                        "price_local": {
        +                          "type": "number"
        +                        },
        +                        "tier_slug": {
        +                          "enum": [
        +                            "7_day_pass",
        +                            "solo",
        +                            "studio",
        +                            "practice"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "unlock_summary": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "tier_slug",
        +                        "display_name",
        +                        "price_local",
        +                        "currency",
        +                        "billing",
        +                        "unlock_summary"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "current_tier": {
        +                    "const": "free",
        +                    "default": "free",
        +                    "type": "string"
        +                  },
        +                  "pass_credit": {
        +                    "anyOf": [
        +                      {
        +                        "additionalProperties": false,
        +                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        +                        "properties": {
        +                          "amount_local": {
        +                            "type": "number"
        +                          },
        +                          "applies_to": {
        +                            "const": "solo_first_month",
        +                            "default": "solo_first_month",
        +                            "type": "string"
        +                          },
        +                          "currency": {
        +                            "type": "string"
        +                          },
        +                          "redeemable_until": {
        +                            "type": "string"
        +                          }
        +                        },
        +                        "required": [
        +                          "amount_local",
        +                          "currency",
        +                          "redeemable_until"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "pricing_url": {
        +                    "default": "https://civilquants.com/pricing",
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "available_tiers"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tos_url": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "upgrade_hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "warranty_disclaimer": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          }
        +        },
        +        "required": [
        +          "request_id",
        +          "issued_at",
        +          "tier"
        +        ],
        +        "type": "object"
        +      },
        +      "data": {
        +        "default": null,
        +        "title": "Data"
        +      },
        +      "error": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        +            "properties": {
        +              "code": {
        +                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        +                "enum": [
        +                  "RATE_LIMIT_EXCEEDED",
        +                  "TIER_INSUFFICIENT",
        +                  "INVALID_INPUT",
        +                  "SCHEMA_VERSION_MISMATCH",
        +                  "SCHEMA_INVARIANT_VIOLATION",
        +                  "UPSTREAM_TIMEOUT",
        +                  "BACKEND_FAILURE",
        +                  "IP_BLOCKED",
        +                  "RESOURCE_NOT_FOUND",
        +                  "RENDER_FAILURE",
        +                  "OCR_LOW_CONFIDENCE",
        +                  "MANUAL_REVIEW_REQUIRED",
        +                  "ACCEPTANCE_REQUIRED",
        +                  "INVALID_TOKEN"
        +                ],
        +                "type": "string"
        +              },
        +              "details": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "message": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "recoverable": {
        +                "type": "boolean"
        +              },
        +              "retry_after_seconds": {
        +                "anyOf": [
        +                  {
        +                    "minimum": 0,
        +                    "type": "integer"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              }
        +            },
        +            "required": [
        +              "code",
        +              "message",
        +              "recoverable"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      }
        +    },
        +    "required": [
        +      "_meta"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedcompute_edge_drain1 field changed
      • changedOutput schema / properties / result / anyOf
        Previous value: -[
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "_meta": {
        -        "additionalProperties": false,
        -        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        -        "properties": {
        -          "deliverables": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        -                "properties": {
        -                  "docx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "dxf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "expires_at": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  },
        -                  "pdf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "xlsx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "expires_at"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "document_id": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "issued_at": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "rate_limit_remaining": {
        -            "anyOf": [
        -              {
        -                "minimum": 0,
        -                "type": "integer"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "request_id": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "schema_version": {
        -            "const": "1.0.0",
        -            "default": "1.0.0",
        -            "type": "string"
        -          },
        -          "scope_boundary": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        -                "properties": {
        -                  "not_in_scope": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "produced": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "recommended_companions": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "type": "string"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "produced",
        -                  "not_in_scope"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tier": {
        -            "enum": [
        -              "free",
        -              "paid"
        -            ],
        -            "type": "string"
        -          },
        -          "tier_upgrade": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        -                "properties": {
        -                  "available_tiers": {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        -                      "properties": {
        -                        "billing": {
        -                          "enum": [
        -                            "one_off",
        -                            "monthly",
        -                            "annual"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "currency": {
        -                          "enum": [
        -                            "GBP",
        -                            "SGD",
        -                            "EUR",
        -                            "USD",
        -                            "CAD",
        -                            "AUD",
        -                            "NZD",
        -                            "MYR"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "display_name": {
        -                          "type": "string"
        -                        },
        -                        "price_local": {
        -                          "type": "number"
        -                        },
        -                        "tier_slug": {
        -                          "enum": [
        -                            "7_day_pass",
        -                            "solo",
        -                            "studio",
        -                            "practice"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "unlock_summary": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "tier_slug",
        -                        "display_name",
        -                        "price_local",
        -                        "currency",
        -                        "billing",
        -                        "unlock_summary"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "current_tier": {
        -                    "const": "free",
        -                    "default": "free",
        -                    "type": "string"
        -                  },
        -                  "pass_credit": {
        -                    "anyOf": [
        -                      {
        -                        "additionalProperties": false,
        -                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        -                        "properties": {
        -                          "amount_local": {
        -                            "type": "number"
        -                          },
        -                          "applies_to": {
        -                            "const": "solo_first_month",
        -                            "default": "solo_first_month",
        -                            "type": "string"
        -                          },
        -                          "currency": {
        -                            "type": "string"
        -                          },
        -                          "redeemable_until": {
        -                            "type": "string"
        -                          }
        -                        },
        -                        "required": [
        -                          "amount_local",
        -                          "currency",
        -                          "redeemable_until"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "pricing_url": {
        -                    "default": "https://civilquants.com/pricing",
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "available_tiers"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tos_url": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "upgrade_hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "warranty_disclaimer": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          }
        -        },
        -        "required": [
        -          "request_id",
        -          "issued_at",
        -          "tier"
        -        ],
        -        "type": "object"
        -      },
        -      "data": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Schema § 1.1 — the typed payload returned inside `MCPResponse[ComputeResult]`.\n\nFree-tier responses omit `drawings` (the downloadable CAD artefact\npointers — the paid differentiator); the bridge enforces this. The\n`audit_trail` and the inline `drawing` preview are present on BOTH tiers\n(V1 ALIGN / 60th-fire D + C). `text_summary` is bounded to 2000 chars —\nkeeps the LLM-facing summary token-cheap and forces longer narrative into\nBoQ row descriptions where it belongs. `warnings` is the non-fatal\ngeometry advisory list (both tiers).",
        -            "properties": {
        -              "assembly_slug": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "audit_trail": {
        -                "anyOf": [
        -                  {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.7 — paid-tier audit-trail entry.\n\nOne entry per BoQ row; `boq_row_index` ties to the row position in\n`ComputeResult.boq_rows`. `derivation` is the human-readable formula\nwalk-through; `formula` is the optional formal expression.",
        -                      "properties": {
        -                        "boq_row_index": {
        -                          "minimum": 0,
        -                          "type": "integer"
        -                        },
        -                        "derivation": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "formula": {
        -                          "anyOf": [
        -                            {
        -                              "type": "string"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ],
        -                          "default": null
        -                        },
        -                        "id": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "parameters_referenced": {
        -                          "items": {
        -                            "type": "string"
        -                          },
        -                          "type": "array"
        -                        }
        -                      },
        -                      "required": [
        -                        "id",
        -                        "boq_row_index",
        -                        "derivation"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "boq_rows": {
        -                "items": {
        -                  "additionalProperties": false,
        -                  "description": "Schema § 1.3 — a single bill row in the requested standard's format.\n\n`description` is the non-verbatim functional description per spec § 13.9 /\n§ 15 invariant — NEVER reproduces a standard's verbatim clause text.\n`rate` / `amount` ship null because rates are commodity data the customer\nowns; the engine's job is the measurement, not the pricing.",
        -                  "properties": {
        -                    "amount": {
        -                      "anyOf": [
        -                        {
        -                          "type": "number"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "attribution": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "audit_id": {
        -                      "anyOf": [
        -                        {
        -                          "type": "string"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "description": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "quantity": {
        -                      "minimum": 0,
        -                      "type": "number"
        -                    },
        -                    "rate": {
        -                      "anyOf": [
        -                        {
        -                          "type": "number"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "unit": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "work_section": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    }
        -                  },
        -                  "required": [
        -                    "work_section",
        -                    "description",
        -                    "quantity",
        -                    "unit",
        -                    "attribution"
        -                  ],
        -                  "type": "object"
        -                },
        -                "type": "array"
        -              },
        -              "drawing": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": false,
        -                    "description": "Schema § 1.6a — inline server-rendered SVG preview of the geometry.\n\nThe MCP mirror of the web ``/compute`` response's ``drawing`` field\n(``api.schemas.compute.DrawingRef``): the same on-screen dimensioned\ndrawing both tiers see in the workspace, surfaced on the MCP compute\nresponse so a chat client can render it inline (60th-fire item C). This\nis the on-screen preview — present on BOTH tiers per the free/paid\nboundary; the downloadable CAD artefacts (DXF / dimensioned PDF) remain\nthe paid differentiator via the export tools.\n\nDefined here rather than importing ``DrawingRef`` because the web\n``schemas`` package imports back into this module (``schemas.render``),\nso reusing it would create an import cycle — the MCP wire contract keeps\nits own copy, the same pattern as ``BoQRow`` / ``DrawingReference``.",
        -                    "properties": {
        -                      "entity_count": {
        -                        "minimum": 0,
        -                        "type": "integer"
        -                      },
        -                      "svg_b64": {
        -                        "minLength": 1,
        -                        "type": "string"
        -                      },
        -                      "unit_of_drawing": {
        -                        "const": "m",
        -                        "default": "m",
        -                        "type": "string"
        -                      },
        -                      "viewbox_height": {
        -                        "exclusiveMinimum": 0,
        -                        "type": "number"
        -                      },
        -                      "viewbox_width": {
        -                        "exclusiveMinimum": 0,
        -                        "type": "number"
        -                      },
        -                      "viewbox_x": {
        -                        "type": "number"
        -                      },
        -                      "viewbox_y": {
        -                        "type": "number"
        -                      }
        -                    },
        -                    "required": [
        -                      "svg_b64",
        -                      "viewbox_x",
        -                      "viewbox_y",
        -                      "viewbox_width",
        -                      "viewbox_height",
        -                      "entity_count"
        -                    ],
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "drawings": {
        -                "anyOf": [
        -                  {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.6 — paid-tier drawing artefact pointer.\n\n`url` is an R2-signed URL; expiry is carried in `_meta.deliverables.expires_at`\non the envelope (not duplicated here). `layers` is DXF-only; PDF/SVG\ncallers omit it.",
        -                      "properties": {
        -                        "drawing_type": {
        -                          "enum": [
        -                            "section",
        -                            "plan",
        -                            "elevation",
        -                            "isometric",
        -                            "detail"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "format": {
        -                          "enum": [
        -                            "DXF",
        -                            "PDF",
        -                            "SVG"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "layers": {
        -                          "anyOf": [
        -                            {
        -                              "items": {
        -                                "type": "string"
        -                              },
        -                              "type": "array"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ],
        -                          "default": null
        -                        },
        -                        "scale": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "sheet_size": {
        -                          "enum": [
        -                            "A1",
        -                            "A2",
        -                            "A3",
        -                            "A4"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "url": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "drawing_type",
        -                        "format",
        -                        "url",
        -                        "sheet_size",
        -                        "scale"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "parameters_used": {
        -                "additionalProperties": false,
        -                "description": "Schema § 1.2 — the parameter snapshot the engine actually used.\n\nSplits user-supplied values from engine defaults so customers can see\nwhich numbers came from them and which the engine filled in. Every\ndefaulted parameter SHOULD have a corresponding entry in `assumptions`\n— the bridge layer enforces this when wrapping engine output.",
        -                "properties": {
        -                  "assumptions": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "engine_defaults": {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  "resolved_from_description": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "additionalProperties": false,
        -                          "description": "Schema § 1.2 — a parameter resolved by the forgiving-input layer.\n\nPopulated by the Track B-Forgiving Haiku-4.5 resolution pass; until that\nlayer lands, instances are constructed only by tests. `source` distinguishes\nthe resolution path so customers can audit which fields were inferred.",
        -                          "properties": {
        -                            "confidence": {
        -                              "anyOf": [
        -                                {
        -                                  "enum": [
        -                                    "high",
        -                                    "medium",
        -                                    "low"
        -                                  ],
        -                                  "type": "string"
        -                                },
        -                                {
        -                                  "type": "null"
        -                                }
        -                              ],
        -                              "default": null
        -                            },
        -                            "field_name": {
        -                              "minLength": 1,
        -                              "type": "string"
        -                            },
        -                            "resolved_value": {},
        -                            "source": {
        -                              "enum": [
        -                                "description_field",
        -                                "haiku_resolution",
        -                                "engine_default"
        -                              ],
        -                              "type": "string"
        -                            }
        -                          },
        -                          "required": [
        -                            "field_name",
        -                            "resolved_value",
        -                            "source"
        -                          ],
        -                          "type": "object"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "user_supplied": {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  }
        -                },
        -                "type": "object"
        -              },
        -              "standard": {
        -                "enum": [
        -                  "CESMM4",
        -                  "NRM2",
        -                  "SMM7",
        -                  "MMHW"
        -                ],
        -                "type": "string"
        -              },
        -              "text_summary": {
        -                "maxLength": 2000,
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "totals_summary": {
        -                "additionalProperties": false,
        -                "description": "Schema § 1.4 — totals_summary as a typed wrapper around the free-form dict.\n\nWire shape is a flat object (`{\"concrete_m3\": {...}, \"rebar_t\": {...}}`).\nWe model it as `RootModel`-equivalent via `model_config(extra=\"allow\")`\n+ a single `__root__`-style `entries` dict. Pydantic v2 recommends\n`RootModel` for free-form roots; using a wrapper class keeps the import\nsurface uniform with the rest of this module.",
        -                "properties": {
        -                  "entries": {
        -                    "additionalProperties": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.4 — single material/work-class total entry.",
        -                      "properties": {
        -                        "quantity": {
        -                          "minimum": 0,
        -                          "type": "number"
        -                        },
        -                        "unit": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "quantity",
        -                        "unit"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "object"
        -                  }
        -                },
        -                "type": "object"
        -              },
        -              "warnings": {
        -                "items": {
        -                  "additionalProperties": false,
        -                  "description": "Schema § 1.8 — a non-fatal geometry advisory (56th-fire T2).\n\nThe wire projection of the engine's `core.GeometryWarning`. Advisory only:\na warning NEVER changes a measured quantity — it flags geometry that is\nvalid but likely a mistake (e.g. a stale dependent-height default). Present\non BOTH tiers — a correctness/safety signal, not a paid feature.",
        -                  "properties": {
        -                    "affected_params": {
        -                      "items": {
        -                        "type": "string"
        -                      },
        -                      "type": "array"
        -                    },
        -                    "code": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "detail": {
        -                      "additionalProperties": {
        -                        "type": "number"
        -                      },
        -                      "type": "object"
        -                    },
        -                    "message": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "severity": {
        -                      "enum": [
        -                        "info",
        -                        "advisory",
        -                        "caution"
        -                      ],
        -                      "type": "string"
        -                    }
        -                  },
        -                  "required": [
        -                    "code",
        -                    "severity",
        -                    "message"
        -                  ],
        -                  "type": "object"
        -                },
        -                "type": "array"
        -              }
        -            },
        -            "required": [
        -              "assembly_slug",
        -              "standard",
        -              "parameters_used",
        -              "boq_rows",
        -              "totals_summary",
        -              "text_summary"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      },
        -      "error": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        -            "properties": {
        -              "code": {
        -                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        -                "enum": [
        -                  "RATE_LIMIT_EXCEEDED",
        -                  "TIER_INSUFFICIENT",
        -                  "INVALID_INPUT",
        -                  "SCHEMA_VERSION_MISMATCH",
        -                  "SCHEMA_INVARIANT_VIOLATION",
        -                  "UPSTREAM_TIMEOUT",
        -                  "BACKEND_FAILURE",
        -                  "IP_BLOCKED",
        -                  "RESOURCE_NOT_FOUND",
        -                  "RENDER_FAILURE",
        -                  "OCR_LOW_CONFIDENCE",
        -                  "MANUAL_REVIEW_REQUIRED",
        -                  "ACCEPTANCE_REQUIRED",
        -                  "INVALID_TOKEN"
        -                ],
        -                "type": "string"
        -              },
        -              "details": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "message": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "recoverable": {
        -                "type": "boolean"
        -              },
        -              "retry_after_seconds": {
        -                "anyOf": [
        -                  {
        -                    "minimum": 0,
        -                    "type": "integer"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              }
        -            },
        -            "required": [
        -              "code",
        -              "message",
        -              "recoverable"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      }
        -    },
        -    "required": [
        -      "_meta"
        -    ],
        -    "type": "object"
        -  },
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "_meta": {
        -        "additionalProperties": false,
        -        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        -        "properties": {
        -          "deliverables": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        -                "properties": {
        -                  "docx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "dxf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "expires_at": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  },
        -                  "pdf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "xlsx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "expires_at"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "document_id": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "issued_at": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "rate_limit_remaining": {
        -            "anyOf": [
        -              {
        -                "minimum": 0,
        -                "type": "integer"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "request_id": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "schema_version": {
        -            "const": "1.0.0",
        -            "default": "1.0.0",
        -            "type": "string"
        -          },
        -          "scope_boundary": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        -                "properties": {
        -                  "not_in_scope": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "produced": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "recommended_companions": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "type": "string"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "produced",
        -                  "not_in_scope"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tier": {
        -            "enum": [
        -              "free",
        -              "paid"
        -            ],
        -            "type": "string"
        -          },
        -          "tier_upgrade": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        -                "properties": {
        -                  "available_tiers": {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        -                      "properties": {
        -                        "billing": {
        -                          "enum": [
        -                            "one_off",
        -                            "monthly",
        -                            "annual"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "currency": {
        -                          "enum": [
        -                            "GBP",
        -                            "SGD",
        -                            "EUR",
        -                            "USD",
        -                            "CAD",
        -                            "AUD",
        -                            "NZD",
        -                            "MYR"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "display_name": {
        -                          "type": "string"
        -                        },
        -                        "price_local": {
        -                          "type": "number"
        -                        },
        -                        "tier_slug": {
        -                          "enum": [
        -                            "7_day_pass",
        -                            "solo",
        -                            "studio",
        -                            "practice"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "unlock_summary": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "tier_slug",
        -                        "display_name",
        -                        "price_local",
        -                        "currency",
        -                        "billing",
        -                        "unlock_summary"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "current_tier": {
        -                    "const": "free",
        -                    "default": "free",
        -                    "type": "string"
        -                  },
        -                  "pass_credit": {
        -                    "anyOf": [
        -                      {
        -                        "additionalProperties": false,
        -                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        -                        "properties": {
        -                          "amount_local": {
        -                            "type": "number"
        -                          },
        -                          "applies_to": {
        -                            "const": "solo_first_month",
        -                            "default": "solo_first_month",
        -                            "type": "string"
        -                          },
        -                          "currency": {
        -                            "type": "string"
        -                          },
        -                          "redeemable_until": {
        -                            "type": "string"
        -                          }
        -                        },
        -                        "required": [
        -                          "amount_local",
        -                          "currency",
        -                          "redeemable_until"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "pricing_url": {
        -                    "default": "https://civilquants.com/pricing",
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "available_tiers"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tos_url": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "upgrade_hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "warranty_disclaimer": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          }
        -        },
        -        "required": [
        -          "request_id",
        -          "issued_at",
        -          "tier"
        -        ],
        -        "type": "object"
        -      },
        -      "data": {
        -        "default": null,
        -        "title": "Data"
        -      },
        -      "error": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        -            "properties": {
        -              "code": {
        -                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        -                "enum": [
        -                  "RATE_LIMIT_EXCEEDED",
        -                  "TIER_INSUFFICIENT",
        -                  "INVALID_INPUT",
        -                  "SCHEMA_VERSION_MISMATCH",
        -                  "SCHEMA_INVARIANT_VIOLATION",
        -                  "UPSTREAM_TIMEOUT",
        -                  "BACKEND_FAILURE",
        -                  "IP_BLOCKED",
        -                  "RESOURCE_NOT_FOUND",
        -                  "RENDER_FAILURE",
        -                  "OCR_LOW_CONFIDENCE",
        -                  "MANUAL_REVIEW_REQUIRED",
        -                  "ACCEPTANCE_REQUIRED",
        -                  "INVALID_TOKEN"
        -                ],
        -                "type": "string"
        -              },
        -              "details": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "message": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "recoverable": {
        -                "type": "boolean"
        -              },
        -              "retry_after_seconds": {
        -                "anyOf": [
        -                  {
        -                    "minimum": 0,
        -                    "type": "integer"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              }
        -            },
        -            "required": [
        -              "code",
        -              "message",
        -              "recoverable"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      }
        -    },
        -    "required": [
        -      "_meta"
        -    ],
        -    "type": "object"
        -  }
        -]New value: +[
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "_meta": {
        +        "additionalProperties": false,
        +        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        +        "properties": {
        +          "deliverables": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        +                "properties": {
        +                  "docx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "dxf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "expires_at": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  },
        +                  "pdf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "xlsx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "expires_at"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "document_id": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "issued_at": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "rate_limit_remaining": {
        +            "anyOf": [
        +              {
        +                "minimum": 0,
        +                "type": "integer"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "request_id": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "schema_version": {
        +            "const": "1.0.0",
        +            "default": "1.0.0",
        +            "type": "string"
        +          },
        +          "scope_boundary": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        +                "properties": {
        +                  "not_in_scope": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "produced": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "recommended_companions": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "type": "string"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "produced",
        +                  "not_in_scope"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tier": {
        +            "enum": [
        +              "free",
        +              "paid"
        +            ],
        +            "type": "string"
        +          },
        +          "tier_upgrade": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        +                "properties": {
        +                  "available_tiers": {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        +                      "properties": {
        +                        "billing": {
        +                          "enum": [
        +                            "one_off",
        +                            "monthly",
        +                            "annual"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "currency": {
        +                          "enum": [
        +                            "GBP",
        +                            "SGD",
        +                            "EUR",
        +                            "USD",
        +                            "CAD",
        +                            "AUD",
        +                            "NZD",
        +                            "MYR"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "display_name": {
        +                          "type": "string"
        +                        },
        +                        "price_local": {
        +                          "type": "number"
        +                        },
        +                        "tier_slug": {
        +                          "enum": [
        +                            "7_day_pass",
        +                            "solo",
        +                            "studio",
        +                            "practice"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "unlock_summary": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "tier_slug",
        +                        "display_name",
        +                        "price_local",
        +                        "currency",
        +                        "billing",
        +                        "unlock_summary"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "current_tier": {
        +                    "const": "free",
        +                    "default": "free",
        +                    "type": "string"
        +                  },
        +                  "pass_credit": {
        +                    "anyOf": [
        +                      {
        +                        "additionalProperties": false,
        +                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        +                        "properties": {
        +                          "amount_local": {
        +                            "type": "number"
        +                          },
        +                          "applies_to": {
        +                            "const": "solo_first_month",
        +                            "default": "solo_first_month",
        +                            "type": "string"
        +                          },
        +                          "currency": {
        +                            "type": "string"
        +                          },
        +                          "redeemable_until": {
        +                            "type": "string"
        +                          }
        +                        },
        +                        "required": [
        +                          "amount_local",
        +                          "currency",
        +                          "redeemable_until"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "pricing_url": {
        +                    "default": "https://civilquants.com/pricing",
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "available_tiers"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tos_url": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "upgrade_hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "warranty_disclaimer": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          }
        +        },
        +        "required": [
        +          "request_id",
        +          "issued_at",
        +          "tier"
        +        ],
        +        "type": "object"
        +      },
        +      "data": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Schema § 1.1 — the typed payload returned inside `MCPResponse[ComputeResult]`.\n\nFree-tier responses omit `drawings` (the downloadable CAD artefact\npointers — the paid differentiator); the bridge enforces this. The\n`audit_trail` and the inline `drawing` preview are present on BOTH tiers\n(V1 ALIGN / 60th-fire D + C). `text_summary` is bounded to 2000 chars —\nkeeps the LLM-facing summary token-cheap and forces longer narrative into\nBoQ row descriptions where it belongs. `warnings` is the non-fatal\ngeometry advisory list (both tiers).",
        +            "properties": {
        +              "assembly_slug": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "audit_trail": {
        +                "anyOf": [
        +                  {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.7 — paid-tier audit-trail entry.\n\nOne entry per BoQ row; `boq_row_index` ties to the row position in\n`ComputeResult.boq_rows`. `derivation` is the human-readable formula\nwalk-through; `formula` is the optional formal expression.",
        +                      "properties": {
        +                        "boq_row_index": {
        +                          "minimum": 0,
        +                          "type": "integer"
        +                        },
        +                        "derivation": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "formula": {
        +                          "anyOf": [
        +                            {
        +                              "type": "string"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ],
        +                          "default": null
        +                        },
        +                        "id": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "parameters_referenced": {
        +                          "items": {
        +                            "type": "string"
        +                          },
        +                          "type": "array"
        +                        }
        +                      },
        +                      "required": [
        +                        "id",
        +                        "boq_row_index",
        +                        "derivation"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "boq_rows": {
        +                "items": {
        +                  "additionalProperties": false,
        +                  "description": "Schema § 1.3 — a single bill row in the requested standard's format.\n\n`description` is the non-verbatim functional description per spec § 13.9 /\n§ 15 invariant — NEVER reproduces a standard's verbatim clause text.\n`rate` / `amount` ship null because rates are commodity data the customer\nowns; the engine's job is the measurement, not the pricing.",
        +                  "properties": {
        +                    "amount": {
        +                      "anyOf": [
        +                        {
        +                          "type": "number"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "attribution": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "audit_id": {
        +                      "anyOf": [
        +                        {
        +                          "type": "string"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "description": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "quantity": {
        +                      "minimum": 0,
        +                      "type": "number"
        +                    },
        +                    "rate": {
        +                      "anyOf": [
        +                        {
        +                          "type": "number"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "unit": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "work_section": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    }
        +                  },
        +                  "required": [
        +                    "work_section",
        +                    "description",
        +                    "quantity",
        +                    "unit",
        +                    "attribution"
        +                  ],
        +                  "type": "object"
        +                },
        +                "type": "array"
        +              },
        +              "drawing": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": false,
        +                    "description": "Schema § 1.6a — inline server-rendered SVG preview of the geometry.\n\nThe MCP mirror of the web ``/compute`` response's ``drawing`` field\n(``api.schemas.compute.DrawingRef``): the same on-screen dimensioned\ndrawing both tiers see in the workspace, surfaced on the MCP compute\nresponse so a chat client can render it inline (60th-fire item C). This\nis the on-screen preview — present on BOTH tiers per the free/paid\nboundary; the downloadable CAD artefacts (DXF / dimensioned PDF) remain\nthe paid differentiator via the export tools.\n\nDefined here rather than importing ``DrawingRef`` because the web\n``schemas`` package imports back into this module (``schemas.render``),\nso reusing it would create an import cycle — the MCP wire contract keeps\nits own copy, the same pattern as ``BoQRow`` / ``DrawingReference``.",
        +                    "properties": {
        +                      "entity_count": {
        +                        "minimum": 0,
        +                        "type": "integer"
        +                      },
        +                      "svg_b64": {
        +                        "minLength": 1,
        +                        "type": "string"
        +                      },
        +                      "unit_of_drawing": {
        +                        "const": "m",
        +                        "default": "m",
        +                        "type": "string"
        +                      },
        +                      "viewbox_height": {
        +                        "exclusiveMinimum": 0,
        +                        "type": "number"
        +                      },
        +                      "viewbox_width": {
        +                        "exclusiveMinimum": 0,
        +                        "type": "number"
        +                      },
        +                      "viewbox_x": {
        +                        "type": "number"
        +                      },
        +                      "viewbox_y": {
        +                        "type": "number"
        +                      }
        +                    },
        +                    "required": [
        +                      "svg_b64",
        +                      "viewbox_x",
        +                      "viewbox_y",
        +                      "viewbox_width",
        +                      "viewbox_height",
        +                      "entity_count"
        +                    ],
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "drawings": {
        +                "anyOf": [
        +                  {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.6 — paid-tier drawing artefact pointer.\n\n`url` is an R2-signed URL; expiry is carried in `_meta.deliverables.expires_at`\non the envelope (not duplicated here). `layers` is DXF-only; PDF/SVG\ncallers omit it.",
        +                      "properties": {
        +                        "drawing_type": {
        +                          "enum": [
        +                            "section",
        +                            "plan",
        +                            "elevation",
        +                            "isometric",
        +                            "detail"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "format": {
        +                          "enum": [
        +                            "DXF",
        +                            "PDF",
        +                            "SVG"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "layers": {
        +                          "anyOf": [
        +                            {
        +                              "items": {
        +                                "type": "string"
        +                              },
        +                              "type": "array"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ],
        +                          "default": null
        +                        },
        +                        "scale": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "sheet_size": {
        +                          "enum": [
        +                            "A1",
        +                            "A2",
        +                            "A3",
        +                            "A4"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "url": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "drawing_type",
        +                        "format",
        +                        "url",
        +                        "sheet_size",
        +                        "scale"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "parameters_used": {
        +                "additionalProperties": false,
        +                "description": "Schema § 1.2 — the parameter snapshot the engine actually used.\n\nSplits user-supplied values from engine defaults so customers can see\nwhich numbers came from them and which the engine filled in. Every\ndefaulted parameter SHOULD have a corresponding entry in `assumptions`\n— the bridge layer enforces this when wrapping engine output.",
        +                "properties": {
        +                  "assumptions": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "engine_defaults": {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  "user_supplied": {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  }
        +                },
        +                "type": "object"
        +              },
        +              "standard": {
        +                "enum": [
        +                  "CESMM4",
        +                  "NRM2",
        +                  "SMM7",
        +                  "MMHW"
        +                ],
        +                "type": "string"
        +              },
        +              "text_summary": {
        +                "maxLength": 2000,
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "totals_summary": {
        +                "additionalProperties": false,
        +                "description": "Schema § 1.4 — totals_summary as a typed wrapper around the free-form dict.\n\nWire shape is a flat object (`{\"concrete_m3\": {...}, \"rebar_t\": {...}}`).\nWe model it as `RootModel`-equivalent via `model_config(extra=\"allow\")`\n+ a single `__root__`-style `entries` dict. Pydantic v2 recommends\n`RootModel` for free-form roots; using a wrapper class keeps the import\nsurface uniform with the rest of this module.",
        +                "properties": {
        +                  "entries": {
        +                    "additionalProperties": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.4 — single material/work-class total entry.",
        +                      "properties": {
        +                        "quantity": {
        +                          "minimum": 0,
        +                          "type": "number"
        +                        },
        +                        "unit": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "quantity",
        +                        "unit"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "object"
        +                  }
        +                },
        +                "type": "object"
        +              },
        +              "warnings": {
        +                "items": {
        +                  "additionalProperties": false,
        +                  "description": "Schema § 1.8 — a non-fatal geometry advisory (56th-fire T2).\n\nThe wire projection of the engine's `core.GeometryWarning`. Advisory only:\na warning NEVER changes a measured quantity — it flags geometry that is\nvalid but likely a mistake (e.g. a stale dependent-height default). Present\non BOTH tiers — a correctness/safety signal, not a paid feature.",
        +                  "properties": {
        +                    "affected_params": {
        +                      "items": {
        +                        "type": "string"
        +                      },
        +                      "type": "array"
        +                    },
        +                    "code": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "detail": {
        +                      "additionalProperties": {
        +                        "type": "number"
        +                      },
        +                      "type": "object"
        +                    },
        +                    "message": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "severity": {
        +                      "enum": [
        +                        "info",
        +                        "advisory",
        +                        "caution"
        +                      ],
        +                      "type": "string"
        +                    }
        +                  },
        +                  "required": [
        +                    "code",
        +                    "severity",
        +                    "message"
        +                  ],
        +                  "type": "object"
        +                },
        +                "type": "array"
        +              }
        +            },
        +            "required": [
        +              "assembly_slug",
        +              "standard",
        +              "parameters_used",
        +              "boq_rows",
        +              "totals_summary",
        +              "text_summary"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      },
        +      "error": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        +            "properties": {
        +              "code": {
        +                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        +                "enum": [
        +                  "RATE_LIMIT_EXCEEDED",
        +                  "TIER_INSUFFICIENT",
        +                  "INVALID_INPUT",
        +                  "SCHEMA_VERSION_MISMATCH",
        +                  "SCHEMA_INVARIANT_VIOLATION",
        +                  "UPSTREAM_TIMEOUT",
        +                  "BACKEND_FAILURE",
        +                  "IP_BLOCKED",
        +                  "RESOURCE_NOT_FOUND",
        +                  "RENDER_FAILURE",
        +                  "OCR_LOW_CONFIDENCE",
        +                  "MANUAL_REVIEW_REQUIRED",
        +                  "ACCEPTANCE_REQUIRED",
        +                  "INVALID_TOKEN"
        +                ],
        +                "type": "string"
        +              },
        +              "details": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "message": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "recoverable": {
        +                "type": "boolean"
        +              },
        +              "retry_after_seconds": {
        +                "anyOf": [
        +                  {
        +                    "minimum": 0,
        +                    "type": "integer"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              }
        +            },
        +            "required": [
        +              "code",
        +              "message",
        +              "recoverable"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      }
        +    },
        +    "required": [
        +      "_meta"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "_meta": {
        +        "additionalProperties": false,
        +        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        +        "properties": {
        +          "deliverables": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        +                "properties": {
        +                  "docx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "dxf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "expires_at": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  },
        +                  "pdf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "xlsx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "expires_at"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "document_id": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "issued_at": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "rate_limit_remaining": {
        +            "anyOf": [
        +              {
        +                "minimum": 0,
        +                "type": "integer"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "request_id": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "schema_version": {
        +            "const": "1.0.0",
        +            "default": "1.0.0",
        +            "type": "string"
        +          },
        +          "scope_boundary": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        +                "properties": {
        +                  "not_in_scope": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "produced": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "recommended_companions": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "type": "string"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "produced",
        +                  "not_in_scope"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tier": {
        +            "enum": [
        +              "free",
        +              "paid"
        +            ],
        +            "type": "string"
        +          },
        +          "tier_upgrade": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        +                "properties": {
        +                  "available_tiers": {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        +                      "properties": {
        +                        "billing": {
        +                          "enum": [
        +                            "one_off",
        +                            "monthly",
        +                            "annual"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "currency": {
        +                          "enum": [
        +                            "GBP",
        +                            "SGD",
        +                            "EUR",
        +                            "USD",
        +                            "CAD",
        +                            "AUD",
        +                            "NZD",
        +                            "MYR"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "display_name": {
        +                          "type": "string"
        +                        },
        +                        "price_local": {
        +                          "type": "number"
        +                        },
        +                        "tier_slug": {
        +                          "enum": [
        +                            "7_day_pass",
        +                            "solo",
        +                            "studio",
        +                            "practice"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "unlock_summary": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "tier_slug",
        +                        "display_name",
        +                        "price_local",
        +                        "currency",
        +                        "billing",
        +                        "unlock_summary"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "current_tier": {
        +                    "const": "free",
        +                    "default": "free",
        +                    "type": "string"
        +                  },
        +                  "pass_credit": {
        +                    "anyOf": [
        +                      {
        +                        "additionalProperties": false,
        +                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        +                        "properties": {
        +                          "amount_local": {
        +                            "type": "number"
        +                          },
        +                          "applies_to": {
        +                            "const": "solo_first_month",
        +                            "default": "solo_first_month",
        +                            "type": "string"
        +                          },
        +                          "currency": {
        +                            "type": "string"
        +                          },
        +                          "redeemable_until": {
        +                            "type": "string"
        +                          }
        +                        },
        +                        "required": [
        +                          "amount_local",
        +                          "currency",
        +                          "redeemable_until"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "pricing_url": {
        +                    "default": "https://civilquants.com/pricing",
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "available_tiers"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tos_url": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "upgrade_hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "warranty_disclaimer": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          }
        +        },
        +        "required": [
        +          "request_id",
        +          "issued_at",
        +          "tier"
        +        ],
        +        "type": "object"
        +      },
        +      "data": {
        +        "default": null,
        +        "title": "Data"
        +      },
        +      "error": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        +            "properties": {
        +              "code": {
        +                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        +                "enum": [
        +                  "RATE_LIMIT_EXCEEDED",
        +                  "TIER_INSUFFICIENT",
        +                  "INVALID_INPUT",
        +                  "SCHEMA_VERSION_MISMATCH",
        +                  "SCHEMA_INVARIANT_VIOLATION",
        +                  "UPSTREAM_TIMEOUT",
        +                  "BACKEND_FAILURE",
        +                  "IP_BLOCKED",
        +                  "RESOURCE_NOT_FOUND",
        +                  "RENDER_FAILURE",
        +                  "OCR_LOW_CONFIDENCE",
        +                  "MANUAL_REVIEW_REQUIRED",
        +                  "ACCEPTANCE_REQUIRED",
        +                  "INVALID_TOKEN"
        +                ],
        +                "type": "string"
        +              },
        +              "details": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "message": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "recoverable": {
        +                "type": "boolean"
        +              },
        +              "retry_after_seconds": {
        +                "anyOf": [
        +                  {
        +                    "minimum": 0,
        +                    "type": "integer"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              }
        +            },
        +            "required": [
        +              "code",
        +              "message",
        +              "recoverable"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      }
        +    },
        +    "required": [
        +      "_meta"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedcompute_embankment_cross_section1 field changed
      • changedOutput schema / properties / result / anyOf
        Previous value: -[
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "_meta": {
        -        "additionalProperties": false,
        -        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        -        "properties": {
        -          "deliverables": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        -                "properties": {
        -                  "docx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "dxf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "expires_at": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  },
        -                  "pdf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "xlsx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "expires_at"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "document_id": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "issued_at": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "rate_limit_remaining": {
        -            "anyOf": [
        -              {
        -                "minimum": 0,
        -                "type": "integer"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "request_id": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "schema_version": {
        -            "const": "1.0.0",
        -            "default": "1.0.0",
        -            "type": "string"
        -          },
        -          "scope_boundary": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        -                "properties": {
        -                  "not_in_scope": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "produced": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "recommended_companions": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "type": "string"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "produced",
        -                  "not_in_scope"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tier": {
        -            "enum": [
        -              "free",
        -              "paid"
        -            ],
        -            "type": "string"
        -          },
        -          "tier_upgrade": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        -                "properties": {
        -                  "available_tiers": {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        -                      "properties": {
        -                        "billing": {
        -                          "enum": [
        -                            "one_off",
        -                            "monthly",
        -                            "annual"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "currency": {
        -                          "enum": [
        -                            "GBP",
        -                            "SGD",
        -                            "EUR",
        -                            "USD",
        -                            "CAD",
        -                            "AUD",
        -                            "NZD",
        -                            "MYR"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "display_name": {
        -                          "type": "string"
        -                        },
        -                        "price_local": {
        -                          "type": "number"
        -                        },
        -                        "tier_slug": {
        -                          "enum": [
        -                            "7_day_pass",
        -                            "solo",
        -                            "studio",
        -                            "practice"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "unlock_summary": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "tier_slug",
        -                        "display_name",
        -                        "price_local",
        -                        "currency",
        -                        "billing",
        -                        "unlock_summary"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "current_tier": {
        -                    "const": "free",
        -                    "default": "free",
        -                    "type": "string"
        -                  },
        -                  "pass_credit": {
        -                    "anyOf": [
        -                      {
        -                        "additionalProperties": false,
        -                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        -                        "properties": {
        -                          "amount_local": {
        -                            "type": "number"
        -                          },
        -                          "applies_to": {
        -                            "const": "solo_first_month",
        -                            "default": "solo_first_month",
        -                            "type": "string"
        -                          },
        -                          "currency": {
        -                            "type": "string"
        -                          },
        -                          "redeemable_until": {
        -                            "type": "string"
        -                          }
        -                        },
        -                        "required": [
        -                          "amount_local",
        -                          "currency",
        -                          "redeemable_until"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "pricing_url": {
        -                    "default": "https://civilquants.com/pricing",
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "available_tiers"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tos_url": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "upgrade_hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "warranty_disclaimer": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          }
        -        },
        -        "required": [
        -          "request_id",
        -          "issued_at",
        -          "tier"
        -        ],
        -        "type": "object"
        -      },
        -      "data": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Schema § 1.1 — the typed payload returned inside `MCPResponse[ComputeResult]`.\n\nFree-tier responses omit `drawings` (the downloadable CAD artefact\npointers — the paid differentiator); the bridge enforces this. The\n`audit_trail` and the inline `drawing` preview are present on BOTH tiers\n(V1 ALIGN / 60th-fire D + C). `text_summary` is bounded to 2000 chars —\nkeeps the LLM-facing summary token-cheap and forces longer narrative into\nBoQ row descriptions where it belongs. `warnings` is the non-fatal\ngeometry advisory list (both tiers).",
        -            "properties": {
        -              "assembly_slug": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "audit_trail": {
        -                "anyOf": [
        -                  {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.7 — paid-tier audit-trail entry.\n\nOne entry per BoQ row; `boq_row_index` ties to the row position in\n`ComputeResult.boq_rows`. `derivation` is the human-readable formula\nwalk-through; `formula` is the optional formal expression.",
        -                      "properties": {
        -                        "boq_row_index": {
        -                          "minimum": 0,
        -                          "type": "integer"
        -                        },
        -                        "derivation": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "formula": {
        -                          "anyOf": [
        -                            {
        -                              "type": "string"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ],
        -                          "default": null
        -                        },
        -                        "id": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "parameters_referenced": {
        -                          "items": {
        -                            "type": "string"
        -                          },
        -                          "type": "array"
        -                        }
        -                      },
        -                      "required": [
        -                        "id",
        -                        "boq_row_index",
        -                        "derivation"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "boq_rows": {
        -                "items": {
        -                  "additionalProperties": false,
        -                  "description": "Schema § 1.3 — a single bill row in the requested standard's format.\n\n`description` is the non-verbatim functional description per spec § 13.9 /\n§ 15 invariant — NEVER reproduces a standard's verbatim clause text.\n`rate` / `amount` ship null because rates are commodity data the customer\nowns; the engine's job is the measurement, not the pricing.",
        -                  "properties": {
        -                    "amount": {
        -                      "anyOf": [
        -                        {
        -                          "type": "number"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "attribution": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "audit_id": {
        -                      "anyOf": [
        -                        {
        -                          "type": "string"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "description": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "quantity": {
        -                      "minimum": 0,
        -                      "type": "number"
        -                    },
        -                    "rate": {
        -                      "anyOf": [
        -                        {
        -                          "type": "number"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "unit": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "work_section": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    }
        -                  },
        -                  "required": [
        -                    "work_section",
        -                    "description",
        -                    "quantity",
        -                    "unit",
        -                    "attribution"
        -                  ],
        -                  "type": "object"
        -                },
        -                "type": "array"
        -              },
        -              "drawing": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": false,
        -                    "description": "Schema § 1.6a — inline server-rendered SVG preview of the geometry.\n\nThe MCP mirror of the web ``/compute`` response's ``drawing`` field\n(``api.schemas.compute.DrawingRef``): the same on-screen dimensioned\ndrawing both tiers see in the workspace, surfaced on the MCP compute\nresponse so a chat client can render it inline (60th-fire item C). This\nis the on-screen preview — present on BOTH tiers per the free/paid\nboundary; the downloadable CAD artefacts (DXF / dimensioned PDF) remain\nthe paid differentiator via the export tools.\n\nDefined here rather than importing ``DrawingRef`` because the web\n``schemas`` package imports back into this module (``schemas.render``),\nso reusing it would create an import cycle — the MCP wire contract keeps\nits own copy, the same pattern as ``BoQRow`` / ``DrawingReference``.",
        -                    "properties": {
        -                      "entity_count": {
        -                        "minimum": 0,
        -                        "type": "integer"
        -                      },
        -                      "svg_b64": {
        -                        "minLength": 1,
        -                        "type": "string"
        -                      },
        -                      "unit_of_drawing": {
        -                        "const": "m",
        -                        "default": "m",
        -                        "type": "string"
        -                      },
        -                      "viewbox_height": {
        -                        "exclusiveMinimum": 0,
        -                        "type": "number"
        -                      },
        -                      "viewbox_width": {
        -                        "exclusiveMinimum": 0,
        -                        "type": "number"
        -                      },
        -                      "viewbox_x": {
        -                        "type": "number"
        -                      },
        -                      "viewbox_y": {
        -                        "type": "number"
        -                      }
        -                    },
        -                    "required": [
        -                      "svg_b64",
        -                      "viewbox_x",
        -                      "viewbox_y",
        -                      "viewbox_width",
        -                      "viewbox_height",
        -                      "entity_count"
        -                    ],
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "drawings": {
        -                "anyOf": [
        -                  {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.6 — paid-tier drawing artefact pointer.\n\n`url` is an R2-signed URL; expiry is carried in `_meta.deliverables.expires_at`\non the envelope (not duplicated here). `layers` is DXF-only; PDF/SVG\ncallers omit it.",
        -                      "properties": {
        -                        "drawing_type": {
        -                          "enum": [
        -                            "section",
        -                            "plan",
        -                            "elevation",
        -                            "isometric",
        -                            "detail"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "format": {
        -                          "enum": [
        -                            "DXF",
        -                            "PDF",
        -                            "SVG"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "layers": {
        -                          "anyOf": [
        -                            {
        -                              "items": {
        -                                "type": "string"
        -                              },
        -                              "type": "array"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ],
        -                          "default": null
        -                        },
        -                        "scale": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "sheet_size": {
        -                          "enum": [
        -                            "A1",
        -                            "A2",
        -                            "A3",
        -                            "A4"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "url": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "drawing_type",
        -                        "format",
        -                        "url",
        -                        "sheet_size",
        -                        "scale"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "parameters_used": {
        -                "additionalProperties": false,
        -                "description": "Schema § 1.2 — the parameter snapshot the engine actually used.\n\nSplits user-supplied values from engine defaults so customers can see\nwhich numbers came from them and which the engine filled in. Every\ndefaulted parameter SHOULD have a corresponding entry in `assumptions`\n— the bridge layer enforces this when wrapping engine output.",
        -                "properties": {
        -                  "assumptions": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "engine_defaults": {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  "resolved_from_description": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "additionalProperties": false,
        -                          "description": "Schema § 1.2 — a parameter resolved by the forgiving-input layer.\n\nPopulated by the Track B-Forgiving Haiku-4.5 resolution pass; until that\nlayer lands, instances are constructed only by tests. `source` distinguishes\nthe resolution path so customers can audit which fields were inferred.",
        -                          "properties": {
        -                            "confidence": {
        -                              "anyOf": [
        -                                {
        -                                  "enum": [
        -                                    "high",
        -                                    "medium",
        -                                    "low"
        -                                  ],
        -                                  "type": "string"
        -                                },
        -                                {
        -                                  "type": "null"
        -                                }
        -                              ],
        -                              "default": null
        -                            },
        -                            "field_name": {
        -                              "minLength": 1,
        -                              "type": "string"
        -                            },
        -                            "resolved_value": {},
        -                            "source": {
        -                              "enum": [
        -                                "description_field",
        -                                "haiku_resolution",
        -                                "engine_default"
        -                              ],
        -                              "type": "string"
        -                            }
        -                          },
        -                          "required": [
        -                            "field_name",
        -                            "resolved_value",
        -                            "source"
        -                          ],
        -                          "type": "object"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "user_supplied": {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  }
        -                },
        -                "type": "object"
        -              },
        -              "standard": {
        -                "enum": [
        -                  "CESMM4",
        -                  "NRM2",
        -                  "SMM7",
        -                  "MMHW"
        -                ],
        -                "type": "string"
        -              },
        -              "text_summary": {
        -                "maxLength": 2000,
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "totals_summary": {
        -                "additionalProperties": false,
        -                "description": "Schema § 1.4 — totals_summary as a typed wrapper around the free-form dict.\n\nWire shape is a flat object (`{\"concrete_m3\": {...}, \"rebar_t\": {...}}`).\nWe model it as `RootModel`-equivalent via `model_config(extra=\"allow\")`\n+ a single `__root__`-style `entries` dict. Pydantic v2 recommends\n`RootModel` for free-form roots; using a wrapper class keeps the import\nsurface uniform with the rest of this module.",
        -                "properties": {
        -                  "entries": {
        -                    "additionalProperties": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.4 — single material/work-class total entry.",
        -                      "properties": {
        -                        "quantity": {
        -                          "minimum": 0,
        -                          "type": "number"
        -                        },
        -                        "unit": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "quantity",
        -                        "unit"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "object"
        -                  }
        -                },
        -                "type": "object"
        -              },
        -              "warnings": {
        -                "items": {
        -                  "additionalProperties": false,
        -                  "description": "Schema § 1.8 — a non-fatal geometry advisory (56th-fire T2).\n\nThe wire projection of the engine's `core.GeometryWarning`. Advisory only:\na warning NEVER changes a measured quantity — it flags geometry that is\nvalid but likely a mistake (e.g. a stale dependent-height default). Present\non BOTH tiers — a correctness/safety signal, not a paid feature.",
        -                  "properties": {
        -                    "affected_params": {
        -                      "items": {
        -                        "type": "string"
        -                      },
        -                      "type": "array"
        -                    },
        -                    "code": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "detail": {
        -                      "additionalProperties": {
        -                        "type": "number"
        -                      },
        -                      "type": "object"
        -                    },
        -                    "message": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "severity": {
        -                      "enum": [
        -                        "info",
        -                        "advisory",
        -                        "caution"
        -                      ],
        -                      "type": "string"
        -                    }
        -                  },
        -                  "required": [
        -                    "code",
        -                    "severity",
        -                    "message"
        -                  ],
        -                  "type": "object"
        -                },
        -                "type": "array"
        -              }
        -            },
        -            "required": [
        -              "assembly_slug",
        -              "standard",
        -              "parameters_used",
        -              "boq_rows",
        -              "totals_summary",
        -              "text_summary"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      },
        -      "error": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        -            "properties": {
        -              "code": {
        -                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        -                "enum": [
        -                  "RATE_LIMIT_EXCEEDED",
        -                  "TIER_INSUFFICIENT",
        -                  "INVALID_INPUT",
        -                  "SCHEMA_VERSION_MISMATCH",
        -                  "SCHEMA_INVARIANT_VIOLATION",
        -                  "UPSTREAM_TIMEOUT",
        -                  "BACKEND_FAILURE",
        -                  "IP_BLOCKED",
        -                  "RESOURCE_NOT_FOUND",
        -                  "RENDER_FAILURE",
        -                  "OCR_LOW_CONFIDENCE",
        -                  "MANUAL_REVIEW_REQUIRED",
        -                  "ACCEPTANCE_REQUIRED",
        -                  "INVALID_TOKEN"
        -                ],
        -                "type": "string"
        -              },
        -              "details": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "message": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "recoverable": {
        -                "type": "boolean"
        -              },
        -              "retry_after_seconds": {
        -                "anyOf": [
        -                  {
        -                    "minimum": 0,
        -                    "type": "integer"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              }
        -            },
        -            "required": [
        -              "code",
        -              "message",
        -              "recoverable"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      }
        -    },
        -    "required": [
        -      "_meta"
        -    ],
        -    "type": "object"
        -  },
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "_meta": {
        -        "additionalProperties": false,
        -        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        -        "properties": {
        -          "deliverables": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        -                "properties": {
        -                  "docx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "dxf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "expires_at": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  },
        -                  "pdf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "xlsx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "expires_at"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "document_id": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "issued_at": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "rate_limit_remaining": {
        -            "anyOf": [
        -              {
        -                "minimum": 0,
        -                "type": "integer"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "request_id": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "schema_version": {
        -            "const": "1.0.0",
        -            "default": "1.0.0",
        -            "type": "string"
        -          },
        -          "scope_boundary": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        -                "properties": {
        -                  "not_in_scope": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "produced": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "recommended_companions": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "type": "string"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "produced",
        -                  "not_in_scope"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tier": {
        -            "enum": [
        -              "free",
        -              "paid"
        -            ],
        -            "type": "string"
        -          },
        -          "tier_upgrade": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        -                "properties": {
        -                  "available_tiers": {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        -                      "properties": {
        -                        "billing": {
        -                          "enum": [
        -                            "one_off",
        -                            "monthly",
        -                            "annual"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "currency": {
        -                          "enum": [
        -                            "GBP",
        -                            "SGD",
        -                            "EUR",
        -                            "USD",
        -                            "CAD",
        -                            "AUD",
        -                            "NZD",
        -                            "MYR"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "display_name": {
        -                          "type": "string"
        -                        },
        -                        "price_local": {
        -                          "type": "number"
        -                        },
        -                        "tier_slug": {
        -                          "enum": [
        -                            "7_day_pass",
        -                            "solo",
        -                            "studio",
        -                            "practice"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "unlock_summary": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "tier_slug",
        -                        "display_name",
        -                        "price_local",
        -                        "currency",
        -                        "billing",
        -                        "unlock_summary"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "current_tier": {
        -                    "const": "free",
        -                    "default": "free",
        -                    "type": "string"
        -                  },
        -                  "pass_credit": {
        -                    "anyOf": [
        -                      {
        -                        "additionalProperties": false,
        -                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        -                        "properties": {
        -                          "amount_local": {
        -                            "type": "number"
        -                          },
        -                          "applies_to": {
        -                            "const": "solo_first_month",
        -                            "default": "solo_first_month",
        -                            "type": "string"
        -                          },
        -                          "currency": {
        -                            "type": "string"
        -                          },
        -                          "redeemable_until": {
        -                            "type": "string"
        -                          }
        -                        },
        -                        "required": [
        -                          "amount_local",
        -                          "currency",
        -                          "redeemable_until"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "pricing_url": {
        -                    "default": "https://civilquants.com/pricing",
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "available_tiers"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tos_url": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "upgrade_hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "warranty_disclaimer": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          }
        -        },
        -        "required": [
        -          "request_id",
        -          "issued_at",
        -          "tier"
        -        ],
        -        "type": "object"
        -      },
        -      "data": {
        -        "default": null,
        -        "title": "Data"
        -      },
        -      "error": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        -            "properties": {
        -              "code": {
        -                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        -                "enum": [
        -                  "RATE_LIMIT_EXCEEDED",
        -                  "TIER_INSUFFICIENT",
        -                  "INVALID_INPUT",
        -                  "SCHEMA_VERSION_MISMATCH",
        -                  "SCHEMA_INVARIANT_VIOLATION",
        -                  "UPSTREAM_TIMEOUT",
        -                  "BACKEND_FAILURE",
        -                  "IP_BLOCKED",
        -                  "RESOURCE_NOT_FOUND",
        -                  "RENDER_FAILURE",
        -                  "OCR_LOW_CONFIDENCE",
        -                  "MANUAL_REVIEW_REQUIRED",
        -                  "ACCEPTANCE_REQUIRED",
        -                  "INVALID_TOKEN"
        -                ],
        -                "type": "string"
        -              },
        -              "details": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "message": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "recoverable": {
        -                "type": "boolean"
        -              },
        -              "retry_after_seconds": {
        -                "anyOf": [
        -                  {
        -                    "minimum": 0,
        -                    "type": "integer"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              }
        -            },
        -            "required": [
        -              "code",
        -              "message",
        -              "recoverable"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      }
        -    },
        -    "required": [
        -      "_meta"
        -    ],
        -    "type": "object"
        -  }
        -]New value: +[
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "_meta": {
        +        "additionalProperties": false,
        +        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        +        "properties": {
        +          "deliverables": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        +                "properties": {
        +                  "docx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "dxf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "expires_at": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  },
        +                  "pdf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "xlsx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "expires_at"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "document_id": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "issued_at": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "rate_limit_remaining": {
        +            "anyOf": [
        +              {
        +                "minimum": 0,
        +                "type": "integer"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "request_id": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "schema_version": {
        +            "const": "1.0.0",
        +            "default": "1.0.0",
        +            "type": "string"
        +          },
        +          "scope_boundary": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        +                "properties": {
        +                  "not_in_scope": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "produced": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "recommended_companions": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "type": "string"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "produced",
        +                  "not_in_scope"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tier": {
        +            "enum": [
        +              "free",
        +              "paid"
        +            ],
        +            "type": "string"
        +          },
        +          "tier_upgrade": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        +                "properties": {
        +                  "available_tiers": {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        +                      "properties": {
        +                        "billing": {
        +                          "enum": [
        +                            "one_off",
        +                            "monthly",
        +                            "annual"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "currency": {
        +                          "enum": [
        +                            "GBP",
        +                            "SGD",
        +                            "EUR",
        +                            "USD",
        +                            "CAD",
        +                            "AUD",
        +                            "NZD",
        +                            "MYR"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "display_name": {
        +                          "type": "string"
        +                        },
        +                        "price_local": {
        +                          "type": "number"
        +                        },
        +                        "tier_slug": {
        +                          "enum": [
        +                            "7_day_pass",
        +                            "solo",
        +                            "studio",
        +                            "practice"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "unlock_summary": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "tier_slug",
        +                        "display_name",
        +                        "price_local",
        +                        "currency",
        +                        "billing",
        +                        "unlock_summary"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "current_tier": {
        +                    "const": "free",
        +                    "default": "free",
        +                    "type": "string"
        +                  },
        +                  "pass_credit": {
        +                    "anyOf": [
        +                      {
        +                        "additionalProperties": false,
        +                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        +                        "properties": {
        +                          "amount_local": {
        +                            "type": "number"
        +                          },
        +                          "applies_to": {
        +                            "const": "solo_first_month",
        +                            "default": "solo_first_month",
        +                            "type": "string"
        +                          },
        +                          "currency": {
        +                            "type": "string"
        +                          },
        +                          "redeemable_until": {
        +                            "type": "string"
        +                          }
        +                        },
        +                        "required": [
        +                          "amount_local",
        +                          "currency",
        +                          "redeemable_until"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "pricing_url": {
        +                    "default": "https://civilquants.com/pricing",
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "available_tiers"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tos_url": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "upgrade_hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "warranty_disclaimer": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          }
        +        },
        +        "required": [
        +          "request_id",
        +          "issued_at",
        +          "tier"
        +        ],
        +        "type": "object"
        +      },
        +      "data": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Schema § 1.1 — the typed payload returned inside `MCPResponse[ComputeResult]`.\n\nFree-tier responses omit `drawings` (the downloadable CAD artefact\npointers — the paid differentiator); the bridge enforces this. The\n`audit_trail` and the inline `drawing` preview are present on BOTH tiers\n(V1 ALIGN / 60th-fire D + C). `text_summary` is bounded to 2000 chars —\nkeeps the LLM-facing summary token-cheap and forces longer narrative into\nBoQ row descriptions where it belongs. `warnings` is the non-fatal\ngeometry advisory list (both tiers).",
        +            "properties": {
        +              "assembly_slug": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "audit_trail": {
        +                "anyOf": [
        +                  {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.7 — paid-tier audit-trail entry.\n\nOne entry per BoQ row; `boq_row_index` ties to the row position in\n`ComputeResult.boq_rows`. `derivation` is the human-readable formula\nwalk-through; `formula` is the optional formal expression.",
        +                      "properties": {
        +                        "boq_row_index": {
        +                          "minimum": 0,
        +                          "type": "integer"
        +                        },
        +                        "derivation": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "formula": {
        +                          "anyOf": [
        +                            {
        +                              "type": "string"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ],
        +                          "default": null
        +                        },
        +                        "id": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "parameters_referenced": {
        +                          "items": {
        +                            "type": "string"
        +                          },
        +                          "type": "array"
        +                        }
        +                      },
        +                      "required": [
        +                        "id",
        +                        "boq_row_index",
        +                        "derivation"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "boq_rows": {
        +                "items": {
        +                  "additionalProperties": false,
        +                  "description": "Schema § 1.3 — a single bill row in the requested standard's format.\n\n`description` is the non-verbatim functional description per spec § 13.9 /\n§ 15 invariant — NEVER reproduces a standard's verbatim clause text.\n`rate` / `amount` ship null because rates are commodity data the customer\nowns; the engine's job is the measurement, not the pricing.",
        +                  "properties": {
        +                    "amount": {
        +                      "anyOf": [
        +                        {
        +                          "type": "number"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "attribution": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "audit_id": {
        +                      "anyOf": [
        +                        {
        +                          "type": "string"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "description": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "quantity": {
        +                      "minimum": 0,
        +                      "type": "number"
        +                    },
        +                    "rate": {
        +                      "anyOf": [
        +                        {
        +                          "type": "number"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "unit": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "work_section": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    }
        +                  },
        +                  "required": [
        +                    "work_section",
        +                    "description",
        +                    "quantity",
        +                    "unit",
        +                    "attribution"
        +                  ],
        +                  "type": "object"
        +                },
        +                "type": "array"
        +              },
        +              "drawing": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": false,
        +                    "description": "Schema § 1.6a — inline server-rendered SVG preview of the geometry.\n\nThe MCP mirror of the web ``/compute`` response's ``drawing`` field\n(``api.schemas.compute.DrawingRef``): the same on-screen dimensioned\ndrawing both tiers see in the workspace, surfaced on the MCP compute\nresponse so a chat client can render it inline (60th-fire item C). This\nis the on-screen preview — present on BOTH tiers per the free/paid\nboundary; the downloadable CAD artefacts (DXF / dimensioned PDF) remain\nthe paid differentiator via the export tools.\n\nDefined here rather than importing ``DrawingRef`` because the web\n``schemas`` package imports back into this module (``schemas.render``),\nso reusing it would create an import cycle — the MCP wire contract keeps\nits own copy, the same pattern as ``BoQRow`` / ``DrawingReference``.",
        +                    "properties": {
        +                      "entity_count": {
        +                        "minimum": 0,
        +                        "type": "integer"
        +                      },
        +                      "svg_b64": {
        +                        "minLength": 1,
        +                        "type": "string"
        +                      },
        +                      "unit_of_drawing": {
        +                        "const": "m",
        +                        "default": "m",
        +                        "type": "string"
        +                      },
        +                      "viewbox_height": {
        +                        "exclusiveMinimum": 0,
        +                        "type": "number"
        +                      },
        +                      "viewbox_width": {
        +                        "exclusiveMinimum": 0,
        +                        "type": "number"
        +                      },
        +                      "viewbox_x": {
        +                        "type": "number"
        +                      },
        +                      "viewbox_y": {
        +                        "type": "number"
        +                      }
        +                    },
        +                    "required": [
        +                      "svg_b64",
        +                      "viewbox_x",
        +                      "viewbox_y",
        +                      "viewbox_width",
        +                      "viewbox_height",
        +                      "entity_count"
        +                    ],
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "drawings": {
        +                "anyOf": [
        +                  {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.6 — paid-tier drawing artefact pointer.\n\n`url` is an R2-signed URL; expiry is carried in `_meta.deliverables.expires_at`\non the envelope (not duplicated here). `layers` is DXF-only; PDF/SVG\ncallers omit it.",
        +                      "properties": {
        +                        "drawing_type": {
        +                          "enum": [
        +                            "section",
        +                            "plan",
        +                            "elevation",
        +                            "isometric",
        +                            "detail"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "format": {
        +                          "enum": [
        +                            "DXF",
        +                            "PDF",
        +                            "SVG"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "layers": {
        +                          "anyOf": [
        +                            {
        +                              "items": {
        +                                "type": "string"
        +                              },
        +                              "type": "array"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ],
        +                          "default": null
        +                        },
        +                        "scale": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "sheet_size": {
        +                          "enum": [
        +                            "A1",
        +                            "A2",
        +                            "A3",
        +                            "A4"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "url": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "drawing_type",
        +                        "format",
        +                        "url",
        +                        "sheet_size",
        +                        "scale"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "parameters_used": {
        +                "additionalProperties": false,
        +                "description": "Schema § 1.2 — the parameter snapshot the engine actually used.\n\nSplits user-supplied values from engine defaults so customers can see\nwhich numbers came from them and which the engine filled in. Every\ndefaulted parameter SHOULD have a corresponding entry in `assumptions`\n— the bridge layer enforces this when wrapping engine output.",
        +                "properties": {
        +                  "assumptions": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "engine_defaults": {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  "user_supplied": {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  }
        +                },
        +                "type": "object"
        +              },
        +              "standard": {
        +                "enum": [
        +                  "CESMM4",
        +                  "NRM2",
        +                  "SMM7",
        +                  "MMHW"
        +                ],
        +                "type": "string"
        +              },
        +              "text_summary": {
        +                "maxLength": 2000,
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "totals_summary": {
        +                "additionalProperties": false,
        +                "description": "Schema § 1.4 — totals_summary as a typed wrapper around the free-form dict.\n\nWire shape is a flat object (`{\"concrete_m3\": {...}, \"rebar_t\": {...}}`).\nWe model it as `RootModel`-equivalent via `model_config(extra=\"allow\")`\n+ a single `__root__`-style `entries` dict. Pydantic v2 recommends\n`RootModel` for free-form roots; using a wrapper class keeps the import\nsurface uniform with the rest of this module.",
        +                "properties": {
        +                  "entries": {
        +                    "additionalProperties": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.4 — single material/work-class total entry.",
        +                      "properties": {
        +                        "quantity": {
        +                          "minimum": 0,
        +                          "type": "number"
        +                        },
        +                        "unit": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "quantity",
        +                        "unit"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "object"
        +                  }
        +                },
        +                "type": "object"
        +              },
        +              "warnings": {
        +                "items": {
        +                  "additionalProperties": false,
        +                  "description": "Schema § 1.8 — a non-fatal geometry advisory (56th-fire T2).\n\nThe wire projection of the engine's `core.GeometryWarning`. Advisory only:\na warning NEVER changes a measured quantity — it flags geometry that is\nvalid but likely a mistake (e.g. a stale dependent-height default). Present\non BOTH tiers — a correctness/safety signal, not a paid feature.",
        +                  "properties": {
        +                    "affected_params": {
        +                      "items": {
        +                        "type": "string"
        +                      },
        +                      "type": "array"
        +                    },
        +                    "code": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "detail": {
        +                      "additionalProperties": {
        +                        "type": "number"
        +                      },
        +                      "type": "object"
        +                    },
        +                    "message": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "severity": {
        +                      "enum": [
        +                        "info",
        +                        "advisory",
        +                        "caution"
        +                      ],
        +                      "type": "string"
        +                    }
        +                  },
        +                  "required": [
        +                    "code",
        +                    "severity",
        +                    "message"
        +                  ],
        +                  "type": "object"
        +                },
        +                "type": "array"
        +              }
        +            },
        +            "required": [
        +              "assembly_slug",
        +              "standard",
        +              "parameters_used",
        +              "boq_rows",
        +              "totals_summary",
        +              "text_summary"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      },
        +      "error": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        +            "properties": {
        +              "code": {
        +                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        +                "enum": [
        +                  "RATE_LIMIT_EXCEEDED",
        +                  "TIER_INSUFFICIENT",
        +                  "INVALID_INPUT",
        +                  "SCHEMA_VERSION_MISMATCH",
        +                  "SCHEMA_INVARIANT_VIOLATION",
        +                  "UPSTREAM_TIMEOUT",
        +                  "BACKEND_FAILURE",
        +                  "IP_BLOCKED",
        +                  "RESOURCE_NOT_FOUND",
        +                  "RENDER_FAILURE",
        +                  "OCR_LOW_CONFIDENCE",
        +                  "MANUAL_REVIEW_REQUIRED",
        +                  "ACCEPTANCE_REQUIRED",
        +                  "INVALID_TOKEN"
        +                ],
        +                "type": "string"
        +              },
        +              "details": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "message": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "recoverable": {
        +                "type": "boolean"
        +              },
        +              "retry_after_seconds": {
        +                "anyOf": [
        +                  {
        +                    "minimum": 0,
        +                    "type": "integer"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              }
        +            },
        +            "required": [
        +              "code",
        +              "message",
        +              "recoverable"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      }
        +    },
        +    "required": [
        +      "_meta"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "_meta": {
        +        "additionalProperties": false,
        +        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        +        "properties": {
        +          "deliverables": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        +                "properties": {
        +                  "docx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "dxf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "expires_at": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  },
        +                  "pdf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "xlsx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "expires_at"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "document_id": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "issued_at": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "rate_limit_remaining": {
        +            "anyOf": [
        +              {
        +                "minimum": 0,
        +                "type": "integer"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "request_id": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "schema_version": {
        +            "const": "1.0.0",
        +            "default": "1.0.0",
        +            "type": "string"
        +          },
        +          "scope_boundary": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        +                "properties": {
        +                  "not_in_scope": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "produced": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "recommended_companions": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "type": "string"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "produced",
        +                  "not_in_scope"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tier": {
        +            "enum": [
        +              "free",
        +              "paid"
        +            ],
        +            "type": "string"
        +          },
        +          "tier_upgrade": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        +                "properties": {
        +                  "available_tiers": {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        +                      "properties": {
        +                        "billing": {
        +                          "enum": [
        +                            "one_off",
        +                            "monthly",
        +                            "annual"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "currency": {
        +                          "enum": [
        +                            "GBP",
        +                            "SGD",
        +                            "EUR",
        +                            "USD",
        +                            "CAD",
        +                            "AUD",
        +                            "NZD",
        +                            "MYR"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "display_name": {
        +                          "type": "string"
        +                        },
        +                        "price_local": {
        +                          "type": "number"
        +                        },
        +                        "tier_slug": {
        +                          "enum": [
        +                            "7_day_pass",
        +                            "solo",
        +                            "studio",
        +                            "practice"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "unlock_summary": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "tier_slug",
        +                        "display_name",
        +                        "price_local",
        +                        "currency",
        +                        "billing",
        +                        "unlock_summary"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "current_tier": {
        +                    "const": "free",
        +                    "default": "free",
        +                    "type": "string"
        +                  },
        +                  "pass_credit": {
        +                    "anyOf": [
        +                      {
        +                        "additionalProperties": false,
        +                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        +                        "properties": {
        +                          "amount_local": {
        +                            "type": "number"
        +                          },
        +                          "applies_to": {
        +                            "const": "solo_first_month",
        +                            "default": "solo_first_month",
        +                            "type": "string"
        +                          },
        +                          "currency": {
        +                            "type": "string"
        +                          },
        +                          "redeemable_until": {
        +                            "type": "string"
        +                          }
        +                        },
        +                        "required": [
        +                          "amount_local",
        +                          "currency",
        +                          "redeemable_until"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "pricing_url": {
        +                    "default": "https://civilquants.com/pricing",
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "available_tiers"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tos_url": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "upgrade_hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "warranty_disclaimer": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          }
        +        },
        +        "required": [
        +          "request_id",
        +          "issued_at",
        +          "tier"
        +        ],
        +        "type": "object"
        +      },
        +      "data": {
        +        "default": null,
        +        "title": "Data"
        +      },
        +      "error": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        +            "properties": {
        +              "code": {
        +                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        +                "enum": [
        +                  "RATE_LIMIT_EXCEEDED",
        +                  "TIER_INSUFFICIENT",
        +                  "INVALID_INPUT",
        +                  "SCHEMA_VERSION_MISMATCH",
        +                  "SCHEMA_INVARIANT_VIOLATION",
        +                  "UPSTREAM_TIMEOUT",
        +                  "BACKEND_FAILURE",
        +                  "IP_BLOCKED",
        +                  "RESOURCE_NOT_FOUND",
        +                  "RENDER_FAILURE",
        +                  "OCR_LOW_CONFIDENCE",
        +                  "MANUAL_REVIEW_REQUIRED",
        +                  "ACCEPTANCE_REQUIRED",
        +                  "INVALID_TOKEN"
        +                ],
        +                "type": "string"
        +              },
        +              "details": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "message": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "recoverable": {
        +                "type": "boolean"
        +              },
        +              "retry_after_seconds": {
        +                "anyOf": [
        +                  {
        +                    "minimum": 0,
        +                    "type": "integer"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              }
        +            },
        +            "required": [
        +              "code",
        +              "message",
        +              "recoverable"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      }
        +    },
        +    "required": [
        +      "_meta"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedcompute_end_area_earthworks1 field changed
      • changedOutput schema / properties / result / anyOf
        Previous value: -[
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "_meta": {
        -        "additionalProperties": false,
        -        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        -        "properties": {
        -          "deliverables": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        -                "properties": {
        -                  "docx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "dxf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "expires_at": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  },
        -                  "pdf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "xlsx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "expires_at"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "document_id": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "issued_at": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "rate_limit_remaining": {
        -            "anyOf": [
        -              {
        -                "minimum": 0,
        -                "type": "integer"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "request_id": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "schema_version": {
        -            "const": "1.0.0",
        -            "default": "1.0.0",
        -            "type": "string"
        -          },
        -          "scope_boundary": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        -                "properties": {
        -                  "not_in_scope": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "produced": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "recommended_companions": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "type": "string"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "produced",
        -                  "not_in_scope"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tier": {
        -            "enum": [
        -              "free",
        -              "paid"
        -            ],
        -            "type": "string"
        -          },
        -          "tier_upgrade": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        -                "properties": {
        -                  "available_tiers": {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        -                      "properties": {
        -                        "billing": {
        -                          "enum": [
        -                            "one_off",
        -                            "monthly",
        -                            "annual"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "currency": {
        -                          "enum": [
        -                            "GBP",
        -                            "SGD",
        -                            "EUR",
        -                            "USD",
        -                            "CAD",
        -                            "AUD",
        -                            "NZD",
        -                            "MYR"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "display_name": {
        -                          "type": "string"
        -                        },
        -                        "price_local": {
        -                          "type": "number"
        -                        },
        -                        "tier_slug": {
        -                          "enum": [
        -                            "7_day_pass",
        -                            "solo",
        -                            "studio",
        -                            "practice"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "unlock_summary": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "tier_slug",
        -                        "display_name",
        -                        "price_local",
        -                        "currency",
        -                        "billing",
        -                        "unlock_summary"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "current_tier": {
        -                    "const": "free",
        -                    "default": "free",
        -                    "type": "string"
        -                  },
        -                  "pass_credit": {
        -                    "anyOf": [
        -                      {
        -                        "additionalProperties": false,
        -                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        -                        "properties": {
        -                          "amount_local": {
        -                            "type": "number"
        -                          },
        -                          "applies_to": {
        -                            "const": "solo_first_month",
        -                            "default": "solo_first_month",
        -                            "type": "string"
        -                          },
        -                          "currency": {
        -                            "type": "string"
        -                          },
        -                          "redeemable_until": {
        -                            "type": "string"
        -                          }
        -                        },
        -                        "required": [
        -                          "amount_local",
        -                          "currency",
        -                          "redeemable_until"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "pricing_url": {
        -                    "default": "https://civilquants.com/pricing",
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "available_tiers"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tos_url": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "upgrade_hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "warranty_disclaimer": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          }
        -        },
        -        "required": [
        -          "request_id",
        -          "issued_at",
        -          "tier"
        -        ],
        -        "type": "object"
        -      },
        -      "data": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Schema § 1.1 — the typed payload returned inside `MCPResponse[ComputeResult]`.\n\nFree-tier responses omit `drawings` (the downloadable CAD artefact\npointers — the paid differentiator); the bridge enforces this. The\n`audit_trail` and the inline `drawing` preview are present on BOTH tiers\n(V1 ALIGN / 60th-fire D + C). `text_summary` is bounded to 2000 chars —\nkeeps the LLM-facing summary token-cheap and forces longer narrative into\nBoQ row descriptions where it belongs. `warnings` is the non-fatal\ngeometry advisory list (both tiers).",
        -            "properties": {
        -              "assembly_slug": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "audit_trail": {
        -                "anyOf": [
        -                  {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.7 — paid-tier audit-trail entry.\n\nOne entry per BoQ row; `boq_row_index` ties to the row position in\n`ComputeResult.boq_rows`. `derivation` is the human-readable formula\nwalk-through; `formula` is the optional formal expression.",
        -                      "properties": {
        -                        "boq_row_index": {
        -                          "minimum": 0,
        -                          "type": "integer"
        -                        },
        -                        "derivation": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "formula": {
        -                          "anyOf": [
        -                            {
        -                              "type": "string"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ],
        -                          "default": null
        -                        },
        -                        "id": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "parameters_referenced": {
        -                          "items": {
        -                            "type": "string"
        -                          },
        -                          "type": "array"
        -                        }
        -                      },
        -                      "required": [
        -                        "id",
        -                        "boq_row_index",
        -                        "derivation"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "boq_rows": {
        -                "items": {
        -                  "additionalProperties": false,
        -                  "description": "Schema § 1.3 — a single bill row in the requested standard's format.\n\n`description` is the non-verbatim functional description per spec § 13.9 /\n§ 15 invariant — NEVER reproduces a standard's verbatim clause text.\n`rate` / `amount` ship null because rates are commodity data the customer\nowns; the engine's job is the measurement, not the pricing.",
        -                  "properties": {
        -                    "amount": {
        -                      "anyOf": [
        -                        {
        -                          "type": "number"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "attribution": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "audit_id": {
        -                      "anyOf": [
        -                        {
        -                          "type": "string"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "description": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "quantity": {
        -                      "minimum": 0,
        -                      "type": "number"
        -                    },
        -                    "rate": {
        -                      "anyOf": [
        -                        {
        -                          "type": "number"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "unit": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "work_section": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    }
        -                  },
        -                  "required": [
        -                    "work_section",
        -                    "description",
        -                    "quantity",
        -                    "unit",
        -                    "attribution"
        -                  ],
        -                  "type": "object"
        -                },
        -                "type": "array"
        -              },
        -              "drawing": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": false,
        -                    "description": "Schema § 1.6a — inline server-rendered SVG preview of the geometry.\n\nThe MCP mirror of the web ``/compute`` response's ``drawing`` field\n(``api.schemas.compute.DrawingRef``): the same on-screen dimensioned\ndrawing both tiers see in the workspace, surfaced on the MCP compute\nresponse so a chat client can render it inline (60th-fire item C). This\nis the on-screen preview — present on BOTH tiers per the free/paid\nboundary; the downloadable CAD artefacts (DXF / dimensioned PDF) remain\nthe paid differentiator via the export tools.\n\nDefined here rather than importing ``DrawingRef`` because the web\n``schemas`` package imports back into this module (``schemas.render``),\nso reusing it would create an import cycle — the MCP wire contract keeps\nits own copy, the same pattern as ``BoQRow`` / ``DrawingReference``.",
        -                    "properties": {
        -                      "entity_count": {
        -                        "minimum": 0,
        -                        "type": "integer"
        -                      },
        -                      "svg_b64": {
        -                        "minLength": 1,
        -                        "type": "string"
        -                      },
        -                      "unit_of_drawing": {
        -                        "const": "m",
        -                        "default": "m",
        -                        "type": "string"
        -                      },
        -                      "viewbox_height": {
        -                        "exclusiveMinimum": 0,
        -                        "type": "number"
        -                      },
        -                      "viewbox_width": {
        -                        "exclusiveMinimum": 0,
        -                        "type": "number"
        -                      },
        -                      "viewbox_x": {
        -                        "type": "number"
        -                      },
        -                      "viewbox_y": {
        -                        "type": "number"
        -                      }
        -                    },
        -                    "required": [
        -                      "svg_b64",
        -                      "viewbox_x",
        -                      "viewbox_y",
        -                      "viewbox_width",
        -                      "viewbox_height",
        -                      "entity_count"
        -                    ],
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "drawings": {
        -                "anyOf": [
        -                  {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.6 — paid-tier drawing artefact pointer.\n\n`url` is an R2-signed URL; expiry is carried in `_meta.deliverables.expires_at`\non the envelope (not duplicated here). `layers` is DXF-only; PDF/SVG\ncallers omit it.",
        -                      "properties": {
        -                        "drawing_type": {
        -                          "enum": [
        -                            "section",
        -                            "plan",
        -                            "elevation",
        -                            "isometric",
        -                            "detail"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "format": {
        -                          "enum": [
        -                            "DXF",
        -                            "PDF",
        -                            "SVG"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "layers": {
        -                          "anyOf": [
        -                            {
        -                              "items": {
        -                                "type": "string"
        -                              },
        -                              "type": "array"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ],
        -                          "default": null
        -                        },
        -                        "scale": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "sheet_size": {
        -                          "enum": [
        -                            "A1",
        -                            "A2",
        -                            "A3",
        -                            "A4"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "url": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "drawing_type",
        -                        "format",
        -                        "url",
        -                        "sheet_size",
        -                        "scale"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "parameters_used": {
        -                "additionalProperties": false,
        -                "description": "Schema § 1.2 — the parameter snapshot the engine actually used.\n\nSplits user-supplied values from engine defaults so customers can see\nwhich numbers came from them and which the engine filled in. Every\ndefaulted parameter SHOULD have a corresponding entry in `assumptions`\n— the bridge layer enforces this when wrapping engine output.",
        -                "properties": {
        -                  "assumptions": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "engine_defaults": {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  "resolved_from_description": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "additionalProperties": false,
        -                          "description": "Schema § 1.2 — a parameter resolved by the forgiving-input layer.\n\nPopulated by the Track B-Forgiving Haiku-4.5 resolution pass; until that\nlayer lands, instances are constructed only by tests. `source` distinguishes\nthe resolution path so customers can audit which fields were inferred.",
        -                          "properties": {
        -                            "confidence": {
        -                              "anyOf": [
        -                                {
        -                                  "enum": [
        -                                    "high",
        -                                    "medium",
        -                                    "low"
        -                                  ],
        -                                  "type": "string"
        -                                },
        -                                {
        -                                  "type": "null"
        -                                }
        -                              ],
        -                              "default": null
        -                            },
        -                            "field_name": {
        -                              "minLength": 1,
        -                              "type": "string"
        -                            },
        -                            "resolved_value": {},
        -                            "source": {
        -                              "enum": [
        -                                "description_field",
        -                                "haiku_resolution",
        -                                "engine_default"
        -                              ],
        -                              "type": "string"
        -                            }
        -                          },
        -                          "required": [
        -                            "field_name",
        -                            "resolved_value",
        -                            "source"
        -                          ],
        -                          "type": "object"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "user_supplied": {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  }
        -                },
        -                "type": "object"
        -              },
        -              "standard": {
        -                "enum": [
        -                  "CESMM4",
        -                  "NRM2",
        -                  "SMM7",
        -                  "MMHW"
        -                ],
        -                "type": "string"
        -              },
        -              "text_summary": {
        -                "maxLength": 2000,
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "totals_summary": {
        -                "additionalProperties": false,
        -                "description": "Schema § 1.4 — totals_summary as a typed wrapper around the free-form dict.\n\nWire shape is a flat object (`{\"concrete_m3\": {...}, \"rebar_t\": {...}}`).\nWe model it as `RootModel`-equivalent via `model_config(extra=\"allow\")`\n+ a single `__root__`-style `entries` dict. Pydantic v2 recommends\n`RootModel` for free-form roots; using a wrapper class keeps the import\nsurface uniform with the rest of this module.",
        -                "properties": {
        -                  "entries": {
        -                    "additionalProperties": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.4 — single material/work-class total entry.",
        -                      "properties": {
        -                        "quantity": {
        -                          "minimum": 0,
        -                          "type": "number"
        -                        },
        -                        "unit": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "quantity",
        -                        "unit"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "object"
        -                  }
        -                },
        -                "type": "object"
        -              },
        -              "warnings": {
        -                "items": {
        -                  "additionalProperties": false,
        -                  "description": "Schema § 1.8 — a non-fatal geometry advisory (56th-fire T2).\n\nThe wire projection of the engine's `core.GeometryWarning`. Advisory only:\na warning NEVER changes a measured quantity — it flags geometry that is\nvalid but likely a mistake (e.g. a stale dependent-height default). Present\non BOTH tiers — a correctness/safety signal, not a paid feature.",
        -                  "properties": {
        -                    "affected_params": {
        -                      "items": {
        -                        "type": "string"
        -                      },
        -                      "type": "array"
        -                    },
        -                    "code": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "detail": {
        -                      "additionalProperties": {
        -                        "type": "number"
        -                      },
        -                      "type": "object"
        -                    },
        -                    "message": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "severity": {
        -                      "enum": [
        -                        "info",
        -                        "advisory",
        -                        "caution"
        -                      ],
        -                      "type": "string"
        -                    }
        -                  },
        -                  "required": [
        -                    "code",
        -                    "severity",
        -                    "message"
        -                  ],
        -                  "type": "object"
        -                },
        -                "type": "array"
        -              }
        -            },
        -            "required": [
        -              "assembly_slug",
        -              "standard",
        -              "parameters_used",
        -              "boq_rows",
        -              "totals_summary",
        -              "text_summary"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      },
        -      "error": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        -            "properties": {
        -              "code": {
        -                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        -                "enum": [
        -                  "RATE_LIMIT_EXCEEDED",
        -                  "TIER_INSUFFICIENT",
        -                  "INVALID_INPUT",
        -                  "SCHEMA_VERSION_MISMATCH",
        -                  "SCHEMA_INVARIANT_VIOLATION",
        -                  "UPSTREAM_TIMEOUT",
        -                  "BACKEND_FAILURE",
        -                  "IP_BLOCKED",
        -                  "RESOURCE_NOT_FOUND",
        -                  "RENDER_FAILURE",
        -                  "OCR_LOW_CONFIDENCE",
        -                  "MANUAL_REVIEW_REQUIRED",
        -                  "ACCEPTANCE_REQUIRED",
        -                  "INVALID_TOKEN"
        -                ],
        -                "type": "string"
        -              },
        -              "details": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "message": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "recoverable": {
        -                "type": "boolean"
        -              },
        -              "retry_after_seconds": {
        -                "anyOf": [
        -                  {
        -                    "minimum": 0,
        -                    "type": "integer"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              }
        -            },
        -            "required": [
        -              "code",
        -              "message",
        -              "recoverable"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      }
        -    },
        -    "required": [
        -      "_meta"
        -    ],
        -    "type": "object"
        -  },
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "_meta": {
        -        "additionalProperties": false,
        -        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        -        "properties": {
        -          "deliverables": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        -                "properties": {
        -                  "docx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "dxf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "expires_at": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  },
        -                  "pdf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "xlsx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "expires_at"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "document_id": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "issued_at": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "rate_limit_remaining": {
        -            "anyOf": [
        -              {
        -                "minimum": 0,
        -                "type": "integer"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "request_id": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "schema_version": {
        -            "const": "1.0.0",
        -            "default": "1.0.0",
        -            "type": "string"
        -          },
        -          "scope_boundary": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        -                "properties": {
        -                  "not_in_scope": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "produced": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "recommended_companions": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "type": "string"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "produced",
        -                  "not_in_scope"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tier": {
        -            "enum": [
        -              "free",
        -              "paid"
        -            ],
        -            "type": "string"
        -          },
        -          "tier_upgrade": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        -                "properties": {
        -                  "available_tiers": {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        -                      "properties": {
        -                        "billing": {
        -                          "enum": [
        -                            "one_off",
        -                            "monthly",
        -                            "annual"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "currency": {
        -                          "enum": [
        -                            "GBP",
        -                            "SGD",
        -                            "EUR",
        -                            "USD",
        -                            "CAD",
        -                            "AUD",
        -                            "NZD",
        -                            "MYR"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "display_name": {
        -                          "type": "string"
        -                        },
        -                        "price_local": {
        -                          "type": "number"
        -                        },
        -                        "tier_slug": {
        -                          "enum": [
        -                            "7_day_pass",
        -                            "solo",
        -                            "studio",
        -                            "practice"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "unlock_summary": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "tier_slug",
        -                        "display_name",
        -                        "price_local",
        -                        "currency",
        -                        "billing",
        -                        "unlock_summary"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "current_tier": {
        -                    "const": "free",
        -                    "default": "free",
        -                    "type": "string"
        -                  },
        -                  "pass_credit": {
        -                    "anyOf": [
        -                      {
        -                        "additionalProperties": false,
        -                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        -                        "properties": {
        -                          "amount_local": {
        -                            "type": "number"
        -                          },
        -                          "applies_to": {
        -                            "const": "solo_first_month",
        -                            "default": "solo_first_month",
        -                            "type": "string"
        -                          },
        -                          "currency": {
        -                            "type": "string"
        -                          },
        -                          "redeemable_until": {
        -                            "type": "string"
        -                          }
        -                        },
        -                        "required": [
        -                          "amount_local",
        -                          "currency",
        -                          "redeemable_until"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "pricing_url": {
        -                    "default": "https://civilquants.com/pricing",
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "available_tiers"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tos_url": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "upgrade_hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "warranty_disclaimer": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          }
        -        },
        -        "required": [
        -          "request_id",
        -          "issued_at",
        -          "tier"
        -        ],
        -        "type": "object"
        -      },
        -      "data": {
        -        "default": null,
        -        "title": "Data"
        -      },
        -      "error": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        -            "properties": {
        -              "code": {
        -                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        -                "enum": [
        -                  "RATE_LIMIT_EXCEEDED",
        -                  "TIER_INSUFFICIENT",
        -                  "INVALID_INPUT",
        -                  "SCHEMA_VERSION_MISMATCH",
        -                  "SCHEMA_INVARIANT_VIOLATION",
        -                  "UPSTREAM_TIMEOUT",
        -                  "BACKEND_FAILURE",
        -                  "IP_BLOCKED",
        -                  "RESOURCE_NOT_FOUND",
        -                  "RENDER_FAILURE",
        -                  "OCR_LOW_CONFIDENCE",
        -                  "MANUAL_REVIEW_REQUIRED",
        -                  "ACCEPTANCE_REQUIRED",
        -                  "INVALID_TOKEN"
        -                ],
        -                "type": "string"
        -              },
        -              "details": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "message": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "recoverable": {
        -                "type": "boolean"
        -              },
        -              "retry_after_seconds": {
        -                "anyOf": [
        -                  {
        -                    "minimum": 0,
        -                    "type": "integer"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              }
        -            },
        -            "required": [
        -              "code",
        -              "message",
        -              "recoverable"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      }
        -    },
        -    "required": [
        -      "_meta"
        -    ],
        -    "type": "object"
        -  }
        -]New value: +[
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "_meta": {
        +        "additionalProperties": false,
        +        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        +        "properties": {
        +          "deliverables": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        +                "properties": {
        +                  "docx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "dxf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "expires_at": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  },
        +                  "pdf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "xlsx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "expires_at"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "document_id": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "issued_at": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "rate_limit_remaining": {
        +            "anyOf": [
        +              {
        +                "minimum": 0,
        +                "type": "integer"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "request_id": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "schema_version": {
        +            "const": "1.0.0",
        +            "default": "1.0.0",
        +            "type": "string"
        +          },
        +          "scope_boundary": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        +                "properties": {
        +                  "not_in_scope": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "produced": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "recommended_companions": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "type": "string"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "produced",
        +                  "not_in_scope"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tier": {
        +            "enum": [
        +              "free",
        +              "paid"
        +            ],
        +            "type": "string"
        +          },
        +          "tier_upgrade": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        +                "properties": {
        +                  "available_tiers": {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        +                      "properties": {
        +                        "billing": {
        +                          "enum": [
        +                            "one_off",
        +                            "monthly",
        +                            "annual"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "currency": {
        +                          "enum": [
        +                            "GBP",
        +                            "SGD",
        +                            "EUR",
        +                            "USD",
        +                            "CAD",
        +                            "AUD",
        +                            "NZD",
        +                            "MYR"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "display_name": {
        +                          "type": "string"
        +                        },
        +                        "price_local": {
        +                          "type": "number"
        +                        },
        +                        "tier_slug": {
        +                          "enum": [
        +                            "7_day_pass",
        +                            "solo",
        +                            "studio",
        +                            "practice"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "unlock_summary": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "tier_slug",
        +                        "display_name",
        +                        "price_local",
        +                        "currency",
        +                        "billing",
        +                        "unlock_summary"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "current_tier": {
        +                    "const": "free",
        +                    "default": "free",
        +                    "type": "string"
        +                  },
        +                  "pass_credit": {
        +                    "anyOf": [
        +                      {
        +                        "additionalProperties": false,
        +                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        +                        "properties": {
        +                          "amount_local": {
        +                            "type": "number"
        +                          },
        +                          "applies_to": {
        +                            "const": "solo_first_month",
        +                            "default": "solo_first_month",
        +                            "type": "string"
        +                          },
        +                          "currency": {
        +                            "type": "string"
        +                          },
        +                          "redeemable_until": {
        +                            "type": "string"
        +                          }
        +                        },
        +                        "required": [
        +                          "amount_local",
        +                          "currency",
        +                          "redeemable_until"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "pricing_url": {
        +                    "default": "https://civilquants.com/pricing",
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "available_tiers"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tos_url": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "upgrade_hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "warranty_disclaimer": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          }
        +        },
        +        "required": [
        +          "request_id",
        +          "issued_at",
        +          "tier"
        +        ],
        +        "type": "object"
        +      },
        +      "data": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Schema § 1.1 — the typed payload returned inside `MCPResponse[ComputeResult]`.\n\nFree-tier responses omit `drawings` (the downloadable CAD artefact\npointers — the paid differentiator); the bridge enforces this. The\n`audit_trail` and the inline `drawing` preview are present on BOTH tiers\n(V1 ALIGN / 60th-fire D + C). `text_summary` is bounded to 2000 chars —\nkeeps the LLM-facing summary token-cheap and forces longer narrative into\nBoQ row descriptions where it belongs. `warnings` is the non-fatal\ngeometry advisory list (both tiers).",
        +            "properties": {
        +              "assembly_slug": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "audit_trail": {
        +                "anyOf": [
        +                  {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.7 — paid-tier audit-trail entry.\n\nOne entry per BoQ row; `boq_row_index` ties to the row position in\n`ComputeResult.boq_rows`. `derivation` is the human-readable formula\nwalk-through; `formula` is the optional formal expression.",
        +                      "properties": {
        +                        "boq_row_index": {
        +                          "minimum": 0,
        +                          "type": "integer"
        +                        },
        +                        "derivation": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "formula": {
        +                          "anyOf": [
        +                            {
        +                              "type": "string"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ],
        +                          "default": null
        +                        },
        +                        "id": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "parameters_referenced": {
        +                          "items": {
        +                            "type": "string"
        +                          },
        +                          "type": "array"
        +                        }
        +                      },
        +                      "required": [
        +                        "id",
        +                        "boq_row_index",
        +                        "derivation"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "boq_rows": {
        +                "items": {
        +                  "additionalProperties": false,
        +                  "description": "Schema § 1.3 — a single bill row in the requested standard's format.\n\n`description` is the non-verbatim functional description per spec § 13.9 /\n§ 15 invariant — NEVER reproduces a standard's verbatim clause text.\n`rate` / `amount` ship null because rates are commodity data the customer\nowns; the engine's job is the measurement, not the pricing.",
        +                  "properties": {
        +                    "amount": {
        +                      "anyOf": [
        +                        {
        +                          "type": "number"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "attribution": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "audit_id": {
        +                      "anyOf": [
        +                        {
        +                          "type": "string"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "description": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "quantity": {
        +                      "minimum": 0,
        +                      "type": "number"
        +                    },
        +                    "rate": {
        +                      "anyOf": [
        +                        {
        +                          "type": "number"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "unit": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "work_section": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    }
        +                  },
        +                  "required": [
        +                    "work_section",
        +                    "description",
        +                    "quantity",
        +                    "unit",
        +                    "attribution"
        +                  ],
        +                  "type": "object"
        +                },
        +                "type": "array"
        +              },
        +              "drawing": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": false,
        +                    "description": "Schema § 1.6a — inline server-rendered SVG preview of the geometry.\n\nThe MCP mirror of the web ``/compute`` response's ``drawing`` field\n(``api.schemas.compute.DrawingRef``): the same on-screen dimensioned\ndrawing both tiers see in the workspace, surfaced on the MCP compute\nresponse so a chat client can render it inline (60th-fire item C). This\nis the on-screen preview — present on BOTH tiers per the free/paid\nboundary; the downloadable CAD artefacts (DXF / dimensioned PDF) remain\nthe paid differentiator via the export tools.\n\nDefined here rather than importing ``DrawingRef`` because the web\n``schemas`` package imports back into this module (``schemas.render``),\nso reusing it would create an import cycle — the MCP wire contract keeps\nits own copy, the same pattern as ``BoQRow`` / ``DrawingReference``.",
        +                    "properties": {
        +                      "entity_count": {
        +                        "minimum": 0,
        +                        "type": "integer"
        +                      },
        +                      "svg_b64": {
        +                        "minLength": 1,
        +                        "type": "string"
        +                      },
        +                      "unit_of_drawing": {
        +                        "const": "m",
        +                        "default": "m",
        +                        "type": "string"
        +                      },
        +                      "viewbox_height": {
        +                        "exclusiveMinimum": 0,
        +                        "type": "number"
        +                      },
        +                      "viewbox_width": {
        +                        "exclusiveMinimum": 0,
        +                        "type": "number"
        +                      },
        +                      "viewbox_x": {
        +                        "type": "number"
        +                      },
        +                      "viewbox_y": {
        +                        "type": "number"
        +                      }
        +                    },
        +                    "required": [
        +                      "svg_b64",
        +                      "viewbox_x",
        +                      "viewbox_y",
        +                      "viewbox_width",
        +                      "viewbox_height",
        +                      "entity_count"
        +                    ],
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "drawings": {
        +                "anyOf": [
        +                  {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.6 — paid-tier drawing artefact pointer.\n\n`url` is an R2-signed URL; expiry is carried in `_meta.deliverables.expires_at`\non the envelope (not duplicated here). `layers` is DXF-only; PDF/SVG\ncallers omit it.",
        +                      "properties": {
        +                        "drawing_type": {
        +                          "enum": [
        +                            "section",
        +                            "plan",
        +                            "elevation",
        +                            "isometric",
        +                            "detail"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "format": {
        +                          "enum": [
        +                            "DXF",
        +                            "PDF",
        +                            "SVG"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "layers": {
        +                          "anyOf": [
        +                            {
        +                              "items": {
        +                                "type": "string"
        +                              },
        +                              "type": "array"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ],
        +                          "default": null
        +                        },
        +                        "scale": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "sheet_size": {
        +                          "enum": [
        +                            "A1",
        +                            "A2",
        +                            "A3",
        +                            "A4"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "url": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "drawing_type",
        +                        "format",
        +                        "url",
        +                        "sheet_size",
        +                        "scale"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "parameters_used": {
        +                "additionalProperties": false,
        +                "description": "Schema § 1.2 — the parameter snapshot the engine actually used.\n\nSplits user-supplied values from engine defaults so customers can see\nwhich numbers came from them and which the engine filled in. Every\ndefaulted parameter SHOULD have a corresponding entry in `assumptions`\n— the bridge layer enforces this when wrapping engine output.",
        +                "properties": {
        +                  "assumptions": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "engine_defaults": {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  "user_supplied": {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  }
        +                },
        +                "type": "object"
        +              },
        +              "standard": {
        +                "enum": [
        +                  "CESMM4",
        +                  "NRM2",
        +                  "SMM7",
        +                  "MMHW"
        +                ],
        +                "type": "string"
        +              },
        +              "text_summary": {
        +                "maxLength": 2000,
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "totals_summary": {
        +                "additionalProperties": false,
        +                "description": "Schema § 1.4 — totals_summary as a typed wrapper around the free-form dict.\n\nWire shape is a flat object (`{\"concrete_m3\": {...}, \"rebar_t\": {...}}`).\nWe model it as `RootModel`-equivalent via `model_config(extra=\"allow\")`\n+ a single `__root__`-style `entries` dict. Pydantic v2 recommends\n`RootModel` for free-form roots; using a wrapper class keeps the import\nsurface uniform with the rest of this module.",
        +                "properties": {
        +                  "entries": {
        +                    "additionalProperties": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.4 — single material/work-class total entry.",
        +                      "properties": {
        +                        "quantity": {
        +                          "minimum": 0,
        +                          "type": "number"
        +                        },
        +                        "unit": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "quantity",
        +                        "unit"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "object"
        +                  }
        +                },
        +                "type": "object"
        +              },
        +              "warnings": {
        +                "items": {
        +                  "additionalProperties": false,
        +                  "description": "Schema § 1.8 — a non-fatal geometry advisory (56th-fire T2).\n\nThe wire projection of the engine's `core.GeometryWarning`. Advisory only:\na warning NEVER changes a measured quantity — it flags geometry that is\nvalid but likely a mistake (e.g. a stale dependent-height default). Present\non BOTH tiers — a correctness/safety signal, not a paid feature.",
        +                  "properties": {
        +                    "affected_params": {
        +                      "items": {
        +                        "type": "string"
        +                      },
        +                      "type": "array"
        +                    },
        +                    "code": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "detail": {
        +                      "additionalProperties": {
        +                        "type": "number"
        +                      },
        +                      "type": "object"
        +                    },
        +                    "message": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "severity": {
        +                      "enum": [
        +                        "info",
        +                        "advisory",
        +                        "caution"
        +                      ],
        +                      "type": "string"
        +                    }
        +                  },
        +                  "required": [
        +                    "code",
        +                    "severity",
        +                    "message"
        +                  ],
        +                  "type": "object"
        +                },
        +                "type": "array"
        +              }
        +            },
        +            "required": [
        +              "assembly_slug",
        +              "standard",
        +              "parameters_used",
        +              "boq_rows",
        +              "totals_summary",
        +              "text_summary"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      },
        +      "error": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        +            "properties": {
        +              "code": {
        +                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        +                "enum": [
        +                  "RATE_LIMIT_EXCEEDED",
        +                  "TIER_INSUFFICIENT",
        +                  "INVALID_INPUT",
        +                  "SCHEMA_VERSION_MISMATCH",
        +                  "SCHEMA_INVARIANT_VIOLATION",
        +                  "UPSTREAM_TIMEOUT",
        +                  "BACKEND_FAILURE",
        +                  "IP_BLOCKED",
        +                  "RESOURCE_NOT_FOUND",
        +                  "RENDER_FAILURE",
        +                  "OCR_LOW_CONFIDENCE",
        +                  "MANUAL_REVIEW_REQUIRED",
        +                  "ACCEPTANCE_REQUIRED",
        +                  "INVALID_TOKEN"
        +                ],
        +                "type": "string"
        +              },
        +              "details": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "message": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "recoverable": {
        +                "type": "boolean"
        +              },
        +              "retry_after_seconds": {
        +                "anyOf": [
        +                  {
        +                    "minimum": 0,
        +                    "type": "integer"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              }
        +            },
        +            "required": [
        +              "code",
        +              "message",
        +              "recoverable"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      }
        +    },
        +    "required": [
        +      "_meta"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "_meta": {
        +        "additionalProperties": false,
        +        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        +        "properties": {
        +          "deliverables": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        +                "properties": {
        +                  "docx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "dxf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "expires_at": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  },
        +                  "pdf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "xlsx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "expires_at"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "document_id": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "issued_at": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "rate_limit_remaining": {
        +            "anyOf": [
        +              {
        +                "minimum": 0,
        +                "type": "integer"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "request_id": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "schema_version": {
        +            "const": "1.0.0",
        +            "default": "1.0.0",
        +            "type": "string"
        +          },
        +          "scope_boundary": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        +                "properties": {
        +                  "not_in_scope": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "produced": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "recommended_companions": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "type": "string"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "produced",
        +                  "not_in_scope"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tier": {
        +            "enum": [
        +              "free",
        +              "paid"
        +            ],
        +            "type": "string"
        +          },
        +          "tier_upgrade": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        +                "properties": {
        +                  "available_tiers": {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        +                      "properties": {
        +                        "billing": {
        +                          "enum": [
        +                            "one_off",
        +                            "monthly",
        +                            "annual"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "currency": {
        +                          "enum": [
        +                            "GBP",
        +                            "SGD",
        +                            "EUR",
        +                            "USD",
        +                            "CAD",
        +                            "AUD",
        +                            "NZD",
        +                            "MYR"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "display_name": {
        +                          "type": "string"
        +                        },
        +                        "price_local": {
        +                          "type": "number"
        +                        },
        +                        "tier_slug": {
        +                          "enum": [
        +                            "7_day_pass",
        +                            "solo",
        +                            "studio",
        +                            "practice"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "unlock_summary": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "tier_slug",
        +                        "display_name",
        +                        "price_local",
        +                        "currency",
        +                        "billing",
        +                        "unlock_summary"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "current_tier": {
        +                    "const": "free",
        +                    "default": "free",
        +                    "type": "string"
        +                  },
        +                  "pass_credit": {
        +                    "anyOf": [
        +                      {
        +                        "additionalProperties": false,
        +                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        +                        "properties": {
        +                          "amount_local": {
        +                            "type": "number"
        +                          },
        +                          "applies_to": {
        +                            "const": "solo_first_month",
        +                            "default": "solo_first_month",
        +                            "type": "string"
        +                          },
        +                          "currency": {
        +                            "type": "string"
        +                          },
        +                          "redeemable_until": {
        +                            "type": "string"
        +                          }
        +                        },
        +                        "required": [
        +                          "amount_local",
        +                          "currency",
        +                          "redeemable_until"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "pricing_url": {
        +                    "default": "https://civilquants.com/pricing",
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "available_tiers"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tos_url": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "upgrade_hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "warranty_disclaimer": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          }
        +        },
        +        "required": [
        +          "request_id",
        +          "issued_at",
        +          "tier"
        +        ],
        +        "type": "object"
        +      },
        +      "data": {
        +        "default": null,
        +        "title": "Data"
        +      },
        +      "error": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        +            "properties": {
        +              "code": {
        +                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        +                "enum": [
        +                  "RATE_LIMIT_EXCEEDED",
        +                  "TIER_INSUFFICIENT",
        +                  "INVALID_INPUT",
        +                  "SCHEMA_VERSION_MISMATCH",
        +                  "SCHEMA_INVARIANT_VIOLATION",
        +                  "UPSTREAM_TIMEOUT",
        +                  "BACKEND_FAILURE",
        +                  "IP_BLOCKED",
        +                  "RESOURCE_NOT_FOUND",
        +                  "RENDER_FAILURE",
        +                  "OCR_LOW_CONFIDENCE",
        +                  "MANUAL_REVIEW_REQUIRED",
        +                  "ACCEPTANCE_REQUIRED",
        +                  "INVALID_TOKEN"
        +                ],
        +                "type": "string"
        +              },
        +              "details": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "message": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "recoverable": {
        +                "type": "boolean"
        +              },
        +              "retry_after_seconds": {
        +                "anyOf": [
        +                  {
        +                    "minimum": 0,
        +                    "type": "integer"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              }
        +            },
        +            "required": [
        +              "code",
        +              "message",
        +              "recoverable"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      }
        +    },
        +    "required": [
        +      "_meta"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedcompute_flexible_pavement1 field changed
      • changedOutput schema / properties / result / anyOf
        Previous value: -[
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "_meta": {
        -        "additionalProperties": false,
        -        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        -        "properties": {
        -          "deliverables": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        -                "properties": {
        -                  "docx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "dxf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "expires_at": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  },
        -                  "pdf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "xlsx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "expires_at"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "document_id": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "issued_at": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "rate_limit_remaining": {
        -            "anyOf": [
        -              {
        -                "minimum": 0,
        -                "type": "integer"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "request_id": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "schema_version": {
        -            "const": "1.0.0",
        -            "default": "1.0.0",
        -            "type": "string"
        -          },
        -          "scope_boundary": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        -                "properties": {
        -                  "not_in_scope": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "produced": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "recommended_companions": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "type": "string"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "produced",
        -                  "not_in_scope"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tier": {
        -            "enum": [
        -              "free",
        -              "paid"
        -            ],
        -            "type": "string"
        -          },
        -          "tier_upgrade": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        -                "properties": {
        -                  "available_tiers": {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        -                      "properties": {
        -                        "billing": {
        -                          "enum": [
        -                            "one_off",
        -                            "monthly",
        -                            "annual"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "currency": {
        -                          "enum": [
        -                            "GBP",
        -                            "SGD",
        -                            "EUR",
        -                            "USD",
        -                            "CAD",
        -                            "AUD",
        -                            "NZD",
        -                            "MYR"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "display_name": {
        -                          "type": "string"
        -                        },
        -                        "price_local": {
        -                          "type": "number"
        -                        },
        -                        "tier_slug": {
        -                          "enum": [
        -                            "7_day_pass",
        -                            "solo",
        -                            "studio",
        -                            "practice"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "unlock_summary": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "tier_slug",
        -                        "display_name",
        -                        "price_local",
        -                        "currency",
        -                        "billing",
        -                        "unlock_summary"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "current_tier": {
        -                    "const": "free",
        -                    "default": "free",
        -                    "type": "string"
        -                  },
        -                  "pass_credit": {
        -                    "anyOf": [
        -                      {
        -                        "additionalProperties": false,
        -                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        -                        "properties": {
        -                          "amount_local": {
        -                            "type": "number"
        -                          },
        -                          "applies_to": {
        -                            "const": "solo_first_month",
        -                            "default": "solo_first_month",
        -                            "type": "string"
        -                          },
        -                          "currency": {
        -                            "type": "string"
        -                          },
        -                          "redeemable_until": {
        -                            "type": "string"
        -                          }
        -                        },
        -                        "required": [
        -                          "amount_local",
        -                          "currency",
        -                          "redeemable_until"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "pricing_url": {
        -                    "default": "https://civilquants.com/pricing",
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "available_tiers"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tos_url": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "upgrade_hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "warranty_disclaimer": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          }
        -        },
        -        "required": [
        -          "request_id",
        -          "issued_at",
        -          "tier"
        -        ],
        -        "type": "object"
        -      },
        -      "data": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Schema § 1.1 — the typed payload returned inside `MCPResponse[ComputeResult]`.\n\nFree-tier responses omit `drawings` (the downloadable CAD artefact\npointers — the paid differentiator); the bridge enforces this. The\n`audit_trail` and the inline `drawing` preview are present on BOTH tiers\n(V1 ALIGN / 60th-fire D + C). `text_summary` is bounded to 2000 chars —\nkeeps the LLM-facing summary token-cheap and forces longer narrative into\nBoQ row descriptions where it belongs. `warnings` is the non-fatal\ngeometry advisory list (both tiers).",
        -            "properties": {
        -              "assembly_slug": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "audit_trail": {
        -                "anyOf": [
        -                  {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.7 — paid-tier audit-trail entry.\n\nOne entry per BoQ row; `boq_row_index` ties to the row position in\n`ComputeResult.boq_rows`. `derivation` is the human-readable formula\nwalk-through; `formula` is the optional formal expression.",
        -                      "properties": {
        -                        "boq_row_index": {
        -                          "minimum": 0,
        -                          "type": "integer"
        -                        },
        -                        "derivation": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "formula": {
        -                          "anyOf": [
        -                            {
        -                              "type": "string"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ],
        -                          "default": null
        -                        },
        -                        "id": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "parameters_referenced": {
        -                          "items": {
        -                            "type": "string"
        -                          },
        -                          "type": "array"
        -                        }
        -                      },
        -                      "required": [
        -                        "id",
        -                        "boq_row_index",
        -                        "derivation"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "boq_rows": {
        -                "items": {
        -                  "additionalProperties": false,
        -                  "description": "Schema § 1.3 — a single bill row in the requested standard's format.\n\n`description` is the non-verbatim functional description per spec § 13.9 /\n§ 15 invariant — NEVER reproduces a standard's verbatim clause text.\n`rate` / `amount` ship null because rates are commodity data the customer\nowns; the engine's job is the measurement, not the pricing.",
        -                  "properties": {
        -                    "amount": {
        -                      "anyOf": [
        -                        {
        -                          "type": "number"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "attribution": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "audit_id": {
        -                      "anyOf": [
        -                        {
        -                          "type": "string"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "description": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "quantity": {
        -                      "minimum": 0,
        -                      "type": "number"
        -                    },
        -                    "rate": {
        -                      "anyOf": [
        -                        {
        -                          "type": "number"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "unit": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "work_section": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    }
        -                  },
        -                  "required": [
        -                    "work_section",
        -                    "description",
        -                    "quantity",
        -                    "unit",
        -                    "attribution"
        -                  ],
        -                  "type": "object"
        -                },
        -                "type": "array"
        -              },
        -              "drawing": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": false,
        -                    "description": "Schema § 1.6a — inline server-rendered SVG preview of the geometry.\n\nThe MCP mirror of the web ``/compute`` response's ``drawing`` field\n(``api.schemas.compute.DrawingRef``): the same on-screen dimensioned\ndrawing both tiers see in the workspace, surfaced on the MCP compute\nresponse so a chat client can render it inline (60th-fire item C). This\nis the on-screen preview — present on BOTH tiers per the free/paid\nboundary; the downloadable CAD artefacts (DXF / dimensioned PDF) remain\nthe paid differentiator via the export tools.\n\nDefined here rather than importing ``DrawingRef`` because the web\n``schemas`` package imports back into this module (``schemas.render``),\nso reusing it would create an import cycle — the MCP wire contract keeps\nits own copy, the same pattern as ``BoQRow`` / ``DrawingReference``.",
        -                    "properties": {
        -                      "entity_count": {
        -                        "minimum": 0,
        -                        "type": "integer"
        -                      },
        -                      "svg_b64": {
        -                        "minLength": 1,
        -                        "type": "string"
        -                      },
        -                      "unit_of_drawing": {
        -                        "const": "m",
        -                        "default": "m",
        -                        "type": "string"
        -                      },
        -                      "viewbox_height": {
        -                        "exclusiveMinimum": 0,
        -                        "type": "number"
        -                      },
        -                      "viewbox_width": {
        -                        "exclusiveMinimum": 0,
        -                        "type": "number"
        -                      },
        -                      "viewbox_x": {
        -                        "type": "number"
        -                      },
        -                      "viewbox_y": {
        -                        "type": "number"
        -                      }
        -                    },
        -                    "required": [
        -                      "svg_b64",
        -                      "viewbox_x",
        -                      "viewbox_y",
        -                      "viewbox_width",
        -                      "viewbox_height",
        -                      "entity_count"
        -                    ],
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "drawings": {
        -                "anyOf": [
        -                  {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.6 — paid-tier drawing artefact pointer.\n\n`url` is an R2-signed URL; expiry is carried in `_meta.deliverables.expires_at`\non the envelope (not duplicated here). `layers` is DXF-only; PDF/SVG\ncallers omit it.",
        -                      "properties": {
        -                        "drawing_type": {
        -                          "enum": [
        -                            "section",
        -                            "plan",
        -                            "elevation",
        -                            "isometric",
        -                            "detail"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "format": {
        -                          "enum": [
        -                            "DXF",
        -                            "PDF",
        -                            "SVG"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "layers": {
        -                          "anyOf": [
        -                            {
        -                              "items": {
        -                                "type": "string"
        -                              },
        -                              "type": "array"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ],
        -                          "default": null
        -                        },
        -                        "scale": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "sheet_size": {
        -                          "enum": [
        -                            "A1",
        -                            "A2",
        -                            "A3",
        -                            "A4"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "url": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "drawing_type",
        -                        "format",
        -                        "url",
        -                        "sheet_size",
        -                        "scale"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "parameters_used": {
        -                "additionalProperties": false,
        -                "description": "Schema § 1.2 — the parameter snapshot the engine actually used.\n\nSplits user-supplied values from engine defaults so customers can see\nwhich numbers came from them and which the engine filled in. Every\ndefaulted parameter SHOULD have a corresponding entry in `assumptions`\n— the bridge layer enforces this when wrapping engine output.",
        -                "properties": {
        -                  "assumptions": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "engine_defaults": {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  "resolved_from_description": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "additionalProperties": false,
        -                          "description": "Schema § 1.2 — a parameter resolved by the forgiving-input layer.\n\nPopulated by the Track B-Forgiving Haiku-4.5 resolution pass; until that\nlayer lands, instances are constructed only by tests. `source` distinguishes\nthe resolution path so customers can audit which fields were inferred.",
        -                          "properties": {
        -                            "confidence": {
        -                              "anyOf": [
        -                                {
        -                                  "enum": [
        -                                    "high",
        -                                    "medium",
        -                                    "low"
        -                                  ],
        -                                  "type": "string"
        -                                },
        -                                {
        -                                  "type": "null"
        -                                }
        -                              ],
        -                              "default": null
        -                            },
        -                            "field_name": {
        -                              "minLength": 1,
        -                              "type": "string"
        -                            },
        -                            "resolved_value": {},
        -                            "source": {
        -                              "enum": [
        -                                "description_field",
        -                                "haiku_resolution",
        -                                "engine_default"
        -                              ],
        -                              "type": "string"
        -                            }
        -                          },
        -                          "required": [
        -                            "field_name",
        -                            "resolved_value",
        -                            "source"
        -                          ],
        -                          "type": "object"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "user_supplied": {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  }
        -                },
        -                "type": "object"
        -              },
        -              "standard": {
        -                "enum": [
        -                  "CESMM4",
        -                  "NRM2",
        -                  "SMM7",
        -                  "MMHW"
        -                ],
        -                "type": "string"
        -              },
        -              "text_summary": {
        -                "maxLength": 2000,
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "totals_summary": {
        -                "additionalProperties": false,
        -                "description": "Schema § 1.4 — totals_summary as a typed wrapper around the free-form dict.\n\nWire shape is a flat object (`{\"concrete_m3\": {...}, \"rebar_t\": {...}}`).\nWe model it as `RootModel`-equivalent via `model_config(extra=\"allow\")`\n+ a single `__root__`-style `entries` dict. Pydantic v2 recommends\n`RootModel` for free-form roots; using a wrapper class keeps the import\nsurface uniform with the rest of this module.",
        -                "properties": {
        -                  "entries": {
        -                    "additionalProperties": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.4 — single material/work-class total entry.",
        -                      "properties": {
        -                        "quantity": {
        -                          "minimum": 0,
        -                          "type": "number"
        -                        },
        -                        "unit": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "quantity",
        -                        "unit"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "object"
        -                  }
        -                },
        -                "type": "object"
        -              },
        -              "warnings": {
        -                "items": {
        -                  "additionalProperties": false,
        -                  "description": "Schema § 1.8 — a non-fatal geometry advisory (56th-fire T2).\n\nThe wire projection of the engine's `core.GeometryWarning`. Advisory only:\na warning NEVER changes a measured quantity — it flags geometry that is\nvalid but likely a mistake (e.g. a stale dependent-height default). Present\non BOTH tiers — a correctness/safety signal, not a paid feature.",
        -                  "properties": {
        -                    "affected_params": {
        -                      "items": {
        -                        "type": "string"
        -                      },
        -                      "type": "array"
        -                    },
        -                    "code": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "detail": {
        -                      "additionalProperties": {
        -                        "type": "number"
        -                      },
        -                      "type": "object"
        -                    },
        -                    "message": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "severity": {
        -                      "enum": [
        -                        "info",
        -                        "advisory",
        -                        "caution"
        -                      ],
        -                      "type": "string"
        -                    }
        -                  },
        -                  "required": [
        -                    "code",
        -                    "severity",
        -                    "message"
        -                  ],
        -                  "type": "object"
        -                },
        -                "type": "array"
        -              }
        -            },
        -            "required": [
        -              "assembly_slug",
        -              "standard",
        -              "parameters_used",
        -              "boq_rows",
        -              "totals_summary",
        -              "text_summary"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      },
        -      "error": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        -            "properties": {
        -              "code": {
        -                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        -                "enum": [
        -                  "RATE_LIMIT_EXCEEDED",
        -                  "TIER_INSUFFICIENT",
        -                  "INVALID_INPUT",
        -                  "SCHEMA_VERSION_MISMATCH",
        -                  "SCHEMA_INVARIANT_VIOLATION",
        -                  "UPSTREAM_TIMEOUT",
        -                  "BACKEND_FAILURE",
        -                  "IP_BLOCKED",
        -                  "RESOURCE_NOT_FOUND",
        -                  "RENDER_FAILURE",
        -                  "OCR_LOW_CONFIDENCE",
        -                  "MANUAL_REVIEW_REQUIRED",
        -                  "ACCEPTANCE_REQUIRED",
        -                  "INVALID_TOKEN"
        -                ],
        -                "type": "string"
        -              },
        -              "details": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "message": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "recoverable": {
        -                "type": "boolean"
        -              },
        -              "retry_after_seconds": {
        -                "anyOf": [
        -                  {
        -                    "minimum": 0,
        -                    "type": "integer"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              }
        -            },
        -            "required": [
        -              "code",
        -              "message",
        -              "recoverable"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      }
        -    },
        -    "required": [
        -      "_meta"
        -    ],
        -    "type": "object"
        -  },
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "_meta": {
        -        "additionalProperties": false,
        -        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        -        "properties": {
        -          "deliverables": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        -                "properties": {
        -                  "docx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "dxf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "expires_at": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  },
        -                  "pdf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "xlsx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "expires_at"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "document_id": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "issued_at": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "rate_limit_remaining": {
        -            "anyOf": [
        -              {
        -                "minimum": 0,
        -                "type": "integer"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "request_id": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "schema_version": {
        -            "const": "1.0.0",
        -            "default": "1.0.0",
        -            "type": "string"
        -          },
        -          "scope_boundary": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        -                "properties": {
        -                  "not_in_scope": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "produced": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "recommended_companions": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "type": "string"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "produced",
        -                  "not_in_scope"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tier": {
        -            "enum": [
        -              "free",
        -              "paid"
        -            ],
        -            "type": "string"
        -          },
        -          "tier_upgrade": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        -                "properties": {
        -                  "available_tiers": {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        -                      "properties": {
        -                        "billing": {
        -                          "enum": [
        -                            "one_off",
        -                            "monthly",
        -                            "annual"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "currency": {
        -                          "enum": [
        -                            "GBP",
        -                            "SGD",
        -                            "EUR",
        -                            "USD",
        -                            "CAD",
        -                            "AUD",
        -                            "NZD",
        -                            "MYR"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "display_name": {
        -                          "type": "string"
        -                        },
        -                        "price_local": {
        -                          "type": "number"
        -                        },
        -                        "tier_slug": {
        -                          "enum": [
        -                            "7_day_pass",
        -                            "solo",
        -                            "studio",
        -                            "practice"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "unlock_summary": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "tier_slug",
        -                        "display_name",
        -                        "price_local",
        -                        "currency",
        -                        "billing",
        -                        "unlock_summary"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "current_tier": {
        -                    "const": "free",
        -                    "default": "free",
        -                    "type": "string"
        -                  },
        -                  "pass_credit": {
        -                    "anyOf": [
        -                      {
        -                        "additionalProperties": false,
        -                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        -                        "properties": {
        -                          "amount_local": {
        -                            "type": "number"
        -                          },
        -                          "applies_to": {
        -                            "const": "solo_first_month",
        -                            "default": "solo_first_month",
        -                            "type": "string"
        -                          },
        -                          "currency": {
        -                            "type": "string"
        -                          },
        -                          "redeemable_until": {
        -                            "type": "string"
        -                          }
        -                        },
        -                        "required": [
        -                          "amount_local",
        -                          "currency",
        -                          "redeemable_until"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "pricing_url": {
        -                    "default": "https://civilquants.com/pricing",
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "available_tiers"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tos_url": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "upgrade_hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "warranty_disclaimer": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          }
        -        },
        -        "required": [
        -          "request_id",
        -          "issued_at",
        -          "tier"
        -        ],
        -        "type": "object"
        -      },
        -      "data": {
        -        "default": null,
        -        "title": "Data"
        -      },
        -      "error": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        -            "properties": {
        -              "code": {
        -                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        -                "enum": [
        -                  "RATE_LIMIT_EXCEEDED",
        -                  "TIER_INSUFFICIENT",
        -                  "INVALID_INPUT",
        -                  "SCHEMA_VERSION_MISMATCH",
        -                  "SCHEMA_INVARIANT_VIOLATION",
        -                  "UPSTREAM_TIMEOUT",
        -                  "BACKEND_FAILURE",
        -                  "IP_BLOCKED",
        -                  "RESOURCE_NOT_FOUND",
        -                  "RENDER_FAILURE",
        -                  "OCR_LOW_CONFIDENCE",
        -                  "MANUAL_REVIEW_REQUIRED",
        -                  "ACCEPTANCE_REQUIRED",
        -                  "INVALID_TOKEN"
        -                ],
        -                "type": "string"
        -              },
        -              "details": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "message": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "recoverable": {
        -                "type": "boolean"
        -              },
        -              "retry_after_seconds": {
        -                "anyOf": [
        -                  {
        -                    "minimum": 0,
        -                    "type": "integer"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              }
        -            },
        -            "required": [
        -              "code",
        -              "message",
        -              "recoverable"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      }
        -    },
        -    "required": [
        -      "_meta"
        -    ],
        -    "type": "object"
        -  }
        -]New value: +[
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "_meta": {
        +        "additionalProperties": false,
        +        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        +        "properties": {
        +          "deliverables": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        +                "properties": {
        +                  "docx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "dxf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "expires_at": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  },
        +                  "pdf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "xlsx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "expires_at"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "document_id": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "issued_at": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "rate_limit_remaining": {
        +            "anyOf": [
        +              {
        +                "minimum": 0,
        +                "type": "integer"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "request_id": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "schema_version": {
        +            "const": "1.0.0",
        +            "default": "1.0.0",
        +            "type": "string"
        +          },
        +          "scope_boundary": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        +                "properties": {
        +                  "not_in_scope": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "produced": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "recommended_companions": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "type": "string"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "produced",
        +                  "not_in_scope"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tier": {
        +            "enum": [
        +              "free",
        +              "paid"
        +            ],
        +            "type": "string"
        +          },
        +          "tier_upgrade": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        +                "properties": {
        +                  "available_tiers": {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        +                      "properties": {
        +                        "billing": {
        +                          "enum": [
        +                            "one_off",
        +                            "monthly",
        +                            "annual"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "currency": {
        +                          "enum": [
        +                            "GBP",
        +                            "SGD",
        +                            "EUR",
        +                            "USD",
        +                            "CAD",
        +                            "AUD",
        +                            "NZD",
        +                            "MYR"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "display_name": {
        +                          "type": "string"
        +                        },
        +                        "price_local": {
        +                          "type": "number"
        +                        },
        +                        "tier_slug": {
        +                          "enum": [
        +                            "7_day_pass",
        +                            "solo",
        +                            "studio",
        +                            "practice"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "unlock_summary": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "tier_slug",
        +                        "display_name",
        +                        "price_local",
        +                        "currency",
        +                        "billing",
        +                        "unlock_summary"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "current_tier": {
        +                    "const": "free",
        +                    "default": "free",
        +                    "type": "string"
        +                  },
        +                  "pass_credit": {
        +                    "anyOf": [
        +                      {
        +                        "additionalProperties": false,
        +                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        +                        "properties": {
        +                          "amount_local": {
        +                            "type": "number"
        +                          },
        +                          "applies_to": {
        +                            "const": "solo_first_month",
        +                            "default": "solo_first_month",
        +                            "type": "string"
        +                          },
        +                          "currency": {
        +                            "type": "string"
        +                          },
        +                          "redeemable_until": {
        +                            "type": "string"
        +                          }
        +                        },
        +                        "required": [
        +                          "amount_local",
        +                          "currency",
        +                          "redeemable_until"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "pricing_url": {
        +                    "default": "https://civilquants.com/pricing",
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "available_tiers"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tos_url": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "upgrade_hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "warranty_disclaimer": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          }
        +        },
        +        "required": [
        +          "request_id",
        +          "issued_at",
        +          "tier"
        +        ],
        +        "type": "object"
        +      },
        +      "data": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Schema § 1.1 — the typed payload returned inside `MCPResponse[ComputeResult]`.\n\nFree-tier responses omit `drawings` (the downloadable CAD artefact\npointers — the paid differentiator); the bridge enforces this. The\n`audit_trail` and the inline `drawing` preview are present on BOTH tiers\n(V1 ALIGN / 60th-fire D + C). `text_summary` is bounded to 2000 chars —\nkeeps the LLM-facing summary token-cheap and forces longer narrative into\nBoQ row descriptions where it belongs. `warnings` is the non-fatal\ngeometry advisory list (both tiers).",
        +            "properties": {
        +              "assembly_slug": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "audit_trail": {
        +                "anyOf": [
        +                  {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.7 — paid-tier audit-trail entry.\n\nOne entry per BoQ row; `boq_row_index` ties to the row position in\n`ComputeResult.boq_rows`. `derivation` is the human-readable formula\nwalk-through; `formula` is the optional formal expression.",
        +                      "properties": {
        +                        "boq_row_index": {
        +                          "minimum": 0,
        +                          "type": "integer"
        +                        },
        +                        "derivation": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "formula": {
        +                          "anyOf": [
        +                            {
        +                              "type": "string"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ],
        +                          "default": null
        +                        },
        +                        "id": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "parameters_referenced": {
        +                          "items": {
        +                            "type": "string"
        +                          },
        +                          "type": "array"
        +                        }
        +                      },
        +                      "required": [
        +                        "id",
        +                        "boq_row_index",
        +                        "derivation"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "boq_rows": {
        +                "items": {
        +                  "additionalProperties": false,
        +                  "description": "Schema § 1.3 — a single bill row in the requested standard's format.\n\n`description` is the non-verbatim functional description per spec § 13.9 /\n§ 15 invariant — NEVER reproduces a standard's verbatim clause text.\n`rate` / `amount` ship null because rates are commodity data the customer\nowns; the engine's job is the measurement, not the pricing.",
        +                  "properties": {
        +                    "amount": {
        +                      "anyOf": [
        +                        {
        +                          "type": "number"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "attribution": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "audit_id": {
        +                      "anyOf": [
        +                        {
        +                          "type": "string"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "description": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "quantity": {
        +                      "minimum": 0,
        +                      "type": "number"
        +                    },
        +                    "rate": {
        +                      "anyOf": [
        +                        {
        +                          "type": "number"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "unit": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "work_section": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    }
        +                  },
        +                  "required": [
        +                    "work_section",
        +                    "description",
        +                    "quantity",
        +                    "unit",
        +                    "attribution"
        +                  ],
        +                  "type": "object"
        +                },
        +                "type": "array"
        +              },
        +              "drawing": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": false,
        +                    "description": "Schema § 1.6a — inline server-rendered SVG preview of the geometry.\n\nThe MCP mirror of the web ``/compute`` response's ``drawing`` field\n(``api.schemas.compute.DrawingRef``): the same on-screen dimensioned\ndrawing both tiers see in the workspace, surfaced on the MCP compute\nresponse so a chat client can render it inline (60th-fire item C). This\nis the on-screen preview — present on BOTH tiers per the free/paid\nboundary; the downloadable CAD artefacts (DXF / dimensioned PDF) remain\nthe paid differentiator via the export tools.\n\nDefined here rather than importing ``DrawingRef`` because the web\n``schemas`` package imports back into this module (``schemas.render``),\nso reusing it would create an import cycle — the MCP wire contract keeps\nits own copy, the same pattern as ``BoQRow`` / ``DrawingReference``.",
        +                    "properties": {
        +                      "entity_count": {
        +                        "minimum": 0,
        +                        "type": "integer"
        +                      },
        +                      "svg_b64": {
        +                        "minLength": 1,
        +                        "type": "string"
        +                      },
        +                      "unit_of_drawing": {
        +                        "const": "m",
        +                        "default": "m",
        +                        "type": "string"
        +                      },
        +                      "viewbox_height": {
        +                        "exclusiveMinimum": 0,
        +                        "type": "number"
        +                      },
        +                      "viewbox_width": {
        +                        "exclusiveMinimum": 0,
        +                        "type": "number"
        +                      },
        +                      "viewbox_x": {
        +                        "type": "number"
        +                      },
        +                      "viewbox_y": {
        +                        "type": "number"
        +                      }
        +                    },
        +                    "required": [
        +                      "svg_b64",
        +                      "viewbox_x",
        +                      "viewbox_y",
        +                      "viewbox_width",
        +                      "viewbox_height",
        +                      "entity_count"
        +                    ],
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "drawings": {
        +                "anyOf": [
        +                  {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.6 — paid-tier drawing artefact pointer.\n\n`url` is an R2-signed URL; expiry is carried in `_meta.deliverables.expires_at`\non the envelope (not duplicated here). `layers` is DXF-only; PDF/SVG\ncallers omit it.",
        +                      "properties": {
        +                        "drawing_type": {
        +                          "enum": [
        +                            "section",
        +                            "plan",
        +                            "elevation",
        +                            "isometric",
        +                            "detail"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "format": {
        +                          "enum": [
        +                            "DXF",
        +                            "PDF",
        +                            "SVG"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "layers": {
        +                          "anyOf": [
        +                            {
        +                              "items": {
        +                                "type": "string"
        +                              },
        +                              "type": "array"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ],
        +                          "default": null
        +                        },
        +                        "scale": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "sheet_size": {
        +                          "enum": [
        +                            "A1",
        +                            "A2",
        +                            "A3",
        +                            "A4"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "url": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "drawing_type",
        +                        "format",
        +                        "url",
        +                        "sheet_size",
        +                        "scale"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "parameters_used": {
        +                "additionalProperties": false,
        +                "description": "Schema § 1.2 — the parameter snapshot the engine actually used.\n\nSplits user-supplied values from engine defaults so customers can see\nwhich numbers came from them and which the engine filled in. Every\ndefaulted parameter SHOULD have a corresponding entry in `assumptions`\n— the bridge layer enforces this when wrapping engine output.",
        +                "properties": {
        +                  "assumptions": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "engine_defaults": {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  "user_supplied": {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  }
        +                },
        +                "type": "object"
        +              },
        +              "standard": {
        +                "enum": [
        +                  "CESMM4",
        +                  "NRM2",
        +                  "SMM7",
        +                  "MMHW"
        +                ],
        +                "type": "string"
        +              },
        +              "text_summary": {
        +                "maxLength": 2000,
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "totals_summary": {
        +                "additionalProperties": false,
        +                "description": "Schema § 1.4 — totals_summary as a typed wrapper around the free-form dict.\n\nWire shape is a flat object (`{\"concrete_m3\": {...}, \"rebar_t\": {...}}`).\nWe model it as `RootModel`-equivalent via `model_config(extra=\"allow\")`\n+ a single `__root__`-style `entries` dict. Pydantic v2 recommends\n`RootModel` for free-form roots; using a wrapper class keeps the import\nsurface uniform with the rest of this module.",
        +                "properties": {
        +                  "entries": {
        +                    "additionalProperties": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.4 — single material/work-class total entry.",
        +                      "properties": {
        +                        "quantity": {
        +                          "minimum": 0,
        +                          "type": "number"
        +                        },
        +                        "unit": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "quantity",
        +                        "unit"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "object"
        +                  }
        +                },
        +                "type": "object"
        +              },
        +              "warnings": {
        +                "items": {
        +                  "additionalProperties": false,
        +                  "description": "Schema § 1.8 — a non-fatal geometry advisory (56th-fire T2).\n\nThe wire projection of the engine's `core.GeometryWarning`. Advisory only:\na warning NEVER changes a measured quantity — it flags geometry that is\nvalid but likely a mistake (e.g. a stale dependent-height default). Present\non BOTH tiers — a correctness/safety signal, not a paid feature.",
        +                  "properties": {
        +                    "affected_params": {
        +                      "items": {
        +                        "type": "string"
        +                      },
        +                      "type": "array"
        +                    },
        +                    "code": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "detail": {
        +                      "additionalProperties": {
        +                        "type": "number"
        +                      },
        +                      "type": "object"
        +                    },
        +                    "message": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "severity": {
        +                      "enum": [
        +                        "info",
        +                        "advisory",
        +                        "caution"
        +                      ],
        +                      "type": "string"
        +                    }
        +                  },
        +                  "required": [
        +                    "code",
        +                    "severity",
        +                    "message"
        +                  ],
        +                  "type": "object"
        +                },
        +                "type": "array"
        +              }
        +            },
        +            "required": [
        +              "assembly_slug",
        +              "standard",
        +              "parameters_used",
        +              "boq_rows",
        +              "totals_summary",
        +              "text_summary"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      },
        +      "error": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        +            "properties": {
        +              "code": {
        +                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        +                "enum": [
        +                  "RATE_LIMIT_EXCEEDED",
        +                  "TIER_INSUFFICIENT",
        +                  "INVALID_INPUT",
        +                  "SCHEMA_VERSION_MISMATCH",
        +                  "SCHEMA_INVARIANT_VIOLATION",
        +                  "UPSTREAM_TIMEOUT",
        +                  "BACKEND_FAILURE",
        +                  "IP_BLOCKED",
        +                  "RESOURCE_NOT_FOUND",
        +                  "RENDER_FAILURE",
        +                  "OCR_LOW_CONFIDENCE",
        +                  "MANUAL_REVIEW_REQUIRED",
        +                  "ACCEPTANCE_REQUIRED",
        +                  "INVALID_TOKEN"
        +                ],
        +                "type": "string"
        +              },
        +              "details": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "message": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "recoverable": {
        +                "type": "boolean"
        +              },
        +              "retry_after_seconds": {
        +                "anyOf": [
        +                  {
        +                    "minimum": 0,
        +                    "type": "integer"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              }
        +            },
        +            "required": [
        +              "code",
        +              "message",
        +              "recoverable"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      }
        +    },
        +    "required": [
        +      "_meta"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "_meta": {
        +        "additionalProperties": false,
        +        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        +        "properties": {
        +          "deliverables": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        +                "properties": {
        +                  "docx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "dxf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "expires_at": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  },
        +                  "pdf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "xlsx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "expires_at"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "document_id": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "issued_at": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "rate_limit_remaining": {
        +            "anyOf": [
        +              {
        +                "minimum": 0,
        +                "type": "integer"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "request_id": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "schema_version": {
        +            "const": "1.0.0",
        +            "default": "1.0.0",
        +            "type": "string"
        +          },
        +          "scope_boundary": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        +                "properties": {
        +                  "not_in_scope": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "produced": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "recommended_companions": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "type": "string"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "produced",
        +                  "not_in_scope"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tier": {
        +            "enum": [
        +              "free",
        +              "paid"
        +            ],
        +            "type": "string"
        +          },
        +          "tier_upgrade": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        +                "properties": {
        +                  "available_tiers": {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        +                      "properties": {
        +                        "billing": {
        +                          "enum": [
        +                            "one_off",
        +                            "monthly",
        +                            "annual"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "currency": {
        +                          "enum": [
        +                            "GBP",
        +                            "SGD",
        +                            "EUR",
        +                            "USD",
        +                            "CAD",
        +                            "AUD",
        +                            "NZD",
        +                            "MYR"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "display_name": {
        +                          "type": "string"
        +                        },
        +                        "price_local": {
        +                          "type": "number"
        +                        },
        +                        "tier_slug": {
        +                          "enum": [
        +                            "7_day_pass",
        +                            "solo",
        +                            "studio",
        +                            "practice"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "unlock_summary": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "tier_slug",
        +                        "display_name",
        +                        "price_local",
        +                        "currency",
        +                        "billing",
        +                        "unlock_summary"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "current_tier": {
        +                    "const": "free",
        +                    "default": "free",
        +                    "type": "string"
        +                  },
        +                  "pass_credit": {
        +                    "anyOf": [
        +                      {
        +                        "additionalProperties": false,
        +                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        +                        "properties": {
        +                          "amount_local": {
        +                            "type": "number"
        +                          },
        +                          "applies_to": {
        +                            "const": "solo_first_month",
        +                            "default": "solo_first_month",
        +                            "type": "string"
        +                          },
        +                          "currency": {
        +                            "type": "string"
        +                          },
        +                          "redeemable_until": {
        +                            "type": "string"
        +                          }
        +                        },
        +                        "required": [
        +                          "amount_local",
        +                          "currency",
        +                          "redeemable_until"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "pricing_url": {
        +                    "default": "https://civilquants.com/pricing",
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "available_tiers"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tos_url": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "upgrade_hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "warranty_disclaimer": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          }
        +        },
        +        "required": [
        +          "request_id",
        +          "issued_at",
        +          "tier"
        +        ],
        +        "type": "object"
        +      },
        +      "data": {
        +        "default": null,
        +        "title": "Data"
        +      },
        +      "error": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        +            "properties": {
        +              "code": {
        +                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        +                "enum": [
        +                  "RATE_LIMIT_EXCEEDED",
        +                  "TIER_INSUFFICIENT",
        +                  "INVALID_INPUT",
        +                  "SCHEMA_VERSION_MISMATCH",
        +                  "SCHEMA_INVARIANT_VIOLATION",
        +                  "UPSTREAM_TIMEOUT",
        +                  "BACKEND_FAILURE",
        +                  "IP_BLOCKED",
        +                  "RESOURCE_NOT_FOUND",
        +                  "RENDER_FAILURE",
        +                  "OCR_LOW_CONFIDENCE",
        +                  "MANUAL_REVIEW_REQUIRED",
        +                  "ACCEPTANCE_REQUIRED",
        +                  "INVALID_TOKEN"
        +                ],
        +                "type": "string"
        +              },
        +              "details": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "message": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "recoverable": {
        +                "type": "boolean"
        +              },
        +              "retry_after_seconds": {
        +                "anyOf": [
        +                  {
        +                    "minimum": 0,
        +                    "type": "integer"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              }
        +            },
        +            "required": [
        +              "code",
        +              "message",
        +              "recoverable"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      }
        +    },
        +    "required": [
        +      "_meta"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedcompute_french_drain1 field changed
      • changedOutput schema / properties / result / anyOf
        Previous value: -[
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "_meta": {
        -        "additionalProperties": false,
        -        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        -        "properties": {
        -          "deliverables": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        -                "properties": {
        -                  "docx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "dxf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "expires_at": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  },
        -                  "pdf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "xlsx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "expires_at"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "document_id": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "issued_at": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "rate_limit_remaining": {
        -            "anyOf": [
        -              {
        -                "minimum": 0,
        -                "type": "integer"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "request_id": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "schema_version": {
        -            "const": "1.0.0",
        -            "default": "1.0.0",
        -            "type": "string"
        -          },
        -          "scope_boundary": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        -                "properties": {
        -                  "not_in_scope": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "produced": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "recommended_companions": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "type": "string"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "produced",
        -                  "not_in_scope"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tier": {
        -            "enum": [
        -              "free",
        -              "paid"
        -            ],
        -            "type": "string"
        -          },
        -          "tier_upgrade": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        -                "properties": {
        -                  "available_tiers": {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        -                      "properties": {
        -                        "billing": {
        -                          "enum": [
        -                            "one_off",
        -                            "monthly",
        -                            "annual"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "currency": {
        -                          "enum": [
        -                            "GBP",
        -                            "SGD",
        -                            "EUR",
        -                            "USD",
        -                            "CAD",
        -                            "AUD",
        -                            "NZD",
        -                            "MYR"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "display_name": {
        -                          "type": "string"
        -                        },
        -                        "price_local": {
        -                          "type": "number"
        -                        },
        -                        "tier_slug": {
        -                          "enum": [
        -                            "7_day_pass",
        -                            "solo",
        -                            "studio",
        -                            "practice"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "unlock_summary": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "tier_slug",
        -                        "display_name",
        -                        "price_local",
        -                        "currency",
        -                        "billing",
        -                        "unlock_summary"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "current_tier": {
        -                    "const": "free",
        -                    "default": "free",
        -                    "type": "string"
        -                  },
        -                  "pass_credit": {
        -                    "anyOf": [
        -                      {
        -                        "additionalProperties": false,
        -                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        -                        "properties": {
        -                          "amount_local": {
        -                            "type": "number"
        -                          },
        -                          "applies_to": {
        -                            "const": "solo_first_month",
        -                            "default": "solo_first_month",
        -                            "type": "string"
        -                          },
        -                          "currency": {
        -                            "type": "string"
        -                          },
        -                          "redeemable_until": {
        -                            "type": "string"
        -                          }
        -                        },
        -                        "required": [
        -                          "amount_local",
        -                          "currency",
        -                          "redeemable_until"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "pricing_url": {
        -                    "default": "https://civilquants.com/pricing",
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "available_tiers"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tos_url": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "upgrade_hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "warranty_disclaimer": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          }
        -        },
        -        "required": [
        -          "request_id",
        -          "issued_at",
        -          "tier"
        -        ],
        -        "type": "object"
        -      },
        -      "data": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Schema § 1.1 — the typed payload returned inside `MCPResponse[ComputeResult]`.\n\nFree-tier responses omit `drawings` (the downloadable CAD artefact\npointers — the paid differentiator); the bridge enforces this. The\n`audit_trail` and the inline `drawing` preview are present on BOTH tiers\n(V1 ALIGN / 60th-fire D + C). `text_summary` is bounded to 2000 chars —\nkeeps the LLM-facing summary token-cheap and forces longer narrative into\nBoQ row descriptions where it belongs. `warnings` is the non-fatal\ngeometry advisory list (both tiers).",
        -            "properties": {
        -              "assembly_slug": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "audit_trail": {
        -                "anyOf": [
        -                  {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.7 — paid-tier audit-trail entry.\n\nOne entry per BoQ row; `boq_row_index` ties to the row position in\n`ComputeResult.boq_rows`. `derivation` is the human-readable formula\nwalk-through; `formula` is the optional formal expression.",
        -                      "properties": {
        -                        "boq_row_index": {
        -                          "minimum": 0,
        -                          "type": "integer"
        -                        },
        -                        "derivation": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "formula": {
        -                          "anyOf": [
        -                            {
        -                              "type": "string"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ],
        -                          "default": null
        -                        },
        -                        "id": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "parameters_referenced": {
        -                          "items": {
        -                            "type": "string"
        -                          },
        -                          "type": "array"
        -                        }
        -                      },
        -                      "required": [
        -                        "id",
        -                        "boq_row_index",
        -                        "derivation"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "boq_rows": {
        -                "items": {
        -                  "additionalProperties": false,
        -                  "description": "Schema § 1.3 — a single bill row in the requested standard's format.\n\n`description` is the non-verbatim functional description per spec § 13.9 /\n§ 15 invariant — NEVER reproduces a standard's verbatim clause text.\n`rate` / `amount` ship null because rates are commodity data the customer\nowns; the engine's job is the measurement, not the pricing.",
        -                  "properties": {
        -                    "amount": {
        -                      "anyOf": [
        -                        {
        -                          "type": "number"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "attribution": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "audit_id": {
        -                      "anyOf": [
        -                        {
        -                          "type": "string"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "description": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "quantity": {
        -                      "minimum": 0,
        -                      "type": "number"
        -                    },
        -                    "rate": {
        -                      "anyOf": [
        -                        {
        -                          "type": "number"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "unit": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "work_section": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    }
        -                  },
        -                  "required": [
        -                    "work_section",
        -                    "description",
        -                    "quantity",
        -                    "unit",
        -                    "attribution"
        -                  ],
        -                  "type": "object"
        -                },
        -                "type": "array"
        -              },
        -              "drawing": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": false,
        -                    "description": "Schema § 1.6a — inline server-rendered SVG preview of the geometry.\n\nThe MCP mirror of the web ``/compute`` response's ``drawing`` field\n(``api.schemas.compute.DrawingRef``): the same on-screen dimensioned\ndrawing both tiers see in the workspace, surfaced on the MCP compute\nresponse so a chat client can render it inline (60th-fire item C). This\nis the on-screen preview — present on BOTH tiers per the free/paid\nboundary; the downloadable CAD artefacts (DXF / dimensioned PDF) remain\nthe paid differentiator via the export tools.\n\nDefined here rather than importing ``DrawingRef`` because the web\n``schemas`` package imports back into this module (``schemas.render``),\nso reusing it would create an import cycle — the MCP wire contract keeps\nits own copy, the same pattern as ``BoQRow`` / ``DrawingReference``.",
        -                    "properties": {
        -                      "entity_count": {
        -                        "minimum": 0,
        -                        "type": "integer"
        -                      },
        -                      "svg_b64": {
        -                        "minLength": 1,
        -                        "type": "string"
        -                      },
        -                      "unit_of_drawing": {
        -                        "const": "m",
        -                        "default": "m",
        -                        "type": "string"
        -                      },
        -                      "viewbox_height": {
        -                        "exclusiveMinimum": 0,
        -                        "type": "number"
        -                      },
        -                      "viewbox_width": {
        -                        "exclusiveMinimum": 0,
        -                        "type": "number"
        -                      },
        -                      "viewbox_x": {
        -                        "type": "number"
        -                      },
        -                      "viewbox_y": {
        -                        "type": "number"
        -                      }
        -                    },
        -                    "required": [
        -                      "svg_b64",
        -                      "viewbox_x",
        -                      "viewbox_y",
        -                      "viewbox_width",
        -                      "viewbox_height",
        -                      "entity_count"
        -                    ],
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "drawings": {
        -                "anyOf": [
        -                  {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.6 — paid-tier drawing artefact pointer.\n\n`url` is an R2-signed URL; expiry is carried in `_meta.deliverables.expires_at`\non the envelope (not duplicated here). `layers` is DXF-only; PDF/SVG\ncallers omit it.",
        -                      "properties": {
        -                        "drawing_type": {
        -                          "enum": [
        -                            "section",
        -                            "plan",
        -                            "elevation",
        -                            "isometric",
        -                            "detail"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "format": {
        -                          "enum": [
        -                            "DXF",
        -                            "PDF",
        -                            "SVG"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "layers": {
        -                          "anyOf": [
        -                            {
        -                              "items": {
        -                                "type": "string"
        -                              },
        -                              "type": "array"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ],
        -                          "default": null
        -                        },
        -                        "scale": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "sheet_size": {
        -                          "enum": [
        -                            "A1",
        -                            "A2",
        -                            "A3",
        -                            "A4"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "url": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "drawing_type",
        -                        "format",
        -                        "url",
        -                        "sheet_size",
        -                        "scale"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "parameters_used": {
        -                "additionalProperties": false,
        -                "description": "Schema § 1.2 — the parameter snapshot the engine actually used.\n\nSplits user-supplied values from engine defaults so customers can see\nwhich numbers came from them and which the engine filled in. Every\ndefaulted parameter SHOULD have a corresponding entry in `assumptions`\n— the bridge layer enforces this when wrapping engine output.",
        -                "properties": {
        -                  "assumptions": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "engine_defaults": {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  "resolved_from_description": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "additionalProperties": false,
        -                          "description": "Schema § 1.2 — a parameter resolved by the forgiving-input layer.\n\nPopulated by the Track B-Forgiving Haiku-4.5 resolution pass; until that\nlayer lands, instances are constructed only by tests. `source` distinguishes\nthe resolution path so customers can audit which fields were inferred.",
        -                          "properties": {
        -                            "confidence": {
        -                              "anyOf": [
        -                                {
        -                                  "enum": [
        -                                    "high",
        -                                    "medium",
        -                                    "low"
        -                                  ],
        -                                  "type": "string"
        -                                },
        -                                {
        -                                  "type": "null"
        -                                }
        -                              ],
        -                              "default": null
        -                            },
        -                            "field_name": {
        -                              "minLength": 1,
        -                              "type": "string"
        -                            },
        -                            "resolved_value": {},
        -                            "source": {
        -                              "enum": [
        -                                "description_field",
        -                                "haiku_resolution",
        -                                "engine_default"
        -                              ],
        -                              "type": "string"
        -                            }
        -                          },
        -                          "required": [
        -                            "field_name",
        -                            "resolved_value",
        -                            "source"
        -                          ],
        -                          "type": "object"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "user_supplied": {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  }
        -                },
        -                "type": "object"
        -              },
        -              "standard": {
        -                "enum": [
        -                  "CESMM4",
        -                  "NRM2",
        -                  "SMM7",
        -                  "MMHW"
        -                ],
        -                "type": "string"
        -              },
        -              "text_summary": {
        -                "maxLength": 2000,
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "totals_summary": {
        -                "additionalProperties": false,
        -                "description": "Schema § 1.4 — totals_summary as a typed wrapper around the free-form dict.\n\nWire shape is a flat object (`{\"concrete_m3\": {...}, \"rebar_t\": {...}}`).\nWe model it as `RootModel`-equivalent via `model_config(extra=\"allow\")`\n+ a single `__root__`-style `entries` dict. Pydantic v2 recommends\n`RootModel` for free-form roots; using a wrapper class keeps the import\nsurface uniform with the rest of this module.",
        -                "properties": {
        -                  "entries": {
        -                    "additionalProperties": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.4 — single material/work-class total entry.",
        -                      "properties": {
        -                        "quantity": {
        -                          "minimum": 0,
        -                          "type": "number"
        -                        },
        -                        "unit": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "quantity",
        -                        "unit"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "object"
        -                  }
        -                },
        -                "type": "object"
        -              },
        -              "warnings": {
        -                "items": {
        -                  "additionalProperties": false,
        -                  "description": "Schema § 1.8 — a non-fatal geometry advisory (56th-fire T2).\n\nThe wire projection of the engine's `core.GeometryWarning`. Advisory only:\na warning NEVER changes a measured quantity — it flags geometry that is\nvalid but likely a mistake (e.g. a stale dependent-height default). Present\non BOTH tiers — a correctness/safety signal, not a paid feature.",
        -                  "properties": {
        -                    "affected_params": {
        -                      "items": {
        -                        "type": "string"
        -                      },
        -                      "type": "array"
        -                    },
        -                    "code": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "detail": {
        -                      "additionalProperties": {
        -                        "type": "number"
        -                      },
        -                      "type": "object"
        -                    },
        -                    "message": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "severity": {
        -                      "enum": [
        -                        "info",
        -                        "advisory",
        -                        "caution"
        -                      ],
        -                      "type": "string"
        -                    }
        -                  },
        -                  "required": [
        -                    "code",
        -                    "severity",
        -                    "message"
        -                  ],
        -                  "type": "object"
        -                },
        -                "type": "array"
        -              }
        -            },
        -            "required": [
        -              "assembly_slug",
        -              "standard",
        -              "parameters_used",
        -              "boq_rows",
        -              "totals_summary",
        -              "text_summary"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      },
        -      "error": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        -            "properties": {
        -              "code": {
        -                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        -                "enum": [
        -                  "RATE_LIMIT_EXCEEDED",
        -                  "TIER_INSUFFICIENT",
        -                  "INVALID_INPUT",
        -                  "SCHEMA_VERSION_MISMATCH",
        -                  "SCHEMA_INVARIANT_VIOLATION",
        -                  "UPSTREAM_TIMEOUT",
        -                  "BACKEND_FAILURE",
        -                  "IP_BLOCKED",
        -                  "RESOURCE_NOT_FOUND",
        -                  "RENDER_FAILURE",
        -                  "OCR_LOW_CONFIDENCE",
        -                  "MANUAL_REVIEW_REQUIRED",
        -                  "ACCEPTANCE_REQUIRED",
        -                  "INVALID_TOKEN"
        -                ],
        -                "type": "string"
        -              },
        -              "details": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "message": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "recoverable": {
        -                "type": "boolean"
        -              },
        -              "retry_after_seconds": {
        -                "anyOf": [
        -                  {
        -                    "minimum": 0,
        -                    "type": "integer"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              }
        -            },
        -            "required": [
        -              "code",
        -              "message",
        -              "recoverable"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      }
        -    },
        -    "required": [
        -      "_meta"
        -    ],
        -    "type": "object"
        -  },
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "_meta": {
        -        "additionalProperties": false,
        -        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        -        "properties": {
        -          "deliverables": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        -                "properties": {
        -                  "docx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "dxf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "expires_at": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  },
        -                  "pdf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "xlsx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "expires_at"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "document_id": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "issued_at": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "rate_limit_remaining": {
        -            "anyOf": [
        -              {
        -                "minimum": 0,
        -                "type": "integer"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "request_id": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "schema_version": {
        -            "const": "1.0.0",
        -            "default": "1.0.0",
        -            "type": "string"
        -          },
        -          "scope_boundary": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        -                "properties": {
        -                  "not_in_scope": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "produced": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "recommended_companions": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "type": "string"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "produced",
        -                  "not_in_scope"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tier": {
        -            "enum": [
        -              "free",
        -              "paid"
        -            ],
        -            "type": "string"
        -          },
        -          "tier_upgrade": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        -                "properties": {
        -                  "available_tiers": {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        -                      "properties": {
        -                        "billing": {
        -                          "enum": [
        -                            "one_off",
        -                            "monthly",
        -                            "annual"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "currency": {
        -                          "enum": [
        -                            "GBP",
        -                            "SGD",
        -                            "EUR",
        -                            "USD",
        -                            "CAD",
        -                            "AUD",
        -                            "NZD",
        -                            "MYR"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "display_name": {
        -                          "type": "string"
        -                        },
        -                        "price_local": {
        -                          "type": "number"
        -                        },
        -                        "tier_slug": {
        -                          "enum": [
        -                            "7_day_pass",
        -                            "solo",
        -                            "studio",
        -                            "practice"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "unlock_summary": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "tier_slug",
        -                        "display_name",
        -                        "price_local",
        -                        "currency",
        -                        "billing",
        -                        "unlock_summary"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "current_tier": {
        -                    "const": "free",
        -                    "default": "free",
        -                    "type": "string"
        -                  },
        -                  "pass_credit": {
        -                    "anyOf": [
        -                      {
        -                        "additionalProperties": false,
        -                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        -                        "properties": {
        -                          "amount_local": {
        -                            "type": "number"
        -                          },
        -                          "applies_to": {
        -                            "const": "solo_first_month",
        -                            "default": "solo_first_month",
        -                            "type": "string"
        -                          },
        -                          "currency": {
        -                            "type": "string"
        -                          },
        -                          "redeemable_until": {
        -                            "type": "string"
        -                          }
        -                        },
        -                        "required": [
        -                          "amount_local",
        -                          "currency",
        -                          "redeemable_until"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "pricing_url": {
        -                    "default": "https://civilquants.com/pricing",
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "available_tiers"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tos_url": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "upgrade_hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "warranty_disclaimer": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          }
        -        },
        -        "required": [
        -          "request_id",
        -          "issued_at",
        -          "tier"
        -        ],
        -        "type": "object"
        -      },
        -      "data": {
        -        "default": null,
        -        "title": "Data"
        -      },
        -      "error": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        -            "properties": {
        -              "code": {
        -                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        -                "enum": [
        -                  "RATE_LIMIT_EXCEEDED",
        -                  "TIER_INSUFFICIENT",
        -                  "INVALID_INPUT",
        -                  "SCHEMA_VERSION_MISMATCH",
        -                  "SCHEMA_INVARIANT_VIOLATION",
        -                  "UPSTREAM_TIMEOUT",
        -                  "BACKEND_FAILURE",
        -                  "IP_BLOCKED",
        -                  "RESOURCE_NOT_FOUND",
        -                  "RENDER_FAILURE",
        -                  "OCR_LOW_CONFIDENCE",
        -                  "MANUAL_REVIEW_REQUIRED",
        -                  "ACCEPTANCE_REQUIRED",
        -                  "INVALID_TOKEN"
        -                ],
        -                "type": "string"
        -              },
        -              "details": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "message": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "recoverable": {
        -                "type": "boolean"
        -              },
        -              "retry_after_seconds": {
        -                "anyOf": [
        -                  {
        -                    "minimum": 0,
        -                    "type": "integer"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              }
        -            },
        -            "required": [
        -              "code",
        -              "message",
        -              "recoverable"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      }
        -    },
        -    "required": [
        -      "_meta"
        -    ],
        -    "type": "object"
        -  }
        -]New value: +[
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "_meta": {
        +        "additionalProperties": false,
        +        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        +        "properties": {
        +          "deliverables": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        +                "properties": {
        +                  "docx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "dxf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "expires_at": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  },
        +                  "pdf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "xlsx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "expires_at"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "document_id": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "issued_at": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "rate_limit_remaining": {
        +            "anyOf": [
        +              {
        +                "minimum": 0,
        +                "type": "integer"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "request_id": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "schema_version": {
        +            "const": "1.0.0",
        +            "default": "1.0.0",
        +            "type": "string"
        +          },
        +          "scope_boundary": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        +                "properties": {
        +                  "not_in_scope": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "produced": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "recommended_companions": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "type": "string"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "produced",
        +                  "not_in_scope"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tier": {
        +            "enum": [
        +              "free",
        +              "paid"
        +            ],
        +            "type": "string"
        +          },
        +          "tier_upgrade": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        +                "properties": {
        +                  "available_tiers": {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        +                      "properties": {
        +                        "billing": {
        +                          "enum": [
        +                            "one_off",
        +                            "monthly",
        +                            "annual"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "currency": {
        +                          "enum": [
        +                            "GBP",
        +                            "SGD",
        +                            "EUR",
        +                            "USD",
        +                            "CAD",
        +                            "AUD",
        +                            "NZD",
        +                            "MYR"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "display_name": {
        +                          "type": "string"
        +                        },
        +                        "price_local": {
        +                          "type": "number"
        +                        },
        +                        "tier_slug": {
        +                          "enum": [
        +                            "7_day_pass",
        +                            "solo",
        +                            "studio",
        +                            "practice"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "unlock_summary": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "tier_slug",
        +                        "display_name",
        +                        "price_local",
        +                        "currency",
        +                        "billing",
        +                        "unlock_summary"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "current_tier": {
        +                    "const": "free",
        +                    "default": "free",
        +                    "type": "string"
        +                  },
        +                  "pass_credit": {
        +                    "anyOf": [
        +                      {
        +                        "additionalProperties": false,
        +                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        +                        "properties": {
        +                          "amount_local": {
        +                            "type": "number"
        +                          },
        +                          "applies_to": {
        +                            "const": "solo_first_month",
        +                            "default": "solo_first_month",
        +                            "type": "string"
        +                          },
        +                          "currency": {
        +                            "type": "string"
        +                          },
        +                          "redeemable_until": {
        +                            "type": "string"
        +                          }
        +                        },
        +                        "required": [
        +                          "amount_local",
        +                          "currency",
        +                          "redeemable_until"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "pricing_url": {
        +                    "default": "https://civilquants.com/pricing",
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "available_tiers"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tos_url": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "upgrade_hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "warranty_disclaimer": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          }
        +        },
        +        "required": [
        +          "request_id",
        +          "issued_at",
        +          "tier"
        +        ],
        +        "type": "object"
        +      },
        +      "data": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Schema § 1.1 — the typed payload returned inside `MCPResponse[ComputeResult]`.\n\nFree-tier responses omit `drawings` (the downloadable CAD artefact\npointers — the paid differentiator); the bridge enforces this. The\n`audit_trail` and the inline `drawing` preview are present on BOTH tiers\n(V1 ALIGN / 60th-fire D + C). `text_summary` is bounded to 2000 chars —\nkeeps the LLM-facing summary token-cheap and forces longer narrative into\nBoQ row descriptions where it belongs. `warnings` is the non-fatal\ngeometry advisory list (both tiers).",
        +            "properties": {
        +              "assembly_slug": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "audit_trail": {
        +                "anyOf": [
        +                  {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.7 — paid-tier audit-trail entry.\n\nOne entry per BoQ row; `boq_row_index` ties to the row position in\n`ComputeResult.boq_rows`. `derivation` is the human-readable formula\nwalk-through; `formula` is the optional formal expression.",
        +                      "properties": {
        +                        "boq_row_index": {
        +                          "minimum": 0,
        +                          "type": "integer"
        +                        },
        +                        "derivation": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "formula": {
        +                          "anyOf": [
        +                            {
        +                              "type": "string"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ],
        +                          "default": null
        +                        },
        +                        "id": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "parameters_referenced": {
        +                          "items": {
        +                            "type": "string"
        +                          },
        +                          "type": "array"
        +                        }
        +                      },
        +                      "required": [
        +                        "id",
        +                        "boq_row_index",
        +                        "derivation"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "boq_rows": {
        +                "items": {
        +                  "additionalProperties": false,
        +                  "description": "Schema § 1.3 — a single bill row in the requested standard's format.\n\n`description` is the non-verbatim functional description per spec § 13.9 /\n§ 15 invariant — NEVER reproduces a standard's verbatim clause text.\n`rate` / `amount` ship null because rates are commodity data the customer\nowns; the engine's job is the measurement, not the pricing.",
        +                  "properties": {
        +                    "amount": {
        +                      "anyOf": [
        +                        {
        +                          "type": "number"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "attribution": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "audit_id": {
        +                      "anyOf": [
        +                        {
        +                          "type": "string"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "description": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "quantity": {
        +                      "minimum": 0,
        +                      "type": "number"
        +                    },
        +                    "rate": {
        +                      "anyOf": [
        +                        {
        +                          "type": "number"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "unit": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "work_section": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    }
        +                  },
        +                  "required": [
        +                    "work_section",
        +                    "description",
        +                    "quantity",
        +                    "unit",
        +                    "attribution"
        +                  ],
        +                  "type": "object"
        +                },
        +                "type": "array"
        +              },
        +              "drawing": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": false,
        +                    "description": "Schema § 1.6a — inline server-rendered SVG preview of the geometry.\n\nThe MCP mirror of the web ``/compute`` response's ``drawing`` field\n(``api.schemas.compute.DrawingRef``): the same on-screen dimensioned\ndrawing both tiers see in the workspace, surfaced on the MCP compute\nresponse so a chat client can render it inline (60th-fire item C). This\nis the on-screen preview — present on BOTH tiers per the free/paid\nboundary; the downloadable CAD artefacts (DXF / dimensioned PDF) remain\nthe paid differentiator via the export tools.\n\nDefined here rather than importing ``DrawingRef`` because the web\n``schemas`` package imports back into this module (``schemas.render``),\nso reusing it would create an import cycle — the MCP wire contract keeps\nits own copy, the same pattern as ``BoQRow`` / ``DrawingReference``.",
        +                    "properties": {
        +                      "entity_count": {
        +                        "minimum": 0,
        +                        "type": "integer"
        +                      },
        +                      "svg_b64": {
        +                        "minLength": 1,
        +                        "type": "string"
        +                      },
        +                      "unit_of_drawing": {
        +                        "const": "m",
        +                        "default": "m",
        +                        "type": "string"
        +                      },
        +                      "viewbox_height": {
        +                        "exclusiveMinimum": 0,
        +                        "type": "number"
        +                      },
        +                      "viewbox_width": {
        +                        "exclusiveMinimum": 0,
        +                        "type": "number"
        +                      },
        +                      "viewbox_x": {
        +                        "type": "number"
        +                      },
        +                      "viewbox_y": {
        +                        "type": "number"
        +                      }
        +                    },
        +                    "required": [
        +                      "svg_b64",
        +                      "viewbox_x",
        +                      "viewbox_y",
        +                      "viewbox_width",
        +                      "viewbox_height",
        +                      "entity_count"
        +                    ],
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "drawings": {
        +                "anyOf": [
        +                  {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.6 — paid-tier drawing artefact pointer.\n\n`url` is an R2-signed URL; expiry is carried in `_meta.deliverables.expires_at`\non the envelope (not duplicated here). `layers` is DXF-only; PDF/SVG\ncallers omit it.",
        +                      "properties": {
        +                        "drawing_type": {
        +                          "enum": [
        +                            "section",
        +                            "plan",
        +                            "elevation",
        +                            "isometric",
        +                            "detail"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "format": {
        +                          "enum": [
        +                            "DXF",
        +                            "PDF",
        +                            "SVG"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "layers": {
        +                          "anyOf": [
        +                            {
        +                              "items": {
        +                                "type": "string"
        +                              },
        +                              "type": "array"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ],
        +                          "default": null
        +                        },
        +                        "scale": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "sheet_size": {
        +                          "enum": [
        +                            "A1",
        +                            "A2",
        +                            "A3",
        +                            "A4"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "url": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "drawing_type",
        +                        "format",
        +                        "url",
        +                        "sheet_size",
        +                        "scale"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "parameters_used": {
        +                "additionalProperties": false,
        +                "description": "Schema § 1.2 — the parameter snapshot the engine actually used.\n\nSplits user-supplied values from engine defaults so customers can see\nwhich numbers came from them and which the engine filled in. Every\ndefaulted parameter SHOULD have a corresponding entry in `assumptions`\n— the bridge layer enforces this when wrapping engine output.",
        +                "properties": {
        +                  "assumptions": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "engine_defaults": {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  "user_supplied": {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  }
        +                },
        +                "type": "object"
        +              },
        +              "standard": {
        +                "enum": [
        +                  "CESMM4",
        +                  "NRM2",
        +                  "SMM7",
        +                  "MMHW"
        +                ],
        +                "type": "string"
        +              },
        +              "text_summary": {
        +                "maxLength": 2000,
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "totals_summary": {
        +                "additionalProperties": false,
        +                "description": "Schema § 1.4 — totals_summary as a typed wrapper around the free-form dict.\n\nWire shape is a flat object (`{\"concrete_m3\": {...}, \"rebar_t\": {...}}`).\nWe model it as `RootModel`-equivalent via `model_config(extra=\"allow\")`\n+ a single `__root__`-style `entries` dict. Pydantic v2 recommends\n`RootModel` for free-form roots; using a wrapper class keeps the import\nsurface uniform with the rest of this module.",
        +                "properties": {
        +                  "entries": {
        +                    "additionalProperties": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.4 — single material/work-class total entry.",
        +                      "properties": {
        +                        "quantity": {
        +                          "minimum": 0,
        +                          "type": "number"
        +                        },
        +                        "unit": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "quantity",
        +                        "unit"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "object"
        +                  }
        +                },
        +                "type": "object"
        +              },
        +              "warnings": {
        +                "items": {
        +                  "additionalProperties": false,
        +                  "description": "Schema § 1.8 — a non-fatal geometry advisory (56th-fire T2).\n\nThe wire projection of the engine's `core.GeometryWarning`. Advisory only:\na warning NEVER changes a measured quantity — it flags geometry that is\nvalid but likely a mistake (e.g. a stale dependent-height default). Present\non BOTH tiers — a correctness/safety signal, not a paid feature.",
        +                  "properties": {
        +                    "affected_params": {
        +                      "items": {
        +                        "type": "string"
        +                      },
        +                      "type": "array"
        +                    },
        +                    "code": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "detail": {
        +                      "additionalProperties": {
        +                        "type": "number"
        +                      },
        +                      "type": "object"
        +                    },
        +                    "message": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "severity": {
        +                      "enum": [
        +                        "info",
        +                        "advisory",
        +                        "caution"
        +                      ],
        +                      "type": "string"
        +                    }
        +                  },
        +                  "required": [
        +                    "code",
        +                    "severity",
        +                    "message"
        +                  ],
        +                  "type": "object"
        +                },
        +                "type": "array"
        +              }
        +            },
        +            "required": [
        +              "assembly_slug",
        +              "standard",
        +              "parameters_used",
        +              "boq_rows",
        +              "totals_summary",
        +              "text_summary"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      },
        +      "error": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        +            "properties": {
        +              "code": {
        +                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        +                "enum": [
        +                  "RATE_LIMIT_EXCEEDED",
        +                  "TIER_INSUFFICIENT",
        +                  "INVALID_INPUT",
        +                  "SCHEMA_VERSION_MISMATCH",
        +                  "SCHEMA_INVARIANT_VIOLATION",
        +                  "UPSTREAM_TIMEOUT",
        +                  "BACKEND_FAILURE",
        +                  "IP_BLOCKED",
        +                  "RESOURCE_NOT_FOUND",
        +                  "RENDER_FAILURE",
        +                  "OCR_LOW_CONFIDENCE",
        +                  "MANUAL_REVIEW_REQUIRED",
        +                  "ACCEPTANCE_REQUIRED",
        +                  "INVALID_TOKEN"
        +                ],
        +                "type": "string"
        +              },
        +              "details": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "message": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "recoverable": {
        +                "type": "boolean"
        +              },
        +              "retry_after_seconds": {
        +                "anyOf": [
        +                  {
        +                    "minimum": 0,
        +                    "type": "integer"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              }
        +            },
        +            "required": [
        +              "code",
        +              "message",
        +              "recoverable"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      }
        +    },
        +    "required": [
        +      "_meta"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "_meta": {
        +        "additionalProperties": false,
        +        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        +        "properties": {
        +          "deliverables": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        +                "properties": {
        +                  "docx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "dxf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "expires_at": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  },
        +                  "pdf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "xlsx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "expires_at"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "document_id": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "issued_at": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "rate_limit_remaining": {
        +            "anyOf": [
        +              {
        +                "minimum": 0,
        +                "type": "integer"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "request_id": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "schema_version": {
        +            "const": "1.0.0",
        +            "default": "1.0.0",
        +            "type": "string"
        +          },
        +          "scope_boundary": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        +                "properties": {
        +                  "not_in_scope": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "produced": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "recommended_companions": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "type": "string"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "produced",
        +                  "not_in_scope"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tier": {
        +            "enum": [
        +              "free",
        +              "paid"
        +            ],
        +            "type": "string"
        +          },
        +          "tier_upgrade": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        +                "properties": {
        +                  "available_tiers": {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        +                      "properties": {
        +                        "billing": {
        +                          "enum": [
        +                            "one_off",
        +                            "monthly",
        +                            "annual"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "currency": {
        +                          "enum": [
        +                            "GBP",
        +                            "SGD",
        +                            "EUR",
        +                            "USD",
        +                            "CAD",
        +                            "AUD",
        +                            "NZD",
        +                            "MYR"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "display_name": {
        +                          "type": "string"
        +                        },
        +                        "price_local": {
        +                          "type": "number"
        +                        },
        +                        "tier_slug": {
        +                          "enum": [
        +                            "7_day_pass",
        +                            "solo",
        +                            "studio",
        +                            "practice"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "unlock_summary": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "tier_slug",
        +                        "display_name",
        +                        "price_local",
        +                        "currency",
        +                        "billing",
        +                        "unlock_summary"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "current_tier": {
        +                    "const": "free",
        +                    "default": "free",
        +                    "type": "string"
        +                  },
        +                  "pass_credit": {
        +                    "anyOf": [
        +                      {
        +                        "additionalProperties": false,
        +                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        +                        "properties": {
        +                          "amount_local": {
        +                            "type": "number"
        +                          },
        +                          "applies_to": {
        +                            "const": "solo_first_month",
        +                            "default": "solo_first_month",
        +                            "type": "string"
        +                          },
        +                          "currency": {
        +                            "type": "string"
        +                          },
        +                          "redeemable_until": {
        +                            "type": "string"
        +                          }
        +                        },
        +                        "required": [
        +                          "amount_local",
        +                          "currency",
        +                          "redeemable_until"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "pricing_url": {
        +                    "default": "https://civilquants.com/pricing",
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "available_tiers"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tos_url": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "upgrade_hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "warranty_disclaimer": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          }
        +        },
        +        "required": [
        +          "request_id",
        +          "issued_at",
        +          "tier"
        +        ],
        +        "type": "object"
        +      },
        +      "data": {
        +        "default": null,
        +        "title": "Data"
        +      },
        +      "error": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        +            "properties": {
        +              "code": {
        +                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        +                "enum": [
        +                  "RATE_LIMIT_EXCEEDED",
        +                  "TIER_INSUFFICIENT",
        +                  "INVALID_INPUT",
        +                  "SCHEMA_VERSION_MISMATCH",
        +                  "SCHEMA_INVARIANT_VIOLATION",
        +                  "UPSTREAM_TIMEOUT",
        +                  "BACKEND_FAILURE",
        +                  "IP_BLOCKED",
        +                  "RESOURCE_NOT_FOUND",
        +                  "RENDER_FAILURE",
        +                  "OCR_LOW_CONFIDENCE",
        +                  "MANUAL_REVIEW_REQUIRED",
        +                  "ACCEPTANCE_REQUIRED",
        +                  "INVALID_TOKEN"
        +                ],
        +                "type": "string"
        +              },
        +              "details": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "message": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "recoverable": {
        +                "type": "boolean"
        +              },
        +              "retry_after_seconds": {
        +                "anyOf": [
        +                  {
        +                    "minimum": 0,
        +                    "type": "integer"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              }
        +            },
        +            "required": [
        +              "code",
        +              "message",
        +              "recoverable"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      }
        +    },
        +    "required": [
        +      "_meta"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedcompute_gabion_wall1 field changed
      • changedOutput schema / properties / result / anyOf
        Previous value: -[
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "_meta": {
        -        "additionalProperties": false,
        -        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        -        "properties": {
        -          "deliverables": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        -                "properties": {
        -                  "docx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "dxf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "expires_at": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  },
        -                  "pdf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "xlsx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "expires_at"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "document_id": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "issued_at": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "rate_limit_remaining": {
        -            "anyOf": [
        -              {
        -                "minimum": 0,
        -                "type": "integer"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "request_id": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "schema_version": {
        -            "const": "1.0.0",
        -            "default": "1.0.0",
        -            "type": "string"
        -          },
        -          "scope_boundary": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        -                "properties": {
        -                  "not_in_scope": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "produced": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "recommended_companions": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "type": "string"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "produced",
        -                  "not_in_scope"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tier": {
        -            "enum": [
        -              "free",
        -              "paid"
        -            ],
        -            "type": "string"
        -          },
        -          "tier_upgrade": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        -                "properties": {
        -                  "available_tiers": {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        -                      "properties": {
        -                        "billing": {
        -                          "enum": [
        -                            "one_off",
        -                            "monthly",
        -                            "annual"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "currency": {
        -                          "enum": [
        -                            "GBP",
        -                            "SGD",
        -                            "EUR",
        -                            "USD",
        -                            "CAD",
        -                            "AUD",
        -                            "NZD",
        -                            "MYR"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "display_name": {
        -                          "type": "string"
        -                        },
        -                        "price_local": {
        -                          "type": "number"
        -                        },
        -                        "tier_slug": {
        -                          "enum": [
        -                            "7_day_pass",
        -                            "solo",
        -                            "studio",
        -                            "practice"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "unlock_summary": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "tier_slug",
        -                        "display_name",
        -                        "price_local",
        -                        "currency",
        -                        "billing",
        -                        "unlock_summary"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "current_tier": {
        -                    "const": "free",
        -                    "default": "free",
        -                    "type": "string"
        -                  },
        -                  "pass_credit": {
        -                    "anyOf": [
        -                      {
        -                        "additionalProperties": false,
        -                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        -                        "properties": {
        -                          "amount_local": {
        -                            "type": "number"
        -                          },
        -                          "applies_to": {
        -                            "const": "solo_first_month",
        -                            "default": "solo_first_month",
        -                            "type": "string"
        -                          },
        -                          "currency": {
        -                            "type": "string"
        -                          },
        -                          "redeemable_until": {
        -                            "type": "string"
        -                          }
        -                        },
        -                        "required": [
        -                          "amount_local",
        -                          "currency",
        -                          "redeemable_until"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "pricing_url": {
        -                    "default": "https://civilquants.com/pricing",
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "available_tiers"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tos_url": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "upgrade_hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "warranty_disclaimer": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          }
        -        },
        -        "required": [
        -          "request_id",
        -          "issued_at",
        -          "tier"
        -        ],
        -        "type": "object"
        -      },
        -      "data": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Schema § 1.1 — the typed payload returned inside `MCPResponse[ComputeResult]`.\n\nFree-tier responses omit `drawings` (the downloadable CAD artefact\npointers — the paid differentiator); the bridge enforces this. The\n`audit_trail` and the inline `drawing` preview are present on BOTH tiers\n(V1 ALIGN / 60th-fire D + C). `text_summary` is bounded to 2000 chars —\nkeeps the LLM-facing summary token-cheap and forces longer narrative into\nBoQ row descriptions where it belongs. `warnings` is the non-fatal\ngeometry advisory list (both tiers).",
        -            "properties": {
        -              "assembly_slug": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "audit_trail": {
        -                "anyOf": [
        -                  {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.7 — paid-tier audit-trail entry.\n\nOne entry per BoQ row; `boq_row_index` ties to the row position in\n`ComputeResult.boq_rows`. `derivation` is the human-readable formula\nwalk-through; `formula` is the optional formal expression.",
        -                      "properties": {
        -                        "boq_row_index": {
        -                          "minimum": 0,
        -                          "type": "integer"
        -                        },
        -                        "derivation": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "formula": {
        -                          "anyOf": [
        -                            {
        -                              "type": "string"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ],
        -                          "default": null
        -                        },
        -                        "id": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "parameters_referenced": {
        -                          "items": {
        -                            "type": "string"
        -                          },
        -                          "type": "array"
        -                        }
        -                      },
        -                      "required": [
        -                        "id",
        -                        "boq_row_index",
        -                        "derivation"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "boq_rows": {
        -                "items": {
        -                  "additionalProperties": false,
        -                  "description": "Schema § 1.3 — a single bill row in the requested standard's format.\n\n`description` is the non-verbatim functional description per spec § 13.9 /\n§ 15 invariant — NEVER reproduces a standard's verbatim clause text.\n`rate` / `amount` ship null because rates are commodity data the customer\nowns; the engine's job is the measurement, not the pricing.",
        -                  "properties": {
        -                    "amount": {
        -                      "anyOf": [
        -                        {
        -                          "type": "number"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "attribution": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "audit_id": {
        -                      "anyOf": [
        -                        {
        -                          "type": "string"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "description": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "quantity": {
        -                      "minimum": 0,
        -                      "type": "number"
        -                    },
        -                    "rate": {
        -                      "anyOf": [
        -                        {
        -                          "type": "number"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "unit": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "work_section": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    }
        -                  },
        -                  "required": [
        -                    "work_section",
        -                    "description",
        -                    "quantity",
        -                    "unit",
        -                    "attribution"
        -                  ],
        -                  "type": "object"
        -                },
        -                "type": "array"
        -              },
        -              "drawing": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": false,
        -                    "description": "Schema § 1.6a — inline server-rendered SVG preview of the geometry.\n\nThe MCP mirror of the web ``/compute`` response's ``drawing`` field\n(``api.schemas.compute.DrawingRef``): the same on-screen dimensioned\ndrawing both tiers see in the workspace, surfaced on the MCP compute\nresponse so a chat client can render it inline (60th-fire item C). This\nis the on-screen preview — present on BOTH tiers per the free/paid\nboundary; the downloadable CAD artefacts (DXF / dimensioned PDF) remain\nthe paid differentiator via the export tools.\n\nDefined here rather than importing ``DrawingRef`` because the web\n``schemas`` package imports back into this module (``schemas.render``),\nso reusing it would create an import cycle — the MCP wire contract keeps\nits own copy, the same pattern as ``BoQRow`` / ``DrawingReference``.",
        -                    "properties": {
        -                      "entity_count": {
        -                        "minimum": 0,
        -                        "type": "integer"
        -                      },
        -                      "svg_b64": {
        -                        "minLength": 1,
        -                        "type": "string"
        -                      },
        -                      "unit_of_drawing": {
        -                        "const": "m",
        -                        "default": "m",
        -                        "type": "string"
        -                      },
        -                      "viewbox_height": {
        -                        "exclusiveMinimum": 0,
        -                        "type": "number"
        -                      },
        -                      "viewbox_width": {
        -                        "exclusiveMinimum": 0,
        -                        "type": "number"
        -                      },
        -                      "viewbox_x": {
        -                        "type": "number"
        -                      },
        -                      "viewbox_y": {
        -                        "type": "number"
        -                      }
        -                    },
        -                    "required": [
        -                      "svg_b64",
        -                      "viewbox_x",
        -                      "viewbox_y",
        -                      "viewbox_width",
        -                      "viewbox_height",
        -                      "entity_count"
        -                    ],
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "drawings": {
        -                "anyOf": [
        -                  {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.6 — paid-tier drawing artefact pointer.\n\n`url` is an R2-signed URL; expiry is carried in `_meta.deliverables.expires_at`\non the envelope (not duplicated here). `layers` is DXF-only; PDF/SVG\ncallers omit it.",
        -                      "properties": {
        -                        "drawing_type": {
        -                          "enum": [
        -                            "section",
        -                            "plan",
        -                            "elevation",
        -                            "isometric",
        -                            "detail"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "format": {
        -                          "enum": [
        -                            "DXF",
        -                            "PDF",
        -                            "SVG"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "layers": {
        -                          "anyOf": [
        -                            {
        -                              "items": {
        -                                "type": "string"
        -                              },
        -                              "type": "array"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ],
        -                          "default": null
        -                        },
        -                        "scale": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "sheet_size": {
        -                          "enum": [
        -                            "A1",
        -                            "A2",
        -                            "A3",
        -                            "A4"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "url": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "drawing_type",
        -                        "format",
        -                        "url",
        -                        "sheet_size",
        -                        "scale"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "parameters_used": {
        -                "additionalProperties": false,
        -                "description": "Schema § 1.2 — the parameter snapshot the engine actually used.\n\nSplits user-supplied values from engine defaults so customers can see\nwhich numbers came from them and which the engine filled in. Every\ndefaulted parameter SHOULD have a corresponding entry in `assumptions`\n— the bridge layer enforces this when wrapping engine output.",
        -                "properties": {
        -                  "assumptions": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "engine_defaults": {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  "resolved_from_description": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "additionalProperties": false,
        -                          "description": "Schema § 1.2 — a parameter resolved by the forgiving-input layer.\n\nPopulated by the Track B-Forgiving Haiku-4.5 resolution pass; until that\nlayer lands, instances are constructed only by tests. `source` distinguishes\nthe resolution path so customers can audit which fields were inferred.",
        -                          "properties": {
        -                            "confidence": {
        -                              "anyOf": [
        -                                {
        -                                  "enum": [
        -                                    "high",
        -                                    "medium",
        -                                    "low"
        -                                  ],
        -                                  "type": "string"
        -                                },
        -                                {
        -                                  "type": "null"
        -                                }
        -                              ],
        -                              "default": null
        -                            },
        -                            "field_name": {
        -                              "minLength": 1,
        -                              "type": "string"
        -                            },
        -                            "resolved_value": {},
        -                            "source": {
        -                              "enum": [
        -                                "description_field",
        -                                "haiku_resolution",
        -                                "engine_default"
        -                              ],
        -                              "type": "string"
        -                            }
        -                          },
        -                          "required": [
        -                            "field_name",
        -                            "resolved_value",
        -                            "source"
        -                          ],
        -                          "type": "object"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "user_supplied": {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  }
        -                },
        -                "type": "object"
        -              },
        -              "standard": {
        -                "enum": [
        -                  "CESMM4",
        -                  "NRM2",
        -                  "SMM7",
        -                  "MMHW"
        -                ],
        -                "type": "string"
        -              },
        -              "text_summary": {
        -                "maxLength": 2000,
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "totals_summary": {
        -                "additionalProperties": false,
        -                "description": "Schema § 1.4 — totals_summary as a typed wrapper around the free-form dict.\n\nWire shape is a flat object (`{\"concrete_m3\": {...}, \"rebar_t\": {...}}`).\nWe model it as `RootModel`-equivalent via `model_config(extra=\"allow\")`\n+ a single `__root__`-style `entries` dict. Pydantic v2 recommends\n`RootModel` for free-form roots; using a wrapper class keeps the import\nsurface uniform with the rest of this module.",
        -                "properties": {
        -                  "entries": {
        -                    "additionalProperties": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.4 — single material/work-class total entry.",
        -                      "properties": {
        -                        "quantity": {
        -                          "minimum": 0,
        -                          "type": "number"
        -                        },
        -                        "unit": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "quantity",
        -                        "unit"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "object"
        -                  }
        -                },
        -                "type": "object"
        -              },
        -              "warnings": {
        -                "items": {
        -                  "additionalProperties": false,
        -                  "description": "Schema § 1.8 — a non-fatal geometry advisory (56th-fire T2).\n\nThe wire projection of the engine's `core.GeometryWarning`. Advisory only:\na warning NEVER changes a measured quantity — it flags geometry that is\nvalid but likely a mistake (e.g. a stale dependent-height default). Present\non BOTH tiers — a correctness/safety signal, not a paid feature.",
        -                  "properties": {
        -                    "affected_params": {
        -                      "items": {
        -                        "type": "string"
        -                      },
        -                      "type": "array"
        -                    },
        -                    "code": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "detail": {
        -                      "additionalProperties": {
        -                        "type": "number"
        -                      },
        -                      "type": "object"
        -                    },
        -                    "message": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "severity": {
        -                      "enum": [
        -                        "info",
        -                        "advisory",
        -                        "caution"
        -                      ],
        -                      "type": "string"
        -                    }
        -                  },
        -                  "required": [
        -                    "code",
        -                    "severity",
        -                    "message"
        -                  ],
        -                  "type": "object"
        -                },
        -                "type": "array"
        -              }
        -            },
        -            "required": [
        -              "assembly_slug",
        -              "standard",
        -              "parameters_used",
        -              "boq_rows",
        -              "totals_summary",
        -              "text_summary"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      },
        -      "error": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        -            "properties": {
        -              "code": {
        -                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        -                "enum": [
        -                  "RATE_LIMIT_EXCEEDED",
        -                  "TIER_INSUFFICIENT",
        -                  "INVALID_INPUT",
        -                  "SCHEMA_VERSION_MISMATCH",
        -                  "SCHEMA_INVARIANT_VIOLATION",
        -                  "UPSTREAM_TIMEOUT",
        -                  "BACKEND_FAILURE",
        -                  "IP_BLOCKED",
        -                  "RESOURCE_NOT_FOUND",
        -                  "RENDER_FAILURE",
        -                  "OCR_LOW_CONFIDENCE",
        -                  "MANUAL_REVIEW_REQUIRED",
        -                  "ACCEPTANCE_REQUIRED",
        -                  "INVALID_TOKEN"
        -                ],
        -                "type": "string"
        -              },
        -              "details": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "message": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "recoverable": {
        -                "type": "boolean"
        -              },
        -              "retry_after_seconds": {
        -                "anyOf": [
        -                  {
        -                    "minimum": 0,
        -                    "type": "integer"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              }
        -            },
        -            "required": [
        -              "code",
        -              "message",
        -              "recoverable"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      }
        -    },
        -    "required": [
        -      "_meta"
        -    ],
        -    "type": "object"
        -  },
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "_meta": {
        -        "additionalProperties": false,
        -        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        -        "properties": {
        -          "deliverables": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        -                "properties": {
        -                  "docx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "dxf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "expires_at": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  },
        -                  "pdf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "xlsx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "expires_at"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "document_id": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "issued_at": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "rate_limit_remaining": {
        -            "anyOf": [
        -              {
        -                "minimum": 0,
        -                "type": "integer"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "request_id": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "schema_version": {
        -            "const": "1.0.0",
        -            "default": "1.0.0",
        -            "type": "string"
        -          },
        -          "scope_boundary": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        -                "properties": {
        -                  "not_in_scope": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "produced": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "recommended_companions": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "type": "string"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "produced",
        -                  "not_in_scope"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tier": {
        -            "enum": [
        -              "free",
        -              "paid"
        -            ],
        -            "type": "string"
        -          },
        -          "tier_upgrade": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        -                "properties": {
        -                  "available_tiers": {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        -                      "properties": {
        -                        "billing": {
        -                          "enum": [
        -                            "one_off",
        -                            "monthly",
        -                            "annual"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "currency": {
        -                          "enum": [
        -                            "GBP",
        -                            "SGD",
        -                            "EUR",
        -                            "USD",
        -                            "CAD",
        -                            "AUD",
        -                            "NZD",
        -                            "MYR"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "display_name": {
        -                          "type": "string"
        -                        },
        -                        "price_local": {
        -                          "type": "number"
        -                        },
        -                        "tier_slug": {
        -                          "enum": [
        -                            "7_day_pass",
        -                            "solo",
        -                            "studio",
        -                            "practice"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "unlock_summary": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "tier_slug",
        -                        "display_name",
        -                        "price_local",
        -                        "currency",
        -                        "billing",
        -                        "unlock_summary"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "current_tier": {
        -                    "const": "free",
        -                    "default": "free",
        -                    "type": "string"
        -                  },
        -                  "pass_credit": {
        -                    "anyOf": [
        -                      {
        -                        "additionalProperties": false,
        -                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        -                        "properties": {
        -                          "amount_local": {
        -                            "type": "number"
        -                          },
        -                          "applies_to": {
        -                            "const": "solo_first_month",
        -                            "default": "solo_first_month",
        -                            "type": "string"
        -                          },
        -                          "currency": {
        -                            "type": "string"
        -                          },
        -                          "redeemable_until": {
        -                            "type": "string"
        -                          }
        -                        },
        -                        "required": [
        -                          "amount_local",
        -                          "currency",
        -                          "redeemable_until"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "pricing_url": {
        -                    "default": "https://civilquants.com/pricing",
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "available_tiers"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tos_url": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "upgrade_hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "warranty_disclaimer": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          }
        -        },
        -        "required": [
        -          "request_id",
        -          "issued_at",
        -          "tier"
        -        ],
        -        "type": "object"
        -      },
        -      "data": {
        -        "default": null,
        -        "title": "Data"
        -      },
        -      "error": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        -            "properties": {
        -              "code": {
        -                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        -                "enum": [
        -                  "RATE_LIMIT_EXCEEDED",
        -                  "TIER_INSUFFICIENT",
        -                  "INVALID_INPUT",
        -                  "SCHEMA_VERSION_MISMATCH",
        -                  "SCHEMA_INVARIANT_VIOLATION",
        -                  "UPSTREAM_TIMEOUT",
        -                  "BACKEND_FAILURE",
        -                  "IP_BLOCKED",
        -                  "RESOURCE_NOT_FOUND",
        -                  "RENDER_FAILURE",
        -                  "OCR_LOW_CONFIDENCE",
        -                  "MANUAL_REVIEW_REQUIRED",
        -                  "ACCEPTANCE_REQUIRED",
        -                  "INVALID_TOKEN"
        -                ],
        -                "type": "string"
        -              },
        -              "details": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "message": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "recoverable": {
        -                "type": "boolean"
        -              },
        -              "retry_after_seconds": {
        -                "anyOf": [
        -                  {
        -                    "minimum": 0,
        -                    "type": "integer"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              }
        -            },
        -            "required": [
        -              "code",
        -              "message",
        -              "recoverable"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      }
        -    },
        -    "required": [
        -      "_meta"
        -    ],
        -    "type": "object"
        -  }
        -]New value: +[
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "_meta": {
        +        "additionalProperties": false,
        +        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        +        "properties": {
        +          "deliverables": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        +                "properties": {
        +                  "docx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "dxf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "expires_at": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  },
        +                  "pdf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "xlsx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "expires_at"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "document_id": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "issued_at": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "rate_limit_remaining": {
        +            "anyOf": [
        +              {
        +                "minimum": 0,
        +                "type": "integer"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "request_id": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "schema_version": {
        +            "const": "1.0.0",
        +            "default": "1.0.0",
        +            "type": "string"
        +          },
        +          "scope_boundary": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        +                "properties": {
        +                  "not_in_scope": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "produced": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "recommended_companions": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "type": "string"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "produced",
        +                  "not_in_scope"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tier": {
        +            "enum": [
        +              "free",
        +              "paid"
        +            ],
        +            "type": "string"
        +          },
        +          "tier_upgrade": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        +                "properties": {
        +                  "available_tiers": {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        +                      "properties": {
        +                        "billing": {
        +                          "enum": [
        +                            "one_off",
        +                            "monthly",
        +                            "annual"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "currency": {
        +                          "enum": [
        +                            "GBP",
        +                            "SGD",
        +                            "EUR",
        +                            "USD",
        +                            "CAD",
        +                            "AUD",
        +                            "NZD",
        +                            "MYR"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "display_name": {
        +                          "type": "string"
        +                        },
        +                        "price_local": {
        +                          "type": "number"
        +                        },
        +                        "tier_slug": {
        +                          "enum": [
        +                            "7_day_pass",
        +                            "solo",
        +                            "studio",
        +                            "practice"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "unlock_summary": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "tier_slug",
        +                        "display_name",
        +                        "price_local",
        +                        "currency",
        +                        "billing",
        +                        "unlock_summary"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "current_tier": {
        +                    "const": "free",
        +                    "default": "free",
        +                    "type": "string"
        +                  },
        +                  "pass_credit": {
        +                    "anyOf": [
        +                      {
        +                        "additionalProperties": false,
        +                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        +                        "properties": {
        +                          "amount_local": {
        +                            "type": "number"
        +                          },
        +                          "applies_to": {
        +                            "const": "solo_first_month",
        +                            "default": "solo_first_month",
        +                            "type": "string"
        +                          },
        +                          "currency": {
        +                            "type": "string"
        +                          },
        +                          "redeemable_until": {
        +                            "type": "string"
        +                          }
        +                        },
        +                        "required": [
        +                          "amount_local",
        +                          "currency",
        +                          "redeemable_until"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "pricing_url": {
        +                    "default": "https://civilquants.com/pricing",
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "available_tiers"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tos_url": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "upgrade_hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "warranty_disclaimer": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          }
        +        },
        +        "required": [
        +          "request_id",
        +          "issued_at",
        +          "tier"
        +        ],
        +        "type": "object"
        +      },
        +      "data": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Schema § 1.1 — the typed payload returned inside `MCPResponse[ComputeResult]`.\n\nFree-tier responses omit `drawings` (the downloadable CAD artefact\npointers — the paid differentiator); the bridge enforces this. The\n`audit_trail` and the inline `drawing` preview are present on BOTH tiers\n(V1 ALIGN / 60th-fire D + C). `text_summary` is bounded to 2000 chars —\nkeeps the LLM-facing summary token-cheap and forces longer narrative into\nBoQ row descriptions where it belongs. `warnings` is the non-fatal\ngeometry advisory list (both tiers).",
        +            "properties": {
        +              "assembly_slug": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "audit_trail": {
        +                "anyOf": [
        +                  {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.7 — paid-tier audit-trail entry.\n\nOne entry per BoQ row; `boq_row_index` ties to the row position in\n`ComputeResult.boq_rows`. `derivation` is the human-readable formula\nwalk-through; `formula` is the optional formal expression.",
        +                      "properties": {
        +                        "boq_row_index": {
        +                          "minimum": 0,
        +                          "type": "integer"
        +                        },
        +                        "derivation": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "formula": {
        +                          "anyOf": [
        +                            {
        +                              "type": "string"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ],
        +                          "default": null
        +                        },
        +                        "id": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "parameters_referenced": {
        +                          "items": {
        +                            "type": "string"
        +                          },
        +                          "type": "array"
        +                        }
        +                      },
        +                      "required": [
        +                        "id",
        +                        "boq_row_index",
        +                        "derivation"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "boq_rows": {
        +                "items": {
        +                  "additionalProperties": false,
        +                  "description": "Schema § 1.3 — a single bill row in the requested standard's format.\n\n`description` is the non-verbatim functional description per spec § 13.9 /\n§ 15 invariant — NEVER reproduces a standard's verbatim clause text.\n`rate` / `amount` ship null because rates are commodity data the customer\nowns; the engine's job is the measurement, not the pricing.",
        +                  "properties": {
        +                    "amount": {
        +                      "anyOf": [
        +                        {
        +                          "type": "number"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "attribution": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "audit_id": {
        +                      "anyOf": [
        +                        {
        +                          "type": "string"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "description": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "quantity": {
        +                      "minimum": 0,
        +                      "type": "number"
        +                    },
        +                    "rate": {
        +                      "anyOf": [
        +                        {
        +                          "type": "number"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "unit": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "work_section": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    }
        +                  },
        +                  "required": [
        +                    "work_section",
        +                    "description",
        +                    "quantity",
        +                    "unit",
        +                    "attribution"
        +                  ],
        +                  "type": "object"
        +                },
        +                "type": "array"
        +              },
        +              "drawing": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": false,
        +                    "description": "Schema § 1.6a — inline server-rendered SVG preview of the geometry.\n\nThe MCP mirror of the web ``/compute`` response's ``drawing`` field\n(``api.schemas.compute.DrawingRef``): the same on-screen dimensioned\ndrawing both tiers see in the workspace, surfaced on the MCP compute\nresponse so a chat client can render it inline (60th-fire item C). This\nis the on-screen preview — present on BOTH tiers per the free/paid\nboundary; the downloadable CAD artefacts (DXF / dimensioned PDF) remain\nthe paid differentiator via the export tools.\n\nDefined here rather than importing ``DrawingRef`` because the web\n``schemas`` package imports back into this module (``schemas.render``),\nso reusing it would create an import cycle — the MCP wire contract keeps\nits own copy, the same pattern as ``BoQRow`` / ``DrawingReference``.",
        +                    "properties": {
        +                      "entity_count": {
        +                        "minimum": 0,
        +                        "type": "integer"
        +                      },
        +                      "svg_b64": {
        +                        "minLength": 1,
        +                        "type": "string"
        +                      },
        +                      "unit_of_drawing": {
        +                        "const": "m",
        +                        "default": "m",
        +                        "type": "string"
        +                      },
        +                      "viewbox_height": {
        +                        "exclusiveMinimum": 0,
        +                        "type": "number"
        +                      },
        +                      "viewbox_width": {
        +                        "exclusiveMinimum": 0,
        +                        "type": "number"
        +                      },
        +                      "viewbox_x": {
        +                        "type": "number"
        +                      },
        +                      "viewbox_y": {
        +                        "type": "number"
        +                      }
        +                    },
        +                    "required": [
        +                      "svg_b64",
        +                      "viewbox_x",
        +                      "viewbox_y",
        +                      "viewbox_width",
        +                      "viewbox_height",
        +                      "entity_count"
        +                    ],
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "drawings": {
        +                "anyOf": [
        +                  {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.6 — paid-tier drawing artefact pointer.\n\n`url` is an R2-signed URL; expiry is carried in `_meta.deliverables.expires_at`\non the envelope (not duplicated here). `layers` is DXF-only; PDF/SVG\ncallers omit it.",
        +                      "properties": {
        +                        "drawing_type": {
        +                          "enum": [
        +                            "section",
        +                            "plan",
        +                            "elevation",
        +                            "isometric",
        +                            "detail"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "format": {
        +                          "enum": [
        +                            "DXF",
        +                            "PDF",
        +                            "SVG"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "layers": {
        +                          "anyOf": [
        +                            {
        +                              "items": {
        +                                "type": "string"
        +                              },
        +                              "type": "array"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ],
        +                          "default": null
        +                        },
        +                        "scale": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "sheet_size": {
        +                          "enum": [
        +                            "A1",
        +                            "A2",
        +                            "A3",
        +                            "A4"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "url": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "drawing_type",
        +                        "format",
        +                        "url",
        +                        "sheet_size",
        +                        "scale"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "parameters_used": {
        +                "additionalProperties": false,
        +                "description": "Schema § 1.2 — the parameter snapshot the engine actually used.\n\nSplits user-supplied values from engine defaults so customers can see\nwhich numbers came from them and which the engine filled in. Every\ndefaulted parameter SHOULD have a corresponding entry in `assumptions`\n— the bridge layer enforces this when wrapping engine output.",
        +                "properties": {
        +                  "assumptions": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "engine_defaults": {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  "user_supplied": {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  }
        +                },
        +                "type": "object"
        +              },
        +              "standard": {
        +                "enum": [
        +                  "CESMM4",
        +                  "NRM2",
        +                  "SMM7",
        +                  "MMHW"
        +                ],
        +                "type": "string"
        +              },
        +              "text_summary": {
        +                "maxLength": 2000,
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "totals_summary": {
        +                "additionalProperties": false,
        +                "description": "Schema § 1.4 — totals_summary as a typed wrapper around the free-form dict.\n\nWire shape is a flat object (`{\"concrete_m3\": {...}, \"rebar_t\": {...}}`).\nWe model it as `RootModel`-equivalent via `model_config(extra=\"allow\")`\n+ a single `__root__`-style `entries` dict. Pydantic v2 recommends\n`RootModel` for free-form roots; using a wrapper class keeps the import\nsurface uniform with the rest of this module.",
        +                "properties": {
        +                  "entries": {
        +                    "additionalProperties": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.4 — single material/work-class total entry.",
        +                      "properties": {
        +                        "quantity": {
        +                          "minimum": 0,
        +                          "type": "number"
        +                        },
        +                        "unit": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "quantity",
        +                        "unit"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "object"
        +                  }
        +                },
        +                "type": "object"
        +              },
        +              "warnings": {
        +                "items": {
        +                  "additionalProperties": false,
        +                  "description": "Schema § 1.8 — a non-fatal geometry advisory (56th-fire T2).\n\nThe wire projection of the engine's `core.GeometryWarning`. Advisory only:\na warning NEVER changes a measured quantity — it flags geometry that is\nvalid but likely a mistake (e.g. a stale dependent-height default). Present\non BOTH tiers — a correctness/safety signal, not a paid feature.",
        +                  "properties": {
        +                    "affected_params": {
        +                      "items": {
        +                        "type": "string"
        +                      },
        +                      "type": "array"
        +                    },
        +                    "code": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "detail": {
        +                      "additionalProperties": {
        +                        "type": "number"
        +                      },
        +                      "type": "object"
        +                    },
        +                    "message": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "severity": {
        +                      "enum": [
        +                        "info",
        +                        "advisory",
        +                        "caution"
        +                      ],
        +                      "type": "string"
        +                    }
        +                  },
        +                  "required": [
        +                    "code",
        +                    "severity",
        +                    "message"
        +                  ],
        +                  "type": "object"
        +                },
        +                "type": "array"
        +              }
        +            },
        +            "required": [
        +              "assembly_slug",
        +              "standard",
        +              "parameters_used",
        +              "boq_rows",
        +              "totals_summary",
        +              "text_summary"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      },
        +      "error": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        +            "properties": {
        +              "code": {
        +                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        +                "enum": [
        +                  "RATE_LIMIT_EXCEEDED",
        +                  "TIER_INSUFFICIENT",
        +                  "INVALID_INPUT",
        +                  "SCHEMA_VERSION_MISMATCH",
        +                  "SCHEMA_INVARIANT_VIOLATION",
        +                  "UPSTREAM_TIMEOUT",
        +                  "BACKEND_FAILURE",
        +                  "IP_BLOCKED",
        +                  "RESOURCE_NOT_FOUND",
        +                  "RENDER_FAILURE",
        +                  "OCR_LOW_CONFIDENCE",
        +                  "MANUAL_REVIEW_REQUIRED",
        +                  "ACCEPTANCE_REQUIRED",
        +                  "INVALID_TOKEN"
        +                ],
        +                "type": "string"
        +              },
        +              "details": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "message": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "recoverable": {
        +                "type": "boolean"
        +              },
        +              "retry_after_seconds": {
        +                "anyOf": [
        +                  {
        +                    "minimum": 0,
        +                    "type": "integer"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              }
        +            },
        +            "required": [
        +              "code",
        +              "message",
        +              "recoverable"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      }
        +    },
        +    "required": [
        +      "_meta"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "_meta": {
        +        "additionalProperties": false,
        +        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        +        "properties": {
        +          "deliverables": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        +                "properties": {
        +                  "docx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "dxf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "expires_at": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  },
        +                  "pdf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "xlsx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "expires_at"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "document_id": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "issued_at": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "rate_limit_remaining": {
        +            "anyOf": [
        +              {
        +                "minimum": 0,
        +                "type": "integer"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "request_id": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "schema_version": {
        +            "const": "1.0.0",
        +            "default": "1.0.0",
        +            "type": "string"
        +          },
        +          "scope_boundary": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        +                "properties": {
        +                  "not_in_scope": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "produced": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "recommended_companions": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "type": "string"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "produced",
        +                  "not_in_scope"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tier": {
        +            "enum": [
        +              "free",
        +              "paid"
        +            ],
        +            "type": "string"
        +          },
        +          "tier_upgrade": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        +                "properties": {
        +                  "available_tiers": {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        +                      "properties": {
        +                        "billing": {
        +                          "enum": [
        +                            "one_off",
        +                            "monthly",
        +                            "annual"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "currency": {
        +                          "enum": [
        +                            "GBP",
        +                            "SGD",
        +                            "EUR",
        +                            "USD",
        +                            "CAD",
        +                            "AUD",
        +                            "NZD",
        +                            "MYR"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "display_name": {
        +                          "type": "string"
        +                        },
        +                        "price_local": {
        +                          "type": "number"
        +                        },
        +                        "tier_slug": {
        +                          "enum": [
        +                            "7_day_pass",
        +                            "solo",
        +                            "studio",
        +                            "practice"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "unlock_summary": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "tier_slug",
        +                        "display_name",
        +                        "price_local",
        +                        "currency",
        +                        "billing",
        +                        "unlock_summary"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "current_tier": {
        +                    "const": "free",
        +                    "default": "free",
        +                    "type": "string"
        +                  },
        +                  "pass_credit": {
        +                    "anyOf": [
        +                      {
        +                        "additionalProperties": false,
        +                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        +                        "properties": {
        +                          "amount_local": {
        +                            "type": "number"
        +                          },
        +                          "applies_to": {
        +                            "const": "solo_first_month",
        +                            "default": "solo_first_month",
        +                            "type": "string"
        +                          },
        +                          "currency": {
        +                            "type": "string"
        +                          },
        +                          "redeemable_until": {
        +                            "type": "string"
        +                          }
        +                        },
        +                        "required": [
        +                          "amount_local",
        +                          "currency",
        +                          "redeemable_until"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "pricing_url": {
        +                    "default": "https://civilquants.com/pricing",
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "available_tiers"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tos_url": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "upgrade_hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "warranty_disclaimer": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          }
        +        },
        +        "required": [
        +          "request_id",
        +          "issued_at",
        +          "tier"
        +        ],
        +        "type": "object"
        +      },
        +      "data": {
        +        "default": null,
        +        "title": "Data"
        +      },
        +      "error": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        +            "properties": {
        +              "code": {
        +                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        +                "enum": [
        +                  "RATE_LIMIT_EXCEEDED",
        +                  "TIER_INSUFFICIENT",
        +                  "INVALID_INPUT",
        +                  "SCHEMA_VERSION_MISMATCH",
        +                  "SCHEMA_INVARIANT_VIOLATION",
        +                  "UPSTREAM_TIMEOUT",
        +                  "BACKEND_FAILURE",
        +                  "IP_BLOCKED",
        +                  "RESOURCE_NOT_FOUND",
        +                  "RENDER_FAILURE",
        +                  "OCR_LOW_CONFIDENCE",
        +                  "MANUAL_REVIEW_REQUIRED",
        +                  "ACCEPTANCE_REQUIRED",
        +                  "INVALID_TOKEN"
        +                ],
        +                "type": "string"
        +              },
        +              "details": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "message": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "recoverable": {
        +                "type": "boolean"
        +              },
        +              "retry_after_seconds": {
        +                "anyOf": [
        +                  {
        +                    "minimum": 0,
        +                    "type": "integer"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              }
        +            },
        +            "required": [
        +              "code",
        +              "message",
        +              "recoverable"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      }
        +    },
        +    "required": [
        +      "_meta"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedcompute_gravity_wall1 field changed
      • changedOutput schema / properties / result / anyOf
        Previous value: -[
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "_meta": {
        -        "additionalProperties": false,
        -        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        -        "properties": {
        -          "deliverables": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        -                "properties": {
        -                  "docx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "dxf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "expires_at": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  },
        -                  "pdf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "xlsx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "expires_at"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "document_id": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "issued_at": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "rate_limit_remaining": {
        -            "anyOf": [
        -              {
        -                "minimum": 0,
        -                "type": "integer"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "request_id": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "schema_version": {
        -            "const": "1.0.0",
        -            "default": "1.0.0",
        -            "type": "string"
        -          },
        -          "scope_boundary": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        -                "properties": {
        -                  "not_in_scope": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "produced": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "recommended_companions": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "type": "string"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "produced",
        -                  "not_in_scope"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tier": {
        -            "enum": [
        -              "free",
        -              "paid"
        -            ],
        -            "type": "string"
        -          },
        -          "tier_upgrade": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        -                "properties": {
        -                  "available_tiers": {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        -                      "properties": {
        -                        "billing": {
        -                          "enum": [
        -                            "one_off",
        -                            "monthly",
        -                            "annual"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "currency": {
        -                          "enum": [
        -                            "GBP",
        -                            "SGD",
        -                            "EUR",
        -                            "USD",
        -                            "CAD",
        -                            "AUD",
        -                            "NZD",
        -                            "MYR"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "display_name": {
        -                          "type": "string"
        -                        },
        -                        "price_local": {
        -                          "type": "number"
        -                        },
        -                        "tier_slug": {
        -                          "enum": [
        -                            "7_day_pass",
        -                            "solo",
        -                            "studio",
        -                            "practice"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "unlock_summary": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "tier_slug",
        -                        "display_name",
        -                        "price_local",
        -                        "currency",
        -                        "billing",
        -                        "unlock_summary"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "current_tier": {
        -                    "const": "free",
        -                    "default": "free",
        -                    "type": "string"
        -                  },
        -                  "pass_credit": {
        -                    "anyOf": [
        -                      {
        -                        "additionalProperties": false,
        -                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        -                        "properties": {
        -                          "amount_local": {
        -                            "type": "number"
        -                          },
        -                          "applies_to": {
        -                            "const": "solo_first_month",
        -                            "default": "solo_first_month",
        -                            "type": "string"
        -                          },
        -                          "currency": {
        -                            "type": "string"
        -                          },
        -                          "redeemable_until": {
        -                            "type": "string"
        -                          }
        -                        },
        -                        "required": [
        -                          "amount_local",
        -                          "currency",
        -                          "redeemable_until"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "pricing_url": {
        -                    "default": "https://civilquants.com/pricing",
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "available_tiers"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tos_url": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "upgrade_hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "warranty_disclaimer": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          }
        -        },
        -        "required": [
        -          "request_id",
        -          "issued_at",
        -          "tier"
        -        ],
        -        "type": "object"
        -      },
        -      "data": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Schema § 1.1 — the typed payload returned inside `MCPResponse[ComputeResult]`.\n\nFree-tier responses omit `drawings` (the downloadable CAD artefact\npointers — the paid differentiator); the bridge enforces this. The\n`audit_trail` and the inline `drawing` preview are present on BOTH tiers\n(V1 ALIGN / 60th-fire D + C). `text_summary` is bounded to 2000 chars —\nkeeps the LLM-facing summary token-cheap and forces longer narrative into\nBoQ row descriptions where it belongs. `warnings` is the non-fatal\ngeometry advisory list (both tiers).",
        -            "properties": {
        -              "assembly_slug": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "audit_trail": {
        -                "anyOf": [
        -                  {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.7 — paid-tier audit-trail entry.\n\nOne entry per BoQ row; `boq_row_index` ties to the row position in\n`ComputeResult.boq_rows`. `derivation` is the human-readable formula\nwalk-through; `formula` is the optional formal expression.",
        -                      "properties": {
        -                        "boq_row_index": {
        -                          "minimum": 0,
        -                          "type": "integer"
        -                        },
        -                        "derivation": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "formula": {
        -                          "anyOf": [
        -                            {
        -                              "type": "string"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ],
        -                          "default": null
        -                        },
        -                        "id": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "parameters_referenced": {
        -                          "items": {
        -                            "type": "string"
        -                          },
        -                          "type": "array"
        -                        }
        -                      },
        -                      "required": [
        -                        "id",
        -                        "boq_row_index",
        -                        "derivation"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "boq_rows": {
        -                "items": {
        -                  "additionalProperties": false,
        -                  "description": "Schema § 1.3 — a single bill row in the requested standard's format.\n\n`description` is the non-verbatim functional description per spec § 13.9 /\n§ 15 invariant — NEVER reproduces a standard's verbatim clause text.\n`rate` / `amount` ship null because rates are commodity data the customer\nowns; the engine's job is the measurement, not the pricing.",
        -                  "properties": {
        -                    "amount": {
        -                      "anyOf": [
        -                        {
        -                          "type": "number"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "attribution": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "audit_id": {
        -                      "anyOf": [
        -                        {
        -                          "type": "string"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "description": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "quantity": {
        -                      "minimum": 0,
        -                      "type": "number"
        -                    },
        -                    "rate": {
        -                      "anyOf": [
        -                        {
        -                          "type": "number"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "unit": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "work_section": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    }
        -                  },
        -                  "required": [
        -                    "work_section",
        -                    "description",
        -                    "quantity",
        -                    "unit",
        -                    "attribution"
        -                  ],
        -                  "type": "object"
        -                },
        -                "type": "array"
        -              },
        -              "drawing": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": false,
        -                    "description": "Schema § 1.6a — inline server-rendered SVG preview of the geometry.\n\nThe MCP mirror of the web ``/compute`` response's ``drawing`` field\n(``api.schemas.compute.DrawingRef``): the same on-screen dimensioned\ndrawing both tiers see in the workspace, surfaced on the MCP compute\nresponse so a chat client can render it inline (60th-fire item C). This\nis the on-screen preview — present on BOTH tiers per the free/paid\nboundary; the downloadable CAD artefacts (DXF / dimensioned PDF) remain\nthe paid differentiator via the export tools.\n\nDefined here rather than importing ``DrawingRef`` because the web\n``schemas`` package imports back into this module (``schemas.render``),\nso reusing it would create an import cycle — the MCP wire contract keeps\nits own copy, the same pattern as ``BoQRow`` / ``DrawingReference``.",
        -                    "properties": {
        -                      "entity_count": {
        -                        "minimum": 0,
        -                        "type": "integer"
        -                      },
        -                      "svg_b64": {
        -                        "minLength": 1,
        -                        "type": "string"
        -                      },
        -                      "unit_of_drawing": {
        -                        "const": "m",
        -                        "default": "m",
        -                        "type": "string"
        -                      },
        -                      "viewbox_height": {
        -                        "exclusiveMinimum": 0,
        -                        "type": "number"
        -                      },
        -                      "viewbox_width": {
        -                        "exclusiveMinimum": 0,
        -                        "type": "number"
        -                      },
        -                      "viewbox_x": {
        -                        "type": "number"
        -                      },
        -                      "viewbox_y": {
        -                        "type": "number"
        -                      }
        -                    },
        -                    "required": [
        -                      "svg_b64",
        -                      "viewbox_x",
        -                      "viewbox_y",
        -                      "viewbox_width",
        -                      "viewbox_height",
        -                      "entity_count"
        -                    ],
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "drawings": {
        -                "anyOf": [
        -                  {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.6 — paid-tier drawing artefact pointer.\n\n`url` is an R2-signed URL; expiry is carried in `_meta.deliverables.expires_at`\non the envelope (not duplicated here). `layers` is DXF-only; PDF/SVG\ncallers omit it.",
        -                      "properties": {
        -                        "drawing_type": {
        -                          "enum": [
        -                            "section",
        -                            "plan",
        -                            "elevation",
        -                            "isometric",
        -                            "detail"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "format": {
        -                          "enum": [
        -                            "DXF",
        -                            "PDF",
        -                            "SVG"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "layers": {
        -                          "anyOf": [
        -                            {
        -                              "items": {
        -                                "type": "string"
        -                              },
        -                              "type": "array"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ],
        -                          "default": null
        -                        },
        -                        "scale": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "sheet_size": {
        -                          "enum": [
        -                            "A1",
        -                            "A2",
        -                            "A3",
        -                            "A4"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "url": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "drawing_type",
        -                        "format",
        -                        "url",
        -                        "sheet_size",
        -                        "scale"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "parameters_used": {
        -                "additionalProperties": false,
        -                "description": "Schema § 1.2 — the parameter snapshot the engine actually used.\n\nSplits user-supplied values from engine defaults so customers can see\nwhich numbers came from them and which the engine filled in. Every\ndefaulted parameter SHOULD have a corresponding entry in `assumptions`\n— the bridge layer enforces this when wrapping engine output.",
        -                "properties": {
        -                  "assumptions": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "engine_defaults": {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  "resolved_from_description": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "additionalProperties": false,
        -                          "description": "Schema § 1.2 — a parameter resolved by the forgiving-input layer.\n\nPopulated by the Track B-Forgiving Haiku-4.5 resolution pass; until that\nlayer lands, instances are constructed only by tests. `source` distinguishes\nthe resolution path so customers can audit which fields were inferred.",
        -                          "properties": {
        -                            "confidence": {
        -                              "anyOf": [
        -                                {
        -                                  "enum": [
        -                                    "high",
        -                                    "medium",
        -                                    "low"
        -                                  ],
        -                                  "type": "string"
        -                                },
        -                                {
        -                                  "type": "null"
        -                                }
        -                              ],
        -                              "default": null
        -                            },
        -                            "field_name": {
        -                              "minLength": 1,
        -                              "type": "string"
        -                            },
        -                            "resolved_value": {},
        -                            "source": {
        -                              "enum": [
        -                                "description_field",
        -                                "haiku_resolution",
        -                                "engine_default"
        -                              ],
        -                              "type": "string"
        -                            }
        -                          },
        -                          "required": [
        -                            "field_name",
        -                            "resolved_value",
        -                            "source"
        -                          ],
        -                          "type": "object"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "user_supplied": {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  }
        -                },
        -                "type": "object"
        -              },
        -              "standard": {
        -                "enum": [
        -                  "CESMM4",
        -                  "NRM2",
        -                  "SMM7",
        -                  "MMHW"
        -                ],
        -                "type": "string"
        -              },
        -              "text_summary": {
        -                "maxLength": 2000,
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "totals_summary": {
        -                "additionalProperties": false,
        -                "description": "Schema § 1.4 — totals_summary as a typed wrapper around the free-form dict.\n\nWire shape is a flat object (`{\"concrete_m3\": {...}, \"rebar_t\": {...}}`).\nWe model it as `RootModel`-equivalent via `model_config(extra=\"allow\")`\n+ a single `__root__`-style `entries` dict. Pydantic v2 recommends\n`RootModel` for free-form roots; using a wrapper class keeps the import\nsurface uniform with the rest of this module.",
        -                "properties": {
        -                  "entries": {
        -                    "additionalProperties": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.4 — single material/work-class total entry.",
        -                      "properties": {
        -                        "quantity": {
        -                          "minimum": 0,
        -                          "type": "number"
        -                        },
        -                        "unit": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "quantity",
        -                        "unit"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "object"
        -                  }
        -                },
        -                "type": "object"
        -              },
        -              "warnings": {
        -                "items": {
        -                  "additionalProperties": false,
        -                  "description": "Schema § 1.8 — a non-fatal geometry advisory (56th-fire T2).\n\nThe wire projection of the engine's `core.GeometryWarning`. Advisory only:\na warning NEVER changes a measured quantity — it flags geometry that is\nvalid but likely a mistake (e.g. a stale dependent-height default). Present\non BOTH tiers — a correctness/safety signal, not a paid feature.",
        -                  "properties": {
        -                    "affected_params": {
        -                      "items": {
        -                        "type": "string"
        -                      },
        -                      "type": "array"
        -                    },
        -                    "code": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "detail": {
        -                      "additionalProperties": {
        -                        "type": "number"
        -                      },
        -                      "type": "object"
        -                    },
        -                    "message": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "severity": {
        -                      "enum": [
        -                        "info",
        -                        "advisory",
        -                        "caution"
        -                      ],
        -                      "type": "string"
        -                    }
        -                  },
        -                  "required": [
        -                    "code",
        -                    "severity",
        -                    "message"
        -                  ],
        -                  "type": "object"
        -                },
        -                "type": "array"
        -              }
        -            },
        -            "required": [
        -              "assembly_slug",
        -              "standard",
        -              "parameters_used",
        -              "boq_rows",
        -              "totals_summary",
        -              "text_summary"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      },
        -      "error": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        -            "properties": {
        -              "code": {
        -                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        -                "enum": [
        -                  "RATE_LIMIT_EXCEEDED",
        -                  "TIER_INSUFFICIENT",
        -                  "INVALID_INPUT",
        -                  "SCHEMA_VERSION_MISMATCH",
        -                  "SCHEMA_INVARIANT_VIOLATION",
        -                  "UPSTREAM_TIMEOUT",
        -                  "BACKEND_FAILURE",
        -                  "IP_BLOCKED",
        -                  "RESOURCE_NOT_FOUND",
        -                  "RENDER_FAILURE",
        -                  "OCR_LOW_CONFIDENCE",
        -                  "MANUAL_REVIEW_REQUIRED",
        -                  "ACCEPTANCE_REQUIRED",
        -                  "INVALID_TOKEN"
        -                ],
        -                "type": "string"
        -              },
        -              "details": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "message": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "recoverable": {
        -                "type": "boolean"
        -              },
        -              "retry_after_seconds": {
        -                "anyOf": [
        -                  {
        -                    "minimum": 0,
        -                    "type": "integer"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              }
        -            },
        -            "required": [
        -              "code",
        -              "message",
        -              "recoverable"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      }
        -    },
        -    "required": [
        -      "_meta"
        -    ],
        -    "type": "object"
        -  },
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "_meta": {
        -        "additionalProperties": false,
        -        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        -        "properties": {
        -          "deliverables": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        -                "properties": {
        -                  "docx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "dxf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "expires_at": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  },
        -                  "pdf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "xlsx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "expires_at"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "document_id": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "issued_at": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "rate_limit_remaining": {
        -            "anyOf": [
        -              {
        -                "minimum": 0,
        -                "type": "integer"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "request_id": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "schema_version": {
        -            "const": "1.0.0",
        -            "default": "1.0.0",
        -            "type": "string"
        -          },
        -          "scope_boundary": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        -                "properties": {
        -                  "not_in_scope": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "produced": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "recommended_companions": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "type": "string"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "produced",
        -                  "not_in_scope"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tier": {
        -            "enum": [
        -              "free",
        -              "paid"
        -            ],
        -            "type": "string"
        -          },
        -          "tier_upgrade": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        -                "properties": {
        -                  "available_tiers": {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        -                      "properties": {
        -                        "billing": {
        -                          "enum": [
        -                            "one_off",
        -                            "monthly",
        -                            "annual"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "currency": {
        -                          "enum": [
        -                            "GBP",
        -                            "SGD",
        -                            "EUR",
        -                            "USD",
        -                            "CAD",
        -                            "AUD",
        -                            "NZD",
        -                            "MYR"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "display_name": {
        -                          "type": "string"
        -                        },
        -                        "price_local": {
        -                          "type": "number"
        -                        },
        -                        "tier_slug": {
        -                          "enum": [
        -                            "7_day_pass",
        -                            "solo",
        -                            "studio",
        -                            "practice"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "unlock_summary": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "tier_slug",
        -                        "display_name",
        -                        "price_local",
        -                        "currency",
        -                        "billing",
        -                        "unlock_summary"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "current_tier": {
        -                    "const": "free",
        -                    "default": "free",
        -                    "type": "string"
        -                  },
        -                  "pass_credit": {
        -                    "anyOf": [
        -                      {
        -                        "additionalProperties": false,
        -                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        -                        "properties": {
        -                          "amount_local": {
        -                            "type": "number"
        -                          },
        -                          "applies_to": {
        -                            "const": "solo_first_month",
        -                            "default": "solo_first_month",
        -                            "type": "string"
        -                          },
        -                          "currency": {
        -                            "type": "string"
        -                          },
        -                          "redeemable_until": {
        -                            "type": "string"
        -                          }
        -                        },
        -                        "required": [
        -                          "amount_local",
        -                          "currency",
        -                          "redeemable_until"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "pricing_url": {
        -                    "default": "https://civilquants.com/pricing",
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "available_tiers"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tos_url": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "upgrade_hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "warranty_disclaimer": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          }
        -        },
        -        "required": [
        -          "request_id",
        -          "issued_at",
        -          "tier"
        -        ],
        -        "type": "object"
        -      },
        -      "data": {
        -        "default": null,
        -        "title": "Data"
        -      },
        -      "error": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        -            "properties": {
        -              "code": {
        -                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        -                "enum": [
        -                  "RATE_LIMIT_EXCEEDED",
        -                  "TIER_INSUFFICIENT",
        -                  "INVALID_INPUT",
        -                  "SCHEMA_VERSION_MISMATCH",
        -                  "SCHEMA_INVARIANT_VIOLATION",
        -                  "UPSTREAM_TIMEOUT",
        -                  "BACKEND_FAILURE",
        -                  "IP_BLOCKED",
        -                  "RESOURCE_NOT_FOUND",
        -                  "RENDER_FAILURE",
        -                  "OCR_LOW_CONFIDENCE",
        -                  "MANUAL_REVIEW_REQUIRED",
        -                  "ACCEPTANCE_REQUIRED",
        -                  "INVALID_TOKEN"
        -                ],
        -                "type": "string"
        -              },
        -              "details": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "message": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "recoverable": {
        -                "type": "boolean"
        -              },
        -              "retry_after_seconds": {
        -                "anyOf": [
        -                  {
        -                    "minimum": 0,
        -                    "type": "integer"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              }
        -            },
        -            "required": [
        -              "code",
        -              "message",
        -              "recoverable"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      }
        -    },
        -    "required": [
        -      "_meta"
        -    ],
        -    "type": "object"
        -  }
        -]New value: +[
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "_meta": {
        +        "additionalProperties": false,
        +        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        +        "properties": {
        +          "deliverables": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        +                "properties": {
        +                  "docx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "dxf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "expires_at": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  },
        +                  "pdf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "xlsx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "expires_at"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "document_id": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "issued_at": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "rate_limit_remaining": {
        +            "anyOf": [
        +              {
        +                "minimum": 0,
        +                "type": "integer"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "request_id": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "schema_version": {
        +            "const": "1.0.0",
        +            "default": "1.0.0",
        +            "type": "string"
        +          },
        +          "scope_boundary": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        +                "properties": {
        +                  "not_in_scope": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "produced": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "recommended_companions": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "type": "string"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "produced",
        +                  "not_in_scope"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tier": {
        +            "enum": [
        +              "free",
        +              "paid"
        +            ],
        +            "type": "string"
        +          },
        +          "tier_upgrade": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        +                "properties": {
        +                  "available_tiers": {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        +                      "properties": {
        +                        "billing": {
        +                          "enum": [
        +                            "one_off",
        +                            "monthly",
        +                            "annual"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "currency": {
        +                          "enum": [
        +                            "GBP",
        +                            "SGD",
        +                            "EUR",
        +                            "USD",
        +                            "CAD",
        +                            "AUD",
        +                            "NZD",
        +                            "MYR"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "display_name": {
        +                          "type": "string"
        +                        },
        +                        "price_local": {
        +                          "type": "number"
        +                        },
        +                        "tier_slug": {
        +                          "enum": [
        +                            "7_day_pass",
        +                            "solo",
        +                            "studio",
        +                            "practice"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "unlock_summary": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "tier_slug",
        +                        "display_name",
        +                        "price_local",
        +                        "currency",
        +                        "billing",
        +                        "unlock_summary"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "current_tier": {
        +                    "const": "free",
        +                    "default": "free",
        +                    "type": "string"
        +                  },
        +                  "pass_credit": {
        +                    "anyOf": [
        +                      {
        +                        "additionalProperties": false,
        +                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        +                        "properties": {
        +                          "amount_local": {
        +                            "type": "number"
        +                          },
        +                          "applies_to": {
        +                            "const": "solo_first_month",
        +                            "default": "solo_first_month",
        +                            "type": "string"
        +                          },
        +                          "currency": {
        +                            "type": "string"
        +                          },
        +                          "redeemable_until": {
        +                            "type": "string"
        +                          }
        +                        },
        +                        "required": [
        +                          "amount_local",
        +                          "currency",
        +                          "redeemable_until"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "pricing_url": {
        +                    "default": "https://civilquants.com/pricing",
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "available_tiers"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tos_url": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "upgrade_hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "warranty_disclaimer": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          }
        +        },
        +        "required": [
        +          "request_id",
        +          "issued_at",
        +          "tier"
        +        ],
        +        "type": "object"
        +      },
        +      "data": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Schema § 1.1 — the typed payload returned inside `MCPResponse[ComputeResult]`.\n\nFree-tier responses omit `drawings` (the downloadable CAD artefact\npointers — the paid differentiator); the bridge enforces this. The\n`audit_trail` and the inline `drawing` preview are present on BOTH tiers\n(V1 ALIGN / 60th-fire D + C). `text_summary` is bounded to 2000 chars —\nkeeps the LLM-facing summary token-cheap and forces longer narrative into\nBoQ row descriptions where it belongs. `warnings` is the non-fatal\ngeometry advisory list (both tiers).",
        +            "properties": {
        +              "assembly_slug": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "audit_trail": {
        +                "anyOf": [
        +                  {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.7 — paid-tier audit-trail entry.\n\nOne entry per BoQ row; `boq_row_index` ties to the row position in\n`ComputeResult.boq_rows`. `derivation` is the human-readable formula\nwalk-through; `formula` is the optional formal expression.",
        +                      "properties": {
        +                        "boq_row_index": {
        +                          "minimum": 0,
        +                          "type": "integer"
        +                        },
        +                        "derivation": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "formula": {
        +                          "anyOf": [
        +                            {
        +                              "type": "string"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ],
        +                          "default": null
        +                        },
        +                        "id": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "parameters_referenced": {
        +                          "items": {
        +                            "type": "string"
        +                          },
        +                          "type": "array"
        +                        }
        +                      },
        +                      "required": [
        +                        "id",
        +                        "boq_row_index",
        +                        "derivation"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "boq_rows": {
        +                "items": {
        +                  "additionalProperties": false,
        +                  "description": "Schema § 1.3 — a single bill row in the requested standard's format.\n\n`description` is the non-verbatim functional description per spec § 13.9 /\n§ 15 invariant — NEVER reproduces a standard's verbatim clause text.\n`rate` / `amount` ship null because rates are commodity data the customer\nowns; the engine's job is the measurement, not the pricing.",
        +                  "properties": {
        +                    "amount": {
        +                      "anyOf": [
        +                        {
        +                          "type": "number"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "attribution": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "audit_id": {
        +                      "anyOf": [
        +                        {
        +                          "type": "string"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "description": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "quantity": {
        +                      "minimum": 0,
        +                      "type": "number"
        +                    },
        +                    "rate": {
        +                      "anyOf": [
        +                        {
        +                          "type": "number"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "unit": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "work_section": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    }
        +                  },
        +                  "required": [
        +                    "work_section",
        +                    "description",
        +                    "quantity",
        +                    "unit",
        +                    "attribution"
        +                  ],
        +                  "type": "object"
        +                },
        +                "type": "array"
        +              },
        +              "drawing": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": false,
        +                    "description": "Schema § 1.6a — inline server-rendered SVG preview of the geometry.\n\nThe MCP mirror of the web ``/compute`` response's ``drawing`` field\n(``api.schemas.compute.DrawingRef``): the same on-screen dimensioned\ndrawing both tiers see in the workspace, surfaced on the MCP compute\nresponse so a chat client can render it inline (60th-fire item C). This\nis the on-screen preview — present on BOTH tiers per the free/paid\nboundary; the downloadable CAD artefacts (DXF / dimensioned PDF) remain\nthe paid differentiator via the export tools.\n\nDefined here rather than importing ``DrawingRef`` because the web\n``schemas`` package imports back into this module (``schemas.render``),\nso reusing it would create an import cycle — the MCP wire contract keeps\nits own copy, the same pattern as ``BoQRow`` / ``DrawingReference``.",
        +                    "properties": {
        +                      "entity_count": {
        +                        "minimum": 0,
        +                        "type": "integer"
        +                      },
        +                      "svg_b64": {
        +                        "minLength": 1,
        +                        "type": "string"
        +                      },
        +                      "unit_of_drawing": {
        +                        "const": "m",
        +                        "default": "m",
        +                        "type": "string"
        +                      },
        +                      "viewbox_height": {
        +                        "exclusiveMinimum": 0,
        +                        "type": "number"
        +                      },
        +                      "viewbox_width": {
        +                        "exclusiveMinimum": 0,
        +                        "type": "number"
        +                      },
        +                      "viewbox_x": {
        +                        "type": "number"
        +                      },
        +                      "viewbox_y": {
        +                        "type": "number"
        +                      }
        +                    },
        +                    "required": [
        +                      "svg_b64",
        +                      "viewbox_x",
        +                      "viewbox_y",
        +                      "viewbox_width",
        +                      "viewbox_height",
        +                      "entity_count"
        +                    ],
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "drawings": {
        +                "anyOf": [
        +                  {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.6 — paid-tier drawing artefact pointer.\n\n`url` is an R2-signed URL; expiry is carried in `_meta.deliverables.expires_at`\non the envelope (not duplicated here). `layers` is DXF-only; PDF/SVG\ncallers omit it.",
        +                      "properties": {
        +                        "drawing_type": {
        +                          "enum": [
        +                            "section",
        +                            "plan",
        +                            "elevation",
        +                            "isometric",
        +                            "detail"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "format": {
        +                          "enum": [
        +                            "DXF",
        +                            "PDF",
        +                            "SVG"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "layers": {
        +                          "anyOf": [
        +                            {
        +                              "items": {
        +                                "type": "string"
        +                              },
        +                              "type": "array"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ],
        +                          "default": null
        +                        },
        +                        "scale": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "sheet_size": {
        +                          "enum": [
        +                            "A1",
        +                            "A2",
        +                            "A3",
        +                            "A4"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "url": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "drawing_type",
        +                        "format",
        +                        "url",
        +                        "sheet_size",
        +                        "scale"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "parameters_used": {
        +                "additionalProperties": false,
        +                "description": "Schema § 1.2 — the parameter snapshot the engine actually used.\n\nSplits user-supplied values from engine defaults so customers can see\nwhich numbers came from them and which the engine filled in. Every\ndefaulted parameter SHOULD have a corresponding entry in `assumptions`\n— the bridge layer enforces this when wrapping engine output.",
        +                "properties": {
        +                  "assumptions": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "engine_defaults": {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  "user_supplied": {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  }
        +                },
        +                "type": "object"
        +              },
        +              "standard": {
        +                "enum": [
        +                  "CESMM4",
        +                  "NRM2",
        +                  "SMM7",
        +                  "MMHW"
        +                ],
        +                "type": "string"
        +              },
        +              "text_summary": {
        +                "maxLength": 2000,
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "totals_summary": {
        +                "additionalProperties": false,
        +                "description": "Schema § 1.4 — totals_summary as a typed wrapper around the free-form dict.\n\nWire shape is a flat object (`{\"concrete_m3\": {...}, \"rebar_t\": {...}}`).\nWe model it as `RootModel`-equivalent via `model_config(extra=\"allow\")`\n+ a single `__root__`-style `entries` dict. Pydantic v2 recommends\n`RootModel` for free-form roots; using a wrapper class keeps the import\nsurface uniform with the rest of this module.",
        +                "properties": {
        +                  "entries": {
        +                    "additionalProperties": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.4 — single material/work-class total entry.",
        +                      "properties": {
        +                        "quantity": {
        +                          "minimum": 0,
        +                          "type": "number"
        +                        },
        +                        "unit": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "quantity",
        +                        "unit"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "object"
        +                  }
        +                },
        +                "type": "object"
        +              },
        +              "warnings": {
        +                "items": {
        +                  "additionalProperties": false,
        +                  "description": "Schema § 1.8 — a non-fatal geometry advisory (56th-fire T2).\n\nThe wire projection of the engine's `core.GeometryWarning`. Advisory only:\na warning NEVER changes a measured quantity — it flags geometry that is\nvalid but likely a mistake (e.g. a stale dependent-height default). Present\non BOTH tiers — a correctness/safety signal, not a paid feature.",
        +                  "properties": {
        +                    "affected_params": {
        +                      "items": {
        +                        "type": "string"
        +                      },
        +                      "type": "array"
        +                    },
        +                    "code": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "detail": {
        +                      "additionalProperties": {
        +                        "type": "number"
        +                      },
        +                      "type": "object"
        +                    },
        +                    "message": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "severity": {
        +                      "enum": [
        +                        "info",
        +                        "advisory",
        +                        "caution"
        +                      ],
        +                      "type": "string"
        +                    }
        +                  },
        +                  "required": [
        +                    "code",
        +                    "severity",
        +                    "message"
        +                  ],
        +                  "type": "object"
        +                },
        +                "type": "array"
        +              }
        +            },
        +            "required": [
        +              "assembly_slug",
        +              "standard",
        +              "parameters_used",
        +              "boq_rows",
        +              "totals_summary",
        +              "text_summary"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      },
        +      "error": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        +            "properties": {
        +              "code": {
        +                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        +                "enum": [
        +                  "RATE_LIMIT_EXCEEDED",
        +                  "TIER_INSUFFICIENT",
        +                  "INVALID_INPUT",
        +                  "SCHEMA_VERSION_MISMATCH",
        +                  "SCHEMA_INVARIANT_VIOLATION",
        +                  "UPSTREAM_TIMEOUT",
        +                  "BACKEND_FAILURE",
        +                  "IP_BLOCKED",
        +                  "RESOURCE_NOT_FOUND",
        +                  "RENDER_FAILURE",
        +                  "OCR_LOW_CONFIDENCE",
        +                  "MANUAL_REVIEW_REQUIRED",
        +                  "ACCEPTANCE_REQUIRED",
        +                  "INVALID_TOKEN"
        +                ],
        +                "type": "string"
        +              },
        +              "details": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "message": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "recoverable": {
        +                "type": "boolean"
        +              },
        +              "retry_after_seconds": {
        +                "anyOf": [
        +                  {
        +                    "minimum": 0,
        +                    "type": "integer"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              }
        +            },
        +            "required": [
        +              "code",
        +              "message",
        +              "recoverable"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      }
        +    },
        +    "required": [
        +      "_meta"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "_meta": {
        +        "additionalProperties": false,
        +        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        +        "properties": {
        +          "deliverables": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        +                "properties": {
        +                  "docx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "dxf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "expires_at": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  },
        +                  "pdf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "xlsx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "expires_at"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "document_id": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "issued_at": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "rate_limit_remaining": {
        +            "anyOf": [
        +              {
        +                "minimum": 0,
        +                "type": "integer"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "request_id": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "schema_version": {
        +            "const": "1.0.0",
        +            "default": "1.0.0",
        +            "type": "string"
        +          },
        +          "scope_boundary": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        +                "properties": {
        +                  "not_in_scope": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "produced": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "recommended_companions": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "type": "string"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "produced",
        +                  "not_in_scope"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tier": {
        +            "enum": [
        +              "free",
        +              "paid"
        +            ],
        +            "type": "string"
        +          },
        +          "tier_upgrade": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        +                "properties": {
        +                  "available_tiers": {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        +                      "properties": {
        +                        "billing": {
        +                          "enum": [
        +                            "one_off",
        +                            "monthly",
        +                            "annual"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "currency": {
        +                          "enum": [
        +                            "GBP",
        +                            "SGD",
        +                            "EUR",
        +                            "USD",
        +                            "CAD",
        +                            "AUD",
        +                            "NZD",
        +                            "MYR"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "display_name": {
        +                          "type": "string"
        +                        },
        +                        "price_local": {
        +                          "type": "number"
        +                        },
        +                        "tier_slug": {
        +                          "enum": [
        +                            "7_day_pass",
        +                            "solo",
        +                            "studio",
        +                            "practice"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "unlock_summary": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "tier_slug",
        +                        "display_name",
        +                        "price_local",
        +                        "currency",
        +                        "billing",
        +                        "unlock_summary"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "current_tier": {
        +                    "const": "free",
        +                    "default": "free",
        +                    "type": "string"
        +                  },
        +                  "pass_credit": {
        +                    "anyOf": [
        +                      {
        +                        "additionalProperties": false,
        +                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        +                        "properties": {
        +                          "amount_local": {
        +                            "type": "number"
        +                          },
        +                          "applies_to": {
        +                            "const": "solo_first_month",
        +                            "default": "solo_first_month",
        +                            "type": "string"
        +                          },
        +                          "currency": {
        +                            "type": "string"
        +                          },
        +                          "redeemable_until": {
        +                            "type": "string"
        +                          }
        +                        },
        +                        "required": [
        +                          "amount_local",
        +                          "currency",
        +                          "redeemable_until"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "pricing_url": {
        +                    "default": "https://civilquants.com/pricing",
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "available_tiers"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tos_url": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "upgrade_hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "warranty_disclaimer": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          }
        +        },
        +        "required": [
        +          "request_id",
        +          "issued_at",
        +          "tier"
        +        ],
        +        "type": "object"
        +      },
        +      "data": {
        +        "default": null,
        +        "title": "Data"
        +      },
        +      "error": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        +            "properties": {
        +              "code": {
        +                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        +                "enum": [
        +                  "RATE_LIMIT_EXCEEDED",
        +                  "TIER_INSUFFICIENT",
        +                  "INVALID_INPUT",
        +                  "SCHEMA_VERSION_MISMATCH",
        +                  "SCHEMA_INVARIANT_VIOLATION",
        +                  "UPSTREAM_TIMEOUT",
        +                  "BACKEND_FAILURE",
        +                  "IP_BLOCKED",
        +                  "RESOURCE_NOT_FOUND",
        +                  "RENDER_FAILURE",
        +                  "OCR_LOW_CONFIDENCE",
        +                  "MANUAL_REVIEW_REQUIRED",
        +                  "ACCEPTANCE_REQUIRED",
        +                  "INVALID_TOKEN"
        +                ],
        +                "type": "string"
        +              },
        +              "details": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "message": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "recoverable": {
        +                "type": "boolean"
        +              },
        +              "retry_after_seconds": {
        +                "anyOf": [
        +                  {
        +                    "minimum": 0,
        +                    "type": "integer"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              }
        +            },
        +            "required": [
        +              "code",
        +              "message",
        +              "recoverable"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      }
        +    },
        +    "required": [
        +      "_meta"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedcompute_gully1 field changed
      • changedOutput schema / properties / result / anyOf
        Previous value: -[
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "_meta": {
        -        "additionalProperties": false,
        -        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        -        "properties": {
        -          "deliverables": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        -                "properties": {
        -                  "docx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "dxf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "expires_at": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  },
        -                  "pdf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "xlsx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "expires_at"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "document_id": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "issued_at": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "rate_limit_remaining": {
        -            "anyOf": [
        -              {
        -                "minimum": 0,
        -                "type": "integer"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "request_id": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "schema_version": {
        -            "const": "1.0.0",
        -            "default": "1.0.0",
        -            "type": "string"
        -          },
        -          "scope_boundary": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        -                "properties": {
        -                  "not_in_scope": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "produced": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "recommended_companions": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "type": "string"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "produced",
        -                  "not_in_scope"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tier": {
        -            "enum": [
        -              "free",
        -              "paid"
        -            ],
        -            "type": "string"
        -          },
        -          "tier_upgrade": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        -                "properties": {
        -                  "available_tiers": {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        -                      "properties": {
        -                        "billing": {
        -                          "enum": [
        -                            "one_off",
        -                            "monthly",
        -                            "annual"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "currency": {
        -                          "enum": [
        -                            "GBP",
        -                            "SGD",
        -                            "EUR",
        -                            "USD",
        -                            "CAD",
        -                            "AUD",
        -                            "NZD",
        -                            "MYR"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "display_name": {
        -                          "type": "string"
        -                        },
        -                        "price_local": {
        -                          "type": "number"
        -                        },
        -                        "tier_slug": {
        -                          "enum": [
        -                            "7_day_pass",
        -                            "solo",
        -                            "studio",
        -                            "practice"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "unlock_summary": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "tier_slug",
        -                        "display_name",
        -                        "price_local",
        -                        "currency",
        -                        "billing",
        -                        "unlock_summary"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "current_tier": {
        -                    "const": "free",
        -                    "default": "free",
        -                    "type": "string"
        -                  },
        -                  "pass_credit": {
        -                    "anyOf": [
        -                      {
        -                        "additionalProperties": false,
        -                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        -                        "properties": {
        -                          "amount_local": {
        -                            "type": "number"
        -                          },
        -                          "applies_to": {
        -                            "const": "solo_first_month",
        -                            "default": "solo_first_month",
        -                            "type": "string"
        -                          },
        -                          "currency": {
        -                            "type": "string"
        -                          },
        -                          "redeemable_until": {
        -                            "type": "string"
        -                          }
        -                        },
        -                        "required": [
        -                          "amount_local",
        -                          "currency",
        -                          "redeemable_until"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "pricing_url": {
        -                    "default": "https://civilquants.com/pricing",
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "available_tiers"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tos_url": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "upgrade_hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "warranty_disclaimer": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          }
        -        },
        -        "required": [
        -          "request_id",
        -          "issued_at",
        -          "tier"
        -        ],
        -        "type": "object"
        -      },
        -      "data": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Schema § 1.1 — the typed payload returned inside `MCPResponse[ComputeResult]`.\n\nFree-tier responses omit `drawings` (the downloadable CAD artefact\npointers — the paid differentiator); the bridge enforces this. The\n`audit_trail` and the inline `drawing` preview are present on BOTH tiers\n(V1 ALIGN / 60th-fire D + C). `text_summary` is bounded to 2000 chars —\nkeeps the LLM-facing summary token-cheap and forces longer narrative into\nBoQ row descriptions where it belongs. `warnings` is the non-fatal\ngeometry advisory list (both tiers).",
        -            "properties": {
        -              "assembly_slug": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "audit_trail": {
        -                "anyOf": [
        -                  {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.7 — paid-tier audit-trail entry.\n\nOne entry per BoQ row; `boq_row_index` ties to the row position in\n`ComputeResult.boq_rows`. `derivation` is the human-readable formula\nwalk-through; `formula` is the optional formal expression.",
        -                      "properties": {
        -                        "boq_row_index": {
        -                          "minimum": 0,
        -                          "type": "integer"
        -                        },
        -                        "derivation": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "formula": {
        -                          "anyOf": [
        -                            {
        -                              "type": "string"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ],
        -                          "default": null
        -                        },
        -                        "id": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "parameters_referenced": {
        -                          "items": {
        -                            "type": "string"
        -                          },
        -                          "type": "array"
        -                        }
        -                      },
        -                      "required": [
        -                        "id",
        -                        "boq_row_index",
        -                        "derivation"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "boq_rows": {
        -                "items": {
        -                  "additionalProperties": false,
        -                  "description": "Schema § 1.3 — a single bill row in the requested standard's format.\n\n`description` is the non-verbatim functional description per spec § 13.9 /\n§ 15 invariant — NEVER reproduces a standard's verbatim clause text.\n`rate` / `amount` ship null because rates are commodity data the customer\nowns; the engine's job is the measurement, not the pricing.",
        -                  "properties": {
        -                    "amount": {
        -                      "anyOf": [
        -                        {
        -                          "type": "number"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "attribution": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "audit_id": {
        -                      "anyOf": [
        -                        {
        -                          "type": "string"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "description": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "quantity": {
        -                      "minimum": 0,
        -                      "type": "number"
        -                    },
        -                    "rate": {
        -                      "anyOf": [
        -                        {
        -                          "type": "number"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "unit": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "work_section": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    }
        -                  },
        -                  "required": [
        -                    "work_section",
        -                    "description",
        -                    "quantity",
        -                    "unit",
        -                    "attribution"
        -                  ],
        -                  "type": "object"
        -                },
        -                "type": "array"
        -              },
        -              "drawing": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": false,
        -                    "description": "Schema § 1.6a — inline server-rendered SVG preview of the geometry.\n\nThe MCP mirror of the web ``/compute`` response's ``drawing`` field\n(``api.schemas.compute.DrawingRef``): the same on-screen dimensioned\ndrawing both tiers see in the workspace, surfaced on the MCP compute\nresponse so a chat client can render it inline (60th-fire item C). This\nis the on-screen preview — present on BOTH tiers per the free/paid\nboundary; the downloadable CAD artefacts (DXF / dimensioned PDF) remain\nthe paid differentiator via the export tools.\n\nDefined here rather than importing ``DrawingRef`` because the web\n``schemas`` package imports back into this module (``schemas.render``),\nso reusing it would create an import cycle — the MCP wire contract keeps\nits own copy, the same pattern as ``BoQRow`` / ``DrawingReference``.",
        -                    "properties": {
        -                      "entity_count": {
        -                        "minimum": 0,
        -                        "type": "integer"
        -                      },
        -                      "svg_b64": {
        -                        "minLength": 1,
        -                        "type": "string"
        -                      },
        -                      "unit_of_drawing": {
        -                        "const": "m",
        -                        "default": "m",
        -                        "type": "string"
        -                      },
        -                      "viewbox_height": {
        -                        "exclusiveMinimum": 0,
        -                        "type": "number"
        -                      },
        -                      "viewbox_width": {
        -                        "exclusiveMinimum": 0,
        -                        "type": "number"
        -                      },
        -                      "viewbox_x": {
        -                        "type": "number"
        -                      },
        -                      "viewbox_y": {
        -                        "type": "number"
        -                      }
        -                    },
        -                    "required": [
        -                      "svg_b64",
        -                      "viewbox_x",
        -                      "viewbox_y",
        -                      "viewbox_width",
        -                      "viewbox_height",
        -                      "entity_count"
        -                    ],
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "drawings": {
        -                "anyOf": [
        -                  {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.6 — paid-tier drawing artefact pointer.\n\n`url` is an R2-signed URL; expiry is carried in `_meta.deliverables.expires_at`\non the envelope (not duplicated here). `layers` is DXF-only; PDF/SVG\ncallers omit it.",
        -                      "properties": {
        -                        "drawing_type": {
        -                          "enum": [
        -                            "section",
        -                            "plan",
        -                            "elevation",
        -                            "isometric",
        -                            "detail"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "format": {
        -                          "enum": [
        -                            "DXF",
        -                            "PDF",
        -                            "SVG"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "layers": {
        -                          "anyOf": [
        -                            {
        -                              "items": {
        -                                "type": "string"
        -                              },
        -                              "type": "array"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ],
        -                          "default": null
        -                        },
        -                        "scale": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "sheet_size": {
        -                          "enum": [
        -                            "A1",
        -                            "A2",
        -                            "A3",
        -                            "A4"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "url": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "drawing_type",
        -                        "format",
        -                        "url",
        -                        "sheet_size",
        -                        "scale"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "parameters_used": {
        -                "additionalProperties": false,
        -                "description": "Schema § 1.2 — the parameter snapshot the engine actually used.\n\nSplits user-supplied values from engine defaults so customers can see\nwhich numbers came from them and which the engine filled in. Every\ndefaulted parameter SHOULD have a corresponding entry in `assumptions`\n— the bridge layer enforces this when wrapping engine output.",
        -                "properties": {
        -                  "assumptions": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "engine_defaults": {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  "resolved_from_description": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "additionalProperties": false,
        -                          "description": "Schema § 1.2 — a parameter resolved by the forgiving-input layer.\n\nPopulated by the Track B-Forgiving Haiku-4.5 resolution pass; until that\nlayer lands, instances are constructed only by tests. `source` distinguishes\nthe resolution path so customers can audit which fields were inferred.",
        -                          "properties": {
        -                            "confidence": {
        -                              "anyOf": [
        -                                {
        -                                  "enum": [
        -                                    "high",
        -                                    "medium",
        -                                    "low"
        -                                  ],
        -                                  "type": "string"
        -                                },
        -                                {
        -                                  "type": "null"
        -                                }
        -                              ],
        -                              "default": null
        -                            },
        -                            "field_name": {
        -                              "minLength": 1,
        -                              "type": "string"
        -                            },
        -                            "resolved_value": {},
        -                            "source": {
        -                              "enum": [
        -                                "description_field",
        -                                "haiku_resolution",
        -                                "engine_default"
        -                              ],
        -                              "type": "string"
        -                            }
        -                          },
        -                          "required": [
        -                            "field_name",
        -                            "resolved_value",
        -                            "source"
        -                          ],
        -                          "type": "object"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "user_supplied": {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  }
        -                },
        -                "type": "object"
        -              },
        -              "standard": {
        -                "enum": [
        -                  "CESMM4",
        -                  "NRM2",
        -                  "SMM7",
        -                  "MMHW"
        -                ],
        -                "type": "string"
        -              },
        -              "text_summary": {
        -                "maxLength": 2000,
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "totals_summary": {
        -                "additionalProperties": false,
        -                "description": "Schema § 1.4 — totals_summary as a typed wrapper around the free-form dict.\n\nWire shape is a flat object (`{\"concrete_m3\": {...}, \"rebar_t\": {...}}`).\nWe model it as `RootModel`-equivalent via `model_config(extra=\"allow\")`\n+ a single `__root__`-style `entries` dict. Pydantic v2 recommends\n`RootModel` for free-form roots; using a wrapper class keeps the import\nsurface uniform with the rest of this module.",
        -                "properties": {
        -                  "entries": {
        -                    "additionalProperties": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.4 — single material/work-class total entry.",
        -                      "properties": {
        -                        "quantity": {
        -                          "minimum": 0,
        -                          "type": "number"
        -                        },
        -                        "unit": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "quantity",
        -                        "unit"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "object"
        -                  }
        -                },
        -                "type": "object"
        -              },
        -              "warnings": {
        -                "items": {
        -                  "additionalProperties": false,
        -                  "description": "Schema § 1.8 — a non-fatal geometry advisory (56th-fire T2).\n\nThe wire projection of the engine's `core.GeometryWarning`. Advisory only:\na warning NEVER changes a measured quantity — it flags geometry that is\nvalid but likely a mistake (e.g. a stale dependent-height default). Present\non BOTH tiers — a correctness/safety signal, not a paid feature.",
        -                  "properties": {
        -                    "affected_params": {
        -                      "items": {
        -                        "type": "string"
        -                      },
        -                      "type": "array"
        -                    },
        -                    "code": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "detail": {
        -                      "additionalProperties": {
        -                        "type": "number"
        -                      },
        -                      "type": "object"
        -                    },
        -                    "message": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "severity": {
        -                      "enum": [
        -                        "info",
        -                        "advisory",
        -                        "caution"
        -                      ],
        -                      "type": "string"
        -                    }
        -                  },
        -                  "required": [
        -                    "code",
        -                    "severity",
        -                    "message"
        -                  ],
        -                  "type": "object"
        -                },
        -                "type": "array"
        -              }
        -            },
        -            "required": [
        -              "assembly_slug",
        -              "standard",
        -              "parameters_used",
        -              "boq_rows",
        -              "totals_summary",
        -              "text_summary"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      },
        -      "error": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        -            "properties": {
        -              "code": {
        -                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        -                "enum": [
        -                  "RATE_LIMIT_EXCEEDED",
        -                  "TIER_INSUFFICIENT",
        -                  "INVALID_INPUT",
        -                  "SCHEMA_VERSION_MISMATCH",
        -                  "SCHEMA_INVARIANT_VIOLATION",
        -                  "UPSTREAM_TIMEOUT",
        -                  "BACKEND_FAILURE",
        -                  "IP_BLOCKED",
        -                  "RESOURCE_NOT_FOUND",
        -                  "RENDER_FAILURE",
        -                  "OCR_LOW_CONFIDENCE",
        -                  "MANUAL_REVIEW_REQUIRED",
        -                  "ACCEPTANCE_REQUIRED",
        -                  "INVALID_TOKEN"
        -                ],
        -                "type": "string"
        -              },
        -              "details": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "message": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "recoverable": {
        -                "type": "boolean"
        -              },
        -              "retry_after_seconds": {
        -                "anyOf": [
        -                  {
        -                    "minimum": 0,
        -                    "type": "integer"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              }
        -            },
        -            "required": [
        -              "code",
        -              "message",
        -              "recoverable"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      }
        -    },
        -    "required": [
        -      "_meta"
        -    ],
        -    "type": "object"
        -  },
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "_meta": {
        -        "additionalProperties": false,
        -        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        -        "properties": {
        -          "deliverables": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        -                "properties": {
        -                  "docx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "dxf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "expires_at": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  },
        -                  "pdf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "xlsx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "expires_at"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "document_id": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "issued_at": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "rate_limit_remaining": {
        -            "anyOf": [
        -              {
        -                "minimum": 0,
        -                "type": "integer"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "request_id": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "schema_version": {
        -            "const": "1.0.0",
        -            "default": "1.0.0",
        -            "type": "string"
        -          },
        -          "scope_boundary": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        -                "properties": {
        -                  "not_in_scope": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "produced": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "recommended_companions": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "type": "string"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "produced",
        -                  "not_in_scope"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tier": {
        -            "enum": [
        -              "free",
        -              "paid"
        -            ],
        -            "type": "string"
        -          },
        -          "tier_upgrade": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        -                "properties": {
        -                  "available_tiers": {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        -                      "properties": {
        -                        "billing": {
        -                          "enum": [
        -                            "one_off",
        -                            "monthly",
        -                            "annual"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "currency": {
        -                          "enum": [
        -                            "GBP",
        -                            "SGD",
        -                            "EUR",
        -                            "USD",
        -                            "CAD",
        -                            "AUD",
        -                            "NZD",
        -                            "MYR"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "display_name": {
        -                          "type": "string"
        -                        },
        -                        "price_local": {
        -                          "type": "number"
        -                        },
        -                        "tier_slug": {
        -                          "enum": [
        -                            "7_day_pass",
        -                            "solo",
        -                            "studio",
        -                            "practice"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "unlock_summary": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "tier_slug",
        -                        "display_name",
        -                        "price_local",
        -                        "currency",
        -                        "billing",
        -                        "unlock_summary"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "current_tier": {
        -                    "const": "free",
        -                    "default": "free",
        -                    "type": "string"
        -                  },
        -                  "pass_credit": {
        -                    "anyOf": [
        -                      {
        -                        "additionalProperties": false,
        -                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        -                        "properties": {
        -                          "amount_local": {
        -                            "type": "number"
        -                          },
        -                          "applies_to": {
        -                            "const": "solo_first_month",
        -                            "default": "solo_first_month",
        -                            "type": "string"
        -                          },
        -                          "currency": {
        -                            "type": "string"
        -                          },
        -                          "redeemable_until": {
        -                            "type": "string"
        -                          }
        -                        },
        -                        "required": [
        -                          "amount_local",
        -                          "currency",
        -                          "redeemable_until"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "pricing_url": {
        -                    "default": "https://civilquants.com/pricing",
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "available_tiers"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tos_url": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "upgrade_hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "warranty_disclaimer": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          }
        -        },
        -        "required": [
        -          "request_id",
        -          "issued_at",
        -          "tier"
        -        ],
        -        "type": "object"
        -      },
        -      "data": {
        -        "default": null,
        -        "title": "Data"
        -      },
        -      "error": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        -            "properties": {
        -              "code": {
        -                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        -                "enum": [
        -                  "RATE_LIMIT_EXCEEDED",
        -                  "TIER_INSUFFICIENT",
        -                  "INVALID_INPUT",
        -                  "SCHEMA_VERSION_MISMATCH",
        -                  "SCHEMA_INVARIANT_VIOLATION",
        -                  "UPSTREAM_TIMEOUT",
        -                  "BACKEND_FAILURE",
        -                  "IP_BLOCKED",
        -                  "RESOURCE_NOT_FOUND",
        -                  "RENDER_FAILURE",
        -                  "OCR_LOW_CONFIDENCE",
        -                  "MANUAL_REVIEW_REQUIRED",
        -                  "ACCEPTANCE_REQUIRED",
        -                  "INVALID_TOKEN"
        -                ],
        -                "type": "string"
        -              },
        -              "details": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "message": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "recoverable": {
        -                "type": "boolean"
        -              },
        -              "retry_after_seconds": {
        -                "anyOf": [
        -                  {
        -                    "minimum": 0,
        -                    "type": "integer"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              }
        -            },
        -            "required": [
        -              "code",
        -              "message",
        -              "recoverable"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      }
        -    },
        -    "required": [
        -      "_meta"
        -    ],
        -    "type": "object"
        -  }
        -]New value: +[
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "_meta": {
        +        "additionalProperties": false,
        +        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        +        "properties": {
        +          "deliverables": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        +                "properties": {
        +                  "docx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "dxf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "expires_at": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  },
        +                  "pdf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "xlsx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "expires_at"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "document_id": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "issued_at": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "rate_limit_remaining": {
        +            "anyOf": [
        +              {
        +                "minimum": 0,
        +                "type": "integer"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "request_id": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "schema_version": {
        +            "const": "1.0.0",
        +            "default": "1.0.0",
        +            "type": "string"
        +          },
        +          "scope_boundary": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        +                "properties": {
        +                  "not_in_scope": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "produced": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "recommended_companions": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "type": "string"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "produced",
        +                  "not_in_scope"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tier": {
        +            "enum": [
        +              "free",
        +              "paid"
        +            ],
        +            "type": "string"
        +          },
        +          "tier_upgrade": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        +                "properties": {
        +                  "available_tiers": {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        +                      "properties": {
        +                        "billing": {
        +                          "enum": [
        +                            "one_off",
        +                            "monthly",
        +                            "annual"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "currency": {
        +                          "enum": [
        +                            "GBP",
        +                            "SGD",
        +                            "EUR",
        +                            "USD",
        +                            "CAD",
        +                            "AUD",
        +                            "NZD",
        +                            "MYR"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "display_name": {
        +                          "type": "string"
        +                        },
        +                        "price_local": {
        +                          "type": "number"
        +                        },
        +                        "tier_slug": {
        +                          "enum": [
        +                            "7_day_pass",
        +                            "solo",
        +                            "studio",
        +                            "practice"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "unlock_summary": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "tier_slug",
        +                        "display_name",
        +                        "price_local",
        +                        "currency",
        +                        "billing",
        +                        "unlock_summary"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "current_tier": {
        +                    "const": "free",
        +                    "default": "free",
        +                    "type": "string"
        +                  },
        +                  "pass_credit": {
        +                    "anyOf": [
        +                      {
        +                        "additionalProperties": false,
        +                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        +                        "properties": {
        +                          "amount_local": {
        +                            "type": "number"
        +                          },
        +                          "applies_to": {
        +                            "const": "solo_first_month",
        +                            "default": "solo_first_month",
        +                            "type": "string"
        +                          },
        +                          "currency": {
        +                            "type": "string"
        +                          },
        +                          "redeemable_until": {
        +                            "type": "string"
        +                          }
        +                        },
        +                        "required": [
        +                          "amount_local",
        +                          "currency",
        +                          "redeemable_until"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "pricing_url": {
        +                    "default": "https://civilquants.com/pricing",
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "available_tiers"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tos_url": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "upgrade_hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "warranty_disclaimer": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          }
        +        },
        +        "required": [
        +          "request_id",
        +          "issued_at",
        +          "tier"
        +        ],
        +        "type": "object"
        +      },
        +      "data": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Schema § 1.1 — the typed payload returned inside `MCPResponse[ComputeResult]`.\n\nFree-tier responses omit `drawings` (the downloadable CAD artefact\npointers — the paid differentiator); the bridge enforces this. The\n`audit_trail` and the inline `drawing` preview are present on BOTH tiers\n(V1 ALIGN / 60th-fire D + C). `text_summary` is bounded to 2000 chars —\nkeeps the LLM-facing summary token-cheap and forces longer narrative into\nBoQ row descriptions where it belongs. `warnings` is the non-fatal\ngeometry advisory list (both tiers).",
        +            "properties": {
        +              "assembly_slug": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "audit_trail": {
        +                "anyOf": [
        +                  {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.7 — paid-tier audit-trail entry.\n\nOne entry per BoQ row; `boq_row_index` ties to the row position in\n`ComputeResult.boq_rows`. `derivation` is the human-readable formula\nwalk-through; `formula` is the optional formal expression.",
        +                      "properties": {
        +                        "boq_row_index": {
        +                          "minimum": 0,
        +                          "type": "integer"
        +                        },
        +                        "derivation": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "formula": {
        +                          "anyOf": [
        +                            {
        +                              "type": "string"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ],
        +                          "default": null
        +                        },
        +                        "id": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "parameters_referenced": {
        +                          "items": {
        +                            "type": "string"
        +                          },
        +                          "type": "array"
        +                        }
        +                      },
        +                      "required": [
        +                        "id",
        +                        "boq_row_index",
        +                        "derivation"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "boq_rows": {
        +                "items": {
        +                  "additionalProperties": false,
        +                  "description": "Schema § 1.3 — a single bill row in the requested standard's format.\n\n`description` is the non-verbatim functional description per spec § 13.9 /\n§ 15 invariant — NEVER reproduces a standard's verbatim clause text.\n`rate` / `amount` ship null because rates are commodity data the customer\nowns; the engine's job is the measurement, not the pricing.",
        +                  "properties": {
        +                    "amount": {
        +                      "anyOf": [
        +                        {
        +                          "type": "number"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "attribution": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "audit_id": {
        +                      "anyOf": [
        +                        {
        +                          "type": "string"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "description": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "quantity": {
        +                      "minimum": 0,
        +                      "type": "number"
        +                    },
        +                    "rate": {
        +                      "anyOf": [
        +                        {
        +                          "type": "number"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "unit": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "work_section": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    }
        +                  },
        +                  "required": [
        +                    "work_section",
        +                    "description",
        +                    "quantity",
        +                    "unit",
        +                    "attribution"
        +                  ],
        +                  "type": "object"
        +                },
        +                "type": "array"
        +              },
        +              "drawing": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": false,
        +                    "description": "Schema § 1.6a — inline server-rendered SVG preview of the geometry.\n\nThe MCP mirror of the web ``/compute`` response's ``drawing`` field\n(``api.schemas.compute.DrawingRef``): the same on-screen dimensioned\ndrawing both tiers see in the workspace, surfaced on the MCP compute\nresponse so a chat client can render it inline (60th-fire item C). This\nis the on-screen preview — present on BOTH tiers per the free/paid\nboundary; the downloadable CAD artefacts (DXF / dimensioned PDF) remain\nthe paid differentiator via the export tools.\n\nDefined here rather than importing ``DrawingRef`` because the web\n``schemas`` package imports back into this module (``schemas.render``),\nso reusing it would create an import cycle — the MCP wire contract keeps\nits own copy, the same pattern as ``BoQRow`` / ``DrawingReference``.",
        +                    "properties": {
        +                      "entity_count": {
        +                        "minimum": 0,
        +                        "type": "integer"
        +                      },
        +                      "svg_b64": {
        +                        "minLength": 1,
        +                        "type": "string"
        +                      },
        +                      "unit_of_drawing": {
        +                        "const": "m",
        +                        "default": "m",
        +                        "type": "string"
        +                      },
        +                      "viewbox_height": {
        +                        "exclusiveMinimum": 0,
        +                        "type": "number"
        +                      },
        +                      "viewbox_width": {
        +                        "exclusiveMinimum": 0,
        +                        "type": "number"
        +                      },
        +                      "viewbox_x": {
        +                        "type": "number"
        +                      },
        +                      "viewbox_y": {
        +                        "type": "number"
        +                      }
        +                    },
        +                    "required": [
        +                      "svg_b64",
        +                      "viewbox_x",
        +                      "viewbox_y",
        +                      "viewbox_width",
        +                      "viewbox_height",
        +                      "entity_count"
        +                    ],
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "drawings": {
        +                "anyOf": [
        +                  {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.6 — paid-tier drawing artefact pointer.\n\n`url` is an R2-signed URL; expiry is carried in `_meta.deliverables.expires_at`\non the envelope (not duplicated here). `layers` is DXF-only; PDF/SVG\ncallers omit it.",
        +                      "properties": {
        +                        "drawing_type": {
        +                          "enum": [
        +                            "section",
        +                            "plan",
        +                            "elevation",
        +                            "isometric",
        +                            "detail"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "format": {
        +                          "enum": [
        +                            "DXF",
        +                            "PDF",
        +                            "SVG"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "layers": {
        +                          "anyOf": [
        +                            {
        +                              "items": {
        +                                "type": "string"
        +                              },
        +                              "type": "array"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ],
        +                          "default": null
        +                        },
        +                        "scale": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "sheet_size": {
        +                          "enum": [
        +                            "A1",
        +                            "A2",
        +                            "A3",
        +                            "A4"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "url": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "drawing_type",
        +                        "format",
        +                        "url",
        +                        "sheet_size",
        +                        "scale"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "parameters_used": {
        +                "additionalProperties": false,
        +                "description": "Schema § 1.2 — the parameter snapshot the engine actually used.\n\nSplits user-supplied values from engine defaults so customers can see\nwhich numbers came from them and which the engine filled in. Every\ndefaulted parameter SHOULD have a corresponding entry in `assumptions`\n— the bridge layer enforces this when wrapping engine output.",
        +                "properties": {
        +                  "assumptions": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "engine_defaults": {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  "user_supplied": {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  }
        +                },
        +                "type": "object"
        +              },
        +              "standard": {
        +                "enum": [
        +                  "CESMM4",
        +                  "NRM2",
        +                  "SMM7",
        +                  "MMHW"
        +                ],
        +                "type": "string"
        +              },
        +              "text_summary": {
        +                "maxLength": 2000,
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "totals_summary": {
        +                "additionalProperties": false,
        +                "description": "Schema § 1.4 — totals_summary as a typed wrapper around the free-form dict.\n\nWire shape is a flat object (`{\"concrete_m3\": {...}, \"rebar_t\": {...}}`).\nWe model it as `RootModel`-equivalent via `model_config(extra=\"allow\")`\n+ a single `__root__`-style `entries` dict. Pydantic v2 recommends\n`RootModel` for free-form roots; using a wrapper class keeps the import\nsurface uniform with the rest of this module.",
        +                "properties": {
        +                  "entries": {
        +                    "additionalProperties": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.4 — single material/work-class total entry.",
        +                      "properties": {
        +                        "quantity": {
        +                          "minimum": 0,
        +                          "type": "number"
        +                        },
        +                        "unit": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "quantity",
        +                        "unit"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "object"
        +                  }
        +                },
        +                "type": "object"
        +              },
        +              "warnings": {
        +                "items": {
        +                  "additionalProperties": false,
        +                  "description": "Schema § 1.8 — a non-fatal geometry advisory (56th-fire T2).\n\nThe wire projection of the engine's `core.GeometryWarning`. Advisory only:\na warning NEVER changes a measured quantity — it flags geometry that is\nvalid but likely a mistake (e.g. a stale dependent-height default). Present\non BOTH tiers — a correctness/safety signal, not a paid feature.",
        +                  "properties": {
        +                    "affected_params": {
        +                      "items": {
        +                        "type": "string"
        +                      },
        +                      "type": "array"
        +                    },
        +                    "code": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "detail": {
        +                      "additionalProperties": {
        +                        "type": "number"
        +                      },
        +                      "type": "object"
        +                    },
        +                    "message": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "severity": {
        +                      "enum": [
        +                        "info",
        +                        "advisory",
        +                        "caution"
        +                      ],
        +                      "type": "string"
        +                    }
        +                  },
        +                  "required": [
        +                    "code",
        +                    "severity",
        +                    "message"
        +                  ],
        +                  "type": "object"
        +                },
        +                "type": "array"
        +              }
        +            },
        +            "required": [
        +              "assembly_slug",
        +              "standard",
        +              "parameters_used",
        +              "boq_rows",
        +              "totals_summary",
        +              "text_summary"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      },
        +      "error": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        +            "properties": {
        +              "code": {
        +                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        +                "enum": [
        +                  "RATE_LIMIT_EXCEEDED",
        +                  "TIER_INSUFFICIENT",
        +                  "INVALID_INPUT",
        +                  "SCHEMA_VERSION_MISMATCH",
        +                  "SCHEMA_INVARIANT_VIOLATION",
        +                  "UPSTREAM_TIMEOUT",
        +                  "BACKEND_FAILURE",
        +                  "IP_BLOCKED",
        +                  "RESOURCE_NOT_FOUND",
        +                  "RENDER_FAILURE",
        +                  "OCR_LOW_CONFIDENCE",
        +                  "MANUAL_REVIEW_REQUIRED",
        +                  "ACCEPTANCE_REQUIRED",
        +                  "INVALID_TOKEN"
        +                ],
        +                "type": "string"
        +              },
        +              "details": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "message": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "recoverable": {
        +                "type": "boolean"
        +              },
        +              "retry_after_seconds": {
        +                "anyOf": [
        +                  {
        +                    "minimum": 0,
        +                    "type": "integer"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              }
        +            },
        +            "required": [
        +              "code",
        +              "message",
        +              "recoverable"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      }
        +    },
        +    "required": [
        +      "_meta"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "_meta": {
        +        "additionalProperties": false,
        +        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        +        "properties": {
        +          "deliverables": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        +                "properties": {
        +                  "docx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "dxf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "expires_at": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  },
        +                  "pdf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "xlsx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "expires_at"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "document_id": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "issued_at": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "rate_limit_remaining": {
        +            "anyOf": [
        +              {
        +                "minimum": 0,
        +                "type": "integer"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "request_id": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "schema_version": {
        +            "const": "1.0.0",
        +            "default": "1.0.0",
        +            "type": "string"
        +          },
        +          "scope_boundary": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        +                "properties": {
        +                  "not_in_scope": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "produced": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "recommended_companions": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "type": "string"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "produced",
        +                  "not_in_scope"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tier": {
        +            "enum": [
        +              "free",
        +              "paid"
        +            ],
        +            "type": "string"
        +          },
        +          "tier_upgrade": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        +                "properties": {
        +                  "available_tiers": {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        +                      "properties": {
        +                        "billing": {
        +                          "enum": [
        +                            "one_off",
        +                            "monthly",
        +                            "annual"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "currency": {
        +                          "enum": [
        +                            "GBP",
        +                            "SGD",
        +                            "EUR",
        +                            "USD",
        +                            "CAD",
        +                            "AUD",
        +                            "NZD",
        +                            "MYR"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "display_name": {
        +                          "type": "string"
        +                        },
        +                        "price_local": {
        +                          "type": "number"
        +                        },
        +                        "tier_slug": {
        +                          "enum": [
        +                            "7_day_pass",
        +                            "solo",
        +                            "studio",
        +                            "practice"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "unlock_summary": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "tier_slug",
        +                        "display_name",
        +                        "price_local",
        +                        "currency",
        +                        "billing",
        +                        "unlock_summary"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "current_tier": {
        +                    "const": "free",
        +                    "default": "free",
        +                    "type": "string"
        +                  },
        +                  "pass_credit": {
        +                    "anyOf": [
        +                      {
        +                        "additionalProperties": false,
        +                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        +                        "properties": {
        +                          "amount_local": {
        +                            "type": "number"
        +                          },
        +                          "applies_to": {
        +                            "const": "solo_first_month",
        +                            "default": "solo_first_month",
        +                            "type": "string"
        +                          },
        +                          "currency": {
        +                            "type": "string"
        +                          },
        +                          "redeemable_until": {
        +                            "type": "string"
        +                          }
        +                        },
        +                        "required": [
        +                          "amount_local",
        +                          "currency",
        +                          "redeemable_until"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "pricing_url": {
        +                    "default": "https://civilquants.com/pricing",
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "available_tiers"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tos_url": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "upgrade_hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "warranty_disclaimer": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          }
        +        },
        +        "required": [
        +          "request_id",
        +          "issued_at",
        +          "tier"
        +        ],
        +        "type": "object"
        +      },
        +      "data": {
        +        "default": null,
        +        "title": "Data"
        +      },
        +      "error": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        +            "properties": {
        +              "code": {
        +                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        +                "enum": [
        +                  "RATE_LIMIT_EXCEEDED",
        +                  "TIER_INSUFFICIENT",
        +                  "INVALID_INPUT",
        +                  "SCHEMA_VERSION_MISMATCH",
        +                  "SCHEMA_INVARIANT_VIOLATION",
        +                  "UPSTREAM_TIMEOUT",
        +                  "BACKEND_FAILURE",
        +                  "IP_BLOCKED",
        +                  "RESOURCE_NOT_FOUND",
        +                  "RENDER_FAILURE",
        +                  "OCR_LOW_CONFIDENCE",
        +                  "MANUAL_REVIEW_REQUIRED",
        +                  "ACCEPTANCE_REQUIRED",
        +                  "INVALID_TOKEN"
        +                ],
        +                "type": "string"
        +              },
        +              "details": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "message": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "recoverable": {
        +                "type": "boolean"
        +              },
        +              "retry_after_seconds": {
        +                "anyOf": [
        +                  {
        +                    "minimum": 0,
        +                    "type": "integer"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              }
        +            },
        +            "required": [
        +              "code",
        +              "message",
        +              "recoverable"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      }
        +    },
        +    "required": [
        +      "_meta"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedcompute_hard_material_in_trench1 field changed
      • changedOutput schema / properties / result / anyOf
        Previous value: -[
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "_meta": {
        -        "additionalProperties": false,
        -        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        -        "properties": {
        -          "deliverables": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        -                "properties": {
        -                  "docx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "dxf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "expires_at": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  },
        -                  "pdf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "xlsx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "expires_at"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "document_id": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "issued_at": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "rate_limit_remaining": {
        -            "anyOf": [
        -              {
        -                "minimum": 0,
        -                "type": "integer"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "request_id": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "schema_version": {
        -            "const": "1.0.0",
        -            "default": "1.0.0",
        -            "type": "string"
        -          },
        -          "scope_boundary": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        -                "properties": {
        -                  "not_in_scope": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "produced": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "recommended_companions": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "type": "string"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "produced",
        -                  "not_in_scope"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tier": {
        -            "enum": [
        -              "free",
        -              "paid"
        -            ],
        -            "type": "string"
        -          },
        -          "tier_upgrade": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        -                "properties": {
        -                  "available_tiers": {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        -                      "properties": {
        -                        "billing": {
        -                          "enum": [
        -                            "one_off",
        -                            "monthly",
        -                            "annual"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "currency": {
        -                          "enum": [
        -                            "GBP",
        -                            "SGD",
        -                            "EUR",
        -                            "USD",
        -                            "CAD",
        -                            "AUD",
        -                            "NZD",
        -                            "MYR"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "display_name": {
        -                          "type": "string"
        -                        },
        -                        "price_local": {
        -                          "type": "number"
        -                        },
        -                        "tier_slug": {
        -                          "enum": [
        -                            "7_day_pass",
        -                            "solo",
        -                            "studio",
        -                            "practice"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "unlock_summary": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "tier_slug",
        -                        "display_name",
        -                        "price_local",
        -                        "currency",
        -                        "billing",
        -                        "unlock_summary"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "current_tier": {
        -                    "const": "free",
        -                    "default": "free",
        -                    "type": "string"
        -                  },
        -                  "pass_credit": {
        -                    "anyOf": [
        -                      {
        -                        "additionalProperties": false,
        -                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        -                        "properties": {
        -                          "amount_local": {
        -                            "type": "number"
        -                          },
        -                          "applies_to": {
        -                            "const": "solo_first_month",
        -                            "default": "solo_first_month",
        -                            "type": "string"
        -                          },
        -                          "currency": {
        -                            "type": "string"
        -                          },
        -                          "redeemable_until": {
        -                            "type": "string"
        -                          }
        -                        },
        -                        "required": [
        -                          "amount_local",
        -                          "currency",
        -                          "redeemable_until"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "pricing_url": {
        -                    "default": "https://civilquants.com/pricing",
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "available_tiers"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tos_url": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "upgrade_hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "warranty_disclaimer": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          }
        -        },
        -        "required": [
        -          "request_id",
        -          "issued_at",
        -          "tier"
        -        ],
        -        "type": "object"
        -      },
        -      "data": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Schema § 1.1 — the typed payload returned inside `MCPResponse[ComputeResult]`.\n\nFree-tier responses omit `drawings` (the downloadable CAD artefact\npointers — the paid differentiator); the bridge enforces this. The\n`audit_trail` and the inline `drawing` preview are present on BOTH tiers\n(V1 ALIGN / 60th-fire D + C). `text_summary` is bounded to 2000 chars —\nkeeps the LLM-facing summary token-cheap and forces longer narrative into\nBoQ row descriptions where it belongs. `warnings` is the non-fatal\ngeometry advisory list (both tiers).",
        -            "properties": {
        -              "assembly_slug": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "audit_trail": {
        -                "anyOf": [
        -                  {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.7 — paid-tier audit-trail entry.\n\nOne entry per BoQ row; `boq_row_index` ties to the row position in\n`ComputeResult.boq_rows`. `derivation` is the human-readable formula\nwalk-through; `formula` is the optional formal expression.",
        -                      "properties": {
        -                        "boq_row_index": {
        -                          "minimum": 0,
        -                          "type": "integer"
        -                        },
        -                        "derivation": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "formula": {
        -                          "anyOf": [
        -                            {
        -                              "type": "string"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ],
        -                          "default": null
        -                        },
        -                        "id": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "parameters_referenced": {
        -                          "items": {
        -                            "type": "string"
        -                          },
        -                          "type": "array"
        -                        }
        -                      },
        -                      "required": [
        -                        "id",
        -                        "boq_row_index",
        -                        "derivation"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "boq_rows": {
        -                "items": {
        -                  "additionalProperties": false,
        -                  "description": "Schema § 1.3 — a single bill row in the requested standard's format.\n\n`description` is the non-verbatim functional description per spec § 13.9 /\n§ 15 invariant — NEVER reproduces a standard's verbatim clause text.\n`rate` / `amount` ship null because rates are commodity data the customer\nowns; the engine's job is the measurement, not the pricing.",
        -                  "properties": {
        -                    "amount": {
        -                      "anyOf": [
        -                        {
        -                          "type": "number"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "attribution": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "audit_id": {
        -                      "anyOf": [
        -                        {
        -                          "type": "string"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "description": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "quantity": {
        -                      "minimum": 0,
        -                      "type": "number"
        -                    },
        -                    "rate": {
        -                      "anyOf": [
        -                        {
        -                          "type": "number"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "unit": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "work_section": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    }
        -                  },
        -                  "required": [
        -                    "work_section",
        -                    "description",
        -                    "quantity",
        -                    "unit",
        -                    "attribution"
        -                  ],
        -                  "type": "object"
        -                },
        -                "type": "array"
        -              },
        -              "drawing": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": false,
        -                    "description": "Schema § 1.6a — inline server-rendered SVG preview of the geometry.\n\nThe MCP mirror of the web ``/compute`` response's ``drawing`` field\n(``api.schemas.compute.DrawingRef``): the same on-screen dimensioned\ndrawing both tiers see in the workspace, surfaced on the MCP compute\nresponse so a chat client can render it inline (60th-fire item C). This\nis the on-screen preview — present on BOTH tiers per the free/paid\nboundary; the downloadable CAD artefacts (DXF / dimensioned PDF) remain\nthe paid differentiator via the export tools.\n\nDefined here rather than importing ``DrawingRef`` because the web\n``schemas`` package imports back into this module (``schemas.render``),\nso reusing it would create an import cycle — the MCP wire contract keeps\nits own copy, the same pattern as ``BoQRow`` / ``DrawingReference``.",
        -                    "properties": {
        -                      "entity_count": {
        -                        "minimum": 0,
        -                        "type": "integer"
        -                      },
        -                      "svg_b64": {
        -                        "minLength": 1,
        -                        "type": "string"
        -                      },
        -                      "unit_of_drawing": {
        -                        "const": "m",
        -                        "default": "m",
        -                        "type": "string"
        -                      },
        -                      "viewbox_height": {
        -                        "exclusiveMinimum": 0,
        -                        "type": "number"
        -                      },
        -                      "viewbox_width": {
        -                        "exclusiveMinimum": 0,
        -                        "type": "number"
        -                      },
        -                      "viewbox_x": {
        -                        "type": "number"
        -                      },
        -                      "viewbox_y": {
        -                        "type": "number"
        -                      }
        -                    },
        -                    "required": [
        -                      "svg_b64",
        -                      "viewbox_x",
        -                      "viewbox_y",
        -                      "viewbox_width",
        -                      "viewbox_height",
        -                      "entity_count"
        -                    ],
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "drawings": {
        -                "anyOf": [
        -                  {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.6 — paid-tier drawing artefact pointer.\n\n`url` is an R2-signed URL; expiry is carried in `_meta.deliverables.expires_at`\non the envelope (not duplicated here). `layers` is DXF-only; PDF/SVG\ncallers omit it.",
        -                      "properties": {
        -                        "drawing_type": {
        -                          "enum": [
        -                            "section",
        -                            "plan",
        -                            "elevation",
        -                            "isometric",
        -                            "detail"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "format": {
        -                          "enum": [
        -                            "DXF",
        -                            "PDF",
        -                            "SVG"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "layers": {
        -                          "anyOf": [
        -                            {
        -                              "items": {
        -                                "type": "string"
        -                              },
        -                              "type": "array"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ],
        -                          "default": null
        -                        },
        -                        "scale": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "sheet_size": {
        -                          "enum": [
        -                            "A1",
        -                            "A2",
        -                            "A3",
        -                            "A4"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "url": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "drawing_type",
        -                        "format",
        -                        "url",
        -                        "sheet_size",
        -                        "scale"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "parameters_used": {
        -                "additionalProperties": false,
        -                "description": "Schema § 1.2 — the parameter snapshot the engine actually used.\n\nSplits user-supplied values from engine defaults so customers can see\nwhich numbers came from them and which the engine filled in. Every\ndefaulted parameter SHOULD have a corresponding entry in `assumptions`\n— the bridge layer enforces this when wrapping engine output.",
        -                "properties": {
        -                  "assumptions": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "engine_defaults": {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  "resolved_from_description": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "additionalProperties": false,
        -                          "description": "Schema § 1.2 — a parameter resolved by the forgiving-input layer.\n\nPopulated by the Track B-Forgiving Haiku-4.5 resolution pass; until that\nlayer lands, instances are constructed only by tests. `source` distinguishes\nthe resolution path so customers can audit which fields were inferred.",
        -                          "properties": {
        -                            "confidence": {
        -                              "anyOf": [
        -                                {
        -                                  "enum": [
        -                                    "high",
        -                                    "medium",
        -                                    "low"
        -                                  ],
        -                                  "type": "string"
        -                                },
        -                                {
        -                                  "type": "null"
        -                                }
        -                              ],
        -                              "default": null
        -                            },
        -                            "field_name": {
        -                              "minLength": 1,
        -                              "type": "string"
        -                            },
        -                            "resolved_value": {},
        -                            "source": {
        -                              "enum": [
        -                                "description_field",
        -                                "haiku_resolution",
        -                                "engine_default"
        -                              ],
        -                              "type": "string"
        -                            }
        -                          },
        -                          "required": [
        -                            "field_name",
        -                            "resolved_value",
        -                            "source"
        -                          ],
        -                          "type": "object"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "user_supplied": {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  }
        -                },
        -                "type": "object"
        -              },
        -              "standard": {
        -                "enum": [
        -                  "CESMM4",
        -                  "NRM2",
        -                  "SMM7",
        -                  "MMHW"
        -                ],
        -                "type": "string"
        -              },
        -              "text_summary": {
        -                "maxLength": 2000,
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "totals_summary": {
        -                "additionalProperties": false,
        -                "description": "Schema § 1.4 — totals_summary as a typed wrapper around the free-form dict.\n\nWire shape is a flat object (`{\"concrete_m3\": {...}, \"rebar_t\": {...}}`).\nWe model it as `RootModel`-equivalent via `model_config(extra=\"allow\")`\n+ a single `__root__`-style `entries` dict. Pydantic v2 recommends\n`RootModel` for free-form roots; using a wrapper class keeps the import\nsurface uniform with the rest of this module.",
        -                "properties": {
        -                  "entries": {
        -                    "additionalProperties": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.4 — single material/work-class total entry.",
        -                      "properties": {
        -                        "quantity": {
        -                          "minimum": 0,
        -                          "type": "number"
        -                        },
        -                        "unit": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "quantity",
        -                        "unit"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "object"
        -                  }
        -                },
        -                "type": "object"
        -              },
        -              "warnings": {
        -                "items": {
        -                  "additionalProperties": false,
        -                  "description": "Schema § 1.8 — a non-fatal geometry advisory (56th-fire T2).\n\nThe wire projection of the engine's `core.GeometryWarning`. Advisory only:\na warning NEVER changes a measured quantity — it flags geometry that is\nvalid but likely a mistake (e.g. a stale dependent-height default). Present\non BOTH tiers — a correctness/safety signal, not a paid feature.",
        -                  "properties": {
        -                    "affected_params": {
        -                      "items": {
        -                        "type": "string"
        -                      },
        -                      "type": "array"
        -                    },
        -                    "code": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "detail": {
        -                      "additionalProperties": {
        -                        "type": "number"
        -                      },
        -                      "type": "object"
        -                    },
        -                    "message": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "severity": {
        -                      "enum": [
        -                        "info",
        -                        "advisory",
        -                        "caution"
        -                      ],
        -                      "type": "string"
        -                    }
        -                  },
        -                  "required": [
        -                    "code",
        -                    "severity",
        -                    "message"
        -                  ],
        -                  "type": "object"
        -                },
        -                "type": "array"
        -              }
        -            },
        -            "required": [
        -              "assembly_slug",
        -              "standard",
        -              "parameters_used",
        -              "boq_rows",
        -              "totals_summary",
        -              "text_summary"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      },
        -      "error": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        -            "properties": {
        -              "code": {
        -                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        -                "enum": [
        -                  "RATE_LIMIT_EXCEEDED",
        -                  "TIER_INSUFFICIENT",
        -                  "INVALID_INPUT",
        -                  "SCHEMA_VERSION_MISMATCH",
        -                  "SCHEMA_INVARIANT_VIOLATION",
        -                  "UPSTREAM_TIMEOUT",
        -                  "BACKEND_FAILURE",
        -                  "IP_BLOCKED",
        -                  "RESOURCE_NOT_FOUND",
        -                  "RENDER_FAILURE",
        -                  "OCR_LOW_CONFIDENCE",
        -                  "MANUAL_REVIEW_REQUIRED",
        -                  "ACCEPTANCE_REQUIRED",
        -                  "INVALID_TOKEN"
        -                ],
        -                "type": "string"
        -              },
        -              "details": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "message": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "recoverable": {
        -                "type": "boolean"
        -              },
        -              "retry_after_seconds": {
        -                "anyOf": [
        -                  {
        -                    "minimum": 0,
        -                    "type": "integer"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              }
        -            },
        -            "required": [
        -              "code",
        -              "message",
        -              "recoverable"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      }
        -    },
        -    "required": [
        -      "_meta"
        -    ],
        -    "type": "object"
        -  },
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "_meta": {
        -        "additionalProperties": false,
        -        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        -        "properties": {
        -          "deliverables": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        -                "properties": {
        -                  "docx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "dxf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "expires_at": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  },
        -                  "pdf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "xlsx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "expires_at"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "document_id": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "issued_at": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "rate_limit_remaining": {
        -            "anyOf": [
        -              {
        -                "minimum": 0,
        -                "type": "integer"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "request_id": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "schema_version": {
        -            "const": "1.0.0",
        -            "default": "1.0.0",
        -            "type": "string"
        -          },
        -          "scope_boundary": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        -                "properties": {
        -                  "not_in_scope": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "produced": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "recommended_companions": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "type": "string"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "produced",
        -                  "not_in_scope"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tier": {
        -            "enum": [
        -              "free",
        -              "paid"
        -            ],
        -            "type": "string"
        -          },
        -          "tier_upgrade": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        -                "properties": {
        -                  "available_tiers": {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        -                      "properties": {
        -                        "billing": {
        -                          "enum": [
        -                            "one_off",
        -                            "monthly",
        -                            "annual"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "currency": {
        -                          "enum": [
        -                            "GBP",
        -                            "SGD",
        -                            "EUR",
        -                            "USD",
        -                            "CAD",
        -                            "AUD",
        -                            "NZD",
        -                            "MYR"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "display_name": {
        -                          "type": "string"
        -                        },
        -                        "price_local": {
        -                          "type": "number"
        -                        },
        -                        "tier_slug": {
        -                          "enum": [
        -                            "7_day_pass",
        -                            "solo",
        -                            "studio",
        -                            "practice"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "unlock_summary": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "tier_slug",
        -                        "display_name",
        -                        "price_local",
        -                        "currency",
        -                        "billing",
        -                        "unlock_summary"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "current_tier": {
        -                    "const": "free",
        -                    "default": "free",
        -                    "type": "string"
        -                  },
        -                  "pass_credit": {
        -                    "anyOf": [
        -                      {
        -                        "additionalProperties": false,
        -                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        -                        "properties": {
        -                          "amount_local": {
        -                            "type": "number"
        -                          },
        -                          "applies_to": {
        -                            "const": "solo_first_month",
        -                            "default": "solo_first_month",
        -                            "type": "string"
        -                          },
        -                          "currency": {
        -                            "type": "string"
        -                          },
        -                          "redeemable_until": {
        -                            "type": "string"
        -                          }
        -                        },
        -                        "required": [
        -                          "amount_local",
        -                          "currency",
        -                          "redeemable_until"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "pricing_url": {
        -                    "default": "https://civilquants.com/pricing",
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "available_tiers"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tos_url": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "upgrade_hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "warranty_disclaimer": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          }
        -        },
        -        "required": [
        -          "request_id",
        -          "issued_at",
        -          "tier"
        -        ],
        -        "type": "object"
        -      },
        -      "data": {
        -        "default": null,
        -        "title": "Data"
        -      },
        -      "error": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        -            "properties": {
        -              "code": {
        -                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        -                "enum": [
        -                  "RATE_LIMIT_EXCEEDED",
        -                  "TIER_INSUFFICIENT",
        -                  "INVALID_INPUT",
        -                  "SCHEMA_VERSION_MISMATCH",
        -                  "SCHEMA_INVARIANT_VIOLATION",
        -                  "UPSTREAM_TIMEOUT",
        -                  "BACKEND_FAILURE",
        -                  "IP_BLOCKED",
        -                  "RESOURCE_NOT_FOUND",
        -                  "RENDER_FAILURE",
        -                  "OCR_LOW_CONFIDENCE",
        -                  "MANUAL_REVIEW_REQUIRED",
        -                  "ACCEPTANCE_REQUIRED",
        -                  "INVALID_TOKEN"
        -                ],
        -                "type": "string"
        -              },
        -              "details": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "message": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "recoverable": {
        -                "type": "boolean"
        -              },
        -              "retry_after_seconds": {
        -                "anyOf": [
        -                  {
        -                    "minimum": 0,
        -                    "type": "integer"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              }
        -            },
        -            "required": [
        -              "code",
        -              "message",
        -              "recoverable"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      }
        -    },
        -    "required": [
        -      "_meta"
        -    ],
        -    "type": "object"
        -  }
        -]New value: +[
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "_meta": {
        +        "additionalProperties": false,
        +        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        +        "properties": {
        +          "deliverables": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        +                "properties": {
        +                  "docx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "dxf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "expires_at": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  },
        +                  "pdf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "xlsx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "expires_at"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "document_id": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "issued_at": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "rate_limit_remaining": {
        +            "anyOf": [
        +              {
        +                "minimum": 0,
        +                "type": "integer"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "request_id": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "schema_version": {
        +            "const": "1.0.0",
        +            "default": "1.0.0",
        +            "type": "string"
        +          },
        +          "scope_boundary": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        +                "properties": {
        +                  "not_in_scope": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "produced": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "recommended_companions": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "type": "string"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "produced",
        +                  "not_in_scope"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tier": {
        +            "enum": [
        +              "free",
        +              "paid"
        +            ],
        +            "type": "string"
        +          },
        +          "tier_upgrade": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        +                "properties": {
        +                  "available_tiers": {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        +                      "properties": {
        +                        "billing": {
        +                          "enum": [
        +                            "one_off",
        +                            "monthly",
        +                            "annual"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "currency": {
        +                          "enum": [
        +                            "GBP",
        +                            "SGD",
        +                            "EUR",
        +                            "USD",
        +                            "CAD",
        +                            "AUD",
        +                            "NZD",
        +                            "MYR"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "display_name": {
        +                          "type": "string"
        +                        },
        +                        "price_local": {
        +                          "type": "number"
        +                        },
        +                        "tier_slug": {
        +                          "enum": [
        +                            "7_day_pass",
        +                            "solo",
        +                            "studio",
        +                            "practice"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "unlock_summary": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "tier_slug",
        +                        "display_name",
        +                        "price_local",
        +                        "currency",
        +                        "billing",
        +                        "unlock_summary"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "current_tier": {
        +                    "const": "free",
        +                    "default": "free",
        +                    "type": "string"
        +                  },
        +                  "pass_credit": {
        +                    "anyOf": [
        +                      {
        +                        "additionalProperties": false,
        +                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        +                        "properties": {
        +                          "amount_local": {
        +                            "type": "number"
        +                          },
        +                          "applies_to": {
        +                            "const": "solo_first_month",
        +                            "default": "solo_first_month",
        +                            "type": "string"
        +                          },
        +                          "currency": {
        +                            "type": "string"
        +                          },
        +                          "redeemable_until": {
        +                            "type": "string"
        +                          }
        +                        },
        +                        "required": [
        +                          "amount_local",
        +                          "currency",
        +                          "redeemable_until"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "pricing_url": {
        +                    "default": "https://civilquants.com/pricing",
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "available_tiers"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tos_url": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "upgrade_hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "warranty_disclaimer": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          }
        +        },
        +        "required": [
        +          "request_id",
        +          "issued_at",
        +          "tier"
        +        ],
        +        "type": "object"
        +      },
        +      "data": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Schema § 1.1 — the typed payload returned inside `MCPResponse[ComputeResult]`.\n\nFree-tier responses omit `drawings` (the downloadable CAD artefact\npointers — the paid differentiator); the bridge enforces this. The\n`audit_trail` and the inline `drawing` preview are present on BOTH tiers\n(V1 ALIGN / 60th-fire D + C). `text_summary` is bounded to 2000 chars —\nkeeps the LLM-facing summary token-cheap and forces longer narrative into\nBoQ row descriptions where it belongs. `warnings` is the non-fatal\ngeometry advisory list (both tiers).",
        +            "properties": {
        +              "assembly_slug": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "audit_trail": {
        +                "anyOf": [
        +                  {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.7 — paid-tier audit-trail entry.\n\nOne entry per BoQ row; `boq_row_index` ties to the row position in\n`ComputeResult.boq_rows`. `derivation` is the human-readable formula\nwalk-through; `formula` is the optional formal expression.",
        +                      "properties": {
        +                        "boq_row_index": {
        +                          "minimum": 0,
        +                          "type": "integer"
        +                        },
        +                        "derivation": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "formula": {
        +                          "anyOf": [
        +                            {
        +                              "type": "string"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ],
        +                          "default": null
        +                        },
        +                        "id": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "parameters_referenced": {
        +                          "items": {
        +                            "type": "string"
        +                          },
        +                          "type": "array"
        +                        }
        +                      },
        +                      "required": [
        +                        "id",
        +                        "boq_row_index",
        +                        "derivation"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "boq_rows": {
        +                "items": {
        +                  "additionalProperties": false,
        +                  "description": "Schema § 1.3 — a single bill row in the requested standard's format.\n\n`description` is the non-verbatim functional description per spec § 13.9 /\n§ 15 invariant — NEVER reproduces a standard's verbatim clause text.\n`rate` / `amount` ship null because rates are commodity data the customer\nowns; the engine's job is the measurement, not the pricing.",
        +                  "properties": {
        +                    "amount": {
        +                      "anyOf": [
        +                        {
        +                          "type": "number"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "attribution": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "audit_id": {
        +                      "anyOf": [
        +                        {
        +                          "type": "string"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "description": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "quantity": {
        +                      "minimum": 0,
        +                      "type": "number"
        +                    },
        +                    "rate": {
        +                      "anyOf": [
        +                        {
        +                          "type": "number"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "unit": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "work_section": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    }
        +                  },
        +                  "required": [
        +                    "work_section",
        +                    "description",
        +                    "quantity",
        +                    "unit",
        +                    "attribution"
        +                  ],
        +                  "type": "object"
        +                },
        +                "type": "array"
        +              },
        +              "drawing": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": false,
        +                    "description": "Schema § 1.6a — inline server-rendered SVG preview of the geometry.\n\nThe MCP mirror of the web ``/compute`` response's ``drawing`` field\n(``api.schemas.compute.DrawingRef``): the same on-screen dimensioned\ndrawing both tiers see in the workspace, surfaced on the MCP compute\nresponse so a chat client can render it inline (60th-fire item C). This\nis the on-screen preview — present on BOTH tiers per the free/paid\nboundary; the downloadable CAD artefacts (DXF / dimensioned PDF) remain\nthe paid differentiator via the export tools.\n\nDefined here rather than importing ``DrawingRef`` because the web\n``schemas`` package imports back into this module (``schemas.render``),\nso reusing it would create an import cycle — the MCP wire contract keeps\nits own copy, the same pattern as ``BoQRow`` / ``DrawingReference``.",
        +                    "properties": {
        +                      "entity_count": {
        +                        "minimum": 0,
        +                        "type": "integer"
        +                      },
        +                      "svg_b64": {
        +                        "minLength": 1,
        +                        "type": "string"
        +                      },
        +                      "unit_of_drawing": {
        +                        "const": "m",
        +                        "default": "m",
        +                        "type": "string"
        +                      },
        +                      "viewbox_height": {
        +                        "exclusiveMinimum": 0,
        +                        "type": "number"
        +                      },
        +                      "viewbox_width": {
        +                        "exclusiveMinimum": 0,
        +                        "type": "number"
        +                      },
        +                      "viewbox_x": {
        +                        "type": "number"
        +                      },
        +                      "viewbox_y": {
        +                        "type": "number"
        +                      }
        +                    },
        +                    "required": [
        +                      "svg_b64",
        +                      "viewbox_x",
        +                      "viewbox_y",
        +                      "viewbox_width",
        +                      "viewbox_height",
        +                      "entity_count"
        +                    ],
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "drawings": {
        +                "anyOf": [
        +                  {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.6 — paid-tier drawing artefact pointer.\n\n`url` is an R2-signed URL; expiry is carried in `_meta.deliverables.expires_at`\non the envelope (not duplicated here). `layers` is DXF-only; PDF/SVG\ncallers omit it.",
        +                      "properties": {
        +                        "drawing_type": {
        +                          "enum": [
        +                            "section",
        +                            "plan",
        +                            "elevation",
        +                            "isometric",
        +                            "detail"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "format": {
        +                          "enum": [
        +                            "DXF",
        +                            "PDF",
        +                            "SVG"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "layers": {
        +                          "anyOf": [
        +                            {
        +                              "items": {
        +                                "type": "string"
        +                              },
        +                              "type": "array"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ],
        +                          "default": null
        +                        },
        +                        "scale": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "sheet_size": {
        +                          "enum": [
        +                            "A1",
        +                            "A2",
        +                            "A3",
        +                            "A4"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "url": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "drawing_type",
        +                        "format",
        +                        "url",
        +                        "sheet_size",
        +                        "scale"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "parameters_used": {
        +                "additionalProperties": false,
        +                "description": "Schema § 1.2 — the parameter snapshot the engine actually used.\n\nSplits user-supplied values from engine defaults so customers can see\nwhich numbers came from them and which the engine filled in. Every\ndefaulted parameter SHOULD have a corresponding entry in `assumptions`\n— the bridge layer enforces this when wrapping engine output.",
        +                "properties": {
        +                  "assumptions": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "engine_defaults": {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  "user_supplied": {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  }
        +                },
        +                "type": "object"
        +              },
        +              "standard": {
        +                "enum": [
        +                  "CESMM4",
        +                  "NRM2",
        +                  "SMM7",
        +                  "MMHW"
        +                ],
        +                "type": "string"
        +              },
        +              "text_summary": {
        +                "maxLength": 2000,
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "totals_summary": {
        +                "additionalProperties": false,
        +                "description": "Schema § 1.4 — totals_summary as a typed wrapper around the free-form dict.\n\nWire shape is a flat object (`{\"concrete_m3\": {...}, \"rebar_t\": {...}}`).\nWe model it as `RootModel`-equivalent via `model_config(extra=\"allow\")`\n+ a single `__root__`-style `entries` dict. Pydantic v2 recommends\n`RootModel` for free-form roots; using a wrapper class keeps the import\nsurface uniform with the rest of this module.",
        +                "properties": {
        +                  "entries": {
        +                    "additionalProperties": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.4 — single material/work-class total entry.",
        +                      "properties": {
        +                        "quantity": {
        +                          "minimum": 0,
        +                          "type": "number"
        +                        },
        +                        "unit": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "quantity",
        +                        "unit"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "object"
        +                  }
        +                },
        +                "type": "object"
        +              },
        +              "warnings": {
        +                "items": {
        +                  "additionalProperties": false,
        +                  "description": "Schema § 1.8 — a non-fatal geometry advisory (56th-fire T2).\n\nThe wire projection of the engine's `core.GeometryWarning`. Advisory only:\na warning NEVER changes a measured quantity — it flags geometry that is\nvalid but likely a mistake (e.g. a stale dependent-height default). Present\non BOTH tiers — a correctness/safety signal, not a paid feature.",
        +                  "properties": {
        +                    "affected_params": {
        +                      "items": {
        +                        "type": "string"
        +                      },
        +                      "type": "array"
        +                    },
        +                    "code": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "detail": {
        +                      "additionalProperties": {
        +                        "type": "number"
        +                      },
        +                      "type": "object"
        +                    },
        +                    "message": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "severity": {
        +                      "enum": [
        +                        "info",
        +                        "advisory",
        +                        "caution"
        +                      ],
        +                      "type": "string"
        +                    }
        +                  },
        +                  "required": [
        +                    "code",
        +                    "severity",
        +                    "message"
        +                  ],
        +                  "type": "object"
        +                },
        +                "type": "array"
        +              }
        +            },
        +            "required": [
        +              "assembly_slug",
        +              "standard",
        +              "parameters_used",
        +              "boq_rows",
        +              "totals_summary",
        +              "text_summary"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      },
        +      "error": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        +            "properties": {
        +              "code": {
        +                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        +                "enum": [
        +                  "RATE_LIMIT_EXCEEDED",
        +                  "TIER_INSUFFICIENT",
        +                  "INVALID_INPUT",
        +                  "SCHEMA_VERSION_MISMATCH",
        +                  "SCHEMA_INVARIANT_VIOLATION",
        +                  "UPSTREAM_TIMEOUT",
        +                  "BACKEND_FAILURE",
        +                  "IP_BLOCKED",
        +                  "RESOURCE_NOT_FOUND",
        +                  "RENDER_FAILURE",
        +                  "OCR_LOW_CONFIDENCE",
        +                  "MANUAL_REVIEW_REQUIRED",
        +                  "ACCEPTANCE_REQUIRED",
        +                  "INVALID_TOKEN"
        +                ],
        +                "type": "string"
        +              },
        +              "details": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "message": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "recoverable": {
        +                "type": "boolean"
        +              },
        +              "retry_after_seconds": {
        +                "anyOf": [
        +                  {
        +                    "minimum": 0,
        +                    "type": "integer"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              }
        +            },
        +            "required": [
        +              "code",
        +              "message",
        +              "recoverable"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      }
        +    },
        +    "required": [
        +      "_meta"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "_meta": {
        +        "additionalProperties": false,
        +        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        +        "properties": {
        +          "deliverables": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        +                "properties": {
        +                  "docx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "dxf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "expires_at": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  },
        +                  "pdf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "xlsx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "expires_at"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "document_id": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "issued_at": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "rate_limit_remaining": {
        +            "anyOf": [
        +              {
        +                "minimum": 0,
        +                "type": "integer"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "request_id": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "schema_version": {
        +            "const": "1.0.0",
        +            "default": "1.0.0",
        +            "type": "string"
        +          },
        +          "scope_boundary": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        +                "properties": {
        +                  "not_in_scope": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "produced": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "recommended_companions": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "type": "string"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "produced",
        +                  "not_in_scope"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tier": {
        +            "enum": [
        +              "free",
        +              "paid"
        +            ],
        +            "type": "string"
        +          },
        +          "tier_upgrade": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        +                "properties": {
        +                  "available_tiers": {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        +                      "properties": {
        +                        "billing": {
        +                          "enum": [
        +                            "one_off",
        +                            "monthly",
        +                            "annual"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "currency": {
        +                          "enum": [
        +                            "GBP",
        +                            "SGD",
        +                            "EUR",
        +                            "USD",
        +                            "CAD",
        +                            "AUD",
        +                            "NZD",
        +                            "MYR"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "display_name": {
        +                          "type": "string"
        +                        },
        +                        "price_local": {
        +                          "type": "number"
        +                        },
        +                        "tier_slug": {
        +                          "enum": [
        +                            "7_day_pass",
        +                            "solo",
        +                            "studio",
        +                            "practice"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "unlock_summary": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "tier_slug",
        +                        "display_name",
        +                        "price_local",
        +                        "currency",
        +                        "billing",
        +                        "unlock_summary"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "current_tier": {
        +                    "const": "free",
        +                    "default": "free",
        +                    "type": "string"
        +                  },
        +                  "pass_credit": {
        +                    "anyOf": [
        +                      {
        +                        "additionalProperties": false,
        +                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        +                        "properties": {
        +                          "amount_local": {
        +                            "type": "number"
        +                          },
        +                          "applies_to": {
        +                            "const": "solo_first_month",
        +                            "default": "solo_first_month",
        +                            "type": "string"
        +                          },
        +                          "currency": {
        +                            "type": "string"
        +                          },
        +                          "redeemable_until": {
        +                            "type": "string"
        +                          }
        +                        },
        +                        "required": [
        +                          "amount_local",
        +                          "currency",
        +                          "redeemable_until"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "pricing_url": {
        +                    "default": "https://civilquants.com/pricing",
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "available_tiers"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tos_url": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "upgrade_hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "warranty_disclaimer": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          }
        +        },
        +        "required": [
        +          "request_id",
        +          "issued_at",
        +          "tier"
        +        ],
        +        "type": "object"
        +      },
        +      "data": {
        +        "default": null,
        +        "title": "Data"
        +      },
        +      "error": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        +            "properties": {
        +              "code": {
        +                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        +                "enum": [
        +                  "RATE_LIMIT_EXCEEDED",
        +                  "TIER_INSUFFICIENT",
        +                  "INVALID_INPUT",
        +                  "SCHEMA_VERSION_MISMATCH",
        +                  "SCHEMA_INVARIANT_VIOLATION",
        +                  "UPSTREAM_TIMEOUT",
        +                  "BACKEND_FAILURE",
        +                  "IP_BLOCKED",
        +                  "RESOURCE_NOT_FOUND",
        +                  "RENDER_FAILURE",
        +                  "OCR_LOW_CONFIDENCE",
        +                  "MANUAL_REVIEW_REQUIRED",
        +                  "ACCEPTANCE_REQUIRED",
        +                  "INVALID_TOKEN"
        +                ],
        +                "type": "string"
        +              },
        +              "details": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "message": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "recoverable": {
        +                "type": "boolean"
        +              },
        +              "retry_after_seconds": {
        +                "anyOf": [
        +                  {
        +                    "minimum": 0,
        +                    "type": "integer"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              }
        +            },
        +            "required": [
        +              "code",
        +              "message",
        +              "recoverable"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      }
        +    },
        +    "required": [
        +      "_meta"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedcompute_headwall1 field changed
      • changedOutput schema / properties / result / anyOf
        Previous value: -[
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "_meta": {
        -        "additionalProperties": false,
        -        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        -        "properties": {
        -          "deliverables": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        -                "properties": {
        -                  "docx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "dxf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "expires_at": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  },
        -                  "pdf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "xlsx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "expires_at"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "document_id": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "issued_at": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "rate_limit_remaining": {
        -            "anyOf": [
        -              {
        -                "minimum": 0,
        -                "type": "integer"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "request_id": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "schema_version": {
        -            "const": "1.0.0",
        -            "default": "1.0.0",
        -            "type": "string"
        -          },
        -          "scope_boundary": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        -                "properties": {
        -                  "not_in_scope": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "produced": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "recommended_companions": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "type": "string"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "produced",
        -                  "not_in_scope"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tier": {
        -            "enum": [
        -              "free",
        -              "paid"
        -            ],
        -            "type": "string"
        -          },
        -          "tier_upgrade": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        -                "properties": {
        -                  "available_tiers": {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        -                      "properties": {
        -                        "billing": {
        -                          "enum": [
        -                            "one_off",
        -                            "monthly",
        -                            "annual"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "currency": {
        -                          "enum": [
        -                            "GBP",
        -                            "SGD",
        -                            "EUR",
        -                            "USD",
        -                            "CAD",
        -                            "AUD",
        -                            "NZD",
        -                            "MYR"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "display_name": {
        -                          "type": "string"
        -                        },
        -                        "price_local": {
        -                          "type": "number"
        -                        },
        -                        "tier_slug": {
        -                          "enum": [
        -                            "7_day_pass",
        -                            "solo",
        -                            "studio",
        -                            "practice"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "unlock_summary": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "tier_slug",
        -                        "display_name",
        -                        "price_local",
        -                        "currency",
        -                        "billing",
        -                        "unlock_summary"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "current_tier": {
        -                    "const": "free",
        -                    "default": "free",
        -                    "type": "string"
        -                  },
        -                  "pass_credit": {
        -                    "anyOf": [
        -                      {
        -                        "additionalProperties": false,
        -                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        -                        "properties": {
        -                          "amount_local": {
        -                            "type": "number"
        -                          },
        -                          "applies_to": {
        -                            "const": "solo_first_month",
        -                            "default": "solo_first_month",
        -                            "type": "string"
        -                          },
        -                          "currency": {
        -                            "type": "string"
        -                          },
        -                          "redeemable_until": {
        -                            "type": "string"
        -                          }
        -                        },
        -                        "required": [
        -                          "amount_local",
        -                          "currency",
        -                          "redeemable_until"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "pricing_url": {
        -                    "default": "https://civilquants.com/pricing",
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "available_tiers"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tos_url": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "upgrade_hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "warranty_disclaimer": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          }
        -        },
        -        "required": [
        -          "request_id",
        -          "issued_at",
        -          "tier"
        -        ],
        -        "type": "object"
        -      },
        -      "data": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Schema § 1.1 — the typed payload returned inside `MCPResponse[ComputeResult]`.\n\nFree-tier responses omit `drawings` (the downloadable CAD artefact\npointers — the paid differentiator); the bridge enforces this. The\n`audit_trail` and the inline `drawing` preview are present on BOTH tiers\n(V1 ALIGN / 60th-fire D + C). `text_summary` is bounded to 2000 chars —\nkeeps the LLM-facing summary token-cheap and forces longer narrative into\nBoQ row descriptions where it belongs. `warnings` is the non-fatal\ngeometry advisory list (both tiers).",
        -            "properties": {
        -              "assembly_slug": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "audit_trail": {
        -                "anyOf": [
        -                  {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.7 — paid-tier audit-trail entry.\n\nOne entry per BoQ row; `boq_row_index` ties to the row position in\n`ComputeResult.boq_rows`. `derivation` is the human-readable formula\nwalk-through; `formula` is the optional formal expression.",
        -                      "properties": {
        -                        "boq_row_index": {
        -                          "minimum": 0,
        -                          "type": "integer"
        -                        },
        -                        "derivation": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "formula": {
        -                          "anyOf": [
        -                            {
        -                              "type": "string"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ],
        -                          "default": null
        -                        },
        -                        "id": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "parameters_referenced": {
        -                          "items": {
        -                            "type": "string"
        -                          },
        -                          "type": "array"
        -                        }
        -                      },
        -                      "required": [
        -                        "id",
        -                        "boq_row_index",
        -                        "derivation"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "boq_rows": {
        -                "items": {
        -                  "additionalProperties": false,
        -                  "description": "Schema § 1.3 — a single bill row in the requested standard's format.\n\n`description` is the non-verbatim functional description per spec § 13.9 /\n§ 15 invariant — NEVER reproduces a standard's verbatim clause text.\n`rate` / `amount` ship null because rates are commodity data the customer\nowns; the engine's job is the measurement, not the pricing.",
        -                  "properties": {
        -                    "amount": {
        -                      "anyOf": [
        -                        {
        -                          "type": "number"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "attribution": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "audit_id": {
        -                      "anyOf": [
        -                        {
        -                          "type": "string"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "description": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "quantity": {
        -                      "minimum": 0,
        -                      "type": "number"
        -                    },
        -                    "rate": {
        -                      "anyOf": [
        -                        {
        -                          "type": "number"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "unit": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "work_section": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    }
        -                  },
        -                  "required": [
        -                    "work_section",
        -                    "description",
        -                    "quantity",
        -                    "unit",
        -                    "attribution"
        -                  ],
        -                  "type": "object"
        -                },
        -                "type": "array"
        -              },
        -              "drawing": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": false,
        -                    "description": "Schema § 1.6a — inline server-rendered SVG preview of the geometry.\n\nThe MCP mirror of the web ``/compute`` response's ``drawing`` field\n(``api.schemas.compute.DrawingRef``): the same on-screen dimensioned\ndrawing both tiers see in the workspace, surfaced on the MCP compute\nresponse so a chat client can render it inline (60th-fire item C). This\nis the on-screen preview — present on BOTH tiers per the free/paid\nboundary; the downloadable CAD artefacts (DXF / dimensioned PDF) remain\nthe paid differentiator via the export tools.\n\nDefined here rather than importing ``DrawingRef`` because the web\n``schemas`` package imports back into this module (``schemas.render``),\nso reusing it would create an import cycle — the MCP wire contract keeps\nits own copy, the same pattern as ``BoQRow`` / ``DrawingReference``.",
        -                    "properties": {
        -                      "entity_count": {
        -                        "minimum": 0,
        -                        "type": "integer"
        -                      },
        -                      "svg_b64": {
        -                        "minLength": 1,
        -                        "type": "string"
        -                      },
        -                      "unit_of_drawing": {
        -                        "const": "m",
        -                        "default": "m",
        -                        "type": "string"
        -                      },
        -                      "viewbox_height": {
        -                        "exclusiveMinimum": 0,
        -                        "type": "number"
        -                      },
        -                      "viewbox_width": {
        -                        "exclusiveMinimum": 0,
        -                        "type": "number"
        -                      },
        -                      "viewbox_x": {
        -                        "type": "number"
        -                      },
        -                      "viewbox_y": {
        -                        "type": "number"
        -                      }
        -                    },
        -                    "required": [
        -                      "svg_b64",
        -                      "viewbox_x",
        -                      "viewbox_y",
        -                      "viewbox_width",
        -                      "viewbox_height",
        -                      "entity_count"
        -                    ],
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "drawings": {
        -                "anyOf": [
        -                  {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.6 — paid-tier drawing artefact pointer.\n\n`url` is an R2-signed URL; expiry is carried in `_meta.deliverables.expires_at`\non the envelope (not duplicated here). `layers` is DXF-only; PDF/SVG\ncallers omit it.",
        -                      "properties": {
        -                        "drawing_type": {
        -                          "enum": [
        -                            "section",
        -                            "plan",
        -                            "elevation",
        -                            "isometric",
        -                            "detail"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "format": {
        -                          "enum": [
        -                            "DXF",
        -                            "PDF",
        -                            "SVG"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "layers": {
        -                          "anyOf": [
        -                            {
        -                              "items": {
        -                                "type": "string"
        -                              },
        -                              "type": "array"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ],
        -                          "default": null
        -                        },
        -                        "scale": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "sheet_size": {
        -                          "enum": [
        -                            "A1",
        -                            "A2",
        -                            "A3",
        -                            "A4"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "url": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "drawing_type",
        -                        "format",
        -                        "url",
        -                        "sheet_size",
        -                        "scale"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "parameters_used": {
        -                "additionalProperties": false,
        -                "description": "Schema § 1.2 — the parameter snapshot the engine actually used.\n\nSplits user-supplied values from engine defaults so customers can see\nwhich numbers came from them and which the engine filled in. Every\ndefaulted parameter SHOULD have a corresponding entry in `assumptions`\n— the bridge layer enforces this when wrapping engine output.",
        -                "properties": {
        -                  "assumptions": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "engine_defaults": {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  "resolved_from_description": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "additionalProperties": false,
        -                          "description": "Schema § 1.2 — a parameter resolved by the forgiving-input layer.\n\nPopulated by the Track B-Forgiving Haiku-4.5 resolution pass; until that\nlayer lands, instances are constructed only by tests. `source` distinguishes\nthe resolution path so customers can audit which fields were inferred.",
        -                          "properties": {
        -                            "confidence": {
        -                              "anyOf": [
        -                                {
        -                                  "enum": [
        -                                    "high",
        -                                    "medium",
        -                                    "low"
        -                                  ],
        -                                  "type": "string"
        -                                },
        -                                {
        -                                  "type": "null"
        -                                }
        -                              ],
        -                              "default": null
        -                            },
        -                            "field_name": {
        -                              "minLength": 1,
        -                              "type": "string"
        -                            },
        -                            "resolved_value": {},
        -                            "source": {
        -                              "enum": [
        -                                "description_field",
        -                                "haiku_resolution",
        -                                "engine_default"
        -                              ],
        -                              "type": "string"
        -                            }
        -                          },
        -                          "required": [
        -                            "field_name",
        -                            "resolved_value",
        -                            "source"
        -                          ],
        -                          "type": "object"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "user_supplied": {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  }
        -                },
        -                "type": "object"
        -              },
        -              "standard": {
        -                "enum": [
        -                  "CESMM4",
        -                  "NRM2",
        -                  "SMM7",
        -                  "MMHW"
        -                ],
        -                "type": "string"
        -              },
        -              "text_summary": {
        -                "maxLength": 2000,
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "totals_summary": {
        -                "additionalProperties": false,
        -                "description": "Schema § 1.4 — totals_summary as a typed wrapper around the free-form dict.\n\nWire shape is a flat object (`{\"concrete_m3\": {...}, \"rebar_t\": {...}}`).\nWe model it as `RootModel`-equivalent via `model_config(extra=\"allow\")`\n+ a single `__root__`-style `entries` dict. Pydantic v2 recommends\n`RootModel` for free-form roots; using a wrapper class keeps the import\nsurface uniform with the rest of this module.",
        -                "properties": {
        -                  "entries": {
        -                    "additionalProperties": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.4 — single material/work-class total entry.",
        -                      "properties": {
        -                        "quantity": {
        -                          "minimum": 0,
        -                          "type": "number"
        -                        },
        -                        "unit": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "quantity",
        -                        "unit"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "object"
        -                  }
        -                },
        -                "type": "object"
        -              },
        -              "warnings": {
        -                "items": {
        -                  "additionalProperties": false,
        -                  "description": "Schema § 1.8 — a non-fatal geometry advisory (56th-fire T2).\n\nThe wire projection of the engine's `core.GeometryWarning`. Advisory only:\na warning NEVER changes a measured quantity — it flags geometry that is\nvalid but likely a mistake (e.g. a stale dependent-height default). Present\non BOTH tiers — a correctness/safety signal, not a paid feature.",
        -                  "properties": {
        -                    "affected_params": {
        -                      "items": {
        -                        "type": "string"
        -                      },
        -                      "type": "array"
        -                    },
        -                    "code": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "detail": {
        -                      "additionalProperties": {
        -                        "type": "number"
        -                      },
        -                      "type": "object"
        -                    },
        -                    "message": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "severity": {
        -                      "enum": [
        -                        "info",
        -                        "advisory",
        -                        "caution"
        -                      ],
        -                      "type": "string"
        -                    }
        -                  },
        -                  "required": [
        -                    "code",
        -                    "severity",
        -                    "message"
        -                  ],
        -                  "type": "object"
        -                },
        -                "type": "array"
        -              }
        -            },
        -            "required": [
        -              "assembly_slug",
        -              "standard",
        -              "parameters_used",
        -              "boq_rows",
        -              "totals_summary",
        -              "text_summary"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      },
        -      "error": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        -            "properties": {
        -              "code": {
        -                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        -                "enum": [
        -                  "RATE_LIMIT_EXCEEDED",
        -                  "TIER_INSUFFICIENT",
        -                  "INVALID_INPUT",
        -                  "SCHEMA_VERSION_MISMATCH",
        -                  "SCHEMA_INVARIANT_VIOLATION",
        -                  "UPSTREAM_TIMEOUT",
        -                  "BACKEND_FAILURE",
        -                  "IP_BLOCKED",
        -                  "RESOURCE_NOT_FOUND",
        -                  "RENDER_FAILURE",
        -                  "OCR_LOW_CONFIDENCE",
        -                  "MANUAL_REVIEW_REQUIRED",
        -                  "ACCEPTANCE_REQUIRED",
        -                  "INVALID_TOKEN"
        -                ],
        -                "type": "string"
        -              },
        -              "details": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "message": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "recoverable": {
        -                "type": "boolean"
        -              },
        -              "retry_after_seconds": {
        -                "anyOf": [
        -                  {
        -                    "minimum": 0,
        -                    "type": "integer"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              }
        -            },
        -            "required": [
        -              "code",
        -              "message",
        -              "recoverable"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      }
        -    },
        -    "required": [
        -      "_meta"
        -    ],
        -    "type": "object"
        -  },
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "_meta": {
        -        "additionalProperties": false,
        -        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        -        "properties": {
        -          "deliverables": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        -                "properties": {
        -                  "docx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "dxf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "expires_at": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  },
        -                  "pdf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "xlsx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "expires_at"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "document_id": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "issued_at": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "rate_limit_remaining": {
        -            "anyOf": [
        -              {
        -                "minimum": 0,
        -                "type": "integer"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "request_id": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "schema_version": {
        -            "const": "1.0.0",
        -            "default": "1.0.0",
        -            "type": "string"
        -          },
        -          "scope_boundary": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        -                "properties": {
        -                  "not_in_scope": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "produced": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "recommended_companions": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "type": "string"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "produced",
        -                  "not_in_scope"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tier": {
        -            "enum": [
        -              "free",
        -              "paid"
        -            ],
        -            "type": "string"
        -          },
        -          "tier_upgrade": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        -                "properties": {
        -                  "available_tiers": {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        -                      "properties": {
        -                        "billing": {
        -                          "enum": [
        -                            "one_off",
        -                            "monthly",
        -                            "annual"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "currency": {
        -                          "enum": [
        -                            "GBP",
        -                            "SGD",
        -                            "EUR",
        -                            "USD",
        -                            "CAD",
        -                            "AUD",
        -                            "NZD",
        -                            "MYR"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "display_name": {
        -                          "type": "string"
        -                        },
        -                        "price_local": {
        -                          "type": "number"
        -                        },
        -                        "tier_slug": {
        -                          "enum": [
        -                            "7_day_pass",
        -                            "solo",
        -                            "studio",
        -                            "practice"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "unlock_summary": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "tier_slug",
        -                        "display_name",
        -                        "price_local",
        -                        "currency",
        -                        "billing",
        -                        "unlock_summary"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "current_tier": {
        -                    "const": "free",
        -                    "default": "free",
        -                    "type": "string"
        -                  },
        -                  "pass_credit": {
        -                    "anyOf": [
        -                      {
        -                        "additionalProperties": false,
        -                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        -                        "properties": {
        -                          "amount_local": {
        -                            "type": "number"
        -                          },
        -                          "applies_to": {
        -                            "const": "solo_first_month",
        -                            "default": "solo_first_month",
        -                            "type": "string"
        -                          },
        -                          "currency": {
        -                            "type": "string"
        -                          },
        -                          "redeemable_until": {
        -                            "type": "string"
        -                          }
        -                        },
        -                        "required": [
        -                          "amount_local",
        -                          "currency",
        -                          "redeemable_until"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "pricing_url": {
        -                    "default": "https://civilquants.com/pricing",
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "available_tiers"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tos_url": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "upgrade_hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "warranty_disclaimer": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          }
        -        },
        -        "required": [
        -          "request_id",
        -          "issued_at",
        -          "tier"
        -        ],
        -        "type": "object"
        -      },
        -      "data": {
        -        "default": null,
        -        "title": "Data"
        -      },
        -      "error": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        -            "properties": {
        -              "code": {
        -                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        -                "enum": [
        -                  "RATE_LIMIT_EXCEEDED",
        -                  "TIER_INSUFFICIENT",
        -                  "INVALID_INPUT",
        -                  "SCHEMA_VERSION_MISMATCH",
        -                  "SCHEMA_INVARIANT_VIOLATION",
        -                  "UPSTREAM_TIMEOUT",
        -                  "BACKEND_FAILURE",
        -                  "IP_BLOCKED",
        -                  "RESOURCE_NOT_FOUND",
        -                  "RENDER_FAILURE",
        -                  "OCR_LOW_CONFIDENCE",
        -                  "MANUAL_REVIEW_REQUIRED",
        -                  "ACCEPTANCE_REQUIRED",
        -                  "INVALID_TOKEN"
        -                ],
        -                "type": "string"
        -              },
        -              "details": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "message": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "recoverable": {
        -                "type": "boolean"
        -              },
        -              "retry_after_seconds": {
        -                "anyOf": [
        -                  {
        -                    "minimum": 0,
        -                    "type": "integer"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              }
        -            },
        -            "required": [
        -              "code",
        -              "message",
        -              "recoverable"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      }
        -    },
        -    "required": [
        -      "_meta"
        -    ],
        -    "type": "object"
        -  }
        -]New value: +[
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "_meta": {
        +        "additionalProperties": false,
        +        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        +        "properties": {
        +          "deliverables": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        +                "properties": {
        +                  "docx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "dxf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "expires_at": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  },
        +                  "pdf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "xlsx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "expires_at"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "document_id": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "issued_at": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "rate_limit_remaining": {
        +            "anyOf": [
        +              {
        +                "minimum": 0,
        +                "type": "integer"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "request_id": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "schema_version": {
        +            "const": "1.0.0",
        +            "default": "1.0.0",
        +            "type": "string"
        +          },
        +          "scope_boundary": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        +                "properties": {
        +                  "not_in_scope": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "produced": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "recommended_companions": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "type": "string"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "produced",
        +                  "not_in_scope"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tier": {
        +            "enum": [
        +              "free",
        +              "paid"
        +            ],
        +            "type": "string"
        +          },
        +          "tier_upgrade": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        +                "properties": {
        +                  "available_tiers": {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        +                      "properties": {
        +                        "billing": {
        +                          "enum": [
        +                            "one_off",
        +                            "monthly",
        +                            "annual"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "currency": {
        +                          "enum": [
        +                            "GBP",
        +                            "SGD",
        +                            "EUR",
        +                            "USD",
        +                            "CAD",
        +                            "AUD",
        +                            "NZD",
        +                            "MYR"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "display_name": {
        +                          "type": "string"
        +                        },
        +                        "price_local": {
        +                          "type": "number"
        +                        },
        +                        "tier_slug": {
        +                          "enum": [
        +                            "7_day_pass",
        +                            "solo",
        +                            "studio",
        +                            "practice"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "unlock_summary": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "tier_slug",
        +                        "display_name",
        +                        "price_local",
        +                        "currency",
        +                        "billing",
        +                        "unlock_summary"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "current_tier": {
        +                    "const": "free",
        +                    "default": "free",
        +                    "type": "string"
        +                  },
        +                  "pass_credit": {
        +                    "anyOf": [
        +                      {
        +                        "additionalProperties": false,
        +                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        +                        "properties": {
        +                          "amount_local": {
        +                            "type": "number"
        +                          },
        +                          "applies_to": {
        +                            "const": "solo_first_month",
        +                            "default": "solo_first_month",
        +                            "type": "string"
        +                          },
        +                          "currency": {
        +                            "type": "string"
        +                          },
        +                          "redeemable_until": {
        +                            "type": "string"
        +                          }
        +                        },
        +                        "required": [
        +                          "amount_local",
        +                          "currency",
        +                          "redeemable_until"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "pricing_url": {
        +                    "default": "https://civilquants.com/pricing",
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "available_tiers"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tos_url": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "upgrade_hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "warranty_disclaimer": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          }
        +        },
        +        "required": [
        +          "request_id",
        +          "issued_at",
        +          "tier"
        +        ],
        +        "type": "object"
        +      },
        +      "data": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Schema § 1.1 — the typed payload returned inside `MCPResponse[ComputeResult]`.\n\nFree-tier responses omit `drawings` (the downloadable CAD artefact\npointers — the paid differentiator); the bridge enforces this. The\n`audit_trail` and the inline `drawing` preview are present on BOTH tiers\n(V1 ALIGN / 60th-fire D + C). `text_summary` is bounded to 2000 chars —\nkeeps the LLM-facing summary token-cheap and forces longer narrative into\nBoQ row descriptions where it belongs. `warnings` is the non-fatal\ngeometry advisory list (both tiers).",
        +            "properties": {
        +              "assembly_slug": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "audit_trail": {
        +                "anyOf": [
        +                  {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.7 — paid-tier audit-trail entry.\n\nOne entry per BoQ row; `boq_row_index` ties to the row position in\n`ComputeResult.boq_rows`. `derivation` is the human-readable formula\nwalk-through; `formula` is the optional formal expression.",
        +                      "properties": {
        +                        "boq_row_index": {
        +                          "minimum": 0,
        +                          "type": "integer"
        +                        },
        +                        "derivation": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "formula": {
        +                          "anyOf": [
        +                            {
        +                              "type": "string"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ],
        +                          "default": null
        +                        },
        +                        "id": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "parameters_referenced": {
        +                          "items": {
        +                            "type": "string"
        +                          },
        +                          "type": "array"
        +                        }
        +                      },
        +                      "required": [
        +                        "id",
        +                        "boq_row_index",
        +                        "derivation"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "boq_rows": {
        +                "items": {
        +                  "additionalProperties": false,
        +                  "description": "Schema § 1.3 — a single bill row in the requested standard's format.\n\n`description` is the non-verbatim functional description per spec § 13.9 /\n§ 15 invariant — NEVER reproduces a standard's verbatim clause text.\n`rate` / `amount` ship null because rates are commodity data the customer\nowns; the engine's job is the measurement, not the pricing.",
        +                  "properties": {
        +                    "amount": {
        +                      "anyOf": [
        +                        {
        +                          "type": "number"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "attribution": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "audit_id": {
        +                      "anyOf": [
        +                        {
        +                          "type": "string"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "description": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "quantity": {
        +                      "minimum": 0,
        +                      "type": "number"
        +                    },
        +                    "rate": {
        +                      "anyOf": [
        +                        {
        +                          "type": "number"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "unit": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "work_section": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    }
        +                  },
        +                  "required": [
        +                    "work_section",
        +                    "description",
        +                    "quantity",
        +                    "unit",
        +                    "attribution"
        +                  ],
        +                  "type": "object"
        +                },
        +                "type": "array"
        +              },
        +              "drawing": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": false,
        +                    "description": "Schema § 1.6a — inline server-rendered SVG preview of the geometry.\n\nThe MCP mirror of the web ``/compute`` response's ``drawing`` field\n(``api.schemas.compute.DrawingRef``): the same on-screen dimensioned\ndrawing both tiers see in the workspace, surfaced on the MCP compute\nresponse so a chat client can render it inline (60th-fire item C). This\nis the on-screen preview — present on BOTH tiers per the free/paid\nboundary; the downloadable CAD artefacts (DXF / dimensioned PDF) remain\nthe paid differentiator via the export tools.\n\nDefined here rather than importing ``DrawingRef`` because the web\n``schemas`` package imports back into this module (``schemas.render``),\nso reusing it would create an import cycle — the MCP wire contract keeps\nits own copy, the same pattern as ``BoQRow`` / ``DrawingReference``.",
        +                    "properties": {
        +                      "entity_count": {
        +                        "minimum": 0,
        +                        "type": "integer"
        +                      },
        +                      "svg_b64": {
        +                        "minLength": 1,
        +                        "type": "string"
        +                      },
        +                      "unit_of_drawing": {
        +                        "const": "m",
        +                        "default": "m",
        +                        "type": "string"
        +                      },
        +                      "viewbox_height": {
        +                        "exclusiveMinimum": 0,
        +                        "type": "number"
        +                      },
        +                      "viewbox_width": {
        +                        "exclusiveMinimum": 0,
        +                        "type": "number"
        +                      },
        +                      "viewbox_x": {
        +                        "type": "number"
        +                      },
        +                      "viewbox_y": {
        +                        "type": "number"
        +                      }
        +                    },
        +                    "required": [
        +                      "svg_b64",
        +                      "viewbox_x",
        +                      "viewbox_y",
        +                      "viewbox_width",
        +                      "viewbox_height",
        +                      "entity_count"
        +                    ],
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "drawings": {
        +                "anyOf": [
        +                  {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.6 — paid-tier drawing artefact pointer.\n\n`url` is an R2-signed URL; expiry is carried in `_meta.deliverables.expires_at`\non the envelope (not duplicated here). `layers` is DXF-only; PDF/SVG\ncallers omit it.",
        +                      "properties": {
        +                        "drawing_type": {
        +                          "enum": [
        +                            "section",
        +                            "plan",
        +                            "elevation",
        +                            "isometric",
        +                            "detail"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "format": {
        +                          "enum": [
        +                            "DXF",
        +                            "PDF",
        +                            "SVG"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "layers": {
        +                          "anyOf": [
        +                            {
        +                              "items": {
        +                                "type": "string"
        +                              },
        +                              "type": "array"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ],
        +                          "default": null
        +                        },
        +                        "scale": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "sheet_size": {
        +                          "enum": [
        +                            "A1",
        +                            "A2",
        +                            "A3",
        +                            "A4"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "url": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "drawing_type",
        +                        "format",
        +                        "url",
        +                        "sheet_size",
        +                        "scale"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "parameters_used": {
        +                "additionalProperties": false,
        +                "description": "Schema § 1.2 — the parameter snapshot the engine actually used.\n\nSplits user-supplied values from engine defaults so customers can see\nwhich numbers came from them and which the engine filled in. Every\ndefaulted parameter SHOULD have a corresponding entry in `assumptions`\n— the bridge layer enforces this when wrapping engine output.",
        +                "properties": {
        +                  "assumptions": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "engine_defaults": {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  "user_supplied": {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  }
        +                },
        +                "type": "object"
        +              },
        +              "standard": {
        +                "enum": [
        +                  "CESMM4",
        +                  "NRM2",
        +                  "SMM7",
        +                  "MMHW"
        +                ],
        +                "type": "string"
        +              },
        +              "text_summary": {
        +                "maxLength": 2000,
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "totals_summary": {
        +                "additionalProperties": false,
        +                "description": "Schema § 1.4 — totals_summary as a typed wrapper around the free-form dict.\n\nWire shape is a flat object (`{\"concrete_m3\": {...}, \"rebar_t\": {...}}`).\nWe model it as `RootModel`-equivalent via `model_config(extra=\"allow\")`\n+ a single `__root__`-style `entries` dict. Pydantic v2 recommends\n`RootModel` for free-form roots; using a wrapper class keeps the import\nsurface uniform with the rest of this module.",
        +                "properties": {
        +                  "entries": {
        +                    "additionalProperties": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.4 — single material/work-class total entry.",
        +                      "properties": {
        +                        "quantity": {
        +                          "minimum": 0,
        +                          "type": "number"
        +                        },
        +                        "unit": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "quantity",
        +                        "unit"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "object"
        +                  }
        +                },
        +                "type": "object"
        +              },
        +              "warnings": {
        +                "items": {
        +                  "additionalProperties": false,
        +                  "description": "Schema § 1.8 — a non-fatal geometry advisory (56th-fire T2).\n\nThe wire projection of the engine's `core.GeometryWarning`. Advisory only:\na warning NEVER changes a measured quantity — it flags geometry that is\nvalid but likely a mistake (e.g. a stale dependent-height default). Present\non BOTH tiers — a correctness/safety signal, not a paid feature.",
        +                  "properties": {
        +                    "affected_params": {
        +                      "items": {
        +                        "type": "string"
        +                      },
        +                      "type": "array"
        +                    },
        +                    "code": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "detail": {
        +                      "additionalProperties": {
        +                        "type": "number"
        +                      },
        +                      "type": "object"
        +                    },
        +                    "message": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "severity": {
        +                      "enum": [
        +                        "info",
        +                        "advisory",
        +                        "caution"
        +                      ],
        +                      "type": "string"
        +                    }
        +                  },
        +                  "required": [
        +                    "code",
        +                    "severity",
        +                    "message"
        +                  ],
        +                  "type": "object"
        +                },
        +                "type": "array"
        +              }
        +            },
        +            "required": [
        +              "assembly_slug",
        +              "standard",
        +              "parameters_used",
        +              "boq_rows",
        +              "totals_summary",
        +              "text_summary"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      },
        +      "error": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        +            "properties": {
        +              "code": {
        +                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        +                "enum": [
        +                  "RATE_LIMIT_EXCEEDED",
        +                  "TIER_INSUFFICIENT",
        +                  "INVALID_INPUT",
        +                  "SCHEMA_VERSION_MISMATCH",
        +                  "SCHEMA_INVARIANT_VIOLATION",
        +                  "UPSTREAM_TIMEOUT",
        +                  "BACKEND_FAILURE",
        +                  "IP_BLOCKED",
        +                  "RESOURCE_NOT_FOUND",
        +                  "RENDER_FAILURE",
        +                  "OCR_LOW_CONFIDENCE",
        +                  "MANUAL_REVIEW_REQUIRED",
        +                  "ACCEPTANCE_REQUIRED",
        +                  "INVALID_TOKEN"
        +                ],
        +                "type": "string"
        +              },
        +              "details": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "message": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "recoverable": {
        +                "type": "boolean"
        +              },
        +              "retry_after_seconds": {
        +                "anyOf": [
        +                  {
        +                    "minimum": 0,
        +                    "type": "integer"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              }
        +            },
        +            "required": [
        +              "code",
        +              "message",
        +              "recoverable"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      }
        +    },
        +    "required": [
        +      "_meta"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "_meta": {
        +        "additionalProperties": false,
        +        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        +        "properties": {
        +          "deliverables": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        +                "properties": {
        +                  "docx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "dxf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "expires_at": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  },
        +                  "pdf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "xlsx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "expires_at"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "document_id": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "issued_at": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "rate_limit_remaining": {
        +            "anyOf": [
        +              {
        +                "minimum": 0,
        +                "type": "integer"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "request_id": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "schema_version": {
        +            "const": "1.0.0",
        +            "default": "1.0.0",
        +            "type": "string"
        +          },
        +          "scope_boundary": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        +                "properties": {
        +                  "not_in_scope": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "produced": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "recommended_companions": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "type": "string"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "produced",
        +                  "not_in_scope"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tier": {
        +            "enum": [
        +              "free",
        +              "paid"
        +            ],
        +            "type": "string"
        +          },
        +          "tier_upgrade": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        +                "properties": {
        +                  "available_tiers": {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        +                      "properties": {
        +                        "billing": {
        +                          "enum": [
        +                            "one_off",
        +                            "monthly",
        +                            "annual"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "currency": {
        +                          "enum": [
        +                            "GBP",
        +                            "SGD",
        +                            "EUR",
        +                            "USD",
        +                            "CAD",
        +                            "AUD",
        +                            "NZD",
        +                            "MYR"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "display_name": {
        +                          "type": "string"
        +                        },
        +                        "price_local": {
        +                          "type": "number"
        +                        },
        +                        "tier_slug": {
        +                          "enum": [
        +                            "7_day_pass",
        +                            "solo",
        +                            "studio",
        +                            "practice"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "unlock_summary": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "tier_slug",
        +                        "display_name",
        +                        "price_local",
        +                        "currency",
        +                        "billing",
        +                        "unlock_summary"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "current_tier": {
        +                    "const": "free",
        +                    "default": "free",
        +                    "type": "string"
        +                  },
        +                  "pass_credit": {
        +                    "anyOf": [
        +                      {
        +                        "additionalProperties": false,
        +                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        +                        "properties": {
        +                          "amount_local": {
        +                            "type": "number"
        +                          },
        +                          "applies_to": {
        +                            "const": "solo_first_month",
        +                            "default": "solo_first_month",
        +                            "type": "string"
        +                          },
        +                          "currency": {
        +                            "type": "string"
        +                          },
        +                          "redeemable_until": {
        +                            "type": "string"
        +                          }
        +                        },
        +                        "required": [
        +                          "amount_local",
        +                          "currency",
        +                          "redeemable_until"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "pricing_url": {
        +                    "default": "https://civilquants.com/pricing",
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "available_tiers"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tos_url": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "upgrade_hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "warranty_disclaimer": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          }
        +        },
        +        "required": [
        +          "request_id",
        +          "issued_at",
        +          "tier"
        +        ],
        +        "type": "object"
        +      },
        +      "data": {
        +        "default": null,
        +        "title": "Data"
        +      },
        +      "error": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        +            "properties": {
        +              "code": {
        +                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        +                "enum": [
        +                  "RATE_LIMIT_EXCEEDED",
        +                  "TIER_INSUFFICIENT",
        +                  "INVALID_INPUT",
        +                  "SCHEMA_VERSION_MISMATCH",
        +                  "SCHEMA_INVARIANT_VIOLATION",
        +                  "UPSTREAM_TIMEOUT",
        +                  "BACKEND_FAILURE",
        +                  "IP_BLOCKED",
        +                  "RESOURCE_NOT_FOUND",
        +                  "RENDER_FAILURE",
        +                  "OCR_LOW_CONFIDENCE",
        +                  "MANUAL_REVIEW_REQUIRED",
        +                  "ACCEPTANCE_REQUIRED",
        +                  "INVALID_TOKEN"
        +                ],
        +                "type": "string"
        +              },
        +              "details": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "message": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "recoverable": {
        +                "type": "boolean"
        +              },
        +              "retry_after_seconds": {
        +                "anyOf": [
        +                  {
        +                    "minimum": 0,
        +                    "type": "integer"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              }
        +            },
        +            "required": [
        +              "code",
        +              "message",
        +              "recoverable"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      }
        +    },
        +    "required": [
        +      "_meta"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedcompute_headwall_attenuation_outlet1 field changed
      • changedOutput schema / properties / result / anyOf
        Previous value: -[
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "_meta": {
        -        "additionalProperties": false,
        -        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        -        "properties": {
        -          "deliverables": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        -                "properties": {
        -                  "docx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "dxf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "expires_at": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  },
        -                  "pdf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "xlsx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "expires_at"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "document_id": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "issued_at": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "rate_limit_remaining": {
        -            "anyOf": [
        -              {
        -                "minimum": 0,
        -                "type": "integer"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "request_id": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "schema_version": {
        -            "const": "1.0.0",
        -            "default": "1.0.0",
        -            "type": "string"
        -          },
        -          "scope_boundary": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        -                "properties": {
        -                  "not_in_scope": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "produced": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "recommended_companions": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "type": "string"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "produced",
        -                  "not_in_scope"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tier": {
        -            "enum": [
        -              "free",
        -              "paid"
        -            ],
        -            "type": "string"
        -          },
        -          "tier_upgrade": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        -                "properties": {
        -                  "available_tiers": {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        -                      "properties": {
        -                        "billing": {
        -                          "enum": [
        -                            "one_off",
        -                            "monthly",
        -                            "annual"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "currency": {
        -                          "enum": [
        -                            "GBP",
        -                            "SGD",
        -                            "EUR",
        -                            "USD",
        -                            "CAD",
        -                            "AUD",
        -                            "NZD",
        -                            "MYR"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "display_name": {
        -                          "type": "string"
        -                        },
        -                        "price_local": {
        -                          "type": "number"
        -                        },
        -                        "tier_slug": {
        -                          "enum": [
        -                            "7_day_pass",
        -                            "solo",
        -                            "studio",
        -                            "practice"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "unlock_summary": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "tier_slug",
        -                        "display_name",
        -                        "price_local",
        -                        "currency",
        -                        "billing",
        -                        "unlock_summary"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "current_tier": {
        -                    "const": "free",
        -                    "default": "free",
        -                    "type": "string"
        -                  },
        -                  "pass_credit": {
        -                    "anyOf": [
        -                      {
        -                        "additionalProperties": false,
        -                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        -                        "properties": {
        -                          "amount_local": {
        -                            "type": "number"
        -                          },
        -                          "applies_to": {
        -                            "const": "solo_first_month",
        -                            "default": "solo_first_month",
        -                            "type": "string"
        -                          },
        -                          "currency": {
        -                            "type": "string"
        -                          },
        -                          "redeemable_until": {
        -                            "type": "string"
        -                          }
        -                        },
        -                        "required": [
        -                          "amount_local",
        -                          "currency",
        -                          "redeemable_until"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "pricing_url": {
        -                    "default": "https://civilquants.com/pricing",
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "available_tiers"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tos_url": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "upgrade_hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "warranty_disclaimer": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          }
        -        },
        -        "required": [
        -          "request_id",
        -          "issued_at",
        -          "tier"
        -        ],
        -        "type": "object"
        -      },
        -      "data": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Schema § 1.1 — the typed payload returned inside `MCPResponse[ComputeResult]`.\n\nFree-tier responses omit `drawings` (the downloadable CAD artefact\npointers — the paid differentiator); the bridge enforces this. The\n`audit_trail` and the inline `drawing` preview are present on BOTH tiers\n(V1 ALIGN / 60th-fire D + C). `text_summary` is bounded to 2000 chars —\nkeeps the LLM-facing summary token-cheap and forces longer narrative into\nBoQ row descriptions where it belongs. `warnings` is the non-fatal\ngeometry advisory list (both tiers).",
        -            "properties": {
        -              "assembly_slug": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "audit_trail": {
        -                "anyOf": [
        -                  {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.7 — paid-tier audit-trail entry.\n\nOne entry per BoQ row; `boq_row_index` ties to the row position in\n`ComputeResult.boq_rows`. `derivation` is the human-readable formula\nwalk-through; `formula` is the optional formal expression.",
        -                      "properties": {
        -                        "boq_row_index": {
        -                          "minimum": 0,
        -                          "type": "integer"
        -                        },
        -                        "derivation": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "formula": {
        -                          "anyOf": [
        -                            {
        -                              "type": "string"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ],
        -                          "default": null
        -                        },
        -                        "id": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "parameters_referenced": {
        -                          "items": {
        -                            "type": "string"
        -                          },
        -                          "type": "array"
        -                        }
        -                      },
        -                      "required": [
        -                        "id",
        -                        "boq_row_index",
        -                        "derivation"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "boq_rows": {
        -                "items": {
        -                  "additionalProperties": false,
        -                  "description": "Schema § 1.3 — a single bill row in the requested standard's format.\n\n`description` is the non-verbatim functional description per spec § 13.9 /\n§ 15 invariant — NEVER reproduces a standard's verbatim clause text.\n`rate` / `amount` ship null because rates are commodity data the customer\nowns; the engine's job is the measurement, not the pricing.",
        -                  "properties": {
        -                    "amount": {
        -                      "anyOf": [
        -                        {
        -                          "type": "number"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "attribution": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "audit_id": {
        -                      "anyOf": [
        -                        {
        -                          "type": "string"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "description": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "quantity": {
        -                      "minimum": 0,
        -                      "type": "number"
        -                    },
        -                    "rate": {
        -                      "anyOf": [
        -                        {
        -                          "type": "number"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "unit": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "work_section": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    }
        -                  },
        -                  "required": [
        -                    "work_section",
        -                    "description",
        -                    "quantity",
        -                    "unit",
        -                    "attribution"
        -                  ],
        -                  "type": "object"
        -                },
        -                "type": "array"
        -              },
        -              "drawing": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": false,
        -                    "description": "Schema § 1.6a — inline server-rendered SVG preview of the geometry.\n\nThe MCP mirror of the web ``/compute`` response's ``drawing`` field\n(``api.schemas.compute.DrawingRef``): the same on-screen dimensioned\ndrawing both tiers see in the workspace, surfaced on the MCP compute\nresponse so a chat client can render it inline (60th-fire item C). This\nis the on-screen preview — present on BOTH tiers per the free/paid\nboundary; the downloadable CAD artefacts (DXF / dimensioned PDF) remain\nthe paid differentiator via the export tools.\n\nDefined here rather than importing ``DrawingRef`` because the web\n``schemas`` package imports back into this module (``schemas.render``),\nso reusing it would create an import cycle — the MCP wire contract keeps\nits own copy, the same pattern as ``BoQRow`` / ``DrawingReference``.",
        -                    "properties": {
        -                      "entity_count": {
        -                        "minimum": 0,
        -                        "type": "integer"
        -                      },
        -                      "svg_b64": {
        -                        "minLength": 1,
        -                        "type": "string"
        -                      },
        -                      "unit_of_drawing": {
        -                        "const": "m",
        -                        "default": "m",
        -                        "type": "string"
        -                      },
        -                      "viewbox_height": {
        -                        "exclusiveMinimum": 0,
        -                        "type": "number"
        -                      },
        -                      "viewbox_width": {
        -                        "exclusiveMinimum": 0,
        -                        "type": "number"
        -                      },
        -                      "viewbox_x": {
        -                        "type": "number"
        -                      },
        -                      "viewbox_y": {
        -                        "type": "number"
        -                      }
        -                    },
        -                    "required": [
        -                      "svg_b64",
        -                      "viewbox_x",
        -                      "viewbox_y",
        -                      "viewbox_width",
        -                      "viewbox_height",
        -                      "entity_count"
        -                    ],
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "drawings": {
        -                "anyOf": [
        -                  {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.6 — paid-tier drawing artefact pointer.\n\n`url` is an R2-signed URL; expiry is carried in `_meta.deliverables.expires_at`\non the envelope (not duplicated here). `layers` is DXF-only; PDF/SVG\ncallers omit it.",
        -                      "properties": {
        -                        "drawing_type": {
        -                          "enum": [
        -                            "section",
        -                            "plan",
        -                            "elevation",
        -                            "isometric",
        -                            "detail"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "format": {
        -                          "enum": [
        -                            "DXF",
        -                            "PDF",
        -                            "SVG"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "layers": {
        -                          "anyOf": [
        -                            {
        -                              "items": {
        -                                "type": "string"
        -                              },
        -                              "type": "array"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ],
        -                          "default": null
        -                        },
        -                        "scale": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "sheet_size": {
        -                          "enum": [
        -                            "A1",
        -                            "A2",
        -                            "A3",
        -                            "A4"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "url": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "drawing_type",
        -                        "format",
        -                        "url",
        -                        "sheet_size",
        -                        "scale"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "parameters_used": {
        -                "additionalProperties": false,
        -                "description": "Schema § 1.2 — the parameter snapshot the engine actually used.\n\nSplits user-supplied values from engine defaults so customers can see\nwhich numbers came from them and which the engine filled in. Every\ndefaulted parameter SHOULD have a corresponding entry in `assumptions`\n— the bridge layer enforces this when wrapping engine output.",
        -                "properties": {
        -                  "assumptions": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "engine_defaults": {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  "resolved_from_description": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "additionalProperties": false,
        -                          "description": "Schema § 1.2 — a parameter resolved by the forgiving-input layer.\n\nPopulated by the Track B-Forgiving Haiku-4.5 resolution pass; until that\nlayer lands, instances are constructed only by tests. `source` distinguishes\nthe resolution path so customers can audit which fields were inferred.",
        -                          "properties": {
        -                            "confidence": {
        -                              "anyOf": [
        -                                {
        -                                  "enum": [
        -                                    "high",
        -                                    "medium",
        -                                    "low"
        -                                  ],
        -                                  "type": "string"
        -                                },
        -                                {
        -                                  "type": "null"
        -                                }
        -                              ],
        -                              "default": null
        -                            },
        -                            "field_name": {
        -                              "minLength": 1,
        -                              "type": "string"
        -                            },
        -                            "resolved_value": {},
        -                            "source": {
        -                              "enum": [
        -                                "description_field",
        -                                "haiku_resolution",
        -                                "engine_default"
        -                              ],
        -                              "type": "string"
        -                            }
        -                          },
        -                          "required": [
        -                            "field_name",
        -                            "resolved_value",
        -                            "source"
        -                          ],
        -                          "type": "object"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "user_supplied": {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  }
        -                },
        -                "type": "object"
        -              },
        -              "standard": {
        -                "enum": [
        -                  "CESMM4",
        -                  "NRM2",
        -                  "SMM7",
        -                  "MMHW"
        -                ],
        -                "type": "string"
        -              },
        -              "text_summary": {
        -                "maxLength": 2000,
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "totals_summary": {
        -                "additionalProperties": false,
        -                "description": "Schema § 1.4 — totals_summary as a typed wrapper around the free-form dict.\n\nWire shape is a flat object (`{\"concrete_m3\": {...}, \"rebar_t\": {...}}`).\nWe model it as `RootModel`-equivalent via `model_config(extra=\"allow\")`\n+ a single `__root__`-style `entries` dict. Pydantic v2 recommends\n`RootModel` for free-form roots; using a wrapper class keeps the import\nsurface uniform with the rest of this module.",
        -                "properties": {
        -                  "entries": {
        -                    "additionalProperties": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.4 — single material/work-class total entry.",
        -                      "properties": {
        -                        "quantity": {
        -                          "minimum": 0,
        -                          "type": "number"
        -                        },
        -                        "unit": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "quantity",
        -                        "unit"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "object"
        -                  }
        -                },
        -                "type": "object"
        -              },
        -              "warnings": {
        -                "items": {
        -                  "additionalProperties": false,
        -                  "description": "Schema § 1.8 — a non-fatal geometry advisory (56th-fire T2).\n\nThe wire projection of the engine's `core.GeometryWarning`. Advisory only:\na warning NEVER changes a measured quantity — it flags geometry that is\nvalid but likely a mistake (e.g. a stale dependent-height default). Present\non BOTH tiers — a correctness/safety signal, not a paid feature.",
        -                  "properties": {
        -                    "affected_params": {
        -                      "items": {
        -                        "type": "string"
        -                      },
        -                      "type": "array"
        -                    },
        -                    "code": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "detail": {
        -                      "additionalProperties": {
        -                        "type": "number"
        -                      },
        -                      "type": "object"
        -                    },
        -                    "message": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "severity": {
        -                      "enum": [
        -                        "info",
        -                        "advisory",
        -                        "caution"
        -                      ],
        -                      "type": "string"
        -                    }
        -                  },
        -                  "required": [
        -                    "code",
        -                    "severity",
        -                    "message"
        -                  ],
        -                  "type": "object"
        -                },
        -                "type": "array"
        -              }
        -            },
        -            "required": [
        -              "assembly_slug",
        -              "standard",
        -              "parameters_used",
        -              "boq_rows",
        -              "totals_summary",
        -              "text_summary"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      },
        -      "error": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        -            "properties": {
        -              "code": {
        -                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        -                "enum": [
        -                  "RATE_LIMIT_EXCEEDED",
        -                  "TIER_INSUFFICIENT",
        -                  "INVALID_INPUT",
        -                  "SCHEMA_VERSION_MISMATCH",
        -                  "SCHEMA_INVARIANT_VIOLATION",
        -                  "UPSTREAM_TIMEOUT",
        -                  "BACKEND_FAILURE",
        -                  "IP_BLOCKED",
        -                  "RESOURCE_NOT_FOUND",
        -                  "RENDER_FAILURE",
        -                  "OCR_LOW_CONFIDENCE",
        -                  "MANUAL_REVIEW_REQUIRED",
        -                  "ACCEPTANCE_REQUIRED",
        -                  "INVALID_TOKEN"
        -                ],
        -                "type": "string"
        -              },
        -              "details": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "message": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "recoverable": {
        -                "type": "boolean"
        -              },
        -              "retry_after_seconds": {
        -                "anyOf": [
        -                  {
        -                    "minimum": 0,
        -                    "type": "integer"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              }
        -            },
        -            "required": [
        -              "code",
        -              "message",
        -              "recoverable"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      }
        -    },
        -    "required": [
        -      "_meta"
        -    ],
        -    "type": "object"
        -  },
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "_meta": {
        -        "additionalProperties": false,
        -        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        -        "properties": {
        -          "deliverables": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        -                "properties": {
        -                  "docx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "dxf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "expires_at": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  },
        -                  "pdf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "xlsx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "expires_at"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "document_id": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "issued_at": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "rate_limit_remaining": {
        -            "anyOf": [
        -              {
        -                "minimum": 0,
        -                "type": "integer"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "request_id": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "schema_version": {
        -            "const": "1.0.0",
        -            "default": "1.0.0",
        -            "type": "string"
        -          },
        -          "scope_boundary": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        -                "properties": {
        -                  "not_in_scope": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "produced": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "recommended_companions": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "type": "string"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "produced",
        -                  "not_in_scope"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tier": {
        -            "enum": [
        -              "free",
        -              "paid"
        -            ],
        -            "type": "string"
        -          },
        -          "tier_upgrade": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        -                "properties": {
        -                  "available_tiers": {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        -                      "properties": {
        -                        "billing": {
        -                          "enum": [
        -                            "one_off",
        -                            "monthly",
        -                            "annual"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "currency": {
        -                          "enum": [
        -                            "GBP",
        -                            "SGD",
        -                            "EUR",
        -                            "USD",
        -                            "CAD",
        -                            "AUD",
        -                            "NZD",
        -                            "MYR"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "display_name": {
        -                          "type": "string"
        -                        },
        -                        "price_local": {
        -                          "type": "number"
        -                        },
        -                        "tier_slug": {
        -                          "enum": [
        -                            "7_day_pass",
        -                            "solo",
        -                            "studio",
        -                            "practice"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "unlock_summary": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "tier_slug",
        -                        "display_name",
        -                        "price_local",
        -                        "currency",
        -                        "billing",
        -                        "unlock_summary"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "current_tier": {
        -                    "const": "free",
        -                    "default": "free",
        -                    "type": "string"
        -                  },
        -                  "pass_credit": {
        -                    "anyOf": [
        -                      {
        -                        "additionalProperties": false,
        -                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        -                        "properties": {
        -                          "amount_local": {
        -                            "type": "number"
        -                          },
        -                          "applies_to": {
        -                            "const": "solo_first_month",
        -                            "default": "solo_first_month",
        -                            "type": "string"
        -                          },
        -                          "currency": {
        -                            "type": "string"
        -                          },
        -                          "redeemable_until": {
        -                            "type": "string"
        -                          }
        -                        },
        -                        "required": [
        -                          "amount_local",
        -                          "currency",
        -                          "redeemable_until"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "pricing_url": {
        -                    "default": "https://civilquants.com/pricing",
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "available_tiers"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tos_url": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "upgrade_hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "warranty_disclaimer": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          }
        -        },
        -        "required": [
        -          "request_id",
        -          "issued_at",
        -          "tier"
        -        ],
        -        "type": "object"
        -      },
        -      "data": {
        -        "default": null,
        -        "title": "Data"
        -      },
        -      "error": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        -            "properties": {
        -              "code": {
        -                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        -                "enum": [
        -                  "RATE_LIMIT_EXCEEDED",
        -                  "TIER_INSUFFICIENT",
        -                  "INVALID_INPUT",
        -                  "SCHEMA_VERSION_MISMATCH",
        -                  "SCHEMA_INVARIANT_VIOLATION",
        -                  "UPSTREAM_TIMEOUT",
        -                  "BACKEND_FAILURE",
        -                  "IP_BLOCKED",
        -                  "RESOURCE_NOT_FOUND",
        -                  "RENDER_FAILURE",
        -                  "OCR_LOW_CONFIDENCE",
        -                  "MANUAL_REVIEW_REQUIRED",
        -                  "ACCEPTANCE_REQUIRED",
        -                  "INVALID_TOKEN"
        -                ],
        -                "type": "string"
        -              },
        -              "details": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "message": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "recoverable": {
        -                "type": "boolean"
        -              },
        -              "retry_after_seconds": {
        -                "anyOf": [
        -                  {
        -                    "minimum": 0,
        -                    "type": "integer"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              }
        -            },
        -            "required": [
        -              "code",
        -              "message",
        -              "recoverable"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      }
        -    },
        -    "required": [
        -      "_meta"
        -    ],
        -    "type": "object"
        -  }
        -]New value: +[
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "_meta": {
        +        "additionalProperties": false,
        +        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        +        "properties": {
        +          "deliverables": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        +                "properties": {
        +                  "docx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "dxf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "expires_at": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  },
        +                  "pdf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "xlsx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "expires_at"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "document_id": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "issued_at": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "rate_limit_remaining": {
        +            "anyOf": [
        +              {
        +                "minimum": 0,
        +                "type": "integer"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "request_id": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "schema_version": {
        +            "const": "1.0.0",
        +            "default": "1.0.0",
        +            "type": "string"
        +          },
        +          "scope_boundary": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        +                "properties": {
        +                  "not_in_scope": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "produced": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "recommended_companions": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "type": "string"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "produced",
        +                  "not_in_scope"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tier": {
        +            "enum": [
        +              "free",
        +              "paid"
        +            ],
        +            "type": "string"
        +          },
        +          "tier_upgrade": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        +                "properties": {
        +                  "available_tiers": {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        +                      "properties": {
        +                        "billing": {
        +                          "enum": [
        +                            "one_off",
        +                            "monthly",
        +                            "annual"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "currency": {
        +                          "enum": [
        +                            "GBP",
        +                            "SGD",
        +                            "EUR",
        +                            "USD",
        +                            "CAD",
        +                            "AUD",
        +                            "NZD",
        +                            "MYR"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "display_name": {
        +                          "type": "string"
        +                        },
        +                        "price_local": {
        +                          "type": "number"
        +                        },
        +                        "tier_slug": {
        +                          "enum": [
        +                            "7_day_pass",
        +                            "solo",
        +                            "studio",
        +                            "practice"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "unlock_summary": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "tier_slug",
        +                        "display_name",
        +                        "price_local",
        +                        "currency",
        +                        "billing",
        +                        "unlock_summary"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "current_tier": {
        +                    "const": "free",
        +                    "default": "free",
        +                    "type": "string"
        +                  },
        +                  "pass_credit": {
        +                    "anyOf": [
        +                      {
        +                        "additionalProperties": false,
        +                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        +                        "properties": {
        +                          "amount_local": {
        +                            "type": "number"
        +                          },
        +                          "applies_to": {
        +                            "const": "solo_first_month",
        +                            "default": "solo_first_month",
        +                            "type": "string"
        +                          },
        +                          "currency": {
        +                            "type": "string"
        +                          },
        +                          "redeemable_until": {
        +                            "type": "string"
        +                          }
        +                        },
        +                        "required": [
        +                          "amount_local",
        +                          "currency",
        +                          "redeemable_until"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "pricing_url": {
        +                    "default": "https://civilquants.com/pricing",
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "available_tiers"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tos_url": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "upgrade_hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "warranty_disclaimer": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          }
        +        },
        +        "required": [
        +          "request_id",
        +          "issued_at",
        +          "tier"
        +        ],
        +        "type": "object"
        +      },
        +      "data": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Schema § 1.1 — the typed payload returned inside `MCPResponse[ComputeResult]`.\n\nFree-tier responses omit `drawings` (the downloadable CAD artefact\npointers — the paid differentiator); the bridge enforces this. The\n`audit_trail` and the inline `drawing` preview are present on BOTH tiers\n(V1 ALIGN / 60th-fire D + C). `text_summary` is bounded to 2000 chars —\nkeeps the LLM-facing summary token-cheap and forces longer narrative into\nBoQ row descriptions where it belongs. `warnings` is the non-fatal\ngeometry advisory list (both tiers).",
        +            "properties": {
        +              "assembly_slug": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "audit_trail": {
        +                "anyOf": [
        +                  {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.7 — paid-tier audit-trail entry.\n\nOne entry per BoQ row; `boq_row_index` ties to the row position in\n`ComputeResult.boq_rows`. `derivation` is the human-readable formula\nwalk-through; `formula` is the optional formal expression.",
        +                      "properties": {
        +                        "boq_row_index": {
        +                          "minimum": 0,
        +                          "type": "integer"
        +                        },
        +                        "derivation": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "formula": {
        +                          "anyOf": [
        +                            {
        +                              "type": "string"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ],
        +                          "default": null
        +                        },
        +                        "id": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "parameters_referenced": {
        +                          "items": {
        +                            "type": "string"
        +                          },
        +                          "type": "array"
        +                        }
        +                      },
        +                      "required": [
        +                        "id",
        +                        "boq_row_index",
        +                        "derivation"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "boq_rows": {
        +                "items": {
        +                  "additionalProperties": false,
        +                  "description": "Schema § 1.3 — a single bill row in the requested standard's format.\n\n`description` is the non-verbatim functional description per spec § 13.9 /\n§ 15 invariant — NEVER reproduces a standard's verbatim clause text.\n`rate` / `amount` ship null because rates are commodity data the customer\nowns; the engine's job is the measurement, not the pricing.",
        +                  "properties": {
        +                    "amount": {
        +                      "anyOf": [
        +                        {
        +                          "type": "number"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "attribution": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "audit_id": {
        +                      "anyOf": [
        +                        {
        +                          "type": "string"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "description": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "quantity": {
        +                      "minimum": 0,
        +                      "type": "number"
        +                    },
        +                    "rate": {
        +                      "anyOf": [
        +                        {
        +                          "type": "number"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "unit": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "work_section": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    }
        +                  },
        +                  "required": [
        +                    "work_section",
        +                    "description",
        +                    "quantity",
        +                    "unit",
        +                    "attribution"
        +                  ],
        +                  "type": "object"
        +                },
        +                "type": "array"
        +              },
        +              "drawing": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": false,
        +                    "description": "Schema § 1.6a — inline server-rendered SVG preview of the geometry.\n\nThe MCP mirror of the web ``/compute`` response's ``drawing`` field\n(``api.schemas.compute.DrawingRef``): the same on-screen dimensioned\ndrawing both tiers see in the workspace, surfaced on the MCP compute\nresponse so a chat client can render it inline (60th-fire item C). This\nis the on-screen preview — present on BOTH tiers per the free/paid\nboundary; the downloadable CAD artefacts (DXF / dimensioned PDF) remain\nthe paid differentiator via the export tools.\n\nDefined here rather than importing ``DrawingRef`` because the web\n``schemas`` package imports back into this module (``schemas.render``),\nso reusing it would create an import cycle — the MCP wire contract keeps\nits own copy, the same pattern as ``BoQRow`` / ``DrawingReference``.",
        +                    "properties": {
        +                      "entity_count": {
        +                        "minimum": 0,
        +                        "type": "integer"
        +                      },
        +                      "svg_b64": {
        +                        "minLength": 1,
        +                        "type": "string"
        +                      },
        +                      "unit_of_drawing": {
        +                        "const": "m",
        +                        "default": "m",
        +                        "type": "string"
        +                      },
        +                      "viewbox_height": {
        +                        "exclusiveMinimum": 0,
        +                        "type": "number"
        +                      },
        +                      "viewbox_width": {
        +                        "exclusiveMinimum": 0,
        +                        "type": "number"
        +                      },
        +                      "viewbox_x": {
        +                        "type": "number"
        +                      },
        +                      "viewbox_y": {
        +                        "type": "number"
        +                      }
        +                    },
        +                    "required": [
        +                      "svg_b64",
        +                      "viewbox_x",
        +                      "viewbox_y",
        +                      "viewbox_width",
        +                      "viewbox_height",
        +                      "entity_count"
        +                    ],
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "drawings": {
        +                "anyOf": [
        +                  {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.6 — paid-tier drawing artefact pointer.\n\n`url` is an R2-signed URL; expiry is carried in `_meta.deliverables.expires_at`\non the envelope (not duplicated here). `layers` is DXF-only; PDF/SVG\ncallers omit it.",
        +                      "properties": {
        +                        "drawing_type": {
        +                          "enum": [
        +                            "section",
        +                            "plan",
        +                            "elevation",
        +                            "isometric",
        +                            "detail"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "format": {
        +                          "enum": [
        +                            "DXF",
        +                            "PDF",
        +                            "SVG"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "layers": {
        +                          "anyOf": [
        +                            {
        +                              "items": {
        +                                "type": "string"
        +                              },
        +                              "type": "array"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ],
        +                          "default": null
        +                        },
        +                        "scale": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "sheet_size": {
        +                          "enum": [
        +                            "A1",
        +                            "A2",
        +                            "A3",
        +                            "A4"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "url": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "drawing_type",
        +                        "format",
        +                        "url",
        +                        "sheet_size",
        +                        "scale"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "parameters_used": {
        +                "additionalProperties": false,
        +                "description": "Schema § 1.2 — the parameter snapshot the engine actually used.\n\nSplits user-supplied values from engine defaults so customers can see\nwhich numbers came from them and which the engine filled in. Every\ndefaulted parameter SHOULD have a corresponding entry in `assumptions`\n— the bridge layer enforces this when wrapping engine output.",
        +                "properties": {
        +                  "assumptions": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "engine_defaults": {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  "user_supplied": {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  }
        +                },
        +                "type": "object"
        +              },
        +              "standard": {
        +                "enum": [
        +                  "CESMM4",
        +                  "NRM2",
        +                  "SMM7",
        +                  "MMHW"
        +                ],
        +                "type": "string"
        +              },
        +              "text_summary": {
        +                "maxLength": 2000,
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "totals_summary": {
        +                "additionalProperties": false,
        +                "description": "Schema § 1.4 — totals_summary as a typed wrapper around the free-form dict.\n\nWire shape is a flat object (`{\"concrete_m3\": {...}, \"rebar_t\": {...}}`).\nWe model it as `RootModel`-equivalent via `model_config(extra=\"allow\")`\n+ a single `__root__`-style `entries` dict. Pydantic v2 recommends\n`RootModel` for free-form roots; using a wrapper class keeps the import\nsurface uniform with the rest of this module.",
        +                "properties": {
        +                  "entries": {
        +                    "additionalProperties": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.4 — single material/work-class total entry.",
        +                      "properties": {
        +                        "quantity": {
        +                          "minimum": 0,
        +                          "type": "number"
        +                        },
        +                        "unit": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "quantity",
        +                        "unit"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "object"
        +                  }
        +                },
        +                "type": "object"
        +              },
        +              "warnings": {
        +                "items": {
        +                  "additionalProperties": false,
        +                  "description": "Schema § 1.8 — a non-fatal geometry advisory (56th-fire T2).\n\nThe wire projection of the engine's `core.GeometryWarning`. Advisory only:\na warning NEVER changes a measured quantity — it flags geometry that is\nvalid but likely a mistake (e.g. a stale dependent-height default). Present\non BOTH tiers — a correctness/safety signal, not a paid feature.",
        +                  "properties": {
        +                    "affected_params": {
        +                      "items": {
        +                        "type": "string"
        +                      },
        +                      "type": "array"
        +                    },
        +                    "code": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "detail": {
        +                      "additionalProperties": {
        +                        "type": "number"
        +                      },
        +                      "type": "object"
        +                    },
        +                    "message": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "severity": {
        +                      "enum": [
        +                        "info",
        +                        "advisory",
        +                        "caution"
        +                      ],
        +                      "type": "string"
        +                    }
        +                  },
        +                  "required": [
        +                    "code",
        +                    "severity",
        +                    "message"
        +                  ],
        +                  "type": "object"
        +                },
        +                "type": "array"
        +              }
        +            },
        +            "required": [
        +              "assembly_slug",
        +              "standard",
        +              "parameters_used",
        +              "boq_rows",
        +              "totals_summary",
        +              "text_summary"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      },
        +      "error": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        +            "properties": {
        +              "code": {
        +                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        +                "enum": [
        +                  "RATE_LIMIT_EXCEEDED",
        +                  "TIER_INSUFFICIENT",
        +                  "INVALID_INPUT",
        +                  "SCHEMA_VERSION_MISMATCH",
        +                  "SCHEMA_INVARIANT_VIOLATION",
        +                  "UPSTREAM_TIMEOUT",
        +                  "BACKEND_FAILURE",
        +                  "IP_BLOCKED",
        +                  "RESOURCE_NOT_FOUND",
        +                  "RENDER_FAILURE",
        +                  "OCR_LOW_CONFIDENCE",
        +                  "MANUAL_REVIEW_REQUIRED",
        +                  "ACCEPTANCE_REQUIRED",
        +                  "INVALID_TOKEN"
        +                ],
        +                "type": "string"
        +              },
        +              "details": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "message": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "recoverable": {
        +                "type": "boolean"
        +              },
        +              "retry_after_seconds": {
        +                "anyOf": [
        +                  {
        +                    "minimum": 0,
        +                    "type": "integer"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              }
        +            },
        +            "required": [
        +              "code",
        +              "message",
        +              "recoverable"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      }
        +    },
        +    "required": [
        +      "_meta"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "_meta": {
        +        "additionalProperties": false,
        +        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        +        "properties": {
        +          "deliverables": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        +                "properties": {
        +                  "docx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "dxf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "expires_at": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  },
        +                  "pdf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "xlsx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "expires_at"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "document_id": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "issued_at": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "rate_limit_remaining": {
        +            "anyOf": [
        +              {
        +                "minimum": 0,
        +                "type": "integer"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "request_id": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "schema_version": {
        +            "const": "1.0.0",
        +            "default": "1.0.0",
        +            "type": "string"
        +          },
        +          "scope_boundary": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        +                "properties": {
        +                  "not_in_scope": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "produced": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "recommended_companions": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "type": "string"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "produced",
        +                  "not_in_scope"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tier": {
        +            "enum": [
        +              "free",
        +              "paid"
        +            ],
        +            "type": "string"
        +          },
        +          "tier_upgrade": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        +                "properties": {
        +                  "available_tiers": {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        +                      "properties": {
        +                        "billing": {
        +                          "enum": [
        +                            "one_off",
        +                            "monthly",
        +                            "annual"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "currency": {
        +                          "enum": [
        +                            "GBP",
        +                            "SGD",
        +                            "EUR",
        +                            "USD",
        +                            "CAD",
        +                            "AUD",
        +                            "NZD",
        +                            "MYR"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "display_name": {
        +                          "type": "string"
        +                        },
        +                        "price_local": {
        +                          "type": "number"
        +                        },
        +                        "tier_slug": {
        +                          "enum": [
        +                            "7_day_pass",
        +                            "solo",
        +                            "studio",
        +                            "practice"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "unlock_summary": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "tier_slug",
        +                        "display_name",
        +                        "price_local",
        +                        "currency",
        +                        "billing",
        +                        "unlock_summary"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "current_tier": {
        +                    "const": "free",
        +                    "default": "free",
        +                    "type": "string"
        +                  },
        +                  "pass_credit": {
        +                    "anyOf": [
        +                      {
        +                        "additionalProperties": false,
        +                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        +                        "properties": {
        +                          "amount_local": {
        +                            "type": "number"
        +                          },
        +                          "applies_to": {
        +                            "const": "solo_first_month",
        +                            "default": "solo_first_month",
        +                            "type": "string"
        +                          },
        +                          "currency": {
        +                            "type": "string"
        +                          },
        +                          "redeemable_until": {
        +                            "type": "string"
        +                          }
        +                        },
        +                        "required": [
        +                          "amount_local",
        +                          "currency",
        +                          "redeemable_until"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "pricing_url": {
        +                    "default": "https://civilquants.com/pricing",
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "available_tiers"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tos_url": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "upgrade_hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "warranty_disclaimer": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          }
        +        },
        +        "required": [
        +          "request_id",
        +          "issued_at",
        +          "tier"
        +        ],
        +        "type": "object"
        +      },
        +      "data": {
        +        "default": null,
        +        "title": "Data"
        +      },
        +      "error": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        +            "properties": {
        +              "code": {
        +                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        +                "enum": [
        +                  "RATE_LIMIT_EXCEEDED",
        +                  "TIER_INSUFFICIENT",
        +                  "INVALID_INPUT",
        +                  "SCHEMA_VERSION_MISMATCH",
        +                  "SCHEMA_INVARIANT_VIOLATION",
        +                  "UPSTREAM_TIMEOUT",
        +                  "BACKEND_FAILURE",
        +                  "IP_BLOCKED",
        +                  "RESOURCE_NOT_FOUND",
        +                  "RENDER_FAILURE",
        +                  "OCR_LOW_CONFIDENCE",
        +                  "MANUAL_REVIEW_REQUIRED",
        +                  "ACCEPTANCE_REQUIRED",
        +                  "INVALID_TOKEN"
        +                ],
        +                "type": "string"
        +              },
        +              "details": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "message": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "recoverable": {
        +                "type": "boolean"
        +              },
        +              "retry_after_seconds": {
        +                "anyOf": [
        +                  {
        +                    "minimum": 0,
        +                    "type": "integer"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              }
        +            },
        +            "required": [
        +              "code",
        +              "message",
        +              "recoverable"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      }
        +    },
        +    "required": [
        +      "_meta"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedcompute_headwall_precast1 field changed
      • changedOutput schema / properties / result / anyOf
        Previous value: -[
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "_meta": {
        -        "additionalProperties": false,
        -        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        -        "properties": {
        -          "deliverables": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        -                "properties": {
        -                  "docx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "dxf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "expires_at": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  },
        -                  "pdf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "xlsx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "expires_at"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "document_id": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "issued_at": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "rate_limit_remaining": {
        -            "anyOf": [
        -              {
        -                "minimum": 0,
        -                "type": "integer"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "request_id": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "schema_version": {
        -            "const": "1.0.0",
        -            "default": "1.0.0",
        -            "type": "string"
        -          },
        -          "scope_boundary": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        -                "properties": {
        -                  "not_in_scope": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "produced": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "recommended_companions": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "type": "string"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "produced",
        -                  "not_in_scope"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tier": {
        -            "enum": [
        -              "free",
        -              "paid"
        -            ],
        -            "type": "string"
        -          },
        -          "tier_upgrade": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        -                "properties": {
        -                  "available_tiers": {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        -                      "properties": {
        -                        "billing": {
        -                          "enum": [
        -                            "one_off",
        -                            "monthly",
        -                            "annual"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "currency": {
        -                          "enum": [
        -                            "GBP",
        -                            "SGD",
        -                            "EUR",
        -                            "USD",
        -                            "CAD",
        -                            "AUD",
        -                            "NZD",
        -                            "MYR"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "display_name": {
        -                          "type": "string"
        -                        },
        -                        "price_local": {
        -                          "type": "number"
        -                        },
        -                        "tier_slug": {
        -                          "enum": [
        -                            "7_day_pass",
        -                            "solo",
        -                            "studio",
        -                            "practice"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "unlock_summary": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "tier_slug",
        -                        "display_name",
        -                        "price_local",
        -                        "currency",
        -                        "billing",
        -                        "unlock_summary"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "current_tier": {
        -                    "const": "free",
        -                    "default": "free",
        -                    "type": "string"
        -                  },
        -                  "pass_credit": {
        -                    "anyOf": [
        -                      {
        -                        "additionalProperties": false,
        -                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        -                        "properties": {
        -                          "amount_local": {
        -                            "type": "number"
        -                          },
        -                          "applies_to": {
        -                            "const": "solo_first_month",
        -                            "default": "solo_first_month",
        -                            "type": "string"
        -                          },
        -                          "currency": {
        -                            "type": "string"
        -                          },
        -                          "redeemable_until": {
        -                            "type": "string"
        -                          }
        -                        },
        -                        "required": [
        -                          "amount_local",
        -                          "currency",
        -                          "redeemable_until"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "pricing_url": {
        -                    "default": "https://civilquants.com/pricing",
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "available_tiers"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tos_url": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "upgrade_hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "warranty_disclaimer": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          }
        -        },
        -        "required": [
        -          "request_id",
        -          "issued_at",
        -          "tier"
        -        ],
        -        "type": "object"
        -      },
        -      "data": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Schema § 1.1 — the typed payload returned inside `MCPResponse[ComputeResult]`.\n\nFree-tier responses omit `drawings` (the downloadable CAD artefact\npointers — the paid differentiator); the bridge enforces this. The\n`audit_trail` and the inline `drawing` preview are present on BOTH tiers\n(V1 ALIGN / 60th-fire D + C). `text_summary` is bounded to 2000 chars —\nkeeps the LLM-facing summary token-cheap and forces longer narrative into\nBoQ row descriptions where it belongs. `warnings` is the non-fatal\ngeometry advisory list (both tiers).",
        -            "properties": {
        -              "assembly_slug": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "audit_trail": {
        -                "anyOf": [
        -                  {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.7 — paid-tier audit-trail entry.\n\nOne entry per BoQ row; `boq_row_index` ties to the row position in\n`ComputeResult.boq_rows`. `derivation` is the human-readable formula\nwalk-through; `formula` is the optional formal expression.",
        -                      "properties": {
        -                        "boq_row_index": {
        -                          "minimum": 0,
        -                          "type": "integer"
        -                        },
        -                        "derivation": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "formula": {
        -                          "anyOf": [
        -                            {
        -                              "type": "string"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ],
        -                          "default": null
        -                        },
        -                        "id": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "parameters_referenced": {
        -                          "items": {
        -                            "type": "string"
        -                          },
        -                          "type": "array"
        -                        }
        -                      },
        -                      "required": [
        -                        "id",
        -                        "boq_row_index",
        -                        "derivation"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "boq_rows": {
        -                "items": {
        -                  "additionalProperties": false,
        -                  "description": "Schema § 1.3 — a single bill row in the requested standard's format.\n\n`description` is the non-verbatim functional description per spec § 13.9 /\n§ 15 invariant — NEVER reproduces a standard's verbatim clause text.\n`rate` / `amount` ship null because rates are commodity data the customer\nowns; the engine's job is the measurement, not the pricing.",
        -                  "properties": {
        -                    "amount": {
        -                      "anyOf": [
        -                        {
        -                          "type": "number"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "attribution": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "audit_id": {
        -                      "anyOf": [
        -                        {
        -                          "type": "string"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "description": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "quantity": {
        -                      "minimum": 0,
        -                      "type": "number"
        -                    },
        -                    "rate": {
        -                      "anyOf": [
        -                        {
        -                          "type": "number"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "unit": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "work_section": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    }
        -                  },
        -                  "required": [
        -                    "work_section",
        -                    "description",
        -                    "quantity",
        -                    "unit",
        -                    "attribution"
        -                  ],
        -                  "type": "object"
        -                },
        -                "type": "array"
        -              },
        -              "drawing": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": false,
        -                    "description": "Schema § 1.6a — inline server-rendered SVG preview of the geometry.\n\nThe MCP mirror of the web ``/compute`` response's ``drawing`` field\n(``api.schemas.compute.DrawingRef``): the same on-screen dimensioned\ndrawing both tiers see in the workspace, surfaced on the MCP compute\nresponse so a chat client can render it inline (60th-fire item C). This\nis the on-screen preview — present on BOTH tiers per the free/paid\nboundary; the downloadable CAD artefacts (DXF / dimensioned PDF) remain\nthe paid differentiator via the export tools.\n\nDefined here rather than importing ``DrawingRef`` because the web\n``schemas`` package imports back into this module (``schemas.render``),\nso reusing it would create an import cycle — the MCP wire contract keeps\nits own copy, the same pattern as ``BoQRow`` / ``DrawingReference``.",
        -                    "properties": {
        -                      "entity_count": {
        -                        "minimum": 0,
        -                        "type": "integer"
        -                      },
        -                      "svg_b64": {
        -                        "minLength": 1,
        -                        "type": "string"
        -                      },
        -                      "unit_of_drawing": {
        -                        "const": "m",
        -                        "default": "m",
        -                        "type": "string"
        -                      },
        -                      "viewbox_height": {
        -                        "exclusiveMinimum": 0,
        -                        "type": "number"
        -                      },
        -                      "viewbox_width": {
        -                        "exclusiveMinimum": 0,
        -                        "type": "number"
        -                      },
        -                      "viewbox_x": {
        -                        "type": "number"
        -                      },
        -                      "viewbox_y": {
        -                        "type": "number"
        -                      }
        -                    },
        -                    "required": [
        -                      "svg_b64",
        -                      "viewbox_x",
        -                      "viewbox_y",
        -                      "viewbox_width",
        -                      "viewbox_height",
        -                      "entity_count"
        -                    ],
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "drawings": {
        -                "anyOf": [
        -                  {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.6 — paid-tier drawing artefact pointer.\n\n`url` is an R2-signed URL; expiry is carried in `_meta.deliverables.expires_at`\non the envelope (not duplicated here). `layers` is DXF-only; PDF/SVG\ncallers omit it.",
        -                      "properties": {
        -                        "drawing_type": {
        -                          "enum": [
        -                            "section",
        -                            "plan",
        -                            "elevation",
        -                            "isometric",
        -                            "detail"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "format": {
        -                          "enum": [
        -                            "DXF",
        -                            "PDF",
        -                            "SVG"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "layers": {
        -                          "anyOf": [
        -                            {
        -                              "items": {
        -                                "type": "string"
        -                              },
        -                              "type": "array"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ],
        -                          "default": null
        -                        },
        -                        "scale": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "sheet_size": {
        -                          "enum": [
        -                            "A1",
        -                            "A2",
        -                            "A3",
        -                            "A4"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "url": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "drawing_type",
        -                        "format",
        -                        "url",
        -                        "sheet_size",
        -                        "scale"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "parameters_used": {
        -                "additionalProperties": false,
        -                "description": "Schema § 1.2 — the parameter snapshot the engine actually used.\n\nSplits user-supplied values from engine defaults so customers can see\nwhich numbers came from them and which the engine filled in. Every\ndefaulted parameter SHOULD have a corresponding entry in `assumptions`\n— the bridge layer enforces this when wrapping engine output.",
        -                "properties": {
        -                  "assumptions": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "engine_defaults": {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  "resolved_from_description": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "additionalProperties": false,
        -                          "description": "Schema § 1.2 — a parameter resolved by the forgiving-input layer.\n\nPopulated by the Track B-Forgiving Haiku-4.5 resolution pass; until that\nlayer lands, instances are constructed only by tests. `source` distinguishes\nthe resolution path so customers can audit which fields were inferred.",
        -                          "properties": {
        -                            "confidence": {
        -                              "anyOf": [
        -                                {
        -                                  "enum": [
        -                                    "high",
        -                                    "medium",
        -                                    "low"
        -                                  ],
        -                                  "type": "string"
        -                                },
        -                                {
        -                                  "type": "null"
        -                                }
        -                              ],
        -                              "default": null
        -                            },
        -                            "field_name": {
        -                              "minLength": 1,
        -                              "type": "string"
        -                            },
        -                            "resolved_value": {},
        -                            "source": {
        -                              "enum": [
        -                                "description_field",
        -                                "haiku_resolution",
        -                                "engine_default"
        -                              ],
        -                              "type": "string"
        -                            }
        -                          },
        -                          "required": [
        -                            "field_name",
        -                            "resolved_value",
        -                            "source"
        -                          ],
        -                          "type": "object"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "user_supplied": {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  }
        -                },
        -                "type": "object"
        -              },
        -              "standard": {
        -                "enum": [
        -                  "CESMM4",
        -                  "NRM2",
        -                  "SMM7",
        -                  "MMHW"
        -                ],
        -                "type": "string"
        -              },
        -              "text_summary": {
        -                "maxLength": 2000,
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "totals_summary": {
        -                "additionalProperties": false,
        -                "description": "Schema § 1.4 — totals_summary as a typed wrapper around the free-form dict.\n\nWire shape is a flat object (`{\"concrete_m3\": {...}, \"rebar_t\": {...}}`).\nWe model it as `RootModel`-equivalent via `model_config(extra=\"allow\")`\n+ a single `__root__`-style `entries` dict. Pydantic v2 recommends\n`RootModel` for free-form roots; using a wrapper class keeps the import\nsurface uniform with the rest of this module.",
        -                "properties": {
        -                  "entries": {
        -                    "additionalProperties": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.4 — single material/work-class total entry.",
        -                      "properties": {
        -                        "quantity": {
        -                          "minimum": 0,
        -                          "type": "number"
        -                        },
        -                        "unit": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "quantity",
        -                        "unit"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "object"
        -                  }
        -                },
        -                "type": "object"
        -              },
        -              "warnings": {
        -                "items": {
        -                  "additionalProperties": false,
        -                  "description": "Schema § 1.8 — a non-fatal geometry advisory (56th-fire T2).\n\nThe wire projection of the engine's `core.GeometryWarning`. Advisory only:\na warning NEVER changes a measured quantity — it flags geometry that is\nvalid but likely a mistake (e.g. a stale dependent-height default). Present\non BOTH tiers — a correctness/safety signal, not a paid feature.",
        -                  "properties": {
        -                    "affected_params": {
        -                      "items": {
        -                        "type": "string"
        -                      },
        -                      "type": "array"
        -                    },
        -                    "code": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "detail": {
        -                      "additionalProperties": {
        -                        "type": "number"
        -                      },
        -                      "type": "object"
        -                    },
        -                    "message": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "severity": {
        -                      "enum": [
        -                        "info",
        -                        "advisory",
        -                        "caution"
        -                      ],
        -                      "type": "string"
        -                    }
        -                  },
        -                  "required": [
        -                    "code",
        -                    "severity",
        -                    "message"
        -                  ],
        -                  "type": "object"
        -                },
        -                "type": "array"
        -              }
        -            },
        -            "required": [
        -              "assembly_slug",
        -              "standard",
        -              "parameters_used",
        -              "boq_rows",
        -              "totals_summary",
        -              "text_summary"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      },
        -      "error": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        -            "properties": {
        -              "code": {
        -                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        -                "enum": [
        -                  "RATE_LIMIT_EXCEEDED",
        -                  "TIER_INSUFFICIENT",
        -                  "INVALID_INPUT",
        -                  "SCHEMA_VERSION_MISMATCH",
        -                  "SCHEMA_INVARIANT_VIOLATION",
        -                  "UPSTREAM_TIMEOUT",
        -                  "BACKEND_FAILURE",
        -                  "IP_BLOCKED",
        -                  "RESOURCE_NOT_FOUND",
        -                  "RENDER_FAILURE",
        -                  "OCR_LOW_CONFIDENCE",
        -                  "MANUAL_REVIEW_REQUIRED",
        -                  "ACCEPTANCE_REQUIRED",
        -                  "INVALID_TOKEN"
        -                ],
        -                "type": "string"
        -              },
        -              "details": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "message": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "recoverable": {
        -                "type": "boolean"
        -              },
        -              "retry_after_seconds": {
        -                "anyOf": [
        -                  {
        -                    "minimum": 0,
        -                    "type": "integer"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              }
        -            },
        -            "required": [
        -              "code",
        -              "message",
        -              "recoverable"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      }
        -    },
        -    "required": [
        -      "_meta"
        -    ],
        -    "type": "object"
        -  },
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "_meta": {
        -        "additionalProperties": false,
        -        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        -        "properties": {
        -          "deliverables": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        -                "properties": {
        -                  "docx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "dxf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "expires_at": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  },
        -                  "pdf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "xlsx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "expires_at"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "document_id": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "issued_at": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "rate_limit_remaining": {
        -            "anyOf": [
        -              {
        -                "minimum": 0,
        -                "type": "integer"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "request_id": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "schema_version": {
        -            "const": "1.0.0",
        -            "default": "1.0.0",
        -            "type": "string"
        -          },
        -          "scope_boundary": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        -                "properties": {
        -                  "not_in_scope": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "produced": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "recommended_companions": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "type": "string"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "produced",
        -                  "not_in_scope"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tier": {
        -            "enum": [
        -              "free",
        -              "paid"
        -            ],
        -            "type": "string"
        -          },
        -          "tier_upgrade": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        -                "properties": {
        -                  "available_tiers": {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        -                      "properties": {
        -                        "billing": {
        -                          "enum": [
        -                            "one_off",
        -                            "monthly",
        -                            "annual"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "currency": {
        -                          "enum": [
        -                            "GBP",
        -                            "SGD",
        -                            "EUR",
        -                            "USD",
        -                            "CAD",
        -                            "AUD",
        -                            "NZD",
        -                            "MYR"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "display_name": {
        -                          "type": "string"
        -                        },
        -                        "price_local": {
        -                          "type": "number"
        -                        },
        -                        "tier_slug": {
        -                          "enum": [
        -                            "7_day_pass",
        -                            "solo",
        -                            "studio",
        -                            "practice"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "unlock_summary": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "tier_slug",
        -                        "display_name",
        -                        "price_local",
        -                        "currency",
        -                        "billing",
        -                        "unlock_summary"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "current_tier": {
        -                    "const": "free",
        -                    "default": "free",
        -                    "type": "string"
        -                  },
        -                  "pass_credit": {
        -                    "anyOf": [
        -                      {
        -                        "additionalProperties": false,
        -                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        -                        "properties": {
        -                          "amount_local": {
        -                            "type": "number"
        -                          },
        -                          "applies_to": {
        -                            "const": "solo_first_month",
        -                            "default": "solo_first_month",
        -                            "type": "string"
        -                          },
        -                          "currency": {
        -                            "type": "string"
        -                          },
        -                          "redeemable_until": {
        -                            "type": "string"
        -                          }
        -                        },
        -                        "required": [
        -                          "amount_local",
        -                          "currency",
        -                          "redeemable_until"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "pricing_url": {
        -                    "default": "https://civilquants.com/pricing",
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "available_tiers"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tos_url": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "upgrade_hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "warranty_disclaimer": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          }
        -        },
        -        "required": [
        -          "request_id",
        -          "issued_at",
        -          "tier"
        -        ],
        -        "type": "object"
        -      },
        -      "data": {
        -        "default": null,
        -        "title": "Data"
        -      },
        -      "error": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        -            "properties": {
        -              "code": {
        -                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        -                "enum": [
        -                  "RATE_LIMIT_EXCEEDED",
        -                  "TIER_INSUFFICIENT",
        -                  "INVALID_INPUT",
        -                  "SCHEMA_VERSION_MISMATCH",
        -                  "SCHEMA_INVARIANT_VIOLATION",
        -                  "UPSTREAM_TIMEOUT",
        -                  "BACKEND_FAILURE",
        -                  "IP_BLOCKED",
        -                  "RESOURCE_NOT_FOUND",
        -                  "RENDER_FAILURE",
        -                  "OCR_LOW_CONFIDENCE",
        -                  "MANUAL_REVIEW_REQUIRED",
        -                  "ACCEPTANCE_REQUIRED",
        -                  "INVALID_TOKEN"
        -                ],
        -                "type": "string"
        -              },
        -              "details": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "message": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "recoverable": {
        -                "type": "boolean"
        -              },
        -              "retry_after_seconds": {
        -                "anyOf": [
        -                  {
        -                    "minimum": 0,
        -                    "type": "integer"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              }
        -            },
        -            "required": [
        -              "code",
        -              "message",
        -              "recoverable"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      }
        -    },
        -    "required": [
        -      "_meta"
        -    ],
        -    "type": "object"
        -  }
        -]New value: +[
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "_meta": {
        +        "additionalProperties": false,
        +        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        +        "properties": {
        +          "deliverables": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        +                "properties": {
        +                  "docx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "dxf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "expires_at": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  },
        +                  "pdf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "xlsx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "expires_at"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "document_id": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "issued_at": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "rate_limit_remaining": {
        +            "anyOf": [
        +              {
        +                "minimum": 0,
        +                "type": "integer"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "request_id": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "schema_version": {
        +            "const": "1.0.0",
        +            "default": "1.0.0",
        +            "type": "string"
        +          },
        +          "scope_boundary": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        +                "properties": {
        +                  "not_in_scope": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "produced": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "recommended_companions": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "type": "string"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "produced",
        +                  "not_in_scope"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tier": {
        +            "enum": [
        +              "free",
        +              "paid"
        +            ],
        +            "type": "string"
        +          },
        +          "tier_upgrade": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        +                "properties": {
        +                  "available_tiers": {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        +                      "properties": {
        +                        "billing": {
        +                          "enum": [
        +                            "one_off",
        +                            "monthly",
        +                            "annual"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "currency": {
        +                          "enum": [
        +                            "GBP",
        +                            "SGD",
        +                            "EUR",
        +                            "USD",
        +                            "CAD",
        +                            "AUD",
        +                            "NZD",
        +                            "MYR"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "display_name": {
        +                          "type": "string"
        +                        },
        +                        "price_local": {
        +                          "type": "number"
        +                        },
        +                        "tier_slug": {
        +                          "enum": [
        +                            "7_day_pass",
        +                            "solo",
        +                            "studio",
        +                            "practice"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "unlock_summary": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "tier_slug",
        +                        "display_name",
        +                        "price_local",
        +                        "currency",
        +                        "billing",
        +                        "unlock_summary"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "current_tier": {
        +                    "const": "free",
        +                    "default": "free",
        +                    "type": "string"
        +                  },
        +                  "pass_credit": {
        +                    "anyOf": [
        +                      {
        +                        "additionalProperties": false,
        +                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        +                        "properties": {
        +                          "amount_local": {
        +                            "type": "number"
        +                          },
        +                          "applies_to": {
        +                            "const": "solo_first_month",
        +                            "default": "solo_first_month",
        +                            "type": "string"
        +                          },
        +                          "currency": {
        +                            "type": "string"
        +                          },
        +                          "redeemable_until": {
        +                            "type": "string"
        +                          }
        +                        },
        +                        "required": [
        +                          "amount_local",
        +                          "currency",
        +                          "redeemable_until"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "pricing_url": {
        +                    "default": "https://civilquants.com/pricing",
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "available_tiers"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tos_url": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "upgrade_hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "warranty_disclaimer": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          }
        +        },
        +        "required": [
        +          "request_id",
        +          "issued_at",
        +          "tier"
        +        ],
        +        "type": "object"
        +      },
        +      "data": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Schema § 1.1 — the typed payload returned inside `MCPResponse[ComputeResult]`.\n\nFree-tier responses omit `drawings` (the downloadable CAD artefact\npointers — the paid differentiator); the bridge enforces this. The\n`audit_trail` and the inline `drawing` preview are present on BOTH tiers\n(V1 ALIGN / 60th-fire D + C). `text_summary` is bounded to 2000 chars —\nkeeps the LLM-facing summary token-cheap and forces longer narrative into\nBoQ row descriptions where it belongs. `warnings` is the non-fatal\ngeometry advisory list (both tiers).",
        +            "properties": {
        +              "assembly_slug": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "audit_trail": {
        +                "anyOf": [
        +                  {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.7 — paid-tier audit-trail entry.\n\nOne entry per BoQ row; `boq_row_index` ties to the row position in\n`ComputeResult.boq_rows`. `derivation` is the human-readable formula\nwalk-through; `formula` is the optional formal expression.",
        +                      "properties": {
        +                        "boq_row_index": {
        +                          "minimum": 0,
        +                          "type": "integer"
        +                        },
        +                        "derivation": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "formula": {
        +                          "anyOf": [
        +                            {
        +                              "type": "string"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ],
        +                          "default": null
        +                        },
        +                        "id": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "parameters_referenced": {
        +                          "items": {
        +                            "type": "string"
        +                          },
        +                          "type": "array"
        +                        }
        +                      },
        +                      "required": [
        +                        "id",
        +                        "boq_row_index",
        +                        "derivation"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "boq_rows": {
        +                "items": {
        +                  "additionalProperties": false,
        +                  "description": "Schema § 1.3 — a single bill row in the requested standard's format.\n\n`description` is the non-verbatim functional description per spec § 13.9 /\n§ 15 invariant — NEVER reproduces a standard's verbatim clause text.\n`rate` / `amount` ship null because rates are commodity data the customer\nowns; the engine's job is the measurement, not the pricing.",
        +                  "properties": {
        +                    "amount": {
        +                      "anyOf": [
        +                        {
        +                          "type": "number"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "attribution": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "audit_id": {
        +                      "anyOf": [
        +                        {
        +                          "type": "string"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "description": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "quantity": {
        +                      "minimum": 0,
        +                      "type": "number"
        +                    },
        +                    "rate": {
        +                      "anyOf": [
        +                        {
        +                          "type": "number"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "unit": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "work_section": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    }
        +                  },
        +                  "required": [
        +                    "work_section",
        +                    "description",
        +                    "quantity",
        +                    "unit",
        +                    "attribution"
        +                  ],
        +                  "type": "object"
        +                },
        +                "type": "array"
        +              },
        +              "drawing": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": false,
        +                    "description": "Schema § 1.6a — inline server-rendered SVG preview of the geometry.\n\nThe MCP mirror of the web ``/compute`` response's ``drawing`` field\n(``api.schemas.compute.DrawingRef``): the same on-screen dimensioned\ndrawing both tiers see in the workspace, surfaced on the MCP compute\nresponse so a chat client can render it inline (60th-fire item C). This\nis the on-screen preview — present on BOTH tiers per the free/paid\nboundary; the downloadable CAD artefacts (DXF / dimensioned PDF) remain\nthe paid differentiator via the export tools.\n\nDefined here rather than importing ``DrawingRef`` because the web\n``schemas`` package imports back into this module (``schemas.render``),\nso reusing it would create an import cycle — the MCP wire contract keeps\nits own copy, the same pattern as ``BoQRow`` / ``DrawingReference``.",
        +                    "properties": {
        +                      "entity_count": {
        +                        "minimum": 0,
        +                        "type": "integer"
        +                      },
        +                      "svg_b64": {
        +                        "minLength": 1,
        +                        "type": "string"
        +                      },
        +                      "unit_of_drawing": {
        +                        "const": "m",
        +                        "default": "m",
        +                        "type": "string"
        +                      },
        +                      "viewbox_height": {
        +                        "exclusiveMinimum": 0,
        +                        "type": "number"
        +                      },
        +                      "viewbox_width": {
        +                        "exclusiveMinimum": 0,
        +                        "type": "number"
        +                      },
        +                      "viewbox_x": {
        +                        "type": "number"
        +                      },
        +                      "viewbox_y": {
        +                        "type": "number"
        +                      }
        +                    },
        +                    "required": [
        +                      "svg_b64",
        +                      "viewbox_x",
        +                      "viewbox_y",
        +                      "viewbox_width",
        +                      "viewbox_height",
        +                      "entity_count"
        +                    ],
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "drawings": {
        +                "anyOf": [
        +                  {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.6 — paid-tier drawing artefact pointer.\n\n`url` is an R2-signed URL; expiry is carried in `_meta.deliverables.expires_at`\non the envelope (not duplicated here). `layers` is DXF-only; PDF/SVG\ncallers omit it.",
        +                      "properties": {
        +                        "drawing_type": {
        +                          "enum": [
        +                            "section",
        +                            "plan",
        +                            "elevation",
        +                            "isometric",
        +                            "detail"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "format": {
        +                          "enum": [
        +                            "DXF",
        +                            "PDF",
        +                            "SVG"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "layers": {
        +                          "anyOf": [
        +                            {
        +                              "items": {
        +                                "type": "string"
        +                              },
        +                              "type": "array"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ],
        +                          "default": null
        +                        },
        +                        "scale": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "sheet_size": {
        +                          "enum": [
        +                            "A1",
        +                            "A2",
        +                            "A3",
        +                            "A4"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "url": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "drawing_type",
        +                        "format",
        +                        "url",
        +                        "sheet_size",
        +                        "scale"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "parameters_used": {
        +                "additionalProperties": false,
        +                "description": "Schema § 1.2 — the parameter snapshot the engine actually used.\n\nSplits user-supplied values from engine defaults so customers can see\nwhich numbers came from them and which the engine filled in. Every\ndefaulted parameter SHOULD have a corresponding entry in `assumptions`\n— the bridge layer enforces this when wrapping engine output.",
        +                "properties": {
        +                  "assumptions": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "engine_defaults": {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  "user_supplied": {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  }
        +                },
        +                "type": "object"
        +              },
        +              "standard": {
        +                "enum": [
        +                  "CESMM4",
        +                  "NRM2",
        +                  "SMM7",
        +                  "MMHW"
        +                ],
        +                "type": "string"
        +              },
        +              "text_summary": {
        +                "maxLength": 2000,
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "totals_summary": {
        +                "additionalProperties": false,
        +                "description": "Schema § 1.4 — totals_summary as a typed wrapper around the free-form dict.\n\nWire shape is a flat object (`{\"concrete_m3\": {...}, \"rebar_t\": {...}}`).\nWe model it as `RootModel`-equivalent via `model_config(extra=\"allow\")`\n+ a single `__root__`-style `entries` dict. Pydantic v2 recommends\n`RootModel` for free-form roots; using a wrapper class keeps the import\nsurface uniform with the rest of this module.",
        +                "properties": {
        +                  "entries": {
        +                    "additionalProperties": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.4 — single material/work-class total entry.",
        +                      "properties": {
        +                        "quantity": {
        +                          "minimum": 0,
        +                          "type": "number"
        +                        },
        +                        "unit": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "quantity",
        +                        "unit"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "object"
        +                  }
        +                },
        +                "type": "object"
        +              },
        +              "warnings": {
        +                "items": {
        +                  "additionalProperties": false,
        +                  "description": "Schema § 1.8 — a non-fatal geometry advisory (56th-fire T2).\n\nThe wire projection of the engine's `core.GeometryWarning`. Advisory only:\na warning NEVER changes a measured quantity — it flags geometry that is\nvalid but likely a mistake (e.g. a stale dependent-height default). Present\non BOTH tiers — a correctness/safety signal, not a paid feature.",
        +                  "properties": {
        +                    "affected_params": {
        +                      "items": {
        +                        "type": "string"
        +                      },
        +                      "type": "array"
        +                    },
        +                    "code": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "detail": {
        +                      "additionalProperties": {
        +                        "type": "number"
        +                      },
        +                      "type": "object"
        +                    },
        +                    "message": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "severity": {
        +                      "enum": [
        +                        "info",
        +                        "advisory",
        +                        "caution"
        +                      ],
        +                      "type": "string"
        +                    }
        +                  },
        +                  "required": [
        +                    "code",
        +                    "severity",
        +                    "message"
        +                  ],
        +                  "type": "object"
        +                },
        +                "type": "array"
        +              }
        +            },
        +            "required": [
        +              "assembly_slug",
        +              "standard",
        +              "parameters_used",
        +              "boq_rows",
        +              "totals_summary",
        +              "text_summary"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      },
        +      "error": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        +            "properties": {
        +              "code": {
        +                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        +                "enum": [
        +                  "RATE_LIMIT_EXCEEDED",
        +                  "TIER_INSUFFICIENT",
        +                  "INVALID_INPUT",
        +                  "SCHEMA_VERSION_MISMATCH",
        +                  "SCHEMA_INVARIANT_VIOLATION",
        +                  "UPSTREAM_TIMEOUT",
        +                  "BACKEND_FAILURE",
        +                  "IP_BLOCKED",
        +                  "RESOURCE_NOT_FOUND",
        +                  "RENDER_FAILURE",
        +                  "OCR_LOW_CONFIDENCE",
        +                  "MANUAL_REVIEW_REQUIRED",
        +                  "ACCEPTANCE_REQUIRED",
        +                  "INVALID_TOKEN"
        +                ],
        +                "type": "string"
        +              },
        +              "details": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "message": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "recoverable": {
        +                "type": "boolean"
        +              },
        +              "retry_after_seconds": {
        +                "anyOf": [
        +                  {
        +                    "minimum": 0,
        +                    "type": "integer"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              }
        +            },
        +            "required": [
        +              "code",
        +              "message",
        +              "recoverable"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      }
        +    },
        +    "required": [
        +      "_meta"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "_meta": {
        +        "additionalProperties": false,
        +        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        +        "properties": {
        +          "deliverables": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        +                "properties": {
        +                  "docx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "dxf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "expires_at": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  },
        +                  "pdf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "xlsx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "expires_at"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "document_id": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "issued_at": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "rate_limit_remaining": {
        +            "anyOf": [
        +              {
        +                "minimum": 0,
        +                "type": "integer"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "request_id": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "schema_version": {
        +            "const": "1.0.0",
        +            "default": "1.0.0",
        +            "type": "string"
        +          },
        +          "scope_boundary": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        +                "properties": {
        +                  "not_in_scope": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "produced": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "recommended_companions": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "type": "string"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "produced",
        +                  "not_in_scope"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tier": {
        +            "enum": [
        +              "free",
        +              "paid"
        +            ],
        +            "type": "string"
        +          },
        +          "tier_upgrade": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        +                "properties": {
        +                  "available_tiers": {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        +                      "properties": {
        +                        "billing": {
        +                          "enum": [
        +                            "one_off",
        +                            "monthly",
        +                            "annual"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "currency": {
        +                          "enum": [
        +                            "GBP",
        +                            "SGD",
        +                            "EUR",
        +                            "USD",
        +                            "CAD",
        +                            "AUD",
        +                            "NZD",
        +                            "MYR"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "display_name": {
        +                          "type": "string"
        +                        },
        +                        "price_local": {
        +                          "type": "number"
        +                        },
        +                        "tier_slug": {
        +                          "enum": [
        +                            "7_day_pass",
        +                            "solo",
        +                            "studio",
        +                            "practice"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "unlock_summary": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "tier_slug",
        +                        "display_name",
        +                        "price_local",
        +                        "currency",
        +                        "billing",
        +                        "unlock_summary"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "current_tier": {
        +                    "const": "free",
        +                    "default": "free",
        +                    "type": "string"
        +                  },
        +                  "pass_credit": {
        +                    "anyOf": [
        +                      {
        +                        "additionalProperties": false,
        +                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        +                        "properties": {
        +                          "amount_local": {
        +                            "type": "number"
        +                          },
        +                          "applies_to": {
        +                            "const": "solo_first_month",
        +                            "default": "solo_first_month",
        +                            "type": "string"
        +                          },
        +                          "currency": {
        +                            "type": "string"
        +                          },
        +                          "redeemable_until": {
        +                            "type": "string"
        +                          }
        +                        },
        +                        "required": [
        +                          "amount_local",
        +                          "currency",
        +                          "redeemable_until"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "pricing_url": {
        +                    "default": "https://civilquants.com/pricing",
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "available_tiers"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tos_url": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "upgrade_hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "warranty_disclaimer": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          }
        +        },
        +        "required": [
        +          "request_id",
        +          "issued_at",
        +          "tier"
        +        ],
        +        "type": "object"
        +      },
        +      "data": {
        +        "default": null,
        +        "title": "Data"
        +      },
        +      "error": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        +            "properties": {
        +              "code": {
        +                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        +                "enum": [
        +                  "RATE_LIMIT_EXCEEDED",
        +                  "TIER_INSUFFICIENT",
        +                  "INVALID_INPUT",
        +                  "SCHEMA_VERSION_MISMATCH",
        +                  "SCHEMA_INVARIANT_VIOLATION",
        +                  "UPSTREAM_TIMEOUT",
        +                  "BACKEND_FAILURE",
        +                  "IP_BLOCKED",
        +                  "RESOURCE_NOT_FOUND",
        +                  "RENDER_FAILURE",
        +                  "OCR_LOW_CONFIDENCE",
        +                  "MANUAL_REVIEW_REQUIRED",
        +                  "ACCEPTANCE_REQUIRED",
        +                  "INVALID_TOKEN"
        +                ],
        +                "type": "string"
        +              },
        +              "details": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "message": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "recoverable": {
        +                "type": "boolean"
        +              },
        +              "retry_after_seconds": {
        +                "anyOf": [
        +                  {
        +                    "minimum": 0,
        +                    "type": "integer"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              }
        +            },
        +            "required": [
        +              "code",
        +              "message",
        +              "recoverable"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      }
        +    },
        +    "required": [
        +      "_meta"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedcompute_highway_drainage_channel1 field changed
      • changedOutput schema / properties / result / anyOf
        Previous value: -[
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "_meta": {
        -        "additionalProperties": false,
        -        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        -        "properties": {
        -          "deliverables": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        -                "properties": {
        -                  "docx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "dxf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "expires_at": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  },
        -                  "pdf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "xlsx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "expires_at"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "document_id": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "issued_at": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "rate_limit_remaining": {
        -            "anyOf": [
        -              {
        -                "minimum": 0,
        -                "type": "integer"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "request_id": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "schema_version": {
        -            "const": "1.0.0",
        -            "default": "1.0.0",
        -            "type": "string"
        -          },
        -          "scope_boundary": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        -                "properties": {
        -                  "not_in_scope": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "produced": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "recommended_companions": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "type": "string"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "produced",
        -                  "not_in_scope"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tier": {
        -            "enum": [
        -              "free",
        -              "paid"
        -            ],
        -            "type": "string"
        -          },
        -          "tier_upgrade": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        -                "properties": {
        -                  "available_tiers": {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        -                      "properties": {
        -                        "billing": {
        -                          "enum": [
        -                            "one_off",
        -                            "monthly",
        -                            "annual"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "currency": {
        -                          "enum": [
        -                            "GBP",
        -                            "SGD",
        -                            "EUR",
        -                            "USD",
        -                            "CAD",
        -                            "AUD",
        -                            "NZD",
        -                            "MYR"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "display_name": {
        -                          "type": "string"
        -                        },
        -                        "price_local": {
        -                          "type": "number"
        -                        },
        -                        "tier_slug": {
        -                          "enum": [
        -                            "7_day_pass",
        -                            "solo",
        -                            "studio",
        -                            "practice"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "unlock_summary": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "tier_slug",
        -                        "display_name",
        -                        "price_local",
        -                        "currency",
        -                        "billing",
        -                        "unlock_summary"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "current_tier": {
        -                    "const": "free",
        -                    "default": "free",
        -                    "type": "string"
        -                  },
        -                  "pass_credit": {
        -                    "anyOf": [
        -                      {
        -                        "additionalProperties": false,
        -                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        -                        "properties": {
        -                          "amount_local": {
        -                            "type": "number"
        -                          },
        -                          "applies_to": {
        -                            "const": "solo_first_month",
        -                            "default": "solo_first_month",
        -                            "type": "string"
        -                          },
        -                          "currency": {
        -                            "type": "string"
        -                          },
        -                          "redeemable_until": {
        -                            "type": "string"
        -                          }
        -                        },
        -                        "required": [
        -                          "amount_local",
        -                          "currency",
        -                          "redeemable_until"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "pricing_url": {
        -                    "default": "https://civilquants.com/pricing",
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "available_tiers"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tos_url": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "upgrade_hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "warranty_disclaimer": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          }
        -        },
        -        "required": [
        -          "request_id",
        -          "issued_at",
        -          "tier"
        -        ],
        -        "type": "object"
        -      },
        -      "data": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Schema § 1.1 — the typed payload returned inside `MCPResponse[ComputeResult]`.\n\nFree-tier responses omit `drawings` (the downloadable CAD artefact\npointers — the paid differentiator); the bridge enforces this. The\n`audit_trail` and the inline `drawing` preview are present on BOTH tiers\n(V1 ALIGN / 60th-fire D + C). `text_summary` is bounded to 2000 chars —\nkeeps the LLM-facing summary token-cheap and forces longer narrative into\nBoQ row descriptions where it belongs. `warnings` is the non-fatal\ngeometry advisory list (both tiers).",
        -            "properties": {
        -              "assembly_slug": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "audit_trail": {
        -                "anyOf": [
        -                  {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.7 — paid-tier audit-trail entry.\n\nOne entry per BoQ row; `boq_row_index` ties to the row position in\n`ComputeResult.boq_rows`. `derivation` is the human-readable formula\nwalk-through; `formula` is the optional formal expression.",
        -                      "properties": {
        -                        "boq_row_index": {
        -                          "minimum": 0,
        -                          "type": "integer"
        -                        },
        -                        "derivation": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "formula": {
        -                          "anyOf": [
        -                            {
        -                              "type": "string"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ],
        -                          "default": null
        -                        },
        -                        "id": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "parameters_referenced": {
        -                          "items": {
        -                            "type": "string"
        -                          },
        -                          "type": "array"
        -                        }
        -                      },
        -                      "required": [
        -                        "id",
        -                        "boq_row_index",
        -                        "derivation"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "boq_rows": {
        -                "items": {
        -                  "additionalProperties": false,
        -                  "description": "Schema § 1.3 — a single bill row in the requested standard's format.\n\n`description` is the non-verbatim functional description per spec § 13.9 /\n§ 15 invariant — NEVER reproduces a standard's verbatim clause text.\n`rate` / `amount` ship null because rates are commodity data the customer\nowns; the engine's job is the measurement, not the pricing.",
        -                  "properties": {
        -                    "amount": {
        -                      "anyOf": [
        -                        {
        -                          "type": "number"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "attribution": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "audit_id": {
        -                      "anyOf": [
        -                        {
        -                          "type": "string"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "description": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "quantity": {
        -                      "minimum": 0,
        -                      "type": "number"
        -                    },
        -                    "rate": {
        -                      "anyOf": [
        -                        {
        -                          "type": "number"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "unit": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "work_section": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    }
        -                  },
        -                  "required": [
        -                    "work_section",
        -                    "description",
        -                    "quantity",
        -                    "unit",
        -                    "attribution"
        -                  ],
        -                  "type": "object"
        -                },
        -                "type": "array"
        -              },
        -              "drawing": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": false,
        -                    "description": "Schema § 1.6a — inline server-rendered SVG preview of the geometry.\n\nThe MCP mirror of the web ``/compute`` response's ``drawing`` field\n(``api.schemas.compute.DrawingRef``): the same on-screen dimensioned\ndrawing both tiers see in the workspace, surfaced on the MCP compute\nresponse so a chat client can render it inline (60th-fire item C). This\nis the on-screen preview — present on BOTH tiers per the free/paid\nboundary; the downloadable CAD artefacts (DXF / dimensioned PDF) remain\nthe paid differentiator via the export tools.\n\nDefined here rather than importing ``DrawingRef`` because the web\n``schemas`` package imports back into this module (``schemas.render``),\nso reusing it would create an import cycle — the MCP wire contract keeps\nits own copy, the same pattern as ``BoQRow`` / ``DrawingReference``.",
        -                    "properties": {
        -                      "entity_count": {
        -                        "minimum": 0,
        -                        "type": "integer"
        -                      },
        -                      "svg_b64": {
        -                        "minLength": 1,
        -                        "type": "string"
        -                      },
        -                      "unit_of_drawing": {
        -                        "const": "m",
        -                        "default": "m",
        -                        "type": "string"
        -                      },
        -                      "viewbox_height": {
        -                        "exclusiveMinimum": 0,
        -                        "type": "number"
        -                      },
        -                      "viewbox_width": {
        -                        "exclusiveMinimum": 0,
        -                        "type": "number"
        -                      },
        -                      "viewbox_x": {
        -                        "type": "number"
        -                      },
        -                      "viewbox_y": {
        -                        "type": "number"
        -                      }
        -                    },
        -                    "required": [
        -                      "svg_b64",
        -                      "viewbox_x",
        -                      "viewbox_y",
        -                      "viewbox_width",
        -                      "viewbox_height",
        -                      "entity_count"
        -                    ],
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "drawings": {
        -                "anyOf": [
        -                  {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.6 — paid-tier drawing artefact pointer.\n\n`url` is an R2-signed URL; expiry is carried in `_meta.deliverables.expires_at`\non the envelope (not duplicated here). `layers` is DXF-only; PDF/SVG\ncallers omit it.",
        -                      "properties": {
        -                        "drawing_type": {
        -                          "enum": [
        -                            "section",
        -                            "plan",
        -                            "elevation",
        -                            "isometric",
        -                            "detail"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "format": {
        -                          "enum": [
        -                            "DXF",
        -                            "PDF",
        -                            "SVG"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "layers": {
        -                          "anyOf": [
        -                            {
        -                              "items": {
        -                                "type": "string"
        -                              },
        -                              "type": "array"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ],
        -                          "default": null
        -                        },
        -                        "scale": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "sheet_size": {
        -                          "enum": [
        -                            "A1",
        -                            "A2",
        -                            "A3",
        -                            "A4"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "url": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "drawing_type",
        -                        "format",
        -                        "url",
        -                        "sheet_size",
        -                        "scale"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "parameters_used": {
        -                "additionalProperties": false,
        -                "description": "Schema § 1.2 — the parameter snapshot the engine actually used.\n\nSplits user-supplied values from engine defaults so customers can see\nwhich numbers came from them and which the engine filled in. Every\ndefaulted parameter SHOULD have a corresponding entry in `assumptions`\n— the bridge layer enforces this when wrapping engine output.",
        -                "properties": {
        -                  "assumptions": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "engine_defaults": {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  "resolved_from_description": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "additionalProperties": false,
        -                          "description": "Schema § 1.2 — a parameter resolved by the forgiving-input layer.\n\nPopulated by the Track B-Forgiving Haiku-4.5 resolution pass; until that\nlayer lands, instances are constructed only by tests. `source` distinguishes\nthe resolution path so customers can audit which fields were inferred.",
        -                          "properties": {
        -                            "confidence": {
        -                              "anyOf": [
        -                                {
        -                                  "enum": [
        -                                    "high",
        -                                    "medium",
        -                                    "low"
        -                                  ],
        -                                  "type": "string"
        -                                },
        -                                {
        -                                  "type": "null"
        -                                }
        -                              ],
        -                              "default": null
        -                            },
        -                            "field_name": {
        -                              "minLength": 1,
        -                              "type": "string"
        -                            },
        -                            "resolved_value": {},
        -                            "source": {
        -                              "enum": [
        -                                "description_field",
        -                                "haiku_resolution",
        -                                "engine_default"
        -                              ],
        -                              "type": "string"
        -                            }
        -                          },
        -                          "required": [
        -                            "field_name",
        -                            "resolved_value",
        -                            "source"
        -                          ],
        -                          "type": "object"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "user_supplied": {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  }
        -                },
        -                "type": "object"
        -              },
        -              "standard": {
        -                "enum": [
        -                  "CESMM4",
        -                  "NRM2",
        -                  "SMM7",
        -                  "MMHW"
        -                ],
        -                "type": "string"
        -              },
        -              "text_summary": {
        -                "maxLength": 2000,
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "totals_summary": {
        -                "additionalProperties": false,
        -                "description": "Schema § 1.4 — totals_summary as a typed wrapper around the free-form dict.\n\nWire shape is a flat object (`{\"concrete_m3\": {...}, \"rebar_t\": {...}}`).\nWe model it as `RootModel`-equivalent via `model_config(extra=\"allow\")`\n+ a single `__root__`-style `entries` dict. Pydantic v2 recommends\n`RootModel` for free-form roots; using a wrapper class keeps the import\nsurface uniform with the rest of this module.",
        -                "properties": {
        -                  "entries": {
        -                    "additionalProperties": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.4 — single material/work-class total entry.",
        -                      "properties": {
        -                        "quantity": {
        -                          "minimum": 0,
        -                          "type": "number"
        -                        },
        -                        "unit": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "quantity",
        -                        "unit"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "object"
        -                  }
        -                },
        -                "type": "object"
        -              },
        -              "warnings": {
        -                "items": {
        -                  "additionalProperties": false,
        -                  "description": "Schema § 1.8 — a non-fatal geometry advisory (56th-fire T2).\n\nThe wire projection of the engine's `core.GeometryWarning`. Advisory only:\na warning NEVER changes a measured quantity — it flags geometry that is\nvalid but likely a mistake (e.g. a stale dependent-height default). Present\non BOTH tiers — a correctness/safety signal, not a paid feature.",
        -                  "properties": {
        -                    "affected_params": {
        -                      "items": {
        -                        "type": "string"
        -                      },
        -                      "type": "array"
        -                    },
        -                    "code": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "detail": {
        -                      "additionalProperties": {
        -                        "type": "number"
        -                      },
        -                      "type": "object"
        -                    },
        -                    "message": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "severity": {
        -                      "enum": [
        -                        "info",
        -                        "advisory",
        -                        "caution"
        -                      ],
        -                      "type": "string"
        -                    }
        -                  },
        -                  "required": [
        -                    "code",
        -                    "severity",
        -                    "message"
        -                  ],
        -                  "type": "object"
        -                },
        -                "type": "array"
        -              }
        -            },
        -            "required": [
        -              "assembly_slug",
        -              "standard",
        -              "parameters_used",
        -              "boq_rows",
        -              "totals_summary",
        -              "text_summary"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      },
        -      "error": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        -            "properties": {
        -              "code": {
        -                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        -                "enum": [
        -                  "RATE_LIMIT_EXCEEDED",
        -                  "TIER_INSUFFICIENT",
        -                  "INVALID_INPUT",
        -                  "SCHEMA_VERSION_MISMATCH",
        -                  "SCHEMA_INVARIANT_VIOLATION",
        -                  "UPSTREAM_TIMEOUT",
        -                  "BACKEND_FAILURE",
        -                  "IP_BLOCKED",
        -                  "RESOURCE_NOT_FOUND",
        -                  "RENDER_FAILURE",
        -                  "OCR_LOW_CONFIDENCE",
        -                  "MANUAL_REVIEW_REQUIRED",
        -                  "ACCEPTANCE_REQUIRED",
        -                  "INVALID_TOKEN"
        -                ],
        -                "type": "string"
        -              },
        -              "details": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "message": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "recoverable": {
        -                "type": "boolean"
        -              },
        -              "retry_after_seconds": {
        -                "anyOf": [
        -                  {
        -                    "minimum": 0,
        -                    "type": "integer"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              }
        -            },
        -            "required": [
        -              "code",
        -              "message",
        -              "recoverable"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      }
        -    },
        -    "required": [
        -      "_meta"
        -    ],
        -    "type": "object"
        -  },
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "_meta": {
        -        "additionalProperties": false,
        -        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        -        "properties": {
        -          "deliverables": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        -                "properties": {
        -                  "docx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "dxf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "expires_at": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  },
        -                  "pdf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "xlsx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "expires_at"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "document_id": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "issued_at": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "rate_limit_remaining": {
        -            "anyOf": [
        -              {
        -                "minimum": 0,
        -                "type": "integer"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "request_id": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "schema_version": {
        -            "const": "1.0.0",
        -            "default": "1.0.0",
        -            "type": "string"
        -          },
        -          "scope_boundary": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        -                "properties": {
        -                  "not_in_scope": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "produced": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "recommended_companions": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "type": "string"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "produced",
        -                  "not_in_scope"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tier": {
        -            "enum": [
        -              "free",
        -              "paid"
        -            ],
        -            "type": "string"
        -          },
        -          "tier_upgrade": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        -                "properties": {
        -                  "available_tiers": {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        -                      "properties": {
        -                        "billing": {
        -                          "enum": [
        -                            "one_off",
        -                            "monthly",
        -                            "annual"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "currency": {
        -                          "enum": [
        -                            "GBP",
        -                            "SGD",
        -                            "EUR",
        -                            "USD",
        -                            "CAD",
        -                            "AUD",
        -                            "NZD",
        -                            "MYR"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "display_name": {
        -                          "type": "string"
        -                        },
        -                        "price_local": {
        -                          "type": "number"
        -                        },
        -                        "tier_slug": {
        -                          "enum": [
        -                            "7_day_pass",
        -                            "solo",
        -                            "studio",
        -                            "practice"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "unlock_summary": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "tier_slug",
        -                        "display_name",
        -                        "price_local",
        -                        "currency",
        -                        "billing",
        -                        "unlock_summary"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "current_tier": {
        -                    "const": "free",
        -                    "default": "free",
        -                    "type": "string"
        -                  },
        -                  "pass_credit": {
        -                    "anyOf": [
        -                      {
        -                        "additionalProperties": false,
        -                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        -                        "properties": {
        -                          "amount_local": {
        -                            "type": "number"
        -                          },
        -                          "applies_to": {
        -                            "const": "solo_first_month",
        -                            "default": "solo_first_month",
        -                            "type": "string"
        -                          },
        -                          "currency": {
        -                            "type": "string"
        -                          },
        -                          "redeemable_until": {
        -                            "type": "string"
        -                          }
        -                        },
        -                        "required": [
        -                          "amount_local",
        -                          "currency",
        -                          "redeemable_until"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "pricing_url": {
        -                    "default": "https://civilquants.com/pricing",
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "available_tiers"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tos_url": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "upgrade_hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "warranty_disclaimer": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          }
        -        },
        -        "required": [
        -          "request_id",
        -          "issued_at",
        -          "tier"
        -        ],
        -        "type": "object"
        -      },
        -      "data": {
        -        "default": null,
        -        "title": "Data"
        -      },
        -      "error": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        -            "properties": {
        -              "code": {
        -                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        -                "enum": [
        -                  "RATE_LIMIT_EXCEEDED",
        -                  "TIER_INSUFFICIENT",
        -                  "INVALID_INPUT",
        -                  "SCHEMA_VERSION_MISMATCH",
        -                  "SCHEMA_INVARIANT_VIOLATION",
        -                  "UPSTREAM_TIMEOUT",
        -                  "BACKEND_FAILURE",
        -                  "IP_BLOCKED",
        -                  "RESOURCE_NOT_FOUND",
        -                  "RENDER_FAILURE",
        -                  "OCR_LOW_CONFIDENCE",
        -                  "MANUAL_REVIEW_REQUIRED",
        -                  "ACCEPTANCE_REQUIRED",
        -                  "INVALID_TOKEN"
        -                ],
        -                "type": "string"
        -              },
        -              "details": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "message": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "recoverable": {
        -                "type": "boolean"
        -              },
        -              "retry_after_seconds": {
        -                "anyOf": [
        -                  {
        -                    "minimum": 0,
        -                    "type": "integer"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              }
        -            },
        -            "required": [
        -              "code",
        -              "message",
        -              "recoverable"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      }
        -    },
        -    "required": [
        -      "_meta"
        -    ],
        -    "type": "object"
        -  }
        -]New value: +[
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "_meta": {
        +        "additionalProperties": false,
        +        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        +        "properties": {
        +          "deliverables": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        +                "properties": {
        +                  "docx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "dxf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "expires_at": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  },
        +                  "pdf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "xlsx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "expires_at"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "document_id": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "issued_at": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "rate_limit_remaining": {
        +            "anyOf": [
        +              {
        +                "minimum": 0,
        +                "type": "integer"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "request_id": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "schema_version": {
        +            "const": "1.0.0",
        +            "default": "1.0.0",
        +            "type": "string"
        +          },
        +          "scope_boundary": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        +                "properties": {
        +                  "not_in_scope": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "produced": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "recommended_companions": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "type": "string"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "produced",
        +                  "not_in_scope"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tier": {
        +            "enum": [
        +              "free",
        +              "paid"
        +            ],
        +            "type": "string"
        +          },
        +          "tier_upgrade": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        +                "properties": {
        +                  "available_tiers": {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        +                      "properties": {
        +                        "billing": {
        +                          "enum": [
        +                            "one_off",
        +                            "monthly",
        +                            "annual"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "currency": {
        +                          "enum": [
        +                            "GBP",
        +                            "SGD",
        +                            "EUR",
        +                            "USD",
        +                            "CAD",
        +                            "AUD",
        +                            "NZD",
        +                            "MYR"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "display_name": {
        +                          "type": "string"
        +                        },
        +                        "price_local": {
        +                          "type": "number"
        +                        },
        +                        "tier_slug": {
        +                          "enum": [
        +                            "7_day_pass",
        +                            "solo",
        +                            "studio",
        +                            "practice"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "unlock_summary": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "tier_slug",
        +                        "display_name",
        +                        "price_local",
        +                        "currency",
        +                        "billing",
        +                        "unlock_summary"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "current_tier": {
        +                    "const": "free",
        +                    "default": "free",
        +                    "type": "string"
        +                  },
        +                  "pass_credit": {
        +                    "anyOf": [
        +                      {
        +                        "additionalProperties": false,
        +                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        +                        "properties": {
        +                          "amount_local": {
        +                            "type": "number"
        +                          },
        +                          "applies_to": {
        +                            "const": "solo_first_month",
        +                            "default": "solo_first_month",
        +                            "type": "string"
        +                          },
        +                          "currency": {
        +                            "type": "string"
        +                          },
        +                          "redeemable_until": {
        +                            "type": "string"
        +                          }
        +                        },
        +                        "required": [
        +                          "amount_local",
        +                          "currency",
        +                          "redeemable_until"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "pricing_url": {
        +                    "default": "https://civilquants.com/pricing",
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "available_tiers"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tos_url": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "upgrade_hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "warranty_disclaimer": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          }
        +        },
        +        "required": [
        +          "request_id",
        +          "issued_at",
        +          "tier"
        +        ],
        +        "type": "object"
        +      },
        +      "data": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Schema § 1.1 — the typed payload returned inside `MCPResponse[ComputeResult]`.\n\nFree-tier responses omit `drawings` (the downloadable CAD artefact\npointers — the paid differentiator); the bridge enforces this. The\n`audit_trail` and the inline `drawing` preview are present on BOTH tiers\n(V1 ALIGN / 60th-fire D + C). `text_summary` is bounded to 2000 chars —\nkeeps the LLM-facing summary token-cheap and forces longer narrative into\nBoQ row descriptions where it belongs. `warnings` is the non-fatal\ngeometry advisory list (both tiers).",
        +            "properties": {
        +              "assembly_slug": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "audit_trail": {
        +                "anyOf": [
        +                  {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.7 — paid-tier audit-trail entry.\n\nOne entry per BoQ row; `boq_row_index` ties to the row position in\n`ComputeResult.boq_rows`. `derivation` is the human-readable formula\nwalk-through; `formula` is the optional formal expression.",
        +                      "properties": {
        +                        "boq_row_index": {
        +                          "minimum": 0,
        +                          "type": "integer"
        +                        },
        +                        "derivation": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "formula": {
        +                          "anyOf": [
        +                            {
        +                              "type": "string"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ],
        +                          "default": null
        +                        },
        +                        "id": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "parameters_referenced": {
        +                          "items": {
        +                            "type": "string"
        +                          },
        +                          "type": "array"
        +                        }
        +                      },
        +                      "required": [
        +                        "id",
        +                        "boq_row_index",
        +                        "derivation"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "boq_rows": {
        +                "items": {
        +                  "additionalProperties": false,
        +                  "description": "Schema § 1.3 — a single bill row in the requested standard's format.\n\n`description` is the non-verbatim functional description per spec § 13.9 /\n§ 15 invariant — NEVER reproduces a standard's verbatim clause text.\n`rate` / `amount` ship null because rates are commodity data the customer\nowns; the engine's job is the measurement, not the pricing.",
        +                  "properties": {
        +                    "amount": {
        +                      "anyOf": [
        +                        {
        +                          "type": "number"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "attribution": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "audit_id": {
        +                      "anyOf": [
        +                        {
        +                          "type": "string"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "description": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "quantity": {
        +                      "minimum": 0,
        +                      "type": "number"
        +                    },
        +                    "rate": {
        +                      "anyOf": [
        +                        {
        +                          "type": "number"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "unit": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "work_section": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    }
        +                  },
        +                  "required": [
        +                    "work_section",
        +                    "description",
        +                    "quantity",
        +                    "unit",
        +                    "attribution"
        +                  ],
        +                  "type": "object"
        +                },
        +                "type": "array"
        +              },
        +              "drawing": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": false,
        +                    "description": "Schema § 1.6a — inline server-rendered SVG preview of the geometry.\n\nThe MCP mirror of the web ``/compute`` response's ``drawing`` field\n(``api.schemas.compute.DrawingRef``): the same on-screen dimensioned\ndrawing both tiers see in the workspace, surfaced on the MCP compute\nresponse so a chat client can render it inline (60th-fire item C). This\nis the on-screen preview — present on BOTH tiers per the free/paid\nboundary; the downloadable CAD artefacts (DXF / dimensioned PDF) remain\nthe paid differentiator via the export tools.\n\nDefined here rather than importing ``DrawingRef`` because the web\n``schemas`` package imports back into this module (``schemas.render``),\nso reusing it would create an import cycle — the MCP wire contract keeps\nits own copy, the same pattern as ``BoQRow`` / ``DrawingReference``.",
        +                    "properties": {
        +                      "entity_count": {
        +                        "minimum": 0,
        +                        "type": "integer"
        +                      },
        +                      "svg_b64": {
        +                        "minLength": 1,
        +                        "type": "string"
        +                      },
        +                      "unit_of_drawing": {
        +                        "const": "m",
        +                        "default": "m",
        +                        "type": "string"
        +                      },
        +                      "viewbox_height": {
        +                        "exclusiveMinimum": 0,
        +                        "type": "number"
        +                      },
        +                      "viewbox_width": {
        +                        "exclusiveMinimum": 0,
        +                        "type": "number"
        +                      },
        +                      "viewbox_x": {
        +                        "type": "number"
        +                      },
        +                      "viewbox_y": {
        +                        "type": "number"
        +                      }
        +                    },
        +                    "required": [
        +                      "svg_b64",
        +                      "viewbox_x",
        +                      "viewbox_y",
        +                      "viewbox_width",
        +                      "viewbox_height",
        +                      "entity_count"
        +                    ],
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "drawings": {
        +                "anyOf": [
        +                  {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.6 — paid-tier drawing artefact pointer.\n\n`url` is an R2-signed URL; expiry is carried in `_meta.deliverables.expires_at`\non the envelope (not duplicated here). `layers` is DXF-only; PDF/SVG\ncallers omit it.",
        +                      "properties": {
        +                        "drawing_type": {
        +                          "enum": [
        +                            "section",
        +                            "plan",
        +                            "elevation",
        +                            "isometric",
        +                            "detail"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "format": {
        +                          "enum": [
        +                            "DXF",
        +                            "PDF",
        +                            "SVG"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "layers": {
        +                          "anyOf": [
        +                            {
        +                              "items": {
        +                                "type": "string"
        +                              },
        +                              "type": "array"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ],
        +                          "default": null
        +                        },
        +                        "scale": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "sheet_size": {
        +                          "enum": [
        +                            "A1",
        +                            "A2",
        +                            "A3",
        +                            "A4"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "url": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "drawing_type",
        +                        "format",
        +                        "url",
        +                        "sheet_size",
        +                        "scale"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "parameters_used": {
        +                "additionalProperties": false,
        +                "description": "Schema § 1.2 — the parameter snapshot the engine actually used.\n\nSplits user-supplied values from engine defaults so customers can see\nwhich numbers came from them and which the engine filled in. Every\ndefaulted parameter SHOULD have a corresponding entry in `assumptions`\n— the bridge layer enforces this when wrapping engine output.",
        +                "properties": {
        +                  "assumptions": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "engine_defaults": {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  "user_supplied": {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  }
        +                },
        +                "type": "object"
        +              },
        +              "standard": {
        +                "enum": [
        +                  "CESMM4",
        +                  "NRM2",
        +                  "SMM7",
        +                  "MMHW"
        +                ],
        +                "type": "string"
        +              },
        +              "text_summary": {
        +                "maxLength": 2000,
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "totals_summary": {
        +                "additionalProperties": false,
        +                "description": "Schema § 1.4 — totals_summary as a typed wrapper around the free-form dict.\n\nWire shape is a flat object (`{\"concrete_m3\": {...}, \"rebar_t\": {...}}`).\nWe model it as `RootModel`-equivalent via `model_config(extra=\"allow\")`\n+ a single `__root__`-style `entries` dict. Pydantic v2 recommends\n`RootModel` for free-form roots; using a wrapper class keeps the import\nsurface uniform with the rest of this module.",
        +                "properties": {
        +                  "entries": {
        +                    "additionalProperties": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.4 — single material/work-class total entry.",
        +                      "properties": {
        +                        "quantity": {
        +                          "minimum": 0,
        +                          "type": "number"
        +                        },
        +                        "unit": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "quantity",
        +                        "unit"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "object"
        +                  }
        +                },
        +                "type": "object"
        +              },
        +              "warnings": {
        +                "items": {
        +                  "additionalProperties": false,
        +                  "description": "Schema § 1.8 — a non-fatal geometry advisory (56th-fire T2).\n\nThe wire projection of the engine's `core.GeometryWarning`. Advisory only:\na warning NEVER changes a measured quantity — it flags geometry that is\nvalid but likely a mistake (e.g. a stale dependent-height default). Present\non BOTH tiers — a correctness/safety signal, not a paid feature.",
        +                  "properties": {
        +                    "affected_params": {
        +                      "items": {
        +                        "type": "string"
        +                      },
        +                      "type": "array"
        +                    },
        +                    "code": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "detail": {
        +                      "additionalProperties": {
        +                        "type": "number"
        +                      },
        +                      "type": "object"
        +                    },
        +                    "message": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "severity": {
        +                      "enum": [
        +                        "info",
        +                        "advisory",
        +                        "caution"
        +                      ],
        +                      "type": "string"
        +                    }
        +                  },
        +                  "required": [
        +                    "code",
        +                    "severity",
        +                    "message"
        +                  ],
        +                  "type": "object"
        +                },
        +                "type": "array"
        +              }
        +            },
        +            "required": [
        +              "assembly_slug",
        +              "standard",
        +              "parameters_used",
        +              "boq_rows",
        +              "totals_summary",
        +              "text_summary"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      },
        +      "error": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        +            "properties": {
        +              "code": {
        +                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        +                "enum": [
        +                  "RATE_LIMIT_EXCEEDED",
        +                  "TIER_INSUFFICIENT",
        +                  "INVALID_INPUT",
        +                  "SCHEMA_VERSION_MISMATCH",
        +                  "SCHEMA_INVARIANT_VIOLATION",
        +                  "UPSTREAM_TIMEOUT",
        +                  "BACKEND_FAILURE",
        +                  "IP_BLOCKED",
        +                  "RESOURCE_NOT_FOUND",
        +                  "RENDER_FAILURE",
        +                  "OCR_LOW_CONFIDENCE",
        +                  "MANUAL_REVIEW_REQUIRED",
        +                  "ACCEPTANCE_REQUIRED",
        +                  "INVALID_TOKEN"
        +                ],
        +                "type": "string"
        +              },
        +              "details": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "message": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "recoverable": {
        +                "type": "boolean"
        +              },
        +              "retry_after_seconds": {
        +                "anyOf": [
        +                  {
        +                    "minimum": 0,
        +                    "type": "integer"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              }
        +            },
        +            "required": [
        +              "code",
        +              "message",
        +              "recoverable"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      }
        +    },
        +    "required": [
        +      "_meta"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "_meta": {
        +        "additionalProperties": false,
        +        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        +        "properties": {
        +          "deliverables": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        +                "properties": {
        +                  "docx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "dxf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "expires_at": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  },
        +                  "pdf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "xlsx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "expires_at"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "document_id": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "issued_at": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "rate_limit_remaining": {
        +            "anyOf": [
        +              {
        +                "minimum": 0,
        +                "type": "integer"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "request_id": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "schema_version": {
        +            "const": "1.0.0",
        +            "default": "1.0.0",
        +            "type": "string"
        +          },
        +          "scope_boundary": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        +                "properties": {
        +                  "not_in_scope": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "produced": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "recommended_companions": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "type": "string"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "produced",
        +                  "not_in_scope"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tier": {
        +            "enum": [
        +              "free",
        +              "paid"
        +            ],
        +            "type": "string"
        +          },
        +          "tier_upgrade": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        +                "properties": {
        +                  "available_tiers": {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        +                      "properties": {
        +                        "billing": {
        +                          "enum": [
        +                            "one_off",
        +                            "monthly",
        +                            "annual"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "currency": {
        +                          "enum": [
        +                            "GBP",
        +                            "SGD",
        +                            "EUR",
        +                            "USD",
        +                            "CAD",
        +                            "AUD",
        +                            "NZD",
        +                            "MYR"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "display_name": {
        +                          "type": "string"
        +                        },
        +                        "price_local": {
        +                          "type": "number"
        +                        },
        +                        "tier_slug": {
        +                          "enum": [
        +                            "7_day_pass",
        +                            "solo",
        +                            "studio",
        +                            "practice"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "unlock_summary": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "tier_slug",
        +                        "display_name",
        +                        "price_local",
        +                        "currency",
        +                        "billing",
        +                        "unlock_summary"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "current_tier": {
        +                    "const": "free",
        +                    "default": "free",
        +                    "type": "string"
        +                  },
        +                  "pass_credit": {
        +                    "anyOf": [
        +                      {
        +                        "additionalProperties": false,
        +                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        +                        "properties": {
        +                          "amount_local": {
        +                            "type": "number"
        +                          },
        +                          "applies_to": {
        +                            "const": "solo_first_month",
        +                            "default": "solo_first_month",
        +                            "type": "string"
        +                          },
        +                          "currency": {
        +                            "type": "string"
        +                          },
        +                          "redeemable_until": {
        +                            "type": "string"
        +                          }
        +                        },
        +                        "required": [
        +                          "amount_local",
        +                          "currency",
        +                          "redeemable_until"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "pricing_url": {
        +                    "default": "https://civilquants.com/pricing",
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "available_tiers"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tos_url": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "upgrade_hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "warranty_disclaimer": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          }
        +        },
        +        "required": [
        +          "request_id",
        +          "issued_at",
        +          "tier"
        +        ],
        +        "type": "object"
        +      },
        +      "data": {
        +        "default": null,
        +        "title": "Data"
        +      },
        +      "error": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        +            "properties": {
        +              "code": {
        +                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        +                "enum": [
        +                  "RATE_LIMIT_EXCEEDED",
        +                  "TIER_INSUFFICIENT",
        +                  "INVALID_INPUT",
        +                  "SCHEMA_VERSION_MISMATCH",
        +                  "SCHEMA_INVARIANT_VIOLATION",
        +                  "UPSTREAM_TIMEOUT",
        +                  "BACKEND_FAILURE",
        +                  "IP_BLOCKED",
        +                  "RESOURCE_NOT_FOUND",
        +                  "RENDER_FAILURE",
        +                  "OCR_LOW_CONFIDENCE",
        +                  "MANUAL_REVIEW_REQUIRED",
        +                  "ACCEPTANCE_REQUIRED",
        +                  "INVALID_TOKEN"
        +                ],
        +                "type": "string"
        +              },
        +              "details": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "message": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "recoverable": {
        +                "type": "boolean"
        +              },
        +              "retry_after_seconds": {
        +                "anyOf": [
        +                  {
        +                    "minimum": 0,
        +                    "type": "integer"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              }
        +            },
        +            "required": [
        +              "code",
        +              "message",
        +              "recoverable"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      }
        +    },
        +    "required": [
        +      "_meta"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedcompute_kerb_run1 field changed
      • changedOutput schema / properties / result / anyOf
        Previous value: -[
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "_meta": {
        -        "additionalProperties": false,
        -        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        -        "properties": {
        -          "deliverables": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        -                "properties": {
        -                  "docx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "dxf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "expires_at": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  },
        -                  "pdf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "xlsx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "expires_at"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "document_id": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "issued_at": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "rate_limit_remaining": {
        -            "anyOf": [
        -              {
        -                "minimum": 0,
        -                "type": "integer"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "request_id": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "schema_version": {
        -            "const": "1.0.0",
        -            "default": "1.0.0",
        -            "type": "string"
        -          },
        -          "scope_boundary": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        -                "properties": {
        -                  "not_in_scope": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "produced": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "recommended_companions": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "type": "string"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "produced",
        -                  "not_in_scope"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tier": {
        -            "enum": [
        -              "free",
        -              "paid"
        -            ],
        -            "type": "string"
        -          },
        -          "tier_upgrade": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        -                "properties": {
        -                  "available_tiers": {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        -                      "properties": {
        -                        "billing": {
        -                          "enum": [
        -                            "one_off",
        -                            "monthly",
        -                            "annual"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "currency": {
        -                          "enum": [
        -                            "GBP",
        -                            "SGD",
        -                            "EUR",
        -                            "USD",
        -                            "CAD",
        -                            "AUD",
        -                            "NZD",
        -                            "MYR"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "display_name": {
        -                          "type": "string"
        -                        },
        -                        "price_local": {
        -                          "type": "number"
        -                        },
        -                        "tier_slug": {
        -                          "enum": [
        -                            "7_day_pass",
        -                            "solo",
        -                            "studio",
        -                            "practice"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "unlock_summary": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "tier_slug",
        -                        "display_name",
        -                        "price_local",
        -                        "currency",
        -                        "billing",
        -                        "unlock_summary"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "current_tier": {
        -                    "const": "free",
        -                    "default": "free",
        -                    "type": "string"
        -                  },
        -                  "pass_credit": {
        -                    "anyOf": [
        -                      {
        -                        "additionalProperties": false,
        -                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        -                        "properties": {
        -                          "amount_local": {
        -                            "type": "number"
        -                          },
        -                          "applies_to": {
        -                            "const": "solo_first_month",
        -                            "default": "solo_first_month",
        -                            "type": "string"
        -                          },
        -                          "currency": {
        -                            "type": "string"
        -                          },
        -                          "redeemable_until": {
        -                            "type": "string"
        -                          }
        -                        },
        -                        "required": [
        -                          "amount_local",
        -                          "currency",
        -                          "redeemable_until"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "pricing_url": {
        -                    "default": "https://civilquants.com/pricing",
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "available_tiers"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tos_url": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "upgrade_hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "warranty_disclaimer": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          }
        -        },
        -        "required": [
        -          "request_id",
        -          "issued_at",
        -          "tier"
        -        ],
        -        "type": "object"
        -      },
        -      "data": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Schema § 1.1 — the typed payload returned inside `MCPResponse[ComputeResult]`.\n\nFree-tier responses omit `drawings` (the downloadable CAD artefact\npointers — the paid differentiator); the bridge enforces this. The\n`audit_trail` and the inline `drawing` preview are present on BOTH tiers\n(V1 ALIGN / 60th-fire D + C). `text_summary` is bounded to 2000 chars —\nkeeps the LLM-facing summary token-cheap and forces longer narrative into\nBoQ row descriptions where it belongs. `warnings` is the non-fatal\ngeometry advisory list (both tiers).",
        -            "properties": {
        -              "assembly_slug": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "audit_trail": {
        -                "anyOf": [
        -                  {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.7 — paid-tier audit-trail entry.\n\nOne entry per BoQ row; `boq_row_index` ties to the row position in\n`ComputeResult.boq_rows`. `derivation` is the human-readable formula\nwalk-through; `formula` is the optional formal expression.",
        -                      "properties": {
        -                        "boq_row_index": {
        -                          "minimum": 0,
        -                          "type": "integer"
        -                        },
        -                        "derivation": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "formula": {
        -                          "anyOf": [
        -                            {
        -                              "type": "string"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ],
        -                          "default": null
        -                        },
        -                        "id": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "parameters_referenced": {
        -                          "items": {
        -                            "type": "string"
        -                          },
        -                          "type": "array"
        -                        }
        -                      },
        -                      "required": [
        -                        "id",
        -                        "boq_row_index",
        -                        "derivation"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "boq_rows": {
        -                "items": {
        -                  "additionalProperties": false,
        -                  "description": "Schema § 1.3 — a single bill row in the requested standard's format.\n\n`description` is the non-verbatim functional description per spec § 13.9 /\n§ 15 invariant — NEVER reproduces a standard's verbatim clause text.\n`rate` / `amount` ship null because rates are commodity data the customer\nowns; the engine's job is the measurement, not the pricing.",
        -                  "properties": {
        -                    "amount": {
        -                      "anyOf": [
        -                        {
        -                          "type": "number"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "attribution": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "audit_id": {
        -                      "anyOf": [
        -                        {
        -                          "type": "string"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "description": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "quantity": {
        -                      "minimum": 0,
        -                      "type": "number"
        -                    },
        -                    "rate": {
        -                      "anyOf": [
        -                        {
        -                          "type": "number"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "unit": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "work_section": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    }
        -                  },
        -                  "required": [
        -                    "work_section",
        -                    "description",
        -                    "quantity",
        -                    "unit",
        -                    "attribution"
        -                  ],
        -                  "type": "object"
        -                },
        -                "type": "array"
        -              },
        -              "drawing": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": false,
        -                    "description": "Schema § 1.6a — inline server-rendered SVG preview of the geometry.\n\nThe MCP mirror of the web ``/compute`` response's ``drawing`` field\n(``api.schemas.compute.DrawingRef``): the same on-screen dimensioned\ndrawing both tiers see in the workspace, surfaced on the MCP compute\nresponse so a chat client can render it inline (60th-fire item C). This\nis the on-screen preview — present on BOTH tiers per the free/paid\nboundary; the downloadable CAD artefacts (DXF / dimensioned PDF) remain\nthe paid differentiator via the export tools.\n\nDefined here rather than importing ``DrawingRef`` because the web\n``schemas`` package imports back into this module (``schemas.render``),\nso reusing it would create an import cycle — the MCP wire contract keeps\nits own copy, the same pattern as ``BoQRow`` / ``DrawingReference``.",
        -                    "properties": {
        -                      "entity_count": {
        -                        "minimum": 0,
        -                        "type": "integer"
        -                      },
        -                      "svg_b64": {
        -                        "minLength": 1,
        -                        "type": "string"
        -                      },
        -                      "unit_of_drawing": {
        -                        "const": "m",
        -                        "default": "m",
        -                        "type": "string"
        -                      },
        -                      "viewbox_height": {
        -                        "exclusiveMinimum": 0,
        -                        "type": "number"
        -                      },
        -                      "viewbox_width": {
        -                        "exclusiveMinimum": 0,
        -                        "type": "number"
        -                      },
        -                      "viewbox_x": {
        -                        "type": "number"
        -                      },
        -                      "viewbox_y": {
        -                        "type": "number"
        -                      }
        -                    },
        -                    "required": [
        -                      "svg_b64",
        -                      "viewbox_x",
        -                      "viewbox_y",
        -                      "viewbox_width",
        -                      "viewbox_height",
        -                      "entity_count"
        -                    ],
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "drawings": {
        -                "anyOf": [
        -                  {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.6 — paid-tier drawing artefact pointer.\n\n`url` is an R2-signed URL; expiry is carried in `_meta.deliverables.expires_at`\non the envelope (not duplicated here). `layers` is DXF-only; PDF/SVG\ncallers omit it.",
        -                      "properties": {
        -                        "drawing_type": {
        -                          "enum": [
        -                            "section",
        -                            "plan",
        -                            "elevation",
        -                            "isometric",
        -                            "detail"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "format": {
        -                          "enum": [
        -                            "DXF",
        -                            "PDF",
        -                            "SVG"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "layers": {
        -                          "anyOf": [
        -                            {
        -                              "items": {
        -                                "type": "string"
        -                              },
        -                              "type": "array"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ],
        -                          "default": null
        -                        },
        -                        "scale": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "sheet_size": {
        -                          "enum": [
        -                            "A1",
        -                            "A2",
        -                            "A3",
        -                            "A4"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "url": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "drawing_type",
        -                        "format",
        -                        "url",
        -                        "sheet_size",
        -                        "scale"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "parameters_used": {
        -                "additionalProperties": false,
        -                "description": "Schema § 1.2 — the parameter snapshot the engine actually used.\n\nSplits user-supplied values from engine defaults so customers can see\nwhich numbers came from them and which the engine filled in. Every\ndefaulted parameter SHOULD have a corresponding entry in `assumptions`\n— the bridge layer enforces this when wrapping engine output.",
        -                "properties": {
        -                  "assumptions": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "engine_defaults": {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  "resolved_from_description": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "additionalProperties": false,
        -                          "description": "Schema § 1.2 — a parameter resolved by the forgiving-input layer.\n\nPopulated by the Track B-Forgiving Haiku-4.5 resolution pass; until that\nlayer lands, instances are constructed only by tests. `source` distinguishes\nthe resolution path so customers can audit which fields were inferred.",
        -                          "properties": {
        -                            "confidence": {
        -                              "anyOf": [
        -                                {
        -                                  "enum": [
        -                                    "high",
        -                                    "medium",
        -                                    "low"
        -                                  ],
        -                                  "type": "string"
        -                                },
        -                                {
        -                                  "type": "null"
        -                                }
        -                              ],
        -                              "default": null
        -                            },
        -                            "field_name": {
        -                              "minLength": 1,
        -                              "type": "string"
        -                            },
        -                            "resolved_value": {},
        -                            "source": {
        -                              "enum": [
        -                                "description_field",
        -                                "haiku_resolution",
        -                                "engine_default"
        -                              ],
        -                              "type": "string"
        -                            }
        -                          },
        -                          "required": [
        -                            "field_name",
        -                            "resolved_value",
        -                            "source"
        -                          ],
        -                          "type": "object"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "user_supplied": {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  }
        -                },
        -                "type": "object"
        -              },
        -              "standard": {
        -                "enum": [
        -                  "CESMM4",
        -                  "NRM2",
        -                  "SMM7",
        -                  "MMHW"
        -                ],
        -                "type": "string"
        -              },
        -              "text_summary": {
        -                "maxLength": 2000,
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "totals_summary": {
        -                "additionalProperties": false,
        -                "description": "Schema § 1.4 — totals_summary as a typed wrapper around the free-form dict.\n\nWire shape is a flat object (`{\"concrete_m3\": {...}, \"rebar_t\": {...}}`).\nWe model it as `RootModel`-equivalent via `model_config(extra=\"allow\")`\n+ a single `__root__`-style `entries` dict. Pydantic v2 recommends\n`RootModel` for free-form roots; using a wrapper class keeps the import\nsurface uniform with the rest of this module.",
        -                "properties": {
        -                  "entries": {
        -                    "additionalProperties": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.4 — single material/work-class total entry.",
        -                      "properties": {
        -                        "quantity": {
        -                          "minimum": 0,
        -                          "type": "number"
        -                        },
        -                        "unit": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "quantity",
        -                        "unit"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "object"
        -                  }
        -                },
        -                "type": "object"
        -              },
        -              "warnings": {
        -                "items": {
        -                  "additionalProperties": false,
        -                  "description": "Schema § 1.8 — a non-fatal geometry advisory (56th-fire T2).\n\nThe wire projection of the engine's `core.GeometryWarning`. Advisory only:\na warning NEVER changes a measured quantity — it flags geometry that is\nvalid but likely a mistake (e.g. a stale dependent-height default). Present\non BOTH tiers — a correctness/safety signal, not a paid feature.",
        -                  "properties": {
        -                    "affected_params": {
        -                      "items": {
        -                        "type": "string"
        -                      },
        -                      "type": "array"
        -                    },
        -                    "code": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "detail": {
        -                      "additionalProperties": {
        -                        "type": "number"
        -                      },
        -                      "type": "object"
        -                    },
        -                    "message": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "severity": {
        -                      "enum": [
        -                        "info",
        -                        "advisory",
        -                        "caution"
        -                      ],
        -                      "type": "string"
        -                    }
        -                  },
        -                  "required": [
        -                    "code",
        -                    "severity",
        -                    "message"
        -                  ],
        -                  "type": "object"
        -                },
        -                "type": "array"
        -              }
        -            },
        -            "required": [
        -              "assembly_slug",
        -              "standard",
        -              "parameters_used",
        -              "boq_rows",
        -              "totals_summary",
        -              "text_summary"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      },
        -      "error": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        -            "properties": {
        -              "code": {
        -                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        -                "enum": [
        -                  "RATE_LIMIT_EXCEEDED",
        -                  "TIER_INSUFFICIENT",
        -                  "INVALID_INPUT",
        -                  "SCHEMA_VERSION_MISMATCH",
        -                  "SCHEMA_INVARIANT_VIOLATION",
        -                  "UPSTREAM_TIMEOUT",
        -                  "BACKEND_FAILURE",
        -                  "IP_BLOCKED",
        -                  "RESOURCE_NOT_FOUND",
        -                  "RENDER_FAILURE",
        -                  "OCR_LOW_CONFIDENCE",
        -                  "MANUAL_REVIEW_REQUIRED",
        -                  "ACCEPTANCE_REQUIRED",
        -                  "INVALID_TOKEN"
        -                ],
        -                "type": "string"
        -              },
        -              "details": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "message": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "recoverable": {
        -                "type": "boolean"
        -              },
        -              "retry_after_seconds": {
        -                "anyOf": [
        -                  {
        -                    "minimum": 0,
        -                    "type": "integer"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              }
        -            },
        -            "required": [
        -              "code",
        -              "message",
        -              "recoverable"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      }
        -    },
        -    "required": [
        -      "_meta"
        -    ],
        -    "type": "object"
        -  },
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "_meta": {
        -        "additionalProperties": false,
        -        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        -        "properties": {
        -          "deliverables": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        -                "properties": {
        -                  "docx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "dxf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "expires_at": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  },
        -                  "pdf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "xlsx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "expires_at"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "document_id": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "issued_at": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "rate_limit_remaining": {
        -            "anyOf": [
        -              {
        -                "minimum": 0,
        -                "type": "integer"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "request_id": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "schema_version": {
        -            "const": "1.0.0",
        -            "default": "1.0.0",
        -            "type": "string"
        -          },
        -          "scope_boundary": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        -                "properties": {
        -                  "not_in_scope": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "produced": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "recommended_companions": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "type": "string"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "produced",
        -                  "not_in_scope"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tier": {
        -            "enum": [
        -              "free",
        -              "paid"
        -            ],
        -            "type": "string"
        -          },
        -          "tier_upgrade": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        -                "properties": {
        -                  "available_tiers": {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        -                      "properties": {
        -                        "billing": {
        -                          "enum": [
        -                            "one_off",
        -                            "monthly",
        -                            "annual"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "currency": {
        -                          "enum": [
        -                            "GBP",
        -                            "SGD",
        -                            "EUR",
        -                            "USD",
        -                            "CAD",
        -                            "AUD",
        -                            "NZD",
        -                            "MYR"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "display_name": {
        -                          "type": "string"
        -                        },
        -                        "price_local": {
        -                          "type": "number"
        -                        },
        -                        "tier_slug": {
        -                          "enum": [
        -                            "7_day_pass",
        -                            "solo",
        -                            "studio",
        -                            "practice"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "unlock_summary": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "tier_slug",
        -                        "display_name",
        -                        "price_local",
        -                        "currency",
        -                        "billing",
        -                        "unlock_summary"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "current_tier": {
        -                    "const": "free",
        -                    "default": "free",
        -                    "type": "string"
        -                  },
        -                  "pass_credit": {
        -                    "anyOf": [
        -                      {
        -                        "additionalProperties": false,
        -                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        -                        "properties": {
        -                          "amount_local": {
        -                            "type": "number"
        -                          },
        -                          "applies_to": {
        -                            "const": "solo_first_month",
        -                            "default": "solo_first_month",
        -                            "type": "string"
        -                          },
        -                          "currency": {
        -                            "type": "string"
        -                          },
        -                          "redeemable_until": {
        -                            "type": "string"
        -                          }
        -                        },
        -                        "required": [
        -                          "amount_local",
        -                          "currency",
        -                          "redeemable_until"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "pricing_url": {
        -                    "default": "https://civilquants.com/pricing",
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "available_tiers"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tos_url": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "upgrade_hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "warranty_disclaimer": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          }
        -        },
        -        "required": [
        -          "request_id",
        -          "issued_at",
        -          "tier"
        -        ],
        -        "type": "object"
        -      },
        -      "data": {
        -        "default": null,
        -        "title": "Data"
        -      },
        -      "error": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        -            "properties": {
        -              "code": {
        -                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        -                "enum": [
        -                  "RATE_LIMIT_EXCEEDED",
        -                  "TIER_INSUFFICIENT",
        -                  "INVALID_INPUT",
        -                  "SCHEMA_VERSION_MISMATCH",
        -                  "SCHEMA_INVARIANT_VIOLATION",
        -                  "UPSTREAM_TIMEOUT",
        -                  "BACKEND_FAILURE",
        -                  "IP_BLOCKED",
        -                  "RESOURCE_NOT_FOUND",
        -                  "RENDER_FAILURE",
        -                  "OCR_LOW_CONFIDENCE",
        -                  "MANUAL_REVIEW_REQUIRED",
        -                  "ACCEPTANCE_REQUIRED",
        -                  "INVALID_TOKEN"
        -                ],
        -                "type": "string"
        -              },
        -              "details": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "message": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "recoverable": {
        -                "type": "boolean"
        -              },
        -              "retry_after_seconds": {
        -                "anyOf": [
        -                  {
        -                    "minimum": 0,
        -                    "type": "integer"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              }
        -            },
        -            "required": [
        -              "code",
        -              "message",
        -              "recoverable"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      }
        -    },
        -    "required": [
        -      "_meta"
        -    ],
        -    "type": "object"
        -  }
        -]New value: +[
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "_meta": {
        +        "additionalProperties": false,
        +        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        +        "properties": {
        +          "deliverables": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        +                "properties": {
        +                  "docx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "dxf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "expires_at": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  },
        +                  "pdf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "xlsx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "expires_at"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "document_id": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "issued_at": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "rate_limit_remaining": {
        +            "anyOf": [
        +              {
        +                "minimum": 0,
        +                "type": "integer"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "request_id": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "schema_version": {
        +            "const": "1.0.0",
        +            "default": "1.0.0",
        +            "type": "string"
        +          },
        +          "scope_boundary": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        +                "properties": {
        +                  "not_in_scope": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "produced": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "recommended_companions": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "type": "string"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "produced",
        +                  "not_in_scope"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tier": {
        +            "enum": [
        +              "free",
        +              "paid"
        +            ],
        +            "type": "string"
        +          },
        +          "tier_upgrade": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        +                "properties": {
        +                  "available_tiers": {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        +                      "properties": {
        +                        "billing": {
        +                          "enum": [
        +                            "one_off",
        +                            "monthly",
        +                            "annual"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "currency": {
        +                          "enum": [
        +                            "GBP",
        +                            "SGD",
        +                            "EUR",
        +                            "USD",
        +                            "CAD",
        +                            "AUD",
        +                            "NZD",
        +                            "MYR"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "display_name": {
        +                          "type": "string"
        +                        },
        +                        "price_local": {
        +                          "type": "number"
        +                        },
        +                        "tier_slug": {
        +                          "enum": [
        +                            "7_day_pass",
        +                            "solo",
        +                            "studio",
        +                            "practice"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "unlock_summary": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "tier_slug",
        +                        "display_name",
        +                        "price_local",
        +                        "currency",
        +                        "billing",
        +                        "unlock_summary"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "current_tier": {
        +                    "const": "free",
        +                    "default": "free",
        +                    "type": "string"
        +                  },
        +                  "pass_credit": {
        +                    "anyOf": [
        +                      {
        +                        "additionalProperties": false,
        +                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        +                        "properties": {
        +                          "amount_local": {
        +                            "type": "number"
        +                          },
        +                          "applies_to": {
        +                            "const": "solo_first_month",
        +                            "default": "solo_first_month",
        +                            "type": "string"
        +                          },
        +                          "currency": {
        +                            "type": "string"
        +                          },
        +                          "redeemable_until": {
        +                            "type": "string"
        +                          }
        +                        },
        +                        "required": [
        +                          "amount_local",
        +                          "currency",
        +                          "redeemable_until"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "pricing_url": {
        +                    "default": "https://civilquants.com/pricing",
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "available_tiers"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tos_url": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "upgrade_hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "warranty_disclaimer": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          }
        +        },
        +        "required": [
        +          "request_id",
        +          "issued_at",
        +          "tier"
        +        ],
        +        "type": "object"
        +      },
        +      "data": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Schema § 1.1 — the typed payload returned inside `MCPResponse[ComputeResult]`.\n\nFree-tier responses omit `drawings` (the downloadable CAD artefact\npointers — the paid differentiator); the bridge enforces this. The\n`audit_trail` and the inline `drawing` preview are present on BOTH tiers\n(V1 ALIGN / 60th-fire D + C). `text_summary` is bounded to 2000 chars —\nkeeps the LLM-facing summary token-cheap and forces longer narrative into\nBoQ row descriptions where it belongs. `warnings` is the non-fatal\ngeometry advisory list (both tiers).",
        +            "properties": {
        +              "assembly_slug": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "audit_trail": {
        +                "anyOf": [
        +                  {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.7 — paid-tier audit-trail entry.\n\nOne entry per BoQ row; `boq_row_index` ties to the row position in\n`ComputeResult.boq_rows`. `derivation` is the human-readable formula\nwalk-through; `formula` is the optional formal expression.",
        +                      "properties": {
        +                        "boq_row_index": {
        +                          "minimum": 0,
        +                          "type": "integer"
        +                        },
        +                        "derivation": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "formula": {
        +                          "anyOf": [
        +                            {
        +                              "type": "string"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ],
        +                          "default": null
        +                        },
        +                        "id": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "parameters_referenced": {
        +                          "items": {
        +                            "type": "string"
        +                          },
        +                          "type": "array"
        +                        }
        +                      },
        +                      "required": [
        +                        "id",
        +                        "boq_row_index",
        +                        "derivation"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "boq_rows": {
        +                "items": {
        +                  "additionalProperties": false,
        +                  "description": "Schema § 1.3 — a single bill row in the requested standard's format.\n\n`description` is the non-verbatim functional description per spec § 13.9 /\n§ 15 invariant — NEVER reproduces a standard's verbatim clause text.\n`rate` / `amount` ship null because rates are commodity data the customer\nowns; the engine's job is the measurement, not the pricing.",
        +                  "properties": {
        +                    "amount": {
        +                      "anyOf": [
        +                        {
        +                          "type": "number"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "attribution": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "audit_id": {
        +                      "anyOf": [
        +                        {
        +                          "type": "string"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "description": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "quantity": {
        +                      "minimum": 0,
        +                      "type": "number"
        +                    },
        +                    "rate": {
        +                      "anyOf": [
        +                        {
        +                          "type": "number"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "unit": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "work_section": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    }
        +                  },
        +                  "required": [
        +                    "work_section",
        +                    "description",
        +                    "quantity",
        +                    "unit",
        +                    "attribution"
        +                  ],
        +                  "type": "object"
        +                },
        +                "type": "array"
        +              },
        +              "drawing": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": false,
        +                    "description": "Schema § 1.6a — inline server-rendered SVG preview of the geometry.\n\nThe MCP mirror of the web ``/compute`` response's ``drawing`` field\n(``api.schemas.compute.DrawingRef``): the same on-screen dimensioned\ndrawing both tiers see in the workspace, surfaced on the MCP compute\nresponse so a chat client can render it inline (60th-fire item C). This\nis the on-screen preview — present on BOTH tiers per the free/paid\nboundary; the downloadable CAD artefacts (DXF / dimensioned PDF) remain\nthe paid differentiator via the export tools.\n\nDefined here rather than importing ``DrawingRef`` because the web\n``schemas`` package imports back into this module (``schemas.render``),\nso reusing it would create an import cycle — the MCP wire contract keeps\nits own copy, the same pattern as ``BoQRow`` / ``DrawingReference``.",
        +                    "properties": {
        +                      "entity_count": {
        +                        "minimum": 0,
        +                        "type": "integer"
        +                      },
        +                      "svg_b64": {
        +                        "minLength": 1,
        +                        "type": "string"
        +                      },
        +                      "unit_of_drawing": {
        +                        "const": "m",
        +                        "default": "m",
        +                        "type": "string"
        +                      },
        +                      "viewbox_height": {
        +                        "exclusiveMinimum": 0,
        +                        "type": "number"
        +                      },
        +                      "viewbox_width": {
        +                        "exclusiveMinimum": 0,
        +                        "type": "number"
        +                      },
        +                      "viewbox_x": {
        +                        "type": "number"
        +                      },
        +                      "viewbox_y": {
        +                        "type": "number"
        +                      }
        +                    },
        +                    "required": [
        +                      "svg_b64",
        +                      "viewbox_x",
        +                      "viewbox_y",
        +                      "viewbox_width",
        +                      "viewbox_height",
        +                      "entity_count"
        +                    ],
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "drawings": {
        +                "anyOf": [
        +                  {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.6 — paid-tier drawing artefact pointer.\n\n`url` is an R2-signed URL; expiry is carried in `_meta.deliverables.expires_at`\non the envelope (not duplicated here). `layers` is DXF-only; PDF/SVG\ncallers omit it.",
        +                      "properties": {
        +                        "drawing_type": {
        +                          "enum": [
        +                            "section",
        +                            "plan",
        +                            "elevation",
        +                            "isometric",
        +                            "detail"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "format": {
        +                          "enum": [
        +                            "DXF",
        +                            "PDF",
        +                            "SVG"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "layers": {
        +                          "anyOf": [
        +                            {
        +                              "items": {
        +                                "type": "string"
        +                              },
        +                              "type": "array"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ],
        +                          "default": null
        +                        },
        +                        "scale": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "sheet_size": {
        +                          "enum": [
        +                            "A1",
        +                            "A2",
        +                            "A3",
        +                            "A4"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "url": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "drawing_type",
        +                        "format",
        +                        "url",
        +                        "sheet_size",
        +                        "scale"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "parameters_used": {
        +                "additionalProperties": false,
        +                "description": "Schema § 1.2 — the parameter snapshot the engine actually used.\n\nSplits user-supplied values from engine defaults so customers can see\nwhich numbers came from them and which the engine filled in. Every\ndefaulted parameter SHOULD have a corresponding entry in `assumptions`\n— the bridge layer enforces this when wrapping engine output.",
        +                "properties": {
        +                  "assumptions": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "engine_defaults": {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  "user_supplied": {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  }
        +                },
        +                "type": "object"
        +              },
        +              "standard": {
        +                "enum": [
        +                  "CESMM4",
        +                  "NRM2",
        +                  "SMM7",
        +                  "MMHW"
        +                ],
        +                "type": "string"
        +              },
        +              "text_summary": {
        +                "maxLength": 2000,
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "totals_summary": {
        +                "additionalProperties": false,
        +                "description": "Schema § 1.4 — totals_summary as a typed wrapper around the free-form dict.\n\nWire shape is a flat object (`{\"concrete_m3\": {...}, \"rebar_t\": {...}}`).\nWe model it as `RootModel`-equivalent via `model_config(extra=\"allow\")`\n+ a single `__root__`-style `entries` dict. Pydantic v2 recommends\n`RootModel` for free-form roots; using a wrapper class keeps the import\nsurface uniform with the rest of this module.",
        +                "properties": {
        +                  "entries": {
        +                    "additionalProperties": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.4 — single material/work-class total entry.",
        +                      "properties": {
        +                        "quantity": {
        +                          "minimum": 0,
        +                          "type": "number"
        +                        },
        +                        "unit": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "quantity",
        +                        "unit"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "object"
        +                  }
        +                },
        +                "type": "object"
        +              },
        +              "warnings": {
        +                "items": {
        +                  "additionalProperties": false,
        +                  "description": "Schema § 1.8 — a non-fatal geometry advisory (56th-fire T2).\n\nThe wire projection of the engine's `core.GeometryWarning`. Advisory only:\na warning NEVER changes a measured quantity — it flags geometry that is\nvalid but likely a mistake (e.g. a stale dependent-height default). Present\non BOTH tiers — a correctness/safety signal, not a paid feature.",
        +                  "properties": {
        +                    "affected_params": {
        +                      "items": {
        +                        "type": "string"
        +                      },
        +                      "type": "array"
        +                    },
        +                    "code": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "detail": {
        +                      "additionalProperties": {
        +                        "type": "number"
        +                      },
        +                      "type": "object"
        +                    },
        +                    "message": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "severity": {
        +                      "enum": [
        +                        "info",
        +                        "advisory",
        +                        "caution"
        +                      ],
        +                      "type": "string"
        +                    }
        +                  },
        +                  "required": [
        +                    "code",
        +                    "severity",
        +                    "message"
        +                  ],
        +                  "type": "object"
        +                },
        +                "type": "array"
        +              }
        +            },
        +            "required": [
        +              "assembly_slug",
        +              "standard",
        +              "parameters_used",
        +              "boq_rows",
        +              "totals_summary",
        +              "text_summary"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      },
        +      "error": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        +            "properties": {
        +              "code": {
        +                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        +                "enum": [
        +                  "RATE_LIMIT_EXCEEDED",
        +                  "TIER_INSUFFICIENT",
        +                  "INVALID_INPUT",
        +                  "SCHEMA_VERSION_MISMATCH",
        +                  "SCHEMA_INVARIANT_VIOLATION",
        +                  "UPSTREAM_TIMEOUT",
        +                  "BACKEND_FAILURE",
        +                  "IP_BLOCKED",
        +                  "RESOURCE_NOT_FOUND",
        +                  "RENDER_FAILURE",
        +                  "OCR_LOW_CONFIDENCE",
        +                  "MANUAL_REVIEW_REQUIRED",
        +                  "ACCEPTANCE_REQUIRED",
        +                  "INVALID_TOKEN"
        +                ],
        +                "type": "string"
        +              },
        +              "details": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "message": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "recoverable": {
        +                "type": "boolean"
        +              },
        +              "retry_after_seconds": {
        +                "anyOf": [
        +                  {
        +                    "minimum": 0,
        +                    "type": "integer"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              }
        +            },
        +            "required": [
        +              "code",
        +              "message",
        +              "recoverable"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      }
        +    },
        +    "required": [
        +      "_meta"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "_meta": {
        +        "additionalProperties": false,
        +        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        +        "properties": {
        +          "deliverables": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        +                "properties": {
        +                  "docx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "dxf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "expires_at": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  },
        +                  "pdf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "xlsx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "expires_at"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "document_id": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "issued_at": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "rate_limit_remaining": {
        +            "anyOf": [
        +              {
        +                "minimum": 0,
        +                "type": "integer"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "request_id": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "schema_version": {
        +            "const": "1.0.0",
        +            "default": "1.0.0",
        +            "type": "string"
        +          },
        +          "scope_boundary": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        +                "properties": {
        +                  "not_in_scope": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "produced": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "recommended_companions": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "type": "string"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "produced",
        +                  "not_in_scope"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tier": {
        +            "enum": [
        +              "free",
        +              "paid"
        +            ],
        +            "type": "string"
        +          },
        +          "tier_upgrade": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        +                "properties": {
        +                  "available_tiers": {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        +                      "properties": {
        +                        "billing": {
        +                          "enum": [
        +                            "one_off",
        +                            "monthly",
        +                            "annual"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "currency": {
        +                          "enum": [
        +                            "GBP",
        +                            "SGD",
        +                            "EUR",
        +                            "USD",
        +                            "CAD",
        +                            "AUD",
        +                            "NZD",
        +                            "MYR"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "display_name": {
        +                          "type": "string"
        +                        },
        +                        "price_local": {
        +                          "type": "number"
        +                        },
        +                        "tier_slug": {
        +                          "enum": [
        +                            "7_day_pass",
        +                            "solo",
        +                            "studio",
        +                            "practice"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "unlock_summary": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "tier_slug",
        +                        "display_name",
        +                        "price_local",
        +                        "currency",
        +                        "billing",
        +                        "unlock_summary"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "current_tier": {
        +                    "const": "free",
        +                    "default": "free",
        +                    "type": "string"
        +                  },
        +                  "pass_credit": {
        +                    "anyOf": [
        +                      {
        +                        "additionalProperties": false,
        +                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        +                        "properties": {
        +                          "amount_local": {
        +                            "type": "number"
        +                          },
        +                          "applies_to": {
        +                            "const": "solo_first_month",
        +                            "default": "solo_first_month",
        +                            "type": "string"
        +                          },
        +                          "currency": {
        +                            "type": "string"
        +                          },
        +                          "redeemable_until": {
        +                            "type": "string"
        +                          }
        +                        },
        +                        "required": [
        +                          "amount_local",
        +                          "currency",
        +                          "redeemable_until"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "pricing_url": {
        +                    "default": "https://civilquants.com/pricing",
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "available_tiers"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tos_url": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "upgrade_hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "warranty_disclaimer": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          }
        +        },
        +        "required": [
        +          "request_id",
        +          "issued_at",
        +          "tier"
        +        ],
        +        "type": "object"
        +      },
        +      "data": {
        +        "default": null,
        +        "title": "Data"
        +      },
        +      "error": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        +            "properties": {
        +              "code": {
        +                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        +                "enum": [
        +                  "RATE_LIMIT_EXCEEDED",
        +                  "TIER_INSUFFICIENT",
        +                  "INVALID_INPUT",
        +                  "SCHEMA_VERSION_MISMATCH",
        +                  "SCHEMA_INVARIANT_VIOLATION",
        +                  "UPSTREAM_TIMEOUT",
        +                  "BACKEND_FAILURE",
        +                  "IP_BLOCKED",
        +                  "RESOURCE_NOT_FOUND",
        +                  "RENDER_FAILURE",
        +                  "OCR_LOW_CONFIDENCE",
        +                  "MANUAL_REVIEW_REQUIRED",
        +                  "ACCEPTANCE_REQUIRED",
        +                  "INVALID_TOKEN"
        +                ],
        +                "type": "string"
        +              },
        +              "details": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "message": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "recoverable": {
        +                "type": "boolean"
        +              },
        +              "retry_after_seconds": {
        +                "anyOf": [
        +                  {
        +                    "minimum": 0,
        +                    "type": "integer"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              }
        +            },
        +            "required": [
        +              "code",
        +              "message",
        +              "recoverable"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      }
        +    },
        +    "required": [
        +      "_meta"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedcompute_lighting_column1 field changed
      • changedOutput schema / properties / result / anyOf
        Previous value: -[
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "_meta": {
        -        "additionalProperties": false,
        -        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        -        "properties": {
        -          "deliverables": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        -                "properties": {
        -                  "docx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "dxf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "expires_at": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  },
        -                  "pdf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "xlsx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "expires_at"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "document_id": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "issued_at": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "rate_limit_remaining": {
        -            "anyOf": [
        -              {
        -                "minimum": 0,
        -                "type": "integer"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "request_id": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "schema_version": {
        -            "const": "1.0.0",
        -            "default": "1.0.0",
        -            "type": "string"
        -          },
        -          "scope_boundary": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        -                "properties": {
        -                  "not_in_scope": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "produced": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "recommended_companions": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "type": "string"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "produced",
        -                  "not_in_scope"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tier": {
        -            "enum": [
        -              "free",
        -              "paid"
        -            ],
        -            "type": "string"
        -          },
        -          "tier_upgrade": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        -                "properties": {
        -                  "available_tiers": {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        -                      "properties": {
        -                        "billing": {
        -                          "enum": [
        -                            "one_off",
        -                            "monthly",
        -                            "annual"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "currency": {
        -                          "enum": [
        -                            "GBP",
        -                            "SGD",
        -                            "EUR",
        -                            "USD",
        -                            "CAD",
        -                            "AUD",
        -                            "NZD",
        -                            "MYR"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "display_name": {
        -                          "type": "string"
        -                        },
        -                        "price_local": {
        -                          "type": "number"
        -                        },
        -                        "tier_slug": {
        -                          "enum": [
        -                            "7_day_pass",
        -                            "solo",
        -                            "studio",
        -                            "practice"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "unlock_summary": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "tier_slug",
        -                        "display_name",
        -                        "price_local",
        -                        "currency",
        -                        "billing",
        -                        "unlock_summary"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "current_tier": {
        -                    "const": "free",
        -                    "default": "free",
        -                    "type": "string"
        -                  },
        -                  "pass_credit": {
        -                    "anyOf": [
        -                      {
        -                        "additionalProperties": false,
        -                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        -                        "properties": {
        -                          "amount_local": {
        -                            "type": "number"
        -                          },
        -                          "applies_to": {
        -                            "const": "solo_first_month",
        -                            "default": "solo_first_month",
        -                            "type": "string"
        -                          },
        -                          "currency": {
        -                            "type": "string"
        -                          },
        -                          "redeemable_until": {
        -                            "type": "string"
        -                          }
        -                        },
        -                        "required": [
        -                          "amount_local",
        -                          "currency",
        -                          "redeemable_until"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "pricing_url": {
        -                    "default": "https://civilquants.com/pricing",
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "available_tiers"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tos_url": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "upgrade_hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "warranty_disclaimer": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          }
        -        },
        -        "required": [
        -          "request_id",
        -          "issued_at",
        -          "tier"
        -        ],
        -        "type": "object"
        -      },
        -      "data": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Schema § 1.1 — the typed payload returned inside `MCPResponse[ComputeResult]`.\n\nFree-tier responses omit `drawings` (the downloadable CAD artefact\npointers — the paid differentiator); the bridge enforces this. The\n`audit_trail` and the inline `drawing` preview are present on BOTH tiers\n(V1 ALIGN / 60th-fire D + C). `text_summary` is bounded to 2000 chars —\nkeeps the LLM-facing summary token-cheap and forces longer narrative into\nBoQ row descriptions where it belongs. `warnings` is the non-fatal\ngeometry advisory list (both tiers).",
        -            "properties": {
        -              "assembly_slug": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "audit_trail": {
        -                "anyOf": [
        -                  {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.7 — paid-tier audit-trail entry.\n\nOne entry per BoQ row; `boq_row_index` ties to the row position in\n`ComputeResult.boq_rows`. `derivation` is the human-readable formula\nwalk-through; `formula` is the optional formal expression.",
        -                      "properties": {
        -                        "boq_row_index": {
        -                          "minimum": 0,
        -                          "type": "integer"
        -                        },
        -                        "derivation": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "formula": {
        -                          "anyOf": [
        -                            {
        -                              "type": "string"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ],
        -                          "default": null
        -                        },
        -                        "id": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "parameters_referenced": {
        -                          "items": {
        -                            "type": "string"
        -                          },
        -                          "type": "array"
        -                        }
        -                      },
        -                      "required": [
        -                        "id",
        -                        "boq_row_index",
        -                        "derivation"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "boq_rows": {
        -                "items": {
        -                  "additionalProperties": false,
        -                  "description": "Schema § 1.3 — a single bill row in the requested standard's format.\n\n`description` is the non-verbatim functional description per spec § 13.9 /\n§ 15 invariant — NEVER reproduces a standard's verbatim clause text.\n`rate` / `amount` ship null because rates are commodity data the customer\nowns; the engine's job is the measurement, not the pricing.",
        -                  "properties": {
        -                    "amount": {
        -                      "anyOf": [
        -                        {
        -                          "type": "number"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "attribution": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "audit_id": {
        -                      "anyOf": [
        -                        {
        -                          "type": "string"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "description": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "quantity": {
        -                      "minimum": 0,
        -                      "type": "number"
        -                    },
        -                    "rate": {
        -                      "anyOf": [
        -                        {
        -                          "type": "number"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "unit": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "work_section": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    }
        -                  },
        -                  "required": [
        -                    "work_section",
        -                    "description",
        -                    "quantity",
        -                    "unit",
        -                    "attribution"
        -                  ],
        -                  "type": "object"
        -                },
        -                "type": "array"
        -              },
        -              "drawing": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": false,
        -                    "description": "Schema § 1.6a — inline server-rendered SVG preview of the geometry.\n\nThe MCP mirror of the web ``/compute`` response's ``drawing`` field\n(``api.schemas.compute.DrawingRef``): the same on-screen dimensioned\ndrawing both tiers see in the workspace, surfaced on the MCP compute\nresponse so a chat client can render it inline (60th-fire item C). This\nis the on-screen preview — present on BOTH tiers per the free/paid\nboundary; the downloadable CAD artefacts (DXF / dimensioned PDF) remain\nthe paid differentiator via the export tools.\n\nDefined here rather than importing ``DrawingRef`` because the web\n``schemas`` package imports back into this module (``schemas.render``),\nso reusing it would create an import cycle — the MCP wire contract keeps\nits own copy, the same pattern as ``BoQRow`` / ``DrawingReference``.",
        -                    "properties": {
        -                      "entity_count": {
        -                        "minimum": 0,
        -                        "type": "integer"
        -                      },
        -                      "svg_b64": {
        -                        "minLength": 1,
        -                        "type": "string"
        -                      },
        -                      "unit_of_drawing": {
        -                        "const": "m",
        -                        "default": "m",
        -                        "type": "string"
        -                      },
        -                      "viewbox_height": {
        -                        "exclusiveMinimum": 0,
        -                        "type": "number"
        -                      },
        -                      "viewbox_width": {
        -                        "exclusiveMinimum": 0,
        -                        "type": "number"
        -                      },
        -                      "viewbox_x": {
        -                        "type": "number"
        -                      },
        -                      "viewbox_y": {
        -                        "type": "number"
        -                      }
        -                    },
        -                    "required": [
        -                      "svg_b64",
        -                      "viewbox_x",
        -                      "viewbox_y",
        -                      "viewbox_width",
        -                      "viewbox_height",
        -                      "entity_count"
        -                    ],
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "drawings": {
        -                "anyOf": [
        -                  {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.6 — paid-tier drawing artefact pointer.\n\n`url` is an R2-signed URL; expiry is carried in `_meta.deliverables.expires_at`\non the envelope (not duplicated here). `layers` is DXF-only; PDF/SVG\ncallers omit it.",
        -                      "properties": {
        -                        "drawing_type": {
        -                          "enum": [
        -                            "section",
        -                            "plan",
        -                            "elevation",
        -                            "isometric",
        -                            "detail"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "format": {
        -                          "enum": [
        -                            "DXF",
        -                            "PDF",
        -                            "SVG"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "layers": {
        -                          "anyOf": [
        -                            {
        -                              "items": {
        -                                "type": "string"
        -                              },
        -                              "type": "array"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ],
        -                          "default": null
        -                        },
        -                        "scale": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "sheet_size": {
        -                          "enum": [
        -                            "A1",
        -                            "A2",
        -                            "A3",
        -                            "A4"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "url": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "drawing_type",
        -                        "format",
        -                        "url",
        -                        "sheet_size",
        -                        "scale"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "parameters_used": {
        -                "additionalProperties": false,
        -                "description": "Schema § 1.2 — the parameter snapshot the engine actually used.\n\nSplits user-supplied values from engine defaults so customers can see\nwhich numbers came from them and which the engine filled in. Every\ndefaulted parameter SHOULD have a corresponding entry in `assumptions`\n— the bridge layer enforces this when wrapping engine output.",
        -                "properties": {
        -                  "assumptions": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "engine_defaults": {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  "resolved_from_description": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "additionalProperties": false,
        -                          "description": "Schema § 1.2 — a parameter resolved by the forgiving-input layer.\n\nPopulated by the Track B-Forgiving Haiku-4.5 resolution pass; until that\nlayer lands, instances are constructed only by tests. `source` distinguishes\nthe resolution path so customers can audit which fields were inferred.",
        -                          "properties": {
        -                            "confidence": {
        -                              "anyOf": [
        -                                {
        -                                  "enum": [
        -                                    "high",
        -                                    "medium",
        -                                    "low"
        -                                  ],
        -                                  "type": "string"
        -                                },
        -                                {
        -                                  "type": "null"
        -                                }
        -                              ],
        -                              "default": null
        -                            },
        -                            "field_name": {
        -                              "minLength": 1,
        -                              "type": "string"
        -                            },
        -                            "resolved_value": {},
        -                            "source": {
        -                              "enum": [
        -                                "description_field",
        -                                "haiku_resolution",
        -                                "engine_default"
        -                              ],
        -                              "type": "string"
        -                            }
        -                          },
        -                          "required": [
        -                            "field_name",
        -                            "resolved_value",
        -                            "source"
        -                          ],
        -                          "type": "object"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "user_supplied": {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  }
        -                },
        -                "type": "object"
        -              },
        -              "standard": {
        -                "enum": [
        -                  "CESMM4",
        -                  "NRM2",
        -                  "SMM7",
        -                  "MMHW"
        -                ],
        -                "type": "string"
        -              },
        -              "text_summary": {
        -                "maxLength": 2000,
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "totals_summary": {
        -                "additionalProperties": false,
        -                "description": "Schema § 1.4 — totals_summary as a typed wrapper around the free-form dict.\n\nWire shape is a flat object (`{\"concrete_m3\": {...}, \"rebar_t\": {...}}`).\nWe model it as `RootModel`-equivalent via `model_config(extra=\"allow\")`\n+ a single `__root__`-style `entries` dict. Pydantic v2 recommends\n`RootModel` for free-form roots; using a wrapper class keeps the import\nsurface uniform with the rest of this module.",
        -                "properties": {
        -                  "entries": {
        -                    "additionalProperties": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.4 — single material/work-class total entry.",
        -                      "properties": {
        -                        "quantity": {
        -                          "minimum": 0,
        -                          "type": "number"
        -                        },
        -                        "unit": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "quantity",
        -                        "unit"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "object"
        -                  }
        -                },
        -                "type": "object"
        -              },
        -              "warnings": {
        -                "items": {
        -                  "additionalProperties": false,
        -                  "description": "Schema § 1.8 — a non-fatal geometry advisory (56th-fire T2).\n\nThe wire projection of the engine's `core.GeometryWarning`. Advisory only:\na warning NEVER changes a measured quantity — it flags geometry that is\nvalid but likely a mistake (e.g. a stale dependent-height default). Present\non BOTH tiers — a correctness/safety signal, not a paid feature.",
        -                  "properties": {
        -                    "affected_params": {
        -                      "items": {
        -                        "type": "string"
        -                      },
        -                      "type": "array"
        -                    },
        -                    "code": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "detail": {
        -                      "additionalProperties": {
        -                        "type": "number"
        -                      },
        -                      "type": "object"
        -                    },
        -                    "message": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "severity": {
        -                      "enum": [
        -                        "info",
        -                        "advisory",
        -                        "caution"
        -                      ],
        -                      "type": "string"
        -                    }
        -                  },
        -                  "required": [
        -                    "code",
        -                    "severity",
        -                    "message"
        -                  ],
        -                  "type": "object"
        -                },
        -                "type": "array"
        -              }
        -            },
        -            "required": [
        -              "assembly_slug",
        -              "standard",
        -              "parameters_used",
        -              "boq_rows",
        -              "totals_summary",
        -              "text_summary"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      },
        -      "error": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        -            "properties": {
        -              "code": {
        -                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        -                "enum": [
        -                  "RATE_LIMIT_EXCEEDED",
        -                  "TIER_INSUFFICIENT",
        -                  "INVALID_INPUT",
        -                  "SCHEMA_VERSION_MISMATCH",
        -                  "SCHEMA_INVARIANT_VIOLATION",
        -                  "UPSTREAM_TIMEOUT",
        -                  "BACKEND_FAILURE",
        -                  "IP_BLOCKED",
        -                  "RESOURCE_NOT_FOUND",
        -                  "RENDER_FAILURE",
        -                  "OCR_LOW_CONFIDENCE",
        -                  "MANUAL_REVIEW_REQUIRED",
        -                  "ACCEPTANCE_REQUIRED",
        -                  "INVALID_TOKEN"
        -                ],
        -                "type": "string"
        -              },
        -              "details": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "message": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "recoverable": {
        -                "type": "boolean"
        -              },
        -              "retry_after_seconds": {
        -                "anyOf": [
        -                  {
        -                    "minimum": 0,
        -                    "type": "integer"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              }
        -            },
        -            "required": [
        -              "code",
        -              "message",
        -              "recoverable"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      }
        -    },
        -    "required": [
        -      "_meta"
        -    ],
        -    "type": "object"
        -  },
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "_meta": {
        -        "additionalProperties": false,
        -        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        -        "properties": {
        -          "deliverables": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        -                "properties": {
        -                  "docx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "dxf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "expires_at": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  },
        -                  "pdf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "xlsx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "expires_at"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "document_id": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "issued_at": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "rate_limit_remaining": {
        -            "anyOf": [
        -              {
        -                "minimum": 0,
        -                "type": "integer"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "request_id": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "schema_version": {
        -            "const": "1.0.0",
        -            "default": "1.0.0",
        -            "type": "string"
        -          },
        -          "scope_boundary": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        -                "properties": {
        -                  "not_in_scope": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "produced": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "recommended_companions": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "type": "string"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "produced",
        -                  "not_in_scope"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tier": {
        -            "enum": [
        -              "free",
        -              "paid"
        -            ],
        -            "type": "string"
        -          },
        -          "tier_upgrade": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        -                "properties": {
        -                  "available_tiers": {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        -                      "properties": {
        -                        "billing": {
        -                          "enum": [
        -                            "one_off",
        -                            "monthly",
        -                            "annual"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "currency": {
        -                          "enum": [
        -                            "GBP",
        -                            "SGD",
        -                            "EUR",
        -                            "USD",
        -                            "CAD",
        -                            "AUD",
        -                            "NZD",
        -                            "MYR"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "display_name": {
        -                          "type": "string"
        -                        },
        -                        "price_local": {
        -                          "type": "number"
        -                        },
        -                        "tier_slug": {
        -                          "enum": [
        -                            "7_day_pass",
        -                            "solo",
        -                            "studio",
        -                            "practice"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "unlock_summary": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "tier_slug",
        -                        "display_name",
        -                        "price_local",
        -                        "currency",
        -                        "billing",
        -                        "unlock_summary"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "current_tier": {
        -                    "const": "free",
        -                    "default": "free",
        -                    "type": "string"
        -                  },
        -                  "pass_credit": {
        -                    "anyOf": [
        -                      {
        -                        "additionalProperties": false,
        -                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        -                        "properties": {
        -                          "amount_local": {
        -                            "type": "number"
        -                          },
        -                          "applies_to": {
        -                            "const": "solo_first_month",
        -                            "default": "solo_first_month",
        -                            "type": "string"
        -                          },
        -                          "currency": {
        -                            "type": "string"
        -                          },
        -                          "redeemable_until": {
        -                            "type": "string"
        -                          }
        -                        },
        -                        "required": [
        -                          "amount_local",
        -                          "currency",
        -                          "redeemable_until"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "pricing_url": {
        -                    "default": "https://civilquants.com/pricing",
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "available_tiers"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tos_url": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "upgrade_hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "warranty_disclaimer": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          }
        -        },
        -        "required": [
        -          "request_id",
        -          "issued_at",
        -          "tier"
        -        ],
        -        "type": "object"
        -      },
        -      "data": {
        -        "default": null,
        -        "title": "Data"
        -      },
        -      "error": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        -            "properties": {
        -              "code": {
        -                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        -                "enum": [
        -                  "RATE_LIMIT_EXCEEDED",
        -                  "TIER_INSUFFICIENT",
        -                  "INVALID_INPUT",
        -                  "SCHEMA_VERSION_MISMATCH",
        -                  "SCHEMA_INVARIANT_VIOLATION",
        -                  "UPSTREAM_TIMEOUT",
        -                  "BACKEND_FAILURE",
        -                  "IP_BLOCKED",
        -                  "RESOURCE_NOT_FOUND",
        -                  "RENDER_FAILURE",
        -                  "OCR_LOW_CONFIDENCE",
        -                  "MANUAL_REVIEW_REQUIRED",
        -                  "ACCEPTANCE_REQUIRED",
        -                  "INVALID_TOKEN"
        -                ],
        -                "type": "string"
        -              },
        -              "details": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "message": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "recoverable": {
        -                "type": "boolean"
        -              },
        -              "retry_after_seconds": {
        -                "anyOf": [
        -                  {
        -                    "minimum": 0,
        -                    "type": "integer"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              }
        -            },
        -            "required": [
        -              "code",
        -              "message",
        -              "recoverable"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      }
        -    },
        -    "required": [
        -      "_meta"
        -    ],
        -    "type": "object"
        -  }
        -]New value: +[
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "_meta": {
        +        "additionalProperties": false,
        +        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        +        "properties": {
        +          "deliverables": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        +                "properties": {
        +                  "docx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "dxf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "expires_at": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  },
        +                  "pdf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "xlsx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "expires_at"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "document_id": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "issued_at": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "rate_limit_remaining": {
        +            "anyOf": [
        +              {
        +                "minimum": 0,
        +                "type": "integer"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "request_id": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "schema_version": {
        +            "const": "1.0.0",
        +            "default": "1.0.0",
        +            "type": "string"
        +          },
        +          "scope_boundary": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        +                "properties": {
        +                  "not_in_scope": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "produced": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "recommended_companions": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "type": "string"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "produced",
        +                  "not_in_scope"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tier": {
        +            "enum": [
        +              "free",
        +              "paid"
        +            ],
        +            "type": "string"
        +          },
        +          "tier_upgrade": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        +                "properties": {
        +                  "available_tiers": {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        +                      "properties": {
        +                        "billing": {
        +                          "enum": [
        +                            "one_off",
        +                            "monthly",
        +                            "annual"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "currency": {
        +                          "enum": [
        +                            "GBP",
        +                            "SGD",
        +                            "EUR",
        +                            "USD",
        +                            "CAD",
        +                            "AUD",
        +                            "NZD",
        +                            "MYR"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "display_name": {
        +                          "type": "string"
        +                        },
        +                        "price_local": {
        +                          "type": "number"
        +                        },
        +                        "tier_slug": {
        +                          "enum": [
        +                            "7_day_pass",
        +                            "solo",
        +                            "studio",
        +                            "practice"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "unlock_summary": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "tier_slug",
        +                        "display_name",
        +                        "price_local",
        +                        "currency",
        +                        "billing",
        +                        "unlock_summary"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "current_tier": {
        +                    "const": "free",
        +                    "default": "free",
        +                    "type": "string"
        +                  },
        +                  "pass_credit": {
        +                    "anyOf": [
        +                      {
        +                        "additionalProperties": false,
        +                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        +                        "properties": {
        +                          "amount_local": {
        +                            "type": "number"
        +                          },
        +                          "applies_to": {
        +                            "const": "solo_first_month",
        +                            "default": "solo_first_month",
        +                            "type": "string"
        +                          },
        +                          "currency": {
        +                            "type": "string"
        +                          },
        +                          "redeemable_until": {
        +                            "type": "string"
        +                          }
        +                        },
        +                        "required": [
        +                          "amount_local",
        +                          "currency",
        +                          "redeemable_until"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "pricing_url": {
        +                    "default": "https://civilquants.com/pricing",
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "available_tiers"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tos_url": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "upgrade_hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "warranty_disclaimer": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          }
        +        },
        +        "required": [
        +          "request_id",
        +          "issued_at",
        +          "tier"
        +        ],
        +        "type": "object"
        +      },
        +      "data": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Schema § 1.1 — the typed payload returned inside `MCPResponse[ComputeResult]`.\n\nFree-tier responses omit `drawings` (the downloadable CAD artefact\npointers — the paid differentiator); the bridge enforces this. The\n`audit_trail` and the inline `drawing` preview are present on BOTH tiers\n(V1 ALIGN / 60th-fire D + C). `text_summary` is bounded to 2000 chars —\nkeeps the LLM-facing summary token-cheap and forces longer narrative into\nBoQ row descriptions where it belongs. `warnings` is the non-fatal\ngeometry advisory list (both tiers).",
        +            "properties": {
        +              "assembly_slug": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "audit_trail": {
        +                "anyOf": [
        +                  {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.7 — paid-tier audit-trail entry.\n\nOne entry per BoQ row; `boq_row_index` ties to the row position in\n`ComputeResult.boq_rows`. `derivation` is the human-readable formula\nwalk-through; `formula` is the optional formal expression.",
        +                      "properties": {
        +                        "boq_row_index": {
        +                          "minimum": 0,
        +                          "type": "integer"
        +                        },
        +                        "derivation": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "formula": {
        +                          "anyOf": [
        +                            {
        +                              "type": "string"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ],
        +                          "default": null
        +                        },
        +                        "id": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "parameters_referenced": {
        +                          "items": {
        +                            "type": "string"
        +                          },
        +                          "type": "array"
        +                        }
        +                      },
        +                      "required": [
        +                        "id",
        +                        "boq_row_index",
        +                        "derivation"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "boq_rows": {
        +                "items": {
        +                  "additionalProperties": false,
        +                  "description": "Schema § 1.3 — a single bill row in the requested standard's format.\n\n`description` is the non-verbatim functional description per spec § 13.9 /\n§ 15 invariant — NEVER reproduces a standard's verbatim clause text.\n`rate` / `amount` ship null because rates are commodity data the customer\nowns; the engine's job is the measurement, not the pricing.",
        +                  "properties": {
        +                    "amount": {
        +                      "anyOf": [
        +                        {
        +                          "type": "number"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "attribution": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "audit_id": {
        +                      "anyOf": [
        +                        {
        +                          "type": "string"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "description": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "quantity": {
        +                      "minimum": 0,
        +                      "type": "number"
        +                    },
        +                    "rate": {
        +                      "anyOf": [
        +                        {
        +                          "type": "number"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "unit": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "work_section": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    }
        +                  },
        +                  "required": [
        +                    "work_section",
        +                    "description",
        +                    "quantity",
        +                    "unit",
        +                    "attribution"
        +                  ],
        +                  "type": "object"
        +                },
        +                "type": "array"
        +              },
        +              "drawing": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": false,
        +                    "description": "Schema § 1.6a — inline server-rendered SVG preview of the geometry.\n\nThe MCP mirror of the web ``/compute`` response's ``drawing`` field\n(``api.schemas.compute.DrawingRef``): the same on-screen dimensioned\ndrawing both tiers see in the workspace, surfaced on the MCP compute\nresponse so a chat client can render it inline (60th-fire item C). This\nis the on-screen preview — present on BOTH tiers per the free/paid\nboundary; the downloadable CAD artefacts (DXF / dimensioned PDF) remain\nthe paid differentiator via the export tools.\n\nDefined here rather than importing ``DrawingRef`` because the web\n``schemas`` package imports back into this module (``schemas.render``),\nso reusing it would create an import cycle — the MCP wire contract keeps\nits own copy, the same pattern as ``BoQRow`` / ``DrawingReference``.",
        +                    "properties": {
        +                      "entity_count": {
        +                        "minimum": 0,
        +                        "type": "integer"
        +                      },
        +                      "svg_b64": {
        +                        "minLength": 1,
        +                        "type": "string"
        +                      },
        +                      "unit_of_drawing": {
        +                        "const": "m",
        +                        "default": "m",
        +                        "type": "string"
        +                      },
        +                      "viewbox_height": {
        +                        "exclusiveMinimum": 0,
        +                        "type": "number"
        +                      },
        +                      "viewbox_width": {
        +                        "exclusiveMinimum": 0,
        +                        "type": "number"
        +                      },
        +                      "viewbox_x": {
        +                        "type": "number"
        +                      },
        +                      "viewbox_y": {
        +                        "type": "number"
        +                      }
        +                    },
        +                    "required": [
        +                      "svg_b64",
        +                      "viewbox_x",
        +                      "viewbox_y",
        +                      "viewbox_width",
        +                      "viewbox_height",
        +                      "entity_count"
        +                    ],
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "drawings": {
        +                "anyOf": [
        +                  {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.6 — paid-tier drawing artefact pointer.\n\n`url` is an R2-signed URL; expiry is carried in `_meta.deliverables.expires_at`\non the envelope (not duplicated here). `layers` is DXF-only; PDF/SVG\ncallers omit it.",
        +                      "properties": {
        +                        "drawing_type": {
        +                          "enum": [
        +                            "section",
        +                            "plan",
        +                            "elevation",
        +                            "isometric",
        +                            "detail"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "format": {
        +                          "enum": [
        +                            "DXF",
        +                            "PDF",
        +                            "SVG"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "layers": {
        +                          "anyOf": [
        +                            {
        +                              "items": {
        +                                "type": "string"
        +                              },
        +                              "type": "array"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ],
        +                          "default": null
        +                        },
        +                        "scale": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "sheet_size": {
        +                          "enum": [
        +                            "A1",
        +                            "A2",
        +                            "A3",
        +                            "A4"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "url": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "drawing_type",
        +                        "format",
        +                        "url",
        +                        "sheet_size",
        +                        "scale"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "parameters_used": {
        +                "additionalProperties": false,
        +                "description": "Schema § 1.2 — the parameter snapshot the engine actually used.\n\nSplits user-supplied values from engine defaults so customers can see\nwhich numbers came from them and which the engine filled in. Every\ndefaulted parameter SHOULD have a corresponding entry in `assumptions`\n— the bridge layer enforces this when wrapping engine output.",
        +                "properties": {
        +                  "assumptions": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "engine_defaults": {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  "user_supplied": {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  }
        +                },
        +                "type": "object"
        +              },
        +              "standard": {
        +                "enum": [
        +                  "CESMM4",
        +                  "NRM2",
        +                  "SMM7",
        +                  "MMHW"
        +                ],
        +                "type": "string"
        +              },
        +              "text_summary": {
        +                "maxLength": 2000,
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "totals_summary": {
        +                "additionalProperties": false,
        +                "description": "Schema § 1.4 — totals_summary as a typed wrapper around the free-form dict.\n\nWire shape is a flat object (`{\"concrete_m3\": {...}, \"rebar_t\": {...}}`).\nWe model it as `RootModel`-equivalent via `model_config(extra=\"allow\")`\n+ a single `__root__`-style `entries` dict. Pydantic v2 recommends\n`RootModel` for free-form roots; using a wrapper class keeps the import\nsurface uniform with the rest of this module.",
        +                "properties": {
        +                  "entries": {
        +                    "additionalProperties": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.4 — single material/work-class total entry.",
        +                      "properties": {
        +                        "quantity": {
        +                          "minimum": 0,
        +                          "type": "number"
        +                        },
        +                        "unit": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "quantity",
        +                        "unit"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "object"
        +                  }
        +                },
        +                "type": "object"
        +              },
        +              "warnings": {
        +                "items": {
        +                  "additionalProperties": false,
        +                  "description": "Schema § 1.8 — a non-fatal geometry advisory (56th-fire T2).\n\nThe wire projection of the engine's `core.GeometryWarning`. Advisory only:\na warning NEVER changes a measured quantity — it flags geometry that is\nvalid but likely a mistake (e.g. a stale dependent-height default). Present\non BOTH tiers — a correctness/safety signal, not a paid feature.",
        +                  "properties": {
        +                    "affected_params": {
        +                      "items": {
        +                        "type": "string"
        +                      },
        +                      "type": "array"
        +                    },
        +                    "code": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "detail": {
        +                      "additionalProperties": {
        +                        "type": "number"
        +                      },
        +                      "type": "object"
        +                    },
        +                    "message": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "severity": {
        +                      "enum": [
        +                        "info",
        +                        "advisory",
        +                        "caution"
        +                      ],
        +                      "type": "string"
        +                    }
        +                  },
        +                  "required": [
        +                    "code",
        +                    "severity",
        +                    "message"
        +                  ],
        +                  "type": "object"
        +                },
        +                "type": "array"
        +              }
        +            },
        +            "required": [
        +              "assembly_slug",
        +              "standard",
        +              "parameters_used",
        +              "boq_rows",
        +              "totals_summary",
        +              "text_summary"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      },
        +      "error": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        +            "properties": {
        +              "code": {
        +                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        +                "enum": [
        +                  "RATE_LIMIT_EXCEEDED",
        +                  "TIER_INSUFFICIENT",
        +                  "INVALID_INPUT",
        +                  "SCHEMA_VERSION_MISMATCH",
        +                  "SCHEMA_INVARIANT_VIOLATION",
        +                  "UPSTREAM_TIMEOUT",
        +                  "BACKEND_FAILURE",
        +                  "IP_BLOCKED",
        +                  "RESOURCE_NOT_FOUND",
        +                  "RENDER_FAILURE",
        +                  "OCR_LOW_CONFIDENCE",
        +                  "MANUAL_REVIEW_REQUIRED",
        +                  "ACCEPTANCE_REQUIRED",
        +                  "INVALID_TOKEN"
        +                ],
        +                "type": "string"
        +              },
        +              "details": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "message": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "recoverable": {
        +                "type": "boolean"
        +              },
        +              "retry_after_seconds": {
        +                "anyOf": [
        +                  {
        +                    "minimum": 0,
        +                    "type": "integer"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              }
        +            },
        +            "required": [
        +              "code",
        +              "message",
        +              "recoverable"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      }
        +    },
        +    "required": [
        +      "_meta"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "_meta": {
        +        "additionalProperties": false,
        +        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        +        "properties": {
        +          "deliverables": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        +                "properties": {
        +                  "docx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "dxf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "expires_at": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  },
        +                  "pdf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "xlsx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "expires_at"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "document_id": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "issued_at": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "rate_limit_remaining": {
        +            "anyOf": [
        +              {
        +                "minimum": 0,
        +                "type": "integer"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "request_id": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "schema_version": {
        +            "const": "1.0.0",
        +            "default": "1.0.0",
        +            "type": "string"
        +          },
        +          "scope_boundary": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        +                "properties": {
        +                  "not_in_scope": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "produced": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "recommended_companions": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "type": "string"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "produced",
        +                  "not_in_scope"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tier": {
        +            "enum": [
        +              "free",
        +              "paid"
        +            ],
        +            "type": "string"
        +          },
        +          "tier_upgrade": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        +                "properties": {
        +                  "available_tiers": {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        +                      "properties": {
        +                        "billing": {
        +                          "enum": [
        +                            "one_off",
        +                            "monthly",
        +                            "annual"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "currency": {
        +                          "enum": [
        +                            "GBP",
        +                            "SGD",
        +                            "EUR",
        +                            "USD",
        +                            "CAD",
        +                            "AUD",
        +                            "NZD",
        +                            "MYR"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "display_name": {
        +                          "type": "string"
        +                        },
        +                        "price_local": {
        +                          "type": "number"
        +                        },
        +                        "tier_slug": {
        +                          "enum": [
        +                            "7_day_pass",
        +                            "solo",
        +                            "studio",
        +                            "practice"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "unlock_summary": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "tier_slug",
        +                        "display_name",
        +                        "price_local",
        +                        "currency",
        +                        "billing",
        +                        "unlock_summary"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "current_tier": {
        +                    "const": "free",
        +                    "default": "free",
        +                    "type": "string"
        +                  },
        +                  "pass_credit": {
        +                    "anyOf": [
        +                      {
        +                        "additionalProperties": false,
        +                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        +                        "properties": {
        +                          "amount_local": {
        +                            "type": "number"
        +                          },
        +                          "applies_to": {
        +                            "const": "solo_first_month",
        +                            "default": "solo_first_month",
        +                            "type": "string"
        +                          },
        +                          "currency": {
        +                            "type": "string"
        +                          },
        +                          "redeemable_until": {
        +                            "type": "string"
        +                          }
        +                        },
        +                        "required": [
        +                          "amount_local",
        +                          "currency",
        +                          "redeemable_until"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "pricing_url": {
        +                    "default": "https://civilquants.com/pricing",
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "available_tiers"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tos_url": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "upgrade_hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "warranty_disclaimer": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          }
        +        },
        +        "required": [
        +          "request_id",
        +          "issued_at",
        +          "tier"
        +        ],
        +        "type": "object"
        +      },
        +      "data": {
        +        "default": null,
        +        "title": "Data"
        +      },
        +      "error": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        +            "properties": {
        +              "code": {
        +                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        +                "enum": [
        +                  "RATE_LIMIT_EXCEEDED",
        +                  "TIER_INSUFFICIENT",
        +                  "INVALID_INPUT",
        +                  "SCHEMA_VERSION_MISMATCH",
        +                  "SCHEMA_INVARIANT_VIOLATION",
        +                  "UPSTREAM_TIMEOUT",
        +                  "BACKEND_FAILURE",
        +                  "IP_BLOCKED",
        +                  "RESOURCE_NOT_FOUND",
        +                  "RENDER_FAILURE",
        +                  "OCR_LOW_CONFIDENCE",
        +                  "MANUAL_REVIEW_REQUIRED",
        +                  "ACCEPTANCE_REQUIRED",
        +                  "INVALID_TOKEN"
        +                ],
        +                "type": "string"
        +              },
        +              "details": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "message": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "recoverable": {
        +                "type": "boolean"
        +              },
        +              "retry_after_seconds": {
        +                "anyOf": [
        +                  {
        +                    "minimum": 0,
        +                    "type": "integer"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              }
        +            },
        +            "required": [
        +              "code",
        +              "message",
        +              "recoverable"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      }
        +    },
        +    "required": [
        +      "_meta"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedcompute_manhole1 field changed
      • changedOutput schema / properties / result / anyOf
        Previous value: -[
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "_meta": {
        -        "additionalProperties": false,
        -        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        -        "properties": {
        -          "deliverables": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        -                "properties": {
        -                  "docx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "dxf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "expires_at": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  },
        -                  "pdf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "xlsx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "expires_at"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "document_id": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "issued_at": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "rate_limit_remaining": {
        -            "anyOf": [
        -              {
        -                "minimum": 0,
        -                "type": "integer"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "request_id": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "schema_version": {
        -            "const": "1.0.0",
        -            "default": "1.0.0",
        -            "type": "string"
        -          },
        -          "scope_boundary": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        -                "properties": {
        -                  "not_in_scope": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "produced": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "recommended_companions": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "type": "string"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "produced",
        -                  "not_in_scope"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tier": {
        -            "enum": [
        -              "free",
        -              "paid"
        -            ],
        -            "type": "string"
        -          },
        -          "tier_upgrade": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        -                "properties": {
        -                  "available_tiers": {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        -                      "properties": {
        -                        "billing": {
        -                          "enum": [
        -                            "one_off",
        -                            "monthly",
        -                            "annual"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "currency": {
        -                          "enum": [
        -                            "GBP",
        -                            "SGD",
        -                            "EUR",
        -                            "USD",
        -                            "CAD",
        -                            "AUD",
        -                            "NZD",
        -                            "MYR"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "display_name": {
        -                          "type": "string"
        -                        },
        -                        "price_local": {
        -                          "type": "number"
        -                        },
        -                        "tier_slug": {
        -                          "enum": [
        -                            "7_day_pass",
        -                            "solo",
        -                            "studio",
        -                            "practice"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "unlock_summary": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "tier_slug",
        -                        "display_name",
        -                        "price_local",
        -                        "currency",
        -                        "billing",
        -                        "unlock_summary"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "current_tier": {
        -                    "const": "free",
        -                    "default": "free",
        -                    "type": "string"
        -                  },
        -                  "pass_credit": {
        -                    "anyOf": [
        -                      {
        -                        "additionalProperties": false,
        -                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        -                        "properties": {
        -                          "amount_local": {
        -                            "type": "number"
        -                          },
        -                          "applies_to": {
        -                            "const": "solo_first_month",
        -                            "default": "solo_first_month",
        -                            "type": "string"
        -                          },
        -                          "currency": {
        -                            "type": "string"
        -                          },
        -                          "redeemable_until": {
        -                            "type": "string"
        -                          }
        -                        },
        -                        "required": [
        -                          "amount_local",
        -                          "currency",
        -                          "redeemable_until"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "pricing_url": {
        -                    "default": "https://civilquants.com/pricing",
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "available_tiers"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tos_url": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "upgrade_hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "warranty_disclaimer": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          }
        -        },
        -        "required": [
        -          "request_id",
        -          "issued_at",
        -          "tier"
        -        ],
        -        "type": "object"
        -      },
        -      "data": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Schema § 1.1 — the typed payload returned inside `MCPResponse[ComputeResult]`.\n\nFree-tier responses omit `drawings` (the downloadable CAD artefact\npointers — the paid differentiator); the bridge enforces this. The\n`audit_trail` and the inline `drawing` preview are present on BOTH tiers\n(V1 ALIGN / 60th-fire D + C). `text_summary` is bounded to 2000 chars —\nkeeps the LLM-facing summary token-cheap and forces longer narrative into\nBoQ row descriptions where it belongs. `warnings` is the non-fatal\ngeometry advisory list (both tiers).",
        -            "properties": {
        -              "assembly_slug": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "audit_trail": {
        -                "anyOf": [
        -                  {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.7 — paid-tier audit-trail entry.\n\nOne entry per BoQ row; `boq_row_index` ties to the row position in\n`ComputeResult.boq_rows`. `derivation` is the human-readable formula\nwalk-through; `formula` is the optional formal expression.",
        -                      "properties": {
        -                        "boq_row_index": {
        -                          "minimum": 0,
        -                          "type": "integer"
        -                        },
        -                        "derivation": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "formula": {
        -                          "anyOf": [
        -                            {
        -                              "type": "string"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ],
        -                          "default": null
        -                        },
        -                        "id": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "parameters_referenced": {
        -                          "items": {
        -                            "type": "string"
        -                          },
        -                          "type": "array"
        -                        }
        -                      },
        -                      "required": [
        -                        "id",
        -                        "boq_row_index",
        -                        "derivation"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "boq_rows": {
        -                "items": {
        -                  "additionalProperties": false,
        -                  "description": "Schema § 1.3 — a single bill row in the requested standard's format.\n\n`description` is the non-verbatim functional description per spec § 13.9 /\n§ 15 invariant — NEVER reproduces a standard's verbatim clause text.\n`rate` / `amount` ship null because rates are commodity data the customer\nowns; the engine's job is the measurement, not the pricing.",
        -                  "properties": {
        -                    "amount": {
        -                      "anyOf": [
        -                        {
        -                          "type": "number"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "attribution": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "audit_id": {
        -                      "anyOf": [
        -                        {
        -                          "type": "string"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "description": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "quantity": {
        -                      "minimum": 0,
        -                      "type": "number"
        -                    },
        -                    "rate": {
        -                      "anyOf": [
        -                        {
        -                          "type": "number"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "unit": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "work_section": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    }
        -                  },
        -                  "required": [
        -                    "work_section",
        -                    "description",
        -                    "quantity",
        -                    "unit",
        -                    "attribution"
        -                  ],
        -                  "type": "object"
        -                },
        -                "type": "array"
        -              },
        -              "drawing": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": false,
        -                    "description": "Schema § 1.6a — inline server-rendered SVG preview of the geometry.\n\nThe MCP mirror of the web ``/compute`` response's ``drawing`` field\n(``api.schemas.compute.DrawingRef``): the same on-screen dimensioned\ndrawing both tiers see in the workspace, surfaced on the MCP compute\nresponse so a chat client can render it inline (60th-fire item C). This\nis the on-screen preview — present on BOTH tiers per the free/paid\nboundary; the downloadable CAD artefacts (DXF / dimensioned PDF) remain\nthe paid differentiator via the export tools.\n\nDefined here rather than importing ``DrawingRef`` because the web\n``schemas`` package imports back into this module (``schemas.render``),\nso reusing it would create an import cycle — the MCP wire contract keeps\nits own copy, the same pattern as ``BoQRow`` / ``DrawingReference``.",
        -                    "properties": {
        -                      "entity_count": {
        -                        "minimum": 0,
        -                        "type": "integer"
        -                      },
        -                      "svg_b64": {
        -                        "minLength": 1,
        -                        "type": "string"
        -                      },
        -                      "unit_of_drawing": {
        -                        "const": "m",
        -                        "default": "m",
        -                        "type": "string"
        -                      },
        -                      "viewbox_height": {
        -                        "exclusiveMinimum": 0,
        -                        "type": "number"
        -                      },
        -                      "viewbox_width": {
        -                        "exclusiveMinimum": 0,
        -                        "type": "number"
        -                      },
        -                      "viewbox_x": {
        -                        "type": "number"
        -                      },
        -                      "viewbox_y": {
        -                        "type": "number"
        -                      }
        -                    },
        -                    "required": [
        -                      "svg_b64",
        -                      "viewbox_x",
        -                      "viewbox_y",
        -                      "viewbox_width",
        -                      "viewbox_height",
        -                      "entity_count"
        -                    ],
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "drawings": {
        -                "anyOf": [
        -                  {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.6 — paid-tier drawing artefact pointer.\n\n`url` is an R2-signed URL; expiry is carried in `_meta.deliverables.expires_at`\non the envelope (not duplicated here). `layers` is DXF-only; PDF/SVG\ncallers omit it.",
        -                      "properties": {
        -                        "drawing_type": {
        -                          "enum": [
        -                            "section",
        -                            "plan",
        -                            "elevation",
        -                            "isometric",
        -                            "detail"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "format": {
        -                          "enum": [
        -                            "DXF",
        -                            "PDF",
        -                            "SVG"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "layers": {
        -                          "anyOf": [
        -                            {
        -                              "items": {
        -                                "type": "string"
        -                              },
        -                              "type": "array"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ],
        -                          "default": null
        -                        },
        -                        "scale": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "sheet_size": {
        -                          "enum": [
        -                            "A1",
        -                            "A2",
        -                            "A3",
        -                            "A4"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "url": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "drawing_type",
        -                        "format",
        -                        "url",
        -                        "sheet_size",
        -                        "scale"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "parameters_used": {
        -                "additionalProperties": false,
        -                "description": "Schema § 1.2 — the parameter snapshot the engine actually used.\n\nSplits user-supplied values from engine defaults so customers can see\nwhich numbers came from them and which the engine filled in. Every\ndefaulted parameter SHOULD have a corresponding entry in `assumptions`\n— the bridge layer enforces this when wrapping engine output.",
        -                "properties": {
        -                  "assumptions": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "engine_defaults": {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  "resolved_from_description": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "additionalProperties": false,
        -                          "description": "Schema § 1.2 — a parameter resolved by the forgiving-input layer.\n\nPopulated by the Track B-Forgiving Haiku-4.5 resolution pass; until that\nlayer lands, instances are constructed only by tests. `source` distinguishes\nthe resolution path so customers can audit which fields were inferred.",
        -                          "properties": {
        -                            "confidence": {
        -                              "anyOf": [
        -                                {
        -                                  "enum": [
        -                                    "high",
        -                                    "medium",
        -                                    "low"
        -                                  ],
        -                                  "type": "string"
        -                                },
        -                                {
        -                                  "type": "null"
        -                                }
        -                              ],
        -                              "default": null
        -                            },
        -                            "field_name": {
        -                              "minLength": 1,
        -                              "type": "string"
        -                            },
        -                            "resolved_value": {},
        -                            "source": {
        -                              "enum": [
        -                                "description_field",
        -                                "haiku_resolution",
        -                                "engine_default"
        -                              ],
        -                              "type": "string"
        -                            }
        -                          },
        -                          "required": [
        -                            "field_name",
        -                            "resolved_value",
        -                            "source"
        -                          ],
        -                          "type": "object"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "user_supplied": {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  }
        -                },
        -                "type": "object"
        -              },
        -              "standard": {
        -                "enum": [
        -                  "CESMM4",
        -                  "NRM2",
        -                  "SMM7",
        -                  "MMHW"
        -                ],
        -                "type": "string"
        -              },
        -              "text_summary": {
        -                "maxLength": 2000,
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "totals_summary": {
        -                "additionalProperties": false,
        -                "description": "Schema § 1.4 — totals_summary as a typed wrapper around the free-form dict.\n\nWire shape is a flat object (`{\"concrete_m3\": {...}, \"rebar_t\": {...}}`).\nWe model it as `RootModel`-equivalent via `model_config(extra=\"allow\")`\n+ a single `__root__`-style `entries` dict. Pydantic v2 recommends\n`RootModel` for free-form roots; using a wrapper class keeps the import\nsurface uniform with the rest of this module.",
        -                "properties": {
        -                  "entries": {
        -                    "additionalProperties": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.4 — single material/work-class total entry.",
        -                      "properties": {
        -                        "quantity": {
        -                          "minimum": 0,
        -                          "type": "number"
        -                        },
        -                        "unit": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "quantity",
        -                        "unit"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "object"
        -                  }
        -                },
        -                "type": "object"
        -              },
        -              "warnings": {
        -                "items": {
        -                  "additionalProperties": false,
        -                  "description": "Schema § 1.8 — a non-fatal geometry advisory (56th-fire T2).\n\nThe wire projection of the engine's `core.GeometryWarning`. Advisory only:\na warning NEVER changes a measured quantity — it flags geometry that is\nvalid but likely a mistake (e.g. a stale dependent-height default). Present\non BOTH tiers — a correctness/safety signal, not a paid feature.",
        -                  "properties": {
        -                    "affected_params": {
        -                      "items": {
        -                        "type": "string"
        -                      },
        -                      "type": "array"
        -                    },
        -                    "code": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "detail": {
        -                      "additionalProperties": {
        -                        "type": "number"
        -                      },
        -                      "type": "object"
        -                    },
        -                    "message": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "severity": {
        -                      "enum": [
        -                        "info",
        -                        "advisory",
        -                        "caution"
        -                      ],
        -                      "type": "string"
        -                    }
        -                  },
        -                  "required": [
        -                    "code",
        -                    "severity",
        -                    "message"
        -                  ],
        -                  "type": "object"
        -                },
        -                "type": "array"
        -              }
        -            },
        -            "required": [
        -              "assembly_slug",
        -              "standard",
        -              "parameters_used",
        -              "boq_rows",
        -              "totals_summary",
        -              "text_summary"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      },
        -      "error": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        -            "properties": {
        -              "code": {
        -                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        -                "enum": [
        -                  "RATE_LIMIT_EXCEEDED",
        -                  "TIER_INSUFFICIENT",
        -                  "INVALID_INPUT",
        -                  "SCHEMA_VERSION_MISMATCH",
        -                  "SCHEMA_INVARIANT_VIOLATION",
        -                  "UPSTREAM_TIMEOUT",
        -                  "BACKEND_FAILURE",
        -                  "IP_BLOCKED",
        -                  "RESOURCE_NOT_FOUND",
        -                  "RENDER_FAILURE",
        -                  "OCR_LOW_CONFIDENCE",
        -                  "MANUAL_REVIEW_REQUIRED",
        -                  "ACCEPTANCE_REQUIRED",
        -                  "INVALID_TOKEN"
        -                ],
        -                "type": "string"
        -              },
        -              "details": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "message": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "recoverable": {
        -                "type": "boolean"
        -              },
        -              "retry_after_seconds": {
        -                "anyOf": [
        -                  {
        -                    "minimum": 0,
        -                    "type": "integer"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              }
        -            },
        -            "required": [
        -              "code",
        -              "message",
        -              "recoverable"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      }
        -    },
        -    "required": [
        -      "_meta"
        -    ],
        -    "type": "object"
        -  },
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "_meta": {
        -        "additionalProperties": false,
        -        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        -        "properties": {
        -          "deliverables": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        -                "properties": {
        -                  "docx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "dxf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "expires_at": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  },
        -                  "pdf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "xlsx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "expires_at"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "document_id": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "issued_at": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "rate_limit_remaining": {
        -            "anyOf": [
        -              {
        -                "minimum": 0,
        -                "type": "integer"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "request_id": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "schema_version": {
        -            "const": "1.0.0",
        -            "default": "1.0.0",
        -            "type": "string"
        -          },
        -          "scope_boundary": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        -                "properties": {
        -                  "not_in_scope": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "produced": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "recommended_companions": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "type": "string"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "produced",
        -                  "not_in_scope"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tier": {
        -            "enum": [
        -              "free",
        -              "paid"
        -            ],
        -            "type": "string"
        -          },
        -          "tier_upgrade": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        -                "properties": {
        -                  "available_tiers": {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        -                      "properties": {
        -                        "billing": {
        -                          "enum": [
        -                            "one_off",
        -                            "monthly",
        -                            "annual"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "currency": {
        -                          "enum": [
        -                            "GBP",
        -                            "SGD",
        -                            "EUR",
        -                            "USD",
        -                            "CAD",
        -                            "AUD",
        -                            "NZD",
        -                            "MYR"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "display_name": {
        -                          "type": "string"
        -                        },
        -                        "price_local": {
        -                          "type": "number"
        -                        },
        -                        "tier_slug": {
        -                          "enum": [
        -                            "7_day_pass",
        -                            "solo",
        -                            "studio",
        -                            "practice"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "unlock_summary": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "tier_slug",
        -                        "display_name",
        -                        "price_local",
        -                        "currency",
        -                        "billing",
        -                        "unlock_summary"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "current_tier": {
        -                    "const": "free",
        -                    "default": "free",
        -                    "type": "string"
        -                  },
        -                  "pass_credit": {
        -                    "anyOf": [
        -                      {
        -                        "additionalProperties": false,
        -                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        -                        "properties": {
        -                          "amount_local": {
        -                            "type": "number"
        -                          },
        -                          "applies_to": {
        -                            "const": "solo_first_month",
        -                            "default": "solo_first_month",
        -                            "type": "string"
        -                          },
        -                          "currency": {
        -                            "type": "string"
        -                          },
        -                          "redeemable_until": {
        -                            "type": "string"
        -                          }
        -                        },
        -                        "required": [
        -                          "amount_local",
        -                          "currency",
        -                          "redeemable_until"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "pricing_url": {
        -                    "default": "https://civilquants.com/pricing",
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "available_tiers"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tos_url": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "upgrade_hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "warranty_disclaimer": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          }
        -        },
        -        "required": [
        -          "request_id",
        -          "issued_at",
        -          "tier"
        -        ],
        -        "type": "object"
        -      },
        -      "data": {
        -        "default": null,
        -        "title": "Data"
        -      },
        -      "error": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        -            "properties": {
        -              "code": {
        -                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        -                "enum": [
        -                  "RATE_LIMIT_EXCEEDED",
        -                  "TIER_INSUFFICIENT",
        -                  "INVALID_INPUT",
        -                  "SCHEMA_VERSION_MISMATCH",
        -                  "SCHEMA_INVARIANT_VIOLATION",
        -                  "UPSTREAM_TIMEOUT",
        -                  "BACKEND_FAILURE",
        -                  "IP_BLOCKED",
        -                  "RESOURCE_NOT_FOUND",
        -                  "RENDER_FAILURE",
        -                  "OCR_LOW_CONFIDENCE",
        -                  "MANUAL_REVIEW_REQUIRED",
        -                  "ACCEPTANCE_REQUIRED",
        -                  "INVALID_TOKEN"
        -                ],
        -                "type": "string"
        -              },
        -              "details": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "message": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "recoverable": {
        -                "type": "boolean"
        -              },
        -              "retry_after_seconds": {
        -                "anyOf": [
        -                  {
        -                    "minimum": 0,
        -                    "type": "integer"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              }
        -            },
        -            "required": [
        -              "code",
        -              "message",
        -              "recoverable"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      }
        -    },
        -    "required": [
        -      "_meta"
        -    ],
        -    "type": "object"
        -  }
        -]New value: +[
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "_meta": {
        +        "additionalProperties": false,
        +        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        +        "properties": {
        +          "deliverables": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        +                "properties": {
        +                  "docx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "dxf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "expires_at": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  },
        +                  "pdf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "xlsx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "expires_at"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "document_id": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "issued_at": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "rate_limit_remaining": {
        +            "anyOf": [
        +              {
        +                "minimum": 0,
        +                "type": "integer"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "request_id": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "schema_version": {
        +            "const": "1.0.0",
        +            "default": "1.0.0",
        +            "type": "string"
        +          },
        +          "scope_boundary": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        +                "properties": {
        +                  "not_in_scope": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "produced": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "recommended_companions": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "type": "string"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "produced",
        +                  "not_in_scope"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tier": {
        +            "enum": [
        +              "free",
        +              "paid"
        +            ],
        +            "type": "string"
        +          },
        +          "tier_upgrade": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        +                "properties": {
        +                  "available_tiers": {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        +                      "properties": {
        +                        "billing": {
        +                          "enum": [
        +                            "one_off",
        +                            "monthly",
        +                            "annual"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "currency": {
        +                          "enum": [
        +                            "GBP",
        +                            "SGD",
        +                            "EUR",
        +                            "USD",
        +                            "CAD",
        +                            "AUD",
        +                            "NZD",
        +                            "MYR"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "display_name": {
        +                          "type": "string"
        +                        },
        +                        "price_local": {
        +                          "type": "number"
        +                        },
        +                        "tier_slug": {
        +                          "enum": [
        +                            "7_day_pass",
        +                            "solo",
        +                            "studio",
        +                            "practice"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "unlock_summary": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "tier_slug",
        +                        "display_name",
        +                        "price_local",
        +                        "currency",
        +                        "billing",
        +                        "unlock_summary"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "current_tier": {
        +                    "const": "free",
        +                    "default": "free",
        +                    "type": "string"
        +                  },
        +                  "pass_credit": {
        +                    "anyOf": [
        +                      {
        +                        "additionalProperties": false,
        +                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        +                        "properties": {
        +                          "amount_local": {
        +                            "type": "number"
        +                          },
        +                          "applies_to": {
        +                            "const": "solo_first_month",
        +                            "default": "solo_first_month",
        +                            "type": "string"
        +                          },
        +                          "currency": {
        +                            "type": "string"
        +                          },
        +                          "redeemable_until": {
        +                            "type": "string"
        +                          }
        +                        },
        +                        "required": [
        +                          "amount_local",
        +                          "currency",
        +                          "redeemable_until"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "pricing_url": {
        +                    "default": "https://civilquants.com/pricing",
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "available_tiers"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tos_url": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "upgrade_hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "warranty_disclaimer": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          }
        +        },
        +        "required": [
        +          "request_id",
        +          "issued_at",
        +          "tier"
        +        ],
        +        "type": "object"
        +      },
        +      "data": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Schema § 1.1 — the typed payload returned inside `MCPResponse[ComputeResult]`.\n\nFree-tier responses omit `drawings` (the downloadable CAD artefact\npointers — the paid differentiator); the bridge enforces this. The\n`audit_trail` and the inline `drawing` preview are present on BOTH tiers\n(V1 ALIGN / 60th-fire D + C). `text_summary` is bounded to 2000 chars —\nkeeps the LLM-facing summary token-cheap and forces longer narrative into\nBoQ row descriptions where it belongs. `warnings` is the non-fatal\ngeometry advisory list (both tiers).",
        +            "properties": {
        +              "assembly_slug": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "audit_trail": {
        +                "anyOf": [
        +                  {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.7 — paid-tier audit-trail entry.\n\nOne entry per BoQ row; `boq_row_index` ties to the row position in\n`ComputeResult.boq_rows`. `derivation` is the human-readable formula\nwalk-through; `formula` is the optional formal expression.",
        +                      "properties": {
        +                        "boq_row_index": {
        +                          "minimum": 0,
        +                          "type": "integer"
        +                        },
        +                        "derivation": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "formula": {
        +                          "anyOf": [
        +                            {
        +                              "type": "string"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ],
        +                          "default": null
        +                        },
        +                        "id": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "parameters_referenced": {
        +                          "items": {
        +                            "type": "string"
        +                          },
        +                          "type": "array"
        +                        }
        +                      },
        +                      "required": [
        +                        "id",
        +                        "boq_row_index",
        +                        "derivation"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "boq_rows": {
        +                "items": {
        +                  "additionalProperties": false,
        +                  "description": "Schema § 1.3 — a single bill row in the requested standard's format.\n\n`description` is the non-verbatim functional description per spec § 13.9 /\n§ 15 invariant — NEVER reproduces a standard's verbatim clause text.\n`rate` / `amount` ship null because rates are commodity data the customer\nowns; the engine's job is the measurement, not the pricing.",
        +                  "properties": {
        +                    "amount": {
        +                      "anyOf": [
        +                        {
        +                          "type": "number"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "attribution": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "audit_id": {
        +                      "anyOf": [
        +                        {
        +                          "type": "string"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "description": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "quantity": {
        +                      "minimum": 0,
        +                      "type": "number"
        +                    },
        +                    "rate": {
        +                      "anyOf": [
        +                        {
        +                          "type": "number"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "unit": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "work_section": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    }
        +                  },
        +                  "required": [
        +                    "work_section",
        +                    "description",
        +                    "quantity",
        +                    "unit",
        +                    "attribution"
        +                  ],
        +                  "type": "object"
        +                },
        +                "type": "array"
        +              },
        +              "drawing": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": false,
        +                    "description": "Schema § 1.6a — inline server-rendered SVG preview of the geometry.\n\nThe MCP mirror of the web ``/compute`` response's ``drawing`` field\n(``api.schemas.compute.DrawingRef``): the same on-screen dimensioned\ndrawing both tiers see in the workspace, surfaced on the MCP compute\nresponse so a chat client can render it inline (60th-fire item C). This\nis the on-screen preview — present on BOTH tiers per the free/paid\nboundary; the downloadable CAD artefacts (DXF / dimensioned PDF) remain\nthe paid differentiator via the export tools.\n\nDefined here rather than importing ``DrawingRef`` because the web\n``schemas`` package imports back into this module (``schemas.render``),\nso reusing it would create an import cycle — the MCP wire contract keeps\nits own copy, the same pattern as ``BoQRow`` / ``DrawingReference``.",
        +                    "properties": {
        +                      "entity_count": {
        +                        "minimum": 0,
        +                        "type": "integer"
        +                      },
        +                      "svg_b64": {
        +                        "minLength": 1,
        +                        "type": "string"
        +                      },
        +                      "unit_of_drawing": {
        +                        "const": "m",
        +                        "default": "m",
        +                        "type": "string"
        +                      },
        +                      "viewbox_height": {
        +                        "exclusiveMinimum": 0,
        +                        "type": "number"
        +                      },
        +                      "viewbox_width": {
        +                        "exclusiveMinimum": 0,
        +                        "type": "number"
        +                      },
        +                      "viewbox_x": {
        +                        "type": "number"
        +                      },
        +                      "viewbox_y": {
        +                        "type": "number"
        +                      }
        +                    },
        +                    "required": [
        +                      "svg_b64",
        +                      "viewbox_x",
        +                      "viewbox_y",
        +                      "viewbox_width",
        +                      "viewbox_height",
        +                      "entity_count"
        +                    ],
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "drawings": {
        +                "anyOf": [
        +                  {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.6 — paid-tier drawing artefact pointer.\n\n`url` is an R2-signed URL; expiry is carried in `_meta.deliverables.expires_at`\non the envelope (not duplicated here). `layers` is DXF-only; PDF/SVG\ncallers omit it.",
        +                      "properties": {
        +                        "drawing_type": {
        +                          "enum": [
        +                            "section",
        +                            "plan",
        +                            "elevation",
        +                            "isometric",
        +                            "detail"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "format": {
        +                          "enum": [
        +                            "DXF",
        +                            "PDF",
        +                            "SVG"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "layers": {
        +                          "anyOf": [
        +                            {
        +                              "items": {
        +                                "type": "string"
        +                              },
        +                              "type": "array"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ],
        +                          "default": null
        +                        },
        +                        "scale": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "sheet_size": {
        +                          "enum": [
        +                            "A1",
        +                            "A2",
        +                            "A3",
        +                            "A4"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "url": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "drawing_type",
        +                        "format",
        +                        "url",
        +                        "sheet_size",
        +                        "scale"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "parameters_used": {
        +                "additionalProperties": false,
        +                "description": "Schema § 1.2 — the parameter snapshot the engine actually used.\n\nSplits user-supplied values from engine defaults so customers can see\nwhich numbers came from them and which the engine filled in. Every\ndefaulted parameter SHOULD have a corresponding entry in `assumptions`\n— the bridge layer enforces this when wrapping engine output.",
        +                "properties": {
        +                  "assumptions": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "engine_defaults": {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  "user_supplied": {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  }
        +                },
        +                "type": "object"
        +              },
        +              "standard": {
        +                "enum": [
        +                  "CESMM4",
        +                  "NRM2",
        +                  "SMM7",
        +                  "MMHW"
        +                ],
        +                "type": "string"
        +              },
        +              "text_summary": {
        +                "maxLength": 2000,
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "totals_summary": {
        +                "additionalProperties": false,
        +                "description": "Schema § 1.4 — totals_summary as a typed wrapper around the free-form dict.\n\nWire shape is a flat object (`{\"concrete_m3\": {...}, \"rebar_t\": {...}}`).\nWe model it as `RootModel`-equivalent via `model_config(extra=\"allow\")`\n+ a single `__root__`-style `entries` dict. Pydantic v2 recommends\n`RootModel` for free-form roots; using a wrapper class keeps the import\nsurface uniform with the rest of this module.",
        +                "properties": {
        +                  "entries": {
        +                    "additionalProperties": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.4 — single material/work-class total entry.",
        +                      "properties": {
        +                        "quantity": {
        +                          "minimum": 0,
        +                          "type": "number"
        +                        },
        +                        "unit": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "quantity",
        +                        "unit"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "object"
        +                  }
        +                },
        +                "type": "object"
        +              },
        +              "warnings": {
        +                "items": {
        +                  "additionalProperties": false,
        +                  "description": "Schema § 1.8 — a non-fatal geometry advisory (56th-fire T2).\n\nThe wire projection of the engine's `core.GeometryWarning`. Advisory only:\na warning NEVER changes a measured quantity — it flags geometry that is\nvalid but likely a mistake (e.g. a stale dependent-height default). Present\non BOTH tiers — a correctness/safety signal, not a paid feature.",
        +                  "properties": {
        +                    "affected_params": {
        +                      "items": {
        +                        "type": "string"
        +                      },
        +                      "type": "array"
        +                    },
        +                    "code": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "detail": {
        +                      "additionalProperties": {
        +                        "type": "number"
        +                      },
        +                      "type": "object"
        +                    },
        +                    "message": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "severity": {
        +                      "enum": [
        +                        "info",
        +                        "advisory",
        +                        "caution"
        +                      ],
        +                      "type": "string"
        +                    }
        +                  },
        +                  "required": [
        +                    "code",
        +                    "severity",
        +                    "message"
        +                  ],
        +                  "type": "object"
        +                },
        +                "type": "array"
        +              }
        +            },
        +            "required": [
        +              "assembly_slug",
        +              "standard",
        +              "parameters_used",
        +              "boq_rows",
        +              "totals_summary",
        +              "text_summary"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      },
        +      "error": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        +            "properties": {
        +              "code": {
        +                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        +                "enum": [
        +                  "RATE_LIMIT_EXCEEDED",
        +                  "TIER_INSUFFICIENT",
        +                  "INVALID_INPUT",
        +                  "SCHEMA_VERSION_MISMATCH",
        +                  "SCHEMA_INVARIANT_VIOLATION",
        +                  "UPSTREAM_TIMEOUT",
        +                  "BACKEND_FAILURE",
        +                  "IP_BLOCKED",
        +                  "RESOURCE_NOT_FOUND",
        +                  "RENDER_FAILURE",
        +                  "OCR_LOW_CONFIDENCE",
        +                  "MANUAL_REVIEW_REQUIRED",
        +                  "ACCEPTANCE_REQUIRED",
        +                  "INVALID_TOKEN"
        +                ],
        +                "type": "string"
        +              },
        +              "details": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "message": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "recoverable": {
        +                "type": "boolean"
        +              },
        +              "retry_after_seconds": {
        +                "anyOf": [
        +                  {
        +                    "minimum": 0,
        +                    "type": "integer"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              }
        +            },
        +            "required": [
        +              "code",
        +              "message",
        +              "recoverable"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      }
        +    },
        +    "required": [
        +      "_meta"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "_meta": {
        +        "additionalProperties": false,
        +        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        +        "properties": {
        +          "deliverables": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        +                "properties": {
        +                  "docx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "dxf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "expires_at": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  },
        +                  "pdf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "xlsx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "expires_at"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "document_id": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "issued_at": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "rate_limit_remaining": {
        +            "anyOf": [
        +              {
        +                "minimum": 0,
        +                "type": "integer"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "request_id": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "schema_version": {
        +            "const": "1.0.0",
        +            "default": "1.0.0",
        +            "type": "string"
        +          },
        +          "scope_boundary": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        +                "properties": {
        +                  "not_in_scope": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "produced": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "recommended_companions": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "type": "string"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "produced",
        +                  "not_in_scope"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tier": {
        +            "enum": [
        +              "free",
        +              "paid"
        +            ],
        +            "type": "string"
        +          },
        +          "tier_upgrade": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        +                "properties": {
        +                  "available_tiers": {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        +                      "properties": {
        +                        "billing": {
        +                          "enum": [
        +                            "one_off",
        +                            "monthly",
        +                            "annual"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "currency": {
        +                          "enum": [
        +                            "GBP",
        +                            "SGD",
        +                            "EUR",
        +                            "USD",
        +                            "CAD",
        +                            "AUD",
        +                            "NZD",
        +                            "MYR"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "display_name": {
        +                          "type": "string"
        +                        },
        +                        "price_local": {
        +                          "type": "number"
        +                        },
        +                        "tier_slug": {
        +                          "enum": [
        +                            "7_day_pass",
        +                            "solo",
        +                            "studio",
        +                            "practice"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "unlock_summary": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "tier_slug",
        +                        "display_name",
        +                        "price_local",
        +                        "currency",
        +                        "billing",
        +                        "unlock_summary"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "current_tier": {
        +                    "const": "free",
        +                    "default": "free",
        +                    "type": "string"
        +                  },
        +                  "pass_credit": {
        +                    "anyOf": [
        +                      {
        +                        "additionalProperties": false,
        +                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        +                        "properties": {
        +                          "amount_local": {
        +                            "type": "number"
        +                          },
        +                          "applies_to": {
        +                            "const": "solo_first_month",
        +                            "default": "solo_first_month",
        +                            "type": "string"
        +                          },
        +                          "currency": {
        +                            "type": "string"
        +                          },
        +                          "redeemable_until": {
        +                            "type": "string"
        +                          }
        +                        },
        +                        "required": [
        +                          "amount_local",
        +                          "currency",
        +                          "redeemable_until"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "pricing_url": {
        +                    "default": "https://civilquants.com/pricing",
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "available_tiers"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tos_url": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "upgrade_hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "warranty_disclaimer": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          }
        +        },
        +        "required": [
        +          "request_id",
        +          "issued_at",
        +          "tier"
        +        ],
        +        "type": "object"
        +      },
        +      "data": {
        +        "default": null,
        +        "title": "Data"
        +      },
        +      "error": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        +            "properties": {
        +              "code": {
        +                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        +                "enum": [
        +                  "RATE_LIMIT_EXCEEDED",
        +                  "TIER_INSUFFICIENT",
        +                  "INVALID_INPUT",
        +                  "SCHEMA_VERSION_MISMATCH",
        +                  "SCHEMA_INVARIANT_VIOLATION",
        +                  "UPSTREAM_TIMEOUT",
        +                  "BACKEND_FAILURE",
        +                  "IP_BLOCKED",
        +                  "RESOURCE_NOT_FOUND",
        +                  "RENDER_FAILURE",
        +                  "OCR_LOW_CONFIDENCE",
        +                  "MANUAL_REVIEW_REQUIRED",
        +                  "ACCEPTANCE_REQUIRED",
        +                  "INVALID_TOKEN"
        +                ],
        +                "type": "string"
        +              },
        +              "details": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "message": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "recoverable": {
        +                "type": "boolean"
        +              },
        +              "retry_after_seconds": {
        +                "anyOf": [
        +                  {
        +                    "minimum": 0,
        +                    "type": "integer"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              }
        +            },
        +            "required": [
        +              "code",
        +              "message",
        +              "recoverable"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      }
        +    },
        +    "required": [
        +      "_meta"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedcompute_manhole_precast1 field changed
      • changedOutput schema / properties / result / anyOf
        Previous value: -[
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "_meta": {
        -        "additionalProperties": false,
        -        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        -        "properties": {
        -          "deliverables": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        -                "properties": {
        -                  "docx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "dxf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "expires_at": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  },
        -                  "pdf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "xlsx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "expires_at"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "document_id": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "issued_at": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "rate_limit_remaining": {
        -            "anyOf": [
        -              {
        -                "minimum": 0,
        -                "type": "integer"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "request_id": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "schema_version": {
        -            "const": "1.0.0",
        -            "default": "1.0.0",
        -            "type": "string"
        -          },
        -          "scope_boundary": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        -                "properties": {
        -                  "not_in_scope": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "produced": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "recommended_companions": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "type": "string"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "produced",
        -                  "not_in_scope"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tier": {
        -            "enum": [
        -              "free",
        -              "paid"
        -            ],
        -            "type": "string"
        -          },
        -          "tier_upgrade": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        -                "properties": {
        -                  "available_tiers": {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        -                      "properties": {
        -                        "billing": {
        -                          "enum": [
        -                            "one_off",
        -                            "monthly",
        -                            "annual"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "currency": {
        -                          "enum": [
        -                            "GBP",
        -                            "SGD",
        -                            "EUR",
        -                            "USD",
        -                            "CAD",
        -                            "AUD",
        -                            "NZD",
        -                            "MYR"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "display_name": {
        -                          "type": "string"
        -                        },
        -                        "price_local": {
        -                          "type": "number"
        -                        },
        -                        "tier_slug": {
        -                          "enum": [
        -                            "7_day_pass",
        -                            "solo",
        -                            "studio",
        -                            "practice"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "unlock_summary": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "tier_slug",
        -                        "display_name",
        -                        "price_local",
        -                        "currency",
        -                        "billing",
        -                        "unlock_summary"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "current_tier": {
        -                    "const": "free",
        -                    "default": "free",
        -                    "type": "string"
        -                  },
        -                  "pass_credit": {
        -                    "anyOf": [
        -                      {
        -                        "additionalProperties": false,
        -                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        -                        "properties": {
        -                          "amount_local": {
        -                            "type": "number"
        -                          },
        -                          "applies_to": {
        -                            "const": "solo_first_month",
        -                            "default": "solo_first_month",
        -                            "type": "string"
        -                          },
        -                          "currency": {
        -                            "type": "string"
        -                          },
        -                          "redeemable_until": {
        -                            "type": "string"
        -                          }
        -                        },
        -                        "required": [
        -                          "amount_local",
        -                          "currency",
        -                          "redeemable_until"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "pricing_url": {
        -                    "default": "https://civilquants.com/pricing",
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "available_tiers"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tos_url": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "upgrade_hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "warranty_disclaimer": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          }
        -        },
        -        "required": [
        -          "request_id",
        -          "issued_at",
        -          "tier"
        -        ],
        -        "type": "object"
        -      },
        -      "data": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Schema § 1.1 — the typed payload returned inside `MCPResponse[ComputeResult]`.\n\nFree-tier responses omit `drawings` (the downloadable CAD artefact\npointers — the paid differentiator); the bridge enforces this. The\n`audit_trail` and the inline `drawing` preview are present on BOTH tiers\n(V1 ALIGN / 60th-fire D + C). `text_summary` is bounded to 2000 chars —\nkeeps the LLM-facing summary token-cheap and forces longer narrative into\nBoQ row descriptions where it belongs. `warnings` is the non-fatal\ngeometry advisory list (both tiers).",
        -            "properties": {
        -              "assembly_slug": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "audit_trail": {
        -                "anyOf": [
        -                  {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.7 — paid-tier audit-trail entry.\n\nOne entry per BoQ row; `boq_row_index` ties to the row position in\n`ComputeResult.boq_rows`. `derivation` is the human-readable formula\nwalk-through; `formula` is the optional formal expression.",
        -                      "properties": {
        -                        "boq_row_index": {
        -                          "minimum": 0,
        -                          "type": "integer"
        -                        },
        -                        "derivation": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "formula": {
        -                          "anyOf": [
        -                            {
        -                              "type": "string"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ],
        -                          "default": null
        -                        },
        -                        "id": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "parameters_referenced": {
        -                          "items": {
        -                            "type": "string"
        -                          },
        -                          "type": "array"
        -                        }
        -                      },
        -                      "required": [
        -                        "id",
        -                        "boq_row_index",
        -                        "derivation"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "boq_rows": {
        -                "items": {
        -                  "additionalProperties": false,
        -                  "description": "Schema § 1.3 — a single bill row in the requested standard's format.\n\n`description` is the non-verbatim functional description per spec § 13.9 /\n§ 15 invariant — NEVER reproduces a standard's verbatim clause text.\n`rate` / `amount` ship null because rates are commodity data the customer\nowns; the engine's job is the measurement, not the pricing.",
        -                  "properties": {
        -                    "amount": {
        -                      "anyOf": [
        -                        {
        -                          "type": "number"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "attribution": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "audit_id": {
        -                      "anyOf": [
        -                        {
        -                          "type": "string"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "description": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "quantity": {
        -                      "minimum": 0,
        -                      "type": "number"
        -                    },
        -                    "rate": {
        -                      "anyOf": [
        -                        {
        -                          "type": "number"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "unit": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "work_section": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    }
        -                  },
        -                  "required": [
        -                    "work_section",
        -                    "description",
        -                    "quantity",
        -                    "unit",
        -                    "attribution"
        -                  ],
        -                  "type": "object"
        -                },
        -                "type": "array"
        -              },
        -              "drawing": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": false,
        -                    "description": "Schema § 1.6a — inline server-rendered SVG preview of the geometry.\n\nThe MCP mirror of the web ``/compute`` response's ``drawing`` field\n(``api.schemas.compute.DrawingRef``): the same on-screen dimensioned\ndrawing both tiers see in the workspace, surfaced on the MCP compute\nresponse so a chat client can render it inline (60th-fire item C). This\nis the on-screen preview — present on BOTH tiers per the free/paid\nboundary; the downloadable CAD artefacts (DXF / dimensioned PDF) remain\nthe paid differentiator via the export tools.\n\nDefined here rather than importing ``DrawingRef`` because the web\n``schemas`` package imports back into this module (``schemas.render``),\nso reusing it would create an import cycle — the MCP wire contract keeps\nits own copy, the same pattern as ``BoQRow`` / ``DrawingReference``.",
        -                    "properties": {
        -                      "entity_count": {
        -                        "minimum": 0,
        -                        "type": "integer"
        -                      },
        -                      "svg_b64": {
        -                        "minLength": 1,
        -                        "type": "string"
        -                      },
        -                      "unit_of_drawing": {
        -                        "const": "m",
        -                        "default": "m",
        -                        "type": "string"
        -                      },
        -                      "viewbox_height": {
        -                        "exclusiveMinimum": 0,
        -                        "type": "number"
        -                      },
        -                      "viewbox_width": {
        -                        "exclusiveMinimum": 0,
        -                        "type": "number"
        -                      },
        -                      "viewbox_x": {
        -                        "type": "number"
        -                      },
        -                      "viewbox_y": {
        -                        "type": "number"
        -                      }
        -                    },
        -                    "required": [
        -                      "svg_b64",
        -                      "viewbox_x",
        -                      "viewbox_y",
        -                      "viewbox_width",
        -                      "viewbox_height",
        -                      "entity_count"
        -                    ],
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "drawings": {
        -                "anyOf": [
        -                  {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.6 — paid-tier drawing artefact pointer.\n\n`url` is an R2-signed URL; expiry is carried in `_meta.deliverables.expires_at`\non the envelope (not duplicated here). `layers` is DXF-only; PDF/SVG\ncallers omit it.",
        -                      "properties": {
        -                        "drawing_type": {
        -                          "enum": [
        -                            "section",
        -                            "plan",
        -                            "elevation",
        -                            "isometric",
        -                            "detail"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "format": {
        -                          "enum": [
        -                            "DXF",
        -                            "PDF",
        -                            "SVG"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "layers": {
        -                          "anyOf": [
        -                            {
        -                              "items": {
        -                                "type": "string"
        -                              },
        -                              "type": "array"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ],
        -                          "default": null
        -                        },
        -                        "scale": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "sheet_size": {
        -                          "enum": [
        -                            "A1",
        -                            "A2",
        -                            "A3",
        -                            "A4"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "url": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "drawing_type",
        -                        "format",
        -                        "url",
        -                        "sheet_size",
        -                        "scale"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "parameters_used": {
        -                "additionalProperties": false,
        -                "description": "Schema § 1.2 — the parameter snapshot the engine actually used.\n\nSplits user-supplied values from engine defaults so customers can see\nwhich numbers came from them and which the engine filled in. Every\ndefaulted parameter SHOULD have a corresponding entry in `assumptions`\n— the bridge layer enforces this when wrapping engine output.",
        -                "properties": {
        -                  "assumptions": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "engine_defaults": {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  "resolved_from_description": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "additionalProperties": false,
        -                          "description": "Schema § 1.2 — a parameter resolved by the forgiving-input layer.\n\nPopulated by the Track B-Forgiving Haiku-4.5 resolution pass; until that\nlayer lands, instances are constructed only by tests. `source` distinguishes\nthe resolution path so customers can audit which fields were inferred.",
        -                          "properties": {
        -                            "confidence": {
        -                              "anyOf": [
        -                                {
        -                                  "enum": [
        -                                    "high",
        -                                    "medium",
        -                                    "low"
        -                                  ],
        -                                  "type": "string"
        -                                },
        -                                {
        -                                  "type": "null"
        -                                }
        -                              ],
        -                              "default": null
        -                            },
        -                            "field_name": {
        -                              "minLength": 1,
        -                              "type": "string"
        -                            },
        -                            "resolved_value": {},
        -                            "source": {
        -                              "enum": [
        -                                "description_field",
        -                                "haiku_resolution",
        -                                "engine_default"
        -                              ],
        -                              "type": "string"
        -                            }
        -                          },
        -                          "required": [
        -                            "field_name",
        -                            "resolved_value",
        -                            "source"
        -                          ],
        -                          "type": "object"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "user_supplied": {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  }
        -                },
        -                "type": "object"
        -              },
        -              "standard": {
        -                "enum": [
        -                  "CESMM4",
        -                  "NRM2",
        -                  "SMM7",
        -                  "MMHW"
        -                ],
        -                "type": "string"
        -              },
        -              "text_summary": {
        -                "maxLength": 2000,
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "totals_summary": {
        -                "additionalProperties": false,
        -                "description": "Schema § 1.4 — totals_summary as a typed wrapper around the free-form dict.\n\nWire shape is a flat object (`{\"concrete_m3\": {...}, \"rebar_t\": {...}}`).\nWe model it as `RootModel`-equivalent via `model_config(extra=\"allow\")`\n+ a single `__root__`-style `entries` dict. Pydantic v2 recommends\n`RootModel` for free-form roots; using a wrapper class keeps the import\nsurface uniform with the rest of this module.",
        -                "properties": {
        -                  "entries": {
        -                    "additionalProperties": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.4 — single material/work-class total entry.",
        -                      "properties": {
        -                        "quantity": {
        -                          "minimum": 0,
        -                          "type": "number"
        -                        },
        -                        "unit": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "quantity",
        -                        "unit"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "object"
        -                  }
        -                },
        -                "type": "object"
        -              },
        -              "warnings": {
        -                "items": {
        -                  "additionalProperties": false,
        -                  "description": "Schema § 1.8 — a non-fatal geometry advisory (56th-fire T2).\n\nThe wire projection of the engine's `core.GeometryWarning`. Advisory only:\na warning NEVER changes a measured quantity — it flags geometry that is\nvalid but likely a mistake (e.g. a stale dependent-height default). Present\non BOTH tiers — a correctness/safety signal, not a paid feature.",
        -                  "properties": {
        -                    "affected_params": {
        -                      "items": {
        -                        "type": "string"
        -                      },
        -                      "type": "array"
        -                    },
        -                    "code": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "detail": {
        -                      "additionalProperties": {
        -                        "type": "number"
        -                      },
        -                      "type": "object"
        -                    },
        -                    "message": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "severity": {
        -                      "enum": [
        -                        "info",
        -                        "advisory",
        -                        "caution"
        -                      ],
        -                      "type": "string"
        -                    }
        -                  },
        -                  "required": [
        -                    "code",
        -                    "severity",
        -                    "message"
        -                  ],
        -                  "type": "object"
        -                },
        -                "type": "array"
        -              }
        -            },
        -            "required": [
        -              "assembly_slug",
        -              "standard",
        -              "parameters_used",
        -              "boq_rows",
        -              "totals_summary",
        -              "text_summary"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      },
        -      "error": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        -            "properties": {
        -              "code": {
        -                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        -                "enum": [
        -                  "RATE_LIMIT_EXCEEDED",
        -                  "TIER_INSUFFICIENT",
        -                  "INVALID_INPUT",
        -                  "SCHEMA_VERSION_MISMATCH",
        -                  "SCHEMA_INVARIANT_VIOLATION",
        -                  "UPSTREAM_TIMEOUT",
        -                  "BACKEND_FAILURE",
        -                  "IP_BLOCKED",
        -                  "RESOURCE_NOT_FOUND",
        -                  "RENDER_FAILURE",
        -                  "OCR_LOW_CONFIDENCE",
        -                  "MANUAL_REVIEW_REQUIRED",
        -                  "ACCEPTANCE_REQUIRED",
        -                  "INVALID_TOKEN"
        -                ],
        -                "type": "string"
        -              },
        -              "details": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "message": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "recoverable": {
        -                "type": "boolean"
        -              },
        -              "retry_after_seconds": {
        -                "anyOf": [
        -                  {
        -                    "minimum": 0,
        -                    "type": "integer"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              }
        -            },
        -            "required": [
        -              "code",
        -              "message",
        -              "recoverable"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      }
        -    },
        -    "required": [
        -      "_meta"
        -    ],
        -    "type": "object"
        -  },
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "_meta": {
        -        "additionalProperties": false,
        -        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        -        "properties": {
        -          "deliverables": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        -                "properties": {
        -                  "docx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "dxf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "expires_at": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  },
        -                  "pdf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "xlsx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "expires_at"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "document_id": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "issued_at": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "rate_limit_remaining": {
        -            "anyOf": [
        -              {
        -                "minimum": 0,
        -                "type": "integer"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "request_id": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "schema_version": {
        -            "const": "1.0.0",
        -            "default": "1.0.0",
        -            "type": "string"
        -          },
        -          "scope_boundary": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        -                "properties": {
        -                  "not_in_scope": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "produced": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "recommended_companions": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "type": "string"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "produced",
        -                  "not_in_scope"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tier": {
        -            "enum": [
        -              "free",
        -              "paid"
        -            ],
        -            "type": "string"
        -          },
        -          "tier_upgrade": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        -                "properties": {
        -                  "available_tiers": {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        -                      "properties": {
        -                        "billing": {
        -                          "enum": [
        -                            "one_off",
        -                            "monthly",
        -                            "annual"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "currency": {
        -                          "enum": [
        -                            "GBP",
        -                            "SGD",
        -                            "EUR",
        -                            "USD",
        -                            "CAD",
        -                            "AUD",
        -                            "NZD",
        -                            "MYR"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "display_name": {
        -                          "type": "string"
        -                        },
        -                        "price_local": {
        -                          "type": "number"
        -                        },
        -                        "tier_slug": {
        -                          "enum": [
        -                            "7_day_pass",
        -                            "solo",
        -                            "studio",
        -                            "practice"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "unlock_summary": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "tier_slug",
        -                        "display_name",
        -                        "price_local",
        -                        "currency",
        -                        "billing",
        -                        "unlock_summary"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "current_tier": {
        -                    "const": "free",
        -                    "default": "free",
        -                    "type": "string"
        -                  },
        -                  "pass_credit": {
        -                    "anyOf": [
        -                      {
        -                        "additionalProperties": false,
        -                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        -                        "properties": {
        -                          "amount_local": {
        -                            "type": "number"
        -                          },
        -                          "applies_to": {
        -                            "const": "solo_first_month",
        -                            "default": "solo_first_month",
        -                            "type": "string"
        -                          },
        -                          "currency": {
        -                            "type": "string"
        -                          },
        -                          "redeemable_until": {
        -                            "type": "string"
        -                          }
        -                        },
        -                        "required": [
        -                          "amount_local",
        -                          "currency",
        -                          "redeemable_until"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "pricing_url": {
        -                    "default": "https://civilquants.com/pricing",
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "available_tiers"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tos_url": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "upgrade_hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "warranty_disclaimer": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          }
        -        },
        -        "required": [
        -          "request_id",
        -          "issued_at",
        -          "tier"
        -        ],
        -        "type": "object"
        -      },
        -      "data": {
        -        "default": null,
        -        "title": "Data"
        -      },
        -      "error": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        -            "properties": {
        -              "code": {
        -                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        -                "enum": [
        -                  "RATE_LIMIT_EXCEEDED",
        -                  "TIER_INSUFFICIENT",
        -                  "INVALID_INPUT",
        -                  "SCHEMA_VERSION_MISMATCH",
        -                  "SCHEMA_INVARIANT_VIOLATION",
        -                  "UPSTREAM_TIMEOUT",
        -                  "BACKEND_FAILURE",
        -                  "IP_BLOCKED",
        -                  "RESOURCE_NOT_FOUND",
        -                  "RENDER_FAILURE",
        -                  "OCR_LOW_CONFIDENCE",
        -                  "MANUAL_REVIEW_REQUIRED",
        -                  "ACCEPTANCE_REQUIRED",
        -                  "INVALID_TOKEN"
        -                ],
        -                "type": "string"
        -              },
        -              "details": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "message": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "recoverable": {
        -                "type": "boolean"
        -              },
        -              "retry_after_seconds": {
        -                "anyOf": [
        -                  {
        -                    "minimum": 0,
        -                    "type": "integer"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              }
        -            },
        -            "required": [
        -              "code",
        -              "message",
        -              "recoverable"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      }
        -    },
        -    "required": [
        -      "_meta"
        -    ],
        -    "type": "object"
        -  }
        -]New value: +[
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "_meta": {
        +        "additionalProperties": false,
        +        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        +        "properties": {
        +          "deliverables": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        +                "properties": {
        +                  "docx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "dxf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "expires_at": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  },
        +                  "pdf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "xlsx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "expires_at"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "document_id": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "issued_at": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "rate_limit_remaining": {
        +            "anyOf": [
        +              {
        +                "minimum": 0,
        +                "type": "integer"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "request_id": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "schema_version": {
        +            "const": "1.0.0",
        +            "default": "1.0.0",
        +            "type": "string"
        +          },
        +          "scope_boundary": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        +                "properties": {
        +                  "not_in_scope": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "produced": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "recommended_companions": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "type": "string"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "produced",
        +                  "not_in_scope"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tier": {
        +            "enum": [
        +              "free",
        +              "paid"
        +            ],
        +            "type": "string"
        +          },
        +          "tier_upgrade": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        +                "properties": {
        +                  "available_tiers": {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        +                      "properties": {
        +                        "billing": {
        +                          "enum": [
        +                            "one_off",
        +                            "monthly",
        +                            "annual"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "currency": {
        +                          "enum": [
        +                            "GBP",
        +                            "SGD",
        +                            "EUR",
        +                            "USD",
        +                            "CAD",
        +                            "AUD",
        +                            "NZD",
        +                            "MYR"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "display_name": {
        +                          "type": "string"
        +                        },
        +                        "price_local": {
        +                          "type": "number"
        +                        },
        +                        "tier_slug": {
        +                          "enum": [
        +                            "7_day_pass",
        +                            "solo",
        +                            "studio",
        +                            "practice"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "unlock_summary": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "tier_slug",
        +                        "display_name",
        +                        "price_local",
        +                        "currency",
        +                        "billing",
        +                        "unlock_summary"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "current_tier": {
        +                    "const": "free",
        +                    "default": "free",
        +                    "type": "string"
        +                  },
        +                  "pass_credit": {
        +                    "anyOf": [
        +                      {
        +                        "additionalProperties": false,
        +                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        +                        "properties": {
        +                          "amount_local": {
        +                            "type": "number"
        +                          },
        +                          "applies_to": {
        +                            "const": "solo_first_month",
        +                            "default": "solo_first_month",
        +                            "type": "string"
        +                          },
        +                          "currency": {
        +                            "type": "string"
        +                          },
        +                          "redeemable_until": {
        +                            "type": "string"
        +                          }
        +                        },
        +                        "required": [
        +                          "amount_local",
        +                          "currency",
        +                          "redeemable_until"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "pricing_url": {
        +                    "default": "https://civilquants.com/pricing",
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "available_tiers"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tos_url": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "upgrade_hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "warranty_disclaimer": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          }
        +        },
        +        "required": [
        +          "request_id",
        +          "issued_at",
        +          "tier"
        +        ],
        +        "type": "object"
        +      },
        +      "data": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Schema § 1.1 — the typed payload returned inside `MCPResponse[ComputeResult]`.\n\nFree-tier responses omit `drawings` (the downloadable CAD artefact\npointers — the paid differentiator); the bridge enforces this. The\n`audit_trail` and the inline `drawing` preview are present on BOTH tiers\n(V1 ALIGN / 60th-fire D + C). `text_summary` is bounded to 2000 chars —\nkeeps the LLM-facing summary token-cheap and forces longer narrative into\nBoQ row descriptions where it belongs. `warnings` is the non-fatal\ngeometry advisory list (both tiers).",
        +            "properties": {
        +              "assembly_slug": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "audit_trail": {
        +                "anyOf": [
        +                  {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.7 — paid-tier audit-trail entry.\n\nOne entry per BoQ row; `boq_row_index` ties to the row position in\n`ComputeResult.boq_rows`. `derivation` is the human-readable formula\nwalk-through; `formula` is the optional formal expression.",
        +                      "properties": {
        +                        "boq_row_index": {
        +                          "minimum": 0,
        +                          "type": "integer"
        +                        },
        +                        "derivation": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "formula": {
        +                          "anyOf": [
        +                            {
        +                              "type": "string"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ],
        +                          "default": null
        +                        },
        +                        "id": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "parameters_referenced": {
        +                          "items": {
        +                            "type": "string"
        +                          },
        +                          "type": "array"
        +                        }
        +                      },
        +                      "required": [
        +                        "id",
        +                        "boq_row_index",
        +                        "derivation"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "boq_rows": {
        +                "items": {
        +                  "additionalProperties": false,
        +                  "description": "Schema § 1.3 — a single bill row in the requested standard's format.\n\n`description` is the non-verbatim functional description per spec § 13.9 /\n§ 15 invariant — NEVER reproduces a standard's verbatim clause text.\n`rate` / `amount` ship null because rates are commodity data the customer\nowns; the engine's job is the measurement, not the pricing.",
        +                  "properties": {
        +                    "amount": {
        +                      "anyOf": [
        +                        {
        +                          "type": "number"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "attribution": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "audit_id": {
        +                      "anyOf": [
        +                        {
        +                          "type": "string"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "description": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "quantity": {
        +                      "minimum": 0,
        +                      "type": "number"
        +                    },
        +                    "rate": {
        +                      "anyOf": [
        +                        {
        +                          "type": "number"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "unit": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "work_section": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    }
        +                  },
        +                  "required": [
        +                    "work_section",
        +                    "description",
        +                    "quantity",
        +                    "unit",
        +                    "attribution"
        +                  ],
        +                  "type": "object"
        +                },
        +                "type": "array"
        +              },
        +              "drawing": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": false,
        +                    "description": "Schema § 1.6a — inline server-rendered SVG preview of the geometry.\n\nThe MCP mirror of the web ``/compute`` response's ``drawing`` field\n(``api.schemas.compute.DrawingRef``): the same on-screen dimensioned\ndrawing both tiers see in the workspace, surfaced on the MCP compute\nresponse so a chat client can render it inline (60th-fire item C). This\nis the on-screen preview — present on BOTH tiers per the free/paid\nboundary; the downloadable CAD artefacts (DXF / dimensioned PDF) remain\nthe paid differentiator via the export tools.\n\nDefined here rather than importing ``DrawingRef`` because the web\n``schemas`` package imports back into this module (``schemas.render``),\nso reusing it would create an import cycle — the MCP wire contract keeps\nits own copy, the same pattern as ``BoQRow`` / ``DrawingReference``.",
        +                    "properties": {
        +                      "entity_count": {
        +                        "minimum": 0,
        +                        "type": "integer"
        +                      },
        +                      "svg_b64": {
        +                        "minLength": 1,
        +                        "type": "string"
        +                      },
        +                      "unit_of_drawing": {
        +                        "const": "m",
        +                        "default": "m",
        +                        "type": "string"
        +                      },
        +                      "viewbox_height": {
        +                        "exclusiveMinimum": 0,
        +                        "type": "number"
        +                      },
        +                      "viewbox_width": {
        +                        "exclusiveMinimum": 0,
        +                        "type": "number"
        +                      },
        +                      "viewbox_x": {
        +                        "type": "number"
        +                      },
        +                      "viewbox_y": {
        +                        "type": "number"
        +                      }
        +                    },
        +                    "required": [
        +                      "svg_b64",
        +                      "viewbox_x",
        +                      "viewbox_y",
        +                      "viewbox_width",
        +                      "viewbox_height",
        +                      "entity_count"
        +                    ],
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "drawings": {
        +                "anyOf": [
        +                  {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.6 — paid-tier drawing artefact pointer.\n\n`url` is an R2-signed URL; expiry is carried in `_meta.deliverables.expires_at`\non the envelope (not duplicated here). `layers` is DXF-only; PDF/SVG\ncallers omit it.",
        +                      "properties": {
        +                        "drawing_type": {
        +                          "enum": [
        +                            "section",
        +                            "plan",
        +                            "elevation",
        +                            "isometric",
        +                            "detail"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "format": {
        +                          "enum": [
        +                            "DXF",
        +                            "PDF",
        +                            "SVG"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "layers": {
        +                          "anyOf": [
        +                            {
        +                              "items": {
        +                                "type": "string"
        +                              },
        +                              "type": "array"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ],
        +                          "default": null
        +                        },
        +                        "scale": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "sheet_size": {
        +                          "enum": [
        +                            "A1",
        +                            "A2",
        +                            "A3",
        +                            "A4"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "url": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "drawing_type",
        +                        "format",
        +                        "url",
        +                        "sheet_size",
        +                        "scale"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "parameters_used": {
        +                "additionalProperties": false,
        +                "description": "Schema § 1.2 — the parameter snapshot the engine actually used.\n\nSplits user-supplied values from engine defaults so customers can see\nwhich numbers came from them and which the engine filled in. Every\ndefaulted parameter SHOULD have a corresponding entry in `assumptions`\n— the bridge layer enforces this when wrapping engine output.",
        +                "properties": {
        +                  "assumptions": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "engine_defaults": {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  "user_supplied": {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  }
        +                },
        +                "type": "object"
        +              },
        +              "standard": {
        +                "enum": [
        +                  "CESMM4",
        +                  "NRM2",
        +                  "SMM7",
        +                  "MMHW"
        +                ],
        +                "type": "string"
        +              },
        +              "text_summary": {
        +                "maxLength": 2000,
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "totals_summary": {
        +                "additionalProperties": false,
        +                "description": "Schema § 1.4 — totals_summary as a typed wrapper around the free-form dict.\n\nWire shape is a flat object (`{\"concrete_m3\": {...}, \"rebar_t\": {...}}`).\nWe model it as `RootModel`-equivalent via `model_config(extra=\"allow\")`\n+ a single `__root__`-style `entries` dict. Pydantic v2 recommends\n`RootModel` for free-form roots; using a wrapper class keeps the import\nsurface uniform with the rest of this module.",
        +                "properties": {
        +                  "entries": {
        +                    "additionalProperties": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.4 — single material/work-class total entry.",
        +                      "properties": {
        +                        "quantity": {
        +                          "minimum": 0,
        +                          "type": "number"
        +                        },
        +                        "unit": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "quantity",
        +                        "unit"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "object"
        +                  }
        +                },
        +                "type": "object"
        +              },
        +              "warnings": {
        +                "items": {
        +                  "additionalProperties": false,
        +                  "description": "Schema § 1.8 — a non-fatal geometry advisory (56th-fire T2).\n\nThe wire projection of the engine's `core.GeometryWarning`. Advisory only:\na warning NEVER changes a measured quantity — it flags geometry that is\nvalid but likely a mistake (e.g. a stale dependent-height default). Present\non BOTH tiers — a correctness/safety signal, not a paid feature.",
        +                  "properties": {
        +                    "affected_params": {
        +                      "items": {
        +                        "type": "string"
        +                      },
        +                      "type": "array"
        +                    },
        +                    "code": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "detail": {
        +                      "additionalProperties": {
        +                        "type": "number"
        +                      },
        +                      "type": "object"
        +                    },
        +                    "message": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "severity": {
        +                      "enum": [
        +                        "info",
        +                        "advisory",
        +                        "caution"
        +                      ],
        +                      "type": "string"
        +                    }
        +                  },
        +                  "required": [
        +                    "code",
        +                    "severity",
        +                    "message"
        +                  ],
        +                  "type": "object"
        +                },
        +                "type": "array"
        +              }
        +            },
        +            "required": [
        +              "assembly_slug",
        +              "standard",
        +              "parameters_used",
        +              "boq_rows",
        +              "totals_summary",
        +              "text_summary"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      },
        +      "error": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        +            "properties": {
        +              "code": {
        +                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        +                "enum": [
        +                  "RATE_LIMIT_EXCEEDED",
        +                  "TIER_INSUFFICIENT",
        +                  "INVALID_INPUT",
        +                  "SCHEMA_VERSION_MISMATCH",
        +                  "SCHEMA_INVARIANT_VIOLATION",
        +                  "UPSTREAM_TIMEOUT",
        +                  "BACKEND_FAILURE",
        +                  "IP_BLOCKED",
        +                  "RESOURCE_NOT_FOUND",
        +                  "RENDER_FAILURE",
        +                  "OCR_LOW_CONFIDENCE",
        +                  "MANUAL_REVIEW_REQUIRED",
        +                  "ACCEPTANCE_REQUIRED",
        +                  "INVALID_TOKEN"
        +                ],
        +                "type": "string"
        +              },
        +              "details": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "message": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "recoverable": {
        +                "type": "boolean"
        +              },
        +              "retry_after_seconds": {
        +                "anyOf": [
        +                  {
        +                    "minimum": 0,
        +                    "type": "integer"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              }
        +            },
        +            "required": [
        +              "code",
        +              "message",
        +              "recoverable"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      }
        +    },
        +    "required": [
        +      "_meta"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "_meta": {
        +        "additionalProperties": false,
        +        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        +        "properties": {
        +          "deliverables": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        +                "properties": {
        +                  "docx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "dxf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "expires_at": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  },
        +                  "pdf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "xlsx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "expires_at"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "document_id": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "issued_at": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "rate_limit_remaining": {
        +            "anyOf": [
        +              {
        +                "minimum": 0,
        +                "type": "integer"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "request_id": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "schema_version": {
        +            "const": "1.0.0",
        +            "default": "1.0.0",
        +            "type": "string"
        +          },
        +          "scope_boundary": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        +                "properties": {
        +                  "not_in_scope": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "produced": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "recommended_companions": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "type": "string"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "produced",
        +                  "not_in_scope"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tier": {
        +            "enum": [
        +              "free",
        +              "paid"
        +            ],
        +            "type": "string"
        +          },
        +          "tier_upgrade": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        +                "properties": {
        +                  "available_tiers": {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        +                      "properties": {
        +                        "billing": {
        +                          "enum": [
        +                            "one_off",
        +                            "monthly",
        +                            "annual"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "currency": {
        +                          "enum": [
        +                            "GBP",
        +                            "SGD",
        +                            "EUR",
        +                            "USD",
        +                            "CAD",
        +                            "AUD",
        +                            "NZD",
        +                            "MYR"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "display_name": {
        +                          "type": "string"
        +                        },
        +                        "price_local": {
        +                          "type": "number"
        +                        },
        +                        "tier_slug": {
        +                          "enum": [
        +                            "7_day_pass",
        +                            "solo",
        +                            "studio",
        +                            "practice"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "unlock_summary": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "tier_slug",
        +                        "display_name",
        +                        "price_local",
        +                        "currency",
        +                        "billing",
        +                        "unlock_summary"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "current_tier": {
        +                    "const": "free",
        +                    "default": "free",
        +                    "type": "string"
        +                  },
        +                  "pass_credit": {
        +                    "anyOf": [
        +                      {
        +                        "additionalProperties": false,
        +                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        +                        "properties": {
        +                          "amount_local": {
        +                            "type": "number"
        +                          },
        +                          "applies_to": {
        +                            "const": "solo_first_month",
        +                            "default": "solo_first_month",
        +                            "type": "string"
        +                          },
        +                          "currency": {
        +                            "type": "string"
        +                          },
        +                          "redeemable_until": {
        +                            "type": "string"
        +                          }
        +                        },
        +                        "required": [
        +                          "amount_local",
        +                          "currency",
        +                          "redeemable_until"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "pricing_url": {
        +                    "default": "https://civilquants.com/pricing",
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "available_tiers"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tos_url": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "upgrade_hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "warranty_disclaimer": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          }
        +        },
        +        "required": [
        +          "request_id",
        +          "issued_at",
        +          "tier"
        +        ],
        +        "type": "object"
        +      },
        +      "data": {
        +        "default": null,
        +        "title": "Data"
        +      },
        +      "error": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        +            "properties": {
        +              "code": {
        +                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        +                "enum": [
        +                  "RATE_LIMIT_EXCEEDED",
        +                  "TIER_INSUFFICIENT",
        +                  "INVALID_INPUT",
        +                  "SCHEMA_VERSION_MISMATCH",
        +                  "SCHEMA_INVARIANT_VIOLATION",
        +                  "UPSTREAM_TIMEOUT",
        +                  "BACKEND_FAILURE",
        +                  "IP_BLOCKED",
        +                  "RESOURCE_NOT_FOUND",
        +                  "RENDER_FAILURE",
        +                  "OCR_LOW_CONFIDENCE",
        +                  "MANUAL_REVIEW_REQUIRED",
        +                  "ACCEPTANCE_REQUIRED",
        +                  "INVALID_TOKEN"
        +                ],
        +                "type": "string"
        +              },
        +              "details": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "message": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "recoverable": {
        +                "type": "boolean"
        +              },
        +              "retry_after_seconds": {
        +                "anyOf": [
        +                  {
        +                    "minimum": 0,
        +                    "type": "integer"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              }
        +            },
        +            "required": [
        +              "code",
        +              "message",
        +              "recoverable"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      }
        +    },
        +    "required": [
        +      "_meta"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedcompute_multi_section_assembly1 field changed
      • changedOutput schema / properties / result / anyOf
        Previous value: -[
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "_meta": {
        -        "additionalProperties": false,
        -        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        -        "properties": {
        -          "deliverables": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        -                "properties": {
        -                  "docx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "dxf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "expires_at": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  },
        -                  "pdf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "xlsx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "expires_at"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "document_id": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "issued_at": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "rate_limit_remaining": {
        -            "anyOf": [
        -              {
        -                "minimum": 0,
        -                "type": "integer"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "request_id": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "schema_version": {
        -            "const": "1.0.0",
        -            "default": "1.0.0",
        -            "type": "string"
        -          },
        -          "scope_boundary": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        -                "properties": {
        -                  "not_in_scope": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "produced": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "recommended_companions": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "type": "string"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "produced",
        -                  "not_in_scope"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tier": {
        -            "enum": [
        -              "free",
        -              "paid"
        -            ],
        -            "type": "string"
        -          },
        -          "tier_upgrade": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        -                "properties": {
        -                  "available_tiers": {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        -                      "properties": {
        -                        "billing": {
        -                          "enum": [
        -                            "one_off",
        -                            "monthly",
        -                            "annual"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "currency": {
        -                          "enum": [
        -                            "GBP",
        -                            "SGD",
        -                            "EUR",
        -                            "USD",
        -                            "CAD",
        -                            "AUD",
        -                            "NZD",
        -                            "MYR"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "display_name": {
        -                          "type": "string"
        -                        },
        -                        "price_local": {
        -                          "type": "number"
        -                        },
        -                        "tier_slug": {
        -                          "enum": [
        -                            "7_day_pass",
        -                            "solo",
        -                            "studio",
        -                            "practice"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "unlock_summary": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "tier_slug",
        -                        "display_name",
        -                        "price_local",
        -                        "currency",
        -                        "billing",
        -                        "unlock_summary"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "current_tier": {
        -                    "const": "free",
        -                    "default": "free",
        -                    "type": "string"
        -                  },
        -                  "pass_credit": {
        -                    "anyOf": [
        -                      {
        -                        "additionalProperties": false,
        -                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        -                        "properties": {
        -                          "amount_local": {
        -                            "type": "number"
        -                          },
        -                          "applies_to": {
        -                            "const": "solo_first_month",
        -                            "default": "solo_first_month",
        -                            "type": "string"
        -                          },
        -                          "currency": {
        -                            "type": "string"
        -                          },
        -                          "redeemable_until": {
        -                            "type": "string"
        -                          }
        -                        },
        -                        "required": [
        -                          "amount_local",
        -                          "currency",
        -                          "redeemable_until"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "pricing_url": {
        -                    "default": "https://civilquants.com/pricing",
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "available_tiers"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tos_url": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "upgrade_hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "warranty_disclaimer": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          }
        -        },
        -        "required": [
        -          "request_id",
        -          "issued_at",
        -          "tier"
        -        ],
        -        "type": "object"
        -      },
        -      "data": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Aggregated + per-section result for a sectioned assembly run.",
        -            "properties": {
        -              "aggregated_boq_rows": {
        -                "items": {
        -                  "additionalProperties": false,
        -                  "description": "Schema § 1.3 — a single bill row in the requested standard's format.\n\n`description` is the non-verbatim functional description per spec § 13.9 /\n§ 15 invariant — NEVER reproduces a standard's verbatim clause text.\n`rate` / `amount` ship null because rates are commodity data the customer\nowns; the engine's job is the measurement, not the pricing.",
        -                  "properties": {
        -                    "amount": {
        -                      "anyOf": [
        -                        {
        -                          "type": "number"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "attribution": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "audit_id": {
        -                      "anyOf": [
        -                        {
        -                          "type": "string"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "description": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "quantity": {
        -                      "minimum": 0,
        -                      "type": "number"
        -                    },
        -                    "rate": {
        -                      "anyOf": [
        -                        {
        -                          "type": "number"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "unit": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "work_section": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    }
        -                  },
        -                  "required": [
        -                    "work_section",
        -                    "description",
        -                    "quantity",
        -                    "unit",
        -                    "attribution"
        -                  ],
        -                  "type": "object"
        -                },
        -                "type": "array"
        -              },
        -              "assembly_slug": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "parameters_used": {
        -                "additionalProperties": true,
        -                "type": "object"
        -              },
        -              "section_count": {
        -                "minimum": 1,
        -                "type": "integer"
        -              },
        -              "section_results": {
        -                "anyOf": [
        -                  {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.1 — the typed payload returned inside `MCPResponse[ComputeResult]`.\n\nFree-tier responses omit `drawings` (the downloadable CAD artefact\npointers — the paid differentiator); the bridge enforces this. The\n`audit_trail` and the inline `drawing` preview are present on BOTH tiers\n(V1 ALIGN / 60th-fire D + C). `text_summary` is bounded to 2000 chars —\nkeeps the LLM-facing summary token-cheap and forces longer narrative into\nBoQ row descriptions where it belongs. `warnings` is the non-fatal\ngeometry advisory list (both tiers).",
        -                      "properties": {
        -                        "assembly_slug": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "audit_trail": {
        -                          "anyOf": [
        -                            {
        -                              "items": {
        -                                "additionalProperties": false,
        -                                "description": "Schema § 1.7 — paid-tier audit-trail entry.\n\nOne entry per BoQ row; `boq_row_index` ties to the row position in\n`ComputeResult.boq_rows`. `derivation` is the human-readable formula\nwalk-through; `formula` is the optional formal expression.",
        -                                "properties": {
        -                                  "boq_row_index": {
        -                                    "minimum": 0,
        -                                    "type": "integer"
        -                                  },
        -                                  "derivation": {
        -                                    "minLength": 1,
        -                                    "type": "string"
        -                                  },
        -                                  "formula": {
        -                                    "anyOf": [
        -                                      {
        -                                        "type": "string"
        -                                      },
        -                                      {
        -                                        "type": "null"
        -                                      }
        -                                    ],
        -                                    "default": null
        -                                  },
        -                                  "id": {
        -                                    "minLength": 1,
        -                                    "type": "string"
        -                                  },
        -                                  "parameters_referenced": {
        -                                    "items": {
        -                                      "type": "string"
        -                                    },
        -                                    "type": "array"
        -                                  }
        -                                },
        -                                "required": [
        -                                  "id",
        -                                  "boq_row_index",
        -                                  "derivation"
        -                                ],
        -                                "type": "object"
        -                              },
        -                              "type": "array"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ],
        -                          "default": null
        -                        },
        -                        "boq_rows": {
        -                          "items": {
        -                            "additionalProperties": false,
        -                            "description": "Schema § 1.3 — a single bill row in the requested standard's format.\n\n`description` is the non-verbatim functional description per spec § 13.9 /\n§ 15 invariant — NEVER reproduces a standard's verbatim clause text.\n`rate` / `amount` ship null because rates are commodity data the customer\nowns; the engine's job is the measurement, not the pricing.",
        -                            "properties": {
        -                              "amount": {
        -                                "anyOf": [
        -                                  {
        -                                    "type": "number"
        -                                  },
        -                                  {
        -                                    "type": "null"
        -                                  }
        -                                ],
        -                                "default": null
        -                              },
        -                              "attribution": {
        -                                "minLength": 1,
        -                                "type": "string"
        -                              },
        -                              "audit_id": {
        -                                "anyOf": [
        -                                  {
        -                                    "type": "string"
        -                                  },
        -                                  {
        -                                    "type": "null"
        -                                  }
        -                                ],
        -                                "default": null
        -                              },
        -                              "description": {
        -                                "minLength": 1,
        -                                "type": "string"
        -                              },
        -                              "quantity": {
        -                                "minimum": 0,
        -                                "type": "number"
        -                              },
        -                              "rate": {
        -                                "anyOf": [
        -                                  {
        -                                    "type": "number"
        -                                  },
        -                                  {
        -                                    "type": "null"
        -                                  }
        -                                ],
        -                                "default": null
        -                              },
        -                              "unit": {
        -                                "minLength": 1,
        -                                "type": "string"
        -                              },
        -                              "work_section": {
        -                                "minLength": 1,
        -                                "type": "string"
        -                              }
        -                            },
        -                            "required": [
        -                              "work_section",
        -                              "description",
        -                              "quantity",
        -                              "unit",
        -                              "attribution"
        -                            ],
        -                            "type": "object"
        -                          },
        -                          "type": "array"
        -                        },
        -                        "drawing": {
        -                          "anyOf": [
        -                            {
        -                              "additionalProperties": false,
        -                              "description": "Schema § 1.6a — inline server-rendered SVG preview of the geometry.\n\nThe MCP mirror of the web ``/compute`` response's ``drawing`` field\n(``api.schemas.compute.DrawingRef``): the same on-screen dimensioned\ndrawing both tiers see in the workspace, surfaced on the MCP compute\nresponse so a chat client can render it inline (60th-fire item C). This\nis the on-screen preview — present on BOTH tiers per the free/paid\nboundary; the downloadable CAD artefacts (DXF / dimensioned PDF) remain\nthe paid differentiator via the export tools.\n\nDefined here rather than importing ``DrawingRef`` because the web\n``schemas`` package imports back into this module (``schemas.render``),\nso reusing it would create an import cycle — the MCP wire contract keeps\nits own copy, the same pattern as ``BoQRow`` / ``DrawingReference``.",
        -                              "properties": {
        -                                "entity_count": {
        -                                  "minimum": 0,
        -                                  "type": "integer"
        -                                },
        -                                "svg_b64": {
        -                                  "minLength": 1,
        -                                  "type": "string"
        -                                },
        -                                "unit_of_drawing": {
        -                                  "const": "m",
        -                                  "default": "m",
        -                                  "type": "string"
        -                                },
        -                                "viewbox_height": {
        -                                  "exclusiveMinimum": 0,
        -                                  "type": "number"
        -                                },
        -                                "viewbox_width": {
        -                                  "exclusiveMinimum": 0,
        -                                  "type": "number"
        -                                },
        -                                "viewbox_x": {
        -                                  "type": "number"
        -                                },
        -                                "viewbox_y": {
        -                                  "type": "number"
        -                                }
        -                              },
        -                              "required": [
        -                                "svg_b64",
        -                                "viewbox_x",
        -                                "viewbox_y",
        -                                "viewbox_width",
        -                                "viewbox_height",
        -                                "entity_count"
        -                              ],
        -                              "type": "object"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ],
        -                          "default": null
        -                        },
        -                        "drawings": {
        -                          "anyOf": [
        -                            {
        -                              "items": {
        -                                "additionalProperties": false,
        -                                "description": "Schema § 1.6 — paid-tier drawing artefact pointer.\n\n`url` is an R2-signed URL; expiry is carried in `_meta.deliverables.expires_at`\non the envelope (not duplicated here). `layers` is DXF-only; PDF/SVG\ncallers omit it.",
        -                                "properties": {
        -                                  "drawing_type": {
        -                                    "enum": [
        -                                      "section",
        -                                      "plan",
        -                                      "elevation",
        -                                      "isometric",
        -                                      "detail"
        -                                    ],
        -                                    "type": "string"
        -                                  },
        -                                  "format": {
        -                                    "enum": [
        -                                      "DXF",
        -                                      "PDF",
        -                                      "SVG"
        -                                    ],
        -                                    "type": "string"
        -                                  },
        -                                  "layers": {
        -                                    "anyOf": [
        -                                      {
        -                                        "items": {
        -                                          "type": "string"
        -                                        },
        -                                        "type": "array"
        -                                      },
        -                                      {
        -                                        "type": "null"
        -                                      }
        -                                    ],
        -                                    "default": null
        -                                  },
        -                                  "scale": {
        -                                    "minLength": 1,
        -                                    "type": "string"
        -                                  },
        -                                  "sheet_size": {
        -                                    "enum": [
        -                                      "A1",
        -                                      "A2",
        -                                      "A3",
        -                                      "A4"
        -                                    ],
        -                                    "type": "string"
        -                                  },
        -                                  "url": {
        -                                    "minLength": 1,
        -                                    "type": "string"
        -                                  }
        -                                },
        -                                "required": [
        -                                  "drawing_type",
        -                                  "format",
        -                                  "url",
        -                                  "sheet_size",
        -                                  "scale"
        -                                ],
        -                                "type": "object"
        -                              },
        -                              "type": "array"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ],
        -                          "default": null
        -                        },
        -                        "parameters_used": {
        -                          "additionalProperties": false,
        -                          "description": "Schema § 1.2 — the parameter snapshot the engine actually used.\n\nSplits user-supplied values from engine defaults so customers can see\nwhich numbers came from them and which the engine filled in. Every\ndefaulted parameter SHOULD have a corresponding entry in `assumptions`\n— the bridge layer enforces this when wrapping engine output.",
        -                          "properties": {
        -                            "assumptions": {
        -                              "items": {
        -                                "type": "string"
        -                              },
        -                              "type": "array"
        -                            },
        -                            "engine_defaults": {
        -                              "additionalProperties": true,
        -                              "type": "object"
        -                            },
        -                            "resolved_from_description": {
        -                              "anyOf": [
        -                                {
        -                                  "items": {
        -                                    "additionalProperties": false,
        -                                    "description": "Schema § 1.2 — a parameter resolved by the forgiving-input layer.\n\nPopulated by the Track B-Forgiving Haiku-4.5 resolution pass; until that\nlayer lands, instances are constructed only by tests. `source` distinguishes\nthe resolution path so customers can audit which fields were inferred.",
        -                                    "properties": {
        -                                      "confidence": {
        -                                        "anyOf": [
        -                                          {
        -                                            "enum": [
        -                                              "high",
        -                                              "medium",
        -                                              "low"
        -                                            ],
        -                                            "type": "string"
        -                                          },
        -                                          {
        -                                            "type": "null"
        -                                          }
        -                                        ],
        -                                        "default": null
        -                                      },
        -                                      "field_name": {
        -                                        "minLength": 1,
        -                                        "type": "string"
        -                                      },
        -                                      "resolved_value": {},
        -                                      "source": {
        -                                        "enum": [
        -                                          "description_field",
        -                                          "haiku_resolution",
        -                                          "engine_default"
        -                                        ],
        -                                        "type": "string"
        -                                      }
        -                                    },
        -                                    "required": [
        -                                      "field_name",
        -                                      "resolved_value",
        -                                      "source"
        -                                    ],
        -                                    "type": "object"
        -                                  },
        -                                  "type": "array"
        -                                },
        -                                {
        -                                  "type": "null"
        -                                }
        -                              ],
        -                              "default": null
        -                            },
        -                            "user_supplied": {
        -                              "additionalProperties": true,
        -                              "type": "object"
        -                            }
        -                          },
        -                          "type": "object"
        -                        },
        -                        "standard": {
        -                          "enum": [
        -                            "CESMM4",
        -                            "NRM2",
        -                            "SMM7",
        -                            "MMHW"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "text_summary": {
        -                          "maxLength": 2000,
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "totals_summary": {
        -                          "additionalProperties": false,
        -                          "description": "Schema § 1.4 — totals_summary as a typed wrapper around the free-form dict.\n\nWire shape is a flat object (`{\"concrete_m3\": {...}, \"rebar_t\": {...}}`).\nWe model it as `RootModel`-equivalent via `model_config(extra=\"allow\")`\n+ a single `__root__`-style `entries` dict. Pydantic v2 recommends\n`RootModel` for free-form roots; using a wrapper class keeps the import\nsurface uniform with the rest of this module.",
        -                          "properties": {
        -                            "entries": {
        -                              "additionalProperties": {
        -                                "additionalProperties": false,
        -                                "description": "Schema § 1.4 — single material/work-class total entry.",
        -                                "properties": {
        -                                  "quantity": {
        -                                    "minimum": 0,
        -                                    "type": "number"
        -                                  },
        -                                  "unit": {
        -                                    "minLength": 1,
        -                                    "type": "string"
        -                                  }
        -                                },
        -                                "required": [
        -                                  "quantity",
        -                                  "unit"
        -                                ],
        -                                "type": "object"
        -                              },
        -                              "type": "object"
        -                            }
        -                          },
        -                          "type": "object"
        -                        },
        -                        "warnings": {
        -                          "items": {
        -                            "additionalProperties": false,
        -                            "description": "Schema § 1.8 — a non-fatal geometry advisory (56th-fire T2).\n\nThe wire projection of the engine's `core.GeometryWarning`. Advisory only:\na warning NEVER changes a measured quantity — it flags geometry that is\nvalid but likely a mistake (e.g. a stale dependent-height default). Present\non BOTH tiers — a correctness/safety signal, not a paid feature.",
        -                            "properties": {
        -                              "affected_params": {
        -                                "items": {
        -                                  "type": "string"
        -                                },
        -                                "type": "array"
        -                              },
        -                              "code": {
        -                                "minLength": 1,
        -                                "type": "string"
        -                              },
        -                              "detail": {
        -                                "additionalProperties": {
        -                                  "type": "number"
        -                                },
        -                                "type": "object"
        -                              },
        -                              "message": {
        -                                "minLength": 1,
        -                                "type": "string"
        -                              },
        -                              "severity": {
        -                                "enum": [
        -                                  "info",
        -                                  "advisory",
        -                                  "caution"
        -                                ],
        -                                "type": "string"
        -                              }
        -                            },
        -                            "required": [
        -                              "code",
        -                              "severity",
        -                              "message"
        -                            ],
        -                            "type": "object"
        -                          },
        -                          "type": "array"
        -                        }
        -                      },
        -                      "required": [
        -                        "assembly_slug",
        -                        "standard",
        -                        "parameters_used",
        -                        "boq_rows",
        -                        "totals_summary",
        -                        "text_summary"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "section_summary": {
        -                "items": {
        -                  "additionalProperties": false,
        -                  "description": "Cheap always-on per-section line: label + run length + totals.",
        -                  "properties": {
        -                    "label": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "run_length": {
        -                      "anyOf": [
        -                        {
        -                          "type": "number"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "totals_summary": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.4 — totals_summary as a typed wrapper around the free-form dict.\n\nWire shape is a flat object (`{\"concrete_m3\": {...}, \"rebar_t\": {...}}`).\nWe model it as `RootModel`-equivalent via `model_config(extra=\"allow\")`\n+ a single `__root__`-style `entries` dict. Pydantic v2 recommends\n`RootModel` for free-form roots; using a wrapper class keeps the import\nsurface uniform with the rest of this module.",
        -                      "properties": {
        -                        "entries": {
        -                          "additionalProperties": {
        -                            "additionalProperties": false,
        -                            "description": "Schema § 1.4 — single material/work-class total entry.",
        -                            "properties": {
        -                              "quantity": {
        -                                "minimum": 0,
        -                                "type": "number"
        -                              },
        -                              "unit": {
        -                                "minLength": 1,
        -                                "type": "string"
        -                              }
        -                            },
        -                            "required": [
        -                              "quantity",
        -                              "unit"
        -                            ],
        -                            "type": "object"
        -                          },
        -                          "type": "object"
        -                        }
        -                      },
        -                      "type": "object"
        -                    }
        -                  },
        -                  "required": [
        -                    "label",
        -                    "totals_summary"
        -                  ],
        -                  "type": "object"
        -                },
        -                "type": "array"
        -              },
        -              "standard": {
        -                "enum": [
        -                  "CESMM4",
        -                  "NRM2",
        -                  "SMM7",
        -                  "MMHW"
        -                ],
        -                "type": "string"
        -              },
        -              "warnings": {
        -                "items": {
        -                  "additionalProperties": false,
        -                  "description": "A section-labelled geometry/advisory warning.",
        -                  "properties": {
        -                    "section_label": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "warning": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.8 — a non-fatal geometry advisory (56th-fire T2).\n\nThe wire projection of the engine's `core.GeometryWarning`. Advisory only:\na warning NEVER changes a measured quantity — it flags geometry that is\nvalid but likely a mistake (e.g. a stale dependent-height default). Present\non BOTH tiers — a correctness/safety signal, not a paid feature.",
        -                      "properties": {
        -                        "affected_params": {
        -                          "items": {
        -                            "type": "string"
        -                          },
        -                          "type": "array"
        -                        },
        -                        "code": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "detail": {
        -                          "additionalProperties": {
        -                            "type": "number"
        -                          },
        -                          "type": "object"
        -                        },
        -                        "message": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "severity": {
        -                          "enum": [
        -                            "info",
        -                            "advisory",
        -                            "caution"
        -                          ],
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "code",
        -                        "severity",
        -                        "message"
        -                      ],
        -                      "type": "object"
        -                    }
        -                  },
        -                  "required": [
        -                    "section_label",
        -                    "warning"
        -                  ],
        -                  "type": "object"
        -                },
        -                "type": "array"
        -              }
        -            },
        -            "required": [
        -              "assembly_slug",
        -              "standard",
        -              "section_count",
        -              "section_summary",
        -              "aggregated_boq_rows"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      },
        -      "error": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        -            "properties": {
        -              "code": {
        -                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        -                "enum": [
        -                  "RATE_LIMIT_EXCEEDED",
        -                  "TIER_INSUFFICIENT",
        -                  "INVALID_INPUT",
        -                  "SCHEMA_VERSION_MISMATCH",
        -                  "SCHEMA_INVARIANT_VIOLATION",
        -                  "UPSTREAM_TIMEOUT",
        -                  "BACKEND_FAILURE",
        -                  "IP_BLOCKED",
        -                  "RESOURCE_NOT_FOUND",
        -                  "RENDER_FAILURE",
        -                  "OCR_LOW_CONFIDENCE",
        -                  "MANUAL_REVIEW_REQUIRED",
        -                  "ACCEPTANCE_REQUIRED",
        -                  "INVALID_TOKEN"
        -                ],
        -                "type": "string"
        -              },
        -              "details": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "message": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "recoverable": {
        -                "type": "boolean"
        -              },
        -              "retry_after_seconds": {
        -                "anyOf": [
        -                  {
        -                    "minimum": 0,
        -                    "type": "integer"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              }
        -            },
        -            "required": [
        -              "code",
        -              "message",
        -              "recoverable"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      }
        -    },
        -    "required": [
        -      "_meta"
        -    ],
        -    "type": "object"
        -  },
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "_meta": {
        -        "additionalProperties": false,
        -        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        -        "properties": {
        -          "deliverables": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        -                "properties": {
        -                  "docx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "dxf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "expires_at": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  },
        -                  "pdf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "xlsx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "expires_at"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "document_id": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "issued_at": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "rate_limit_remaining": {
        -            "anyOf": [
        -              {
        -                "minimum": 0,
        -                "type": "integer"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "request_id": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "schema_version": {
        -            "const": "1.0.0",
        -            "default": "1.0.0",
        -            "type": "string"
        -          },
        -          "scope_boundary": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        -                "properties": {
        -                  "not_in_scope": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "produced": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "recommended_companions": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "type": "string"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "produced",
        -                  "not_in_scope"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tier": {
        -            "enum": [
        -              "free",
        -              "paid"
        -            ],
        -            "type": "string"
        -          },
        -          "tier_upgrade": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        -                "properties": {
        -                  "available_tiers": {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        -                      "properties": {
        -                        "billing": {
        -                          "enum": [
        -                            "one_off",
        -                            "monthly",
        -                            "annual"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "currency": {
        -                          "enum": [
        -                            "GBP",
        -                            "SGD",
        -                            "EUR",
        -                            "USD",
        -                            "CAD",
        -                            "AUD",
        -                            "NZD",
        -                            "MYR"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "display_name": {
        -                          "type": "string"
        -                        },
        -                        "price_local": {
        -                          "type": "number"
        -                        },
        -                        "tier_slug": {
        -                          "enum": [
        -                            "7_day_pass",
        -                            "solo",
        -                            "studio",
        -                            "practice"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "unlock_summary": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "tier_slug",
        -                        "display_name",
        -                        "price_local",
        -                        "currency",
        -                        "billing",
        -                        "unlock_summary"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "current_tier": {
        -                    "const": "free",
        -                    "default": "free",
        -                    "type": "string"
        -                  },
        -                  "pass_credit": {
        -                    "anyOf": [
        -                      {
        -                        "additionalProperties": false,
        -                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        -                        "properties": {
        -                          "amount_local": {
        -                            "type": "number"
        -                          },
        -                          "applies_to": {
        -                            "const": "solo_first_month",
        -                            "default": "solo_first_month",
        -                            "type": "string"
        -                          },
        -                          "currency": {
        -                            "type": "string"
        -                          },
        -                          "redeemable_until": {
        -                            "type": "string"
        -                          }
        -                        },
        -                        "required": [
        -                          "amount_local",
        -                          "currency",
        -                          "redeemable_until"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "pricing_url": {
        -                    "default": "https://civilquants.com/pricing",
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "available_tiers"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tos_url": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "upgrade_hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "warranty_disclaimer": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          }
        -        },
        -        "required": [
        -          "request_id",
        -          "issued_at",
        -          "tier"
        -        ],
        -        "type": "object"
        -      },
        -      "data": {
        -        "default": null,
        -        "title": "Data"
        -      },
        -      "error": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        -            "properties": {
        -              "code": {
        -                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        -                "enum": [
        -                  "RATE_LIMIT_EXCEEDED",
        -                  "TIER_INSUFFICIENT",
        -                  "INVALID_INPUT",
        -                  "SCHEMA_VERSION_MISMATCH",
        -                  "SCHEMA_INVARIANT_VIOLATION",
        -                  "UPSTREAM_TIMEOUT",
        -                  "BACKEND_FAILURE",
        -                  "IP_BLOCKED",
        -                  "RESOURCE_NOT_FOUND",
        -                  "RENDER_FAILURE",
        -                  "OCR_LOW_CONFIDENCE",
        -                  "MANUAL_REVIEW_REQUIRED",
        -                  "ACCEPTANCE_REQUIRED",
        -                  "INVALID_TOKEN"
        -                ],
        -                "type": "string"
        -              },
        -              "details": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "message": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "recoverable": {
        -                "type": "boolean"
        -              },
        -              "retry_after_seconds": {
        -                "anyOf": [
        -                  {
        -                    "minimum": 0,
        -                    "type": "integer"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              }
        -            },
        -            "required": [
        -              "code",
        -              "message",
        -              "recoverable"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      }
        -    },
        -    "required": [
        -      "_meta"
        -    ],
        -    "type": "object"
        -  }
        -]New value: +[
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "_meta": {
        +        "additionalProperties": false,
        +        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        +        "properties": {
        +          "deliverables": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        +                "properties": {
        +                  "docx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "dxf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "expires_at": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  },
        +                  "pdf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "xlsx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "expires_at"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "document_id": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "issued_at": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "rate_limit_remaining": {
        +            "anyOf": [
        +              {
        +                "minimum": 0,
        +                "type": "integer"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "request_id": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "schema_version": {
        +            "const": "1.0.0",
        +            "default": "1.0.0",
        +            "type": "string"
        +          },
        +          "scope_boundary": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        +                "properties": {
        +                  "not_in_scope": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "produced": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "recommended_companions": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "type": "string"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "produced",
        +                  "not_in_scope"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tier": {
        +            "enum": [
        +              "free",
        +              "paid"
        +            ],
        +            "type": "string"
        +          },
        +          "tier_upgrade": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        +                "properties": {
        +                  "available_tiers": {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        +                      "properties": {
        +                        "billing": {
        +                          "enum": [
        +                            "one_off",
        +                            "monthly",
        +                            "annual"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "currency": {
        +                          "enum": [
        +                            "GBP",
        +                            "SGD",
        +                            "EUR",
        +                            "USD",
        +                            "CAD",
        +                            "AUD",
        +                            "NZD",
        +                            "MYR"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "display_name": {
        +                          "type": "string"
        +                        },
        +                        "price_local": {
        +                          "type": "number"
        +                        },
        +                        "tier_slug": {
        +                          "enum": [
        +                            "7_day_pass",
        +                            "solo",
        +                            "studio",
        +                            "practice"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "unlock_summary": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "tier_slug",
        +                        "display_name",
        +                        "price_local",
        +                        "currency",
        +                        "billing",
        +                        "unlock_summary"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "current_tier": {
        +                    "const": "free",
        +                    "default": "free",
        +                    "type": "string"
        +                  },
        +                  "pass_credit": {
        +                    "anyOf": [
        +                      {
        +                        "additionalProperties": false,
        +                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        +                        "properties": {
        +                          "amount_local": {
        +                            "type": "number"
        +                          },
        +                          "applies_to": {
        +                            "const": "solo_first_month",
        +                            "default": "solo_first_month",
        +                            "type": "string"
        +                          },
        +                          "currency": {
        +                            "type": "string"
        +                          },
        +                          "redeemable_until": {
        +                            "type": "string"
        +                          }
        +                        },
        +                        "required": [
        +                          "amount_local",
        +                          "currency",
        +                          "redeemable_until"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "pricing_url": {
        +                    "default": "https://civilquants.com/pricing",
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "available_tiers"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tos_url": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "upgrade_hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "warranty_disclaimer": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          }
        +        },
        +        "required": [
        +          "request_id",
        +          "issued_at",
        +          "tier"
        +        ],
        +        "type": "object"
        +      },
        +      "data": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Aggregated + per-section result for a sectioned assembly run.",
        +            "properties": {
        +              "aggregated_boq_rows": {
        +                "items": {
        +                  "additionalProperties": false,
        +                  "description": "Schema § 1.3 — a single bill row in the requested standard's format.\n\n`description` is the non-verbatim functional description per spec § 13.9 /\n§ 15 invariant — NEVER reproduces a standard's verbatim clause text.\n`rate` / `amount` ship null because rates are commodity data the customer\nowns; the engine's job is the measurement, not the pricing.",
        +                  "properties": {
        +                    "amount": {
        +                      "anyOf": [
        +                        {
        +                          "type": "number"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "attribution": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "audit_id": {
        +                      "anyOf": [
        +                        {
        +                          "type": "string"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "description": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "quantity": {
        +                      "minimum": 0,
        +                      "type": "number"
        +                    },
        +                    "rate": {
        +                      "anyOf": [
        +                        {
        +                          "type": "number"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "unit": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "work_section": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    }
        +                  },
        +                  "required": [
        +                    "work_section",
        +                    "description",
        +                    "quantity",
        +                    "unit",
        +                    "attribution"
        +                  ],
        +                  "type": "object"
        +                },
        +                "type": "array"
        +              },
        +              "assembly_slug": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "parameters_used": {
        +                "additionalProperties": true,
        +                "type": "object"
        +              },
        +              "section_count": {
        +                "minimum": 1,
        +                "type": "integer"
        +              },
        +              "section_results": {
        +                "anyOf": [
        +                  {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.1 — the typed payload returned inside `MCPResponse[ComputeResult]`.\n\nFree-tier responses omit `drawings` (the downloadable CAD artefact\npointers — the paid differentiator); the bridge enforces this. The\n`audit_trail` and the inline `drawing` preview are present on BOTH tiers\n(V1 ALIGN / 60th-fire D + C). `text_summary` is bounded to 2000 chars —\nkeeps the LLM-facing summary token-cheap and forces longer narrative into\nBoQ row descriptions where it belongs. `warnings` is the non-fatal\ngeometry advisory list (both tiers).",
        +                      "properties": {
        +                        "assembly_slug": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "audit_trail": {
        +                          "anyOf": [
        +                            {
        +                              "items": {
        +                                "additionalProperties": false,
        +                                "description": "Schema § 1.7 — paid-tier audit-trail entry.\n\nOne entry per BoQ row; `boq_row_index` ties to the row position in\n`ComputeResult.boq_rows`. `derivation` is the human-readable formula\nwalk-through; `formula` is the optional formal expression.",
        +                                "properties": {
        +                                  "boq_row_index": {
        +                                    "minimum": 0,
        +                                    "type": "integer"
        +                                  },
        +                                  "derivation": {
        +                                    "minLength": 1,
        +                                    "type": "string"
        +                                  },
        +                                  "formula": {
        +                                    "anyOf": [
        +                                      {
        +                                        "type": "string"
        +                                      },
        +                                      {
        +                                        "type": "null"
        +                                      }
        +                                    ],
        +                                    "default": null
        +                                  },
        +                                  "id": {
        +                                    "minLength": 1,
        +                                    "type": "string"
        +                                  },
        +                                  "parameters_referenced": {
        +                                    "items": {
        +                                      "type": "string"
        +                                    },
        +                                    "type": "array"
        +                                  }
        +                                },
        +                                "required": [
        +                                  "id",
        +                                  "boq_row_index",
        +                                  "derivation"
        +                                ],
        +                                "type": "object"
        +                              },
        +                              "type": "array"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ],
        +                          "default": null
        +                        },
        +                        "boq_rows": {
        +                          "items": {
        +                            "additionalProperties": false,
        +                            "description": "Schema § 1.3 — a single bill row in the requested standard's format.\n\n`description` is the non-verbatim functional description per spec § 13.9 /\n§ 15 invariant — NEVER reproduces a standard's verbatim clause text.\n`rate` / `amount` ship null because rates are commodity data the customer\nowns; the engine's job is the measurement, not the pricing.",
        +                            "properties": {
        +                              "amount": {
        +                                "anyOf": [
        +                                  {
        +                                    "type": "number"
        +                                  },
        +                                  {
        +                                    "type": "null"
        +                                  }
        +                                ],
        +                                "default": null
        +                              },
        +                              "attribution": {
        +                                "minLength": 1,
        +                                "type": "string"
        +                              },
        +                              "audit_id": {
        +                                "anyOf": [
        +                                  {
        +                                    "type": "string"
        +                                  },
        +                                  {
        +                                    "type": "null"
        +                                  }
        +                                ],
        +                                "default": null
        +                              },
        +                              "description": {
        +                                "minLength": 1,
        +                                "type": "string"
        +                              },
        +                              "quantity": {
        +                                "minimum": 0,
        +                                "type": "number"
        +                              },
        +                              "rate": {
        +                                "anyOf": [
        +                                  {
        +                                    "type": "number"
        +                                  },
        +                                  {
        +                                    "type": "null"
        +                                  }
        +                                ],
        +                                "default": null
        +                              },
        +                              "unit": {
        +                                "minLength": 1,
        +                                "type": "string"
        +                              },
        +                              "work_section": {
        +                                "minLength": 1,
        +                                "type": "string"
        +                              }
        +                            },
        +                            "required": [
        +                              "work_section",
        +                              "description",
        +                              "quantity",
        +                              "unit",
        +                              "attribution"
        +                            ],
        +                            "type": "object"
        +                          },
        +                          "type": "array"
        +                        },
        +                        "drawing": {
        +                          "anyOf": [
        +                            {
        +                              "additionalProperties": false,
        +                              "description": "Schema § 1.6a — inline server-rendered SVG preview of the geometry.\n\nThe MCP mirror of the web ``/compute`` response's ``drawing`` field\n(``api.schemas.compute.DrawingRef``): the same on-screen dimensioned\ndrawing both tiers see in the workspace, surfaced on the MCP compute\nresponse so a chat client can render it inline (60th-fire item C). This\nis the on-screen preview — present on BOTH tiers per the free/paid\nboundary; the downloadable CAD artefacts (DXF / dimensioned PDF) remain\nthe paid differentiator via the export tools.\n\nDefined here rather than importing ``DrawingRef`` because the web\n``schemas`` package imports back into this module (``schemas.render``),\nso reusing it would create an import cycle — the MCP wire contract keeps\nits own copy, the same pattern as ``BoQRow`` / ``DrawingReference``.",
        +                              "properties": {
        +                                "entity_count": {
        +                                  "minimum": 0,
        +                                  "type": "integer"
        +                                },
        +                                "svg_b64": {
        +                                  "minLength": 1,
        +                                  "type": "string"
        +                                },
        +                                "unit_of_drawing": {
        +                                  "const": "m",
        +                                  "default": "m",
        +                                  "type": "string"
        +                                },
        +                                "viewbox_height": {
        +                                  "exclusiveMinimum": 0,
        +                                  "type": "number"
        +                                },
        +                                "viewbox_width": {
        +                                  "exclusiveMinimum": 0,
        +                                  "type": "number"
        +                                },
        +                                "viewbox_x": {
        +                                  "type": "number"
        +                                },
        +                                "viewbox_y": {
        +                                  "type": "number"
        +                                }
        +                              },
        +                              "required": [
        +                                "svg_b64",
        +                                "viewbox_x",
        +                                "viewbox_y",
        +                                "viewbox_width",
        +                                "viewbox_height",
        +                                "entity_count"
        +                              ],
        +                              "type": "object"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ],
        +                          "default": null
        +                        },
        +                        "drawings": {
        +                          "anyOf": [
        +                            {
        +                              "items": {
        +                                "additionalProperties": false,
        +                                "description": "Schema § 1.6 — paid-tier drawing artefact pointer.\n\n`url` is an R2-signed URL; expiry is carried in `_meta.deliverables.expires_at`\non the envelope (not duplicated here). `layers` is DXF-only; PDF/SVG\ncallers omit it.",
        +                                "properties": {
        +                                  "drawing_type": {
        +                                    "enum": [
        +                                      "section",
        +                                      "plan",
        +                                      "elevation",
        +                                      "isometric",
        +                                      "detail"
        +                                    ],
        +                                    "type": "string"
        +                                  },
        +                                  "format": {
        +                                    "enum": [
        +                                      "DXF",
        +                                      "PDF",
        +                                      "SVG"
        +                                    ],
        +                                    "type": "string"
        +                                  },
        +                                  "layers": {
        +                                    "anyOf": [
        +                                      {
        +                                        "items": {
        +                                          "type": "string"
        +                                        },
        +                                        "type": "array"
        +                                      },
        +                                      {
        +                                        "type": "null"
        +                                      }
        +                                    ],
        +                                    "default": null
        +                                  },
        +                                  "scale": {
        +                                    "minLength": 1,
        +                                    "type": "string"
        +                                  },
        +                                  "sheet_size": {
        +                                    "enum": [
        +                                      "A1",
        +                                      "A2",
        +                                      "A3",
        +                                      "A4"
        +                                    ],
        +                                    "type": "string"
        +                                  },
        +                                  "url": {
        +                                    "minLength": 1,
        +                                    "type": "string"
        +                                  }
        +                                },
        +                                "required": [
        +                                  "drawing_type",
        +                                  "format",
        +                                  "url",
        +                                  "sheet_size",
        +                                  "scale"
        +                                ],
        +                                "type": "object"
        +                              },
        +                              "type": "array"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ],
        +                          "default": null
        +                        },
        +                        "parameters_used": {
        +                          "additionalProperties": false,
        +                          "description": "Schema § 1.2 — the parameter snapshot the engine actually used.\n\nSplits user-supplied values from engine defaults so customers can see\nwhich numbers came from them and which the engine filled in. Every\ndefaulted parameter SHOULD have a corresponding entry in `assumptions`\n— the bridge layer enforces this when wrapping engine output.",
        +                          "properties": {
        +                            "assumptions": {
        +                              "items": {
        +                                "type": "string"
        +                              },
        +                              "type": "array"
        +                            },
        +                            "engine_defaults": {
        +                              "additionalProperties": true,
        +                              "type": "object"
        +                            },
        +                            "user_supplied": {
        +                              "additionalProperties": true,
        +                              "type": "object"
        +                            }
        +                          },
        +                          "type": "object"
        +                        },
        +                        "standard": {
        +                          "enum": [
        +                            "CESMM4",
        +                            "NRM2",
        +                            "SMM7",
        +                            "MMHW"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "text_summary": {
        +                          "maxLength": 2000,
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "totals_summary": {
        +                          "additionalProperties": false,
        +                          "description": "Schema § 1.4 — totals_summary as a typed wrapper around the free-form dict.\n\nWire shape is a flat object (`{\"concrete_m3\": {...}, \"rebar_t\": {...}}`).\nWe model it as `RootModel`-equivalent via `model_config(extra=\"allow\")`\n+ a single `__root__`-style `entries` dict. Pydantic v2 recommends\n`RootModel` for free-form roots; using a wrapper class keeps the import\nsurface uniform with the rest of this module.",
        +                          "properties": {
        +                            "entries": {
        +                              "additionalProperties": {
        +                                "additionalProperties": false,
        +                                "description": "Schema § 1.4 — single material/work-class total entry.",
        +                                "properties": {
        +                                  "quantity": {
        +                                    "minimum": 0,
        +                                    "type": "number"
        +                                  },
        +                                  "unit": {
        +                                    "minLength": 1,
        +                                    "type": "string"
        +                                  }
        +                                },
        +                                "required": [
        +                                  "quantity",
        +                                  "unit"
        +                                ],
        +                                "type": "object"
        +                              },
        +                              "type": "object"
        +                            }
        +                          },
        +                          "type": "object"
        +                        },
        +                        "warnings": {
        +                          "items": {
        +                            "additionalProperties": false,
        +                            "description": "Schema § 1.8 — a non-fatal geometry advisory (56th-fire T2).\n\nThe wire projection of the engine's `core.GeometryWarning`. Advisory only:\na warning NEVER changes a measured quantity — it flags geometry that is\nvalid but likely a mistake (e.g. a stale dependent-height default). Present\non BOTH tiers — a correctness/safety signal, not a paid feature.",
        +                            "properties": {
        +                              "affected_params": {
        +                                "items": {
        +                                  "type": "string"
        +                                },
        +                                "type": "array"
        +                              },
        +                              "code": {
        +                                "minLength": 1,
        +                                "type": "string"
        +                              },
        +                              "detail": {
        +                                "additionalProperties": {
        +                                  "type": "number"
        +                                },
        +                                "type": "object"
        +                              },
        +                              "message": {
        +                                "minLength": 1,
        +                                "type": "string"
        +                              },
        +                              "severity": {
        +                                "enum": [
        +                                  "info",
        +                                  "advisory",
        +                                  "caution"
        +                                ],
        +                                "type": "string"
        +                              }
        +                            },
        +                            "required": [
        +                              "code",
        +                              "severity",
        +                              "message"
        +                            ],
        +                            "type": "object"
        +                          },
        +                          "type": "array"
        +                        }
        +                      },
        +                      "required": [
        +                        "assembly_slug",
        +                        "standard",
        +                        "parameters_used",
        +                        "boq_rows",
        +                        "totals_summary",
        +                        "text_summary"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "section_summary": {
        +                "items": {
        +                  "additionalProperties": false,
        +                  "description": "Cheap always-on per-section line: label + run length + totals.",
        +                  "properties": {
        +                    "label": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "run_length": {
        +                      "anyOf": [
        +                        {
        +                          "type": "number"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "totals_summary": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.4 — totals_summary as a typed wrapper around the free-form dict.\n\nWire shape is a flat object (`{\"concrete_m3\": {...}, \"rebar_t\": {...}}`).\nWe model it as `RootModel`-equivalent via `model_config(extra=\"allow\")`\n+ a single `__root__`-style `entries` dict. Pydantic v2 recommends\n`RootModel` for free-form roots; using a wrapper class keeps the import\nsurface uniform with the rest of this module.",
        +                      "properties": {
        +                        "entries": {
        +                          "additionalProperties": {
        +                            "additionalProperties": false,
        +                            "description": "Schema § 1.4 — single material/work-class total entry.",
        +                            "properties": {
        +                              "quantity": {
        +                                "minimum": 0,
        +                                "type": "number"
        +                              },
        +                              "unit": {
        +                                "minLength": 1,
        +                                "type": "string"
        +                              }
        +                            },
        +                            "required": [
        +                              "quantity",
        +                              "unit"
        +                            ],
        +                            "type": "object"
        +                          },
        +                          "type": "object"
        +                        }
        +                      },
        +                      "type": "object"
        +                    }
        +                  },
        +                  "required": [
        +                    "label",
        +                    "totals_summary"
        +                  ],
        +                  "type": "object"
        +                },
        +                "type": "array"
        +              },
        +              "standard": {
        +                "enum": [
        +                  "CESMM4",
        +                  "NRM2",
        +                  "SMM7",
        +                  "MMHW"
        +                ],
        +                "type": "string"
        +              },
        +              "warnings": {
        +                "items": {
        +                  "additionalProperties": false,
        +                  "description": "A section-labelled geometry/advisory warning.",
        +                  "properties": {
        +                    "section_label": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "warning": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.8 — a non-fatal geometry advisory (56th-fire T2).\n\nThe wire projection of the engine's `core.GeometryWarning`. Advisory only:\na warning NEVER changes a measured quantity — it flags geometry that is\nvalid but likely a mistake (e.g. a stale dependent-height default). Present\non BOTH tiers — a correctness/safety signal, not a paid feature.",
        +                      "properties": {
        +                        "affected_params": {
        +                          "items": {
        +                            "type": "string"
        +                          },
        +                          "type": "array"
        +                        },
        +                        "code": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "detail": {
        +                          "additionalProperties": {
        +                            "type": "number"
        +                          },
        +                          "type": "object"
        +                        },
        +                        "message": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "severity": {
        +                          "enum": [
        +                            "info",
        +                            "advisory",
        +                            "caution"
        +                          ],
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "code",
        +                        "severity",
        +                        "message"
        +                      ],
        +                      "type": "object"
        +                    }
        +                  },
        +                  "required": [
        +                    "section_label",
        +                    "warning"
        +                  ],
        +                  "type": "object"
        +                },
        +                "type": "array"
        +              }
        +            },
        +            "required": [
        +              "assembly_slug",
        +              "standard",
        +              "section_count",
        +              "section_summary",
        +              "aggregated_boq_rows"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      },
        +      "error": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        +            "properties": {
        +              "code": {
        +                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        +                "enum": [
        +                  "RATE_LIMIT_EXCEEDED",
        +                  "TIER_INSUFFICIENT",
        +                  "INVALID_INPUT",
        +                  "SCHEMA_VERSION_MISMATCH",
        +                  "SCHEMA_INVARIANT_VIOLATION",
        +                  "UPSTREAM_TIMEOUT",
        +                  "BACKEND_FAILURE",
        +                  "IP_BLOCKED",
        +                  "RESOURCE_NOT_FOUND",
        +                  "RENDER_FAILURE",
        +                  "OCR_LOW_CONFIDENCE",
        +                  "MANUAL_REVIEW_REQUIRED",
        +                  "ACCEPTANCE_REQUIRED",
        +                  "INVALID_TOKEN"
        +                ],
        +                "type": "string"
        +              },
        +              "details": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "message": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "recoverable": {
        +                "type": "boolean"
        +              },
        +              "retry_after_seconds": {
        +                "anyOf": [
        +                  {
        +                    "minimum": 0,
        +                    "type": "integer"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              }
        +            },
        +            "required": [
        +              "code",
        +              "message",
        +              "recoverable"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      }
        +    },
        +    "required": [
        +      "_meta"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "_meta": {
        +        "additionalProperties": false,
        +        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        +        "properties": {
        +          "deliverables": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        +                "properties": {
        +                  "docx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "dxf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "expires_at": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  },
        +                  "pdf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "xlsx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "expires_at"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "document_id": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "issued_at": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "rate_limit_remaining": {
        +            "anyOf": [
        +              {
        +                "minimum": 0,
        +                "type": "integer"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "request_id": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "schema_version": {
        +            "const": "1.0.0",
        +            "default": "1.0.0",
        +            "type": "string"
        +          },
        +          "scope_boundary": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        +                "properties": {
        +                  "not_in_scope": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "produced": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "recommended_companions": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "type": "string"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "produced",
        +                  "not_in_scope"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tier": {
        +            "enum": [
        +              "free",
        +              "paid"
        +            ],
        +            "type": "string"
        +          },
        +          "tier_upgrade": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        +                "properties": {
        +                  "available_tiers": {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        +                      "properties": {
        +                        "billing": {
        +                          "enum": [
        +                            "one_off",
        +                            "monthly",
        +                            "annual"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "currency": {
        +                          "enum": [
        +                            "GBP",
        +                            "SGD",
        +                            "EUR",
        +                            "USD",
        +                            "CAD",
        +                            "AUD",
        +                            "NZD",
        +                            "MYR"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "display_name": {
        +                          "type": "string"
        +                        },
        +                        "price_local": {
        +                          "type": "number"
        +                        },
        +                        "tier_slug": {
        +                          "enum": [
        +                            "7_day_pass",
        +                            "solo",
        +                            "studio",
        +                            "practice"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "unlock_summary": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "tier_slug",
        +                        "display_name",
        +                        "price_local",
        +                        "currency",
        +                        "billing",
        +                        "unlock_summary"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "current_tier": {
        +                    "const": "free",
        +                    "default": "free",
        +                    "type": "string"
        +                  },
        +                  "pass_credit": {
        +                    "anyOf": [
        +                      {
        +                        "additionalProperties": false,
        +                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        +                        "properties": {
        +                          "amount_local": {
        +                            "type": "number"
        +                          },
        +                          "applies_to": {
        +                            "const": "solo_first_month",
        +                            "default": "solo_first_month",
        +                            "type": "string"
        +                          },
        +                          "currency": {
        +                            "type": "string"
        +                          },
        +                          "redeemable_until": {
        +                            "type": "string"
        +                          }
        +                        },
        +                        "required": [
        +                          "amount_local",
        +                          "currency",
        +                          "redeemable_until"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "pricing_url": {
        +                    "default": "https://civilquants.com/pricing",
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "available_tiers"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tos_url": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "upgrade_hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "warranty_disclaimer": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          }
        +        },
        +        "required": [
        +          "request_id",
        +          "issued_at",
        +          "tier"
        +        ],
        +        "type": "object"
        +      },
        +      "data": {
        +        "default": null,
        +        "title": "Data"
        +      },
        +      "error": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        +            "properties": {
        +              "code": {
        +                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        +                "enum": [
        +                  "RATE_LIMIT_EXCEEDED",
        +                  "TIER_INSUFFICIENT",
        +                  "INVALID_INPUT",
        +                  "SCHEMA_VERSION_MISMATCH",
        +                  "SCHEMA_INVARIANT_VIOLATION",
        +                  "UPSTREAM_TIMEOUT",
        +                  "BACKEND_FAILURE",
        +                  "IP_BLOCKED",
        +                  "RESOURCE_NOT_FOUND",
        +                  "RENDER_FAILURE",
        +                  "OCR_LOW_CONFIDENCE",
        +                  "MANUAL_REVIEW_REQUIRED",
        +                  "ACCEPTANCE_REQUIRED",
        +                  "INVALID_TOKEN"
        +                ],
        +                "type": "string"
        +              },
        +              "details": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "message": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "recoverable": {
        +                "type": "boolean"
        +              },
        +              "retry_after_seconds": {
        +                "anyOf": [
        +                  {
        +                    "minimum": 0,
        +                    "type": "integer"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              }
        +            },
        +            "required": [
        +              "code",
        +              "message",
        +              "recoverable"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      }
        +    },
        +    "required": [
        +      "_meta"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedcompute_pad_foundation1 field changed
      • changedOutput schema / properties / result / anyOf
        Previous value: -[
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "_meta": {
        -        "additionalProperties": false,
        -        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        -        "properties": {
        -          "deliverables": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        -                "properties": {
        -                  "docx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "dxf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "expires_at": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  },
        -                  "pdf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "xlsx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "expires_at"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "document_id": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "issued_at": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "rate_limit_remaining": {
        -            "anyOf": [
        -              {
        -                "minimum": 0,
        -                "type": "integer"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "request_id": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "schema_version": {
        -            "const": "1.0.0",
        -            "default": "1.0.0",
        -            "type": "string"
        -          },
        -          "scope_boundary": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        -                "properties": {
        -                  "not_in_scope": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "produced": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "recommended_companions": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "type": "string"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "produced",
        -                  "not_in_scope"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tier": {
        -            "enum": [
        -              "free",
        -              "paid"
        -            ],
        -            "type": "string"
        -          },
        -          "tier_upgrade": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        -                "properties": {
        -                  "available_tiers": {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        -                      "properties": {
        -                        "billing": {
        -                          "enum": [
        -                            "one_off",
        -                            "monthly",
        -                            "annual"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "currency": {
        -                          "enum": [
        -                            "GBP",
        -                            "SGD",
        -                            "EUR",
        -                            "USD",
        -                            "CAD",
        -                            "AUD",
        -                            "NZD",
        -                            "MYR"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "display_name": {
        -                          "type": "string"
        -                        },
        -                        "price_local": {
        -                          "type": "number"
        -                        },
        -                        "tier_slug": {
        -                          "enum": [
        -                            "7_day_pass",
        -                            "solo",
        -                            "studio",
        -                            "practice"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "unlock_summary": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "tier_slug",
        -                        "display_name",
        -                        "price_local",
        -                        "currency",
        -                        "billing",
        -                        "unlock_summary"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "current_tier": {
        -                    "const": "free",
        -                    "default": "free",
        -                    "type": "string"
        -                  },
        -                  "pass_credit": {
        -                    "anyOf": [
        -                      {
        -                        "additionalProperties": false,
        -                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        -                        "properties": {
        -                          "amount_local": {
        -                            "type": "number"
        -                          },
        -                          "applies_to": {
        -                            "const": "solo_first_month",
        -                            "default": "solo_first_month",
        -                            "type": "string"
        -                          },
        -                          "currency": {
        -                            "type": "string"
        -                          },
        -                          "redeemable_until": {
        -                            "type": "string"
        -                          }
        -                        },
        -                        "required": [
        -                          "amount_local",
        -                          "currency",
        -                          "redeemable_until"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "pricing_url": {
        -                    "default": "https://civilquants.com/pricing",
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "available_tiers"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tos_url": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "upgrade_hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "warranty_disclaimer": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          }
        -        },
        -        "required": [
        -          "request_id",
        -          "issued_at",
        -          "tier"
        -        ],
        -        "type": "object"
        -      },
        -      "data": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Schema § 1.1 — the typed payload returned inside `MCPResponse[ComputeResult]`.\n\nFree-tier responses omit `drawings` (the downloadable CAD artefact\npointers — the paid differentiator); the bridge enforces this. The\n`audit_trail` and the inline `drawing` preview are present on BOTH tiers\n(V1 ALIGN / 60th-fire D + C). `text_summary` is bounded to 2000 chars —\nkeeps the LLM-facing summary token-cheap and forces longer narrative into\nBoQ row descriptions where it belongs. `warnings` is the non-fatal\ngeometry advisory list (both tiers).",
        -            "properties": {
        -              "assembly_slug": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "audit_trail": {
        -                "anyOf": [
        -                  {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.7 — paid-tier audit-trail entry.\n\nOne entry per BoQ row; `boq_row_index` ties to the row position in\n`ComputeResult.boq_rows`. `derivation` is the human-readable formula\nwalk-through; `formula` is the optional formal expression.",
        -                      "properties": {
        -                        "boq_row_index": {
        -                          "minimum": 0,
        -                          "type": "integer"
        -                        },
        -                        "derivation": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "formula": {
        -                          "anyOf": [
        -                            {
        -                              "type": "string"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ],
        -                          "default": null
        -                        },
        -                        "id": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "parameters_referenced": {
        -                          "items": {
        -                            "type": "string"
        -                          },
        -                          "type": "array"
        -                        }
        -                      },
        -                      "required": [
        -                        "id",
        -                        "boq_row_index",
        -                        "derivation"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "boq_rows": {
        -                "items": {
        -                  "additionalProperties": false,
        -                  "description": "Schema § 1.3 — a single bill row in the requested standard's format.\n\n`description` is the non-verbatim functional description per spec § 13.9 /\n§ 15 invariant — NEVER reproduces a standard's verbatim clause text.\n`rate` / `amount` ship null because rates are commodity data the customer\nowns; the engine's job is the measurement, not the pricing.",
        -                  "properties": {
        -                    "amount": {
        -                      "anyOf": [
        -                        {
        -                          "type": "number"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "attribution": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "audit_id": {
        -                      "anyOf": [
        -                        {
        -                          "type": "string"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "description": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "quantity": {
        -                      "minimum": 0,
        -                      "type": "number"
        -                    },
        -                    "rate": {
        -                      "anyOf": [
        -                        {
        -                          "type": "number"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "unit": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "work_section": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    }
        -                  },
        -                  "required": [
        -                    "work_section",
        -                    "description",
        -                    "quantity",
        -                    "unit",
        -                    "attribution"
        -                  ],
        -                  "type": "object"
        -                },
        -                "type": "array"
        -              },
        -              "drawing": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": false,
        -                    "description": "Schema § 1.6a — inline server-rendered SVG preview of the geometry.\n\nThe MCP mirror of the web ``/compute`` response's ``drawing`` field\n(``api.schemas.compute.DrawingRef``): the same on-screen dimensioned\ndrawing both tiers see in the workspace, surfaced on the MCP compute\nresponse so a chat client can render it inline (60th-fire item C). This\nis the on-screen preview — present on BOTH tiers per the free/paid\nboundary; the downloadable CAD artefacts (DXF / dimensioned PDF) remain\nthe paid differentiator via the export tools.\n\nDefined here rather than importing ``DrawingRef`` because the web\n``schemas`` package imports back into this module (``schemas.render``),\nso reusing it would create an import cycle — the MCP wire contract keeps\nits own copy, the same pattern as ``BoQRow`` / ``DrawingReference``.",
        -                    "properties": {
        -                      "entity_count": {
        -                        "minimum": 0,
        -                        "type": "integer"
        -                      },
        -                      "svg_b64": {
        -                        "minLength": 1,
        -                        "type": "string"
        -                      },
        -                      "unit_of_drawing": {
        -                        "const": "m",
        -                        "default": "m",
        -                        "type": "string"
        -                      },
        -                      "viewbox_height": {
        -                        "exclusiveMinimum": 0,
        -                        "type": "number"
        -                      },
        -                      "viewbox_width": {
        -                        "exclusiveMinimum": 0,
        -                        "type": "number"
        -                      },
        -                      "viewbox_x": {
        -                        "type": "number"
        -                      },
        -                      "viewbox_y": {
        -                        "type": "number"
        -                      }
        -                    },
        -                    "required": [
        -                      "svg_b64",
        -                      "viewbox_x",
        -                      "viewbox_y",
        -                      "viewbox_width",
        -                      "viewbox_height",
        -                      "entity_count"
        -                    ],
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "drawings": {
        -                "anyOf": [
        -                  {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.6 — paid-tier drawing artefact pointer.\n\n`url` is an R2-signed URL; expiry is carried in `_meta.deliverables.expires_at`\non the envelope (not duplicated here). `layers` is DXF-only; PDF/SVG\ncallers omit it.",
        -                      "properties": {
        -                        "drawing_type": {
        -                          "enum": [
        -                            "section",
        -                            "plan",
        -                            "elevation",
        -                            "isometric",
        -                            "detail"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "format": {
        -                          "enum": [
        -                            "DXF",
        -                            "PDF",
        -                            "SVG"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "layers": {
        -                          "anyOf": [
        -                            {
        -                              "items": {
        -                                "type": "string"
        -                              },
        -                              "type": "array"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ],
        -                          "default": null
        -                        },
        -                        "scale": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "sheet_size": {
        -                          "enum": [
        -                            "A1",
        -                            "A2",
        -                            "A3",
        -                            "A4"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "url": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "drawing_type",
        -                        "format",
        -                        "url",
        -                        "sheet_size",
        -                        "scale"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "parameters_used": {
        -                "additionalProperties": false,
        -                "description": "Schema § 1.2 — the parameter snapshot the engine actually used.\n\nSplits user-supplied values from engine defaults so customers can see\nwhich numbers came from them and which the engine filled in. Every\ndefaulted parameter SHOULD have a corresponding entry in `assumptions`\n— the bridge layer enforces this when wrapping engine output.",
        -                "properties": {
        -                  "assumptions": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "engine_defaults": {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  "resolved_from_description": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "additionalProperties": false,
        -                          "description": "Schema § 1.2 — a parameter resolved by the forgiving-input layer.\n\nPopulated by the Track B-Forgiving Haiku-4.5 resolution pass; until that\nlayer lands, instances are constructed only by tests. `source` distinguishes\nthe resolution path so customers can audit which fields were inferred.",
        -                          "properties": {
        -                            "confidence": {
        -                              "anyOf": [
        -                                {
        -                                  "enum": [
        -                                    "high",
        -                                    "medium",
        -                                    "low"
        -                                  ],
        -                                  "type": "string"
        -                                },
        -                                {
        -                                  "type": "null"
        -                                }
        -                              ],
        -                              "default": null
        -                            },
        -                            "field_name": {
        -                              "minLength": 1,
        -                              "type": "string"
        -                            },
        -                            "resolved_value": {},
        -                            "source": {
        -                              "enum": [
        -                                "description_field",
        -                                "haiku_resolution",
        -                                "engine_default"
        -                              ],
        -                              "type": "string"
        -                            }
        -                          },
        -                          "required": [
        -                            "field_name",
        -                            "resolved_value",
        -                            "source"
        -                          ],
        -                          "type": "object"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "user_supplied": {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  }
        -                },
        -                "type": "object"
        -              },
        -              "standard": {
        -                "enum": [
        -                  "CESMM4",
        -                  "NRM2",
        -                  "SMM7",
        -                  "MMHW"
        -                ],
        -                "type": "string"
        -              },
        -              "text_summary": {
        -                "maxLength": 2000,
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "totals_summary": {
        -                "additionalProperties": false,
        -                "description": "Schema § 1.4 — totals_summary as a typed wrapper around the free-form dict.\n\nWire shape is a flat object (`{\"concrete_m3\": {...}, \"rebar_t\": {...}}`).\nWe model it as `RootModel`-equivalent via `model_config(extra=\"allow\")`\n+ a single `__root__`-style `entries` dict. Pydantic v2 recommends\n`RootModel` for free-form roots; using a wrapper class keeps the import\nsurface uniform with the rest of this module.",
        -                "properties": {
        -                  "entries": {
        -                    "additionalProperties": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.4 — single material/work-class total entry.",
        -                      "properties": {
        -                        "quantity": {
        -                          "minimum": 0,
        -                          "type": "number"
        -                        },
        -                        "unit": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "quantity",
        -                        "unit"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "object"
        -                  }
        -                },
        -                "type": "object"
        -              },
        -              "warnings": {
        -                "items": {
        -                  "additionalProperties": false,
        -                  "description": "Schema § 1.8 — a non-fatal geometry advisory (56th-fire T2).\n\nThe wire projection of the engine's `core.GeometryWarning`. Advisory only:\na warning NEVER changes a measured quantity — it flags geometry that is\nvalid but likely a mistake (e.g. a stale dependent-height default). Present\non BOTH tiers — a correctness/safety signal, not a paid feature.",
        -                  "properties": {
        -                    "affected_params": {
        -                      "items": {
        -                        "type": "string"
        -                      },
        -                      "type": "array"
        -                    },
        -                    "code": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "detail": {
        -                      "additionalProperties": {
        -                        "type": "number"
        -                      },
        -                      "type": "object"
        -                    },
        -                    "message": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "severity": {
        -                      "enum": [
        -                        "info",
        -                        "advisory",
        -                        "caution"
        -                      ],
        -                      "type": "string"
        -                    }
        -                  },
        -                  "required": [
        -                    "code",
        -                    "severity",
        -                    "message"
        -                  ],
        -                  "type": "object"
        -                },
        -                "type": "array"
        -              }
        -            },
        -            "required": [
        -              "assembly_slug",
        -              "standard",
        -              "parameters_used",
        -              "boq_rows",
        -              "totals_summary",
        -              "text_summary"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      },
        -      "error": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        -            "properties": {
        -              "code": {
        -                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        -                "enum": [
        -                  "RATE_LIMIT_EXCEEDED",
        -                  "TIER_INSUFFICIENT",
        -                  "INVALID_INPUT",
        -                  "SCHEMA_VERSION_MISMATCH",
        -                  "SCHEMA_INVARIANT_VIOLATION",
        -                  "UPSTREAM_TIMEOUT",
        -                  "BACKEND_FAILURE",
        -                  "IP_BLOCKED",
        -                  "RESOURCE_NOT_FOUND",
        -                  "RENDER_FAILURE",
        -                  "OCR_LOW_CONFIDENCE",
        -                  "MANUAL_REVIEW_REQUIRED",
        -                  "ACCEPTANCE_REQUIRED",
        -                  "INVALID_TOKEN"
        -                ],
        -                "type": "string"
        -              },
        -              "details": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "message": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "recoverable": {
        -                "type": "boolean"
        -              },
        -              "retry_after_seconds": {
        -                "anyOf": [
        -                  {
        -                    "minimum": 0,
        -                    "type": "integer"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              }
        -            },
        -            "required": [
        -              "code",
        -              "message",
        -              "recoverable"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      }
        -    },
        -    "required": [
        -      "_meta"
        -    ],
        -    "type": "object"
        -  },
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "_meta": {
        -        "additionalProperties": false,
        -        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        -        "properties": {
        -          "deliverables": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        -                "properties": {
        -                  "docx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "dxf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "expires_at": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  },
        -                  "pdf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "xlsx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "expires_at"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "document_id": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "issued_at": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "rate_limit_remaining": {
        -            "anyOf": [
        -              {
        -                "minimum": 0,
        -                "type": "integer"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "request_id": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "schema_version": {
        -            "const": "1.0.0",
        -            "default": "1.0.0",
        -            "type": "string"
        -          },
        -          "scope_boundary": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        -                "properties": {
        -                  "not_in_scope": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "produced": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "recommended_companions": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "type": "string"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "produced",
        -                  "not_in_scope"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tier": {
        -            "enum": [
        -              "free",
        -              "paid"
        -            ],
        -            "type": "string"
        -          },
        -          "tier_upgrade": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        -                "properties": {
        -                  "available_tiers": {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        -                      "properties": {
        -                        "billing": {
        -                          "enum": [
        -                            "one_off",
        -                            "monthly",
        -                            "annual"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "currency": {
        -                          "enum": [
        -                            "GBP",
        -                            "SGD",
        -                            "EUR",
        -                            "USD",
        -                            "CAD",
        -                            "AUD",
        -                            "NZD",
        -                            "MYR"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "display_name": {
        -                          "type": "string"
        -                        },
        -                        "price_local": {
        -                          "type": "number"
        -                        },
        -                        "tier_slug": {
        -                          "enum": [
        -                            "7_day_pass",
        -                            "solo",
        -                            "studio",
        -                            "practice"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "unlock_summary": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "tier_slug",
        -                        "display_name",
        -                        "price_local",
        -                        "currency",
        -                        "billing",
        -                        "unlock_summary"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "current_tier": {
        -                    "const": "free",
        -                    "default": "free",
        -                    "type": "string"
        -                  },
        -                  "pass_credit": {
        -                    "anyOf": [
        -                      {
        -                        "additionalProperties": false,
        -                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        -                        "properties": {
        -                          "amount_local": {
        -                            "type": "number"
        -                          },
        -                          "applies_to": {
        -                            "const": "solo_first_month",
        -                            "default": "solo_first_month",
        -                            "type": "string"
        -                          },
        -                          "currency": {
        -                            "type": "string"
        -                          },
        -                          "redeemable_until": {
        -                            "type": "string"
        -                          }
        -                        },
        -                        "required": [
        -                          "amount_local",
        -                          "currency",
        -                          "redeemable_until"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "pricing_url": {
        -                    "default": "https://civilquants.com/pricing",
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "available_tiers"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tos_url": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "upgrade_hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "warranty_disclaimer": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          }
        -        },
        -        "required": [
        -          "request_id",
        -          "issued_at",
        -          "tier"
        -        ],
        -        "type": "object"
        -      },
        -      "data": {
        -        "default": null,
        -        "title": "Data"
        -      },
        -      "error": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        -            "properties": {
        -              "code": {
        -                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        -                "enum": [
        -                  "RATE_LIMIT_EXCEEDED",
        -                  "TIER_INSUFFICIENT",
        -                  "INVALID_INPUT",
        -                  "SCHEMA_VERSION_MISMATCH",
        -                  "SCHEMA_INVARIANT_VIOLATION",
        -                  "UPSTREAM_TIMEOUT",
        -                  "BACKEND_FAILURE",
        -                  "IP_BLOCKED",
        -                  "RESOURCE_NOT_FOUND",
        -                  "RENDER_FAILURE",
        -                  "OCR_LOW_CONFIDENCE",
        -                  "MANUAL_REVIEW_REQUIRED",
        -                  "ACCEPTANCE_REQUIRED",
        -                  "INVALID_TOKEN"
        -                ],
        -                "type": "string"
        -              },
        -              "details": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "message": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "recoverable": {
        -                "type": "boolean"
        -              },
        -              "retry_after_seconds": {
        -                "anyOf": [
        -                  {
        -                    "minimum": 0,
        -                    "type": "integer"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              }
        -            },
        -            "required": [
        -              "code",
        -              "message",
        -              "recoverable"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      }
        -    },
        -    "required": [
        -      "_meta"
        -    ],
        -    "type": "object"
        -  }
        -]New value: +[
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "_meta": {
        +        "additionalProperties": false,
        +        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        +        "properties": {
        +          "deliverables": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        +                "properties": {
        +                  "docx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "dxf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "expires_at": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  },
        +                  "pdf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "xlsx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "expires_at"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "document_id": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "issued_at": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "rate_limit_remaining": {
        +            "anyOf": [
        +              {
        +                "minimum": 0,
        +                "type": "integer"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "request_id": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "schema_version": {
        +            "const": "1.0.0",
        +            "default": "1.0.0",
        +            "type": "string"
        +          },
        +          "scope_boundary": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        +                "properties": {
        +                  "not_in_scope": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "produced": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "recommended_companions": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "type": "string"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "produced",
        +                  "not_in_scope"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tier": {
        +            "enum": [
        +              "free",
        +              "paid"
        +            ],
        +            "type": "string"
        +          },
        +          "tier_upgrade": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        +                "properties": {
        +                  "available_tiers": {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        +                      "properties": {
        +                        "billing": {
        +                          "enum": [
        +                            "one_off",
        +                            "monthly",
        +                            "annual"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "currency": {
        +                          "enum": [
        +                            "GBP",
        +                            "SGD",
        +                            "EUR",
        +                            "USD",
        +                            "CAD",
        +                            "AUD",
        +                            "NZD",
        +                            "MYR"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "display_name": {
        +                          "type": "string"
        +                        },
        +                        "price_local": {
        +                          "type": "number"
        +                        },
        +                        "tier_slug": {
        +                          "enum": [
        +                            "7_day_pass",
        +                            "solo",
        +                            "studio",
        +                            "practice"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "unlock_summary": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "tier_slug",
        +                        "display_name",
        +                        "price_local",
        +                        "currency",
        +                        "billing",
        +                        "unlock_summary"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "current_tier": {
        +                    "const": "free",
        +                    "default": "free",
        +                    "type": "string"
        +                  },
        +                  "pass_credit": {
        +                    "anyOf": [
        +                      {
        +                        "additionalProperties": false,
        +                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        +                        "properties": {
        +                          "amount_local": {
        +                            "type": "number"
        +                          },
        +                          "applies_to": {
        +                            "const": "solo_first_month",
        +                            "default": "solo_first_month",
        +                            "type": "string"
        +                          },
        +                          "currency": {
        +                            "type": "string"
        +                          },
        +                          "redeemable_until": {
        +                            "type": "string"
        +                          }
        +                        },
        +                        "required": [
        +                          "amount_local",
        +                          "currency",
        +                          "redeemable_until"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "pricing_url": {
        +                    "default": "https://civilquants.com/pricing",
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "available_tiers"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tos_url": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "upgrade_hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "warranty_disclaimer": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          }
        +        },
        +        "required": [
        +          "request_id",
        +          "issued_at",
        +          "tier"
        +        ],
        +        "type": "object"
        +      },
        +      "data": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Schema § 1.1 — the typed payload returned inside `MCPResponse[ComputeResult]`.\n\nFree-tier responses omit `drawings` (the downloadable CAD artefact\npointers — the paid differentiator); the bridge enforces this. The\n`audit_trail` and the inline `drawing` preview are present on BOTH tiers\n(V1 ALIGN / 60th-fire D + C). `text_summary` is bounded to 2000 chars —\nkeeps the LLM-facing summary token-cheap and forces longer narrative into\nBoQ row descriptions where it belongs. `warnings` is the non-fatal\ngeometry advisory list (both tiers).",
        +            "properties": {
        +              "assembly_slug": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "audit_trail": {
        +                "anyOf": [
        +                  {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.7 — paid-tier audit-trail entry.\n\nOne entry per BoQ row; `boq_row_index` ties to the row position in\n`ComputeResult.boq_rows`. `derivation` is the human-readable formula\nwalk-through; `formula` is the optional formal expression.",
        +                      "properties": {
        +                        "boq_row_index": {
        +                          "minimum": 0,
        +                          "type": "integer"
        +                        },
        +                        "derivation": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "formula": {
        +                          "anyOf": [
        +                            {
        +                              "type": "string"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ],
        +                          "default": null
        +                        },
        +                        "id": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "parameters_referenced": {
        +                          "items": {
        +                            "type": "string"
        +                          },
        +                          "type": "array"
        +                        }
        +                      },
        +                      "required": [
        +                        "id",
        +                        "boq_row_index",
        +                        "derivation"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "boq_rows": {
        +                "items": {
        +                  "additionalProperties": false,
        +                  "description": "Schema § 1.3 — a single bill row in the requested standard's format.\n\n`description` is the non-verbatim functional description per spec § 13.9 /\n§ 15 invariant — NEVER reproduces a standard's verbatim clause text.\n`rate` / `amount` ship null because rates are commodity data the customer\nowns; the engine's job is the measurement, not the pricing.",
        +                  "properties": {
        +                    "amount": {
        +                      "anyOf": [
        +                        {
        +                          "type": "number"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "attribution": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "audit_id": {
        +                      "anyOf": [
        +                        {
        +                          "type": "string"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "description": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "quantity": {
        +                      "minimum": 0,
        +                      "type": "number"
        +                    },
        +                    "rate": {
        +                      "anyOf": [
        +                        {
        +                          "type": "number"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "unit": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "work_section": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    }
        +                  },
        +                  "required": [
        +                    "work_section",
        +                    "description",
        +                    "quantity",
        +                    "unit",
        +                    "attribution"
        +                  ],
        +                  "type": "object"
        +                },
        +                "type": "array"
        +              },
        +              "drawing": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": false,
        +                    "description": "Schema § 1.6a — inline server-rendered SVG preview of the geometry.\n\nThe MCP mirror of the web ``/compute`` response's ``drawing`` field\n(``api.schemas.compute.DrawingRef``): the same on-screen dimensioned\ndrawing both tiers see in the workspace, surfaced on the MCP compute\nresponse so a chat client can render it inline (60th-fire item C). This\nis the on-screen preview — present on BOTH tiers per the free/paid\nboundary; the downloadable CAD artefacts (DXF / dimensioned PDF) remain\nthe paid differentiator via the export tools.\n\nDefined here rather than importing ``DrawingRef`` because the web\n``schemas`` package imports back into this module (``schemas.render``),\nso reusing it would create an import cycle — the MCP wire contract keeps\nits own copy, the same pattern as ``BoQRow`` / ``DrawingReference``.",
        +                    "properties": {
        +                      "entity_count": {
        +                        "minimum": 0,
        +                        "type": "integer"
        +                      },
        +                      "svg_b64": {
        +                        "minLength": 1,
        +                        "type": "string"
        +                      },
        +                      "unit_of_drawing": {
        +                        "const": "m",
        +                        "default": "m",
        +                        "type": "string"
        +                      },
        +                      "viewbox_height": {
        +                        "exclusiveMinimum": 0,
        +                        "type": "number"
        +                      },
        +                      "viewbox_width": {
        +                        "exclusiveMinimum": 0,
        +                        "type": "number"
        +                      },
        +                      "viewbox_x": {
        +                        "type": "number"
        +                      },
        +                      "viewbox_y": {
        +                        "type": "number"
        +                      }
        +                    },
        +                    "required": [
        +                      "svg_b64",
        +                      "viewbox_x",
        +                      "viewbox_y",
        +                      "viewbox_width",
        +                      "viewbox_height",
        +                      "entity_count"
        +                    ],
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "drawings": {
        +                "anyOf": [
        +                  {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.6 — paid-tier drawing artefact pointer.\n\n`url` is an R2-signed URL; expiry is carried in `_meta.deliverables.expires_at`\non the envelope (not duplicated here). `layers` is DXF-only; PDF/SVG\ncallers omit it.",
        +                      "properties": {
        +                        "drawing_type": {
        +                          "enum": [
        +                            "section",
        +                            "plan",
        +                            "elevation",
        +                            "isometric",
        +                            "detail"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "format": {
        +                          "enum": [
        +                            "DXF",
        +                            "PDF",
        +                            "SVG"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "layers": {
        +                          "anyOf": [
        +                            {
        +                              "items": {
        +                                "type": "string"
        +                              },
        +                              "type": "array"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ],
        +                          "default": null
        +                        },
        +                        "scale": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "sheet_size": {
        +                          "enum": [
        +                            "A1",
        +                            "A2",
        +                            "A3",
        +                            "A4"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "url": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "drawing_type",
        +                        "format",
        +                        "url",
        +                        "sheet_size",
        +                        "scale"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "parameters_used": {
        +                "additionalProperties": false,
        +                "description": "Schema § 1.2 — the parameter snapshot the engine actually used.\n\nSplits user-supplied values from engine defaults so customers can see\nwhich numbers came from them and which the engine filled in. Every\ndefaulted parameter SHOULD have a corresponding entry in `assumptions`\n— the bridge layer enforces this when wrapping engine output.",
        +                "properties": {
        +                  "assumptions": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "engine_defaults": {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  "user_supplied": {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  }
        +                },
        +                "type": "object"
        +              },
        +              "standard": {
        +                "enum": [
        +                  "CESMM4",
        +                  "NRM2",
        +                  "SMM7",
        +                  "MMHW"
        +                ],
        +                "type": "string"
        +              },
        +              "text_summary": {
        +                "maxLength": 2000,
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "totals_summary": {
        +                "additionalProperties": false,
        +                "description": "Schema § 1.4 — totals_summary as a typed wrapper around the free-form dict.\n\nWire shape is a flat object (`{\"concrete_m3\": {...}, \"rebar_t\": {...}}`).\nWe model it as `RootModel`-equivalent via `model_config(extra=\"allow\")`\n+ a single `__root__`-style `entries` dict. Pydantic v2 recommends\n`RootModel` for free-form roots; using a wrapper class keeps the import\nsurface uniform with the rest of this module.",
        +                "properties": {
        +                  "entries": {
        +                    "additionalProperties": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.4 — single material/work-class total entry.",
        +                      "properties": {
        +                        "quantity": {
        +                          "minimum": 0,
        +                          "type": "number"
        +                        },
        +                        "unit": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "quantity",
        +                        "unit"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "object"
        +                  }
        +                },
        +                "type": "object"
        +              },
        +              "warnings": {
        +                "items": {
        +                  "additionalProperties": false,
        +                  "description": "Schema § 1.8 — a non-fatal geometry advisory (56th-fire T2).\n\nThe wire projection of the engine's `core.GeometryWarning`. Advisory only:\na warning NEVER changes a measured quantity — it flags geometry that is\nvalid but likely a mistake (e.g. a stale dependent-height default). Present\non BOTH tiers — a correctness/safety signal, not a paid feature.",
        +                  "properties": {
        +                    "affected_params": {
        +                      "items": {
        +                        "type": "string"
        +                      },
        +                      "type": "array"
        +                    },
        +                    "code": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "detail": {
        +                      "additionalProperties": {
        +                        "type": "number"
        +                      },
        +                      "type": "object"
        +                    },
        +                    "message": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "severity": {
        +                      "enum": [
        +                        "info",
        +                        "advisory",
        +                        "caution"
        +                      ],
        +                      "type": "string"
        +                    }
        +                  },
        +                  "required": [
        +                    "code",
        +                    "severity",
        +                    "message"
        +                  ],
        +                  "type": "object"
        +                },
        +                "type": "array"
        +              }
        +            },
        +            "required": [
        +              "assembly_slug",
        +              "standard",
        +              "parameters_used",
        +              "boq_rows",
        +              "totals_summary",
        +              "text_summary"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      },
        +      "error": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        +            "properties": {
        +              "code": {
        +                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        +                "enum": [
        +                  "RATE_LIMIT_EXCEEDED",
        +                  "TIER_INSUFFICIENT",
        +                  "INVALID_INPUT",
        +                  "SCHEMA_VERSION_MISMATCH",
        +                  "SCHEMA_INVARIANT_VIOLATION",
        +                  "UPSTREAM_TIMEOUT",
        +                  "BACKEND_FAILURE",
        +                  "IP_BLOCKED",
        +                  "RESOURCE_NOT_FOUND",
        +                  "RENDER_FAILURE",
        +                  "OCR_LOW_CONFIDENCE",
        +                  "MANUAL_REVIEW_REQUIRED",
        +                  "ACCEPTANCE_REQUIRED",
        +                  "INVALID_TOKEN"
        +                ],
        +                "type": "string"
        +              },
        +              "details": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "message": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "recoverable": {
        +                "type": "boolean"
        +              },
        +              "retry_after_seconds": {
        +                "anyOf": [
        +                  {
        +                    "minimum": 0,
        +                    "type": "integer"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              }
        +            },
        +            "required": [
        +              "code",
        +              "message",
        +              "recoverable"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      }
        +    },
        +    "required": [
        +      "_meta"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "_meta": {
        +        "additionalProperties": false,
        +        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        +        "properties": {
        +          "deliverables": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        +                "properties": {
        +                  "docx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "dxf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "expires_at": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  },
        +                  "pdf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "xlsx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "expires_at"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "document_id": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "issued_at": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "rate_limit_remaining": {
        +            "anyOf": [
        +              {
        +                "minimum": 0,
        +                "type": "integer"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "request_id": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "schema_version": {
        +            "const": "1.0.0",
        +            "default": "1.0.0",
        +            "type": "string"
        +          },
        +          "scope_boundary": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        +                "properties": {
        +                  "not_in_scope": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "produced": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "recommended_companions": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "type": "string"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "produced",
        +                  "not_in_scope"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tier": {
        +            "enum": [
        +              "free",
        +              "paid"
        +            ],
        +            "type": "string"
        +          },
        +          "tier_upgrade": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        +                "properties": {
        +                  "available_tiers": {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        +                      "properties": {
        +                        "billing": {
        +                          "enum": [
        +                            "one_off",
        +                            "monthly",
        +                            "annual"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "currency": {
        +                          "enum": [
        +                            "GBP",
        +                            "SGD",
        +                            "EUR",
        +                            "USD",
        +                            "CAD",
        +                            "AUD",
        +                            "NZD",
        +                            "MYR"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "display_name": {
        +                          "type": "string"
        +                        },
        +                        "price_local": {
        +                          "type": "number"
        +                        },
        +                        "tier_slug": {
        +                          "enum": [
        +                            "7_day_pass",
        +                            "solo",
        +                            "studio",
        +                            "practice"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "unlock_summary": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "tier_slug",
        +                        "display_name",
        +                        "price_local",
        +                        "currency",
        +                        "billing",
        +                        "unlock_summary"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "current_tier": {
        +                    "const": "free",
        +                    "default": "free",
        +                    "type": "string"
        +                  },
        +                  "pass_credit": {
        +                    "anyOf": [
        +                      {
        +                        "additionalProperties": false,
        +                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        +                        "properties": {
        +                          "amount_local": {
        +                            "type": "number"
        +                          },
        +                          "applies_to": {
        +                            "const": "solo_first_month",
        +                            "default": "solo_first_month",
        +                            "type": "string"
        +                          },
        +                          "currency": {
        +                            "type": "string"
        +                          },
        +                          "redeemable_until": {
        +                            "type": "string"
        +                          }
        +                        },
        +                        "required": [
        +                          "amount_local",
        +                          "currency",
        +                          "redeemable_until"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "pricing_url": {
        +                    "default": "https://civilquants.com/pricing",
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "available_tiers"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tos_url": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "upgrade_hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "warranty_disclaimer": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          }
        +        },
        +        "required": [
        +          "request_id",
        +          "issued_at",
        +          "tier"
        +        ],
        +        "type": "object"
        +      },
        +      "data": {
        +        "default": null,
        +        "title": "Data"
        +      },
        +      "error": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        +            "properties": {
        +              "code": {
        +                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        +                "enum": [
        +                  "RATE_LIMIT_EXCEEDED",
        +                  "TIER_INSUFFICIENT",
        +                  "INVALID_INPUT",
        +                  "SCHEMA_VERSION_MISMATCH",
        +                  "SCHEMA_INVARIANT_VIOLATION",
        +                  "UPSTREAM_TIMEOUT",
        +                  "BACKEND_FAILURE",
        +                  "IP_BLOCKED",
        +                  "RESOURCE_NOT_FOUND",
        +                  "RENDER_FAILURE",
        +                  "OCR_LOW_CONFIDENCE",
        +                  "MANUAL_REVIEW_REQUIRED",
        +                  "ACCEPTANCE_REQUIRED",
        +                  "INVALID_TOKEN"
        +                ],
        +                "type": "string"
        +              },
        +              "details": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "message": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "recoverable": {
        +                "type": "boolean"
        +              },
        +              "retry_after_seconds": {
        +                "anyOf": [
        +                  {
        +                    "minimum": 0,
        +                    "type": "integer"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              }
        +            },
        +            "required": [
        +              "code",
        +              "message",
        +              "recoverable"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      }
        +    },
        +    "required": [
        +      "_meta"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedcompute_parapet1 field changed
      • changedOutput schema / properties / result / anyOf
        Previous value: -[
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "_meta": {
        -        "additionalProperties": false,
        -        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        -        "properties": {
        -          "deliverables": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        -                "properties": {
        -                  "docx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "dxf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "expires_at": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  },
        -                  "pdf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "xlsx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "expires_at"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "document_id": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "issued_at": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "rate_limit_remaining": {
        -            "anyOf": [
        -              {
        -                "minimum": 0,
        -                "type": "integer"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "request_id": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "schema_version": {
        -            "const": "1.0.0",
        -            "default": "1.0.0",
        -            "type": "string"
        -          },
        -          "scope_boundary": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        -                "properties": {
        -                  "not_in_scope": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "produced": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "recommended_companions": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "type": "string"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "produced",
        -                  "not_in_scope"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tier": {
        -            "enum": [
        -              "free",
        -              "paid"
        -            ],
        -            "type": "string"
        -          },
        -          "tier_upgrade": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        -                "properties": {
        -                  "available_tiers": {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        -                      "properties": {
        -                        "billing": {
        -                          "enum": [
        -                            "one_off",
        -                            "monthly",
        -                            "annual"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "currency": {
        -                          "enum": [
        -                            "GBP",
        -                            "SGD",
        -                            "EUR",
        -                            "USD",
        -                            "CAD",
        -                            "AUD",
        -                            "NZD",
        -                            "MYR"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "display_name": {
        -                          "type": "string"
        -                        },
        -                        "price_local": {
        -                          "type": "number"
        -                        },
        -                        "tier_slug": {
        -                          "enum": [
        -                            "7_day_pass",
        -                            "solo",
        -                            "studio",
        -                            "practice"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "unlock_summary": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "tier_slug",
        -                        "display_name",
        -                        "price_local",
        -                        "currency",
        -                        "billing",
        -                        "unlock_summary"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "current_tier": {
        -                    "const": "free",
        -                    "default": "free",
        -                    "type": "string"
        -                  },
        -                  "pass_credit": {
        -                    "anyOf": [
        -                      {
        -                        "additionalProperties": false,
        -                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        -                        "properties": {
        -                          "amount_local": {
        -                            "type": "number"
        -                          },
        -                          "applies_to": {
        -                            "const": "solo_first_month",
        -                            "default": "solo_first_month",
        -                            "type": "string"
        -                          },
        -                          "currency": {
        -                            "type": "string"
        -                          },
        -                          "redeemable_until": {
        -                            "type": "string"
        -                          }
        -                        },
        -                        "required": [
        -                          "amount_local",
        -                          "currency",
        -                          "redeemable_until"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "pricing_url": {
        -                    "default": "https://civilquants.com/pricing",
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "available_tiers"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tos_url": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "upgrade_hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "warranty_disclaimer": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          }
        -        },
        -        "required": [
        -          "request_id",
        -          "issued_at",
        -          "tier"
        -        ],
        -        "type": "object"
        -      },
        -      "data": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Schema § 1.1 — the typed payload returned inside `MCPResponse[ComputeResult]`.\n\nFree-tier responses omit `drawings` (the downloadable CAD artefact\npointers — the paid differentiator); the bridge enforces this. The\n`audit_trail` and the inline `drawing` preview are present on BOTH tiers\n(V1 ALIGN / 60th-fire D + C). `text_summary` is bounded to 2000 chars —\nkeeps the LLM-facing summary token-cheap and forces longer narrative into\nBoQ row descriptions where it belongs. `warnings` is the non-fatal\ngeometry advisory list (both tiers).",
        -            "properties": {
        -              "assembly_slug": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "audit_trail": {
        -                "anyOf": [
        -                  {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.7 — paid-tier audit-trail entry.\n\nOne entry per BoQ row; `boq_row_index` ties to the row position in\n`ComputeResult.boq_rows`. `derivation` is the human-readable formula\nwalk-through; `formula` is the optional formal expression.",
        -                      "properties": {
        -                        "boq_row_index": {
        -                          "minimum": 0,
        -                          "type": "integer"
        -                        },
        -                        "derivation": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "formula": {
        -                          "anyOf": [
        -                            {
        -                              "type": "string"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ],
        -                          "default": null
        -                        },
        -                        "id": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "parameters_referenced": {
        -                          "items": {
        -                            "type": "string"
        -                          },
        -                          "type": "array"
        -                        }
        -                      },
        -                      "required": [
        -                        "id",
        -                        "boq_row_index",
        -                        "derivation"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "boq_rows": {
        -                "items": {
        -                  "additionalProperties": false,
        -                  "description": "Schema § 1.3 — a single bill row in the requested standard's format.\n\n`description` is the non-verbatim functional description per spec § 13.9 /\n§ 15 invariant — NEVER reproduces a standard's verbatim clause text.\n`rate` / `amount` ship null because rates are commodity data the customer\nowns; the engine's job is the measurement, not the pricing.",
        -                  "properties": {
        -                    "amount": {
        -                      "anyOf": [
        -                        {
        -                          "type": "number"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "attribution": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "audit_id": {
        -                      "anyOf": [
        -                        {
        -                          "type": "string"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "description": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "quantity": {
        -                      "minimum": 0,
        -                      "type": "number"
        -                    },
        -                    "rate": {
        -                      "anyOf": [
        -                        {
        -                          "type": "number"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "unit": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "work_section": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    }
        -                  },
        -                  "required": [
        -                    "work_section",
        -                    "description",
        -                    "quantity",
        -                    "unit",
        -                    "attribution"
        -                  ],
        -                  "type": "object"
        -                },
        -                "type": "array"
        -              },
        -              "drawing": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": false,
        -                    "description": "Schema § 1.6a — inline server-rendered SVG preview of the geometry.\n\nThe MCP mirror of the web ``/compute`` response's ``drawing`` field\n(``api.schemas.compute.DrawingRef``): the same on-screen dimensioned\ndrawing both tiers see in the workspace, surfaced on the MCP compute\nresponse so a chat client can render it inline (60th-fire item C). This\nis the on-screen preview — present on BOTH tiers per the free/paid\nboundary; the downloadable CAD artefacts (DXF / dimensioned PDF) remain\nthe paid differentiator via the export tools.\n\nDefined here rather than importing ``DrawingRef`` because the web\n``schemas`` package imports back into this module (``schemas.render``),\nso reusing it would create an import cycle — the MCP wire contract keeps\nits own copy, the same pattern as ``BoQRow`` / ``DrawingReference``.",
        -                    "properties": {
        -                      "entity_count": {
        -                        "minimum": 0,
        -                        "type": "integer"
        -                      },
        -                      "svg_b64": {
        -                        "minLength": 1,
        -                        "type": "string"
        -                      },
        -                      "unit_of_drawing": {
        -                        "const": "m",
        -                        "default": "m",
        -                        "type": "string"
        -                      },
        -                      "viewbox_height": {
        -                        "exclusiveMinimum": 0,
        -                        "type": "number"
        -                      },
        -                      "viewbox_width": {
        -                        "exclusiveMinimum": 0,
        -                        "type": "number"
        -                      },
        -                      "viewbox_x": {
        -                        "type": "number"
        -                      },
        -                      "viewbox_y": {
        -                        "type": "number"
        -                      }
        -                    },
        -                    "required": [
        -                      "svg_b64",
        -                      "viewbox_x",
        -                      "viewbox_y",
        -                      "viewbox_width",
        -                      "viewbox_height",
        -                      "entity_count"
        -                    ],
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "drawings": {
        -                "anyOf": [
        -                  {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.6 — paid-tier drawing artefact pointer.\n\n`url` is an R2-signed URL; expiry is carried in `_meta.deliverables.expires_at`\non the envelope (not duplicated here). `layers` is DXF-only; PDF/SVG\ncallers omit it.",
        -                      "properties": {
        -                        "drawing_type": {
        -                          "enum": [
        -                            "section",
        -                            "plan",
        -                            "elevation",
        -                            "isometric",
        -                            "detail"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "format": {
        -                          "enum": [
        -                            "DXF",
        -                            "PDF",
        -                            "SVG"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "layers": {
        -                          "anyOf": [
        -                            {
        -                              "items": {
        -                                "type": "string"
        -                              },
        -                              "type": "array"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ],
        -                          "default": null
        -                        },
        -                        "scale": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "sheet_size": {
        -                          "enum": [
        -                            "A1",
        -                            "A2",
        -                            "A3",
        -                            "A4"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "url": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "drawing_type",
        -                        "format",
        -                        "url",
        -                        "sheet_size",
        -                        "scale"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "parameters_used": {
        -                "additionalProperties": false,
        -                "description": "Schema § 1.2 — the parameter snapshot the engine actually used.\n\nSplits user-supplied values from engine defaults so customers can see\nwhich numbers came from them and which the engine filled in. Every\ndefaulted parameter SHOULD have a corresponding entry in `assumptions`\n— the bridge layer enforces this when wrapping engine output.",
        -                "properties": {
        -                  "assumptions": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "engine_defaults": {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  "resolved_from_description": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "additionalProperties": false,
        -                          "description": "Schema § 1.2 — a parameter resolved by the forgiving-input layer.\n\nPopulated by the Track B-Forgiving Haiku-4.5 resolution pass; until that\nlayer lands, instances are constructed only by tests. `source` distinguishes\nthe resolution path so customers can audit which fields were inferred.",
        -                          "properties": {
        -                            "confidence": {
        -                              "anyOf": [
        -                                {
        -                                  "enum": [
        -                                    "high",
        -                                    "medium",
        -                                    "low"
        -                                  ],
        -                                  "type": "string"
        -                                },
        -                                {
        -                                  "type": "null"
        -                                }
        -                              ],
        -                              "default": null
        -                            },
        -                            "field_name": {
        -                              "minLength": 1,
        -                              "type": "string"
        -                            },
        -                            "resolved_value": {},
        -                            "source": {
        -                              "enum": [
        -                                "description_field",
        -                                "haiku_resolution",
        -                                "engine_default"
        -                              ],
        -                              "type": "string"
        -                            }
        -                          },
        -                          "required": [
        -                            "field_name",
        -                            "resolved_value",
        -                            "source"
        -                          ],
        -                          "type": "object"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "user_supplied": {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  }
        -                },
        -                "type": "object"
        -              },
        -              "standard": {
        -                "enum": [
        -                  "CESMM4",
        -                  "NRM2",
        -                  "SMM7",
        -                  "MMHW"
        -                ],
        -                "type": "string"
        -              },
        -              "text_summary": {
        -                "maxLength": 2000,
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "totals_summary": {
        -                "additionalProperties": false,
        -                "description": "Schema § 1.4 — totals_summary as a typed wrapper around the free-form dict.\n\nWire shape is a flat object (`{\"concrete_m3\": {...}, \"rebar_t\": {...}}`).\nWe model it as `RootModel`-equivalent via `model_config(extra=\"allow\")`\n+ a single `__root__`-style `entries` dict. Pydantic v2 recommends\n`RootModel` for free-form roots; using a wrapper class keeps the import\nsurface uniform with the rest of this module.",
        -                "properties": {
        -                  "entries": {
        -                    "additionalProperties": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.4 — single material/work-class total entry.",
        -                      "properties": {
        -                        "quantity": {
        -                          "minimum": 0,
        -                          "type": "number"
        -                        },
        -                        "unit": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "quantity",
        -                        "unit"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "object"
        -                  }
        -                },
        -                "type": "object"
        -              },
        -              "warnings": {
        -                "items": {
        -                  "additionalProperties": false,
        -                  "description": "Schema § 1.8 — a non-fatal geometry advisory (56th-fire T2).\n\nThe wire projection of the engine's `core.GeometryWarning`. Advisory only:\na warning NEVER changes a measured quantity — it flags geometry that is\nvalid but likely a mistake (e.g. a stale dependent-height default). Present\non BOTH tiers — a correctness/safety signal, not a paid feature.",
        -                  "properties": {
        -                    "affected_params": {
        -                      "items": {
        -                        "type": "string"
        -                      },
        -                      "type": "array"
        -                    },
        -                    "code": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "detail": {
        -                      "additionalProperties": {
        -                        "type": "number"
        -                      },
        -                      "type": "object"
        -                    },
        -                    "message": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "severity": {
        -                      "enum": [
        -                        "info",
        -                        "advisory",
        -                        "caution"
        -                      ],
        -                      "type": "string"
        -                    }
        -                  },
        -                  "required": [
        -                    "code",
        -                    "severity",
        -                    "message"
        -                  ],
        -                  "type": "object"
        -                },
        -                "type": "array"
        -              }
        -            },
        -            "required": [
        -              "assembly_slug",
        -              "standard",
        -              "parameters_used",
        -              "boq_rows",
        -              "totals_summary",
        -              "text_summary"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      },
        -      "error": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        -            "properties": {
        -              "code": {
        -                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        -                "enum": [
        -                  "RATE_LIMIT_EXCEEDED",
        -                  "TIER_INSUFFICIENT",
        -                  "INVALID_INPUT",
        -                  "SCHEMA_VERSION_MISMATCH",
        -                  "SCHEMA_INVARIANT_VIOLATION",
        -                  "UPSTREAM_TIMEOUT",
        -                  "BACKEND_FAILURE",
        -                  "IP_BLOCKED",
        -                  "RESOURCE_NOT_FOUND",
        -                  "RENDER_FAILURE",
        -                  "OCR_LOW_CONFIDENCE",
        -                  "MANUAL_REVIEW_REQUIRED",
        -                  "ACCEPTANCE_REQUIRED",
        -                  "INVALID_TOKEN"
        -                ],
        -                "type": "string"
        -              },
        -              "details": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "message": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "recoverable": {
        -                "type": "boolean"
        -              },
        -              "retry_after_seconds": {
        -                "anyOf": [
        -                  {
        -                    "minimum": 0,
        -                    "type": "integer"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              }
        -            },
        -            "required": [
        -              "code",
        -              "message",
        -              "recoverable"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      }
        -    },
        -    "required": [
        -      "_meta"
        -    ],
        -    "type": "object"
        -  },
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "_meta": {
        -        "additionalProperties": false,
        -        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        -        "properties": {
        -          "deliverables": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        -                "properties": {
        -                  "docx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "dxf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "expires_at": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  },
        -                  "pdf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "xlsx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "expires_at"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "document_id": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "issued_at": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "rate_limit_remaining": {
        -            "anyOf": [
        -              {
        -                "minimum": 0,
        -                "type": "integer"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "request_id": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "schema_version": {
        -            "const": "1.0.0",
        -            "default": "1.0.0",
        -            "type": "string"
        -          },
        -          "scope_boundary": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        -                "properties": {
        -                  "not_in_scope": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "produced": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "recommended_companions": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "type": "string"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "produced",
        -                  "not_in_scope"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tier": {
        -            "enum": [
        -              "free",
        -              "paid"
        -            ],
        -            "type": "string"
        -          },
        -          "tier_upgrade": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        -                "properties": {
        -                  "available_tiers": {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        -                      "properties": {
        -                        "billing": {
        -                          "enum": [
        -                            "one_off",
        -                            "monthly",
        -                            "annual"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "currency": {
        -                          "enum": [
        -                            "GBP",
        -                            "SGD",
        -                            "EUR",
        -                            "USD",
        -                            "CAD",
        -                            "AUD",
        -                            "NZD",
        -                            "MYR"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "display_name": {
        -                          "type": "string"
        -                        },
        -                        "price_local": {
        -                          "type": "number"
        -                        },
        -                        "tier_slug": {
        -                          "enum": [
        -                            "7_day_pass",
        -                            "solo",
        -                            "studio",
        -                            "practice"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "unlock_summary": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "tier_slug",
        -                        "display_name",
        -                        "price_local",
        -                        "currency",
        -                        "billing",
        -                        "unlock_summary"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "current_tier": {
        -                    "const": "free",
        -                    "default": "free",
        -                    "type": "string"
        -                  },
        -                  "pass_credit": {
        -                    "anyOf": [
        -                      {
        -                        "additionalProperties": false,
        -                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        -                        "properties": {
        -                          "amount_local": {
        -                            "type": "number"
        -                          },
        -                          "applies_to": {
        -                            "const": "solo_first_month",
        -                            "default": "solo_first_month",
        -                            "type": "string"
        -                          },
        -                          "currency": {
        -                            "type": "string"
        -                          },
        -                          "redeemable_until": {
        -                            "type": "string"
        -                          }
        -                        },
        -                        "required": [
        -                          "amount_local",
        -                          "currency",
        -                          "redeemable_until"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "pricing_url": {
        -                    "default": "https://civilquants.com/pricing",
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "available_tiers"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tos_url": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "upgrade_hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "warranty_disclaimer": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          }
        -        },
        -        "required": [
        -          "request_id",
        -          "issued_at",
        -          "tier"
        -        ],
        -        "type": "object"
        -      },
        -      "data": {
        -        "default": null,
        -        "title": "Data"
        -      },
        -      "error": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        -            "properties": {
        -              "code": {
        -                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        -                "enum": [
        -                  "RATE_LIMIT_EXCEEDED",
        -                  "TIER_INSUFFICIENT",
        -                  "INVALID_INPUT",
        -                  "SCHEMA_VERSION_MISMATCH",
        -                  "SCHEMA_INVARIANT_VIOLATION",
        -                  "UPSTREAM_TIMEOUT",
        -                  "BACKEND_FAILURE",
        -                  "IP_BLOCKED",
        -                  "RESOURCE_NOT_FOUND",
        -                  "RENDER_FAILURE",
        -                  "OCR_LOW_CONFIDENCE",
        -                  "MANUAL_REVIEW_REQUIRED",
        -                  "ACCEPTANCE_REQUIRED",
        -                  "INVALID_TOKEN"
        -                ],
        -                "type": "string"
        -              },
        -              "details": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "message": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "recoverable": {
        -                "type": "boolean"
        -              },
        -              "retry_after_seconds": {
        -                "anyOf": [
        -                  {
        -                    "minimum": 0,
        -                    "type": "integer"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              }
        -            },
        -            "required": [
        -              "code",
        -              "message",
        -              "recoverable"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      }
        -    },
        -    "required": [
        -      "_meta"
        -    ],
        -    "type": "object"
        -  }
        -]New value: +[
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "_meta": {
        +        "additionalProperties": false,
        +        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        +        "properties": {
        +          "deliverables": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        +                "properties": {
        +                  "docx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "dxf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "expires_at": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  },
        +                  "pdf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "xlsx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "expires_at"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "document_id": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "issued_at": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "rate_limit_remaining": {
        +            "anyOf": [
        +              {
        +                "minimum": 0,
        +                "type": "integer"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "request_id": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "schema_version": {
        +            "const": "1.0.0",
        +            "default": "1.0.0",
        +            "type": "string"
        +          },
        +          "scope_boundary": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        +                "properties": {
        +                  "not_in_scope": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "produced": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "recommended_companions": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "type": "string"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "produced",
        +                  "not_in_scope"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tier": {
        +            "enum": [
        +              "free",
        +              "paid"
        +            ],
        +            "type": "string"
        +          },
        +          "tier_upgrade": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        +                "properties": {
        +                  "available_tiers": {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        +                      "properties": {
        +                        "billing": {
        +                          "enum": [
        +                            "one_off",
        +                            "monthly",
        +                            "annual"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "currency": {
        +                          "enum": [
        +                            "GBP",
        +                            "SGD",
        +                            "EUR",
        +                            "USD",
        +                            "CAD",
        +                            "AUD",
        +                            "NZD",
        +                            "MYR"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "display_name": {
        +                          "type": "string"
        +                        },
        +                        "price_local": {
        +                          "type": "number"
        +                        },
        +                        "tier_slug": {
        +                          "enum": [
        +                            "7_day_pass",
        +                            "solo",
        +                            "studio",
        +                            "practice"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "unlock_summary": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "tier_slug",
        +                        "display_name",
        +                        "price_local",
        +                        "currency",
        +                        "billing",
        +                        "unlock_summary"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "current_tier": {
        +                    "const": "free",
        +                    "default": "free",
        +                    "type": "string"
        +                  },
        +                  "pass_credit": {
        +                    "anyOf": [
        +                      {
        +                        "additionalProperties": false,
        +                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        +                        "properties": {
        +                          "amount_local": {
        +                            "type": "number"
        +                          },
        +                          "applies_to": {
        +                            "const": "solo_first_month",
        +                            "default": "solo_first_month",
        +                            "type": "string"
        +                          },
        +                          "currency": {
        +                            "type": "string"
        +                          },
        +                          "redeemable_until": {
        +                            "type": "string"
        +                          }
        +                        },
        +                        "required": [
        +                          "amount_local",
        +                          "currency",
        +                          "redeemable_until"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "pricing_url": {
        +                    "default": "https://civilquants.com/pricing",
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "available_tiers"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tos_url": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "upgrade_hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "warranty_disclaimer": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          }
        +        },
        +        "required": [
        +          "request_id",
        +          "issued_at",
        +          "tier"
        +        ],
        +        "type": "object"
        +      },
        +      "data": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Schema § 1.1 — the typed payload returned inside `MCPResponse[ComputeResult]`.\n\nFree-tier responses omit `drawings` (the downloadable CAD artefact\npointers — the paid differentiator); the bridge enforces this. The\n`audit_trail` and the inline `drawing` preview are present on BOTH tiers\n(V1 ALIGN / 60th-fire D + C). `text_summary` is bounded to 2000 chars —\nkeeps the LLM-facing summary token-cheap and forces longer narrative into\nBoQ row descriptions where it belongs. `warnings` is the non-fatal\ngeometry advisory list (both tiers).",
        +            "properties": {
        +              "assembly_slug": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "audit_trail": {
        +                "anyOf": [
        +                  {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.7 — paid-tier audit-trail entry.\n\nOne entry per BoQ row; `boq_row_index` ties to the row position in\n`ComputeResult.boq_rows`. `derivation` is the human-readable formula\nwalk-through; `formula` is the optional formal expression.",
        +                      "properties": {
        +                        "boq_row_index": {
        +                          "minimum": 0,
        +                          "type": "integer"
        +                        },
        +                        "derivation": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "formula": {
        +                          "anyOf": [
        +                            {
        +                              "type": "string"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ],
        +                          "default": null
        +                        },
        +                        "id": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "parameters_referenced": {
        +                          "items": {
        +                            "type": "string"
        +                          },
        +                          "type": "array"
        +                        }
        +                      },
        +                      "required": [
        +                        "id",
        +                        "boq_row_index",
        +                        "derivation"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "boq_rows": {
        +                "items": {
        +                  "additionalProperties": false,
        +                  "description": "Schema § 1.3 — a single bill row in the requested standard's format.\n\n`description` is the non-verbatim functional description per spec § 13.9 /\n§ 15 invariant — NEVER reproduces a standard's verbatim clause text.\n`rate` / `amount` ship null because rates are commodity data the customer\nowns; the engine's job is the measurement, not the pricing.",
        +                  "properties": {
        +                    "amount": {
        +                      "anyOf": [
        +                        {
        +                          "type": "number"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "attribution": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "audit_id": {
        +                      "anyOf": [
        +                        {
        +                          "type": "string"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "description": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "quantity": {
        +                      "minimum": 0,
        +                      "type": "number"
        +                    },
        +                    "rate": {
        +                      "anyOf": [
        +                        {
        +                          "type": "number"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "unit": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "work_section": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    }
        +                  },
        +                  "required": [
        +                    "work_section",
        +                    "description",
        +                    "quantity",
        +                    "unit",
        +                    "attribution"
        +                  ],
        +                  "type": "object"
        +                },
        +                "type": "array"
        +              },
        +              "drawing": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": false,
        +                    "description": "Schema § 1.6a — inline server-rendered SVG preview of the geometry.\n\nThe MCP mirror of the web ``/compute`` response's ``drawing`` field\n(``api.schemas.compute.DrawingRef``): the same on-screen dimensioned\ndrawing both tiers see in the workspace, surfaced on the MCP compute\nresponse so a chat client can render it inline (60th-fire item C). This\nis the on-screen preview — present on BOTH tiers per the free/paid\nboundary; the downloadable CAD artefacts (DXF / dimensioned PDF) remain\nthe paid differentiator via the export tools.\n\nDefined here rather than importing ``DrawingRef`` because the web\n``schemas`` package imports back into this module (``schemas.render``),\nso reusing it would create an import cycle — the MCP wire contract keeps\nits own copy, the same pattern as ``BoQRow`` / ``DrawingReference``.",
        +                    "properties": {
        +                      "entity_count": {
        +                        "minimum": 0,
        +                        "type": "integer"
        +                      },
        +                      "svg_b64": {
        +                        "minLength": 1,
        +                        "type": "string"
        +                      },
        +                      "unit_of_drawing": {
        +                        "const": "m",
        +                        "default": "m",
        +                        "type": "string"
        +                      },
        +                      "viewbox_height": {
        +                        "exclusiveMinimum": 0,
        +                        "type": "number"
        +                      },
        +                      "viewbox_width": {
        +                        "exclusiveMinimum": 0,
        +                        "type": "number"
        +                      },
        +                      "viewbox_x": {
        +                        "type": "number"
        +                      },
        +                      "viewbox_y": {
        +                        "type": "number"
        +                      }
        +                    },
        +                    "required": [
        +                      "svg_b64",
        +                      "viewbox_x",
        +                      "viewbox_y",
        +                      "viewbox_width",
        +                      "viewbox_height",
        +                      "entity_count"
        +                    ],
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "drawings": {
        +                "anyOf": [
        +                  {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.6 — paid-tier drawing artefact pointer.\n\n`url` is an R2-signed URL; expiry is carried in `_meta.deliverables.expires_at`\non the envelope (not duplicated here). `layers` is DXF-only; PDF/SVG\ncallers omit it.",
        +                      "properties": {
        +                        "drawing_type": {
        +                          "enum": [
        +                            "section",
        +                            "plan",
        +                            "elevation",
        +                            "isometric",
        +                            "detail"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "format": {
        +                          "enum": [
        +                            "DXF",
        +                            "PDF",
        +                            "SVG"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "layers": {
        +                          "anyOf": [
        +                            {
        +                              "items": {
        +                                "type": "string"
        +                              },
        +                              "type": "array"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ],
        +                          "default": null
        +                        },
        +                        "scale": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "sheet_size": {
        +                          "enum": [
        +                            "A1",
        +                            "A2",
        +                            "A3",
        +                            "A4"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "url": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "drawing_type",
        +                        "format",
        +                        "url",
        +                        "sheet_size",
        +                        "scale"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "parameters_used": {
        +                "additionalProperties": false,
        +                "description": "Schema § 1.2 — the parameter snapshot the engine actually used.\n\nSplits user-supplied values from engine defaults so customers can see\nwhich numbers came from them and which the engine filled in. Every\ndefaulted parameter SHOULD have a corresponding entry in `assumptions`\n— the bridge layer enforces this when wrapping engine output.",
        +                "properties": {
        +                  "assumptions": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "engine_defaults": {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  "user_supplied": {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  }
        +                },
        +                "type": "object"
        +              },
        +              "standard": {
        +                "enum": [
        +                  "CESMM4",
        +                  "NRM2",
        +                  "SMM7",
        +                  "MMHW"
        +                ],
        +                "type": "string"
        +              },
        +              "text_summary": {
        +                "maxLength": 2000,
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "totals_summary": {
        +                "additionalProperties": false,
        +                "description": "Schema § 1.4 — totals_summary as a typed wrapper around the free-form dict.\n\nWire shape is a flat object (`{\"concrete_m3\": {...}, \"rebar_t\": {...}}`).\nWe model it as `RootModel`-equivalent via `model_config(extra=\"allow\")`\n+ a single `__root__`-style `entries` dict. Pydantic v2 recommends\n`RootModel` for free-form roots; using a wrapper class keeps the import\nsurface uniform with the rest of this module.",
        +                "properties": {
        +                  "entries": {
        +                    "additionalProperties": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.4 — single material/work-class total entry.",
        +                      "properties": {
        +                        "quantity": {
        +                          "minimum": 0,
        +                          "type": "number"
        +                        },
        +                        "unit": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "quantity",
        +                        "unit"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "object"
        +                  }
        +                },
        +                "type": "object"
        +              },
        +              "warnings": {
        +                "items": {
        +                  "additionalProperties": false,
        +                  "description": "Schema § 1.8 — a non-fatal geometry advisory (56th-fire T2).\n\nThe wire projection of the engine's `core.GeometryWarning`. Advisory only:\na warning NEVER changes a measured quantity — it flags geometry that is\nvalid but likely a mistake (e.g. a stale dependent-height default). Present\non BOTH tiers — a correctness/safety signal, not a paid feature.",
        +                  "properties": {
        +                    "affected_params": {
        +                      "items": {
        +                        "type": "string"
        +                      },
        +                      "type": "array"
        +                    },
        +                    "code": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "detail": {
        +                      "additionalProperties": {
        +                        "type": "number"
        +                      },
        +                      "type": "object"
        +                    },
        +                    "message": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "severity": {
        +                      "enum": [
        +                        "info",
        +                        "advisory",
        +                        "caution"
        +                      ],
        +                      "type": "string"
        +                    }
        +                  },
        +                  "required": [
        +                    "code",
        +                    "severity",
        +                    "message"
        +                  ],
        +                  "type": "object"
        +                },
        +                "type": "array"
        +              }
        +            },
        +            "required": [
        +              "assembly_slug",
        +              "standard",
        +              "parameters_used",
        +              "boq_rows",
        +              "totals_summary",
        +              "text_summary"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      },
        +      "error": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        +            "properties": {
        +              "code": {
        +                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        +                "enum": [
        +                  "RATE_LIMIT_EXCEEDED",
        +                  "TIER_INSUFFICIENT",
        +                  "INVALID_INPUT",
        +                  "SCHEMA_VERSION_MISMATCH",
        +                  "SCHEMA_INVARIANT_VIOLATION",
        +                  "UPSTREAM_TIMEOUT",
        +                  "BACKEND_FAILURE",
        +                  "IP_BLOCKED",
        +                  "RESOURCE_NOT_FOUND",
        +                  "RENDER_FAILURE",
        +                  "OCR_LOW_CONFIDENCE",
        +                  "MANUAL_REVIEW_REQUIRED",
        +                  "ACCEPTANCE_REQUIRED",
        +                  "INVALID_TOKEN"
        +                ],
        +                "type": "string"
        +              },
        +              "details": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "message": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "recoverable": {
        +                "type": "boolean"
        +              },
        +              "retry_after_seconds": {
        +                "anyOf": [
        +                  {
        +                    "minimum": 0,
        +                    "type": "integer"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              }
        +            },
        +            "required": [
        +              "code",
        +              "message",
        +              "recoverable"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      }
        +    },
        +    "required": [
        +      "_meta"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "_meta": {
        +        "additionalProperties": false,
        +        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        +        "properties": {
        +          "deliverables": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        +                "properties": {
        +                  "docx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "dxf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "expires_at": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  },
        +                  "pdf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "xlsx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "expires_at"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "document_id": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "issued_at": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "rate_limit_remaining": {
        +            "anyOf": [
        +              {
        +                "minimum": 0,
        +                "type": "integer"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "request_id": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "schema_version": {
        +            "const": "1.0.0",
        +            "default": "1.0.0",
        +            "type": "string"
        +          },
        +          "scope_boundary": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        +                "properties": {
        +                  "not_in_scope": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "produced": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "recommended_companions": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "type": "string"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "produced",
        +                  "not_in_scope"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tier": {
        +            "enum": [
        +              "free",
        +              "paid"
        +            ],
        +            "type": "string"
        +          },
        +          "tier_upgrade": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        +                "properties": {
        +                  "available_tiers": {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        +                      "properties": {
        +                        "billing": {
        +                          "enum": [
        +                            "one_off",
        +                            "monthly",
        +                            "annual"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "currency": {
        +                          "enum": [
        +                            "GBP",
        +                            "SGD",
        +                            "EUR",
        +                            "USD",
        +                            "CAD",
        +                            "AUD",
        +                            "NZD",
        +                            "MYR"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "display_name": {
        +                          "type": "string"
        +                        },
        +                        "price_local": {
        +                          "type": "number"
        +                        },
        +                        "tier_slug": {
        +                          "enum": [
        +                            "7_day_pass",
        +                            "solo",
        +                            "studio",
        +                            "practice"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "unlock_summary": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "tier_slug",
        +                        "display_name",
        +                        "price_local",
        +                        "currency",
        +                        "billing",
        +                        "unlock_summary"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "current_tier": {
        +                    "const": "free",
        +                    "default": "free",
        +                    "type": "string"
        +                  },
        +                  "pass_credit": {
        +                    "anyOf": [
        +                      {
        +                        "additionalProperties": false,
        +                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        +                        "properties": {
        +                          "amount_local": {
        +                            "type": "number"
        +                          },
        +                          "applies_to": {
        +                            "const": "solo_first_month",
        +                            "default": "solo_first_month",
        +                            "type": "string"
        +                          },
        +                          "currency": {
        +                            "type": "string"
        +                          },
        +                          "redeemable_until": {
        +                            "type": "string"
        +                          }
        +                        },
        +                        "required": [
        +                          "amount_local",
        +                          "currency",
        +                          "redeemable_until"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "pricing_url": {
        +                    "default": "https://civilquants.com/pricing",
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "available_tiers"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tos_url": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "upgrade_hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "warranty_disclaimer": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          }
        +        },
        +        "required": [
        +          "request_id",
        +          "issued_at",
        +          "tier"
        +        ],
        +        "type": "object"
        +      },
        +      "data": {
        +        "default": null,
        +        "title": "Data"
        +      },
        +      "error": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        +            "properties": {
        +              "code": {
        +                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        +                "enum": [
        +                  "RATE_LIMIT_EXCEEDED",
        +                  "TIER_INSUFFICIENT",
        +                  "INVALID_INPUT",
        +                  "SCHEMA_VERSION_MISMATCH",
        +                  "SCHEMA_INVARIANT_VIOLATION",
        +                  "UPSTREAM_TIMEOUT",
        +                  "BACKEND_FAILURE",
        +                  "IP_BLOCKED",
        +                  "RESOURCE_NOT_FOUND",
        +                  "RENDER_FAILURE",
        +                  "OCR_LOW_CONFIDENCE",
        +                  "MANUAL_REVIEW_REQUIRED",
        +                  "ACCEPTANCE_REQUIRED",
        +                  "INVALID_TOKEN"
        +                ],
        +                "type": "string"
        +              },
        +              "details": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "message": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "recoverable": {
        +                "type": "boolean"
        +              },
        +              "retry_after_seconds": {
        +                "anyOf": [
        +                  {
        +                    "minimum": 0,
        +                    "type": "integer"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              }
        +            },
        +            "required": [
        +              "code",
        +              "message",
        +              "recoverable"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      }
        +    },
        +    "required": [
        +      "_meta"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedcompute_permeable_pavement1 field changed
      • changedOutput schema / properties / result / anyOf
        Previous value: -[
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "_meta": {
        -        "additionalProperties": false,
        -        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        -        "properties": {
        -          "deliverables": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        -                "properties": {
        -                  "docx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "dxf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "expires_at": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  },
        -                  "pdf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "xlsx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "expires_at"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "document_id": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "issued_at": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "rate_limit_remaining": {
        -            "anyOf": [
        -              {
        -                "minimum": 0,
        -                "type": "integer"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "request_id": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "schema_version": {
        -            "const": "1.0.0",
        -            "default": "1.0.0",
        -            "type": "string"
        -          },
        -          "scope_boundary": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        -                "properties": {
        -                  "not_in_scope": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "produced": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "recommended_companions": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "type": "string"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "produced",
        -                  "not_in_scope"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tier": {
        -            "enum": [
        -              "free",
        -              "paid"
        -            ],
        -            "type": "string"
        -          },
        -          "tier_upgrade": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        -                "properties": {
        -                  "available_tiers": {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        -                      "properties": {
        -                        "billing": {
        -                          "enum": [
        -                            "one_off",
        -                            "monthly",
        -                            "annual"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "currency": {
        -                          "enum": [
        -                            "GBP",
        -                            "SGD",
        -                            "EUR",
        -                            "USD",
        -                            "CAD",
        -                            "AUD",
        -                            "NZD",
        -                            "MYR"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "display_name": {
        -                          "type": "string"
        -                        },
        -                        "price_local": {
        -                          "type": "number"
        -                        },
        -                        "tier_slug": {
        -                          "enum": [
        -                            "7_day_pass",
        -                            "solo",
        -                            "studio",
        -                            "practice"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "unlock_summary": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "tier_slug",
        -                        "display_name",
        -                        "price_local",
        -                        "currency",
        -                        "billing",
        -                        "unlock_summary"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "current_tier": {
        -                    "const": "free",
        -                    "default": "free",
        -                    "type": "string"
        -                  },
        -                  "pass_credit": {
        -                    "anyOf": [
        -                      {
        -                        "additionalProperties": false,
        -                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        -                        "properties": {
        -                          "amount_local": {
        -                            "type": "number"
        -                          },
        -                          "applies_to": {
        -                            "const": "solo_first_month",
        -                            "default": "solo_first_month",
        -                            "type": "string"
        -                          },
        -                          "currency": {
        -                            "type": "string"
        -                          },
        -                          "redeemable_until": {
        -                            "type": "string"
        -                          }
        -                        },
        -                        "required": [
        -                          "amount_local",
        -                          "currency",
        -                          "redeemable_until"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "pricing_url": {
        -                    "default": "https://civilquants.com/pricing",
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "available_tiers"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tos_url": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "upgrade_hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "warranty_disclaimer": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          }
        -        },
        -        "required": [
        -          "request_id",
        -          "issued_at",
        -          "tier"
        -        ],
        -        "type": "object"
        -      },
        -      "data": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Schema § 1.1 — the typed payload returned inside `MCPResponse[ComputeResult]`.\n\nFree-tier responses omit `drawings` (the downloadable CAD artefact\npointers — the paid differentiator); the bridge enforces this. The\n`audit_trail` and the inline `drawing` preview are present on BOTH tiers\n(V1 ALIGN / 60th-fire D + C). `text_summary` is bounded to 2000 chars —\nkeeps the LLM-facing summary token-cheap and forces longer narrative into\nBoQ row descriptions where it belongs. `warnings` is the non-fatal\ngeometry advisory list (both tiers).",
        -            "properties": {
        -              "assembly_slug": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "audit_trail": {
        -                "anyOf": [
        -                  {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.7 — paid-tier audit-trail entry.\n\nOne entry per BoQ row; `boq_row_index` ties to the row position in\n`ComputeResult.boq_rows`. `derivation` is the human-readable formula\nwalk-through; `formula` is the optional formal expression.",
        -                      "properties": {
        -                        "boq_row_index": {
        -                          "minimum": 0,
        -                          "type": "integer"
        -                        },
        -                        "derivation": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "formula": {
        -                          "anyOf": [
        -                            {
        -                              "type": "string"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ],
        -                          "default": null
        -                        },
        -                        "id": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "parameters_referenced": {
        -                          "items": {
        -                            "type": "string"
        -                          },
        -                          "type": "array"
        -                        }
        -                      },
        -                      "required": [
        -                        "id",
        -                        "boq_row_index",
        -                        "derivation"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "boq_rows": {
        -                "items": {
        -                  "additionalProperties": false,
        -                  "description": "Schema § 1.3 — a single bill row in the requested standard's format.\n\n`description` is the non-verbatim functional description per spec § 13.9 /\n§ 15 invariant — NEVER reproduces a standard's verbatim clause text.\n`rate` / `amount` ship null because rates are commodity data the customer\nowns; the engine's job is the measurement, not the pricing.",
        -                  "properties": {
        -                    "amount": {
        -                      "anyOf": [
        -                        {
        -                          "type": "number"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "attribution": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "audit_id": {
        -                      "anyOf": [
        -                        {
        -                          "type": "string"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "description": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "quantity": {
        -                      "minimum": 0,
        -                      "type": "number"
        -                    },
        -                    "rate": {
        -                      "anyOf": [
        -                        {
        -                          "type": "number"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "unit": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "work_section": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    }
        -                  },
        -                  "required": [
        -                    "work_section",
        -                    "description",
        -                    "quantity",
        -                    "unit",
        -                    "attribution"
        -                  ],
        -                  "type": "object"
        -                },
        -                "type": "array"
        -              },
        -              "drawing": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": false,
        -                    "description": "Schema § 1.6a — inline server-rendered SVG preview of the geometry.\n\nThe MCP mirror of the web ``/compute`` response's ``drawing`` field\n(``api.schemas.compute.DrawingRef``): the same on-screen dimensioned\ndrawing both tiers see in the workspace, surfaced on the MCP compute\nresponse so a chat client can render it inline (60th-fire item C). This\nis the on-screen preview — present on BOTH tiers per the free/paid\nboundary; the downloadable CAD artefacts (DXF / dimensioned PDF) remain\nthe paid differentiator via the export tools.\n\nDefined here rather than importing ``DrawingRef`` because the web\n``schemas`` package imports back into this module (``schemas.render``),\nso reusing it would create an import cycle — the MCP wire contract keeps\nits own copy, the same pattern as ``BoQRow`` / ``DrawingReference``.",
        -                    "properties": {
        -                      "entity_count": {
        -                        "minimum": 0,
        -                        "type": "integer"
        -                      },
        -                      "svg_b64": {
        -                        "minLength": 1,
        -                        "type": "string"
        -                      },
        -                      "unit_of_drawing": {
        -                        "const": "m",
        -                        "default": "m",
        -                        "type": "string"
        -                      },
        -                      "viewbox_height": {
        -                        "exclusiveMinimum": 0,
        -                        "type": "number"
        -                      },
        -                      "viewbox_width": {
        -                        "exclusiveMinimum": 0,
        -                        "type": "number"
        -                      },
        -                      "viewbox_x": {
        -                        "type": "number"
        -                      },
        -                      "viewbox_y": {
        -                        "type": "number"
        -                      }
        -                    },
        -                    "required": [
        -                      "svg_b64",
        -                      "viewbox_x",
        -                      "viewbox_y",
        -                      "viewbox_width",
        -                      "viewbox_height",
        -                      "entity_count"
        -                    ],
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "drawings": {
        -                "anyOf": [
        -                  {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.6 — paid-tier drawing artefact pointer.\n\n`url` is an R2-signed URL; expiry is carried in `_meta.deliverables.expires_at`\non the envelope (not duplicated here). `layers` is DXF-only; PDF/SVG\ncallers omit it.",
        -                      "properties": {
        -                        "drawing_type": {
        -                          "enum": [
        -                            "section",
        -                            "plan",
        -                            "elevation",
        -                            "isometric",
        -                            "detail"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "format": {
        -                          "enum": [
        -                            "DXF",
        -                            "PDF",
        -                            "SVG"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "layers": {
        -                          "anyOf": [
        -                            {
        -                              "items": {
        -                                "type": "string"
        -                              },
        -                              "type": "array"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ],
        -                          "default": null
        -                        },
        -                        "scale": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "sheet_size": {
        -                          "enum": [
        -                            "A1",
        -                            "A2",
        -                            "A3",
        -                            "A4"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "url": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "drawing_type",
        -                        "format",
        -                        "url",
        -                        "sheet_size",
        -                        "scale"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "parameters_used": {
        -                "additionalProperties": false,
        -                "description": "Schema § 1.2 — the parameter snapshot the engine actually used.\n\nSplits user-supplied values from engine defaults so customers can see\nwhich numbers came from them and which the engine filled in. Every\ndefaulted parameter SHOULD have a corresponding entry in `assumptions`\n— the bridge layer enforces this when wrapping engine output.",
        -                "properties": {
        -                  "assumptions": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "engine_defaults": {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  "resolved_from_description": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "additionalProperties": false,
        -                          "description": "Schema § 1.2 — a parameter resolved by the forgiving-input layer.\n\nPopulated by the Track B-Forgiving Haiku-4.5 resolution pass; until that\nlayer lands, instances are constructed only by tests. `source` distinguishes\nthe resolution path so customers can audit which fields were inferred.",
        -                          "properties": {
        -                            "confidence": {
        -                              "anyOf": [
        -                                {
        -                                  "enum": [
        -                                    "high",
        -                                    "medium",
        -                                    "low"
        -                                  ],
        -                                  "type": "string"
        -                                },
        -                                {
        -                                  "type": "null"
        -                                }
        -                              ],
        -                              "default": null
        -                            },
        -                            "field_name": {
        -                              "minLength": 1,
        -                              "type": "string"
        -                            },
        -                            "resolved_value": {},
        -                            "source": {
        -                              "enum": [
        -                                "description_field",
        -                                "haiku_resolution",
        -                                "engine_default"
        -                              ],
        -                              "type": "string"
        -                            }
        -                          },
        -                          "required": [
        -                            "field_name",
        -                            "resolved_value",
        -                            "source"
        -                          ],
        -                          "type": "object"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "user_supplied": {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  }
        -                },
        -                "type": "object"
        -              },
        -              "standard": {
        -                "enum": [
        -                  "CESMM4",
        -                  "NRM2",
        -                  "SMM7",
        -                  "MMHW"
        -                ],
        -                "type": "string"
        -              },
        -              "text_summary": {
        -                "maxLength": 2000,
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "totals_summary": {
        -                "additionalProperties": false,
        -                "description": "Schema § 1.4 — totals_summary as a typed wrapper around the free-form dict.\n\nWire shape is a flat object (`{\"concrete_m3\": {...}, \"rebar_t\": {...}}`).\nWe model it as `RootModel`-equivalent via `model_config(extra=\"allow\")`\n+ a single `__root__`-style `entries` dict. Pydantic v2 recommends\n`RootModel` for free-form roots; using a wrapper class keeps the import\nsurface uniform with the rest of this module.",
        -                "properties": {
        -                  "entries": {
        -                    "additionalProperties": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.4 — single material/work-class total entry.",
        -                      "properties": {
        -                        "quantity": {
        -                          "minimum": 0,
        -                          "type": "number"
        -                        },
        -                        "unit": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "quantity",
        -                        "unit"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "object"
        -                  }
        -                },
        -                "type": "object"
        -              },
        -              "warnings": {
        -                "items": {
        -                  "additionalProperties": false,
        -                  "description": "Schema § 1.8 — a non-fatal geometry advisory (56th-fire T2).\n\nThe wire projection of the engine's `core.GeometryWarning`. Advisory only:\na warning NEVER changes a measured quantity — it flags geometry that is\nvalid but likely a mistake (e.g. a stale dependent-height default). Present\non BOTH tiers — a correctness/safety signal, not a paid feature.",
        -                  "properties": {
        -                    "affected_params": {
        -                      "items": {
        -                        "type": "string"
        -                      },
        -                      "type": "array"
        -                    },
        -                    "code": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "detail": {
        -                      "additionalProperties": {
        -                        "type": "number"
        -                      },
        -                      "type": "object"
        -                    },
        -                    "message": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "severity": {
        -                      "enum": [
        -                        "info",
        -                        "advisory",
        -                        "caution"
        -                      ],
        -                      "type": "string"
        -                    }
        -                  },
        -                  "required": [
        -                    "code",
        -                    "severity",
        -                    "message"
        -                  ],
        -                  "type": "object"
        -                },
        -                "type": "array"
        -              }
        -            },
        -            "required": [
        -              "assembly_slug",
        -              "standard",
        -              "parameters_used",
        -              "boq_rows",
        -              "totals_summary",
        -              "text_summary"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      },
        -      "error": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        -            "properties": {
        -              "code": {
        -                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        -                "enum": [
        -                  "RATE_LIMIT_EXCEEDED",
        -                  "TIER_INSUFFICIENT",
        -                  "INVALID_INPUT",
        -                  "SCHEMA_VERSION_MISMATCH",
        -                  "SCHEMA_INVARIANT_VIOLATION",
        -                  "UPSTREAM_TIMEOUT",
        -                  "BACKEND_FAILURE",
        -                  "IP_BLOCKED",
        -                  "RESOURCE_NOT_FOUND",
        -                  "RENDER_FAILURE",
        -                  "OCR_LOW_CONFIDENCE",
        -                  "MANUAL_REVIEW_REQUIRED",
        -                  "ACCEPTANCE_REQUIRED",
        -                  "INVALID_TOKEN"
        -                ],
        -                "type": "string"
        -              },
        -              "details": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "message": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "recoverable": {
        -                "type": "boolean"
        -              },
        -              "retry_after_seconds": {
        -                "anyOf": [
        -                  {
        -                    "minimum": 0,
        -                    "type": "integer"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              }
        -            },
        -            "required": [
        -              "code",
        -              "message",
        -              "recoverable"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      }
        -    },
        -    "required": [
        -      "_meta"
        -    ],
        -    "type": "object"
        -  },
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "_meta": {
        -        "additionalProperties": false,
        -        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        -        "properties": {
        -          "deliverables": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        -                "properties": {
        -                  "docx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "dxf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "expires_at": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  },
        -                  "pdf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "xlsx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "expires_at"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "document_id": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "issued_at": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "rate_limit_remaining": {
        -            "anyOf": [
        -              {
        -                "minimum": 0,
        -                "type": "integer"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "request_id": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "schema_version": {
        -            "const": "1.0.0",
        -            "default": "1.0.0",
        -            "type": "string"
        -          },
        -          "scope_boundary": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        -                "properties": {
        -                  "not_in_scope": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "produced": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "recommended_companions": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "type": "string"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "produced",
        -                  "not_in_scope"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tier": {
        -            "enum": [
        -              "free",
        -              "paid"
        -            ],
        -            "type": "string"
        -          },
        -          "tier_upgrade": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        -                "properties": {
        -                  "available_tiers": {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        -                      "properties": {
        -                        "billing": {
        -                          "enum": [
        -                            "one_off",
        -                            "monthly",
        -                            "annual"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "currency": {
        -                          "enum": [
        -                            "GBP",
        -                            "SGD",
        -                            "EUR",
        -                            "USD",
        -                            "CAD",
        -                            "AUD",
        -                            "NZD",
        -                            "MYR"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "display_name": {
        -                          "type": "string"
        -                        },
        -                        "price_local": {
        -                          "type": "number"
        -                        },
        -                        "tier_slug": {
        -                          "enum": [
        -                            "7_day_pass",
        -                            "solo",
        -                            "studio",
        -                            "practice"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "unlock_summary": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "tier_slug",
        -                        "display_name",
        -                        "price_local",
        -                        "currency",
        -                        "billing",
        -                        "unlock_summary"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "current_tier": {
        -                    "const": "free",
        -                    "default": "free",
        -                    "type": "string"
        -                  },
        -                  "pass_credit": {
        -                    "anyOf": [
        -                      {
        -                        "additionalProperties": false,
        -                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        -                        "properties": {
        -                          "amount_local": {
        -                            "type": "number"
        -                          },
        -                          "applies_to": {
        -                            "const": "solo_first_month",
        -                            "default": "solo_first_month",
        -                            "type": "string"
        -                          },
        -                          "currency": {
        -                            "type": "string"
        -                          },
        -                          "redeemable_until": {
        -                            "type": "string"
        -                          }
        -                        },
        -                        "required": [
        -                          "amount_local",
        -                          "currency",
        -                          "redeemable_until"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "pricing_url": {
        -                    "default": "https://civilquants.com/pricing",
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "available_tiers"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tos_url": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "upgrade_hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "warranty_disclaimer": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          }
        -        },
        -        "required": [
        -          "request_id",
        -          "issued_at",
        -          "tier"
        -        ],
        -        "type": "object"
        -      },
        -      "data": {
        -        "default": null,
        -        "title": "Data"
        -      },
        -      "error": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        -            "properties": {
        -              "code": {
        -                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        -                "enum": [
        -                  "RATE_LIMIT_EXCEEDED",
        -                  "TIER_INSUFFICIENT",
        -                  "INVALID_INPUT",
        -                  "SCHEMA_VERSION_MISMATCH",
        -                  "SCHEMA_INVARIANT_VIOLATION",
        -                  "UPSTREAM_TIMEOUT",
        -                  "BACKEND_FAILURE",
        -                  "IP_BLOCKED",
        -                  "RESOURCE_NOT_FOUND",
        -                  "RENDER_FAILURE",
        -                  "OCR_LOW_CONFIDENCE",
        -                  "MANUAL_REVIEW_REQUIRED",
        -                  "ACCEPTANCE_REQUIRED",
        -                  "INVALID_TOKEN"
        -                ],
        -                "type": "string"
        -              },
        -              "details": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "message": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "recoverable": {
        -                "type": "boolean"
        -              },
        -              "retry_after_seconds": {
        -                "anyOf": [
        -                  {
        -                    "minimum": 0,
        -                    "type": "integer"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              }
        -            },
        -            "required": [
        -              "code",
        -              "message",
        -              "recoverable"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      }
        -    },
        -    "required": [
        -      "_meta"
        -    ],
        -    "type": "object"
        -  }
        -]New value: +[
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "_meta": {
        +        "additionalProperties": false,
        +        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        +        "properties": {
        +          "deliverables": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        +                "properties": {
        +                  "docx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "dxf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "expires_at": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  },
        +                  "pdf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "xlsx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "expires_at"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "document_id": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "issued_at": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "rate_limit_remaining": {
        +            "anyOf": [
        +              {
        +                "minimum": 0,
        +                "type": "integer"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "request_id": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "schema_version": {
        +            "const": "1.0.0",
        +            "default": "1.0.0",
        +            "type": "string"
        +          },
        +          "scope_boundary": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        +                "properties": {
        +                  "not_in_scope": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "produced": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "recommended_companions": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "type": "string"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "produced",
        +                  "not_in_scope"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tier": {
        +            "enum": [
        +              "free",
        +              "paid"
        +            ],
        +            "type": "string"
        +          },
        +          "tier_upgrade": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        +                "properties": {
        +                  "available_tiers": {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        +                      "properties": {
        +                        "billing": {
        +                          "enum": [
        +                            "one_off",
        +                            "monthly",
        +                            "annual"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "currency": {
        +                          "enum": [
        +                            "GBP",
        +                            "SGD",
        +                            "EUR",
        +                            "USD",
        +                            "CAD",
        +                            "AUD",
        +                            "NZD",
        +                            "MYR"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "display_name": {
        +                          "type": "string"
        +                        },
        +                        "price_local": {
        +                          "type": "number"
        +                        },
        +                        "tier_slug": {
        +                          "enum": [
        +                            "7_day_pass",
        +                            "solo",
        +                            "studio",
        +                            "practice"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "unlock_summary": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "tier_slug",
        +                        "display_name",
        +                        "price_local",
        +                        "currency",
        +                        "billing",
        +                        "unlock_summary"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "current_tier": {
        +                    "const": "free",
        +                    "default": "free",
        +                    "type": "string"
        +                  },
        +                  "pass_credit": {
        +                    "anyOf": [
        +                      {
        +                        "additionalProperties": false,
        +                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        +                        "properties": {
        +                          "amount_local": {
        +                            "type": "number"
        +                          },
        +                          "applies_to": {
        +                            "const": "solo_first_month",
        +                            "default": "solo_first_month",
        +                            "type": "string"
        +                          },
        +                          "currency": {
        +                            "type": "string"
        +                          },
        +                          "redeemable_until": {
        +                            "type": "string"
        +                          }
        +                        },
        +                        "required": [
        +                          "amount_local",
        +                          "currency",
        +                          "redeemable_until"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "pricing_url": {
        +                    "default": "https://civilquants.com/pricing",
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "available_tiers"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tos_url": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "upgrade_hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "warranty_disclaimer": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          }
        +        },
        +        "required": [
        +          "request_id",
        +          "issued_at",
        +          "tier"
        +        ],
        +        "type": "object"
        +      },
        +      "data": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Schema § 1.1 — the typed payload returned inside `MCPResponse[ComputeResult]`.\n\nFree-tier responses omit `drawings` (the downloadable CAD artefact\npointers — the paid differentiator); the bridge enforces this. The\n`audit_trail` and the inline `drawing` preview are present on BOTH tiers\n(V1 ALIGN / 60th-fire D + C). `text_summary` is bounded to 2000 chars —\nkeeps the LLM-facing summary token-cheap and forces longer narrative into\nBoQ row descriptions where it belongs. `warnings` is the non-fatal\ngeometry advisory list (both tiers).",
        +            "properties": {
        +              "assembly_slug": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "audit_trail": {
        +                "anyOf": [
        +                  {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.7 — paid-tier audit-trail entry.\n\nOne entry per BoQ row; `boq_row_index` ties to the row position in\n`ComputeResult.boq_rows`. `derivation` is the human-readable formula\nwalk-through; `formula` is the optional formal expression.",
        +                      "properties": {
        +                        "boq_row_index": {
        +                          "minimum": 0,
        +                          "type": "integer"
        +                        },
        +                        "derivation": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "formula": {
        +                          "anyOf": [
        +                            {
        +                              "type": "string"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ],
        +                          "default": null
        +                        },
        +                        "id": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "parameters_referenced": {
        +                          "items": {
        +                            "type": "string"
        +                          },
        +                          "type": "array"
        +                        }
        +                      },
        +                      "required": [
        +                        "id",
        +                        "boq_row_index",
        +                        "derivation"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "boq_rows": {
        +                "items": {
        +                  "additionalProperties": false,
        +                  "description": "Schema § 1.3 — a single bill row in the requested standard's format.\n\n`description` is the non-verbatim functional description per spec § 13.9 /\n§ 15 invariant — NEVER reproduces a standard's verbatim clause text.\n`rate` / `amount` ship null because rates are commodity data the customer\nowns; the engine's job is the measurement, not the pricing.",
        +                  "properties": {
        +                    "amount": {
        +                      "anyOf": [
        +                        {
        +                          "type": "number"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "attribution": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "audit_id": {
        +                      "anyOf": [
        +                        {
        +                          "type": "string"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "description": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "quantity": {
        +                      "minimum": 0,
        +                      "type": "number"
        +                    },
        +                    "rate": {
        +                      "anyOf": [
        +                        {
        +                          "type": "number"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "unit": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "work_section": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    }
        +                  },
        +                  "required": [
        +                    "work_section",
        +                    "description",
        +                    "quantity",
        +                    "unit",
        +                    "attribution"
        +                  ],
        +                  "type": "object"
        +                },
        +                "type": "array"
        +              },
        +              "drawing": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": false,
        +                    "description": "Schema § 1.6a — inline server-rendered SVG preview of the geometry.\n\nThe MCP mirror of the web ``/compute`` response's ``drawing`` field\n(``api.schemas.compute.DrawingRef``): the same on-screen dimensioned\ndrawing both tiers see in the workspace, surfaced on the MCP compute\nresponse so a chat client can render it inline (60th-fire item C). This\nis the on-screen preview — present on BOTH tiers per the free/paid\nboundary; the downloadable CAD artefacts (DXF / dimensioned PDF) remain\nthe paid differentiator via the export tools.\n\nDefined here rather than importing ``DrawingRef`` because the web\n``schemas`` package imports back into this module (``schemas.render``),\nso reusing it would create an import cycle — the MCP wire contract keeps\nits own copy, the same pattern as ``BoQRow`` / ``DrawingReference``.",
        +                    "properties": {
        +                      "entity_count": {
        +                        "minimum": 0,
        +                        "type": "integer"
        +                      },
        +                      "svg_b64": {
        +                        "minLength": 1,
        +                        "type": "string"
        +                      },
        +                      "unit_of_drawing": {
        +                        "const": "m",
        +                        "default": "m",
        +                        "type": "string"
        +                      },
        +                      "viewbox_height": {
        +                        "exclusiveMinimum": 0,
        +                        "type": "number"
        +                      },
        +                      "viewbox_width": {
        +                        "exclusiveMinimum": 0,
        +                        "type": "number"
        +                      },
        +                      "viewbox_x": {
        +                        "type": "number"
        +                      },
        +                      "viewbox_y": {
        +                        "type": "number"
        +                      }
        +                    },
        +                    "required": [
        +                      "svg_b64",
        +                      "viewbox_x",
        +                      "viewbox_y",
        +                      "viewbox_width",
        +                      "viewbox_height",
        +                      "entity_count"
        +                    ],
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "drawings": {
        +                "anyOf": [
        +                  {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.6 — paid-tier drawing artefact pointer.\n\n`url` is an R2-signed URL; expiry is carried in `_meta.deliverables.expires_at`\non the envelope (not duplicated here). `layers` is DXF-only; PDF/SVG\ncallers omit it.",
        +                      "properties": {
        +                        "drawing_type": {
        +                          "enum": [
        +                            "section",
        +                            "plan",
        +                            "elevation",
        +                            "isometric",
        +                            "detail"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "format": {
        +                          "enum": [
        +                            "DXF",
        +                            "PDF",
        +                            "SVG"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "layers": {
        +                          "anyOf": [
        +                            {
        +                              "items": {
        +                                "type": "string"
        +                              },
        +                              "type": "array"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ],
        +                          "default": null
        +                        },
        +                        "scale": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "sheet_size": {
        +                          "enum": [
        +                            "A1",
        +                            "A2",
        +                            "A3",
        +                            "A4"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "url": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "drawing_type",
        +                        "format",
        +                        "url",
        +                        "sheet_size",
        +                        "scale"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "parameters_used": {
        +                "additionalProperties": false,
        +                "description": "Schema § 1.2 — the parameter snapshot the engine actually used.\n\nSplits user-supplied values from engine defaults so customers can see\nwhich numbers came from them and which the engine filled in. Every\ndefaulted parameter SHOULD have a corresponding entry in `assumptions`\n— the bridge layer enforces this when wrapping engine output.",
        +                "properties": {
        +                  "assumptions": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "engine_defaults": {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  "user_supplied": {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  }
        +                },
        +                "type": "object"
        +              },
        +              "standard": {
        +                "enum": [
        +                  "CESMM4",
        +                  "NRM2",
        +                  "SMM7",
        +                  "MMHW"
        +                ],
        +                "type": "string"
        +              },
        +              "text_summary": {
        +                "maxLength": 2000,
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "totals_summary": {
        +                "additionalProperties": false,
        +                "description": "Schema § 1.4 — totals_summary as a typed wrapper around the free-form dict.\n\nWire shape is a flat object (`{\"concrete_m3\": {...}, \"rebar_t\": {...}}`).\nWe model it as `RootModel`-equivalent via `model_config(extra=\"allow\")`\n+ a single `__root__`-style `entries` dict. Pydantic v2 recommends\n`RootModel` for free-form roots; using a wrapper class keeps the import\nsurface uniform with the rest of this module.",
        +                "properties": {
        +                  "entries": {
        +                    "additionalProperties": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.4 — single material/work-class total entry.",
        +                      "properties": {
        +                        "quantity": {
        +                          "minimum": 0,
        +                          "type": "number"
        +                        },
        +                        "unit": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "quantity",
        +                        "unit"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "object"
        +                  }
        +                },
        +                "type": "object"
        +              },
        +              "warnings": {
        +                "items": {
        +                  "additionalProperties": false,
        +                  "description": "Schema § 1.8 — a non-fatal geometry advisory (56th-fire T2).\n\nThe wire projection of the engine's `core.GeometryWarning`. Advisory only:\na warning NEVER changes a measured quantity — it flags geometry that is\nvalid but likely a mistake (e.g. a stale dependent-height default). Present\non BOTH tiers — a correctness/safety signal, not a paid feature.",
        +                  "properties": {
        +                    "affected_params": {
        +                      "items": {
        +                        "type": "string"
        +                      },
        +                      "type": "array"
        +                    },
        +                    "code": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "detail": {
        +                      "additionalProperties": {
        +                        "type": "number"
        +                      },
        +                      "type": "object"
        +                    },
        +                    "message": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "severity": {
        +                      "enum": [
        +                        "info",
        +                        "advisory",
        +                        "caution"
        +                      ],
        +                      "type": "string"
        +                    }
        +                  },
        +                  "required": [
        +                    "code",
        +                    "severity",
        +                    "message"
        +                  ],
        +                  "type": "object"
        +                },
        +                "type": "array"
        +              }
        +            },
        +            "required": [
        +              "assembly_slug",
        +              "standard",
        +              "parameters_used",
        +              "boq_rows",
        +              "totals_summary",
        +              "text_summary"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      },
        +      "error": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        +            "properties": {
        +              "code": {
        +                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        +                "enum": [
        +                  "RATE_LIMIT_EXCEEDED",
        +                  "TIER_INSUFFICIENT",
        +                  "INVALID_INPUT",
        +                  "SCHEMA_VERSION_MISMATCH",
        +                  "SCHEMA_INVARIANT_VIOLATION",
        +                  "UPSTREAM_TIMEOUT",
        +                  "BACKEND_FAILURE",
        +                  "IP_BLOCKED",
        +                  "RESOURCE_NOT_FOUND",
        +                  "RENDER_FAILURE",
        +                  "OCR_LOW_CONFIDENCE",
        +                  "MANUAL_REVIEW_REQUIRED",
        +                  "ACCEPTANCE_REQUIRED",
        +                  "INVALID_TOKEN"
        +                ],
        +                "type": "string"
        +              },
        +              "details": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "message": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "recoverable": {
        +                "type": "boolean"
        +              },
        +              "retry_after_seconds": {
        +                "anyOf": [
        +                  {
        +                    "minimum": 0,
        +                    "type": "integer"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              }
        +            },
        +            "required": [
        +              "code",
        +              "message",
        +              "recoverable"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      }
        +    },
        +    "required": [
        +      "_meta"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "_meta": {
        +        "additionalProperties": false,
        +        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        +        "properties": {
        +          "deliverables": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        +                "properties": {
        +                  "docx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "dxf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "expires_at": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  },
        +                  "pdf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "xlsx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "expires_at"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "document_id": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "issued_at": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "rate_limit_remaining": {
        +            "anyOf": [
        +              {
        +                "minimum": 0,
        +                "type": "integer"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "request_id": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "schema_version": {
        +            "const": "1.0.0",
        +            "default": "1.0.0",
        +            "type": "string"
        +          },
        +          "scope_boundary": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        +                "properties": {
        +                  "not_in_scope": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "produced": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "recommended_companions": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "type": "string"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "produced",
        +                  "not_in_scope"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tier": {
        +            "enum": [
        +              "free",
        +              "paid"
        +            ],
        +            "type": "string"
        +          },
        +          "tier_upgrade": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        +                "properties": {
        +                  "available_tiers": {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        +                      "properties": {
        +                        "billing": {
        +                          "enum": [
        +                            "one_off",
        +                            "monthly",
        +                            "annual"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "currency": {
        +                          "enum": [
        +                            "GBP",
        +                            "SGD",
        +                            "EUR",
        +                            "USD",
        +                            "CAD",
        +                            "AUD",
        +                            "NZD",
        +                            "MYR"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "display_name": {
        +                          "type": "string"
        +                        },
        +                        "price_local": {
        +                          "type": "number"
        +                        },
        +                        "tier_slug": {
        +                          "enum": [
        +                            "7_day_pass",
        +                            "solo",
        +                            "studio",
        +                            "practice"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "unlock_summary": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "tier_slug",
        +                        "display_name",
        +                        "price_local",
        +                        "currency",
        +                        "billing",
        +                        "unlock_summary"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "current_tier": {
        +                    "const": "free",
        +                    "default": "free",
        +                    "type": "string"
        +                  },
        +                  "pass_credit": {
        +                    "anyOf": [
        +                      {
        +                        "additionalProperties": false,
        +                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        +                        "properties": {
        +                          "amount_local": {
        +                            "type": "number"
        +                          },
        +                          "applies_to": {
        +                            "const": "solo_first_month",
        +                            "default": "solo_first_month",
        +                            "type": "string"
        +                          },
        +                          "currency": {
        +                            "type": "string"
        +                          },
        +                          "redeemable_until": {
        +                            "type": "string"
        +                          }
        +                        },
        +                        "required": [
        +                          "amount_local",
        +                          "currency",
        +                          "redeemable_until"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "pricing_url": {
        +                    "default": "https://civilquants.com/pricing",
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "available_tiers"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tos_url": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "upgrade_hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "warranty_disclaimer": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          }
        +        },
        +        "required": [
        +          "request_id",
        +          "issued_at",
        +          "tier"
        +        ],
        +        "type": "object"
        +      },
        +      "data": {
        +        "default": null,
        +        "title": "Data"
        +      },
        +      "error": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        +            "properties": {
        +              "code": {
        +                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        +                "enum": [
        +                  "RATE_LIMIT_EXCEEDED",
        +                  "TIER_INSUFFICIENT",
        +                  "INVALID_INPUT",
        +                  "SCHEMA_VERSION_MISMATCH",
        +                  "SCHEMA_INVARIANT_VIOLATION",
        +                  "UPSTREAM_TIMEOUT",
        +                  "BACKEND_FAILURE",
        +                  "IP_BLOCKED",
        +                  "RESOURCE_NOT_FOUND",
        +                  "RENDER_FAILURE",
        +                  "OCR_LOW_CONFIDENCE",
        +                  "MANUAL_REVIEW_REQUIRED",
        +                  "ACCEPTANCE_REQUIRED",
        +                  "INVALID_TOKEN"
        +                ],
        +                "type": "string"
        +              },
        +              "details": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "message": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "recoverable": {
        +                "type": "boolean"
        +              },
        +              "retry_after_seconds": {
        +                "anyOf": [
        +                  {
        +                    "minimum": 0,
        +                    "type": "integer"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              }
        +            },
        +            "required": [
        +              "code",
        +              "message",
        +              "recoverable"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      }
        +    },
        +    "required": [
        +      "_meta"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedcompute_petrol_oil_interceptor1 field changed
      • changedOutput schema / properties / result / anyOf
        Previous value: -[
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "_meta": {
        -        "additionalProperties": false,
        -        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        -        "properties": {
        -          "deliverables": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        -                "properties": {
        -                  "docx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "dxf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "expires_at": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  },
        -                  "pdf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "xlsx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "expires_at"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "document_id": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "issued_at": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "rate_limit_remaining": {
        -            "anyOf": [
        -              {
        -                "minimum": 0,
        -                "type": "integer"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "request_id": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "schema_version": {
        -            "const": "1.0.0",
        -            "default": "1.0.0",
        -            "type": "string"
        -          },
        -          "scope_boundary": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        -                "properties": {
        -                  "not_in_scope": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "produced": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "recommended_companions": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "type": "string"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "produced",
        -                  "not_in_scope"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tier": {
        -            "enum": [
        -              "free",
        -              "paid"
        -            ],
        -            "type": "string"
        -          },
        -          "tier_upgrade": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        -                "properties": {
        -                  "available_tiers": {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        -                      "properties": {
        -                        "billing": {
        -                          "enum": [
        -                            "one_off",
        -                            "monthly",
        -                            "annual"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "currency": {
        -                          "enum": [
        -                            "GBP",
        -                            "SGD",
        -                            "EUR",
        -                            "USD",
        -                            "CAD",
        -                            "AUD",
        -                            "NZD",
        -                            "MYR"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "display_name": {
        -                          "type": "string"
        -                        },
        -                        "price_local": {
        -                          "type": "number"
        -                        },
        -                        "tier_slug": {
        -                          "enum": [
        -                            "7_day_pass",
        -                            "solo",
        -                            "studio",
        -                            "practice"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "unlock_summary": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "tier_slug",
        -                        "display_name",
        -                        "price_local",
        -                        "currency",
        -                        "billing",
        -                        "unlock_summary"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "current_tier": {
        -                    "const": "free",
        -                    "default": "free",
        -                    "type": "string"
        -                  },
        -                  "pass_credit": {
        -                    "anyOf": [
        -                      {
        -                        "additionalProperties": false,
        -                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        -                        "properties": {
        -                          "amount_local": {
        -                            "type": "number"
        -                          },
        -                          "applies_to": {
        -                            "const": "solo_first_month",
        -                            "default": "solo_first_month",
        -                            "type": "string"
        -                          },
        -                          "currency": {
        -                            "type": "string"
        -                          },
        -                          "redeemable_until": {
        -                            "type": "string"
        -                          }
        -                        },
        -                        "required": [
        -                          "amount_local",
        -                          "currency",
        -                          "redeemable_until"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "pricing_url": {
        -                    "default": "https://civilquants.com/pricing",
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "available_tiers"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tos_url": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "upgrade_hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "warranty_disclaimer": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          }
        -        },
        -        "required": [
        -          "request_id",
        -          "issued_at",
        -          "tier"
        -        ],
        -        "type": "object"
        -      },
        -      "data": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Schema § 1.1 — the typed payload returned inside `MCPResponse[ComputeResult]`.\n\nFree-tier responses omit `drawings` (the downloadable CAD artefact\npointers — the paid differentiator); the bridge enforces this. The\n`audit_trail` and the inline `drawing` preview are present on BOTH tiers\n(V1 ALIGN / 60th-fire D + C). `text_summary` is bounded to 2000 chars —\nkeeps the LLM-facing summary token-cheap and forces longer narrative into\nBoQ row descriptions where it belongs. `warnings` is the non-fatal\ngeometry advisory list (both tiers).",
        -            "properties": {
        -              "assembly_slug": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "audit_trail": {
        -                "anyOf": [
        -                  {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.7 — paid-tier audit-trail entry.\n\nOne entry per BoQ row; `boq_row_index` ties to the row position in\n`ComputeResult.boq_rows`. `derivation` is the human-readable formula\nwalk-through; `formula` is the optional formal expression.",
        -                      "properties": {
        -                        "boq_row_index": {
        -                          "minimum": 0,
        -                          "type": "integer"
        -                        },
        -                        "derivation": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "formula": {
        -                          "anyOf": [
        -                            {
        -                              "type": "string"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ],
        -                          "default": null
        -                        },
        -                        "id": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "parameters_referenced": {
        -                          "items": {
        -                            "type": "string"
        -                          },
        -                          "type": "array"
        -                        }
        -                      },
        -                      "required": [
        -                        "id",
        -                        "boq_row_index",
        -                        "derivation"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "boq_rows": {
        -                "items": {
        -                  "additionalProperties": false,
        -                  "description": "Schema § 1.3 — a single bill row in the requested standard's format.\n\n`description` is the non-verbatim functional description per spec § 13.9 /\n§ 15 invariant — NEVER reproduces a standard's verbatim clause text.\n`rate` / `amount` ship null because rates are commodity data the customer\nowns; the engine's job is the measurement, not the pricing.",
        -                  "properties": {
        -                    "amount": {
        -                      "anyOf": [
        -                        {
        -                          "type": "number"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "attribution": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "audit_id": {
        -                      "anyOf": [
        -                        {
        -                          "type": "string"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "description": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "quantity": {
        -                      "minimum": 0,
        -                      "type": "number"
        -                    },
        -                    "rate": {
        -                      "anyOf": [
        -                        {
        -                          "type": "number"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "unit": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "work_section": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    }
        -                  },
        -                  "required": [
        -                    "work_section",
        -                    "description",
        -                    "quantity",
        -                    "unit",
        -                    "attribution"
        -                  ],
        -                  "type": "object"
        -                },
        -                "type": "array"
        -              },
        -              "drawing": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": false,
        -                    "description": "Schema § 1.6a — inline server-rendered SVG preview of the geometry.\n\nThe MCP mirror of the web ``/compute`` response's ``drawing`` field\n(``api.schemas.compute.DrawingRef``): the same on-screen dimensioned\ndrawing both tiers see in the workspace, surfaced on the MCP compute\nresponse so a chat client can render it inline (60th-fire item C). This\nis the on-screen preview — present on BOTH tiers per the free/paid\nboundary; the downloadable CAD artefacts (DXF / dimensioned PDF) remain\nthe paid differentiator via the export tools.\n\nDefined here rather than importing ``DrawingRef`` because the web\n``schemas`` package imports back into this module (``schemas.render``),\nso reusing it would create an import cycle — the MCP wire contract keeps\nits own copy, the same pattern as ``BoQRow`` / ``DrawingReference``.",
        -                    "properties": {
        -                      "entity_count": {
        -                        "minimum": 0,
        -                        "type": "integer"
        -                      },
        -                      "svg_b64": {
        -                        "minLength": 1,
        -                        "type": "string"
        -                      },
        -                      "unit_of_drawing": {
        -                        "const": "m",
        -                        "default": "m",
        -                        "type": "string"
        -                      },
        -                      "viewbox_height": {
        -                        "exclusiveMinimum": 0,
        -                        "type": "number"
        -                      },
        -                      "viewbox_width": {
        -                        "exclusiveMinimum": 0,
        -                        "type": "number"
        -                      },
        -                      "viewbox_x": {
        -                        "type": "number"
        -                      },
        -                      "viewbox_y": {
        -                        "type": "number"
        -                      }
        -                    },
        -                    "required": [
        -                      "svg_b64",
        -                      "viewbox_x",
        -                      "viewbox_y",
        -                      "viewbox_width",
        -                      "viewbox_height",
        -                      "entity_count"
        -                    ],
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "drawings": {
        -                "anyOf": [
        -                  {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.6 — paid-tier drawing artefact pointer.\n\n`url` is an R2-signed URL; expiry is carried in `_meta.deliverables.expires_at`\non the envelope (not duplicated here). `layers` is DXF-only; PDF/SVG\ncallers omit it.",
        -                      "properties": {
        -                        "drawing_type": {
        -                          "enum": [
        -                            "section",
        -                            "plan",
        -                            "elevation",
        -                            "isometric",
        -                            "detail"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "format": {
        -                          "enum": [
        -                            "DXF",
        -                            "PDF",
        -                            "SVG"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "layers": {
        -                          "anyOf": [
        -                            {
        -                              "items": {
        -                                "type": "string"
        -                              },
        -                              "type": "array"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ],
        -                          "default": null
        -                        },
        -                        "scale": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "sheet_size": {
        -                          "enum": [
        -                            "A1",
        -                            "A2",
        -                            "A3",
        -                            "A4"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "url": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "drawing_type",
        -                        "format",
        -                        "url",
        -                        "sheet_size",
        -                        "scale"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "parameters_used": {
        -                "additionalProperties": false,
        -                "description": "Schema § 1.2 — the parameter snapshot the engine actually used.\n\nSplits user-supplied values from engine defaults so customers can see\nwhich numbers came from them and which the engine filled in. Every\ndefaulted parameter SHOULD have a corresponding entry in `assumptions`\n— the bridge layer enforces this when wrapping engine output.",
        -                "properties": {
        -                  "assumptions": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "engine_defaults": {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  "resolved_from_description": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "additionalProperties": false,
        -                          "description": "Schema § 1.2 — a parameter resolved by the forgiving-input layer.\n\nPopulated by the Track B-Forgiving Haiku-4.5 resolution pass; until that\nlayer lands, instances are constructed only by tests. `source` distinguishes\nthe resolution path so customers can audit which fields were inferred.",
        -                          "properties": {
        -                            "confidence": {
        -                              "anyOf": [
        -                                {
        -                                  "enum": [
        -                                    "high",
        -                                    "medium",
        -                                    "low"
        -                                  ],
        -                                  "type": "string"
        -                                },
        -                                {
        -                                  "type": "null"
        -                                }
        -                              ],
        -                              "default": null
        -                            },
        -                            "field_name": {
        -                              "minLength": 1,
        -                              "type": "string"
        -                            },
        -                            "resolved_value": {},
        -                            "source": {
        -                              "enum": [
        -                                "description_field",
        -                                "haiku_resolution",
        -                                "engine_default"
        -                              ],
        -                              "type": "string"
        -                            }
        -                          },
        -                          "required": [
        -                            "field_name",
        -                            "resolved_value",
        -                            "source"
        -                          ],
        -                          "type": "object"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "user_supplied": {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  }
        -                },
        -                "type": "object"
        -              },
        -              "standard": {
        -                "enum": [
        -                  "CESMM4",
        -                  "NRM2",
        -                  "SMM7",
        -                  "MMHW"
        -                ],
        -                "type": "string"
        -              },
        -              "text_summary": {
        -                "maxLength": 2000,
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "totals_summary": {
        -                "additionalProperties": false,
        -                "description": "Schema § 1.4 — totals_summary as a typed wrapper around the free-form dict.\n\nWire shape is a flat object (`{\"concrete_m3\": {...}, \"rebar_t\": {...}}`).\nWe model it as `RootModel`-equivalent via `model_config(extra=\"allow\")`\n+ a single `__root__`-style `entries` dict. Pydantic v2 recommends\n`RootModel` for free-form roots; using a wrapper class keeps the import\nsurface uniform with the rest of this module.",
        -                "properties": {
        -                  "entries": {
        -                    "additionalProperties": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.4 — single material/work-class total entry.",
        -                      "properties": {
        -                        "quantity": {
        -                          "minimum": 0,
        -                          "type": "number"
        -                        },
        -                        "unit": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "quantity",
        -                        "unit"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "object"
        -                  }
        -                },
        -                "type": "object"
        -              },
        -              "warnings": {
        -                "items": {
        -                  "additionalProperties": false,
        -                  "description": "Schema § 1.8 — a non-fatal geometry advisory (56th-fire T2).\n\nThe wire projection of the engine's `core.GeometryWarning`. Advisory only:\na warning NEVER changes a measured quantity — it flags geometry that is\nvalid but likely a mistake (e.g. a stale dependent-height default). Present\non BOTH tiers — a correctness/safety signal, not a paid feature.",
        -                  "properties": {
        -                    "affected_params": {
        -                      "items": {
        -                        "type": "string"
        -                      },
        -                      "type": "array"
        -                    },
        -                    "code": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "detail": {
        -                      "additionalProperties": {
        -                        "type": "number"
        -                      },
        -                      "type": "object"
        -                    },
        -                    "message": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "severity": {
        -                      "enum": [
        -                        "info",
        -                        "advisory",
        -                        "caution"
        -                      ],
        -                      "type": "string"
        -                    }
        -                  },
        -                  "required": [
        -                    "code",
        -                    "severity",
        -                    "message"
        -                  ],
        -                  "type": "object"
        -                },
        -                "type": "array"
        -              }
        -            },
        -            "required": [
        -              "assembly_slug",
        -              "standard",
        -              "parameters_used",
        -              "boq_rows",
        -              "totals_summary",
        -              "text_summary"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      },
        -      "error": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        -            "properties": {
        -              "code": {
        -                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        -                "enum": [
        -                  "RATE_LIMIT_EXCEEDED",
        -                  "TIER_INSUFFICIENT",
        -                  "INVALID_INPUT",
        -                  "SCHEMA_VERSION_MISMATCH",
        -                  "SCHEMA_INVARIANT_VIOLATION",
        -                  "UPSTREAM_TIMEOUT",
        -                  "BACKEND_FAILURE",
        -                  "IP_BLOCKED",
        -                  "RESOURCE_NOT_FOUND",
        -                  "RENDER_FAILURE",
        -                  "OCR_LOW_CONFIDENCE",
        -                  "MANUAL_REVIEW_REQUIRED",
        -                  "ACCEPTANCE_REQUIRED",
        -                  "INVALID_TOKEN"
        -                ],
        -                "type": "string"
        -              },
        -              "details": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "message": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "recoverable": {
        -                "type": "boolean"
        -              },
        -              "retry_after_seconds": {
        -                "anyOf": [
        -                  {
        -                    "minimum": 0,
        -                    "type": "integer"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              }
        -            },
        -            "required": [
        -              "code",
        -              "message",
        -              "recoverable"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      }
        -    },
        -    "required": [
        -      "_meta"
        -    ],
        -    "type": "object"
        -  },
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "_meta": {
        -        "additionalProperties": false,
        -        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        -        "properties": {
        -          "deliverables": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        -                "properties": {
        -                  "docx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "dxf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "expires_at": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  },
        -                  "pdf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "xlsx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "expires_at"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "document_id": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "issued_at": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "rate_limit_remaining": {
        -            "anyOf": [
        -              {
        -                "minimum": 0,
        -                "type": "integer"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "request_id": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "schema_version": {
        -            "const": "1.0.0",
        -            "default": "1.0.0",
        -            "type": "string"
        -          },
        -          "scope_boundary": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        -                "properties": {
        -                  "not_in_scope": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "produced": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "recommended_companions": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "type": "string"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "produced",
        -                  "not_in_scope"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tier": {
        -            "enum": [
        -              "free",
        -              "paid"
        -            ],
        -            "type": "string"
        -          },
        -          "tier_upgrade": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        -                "properties": {
        -                  "available_tiers": {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        -                      "properties": {
        -                        "billing": {
        -                          "enum": [
        -                            "one_off",
        -                            "monthly",
        -                            "annual"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "currency": {
        -                          "enum": [
        -                            "GBP",
        -                            "SGD",
        -                            "EUR",
        -                            "USD",
        -                            "CAD",
        -                            "AUD",
        -                            "NZD",
        -                            "MYR"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "display_name": {
        -                          "type": "string"
        -                        },
        -                        "price_local": {
        -                          "type": "number"
        -                        },
        -                        "tier_slug": {
        -                          "enum": [
        -                            "7_day_pass",
        -                            "solo",
        -                            "studio",
        -                            "practice"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "unlock_summary": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "tier_slug",
        -                        "display_name",
        -                        "price_local",
        -                        "currency",
        -                        "billing",
        -                        "unlock_summary"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "current_tier": {
        -                    "const": "free",
        -                    "default": "free",
        -                    "type": "string"
        -                  },
        -                  "pass_credit": {
        -                    "anyOf": [
        -                      {
        -                        "additionalProperties": false,
        -                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        -                        "properties": {
        -                          "amount_local": {
        -                            "type": "number"
        -                          },
        -                          "applies_to": {
        -                            "const": "solo_first_month",
        -                            "default": "solo_first_month",
        -                            "type": "string"
        -                          },
        -                          "currency": {
        -                            "type": "string"
        -                          },
        -                          "redeemable_until": {
        -                            "type": "string"
        -                          }
        -                        },
        -                        "required": [
        -                          "amount_local",
        -                          "currency",
        -                          "redeemable_until"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "pricing_url": {
        -                    "default": "https://civilquants.com/pricing",
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "available_tiers"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tos_url": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "upgrade_hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "warranty_disclaimer": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          }
        -        },
        -        "required": [
        -          "request_id",
        -          "issued_at",
        -          "tier"
        -        ],
        -        "type": "object"
        -      },
        -      "data": {
        -        "default": null,
        -        "title": "Data"
        -      },
        -      "error": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        -            "properties": {
        -              "code": {
        -                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        -                "enum": [
        -                  "RATE_LIMIT_EXCEEDED",
        -                  "TIER_INSUFFICIENT",
        -                  "INVALID_INPUT",
        -                  "SCHEMA_VERSION_MISMATCH",
        -                  "SCHEMA_INVARIANT_VIOLATION",
        -                  "UPSTREAM_TIMEOUT",
        -                  "BACKEND_FAILURE",
        -                  "IP_BLOCKED",
        -                  "RESOURCE_NOT_FOUND",
        -                  "RENDER_FAILURE",
        -                  "OCR_LOW_CONFIDENCE",
        -                  "MANUAL_REVIEW_REQUIRED",
        -                  "ACCEPTANCE_REQUIRED",
        -                  "INVALID_TOKEN"
        -                ],
        -                "type": "string"
        -              },
        -              "details": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "message": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "recoverable": {
        -                "type": "boolean"
        -              },
        -              "retry_after_seconds": {
        -                "anyOf": [
        -                  {
        -                    "minimum": 0,
        -                    "type": "integer"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              }
        -            },
        -            "required": [
        -              "code",
        -              "message",
        -              "recoverable"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      }
        -    },
        -    "required": [
        -      "_meta"
        -    ],
        -    "type": "object"
        -  }
        -]New value: +[
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "_meta": {
        +        "additionalProperties": false,
        +        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        +        "properties": {
        +          "deliverables": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        +                "properties": {
        +                  "docx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "dxf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "expires_at": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  },
        +                  "pdf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "xlsx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "expires_at"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "document_id": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "issued_at": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "rate_limit_remaining": {
        +            "anyOf": [
        +              {
        +                "minimum": 0,
        +                "type": "integer"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "request_id": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "schema_version": {
        +            "const": "1.0.0",
        +            "default": "1.0.0",
        +            "type": "string"
        +          },
        +          "scope_boundary": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        +                "properties": {
        +                  "not_in_scope": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "produced": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "recommended_companions": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "type": "string"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "produced",
        +                  "not_in_scope"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tier": {
        +            "enum": [
        +              "free",
        +              "paid"
        +            ],
        +            "type": "string"
        +          },
        +          "tier_upgrade": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        +                "properties": {
        +                  "available_tiers": {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        +                      "properties": {
        +                        "billing": {
        +                          "enum": [
        +                            "one_off",
        +                            "monthly",
        +                            "annual"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "currency": {
        +                          "enum": [
        +                            "GBP",
        +                            "SGD",
        +                            "EUR",
        +                            "USD",
        +                            "CAD",
        +                            "AUD",
        +                            "NZD",
        +                            "MYR"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "display_name": {
        +                          "type": "string"
        +                        },
        +                        "price_local": {
        +                          "type": "number"
        +                        },
        +                        "tier_slug": {
        +                          "enum": [
        +                            "7_day_pass",
        +                            "solo",
        +                            "studio",
        +                            "practice"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "unlock_summary": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "tier_slug",
        +                        "display_name",
        +                        "price_local",
        +                        "currency",
        +                        "billing",
        +                        "unlock_summary"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "current_tier": {
        +                    "const": "free",
        +                    "default": "free",
        +                    "type": "string"
        +                  },
        +                  "pass_credit": {
        +                    "anyOf": [
        +                      {
        +                        "additionalProperties": false,
        +                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        +                        "properties": {
        +                          "amount_local": {
        +                            "type": "number"
        +                          },
        +                          "applies_to": {
        +                            "const": "solo_first_month",
        +                            "default": "solo_first_month",
        +                            "type": "string"
        +                          },
        +                          "currency": {
        +                            "type": "string"
        +                          },
        +                          "redeemable_until": {
        +                            "type": "string"
        +                          }
        +                        },
        +                        "required": [
        +                          "amount_local",
        +                          "currency",
        +                          "redeemable_until"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "pricing_url": {
        +                    "default": "https://civilquants.com/pricing",
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "available_tiers"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tos_url": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "upgrade_hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "warranty_disclaimer": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          }
        +        },
        +        "required": [
        +          "request_id",
        +          "issued_at",
        +          "tier"
        +        ],
        +        "type": "object"
        +      },
        +      "data": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Schema § 1.1 — the typed payload returned inside `MCPResponse[ComputeResult]`.\n\nFree-tier responses omit `drawings` (the downloadable CAD artefact\npointers — the paid differentiator); the bridge enforces this. The\n`audit_trail` and the inline `drawing` preview are present on BOTH tiers\n(V1 ALIGN / 60th-fire D + C). `text_summary` is bounded to 2000 chars —\nkeeps the LLM-facing summary token-cheap and forces longer narrative into\nBoQ row descriptions where it belongs. `warnings` is the non-fatal\ngeometry advisory list (both tiers).",
        +            "properties": {
        +              "assembly_slug": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "audit_trail": {
        +                "anyOf": [
        +                  {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.7 — paid-tier audit-trail entry.\n\nOne entry per BoQ row; `boq_row_index` ties to the row position in\n`ComputeResult.boq_rows`. `derivation` is the human-readable formula\nwalk-through; `formula` is the optional formal expression.",
        +                      "properties": {
        +                        "boq_row_index": {
        +                          "minimum": 0,
        +                          "type": "integer"
        +                        },
        +                        "derivation": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "formula": {
        +                          "anyOf": [
        +                            {
        +                              "type": "string"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ],
        +                          "default": null
        +                        },
        +                        "id": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "parameters_referenced": {
        +                          "items": {
        +                            "type": "string"
        +                          },
        +                          "type": "array"
        +                        }
        +                      },
        +                      "required": [
        +                        "id",
        +                        "boq_row_index",
        +                        "derivation"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "boq_rows": {
        +                "items": {
        +                  "additionalProperties": false,
        +                  "description": "Schema § 1.3 — a single bill row in the requested standard's format.\n\n`description` is the non-verbatim functional description per spec § 13.9 /\n§ 15 invariant — NEVER reproduces a standard's verbatim clause text.\n`rate` / `amount` ship null because rates are commodity data the customer\nowns; the engine's job is the measurement, not the pricing.",
        +                  "properties": {
        +                    "amount": {
        +                      "anyOf": [
        +                        {
        +                          "type": "number"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "attribution": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "audit_id": {
        +                      "anyOf": [
        +                        {
        +                          "type": "string"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "description": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "quantity": {
        +                      "minimum": 0,
        +                      "type": "number"
        +                    },
        +                    "rate": {
        +                      "anyOf": [
        +                        {
        +                          "type": "number"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "unit": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "work_section": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    }
        +                  },
        +                  "required": [
        +                    "work_section",
        +                    "description",
        +                    "quantity",
        +                    "unit",
        +                    "attribution"
        +                  ],
        +                  "type": "object"
        +                },
        +                "type": "array"
        +              },
        +              "drawing": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": false,
        +                    "description": "Schema § 1.6a — inline server-rendered SVG preview of the geometry.\n\nThe MCP mirror of the web ``/compute`` response's ``drawing`` field\n(``api.schemas.compute.DrawingRef``): the same on-screen dimensioned\ndrawing both tiers see in the workspace, surfaced on the MCP compute\nresponse so a chat client can render it inline (60th-fire item C). This\nis the on-screen preview — present on BOTH tiers per the free/paid\nboundary; the downloadable CAD artefacts (DXF / dimensioned PDF) remain\nthe paid differentiator via the export tools.\n\nDefined here rather than importing ``DrawingRef`` because the web\n``schemas`` package imports back into this module (``schemas.render``),\nso reusing it would create an import cycle — the MCP wire contract keeps\nits own copy, the same pattern as ``BoQRow`` / ``DrawingReference``.",
        +                    "properties": {
        +                      "entity_count": {
        +                        "minimum": 0,
        +                        "type": "integer"
        +                      },
        +                      "svg_b64": {
        +                        "minLength": 1,
        +                        "type": "string"
        +                      },
        +                      "unit_of_drawing": {
        +                        "const": "m",
        +                        "default": "m",
        +                        "type": "string"
        +                      },
        +                      "viewbox_height": {
        +                        "exclusiveMinimum": 0,
        +                        "type": "number"
        +                      },
        +                      "viewbox_width": {
        +                        "exclusiveMinimum": 0,
        +                        "type": "number"
        +                      },
        +                      "viewbox_x": {
        +                        "type": "number"
        +                      },
        +                      "viewbox_y": {
        +                        "type": "number"
        +                      }
        +                    },
        +                    "required": [
        +                      "svg_b64",
        +                      "viewbox_x",
        +                      "viewbox_y",
        +                      "viewbox_width",
        +                      "viewbox_height",
        +                      "entity_count"
        +                    ],
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "drawings": {
        +                "anyOf": [
        +                  {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.6 — paid-tier drawing artefact pointer.\n\n`url` is an R2-signed URL; expiry is carried in `_meta.deliverables.expires_at`\non the envelope (not duplicated here). `layers` is DXF-only; PDF/SVG\ncallers omit it.",
        +                      "properties": {
        +                        "drawing_type": {
        +                          "enum": [
        +                            "section",
        +                            "plan",
        +                            "elevation",
        +                            "isometric",
        +                            "detail"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "format": {
        +                          "enum": [
        +                            "DXF",
        +                            "PDF",
        +                            "SVG"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "layers": {
        +                          "anyOf": [
        +                            {
        +                              "items": {
        +                                "type": "string"
        +                              },
        +                              "type": "array"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ],
        +                          "default": null
        +                        },
        +                        "scale": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "sheet_size": {
        +                          "enum": [
        +                            "A1",
        +                            "A2",
        +                            "A3",
        +                            "A4"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "url": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "drawing_type",
        +                        "format",
        +                        "url",
        +                        "sheet_size",
        +                        "scale"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "parameters_used": {
        +                "additionalProperties": false,
        +                "description": "Schema § 1.2 — the parameter snapshot the engine actually used.\n\nSplits user-supplied values from engine defaults so customers can see\nwhich numbers came from them and which the engine filled in. Every\ndefaulted parameter SHOULD have a corresponding entry in `assumptions`\n— the bridge layer enforces this when wrapping engine output.",
        +                "properties": {
        +                  "assumptions": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "engine_defaults": {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  "user_supplied": {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  }
        +                },
        +                "type": "object"
        +              },
        +              "standard": {
        +                "enum": [
        +                  "CESMM4",
        +                  "NRM2",
        +                  "SMM7",
        +                  "MMHW"
        +                ],
        +                "type": "string"
        +              },
        +              "text_summary": {
        +                "maxLength": 2000,
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "totals_summary": {
        +                "additionalProperties": false,
        +                "description": "Schema § 1.4 — totals_summary as a typed wrapper around the free-form dict.\n\nWire shape is a flat object (`{\"concrete_m3\": {...}, \"rebar_t\": {...}}`).\nWe model it as `RootModel`-equivalent via `model_config(extra=\"allow\")`\n+ a single `__root__`-style `entries` dict. Pydantic v2 recommends\n`RootModel` for free-form roots; using a wrapper class keeps the import\nsurface uniform with the rest of this module.",
        +                "properties": {
        +                  "entries": {
        +                    "additionalProperties": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.4 — single material/work-class total entry.",
        +                      "properties": {
        +                        "quantity": {
        +                          "minimum": 0,
        +                          "type": "number"
        +                        },
        +                        "unit": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "quantity",
        +                        "unit"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "object"
        +                  }
        +                },
        +                "type": "object"
        +              },
        +              "warnings": {
        +                "items": {
        +                  "additionalProperties": false,
        +                  "description": "Schema § 1.8 — a non-fatal geometry advisory (56th-fire T2).\n\nThe wire projection of the engine's `core.GeometryWarning`. Advisory only:\na warning NEVER changes a measured quantity — it flags geometry that is\nvalid but likely a mistake (e.g. a stale dependent-height default). Present\non BOTH tiers — a correctness/safety signal, not a paid feature.",
        +                  "properties": {
        +                    "affected_params": {
        +                      "items": {
        +                        "type": "string"
        +                      },
        +                      "type": "array"
        +                    },
        +                    "code": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "detail": {
        +                      "additionalProperties": {
        +                        "type": "number"
        +                      },
        +                      "type": "object"
        +                    },
        +                    "message": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "severity": {
        +                      "enum": [
        +                        "info",
        +                        "advisory",
        +                        "caution"
        +                      ],
        +                      "type": "string"
        +                    }
        +                  },
        +                  "required": [
        +                    "code",
        +                    "severity",
        +                    "message"
        +                  ],
        +                  "type": "object"
        +                },
        +                "type": "array"
        +              }
        +            },
        +            "required": [
        +              "assembly_slug",
        +              "standard",
        +              "parameters_used",
        +              "boq_rows",
        +              "totals_summary",
        +              "text_summary"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      },
        +      "error": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        +            "properties": {
        +              "code": {
        +                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        +                "enum": [
        +                  "RATE_LIMIT_EXCEEDED",
        +                  "TIER_INSUFFICIENT",
        +                  "INVALID_INPUT",
        +                  "SCHEMA_VERSION_MISMATCH",
        +                  "SCHEMA_INVARIANT_VIOLATION",
        +                  "UPSTREAM_TIMEOUT",
        +                  "BACKEND_FAILURE",
        +                  "IP_BLOCKED",
        +                  "RESOURCE_NOT_FOUND",
        +                  "RENDER_FAILURE",
        +                  "OCR_LOW_CONFIDENCE",
        +                  "MANUAL_REVIEW_REQUIRED",
        +                  "ACCEPTANCE_REQUIRED",
        +                  "INVALID_TOKEN"
        +                ],
        +                "type": "string"
        +              },
        +              "details": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "message": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "recoverable": {
        +                "type": "boolean"
        +              },
        +              "retry_after_seconds": {
        +                "anyOf": [
        +                  {
        +                    "minimum": 0,
        +                    "type": "integer"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              }
        +            },
        +            "required": [
        +              "code",
        +              "message",
        +              "recoverable"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      }
        +    },
        +    "required": [
        +      "_meta"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "_meta": {
        +        "additionalProperties": false,
        +        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        +        "properties": {
        +          "deliverables": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        +                "properties": {
        +                  "docx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "dxf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "expires_at": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  },
        +                  "pdf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "xlsx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "expires_at"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "document_id": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "issued_at": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "rate_limit_remaining": {
        +            "anyOf": [
        +              {
        +                "minimum": 0,
        +                "type": "integer"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "request_id": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "schema_version": {
        +            "const": "1.0.0",
        +            "default": "1.0.0",
        +            "type": "string"
        +          },
        +          "scope_boundary": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        +                "properties": {
        +                  "not_in_scope": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "produced": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "recommended_companions": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "type": "string"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "produced",
        +                  "not_in_scope"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tier": {
        +            "enum": [
        +              "free",
        +              "paid"
        +            ],
        +            "type": "string"
        +          },
        +          "tier_upgrade": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        +                "properties": {
        +                  "available_tiers": {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        +                      "properties": {
        +                        "billing": {
        +                          "enum": [
        +                            "one_off",
        +                            "monthly",
        +                            "annual"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "currency": {
        +                          "enum": [
        +                            "GBP",
        +                            "SGD",
        +                            "EUR",
        +                            "USD",
        +                            "CAD",
        +                            "AUD",
        +                            "NZD",
        +                            "MYR"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "display_name": {
        +                          "type": "string"
        +                        },
        +                        "price_local": {
        +                          "type": "number"
        +                        },
        +                        "tier_slug": {
        +                          "enum": [
        +                            "7_day_pass",
        +                            "solo",
        +                            "studio",
        +                            "practice"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "unlock_summary": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "tier_slug",
        +                        "display_name",
        +                        "price_local",
        +                        "currency",
        +                        "billing",
        +                        "unlock_summary"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "current_tier": {
        +                    "const": "free",
        +                    "default": "free",
        +                    "type": "string"
        +                  },
        +                  "pass_credit": {
        +                    "anyOf": [
        +                      {
        +                        "additionalProperties": false,
        +                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        +                        "properties": {
        +                          "amount_local": {
        +                            "type": "number"
        +                          },
        +                          "applies_to": {
        +                            "const": "solo_first_month",
        +                            "default": "solo_first_month",
        +                            "type": "string"
        +                          },
        +                          "currency": {
        +                            "type": "string"
        +                          },
        +                          "redeemable_until": {
        +                            "type": "string"
        +                          }
        +                        },
        +                        "required": [
        +                          "amount_local",
        +                          "currency",
        +                          "redeemable_until"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "pricing_url": {
        +                    "default": "https://civilquants.com/pricing",
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "available_tiers"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tos_url": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "upgrade_hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "warranty_disclaimer": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          }
        +        },
        +        "required": [
        +          "request_id",
        +          "issued_at",
        +          "tier"
        +        ],
        +        "type": "object"
        +      },
        +      "data": {
        +        "default": null,
        +        "title": "Data"
        +      },
        +      "error": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        +            "properties": {
        +              "code": {
        +                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        +                "enum": [
        +                  "RATE_LIMIT_EXCEEDED",
        +                  "TIER_INSUFFICIENT",
        +                  "INVALID_INPUT",
        +                  "SCHEMA_VERSION_MISMATCH",
        +                  "SCHEMA_INVARIANT_VIOLATION",
        +                  "UPSTREAM_TIMEOUT",
        +                  "BACKEND_FAILURE",
        +                  "IP_BLOCKED",
        +                  "RESOURCE_NOT_FOUND",
        +                  "RENDER_FAILURE",
        +                  "OCR_LOW_CONFIDENCE",
        +                  "MANUAL_REVIEW_REQUIRED",
        +                  "ACCEPTANCE_REQUIRED",
        +                  "INVALID_TOKEN"
        +                ],
        +                "type": "string"
        +              },
        +              "details": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "message": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "recoverable": {
        +                "type": "boolean"
        +              },
        +              "retry_after_seconds": {
        +                "anyOf": [
        +                  {
        +                    "minimum": 0,
        +                    "type": "integer"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              }
        +            },
        +            "required": [
        +              "code",
        +              "message",
        +              "recoverable"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      }
        +    },
        +    "required": [
        +      "_meta"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedcompute_pipe_bedding1 field changed
      • changedOutput schema / properties / result / anyOf
        Previous value: -[
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "_meta": {
        -        "additionalProperties": false,
        -        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        -        "properties": {
        -          "deliverables": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        -                "properties": {
        -                  "docx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "dxf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "expires_at": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  },
        -                  "pdf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "xlsx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "expires_at"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "document_id": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "issued_at": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "rate_limit_remaining": {
        -            "anyOf": [
        -              {
        -                "minimum": 0,
        -                "type": "integer"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "request_id": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "schema_version": {
        -            "const": "1.0.0",
        -            "default": "1.0.0",
        -            "type": "string"
        -          },
        -          "scope_boundary": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        -                "properties": {
        -                  "not_in_scope": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "produced": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "recommended_companions": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "type": "string"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "produced",
        -                  "not_in_scope"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tier": {
        -            "enum": [
        -              "free",
        -              "paid"
        -            ],
        -            "type": "string"
        -          },
        -          "tier_upgrade": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        -                "properties": {
        -                  "available_tiers": {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        -                      "properties": {
        -                        "billing": {
        -                          "enum": [
        -                            "one_off",
        -                            "monthly",
        -                            "annual"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "currency": {
        -                          "enum": [
        -                            "GBP",
        -                            "SGD",
        -                            "EUR",
        -                            "USD",
        -                            "CAD",
        -                            "AUD",
        -                            "NZD",
        -                            "MYR"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "display_name": {
        -                          "type": "string"
        -                        },
        -                        "price_local": {
        -                          "type": "number"
        -                        },
        -                        "tier_slug": {
        -                          "enum": [
        -                            "7_day_pass",
        -                            "solo",
        -                            "studio",
        -                            "practice"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "unlock_summary": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "tier_slug",
        -                        "display_name",
        -                        "price_local",
        -                        "currency",
        -                        "billing",
        -                        "unlock_summary"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "current_tier": {
        -                    "const": "free",
        -                    "default": "free",
        -                    "type": "string"
        -                  },
        -                  "pass_credit": {
        -                    "anyOf": [
        -                      {
        -                        "additionalProperties": false,
        -                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        -                        "properties": {
        -                          "amount_local": {
        -                            "type": "number"
        -                          },
        -                          "applies_to": {
        -                            "const": "solo_first_month",
        -                            "default": "solo_first_month",
        -                            "type": "string"
        -                          },
        -                          "currency": {
        -                            "type": "string"
        -                          },
        -                          "redeemable_until": {
        -                            "type": "string"
        -                          }
        -                        },
        -                        "required": [
        -                          "amount_local",
        -                          "currency",
        -                          "redeemable_until"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "pricing_url": {
        -                    "default": "https://civilquants.com/pricing",
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "available_tiers"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tos_url": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "upgrade_hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "warranty_disclaimer": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          }
        -        },
        -        "required": [
        -          "request_id",
        -          "issued_at",
        -          "tier"
        -        ],
        -        "type": "object"
        -      },
        -      "data": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Schema § 1.1 — the typed payload returned inside `MCPResponse[ComputeResult]`.\n\nFree-tier responses omit `drawings` (the downloadable CAD artefact\npointers — the paid differentiator); the bridge enforces this. The\n`audit_trail` and the inline `drawing` preview are present on BOTH tiers\n(V1 ALIGN / 60th-fire D + C). `text_summary` is bounded to 2000 chars —\nkeeps the LLM-facing summary token-cheap and forces longer narrative into\nBoQ row descriptions where it belongs. `warnings` is the non-fatal\ngeometry advisory list (both tiers).",
        -            "properties": {
        -              "assembly_slug": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "audit_trail": {
        -                "anyOf": [
        -                  {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.7 — paid-tier audit-trail entry.\n\nOne entry per BoQ row; `boq_row_index` ties to the row position in\n`ComputeResult.boq_rows`. `derivation` is the human-readable formula\nwalk-through; `formula` is the optional formal expression.",
        -                      "properties": {
        -                        "boq_row_index": {
        -                          "minimum": 0,
        -                          "type": "integer"
        -                        },
        -                        "derivation": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "formula": {
        -                          "anyOf": [
        -                            {
        -                              "type": "string"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ],
        -                          "default": null
        -                        },
        -                        "id": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "parameters_referenced": {
        -                          "items": {
        -                            "type": "string"
        -                          },
        -                          "type": "array"
        -                        }
        -                      },
        -                      "required": [
        -                        "id",
        -                        "boq_row_index",
        -                        "derivation"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "boq_rows": {
        -                "items": {
        -                  "additionalProperties": false,
        -                  "description": "Schema § 1.3 — a single bill row in the requested standard's format.\n\n`description` is the non-verbatim functional description per spec § 13.9 /\n§ 15 invariant — NEVER reproduces a standard's verbatim clause text.\n`rate` / `amount` ship null because rates are commodity data the customer\nowns; the engine's job is the measurement, not the pricing.",
        -                  "properties": {
        -                    "amount": {
        -                      "anyOf": [
        -                        {
        -                          "type": "number"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "attribution": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "audit_id": {
        -                      "anyOf": [
        -                        {
        -                          "type": "string"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "description": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "quantity": {
        -                      "minimum": 0,
        -                      "type": "number"
        -                    },
        -                    "rate": {
        -                      "anyOf": [
        -                        {
        -                          "type": "number"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "unit": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "work_section": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    }
        -                  },
        -                  "required": [
        -                    "work_section",
        -                    "description",
        -                    "quantity",
        -                    "unit",
        -                    "attribution"
        -                  ],
        -                  "type": "object"
        -                },
        -                "type": "array"
        -              },
        -              "drawing": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": false,
        -                    "description": "Schema § 1.6a — inline server-rendered SVG preview of the geometry.\n\nThe MCP mirror of the web ``/compute`` response's ``drawing`` field\n(``api.schemas.compute.DrawingRef``): the same on-screen dimensioned\ndrawing both tiers see in the workspace, surfaced on the MCP compute\nresponse so a chat client can render it inline (60th-fire item C). This\nis the on-screen preview — present on BOTH tiers per the free/paid\nboundary; the downloadable CAD artefacts (DXF / dimensioned PDF) remain\nthe paid differentiator via the export tools.\n\nDefined here rather than importing ``DrawingRef`` because the web\n``schemas`` package imports back into this module (``schemas.render``),\nso reusing it would create an import cycle — the MCP wire contract keeps\nits own copy, the same pattern as ``BoQRow`` / ``DrawingReference``.",
        -                    "properties": {
        -                      "entity_count": {
        -                        "minimum": 0,
        -                        "type": "integer"
        -                      },
        -                      "svg_b64": {
        -                        "minLength": 1,
        -                        "type": "string"
        -                      },
        -                      "unit_of_drawing": {
        -                        "const": "m",
        -                        "default": "m",
        -                        "type": "string"
        -                      },
        -                      "viewbox_height": {
        -                        "exclusiveMinimum": 0,
        -                        "type": "number"
        -                      },
        -                      "viewbox_width": {
        -                        "exclusiveMinimum": 0,
        -                        "type": "number"
        -                      },
        -                      "viewbox_x": {
        -                        "type": "number"
        -                      },
        -                      "viewbox_y": {
        -                        "type": "number"
        -                      }
        -                    },
        -                    "required": [
        -                      "svg_b64",
        -                      "viewbox_x",
        -                      "viewbox_y",
        -                      "viewbox_width",
        -                      "viewbox_height",
        -                      "entity_count"
        -                    ],
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "drawings": {
        -                "anyOf": [
        -                  {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.6 — paid-tier drawing artefact pointer.\n\n`url` is an R2-signed URL; expiry is carried in `_meta.deliverables.expires_at`\non the envelope (not duplicated here). `layers` is DXF-only; PDF/SVG\ncallers omit it.",
        -                      "properties": {
        -                        "drawing_type": {
        -                          "enum": [
        -                            "section",
        -                            "plan",
        -                            "elevation",
        -                            "isometric",
        -                            "detail"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "format": {
        -                          "enum": [
        -                            "DXF",
        -                            "PDF",
        -                            "SVG"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "layers": {
        -                          "anyOf": [
        -                            {
        -                              "items": {
        -                                "type": "string"
        -                              },
        -                              "type": "array"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ],
        -                          "default": null
        -                        },
        -                        "scale": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "sheet_size": {
        -                          "enum": [
        -                            "A1",
        -                            "A2",
        -                            "A3",
        -                            "A4"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "url": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "drawing_type",
        -                        "format",
        -                        "url",
        -                        "sheet_size",
        -                        "scale"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "parameters_used": {
        -                "additionalProperties": false,
        -                "description": "Schema § 1.2 — the parameter snapshot the engine actually used.\n\nSplits user-supplied values from engine defaults so customers can see\nwhich numbers came from them and which the engine filled in. Every\ndefaulted parameter SHOULD have a corresponding entry in `assumptions`\n— the bridge layer enforces this when wrapping engine output.",
        -                "properties": {
        -                  "assumptions": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "engine_defaults": {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  "resolved_from_description": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "additionalProperties": false,
        -                          "description": "Schema § 1.2 — a parameter resolved by the forgiving-input layer.\n\nPopulated by the Track B-Forgiving Haiku-4.5 resolution pass; until that\nlayer lands, instances are constructed only by tests. `source` distinguishes\nthe resolution path so customers can audit which fields were inferred.",
        -                          "properties": {
        -                            "confidence": {
        -                              "anyOf": [
        -                                {
        -                                  "enum": [
        -                                    "high",
        -                                    "medium",
        -                                    "low"
        -                                  ],
        -                                  "type": "string"
        -                                },
        -                                {
        -                                  "type": "null"
        -                                }
        -                              ],
        -                              "default": null
        -                            },
        -                            "field_name": {
        -                              "minLength": 1,
        -                              "type": "string"
        -                            },
        -                            "resolved_value": {},
        -                            "source": {
        -                              "enum": [
        -                                "description_field",
        -                                "haiku_resolution",
        -                                "engine_default"
        -                              ],
        -                              "type": "string"
        -                            }
        -                          },
        -                          "required": [
        -                            "field_name",
        -                            "resolved_value",
        -                            "source"
        -                          ],
        -                          "type": "object"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "user_supplied": {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  }
        -                },
        -                "type": "object"
        -              },
        -              "standard": {
        -                "enum": [
        -                  "CESMM4",
        -                  "NRM2",
        -                  "SMM7",
        -                  "MMHW"
        -                ],
        -                "type": "string"
        -              },
        -              "text_summary": {
        -                "maxLength": 2000,
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "totals_summary": {
        -                "additionalProperties": false,
        -                "description": "Schema § 1.4 — totals_summary as a typed wrapper around the free-form dict.\n\nWire shape is a flat object (`{\"concrete_m3\": {...}, \"rebar_t\": {...}}`).\nWe model it as `RootModel`-equivalent via `model_config(extra=\"allow\")`\n+ a single `__root__`-style `entries` dict. Pydantic v2 recommends\n`RootModel` for free-form roots; using a wrapper class keeps the import\nsurface uniform with the rest of this module.",
        -                "properties": {
        -                  "entries": {
        -                    "additionalProperties": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.4 — single material/work-class total entry.",
        -                      "properties": {
        -                        "quantity": {
        -                          "minimum": 0,
        -                          "type": "number"
        -                        },
        -                        "unit": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "quantity",
        -                        "unit"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "object"
        -                  }
        -                },
        -                "type": "object"
        -              },
        -              "warnings": {
        -                "items": {
        -                  "additionalProperties": false,
        -                  "description": "Schema § 1.8 — a non-fatal geometry advisory (56th-fire T2).\n\nThe wire projection of the engine's `core.GeometryWarning`. Advisory only:\na warning NEVER changes a measured quantity — it flags geometry that is\nvalid but likely a mistake (e.g. a stale dependent-height default). Present\non BOTH tiers — a correctness/safety signal, not a paid feature.",
        -                  "properties": {
        -                    "affected_params": {
        -                      "items": {
        -                        "type": "string"
        -                      },
        -                      "type": "array"
        -                    },
        -                    "code": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "detail": {
        -                      "additionalProperties": {
        -                        "type": "number"
        -                      },
        -                      "type": "object"
        -                    },
        -                    "message": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "severity": {
        -                      "enum": [
        -                        "info",
        -                        "advisory",
        -                        "caution"
        -                      ],
        -                      "type": "string"
        -                    }
        -                  },
        -                  "required": [
        -                    "code",
        -                    "severity",
        -                    "message"
        -                  ],
        -                  "type": "object"
        -                },
        -                "type": "array"
        -              }
        -            },
        -            "required": [
        -              "assembly_slug",
        -              "standard",
        -              "parameters_used",
        -              "boq_rows",
        -              "totals_summary",
        -              "text_summary"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      },
        -      "error": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        -            "properties": {
        -              "code": {
        -                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        -                "enum": [
        -                  "RATE_LIMIT_EXCEEDED",
        -                  "TIER_INSUFFICIENT",
        -                  "INVALID_INPUT",
        -                  "SCHEMA_VERSION_MISMATCH",
        -                  "SCHEMA_INVARIANT_VIOLATION",
        -                  "UPSTREAM_TIMEOUT",
        -                  "BACKEND_FAILURE",
        -                  "IP_BLOCKED",
        -                  "RESOURCE_NOT_FOUND",
        -                  "RENDER_FAILURE",
        -                  "OCR_LOW_CONFIDENCE",
        -                  "MANUAL_REVIEW_REQUIRED",
        -                  "ACCEPTANCE_REQUIRED",
        -                  "INVALID_TOKEN"
        -                ],
        -                "type": "string"
        -              },
        -              "details": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "message": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "recoverable": {
        -                "type": "boolean"
        -              },
        -              "retry_after_seconds": {
        -                "anyOf": [
        -                  {
        -                    "minimum": 0,
        -                    "type": "integer"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              }
        -            },
        -            "required": [
        -              "code",
        -              "message",
        -              "recoverable"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      }
        -    },
        -    "required": [
        -      "_meta"
        -    ],
        -    "type": "object"
        -  },
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "_meta": {
        -        "additionalProperties": false,
        -        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        -        "properties": {
        -          "deliverables": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        -                "properties": {
        -                  "docx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "dxf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "expires_at": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  },
        -                  "pdf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "xlsx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "expires_at"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "document_id": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "issued_at": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "rate_limit_remaining": {
        -            "anyOf": [
        -              {
        -                "minimum": 0,
        -                "type": "integer"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "request_id": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "schema_version": {
        -            "const": "1.0.0",
        -            "default": "1.0.0",
        -            "type": "string"
        -          },
        -          "scope_boundary": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        -                "properties": {
        -                  "not_in_scope": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "produced": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "recommended_companions": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "type": "string"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "produced",
        -                  "not_in_scope"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tier": {
        -            "enum": [
        -              "free",
        -              "paid"
        -            ],
        -            "type": "string"
        -          },
        -          "tier_upgrade": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        -                "properties": {
        -                  "available_tiers": {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        -                      "properties": {
        -                        "billing": {
        -                          "enum": [
        -                            "one_off",
        -                            "monthly",
        -                            "annual"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "currency": {
        -                          "enum": [
        -                            "GBP",
        -                            "SGD",
        -                            "EUR",
        -                            "USD",
        -                            "CAD",
        -                            "AUD",
        -                            "NZD",
        -                            "MYR"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "display_name": {
        -                          "type": "string"
        -                        },
        -                        "price_local": {
        -                          "type": "number"
        -                        },
        -                        "tier_slug": {
        -                          "enum": [
        -                            "7_day_pass",
        -                            "solo",
        -                            "studio",
        -                            "practice"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "unlock_summary": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "tier_slug",
        -                        "display_name",
        -                        "price_local",
        -                        "currency",
        -                        "billing",
        -                        "unlock_summary"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "current_tier": {
        -                    "const": "free",
        -                    "default": "free",
        -                    "type": "string"
        -                  },
        -                  "pass_credit": {
        -                    "anyOf": [
        -                      {
        -                        "additionalProperties": false,
        -                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        -                        "properties": {
        -                          "amount_local": {
        -                            "type": "number"
        -                          },
        -                          "applies_to": {
        -                            "const": "solo_first_month",
        -                            "default": "solo_first_month",
        -                            "type": "string"
        -                          },
        -                          "currency": {
        -                            "type": "string"
        -                          },
        -                          "redeemable_until": {
        -                            "type": "string"
        -                          }
        -                        },
        -                        "required": [
        -                          "amount_local",
        -                          "currency",
        -                          "redeemable_until"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "pricing_url": {
        -                    "default": "https://civilquants.com/pricing",
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "available_tiers"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tos_url": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "upgrade_hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "warranty_disclaimer": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          }
        -        },
        -        "required": [
        -          "request_id",
        -          "issued_at",
        -          "tier"
        -        ],
        -        "type": "object"
        -      },
        -      "data": {
        -        "default": null,
        -        "title": "Data"
        -      },
        -      "error": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        -            "properties": {
        -              "code": {
        -                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        -                "enum": [
        -                  "RATE_LIMIT_EXCEEDED",
        -                  "TIER_INSUFFICIENT",
        -                  "INVALID_INPUT",
        -                  "SCHEMA_VERSION_MISMATCH",
        -                  "SCHEMA_INVARIANT_VIOLATION",
        -                  "UPSTREAM_TIMEOUT",
        -                  "BACKEND_FAILURE",
        -                  "IP_BLOCKED",
        -                  "RESOURCE_NOT_FOUND",
        -                  "RENDER_FAILURE",
        -                  "OCR_LOW_CONFIDENCE",
        -                  "MANUAL_REVIEW_REQUIRED",
        -                  "ACCEPTANCE_REQUIRED",
        -                  "INVALID_TOKEN"
        -                ],
        -                "type": "string"
        -              },
        -              "details": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "message": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "recoverable": {
        -                "type": "boolean"
        -              },
        -              "retry_after_seconds": {
        -                "anyOf": [
        -                  {
        -                    "minimum": 0,
        -                    "type": "integer"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              }
        -            },
        -            "required": [
        -              "code",
        -              "message",
        -              "recoverable"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      }
        -    },
        -    "required": [
        -      "_meta"
        -    ],
        -    "type": "object"
        -  }
        -]New value: +[
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "_meta": {
        +        "additionalProperties": false,
        +        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        +        "properties": {
        +          "deliverables": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        +                "properties": {
        +                  "docx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "dxf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "expires_at": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  },
        +                  "pdf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "xlsx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "expires_at"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "document_id": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "issued_at": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "rate_limit_remaining": {
        +            "anyOf": [
        +              {
        +                "minimum": 0,
        +                "type": "integer"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "request_id": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "schema_version": {
        +            "const": "1.0.0",
        +            "default": "1.0.0",
        +            "type": "string"
        +          },
        +          "scope_boundary": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        +                "properties": {
        +                  "not_in_scope": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "produced": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "recommended_companions": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "type": "string"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "produced",
        +                  "not_in_scope"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tier": {
        +            "enum": [
        +              "free",
        +              "paid"
        +            ],
        +            "type": "string"
        +          },
        +          "tier_upgrade": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        +                "properties": {
        +                  "available_tiers": {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        +                      "properties": {
        +                        "billing": {
        +                          "enum": [
        +                            "one_off",
        +                            "monthly",
        +                            "annual"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "currency": {
        +                          "enum": [
        +                            "GBP",
        +                            "SGD",
        +                            "EUR",
        +                            "USD",
        +                            "CAD",
        +                            "AUD",
        +                            "NZD",
        +                            "MYR"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "display_name": {
        +                          "type": "string"
        +                        },
        +                        "price_local": {
        +                          "type": "number"
        +                        },
        +                        "tier_slug": {
        +                          "enum": [
        +                            "7_day_pass",
        +                            "solo",
        +                            "studio",
        +                            "practice"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "unlock_summary": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "tier_slug",
        +                        "display_name",
        +                        "price_local",
        +                        "currency",
        +                        "billing",
        +                        "unlock_summary"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "current_tier": {
        +                    "const": "free",
        +                    "default": "free",
        +                    "type": "string"
        +                  },
        +                  "pass_credit": {
        +                    "anyOf": [
        +                      {
        +                        "additionalProperties": false,
        +                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        +                        "properties": {
        +                          "amount_local": {
        +                            "type": "number"
        +                          },
        +                          "applies_to": {
        +                            "const": "solo_first_month",
        +                            "default": "solo_first_month",
        +                            "type": "string"
        +                          },
        +                          "currency": {
        +                            "type": "string"
        +                          },
        +                          "redeemable_until": {
        +                            "type": "string"
        +                          }
        +                        },
        +                        "required": [
        +                          "amount_local",
        +                          "currency",
        +                          "redeemable_until"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "pricing_url": {
        +                    "default": "https://civilquants.com/pricing",
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "available_tiers"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tos_url": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "upgrade_hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "warranty_disclaimer": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          }
        +        },
        +        "required": [
        +          "request_id",
        +          "issued_at",
        +          "tier"
        +        ],
        +        "type": "object"
        +      },
        +      "data": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Schema § 1.1 — the typed payload returned inside `MCPResponse[ComputeResult]`.\n\nFree-tier responses omit `drawings` (the downloadable CAD artefact\npointers — the paid differentiator); the bridge enforces this. The\n`audit_trail` and the inline `drawing` preview are present on BOTH tiers\n(V1 ALIGN / 60th-fire D + C). `text_summary` is bounded to 2000 chars —\nkeeps the LLM-facing summary token-cheap and forces longer narrative into\nBoQ row descriptions where it belongs. `warnings` is the non-fatal\ngeometry advisory list (both tiers).",
        +            "properties": {
        +              "assembly_slug": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "audit_trail": {
        +                "anyOf": [
        +                  {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.7 — paid-tier audit-trail entry.\n\nOne entry per BoQ row; `boq_row_index` ties to the row position in\n`ComputeResult.boq_rows`. `derivation` is the human-readable formula\nwalk-through; `formula` is the optional formal expression.",
        +                      "properties": {
        +                        "boq_row_index": {
        +                          "minimum": 0,
        +                          "type": "integer"
        +                        },
        +                        "derivation": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "formula": {
        +                          "anyOf": [
        +                            {
        +                              "type": "string"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ],
        +                          "default": null
        +                        },
        +                        "id": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "parameters_referenced": {
        +                          "items": {
        +                            "type": "string"
        +                          },
        +                          "type": "array"
        +                        }
        +                      },
        +                      "required": [
        +                        "id",
        +                        "boq_row_index",
        +                        "derivation"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "boq_rows": {
        +                "items": {
        +                  "additionalProperties": false,
        +                  "description": "Schema § 1.3 — a single bill row in the requested standard's format.\n\n`description` is the non-verbatim functional description per spec § 13.9 /\n§ 15 invariant — NEVER reproduces a standard's verbatim clause text.\n`rate` / `amount` ship null because rates are commodity data the customer\nowns; the engine's job is the measurement, not the pricing.",
        +                  "properties": {
        +                    "amount": {
        +                      "anyOf": [
        +                        {
        +                          "type": "number"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "attribution": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "audit_id": {
        +                      "anyOf": [
        +                        {
        +                          "type": "string"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "description": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "quantity": {
        +                      "minimum": 0,
        +                      "type": "number"
        +                    },
        +                    "rate": {
        +                      "anyOf": [
        +                        {
        +                          "type": "number"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "unit": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "work_section": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    }
        +                  },
        +                  "required": [
        +                    "work_section",
        +                    "description",
        +                    "quantity",
        +                    "unit",
        +                    "attribution"
        +                  ],
        +                  "type": "object"
        +                },
        +                "type": "array"
        +              },
        +              "drawing": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": false,
        +                    "description": "Schema § 1.6a — inline server-rendered SVG preview of the geometry.\n\nThe MCP mirror of the web ``/compute`` response's ``drawing`` field\n(``api.schemas.compute.DrawingRef``): the same on-screen dimensioned\ndrawing both tiers see in the workspace, surfaced on the MCP compute\nresponse so a chat client can render it inline (60th-fire item C). This\nis the on-screen preview — present on BOTH tiers per the free/paid\nboundary; the downloadable CAD artefacts (DXF / dimensioned PDF) remain\nthe paid differentiator via the export tools.\n\nDefined here rather than importing ``DrawingRef`` because the web\n``schemas`` package imports back into this module (``schemas.render``),\nso reusing it would create an import cycle — the MCP wire contract keeps\nits own copy, the same pattern as ``BoQRow`` / ``DrawingReference``.",
        +                    "properties": {
        +                      "entity_count": {
        +                        "minimum": 0,
        +                        "type": "integer"
        +                      },
        +                      "svg_b64": {
        +                        "minLength": 1,
        +                        "type": "string"
        +                      },
        +                      "unit_of_drawing": {
        +                        "const": "m",
        +                        "default": "m",
        +                        "type": "string"
        +                      },
        +                      "viewbox_height": {
        +                        "exclusiveMinimum": 0,
        +                        "type": "number"
        +                      },
        +                      "viewbox_width": {
        +                        "exclusiveMinimum": 0,
        +                        "type": "number"
        +                      },
        +                      "viewbox_x": {
        +                        "type": "number"
        +                      },
        +                      "viewbox_y": {
        +                        "type": "number"
        +                      }
        +                    },
        +                    "required": [
        +                      "svg_b64",
        +                      "viewbox_x",
        +                      "viewbox_y",
        +                      "viewbox_width",
        +                      "viewbox_height",
        +                      "entity_count"
        +                    ],
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "drawings": {
        +                "anyOf": [
        +                  {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.6 — paid-tier drawing artefact pointer.\n\n`url` is an R2-signed URL; expiry is carried in `_meta.deliverables.expires_at`\non the envelope (not duplicated here). `layers` is DXF-only; PDF/SVG\ncallers omit it.",
        +                      "properties": {
        +                        "drawing_type": {
        +                          "enum": [
        +                            "section",
        +                            "plan",
        +                            "elevation",
        +                            "isometric",
        +                            "detail"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "format": {
        +                          "enum": [
        +                            "DXF",
        +                            "PDF",
        +                            "SVG"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "layers": {
        +                          "anyOf": [
        +                            {
        +                              "items": {
        +                                "type": "string"
        +                              },
        +                              "type": "array"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ],
        +                          "default": null
        +                        },
        +                        "scale": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "sheet_size": {
        +                          "enum": [
        +                            "A1",
        +                            "A2",
        +                            "A3",
        +                            "A4"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "url": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "drawing_type",
        +                        "format",
        +                        "url",
        +                        "sheet_size",
        +                        "scale"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "parameters_used": {
        +                "additionalProperties": false,
        +                "description": "Schema § 1.2 — the parameter snapshot the engine actually used.\n\nSplits user-supplied values from engine defaults so customers can see\nwhich numbers came from them and which the engine filled in. Every\ndefaulted parameter SHOULD have a corresponding entry in `assumptions`\n— the bridge layer enforces this when wrapping engine output.",
        +                "properties": {
        +                  "assumptions": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "engine_defaults": {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  "user_supplied": {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  }
        +                },
        +                "type": "object"
        +              },
        +              "standard": {
        +                "enum": [
        +                  "CESMM4",
        +                  "NRM2",
        +                  "SMM7",
        +                  "MMHW"
        +                ],
        +                "type": "string"
        +              },
        +              "text_summary": {
        +                "maxLength": 2000,
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "totals_summary": {
        +                "additionalProperties": false,
        +                "description": "Schema § 1.4 — totals_summary as a typed wrapper around the free-form dict.\n\nWire shape is a flat object (`{\"concrete_m3\": {...}, \"rebar_t\": {...}}`).\nWe model it as `RootModel`-equivalent via `model_config(extra=\"allow\")`\n+ a single `__root__`-style `entries` dict. Pydantic v2 recommends\n`RootModel` for free-form roots; using a wrapper class keeps the import\nsurface uniform with the rest of this module.",
        +                "properties": {
        +                  "entries": {
        +                    "additionalProperties": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.4 — single material/work-class total entry.",
        +                      "properties": {
        +                        "quantity": {
        +                          "minimum": 0,
        +                          "type": "number"
        +                        },
        +                        "unit": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "quantity",
        +                        "unit"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "object"
        +                  }
        +                },
        +                "type": "object"
        +              },
        +              "warnings": {
        +                "items": {
        +                  "additionalProperties": false,
        +                  "description": "Schema § 1.8 — a non-fatal geometry advisory (56th-fire T2).\n\nThe wire projection of the engine's `core.GeometryWarning`. Advisory only:\na warning NEVER changes a measured quantity — it flags geometry that is\nvalid but likely a mistake (e.g. a stale dependent-height default). Present\non BOTH tiers — a correctness/safety signal, not a paid feature.",
        +                  "properties": {
        +                    "affected_params": {
        +                      "items": {
        +                        "type": "string"
        +                      },
        +                      "type": "array"
        +                    },
        +                    "code": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "detail": {
        +                      "additionalProperties": {
        +                        "type": "number"
        +                      },
        +                      "type": "object"
        +                    },
        +                    "message": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "severity": {
        +                      "enum": [
        +                        "info",
        +                        "advisory",
        +                        "caution"
        +                      ],
        +                      "type": "string"
        +                    }
        +                  },
        +                  "required": [
        +                    "code",
        +                    "severity",
        +                    "message"
        +                  ],
        +                  "type": "object"
        +                },
        +                "type": "array"
        +              }
        +            },
        +            "required": [
        +              "assembly_slug",
        +              "standard",
        +              "parameters_used",
        +              "boq_rows",
        +              "totals_summary",
        +              "text_summary"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      },
        +      "error": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        +            "properties": {
        +              "code": {
        +                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        +                "enum": [
        +                  "RATE_LIMIT_EXCEEDED",
        +                  "TIER_INSUFFICIENT",
        +                  "INVALID_INPUT",
        +                  "SCHEMA_VERSION_MISMATCH",
        +                  "SCHEMA_INVARIANT_VIOLATION",
        +                  "UPSTREAM_TIMEOUT",
        +                  "BACKEND_FAILURE",
        +                  "IP_BLOCKED",
        +                  "RESOURCE_NOT_FOUND",
        +                  "RENDER_FAILURE",
        +                  "OCR_LOW_CONFIDENCE",
        +                  "MANUAL_REVIEW_REQUIRED",
        +                  "ACCEPTANCE_REQUIRED",
        +                  "INVALID_TOKEN"
        +                ],
        +                "type": "string"
        +              },
        +              "details": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "message": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "recoverable": {
        +                "type": "boolean"
        +              },
        +              "retry_after_seconds": {
        +                "anyOf": [
        +                  {
        +                    "minimum": 0,
        +                    "type": "integer"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              }
        +            },
        +            "required": [
        +              "code",
        +              "message",
        +              "recoverable"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      }
        +    },
        +    "required": [
        +      "_meta"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "_meta": {
        +        "additionalProperties": false,
        +        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        +        "properties": {
        +          "deliverables": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        +                "properties": {
        +                  "docx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "dxf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "expires_at": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  },
        +                  "pdf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "xlsx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "expires_at"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "document_id": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "issued_at": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "rate_limit_remaining": {
        +            "anyOf": [
        +              {
        +                "minimum": 0,
        +                "type": "integer"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "request_id": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "schema_version": {
        +            "const": "1.0.0",
        +            "default": "1.0.0",
        +            "type": "string"
        +          },
        +          "scope_boundary": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        +                "properties": {
        +                  "not_in_scope": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "produced": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "recommended_companions": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "type": "string"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "produced",
        +                  "not_in_scope"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tier": {
        +            "enum": [
        +              "free",
        +              "paid"
        +            ],
        +            "type": "string"
        +          },
        +          "tier_upgrade": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        +                "properties": {
        +                  "available_tiers": {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        +                      "properties": {
        +                        "billing": {
        +                          "enum": [
        +                            "one_off",
        +                            "monthly",
        +                            "annual"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "currency": {
        +                          "enum": [
        +                            "GBP",
        +                            "SGD",
        +                            "EUR",
        +                            "USD",
        +                            "CAD",
        +                            "AUD",
        +                            "NZD",
        +                            "MYR"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "display_name": {
        +                          "type": "string"
        +                        },
        +                        "price_local": {
        +                          "type": "number"
        +                        },
        +                        "tier_slug": {
        +                          "enum": [
        +                            "7_day_pass",
        +                            "solo",
        +                            "studio",
        +                            "practice"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "unlock_summary": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "tier_slug",
        +                        "display_name",
        +                        "price_local",
        +                        "currency",
        +                        "billing",
        +                        "unlock_summary"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "current_tier": {
        +                    "const": "free",
        +                    "default": "free",
        +                    "type": "string"
        +                  },
        +                  "pass_credit": {
        +                    "anyOf": [
        +                      {
        +                        "additionalProperties": false,
        +                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        +                        "properties": {
        +                          "amount_local": {
        +                            "type": "number"
        +                          },
        +                          "applies_to": {
        +                            "const": "solo_first_month",
        +                            "default": "solo_first_month",
        +                            "type": "string"
        +                          },
        +                          "currency": {
        +                            "type": "string"
        +                          },
        +                          "redeemable_until": {
        +                            "type": "string"
        +                          }
        +                        },
        +                        "required": [
        +                          "amount_local",
        +                          "currency",
        +                          "redeemable_until"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "pricing_url": {
        +                    "default": "https://civilquants.com/pricing",
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "available_tiers"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tos_url": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "upgrade_hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "warranty_disclaimer": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          }
        +        },
        +        "required": [
        +          "request_id",
        +          "issued_at",
        +          "tier"
        +        ],
        +        "type": "object"
        +      },
        +      "data": {
        +        "default": null,
        +        "title": "Data"
        +      },
        +      "error": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        +            "properties": {
        +              "code": {
        +                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        +                "enum": [
        +                  "RATE_LIMIT_EXCEEDED",
        +                  "TIER_INSUFFICIENT",
        +                  "INVALID_INPUT",
        +                  "SCHEMA_VERSION_MISMATCH",
        +                  "SCHEMA_INVARIANT_VIOLATION",
        +                  "UPSTREAM_TIMEOUT",
        +                  "BACKEND_FAILURE",
        +                  "IP_BLOCKED",
        +                  "RESOURCE_NOT_FOUND",
        +                  "RENDER_FAILURE",
        +                  "OCR_LOW_CONFIDENCE",
        +                  "MANUAL_REVIEW_REQUIRED",
        +                  "ACCEPTANCE_REQUIRED",
        +                  "INVALID_TOKEN"
        +                ],
        +                "type": "string"
        +              },
        +              "details": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "message": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "recoverable": {
        +                "type": "boolean"
        +              },
        +              "retry_after_seconds": {
        +                "anyOf": [
        +                  {
        +                    "minimum": 0,
        +                    "type": "integer"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              }
        +            },
        +            "required": [
        +              "code",
        +              "message",
        +              "recoverable"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      }
        +    },
        +    "required": [
        +      "_meta"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedcompute_pipework_testing1 field changed
      • changedOutput schema / properties / result / anyOf
        Previous value: -[
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "_meta": {
        -        "additionalProperties": false,
        -        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        -        "properties": {
        -          "deliverables": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        -                "properties": {
        -                  "docx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "dxf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "expires_at": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  },
        -                  "pdf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "xlsx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "expires_at"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "document_id": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "issued_at": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "rate_limit_remaining": {
        -            "anyOf": [
        -              {
        -                "minimum": 0,
        -                "type": "integer"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "request_id": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "schema_version": {
        -            "const": "1.0.0",
        -            "default": "1.0.0",
        -            "type": "string"
        -          },
        -          "scope_boundary": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        -                "properties": {
        -                  "not_in_scope": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "produced": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "recommended_companions": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "type": "string"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "produced",
        -                  "not_in_scope"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tier": {
        -            "enum": [
        -              "free",
        -              "paid"
        -            ],
        -            "type": "string"
        -          },
        -          "tier_upgrade": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        -                "properties": {
        -                  "available_tiers": {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        -                      "properties": {
        -                        "billing": {
        -                          "enum": [
        -                            "one_off",
        -                            "monthly",
        -                            "annual"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "currency": {
        -                          "enum": [
        -                            "GBP",
        -                            "SGD",
        -                            "EUR",
        -                            "USD",
        -                            "CAD",
        -                            "AUD",
        -                            "NZD",
        -                            "MYR"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "display_name": {
        -                          "type": "string"
        -                        },
        -                        "price_local": {
        -                          "type": "number"
        -                        },
        -                        "tier_slug": {
        -                          "enum": [
        -                            "7_day_pass",
        -                            "solo",
        -                            "studio",
        -                            "practice"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "unlock_summary": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "tier_slug",
        -                        "display_name",
        -                        "price_local",
        -                        "currency",
        -                        "billing",
        -                        "unlock_summary"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "current_tier": {
        -                    "const": "free",
        -                    "default": "free",
        -                    "type": "string"
        -                  },
        -                  "pass_credit": {
        -                    "anyOf": [
        -                      {
        -                        "additionalProperties": false,
        -                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        -                        "properties": {
        -                          "amount_local": {
        -                            "type": "number"
        -                          },
        -                          "applies_to": {
        -                            "const": "solo_first_month",
        -                            "default": "solo_first_month",
        -                            "type": "string"
        -                          },
        -                          "currency": {
        -                            "type": "string"
        -                          },
        -                          "redeemable_until": {
        -                            "type": "string"
        -                          }
        -                        },
        -                        "required": [
        -                          "amount_local",
        -                          "currency",
        -                          "redeemable_until"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "pricing_url": {
        -                    "default": "https://civilquants.com/pricing",
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "available_tiers"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tos_url": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "upgrade_hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "warranty_disclaimer": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          }
        -        },
        -        "required": [
        -          "request_id",
        -          "issued_at",
        -          "tier"
        -        ],
        -        "type": "object"
        -      },
        -      "data": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Schema § 1.1 — the typed payload returned inside `MCPResponse[ComputeResult]`.\n\nFree-tier responses omit `drawings` (the downloadable CAD artefact\npointers — the paid differentiator); the bridge enforces this. The\n`audit_trail` and the inline `drawing` preview are present on BOTH tiers\n(V1 ALIGN / 60th-fire D + C). `text_summary` is bounded to 2000 chars —\nkeeps the LLM-facing summary token-cheap and forces longer narrative into\nBoQ row descriptions where it belongs. `warnings` is the non-fatal\ngeometry advisory list (both tiers).",
        -            "properties": {
        -              "assembly_slug": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "audit_trail": {
        -                "anyOf": [
        -                  {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.7 — paid-tier audit-trail entry.\n\nOne entry per BoQ row; `boq_row_index` ties to the row position in\n`ComputeResult.boq_rows`. `derivation` is the human-readable formula\nwalk-through; `formula` is the optional formal expression.",
        -                      "properties": {
        -                        "boq_row_index": {
        -                          "minimum": 0,
        -                          "type": "integer"
        -                        },
        -                        "derivation": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "formula": {
        -                          "anyOf": [
        -                            {
        -                              "type": "string"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ],
        -                          "default": null
        -                        },
        -                        "id": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "parameters_referenced": {
        -                          "items": {
        -                            "type": "string"
        -                          },
        -                          "type": "array"
        -                        }
        -                      },
        -                      "required": [
        -                        "id",
        -                        "boq_row_index",
        -                        "derivation"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "boq_rows": {
        -                "items": {
        -                  "additionalProperties": false,
        -                  "description": "Schema § 1.3 — a single bill row in the requested standard's format.\n\n`description` is the non-verbatim functional description per spec § 13.9 /\n§ 15 invariant — NEVER reproduces a standard's verbatim clause text.\n`rate` / `amount` ship null because rates are commodity data the customer\nowns; the engine's job is the measurement, not the pricing.",
        -                  "properties": {
        -                    "amount": {
        -                      "anyOf": [
        -                        {
        -                          "type": "number"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "attribution": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "audit_id": {
        -                      "anyOf": [
        -                        {
        -                          "type": "string"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "description": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "quantity": {
        -                      "minimum": 0,
        -                      "type": "number"
        -                    },
        -                    "rate": {
        -                      "anyOf": [
        -                        {
        -                          "type": "number"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "unit": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "work_section": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    }
        -                  },
        -                  "required": [
        -                    "work_section",
        -                    "description",
        -                    "quantity",
        -                    "unit",
        -                    "attribution"
        -                  ],
        -                  "type": "object"
        -                },
        -                "type": "array"
        -              },
        -              "drawing": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": false,
        -                    "description": "Schema § 1.6a — inline server-rendered SVG preview of the geometry.\n\nThe MCP mirror of the web ``/compute`` response's ``drawing`` field\n(``api.schemas.compute.DrawingRef``): the same on-screen dimensioned\ndrawing both tiers see in the workspace, surfaced on the MCP compute\nresponse so a chat client can render it inline (60th-fire item C). This\nis the on-screen preview — present on BOTH tiers per the free/paid\nboundary; the downloadable CAD artefacts (DXF / dimensioned PDF) remain\nthe paid differentiator via the export tools.\n\nDefined here rather than importing ``DrawingRef`` because the web\n``schemas`` package imports back into this module (``schemas.render``),\nso reusing it would create an import cycle — the MCP wire contract keeps\nits own copy, the same pattern as ``BoQRow`` / ``DrawingReference``.",
        -                    "properties": {
        -                      "entity_count": {
        -                        "minimum": 0,
        -                        "type": "integer"
        -                      },
        -                      "svg_b64": {
        -                        "minLength": 1,
        -                        "type": "string"
        -                      },
        -                      "unit_of_drawing": {
        -                        "const": "m",
        -                        "default": "m",
        -                        "type": "string"
        -                      },
        -                      "viewbox_height": {
        -                        "exclusiveMinimum": 0,
        -                        "type": "number"
        -                      },
        -                      "viewbox_width": {
        -                        "exclusiveMinimum": 0,
        -                        "type": "number"
        -                      },
        -                      "viewbox_x": {
        -                        "type": "number"
        -                      },
        -                      "viewbox_y": {
        -                        "type": "number"
        -                      }
        -                    },
        -                    "required": [
        -                      "svg_b64",
        -                      "viewbox_x",
        -                      "viewbox_y",
        -                      "viewbox_width",
        -                      "viewbox_height",
        -                      "entity_count"
        -                    ],
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "drawings": {
        -                "anyOf": [
        -                  {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.6 — paid-tier drawing artefact pointer.\n\n`url` is an R2-signed URL; expiry is carried in `_meta.deliverables.expires_at`\non the envelope (not duplicated here). `layers` is DXF-only; PDF/SVG\ncallers omit it.",
        -                      "properties": {
        -                        "drawing_type": {
        -                          "enum": [
        -                            "section",
        -                            "plan",
        -                            "elevation",
        -                            "isometric",
        -                            "detail"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "format": {
        -                          "enum": [
        -                            "DXF",
        -                            "PDF",
        -                            "SVG"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "layers": {
        -                          "anyOf": [
        -                            {
        -                              "items": {
        -                                "type": "string"
        -                              },
        -                              "type": "array"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ],
        -                          "default": null
        -                        },
        -                        "scale": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "sheet_size": {
        -                          "enum": [
        -                            "A1",
        -                            "A2",
        -                            "A3",
        -                            "A4"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "url": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "drawing_type",
        -                        "format",
        -                        "url",
        -                        "sheet_size",
        -                        "scale"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "parameters_used": {
        -                "additionalProperties": false,
        -                "description": "Schema § 1.2 — the parameter snapshot the engine actually used.\n\nSplits user-supplied values from engine defaults so customers can see\nwhich numbers came from them and which the engine filled in. Every\ndefaulted parameter SHOULD have a corresponding entry in `assumptions`\n— the bridge layer enforces this when wrapping engine output.",
        -                "properties": {
        -                  "assumptions": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "engine_defaults": {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  "resolved_from_description": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "additionalProperties": false,
        -                          "description": "Schema § 1.2 — a parameter resolved by the forgiving-input layer.\n\nPopulated by the Track B-Forgiving Haiku-4.5 resolution pass; until that\nlayer lands, instances are constructed only by tests. `source` distinguishes\nthe resolution path so customers can audit which fields were inferred.",
        -                          "properties": {
        -                            "confidence": {
        -                              "anyOf": [
        -                                {
        -                                  "enum": [
        -                                    "high",
        -                                    "medium",
        -                                    "low"
        -                                  ],
        -                                  "type": "string"
        -                                },
        -                                {
        -                                  "type": "null"
        -                                }
        -                              ],
        -                              "default": null
        -                            },
        -                            "field_name": {
        -                              "minLength": 1,
        -                              "type": "string"
        -                            },
        -                            "resolved_value": {},
        -                            "source": {
        -                              "enum": [
        -                                "description_field",
        -                                "haiku_resolution",
        -                                "engine_default"
        -                              ],
        -                              "type": "string"
        -                            }
        -                          },
        -                          "required": [
        -                            "field_name",
        -                            "resolved_value",
        -                            "source"
        -                          ],
        -                          "type": "object"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "user_supplied": {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  }
        -                },
        -                "type": "object"
        -              },
        -              "standard": {
        -                "enum": [
        -                  "CESMM4",
        -                  "NRM2",
        -                  "SMM7",
        -                  "MMHW"
        -                ],
        -                "type": "string"
        -              },
        -              "text_summary": {
        -                "maxLength": 2000,
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "totals_summary": {
        -                "additionalProperties": false,
        -                "description": "Schema § 1.4 — totals_summary as a typed wrapper around the free-form dict.\n\nWire shape is a flat object (`{\"concrete_m3\": {...}, \"rebar_t\": {...}}`).\nWe model it as `RootModel`-equivalent via `model_config(extra=\"allow\")`\n+ a single `__root__`-style `entries` dict. Pydantic v2 recommends\n`RootModel` for free-form roots; using a wrapper class keeps the import\nsurface uniform with the rest of this module.",
        -                "properties": {
        -                  "entries": {
        -                    "additionalProperties": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.4 — single material/work-class total entry.",
        -                      "properties": {
        -                        "quantity": {
        -                          "minimum": 0,
        -                          "type": "number"
        -                        },
        -                        "unit": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "quantity",
        -                        "unit"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "object"
        -                  }
        -                },
        -                "type": "object"
        -              },
        -              "warnings": {
        -                "items": {
        -                  "additionalProperties": false,
        -                  "description": "Schema § 1.8 — a non-fatal geometry advisory (56th-fire T2).\n\nThe wire projection of the engine's `core.GeometryWarning`. Advisory only:\na warning NEVER changes a measured quantity — it flags geometry that is\nvalid but likely a mistake (e.g. a stale dependent-height default). Present\non BOTH tiers — a correctness/safety signal, not a paid feature.",
        -                  "properties": {
        -                    "affected_params": {
        -                      "items": {
        -                        "type": "string"
        -                      },
        -                      "type": "array"
        -                    },
        -                    "code": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "detail": {
        -                      "additionalProperties": {
        -                        "type": "number"
        -                      },
        -                      "type": "object"
        -                    },
        -                    "message": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "severity": {
        -                      "enum": [
        -                        "info",
        -                        "advisory",
        -                        "caution"
        -                      ],
        -                      "type": "string"
        -                    }
        -                  },
        -                  "required": [
        -                    "code",
        -                    "severity",
        -                    "message"
        -                  ],
        -                  "type": "object"
        -                },
        -                "type": "array"
        -              }
        -            },
        -            "required": [
        -              "assembly_slug",
        -              "standard",
        -              "parameters_used",
        -              "boq_rows",
        -              "totals_summary",
        -              "text_summary"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      },
        -      "error": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        -            "properties": {
        -              "code": {
        -                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        -                "enum": [
        -                  "RATE_LIMIT_EXCEEDED",
        -                  "TIER_INSUFFICIENT",
        -                  "INVALID_INPUT",
        -                  "SCHEMA_VERSION_MISMATCH",
        -                  "SCHEMA_INVARIANT_VIOLATION",
        -                  "UPSTREAM_TIMEOUT",
        -                  "BACKEND_FAILURE",
        -                  "IP_BLOCKED",
        -                  "RESOURCE_NOT_FOUND",
        -                  "RENDER_FAILURE",
        -                  "OCR_LOW_CONFIDENCE",
        -                  "MANUAL_REVIEW_REQUIRED",
        -                  "ACCEPTANCE_REQUIRED",
        -                  "INVALID_TOKEN"
        -                ],
        -                "type": "string"
        -              },
        -              "details": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "message": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "recoverable": {
        -                "type": "boolean"
        -              },
        -              "retry_after_seconds": {
        -                "anyOf": [
        -                  {
        -                    "minimum": 0,
        -                    "type": "integer"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              }
        -            },
        -            "required": [
        -              "code",
        -              "message",
        -              "recoverable"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      }
        -    },
        -    "required": [
        -      "_meta"
        -    ],
        -    "type": "object"
        -  },
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "_meta": {
        -        "additionalProperties": false,
        -        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        -        "properties": {
        -          "deliverables": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        -                "properties": {
        -                  "docx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "dxf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "expires_at": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  },
        -                  "pdf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "xlsx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "expires_at"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "document_id": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "issued_at": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "rate_limit_remaining": {
        -            "anyOf": [
        -              {
        -                "minimum": 0,
        -                "type": "integer"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "request_id": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "schema_version": {
        -            "const": "1.0.0",
        -            "default": "1.0.0",
        -            "type": "string"
        -          },
        -          "scope_boundary": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        -                "properties": {
        -                  "not_in_scope": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "produced": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "recommended_companions": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "type": "string"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "produced",
        -                  "not_in_scope"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tier": {
        -            "enum": [
        -              "free",
        -              "paid"
        -            ],
        -            "type": "string"
        -          },
        -          "tier_upgrade": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        -                "properties": {
        -                  "available_tiers": {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        -                      "properties": {
        -                        "billing": {
        -                          "enum": [
        -                            "one_off",
        -                            "monthly",
        -                            "annual"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "currency": {
        -                          "enum": [
        -                            "GBP",
        -                            "SGD",
        -                            "EUR",
        -                            "USD",
        -                            "CAD",
        -                            "AUD",
        -                            "NZD",
        -                            "MYR"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "display_name": {
        -                          "type": "string"
        -                        },
        -                        "price_local": {
        -                          "type": "number"
        -                        },
        -                        "tier_slug": {
        -                          "enum": [
        -                            "7_day_pass",
        -                            "solo",
        -                            "studio",
        -                            "practice"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "unlock_summary": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "tier_slug",
        -                        "display_name",
        -                        "price_local",
        -                        "currency",
        -                        "billing",
        -                        "unlock_summary"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "current_tier": {
        -                    "const": "free",
        -                    "default": "free",
        -                    "type": "string"
        -                  },
        -                  "pass_credit": {
        -                    "anyOf": [
        -                      {
        -                        "additionalProperties": false,
        -                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        -                        "properties": {
        -                          "amount_local": {
        -                            "type": "number"
        -                          },
        -                          "applies_to": {
        -                            "const": "solo_first_month",
        -                            "default": "solo_first_month",
        -                            "type": "string"
        -                          },
        -                          "currency": {
        -                            "type": "string"
        -                          },
        -                          "redeemable_until": {
        -                            "type": "string"
        -                          }
        -                        },
        -                        "required": [
        -                          "amount_local",
        -                          "currency",
        -                          "redeemable_until"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "pricing_url": {
        -                    "default": "https://civilquants.com/pricing",
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "available_tiers"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tos_url": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "upgrade_hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "warranty_disclaimer": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          }
        -        },
        -        "required": [
        -          "request_id",
        -          "issued_at",
        -          "tier"
        -        ],
        -        "type": "object"
        -      },
        -      "data": {
        -        "default": null,
        -        "title": "Data"
        -      },
        -      "error": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        -            "properties": {
        -              "code": {
        -                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        -                "enum": [
        -                  "RATE_LIMIT_EXCEEDED",
        -                  "TIER_INSUFFICIENT",
        -                  "INVALID_INPUT",
        -                  "SCHEMA_VERSION_MISMATCH",
        -                  "SCHEMA_INVARIANT_VIOLATION",
        -                  "UPSTREAM_TIMEOUT",
        -                  "BACKEND_FAILURE",
        -                  "IP_BLOCKED",
        -                  "RESOURCE_NOT_FOUND",
        -                  "RENDER_FAILURE",
        -                  "OCR_LOW_CONFIDENCE",
        -                  "MANUAL_REVIEW_REQUIRED",
        -                  "ACCEPTANCE_REQUIRED",
        -                  "INVALID_TOKEN"
        -                ],
        -                "type": "string"
        -              },
        -              "details": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "message": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "recoverable": {
        -                "type": "boolean"
        -              },
        -              "retry_after_seconds": {
        -                "anyOf": [
        -                  {
        -                    "minimum": 0,
        -                    "type": "integer"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              }
        -            },
        -            "required": [
        -              "code",
        -              "message",
        -              "recoverable"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      }
        -    },
        -    "required": [
        -      "_meta"
        -    ],
        -    "type": "object"
        -  }
        -]New value: +[
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "_meta": {
        +        "additionalProperties": false,
        +        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        +        "properties": {
        +          "deliverables": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        +                "properties": {
        +                  "docx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "dxf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "expires_at": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  },
        +                  "pdf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "xlsx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "expires_at"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "document_id": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "issued_at": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "rate_limit_remaining": {
        +            "anyOf": [
        +              {
        +                "minimum": 0,
        +                "type": "integer"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "request_id": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "schema_version": {
        +            "const": "1.0.0",
        +            "default": "1.0.0",
        +            "type": "string"
        +          },
        +          "scope_boundary": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        +                "properties": {
        +                  "not_in_scope": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "produced": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "recommended_companions": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "type": "string"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "produced",
        +                  "not_in_scope"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tier": {
        +            "enum": [
        +              "free",
        +              "paid"
        +            ],
        +            "type": "string"
        +          },
        +          "tier_upgrade": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        +                "properties": {
        +                  "available_tiers": {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        +                      "properties": {
        +                        "billing": {
        +                          "enum": [
        +                            "one_off",
        +                            "monthly",
        +                            "annual"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "currency": {
        +                          "enum": [
        +                            "GBP",
        +                            "SGD",
        +                            "EUR",
        +                            "USD",
        +                            "CAD",
        +                            "AUD",
        +                            "NZD",
        +                            "MYR"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "display_name": {
        +                          "type": "string"
        +                        },
        +                        "price_local": {
        +                          "type": "number"
        +                        },
        +                        "tier_slug": {
        +                          "enum": [
        +                            "7_day_pass",
        +                            "solo",
        +                            "studio",
        +                            "practice"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "unlock_summary": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "tier_slug",
        +                        "display_name",
        +                        "price_local",
        +                        "currency",
        +                        "billing",
        +                        "unlock_summary"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "current_tier": {
        +                    "const": "free",
        +                    "default": "free",
        +                    "type": "string"
        +                  },
        +                  "pass_credit": {
        +                    "anyOf": [
        +                      {
        +                        "additionalProperties": false,
        +                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        +                        "properties": {
        +                          "amount_local": {
        +                            "type": "number"
        +                          },
        +                          "applies_to": {
        +                            "const": "solo_first_month",
        +                            "default": "solo_first_month",
        +                            "type": "string"
        +                          },
        +                          "currency": {
        +                            "type": "string"
        +                          },
        +                          "redeemable_until": {
        +                            "type": "string"
        +                          }
        +                        },
        +                        "required": [
        +                          "amount_local",
        +                          "currency",
        +                          "redeemable_until"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "pricing_url": {
        +                    "default": "https://civilquants.com/pricing",
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "available_tiers"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tos_url": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "upgrade_hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "warranty_disclaimer": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          }
        +        },
        +        "required": [
        +          "request_id",
        +          "issued_at",
        +          "tier"
        +        ],
        +        "type": "object"
        +      },
        +      "data": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Schema § 1.1 — the typed payload returned inside `MCPResponse[ComputeResult]`.\n\nFree-tier responses omit `drawings` (the downloadable CAD artefact\npointers — the paid differentiator); the bridge enforces this. The\n`audit_trail` and the inline `drawing` preview are present on BOTH tiers\n(V1 ALIGN / 60th-fire D + C). `text_summary` is bounded to 2000 chars —\nkeeps the LLM-facing summary token-cheap and forces longer narrative into\nBoQ row descriptions where it belongs. `warnings` is the non-fatal\ngeometry advisory list (both tiers).",
        +            "properties": {
        +              "assembly_slug": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "audit_trail": {
        +                "anyOf": [
        +                  {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.7 — paid-tier audit-trail entry.\n\nOne entry per BoQ row; `boq_row_index` ties to the row position in\n`ComputeResult.boq_rows`. `derivation` is the human-readable formula\nwalk-through; `formula` is the optional formal expression.",
        +                      "properties": {
        +                        "boq_row_index": {
        +                          "minimum": 0,
        +                          "type": "integer"
        +                        },
        +                        "derivation": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "formula": {
        +                          "anyOf": [
        +                            {
        +                              "type": "string"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ],
        +                          "default": null
        +                        },
        +                        "id": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "parameters_referenced": {
        +                          "items": {
        +                            "type": "string"
        +                          },
        +                          "type": "array"
        +                        }
        +                      },
        +                      "required": [
        +                        "id",
        +                        "boq_row_index",
        +                        "derivation"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "boq_rows": {
        +                "items": {
        +                  "additionalProperties": false,
        +                  "description": "Schema § 1.3 — a single bill row in the requested standard's format.\n\n`description` is the non-verbatim functional description per spec § 13.9 /\n§ 15 invariant — NEVER reproduces a standard's verbatim clause text.\n`rate` / `amount` ship null because rates are commodity data the customer\nowns; the engine's job is the measurement, not the pricing.",
        +                  "properties": {
        +                    "amount": {
        +                      "anyOf": [
        +                        {
        +                          "type": "number"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "attribution": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "audit_id": {
        +                      "anyOf": [
        +                        {
        +                          "type": "string"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "description": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "quantity": {
        +                      "minimum": 0,
        +                      "type": "number"
        +                    },
        +                    "rate": {
        +                      "anyOf": [
        +                        {
        +                          "type": "number"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "unit": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "work_section": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    }
        +                  },
        +                  "required": [
        +                    "work_section",
        +                    "description",
        +                    "quantity",
        +                    "unit",
        +                    "attribution"
        +                  ],
        +                  "type": "object"
        +                },
        +                "type": "array"
        +              },
        +              "drawing": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": false,
        +                    "description": "Schema § 1.6a — inline server-rendered SVG preview of the geometry.\n\nThe MCP mirror of the web ``/compute`` response's ``drawing`` field\n(``api.schemas.compute.DrawingRef``): the same on-screen dimensioned\ndrawing both tiers see in the workspace, surfaced on the MCP compute\nresponse so a chat client can render it inline (60th-fire item C). This\nis the on-screen preview — present on BOTH tiers per the free/paid\nboundary; the downloadable CAD artefacts (DXF / dimensioned PDF) remain\nthe paid differentiator via the export tools.\n\nDefined here rather than importing ``DrawingRef`` because the web\n``schemas`` package imports back into this module (``schemas.render``),\nso reusing it would create an import cycle — the MCP wire contract keeps\nits own copy, the same pattern as ``BoQRow`` / ``DrawingReference``.",
        +                    "properties": {
        +                      "entity_count": {
        +                        "minimum": 0,
        +                        "type": "integer"
        +                      },
        +                      "svg_b64": {
        +                        "minLength": 1,
        +                        "type": "string"
        +                      },
        +                      "unit_of_drawing": {
        +                        "const": "m",
        +                        "default": "m",
        +                        "type": "string"
        +                      },
        +                      "viewbox_height": {
        +                        "exclusiveMinimum": 0,
        +                        "type": "number"
        +                      },
        +                      "viewbox_width": {
        +                        "exclusiveMinimum": 0,
        +                        "type": "number"
        +                      },
        +                      "viewbox_x": {
        +                        "type": "number"
        +                      },
        +                      "viewbox_y": {
        +                        "type": "number"
        +                      }
        +                    },
        +                    "required": [
        +                      "svg_b64",
        +                      "viewbox_x",
        +                      "viewbox_y",
        +                      "viewbox_width",
        +                      "viewbox_height",
        +                      "entity_count"
        +                    ],
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "drawings": {
        +                "anyOf": [
        +                  {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.6 — paid-tier drawing artefact pointer.\n\n`url` is an R2-signed URL; expiry is carried in `_meta.deliverables.expires_at`\non the envelope (not duplicated here). `layers` is DXF-only; PDF/SVG\ncallers omit it.",
        +                      "properties": {
        +                        "drawing_type": {
        +                          "enum": [
        +                            "section",
        +                            "plan",
        +                            "elevation",
        +                            "isometric",
        +                            "detail"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "format": {
        +                          "enum": [
        +                            "DXF",
        +                            "PDF",
        +                            "SVG"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "layers": {
        +                          "anyOf": [
        +                            {
        +                              "items": {
        +                                "type": "string"
        +                              },
        +                              "type": "array"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ],
        +                          "default": null
        +                        },
        +                        "scale": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "sheet_size": {
        +                          "enum": [
        +                            "A1",
        +                            "A2",
        +                            "A3",
        +                            "A4"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "url": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "drawing_type",
        +                        "format",
        +                        "url",
        +                        "sheet_size",
        +                        "scale"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "parameters_used": {
        +                "additionalProperties": false,
        +                "description": "Schema § 1.2 — the parameter snapshot the engine actually used.\n\nSplits user-supplied values from engine defaults so customers can see\nwhich numbers came from them and which the engine filled in. Every\ndefaulted parameter SHOULD have a corresponding entry in `assumptions`\n— the bridge layer enforces this when wrapping engine output.",
        +                "properties": {
        +                  "assumptions": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "engine_defaults": {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  "user_supplied": {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  }
        +                },
        +                "type": "object"
        +              },
        +              "standard": {
        +                "enum": [
        +                  "CESMM4",
        +                  "NRM2",
        +                  "SMM7",
        +                  "MMHW"
        +                ],
        +                "type": "string"
        +              },
        +              "text_summary": {
        +                "maxLength": 2000,
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "totals_summary": {
        +                "additionalProperties": false,
        +                "description": "Schema § 1.4 — totals_summary as a typed wrapper around the free-form dict.\n\nWire shape is a flat object (`{\"concrete_m3\": {...}, \"rebar_t\": {...}}`).\nWe model it as `RootModel`-equivalent via `model_config(extra=\"allow\")`\n+ a single `__root__`-style `entries` dict. Pydantic v2 recommends\n`RootModel` for free-form roots; using a wrapper class keeps the import\nsurface uniform with the rest of this module.",
        +                "properties": {
        +                  "entries": {
        +                    "additionalProperties": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.4 — single material/work-class total entry.",
        +                      "properties": {
        +                        "quantity": {
        +                          "minimum": 0,
        +                          "type": "number"
        +                        },
        +                        "unit": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "quantity",
        +                        "unit"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "object"
        +                  }
        +                },
        +                "type": "object"
        +              },
        +              "warnings": {
        +                "items": {
        +                  "additionalProperties": false,
        +                  "description": "Schema § 1.8 — a non-fatal geometry advisory (56th-fire T2).\n\nThe wire projection of the engine's `core.GeometryWarning`. Advisory only:\na warning NEVER changes a measured quantity — it flags geometry that is\nvalid but likely a mistake (e.g. a stale dependent-height default). Present\non BOTH tiers — a correctness/safety signal, not a paid feature.",
        +                  "properties": {
        +                    "affected_params": {
        +                      "items": {
        +                        "type": "string"
        +                      },
        +                      "type": "array"
        +                    },
        +                    "code": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "detail": {
        +                      "additionalProperties": {
        +                        "type": "number"
        +                      },
        +                      "type": "object"
        +                    },
        +                    "message": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "severity": {
        +                      "enum": [
        +                        "info",
        +                        "advisory",
        +                        "caution"
        +                      ],
        +                      "type": "string"
        +                    }
        +                  },
        +                  "required": [
        +                    "code",
        +                    "severity",
        +                    "message"
        +                  ],
        +                  "type": "object"
        +                },
        +                "type": "array"
        +              }
        +            },
        +            "required": [
        +              "assembly_slug",
        +              "standard",
        +              "parameters_used",
        +              "boq_rows",
        +              "totals_summary",
        +              "text_summary"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      },
        +      "error": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        +            "properties": {
        +              "code": {
        +                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        +                "enum": [
        +                  "RATE_LIMIT_EXCEEDED",
        +                  "TIER_INSUFFICIENT",
        +                  "INVALID_INPUT",
        +                  "SCHEMA_VERSION_MISMATCH",
        +                  "SCHEMA_INVARIANT_VIOLATION",
        +                  "UPSTREAM_TIMEOUT",
        +                  "BACKEND_FAILURE",
        +                  "IP_BLOCKED",
        +                  "RESOURCE_NOT_FOUND",
        +                  "RENDER_FAILURE",
        +                  "OCR_LOW_CONFIDENCE",
        +                  "MANUAL_REVIEW_REQUIRED",
        +                  "ACCEPTANCE_REQUIRED",
        +                  "INVALID_TOKEN"
        +                ],
        +                "type": "string"
        +              },
        +              "details": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "message": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "recoverable": {
        +                "type": "boolean"
        +              },
        +              "retry_after_seconds": {
        +                "anyOf": [
        +                  {
        +                    "minimum": 0,
        +                    "type": "integer"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              }
        +            },
        +            "required": [
        +              "code",
        +              "message",
        +              "recoverable"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      }
        +    },
        +    "required": [
        +      "_meta"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "_meta": {
        +        "additionalProperties": false,
        +        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        +        "properties": {
        +          "deliverables": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        +                "properties": {
        +                  "docx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "dxf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "expires_at": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  },
        +                  "pdf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "xlsx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "expires_at"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "document_id": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "issued_at": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "rate_limit_remaining": {
        +            "anyOf": [
        +              {
        +                "minimum": 0,
        +                "type": "integer"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "request_id": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "schema_version": {
        +            "const": "1.0.0",
        +            "default": "1.0.0",
        +            "type": "string"
        +          },
        +          "scope_boundary": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        +                "properties": {
        +                  "not_in_scope": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "produced": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "recommended_companions": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "type": "string"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "produced",
        +                  "not_in_scope"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tier": {
        +            "enum": [
        +              "free",
        +              "paid"
        +            ],
        +            "type": "string"
        +          },
        +          "tier_upgrade": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        +                "properties": {
        +                  "available_tiers": {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        +                      "properties": {
        +                        "billing": {
        +                          "enum": [
        +                            "one_off",
        +                            "monthly",
        +                            "annual"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "currency": {
        +                          "enum": [
        +                            "GBP",
        +                            "SGD",
        +                            "EUR",
        +                            "USD",
        +                            "CAD",
        +                            "AUD",
        +                            "NZD",
        +                            "MYR"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "display_name": {
        +                          "type": "string"
        +                        },
        +                        "price_local": {
        +                          "type": "number"
        +                        },
        +                        "tier_slug": {
        +                          "enum": [
        +                            "7_day_pass",
        +                            "solo",
        +                            "studio",
        +                            "practice"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "unlock_summary": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "tier_slug",
        +                        "display_name",
        +                        "price_local",
        +                        "currency",
        +                        "billing",
        +                        "unlock_summary"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "current_tier": {
        +                    "const": "free",
        +                    "default": "free",
        +                    "type": "string"
        +                  },
        +                  "pass_credit": {
        +                    "anyOf": [
        +                      {
        +                        "additionalProperties": false,
        +                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        +                        "properties": {
        +                          "amount_local": {
        +                            "type": "number"
        +                          },
        +                          "applies_to": {
        +                            "const": "solo_first_month",
        +                            "default": "solo_first_month",
        +                            "type": "string"
        +                          },
        +                          "currency": {
        +                            "type": "string"
        +                          },
        +                          "redeemable_until": {
        +                            "type": "string"
        +                          }
        +                        },
        +                        "required": [
        +                          "amount_local",
        +                          "currency",
        +                          "redeemable_until"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "pricing_url": {
        +                    "default": "https://civilquants.com/pricing",
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "available_tiers"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tos_url": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "upgrade_hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "warranty_disclaimer": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          }
        +        },
        +        "required": [
        +          "request_id",
        +          "issued_at",
        +          "tier"
        +        ],
        +        "type": "object"
        +      },
        +      "data": {
        +        "default": null,
        +        "title": "Data"
        +      },
        +      "error": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        +            "properties": {
        +              "code": {
        +                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        +                "enum": [
        +                  "RATE_LIMIT_EXCEEDED",
        +                  "TIER_INSUFFICIENT",
        +                  "INVALID_INPUT",
        +                  "SCHEMA_VERSION_MISMATCH",
        +                  "SCHEMA_INVARIANT_VIOLATION",
        +                  "UPSTREAM_TIMEOUT",
        +                  "BACKEND_FAILURE",
        +                  "IP_BLOCKED",
        +                  "RESOURCE_NOT_FOUND",
        +                  "RENDER_FAILURE",
        +                  "OCR_LOW_CONFIDENCE",
        +                  "MANUAL_REVIEW_REQUIRED",
        +                  "ACCEPTANCE_REQUIRED",
        +                  "INVALID_TOKEN"
        +                ],
        +                "type": "string"
        +              },
        +              "details": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "message": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "recoverable": {
        +                "type": "boolean"
        +              },
        +              "retry_after_seconds": {
        +                "anyOf": [
        +                  {
        +                    "minimum": 0,
        +                    "type": "integer"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              }
        +            },
        +            "required": [
        +              "code",
        +              "message",
        +              "recoverable"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      }
        +    },
        +    "required": [
        +      "_meta"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedcompute_reinforced_soil_wall1 field changed
      • changedOutput schema / properties / result / anyOf
        Previous value: -[
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "_meta": {
        -        "additionalProperties": false,
        -        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        -        "properties": {
        -          "deliverables": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        -                "properties": {
        -                  "docx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "dxf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "expires_at": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  },
        -                  "pdf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "xlsx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "expires_at"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "document_id": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "issued_at": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "rate_limit_remaining": {
        -            "anyOf": [
        -              {
        -                "minimum": 0,
        -                "type": "integer"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "request_id": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "schema_version": {
        -            "const": "1.0.0",
        -            "default": "1.0.0",
        -            "type": "string"
        -          },
        -          "scope_boundary": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        -                "properties": {
        -                  "not_in_scope": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "produced": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "recommended_companions": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "type": "string"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "produced",
        -                  "not_in_scope"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tier": {
        -            "enum": [
        -              "free",
        -              "paid"
        -            ],
        -            "type": "string"
        -          },
        -          "tier_upgrade": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        -                "properties": {
        -                  "available_tiers": {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        -                      "properties": {
        -                        "billing": {
        -                          "enum": [
        -                            "one_off",
        -                            "monthly",
        -                            "annual"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "currency": {
        -                          "enum": [
        -                            "GBP",
        -                            "SGD",
        -                            "EUR",
        -                            "USD",
        -                            "CAD",
        -                            "AUD",
        -                            "NZD",
        -                            "MYR"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "display_name": {
        -                          "type": "string"
        -                        },
        -                        "price_local": {
        -                          "type": "number"
        -                        },
        -                        "tier_slug": {
        -                          "enum": [
        -                            "7_day_pass",
        -                            "solo",
        -                            "studio",
        -                            "practice"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "unlock_summary": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "tier_slug",
        -                        "display_name",
        -                        "price_local",
        -                        "currency",
        -                        "billing",
        -                        "unlock_summary"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "current_tier": {
        -                    "const": "free",
        -                    "default": "free",
        -                    "type": "string"
        -                  },
        -                  "pass_credit": {
        -                    "anyOf": [
        -                      {
        -                        "additionalProperties": false,
        -                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        -                        "properties": {
        -                          "amount_local": {
        -                            "type": "number"
        -                          },
        -                          "applies_to": {
        -                            "const": "solo_first_month",
        -                            "default": "solo_first_month",
        -                            "type": "string"
        -                          },
        -                          "currency": {
        -                            "type": "string"
        -                          },
        -                          "redeemable_until": {
        -                            "type": "string"
        -                          }
        -                        },
        -                        "required": [
        -                          "amount_local",
        -                          "currency",
        -                          "redeemable_until"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "pricing_url": {
        -                    "default": "https://civilquants.com/pricing",
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "available_tiers"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tos_url": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "upgrade_hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "warranty_disclaimer": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          }
        -        },
        -        "required": [
        -          "request_id",
        -          "issued_at",
        -          "tier"
        -        ],
        -        "type": "object"
        -      },
        -      "data": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Schema § 1.1 — the typed payload returned inside `MCPResponse[ComputeResult]`.\n\nFree-tier responses omit `drawings` (the downloadable CAD artefact\npointers — the paid differentiator); the bridge enforces this. The\n`audit_trail` and the inline `drawing` preview are present on BOTH tiers\n(V1 ALIGN / 60th-fire D + C). `text_summary` is bounded to 2000 chars —\nkeeps the LLM-facing summary token-cheap and forces longer narrative into\nBoQ row descriptions where it belongs. `warnings` is the non-fatal\ngeometry advisory list (both tiers).",
        -            "properties": {
        -              "assembly_slug": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "audit_trail": {
        -                "anyOf": [
        -                  {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.7 — paid-tier audit-trail entry.\n\nOne entry per BoQ row; `boq_row_index` ties to the row position in\n`ComputeResult.boq_rows`. `derivation` is the human-readable formula\nwalk-through; `formula` is the optional formal expression.",
        -                      "properties": {
        -                        "boq_row_index": {
        -                          "minimum": 0,
        -                          "type": "integer"
        -                        },
        -                        "derivation": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "formula": {
        -                          "anyOf": [
        -                            {
        -                              "type": "string"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ],
        -                          "default": null
        -                        },
        -                        "id": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "parameters_referenced": {
        -                          "items": {
        -                            "type": "string"
        -                          },
        -                          "type": "array"
        -                        }
        -                      },
        -                      "required": [
        -                        "id",
        -                        "boq_row_index",
        -                        "derivation"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "boq_rows": {
        -                "items": {
        -                  "additionalProperties": false,
        -                  "description": "Schema § 1.3 — a single bill row in the requested standard's format.\n\n`description` is the non-verbatim functional description per spec § 13.9 /\n§ 15 invariant — NEVER reproduces a standard's verbatim clause text.\n`rate` / `amount` ship null because rates are commodity data the customer\nowns; the engine's job is the measurement, not the pricing.",
        -                  "properties": {
        -                    "amount": {
        -                      "anyOf": [
        -                        {
        -                          "type": "number"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "attribution": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "audit_id": {
        -                      "anyOf": [
        -                        {
        -                          "type": "string"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "description": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "quantity": {
        -                      "minimum": 0,
        -                      "type": "number"
        -                    },
        -                    "rate": {
        -                      "anyOf": [
        -                        {
        -                          "type": "number"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "unit": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "work_section": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    }
        -                  },
        -                  "required": [
        -                    "work_section",
        -                    "description",
        -                    "quantity",
        -                    "unit",
        -                    "attribution"
        -                  ],
        -                  "type": "object"
        -                },
        -                "type": "array"
        -              },
        -              "drawing": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": false,
        -                    "description": "Schema § 1.6a — inline server-rendered SVG preview of the geometry.\n\nThe MCP mirror of the web ``/compute`` response's ``drawing`` field\n(``api.schemas.compute.DrawingRef``): the same on-screen dimensioned\ndrawing both tiers see in the workspace, surfaced on the MCP compute\nresponse so a chat client can render it inline (60th-fire item C). This\nis the on-screen preview — present on BOTH tiers per the free/paid\nboundary; the downloadable CAD artefacts (DXF / dimensioned PDF) remain\nthe paid differentiator via the export tools.\n\nDefined here rather than importing ``DrawingRef`` because the web\n``schemas`` package imports back into this module (``schemas.render``),\nso reusing it would create an import cycle — the MCP wire contract keeps\nits own copy, the same pattern as ``BoQRow`` / ``DrawingReference``.",
        -                    "properties": {
        -                      "entity_count": {
        -                        "minimum": 0,
        -                        "type": "integer"
        -                      },
        -                      "svg_b64": {
        -                        "minLength": 1,
        -                        "type": "string"
        -                      },
        -                      "unit_of_drawing": {
        -                        "const": "m",
        -                        "default": "m",
        -                        "type": "string"
        -                      },
        -                      "viewbox_height": {
        -                        "exclusiveMinimum": 0,
        -                        "type": "number"
        -                      },
        -                      "viewbox_width": {
        -                        "exclusiveMinimum": 0,
        -                        "type": "number"
        -                      },
        -                      "viewbox_x": {
        -                        "type": "number"
        -                      },
        -                      "viewbox_y": {
        -                        "type": "number"
        -                      }
        -                    },
        -                    "required": [
        -                      "svg_b64",
        -                      "viewbox_x",
        -                      "viewbox_y",
        -                      "viewbox_width",
        -                      "viewbox_height",
        -                      "entity_count"
        -                    ],
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "drawings": {
        -                "anyOf": [
        -                  {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.6 — paid-tier drawing artefact pointer.\n\n`url` is an R2-signed URL; expiry is carried in `_meta.deliverables.expires_at`\non the envelope (not duplicated here). `layers` is DXF-only; PDF/SVG\ncallers omit it.",
        -                      "properties": {
        -                        "drawing_type": {
        -                          "enum": [
        -                            "section",
        -                            "plan",
        -                            "elevation",
        -                            "isometric",
        -                            "detail"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "format": {
        -                          "enum": [
        -                            "DXF",
        -                            "PDF",
        -                            "SVG"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "layers": {
        -                          "anyOf": [
        -                            {
        -                              "items": {
        -                                "type": "string"
        -                              },
        -                              "type": "array"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ],
        -                          "default": null
        -                        },
        -                        "scale": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "sheet_size": {
        -                          "enum": [
        -                            "A1",
        -                            "A2",
        -                            "A3",
        -                            "A4"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "url": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "drawing_type",
        -                        "format",
        -                        "url",
        -                        "sheet_size",
        -                        "scale"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "parameters_used": {
        -                "additionalProperties": false,
        -                "description": "Schema § 1.2 — the parameter snapshot the engine actually used.\n\nSplits user-supplied values from engine defaults so customers can see\nwhich numbers came from them and which the engine filled in. Every\ndefaulted parameter SHOULD have a corresponding entry in `assumptions`\n— the bridge layer enforces this when wrapping engine output.",
        -                "properties": {
        -                  "assumptions": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "engine_defaults": {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  "resolved_from_description": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "additionalProperties": false,
        -                          "description": "Schema § 1.2 — a parameter resolved by the forgiving-input layer.\n\nPopulated by the Track B-Forgiving Haiku-4.5 resolution pass; until that\nlayer lands, instances are constructed only by tests. `source` distinguishes\nthe resolution path so customers can audit which fields were inferred.",
        -                          "properties": {
        -                            "confidence": {
        -                              "anyOf": [
        -                                {
        -                                  "enum": [
        -                                    "high",
        -                                    "medium",
        -                                    "low"
        -                                  ],
        -                                  "type": "string"
        -                                },
        -                                {
        -                                  "type": "null"
        -                                }
        -                              ],
        -                              "default": null
        -                            },
        -                            "field_name": {
        -                              "minLength": 1,
        -                              "type": "string"
        -                            },
        -                            "resolved_value": {},
        -                            "source": {
        -                              "enum": [
        -                                "description_field",
        -                                "haiku_resolution",
        -                                "engine_default"
        -                              ],
        -                              "type": "string"
        -                            }
        -                          },
        -                          "required": [
        -                            "field_name",
        -                            "resolved_value",
        -                            "source"
        -                          ],
        -                          "type": "object"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "user_supplied": {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  }
        -                },
        -                "type": "object"
        -              },
        -              "standard": {
        -                "enum": [
        -                  "CESMM4",
        -                  "NRM2",
        -                  "SMM7",
        -                  "MMHW"
        -                ],
        -                "type": "string"
        -              },
        -              "text_summary": {
        -                "maxLength": 2000,
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "totals_summary": {
        -                "additionalProperties": false,
        -                "description": "Schema § 1.4 — totals_summary as a typed wrapper around the free-form dict.\n\nWire shape is a flat object (`{\"concrete_m3\": {...}, \"rebar_t\": {...}}`).\nWe model it as `RootModel`-equivalent via `model_config(extra=\"allow\")`\n+ a single `__root__`-style `entries` dict. Pydantic v2 recommends\n`RootModel` for free-form roots; using a wrapper class keeps the import\nsurface uniform with the rest of this module.",
        -                "properties": {
        -                  "entries": {
        -                    "additionalProperties": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.4 — single material/work-class total entry.",
        -                      "properties": {
        -                        "quantity": {
        -                          "minimum": 0,
        -                          "type": "number"
        -                        },
        -                        "unit": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "quantity",
        -                        "unit"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "object"
        -                  }
        -                },
        -                "type": "object"
        -              },
        -              "warnings": {
        -                "items": {
        -                  "additionalProperties": false,
        -                  "description": "Schema § 1.8 — a non-fatal geometry advisory (56th-fire T2).\n\nThe wire projection of the engine's `core.GeometryWarning`. Advisory only:\na warning NEVER changes a measured quantity — it flags geometry that is\nvalid but likely a mistake (e.g. a stale dependent-height default). Present\non BOTH tiers — a correctness/safety signal, not a paid feature.",
        -                  "properties": {
        -                    "affected_params": {
        -                      "items": {
        -                        "type": "string"
        -                      },
        -                      "type": "array"
        -                    },
        -                    "code": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "detail": {
        -                      "additionalProperties": {
        -                        "type": "number"
        -                      },
        -                      "type": "object"
        -                    },
        -                    "message": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "severity": {
        -                      "enum": [
        -                        "info",
        -                        "advisory",
        -                        "caution"
        -                      ],
        -                      "type": "string"
        -                    }
        -                  },
        -                  "required": [
        -                    "code",
        -                    "severity",
        -                    "message"
        -                  ],
        -                  "type": "object"
        -                },
        -                "type": "array"
        -              }
        -            },
        -            "required": [
        -              "assembly_slug",
        -              "standard",
        -              "parameters_used",
        -              "boq_rows",
        -              "totals_summary",
        -              "text_summary"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      },
        -      "error": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        -            "properties": {
        -              "code": {
        -                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        -                "enum": [
        -                  "RATE_LIMIT_EXCEEDED",
        -                  "TIER_INSUFFICIENT",
        -                  "INVALID_INPUT",
        -                  "SCHEMA_VERSION_MISMATCH",
        -                  "SCHEMA_INVARIANT_VIOLATION",
        -                  "UPSTREAM_TIMEOUT",
        -                  "BACKEND_FAILURE",
        -                  "IP_BLOCKED",
        -                  "RESOURCE_NOT_FOUND",
        -                  "RENDER_FAILURE",
        -                  "OCR_LOW_CONFIDENCE",
        -                  "MANUAL_REVIEW_REQUIRED",
        -                  "ACCEPTANCE_REQUIRED",
        -                  "INVALID_TOKEN"
        -                ],
        -                "type": "string"
        -              },
        -              "details": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "message": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "recoverable": {
        -                "type": "boolean"
        -              },
        -              "retry_after_seconds": {
        -                "anyOf": [
        -                  {
        -                    "minimum": 0,
        -                    "type": "integer"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              }
        -            },
        -            "required": [
        -              "code",
        -              "message",
        -              "recoverable"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      }
        -    },
        -    "required": [
        -      "_meta"
        -    ],
        -    "type": "object"
        -  },
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "_meta": {
        -        "additionalProperties": false,
        -        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        -        "properties": {
        -          "deliverables": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        -                "properties": {
        -                  "docx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "dxf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "expires_at": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  },
        -                  "pdf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "xlsx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "expires_at"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "document_id": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "issued_at": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "rate_limit_remaining": {
        -            "anyOf": [
        -              {
        -                "minimum": 0,
        -                "type": "integer"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "request_id": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "schema_version": {
        -            "const": "1.0.0",
        -            "default": "1.0.0",
        -            "type": "string"
        -          },
        -          "scope_boundary": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        -                "properties": {
        -                  "not_in_scope": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "produced": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "recommended_companions": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "type": "string"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "produced",
        -                  "not_in_scope"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tier": {
        -            "enum": [
        -              "free",
        -              "paid"
        -            ],
        -            "type": "string"
        -          },
        -          "tier_upgrade": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        -                "properties": {
        -                  "available_tiers": {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        -                      "properties": {
        -                        "billing": {
        -                          "enum": [
        -                            "one_off",
        -                            "monthly",
        -                            "annual"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "currency": {
        -                          "enum": [
        -                            "GBP",
        -                            "SGD",
        -                            "EUR",
        -                            "USD",
        -                            "CAD",
        -                            "AUD",
        -                            "NZD",
        -                            "MYR"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "display_name": {
        -                          "type": "string"
        -                        },
        -                        "price_local": {
        -                          "type": "number"
        -                        },
        -                        "tier_slug": {
        -                          "enum": [
        -                            "7_day_pass",
        -                            "solo",
        -                            "studio",
        -                            "practice"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "unlock_summary": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "tier_slug",
        -                        "display_name",
        -                        "price_local",
        -                        "currency",
        -                        "billing",
        -                        "unlock_summary"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "current_tier": {
        -                    "const": "free",
        -                    "default": "free",
        -                    "type": "string"
        -                  },
        -                  "pass_credit": {
        -                    "anyOf": [
        -                      {
        -                        "additionalProperties": false,
        -                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        -                        "properties": {
        -                          "amount_local": {
        -                            "type": "number"
        -                          },
        -                          "applies_to": {
        -                            "const": "solo_first_month",
        -                            "default": "solo_first_month",
        -                            "type": "string"
        -                          },
        -                          "currency": {
        -                            "type": "string"
        -                          },
        -                          "redeemable_until": {
        -                            "type": "string"
        -                          }
        -                        },
        -                        "required": [
        -                          "amount_local",
        -                          "currency",
        -                          "redeemable_until"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "pricing_url": {
        -                    "default": "https://civilquants.com/pricing",
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "available_tiers"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tos_url": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "upgrade_hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "warranty_disclaimer": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          }
        -        },
        -        "required": [
        -          "request_id",
        -          "issued_at",
        -          "tier"
        -        ],
        -        "type": "object"
        -      },
        -      "data": {
        -        "default": null,
        -        "title": "Data"
        -      },
        -      "error": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        -            "properties": {
        -              "code": {
        -                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        -                "enum": [
        -                  "RATE_LIMIT_EXCEEDED",
        -                  "TIER_INSUFFICIENT",
        -                  "INVALID_INPUT",
        -                  "SCHEMA_VERSION_MISMATCH",
        -                  "SCHEMA_INVARIANT_VIOLATION",
        -                  "UPSTREAM_TIMEOUT",
        -                  "BACKEND_FAILURE",
        -                  "IP_BLOCKED",
        -                  "RESOURCE_NOT_FOUND",
        -                  "RENDER_FAILURE",
        -                  "OCR_LOW_CONFIDENCE",
        -                  "MANUAL_REVIEW_REQUIRED",
        -                  "ACCEPTANCE_REQUIRED",
        -                  "INVALID_TOKEN"
        -                ],
        -                "type": "string"
        -              },
        -              "details": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "message": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "recoverable": {
        -                "type": "boolean"
        -              },
        -              "retry_after_seconds": {
        -                "anyOf": [
        -                  {
        -                    "minimum": 0,
        -                    "type": "integer"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              }
        -            },
        -            "required": [
        -              "code",
        -              "message",
        -              "recoverable"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      }
        -    },
        -    "required": [
        -      "_meta"
        -    ],
        -    "type": "object"
        -  }
        -]New value: +[
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "_meta": {
        +        "additionalProperties": false,
        +        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        +        "properties": {
        +          "deliverables": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        +                "properties": {
        +                  "docx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "dxf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "expires_at": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  },
        +                  "pdf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "xlsx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "expires_at"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "document_id": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "issued_at": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "rate_limit_remaining": {
        +            "anyOf": [
        +              {
        +                "minimum": 0,
        +                "type": "integer"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "request_id": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "schema_version": {
        +            "const": "1.0.0",
        +            "default": "1.0.0",
        +            "type": "string"
        +          },
        +          "scope_boundary": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        +                "properties": {
        +                  "not_in_scope": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "produced": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "recommended_companions": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "type": "string"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "produced",
        +                  "not_in_scope"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tier": {
        +            "enum": [
        +              "free",
        +              "paid"
        +            ],
        +            "type": "string"
        +          },
        +          "tier_upgrade": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        +                "properties": {
        +                  "available_tiers": {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        +                      "properties": {
        +                        "billing": {
        +                          "enum": [
        +                            "one_off",
        +                            "monthly",
        +                            "annual"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "currency": {
        +                          "enum": [
        +                            "GBP",
        +                            "SGD",
        +                            "EUR",
        +                            "USD",
        +                            "CAD",
        +                            "AUD",
        +                            "NZD",
        +                            "MYR"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "display_name": {
        +                          "type": "string"
        +                        },
        +                        "price_local": {
        +                          "type": "number"
        +                        },
        +                        "tier_slug": {
        +                          "enum": [
        +                            "7_day_pass",
        +                            "solo",
        +                            "studio",
        +                            "practice"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "unlock_summary": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "tier_slug",
        +                        "display_name",
        +                        "price_local",
        +                        "currency",
        +                        "billing",
        +                        "unlock_summary"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "current_tier": {
        +                    "const": "free",
        +                    "default": "free",
        +                    "type": "string"
        +                  },
        +                  "pass_credit": {
        +                    "anyOf": [
        +                      {
        +                        "additionalProperties": false,
        +                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        +                        "properties": {
        +                          "amount_local": {
        +                            "type": "number"
        +                          },
        +                          "applies_to": {
        +                            "const": "solo_first_month",
        +                            "default": "solo_first_month",
        +                            "type": "string"
        +                          },
        +                          "currency": {
        +                            "type": "string"
        +                          },
        +                          "redeemable_until": {
        +                            "type": "string"
        +                          }
        +                        },
        +                        "required": [
        +                          "amount_local",
        +                          "currency",
        +                          "redeemable_until"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "pricing_url": {
        +                    "default": "https://civilquants.com/pricing",
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "available_tiers"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tos_url": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "upgrade_hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "warranty_disclaimer": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          }
        +        },
        +        "required": [
        +          "request_id",
        +          "issued_at",
        +          "tier"
        +        ],
        +        "type": "object"
        +      },
        +      "data": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Schema § 1.1 — the typed payload returned inside `MCPResponse[ComputeResult]`.\n\nFree-tier responses omit `drawings` (the downloadable CAD artefact\npointers — the paid differentiator); the bridge enforces this. The\n`audit_trail` and the inline `drawing` preview are present on BOTH tiers\n(V1 ALIGN / 60th-fire D + C). `text_summary` is bounded to 2000 chars —\nkeeps the LLM-facing summary token-cheap and forces longer narrative into\nBoQ row descriptions where it belongs. `warnings` is the non-fatal\ngeometry advisory list (both tiers).",
        +            "properties": {
        +              "assembly_slug": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "audit_trail": {
        +                "anyOf": [
        +                  {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.7 — paid-tier audit-trail entry.\n\nOne entry per BoQ row; `boq_row_index` ties to the row position in\n`ComputeResult.boq_rows`. `derivation` is the human-readable formula\nwalk-through; `formula` is the optional formal expression.",
        +                      "properties": {
        +                        "boq_row_index": {
        +                          "minimum": 0,
        +                          "type": "integer"
        +                        },
        +                        "derivation": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "formula": {
        +                          "anyOf": [
        +                            {
        +                              "type": "string"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ],
        +                          "default": null
        +                        },
        +                        "id": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "parameters_referenced": {
        +                          "items": {
        +                            "type": "string"
        +                          },
        +                          "type": "array"
        +                        }
        +                      },
        +                      "required": [
        +                        "id",
        +                        "boq_row_index",
        +                        "derivation"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "boq_rows": {
        +                "items": {
        +                  "additionalProperties": false,
        +                  "description": "Schema § 1.3 — a single bill row in the requested standard's format.\n\n`description` is the non-verbatim functional description per spec § 13.9 /\n§ 15 invariant — NEVER reproduces a standard's verbatim clause text.\n`rate` / `amount` ship null because rates are commodity data the customer\nowns; the engine's job is the measurement, not the pricing.",
        +                  "properties": {
        +                    "amount": {
        +                      "anyOf": [
        +                        {
        +                          "type": "number"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "attribution": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "audit_id": {
        +                      "anyOf": [
        +                        {
        +                          "type": "string"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "description": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "quantity": {
        +                      "minimum": 0,
        +                      "type": "number"
        +                    },
        +                    "rate": {
        +                      "anyOf": [
        +                        {
        +                          "type": "number"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "unit": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "work_section": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    }
        +                  },
        +                  "required": [
        +                    "work_section",
        +                    "description",
        +                    "quantity",
        +                    "unit",
        +                    "attribution"
        +                  ],
        +                  "type": "object"
        +                },
        +                "type": "array"
        +              },
        +              "drawing": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": false,
        +                    "description": "Schema § 1.6a — inline server-rendered SVG preview of the geometry.\n\nThe MCP mirror of the web ``/compute`` response's ``drawing`` field\n(``api.schemas.compute.DrawingRef``): the same on-screen dimensioned\ndrawing both tiers see in the workspace, surfaced on the MCP compute\nresponse so a chat client can render it inline (60th-fire item C). This\nis the on-screen preview — present on BOTH tiers per the free/paid\nboundary; the downloadable CAD artefacts (DXF / dimensioned PDF) remain\nthe paid differentiator via the export tools.\n\nDefined here rather than importing ``DrawingRef`` because the web\n``schemas`` package imports back into this module (``schemas.render``),\nso reusing it would create an import cycle — the MCP wire contract keeps\nits own copy, the same pattern as ``BoQRow`` / ``DrawingReference``.",
        +                    "properties": {
        +                      "entity_count": {
        +                        "minimum": 0,
        +                        "type": "integer"
        +                      },
        +                      "svg_b64": {
        +                        "minLength": 1,
        +                        "type": "string"
        +                      },
        +                      "unit_of_drawing": {
        +                        "const": "m",
        +                        "default": "m",
        +                        "type": "string"
        +                      },
        +                      "viewbox_height": {
        +                        "exclusiveMinimum": 0,
        +                        "type": "number"
        +                      },
        +                      "viewbox_width": {
        +                        "exclusiveMinimum": 0,
        +                        "type": "number"
        +                      },
        +                      "viewbox_x": {
        +                        "type": "number"
        +                      },
        +                      "viewbox_y": {
        +                        "type": "number"
        +                      }
        +                    },
        +                    "required": [
        +                      "svg_b64",
        +                      "viewbox_x",
        +                      "viewbox_y",
        +                      "viewbox_width",
        +                      "viewbox_height",
        +                      "entity_count"
        +                    ],
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "drawings": {
        +                "anyOf": [
        +                  {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.6 — paid-tier drawing artefact pointer.\n\n`url` is an R2-signed URL; expiry is carried in `_meta.deliverables.expires_at`\non the envelope (not duplicated here). `layers` is DXF-only; PDF/SVG\ncallers omit it.",
        +                      "properties": {
        +                        "drawing_type": {
        +                          "enum": [
        +                            "section",
        +                            "plan",
        +                            "elevation",
        +                            "isometric",
        +                            "detail"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "format": {
        +                          "enum": [
        +                            "DXF",
        +                            "PDF",
        +                            "SVG"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "layers": {
        +                          "anyOf": [
        +                            {
        +                              "items": {
        +                                "type": "string"
        +                              },
        +                              "type": "array"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ],
        +                          "default": null
        +                        },
        +                        "scale": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "sheet_size": {
        +                          "enum": [
        +                            "A1",
        +                            "A2",
        +                            "A3",
        +                            "A4"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "url": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "drawing_type",
        +                        "format",
        +                        "url",
        +                        "sheet_size",
        +                        "scale"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "parameters_used": {
        +                "additionalProperties": false,
        +                "description": "Schema § 1.2 — the parameter snapshot the engine actually used.\n\nSplits user-supplied values from engine defaults so customers can see\nwhich numbers came from them and which the engine filled in. Every\ndefaulted parameter SHOULD have a corresponding entry in `assumptions`\n— the bridge layer enforces this when wrapping engine output.",
        +                "properties": {
        +                  "assumptions": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "engine_defaults": {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  "user_supplied": {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  }
        +                },
        +                "type": "object"
        +              },
        +              "standard": {
        +                "enum": [
        +                  "CESMM4",
        +                  "NRM2",
        +                  "SMM7",
        +                  "MMHW"
        +                ],
        +                "type": "string"
        +              },
        +              "text_summary": {
        +                "maxLength": 2000,
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "totals_summary": {
        +                "additionalProperties": false,
        +                "description": "Schema § 1.4 — totals_summary as a typed wrapper around the free-form dict.\n\nWire shape is a flat object (`{\"concrete_m3\": {...}, \"rebar_t\": {...}}`).\nWe model it as `RootModel`-equivalent via `model_config(extra=\"allow\")`\n+ a single `__root__`-style `entries` dict. Pydantic v2 recommends\n`RootModel` for free-form roots; using a wrapper class keeps the import\nsurface uniform with the rest of this module.",
        +                "properties": {
        +                  "entries": {
        +                    "additionalProperties": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.4 — single material/work-class total entry.",
        +                      "properties": {
        +                        "quantity": {
        +                          "minimum": 0,
        +                          "type": "number"
        +                        },
        +                        "unit": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "quantity",
        +                        "unit"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "object"
        +                  }
        +                },
        +                "type": "object"
        +              },
        +              "warnings": {
        +                "items": {
        +                  "additionalProperties": false,
        +                  "description": "Schema § 1.8 — a non-fatal geometry advisory (56th-fire T2).\n\nThe wire projection of the engine's `core.GeometryWarning`. Advisory only:\na warning NEVER changes a measured quantity — it flags geometry that is\nvalid but likely a mistake (e.g. a stale dependent-height default). Present\non BOTH tiers — a correctness/safety signal, not a paid feature.",
        +                  "properties": {
        +                    "affected_params": {
        +                      "items": {
        +                        "type": "string"
        +                      },
        +                      "type": "array"
        +                    },
        +                    "code": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "detail": {
        +                      "additionalProperties": {
        +                        "type": "number"
        +                      },
        +                      "type": "object"
        +                    },
        +                    "message": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "severity": {
        +                      "enum": [
        +                        "info",
        +                        "advisory",
        +                        "caution"
        +                      ],
        +                      "type": "string"
        +                    }
        +                  },
        +                  "required": [
        +                    "code",
        +                    "severity",
        +                    "message"
        +                  ],
        +                  "type": "object"
        +                },
        +                "type": "array"
        +              }
        +            },
        +            "required": [
        +              "assembly_slug",
        +              "standard",
        +              "parameters_used",
        +              "boq_rows",
        +              "totals_summary",
        +              "text_summary"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      },
        +      "error": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        +            "properties": {
        +              "code": {
        +                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        +                "enum": [
        +                  "RATE_LIMIT_EXCEEDED",
        +                  "TIER_INSUFFICIENT",
        +                  "INVALID_INPUT",
        +                  "SCHEMA_VERSION_MISMATCH",
        +                  "SCHEMA_INVARIANT_VIOLATION",
        +                  "UPSTREAM_TIMEOUT",
        +                  "BACKEND_FAILURE",
        +                  "IP_BLOCKED",
        +                  "RESOURCE_NOT_FOUND",
        +                  "RENDER_FAILURE",
        +                  "OCR_LOW_CONFIDENCE",
        +                  "MANUAL_REVIEW_REQUIRED",
        +                  "ACCEPTANCE_REQUIRED",
        +                  "INVALID_TOKEN"
        +                ],
        +                "type": "string"
        +              },
        +              "details": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "message": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "recoverable": {
        +                "type": "boolean"
        +              },
        +              "retry_after_seconds": {
        +                "anyOf": [
        +                  {
        +                    "minimum": 0,
        +                    "type": "integer"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              }
        +            },
        +            "required": [
        +              "code",
        +              "message",
        +              "recoverable"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      }
        +    },
        +    "required": [
        +      "_meta"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "_meta": {
        +        "additionalProperties": false,
        +        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        +        "properties": {
        +          "deliverables": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        +                "properties": {
        +                  "docx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "dxf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "expires_at": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  },
        +                  "pdf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "xlsx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "expires_at"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "document_id": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "issued_at": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "rate_limit_remaining": {
        +            "anyOf": [
        +              {
        +                "minimum": 0,
        +                "type": "integer"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "request_id": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "schema_version": {
        +            "const": "1.0.0",
        +            "default": "1.0.0",
        +            "type": "string"
        +          },
        +          "scope_boundary": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        +                "properties": {
        +                  "not_in_scope": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "produced": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "recommended_companions": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "type": "string"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "produced",
        +                  "not_in_scope"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tier": {
        +            "enum": [
        +              "free",
        +              "paid"
        +            ],
        +            "type": "string"
        +          },
        +          "tier_upgrade": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        +                "properties": {
        +                  "available_tiers": {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        +                      "properties": {
        +                        "billing": {
        +                          "enum": [
        +                            "one_off",
        +                            "monthly",
        +                            "annual"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "currency": {
        +                          "enum": [
        +                            "GBP",
        +                            "SGD",
        +                            "EUR",
        +                            "USD",
        +                            "CAD",
        +                            "AUD",
        +                            "NZD",
        +                            "MYR"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "display_name": {
        +                          "type": "string"
        +                        },
        +                        "price_local": {
        +                          "type": "number"
        +                        },
        +                        "tier_slug": {
        +                          "enum": [
        +                            "7_day_pass",
        +                            "solo",
        +                            "studio",
        +                            "practice"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "unlock_summary": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "tier_slug",
        +                        "display_name",
        +                        "price_local",
        +                        "currency",
        +                        "billing",
        +                        "unlock_summary"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "current_tier": {
        +                    "const": "free",
        +                    "default": "free",
        +                    "type": "string"
        +                  },
        +                  "pass_credit": {
        +                    "anyOf": [
        +                      {
        +                        "additionalProperties": false,
        +                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        +                        "properties": {
        +                          "amount_local": {
        +                            "type": "number"
        +                          },
        +                          "applies_to": {
        +                            "const": "solo_first_month",
        +                            "default": "solo_first_month",
        +                            "type": "string"
        +                          },
        +                          "currency": {
        +                            "type": "string"
        +                          },
        +                          "redeemable_until": {
        +                            "type": "string"
        +                          }
        +                        },
        +                        "required": [
        +                          "amount_local",
        +                          "currency",
        +                          "redeemable_until"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "pricing_url": {
        +                    "default": "https://civilquants.com/pricing",
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "available_tiers"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tos_url": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "upgrade_hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "warranty_disclaimer": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          }
        +        },
        +        "required": [
        +          "request_id",
        +          "issued_at",
        +          "tier"
        +        ],
        +        "type": "object"
        +      },
        +      "data": {
        +        "default": null,
        +        "title": "Data"
        +      },
        +      "error": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        +            "properties": {
        +              "code": {
        +                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        +                "enum": [
        +                  "RATE_LIMIT_EXCEEDED",
        +                  "TIER_INSUFFICIENT",
        +                  "INVALID_INPUT",
        +                  "SCHEMA_VERSION_MISMATCH",
        +                  "SCHEMA_INVARIANT_VIOLATION",
        +                  "UPSTREAM_TIMEOUT",
        +                  "BACKEND_FAILURE",
        +                  "IP_BLOCKED",
        +                  "RESOURCE_NOT_FOUND",
        +                  "RENDER_FAILURE",
        +                  "OCR_LOW_CONFIDENCE",
        +                  "MANUAL_REVIEW_REQUIRED",
        +                  "ACCEPTANCE_REQUIRED",
        +                  "INVALID_TOKEN"
        +                ],
        +                "type": "string"
        +              },
        +              "details": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "message": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "recoverable": {
        +                "type": "boolean"
        +              },
        +              "retry_after_seconds": {
        +                "anyOf": [
        +                  {
        +                    "minimum": 0,
        +                    "type": "integer"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              }
        +            },
        +            "required": [
        +              "code",
        +              "message",
        +              "recoverable"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      }
        +    },
        +    "required": [
        +      "_meta"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedcompute_rigid_pavement1 field changed
      • changedOutput schema / properties / result / anyOf
        Previous value: -[
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "_meta": {
        -        "additionalProperties": false,
        -        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        -        "properties": {
        -          "deliverables": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        -                "properties": {
        -                  "docx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "dxf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "expires_at": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  },
        -                  "pdf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "xlsx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "expires_at"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "document_id": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "issued_at": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "rate_limit_remaining": {
        -            "anyOf": [
        -              {
        -                "minimum": 0,
        -                "type": "integer"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "request_id": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "schema_version": {
        -            "const": "1.0.0",
        -            "default": "1.0.0",
        -            "type": "string"
        -          },
        -          "scope_boundary": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        -                "properties": {
        -                  "not_in_scope": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "produced": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "recommended_companions": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "type": "string"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "produced",
        -                  "not_in_scope"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tier": {
        -            "enum": [
        -              "free",
        -              "paid"
        -            ],
        -            "type": "string"
        -          },
        -          "tier_upgrade": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        -                "properties": {
        -                  "available_tiers": {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        -                      "properties": {
        -                        "billing": {
        -                          "enum": [
        -                            "one_off",
        -                            "monthly",
        -                            "annual"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "currency": {
        -                          "enum": [
        -                            "GBP",
        -                            "SGD",
        -                            "EUR",
        -                            "USD",
        -                            "CAD",
        -                            "AUD",
        -                            "NZD",
        -                            "MYR"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "display_name": {
        -                          "type": "string"
        -                        },
        -                        "price_local": {
        -                          "type": "number"
        -                        },
        -                        "tier_slug": {
        -                          "enum": [
        -                            "7_day_pass",
        -                            "solo",
        -                            "studio",
        -                            "practice"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "unlock_summary": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "tier_slug",
        -                        "display_name",
        -                        "price_local",
        -                        "currency",
        -                        "billing",
        -                        "unlock_summary"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "current_tier": {
        -                    "const": "free",
        -                    "default": "free",
        -                    "type": "string"
        -                  },
        -                  "pass_credit": {
        -                    "anyOf": [
        -                      {
        -                        "additionalProperties": false,
        -                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        -                        "properties": {
        -                          "amount_local": {
        -                            "type": "number"
        -                          },
        -                          "applies_to": {
        -                            "const": "solo_first_month",
        -                            "default": "solo_first_month",
        -                            "type": "string"
        -                          },
        -                          "currency": {
        -                            "type": "string"
        -                          },
        -                          "redeemable_until": {
        -                            "type": "string"
        -                          }
        -                        },
        -                        "required": [
        -                          "amount_local",
        -                          "currency",
        -                          "redeemable_until"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "pricing_url": {
        -                    "default": "https://civilquants.com/pricing",
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "available_tiers"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tos_url": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "upgrade_hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "warranty_disclaimer": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          }
        -        },
        -        "required": [
        -          "request_id",
        -          "issued_at",
        -          "tier"
        -        ],
        -        "type": "object"
        -      },
        -      "data": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Schema § 1.1 — the typed payload returned inside `MCPResponse[ComputeResult]`.\n\nFree-tier responses omit `drawings` (the downloadable CAD artefact\npointers — the paid differentiator); the bridge enforces this. The\n`audit_trail` and the inline `drawing` preview are present on BOTH tiers\n(V1 ALIGN / 60th-fire D + C). `text_summary` is bounded to 2000 chars —\nkeeps the LLM-facing summary token-cheap and forces longer narrative into\nBoQ row descriptions where it belongs. `warnings` is the non-fatal\ngeometry advisory list (both tiers).",
        -            "properties": {
        -              "assembly_slug": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "audit_trail": {
        -                "anyOf": [
        -                  {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.7 — paid-tier audit-trail entry.\n\nOne entry per BoQ row; `boq_row_index` ties to the row position in\n`ComputeResult.boq_rows`. `derivation` is the human-readable formula\nwalk-through; `formula` is the optional formal expression.",
        -                      "properties": {
        -                        "boq_row_index": {
        -                          "minimum": 0,
        -                          "type": "integer"
        -                        },
        -                        "derivation": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "formula": {
        -                          "anyOf": [
        -                            {
        -                              "type": "string"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ],
        -                          "default": null
        -                        },
        -                        "id": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "parameters_referenced": {
        -                          "items": {
        -                            "type": "string"
        -                          },
        -                          "type": "array"
        -                        }
        -                      },
        -                      "required": [
        -                        "id",
        -                        "boq_row_index",
        -                        "derivation"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "boq_rows": {
        -                "items": {
        -                  "additionalProperties": false,
        -                  "description": "Schema § 1.3 — a single bill row in the requested standard's format.\n\n`description` is the non-verbatim functional description per spec § 13.9 /\n§ 15 invariant — NEVER reproduces a standard's verbatim clause text.\n`rate` / `amount` ship null because rates are commodity data the customer\nowns; the engine's job is the measurement, not the pricing.",
        -                  "properties": {
        -                    "amount": {
        -                      "anyOf": [
        -                        {
        -                          "type": "number"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "attribution": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "audit_id": {
        -                      "anyOf": [
        -                        {
        -                          "type": "string"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "description": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "quantity": {
        -                      "minimum": 0,
        -                      "type": "number"
        -                    },
        -                    "rate": {
        -                      "anyOf": [
        -                        {
        -                          "type": "number"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "unit": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "work_section": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    }
        -                  },
        -                  "required": [
        -                    "work_section",
        -                    "description",
        -                    "quantity",
        -                    "unit",
        -                    "attribution"
        -                  ],
        -                  "type": "object"
        -                },
        -                "type": "array"
        -              },
        -              "drawing": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": false,
        -                    "description": "Schema § 1.6a — inline server-rendered SVG preview of the geometry.\n\nThe MCP mirror of the web ``/compute`` response's ``drawing`` field\n(``api.schemas.compute.DrawingRef``): the same on-screen dimensioned\ndrawing both tiers see in the workspace, surfaced on the MCP compute\nresponse so a chat client can render it inline (60th-fire item C). This\nis the on-screen preview — present on BOTH tiers per the free/paid\nboundary; the downloadable CAD artefacts (DXF / dimensioned PDF) remain\nthe paid differentiator via the export tools.\n\nDefined here rather than importing ``DrawingRef`` because the web\n``schemas`` package imports back into this module (``schemas.render``),\nso reusing it would create an import cycle — the MCP wire contract keeps\nits own copy, the same pattern as ``BoQRow`` / ``DrawingReference``.",
        -                    "properties": {
        -                      "entity_count": {
        -                        "minimum": 0,
        -                        "type": "integer"
        -                      },
        -                      "svg_b64": {
        -                        "minLength": 1,
        -                        "type": "string"
        -                      },
        -                      "unit_of_drawing": {
        -                        "const": "m",
        -                        "default": "m",
        -                        "type": "string"
        -                      },
        -                      "viewbox_height": {
        -                        "exclusiveMinimum": 0,
        -                        "type": "number"
        -                      },
        -                      "viewbox_width": {
        -                        "exclusiveMinimum": 0,
        -                        "type": "number"
        -                      },
        -                      "viewbox_x": {
        -                        "type": "number"
        -                      },
        -                      "viewbox_y": {
        -                        "type": "number"
        -                      }
        -                    },
        -                    "required": [
        -                      "svg_b64",
        -                      "viewbox_x",
        -                      "viewbox_y",
        -                      "viewbox_width",
        -                      "viewbox_height",
        -                      "entity_count"
        -                    ],
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "drawings": {
        -                "anyOf": [
        -                  {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.6 — paid-tier drawing artefact pointer.\n\n`url` is an R2-signed URL; expiry is carried in `_meta.deliverables.expires_at`\non the envelope (not duplicated here). `layers` is DXF-only; PDF/SVG\ncallers omit it.",
        -                      "properties": {
        -                        "drawing_type": {
        -                          "enum": [
        -                            "section",
        -                            "plan",
        -                            "elevation",
        -                            "isometric",
        -                            "detail"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "format": {
        -                          "enum": [
        -                            "DXF",
        -                            "PDF",
        -                            "SVG"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "layers": {
        -                          "anyOf": [
        -                            {
        -                              "items": {
        -                                "type": "string"
        -                              },
        -                              "type": "array"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ],
        -                          "default": null
        -                        },
        -                        "scale": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "sheet_size": {
        -                          "enum": [
        -                            "A1",
        -                            "A2",
        -                            "A3",
        -                            "A4"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "url": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "drawing_type",
        -                        "format",
        -                        "url",
        -                        "sheet_size",
        -                        "scale"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "parameters_used": {
        -                "additionalProperties": false,
        -                "description": "Schema § 1.2 — the parameter snapshot the engine actually used.\n\nSplits user-supplied values from engine defaults so customers can see\nwhich numbers came from them and which the engine filled in. Every\ndefaulted parameter SHOULD have a corresponding entry in `assumptions`\n— the bridge layer enforces this when wrapping engine output.",
        -                "properties": {
        -                  "assumptions": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "engine_defaults": {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  "resolved_from_description": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "additionalProperties": false,
        -                          "description": "Schema § 1.2 — a parameter resolved by the forgiving-input layer.\n\nPopulated by the Track B-Forgiving Haiku-4.5 resolution pass; until that\nlayer lands, instances are constructed only by tests. `source` distinguishes\nthe resolution path so customers can audit which fields were inferred.",
        -                          "properties": {
        -                            "confidence": {
        -                              "anyOf": [
        -                                {
        -                                  "enum": [
        -                                    "high",
        -                                    "medium",
        -                                    "low"
        -                                  ],
        -                                  "type": "string"
        -                                },
        -                                {
        -                                  "type": "null"
        -                                }
        -                              ],
        -                              "default": null
        -                            },
        -                            "field_name": {
        -                              "minLength": 1,
        -                              "type": "string"
        -                            },
        -                            "resolved_value": {},
        -                            "source": {
        -                              "enum": [
        -                                "description_field",
        -                                "haiku_resolution",
        -                                "engine_default"
        -                              ],
        -                              "type": "string"
        -                            }
        -                          },
        -                          "required": [
        -                            "field_name",
        -                            "resolved_value",
        -                            "source"
        -                          ],
        -                          "type": "object"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "user_supplied": {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  }
        -                },
        -                "type": "object"
        -              },
        -              "standard": {
        -                "enum": [
        -                  "CESMM4",
        -                  "NRM2",
        -                  "SMM7",
        -                  "MMHW"
        -                ],
        -                "type": "string"
        -              },
        -              "text_summary": {
        -                "maxLength": 2000,
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "totals_summary": {
        -                "additionalProperties": false,
        -                "description": "Schema § 1.4 — totals_summary as a typed wrapper around the free-form dict.\n\nWire shape is a flat object (`{\"concrete_m3\": {...}, \"rebar_t\": {...}}`).\nWe model it as `RootModel`-equivalent via `model_config(extra=\"allow\")`\n+ a single `__root__`-style `entries` dict. Pydantic v2 recommends\n`RootModel` for free-form roots; using a wrapper class keeps the import\nsurface uniform with the rest of this module.",
        -                "properties": {
        -                  "entries": {
        -                    "additionalProperties": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.4 — single material/work-class total entry.",
        -                      "properties": {
        -                        "quantity": {
        -                          "minimum": 0,
        -                          "type": "number"
        -                        },
        -                        "unit": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "quantity",
        -                        "unit"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "object"
        -                  }
        -                },
        -                "type": "object"
        -              },
        -              "warnings": {
        -                "items": {
        -                  "additionalProperties": false,
        -                  "description": "Schema § 1.8 — a non-fatal geometry advisory (56th-fire T2).\n\nThe wire projection of the engine's `core.GeometryWarning`. Advisory only:\na warning NEVER changes a measured quantity — it flags geometry that is\nvalid but likely a mistake (e.g. a stale dependent-height default). Present\non BOTH tiers — a correctness/safety signal, not a paid feature.",
        -                  "properties": {
        -                    "affected_params": {
        -                      "items": {
        -                        "type": "string"
        -                      },
        -                      "type": "array"
        -                    },
        -                    "code": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "detail": {
        -                      "additionalProperties": {
        -                        "type": "number"
        -                      },
        -                      "type": "object"
        -                    },
        -                    "message": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "severity": {
        -                      "enum": [
        -                        "info",
        -                        "advisory",
        -                        "caution"
        -                      ],
        -                      "type": "string"
        -                    }
        -                  },
        -                  "required": [
        -                    "code",
        -                    "severity",
        -                    "message"
        -                  ],
        -                  "type": "object"
        -                },
        -                "type": "array"
        -              }
        -            },
        -            "required": [
        -              "assembly_slug",
        -              "standard",
        -              "parameters_used",
        -              "boq_rows",
        -              "totals_summary",
        -              "text_summary"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      },
        -      "error": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        -            "properties": {
        -              "code": {
        -                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        -                "enum": [
        -                  "RATE_LIMIT_EXCEEDED",
        -                  "TIER_INSUFFICIENT",
        -                  "INVALID_INPUT",
        -                  "SCHEMA_VERSION_MISMATCH",
        -                  "SCHEMA_INVARIANT_VIOLATION",
        -                  "UPSTREAM_TIMEOUT",
        -                  "BACKEND_FAILURE",
        -                  "IP_BLOCKED",
        -                  "RESOURCE_NOT_FOUND",
        -                  "RENDER_FAILURE",
        -                  "OCR_LOW_CONFIDENCE",
        -                  "MANUAL_REVIEW_REQUIRED",
        -                  "ACCEPTANCE_REQUIRED",
        -                  "INVALID_TOKEN"
        -                ],
        -                "type": "string"
        -              },
        -              "details": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "message": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "recoverable": {
        -                "type": "boolean"
        -              },
        -              "retry_after_seconds": {
        -                "anyOf": [
        -                  {
        -                    "minimum": 0,
        -                    "type": "integer"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              }
        -            },
        -            "required": [
        -              "code",
        -              "message",
        -              "recoverable"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      }
        -    },
        -    "required": [
        -      "_meta"
        -    ],
        -    "type": "object"
        -  },
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "_meta": {
        -        "additionalProperties": false,
        -        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        -        "properties": {
        -          "deliverables": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        -                "properties": {
        -                  "docx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "dxf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "expires_at": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  },
        -                  "pdf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "xlsx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "expires_at"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "document_id": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "issued_at": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "rate_limit_remaining": {
        -            "anyOf": [
        -              {
        -                "minimum": 0,
        -                "type": "integer"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "request_id": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "schema_version": {
        -            "const": "1.0.0",
        -            "default": "1.0.0",
        -            "type": "string"
        -          },
        -          "scope_boundary": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        -                "properties": {
        -                  "not_in_scope": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "produced": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "recommended_companions": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "type": "string"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "produced",
        -                  "not_in_scope"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tier": {
        -            "enum": [
        -              "free",
        -              "paid"
        -            ],
        -            "type": "string"
        -          },
        -          "tier_upgrade": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        -                "properties": {
        -                  "available_tiers": {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        -                      "properties": {
        -                        "billing": {
        -                          "enum": [
        -                            "one_off",
        -                            "monthly",
        -                            "annual"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "currency": {
        -                          "enum": [
        -                            "GBP",
        -                            "SGD",
        -                            "EUR",
        -                            "USD",
        -                            "CAD",
        -                            "AUD",
        -                            "NZD",
        -                            "MYR"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "display_name": {
        -                          "type": "string"
        -                        },
        -                        "price_local": {
        -                          "type": "number"
        -                        },
        -                        "tier_slug": {
        -                          "enum": [
        -                            "7_day_pass",
        -                            "solo",
        -                            "studio",
        -                            "practice"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "unlock_summary": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "tier_slug",
        -                        "display_name",
        -                        "price_local",
        -                        "currency",
        -                        "billing",
        -                        "unlock_summary"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "current_tier": {
        -                    "const": "free",
        -                    "default": "free",
        -                    "type": "string"
        -                  },
        -                  "pass_credit": {
        -                    "anyOf": [
        -                      {
        -                        "additionalProperties": false,
        -                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        -                        "properties": {
        -                          "amount_local": {
        -                            "type": "number"
        -                          },
        -                          "applies_to": {
        -                            "const": "solo_first_month",
        -                            "default": "solo_first_month",
        -                            "type": "string"
        -                          },
        -                          "currency": {
        -                            "type": "string"
        -                          },
        -                          "redeemable_until": {
        -                            "type": "string"
        -                          }
        -                        },
        -                        "required": [
        -                          "amount_local",
        -                          "currency",
        -                          "redeemable_until"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "pricing_url": {
        -                    "default": "https://civilquants.com/pricing",
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "available_tiers"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tos_url": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "upgrade_hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "warranty_disclaimer": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          }
        -        },
        -        "required": [
        -          "request_id",
        -          "issued_at",
        -          "tier"
        -        ],
        -        "type": "object"
        -      },
        -      "data": {
        -        "default": null,
        -        "title": "Data"
        -      },
        -      "error": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        -            "properties": {
        -              "code": {
        -                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        -                "enum": [
        -                  "RATE_LIMIT_EXCEEDED",
        -                  "TIER_INSUFFICIENT",
        -                  "INVALID_INPUT",
        -                  "SCHEMA_VERSION_MISMATCH",
        -                  "SCHEMA_INVARIANT_VIOLATION",
        -                  "UPSTREAM_TIMEOUT",
        -                  "BACKEND_FAILURE",
        -                  "IP_BLOCKED",
        -                  "RESOURCE_NOT_FOUND",
        -                  "RENDER_FAILURE",
        -                  "OCR_LOW_CONFIDENCE",
        -                  "MANUAL_REVIEW_REQUIRED",
        -                  "ACCEPTANCE_REQUIRED",
        -                  "INVALID_TOKEN"
        -                ],
        -                "type": "string"
        -              },
        -              "details": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "message": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "recoverable": {
        -                "type": "boolean"
        -              },
        -              "retry_after_seconds": {
        -                "anyOf": [
        -                  {
        -                    "minimum": 0,
        -                    "type": "integer"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              }
        -            },
        -            "required": [
        -              "code",
        -              "message",
        -              "recoverable"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      }
        -    },
        -    "required": [
        -      "_meta"
        -    ],
        -    "type": "object"
        -  }
        -]New value: +[
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "_meta": {
        +        "additionalProperties": false,
        +        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        +        "properties": {
        +          "deliverables": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        +                "properties": {
        +                  "docx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "dxf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "expires_at": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  },
        +                  "pdf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "xlsx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "expires_at"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "document_id": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "issued_at": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "rate_limit_remaining": {
        +            "anyOf": [
        +              {
        +                "minimum": 0,
        +                "type": "integer"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "request_id": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "schema_version": {
        +            "const": "1.0.0",
        +            "default": "1.0.0",
        +            "type": "string"
        +          },
        +          "scope_boundary": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        +                "properties": {
        +                  "not_in_scope": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "produced": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "recommended_companions": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "type": "string"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "produced",
        +                  "not_in_scope"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tier": {
        +            "enum": [
        +              "free",
        +              "paid"
        +            ],
        +            "type": "string"
        +          },
        +          "tier_upgrade": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        +                "properties": {
        +                  "available_tiers": {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        +                      "properties": {
        +                        "billing": {
        +                          "enum": [
        +                            "one_off",
        +                            "monthly",
        +                            "annual"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "currency": {
        +                          "enum": [
        +                            "GBP",
        +                            "SGD",
        +                            "EUR",
        +                            "USD",
        +                            "CAD",
        +                            "AUD",
        +                            "NZD",
        +                            "MYR"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "display_name": {
        +                          "type": "string"
        +                        },
        +                        "price_local": {
        +                          "type": "number"
        +                        },
        +                        "tier_slug": {
        +                          "enum": [
        +                            "7_day_pass",
        +                            "solo",
        +                            "studio",
        +                            "practice"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "unlock_summary": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "tier_slug",
        +                        "display_name",
        +                        "price_local",
        +                        "currency",
        +                        "billing",
        +                        "unlock_summary"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "current_tier": {
        +                    "const": "free",
        +                    "default": "free",
        +                    "type": "string"
        +                  },
        +                  "pass_credit": {
        +                    "anyOf": [
        +                      {
        +                        "additionalProperties": false,
        +                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        +                        "properties": {
        +                          "amount_local": {
        +                            "type": "number"
        +                          },
        +                          "applies_to": {
        +                            "const": "solo_first_month",
        +                            "default": "solo_first_month",
        +                            "type": "string"
        +                          },
        +                          "currency": {
        +                            "type": "string"
        +                          },
        +                          "redeemable_until": {
        +                            "type": "string"
        +                          }
        +                        },
        +                        "required": [
        +                          "amount_local",
        +                          "currency",
        +                          "redeemable_until"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "pricing_url": {
        +                    "default": "https://civilquants.com/pricing",
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "available_tiers"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tos_url": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "upgrade_hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "warranty_disclaimer": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          }
        +        },
        +        "required": [
        +          "request_id",
        +          "issued_at",
        +          "tier"
        +        ],
        +        "type": "object"
        +      },
        +      "data": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Schema § 1.1 — the typed payload returned inside `MCPResponse[ComputeResult]`.\n\nFree-tier responses omit `drawings` (the downloadable CAD artefact\npointers — the paid differentiator); the bridge enforces this. The\n`audit_trail` and the inline `drawing` preview are present on BOTH tiers\n(V1 ALIGN / 60th-fire D + C). `text_summary` is bounded to 2000 chars —\nkeeps the LLM-facing summary token-cheap and forces longer narrative into\nBoQ row descriptions where it belongs. `warnings` is the non-fatal\ngeometry advisory list (both tiers).",
        +            "properties": {
        +              "assembly_slug": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "audit_trail": {
        +                "anyOf": [
        +                  {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.7 — paid-tier audit-trail entry.\n\nOne entry per BoQ row; `boq_row_index` ties to the row position in\n`ComputeResult.boq_rows`. `derivation` is the human-readable formula\nwalk-through; `formula` is the optional formal expression.",
        +                      "properties": {
        +                        "boq_row_index": {
        +                          "minimum": 0,
        +                          "type": "integer"
        +                        },
        +                        "derivation": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "formula": {
        +                          "anyOf": [
        +                            {
        +                              "type": "string"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ],
        +                          "default": null
        +                        },
        +                        "id": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "parameters_referenced": {
        +                          "items": {
        +                            "type": "string"
        +                          },
        +                          "type": "array"
        +                        }
        +                      },
        +                      "required": [
        +                        "id",
        +                        "boq_row_index",
        +                        "derivation"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "boq_rows": {
        +                "items": {
        +                  "additionalProperties": false,
        +                  "description": "Schema § 1.3 — a single bill row in the requested standard's format.\n\n`description` is the non-verbatim functional description per spec § 13.9 /\n§ 15 invariant — NEVER reproduces a standard's verbatim clause text.\n`rate` / `amount` ship null because rates are commodity data the customer\nowns; the engine's job is the measurement, not the pricing.",
        +                  "properties": {
        +                    "amount": {
        +                      "anyOf": [
        +                        {
        +                          "type": "number"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "attribution": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "audit_id": {
        +                      "anyOf": [
        +                        {
        +                          "type": "string"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "description": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "quantity": {
        +                      "minimum": 0,
        +                      "type": "number"
        +                    },
        +                    "rate": {
        +                      "anyOf": [
        +                        {
        +                          "type": "number"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "unit": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "work_section": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    }
        +                  },
        +                  "required": [
        +                    "work_section",
        +                    "description",
        +                    "quantity",
        +                    "unit",
        +                    "attribution"
        +                  ],
        +                  "type": "object"
        +                },
        +                "type": "array"
        +              },
        +              "drawing": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": false,
        +                    "description": "Schema § 1.6a — inline server-rendered SVG preview of the geometry.\n\nThe MCP mirror of the web ``/compute`` response's ``drawing`` field\n(``api.schemas.compute.DrawingRef``): the same on-screen dimensioned\ndrawing both tiers see in the workspace, surfaced on the MCP compute\nresponse so a chat client can render it inline (60th-fire item C). This\nis the on-screen preview — present on BOTH tiers per the free/paid\nboundary; the downloadable CAD artefacts (DXF / dimensioned PDF) remain\nthe paid differentiator via the export tools.\n\nDefined here rather than importing ``DrawingRef`` because the web\n``schemas`` package imports back into this module (``schemas.render``),\nso reusing it would create an import cycle — the MCP wire contract keeps\nits own copy, the same pattern as ``BoQRow`` / ``DrawingReference``.",
        +                    "properties": {
        +                      "entity_count": {
        +                        "minimum": 0,
        +                        "type": "integer"
        +                      },
        +                      "svg_b64": {
        +                        "minLength": 1,
        +                        "type": "string"
        +                      },
        +                      "unit_of_drawing": {
        +                        "const": "m",
        +                        "default": "m",
        +                        "type": "string"
        +                      },
        +                      "viewbox_height": {
        +                        "exclusiveMinimum": 0,
        +                        "type": "number"
        +                      },
        +                      "viewbox_width": {
        +                        "exclusiveMinimum": 0,
        +                        "type": "number"
        +                      },
        +                      "viewbox_x": {
        +                        "type": "number"
        +                      },
        +                      "viewbox_y": {
        +                        "type": "number"
        +                      }
        +                    },
        +                    "required": [
        +                      "svg_b64",
        +                      "viewbox_x",
        +                      "viewbox_y",
        +                      "viewbox_width",
        +                      "viewbox_height",
        +                      "entity_count"
        +                    ],
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "drawings": {
        +                "anyOf": [
        +                  {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.6 — paid-tier drawing artefact pointer.\n\n`url` is an R2-signed URL; expiry is carried in `_meta.deliverables.expires_at`\non the envelope (not duplicated here). `layers` is DXF-only; PDF/SVG\ncallers omit it.",
        +                      "properties": {
        +                        "drawing_type": {
        +                          "enum": [
        +                            "section",
        +                            "plan",
        +                            "elevation",
        +                            "isometric",
        +                            "detail"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "format": {
        +                          "enum": [
        +                            "DXF",
        +                            "PDF",
        +                            "SVG"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "layers": {
        +                          "anyOf": [
        +                            {
        +                              "items": {
        +                                "type": "string"
        +                              },
        +                              "type": "array"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ],
        +                          "default": null
        +                        },
        +                        "scale": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "sheet_size": {
        +                          "enum": [
        +                            "A1",
        +                            "A2",
        +                            "A3",
        +                            "A4"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "url": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "drawing_type",
        +                        "format",
        +                        "url",
        +                        "sheet_size",
        +                        "scale"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "parameters_used": {
        +                "additionalProperties": false,
        +                "description": "Schema § 1.2 — the parameter snapshot the engine actually used.\n\nSplits user-supplied values from engine defaults so customers can see\nwhich numbers came from them and which the engine filled in. Every\ndefaulted parameter SHOULD have a corresponding entry in `assumptions`\n— the bridge layer enforces this when wrapping engine output.",
        +                "properties": {
        +                  "assumptions": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "engine_defaults": {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  "user_supplied": {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  }
        +                },
        +                "type": "object"
        +              },
        +              "standard": {
        +                "enum": [
        +                  "CESMM4",
        +                  "NRM2",
        +                  "SMM7",
        +                  "MMHW"
        +                ],
        +                "type": "string"
        +              },
        +              "text_summary": {
        +                "maxLength": 2000,
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "totals_summary": {
        +                "additionalProperties": false,
        +                "description": "Schema § 1.4 — totals_summary as a typed wrapper around the free-form dict.\n\nWire shape is a flat object (`{\"concrete_m3\": {...}, \"rebar_t\": {...}}`).\nWe model it as `RootModel`-equivalent via `model_config(extra=\"allow\")`\n+ a single `__root__`-style `entries` dict. Pydantic v2 recommends\n`RootModel` for free-form roots; using a wrapper class keeps the import\nsurface uniform with the rest of this module.",
        +                "properties": {
        +                  "entries": {
        +                    "additionalProperties": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.4 — single material/work-class total entry.",
        +                      "properties": {
        +                        "quantity": {
        +                          "minimum": 0,
        +                          "type": "number"
        +                        },
        +                        "unit": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "quantity",
        +                        "unit"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "object"
        +                  }
        +                },
        +                "type": "object"
        +              },
        +              "warnings": {
        +                "items": {
        +                  "additionalProperties": false,
        +                  "description": "Schema § 1.8 — a non-fatal geometry advisory (56th-fire T2).\n\nThe wire projection of the engine's `core.GeometryWarning`. Advisory only:\na warning NEVER changes a measured quantity — it flags geometry that is\nvalid but likely a mistake (e.g. a stale dependent-height default). Present\non BOTH tiers — a correctness/safety signal, not a paid feature.",
        +                  "properties": {
        +                    "affected_params": {
        +                      "items": {
        +                        "type": "string"
        +                      },
        +                      "type": "array"
        +                    },
        +                    "code": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "detail": {
        +                      "additionalProperties": {
        +                        "type": "number"
        +                      },
        +                      "type": "object"
        +                    },
        +                    "message": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "severity": {
        +                      "enum": [
        +                        "info",
        +                        "advisory",
        +                        "caution"
        +                      ],
        +                      "type": "string"
        +                    }
        +                  },
        +                  "required": [
        +                    "code",
        +                    "severity",
        +                    "message"
        +                  ],
        +                  "type": "object"
        +                },
        +                "type": "array"
        +              }
        +            },
        +            "required": [
        +              "assembly_slug",
        +              "standard",
        +              "parameters_used",
        +              "boq_rows",
        +              "totals_summary",
        +              "text_summary"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      },
        +      "error": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        +            "properties": {
        +              "code": {
        +                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        +                "enum": [
        +                  "RATE_LIMIT_EXCEEDED",
        +                  "TIER_INSUFFICIENT",
        +                  "INVALID_INPUT",
        +                  "SCHEMA_VERSION_MISMATCH",
        +                  "SCHEMA_INVARIANT_VIOLATION",
        +                  "UPSTREAM_TIMEOUT",
        +                  "BACKEND_FAILURE",
        +                  "IP_BLOCKED",
        +                  "RESOURCE_NOT_FOUND",
        +                  "RENDER_FAILURE",
        +                  "OCR_LOW_CONFIDENCE",
        +                  "MANUAL_REVIEW_REQUIRED",
        +                  "ACCEPTANCE_REQUIRED",
        +                  "INVALID_TOKEN"
        +                ],
        +                "type": "string"
        +              },
        +              "details": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "message": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "recoverable": {
        +                "type": "boolean"
        +              },
        +              "retry_after_seconds": {
        +                "anyOf": [
        +                  {
        +                    "minimum": 0,
        +                    "type": "integer"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              }
        +            },
        +            "required": [
        +              "code",
        +              "message",
        +              "recoverable"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      }
        +    },
        +    "required": [
        +      "_meta"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "_meta": {
        +        "additionalProperties": false,
        +        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        +        "properties": {
        +          "deliverables": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        +                "properties": {
        +                  "docx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "dxf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "expires_at": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  },
        +                  "pdf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "xlsx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "expires_at"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "document_id": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "issued_at": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "rate_limit_remaining": {
        +            "anyOf": [
        +              {
        +                "minimum": 0,
        +                "type": "integer"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "request_id": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "schema_version": {
        +            "const": "1.0.0",
        +            "default": "1.0.0",
        +            "type": "string"
        +          },
        +          "scope_boundary": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        +                "properties": {
        +                  "not_in_scope": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "produced": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "recommended_companions": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "type": "string"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "produced",
        +                  "not_in_scope"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tier": {
        +            "enum": [
        +              "free",
        +              "paid"
        +            ],
        +            "type": "string"
        +          },
        +          "tier_upgrade": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        +                "properties": {
        +                  "available_tiers": {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        +                      "properties": {
        +                        "billing": {
        +                          "enum": [
        +                            "one_off",
        +                            "monthly",
        +                            "annual"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "currency": {
        +                          "enum": [
        +                            "GBP",
        +                            "SGD",
        +                            "EUR",
        +                            "USD",
        +                            "CAD",
        +                            "AUD",
        +                            "NZD",
        +                            "MYR"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "display_name": {
        +                          "type": "string"
        +                        },
        +                        "price_local": {
        +                          "type": "number"
        +                        },
        +                        "tier_slug": {
        +                          "enum": [
        +                            "7_day_pass",
        +                            "solo",
        +                            "studio",
        +                            "practice"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "unlock_summary": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "tier_slug",
        +                        "display_name",
        +                        "price_local",
        +                        "currency",
        +                        "billing",
        +                        "unlock_summary"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "current_tier": {
        +                    "const": "free",
        +                    "default": "free",
        +                    "type": "string"
        +                  },
        +                  "pass_credit": {
        +                    "anyOf": [
        +                      {
        +                        "additionalProperties": false,
        +                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        +                        "properties": {
        +                          "amount_local": {
        +                            "type": "number"
        +                          },
        +                          "applies_to": {
        +                            "const": "solo_first_month",
        +                            "default": "solo_first_month",
        +                            "type": "string"
        +                          },
        +                          "currency": {
        +                            "type": "string"
        +                          },
        +                          "redeemable_until": {
        +                            "type": "string"
        +                          }
        +                        },
        +                        "required": [
        +                          "amount_local",
        +                          "currency",
        +                          "redeemable_until"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "pricing_url": {
        +                    "default": "https://civilquants.com/pricing",
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "available_tiers"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tos_url": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "upgrade_hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "warranty_disclaimer": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          }
        +        },
        +        "required": [
        +          "request_id",
        +          "issued_at",
        +          "tier"
        +        ],
        +        "type": "object"
        +      },
        +      "data": {
        +        "default": null,
        +        "title": "Data"
        +      },
        +      "error": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        +            "properties": {
        +              "code": {
        +                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        +                "enum": [
        +                  "RATE_LIMIT_EXCEEDED",
        +                  "TIER_INSUFFICIENT",
        +                  "INVALID_INPUT",
        +                  "SCHEMA_VERSION_MISMATCH",
        +                  "SCHEMA_INVARIANT_VIOLATION",
        +                  "UPSTREAM_TIMEOUT",
        +                  "BACKEND_FAILURE",
        +                  "IP_BLOCKED",
        +                  "RESOURCE_NOT_FOUND",
        +                  "RENDER_FAILURE",
        +                  "OCR_LOW_CONFIDENCE",
        +                  "MANUAL_REVIEW_REQUIRED",
        +                  "ACCEPTANCE_REQUIRED",
        +                  "INVALID_TOKEN"
        +                ],
        +                "type": "string"
        +              },
        +              "details": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "message": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "recoverable": {
        +                "type": "boolean"
        +              },
        +              "retry_after_seconds": {
        +                "anyOf": [
        +                  {
        +                    "minimum": 0,
        +                    "type": "integer"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              }
        +            },
        +            "required": [
        +              "code",
        +              "message",
        +              "recoverable"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      }
        +    },
        +    "required": [
        +      "_meta"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedcompute_road_marking1 field changed
      • changedOutput schema / properties / result / anyOf
        Previous value: -[
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "_meta": {
        -        "additionalProperties": false,
        -        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        -        "properties": {
        -          "deliverables": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        -                "properties": {
        -                  "docx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "dxf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "expires_at": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  },
        -                  "pdf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "xlsx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "expires_at"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "document_id": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "issued_at": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "rate_limit_remaining": {
        -            "anyOf": [
        -              {
        -                "minimum": 0,
        -                "type": "integer"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "request_id": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "schema_version": {
        -            "const": "1.0.0",
        -            "default": "1.0.0",
        -            "type": "string"
        -          },
        -          "scope_boundary": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        -                "properties": {
        -                  "not_in_scope": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "produced": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "recommended_companions": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "type": "string"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "produced",
        -                  "not_in_scope"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tier": {
        -            "enum": [
        -              "free",
        -              "paid"
        -            ],
        -            "type": "string"
        -          },
        -          "tier_upgrade": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        -                "properties": {
        -                  "available_tiers": {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        -                      "properties": {
        -                        "billing": {
        -                          "enum": [
        -                            "one_off",
        -                            "monthly",
        -                            "annual"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "currency": {
        -                          "enum": [
        -                            "GBP",
        -                            "SGD",
        -                            "EUR",
        -                            "USD",
        -                            "CAD",
        -                            "AUD",
        -                            "NZD",
        -                            "MYR"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "display_name": {
        -                          "type": "string"
        -                        },
        -                        "price_local": {
        -                          "type": "number"
        -                        },
        -                        "tier_slug": {
        -                          "enum": [
        -                            "7_day_pass",
        -                            "solo",
        -                            "studio",
        -                            "practice"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "unlock_summary": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "tier_slug",
        -                        "display_name",
        -                        "price_local",
        -                        "currency",
        -                        "billing",
        -                        "unlock_summary"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "current_tier": {
        -                    "const": "free",
        -                    "default": "free",
        -                    "type": "string"
        -                  },
        -                  "pass_credit": {
        -                    "anyOf": [
        -                      {
        -                        "additionalProperties": false,
        -                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        -                        "properties": {
        -                          "amount_local": {
        -                            "type": "number"
        -                          },
        -                          "applies_to": {
        -                            "const": "solo_first_month",
        -                            "default": "solo_first_month",
        -                            "type": "string"
        -                          },
        -                          "currency": {
        -                            "type": "string"
        -                          },
        -                          "redeemable_until": {
        -                            "type": "string"
        -                          }
        -                        },
        -                        "required": [
        -                          "amount_local",
        -                          "currency",
        -                          "redeemable_until"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "pricing_url": {
        -                    "default": "https://civilquants.com/pricing",
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "available_tiers"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tos_url": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "upgrade_hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "warranty_disclaimer": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          }
        -        },
        -        "required": [
        -          "request_id",
        -          "issued_at",
        -          "tier"
        -        ],
        -        "type": "object"
        -      },
        -      "data": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Schema § 1.1 — the typed payload returned inside `MCPResponse[ComputeResult]`.\n\nFree-tier responses omit `drawings` (the downloadable CAD artefact\npointers — the paid differentiator); the bridge enforces this. The\n`audit_trail` and the inline `drawing` preview are present on BOTH tiers\n(V1 ALIGN / 60th-fire D + C). `text_summary` is bounded to 2000 chars —\nkeeps the LLM-facing summary token-cheap and forces longer narrative into\nBoQ row descriptions where it belongs. `warnings` is the non-fatal\ngeometry advisory list (both tiers).",
        -            "properties": {
        -              "assembly_slug": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "audit_trail": {
        -                "anyOf": [
        -                  {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.7 — paid-tier audit-trail entry.\n\nOne entry per BoQ row; `boq_row_index` ties to the row position in\n`ComputeResult.boq_rows`. `derivation` is the human-readable formula\nwalk-through; `formula` is the optional formal expression.",
        -                      "properties": {
        -                        "boq_row_index": {
        -                          "minimum": 0,
        -                          "type": "integer"
        -                        },
        -                        "derivation": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "formula": {
        -                          "anyOf": [
        -                            {
        -                              "type": "string"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ],
        -                          "default": null
        -                        },
        -                        "id": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "parameters_referenced": {
        -                          "items": {
        -                            "type": "string"
        -                          },
        -                          "type": "array"
        -                        }
        -                      },
        -                      "required": [
        -                        "id",
        -                        "boq_row_index",
        -                        "derivation"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "boq_rows": {
        -                "items": {
        -                  "additionalProperties": false,
        -                  "description": "Schema § 1.3 — a single bill row in the requested standard's format.\n\n`description` is the non-verbatim functional description per spec § 13.9 /\n§ 15 invariant — NEVER reproduces a standard's verbatim clause text.\n`rate` / `amount` ship null because rates are commodity data the customer\nowns; the engine's job is the measurement, not the pricing.",
        -                  "properties": {
        -                    "amount": {
        -                      "anyOf": [
        -                        {
        -                          "type": "number"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "attribution": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "audit_id": {
        -                      "anyOf": [
        -                        {
        -                          "type": "string"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "description": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "quantity": {
        -                      "minimum": 0,
        -                      "type": "number"
        -                    },
        -                    "rate": {
        -                      "anyOf": [
        -                        {
        -                          "type": "number"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "unit": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "work_section": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    }
        -                  },
        -                  "required": [
        -                    "work_section",
        -                    "description",
        -                    "quantity",
        -                    "unit",
        -                    "attribution"
        -                  ],
        -                  "type": "object"
        -                },
        -                "type": "array"
        -              },
        -              "drawing": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": false,
        -                    "description": "Schema § 1.6a — inline server-rendered SVG preview of the geometry.\n\nThe MCP mirror of the web ``/compute`` response's ``drawing`` field\n(``api.schemas.compute.DrawingRef``): the same on-screen dimensioned\ndrawing both tiers see in the workspace, surfaced on the MCP compute\nresponse so a chat client can render it inline (60th-fire item C). This\nis the on-screen preview — present on BOTH tiers per the free/paid\nboundary; the downloadable CAD artefacts (DXF / dimensioned PDF) remain\nthe paid differentiator via the export tools.\n\nDefined here rather than importing ``DrawingRef`` because the web\n``schemas`` package imports back into this module (``schemas.render``),\nso reusing it would create an import cycle — the MCP wire contract keeps\nits own copy, the same pattern as ``BoQRow`` / ``DrawingReference``.",
        -                    "properties": {
        -                      "entity_count": {
        -                        "minimum": 0,
        -                        "type": "integer"
        -                      },
        -                      "svg_b64": {
        -                        "minLength": 1,
        -                        "type": "string"
        -                      },
        -                      "unit_of_drawing": {
        -                        "const": "m",
        -                        "default": "m",
        -                        "type": "string"
        -                      },
        -                      "viewbox_height": {
        -                        "exclusiveMinimum": 0,
        -                        "type": "number"
        -                      },
        -                      "viewbox_width": {
        -                        "exclusiveMinimum": 0,
        -                        "type": "number"
        -                      },
        -                      "viewbox_x": {
        -                        "type": "number"
        -                      },
        -                      "viewbox_y": {
        -                        "type": "number"
        -                      }
        -                    },
        -                    "required": [
        -                      "svg_b64",
        -                      "viewbox_x",
        -                      "viewbox_y",
        -                      "viewbox_width",
        -                      "viewbox_height",
        -                      "entity_count"
        -                    ],
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "drawings": {
        -                "anyOf": [
        -                  {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.6 — paid-tier drawing artefact pointer.\n\n`url` is an R2-signed URL; expiry is carried in `_meta.deliverables.expires_at`\non the envelope (not duplicated here). `layers` is DXF-only; PDF/SVG\ncallers omit it.",
        -                      "properties": {
        -                        "drawing_type": {
        -                          "enum": [
        -                            "section",
        -                            "plan",
        -                            "elevation",
        -                            "isometric",
        -                            "detail"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "format": {
        -                          "enum": [
        -                            "DXF",
        -                            "PDF",
        -                            "SVG"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "layers": {
        -                          "anyOf": [
        -                            {
        -                              "items": {
        -                                "type": "string"
        -                              },
        -                              "type": "array"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ],
        -                          "default": null
        -                        },
        -                        "scale": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "sheet_size": {
        -                          "enum": [
        -                            "A1",
        -                            "A2",
        -                            "A3",
        -                            "A4"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "url": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "drawing_type",
        -                        "format",
        -                        "url",
        -                        "sheet_size",
        -                        "scale"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "parameters_used": {
        -                "additionalProperties": false,
        -                "description": "Schema § 1.2 — the parameter snapshot the engine actually used.\n\nSplits user-supplied values from engine defaults so customers can see\nwhich numbers came from them and which the engine filled in. Every\ndefaulted parameter SHOULD have a corresponding entry in `assumptions`\n— the bridge layer enforces this when wrapping engine output.",
        -                "properties": {
        -                  "assumptions": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "engine_defaults": {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  "resolved_from_description": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "additionalProperties": false,
        -                          "description": "Schema § 1.2 — a parameter resolved by the forgiving-input layer.\n\nPopulated by the Track B-Forgiving Haiku-4.5 resolution pass; until that\nlayer lands, instances are constructed only by tests. `source` distinguishes\nthe resolution path so customers can audit which fields were inferred.",
        -                          "properties": {
        -                            "confidence": {
        -                              "anyOf": [
        -                                {
        -                                  "enum": [
        -                                    "high",
        -                                    "medium",
        -                                    "low"
        -                                  ],
        -                                  "type": "string"
        -                                },
        -                                {
        -                                  "type": "null"
        -                                }
        -                              ],
        -                              "default": null
        -                            },
        -                            "field_name": {
        -                              "minLength": 1,
        -                              "type": "string"
        -                            },
        -                            "resolved_value": {},
        -                            "source": {
        -                              "enum": [
        -                                "description_field",
        -                                "haiku_resolution",
        -                                "engine_default"
        -                              ],
        -                              "type": "string"
        -                            }
        -                          },
        -                          "required": [
        -                            "field_name",
        -                            "resolved_value",
        -                            "source"
        -                          ],
        -                          "type": "object"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "user_supplied": {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  }
        -                },
        -                "type": "object"
        -              },
        -              "standard": {
        -                "enum": [
        -                  "CESMM4",
        -                  "NRM2",
        -                  "SMM7",
        -                  "MMHW"
        -                ],
        -                "type": "string"
        -              },
        -              "text_summary": {
        -                "maxLength": 2000,
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "totals_summary": {
        -                "additionalProperties": false,
        -                "description": "Schema § 1.4 — totals_summary as a typed wrapper around the free-form dict.\n\nWire shape is a flat object (`{\"concrete_m3\": {...}, \"rebar_t\": {...}}`).\nWe model it as `RootModel`-equivalent via `model_config(extra=\"allow\")`\n+ a single `__root__`-style `entries` dict. Pydantic v2 recommends\n`RootModel` for free-form roots; using a wrapper class keeps the import\nsurface uniform with the rest of this module.",
        -                "properties": {
        -                  "entries": {
        -                    "additionalProperties": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.4 — single material/work-class total entry.",
        -                      "properties": {
        -                        "quantity": {
        -                          "minimum": 0,
        -                          "type": "number"
        -                        },
        -                        "unit": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "quantity",
        -                        "unit"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "object"
        -                  }
        -                },
        -                "type": "object"
        -              },
        -              "warnings": {
        -                "items": {
        -                  "additionalProperties": false,
        -                  "description": "Schema § 1.8 — a non-fatal geometry advisory (56th-fire T2).\n\nThe wire projection of the engine's `core.GeometryWarning`. Advisory only:\na warning NEVER changes a measured quantity — it flags geometry that is\nvalid but likely a mistake (e.g. a stale dependent-height default). Present\non BOTH tiers — a correctness/safety signal, not a paid feature.",
        -                  "properties": {
        -                    "affected_params": {
        -                      "items": {
        -                        "type": "string"
        -                      },
        -                      "type": "array"
        -                    },
        -                    "code": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "detail": {
        -                      "additionalProperties": {
        -                        "type": "number"
        -                      },
        -                      "type": "object"
        -                    },
        -                    "message": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "severity": {
        -                      "enum": [
        -                        "info",
        -                        "advisory",
        -                        "caution"
        -                      ],
        -                      "type": "string"
        -                    }
        -                  },
        -                  "required": [
        -                    "code",
        -                    "severity",
        -                    "message"
        -                  ],
        -                  "type": "object"
        -                },
        -                "type": "array"
        -              }
        -            },
        -            "required": [
        -              "assembly_slug",
        -              "standard",
        -              "parameters_used",
        -              "boq_rows",
        -              "totals_summary",
        -              "text_summary"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      },
        -      "error": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        -            "properties": {
        -              "code": {
        -                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        -                "enum": [
        -                  "RATE_LIMIT_EXCEEDED",
        -                  "TIER_INSUFFICIENT",
        -                  "INVALID_INPUT",
        -                  "SCHEMA_VERSION_MISMATCH",
        -                  "SCHEMA_INVARIANT_VIOLATION",
        -                  "UPSTREAM_TIMEOUT",
        -                  "BACKEND_FAILURE",
        -                  "IP_BLOCKED",
        -                  "RESOURCE_NOT_FOUND",
        -                  "RENDER_FAILURE",
        -                  "OCR_LOW_CONFIDENCE",
        -                  "MANUAL_REVIEW_REQUIRED",
        -                  "ACCEPTANCE_REQUIRED",
        -                  "INVALID_TOKEN"
        -                ],
        -                "type": "string"
        -              },
        -              "details": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "message": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "recoverable": {
        -                "type": "boolean"
        -              },
        -              "retry_after_seconds": {
        -                "anyOf": [
        -                  {
        -                    "minimum": 0,
        -                    "type": "integer"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              }
        -            },
        -            "required": [
        -              "code",
        -              "message",
        -              "recoverable"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      }
        -    },
        -    "required": [
        -      "_meta"
        -    ],
        -    "type": "object"
        -  },
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "_meta": {
        -        "additionalProperties": false,
        -        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        -        "properties": {
        -          "deliverables": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        -                "properties": {
        -                  "docx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "dxf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "expires_at": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  },
        -                  "pdf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "xlsx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "expires_at"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "document_id": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "issued_at": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "rate_limit_remaining": {
        -            "anyOf": [
        -              {
        -                "minimum": 0,
        -                "type": "integer"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "request_id": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "schema_version": {
        -            "const": "1.0.0",
        -            "default": "1.0.0",
        -            "type": "string"
        -          },
        -          "scope_boundary": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        -                "properties": {
        -                  "not_in_scope": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "produced": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "recommended_companions": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "type": "string"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "produced",
        -                  "not_in_scope"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tier": {
        -            "enum": [
        -              "free",
        -              "paid"
        -            ],
        -            "type": "string"
        -          },
        -          "tier_upgrade": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        -                "properties": {
        -                  "available_tiers": {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        -                      "properties": {
        -                        "billing": {
        -                          "enum": [
        -                            "one_off",
        -                            "monthly",
        -                            "annual"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "currency": {
        -                          "enum": [
        -                            "GBP",
        -                            "SGD",
        -                            "EUR",
        -                            "USD",
        -                            "CAD",
        -                            "AUD",
        -                            "NZD",
        -                            "MYR"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "display_name": {
        -                          "type": "string"
        -                        },
        -                        "price_local": {
        -                          "type": "number"
        -                        },
        -                        "tier_slug": {
        -                          "enum": [
        -                            "7_day_pass",
        -                            "solo",
        -                            "studio",
        -                            "practice"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "unlock_summary": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "tier_slug",
        -                        "display_name",
        -                        "price_local",
        -                        "currency",
        -                        "billing",
        -                        "unlock_summary"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "current_tier": {
        -                    "const": "free",
        -                    "default": "free",
        -                    "type": "string"
        -                  },
        -                  "pass_credit": {
        -                    "anyOf": [
        -                      {
        -                        "additionalProperties": false,
        -                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        -                        "properties": {
        -                          "amount_local": {
        -                            "type": "number"
        -                          },
        -                          "applies_to": {
        -                            "const": "solo_first_month",
        -                            "default": "solo_first_month",
        -                            "type": "string"
        -                          },
        -                          "currency": {
        -                            "type": "string"
        -                          },
        -                          "redeemable_until": {
        -                            "type": "string"
        -                          }
        -                        },
        -                        "required": [
        -                          "amount_local",
        -                          "currency",
        -                          "redeemable_until"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "pricing_url": {
        -                    "default": "https://civilquants.com/pricing",
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "available_tiers"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tos_url": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "upgrade_hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "warranty_disclaimer": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          }
        -        },
        -        "required": [
        -          "request_id",
        -          "issued_at",
        -          "tier"
        -        ],
        -        "type": "object"
        -      },
        -      "data": {
        -        "default": null,
        -        "title": "Data"
        -      },
        -      "error": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        -            "properties": {
        -              "code": {
        -                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        -                "enum": [
        -                  "RATE_LIMIT_EXCEEDED",
        -                  "TIER_INSUFFICIENT",
        -                  "INVALID_INPUT",
        -                  "SCHEMA_VERSION_MISMATCH",
        -                  "SCHEMA_INVARIANT_VIOLATION",
        -                  "UPSTREAM_TIMEOUT",
        -                  "BACKEND_FAILURE",
        -                  "IP_BLOCKED",
        -                  "RESOURCE_NOT_FOUND",
        -                  "RENDER_FAILURE",
        -                  "OCR_LOW_CONFIDENCE",
        -                  "MANUAL_REVIEW_REQUIRED",
        -                  "ACCEPTANCE_REQUIRED",
        -                  "INVALID_TOKEN"
        -                ],
        -                "type": "string"
        -              },
        -              "details": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "message": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "recoverable": {
        -                "type": "boolean"
        -              },
        -              "retry_after_seconds": {
        -                "anyOf": [
        -                  {
        -                    "minimum": 0,
        -                    "type": "integer"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              }
        -            },
        -            "required": [
        -              "code",
        -              "message",
        -              "recoverable"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      }
        -    },
        -    "required": [
        -      "_meta"
        -    ],
        -    "type": "object"
        -  }
        -]New value: +[
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "_meta": {
        +        "additionalProperties": false,
        +        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        +        "properties": {
        +          "deliverables": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        +                "properties": {
        +                  "docx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "dxf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "expires_at": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  },
        +                  "pdf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "xlsx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "expires_at"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "document_id": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "issued_at": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "rate_limit_remaining": {
        +            "anyOf": [
        +              {
        +                "minimum": 0,
        +                "type": "integer"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "request_id": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "schema_version": {
        +            "const": "1.0.0",
        +            "default": "1.0.0",
        +            "type": "string"
        +          },
        +          "scope_boundary": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        +                "properties": {
        +                  "not_in_scope": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "produced": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "recommended_companions": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "type": "string"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "produced",
        +                  "not_in_scope"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tier": {
        +            "enum": [
        +              "free",
        +              "paid"
        +            ],
        +            "type": "string"
        +          },
        +          "tier_upgrade": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        +                "properties": {
        +                  "available_tiers": {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        +                      "properties": {
        +                        "billing": {
        +                          "enum": [
        +                            "one_off",
        +                            "monthly",
        +                            "annual"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "currency": {
        +                          "enum": [
        +                            "GBP",
        +                            "SGD",
        +                            "EUR",
        +                            "USD",
        +                            "CAD",
        +                            "AUD",
        +                            "NZD",
        +                            "MYR"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "display_name": {
        +                          "type": "string"
        +                        },
        +                        "price_local": {
        +                          "type": "number"
        +                        },
        +                        "tier_slug": {
        +                          "enum": [
        +                            "7_day_pass",
        +                            "solo",
        +                            "studio",
        +                            "practice"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "unlock_summary": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "tier_slug",
        +                        "display_name",
        +                        "price_local",
        +                        "currency",
        +                        "billing",
        +                        "unlock_summary"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "current_tier": {
        +                    "const": "free",
        +                    "default": "free",
        +                    "type": "string"
        +                  },
        +                  "pass_credit": {
        +                    "anyOf": [
        +                      {
        +                        "additionalProperties": false,
        +                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        +                        "properties": {
        +                          "amount_local": {
        +                            "type": "number"
        +                          },
        +                          "applies_to": {
        +                            "const": "solo_first_month",
        +                            "default": "solo_first_month",
        +                            "type": "string"
        +                          },
        +                          "currency": {
        +                            "type": "string"
        +                          },
        +                          "redeemable_until": {
        +                            "type": "string"
        +                          }
        +                        },
        +                        "required": [
        +                          "amount_local",
        +                          "currency",
        +                          "redeemable_until"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "pricing_url": {
        +                    "default": "https://civilquants.com/pricing",
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "available_tiers"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tos_url": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "upgrade_hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "warranty_disclaimer": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          }
        +        },
        +        "required": [
        +          "request_id",
        +          "issued_at",
        +          "tier"
        +        ],
        +        "type": "object"
        +      },
        +      "data": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Schema § 1.1 — the typed payload returned inside `MCPResponse[ComputeResult]`.\n\nFree-tier responses omit `drawings` (the downloadable CAD artefact\npointers — the paid differentiator); the bridge enforces this. The\n`audit_trail` and the inline `drawing` preview are present on BOTH tiers\n(V1 ALIGN / 60th-fire D + C). `text_summary` is bounded to 2000 chars —\nkeeps the LLM-facing summary token-cheap and forces longer narrative into\nBoQ row descriptions where it belongs. `warnings` is the non-fatal\ngeometry advisory list (both tiers).",
        +            "properties": {
        +              "assembly_slug": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "audit_trail": {
        +                "anyOf": [
        +                  {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.7 — paid-tier audit-trail entry.\n\nOne entry per BoQ row; `boq_row_index` ties to the row position in\n`ComputeResult.boq_rows`. `derivation` is the human-readable formula\nwalk-through; `formula` is the optional formal expression.",
        +                      "properties": {
        +                        "boq_row_index": {
        +                          "minimum": 0,
        +                          "type": "integer"
        +                        },
        +                        "derivation": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "formula": {
        +                          "anyOf": [
        +                            {
        +                              "type": "string"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ],
        +                          "default": null
        +                        },
        +                        "id": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "parameters_referenced": {
        +                          "items": {
        +                            "type": "string"
        +                          },
        +                          "type": "array"
        +                        }
        +                      },
        +                      "required": [
        +                        "id",
        +                        "boq_row_index",
        +                        "derivation"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "boq_rows": {
        +                "items": {
        +                  "additionalProperties": false,
        +                  "description": "Schema § 1.3 — a single bill row in the requested standard's format.\n\n`description` is the non-verbatim functional description per spec § 13.9 /\n§ 15 invariant — NEVER reproduces a standard's verbatim clause text.\n`rate` / `amount` ship null because rates are commodity data the customer\nowns; the engine's job is the measurement, not the pricing.",
        +                  "properties": {
        +                    "amount": {
        +                      "anyOf": [
        +                        {
        +                          "type": "number"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "attribution": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "audit_id": {
        +                      "anyOf": [
        +                        {
        +                          "type": "string"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "description": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "quantity": {
        +                      "minimum": 0,
        +                      "type": "number"
        +                    },
        +                    "rate": {
        +                      "anyOf": [
        +                        {
        +                          "type": "number"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "unit": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "work_section": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    }
        +                  },
        +                  "required": [
        +                    "work_section",
        +                    "description",
        +                    "quantity",
        +                    "unit",
        +                    "attribution"
        +                  ],
        +                  "type": "object"
        +                },
        +                "type": "array"
        +              },
        +              "drawing": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": false,
        +                    "description": "Schema § 1.6a — inline server-rendered SVG preview of the geometry.\n\nThe MCP mirror of the web ``/compute`` response's ``drawing`` field\n(``api.schemas.compute.DrawingRef``): the same on-screen dimensioned\ndrawing both tiers see in the workspace, surfaced on the MCP compute\nresponse so a chat client can render it inline (60th-fire item C). This\nis the on-screen preview — present on BOTH tiers per the free/paid\nboundary; the downloadable CAD artefacts (DXF / dimensioned PDF) remain\nthe paid differentiator via the export tools.\n\nDefined here rather than importing ``DrawingRef`` because the web\n``schemas`` package imports back into this module (``schemas.render``),\nso reusing it would create an import cycle — the MCP wire contract keeps\nits own copy, the same pattern as ``BoQRow`` / ``DrawingReference``.",
        +                    "properties": {
        +                      "entity_count": {
        +                        "minimum": 0,
        +                        "type": "integer"
        +                      },
        +                      "svg_b64": {
        +                        "minLength": 1,
        +                        "type": "string"
        +                      },
        +                      "unit_of_drawing": {
        +                        "const": "m",
        +                        "default": "m",
        +                        "type": "string"
        +                      },
        +                      "viewbox_height": {
        +                        "exclusiveMinimum": 0,
        +                        "type": "number"
        +                      },
        +                      "viewbox_width": {
        +                        "exclusiveMinimum": 0,
        +                        "type": "number"
        +                      },
        +                      "viewbox_x": {
        +                        "type": "number"
        +                      },
        +                      "viewbox_y": {
        +                        "type": "number"
        +                      }
        +                    },
        +                    "required": [
        +                      "svg_b64",
        +                      "viewbox_x",
        +                      "viewbox_y",
        +                      "viewbox_width",
        +                      "viewbox_height",
        +                      "entity_count"
        +                    ],
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "drawings": {
        +                "anyOf": [
        +                  {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.6 — paid-tier drawing artefact pointer.\n\n`url` is an R2-signed URL; expiry is carried in `_meta.deliverables.expires_at`\non the envelope (not duplicated here). `layers` is DXF-only; PDF/SVG\ncallers omit it.",
        +                      "properties": {
        +                        "drawing_type": {
        +                          "enum": [
        +                            "section",
        +                            "plan",
        +                            "elevation",
        +                            "isometric",
        +                            "detail"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "format": {
        +                          "enum": [
        +                            "DXF",
        +                            "PDF",
        +                            "SVG"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "layers": {
        +                          "anyOf": [
        +                            {
        +                              "items": {
        +                                "type": "string"
        +                              },
        +                              "type": "array"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ],
        +                          "default": null
        +                        },
        +                        "scale": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "sheet_size": {
        +                          "enum": [
        +                            "A1",
        +                            "A2",
        +                            "A3",
        +                            "A4"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "url": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "drawing_type",
        +                        "format",
        +                        "url",
        +                        "sheet_size",
        +                        "scale"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "parameters_used": {
        +                "additionalProperties": false,
        +                "description": "Schema § 1.2 — the parameter snapshot the engine actually used.\n\nSplits user-supplied values from engine defaults so customers can see\nwhich numbers came from them and which the engine filled in. Every\ndefaulted parameter SHOULD have a corresponding entry in `assumptions`\n— the bridge layer enforces this when wrapping engine output.",
        +                "properties": {
        +                  "assumptions": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "engine_defaults": {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  "user_supplied": {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  }
        +                },
        +                "type": "object"
        +              },
        +              "standard": {
        +                "enum": [
        +                  "CESMM4",
        +                  "NRM2",
        +                  "SMM7",
        +                  "MMHW"
        +                ],
        +                "type": "string"
        +              },
        +              "text_summary": {
        +                "maxLength": 2000,
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "totals_summary": {
        +                "additionalProperties": false,
        +                "description": "Schema § 1.4 — totals_summary as a typed wrapper around the free-form dict.\n\nWire shape is a flat object (`{\"concrete_m3\": {...}, \"rebar_t\": {...}}`).\nWe model it as `RootModel`-equivalent via `model_config(extra=\"allow\")`\n+ a single `__root__`-style `entries` dict. Pydantic v2 recommends\n`RootModel` for free-form roots; using a wrapper class keeps the import\nsurface uniform with the rest of this module.",
        +                "properties": {
        +                  "entries": {
        +                    "additionalProperties": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.4 — single material/work-class total entry.",
        +                      "properties": {
        +                        "quantity": {
        +                          "minimum": 0,
        +                          "type": "number"
        +                        },
        +                        "unit": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "quantity",
        +                        "unit"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "object"
        +                  }
        +                },
        +                "type": "object"
        +              },
        +              "warnings": {
        +                "items": {
        +                  "additionalProperties": false,
        +                  "description": "Schema § 1.8 — a non-fatal geometry advisory (56th-fire T2).\n\nThe wire projection of the engine's `core.GeometryWarning`. Advisory only:\na warning NEVER changes a measured quantity — it flags geometry that is\nvalid but likely a mistake (e.g. a stale dependent-height default). Present\non BOTH tiers — a correctness/safety signal, not a paid feature.",
        +                  "properties": {
        +                    "affected_params": {
        +                      "items": {
        +                        "type": "string"
        +                      },
        +                      "type": "array"
        +                    },
        +                    "code": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "detail": {
        +                      "additionalProperties": {
        +                        "type": "number"
        +                      },
        +                      "type": "object"
        +                    },
        +                    "message": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "severity": {
        +                      "enum": [
        +                        "info",
        +                        "advisory",
        +                        "caution"
        +                      ],
        +                      "type": "string"
        +                    }
        +                  },
        +                  "required": [
        +                    "code",
        +                    "severity",
        +                    "message"
        +                  ],
        +                  "type": "object"
        +                },
        +                "type": "array"
        +              }
        +            },
        +            "required": [
        +              "assembly_slug",
        +              "standard",
        +              "parameters_used",
        +              "boq_rows",
        +              "totals_summary",
        +              "text_summary"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      },
        +      "error": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        +            "properties": {
        +              "code": {
        +                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        +                "enum": [
        +                  "RATE_LIMIT_EXCEEDED",
        +                  "TIER_INSUFFICIENT",
        +                  "INVALID_INPUT",
        +                  "SCHEMA_VERSION_MISMATCH",
        +                  "SCHEMA_INVARIANT_VIOLATION",
        +                  "UPSTREAM_TIMEOUT",
        +                  "BACKEND_FAILURE",
        +                  "IP_BLOCKED",
        +                  "RESOURCE_NOT_FOUND",
        +                  "RENDER_FAILURE",
        +                  "OCR_LOW_CONFIDENCE",
        +                  "MANUAL_REVIEW_REQUIRED",
        +                  "ACCEPTANCE_REQUIRED",
        +                  "INVALID_TOKEN"
        +                ],
        +                "type": "string"
        +              },
        +              "details": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "message": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "recoverable": {
        +                "type": "boolean"
        +              },
        +              "retry_after_seconds": {
        +                "anyOf": [
        +                  {
        +                    "minimum": 0,
        +                    "type": "integer"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              }
        +            },
        +            "required": [
        +              "code",
        +              "message",
        +              "recoverable"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      }
        +    },
        +    "required": [
        +      "_meta"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "_meta": {
        +        "additionalProperties": false,
        +        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        +        "properties": {
        +          "deliverables": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        +                "properties": {
        +                  "docx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "dxf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "expires_at": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  },
        +                  "pdf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "xlsx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "expires_at"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "document_id": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "issued_at": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "rate_limit_remaining": {
        +            "anyOf": [
        +              {
        +                "minimum": 0,
        +                "type": "integer"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "request_id": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "schema_version": {
        +            "const": "1.0.0",
        +            "default": "1.0.0",
        +            "type": "string"
        +          },
        +          "scope_boundary": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        +                "properties": {
        +                  "not_in_scope": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "produced": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "recommended_companions": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "type": "string"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "produced",
        +                  "not_in_scope"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tier": {
        +            "enum": [
        +              "free",
        +              "paid"
        +            ],
        +            "type": "string"
        +          },
        +          "tier_upgrade": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        +                "properties": {
        +                  "available_tiers": {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        +                      "properties": {
        +                        "billing": {
        +                          "enum": [
        +                            "one_off",
        +                            "monthly",
        +                            "annual"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "currency": {
        +                          "enum": [
        +                            "GBP",
        +                            "SGD",
        +                            "EUR",
        +                            "USD",
        +                            "CAD",
        +                            "AUD",
        +                            "NZD",
        +                            "MYR"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "display_name": {
        +                          "type": "string"
        +                        },
        +                        "price_local": {
        +                          "type": "number"
        +                        },
        +                        "tier_slug": {
        +                          "enum": [
        +                            "7_day_pass",
        +                            "solo",
        +                            "studio",
        +                            "practice"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "unlock_summary": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "tier_slug",
        +                        "display_name",
        +                        "price_local",
        +                        "currency",
        +                        "billing",
        +                        "unlock_summary"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "current_tier": {
        +                    "const": "free",
        +                    "default": "free",
        +                    "type": "string"
        +                  },
        +                  "pass_credit": {
        +                    "anyOf": [
        +                      {
        +                        "additionalProperties": false,
        +                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        +                        "properties": {
        +                          "amount_local": {
        +                            "type": "number"
        +                          },
        +                          "applies_to": {
        +                            "const": "solo_first_month",
        +                            "default": "solo_first_month",
        +                            "type": "string"
        +                          },
        +                          "currency": {
        +                            "type": "string"
        +                          },
        +                          "redeemable_until": {
        +                            "type": "string"
        +                          }
        +                        },
        +                        "required": [
        +                          "amount_local",
        +                          "currency",
        +                          "redeemable_until"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "pricing_url": {
        +                    "default": "https://civilquants.com/pricing",
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "available_tiers"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tos_url": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "upgrade_hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "warranty_disclaimer": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          }
        +        },
        +        "required": [
        +          "request_id",
        +          "issued_at",
        +          "tier"
        +        ],
        +        "type": "object"
        +      },
        +      "data": {
        +        "default": null,
        +        "title": "Data"
        +      },
        +      "error": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        +            "properties": {
        +              "code": {
        +                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        +                "enum": [
        +                  "RATE_LIMIT_EXCEEDED",
        +                  "TIER_INSUFFICIENT",
        +                  "INVALID_INPUT",
        +                  "SCHEMA_VERSION_MISMATCH",
        +                  "SCHEMA_INVARIANT_VIOLATION",
        +                  "UPSTREAM_TIMEOUT",
        +                  "BACKEND_FAILURE",
        +                  "IP_BLOCKED",
        +                  "RESOURCE_NOT_FOUND",
        +                  "RENDER_FAILURE",
        +                  "OCR_LOW_CONFIDENCE",
        +                  "MANUAL_REVIEW_REQUIRED",
        +                  "ACCEPTANCE_REQUIRED",
        +                  "INVALID_TOKEN"
        +                ],
        +                "type": "string"
        +              },
        +              "details": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "message": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "recoverable": {
        +                "type": "boolean"
        +              },
        +              "retry_after_seconds": {
        +                "anyOf": [
        +                  {
        +                    "minimum": 0,
        +                    "type": "integer"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              }
        +            },
        +            "required": [
        +              "code",
        +              "message",
        +              "recoverable"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      }
        +    },
        +    "required": [
        +      "_meta"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedcompute_single_service_run1 field changed
      • changedOutput schema / properties / result / anyOf
        Previous value: -[
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "_meta": {
        -        "additionalProperties": false,
        -        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        -        "properties": {
        -          "deliverables": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        -                "properties": {
        -                  "docx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "dxf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "expires_at": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  },
        -                  "pdf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "xlsx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "expires_at"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "document_id": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "issued_at": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "rate_limit_remaining": {
        -            "anyOf": [
        -              {
        -                "minimum": 0,
        -                "type": "integer"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "request_id": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "schema_version": {
        -            "const": "1.0.0",
        -            "default": "1.0.0",
        -            "type": "string"
        -          },
        -          "scope_boundary": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        -                "properties": {
        -                  "not_in_scope": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "produced": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "recommended_companions": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "type": "string"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "produced",
        -                  "not_in_scope"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tier": {
        -            "enum": [
        -              "free",
        -              "paid"
        -            ],
        -            "type": "string"
        -          },
        -          "tier_upgrade": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        -                "properties": {
        -                  "available_tiers": {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        -                      "properties": {
        -                        "billing": {
        -                          "enum": [
        -                            "one_off",
        -                            "monthly",
        -                            "annual"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "currency": {
        -                          "enum": [
        -                            "GBP",
        -                            "SGD",
        -                            "EUR",
        -                            "USD",
        -                            "CAD",
        -                            "AUD",
        -                            "NZD",
        -                            "MYR"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "display_name": {
        -                          "type": "string"
        -                        },
        -                        "price_local": {
        -                          "type": "number"
        -                        },
        -                        "tier_slug": {
        -                          "enum": [
        -                            "7_day_pass",
        -                            "solo",
        -                            "studio",
        -                            "practice"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "unlock_summary": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "tier_slug",
        -                        "display_name",
        -                        "price_local",
        -                        "currency",
        -                        "billing",
        -                        "unlock_summary"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "current_tier": {
        -                    "const": "free",
        -                    "default": "free",
        -                    "type": "string"
        -                  },
        -                  "pass_credit": {
        -                    "anyOf": [
        -                      {
        -                        "additionalProperties": false,
        -                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        -                        "properties": {
        -                          "amount_local": {
        -                            "type": "number"
        -                          },
        -                          "applies_to": {
        -                            "const": "solo_first_month",
        -                            "default": "solo_first_month",
        -                            "type": "string"
        -                          },
        -                          "currency": {
        -                            "type": "string"
        -                          },
        -                          "redeemable_until": {
        -                            "type": "string"
        -                          }
        -                        },
        -                        "required": [
        -                          "amount_local",
        -                          "currency",
        -                          "redeemable_until"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "pricing_url": {
        -                    "default": "https://civilquants.com/pricing",
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "available_tiers"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tos_url": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "upgrade_hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "warranty_disclaimer": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          }
        -        },
        -        "required": [
        -          "request_id",
        -          "issued_at",
        -          "tier"
        -        ],
        -        "type": "object"
        -      },
        -      "data": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Schema § 1.1 — the typed payload returned inside `MCPResponse[ComputeResult]`.\n\nFree-tier responses omit `drawings` (the downloadable CAD artefact\npointers — the paid differentiator); the bridge enforces this. The\n`audit_trail` and the inline `drawing` preview are present on BOTH tiers\n(V1 ALIGN / 60th-fire D + C). `text_summary` is bounded to 2000 chars —\nkeeps the LLM-facing summary token-cheap and forces longer narrative into\nBoQ row descriptions where it belongs. `warnings` is the non-fatal\ngeometry advisory list (both tiers).",
        -            "properties": {
        -              "assembly_slug": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "audit_trail": {
        -                "anyOf": [
        -                  {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.7 — paid-tier audit-trail entry.\n\nOne entry per BoQ row; `boq_row_index` ties to the row position in\n`ComputeResult.boq_rows`. `derivation` is the human-readable formula\nwalk-through; `formula` is the optional formal expression.",
        -                      "properties": {
        -                        "boq_row_index": {
        -                          "minimum": 0,
        -                          "type": "integer"
        -                        },
        -                        "derivation": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "formula": {
        -                          "anyOf": [
        -                            {
        -                              "type": "string"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ],
        -                          "default": null
        -                        },
        -                        "id": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "parameters_referenced": {
        -                          "items": {
        -                            "type": "string"
        -                          },
        -                          "type": "array"
        -                        }
        -                      },
        -                      "required": [
        -                        "id",
        -                        "boq_row_index",
        -                        "derivation"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "boq_rows": {
        -                "items": {
        -                  "additionalProperties": false,
        -                  "description": "Schema § 1.3 — a single bill row in the requested standard's format.\n\n`description` is the non-verbatim functional description per spec § 13.9 /\n§ 15 invariant — NEVER reproduces a standard's verbatim clause text.\n`rate` / `amount` ship null because rates are commodity data the customer\nowns; the engine's job is the measurement, not the pricing.",
        -                  "properties": {
        -                    "amount": {
        -                      "anyOf": [
        -                        {
        -                          "type": "number"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "attribution": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "audit_id": {
        -                      "anyOf": [
        -                        {
        -                          "type": "string"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "description": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "quantity": {
        -                      "minimum": 0,
        -                      "type": "number"
        -                    },
        -                    "rate": {
        -                      "anyOf": [
        -                        {
        -                          "type": "number"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "unit": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "work_section": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    }
        -                  },
        -                  "required": [
        -                    "work_section",
        -                    "description",
        -                    "quantity",
        -                    "unit",
        -                    "attribution"
        -                  ],
        -                  "type": "object"
        -                },
        -                "type": "array"
        -              },
        -              "drawing": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": false,
        -                    "description": "Schema § 1.6a — inline server-rendered SVG preview of the geometry.\n\nThe MCP mirror of the web ``/compute`` response's ``drawing`` field\n(``api.schemas.compute.DrawingRef``): the same on-screen dimensioned\ndrawing both tiers see in the workspace, surfaced on the MCP compute\nresponse so a chat client can render it inline (60th-fire item C). This\nis the on-screen preview — present on BOTH tiers per the free/paid\nboundary; the downloadable CAD artefacts (DXF / dimensioned PDF) remain\nthe paid differentiator via the export tools.\n\nDefined here rather than importing ``DrawingRef`` because the web\n``schemas`` package imports back into this module (``schemas.render``),\nso reusing it would create an import cycle — the MCP wire contract keeps\nits own copy, the same pattern as ``BoQRow`` / ``DrawingReference``.",
        -                    "properties": {
        -                      "entity_count": {
        -                        "minimum": 0,
        -                        "type": "integer"
        -                      },
        -                      "svg_b64": {
        -                        "minLength": 1,
        -                        "type": "string"
        -                      },
        -                      "unit_of_drawing": {
        -                        "const": "m",
        -                        "default": "m",
        -                        "type": "string"
        -                      },
        -                      "viewbox_height": {
        -                        "exclusiveMinimum": 0,
        -                        "type": "number"
        -                      },
        -                      "viewbox_width": {
        -                        "exclusiveMinimum": 0,
        -                        "type": "number"
        -                      },
        -                      "viewbox_x": {
        -                        "type": "number"
        -                      },
        -                      "viewbox_y": {
        -                        "type": "number"
        -                      }
        -                    },
        -                    "required": [
        -                      "svg_b64",
        -                      "viewbox_x",
        -                      "viewbox_y",
        -                      "viewbox_width",
        -                      "viewbox_height",
        -                      "entity_count"
        -                    ],
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "drawings": {
        -                "anyOf": [
        -                  {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.6 — paid-tier drawing artefact pointer.\n\n`url` is an R2-signed URL; expiry is carried in `_meta.deliverables.expires_at`\non the envelope (not duplicated here). `layers` is DXF-only; PDF/SVG\ncallers omit it.",
        -                      "properties": {
        -                        "drawing_type": {
        -                          "enum": [
        -                            "section",
        -                            "plan",
        -                            "elevation",
        -                            "isometric",
        -                            "detail"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "format": {
        -                          "enum": [
        -                            "DXF",
        -                            "PDF",
        -                            "SVG"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "layers": {
        -                          "anyOf": [
        -                            {
        -                              "items": {
        -                                "type": "string"
        -                              },
        -                              "type": "array"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ],
        -                          "default": null
        -                        },
        -                        "scale": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "sheet_size": {
        -                          "enum": [
        -                            "A1",
        -                            "A2",
        -                            "A3",
        -                            "A4"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "url": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "drawing_type",
        -                        "format",
        -                        "url",
        -                        "sheet_size",
        -                        "scale"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "parameters_used": {
        -                "additionalProperties": false,
        -                "description": "Schema § 1.2 — the parameter snapshot the engine actually used.\n\nSplits user-supplied values from engine defaults so customers can see\nwhich numbers came from them and which the engine filled in. Every\ndefaulted parameter SHOULD have a corresponding entry in `assumptions`\n— the bridge layer enforces this when wrapping engine output.",
        -                "properties": {
        -                  "assumptions": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "engine_defaults": {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  "resolved_from_description": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "additionalProperties": false,
        -                          "description": "Schema § 1.2 — a parameter resolved by the forgiving-input layer.\n\nPopulated by the Track B-Forgiving Haiku-4.5 resolution pass; until that\nlayer lands, instances are constructed only by tests. `source` distinguishes\nthe resolution path so customers can audit which fields were inferred.",
        -                          "properties": {
        -                            "confidence": {
        -                              "anyOf": [
        -                                {
        -                                  "enum": [
        -                                    "high",
        -                                    "medium",
        -                                    "low"
        -                                  ],
        -                                  "type": "string"
        -                                },
        -                                {
        -                                  "type": "null"
        -                                }
        -                              ],
        -                              "default": null
        -                            },
        -                            "field_name": {
        -                              "minLength": 1,
        -                              "type": "string"
        -                            },
        -                            "resolved_value": {},
        -                            "source": {
        -                              "enum": [
        -                                "description_field",
        -                                "haiku_resolution",
        -                                "engine_default"
        -                              ],
        -                              "type": "string"
        -                            }
        -                          },
        -                          "required": [
        -                            "field_name",
        -                            "resolved_value",
        -                            "source"
        -                          ],
        -                          "type": "object"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "user_supplied": {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  }
        -                },
        -                "type": "object"
        -              },
        -              "standard": {
        -                "enum": [
        -                  "CESMM4",
        -                  "NRM2",
        -                  "SMM7",
        -                  "MMHW"
        -                ],
        -                "type": "string"
        -              },
        -              "text_summary": {
        -                "maxLength": 2000,
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "totals_summary": {
        -                "additionalProperties": false,
        -                "description": "Schema § 1.4 — totals_summary as a typed wrapper around the free-form dict.\n\nWire shape is a flat object (`{\"concrete_m3\": {...}, \"rebar_t\": {...}}`).\nWe model it as `RootModel`-equivalent via `model_config(extra=\"allow\")`\n+ a single `__root__`-style `entries` dict. Pydantic v2 recommends\n`RootModel` for free-form roots; using a wrapper class keeps the import\nsurface uniform with the rest of this module.",
        -                "properties": {
        -                  "entries": {
        -                    "additionalProperties": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.4 — single material/work-class total entry.",
        -                      "properties": {
        -                        "quantity": {
        -                          "minimum": 0,
        -                          "type": "number"
        -                        },
        -                        "unit": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "quantity",
        -                        "unit"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "object"
        -                  }
        -                },
        -                "type": "object"
        -              },
        -              "warnings": {
        -                "items": {
        -                  "additionalProperties": false,
        -                  "description": "Schema § 1.8 — a non-fatal geometry advisory (56th-fire T2).\n\nThe wire projection of the engine's `core.GeometryWarning`. Advisory only:\na warning NEVER changes a measured quantity — it flags geometry that is\nvalid but likely a mistake (e.g. a stale dependent-height default). Present\non BOTH tiers — a correctness/safety signal, not a paid feature.",
        -                  "properties": {
        -                    "affected_params": {
        -                      "items": {
        -                        "type": "string"
        -                      },
        -                      "type": "array"
        -                    },
        -                    "code": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "detail": {
        -                      "additionalProperties": {
        -                        "type": "number"
        -                      },
        -                      "type": "object"
        -                    },
        -                    "message": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "severity": {
        -                      "enum": [
        -                        "info",
        -                        "advisory",
        -                        "caution"
        -                      ],
        -                      "type": "string"
        -                    }
        -                  },
        -                  "required": [
        -                    "code",
        -                    "severity",
        -                    "message"
        -                  ],
        -                  "type": "object"
        -                },
        -                "type": "array"
        -              }
        -            },
        -            "required": [
        -              "assembly_slug",
        -              "standard",
        -              "parameters_used",
        -              "boq_rows",
        -              "totals_summary",
        -              "text_summary"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      },
        -      "error": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        -            "properties": {
        -              "code": {
        -                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        -                "enum": [
        -                  "RATE_LIMIT_EXCEEDED",
        -                  "TIER_INSUFFICIENT",
        -                  "INVALID_INPUT",
        -                  "SCHEMA_VERSION_MISMATCH",
        -                  "SCHEMA_INVARIANT_VIOLATION",
        -                  "UPSTREAM_TIMEOUT",
        -                  "BACKEND_FAILURE",
        -                  "IP_BLOCKED",
        -                  "RESOURCE_NOT_FOUND",
        -                  "RENDER_FAILURE",
        -                  "OCR_LOW_CONFIDENCE",
        -                  "MANUAL_REVIEW_REQUIRED",
        -                  "ACCEPTANCE_REQUIRED",
        -                  "INVALID_TOKEN"
        -                ],
        -                "type": "string"
        -              },
        -              "details": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "message": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "recoverable": {
        -                "type": "boolean"
        -              },
        -              "retry_after_seconds": {
        -                "anyOf": [
        -                  {
        -                    "minimum": 0,
        -                    "type": "integer"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              }
        -            },
        -            "required": [
        -              "code",
        -              "message",
        -              "recoverable"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      }
        -    },
        -    "required": [
        -      "_meta"
        -    ],
        -    "type": "object"
        -  },
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "_meta": {
        -        "additionalProperties": false,
        -        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        -        "properties": {
        -          "deliverables": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        -                "properties": {
        -                  "docx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "dxf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "expires_at": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  },
        -                  "pdf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "xlsx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "expires_at"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "document_id": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "issued_at": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "rate_limit_remaining": {
        -            "anyOf": [
        -              {
        -                "minimum": 0,
        -                "type": "integer"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "request_id": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "schema_version": {
        -            "const": "1.0.0",
        -            "default": "1.0.0",
        -            "type": "string"
        -          },
        -          "scope_boundary": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        -                "properties": {
        -                  "not_in_scope": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "produced": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "recommended_companions": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "type": "string"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "produced",
        -                  "not_in_scope"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tier": {
        -            "enum": [
        -              "free",
        -              "paid"
        -            ],
        -            "type": "string"
        -          },
        -          "tier_upgrade": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        -                "properties": {
        -                  "available_tiers": {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        -                      "properties": {
        -                        "billing": {
        -                          "enum": [
        -                            "one_off",
        -                            "monthly",
        -                            "annual"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "currency": {
        -                          "enum": [
        -                            "GBP",
        -                            "SGD",
        -                            "EUR",
        -                            "USD",
        -                            "CAD",
        -                            "AUD",
        -                            "NZD",
        -                            "MYR"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "display_name": {
        -                          "type": "string"
        -                        },
        -                        "price_local": {
        -                          "type": "number"
        -                        },
        -                        "tier_slug": {
        -                          "enum": [
        -                            "7_day_pass",
        -                            "solo",
        -                            "studio",
        -                            "practice"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "unlock_summary": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "tier_slug",
        -                        "display_name",
        -                        "price_local",
        -                        "currency",
        -                        "billing",
        -                        "unlock_summary"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "current_tier": {
        -                    "const": "free",
        -                    "default": "free",
        -                    "type": "string"
        -                  },
        -                  "pass_credit": {
        -                    "anyOf": [
        -                      {
        -                        "additionalProperties": false,
        -                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        -                        "properties": {
        -                          "amount_local": {
        -                            "type": "number"
        -                          },
        -                          "applies_to": {
        -                            "const": "solo_first_month",
        -                            "default": "solo_first_month",
        -                            "type": "string"
        -                          },
        -                          "currency": {
        -                            "type": "string"
        -                          },
        -                          "redeemable_until": {
        -                            "type": "string"
        -                          }
        -                        },
        -                        "required": [
        -                          "amount_local",
        -                          "currency",
        -                          "redeemable_until"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "pricing_url": {
        -                    "default": "https://civilquants.com/pricing",
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "available_tiers"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tos_url": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "upgrade_hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "warranty_disclaimer": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          }
        -        },
        -        "required": [
        -          "request_id",
        -          "issued_at",
        -          "tier"
        -        ],
        -        "type": "object"
        -      },
        -      "data": {
        -        "default": null,
        -        "title": "Data"
        -      },
        -      "error": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        -            "properties": {
        -              "code": {
        -                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        -                "enum": [
        -                  "RATE_LIMIT_EXCEEDED",
        -                  "TIER_INSUFFICIENT",
        -                  "INVALID_INPUT",
        -                  "SCHEMA_VERSION_MISMATCH",
        -                  "SCHEMA_INVARIANT_VIOLATION",
        -                  "UPSTREAM_TIMEOUT",
        -                  "BACKEND_FAILURE",
        -                  "IP_BLOCKED",
        -                  "RESOURCE_NOT_FOUND",
        -                  "RENDER_FAILURE",
        -                  "OCR_LOW_CONFIDENCE",
        -                  "MANUAL_REVIEW_REQUIRED",
        -                  "ACCEPTANCE_REQUIRED",
        -                  "INVALID_TOKEN"
        -                ],
        -                "type": "string"
        -              },
        -              "details": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "message": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "recoverable": {
        -                "type": "boolean"
        -              },
        -              "retry_after_seconds": {
        -                "anyOf": [
        -                  {
        -                    "minimum": 0,
        -                    "type": "integer"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              }
        -            },
        -            "required": [
        -              "code",
        -              "message",
        -              "recoverable"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      }
        -    },
        -    "required": [
        -      "_meta"
        -    ],
        -    "type": "object"
        -  }
        -]New value: +[
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "_meta": {
        +        "additionalProperties": false,
        +        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        +        "properties": {
        +          "deliverables": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        +                "properties": {
        +                  "docx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "dxf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "expires_at": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  },
        +                  "pdf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "xlsx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "expires_at"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "document_id": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "issued_at": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "rate_limit_remaining": {
        +            "anyOf": [
        +              {
        +                "minimum": 0,
        +                "type": "integer"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "request_id": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "schema_version": {
        +            "const": "1.0.0",
        +            "default": "1.0.0",
        +            "type": "string"
        +          },
        +          "scope_boundary": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        +                "properties": {
        +                  "not_in_scope": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "produced": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "recommended_companions": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "type": "string"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "produced",
        +                  "not_in_scope"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tier": {
        +            "enum": [
        +              "free",
        +              "paid"
        +            ],
        +            "type": "string"
        +          },
        +          "tier_upgrade": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        +                "properties": {
        +                  "available_tiers": {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        +                      "properties": {
        +                        "billing": {
        +                          "enum": [
        +                            "one_off",
        +                            "monthly",
        +                            "annual"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "currency": {
        +                          "enum": [
        +                            "GBP",
        +                            "SGD",
        +                            "EUR",
        +                            "USD",
        +                            "CAD",
        +                            "AUD",
        +                            "NZD",
        +                            "MYR"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "display_name": {
        +                          "type": "string"
        +                        },
        +                        "price_local": {
        +                          "type": "number"
        +                        },
        +                        "tier_slug": {
        +                          "enum": [
        +                            "7_day_pass",
        +                            "solo",
        +                            "studio",
        +                            "practice"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "unlock_summary": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "tier_slug",
        +                        "display_name",
        +                        "price_local",
        +                        "currency",
        +                        "billing",
        +                        "unlock_summary"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "current_tier": {
        +                    "const": "free",
        +                    "default": "free",
        +                    "type": "string"
        +                  },
        +                  "pass_credit": {
        +                    "anyOf": [
        +                      {
        +                        "additionalProperties": false,
        +                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        +                        "properties": {
        +                          "amount_local": {
        +                            "type": "number"
        +                          },
        +                          "applies_to": {
        +                            "const": "solo_first_month",
        +                            "default": "solo_first_month",
        +                            "type": "string"
        +                          },
        +                          "currency": {
        +                            "type": "string"
        +                          },
        +                          "redeemable_until": {
        +                            "type": "string"
        +                          }
        +                        },
        +                        "required": [
        +                          "amount_local",
        +                          "currency",
        +                          "redeemable_until"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "pricing_url": {
        +                    "default": "https://civilquants.com/pricing",
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "available_tiers"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tos_url": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "upgrade_hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "warranty_disclaimer": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          }
        +        },
        +        "required": [
        +          "request_id",
        +          "issued_at",
        +          "tier"
        +        ],
        +        "type": "object"
        +      },
        +      "data": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Schema § 1.1 — the typed payload returned inside `MCPResponse[ComputeResult]`.\n\nFree-tier responses omit `drawings` (the downloadable CAD artefact\npointers — the paid differentiator); the bridge enforces this. The\n`audit_trail` and the inline `drawing` preview are present on BOTH tiers\n(V1 ALIGN / 60th-fire D + C). `text_summary` is bounded to 2000 chars —\nkeeps the LLM-facing summary token-cheap and forces longer narrative into\nBoQ row descriptions where it belongs. `warnings` is the non-fatal\ngeometry advisory list (both tiers).",
        +            "properties": {
        +              "assembly_slug": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "audit_trail": {
        +                "anyOf": [
        +                  {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.7 — paid-tier audit-trail entry.\n\nOne entry per BoQ row; `boq_row_index` ties to the row position in\n`ComputeResult.boq_rows`. `derivation` is the human-readable formula\nwalk-through; `formula` is the optional formal expression.",
        +                      "properties": {
        +                        "boq_row_index": {
        +                          "minimum": 0,
        +                          "type": "integer"
        +                        },
        +                        "derivation": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "formula": {
        +                          "anyOf": [
        +                            {
        +                              "type": "string"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ],
        +                          "default": null
        +                        },
        +                        "id": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "parameters_referenced": {
        +                          "items": {
        +                            "type": "string"
        +                          },
        +                          "type": "array"
        +                        }
        +                      },
        +                      "required": [
        +                        "id",
        +                        "boq_row_index",
        +                        "derivation"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "boq_rows": {
        +                "items": {
        +                  "additionalProperties": false,
        +                  "description": "Schema § 1.3 — a single bill row in the requested standard's format.\n\n`description` is the non-verbatim functional description per spec § 13.9 /\n§ 15 invariant — NEVER reproduces a standard's verbatim clause text.\n`rate` / `amount` ship null because rates are commodity data the customer\nowns; the engine's job is the measurement, not the pricing.",
        +                  "properties": {
        +                    "amount": {
        +                      "anyOf": [
        +                        {
        +                          "type": "number"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "attribution": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "audit_id": {
        +                      "anyOf": [
        +                        {
        +                          "type": "string"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "description": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "quantity": {
        +                      "minimum": 0,
        +                      "type": "number"
        +                    },
        +                    "rate": {
        +                      "anyOf": [
        +                        {
        +                          "type": "number"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "unit": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "work_section": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    }
        +                  },
        +                  "required": [
        +                    "work_section",
        +                    "description",
        +                    "quantity",
        +                    "unit",
        +                    "attribution"
        +                  ],
        +                  "type": "object"
        +                },
        +                "type": "array"
        +              },
        +              "drawing": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": false,
        +                    "description": "Schema § 1.6a — inline server-rendered SVG preview of the geometry.\n\nThe MCP mirror of the web ``/compute`` response's ``drawing`` field\n(``api.schemas.compute.DrawingRef``): the same on-screen dimensioned\ndrawing both tiers see in the workspace, surfaced on the MCP compute\nresponse so a chat client can render it inline (60th-fire item C). This\nis the on-screen preview — present on BOTH tiers per the free/paid\nboundary; the downloadable CAD artefacts (DXF / dimensioned PDF) remain\nthe paid differentiator via the export tools.\n\nDefined here rather than importing ``DrawingRef`` because the web\n``schemas`` package imports back into this module (``schemas.render``),\nso reusing it would create an import cycle — the MCP wire contract keeps\nits own copy, the same pattern as ``BoQRow`` / ``DrawingReference``.",
        +                    "properties": {
        +                      "entity_count": {
        +                        "minimum": 0,
        +                        "type": "integer"
        +                      },
        +                      "svg_b64": {
        +                        "minLength": 1,
        +                        "type": "string"
        +                      },
        +                      "unit_of_drawing": {
        +                        "const": "m",
        +                        "default": "m",
        +                        "type": "string"
        +                      },
        +                      "viewbox_height": {
        +                        "exclusiveMinimum": 0,
        +                        "type": "number"
        +                      },
        +                      "viewbox_width": {
        +                        "exclusiveMinimum": 0,
        +                        "type": "number"
        +                      },
        +                      "viewbox_x": {
        +                        "type": "number"
        +                      },
        +                      "viewbox_y": {
        +                        "type": "number"
        +                      }
        +                    },
        +                    "required": [
        +                      "svg_b64",
        +                      "viewbox_x",
        +                      "viewbox_y",
        +                      "viewbox_width",
        +                      "viewbox_height",
        +                      "entity_count"
        +                    ],
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "drawings": {
        +                "anyOf": [
        +                  {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.6 — paid-tier drawing artefact pointer.\n\n`url` is an R2-signed URL; expiry is carried in `_meta.deliverables.expires_at`\non the envelope (not duplicated here). `layers` is DXF-only; PDF/SVG\ncallers omit it.",
        +                      "properties": {
        +                        "drawing_type": {
        +                          "enum": [
        +                            "section",
        +                            "plan",
        +                            "elevation",
        +                            "isometric",
        +                            "detail"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "format": {
        +                          "enum": [
        +                            "DXF",
        +                            "PDF",
        +                            "SVG"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "layers": {
        +                          "anyOf": [
        +                            {
        +                              "items": {
        +                                "type": "string"
        +                              },
        +                              "type": "array"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ],
        +                          "default": null
        +                        },
        +                        "scale": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "sheet_size": {
        +                          "enum": [
        +                            "A1",
        +                            "A2",
        +                            "A3",
        +                            "A4"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "url": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "drawing_type",
        +                        "format",
        +                        "url",
        +                        "sheet_size",
        +                        "scale"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "parameters_used": {
        +                "additionalProperties": false,
        +                "description": "Schema § 1.2 — the parameter snapshot the engine actually used.\n\nSplits user-supplied values from engine defaults so customers can see\nwhich numbers came from them and which the engine filled in. Every\ndefaulted parameter SHOULD have a corresponding entry in `assumptions`\n— the bridge layer enforces this when wrapping engine output.",
        +                "properties": {
        +                  "assumptions": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "engine_defaults": {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  "user_supplied": {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  }
        +                },
        +                "type": "object"
        +              },
        +              "standard": {
        +                "enum": [
        +                  "CESMM4",
        +                  "NRM2",
        +                  "SMM7",
        +                  "MMHW"
        +                ],
        +                "type": "string"
        +              },
        +              "text_summary": {
        +                "maxLength": 2000,
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "totals_summary": {
        +                "additionalProperties": false,
        +                "description": "Schema § 1.4 — totals_summary as a typed wrapper around the free-form dict.\n\nWire shape is a flat object (`{\"concrete_m3\": {...}, \"rebar_t\": {...}}`).\nWe model it as `RootModel`-equivalent via `model_config(extra=\"allow\")`\n+ a single `__root__`-style `entries` dict. Pydantic v2 recommends\n`RootModel` for free-form roots; using a wrapper class keeps the import\nsurface uniform with the rest of this module.",
        +                "properties": {
        +                  "entries": {
        +                    "additionalProperties": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.4 — single material/work-class total entry.",
        +                      "properties": {
        +                        "quantity": {
        +                          "minimum": 0,
        +                          "type": "number"
        +                        },
        +                        "unit": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "quantity",
        +                        "unit"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "object"
        +                  }
        +                },
        +                "type": "object"
        +              },
        +              "warnings": {
        +                "items": {
        +                  "additionalProperties": false,
        +                  "description": "Schema § 1.8 — a non-fatal geometry advisory (56th-fire T2).\n\nThe wire projection of the engine's `core.GeometryWarning`. Advisory only:\na warning NEVER changes a measured quantity — it flags geometry that is\nvalid but likely a mistake (e.g. a stale dependent-height default). Present\non BOTH tiers — a correctness/safety signal, not a paid feature.",
        +                  "properties": {
        +                    "affected_params": {
        +                      "items": {
        +                        "type": "string"
        +                      },
        +                      "type": "array"
        +                    },
        +                    "code": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "detail": {
        +                      "additionalProperties": {
        +                        "type": "number"
        +                      },
        +                      "type": "object"
        +                    },
        +                    "message": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "severity": {
        +                      "enum": [
        +                        "info",
        +                        "advisory",
        +                        "caution"
        +                      ],
        +                      "type": "string"
        +                    }
        +                  },
        +                  "required": [
        +                    "code",
        +                    "severity",
        +                    "message"
        +                  ],
        +                  "type": "object"
        +                },
        +                "type": "array"
        +              }
        +            },
        +            "required": [
        +              "assembly_slug",
        +              "standard",
        +              "parameters_used",
        +              "boq_rows",
        +              "totals_summary",
        +              "text_summary"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      },
        +      "error": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        +            "properties": {
        +              "code": {
        +                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        +                "enum": [
        +                  "RATE_LIMIT_EXCEEDED",
        +                  "TIER_INSUFFICIENT",
        +                  "INVALID_INPUT",
        +                  "SCHEMA_VERSION_MISMATCH",
        +                  "SCHEMA_INVARIANT_VIOLATION",
        +                  "UPSTREAM_TIMEOUT",
        +                  "BACKEND_FAILURE",
        +                  "IP_BLOCKED",
        +                  "RESOURCE_NOT_FOUND",
        +                  "RENDER_FAILURE",
        +                  "OCR_LOW_CONFIDENCE",
        +                  "MANUAL_REVIEW_REQUIRED",
        +                  "ACCEPTANCE_REQUIRED",
        +                  "INVALID_TOKEN"
        +                ],
        +                "type": "string"
        +              },
        +              "details": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "message": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "recoverable": {
        +                "type": "boolean"
        +              },
        +              "retry_after_seconds": {
        +                "anyOf": [
        +                  {
        +                    "minimum": 0,
        +                    "type": "integer"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              }
        +            },
        +            "required": [
        +              "code",
        +              "message",
        +              "recoverable"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      }
        +    },
        +    "required": [
        +      "_meta"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "_meta": {
        +        "additionalProperties": false,
        +        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        +        "properties": {
        +          "deliverables": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        +                "properties": {
        +                  "docx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "dxf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "expires_at": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  },
        +                  "pdf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "xlsx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "expires_at"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "document_id": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "issued_at": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "rate_limit_remaining": {
        +            "anyOf": [
        +              {
        +                "minimum": 0,
        +                "type": "integer"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "request_id": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "schema_version": {
        +            "const": "1.0.0",
        +            "default": "1.0.0",
        +            "type": "string"
        +          },
        +          "scope_boundary": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        +                "properties": {
        +                  "not_in_scope": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "produced": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "recommended_companions": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "type": "string"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "produced",
        +                  "not_in_scope"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tier": {
        +            "enum": [
        +              "free",
        +              "paid"
        +            ],
        +            "type": "string"
        +          },
        +          "tier_upgrade": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        +                "properties": {
        +                  "available_tiers": {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        +                      "properties": {
        +                        "billing": {
        +                          "enum": [
        +                            "one_off",
        +                            "monthly",
        +                            "annual"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "currency": {
        +                          "enum": [
        +                            "GBP",
        +                            "SGD",
        +                            "EUR",
        +                            "USD",
        +                            "CAD",
        +                            "AUD",
        +                            "NZD",
        +                            "MYR"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "display_name": {
        +                          "type": "string"
        +                        },
        +                        "price_local": {
        +                          "type": "number"
        +                        },
        +                        "tier_slug": {
        +                          "enum": [
        +                            "7_day_pass",
        +                            "solo",
        +                            "studio",
        +                            "practice"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "unlock_summary": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "tier_slug",
        +                        "display_name",
        +                        "price_local",
        +                        "currency",
        +                        "billing",
        +                        "unlock_summary"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "current_tier": {
        +                    "const": "free",
        +                    "default": "free",
        +                    "type": "string"
        +                  },
        +                  "pass_credit": {
        +                    "anyOf": [
        +                      {
        +                        "additionalProperties": false,
        +                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        +                        "properties": {
        +                          "amount_local": {
        +                            "type": "number"
        +                          },
        +                          "applies_to": {
        +                            "const": "solo_first_month",
        +                            "default": "solo_first_month",
        +                            "type": "string"
        +                          },
        +                          "currency": {
        +                            "type": "string"
        +                          },
        +                          "redeemable_until": {
        +                            "type": "string"
        +                          }
        +                        },
        +                        "required": [
        +                          "amount_local",
        +                          "currency",
        +                          "redeemable_until"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "pricing_url": {
        +                    "default": "https://civilquants.com/pricing",
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "available_tiers"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tos_url": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "upgrade_hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "warranty_disclaimer": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          }
        +        },
        +        "required": [
        +          "request_id",
        +          "issued_at",
        +          "tier"
        +        ],
        +        "type": "object"
        +      },
        +      "data": {
        +        "default": null,
        +        "title": "Data"
        +      },
        +      "error": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        +            "properties": {
        +              "code": {
        +                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        +                "enum": [
        +                  "RATE_LIMIT_EXCEEDED",
        +                  "TIER_INSUFFICIENT",
        +                  "INVALID_INPUT",
        +                  "SCHEMA_VERSION_MISMATCH",
        +                  "SCHEMA_INVARIANT_VIOLATION",
        +                  "UPSTREAM_TIMEOUT",
        +                  "BACKEND_FAILURE",
        +                  "IP_BLOCKED",
        +                  "RESOURCE_NOT_FOUND",
        +                  "RENDER_FAILURE",
        +                  "OCR_LOW_CONFIDENCE",
        +                  "MANUAL_REVIEW_REQUIRED",
        +                  "ACCEPTANCE_REQUIRED",
        +                  "INVALID_TOKEN"
        +                ],
        +                "type": "string"
        +              },
        +              "details": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "message": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "recoverable": {
        +                "type": "boolean"
        +              },
        +              "retry_after_seconds": {
        +                "anyOf": [
        +                  {
        +                    "minimum": 0,
        +                    "type": "integer"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              }
        +            },
        +            "required": [
        +              "code",
        +              "message",
        +              "recoverable"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      }
        +    },
        +    "required": [
        +      "_meta"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedcompute_soakaway1 field changed
      • changedOutput schema / properties / result / anyOf
        Previous value: -[
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "_meta": {
        -        "additionalProperties": false,
        -        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        -        "properties": {
        -          "deliverables": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        -                "properties": {
        -                  "docx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "dxf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "expires_at": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  },
        -                  "pdf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "xlsx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "expires_at"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "document_id": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "issued_at": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "rate_limit_remaining": {
        -            "anyOf": [
        -              {
        -                "minimum": 0,
        -                "type": "integer"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "request_id": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "schema_version": {
        -            "const": "1.0.0",
        -            "default": "1.0.0",
        -            "type": "string"
        -          },
        -          "scope_boundary": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        -                "properties": {
        -                  "not_in_scope": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "produced": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "recommended_companions": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "type": "string"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "produced",
        -                  "not_in_scope"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tier": {
        -            "enum": [
        -              "free",
        -              "paid"
        -            ],
        -            "type": "string"
        -          },
        -          "tier_upgrade": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        -                "properties": {
        -                  "available_tiers": {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        -                      "properties": {
        -                        "billing": {
        -                          "enum": [
        -                            "one_off",
        -                            "monthly",
        -                            "annual"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "currency": {
        -                          "enum": [
        -                            "GBP",
        -                            "SGD",
        -                            "EUR",
        -                            "USD",
        -                            "CAD",
        -                            "AUD",
        -                            "NZD",
        -                            "MYR"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "display_name": {
        -                          "type": "string"
        -                        },
        -                        "price_local": {
        -                          "type": "number"
        -                        },
        -                        "tier_slug": {
        -                          "enum": [
        -                            "7_day_pass",
        -                            "solo",
        -                            "studio",
        -                            "practice"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "unlock_summary": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "tier_slug",
        -                        "display_name",
        -                        "price_local",
        -                        "currency",
        -                        "billing",
        -                        "unlock_summary"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "current_tier": {
        -                    "const": "free",
        -                    "default": "free",
        -                    "type": "string"
        -                  },
        -                  "pass_credit": {
        -                    "anyOf": [
        -                      {
        -                        "additionalProperties": false,
        -                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        -                        "properties": {
        -                          "amount_local": {
        -                            "type": "number"
        -                          },
        -                          "applies_to": {
        -                            "const": "solo_first_month",
        -                            "default": "solo_first_month",
        -                            "type": "string"
        -                          },
        -                          "currency": {
        -                            "type": "string"
        -                          },
        -                          "redeemable_until": {
        -                            "type": "string"
        -                          }
        -                        },
        -                        "required": [
        -                          "amount_local",
        -                          "currency",
        -                          "redeemable_until"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "pricing_url": {
        -                    "default": "https://civilquants.com/pricing",
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "available_tiers"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tos_url": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "upgrade_hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "warranty_disclaimer": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          }
        -        },
        -        "required": [
        -          "request_id",
        -          "issued_at",
        -          "tier"
        -        ],
        -        "type": "object"
        -      },
        -      "data": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Schema § 1.1 — the typed payload returned inside `MCPResponse[ComputeResult]`.\n\nFree-tier responses omit `drawings` (the downloadable CAD artefact\npointers — the paid differentiator); the bridge enforces this. The\n`audit_trail` and the inline `drawing` preview are present on BOTH tiers\n(V1 ALIGN / 60th-fire D + C). `text_summary` is bounded to 2000 chars —\nkeeps the LLM-facing summary token-cheap and forces longer narrative into\nBoQ row descriptions where it belongs. `warnings` is the non-fatal\ngeometry advisory list (both tiers).",
        -            "properties": {
        -              "assembly_slug": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "audit_trail": {
        -                "anyOf": [
        -                  {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.7 — paid-tier audit-trail entry.\n\nOne entry per BoQ row; `boq_row_index` ties to the row position in\n`ComputeResult.boq_rows`. `derivation` is the human-readable formula\nwalk-through; `formula` is the optional formal expression.",
        -                      "properties": {
        -                        "boq_row_index": {
        -                          "minimum": 0,
        -                          "type": "integer"
        -                        },
        -                        "derivation": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "formula": {
        -                          "anyOf": [
        -                            {
        -                              "type": "string"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ],
        -                          "default": null
        -                        },
        -                        "id": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "parameters_referenced": {
        -                          "items": {
        -                            "type": "string"
        -                          },
        -                          "type": "array"
        -                        }
        -                      },
        -                      "required": [
        -                        "id",
        -                        "boq_row_index",
        -                        "derivation"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "boq_rows": {
        -                "items": {
        -                  "additionalProperties": false,
        -                  "description": "Schema § 1.3 — a single bill row in the requested standard's format.\n\n`description` is the non-verbatim functional description per spec § 13.9 /\n§ 15 invariant — NEVER reproduces a standard's verbatim clause text.\n`rate` / `amount` ship null because rates are commodity data the customer\nowns; the engine's job is the measurement, not the pricing.",
        -                  "properties": {
        -                    "amount": {
        -                      "anyOf": [
        -                        {
        -                          "type": "number"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "attribution": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "audit_id": {
        -                      "anyOf": [
        -                        {
        -                          "type": "string"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "description": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "quantity": {
        -                      "minimum": 0,
        -                      "type": "number"
        -                    },
        -                    "rate": {
        -                      "anyOf": [
        -                        {
        -                          "type": "number"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "unit": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "work_section": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    }
        -                  },
        -                  "required": [
        -                    "work_section",
        -                    "description",
        -                    "quantity",
        -                    "unit",
        -                    "attribution"
        -                  ],
        -                  "type": "object"
        -                },
        -                "type": "array"
        -              },
        -              "drawing": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": false,
        -                    "description": "Schema § 1.6a — inline server-rendered SVG preview of the geometry.\n\nThe MCP mirror of the web ``/compute`` response's ``drawing`` field\n(``api.schemas.compute.DrawingRef``): the same on-screen dimensioned\ndrawing both tiers see in the workspace, surfaced on the MCP compute\nresponse so a chat client can render it inline (60th-fire item C). This\nis the on-screen preview — present on BOTH tiers per the free/paid\nboundary; the downloadable CAD artefacts (DXF / dimensioned PDF) remain\nthe paid differentiator via the export tools.\n\nDefined here rather than importing ``DrawingRef`` because the web\n``schemas`` package imports back into this module (``schemas.render``),\nso reusing it would create an import cycle — the MCP wire contract keeps\nits own copy, the same pattern as ``BoQRow`` / ``DrawingReference``.",
        -                    "properties": {
        -                      "entity_count": {
        -                        "minimum": 0,
        -                        "type": "integer"
        -                      },
        -                      "svg_b64": {
        -                        "minLength": 1,
        -                        "type": "string"
        -                      },
        -                      "unit_of_drawing": {
        -                        "const": "m",
        -                        "default": "m",
        -                        "type": "string"
        -                      },
        -                      "viewbox_height": {
        -                        "exclusiveMinimum": 0,
        -                        "type": "number"
        -                      },
        -                      "viewbox_width": {
        -                        "exclusiveMinimum": 0,
        -                        "type": "number"
        -                      },
        -                      "viewbox_x": {
        -                        "type": "number"
        -                      },
        -                      "viewbox_y": {
        -                        "type": "number"
        -                      }
        -                    },
        -                    "required": [
        -                      "svg_b64",
        -                      "viewbox_x",
        -                      "viewbox_y",
        -                      "viewbox_width",
        -                      "viewbox_height",
        -                      "entity_count"
        -                    ],
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "drawings": {
        -                "anyOf": [
        -                  {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.6 — paid-tier drawing artefact pointer.\n\n`url` is an R2-signed URL; expiry is carried in `_meta.deliverables.expires_at`\non the envelope (not duplicated here). `layers` is DXF-only; PDF/SVG\ncallers omit it.",
        -                      "properties": {
        -                        "drawing_type": {
        -                          "enum": [
        -                            "section",
        -                            "plan",
        -                            "elevation",
        -                            "isometric",
        -                            "detail"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "format": {
        -                          "enum": [
        -                            "DXF",
        -                            "PDF",
        -                            "SVG"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "layers": {
        -                          "anyOf": [
        -                            {
        -                              "items": {
        -                                "type": "string"
        -                              },
        -                              "type": "array"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ],
        -                          "default": null
        -                        },
        -                        "scale": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "sheet_size": {
        -                          "enum": [
        -                            "A1",
        -                            "A2",
        -                            "A3",
        -                            "A4"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "url": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "drawing_type",
        -                        "format",
        -                        "url",
        -                        "sheet_size",
        -                        "scale"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "parameters_used": {
        -                "additionalProperties": false,
        -                "description": "Schema § 1.2 — the parameter snapshot the engine actually used.\n\nSplits user-supplied values from engine defaults so customers can see\nwhich numbers came from them and which the engine filled in. Every\ndefaulted parameter SHOULD have a corresponding entry in `assumptions`\n— the bridge layer enforces this when wrapping engine output.",
        -                "properties": {
        -                  "assumptions": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "engine_defaults": {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  "resolved_from_description": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "additionalProperties": false,
        -                          "description": "Schema § 1.2 — a parameter resolved by the forgiving-input layer.\n\nPopulated by the Track B-Forgiving Haiku-4.5 resolution pass; until that\nlayer lands, instances are constructed only by tests. `source` distinguishes\nthe resolution path so customers can audit which fields were inferred.",
        -                          "properties": {
        -                            "confidence": {
        -                              "anyOf": [
        -                                {
        -                                  "enum": [
        -                                    "high",
        -                                    "medium",
        -                                    "low"
        -                                  ],
        -                                  "type": "string"
        -                                },
        -                                {
        -                                  "type": "null"
        -                                }
        -                              ],
        -                              "default": null
        -                            },
        -                            "field_name": {
        -                              "minLength": 1,
        -                              "type": "string"
        -                            },
        -                            "resolved_value": {},
        -                            "source": {
        -                              "enum": [
        -                                "description_field",
        -                                "haiku_resolution",
        -                                "engine_default"
        -                              ],
        -                              "type": "string"
        -                            }
        -                          },
        -                          "required": [
        -                            "field_name",
        -                            "resolved_value",
        -                            "source"
        -                          ],
        -                          "type": "object"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "user_supplied": {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  }
        -                },
        -                "type": "object"
        -              },
        -              "standard": {
        -                "enum": [
        -                  "CESMM4",
        -                  "NRM2",
        -                  "SMM7",
        -                  "MMHW"
        -                ],
        -                "type": "string"
        -              },
        -              "text_summary": {
        -                "maxLength": 2000,
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "totals_summary": {
        -                "additionalProperties": false,
        -                "description": "Schema § 1.4 — totals_summary as a typed wrapper around the free-form dict.\n\nWire shape is a flat object (`{\"concrete_m3\": {...}, \"rebar_t\": {...}}`).\nWe model it as `RootModel`-equivalent via `model_config(extra=\"allow\")`\n+ a single `__root__`-style `entries` dict. Pydantic v2 recommends\n`RootModel` for free-form roots; using a wrapper class keeps the import\nsurface uniform with the rest of this module.",
        -                "properties": {
        -                  "entries": {
        -                    "additionalProperties": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.4 — single material/work-class total entry.",
        -                      "properties": {
        -                        "quantity": {
        -                          "minimum": 0,
        -                          "type": "number"
        -                        },
        -                        "unit": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "quantity",
        -                        "unit"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "object"
        -                  }
        -                },
        -                "type": "object"
        -              },
        -              "warnings": {
        -                "items": {
        -                  "additionalProperties": false,
        -                  "description": "Schema § 1.8 — a non-fatal geometry advisory (56th-fire T2).\n\nThe wire projection of the engine's `core.GeometryWarning`. Advisory only:\na warning NEVER changes a measured quantity — it flags geometry that is\nvalid but likely a mistake (e.g. a stale dependent-height default). Present\non BOTH tiers — a correctness/safety signal, not a paid feature.",
        -                  "properties": {
        -                    "affected_params": {
        -                      "items": {
        -                        "type": "string"
        -                      },
        -                      "type": "array"
        -                    },
        -                    "code": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "detail": {
        -                      "additionalProperties": {
        -                        "type": "number"
        -                      },
        -                      "type": "object"
        -                    },
        -                    "message": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "severity": {
        -                      "enum": [
        -                        "info",
        -                        "advisory",
        -                        "caution"
        -                      ],
        -                      "type": "string"
        -                    }
        -                  },
        -                  "required": [
        -                    "code",
        -                    "severity",
        -                    "message"
        -                  ],
        -                  "type": "object"
        -                },
        -                "type": "array"
        -              }
        -            },
        -            "required": [
        -              "assembly_slug",
        -              "standard",
        -              "parameters_used",
        -              "boq_rows",
        -              "totals_summary",
        -              "text_summary"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      },
        -      "error": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        -            "properties": {
        -              "code": {
        -                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        -                "enum": [
        -                  "RATE_LIMIT_EXCEEDED",
        -                  "TIER_INSUFFICIENT",
        -                  "INVALID_INPUT",
        -                  "SCHEMA_VERSION_MISMATCH",
        -                  "SCHEMA_INVARIANT_VIOLATION",
        -                  "UPSTREAM_TIMEOUT",
        -                  "BACKEND_FAILURE",
        -                  "IP_BLOCKED",
        -                  "RESOURCE_NOT_FOUND",
        -                  "RENDER_FAILURE",
        -                  "OCR_LOW_CONFIDENCE",
        -                  "MANUAL_REVIEW_REQUIRED",
        -                  "ACCEPTANCE_REQUIRED",
        -                  "INVALID_TOKEN"
        -                ],
        -                "type": "string"
        -              },
        -              "details": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "message": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "recoverable": {
        -                "type": "boolean"
        -              },
        -              "retry_after_seconds": {
        -                "anyOf": [
        -                  {
        -                    "minimum": 0,
        -                    "type": "integer"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              }
        -            },
        -            "required": [
        -              "code",
        -              "message",
        -              "recoverable"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      }
        -    },
        -    "required": [
        -      "_meta"
        -    ],
        -    "type": "object"
        -  },
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "_meta": {
        -        "additionalProperties": false,
        -        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        -        "properties": {
        -          "deliverables": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        -                "properties": {
        -                  "docx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "dxf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "expires_at": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  },
        -                  "pdf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "xlsx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "expires_at"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "document_id": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "issued_at": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "rate_limit_remaining": {
        -            "anyOf": [
        -              {
        -                "minimum": 0,
        -                "type": "integer"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "request_id": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "schema_version": {
        -            "const": "1.0.0",
        -            "default": "1.0.0",
        -            "type": "string"
        -          },
        -          "scope_boundary": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        -                "properties": {
        -                  "not_in_scope": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "produced": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "recommended_companions": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "type": "string"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "produced",
        -                  "not_in_scope"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tier": {
        -            "enum": [
        -              "free",
        -              "paid"
        -            ],
        -            "type": "string"
        -          },
        -          "tier_upgrade": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        -                "properties": {
        -                  "available_tiers": {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        -                      "properties": {
        -                        "billing": {
        -                          "enum": [
        -                            "one_off",
        -                            "monthly",
        -                            "annual"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "currency": {
        -                          "enum": [
        -                            "GBP",
        -                            "SGD",
        -                            "EUR",
        -                            "USD",
        -                            "CAD",
        -                            "AUD",
        -                            "NZD",
        -                            "MYR"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "display_name": {
        -                          "type": "string"
        -                        },
        -                        "price_local": {
        -                          "type": "number"
        -                        },
        -                        "tier_slug": {
        -                          "enum": [
        -                            "7_day_pass",
        -                            "solo",
        -                            "studio",
        -                            "practice"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "unlock_summary": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "tier_slug",
        -                        "display_name",
        -                        "price_local",
        -                        "currency",
        -                        "billing",
        -                        "unlock_summary"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "current_tier": {
        -                    "const": "free",
        -                    "default": "free",
        -                    "type": "string"
        -                  },
        -                  "pass_credit": {
        -                    "anyOf": [
        -                      {
        -                        "additionalProperties": false,
        -                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        -                        "properties": {
        -                          "amount_local": {
        -                            "type": "number"
        -                          },
        -                          "applies_to": {
        -                            "const": "solo_first_month",
        -                            "default": "solo_first_month",
        -                            "type": "string"
        -                          },
        -                          "currency": {
        -                            "type": "string"
        -                          },
        -                          "redeemable_until": {
        -                            "type": "string"
        -                          }
        -                        },
        -                        "required": [
        -                          "amount_local",
        -                          "currency",
        -                          "redeemable_until"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "pricing_url": {
        -                    "default": "https://civilquants.com/pricing",
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "available_tiers"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tos_url": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "upgrade_hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "warranty_disclaimer": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          }
        -        },
        -        "required": [
        -          "request_id",
        -          "issued_at",
        -          "tier"
        -        ],
        -        "type": "object"
        -      },
        -      "data": {
        -        "default": null,
        -        "title": "Data"
        -      },
        -      "error": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        -            "properties": {
        -              "code": {
        -                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        -                "enum": [
        -                  "RATE_LIMIT_EXCEEDED",
        -                  "TIER_INSUFFICIENT",
        -                  "INVALID_INPUT",
        -                  "SCHEMA_VERSION_MISMATCH",
        -                  "SCHEMA_INVARIANT_VIOLATION",
        -                  "UPSTREAM_TIMEOUT",
        -                  "BACKEND_FAILURE",
        -                  "IP_BLOCKED",
        -                  "RESOURCE_NOT_FOUND",
        -                  "RENDER_FAILURE",
        -                  "OCR_LOW_CONFIDENCE",
        -                  "MANUAL_REVIEW_REQUIRED",
        -                  "ACCEPTANCE_REQUIRED",
        -                  "INVALID_TOKEN"
        -                ],
        -                "type": "string"
        -              },
        -              "details": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "message": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "recoverable": {
        -                "type": "boolean"
        -              },
        -              "retry_after_seconds": {
        -                "anyOf": [
        -                  {
        -                    "minimum": 0,
        -                    "type": "integer"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              }
        -            },
        -            "required": [
        -              "code",
        -              "message",
        -              "recoverable"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      }
        -    },
        -    "required": [
        -      "_meta"
        -    ],
        -    "type": "object"
        -  }
        -]New value: +[
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "_meta": {
        +        "additionalProperties": false,
        +        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        +        "properties": {
        +          "deliverables": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        +                "properties": {
        +                  "docx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "dxf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "expires_at": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  },
        +                  "pdf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "xlsx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "expires_at"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "document_id": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "issued_at": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "rate_limit_remaining": {
        +            "anyOf": [
        +              {
        +                "minimum": 0,
        +                "type": "integer"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "request_id": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "schema_version": {
        +            "const": "1.0.0",
        +            "default": "1.0.0",
        +            "type": "string"
        +          },
        +          "scope_boundary": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        +                "properties": {
        +                  "not_in_scope": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "produced": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "recommended_companions": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "type": "string"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "produced",
        +                  "not_in_scope"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tier": {
        +            "enum": [
        +              "free",
        +              "paid"
        +            ],
        +            "type": "string"
        +          },
        +          "tier_upgrade": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        +                "properties": {
        +                  "available_tiers": {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        +                      "properties": {
        +                        "billing": {
        +                          "enum": [
        +                            "one_off",
        +                            "monthly",
        +                            "annual"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "currency": {
        +                          "enum": [
        +                            "GBP",
        +                            "SGD",
        +                            "EUR",
        +                            "USD",
        +                            "CAD",
        +                            "AUD",
        +                            "NZD",
        +                            "MYR"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "display_name": {
        +                          "type": "string"
        +                        },
        +                        "price_local": {
        +                          "type": "number"
        +                        },
        +                        "tier_slug": {
        +                          "enum": [
        +                            "7_day_pass",
        +                            "solo",
        +                            "studio",
        +                            "practice"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "unlock_summary": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "tier_slug",
        +                        "display_name",
        +                        "price_local",
        +                        "currency",
        +                        "billing",
        +                        "unlock_summary"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "current_tier": {
        +                    "const": "free",
        +                    "default": "free",
        +                    "type": "string"
        +                  },
        +                  "pass_credit": {
        +                    "anyOf": [
        +                      {
        +                        "additionalProperties": false,
        +                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        +                        "properties": {
        +                          "amount_local": {
        +                            "type": "number"
        +                          },
        +                          "applies_to": {
        +                            "const": "solo_first_month",
        +                            "default": "solo_first_month",
        +                            "type": "string"
        +                          },
        +                          "currency": {
        +                            "type": "string"
        +                          },
        +                          "redeemable_until": {
        +                            "type": "string"
        +                          }
        +                        },
        +                        "required": [
        +                          "amount_local",
        +                          "currency",
        +                          "redeemable_until"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "pricing_url": {
        +                    "default": "https://civilquants.com/pricing",
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "available_tiers"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tos_url": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "upgrade_hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "warranty_disclaimer": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          }
        +        },
        +        "required": [
        +          "request_id",
        +          "issued_at",
        +          "tier"
        +        ],
        +        "type": "object"
        +      },
        +      "data": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Schema § 1.1 — the typed payload returned inside `MCPResponse[ComputeResult]`.\n\nFree-tier responses omit `drawings` (the downloadable CAD artefact\npointers — the paid differentiator); the bridge enforces this. The\n`audit_trail` and the inline `drawing` preview are present on BOTH tiers\n(V1 ALIGN / 60th-fire D + C). `text_summary` is bounded to 2000 chars —\nkeeps the LLM-facing summary token-cheap and forces longer narrative into\nBoQ row descriptions where it belongs. `warnings` is the non-fatal\ngeometry advisory list (both tiers).",
        +            "properties": {
        +              "assembly_slug": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "audit_trail": {
        +                "anyOf": [
        +                  {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.7 — paid-tier audit-trail entry.\n\nOne entry per BoQ row; `boq_row_index` ties to the row position in\n`ComputeResult.boq_rows`. `derivation` is the human-readable formula\nwalk-through; `formula` is the optional formal expression.",
        +                      "properties": {
        +                        "boq_row_index": {
        +                          "minimum": 0,
        +                          "type": "integer"
        +                        },
        +                        "derivation": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "formula": {
        +                          "anyOf": [
        +                            {
        +                              "type": "string"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ],
        +                          "default": null
        +                        },
        +                        "id": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "parameters_referenced": {
        +                          "items": {
        +                            "type": "string"
        +                          },
        +                          "type": "array"
        +                        }
        +                      },
        +                      "required": [
        +                        "id",
        +                        "boq_row_index",
        +                        "derivation"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "boq_rows": {
        +                "items": {
        +                  "additionalProperties": false,
        +                  "description": "Schema § 1.3 — a single bill row in the requested standard's format.\n\n`description` is the non-verbatim functional description per spec § 13.9 /\n§ 15 invariant — NEVER reproduces a standard's verbatim clause text.\n`rate` / `amount` ship null because rates are commodity data the customer\nowns; the engine's job is the measurement, not the pricing.",
        +                  "properties": {
        +                    "amount": {
        +                      "anyOf": [
        +                        {
        +                          "type": "number"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "attribution": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "audit_id": {
        +                      "anyOf": [
        +                        {
        +                          "type": "string"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "description": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "quantity": {
        +                      "minimum": 0,
        +                      "type": "number"
        +                    },
        +                    "rate": {
        +                      "anyOf": [
        +                        {
        +                          "type": "number"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "unit": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "work_section": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    }
        +                  },
        +                  "required": [
        +                    "work_section",
        +                    "description",
        +                    "quantity",
        +                    "unit",
        +                    "attribution"
        +                  ],
        +                  "type": "object"
        +                },
        +                "type": "array"
        +              },
        +              "drawing": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": false,
        +                    "description": "Schema § 1.6a — inline server-rendered SVG preview of the geometry.\n\nThe MCP mirror of the web ``/compute`` response's ``drawing`` field\n(``api.schemas.compute.DrawingRef``): the same on-screen dimensioned\ndrawing both tiers see in the workspace, surfaced on the MCP compute\nresponse so a chat client can render it inline (60th-fire item C). This\nis the on-screen preview — present on BOTH tiers per the free/paid\nboundary; the downloadable CAD artefacts (DXF / dimensioned PDF) remain\nthe paid differentiator via the export tools.\n\nDefined here rather than importing ``DrawingRef`` because the web\n``schemas`` package imports back into this module (``schemas.render``),\nso reusing it would create an import cycle — the MCP wire contract keeps\nits own copy, the same pattern as ``BoQRow`` / ``DrawingReference``.",
        +                    "properties": {
        +                      "entity_count": {
        +                        "minimum": 0,
        +                        "type": "integer"
        +                      },
        +                      "svg_b64": {
        +                        "minLength": 1,
        +                        "type": "string"
        +                      },
        +                      "unit_of_drawing": {
        +                        "const": "m",
        +                        "default": "m",
        +                        "type": "string"
        +                      },
        +                      "viewbox_height": {
        +                        "exclusiveMinimum": 0,
        +                        "type": "number"
        +                      },
        +                      "viewbox_width": {
        +                        "exclusiveMinimum": 0,
        +                        "type": "number"
        +                      },
        +                      "viewbox_x": {
        +                        "type": "number"
        +                      },
        +                      "viewbox_y": {
        +                        "type": "number"
        +                      }
        +                    },
        +                    "required": [
        +                      "svg_b64",
        +                      "viewbox_x",
        +                      "viewbox_y",
        +                      "viewbox_width",
        +                      "viewbox_height",
        +                      "entity_count"
        +                    ],
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "drawings": {
        +                "anyOf": [
        +                  {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.6 — paid-tier drawing artefact pointer.\n\n`url` is an R2-signed URL; expiry is carried in `_meta.deliverables.expires_at`\non the envelope (not duplicated here). `layers` is DXF-only; PDF/SVG\ncallers omit it.",
        +                      "properties": {
        +                        "drawing_type": {
        +                          "enum": [
        +                            "section",
        +                            "plan",
        +                            "elevation",
        +                            "isometric",
        +                            "detail"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "format": {
        +                          "enum": [
        +                            "DXF",
        +                            "PDF",
        +                            "SVG"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "layers": {
        +                          "anyOf": [
        +                            {
        +                              "items": {
        +                                "type": "string"
        +                              },
        +                              "type": "array"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ],
        +                          "default": null
        +                        },
        +                        "scale": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "sheet_size": {
        +                          "enum": [
        +                            "A1",
        +                            "A2",
        +                            "A3",
        +                            "A4"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "url": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "drawing_type",
        +                        "format",
        +                        "url",
        +                        "sheet_size",
        +                        "scale"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "parameters_used": {
        +                "additionalProperties": false,
        +                "description": "Schema § 1.2 — the parameter snapshot the engine actually used.\n\nSplits user-supplied values from engine defaults so customers can see\nwhich numbers came from them and which the engine filled in. Every\ndefaulted parameter SHOULD have a corresponding entry in `assumptions`\n— the bridge layer enforces this when wrapping engine output.",
        +                "properties": {
        +                  "assumptions": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "engine_defaults": {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  "user_supplied": {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  }
        +                },
        +                "type": "object"
        +              },
        +              "standard": {
        +                "enum": [
        +                  "CESMM4",
        +                  "NRM2",
        +                  "SMM7",
        +                  "MMHW"
        +                ],
        +                "type": "string"
        +              },
        +              "text_summary": {
        +                "maxLength": 2000,
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "totals_summary": {
        +                "additionalProperties": false,
        +                "description": "Schema § 1.4 — totals_summary as a typed wrapper around the free-form dict.\n\nWire shape is a flat object (`{\"concrete_m3\": {...}, \"rebar_t\": {...}}`).\nWe model it as `RootModel`-equivalent via `model_config(extra=\"allow\")`\n+ a single `__root__`-style `entries` dict. Pydantic v2 recommends\n`RootModel` for free-form roots; using a wrapper class keeps the import\nsurface uniform with the rest of this module.",
        +                "properties": {
        +                  "entries": {
        +                    "additionalProperties": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.4 — single material/work-class total entry.",
        +                      "properties": {
        +                        "quantity": {
        +                          "minimum": 0,
        +                          "type": "number"
        +                        },
        +                        "unit": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "quantity",
        +                        "unit"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "object"
        +                  }
        +                },
        +                "type": "object"
        +              },
        +              "warnings": {
        +                "items": {
        +                  "additionalProperties": false,
        +                  "description": "Schema § 1.8 — a non-fatal geometry advisory (56th-fire T2).\n\nThe wire projection of the engine's `core.GeometryWarning`. Advisory only:\na warning NEVER changes a measured quantity — it flags geometry that is\nvalid but likely a mistake (e.g. a stale dependent-height default). Present\non BOTH tiers — a correctness/safety signal, not a paid feature.",
        +                  "properties": {
        +                    "affected_params": {
        +                      "items": {
        +                        "type": "string"
        +                      },
        +                      "type": "array"
        +                    },
        +                    "code": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "detail": {
        +                      "additionalProperties": {
        +                        "type": "number"
        +                      },
        +                      "type": "object"
        +                    },
        +                    "message": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "severity": {
        +                      "enum": [
        +                        "info",
        +                        "advisory",
        +                        "caution"
        +                      ],
        +                      "type": "string"
        +                    }
        +                  },
        +                  "required": [
        +                    "code",
        +                    "severity",
        +                    "message"
        +                  ],
        +                  "type": "object"
        +                },
        +                "type": "array"
        +              }
        +            },
        +            "required": [
        +              "assembly_slug",
        +              "standard",
        +              "parameters_used",
        +              "boq_rows",
        +              "totals_summary",
        +              "text_summary"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      },
        +      "error": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        +            "properties": {
        +              "code": {
        +                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        +                "enum": [
        +                  "RATE_LIMIT_EXCEEDED",
        +                  "TIER_INSUFFICIENT",
        +                  "INVALID_INPUT",
        +                  "SCHEMA_VERSION_MISMATCH",
        +                  "SCHEMA_INVARIANT_VIOLATION",
        +                  "UPSTREAM_TIMEOUT",
        +                  "BACKEND_FAILURE",
        +                  "IP_BLOCKED",
        +                  "RESOURCE_NOT_FOUND",
        +                  "RENDER_FAILURE",
        +                  "OCR_LOW_CONFIDENCE",
        +                  "MANUAL_REVIEW_REQUIRED",
        +                  "ACCEPTANCE_REQUIRED",
        +                  "INVALID_TOKEN"
        +                ],
        +                "type": "string"
        +              },
        +              "details": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "message": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "recoverable": {
        +                "type": "boolean"
        +              },
        +              "retry_after_seconds": {
        +                "anyOf": [
        +                  {
        +                    "minimum": 0,
        +                    "type": "integer"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              }
        +            },
        +            "required": [
        +              "code",
        +              "message",
        +              "recoverable"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      }
        +    },
        +    "required": [
        +      "_meta"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "_meta": {
        +        "additionalProperties": false,
        +        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        +        "properties": {
        +          "deliverables": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        +                "properties": {
        +                  "docx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "dxf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "expires_at": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  },
        +                  "pdf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "xlsx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "expires_at"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "document_id": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "issued_at": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "rate_limit_remaining": {
        +            "anyOf": [
        +              {
        +                "minimum": 0,
        +                "type": "integer"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "request_id": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "schema_version": {
        +            "const": "1.0.0",
        +            "default": "1.0.0",
        +            "type": "string"
        +          },
        +          "scope_boundary": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        +                "properties": {
        +                  "not_in_scope": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "produced": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "recommended_companions": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "type": "string"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "produced",
        +                  "not_in_scope"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tier": {
        +            "enum": [
        +              "free",
        +              "paid"
        +            ],
        +            "type": "string"
        +          },
        +          "tier_upgrade": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        +                "properties": {
        +                  "available_tiers": {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        +                      "properties": {
        +                        "billing": {
        +                          "enum": [
        +                            "one_off",
        +                            "monthly",
        +                            "annual"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "currency": {
        +                          "enum": [
        +                            "GBP",
        +                            "SGD",
        +                            "EUR",
        +                            "USD",
        +                            "CAD",
        +                            "AUD",
        +                            "NZD",
        +                            "MYR"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "display_name": {
        +                          "type": "string"
        +                        },
        +                        "price_local": {
        +                          "type": "number"
        +                        },
        +                        "tier_slug": {
        +                          "enum": [
        +                            "7_day_pass",
        +                            "solo",
        +                            "studio",
        +                            "practice"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "unlock_summary": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "tier_slug",
        +                        "display_name",
        +                        "price_local",
        +                        "currency",
        +                        "billing",
        +                        "unlock_summary"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "current_tier": {
        +                    "const": "free",
        +                    "default": "free",
        +                    "type": "string"
        +                  },
        +                  "pass_credit": {
        +                    "anyOf": [
        +                      {
        +                        "additionalProperties": false,
        +                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        +                        "properties": {
        +                          "amount_local": {
        +                            "type": "number"
        +                          },
        +                          "applies_to": {
        +                            "const": "solo_first_month",
        +                            "default": "solo_first_month",
        +                            "type": "string"
        +                          },
        +                          "currency": {
        +                            "type": "string"
        +                          },
        +                          "redeemable_until": {
        +                            "type": "string"
        +                          }
        +                        },
        +                        "required": [
        +                          "amount_local",
        +                          "currency",
        +                          "redeemable_until"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "pricing_url": {
        +                    "default": "https://civilquants.com/pricing",
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "available_tiers"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tos_url": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "upgrade_hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "warranty_disclaimer": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          }
        +        },
        +        "required": [
        +          "request_id",
        +          "issued_at",
        +          "tier"
        +        ],
        +        "type": "object"
        +      },
        +      "data": {
        +        "default": null,
        +        "title": "Data"
        +      },
        +      "error": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        +            "properties": {
        +              "code": {
        +                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        +                "enum": [
        +                  "RATE_LIMIT_EXCEEDED",
        +                  "TIER_INSUFFICIENT",
        +                  "INVALID_INPUT",
        +                  "SCHEMA_VERSION_MISMATCH",
        +                  "SCHEMA_INVARIANT_VIOLATION",
        +                  "UPSTREAM_TIMEOUT",
        +                  "BACKEND_FAILURE",
        +                  "IP_BLOCKED",
        +                  "RESOURCE_NOT_FOUND",
        +                  "RENDER_FAILURE",
        +                  "OCR_LOW_CONFIDENCE",
        +                  "MANUAL_REVIEW_REQUIRED",
        +                  "ACCEPTANCE_REQUIRED",
        +                  "INVALID_TOKEN"
        +                ],
        +                "type": "string"
        +              },
        +              "details": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "message": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "recoverable": {
        +                "type": "boolean"
        +              },
        +              "retry_after_seconds": {
        +                "anyOf": [
        +                  {
        +                    "minimum": 0,
        +                    "type": "integer"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              }
        +            },
        +            "required": [
        +              "code",
        +              "message",
        +              "recoverable"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      }
        +    },
        +    "required": [
        +      "_meta"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedcompute_soil_nailed_slope1 field changed
      • changedOutput schema / properties / result / anyOf
        Previous value: -[
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "_meta": {
        -        "additionalProperties": false,
        -        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        -        "properties": {
        -          "deliverables": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        -                "properties": {
        -                  "docx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "dxf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "expires_at": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  },
        -                  "pdf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "xlsx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "expires_at"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "document_id": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "issued_at": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "rate_limit_remaining": {
        -            "anyOf": [
        -              {
        -                "minimum": 0,
        -                "type": "integer"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "request_id": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "schema_version": {
        -            "const": "1.0.0",
        -            "default": "1.0.0",
        -            "type": "string"
        -          },
        -          "scope_boundary": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        -                "properties": {
        -                  "not_in_scope": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "produced": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "recommended_companions": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "type": "string"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "produced",
        -                  "not_in_scope"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tier": {
        -            "enum": [
        -              "free",
        -              "paid"
        -            ],
        -            "type": "string"
        -          },
        -          "tier_upgrade": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        -                "properties": {
        -                  "available_tiers": {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        -                      "properties": {
        -                        "billing": {
        -                          "enum": [
        -                            "one_off",
        -                            "monthly",
        -                            "annual"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "currency": {
        -                          "enum": [
        -                            "GBP",
        -                            "SGD",
        -                            "EUR",
        -                            "USD",
        -                            "CAD",
        -                            "AUD",
        -                            "NZD",
        -                            "MYR"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "display_name": {
        -                          "type": "string"
        -                        },
        -                        "price_local": {
        -                          "type": "number"
        -                        },
        -                        "tier_slug": {
        -                          "enum": [
        -                            "7_day_pass",
        -                            "solo",
        -                            "studio",
        -                            "practice"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "unlock_summary": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "tier_slug",
        -                        "display_name",
        -                        "price_local",
        -                        "currency",
        -                        "billing",
        -                        "unlock_summary"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "current_tier": {
        -                    "const": "free",
        -                    "default": "free",
        -                    "type": "string"
        -                  },
        -                  "pass_credit": {
        -                    "anyOf": [
        -                      {
        -                        "additionalProperties": false,
        -                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        -                        "properties": {
        -                          "amount_local": {
        -                            "type": "number"
        -                          },
        -                          "applies_to": {
        -                            "const": "solo_first_month",
        -                            "default": "solo_first_month",
        -                            "type": "string"
        -                          },
        -                          "currency": {
        -                            "type": "string"
        -                          },
        -                          "redeemable_until": {
        -                            "type": "string"
        -                          }
        -                        },
        -                        "required": [
        -                          "amount_local",
        -                          "currency",
        -                          "redeemable_until"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "pricing_url": {
        -                    "default": "https://civilquants.com/pricing",
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "available_tiers"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tos_url": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "upgrade_hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "warranty_disclaimer": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          }
        -        },
        -        "required": [
        -          "request_id",
        -          "issued_at",
        -          "tier"
        -        ],
        -        "type": "object"
        -      },
        -      "data": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Schema § 1.1 — the typed payload returned inside `MCPResponse[ComputeResult]`.\n\nFree-tier responses omit `drawings` (the downloadable CAD artefact\npointers — the paid differentiator); the bridge enforces this. The\n`audit_trail` and the inline `drawing` preview are present on BOTH tiers\n(V1 ALIGN / 60th-fire D + C). `text_summary` is bounded to 2000 chars —\nkeeps the LLM-facing summary token-cheap and forces longer narrative into\nBoQ row descriptions where it belongs. `warnings` is the non-fatal\ngeometry advisory list (both tiers).",
        -            "properties": {
        -              "assembly_slug": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "audit_trail": {
        -                "anyOf": [
        -                  {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.7 — paid-tier audit-trail entry.\n\nOne entry per BoQ row; `boq_row_index` ties to the row position in\n`ComputeResult.boq_rows`. `derivation` is the human-readable formula\nwalk-through; `formula` is the optional formal expression.",
        -                      "properties": {
        -                        "boq_row_index": {
        -                          "minimum": 0,
        -                          "type": "integer"
        -                        },
        -                        "derivation": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "formula": {
        -                          "anyOf": [
        -                            {
        -                              "type": "string"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ],
        -                          "default": null
        -                        },
        -                        "id": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "parameters_referenced": {
        -                          "items": {
        -                            "type": "string"
        -                          },
        -                          "type": "array"
        -                        }
        -                      },
        -                      "required": [
        -                        "id",
        -                        "boq_row_index",
        -                        "derivation"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "boq_rows": {
        -                "items": {
        -                  "additionalProperties": false,
        -                  "description": "Schema § 1.3 — a single bill row in the requested standard's format.\n\n`description` is the non-verbatim functional description per spec § 13.9 /\n§ 15 invariant — NEVER reproduces a standard's verbatim clause text.\n`rate` / `amount` ship null because rates are commodity data the customer\nowns; the engine's job is the measurement, not the pricing.",
        -                  "properties": {
        -                    "amount": {
        -                      "anyOf": [
        -                        {
        -                          "type": "number"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "attribution": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "audit_id": {
        -                      "anyOf": [
        -                        {
        -                          "type": "string"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "description": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "quantity": {
        -                      "minimum": 0,
        -                      "type": "number"
        -                    },
        -                    "rate": {
        -                      "anyOf": [
        -                        {
        -                          "type": "number"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "unit": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "work_section": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    }
        -                  },
        -                  "required": [
        -                    "work_section",
        -                    "description",
        -                    "quantity",
        -                    "unit",
        -                    "attribution"
        -                  ],
        -                  "type": "object"
        -                },
        -                "type": "array"
        -              },
        -              "drawing": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": false,
        -                    "description": "Schema § 1.6a — inline server-rendered SVG preview of the geometry.\n\nThe MCP mirror of the web ``/compute`` response's ``drawing`` field\n(``api.schemas.compute.DrawingRef``): the same on-screen dimensioned\ndrawing both tiers see in the workspace, surfaced on the MCP compute\nresponse so a chat client can render it inline (60th-fire item C). This\nis the on-screen preview — present on BOTH tiers per the free/paid\nboundary; the downloadable CAD artefacts (DXF / dimensioned PDF) remain\nthe paid differentiator via the export tools.\n\nDefined here rather than importing ``DrawingRef`` because the web\n``schemas`` package imports back into this module (``schemas.render``),\nso reusing it would create an import cycle — the MCP wire contract keeps\nits own copy, the same pattern as ``BoQRow`` / ``DrawingReference``.",
        -                    "properties": {
        -                      "entity_count": {
        -                        "minimum": 0,
        -                        "type": "integer"
        -                      },
        -                      "svg_b64": {
        -                        "minLength": 1,
        -                        "type": "string"
        -                      },
        -                      "unit_of_drawing": {
        -                        "const": "m",
        -                        "default": "m",
        -                        "type": "string"
        -                      },
        -                      "viewbox_height": {
        -                        "exclusiveMinimum": 0,
        -                        "type": "number"
        -                      },
        -                      "viewbox_width": {
        -                        "exclusiveMinimum": 0,
        -                        "type": "number"
        -                      },
        -                      "viewbox_x": {
        -                        "type": "number"
        -                      },
        -                      "viewbox_y": {
        -                        "type": "number"
        -                      }
        -                    },
        -                    "required": [
        -                      "svg_b64",
        -                      "viewbox_x",
        -                      "viewbox_y",
        -                      "viewbox_width",
        -                      "viewbox_height",
        -                      "entity_count"
        -                    ],
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "drawings": {
        -                "anyOf": [
        -                  {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.6 — paid-tier drawing artefact pointer.\n\n`url` is an R2-signed URL; expiry is carried in `_meta.deliverables.expires_at`\non the envelope (not duplicated here). `layers` is DXF-only; PDF/SVG\ncallers omit it.",
        -                      "properties": {
        -                        "drawing_type": {
        -                          "enum": [
        -                            "section",
        -                            "plan",
        -                            "elevation",
        -                            "isometric",
        -                            "detail"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "format": {
        -                          "enum": [
        -                            "DXF",
        -                            "PDF",
        -                            "SVG"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "layers": {
        -                          "anyOf": [
        -                            {
        -                              "items": {
        -                                "type": "string"
        -                              },
        -                              "type": "array"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ],
        -                          "default": null
        -                        },
        -                        "scale": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "sheet_size": {
        -                          "enum": [
        -                            "A1",
        -                            "A2",
        -                            "A3",
        -                            "A4"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "url": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "drawing_type",
        -                        "format",
        -                        "url",
        -                        "sheet_size",
        -                        "scale"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "parameters_used": {
        -                "additionalProperties": false,
        -                "description": "Schema § 1.2 — the parameter snapshot the engine actually used.\n\nSplits user-supplied values from engine defaults so customers can see\nwhich numbers came from them and which the engine filled in. Every\ndefaulted parameter SHOULD have a corresponding entry in `assumptions`\n— the bridge layer enforces this when wrapping engine output.",
        -                "properties": {
        -                  "assumptions": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "engine_defaults": {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  "resolved_from_description": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "additionalProperties": false,
        -                          "description": "Schema § 1.2 — a parameter resolved by the forgiving-input layer.\n\nPopulated by the Track B-Forgiving Haiku-4.5 resolution pass; until that\nlayer lands, instances are constructed only by tests. `source` distinguishes\nthe resolution path so customers can audit which fields were inferred.",
        -                          "properties": {
        -                            "confidence": {
        -                              "anyOf": [
        -                                {
        -                                  "enum": [
        -                                    "high",
        -                                    "medium",
        -                                    "low"
        -                                  ],
        -                                  "type": "string"
        -                                },
        -                                {
        -                                  "type": "null"
        -                                }
        -                              ],
        -                              "default": null
        -                            },
        -                            "field_name": {
        -                              "minLength": 1,
        -                              "type": "string"
        -                            },
        -                            "resolved_value": {},
        -                            "source": {
        -                              "enum": [
        -                                "description_field",
        -                                "haiku_resolution",
        -                                "engine_default"
        -                              ],
        -                              "type": "string"
        -                            }
        -                          },
        -                          "required": [
        -                            "field_name",
        -                            "resolved_value",
        -                            "source"
        -                          ],
        -                          "type": "object"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "user_supplied": {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  }
        -                },
        -                "type": "object"
        -              },
        -              "standard": {
        -                "enum": [
        -                  "CESMM4",
        -                  "NRM2",
        -                  "SMM7",
        -                  "MMHW"
        -                ],
        -                "type": "string"
        -              },
        -              "text_summary": {
        -                "maxLength": 2000,
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "totals_summary": {
        -                "additionalProperties": false,
        -                "description": "Schema § 1.4 — totals_summary as a typed wrapper around the free-form dict.\n\nWire shape is a flat object (`{\"concrete_m3\": {...}, \"rebar_t\": {...}}`).\nWe model it as `RootModel`-equivalent via `model_config(extra=\"allow\")`\n+ a single `__root__`-style `entries` dict. Pydantic v2 recommends\n`RootModel` for free-form roots; using a wrapper class keeps the import\nsurface uniform with the rest of this module.",
        -                "properties": {
        -                  "entries": {
        -                    "additionalProperties": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.4 — single material/work-class total entry.",
        -                      "properties": {
        -                        "quantity": {
        -                          "minimum": 0,
        -                          "type": "number"
        -                        },
        -                        "unit": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "quantity",
        -                        "unit"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "object"
        -                  }
        -                },
        -                "type": "object"
        -              },
        -              "warnings": {
        -                "items": {
        -                  "additionalProperties": false,
        -                  "description": "Schema § 1.8 — a non-fatal geometry advisory (56th-fire T2).\n\nThe wire projection of the engine's `core.GeometryWarning`. Advisory only:\na warning NEVER changes a measured quantity — it flags geometry that is\nvalid but likely a mistake (e.g. a stale dependent-height default). Present\non BOTH tiers — a correctness/safety signal, not a paid feature.",
        -                  "properties": {
        -                    "affected_params": {
        -                      "items": {
        -                        "type": "string"
        -                      },
        -                      "type": "array"
        -                    },
        -                    "code": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "detail": {
        -                      "additionalProperties": {
        -                        "type": "number"
        -                      },
        -                      "type": "object"
        -                    },
        -                    "message": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "severity": {
        -                      "enum": [
        -                        "info",
        -                        "advisory",
        -                        "caution"
        -                      ],
        -                      "type": "string"
        -                    }
        -                  },
        -                  "required": [
        -                    "code",
        -                    "severity",
        -                    "message"
        -                  ],
        -                  "type": "object"
        -                },
        -                "type": "array"
        -              }
        -            },
        -            "required": [
        -              "assembly_slug",
        -              "standard",
        -              "parameters_used",
        -              "boq_rows",
        -              "totals_summary",
        -              "text_summary"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      },
        -      "error": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        -            "properties": {
        -              "code": {
        -                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        -                "enum": [
        -                  "RATE_LIMIT_EXCEEDED",
        -                  "TIER_INSUFFICIENT",
        -                  "INVALID_INPUT",
        -                  "SCHEMA_VERSION_MISMATCH",
        -                  "SCHEMA_INVARIANT_VIOLATION",
        -                  "UPSTREAM_TIMEOUT",
        -                  "BACKEND_FAILURE",
        -                  "IP_BLOCKED",
        -                  "RESOURCE_NOT_FOUND",
        -                  "RENDER_FAILURE",
        -                  "OCR_LOW_CONFIDENCE",
        -                  "MANUAL_REVIEW_REQUIRED",
        -                  "ACCEPTANCE_REQUIRED",
        -                  "INVALID_TOKEN"
        -                ],
        -                "type": "string"
        -              },
        -              "details": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "message": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "recoverable": {
        -                "type": "boolean"
        -              },
        -              "retry_after_seconds": {
        -                "anyOf": [
        -                  {
        -                    "minimum": 0,
        -                    "type": "integer"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              }
        -            },
        -            "required": [
        -              "code",
        -              "message",
        -              "recoverable"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      }
        -    },
        -    "required": [
        -      "_meta"
        -    ],
        -    "type": "object"
        -  },
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "_meta": {
        -        "additionalProperties": false,
        -        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        -        "properties": {
        -          "deliverables": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        -                "properties": {
        -                  "docx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "dxf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "expires_at": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  },
        -                  "pdf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "xlsx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "expires_at"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "document_id": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "issued_at": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "rate_limit_remaining": {
        -            "anyOf": [
        -              {
        -                "minimum": 0,
        -                "type": "integer"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "request_id": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "schema_version": {
        -            "const": "1.0.0",
        -            "default": "1.0.0",
        -            "type": "string"
        -          },
        -          "scope_boundary": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        -                "properties": {
        -                  "not_in_scope": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "produced": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "recommended_companions": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "type": "string"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "produced",
        -                  "not_in_scope"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tier": {
        -            "enum": [
        -              "free",
        -              "paid"
        -            ],
        -            "type": "string"
        -          },
        -          "tier_upgrade": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        -                "properties": {
        -                  "available_tiers": {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        -                      "properties": {
        -                        "billing": {
        -                          "enum": [
        -                            "one_off",
        -                            "monthly",
        -                            "annual"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "currency": {
        -                          "enum": [
        -                            "GBP",
        -                            "SGD",
        -                            "EUR",
        -                            "USD",
        -                            "CAD",
        -                            "AUD",
        -                            "NZD",
        -                            "MYR"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "display_name": {
        -                          "type": "string"
        -                        },
        -                        "price_local": {
        -                          "type": "number"
        -                        },
        -                        "tier_slug": {
        -                          "enum": [
        -                            "7_day_pass",
        -                            "solo",
        -                            "studio",
        -                            "practice"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "unlock_summary": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "tier_slug",
        -                        "display_name",
        -                        "price_local",
        -                        "currency",
        -                        "billing",
        -                        "unlock_summary"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "current_tier": {
        -                    "const": "free",
        -                    "default": "free",
        -                    "type": "string"
        -                  },
        -                  "pass_credit": {
        -                    "anyOf": [
        -                      {
        -                        "additionalProperties": false,
        -                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        -                        "properties": {
        -                          "amount_local": {
        -                            "type": "number"
        -                          },
        -                          "applies_to": {
        -                            "const": "solo_first_month",
        -                            "default": "solo_first_month",
        -                            "type": "string"
        -                          },
        -                          "currency": {
        -                            "type": "string"
        -                          },
        -                          "redeemable_until": {
        -                            "type": "string"
        -                          }
        -                        },
        -                        "required": [
        -                          "amount_local",
        -                          "currency",
        -                          "redeemable_until"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "pricing_url": {
        -                    "default": "https://civilquants.com/pricing",
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "available_tiers"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tos_url": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "upgrade_hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "warranty_disclaimer": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          }
        -        },
        -        "required": [
        -          "request_id",
        -          "issued_at",
        -          "tier"
        -        ],
        -        "type": "object"
        -      },
        -      "data": {
        -        "default": null,
        -        "title": "Data"
        -      },
        -      "error": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        -            "properties": {
        -              "code": {
        -                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        -                "enum": [
        -                  "RATE_LIMIT_EXCEEDED",
        -                  "TIER_INSUFFICIENT",
        -                  "INVALID_INPUT",
        -                  "SCHEMA_VERSION_MISMATCH",
        -                  "SCHEMA_INVARIANT_VIOLATION",
        -                  "UPSTREAM_TIMEOUT",
        -                  "BACKEND_FAILURE",
        -                  "IP_BLOCKED",
        -                  "RESOURCE_NOT_FOUND",
        -                  "RENDER_FAILURE",
        -                  "OCR_LOW_CONFIDENCE",
        -                  "MANUAL_REVIEW_REQUIRED",
        -                  "ACCEPTANCE_REQUIRED",
        -                  "INVALID_TOKEN"
        -                ],
        -                "type": "string"
        -              },
        -              "details": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "message": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "recoverable": {
        -                "type": "boolean"
        -              },
        -              "retry_after_seconds": {
        -                "anyOf": [
        -                  {
        -                    "minimum": 0,
        -                    "type": "integer"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              }
        -            },
        -            "required": [
        -              "code",
        -              "message",
        -              "recoverable"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      }
        -    },
        -    "required": [
        -      "_meta"
        -    ],
        -    "type": "object"
        -  }
        -]New value: +[
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "_meta": {
        +        "additionalProperties": false,
        +        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        +        "properties": {
        +          "deliverables": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        +                "properties": {
        +                  "docx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "dxf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "expires_at": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  },
        +                  "pdf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "xlsx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "expires_at"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "document_id": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "issued_at": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "rate_limit_remaining": {
        +            "anyOf": [
        +              {
        +                "minimum": 0,
        +                "type": "integer"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "request_id": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "schema_version": {
        +            "const": "1.0.0",
        +            "default": "1.0.0",
        +            "type": "string"
        +          },
        +          "scope_boundary": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        +                "properties": {
        +                  "not_in_scope": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "produced": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "recommended_companions": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "type": "string"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "produced",
        +                  "not_in_scope"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tier": {
        +            "enum": [
        +              "free",
        +              "paid"
        +            ],
        +            "type": "string"
        +          },
        +          "tier_upgrade": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        +                "properties": {
        +                  "available_tiers": {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        +                      "properties": {
        +                        "billing": {
        +                          "enum": [
        +                            "one_off",
        +                            "monthly",
        +                            "annual"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "currency": {
        +                          "enum": [
        +                            "GBP",
        +                            "SGD",
        +                            "EUR",
        +                            "USD",
        +                            "CAD",
        +                            "AUD",
        +                            "NZD",
        +                            "MYR"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "display_name": {
        +                          "type": "string"
        +                        },
        +                        "price_local": {
        +                          "type": "number"
        +                        },
        +                        "tier_slug": {
        +                          "enum": [
        +                            "7_day_pass",
        +                            "solo",
        +                            "studio",
        +                            "practice"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "unlock_summary": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "tier_slug",
        +                        "display_name",
        +                        "price_local",
        +                        "currency",
        +                        "billing",
        +                        "unlock_summary"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "current_tier": {
        +                    "const": "free",
        +                    "default": "free",
        +                    "type": "string"
        +                  },
        +                  "pass_credit": {
        +                    "anyOf": [
        +                      {
        +                        "additionalProperties": false,
        +                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        +                        "properties": {
        +                          "amount_local": {
        +                            "type": "number"
        +                          },
        +                          "applies_to": {
        +                            "const": "solo_first_month",
        +                            "default": "solo_first_month",
        +                            "type": "string"
        +                          },
        +                          "currency": {
        +                            "type": "string"
        +                          },
        +                          "redeemable_until": {
        +                            "type": "string"
        +                          }
        +                        },
        +                        "required": [
        +                          "amount_local",
        +                          "currency",
        +                          "redeemable_until"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "pricing_url": {
        +                    "default": "https://civilquants.com/pricing",
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "available_tiers"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tos_url": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "upgrade_hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "warranty_disclaimer": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          }
        +        },
        +        "required": [
        +          "request_id",
        +          "issued_at",
        +          "tier"
        +        ],
        +        "type": "object"
        +      },
        +      "data": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Schema § 1.1 — the typed payload returned inside `MCPResponse[ComputeResult]`.\n\nFree-tier responses omit `drawings` (the downloadable CAD artefact\npointers — the paid differentiator); the bridge enforces this. The\n`audit_trail` and the inline `drawing` preview are present on BOTH tiers\n(V1 ALIGN / 60th-fire D + C). `text_summary` is bounded to 2000 chars —\nkeeps the LLM-facing summary token-cheap and forces longer narrative into\nBoQ row descriptions where it belongs. `warnings` is the non-fatal\ngeometry advisory list (both tiers).",
        +            "properties": {
        +              "assembly_slug": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "audit_trail": {
        +                "anyOf": [
        +                  {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.7 — paid-tier audit-trail entry.\n\nOne entry per BoQ row; `boq_row_index` ties to the row position in\n`ComputeResult.boq_rows`. `derivation` is the human-readable formula\nwalk-through; `formula` is the optional formal expression.",
        +                      "properties": {
        +                        "boq_row_index": {
        +                          "minimum": 0,
        +                          "type": "integer"
        +                        },
        +                        "derivation": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "formula": {
        +                          "anyOf": [
        +                            {
        +                              "type": "string"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ],
        +                          "default": null
        +                        },
        +                        "id": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "parameters_referenced": {
        +                          "items": {
        +                            "type": "string"
        +                          },
        +                          "type": "array"
        +                        }
        +                      },
        +                      "required": [
        +                        "id",
        +                        "boq_row_index",
        +                        "derivation"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "boq_rows": {
        +                "items": {
        +                  "additionalProperties": false,
        +                  "description": "Schema § 1.3 — a single bill row in the requested standard's format.\n\n`description` is the non-verbatim functional description per spec § 13.9 /\n§ 15 invariant — NEVER reproduces a standard's verbatim clause text.\n`rate` / `amount` ship null because rates are commodity data the customer\nowns; the engine's job is the measurement, not the pricing.",
        +                  "properties": {
        +                    "amount": {
        +                      "anyOf": [
        +                        {
        +                          "type": "number"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "attribution": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "audit_id": {
        +                      "anyOf": [
        +                        {
        +                          "type": "string"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "description": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "quantity": {
        +                      "minimum": 0,
        +                      "type": "number"
        +                    },
        +                    "rate": {
        +                      "anyOf": [
        +                        {
        +                          "type": "number"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "unit": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "work_section": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    }
        +                  },
        +                  "required": [
        +                    "work_section",
        +                    "description",
        +                    "quantity",
        +                    "unit",
        +                    "attribution"
        +                  ],
        +                  "type": "object"
        +                },
        +                "type": "array"
        +              },
        +              "drawing": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": false,
        +                    "description": "Schema § 1.6a — inline server-rendered SVG preview of the geometry.\n\nThe MCP mirror of the web ``/compute`` response's ``drawing`` field\n(``api.schemas.compute.DrawingRef``): the same on-screen dimensioned\ndrawing both tiers see in the workspace, surfaced on the MCP compute\nresponse so a chat client can render it inline (60th-fire item C). This\nis the on-screen preview — present on BOTH tiers per the free/paid\nboundary; the downloadable CAD artefacts (DXF / dimensioned PDF) remain\nthe paid differentiator via the export tools.\n\nDefined here rather than importing ``DrawingRef`` because the web\n``schemas`` package imports back into this module (``schemas.render``),\nso reusing it would create an import cycle — the MCP wire contract keeps\nits own copy, the same pattern as ``BoQRow`` / ``DrawingReference``.",
        +                    "properties": {
        +                      "entity_count": {
        +                        "minimum": 0,
        +                        "type": "integer"
        +                      },
        +                      "svg_b64": {
        +                        "minLength": 1,
        +                        "type": "string"
        +                      },
        +                      "unit_of_drawing": {
        +                        "const": "m",
        +                        "default": "m",
        +                        "type": "string"
        +                      },
        +                      "viewbox_height": {
        +                        "exclusiveMinimum": 0,
        +                        "type": "number"
        +                      },
        +                      "viewbox_width": {
        +                        "exclusiveMinimum": 0,
        +                        "type": "number"
        +                      },
        +                      "viewbox_x": {
        +                        "type": "number"
        +                      },
        +                      "viewbox_y": {
        +                        "type": "number"
        +                      }
        +                    },
        +                    "required": [
        +                      "svg_b64",
        +                      "viewbox_x",
        +                      "viewbox_y",
        +                      "viewbox_width",
        +                      "viewbox_height",
        +                      "entity_count"
        +                    ],
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "drawings": {
        +                "anyOf": [
        +                  {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.6 — paid-tier drawing artefact pointer.\n\n`url` is an R2-signed URL; expiry is carried in `_meta.deliverables.expires_at`\non the envelope (not duplicated here). `layers` is DXF-only; PDF/SVG\ncallers omit it.",
        +                      "properties": {
        +                        "drawing_type": {
        +                          "enum": [
        +                            "section",
        +                            "plan",
        +                            "elevation",
        +                            "isometric",
        +                            "detail"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "format": {
        +                          "enum": [
        +                            "DXF",
        +                            "PDF",
        +                            "SVG"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "layers": {
        +                          "anyOf": [
        +                            {
        +                              "items": {
        +                                "type": "string"
        +                              },
        +                              "type": "array"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ],
        +                          "default": null
        +                        },
        +                        "scale": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "sheet_size": {
        +                          "enum": [
        +                            "A1",
        +                            "A2",
        +                            "A3",
        +                            "A4"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "url": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "drawing_type",
        +                        "format",
        +                        "url",
        +                        "sheet_size",
        +                        "scale"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "parameters_used": {
        +                "additionalProperties": false,
        +                "description": "Schema § 1.2 — the parameter snapshot the engine actually used.\n\nSplits user-supplied values from engine defaults so customers can see\nwhich numbers came from them and which the engine filled in. Every\ndefaulted parameter SHOULD have a corresponding entry in `assumptions`\n— the bridge layer enforces this when wrapping engine output.",
        +                "properties": {
        +                  "assumptions": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "engine_defaults": {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  "user_supplied": {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  }
        +                },
        +                "type": "object"
        +              },
        +              "standard": {
        +                "enum": [
        +                  "CESMM4",
        +                  "NRM2",
        +                  "SMM7",
        +                  "MMHW"
        +                ],
        +                "type": "string"
        +              },
        +              "text_summary": {
        +                "maxLength": 2000,
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "totals_summary": {
        +                "additionalProperties": false,
        +                "description": "Schema § 1.4 — totals_summary as a typed wrapper around the free-form dict.\n\nWire shape is a flat object (`{\"concrete_m3\": {...}, \"rebar_t\": {...}}`).\nWe model it as `RootModel`-equivalent via `model_config(extra=\"allow\")`\n+ a single `__root__`-style `entries` dict. Pydantic v2 recommends\n`RootModel` for free-form roots; using a wrapper class keeps the import\nsurface uniform with the rest of this module.",
        +                "properties": {
        +                  "entries": {
        +                    "additionalProperties": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.4 — single material/work-class total entry.",
        +                      "properties": {
        +                        "quantity": {
        +                          "minimum": 0,
        +                          "type": "number"
        +                        },
        +                        "unit": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "quantity",
        +                        "unit"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "object"
        +                  }
        +                },
        +                "type": "object"
        +              },
        +              "warnings": {
        +                "items": {
        +                  "additionalProperties": false,
        +                  "description": "Schema § 1.8 — a non-fatal geometry advisory (56th-fire T2).\n\nThe wire projection of the engine's `core.GeometryWarning`. Advisory only:\na warning NEVER changes a measured quantity — it flags geometry that is\nvalid but likely a mistake (e.g. a stale dependent-height default). Present\non BOTH tiers — a correctness/safety signal, not a paid feature.",
        +                  "properties": {
        +                    "affected_params": {
        +                      "items": {
        +                        "type": "string"
        +                      },
        +                      "type": "array"
        +                    },
        +                    "code": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "detail": {
        +                      "additionalProperties": {
        +                        "type": "number"
        +                      },
        +                      "type": "object"
        +                    },
        +                    "message": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "severity": {
        +                      "enum": [
        +                        "info",
        +                        "advisory",
        +                        "caution"
        +                      ],
        +                      "type": "string"
        +                    }
        +                  },
        +                  "required": [
        +                    "code",
        +                    "severity",
        +                    "message"
        +                  ],
        +                  "type": "object"
        +                },
        +                "type": "array"
        +              }
        +            },
        +            "required": [
        +              "assembly_slug",
        +              "standard",
        +              "parameters_used",
        +              "boq_rows",
        +              "totals_summary",
        +              "text_summary"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      },
        +      "error": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        +            "properties": {
        +              "code": {
        +                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        +                "enum": [
        +                  "RATE_LIMIT_EXCEEDED",
        +                  "TIER_INSUFFICIENT",
        +                  "INVALID_INPUT",
        +                  "SCHEMA_VERSION_MISMATCH",
        +                  "SCHEMA_INVARIANT_VIOLATION",
        +                  "UPSTREAM_TIMEOUT",
        +                  "BACKEND_FAILURE",
        +                  "IP_BLOCKED",
        +                  "RESOURCE_NOT_FOUND",
        +                  "RENDER_FAILURE",
        +                  "OCR_LOW_CONFIDENCE",
        +                  "MANUAL_REVIEW_REQUIRED",
        +                  "ACCEPTANCE_REQUIRED",
        +                  "INVALID_TOKEN"
        +                ],
        +                "type": "string"
        +              },
        +              "details": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "message": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "recoverable": {
        +                "type": "boolean"
        +              },
        +              "retry_after_seconds": {
        +                "anyOf": [
        +                  {
        +                    "minimum": 0,
        +                    "type": "integer"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              }
        +            },
        +            "required": [
        +              "code",
        +              "message",
        +              "recoverable"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      }
        +    },
        +    "required": [
        +      "_meta"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "_meta": {
        +        "additionalProperties": false,
        +        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        +        "properties": {
        +          "deliverables": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        +                "properties": {
        +                  "docx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "dxf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "expires_at": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  },
        +                  "pdf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "xlsx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "expires_at"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "document_id": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "issued_at": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "rate_limit_remaining": {
        +            "anyOf": [
        +              {
        +                "minimum": 0,
        +                "type": "integer"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "request_id": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "schema_version": {
        +            "const": "1.0.0",
        +            "default": "1.0.0",
        +            "type": "string"
        +          },
        +          "scope_boundary": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        +                "properties": {
        +                  "not_in_scope": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "produced": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "recommended_companions": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "type": "string"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "produced",
        +                  "not_in_scope"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tier": {
        +            "enum": [
        +              "free",
        +              "paid"
        +            ],
        +            "type": "string"
        +          },
        +          "tier_upgrade": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        +                "properties": {
        +                  "available_tiers": {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        +                      "properties": {
        +                        "billing": {
        +                          "enum": [
        +                            "one_off",
        +                            "monthly",
        +                            "annual"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "currency": {
        +                          "enum": [
        +                            "GBP",
        +                            "SGD",
        +                            "EUR",
        +                            "USD",
        +                            "CAD",
        +                            "AUD",
        +                            "NZD",
        +                            "MYR"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "display_name": {
        +                          "type": "string"
        +                        },
        +                        "price_local": {
        +                          "type": "number"
        +                        },
        +                        "tier_slug": {
        +                          "enum": [
        +                            "7_day_pass",
        +                            "solo",
        +                            "studio",
        +                            "practice"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "unlock_summary": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "tier_slug",
        +                        "display_name",
        +                        "price_local",
        +                        "currency",
        +                        "billing",
        +                        "unlock_summary"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "current_tier": {
        +                    "const": "free",
        +                    "default": "free",
        +                    "type": "string"
        +                  },
        +                  "pass_credit": {
        +                    "anyOf": [
        +                      {
        +                        "additionalProperties": false,
        +                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        +                        "properties": {
        +                          "amount_local": {
        +                            "type": "number"
        +                          },
        +                          "applies_to": {
        +                            "const": "solo_first_month",
        +                            "default": "solo_first_month",
        +                            "type": "string"
        +                          },
        +                          "currency": {
        +                            "type": "string"
        +                          },
        +                          "redeemable_until": {
        +                            "type": "string"
        +                          }
        +                        },
        +                        "required": [
        +                          "amount_local",
        +                          "currency",
        +                          "redeemable_until"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "pricing_url": {
        +                    "default": "https://civilquants.com/pricing",
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "available_tiers"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tos_url": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "upgrade_hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "warranty_disclaimer": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          }
        +        },
        +        "required": [
        +          "request_id",
        +          "issued_at",
        +          "tier"
        +        ],
        +        "type": "object"
        +      },
        +      "data": {
        +        "default": null,
        +        "title": "Data"
        +      },
        +      "error": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        +            "properties": {
        +              "code": {
        +                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        +                "enum": [
        +                  "RATE_LIMIT_EXCEEDED",
        +                  "TIER_INSUFFICIENT",
        +                  "INVALID_INPUT",
        +                  "SCHEMA_VERSION_MISMATCH",
        +                  "SCHEMA_INVARIANT_VIOLATION",
        +                  "UPSTREAM_TIMEOUT",
        +                  "BACKEND_FAILURE",
        +                  "IP_BLOCKED",
        +                  "RESOURCE_NOT_FOUND",
        +                  "RENDER_FAILURE",
        +                  "OCR_LOW_CONFIDENCE",
        +                  "MANUAL_REVIEW_REQUIRED",
        +                  "ACCEPTANCE_REQUIRED",
        +                  "INVALID_TOKEN"
        +                ],
        +                "type": "string"
        +              },
        +              "details": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "message": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "recoverable": {
        +                "type": "boolean"
        +              },
        +              "retry_after_seconds": {
        +                "anyOf": [
        +                  {
        +                    "minimum": 0,
        +                    "type": "integer"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              }
        +            },
        +            "required": [
        +              "code",
        +              "message",
        +              "recoverable"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      }
        +    },
        +    "required": [
        +      "_meta"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedcompute_strip_foundation1 field changed
      • changedOutput schema / properties / result / anyOf
        Previous value: -[
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "_meta": {
        -        "additionalProperties": false,
        -        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        -        "properties": {
        -          "deliverables": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        -                "properties": {
        -                  "docx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "dxf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "expires_at": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  },
        -                  "pdf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "xlsx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "expires_at"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "document_id": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "issued_at": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "rate_limit_remaining": {
        -            "anyOf": [
        -              {
        -                "minimum": 0,
        -                "type": "integer"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "request_id": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "schema_version": {
        -            "const": "1.0.0",
        -            "default": "1.0.0",
        -            "type": "string"
        -          },
        -          "scope_boundary": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        -                "properties": {
        -                  "not_in_scope": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "produced": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "recommended_companions": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "type": "string"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "produced",
        -                  "not_in_scope"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tier": {
        -            "enum": [
        -              "free",
        -              "paid"
        -            ],
        -            "type": "string"
        -          },
        -          "tier_upgrade": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        -                "properties": {
        -                  "available_tiers": {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        -                      "properties": {
        -                        "billing": {
        -                          "enum": [
        -                            "one_off",
        -                            "monthly",
        -                            "annual"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "currency": {
        -                          "enum": [
        -                            "GBP",
        -                            "SGD",
        -                            "EUR",
        -                            "USD",
        -                            "CAD",
        -                            "AUD",
        -                            "NZD",
        -                            "MYR"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "display_name": {
        -                          "type": "string"
        -                        },
        -                        "price_local": {
        -                          "type": "number"
        -                        },
        -                        "tier_slug": {
        -                          "enum": [
        -                            "7_day_pass",
        -                            "solo",
        -                            "studio",
        -                            "practice"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "unlock_summary": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "tier_slug",
        -                        "display_name",
        -                        "price_local",
        -                        "currency",
        -                        "billing",
        -                        "unlock_summary"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "current_tier": {
        -                    "const": "free",
        -                    "default": "free",
        -                    "type": "string"
        -                  },
        -                  "pass_credit": {
        -                    "anyOf": [
        -                      {
        -                        "additionalProperties": false,
        -                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        -                        "properties": {
        -                          "amount_local": {
        -                            "type": "number"
        -                          },
        -                          "applies_to": {
        -                            "const": "solo_first_month",
        -                            "default": "solo_first_month",
        -                            "type": "string"
        -                          },
        -                          "currency": {
        -                            "type": "string"
        -                          },
        -                          "redeemable_until": {
        -                            "type": "string"
        -                          }
        -                        },
        -                        "required": [
        -                          "amount_local",
        -                          "currency",
        -                          "redeemable_until"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "pricing_url": {
        -                    "default": "https://civilquants.com/pricing",
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "available_tiers"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tos_url": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "upgrade_hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "warranty_disclaimer": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          }
        -        },
        -        "required": [
        -          "request_id",
        -          "issued_at",
        -          "tier"
        -        ],
        -        "type": "object"
        -      },
        -      "data": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Schema § 1.1 — the typed payload returned inside `MCPResponse[ComputeResult]`.\n\nFree-tier responses omit `drawings` (the downloadable CAD artefact\npointers — the paid differentiator); the bridge enforces this. The\n`audit_trail` and the inline `drawing` preview are present on BOTH tiers\n(V1 ALIGN / 60th-fire D + C). `text_summary` is bounded to 2000 chars —\nkeeps the LLM-facing summary token-cheap and forces longer narrative into\nBoQ row descriptions where it belongs. `warnings` is the non-fatal\ngeometry advisory list (both tiers).",
        -            "properties": {
        -              "assembly_slug": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "audit_trail": {
        -                "anyOf": [
        -                  {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.7 — paid-tier audit-trail entry.\n\nOne entry per BoQ row; `boq_row_index` ties to the row position in\n`ComputeResult.boq_rows`. `derivation` is the human-readable formula\nwalk-through; `formula` is the optional formal expression.",
        -                      "properties": {
        -                        "boq_row_index": {
        -                          "minimum": 0,
        -                          "type": "integer"
        -                        },
        -                        "derivation": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "formula": {
        -                          "anyOf": [
        -                            {
        -                              "type": "string"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ],
        -                          "default": null
        -                        },
        -                        "id": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "parameters_referenced": {
        -                          "items": {
        -                            "type": "string"
        -                          },
        -                          "type": "array"
        -                        }
        -                      },
        -                      "required": [
        -                        "id",
        -                        "boq_row_index",
        -                        "derivation"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "boq_rows": {
        -                "items": {
        -                  "additionalProperties": false,
        -                  "description": "Schema § 1.3 — a single bill row in the requested standard's format.\n\n`description` is the non-verbatim functional description per spec § 13.9 /\n§ 15 invariant — NEVER reproduces a standard's verbatim clause text.\n`rate` / `amount` ship null because rates are commodity data the customer\nowns; the engine's job is the measurement, not the pricing.",
        -                  "properties": {
        -                    "amount": {
        -                      "anyOf": [
        -                        {
        -                          "type": "number"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "attribution": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "audit_id": {
        -                      "anyOf": [
        -                        {
        -                          "type": "string"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "description": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "quantity": {
        -                      "minimum": 0,
        -                      "type": "number"
        -                    },
        -                    "rate": {
        -                      "anyOf": [
        -                        {
        -                          "type": "number"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "unit": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "work_section": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    }
        -                  },
        -                  "required": [
        -                    "work_section",
        -                    "description",
        -                    "quantity",
        -                    "unit",
        -                    "attribution"
        -                  ],
        -                  "type": "object"
        -                },
        -                "type": "array"
        -              },
        -              "drawing": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": false,
        -                    "description": "Schema § 1.6a — inline server-rendered SVG preview of the geometry.\n\nThe MCP mirror of the web ``/compute`` response's ``drawing`` field\n(``api.schemas.compute.DrawingRef``): the same on-screen dimensioned\ndrawing both tiers see in the workspace, surfaced on the MCP compute\nresponse so a chat client can render it inline (60th-fire item C). This\nis the on-screen preview — present on BOTH tiers per the free/paid\nboundary; the downloadable CAD artefacts (DXF / dimensioned PDF) remain\nthe paid differentiator via the export tools.\n\nDefined here rather than importing ``DrawingRef`` because the web\n``schemas`` package imports back into this module (``schemas.render``),\nso reusing it would create an import cycle — the MCP wire contract keeps\nits own copy, the same pattern as ``BoQRow`` / ``DrawingReference``.",
        -                    "properties": {
        -                      "entity_count": {
        -                        "minimum": 0,
        -                        "type": "integer"
        -                      },
        -                      "svg_b64": {
        -                        "minLength": 1,
        -                        "type": "string"
        -                      },
        -                      "unit_of_drawing": {
        -                        "const": "m",
        -                        "default": "m",
        -                        "type": "string"
        -                      },
        -                      "viewbox_height": {
        -                        "exclusiveMinimum": 0,
        -                        "type": "number"
        -                      },
        -                      "viewbox_width": {
        -                        "exclusiveMinimum": 0,
        -                        "type": "number"
        -                      },
        -                      "viewbox_x": {
        -                        "type": "number"
        -                      },
        -                      "viewbox_y": {
        -                        "type": "number"
        -                      }
        -                    },
        -                    "required": [
        -                      "svg_b64",
        -                      "viewbox_x",
        -                      "viewbox_y",
        -                      "viewbox_width",
        -                      "viewbox_height",
        -                      "entity_count"
        -                    ],
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "drawings": {
        -                "anyOf": [
        -                  {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.6 — paid-tier drawing artefact pointer.\n\n`url` is an R2-signed URL; expiry is carried in `_meta.deliverables.expires_at`\non the envelope (not duplicated here). `layers` is DXF-only; PDF/SVG\ncallers omit it.",
        -                      "properties": {
        -                        "drawing_type": {
        -                          "enum": [
        -                            "section",
        -                            "plan",
        -                            "elevation",
        -                            "isometric",
        -                            "detail"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "format": {
        -                          "enum": [
        -                            "DXF",
        -                            "PDF",
        -                            "SVG"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "layers": {
        -                          "anyOf": [
        -                            {
        -                              "items": {
        -                                "type": "string"
        -                              },
        -                              "type": "array"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ],
        -                          "default": null
        -                        },
        -                        "scale": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "sheet_size": {
        -                          "enum": [
        -                            "A1",
        -                            "A2",
        -                            "A3",
        -                            "A4"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "url": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "drawing_type",
        -                        "format",
        -                        "url",
        -                        "sheet_size",
        -                        "scale"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "parameters_used": {
        -                "additionalProperties": false,
        -                "description": "Schema § 1.2 — the parameter snapshot the engine actually used.\n\nSplits user-supplied values from engine defaults so customers can see\nwhich numbers came from them and which the engine filled in. Every\ndefaulted parameter SHOULD have a corresponding entry in `assumptions`\n— the bridge layer enforces this when wrapping engine output.",
        -                "properties": {
        -                  "assumptions": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "engine_defaults": {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  "resolved_from_description": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "additionalProperties": false,
        -                          "description": "Schema § 1.2 — a parameter resolved by the forgiving-input layer.\n\nPopulated by the Track B-Forgiving Haiku-4.5 resolution pass; until that\nlayer lands, instances are constructed only by tests. `source` distinguishes\nthe resolution path so customers can audit which fields were inferred.",
        -                          "properties": {
        -                            "confidence": {
        -                              "anyOf": [
        -                                {
        -                                  "enum": [
        -                                    "high",
        -                                    "medium",
        -                                    "low"
        -                                  ],
        -                                  "type": "string"
        -                                },
        -                                {
        -                                  "type": "null"
        -                                }
        -                              ],
        -                              "default": null
        -                            },
        -                            "field_name": {
        -                              "minLength": 1,
        -                              "type": "string"
        -                            },
        -                            "resolved_value": {},
        -                            "source": {
        -                              "enum": [
        -                                "description_field",
        -                                "haiku_resolution",
        -                                "engine_default"
        -                              ],
        -                              "type": "string"
        -                            }
        -                          },
        -                          "required": [
        -                            "field_name",
        -                            "resolved_value",
        -                            "source"
        -                          ],
        -                          "type": "object"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "user_supplied": {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  }
        -                },
        -                "type": "object"
        -              },
        -              "standard": {
        -                "enum": [
        -                  "CESMM4",
        -                  "NRM2",
        -                  "SMM7",
        -                  "MMHW"
        -                ],
        -                "type": "string"
        -              },
        -              "text_summary": {
        -                "maxLength": 2000,
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "totals_summary": {
        -                "additionalProperties": false,
        -                "description": "Schema § 1.4 — totals_summary as a typed wrapper around the free-form dict.\n\nWire shape is a flat object (`{\"concrete_m3\": {...}, \"rebar_t\": {...}}`).\nWe model it as `RootModel`-equivalent via `model_config(extra=\"allow\")`\n+ a single `__root__`-style `entries` dict. Pydantic v2 recommends\n`RootModel` for free-form roots; using a wrapper class keeps the import\nsurface uniform with the rest of this module.",
        -                "properties": {
        -                  "entries": {
        -                    "additionalProperties": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.4 — single material/work-class total entry.",
        -                      "properties": {
        -                        "quantity": {
        -                          "minimum": 0,
        -                          "type": "number"
        -                        },
        -                        "unit": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "quantity",
        -                        "unit"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "object"
        -                  }
        -                },
        -                "type": "object"
        -              },
        -              "warnings": {
        -                "items": {
        -                  "additionalProperties": false,
        -                  "description": "Schema § 1.8 — a non-fatal geometry advisory (56th-fire T2).\n\nThe wire projection of the engine's `core.GeometryWarning`. Advisory only:\na warning NEVER changes a measured quantity — it flags geometry that is\nvalid but likely a mistake (e.g. a stale dependent-height default). Present\non BOTH tiers — a correctness/safety signal, not a paid feature.",
        -                  "properties": {
        -                    "affected_params": {
        -                      "items": {
        -                        "type": "string"
        -                      },
        -                      "type": "array"
        -                    },
        -                    "code": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "detail": {
        -                      "additionalProperties": {
        -                        "type": "number"
        -                      },
        -                      "type": "object"
        -                    },
        -                    "message": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "severity": {
        -                      "enum": [
        -                        "info",
        -                        "advisory",
        -                        "caution"
        -                      ],
        -                      "type": "string"
        -                    }
        -                  },
        -                  "required": [
        -                    "code",
        -                    "severity",
        -                    "message"
        -                  ],
        -                  "type": "object"
        -                },
        -                "type": "array"
        -              }
        -            },
        -            "required": [
        -              "assembly_slug",
        -              "standard",
        -              "parameters_used",
        -              "boq_rows",
        -              "totals_summary",
        -              "text_summary"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      },
        -      "error": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        -            "properties": {
        -              "code": {
        -                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        -                "enum": [
        -                  "RATE_LIMIT_EXCEEDED",
        -                  "TIER_INSUFFICIENT",
        -                  "INVALID_INPUT",
        -                  "SCHEMA_VERSION_MISMATCH",
        -                  "SCHEMA_INVARIANT_VIOLATION",
        -                  "UPSTREAM_TIMEOUT",
        -                  "BACKEND_FAILURE",
        -                  "IP_BLOCKED",
        -                  "RESOURCE_NOT_FOUND",
        -                  "RENDER_FAILURE",
        -                  "OCR_LOW_CONFIDENCE",
        -                  "MANUAL_REVIEW_REQUIRED",
        -                  "ACCEPTANCE_REQUIRED",
        -                  "INVALID_TOKEN"
        -                ],
        -                "type": "string"
        -              },
        -              "details": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "message": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "recoverable": {
        -                "type": "boolean"
        -              },
        -              "retry_after_seconds": {
        -                "anyOf": [
        -                  {
        -                    "minimum": 0,
        -                    "type": "integer"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              }
        -            },
        -            "required": [
        -              "code",
        -              "message",
        -              "recoverable"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      }
        -    },
        -    "required": [
        -      "_meta"
        -    ],
        -    "type": "object"
        -  },
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "_meta": {
        -        "additionalProperties": false,
        -        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        -        "properties": {
        -          "deliverables": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        -                "properties": {
        -                  "docx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "dxf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "expires_at": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  },
        -                  "pdf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "xlsx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "expires_at"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "document_id": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "issued_at": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "rate_limit_remaining": {
        -            "anyOf": [
        -              {
        -                "minimum": 0,
        -                "type": "integer"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "request_id": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "schema_version": {
        -            "const": "1.0.0",
        -            "default": "1.0.0",
        -            "type": "string"
        -          },
        -          "scope_boundary": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        -                "properties": {
        -                  "not_in_scope": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "produced": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "recommended_companions": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "type": "string"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "produced",
        -                  "not_in_scope"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tier": {
        -            "enum": [
        -              "free",
        -              "paid"
        -            ],
        -            "type": "string"
        -          },
        -          "tier_upgrade": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        -                "properties": {
        -                  "available_tiers": {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        -                      "properties": {
        -                        "billing": {
        -                          "enum": [
        -                            "one_off",
        -                            "monthly",
        -                            "annual"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "currency": {
        -                          "enum": [
        -                            "GBP",
        -                            "SGD",
        -                            "EUR",
        -                            "USD",
        -                            "CAD",
        -                            "AUD",
        -                            "NZD",
        -                            "MYR"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "display_name": {
        -                          "type": "string"
        -                        },
        -                        "price_local": {
        -                          "type": "number"
        -                        },
        -                        "tier_slug": {
        -                          "enum": [
        -                            "7_day_pass",
        -                            "solo",
        -                            "studio",
        -                            "practice"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "unlock_summary": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "tier_slug",
        -                        "display_name",
        -                        "price_local",
        -                        "currency",
        -                        "billing",
        -                        "unlock_summary"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "current_tier": {
        -                    "const": "free",
        -                    "default": "free",
        -                    "type": "string"
        -                  },
        -                  "pass_credit": {
        -                    "anyOf": [
        -                      {
        -                        "additionalProperties": false,
        -                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        -                        "properties": {
        -                          "amount_local": {
        -                            "type": "number"
        -                          },
        -                          "applies_to": {
        -                            "const": "solo_first_month",
        -                            "default": "solo_first_month",
        -                            "type": "string"
        -                          },
        -                          "currency": {
        -                            "type": "string"
        -                          },
        -                          "redeemable_until": {
        -                            "type": "string"
        -                          }
        -                        },
        -                        "required": [
        -                          "amount_local",
        -                          "currency",
        -                          "redeemable_until"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "pricing_url": {
        -                    "default": "https://civilquants.com/pricing",
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "available_tiers"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tos_url": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "upgrade_hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "warranty_disclaimer": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          }
        -        },
        -        "required": [
        -          "request_id",
        -          "issued_at",
        -          "tier"
        -        ],
        -        "type": "object"
        -      },
        -      "data": {
        -        "default": null,
        -        "title": "Data"
        -      },
        -      "error": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        -            "properties": {
        -              "code": {
        -                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        -                "enum": [
        -                  "RATE_LIMIT_EXCEEDED",
        -                  "TIER_INSUFFICIENT",
        -                  "INVALID_INPUT",
        -                  "SCHEMA_VERSION_MISMATCH",
        -                  "SCHEMA_INVARIANT_VIOLATION",
        -                  "UPSTREAM_TIMEOUT",
        -                  "BACKEND_FAILURE",
        -                  "IP_BLOCKED",
        -                  "RESOURCE_NOT_FOUND",
        -                  "RENDER_FAILURE",
        -                  "OCR_LOW_CONFIDENCE",
        -                  "MANUAL_REVIEW_REQUIRED",
        -                  "ACCEPTANCE_REQUIRED",
        -                  "INVALID_TOKEN"
        -                ],
        -                "type": "string"
        -              },
        -              "details": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "message": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "recoverable": {
        -                "type": "boolean"
        -              },
        -              "retry_after_seconds": {
        -                "anyOf": [
        -                  {
        -                    "minimum": 0,
        -                    "type": "integer"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              }
        -            },
        -            "required": [
        -              "code",
        -              "message",
        -              "recoverable"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      }
        -    },
        -    "required": [
        -      "_meta"
        -    ],
        -    "type": "object"
        -  }
        -]New value: +[
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "_meta": {
        +        "additionalProperties": false,
        +        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        +        "properties": {
        +          "deliverables": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        +                "properties": {
        +                  "docx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "dxf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "expires_at": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  },
        +                  "pdf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "xlsx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "expires_at"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "document_id": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "issued_at": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "rate_limit_remaining": {
        +            "anyOf": [
        +              {
        +                "minimum": 0,
        +                "type": "integer"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "request_id": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "schema_version": {
        +            "const": "1.0.0",
        +            "default": "1.0.0",
        +            "type": "string"
        +          },
        +          "scope_boundary": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        +                "properties": {
        +                  "not_in_scope": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "produced": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "recommended_companions": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "type": "string"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "produced",
        +                  "not_in_scope"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tier": {
        +            "enum": [
        +              "free",
        +              "paid"
        +            ],
        +            "type": "string"
        +          },
        +          "tier_upgrade": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        +                "properties": {
        +                  "available_tiers": {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        +                      "properties": {
        +                        "billing": {
        +                          "enum": [
        +                            "one_off",
        +                            "monthly",
        +                            "annual"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "currency": {
        +                          "enum": [
        +                            "GBP",
        +                            "SGD",
        +                            "EUR",
        +                            "USD",
        +                            "CAD",
        +                            "AUD",
        +                            "NZD",
        +                            "MYR"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "display_name": {
        +                          "type": "string"
        +                        },
        +                        "price_local": {
        +                          "type": "number"
        +                        },
        +                        "tier_slug": {
        +                          "enum": [
        +                            "7_day_pass",
        +                            "solo",
        +                            "studio",
        +                            "practice"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "unlock_summary": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "tier_slug",
        +                        "display_name",
        +                        "price_local",
        +                        "currency",
        +                        "billing",
        +                        "unlock_summary"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "current_tier": {
        +                    "const": "free",
        +                    "default": "free",
        +                    "type": "string"
        +                  },
        +                  "pass_credit": {
        +                    "anyOf": [
        +                      {
        +                        "additionalProperties": false,
        +                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        +                        "properties": {
        +                          "amount_local": {
        +                            "type": "number"
        +                          },
        +                          "applies_to": {
        +                            "const": "solo_first_month",
        +                            "default": "solo_first_month",
        +                            "type": "string"
        +                          },
        +                          "currency": {
        +                            "type": "string"
        +                          },
        +                          "redeemable_until": {
        +                            "type": "string"
        +                          }
        +                        },
        +                        "required": [
        +                          "amount_local",
        +                          "currency",
        +                          "redeemable_until"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "pricing_url": {
        +                    "default": "https://civilquants.com/pricing",
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "available_tiers"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tos_url": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "upgrade_hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "warranty_disclaimer": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          }
        +        },
        +        "required": [
        +          "request_id",
        +          "issued_at",
        +          "tier"
        +        ],
        +        "type": "object"
        +      },
        +      "data": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Schema § 1.1 — the typed payload returned inside `MCPResponse[ComputeResult]`.\n\nFree-tier responses omit `drawings` (the downloadable CAD artefact\npointers — the paid differentiator); the bridge enforces this. The\n`audit_trail` and the inline `drawing` preview are present on BOTH tiers\n(V1 ALIGN / 60th-fire D + C). `text_summary` is bounded to 2000 chars —\nkeeps the LLM-facing summary token-cheap and forces longer narrative into\nBoQ row descriptions where it belongs. `warnings` is the non-fatal\ngeometry advisory list (both tiers).",
        +            "properties": {
        +              "assembly_slug": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "audit_trail": {
        +                "anyOf": [
        +                  {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.7 — paid-tier audit-trail entry.\n\nOne entry per BoQ row; `boq_row_index` ties to the row position in\n`ComputeResult.boq_rows`. `derivation` is the human-readable formula\nwalk-through; `formula` is the optional formal expression.",
        +                      "properties": {
        +                        "boq_row_index": {
        +                          "minimum": 0,
        +                          "type": "integer"
        +                        },
        +                        "derivation": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "formula": {
        +                          "anyOf": [
        +                            {
        +                              "type": "string"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ],
        +                          "default": null
        +                        },
        +                        "id": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "parameters_referenced": {
        +                          "items": {
        +                            "type": "string"
        +                          },
        +                          "type": "array"
        +                        }
        +                      },
        +                      "required": [
        +                        "id",
        +                        "boq_row_index",
        +                        "derivation"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "boq_rows": {
        +                "items": {
        +                  "additionalProperties": false,
        +                  "description": "Schema § 1.3 — a single bill row in the requested standard's format.\n\n`description` is the non-verbatim functional description per spec § 13.9 /\n§ 15 invariant — NEVER reproduces a standard's verbatim clause text.\n`rate` / `amount` ship null because rates are commodity data the customer\nowns; the engine's job is the measurement, not the pricing.",
        +                  "properties": {
        +                    "amount": {
        +                      "anyOf": [
        +                        {
        +                          "type": "number"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "attribution": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "audit_id": {
        +                      "anyOf": [
        +                        {
        +                          "type": "string"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "description": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "quantity": {
        +                      "minimum": 0,
        +                      "type": "number"
        +                    },
        +                    "rate": {
        +                      "anyOf": [
        +                        {
        +                          "type": "number"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "unit": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "work_section": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    }
        +                  },
        +                  "required": [
        +                    "work_section",
        +                    "description",
        +                    "quantity",
        +                    "unit",
        +                    "attribution"
        +                  ],
        +                  "type": "object"
        +                },
        +                "type": "array"
        +              },
        +              "drawing": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": false,
        +                    "description": "Schema § 1.6a — inline server-rendered SVG preview of the geometry.\n\nThe MCP mirror of the web ``/compute`` response's ``drawing`` field\n(``api.schemas.compute.DrawingRef``): the same on-screen dimensioned\ndrawing both tiers see in the workspace, surfaced on the MCP compute\nresponse so a chat client can render it inline (60th-fire item C). This\nis the on-screen preview — present on BOTH tiers per the free/paid\nboundary; the downloadable CAD artefacts (DXF / dimensioned PDF) remain\nthe paid differentiator via the export tools.\n\nDefined here rather than importing ``DrawingRef`` because the web\n``schemas`` package imports back into this module (``schemas.render``),\nso reusing it would create an import cycle — the MCP wire contract keeps\nits own copy, the same pattern as ``BoQRow`` / ``DrawingReference``.",
        +                    "properties": {
        +                      "entity_count": {
        +                        "minimum": 0,
        +                        "type": "integer"
        +                      },
        +                      "svg_b64": {
        +                        "minLength": 1,
        +                        "type": "string"
        +                      },
        +                      "unit_of_drawing": {
        +                        "const": "m",
        +                        "default": "m",
        +                        "type": "string"
        +                      },
        +                      "viewbox_height": {
        +                        "exclusiveMinimum": 0,
        +                        "type": "number"
        +                      },
        +                      "viewbox_width": {
        +                        "exclusiveMinimum": 0,
        +                        "type": "number"
        +                      },
        +                      "viewbox_x": {
        +                        "type": "number"
        +                      },
        +                      "viewbox_y": {
        +                        "type": "number"
        +                      }
        +                    },
        +                    "required": [
        +                      "svg_b64",
        +                      "viewbox_x",
        +                      "viewbox_y",
        +                      "viewbox_width",
        +                      "viewbox_height",
        +                      "entity_count"
        +                    ],
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "drawings": {
        +                "anyOf": [
        +                  {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.6 — paid-tier drawing artefact pointer.\n\n`url` is an R2-signed URL; expiry is carried in `_meta.deliverables.expires_at`\non the envelope (not duplicated here). `layers` is DXF-only; PDF/SVG\ncallers omit it.",
        +                      "properties": {
        +                        "drawing_type": {
        +                          "enum": [
        +                            "section",
        +                            "plan",
        +                            "elevation",
        +                            "isometric",
        +                            "detail"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "format": {
        +                          "enum": [
        +                            "DXF",
        +                            "PDF",
        +                            "SVG"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "layers": {
        +                          "anyOf": [
        +                            {
        +                              "items": {
        +                                "type": "string"
        +                              },
        +                              "type": "array"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ],
        +                          "default": null
        +                        },
        +                        "scale": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "sheet_size": {
        +                          "enum": [
        +                            "A1",
        +                            "A2",
        +                            "A3",
        +                            "A4"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "url": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "drawing_type",
        +                        "format",
        +                        "url",
        +                        "sheet_size",
        +                        "scale"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "parameters_used": {
        +                "additionalProperties": false,
        +                "description": "Schema § 1.2 — the parameter snapshot the engine actually used.\n\nSplits user-supplied values from engine defaults so customers can see\nwhich numbers came from them and which the engine filled in. Every\ndefaulted parameter SHOULD have a corresponding entry in `assumptions`\n— the bridge layer enforces this when wrapping engine output.",
        +                "properties": {
        +                  "assumptions": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "engine_defaults": {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  "user_supplied": {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  }
        +                },
        +                "type": "object"
        +              },
        +              "standard": {
        +                "enum": [
        +                  "CESMM4",
        +                  "NRM2",
        +                  "SMM7",
        +                  "MMHW"
        +                ],
        +                "type": "string"
        +              },
        +              "text_summary": {
        +                "maxLength": 2000,
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "totals_summary": {
        +                "additionalProperties": false,
        +                "description": "Schema § 1.4 — totals_summary as a typed wrapper around the free-form dict.\n\nWire shape is a flat object (`{\"concrete_m3\": {...}, \"rebar_t\": {...}}`).\nWe model it as `RootModel`-equivalent via `model_config(extra=\"allow\")`\n+ a single `__root__`-style `entries` dict. Pydantic v2 recommends\n`RootModel` for free-form roots; using a wrapper class keeps the import\nsurface uniform with the rest of this module.",
        +                "properties": {
        +                  "entries": {
        +                    "additionalProperties": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.4 — single material/work-class total entry.",
        +                      "properties": {
        +                        "quantity": {
        +                          "minimum": 0,
        +                          "type": "number"
        +                        },
        +                        "unit": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "quantity",
        +                        "unit"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "object"
        +                  }
        +                },
        +                "type": "object"
        +              },
        +              "warnings": {
        +                "items": {
        +                  "additionalProperties": false,
        +                  "description": "Schema § 1.8 — a non-fatal geometry advisory (56th-fire T2).\n\nThe wire projection of the engine's `core.GeometryWarning`. Advisory only:\na warning NEVER changes a measured quantity — it flags geometry that is\nvalid but likely a mistake (e.g. a stale dependent-height default). Present\non BOTH tiers — a correctness/safety signal, not a paid feature.",
        +                  "properties": {
        +                    "affected_params": {
        +                      "items": {
        +                        "type": "string"
        +                      },
        +                      "type": "array"
        +                    },
        +                    "code": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "detail": {
        +                      "additionalProperties": {
        +                        "type": "number"
        +                      },
        +                      "type": "object"
        +                    },
        +                    "message": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "severity": {
        +                      "enum": [
        +                        "info",
        +                        "advisory",
        +                        "caution"
        +                      ],
        +                      "type": "string"
        +                    }
        +                  },
        +                  "required": [
        +                    "code",
        +                    "severity",
        +                    "message"
        +                  ],
        +                  "type": "object"
        +                },
        +                "type": "array"
        +              }
        +            },
        +            "required": [
        +              "assembly_slug",
        +              "standard",
        +              "parameters_used",
        +              "boq_rows",
        +              "totals_summary",
        +              "text_summary"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      },
        +      "error": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        +            "properties": {
        +              "code": {
        +                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        +                "enum": [
        +                  "RATE_LIMIT_EXCEEDED",
        +                  "TIER_INSUFFICIENT",
        +                  "INVALID_INPUT",
        +                  "SCHEMA_VERSION_MISMATCH",
        +                  "SCHEMA_INVARIANT_VIOLATION",
        +                  "UPSTREAM_TIMEOUT",
        +                  "BACKEND_FAILURE",
        +                  "IP_BLOCKED",
        +                  "RESOURCE_NOT_FOUND",
        +                  "RENDER_FAILURE",
        +                  "OCR_LOW_CONFIDENCE",
        +                  "MANUAL_REVIEW_REQUIRED",
        +                  "ACCEPTANCE_REQUIRED",
        +                  "INVALID_TOKEN"
        +                ],
        +                "type": "string"
        +              },
        +              "details": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "message": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "recoverable": {
        +                "type": "boolean"
        +              },
        +              "retry_after_seconds": {
        +                "anyOf": [
        +                  {
        +                    "minimum": 0,
        +                    "type": "integer"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              }
        +            },
        +            "required": [
        +              "code",
        +              "message",
        +              "recoverable"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      }
        +    },
        +    "required": [
        +      "_meta"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "_meta": {
        +        "additionalProperties": false,
        +        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        +        "properties": {
        +          "deliverables": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        +                "properties": {
        +                  "docx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "dxf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "expires_at": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  },
        +                  "pdf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "xlsx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "expires_at"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "document_id": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "issued_at": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "rate_limit_remaining": {
        +            "anyOf": [
        +              {
        +                "minimum": 0,
        +                "type": "integer"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "request_id": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "schema_version": {
        +            "const": "1.0.0",
        +            "default": "1.0.0",
        +            "type": "string"
        +          },
        +          "scope_boundary": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        +                "properties": {
        +                  "not_in_scope": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "produced": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "recommended_companions": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "type": "string"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "produced",
        +                  "not_in_scope"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tier": {
        +            "enum": [
        +              "free",
        +              "paid"
        +            ],
        +            "type": "string"
        +          },
        +          "tier_upgrade": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        +                "properties": {
        +                  "available_tiers": {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        +                      "properties": {
        +                        "billing": {
        +                          "enum": [
        +                            "one_off",
        +                            "monthly",
        +                            "annual"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "currency": {
        +                          "enum": [
        +                            "GBP",
        +                            "SGD",
        +                            "EUR",
        +                            "USD",
        +                            "CAD",
        +                            "AUD",
        +                            "NZD",
        +                            "MYR"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "display_name": {
        +                          "type": "string"
        +                        },
        +                        "price_local": {
        +                          "type": "number"
        +                        },
        +                        "tier_slug": {
        +                          "enum": [
        +                            "7_day_pass",
        +                            "solo",
        +                            "studio",
        +                            "practice"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "unlock_summary": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "tier_slug",
        +                        "display_name",
        +                        "price_local",
        +                        "currency",
        +                        "billing",
        +                        "unlock_summary"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "current_tier": {
        +                    "const": "free",
        +                    "default": "free",
        +                    "type": "string"
        +                  },
        +                  "pass_credit": {
        +                    "anyOf": [
        +                      {
        +                        "additionalProperties": false,
        +                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        +                        "properties": {
        +                          "amount_local": {
        +                            "type": "number"
        +                          },
        +                          "applies_to": {
        +                            "const": "solo_first_month",
        +                            "default": "solo_first_month",
        +                            "type": "string"
        +                          },
        +                          "currency": {
        +                            "type": "string"
        +                          },
        +                          "redeemable_until": {
        +                            "type": "string"
        +                          }
        +                        },
        +                        "required": [
        +                          "amount_local",
        +                          "currency",
        +                          "redeemable_until"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "pricing_url": {
        +                    "default": "https://civilquants.com/pricing",
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "available_tiers"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tos_url": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "upgrade_hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "warranty_disclaimer": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          }
        +        },
        +        "required": [
        +          "request_id",
        +          "issued_at",
        +          "tier"
        +        ],
        +        "type": "object"
        +      },
        +      "data": {
        +        "default": null,
        +        "title": "Data"
        +      },
        +      "error": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        +            "properties": {
        +              "code": {
        +                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        +                "enum": [
        +                  "RATE_LIMIT_EXCEEDED",
        +                  "TIER_INSUFFICIENT",
        +                  "INVALID_INPUT",
        +                  "SCHEMA_VERSION_MISMATCH",
        +                  "SCHEMA_INVARIANT_VIOLATION",
        +                  "UPSTREAM_TIMEOUT",
        +                  "BACKEND_FAILURE",
        +                  "IP_BLOCKED",
        +                  "RESOURCE_NOT_FOUND",
        +                  "RENDER_FAILURE",
        +                  "OCR_LOW_CONFIDENCE",
        +                  "MANUAL_REVIEW_REQUIRED",
        +                  "ACCEPTANCE_REQUIRED",
        +                  "INVALID_TOKEN"
        +                ],
        +                "type": "string"
        +              },
        +              "details": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "message": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "recoverable": {
        +                "type": "boolean"
        +              },
        +              "retry_after_seconds": {
        +                "anyOf": [
        +                  {
        +                    "minimum": 0,
        +                    "type": "integer"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              }
        +            },
        +            "required": [
        +              "code",
        +              "message",
        +              "recoverable"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      }
        +    },
        +    "required": [
        +      "_meta"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedcompute_swale1 field changed
      • changedOutput schema / properties / result / anyOf
        Previous value: -[
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "_meta": {
        -        "additionalProperties": false,
        -        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        -        "properties": {
        -          "deliverables": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        -                "properties": {
        -                  "docx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "dxf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "expires_at": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  },
        -                  "pdf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "xlsx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "expires_at"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "document_id": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "issued_at": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "rate_limit_remaining": {
        -            "anyOf": [
        -              {
        -                "minimum": 0,
        -                "type": "integer"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "request_id": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "schema_version": {
        -            "const": "1.0.0",
        -            "default": "1.0.0",
        -            "type": "string"
        -          },
        -          "scope_boundary": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        -                "properties": {
        -                  "not_in_scope": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "produced": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "recommended_companions": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "type": "string"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "produced",
        -                  "not_in_scope"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tier": {
        -            "enum": [
        -              "free",
        -              "paid"
        -            ],
        -            "type": "string"
        -          },
        -          "tier_upgrade": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        -                "properties": {
        -                  "available_tiers": {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        -                      "properties": {
        -                        "billing": {
        -                          "enum": [
        -                            "one_off",
        -                            "monthly",
        -                            "annual"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "currency": {
        -                          "enum": [
        -                            "GBP",
        -                            "SGD",
        -                            "EUR",
        -                            "USD",
        -                            "CAD",
        -                            "AUD",
        -                            "NZD",
        -                            "MYR"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "display_name": {
        -                          "type": "string"
        -                        },
        -                        "price_local": {
        -                          "type": "number"
        -                        },
        -                        "tier_slug": {
        -                          "enum": [
        -                            "7_day_pass",
        -                            "solo",
        -                            "studio",
        -                            "practice"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "unlock_summary": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "tier_slug",
        -                        "display_name",
        -                        "price_local",
        -                        "currency",
        -                        "billing",
        -                        "unlock_summary"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "current_tier": {
        -                    "const": "free",
        -                    "default": "free",
        -                    "type": "string"
        -                  },
        -                  "pass_credit": {
        -                    "anyOf": [
        -                      {
        -                        "additionalProperties": false,
        -                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        -                        "properties": {
        -                          "amount_local": {
        -                            "type": "number"
        -                          },
        -                          "applies_to": {
        -                            "const": "solo_first_month",
        -                            "default": "solo_first_month",
        -                            "type": "string"
        -                          },
        -                          "currency": {
        -                            "type": "string"
        -                          },
        -                          "redeemable_until": {
        -                            "type": "string"
        -                          }
        -                        },
        -                        "required": [
        -                          "amount_local",
        -                          "currency",
        -                          "redeemable_until"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "pricing_url": {
        -                    "default": "https://civilquants.com/pricing",
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "available_tiers"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tos_url": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "upgrade_hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "warranty_disclaimer": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          }
        -        },
        -        "required": [
        -          "request_id",
        -          "issued_at",
        -          "tier"
        -        ],
        -        "type": "object"
        -      },
        -      "data": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Schema § 1.1 — the typed payload returned inside `MCPResponse[ComputeResult]`.\n\nFree-tier responses omit `drawings` (the downloadable CAD artefact\npointers — the paid differentiator); the bridge enforces this. The\n`audit_trail` and the inline `drawing` preview are present on BOTH tiers\n(V1 ALIGN / 60th-fire D + C). `text_summary` is bounded to 2000 chars —\nkeeps the LLM-facing summary token-cheap and forces longer narrative into\nBoQ row descriptions where it belongs. `warnings` is the non-fatal\ngeometry advisory list (both tiers).",
        -            "properties": {
        -              "assembly_slug": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "audit_trail": {
        -                "anyOf": [
        -                  {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.7 — paid-tier audit-trail entry.\n\nOne entry per BoQ row; `boq_row_index` ties to the row position in\n`ComputeResult.boq_rows`. `derivation` is the human-readable formula\nwalk-through; `formula` is the optional formal expression.",
        -                      "properties": {
        -                        "boq_row_index": {
        -                          "minimum": 0,
        -                          "type": "integer"
        -                        },
        -                        "derivation": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "formula": {
        -                          "anyOf": [
        -                            {
        -                              "type": "string"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ],
        -                          "default": null
        -                        },
        -                        "id": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "parameters_referenced": {
        -                          "items": {
        -                            "type": "string"
        -                          },
        -                          "type": "array"
        -                        }
        -                      },
        -                      "required": [
        -                        "id",
        -                        "boq_row_index",
        -                        "derivation"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "boq_rows": {
        -                "items": {
        -                  "additionalProperties": false,
        -                  "description": "Schema § 1.3 — a single bill row in the requested standard's format.\n\n`description` is the non-verbatim functional description per spec § 13.9 /\n§ 15 invariant — NEVER reproduces a standard's verbatim clause text.\n`rate` / `amount` ship null because rates are commodity data the customer\nowns; the engine's job is the measurement, not the pricing.",
        -                  "properties": {
        -                    "amount": {
        -                      "anyOf": [
        -                        {
        -                          "type": "number"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "attribution": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "audit_id": {
        -                      "anyOf": [
        -                        {
        -                          "type": "string"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "description": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "quantity": {
        -                      "minimum": 0,
        -                      "type": "number"
        -                    },
        -                    "rate": {
        -                      "anyOf": [
        -                        {
        -                          "type": "number"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "unit": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "work_section": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    }
        -                  },
        -                  "required": [
        -                    "work_section",
        -                    "description",
        -                    "quantity",
        -                    "unit",
        -                    "attribution"
        -                  ],
        -                  "type": "object"
        -                },
        -                "type": "array"
        -              },
        -              "drawing": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": false,
        -                    "description": "Schema § 1.6a — inline server-rendered SVG preview of the geometry.\n\nThe MCP mirror of the web ``/compute`` response's ``drawing`` field\n(``api.schemas.compute.DrawingRef``): the same on-screen dimensioned\ndrawing both tiers see in the workspace, surfaced on the MCP compute\nresponse so a chat client can render it inline (60th-fire item C). This\nis the on-screen preview — present on BOTH tiers per the free/paid\nboundary; the downloadable CAD artefacts (DXF / dimensioned PDF) remain\nthe paid differentiator via the export tools.\n\nDefined here rather than importing ``DrawingRef`` because the web\n``schemas`` package imports back into this module (``schemas.render``),\nso reusing it would create an import cycle — the MCP wire contract keeps\nits own copy, the same pattern as ``BoQRow`` / ``DrawingReference``.",
        -                    "properties": {
        -                      "entity_count": {
        -                        "minimum": 0,
        -                        "type": "integer"
        -                      },
        -                      "svg_b64": {
        -                        "minLength": 1,
        -                        "type": "string"
        -                      },
        -                      "unit_of_drawing": {
        -                        "const": "m",
        -                        "default": "m",
        -                        "type": "string"
        -                      },
        -                      "viewbox_height": {
        -                        "exclusiveMinimum": 0,
        -                        "type": "number"
        -                      },
        -                      "viewbox_width": {
        -                        "exclusiveMinimum": 0,
        -                        "type": "number"
        -                      },
        -                      "viewbox_x": {
        -                        "type": "number"
        -                      },
        -                      "viewbox_y": {
        -                        "type": "number"
        -                      }
        -                    },
        -                    "required": [
        -                      "svg_b64",
        -                      "viewbox_x",
        -                      "viewbox_y",
        -                      "viewbox_width",
        -                      "viewbox_height",
        -                      "entity_count"
        -                    ],
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "drawings": {
        -                "anyOf": [
        -                  {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.6 — paid-tier drawing artefact pointer.\n\n`url` is an R2-signed URL; expiry is carried in `_meta.deliverables.expires_at`\non the envelope (not duplicated here). `layers` is DXF-only; PDF/SVG\ncallers omit it.",
        -                      "properties": {
        -                        "drawing_type": {
        -                          "enum": [
        -                            "section",
        -                            "plan",
        -                            "elevation",
        -                            "isometric",
        -                            "detail"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "format": {
        -                          "enum": [
        -                            "DXF",
        -                            "PDF",
        -                            "SVG"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "layers": {
        -                          "anyOf": [
        -                            {
        -                              "items": {
        -                                "type": "string"
        -                              },
        -                              "type": "array"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ],
        -                          "default": null
        -                        },
        -                        "scale": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "sheet_size": {
        -                          "enum": [
        -                            "A1",
        -                            "A2",
        -                            "A3",
        -                            "A4"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "url": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "drawing_type",
        -                        "format",
        -                        "url",
        -                        "sheet_size",
        -                        "scale"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "parameters_used": {
        -                "additionalProperties": false,
        -                "description": "Schema § 1.2 — the parameter snapshot the engine actually used.\n\nSplits user-supplied values from engine defaults so customers can see\nwhich numbers came from them and which the engine filled in. Every\ndefaulted parameter SHOULD have a corresponding entry in `assumptions`\n— the bridge layer enforces this when wrapping engine output.",
        -                "properties": {
        -                  "assumptions": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "engine_defaults": {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  "resolved_from_description": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "additionalProperties": false,
        -                          "description": "Schema § 1.2 — a parameter resolved by the forgiving-input layer.\n\nPopulated by the Track B-Forgiving Haiku-4.5 resolution pass; until that\nlayer lands, instances are constructed only by tests. `source` distinguishes\nthe resolution path so customers can audit which fields were inferred.",
        -                          "properties": {
        -                            "confidence": {
        -                              "anyOf": [
        -                                {
        -                                  "enum": [
        -                                    "high",
        -                                    "medium",
        -                                    "low"
        -                                  ],
        -                                  "type": "string"
        -                                },
        -                                {
        -                                  "type": "null"
        -                                }
        -                              ],
        -                              "default": null
        -                            },
        -                            "field_name": {
        -                              "minLength": 1,
        -                              "type": "string"
        -                            },
        -                            "resolved_value": {},
        -                            "source": {
        -                              "enum": [
        -                                "description_field",
        -                                "haiku_resolution",
        -                                "engine_default"
        -                              ],
        -                              "type": "string"
        -                            }
        -                          },
        -                          "required": [
        -                            "field_name",
        -                            "resolved_value",
        -                            "source"
        -                          ],
        -                          "type": "object"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "user_supplied": {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  }
        -                },
        -                "type": "object"
        -              },
        -              "standard": {
        -                "enum": [
        -                  "CESMM4",
        -                  "NRM2",
        -                  "SMM7",
        -                  "MMHW"
        -                ],
        -                "type": "string"
        -              },
        -              "text_summary": {
        -                "maxLength": 2000,
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "totals_summary": {
        -                "additionalProperties": false,
        -                "description": "Schema § 1.4 — totals_summary as a typed wrapper around the free-form dict.\n\nWire shape is a flat object (`{\"concrete_m3\": {...}, \"rebar_t\": {...}}`).\nWe model it as `RootModel`-equivalent via `model_config(extra=\"allow\")`\n+ a single `__root__`-style `entries` dict. Pydantic v2 recommends\n`RootModel` for free-form roots; using a wrapper class keeps the import\nsurface uniform with the rest of this module.",
        -                "properties": {
        -                  "entries": {
        -                    "additionalProperties": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.4 — single material/work-class total entry.",
        -                      "properties": {
        -                        "quantity": {
        -                          "minimum": 0,
        -                          "type": "number"
        -                        },
        -                        "unit": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "quantity",
        -                        "unit"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "object"
        -                  }
        -                },
        -                "type": "object"
        -              },
        -              "warnings": {
        -                "items": {
        -                  "additionalProperties": false,
        -                  "description": "Schema § 1.8 — a non-fatal geometry advisory (56th-fire T2).\n\nThe wire projection of the engine's `core.GeometryWarning`. Advisory only:\na warning NEVER changes a measured quantity — it flags geometry that is\nvalid but likely a mistake (e.g. a stale dependent-height default). Present\non BOTH tiers — a correctness/safety signal, not a paid feature.",
        -                  "properties": {
        -                    "affected_params": {
        -                      "items": {
        -                        "type": "string"
        -                      },
        -                      "type": "array"
        -                    },
        -                    "code": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "detail": {
        -                      "additionalProperties": {
        -                        "type": "number"
        -                      },
        -                      "type": "object"
        -                    },
        -                    "message": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "severity": {
        -                      "enum": [
        -                        "info",
        -                        "advisory",
        -                        "caution"
        -                      ],
        -                      "type": "string"
        -                    }
        -                  },
        -                  "required": [
        -                    "code",
        -                    "severity",
        -                    "message"
        -                  ],
        -                  "type": "object"
        -                },
        -                "type": "array"
        -              }
        -            },
        -            "required": [
        -              "assembly_slug",
        -              "standard",
        -              "parameters_used",
        -              "boq_rows",
        -              "totals_summary",
        -              "text_summary"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      },
        -      "error": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        -            "properties": {
        -              "code": {
        -                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        -                "enum": [
        -                  "RATE_LIMIT_EXCEEDED",
        -                  "TIER_INSUFFICIENT",
        -                  "INVALID_INPUT",
        -                  "SCHEMA_VERSION_MISMATCH",
        -                  "SCHEMA_INVARIANT_VIOLATION",
        -                  "UPSTREAM_TIMEOUT",
        -                  "BACKEND_FAILURE",
        -                  "IP_BLOCKED",
        -                  "RESOURCE_NOT_FOUND",
        -                  "RENDER_FAILURE",
        -                  "OCR_LOW_CONFIDENCE",
        -                  "MANUAL_REVIEW_REQUIRED",
        -                  "ACCEPTANCE_REQUIRED",
        -                  "INVALID_TOKEN"
        -                ],
        -                "type": "string"
        -              },
        -              "details": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "message": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "recoverable": {
        -                "type": "boolean"
        -              },
        -              "retry_after_seconds": {
        -                "anyOf": [
        -                  {
        -                    "minimum": 0,
        -                    "type": "integer"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              }
        -            },
        -            "required": [
        -              "code",
        -              "message",
        -              "recoverable"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      }
        -    },
        -    "required": [
        -      "_meta"
        -    ],
        -    "type": "object"
        -  },
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "_meta": {
        -        "additionalProperties": false,
        -        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        -        "properties": {
        -          "deliverables": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        -                "properties": {
        -                  "docx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "dxf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "expires_at": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  },
        -                  "pdf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "xlsx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "expires_at"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "document_id": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "issued_at": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "rate_limit_remaining": {
        -            "anyOf": [
        -              {
        -                "minimum": 0,
        -                "type": "integer"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "request_id": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "schema_version": {
        -            "const": "1.0.0",
        -            "default": "1.0.0",
        -            "type": "string"
        -          },
        -          "scope_boundary": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        -                "properties": {
        -                  "not_in_scope": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "produced": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "recommended_companions": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "type": "string"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "produced",
        -                  "not_in_scope"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tier": {
        -            "enum": [
        -              "free",
        -              "paid"
        -            ],
        -            "type": "string"
        -          },
        -          "tier_upgrade": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        -                "properties": {
        -                  "available_tiers": {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        -                      "properties": {
        -                        "billing": {
        -                          "enum": [
        -                            "one_off",
        -                            "monthly",
        -                            "annual"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "currency": {
        -                          "enum": [
        -                            "GBP",
        -                            "SGD",
        -                            "EUR",
        -                            "USD",
        -                            "CAD",
        -                            "AUD",
        -                            "NZD",
        -                            "MYR"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "display_name": {
        -                          "type": "string"
        -                        },
        -                        "price_local": {
        -                          "type": "number"
        -                        },
        -                        "tier_slug": {
        -                          "enum": [
        -                            "7_day_pass",
        -                            "solo",
        -                            "studio",
        -                            "practice"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "unlock_summary": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "tier_slug",
        -                        "display_name",
        -                        "price_local",
        -                        "currency",
        -                        "billing",
        -                        "unlock_summary"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "current_tier": {
        -                    "const": "free",
        -                    "default": "free",
        -                    "type": "string"
        -                  },
        -                  "pass_credit": {
        -                    "anyOf": [
        -                      {
        -                        "additionalProperties": false,
        -                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        -                        "properties": {
        -                          "amount_local": {
        -                            "type": "number"
        -                          },
        -                          "applies_to": {
        -                            "const": "solo_first_month",
        -                            "default": "solo_first_month",
        -                            "type": "string"
        -                          },
        -                          "currency": {
        -                            "type": "string"
        -                          },
        -                          "redeemable_until": {
        -                            "type": "string"
        -                          }
        -                        },
        -                        "required": [
        -                          "amount_local",
        -                          "currency",
        -                          "redeemable_until"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "pricing_url": {
        -                    "default": "https://civilquants.com/pricing",
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "available_tiers"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tos_url": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "upgrade_hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "warranty_disclaimer": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          }
        -        },
        -        "required": [
        -          "request_id",
        -          "issued_at",
        -          "tier"
        -        ],
        -        "type": "object"
        -      },
        -      "data": {
        -        "default": null,
        -        "title": "Data"
        -      },
        -      "error": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        -            "properties": {
        -              "code": {
        -                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        -                "enum": [
        -                  "RATE_LIMIT_EXCEEDED",
        -                  "TIER_INSUFFICIENT",
        -                  "INVALID_INPUT",
        -                  "SCHEMA_VERSION_MISMATCH",
        -                  "SCHEMA_INVARIANT_VIOLATION",
        -                  "UPSTREAM_TIMEOUT",
        -                  "BACKEND_FAILURE",
        -                  "IP_BLOCKED",
        -                  "RESOURCE_NOT_FOUND",
        -                  "RENDER_FAILURE",
        -                  "OCR_LOW_CONFIDENCE",
        -                  "MANUAL_REVIEW_REQUIRED",
        -                  "ACCEPTANCE_REQUIRED",
        -                  "INVALID_TOKEN"
        -                ],
        -                "type": "string"
        -              },
        -              "details": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "message": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "recoverable": {
        -                "type": "boolean"
        -              },
        -              "retry_after_seconds": {
        -                "anyOf": [
        -                  {
        -                    "minimum": 0,
        -                    "type": "integer"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              }
        -            },
        -            "required": [
        -              "code",
        -              "message",
        -              "recoverable"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      }
        -    },
        -    "required": [
        -      "_meta"
        -    ],
        -    "type": "object"
        -  }
        -]New value: +[
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "_meta": {
        +        "additionalProperties": false,
        +        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        +        "properties": {
        +          "deliverables": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        +                "properties": {
        +                  "docx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "dxf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "expires_at": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  },
        +                  "pdf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "xlsx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "expires_at"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "document_id": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "issued_at": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "rate_limit_remaining": {
        +            "anyOf": [
        +              {
        +                "minimum": 0,
        +                "type": "integer"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "request_id": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "schema_version": {
        +            "const": "1.0.0",
        +            "default": "1.0.0",
        +            "type": "string"
        +          },
        +          "scope_boundary": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        +                "properties": {
        +                  "not_in_scope": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "produced": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "recommended_companions": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "type": "string"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "produced",
        +                  "not_in_scope"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tier": {
        +            "enum": [
        +              "free",
        +              "paid"
        +            ],
        +            "type": "string"
        +          },
        +          "tier_upgrade": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        +                "properties": {
        +                  "available_tiers": {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        +                      "properties": {
        +                        "billing": {
        +                          "enum": [
        +                            "one_off",
        +                            "monthly",
        +                            "annual"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "currency": {
        +                          "enum": [
        +                            "GBP",
        +                            "SGD",
        +                            "EUR",
        +                            "USD",
        +                            "CAD",
        +                            "AUD",
        +                            "NZD",
        +                            "MYR"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "display_name": {
        +                          "type": "string"
        +                        },
        +                        "price_local": {
        +                          "type": "number"
        +                        },
        +                        "tier_slug": {
        +                          "enum": [
        +                            "7_day_pass",
        +                            "solo",
        +                            "studio",
        +                            "practice"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "unlock_summary": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "tier_slug",
        +                        "display_name",
        +                        "price_local",
        +                        "currency",
        +                        "billing",
        +                        "unlock_summary"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "current_tier": {
        +                    "const": "free",
        +                    "default": "free",
        +                    "type": "string"
        +                  },
        +                  "pass_credit": {
        +                    "anyOf": [
        +                      {
        +                        "additionalProperties": false,
        +                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        +                        "properties": {
        +                          "amount_local": {
        +                            "type": "number"
        +                          },
        +                          "applies_to": {
        +                            "const": "solo_first_month",
        +                            "default": "solo_first_month",
        +                            "type": "string"
        +                          },
        +                          "currency": {
        +                            "type": "string"
        +                          },
        +                          "redeemable_until": {
        +                            "type": "string"
        +                          }
        +                        },
        +                        "required": [
        +                          "amount_local",
        +                          "currency",
        +                          "redeemable_until"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "pricing_url": {
        +                    "default": "https://civilquants.com/pricing",
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "available_tiers"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tos_url": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "upgrade_hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "warranty_disclaimer": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          }
        +        },
        +        "required": [
        +          "request_id",
        +          "issued_at",
        +          "tier"
        +        ],
        +        "type": "object"
        +      },
        +      "data": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Schema § 1.1 — the typed payload returned inside `MCPResponse[ComputeResult]`.\n\nFree-tier responses omit `drawings` (the downloadable CAD artefact\npointers — the paid differentiator); the bridge enforces this. The\n`audit_trail` and the inline `drawing` preview are present on BOTH tiers\n(V1 ALIGN / 60th-fire D + C). `text_summary` is bounded to 2000 chars —\nkeeps the LLM-facing summary token-cheap and forces longer narrative into\nBoQ row descriptions where it belongs. `warnings` is the non-fatal\ngeometry advisory list (both tiers).",
        +            "properties": {
        +              "assembly_slug": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "audit_trail": {
        +                "anyOf": [
        +                  {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.7 — paid-tier audit-trail entry.\n\nOne entry per BoQ row; `boq_row_index` ties to the row position in\n`ComputeResult.boq_rows`. `derivation` is the human-readable formula\nwalk-through; `formula` is the optional formal expression.",
        +                      "properties": {
        +                        "boq_row_index": {
        +                          "minimum": 0,
        +                          "type": "integer"
        +                        },
        +                        "derivation": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "formula": {
        +                          "anyOf": [
        +                            {
        +                              "type": "string"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ],
        +                          "default": null
        +                        },
        +                        "id": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "parameters_referenced": {
        +                          "items": {
        +                            "type": "string"
        +                          },
        +                          "type": "array"
        +                        }
        +                      },
        +                      "required": [
        +                        "id",
        +                        "boq_row_index",
        +                        "derivation"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "boq_rows": {
        +                "items": {
        +                  "additionalProperties": false,
        +                  "description": "Schema § 1.3 — a single bill row in the requested standard's format.\n\n`description` is the non-verbatim functional description per spec § 13.9 /\n§ 15 invariant — NEVER reproduces a standard's verbatim clause text.\n`rate` / `amount` ship null because rates are commodity data the customer\nowns; the engine's job is the measurement, not the pricing.",
        +                  "properties": {
        +                    "amount": {
        +                      "anyOf": [
        +                        {
        +                          "type": "number"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "attribution": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "audit_id": {
        +                      "anyOf": [
        +                        {
        +                          "type": "string"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "description": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "quantity": {
        +                      "minimum": 0,
        +                      "type": "number"
        +                    },
        +                    "rate": {
        +                      "anyOf": [
        +                        {
        +                          "type": "number"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "unit": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "work_section": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    }
        +                  },
        +                  "required": [
        +                    "work_section",
        +                    "description",
        +                    "quantity",
        +                    "unit",
        +                    "attribution"
        +                  ],
        +                  "type": "object"
        +                },
        +                "type": "array"
        +              },
        +              "drawing": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": false,
        +                    "description": "Schema § 1.6a — inline server-rendered SVG preview of the geometry.\n\nThe MCP mirror of the web ``/compute`` response's ``drawing`` field\n(``api.schemas.compute.DrawingRef``): the same on-screen dimensioned\ndrawing both tiers see in the workspace, surfaced on the MCP compute\nresponse so a chat client can render it inline (60th-fire item C). This\nis the on-screen preview — present on BOTH tiers per the free/paid\nboundary; the downloadable CAD artefacts (DXF / dimensioned PDF) remain\nthe paid differentiator via the export tools.\n\nDefined here rather than importing ``DrawingRef`` because the web\n``schemas`` package imports back into this module (``schemas.render``),\nso reusing it would create an import cycle — the MCP wire contract keeps\nits own copy, the same pattern as ``BoQRow`` / ``DrawingReference``.",
        +                    "properties": {
        +                      "entity_count": {
        +                        "minimum": 0,
        +                        "type": "integer"
        +                      },
        +                      "svg_b64": {
        +                        "minLength": 1,
        +                        "type": "string"
        +                      },
        +                      "unit_of_drawing": {
        +                        "const": "m",
        +                        "default": "m",
        +                        "type": "string"
        +                      },
        +                      "viewbox_height": {
        +                        "exclusiveMinimum": 0,
        +                        "type": "number"
        +                      },
        +                      "viewbox_width": {
        +                        "exclusiveMinimum": 0,
        +                        "type": "number"
        +                      },
        +                      "viewbox_x": {
        +                        "type": "number"
        +                      },
        +                      "viewbox_y": {
        +                        "type": "number"
        +                      }
        +                    },
        +                    "required": [
        +                      "svg_b64",
        +                      "viewbox_x",
        +                      "viewbox_y",
        +                      "viewbox_width",
        +                      "viewbox_height",
        +                      "entity_count"
        +                    ],
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "drawings": {
        +                "anyOf": [
        +                  {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.6 — paid-tier drawing artefact pointer.\n\n`url` is an R2-signed URL; expiry is carried in `_meta.deliverables.expires_at`\non the envelope (not duplicated here). `layers` is DXF-only; PDF/SVG\ncallers omit it.",
        +                      "properties": {
        +                        "drawing_type": {
        +                          "enum": [
        +                            "section",
        +                            "plan",
        +                            "elevation",
        +                            "isometric",
        +                            "detail"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "format": {
        +                          "enum": [
        +                            "DXF",
        +                            "PDF",
        +                            "SVG"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "layers": {
        +                          "anyOf": [
        +                            {
        +                              "items": {
        +                                "type": "string"
        +                              },
        +                              "type": "array"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ],
        +                          "default": null
        +                        },
        +                        "scale": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "sheet_size": {
        +                          "enum": [
        +                            "A1",
        +                            "A2",
        +                            "A3",
        +                            "A4"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "url": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "drawing_type",
        +                        "format",
        +                        "url",
        +                        "sheet_size",
        +                        "scale"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "parameters_used": {
        +                "additionalProperties": false,
        +                "description": "Schema § 1.2 — the parameter snapshot the engine actually used.\n\nSplits user-supplied values from engine defaults so customers can see\nwhich numbers came from them and which the engine filled in. Every\ndefaulted parameter SHOULD have a corresponding entry in `assumptions`\n— the bridge layer enforces this when wrapping engine output.",
        +                "properties": {
        +                  "assumptions": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "engine_defaults": {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  "user_supplied": {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  }
        +                },
        +                "type": "object"
        +              },
        +              "standard": {
        +                "enum": [
        +                  "CESMM4",
        +                  "NRM2",
        +                  "SMM7",
        +                  "MMHW"
        +                ],
        +                "type": "string"
        +              },
        +              "text_summary": {
        +                "maxLength": 2000,
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "totals_summary": {
        +                "additionalProperties": false,
        +                "description": "Schema § 1.4 — totals_summary as a typed wrapper around the free-form dict.\n\nWire shape is a flat object (`{\"concrete_m3\": {...}, \"rebar_t\": {...}}`).\nWe model it as `RootModel`-equivalent via `model_config(extra=\"allow\")`\n+ a single `__root__`-style `entries` dict. Pydantic v2 recommends\n`RootModel` for free-form roots; using a wrapper class keeps the import\nsurface uniform with the rest of this module.",
        +                "properties": {
        +                  "entries": {
        +                    "additionalProperties": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.4 — single material/work-class total entry.",
        +                      "properties": {
        +                        "quantity": {
        +                          "minimum": 0,
        +                          "type": "number"
        +                        },
        +                        "unit": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "quantity",
        +                        "unit"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "object"
        +                  }
        +                },
        +                "type": "object"
        +              },
        +              "warnings": {
        +                "items": {
        +                  "additionalProperties": false,
        +                  "description": "Schema § 1.8 — a non-fatal geometry advisory (56th-fire T2).\n\nThe wire projection of the engine's `core.GeometryWarning`. Advisory only:\na warning NEVER changes a measured quantity — it flags geometry that is\nvalid but likely a mistake (e.g. a stale dependent-height default). Present\non BOTH tiers — a correctness/safety signal, not a paid feature.",
        +                  "properties": {
        +                    "affected_params": {
        +                      "items": {
        +                        "type": "string"
        +                      },
        +                      "type": "array"
        +                    },
        +                    "code": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "detail": {
        +                      "additionalProperties": {
        +                        "type": "number"
        +                      },
        +                      "type": "object"
        +                    },
        +                    "message": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "severity": {
        +                      "enum": [
        +                        "info",
        +                        "advisory",
        +                        "caution"
        +                      ],
        +                      "type": "string"
        +                    }
        +                  },
        +                  "required": [
        +                    "code",
        +                    "severity",
        +                    "message"
        +                  ],
        +                  "type": "object"
        +                },
        +                "type": "array"
        +              }
        +            },
        +            "required": [
        +              "assembly_slug",
        +              "standard",
        +              "parameters_used",
        +              "boq_rows",
        +              "totals_summary",
        +              "text_summary"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      },
        +      "error": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        +            "properties": {
        +              "code": {
        +                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        +                "enum": [
        +                  "RATE_LIMIT_EXCEEDED",
        +                  "TIER_INSUFFICIENT",
        +                  "INVALID_INPUT",
        +                  "SCHEMA_VERSION_MISMATCH",
        +                  "SCHEMA_INVARIANT_VIOLATION",
        +                  "UPSTREAM_TIMEOUT",
        +                  "BACKEND_FAILURE",
        +                  "IP_BLOCKED",
        +                  "RESOURCE_NOT_FOUND",
        +                  "RENDER_FAILURE",
        +                  "OCR_LOW_CONFIDENCE",
        +                  "MANUAL_REVIEW_REQUIRED",
        +                  "ACCEPTANCE_REQUIRED",
        +                  "INVALID_TOKEN"
        +                ],
        +                "type": "string"
        +              },
        +              "details": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "message": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "recoverable": {
        +                "type": "boolean"
        +              },
        +              "retry_after_seconds": {
        +                "anyOf": [
        +                  {
        +                    "minimum": 0,
        +                    "type": "integer"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              }
        +            },
        +            "required": [
        +              "code",
        +              "message",
        +              "recoverable"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      }
        +    },
        +    "required": [
        +      "_meta"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "_meta": {
        +        "additionalProperties": false,
        +        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        +        "properties": {
        +          "deliverables": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        +                "properties": {
        +                  "docx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "dxf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "expires_at": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  },
        +                  "pdf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "xlsx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "expires_at"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "document_id": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "issued_at": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "rate_limit_remaining": {
        +            "anyOf": [
        +              {
        +                "minimum": 0,
        +                "type": "integer"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "request_id": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "schema_version": {
        +            "const": "1.0.0",
        +            "default": "1.0.0",
        +            "type": "string"
        +          },
        +          "scope_boundary": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        +                "properties": {
        +                  "not_in_scope": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "produced": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "recommended_companions": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "type": "string"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "produced",
        +                  "not_in_scope"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tier": {
        +            "enum": [
        +              "free",
        +              "paid"
        +            ],
        +            "type": "string"
        +          },
        +          "tier_upgrade": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        +                "properties": {
        +                  "available_tiers": {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        +                      "properties": {
        +                        "billing": {
        +                          "enum": [
        +                            "one_off",
        +                            "monthly",
        +                            "annual"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "currency": {
        +                          "enum": [
        +                            "GBP",
        +                            "SGD",
        +                            "EUR",
        +                            "USD",
        +                            "CAD",
        +                            "AUD",
        +                            "NZD",
        +                            "MYR"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "display_name": {
        +                          "type": "string"
        +                        },
        +                        "price_local": {
        +                          "type": "number"
        +                        },
        +                        "tier_slug": {
        +                          "enum": [
        +                            "7_day_pass",
        +                            "solo",
        +                            "studio",
        +                            "practice"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "unlock_summary": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "tier_slug",
        +                        "display_name",
        +                        "price_local",
        +                        "currency",
        +                        "billing",
        +                        "unlock_summary"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "current_tier": {
        +                    "const": "free",
        +                    "default": "free",
        +                    "type": "string"
        +                  },
        +                  "pass_credit": {
        +                    "anyOf": [
        +                      {
        +                        "additionalProperties": false,
        +                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        +                        "properties": {
        +                          "amount_local": {
        +                            "type": "number"
        +                          },
        +                          "applies_to": {
        +                            "const": "solo_first_month",
        +                            "default": "solo_first_month",
        +                            "type": "string"
        +                          },
        +                          "currency": {
        +                            "type": "string"
        +                          },
        +                          "redeemable_until": {
        +                            "type": "string"
        +                          }
        +                        },
        +                        "required": [
        +                          "amount_local",
        +                          "currency",
        +                          "redeemable_until"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "pricing_url": {
        +                    "default": "https://civilquants.com/pricing",
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "available_tiers"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tos_url": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "upgrade_hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "warranty_disclaimer": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          }
        +        },
        +        "required": [
        +          "request_id",
        +          "issued_at",
        +          "tier"
        +        ],
        +        "type": "object"
        +      },
        +      "data": {
        +        "default": null,
        +        "title": "Data"
        +      },
        +      "error": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        +            "properties": {
        +              "code": {
        +                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        +                "enum": [
        +                  "RATE_LIMIT_EXCEEDED",
        +                  "TIER_INSUFFICIENT",
        +                  "INVALID_INPUT",
        +                  "SCHEMA_VERSION_MISMATCH",
        +                  "SCHEMA_INVARIANT_VIOLATION",
        +                  "UPSTREAM_TIMEOUT",
        +                  "BACKEND_FAILURE",
        +                  "IP_BLOCKED",
        +                  "RESOURCE_NOT_FOUND",
        +                  "RENDER_FAILURE",
        +                  "OCR_LOW_CONFIDENCE",
        +                  "MANUAL_REVIEW_REQUIRED",
        +                  "ACCEPTANCE_REQUIRED",
        +                  "INVALID_TOKEN"
        +                ],
        +                "type": "string"
        +              },
        +              "details": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "message": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "recoverable": {
        +                "type": "boolean"
        +              },
        +              "retry_after_seconds": {
        +                "anyOf": [
        +                  {
        +                    "minimum": 0,
        +                    "type": "integer"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              }
        +            },
        +            "required": [
        +              "code",
        +              "message",
        +              "recoverable"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      }
        +    },
        +    "required": [
        +      "_meta"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedcompute_traffic_sign1 field changed
      • changedOutput schema / properties / result / anyOf
        Previous value: -[
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "_meta": {
        -        "additionalProperties": false,
        -        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        -        "properties": {
        -          "deliverables": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        -                "properties": {
        -                  "docx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "dxf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "expires_at": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  },
        -                  "pdf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "xlsx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "expires_at"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "document_id": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "issued_at": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "rate_limit_remaining": {
        -            "anyOf": [
        -              {
        -                "minimum": 0,
        -                "type": "integer"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "request_id": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "schema_version": {
        -            "const": "1.0.0",
        -            "default": "1.0.0",
        -            "type": "string"
        -          },
        -          "scope_boundary": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        -                "properties": {
        -                  "not_in_scope": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "produced": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "recommended_companions": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "type": "string"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "produced",
        -                  "not_in_scope"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tier": {
        -            "enum": [
        -              "free",
        -              "paid"
        -            ],
        -            "type": "string"
        -          },
        -          "tier_upgrade": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        -                "properties": {
        -                  "available_tiers": {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        -                      "properties": {
        -                        "billing": {
        -                          "enum": [
        -                            "one_off",
        -                            "monthly",
        -                            "annual"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "currency": {
        -                          "enum": [
        -                            "GBP",
        -                            "SGD",
        -                            "EUR",
        -                            "USD",
        -                            "CAD",
        -                            "AUD",
        -                            "NZD",
        -                            "MYR"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "display_name": {
        -                          "type": "string"
        -                        },
        -                        "price_local": {
        -                          "type": "number"
        -                        },
        -                        "tier_slug": {
        -                          "enum": [
        -                            "7_day_pass",
        -                            "solo",
        -                            "studio",
        -                            "practice"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "unlock_summary": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "tier_slug",
        -                        "display_name",
        -                        "price_local",
        -                        "currency",
        -                        "billing",
        -                        "unlock_summary"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "current_tier": {
        -                    "const": "free",
        -                    "default": "free",
        -                    "type": "string"
        -                  },
        -                  "pass_credit": {
        -                    "anyOf": [
        -                      {
        -                        "additionalProperties": false,
        -                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        -                        "properties": {
        -                          "amount_local": {
        -                            "type": "number"
        -                          },
        -                          "applies_to": {
        -                            "const": "solo_first_month",
        -                            "default": "solo_first_month",
        -                            "type": "string"
        -                          },
        -                          "currency": {
        -                            "type": "string"
        -                          },
        -                          "redeemable_until": {
        -                            "type": "string"
        -                          }
        -                        },
        -                        "required": [
        -                          "amount_local",
        -                          "currency",
        -                          "redeemable_until"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "pricing_url": {
        -                    "default": "https://civilquants.com/pricing",
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "available_tiers"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tos_url": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "upgrade_hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "warranty_disclaimer": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          }
        -        },
        -        "required": [
        -          "request_id",
        -          "issued_at",
        -          "tier"
        -        ],
        -        "type": "object"
        -      },
        -      "data": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Schema § 1.1 — the typed payload returned inside `MCPResponse[ComputeResult]`.\n\nFree-tier responses omit `drawings` (the downloadable CAD artefact\npointers — the paid differentiator); the bridge enforces this. The\n`audit_trail` and the inline `drawing` preview are present on BOTH tiers\n(V1 ALIGN / 60th-fire D + C). `text_summary` is bounded to 2000 chars —\nkeeps the LLM-facing summary token-cheap and forces longer narrative into\nBoQ row descriptions where it belongs. `warnings` is the non-fatal\ngeometry advisory list (both tiers).",
        -            "properties": {
        -              "assembly_slug": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "audit_trail": {
        -                "anyOf": [
        -                  {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.7 — paid-tier audit-trail entry.\n\nOne entry per BoQ row; `boq_row_index` ties to the row position in\n`ComputeResult.boq_rows`. `derivation` is the human-readable formula\nwalk-through; `formula` is the optional formal expression.",
        -                      "properties": {
        -                        "boq_row_index": {
        -                          "minimum": 0,
        -                          "type": "integer"
        -                        },
        -                        "derivation": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "formula": {
        -                          "anyOf": [
        -                            {
        -                              "type": "string"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ],
        -                          "default": null
        -                        },
        -                        "id": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "parameters_referenced": {
        -                          "items": {
        -                            "type": "string"
        -                          },
        -                          "type": "array"
        -                        }
        -                      },
        -                      "required": [
        -                        "id",
        -                        "boq_row_index",
        -                        "derivation"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "boq_rows": {
        -                "items": {
        -                  "additionalProperties": false,
        -                  "description": "Schema § 1.3 — a single bill row in the requested standard's format.\n\n`description` is the non-verbatim functional description per spec § 13.9 /\n§ 15 invariant — NEVER reproduces a standard's verbatim clause text.\n`rate` / `amount` ship null because rates are commodity data the customer\nowns; the engine's job is the measurement, not the pricing.",
        -                  "properties": {
        -                    "amount": {
        -                      "anyOf": [
        -                        {
        -                          "type": "number"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "attribution": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "audit_id": {
        -                      "anyOf": [
        -                        {
        -                          "type": "string"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "description": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "quantity": {
        -                      "minimum": 0,
        -                      "type": "number"
        -                    },
        -                    "rate": {
        -                      "anyOf": [
        -                        {
        -                          "type": "number"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "unit": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "work_section": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    }
        -                  },
        -                  "required": [
        -                    "work_section",
        -                    "description",
        -                    "quantity",
        -                    "unit",
        -                    "attribution"
        -                  ],
        -                  "type": "object"
        -                },
        -                "type": "array"
        -              },
        -              "drawing": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": false,
        -                    "description": "Schema § 1.6a — inline server-rendered SVG preview of the geometry.\n\nThe MCP mirror of the web ``/compute`` response's ``drawing`` field\n(``api.schemas.compute.DrawingRef``): the same on-screen dimensioned\ndrawing both tiers see in the workspace, surfaced on the MCP compute\nresponse so a chat client can render it inline (60th-fire item C). This\nis the on-screen preview — present on BOTH tiers per the free/paid\nboundary; the downloadable CAD artefacts (DXF / dimensioned PDF) remain\nthe paid differentiator via the export tools.\n\nDefined here rather than importing ``DrawingRef`` because the web\n``schemas`` package imports back into this module (``schemas.render``),\nso reusing it would create an import cycle — the MCP wire contract keeps\nits own copy, the same pattern as ``BoQRow`` / ``DrawingReference``.",
        -                    "properties": {
        -                      "entity_count": {
        -                        "minimum": 0,
        -                        "type": "integer"
        -                      },
        -                      "svg_b64": {
        -                        "minLength": 1,
        -                        "type": "string"
        -                      },
        -                      "unit_of_drawing": {
        -                        "const": "m",
        -                        "default": "m",
        -                        "type": "string"
        -                      },
        -                      "viewbox_height": {
        -                        "exclusiveMinimum": 0,
        -                        "type": "number"
        -                      },
        -                      "viewbox_width": {
        -                        "exclusiveMinimum": 0,
        -                        "type": "number"
        -                      },
        -                      "viewbox_x": {
        -                        "type": "number"
        -                      },
        -                      "viewbox_y": {
        -                        "type": "number"
        -                      }
        -                    },
        -                    "required": [
        -                      "svg_b64",
        -                      "viewbox_x",
        -                      "viewbox_y",
        -                      "viewbox_width",
        -                      "viewbox_height",
        -                      "entity_count"
        -                    ],
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "drawings": {
        -                "anyOf": [
        -                  {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.6 — paid-tier drawing artefact pointer.\n\n`url` is an R2-signed URL; expiry is carried in `_meta.deliverables.expires_at`\non the envelope (not duplicated here). `layers` is DXF-only; PDF/SVG\ncallers omit it.",
        -                      "properties": {
        -                        "drawing_type": {
        -                          "enum": [
        -                            "section",
        -                            "plan",
        -                            "elevation",
        -                            "isometric",
        -                            "detail"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "format": {
        -                          "enum": [
        -                            "DXF",
        -                            "PDF",
        -                            "SVG"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "layers": {
        -                          "anyOf": [
        -                            {
        -                              "items": {
        -                                "type": "string"
        -                              },
        -                              "type": "array"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ],
        -                          "default": null
        -                        },
        -                        "scale": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "sheet_size": {
        -                          "enum": [
        -                            "A1",
        -                            "A2",
        -                            "A3",
        -                            "A4"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "url": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "drawing_type",
        -                        "format",
        -                        "url",
        -                        "sheet_size",
        -                        "scale"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "parameters_used": {
        -                "additionalProperties": false,
        -                "description": "Schema § 1.2 — the parameter snapshot the engine actually used.\n\nSplits user-supplied values from engine defaults so customers can see\nwhich numbers came from them and which the engine filled in. Every\ndefaulted parameter SHOULD have a corresponding entry in `assumptions`\n— the bridge layer enforces this when wrapping engine output.",
        -                "properties": {
        -                  "assumptions": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "engine_defaults": {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  "resolved_from_description": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "additionalProperties": false,
        -                          "description": "Schema § 1.2 — a parameter resolved by the forgiving-input layer.\n\nPopulated by the Track B-Forgiving Haiku-4.5 resolution pass; until that\nlayer lands, instances are constructed only by tests. `source` distinguishes\nthe resolution path so customers can audit which fields were inferred.",
        -                          "properties": {
        -                            "confidence": {
        -                              "anyOf": [
        -                                {
        -                                  "enum": [
        -                                    "high",
        -                                    "medium",
        -                                    "low"
        -                                  ],
        -                                  "type": "string"
        -                                },
        -                                {
        -                                  "type": "null"
        -                                }
        -                              ],
        -                              "default": null
        -                            },
        -                            "field_name": {
        -                              "minLength": 1,
        -                              "type": "string"
        -                            },
        -                            "resolved_value": {},
        -                            "source": {
        -                              "enum": [
        -                                "description_field",
        -                                "haiku_resolution",
        -                                "engine_default"
        -                              ],
        -                              "type": "string"
        -                            }
        -                          },
        -                          "required": [
        -                            "field_name",
        -                            "resolved_value",
        -                            "source"
        -                          ],
        -                          "type": "object"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "user_supplied": {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  }
        -                },
        -                "type": "object"
        -              },
        -              "standard": {
        -                "enum": [
        -                  "CESMM4",
        -                  "NRM2",
        -                  "SMM7",
        -                  "MMHW"
        -                ],
        -                "type": "string"
        -              },
        -              "text_summary": {
        -                "maxLength": 2000,
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "totals_summary": {
        -                "additionalProperties": false,
        -                "description": "Schema § 1.4 — totals_summary as a typed wrapper around the free-form dict.\n\nWire shape is a flat object (`{\"concrete_m3\": {...}, \"rebar_t\": {...}}`).\nWe model it as `RootModel`-equivalent via `model_config(extra=\"allow\")`\n+ a single `__root__`-style `entries` dict. Pydantic v2 recommends\n`RootModel` for free-form roots; using a wrapper class keeps the import\nsurface uniform with the rest of this module.",
        -                "properties": {
        -                  "entries": {
        -                    "additionalProperties": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.4 — single material/work-class total entry.",
        -                      "properties": {
        -                        "quantity": {
        -                          "minimum": 0,
        -                          "type": "number"
        -                        },
        -                        "unit": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "quantity",
        -                        "unit"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "object"
        -                  }
        -                },
        -                "type": "object"
        -              },
        -              "warnings": {
        -                "items": {
        -                  "additionalProperties": false,
        -                  "description": "Schema § 1.8 — a non-fatal geometry advisory (56th-fire T2).\n\nThe wire projection of the engine's `core.GeometryWarning`. Advisory only:\na warning NEVER changes a measured quantity — it flags geometry that is\nvalid but likely a mistake (e.g. a stale dependent-height default). Present\non BOTH tiers — a correctness/safety signal, not a paid feature.",
        -                  "properties": {
        -                    "affected_params": {
        -                      "items": {
        -                        "type": "string"
        -                      },
        -                      "type": "array"
        -                    },
        -                    "code": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "detail": {
        -                      "additionalProperties": {
        -                        "type": "number"
        -                      },
        -                      "type": "object"
        -                    },
        -                    "message": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "severity": {
        -                      "enum": [
        -                        "info",
        -                        "advisory",
        -                        "caution"
        -                      ],
        -                      "type": "string"
        -                    }
        -                  },
        -                  "required": [
        -                    "code",
        -                    "severity",
        -                    "message"
        -                  ],
        -                  "type": "object"
        -                },
        -                "type": "array"
        -              }
        -            },
        -            "required": [
        -              "assembly_slug",
        -              "standard",
        -              "parameters_used",
        -              "boq_rows",
        -              "totals_summary",
        -              "text_summary"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      },
        -      "error": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        -            "properties": {
        -              "code": {
        -                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        -                "enum": [
        -                  "RATE_LIMIT_EXCEEDED",
        -                  "TIER_INSUFFICIENT",
        -                  "INVALID_INPUT",
        -                  "SCHEMA_VERSION_MISMATCH",
        -                  "SCHEMA_INVARIANT_VIOLATION",
        -                  "UPSTREAM_TIMEOUT",
        -                  "BACKEND_FAILURE",
        -                  "IP_BLOCKED",
        -                  "RESOURCE_NOT_FOUND",
        -                  "RENDER_FAILURE",
        -                  "OCR_LOW_CONFIDENCE",
        -                  "MANUAL_REVIEW_REQUIRED",
        -                  "ACCEPTANCE_REQUIRED",
        -                  "INVALID_TOKEN"
        -                ],
        -                "type": "string"
        -              },
        -              "details": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "message": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "recoverable": {
        -                "type": "boolean"
        -              },
        -              "retry_after_seconds": {
        -                "anyOf": [
        -                  {
        -                    "minimum": 0,
        -                    "type": "integer"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              }
        -            },
        -            "required": [
        -              "code",
        -              "message",
        -              "recoverable"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      }
        -    },
        -    "required": [
        -      "_meta"
        -    ],
        -    "type": "object"
        -  },
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "_meta": {
        -        "additionalProperties": false,
        -        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        -        "properties": {
        -          "deliverables": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        -                "properties": {
        -                  "docx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "dxf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "expires_at": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  },
        -                  "pdf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "xlsx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "expires_at"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "document_id": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "issued_at": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "rate_limit_remaining": {
        -            "anyOf": [
        -              {
        -                "minimum": 0,
        -                "type": "integer"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "request_id": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "schema_version": {
        -            "const": "1.0.0",
        -            "default": "1.0.0",
        -            "type": "string"
        -          },
        -          "scope_boundary": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        -                "properties": {
        -                  "not_in_scope": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "produced": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "recommended_companions": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "type": "string"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "produced",
        -                  "not_in_scope"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tier": {
        -            "enum": [
        -              "free",
        -              "paid"
        -            ],
        -            "type": "string"
        -          },
        -          "tier_upgrade": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        -                "properties": {
        -                  "available_tiers": {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        -                      "properties": {
        -                        "billing": {
        -                          "enum": [
        -                            "one_off",
        -                            "monthly",
        -                            "annual"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "currency": {
        -                          "enum": [
        -                            "GBP",
        -                            "SGD",
        -                            "EUR",
        -                            "USD",
        -                            "CAD",
        -                            "AUD",
        -                            "NZD",
        -                            "MYR"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "display_name": {
        -                          "type": "string"
        -                        },
        -                        "price_local": {
        -                          "type": "number"
        -                        },
        -                        "tier_slug": {
        -                          "enum": [
        -                            "7_day_pass",
        -                            "solo",
        -                            "studio",
        -                            "practice"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "unlock_summary": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "tier_slug",
        -                        "display_name",
        -                        "price_local",
        -                        "currency",
        -                        "billing",
        -                        "unlock_summary"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "current_tier": {
        -                    "const": "free",
        -                    "default": "free",
        -                    "type": "string"
        -                  },
        -                  "pass_credit": {
        -                    "anyOf": [
        -                      {
        -                        "additionalProperties": false,
        -                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        -                        "properties": {
        -                          "amount_local": {
        -                            "type": "number"
        -                          },
        -                          "applies_to": {
        -                            "const": "solo_first_month",
        -                            "default": "solo_first_month",
        -                            "type": "string"
        -                          },
        -                          "currency": {
        -                            "type": "string"
        -                          },
        -                          "redeemable_until": {
        -                            "type": "string"
        -                          }
        -                        },
        -                        "required": [
        -                          "amount_local",
        -                          "currency",
        -                          "redeemable_until"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "pricing_url": {
        -                    "default": "https://civilquants.com/pricing",
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "available_tiers"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tos_url": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "upgrade_hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "warranty_disclaimer": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          }
        -        },
        -        "required": [
        -          "request_id",
        -          "issued_at",
        -          "tier"
        -        ],
        -        "type": "object"
        -      },
        -      "data": {
        -        "default": null,
        -        "title": "Data"
        -      },
        -      "error": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        -            "properties": {
        -              "code": {
        -                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        -                "enum": [
        -                  "RATE_LIMIT_EXCEEDED",
        -                  "TIER_INSUFFICIENT",
        -                  "INVALID_INPUT",
        -                  "SCHEMA_VERSION_MISMATCH",
        -                  "SCHEMA_INVARIANT_VIOLATION",
        -                  "UPSTREAM_TIMEOUT",
        -                  "BACKEND_FAILURE",
        -                  "IP_BLOCKED",
        -                  "RESOURCE_NOT_FOUND",
        -                  "RENDER_FAILURE",
        -                  "OCR_LOW_CONFIDENCE",
        -                  "MANUAL_REVIEW_REQUIRED",
        -                  "ACCEPTANCE_REQUIRED",
        -                  "INVALID_TOKEN"
        -                ],
        -                "type": "string"
        -              },
        -              "details": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "message": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "recoverable": {
        -                "type": "boolean"
        -              },
        -              "retry_after_seconds": {
        -                "anyOf": [
        -                  {
        -                    "minimum": 0,
        -                    "type": "integer"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              }
        -            },
        -            "required": [
        -              "code",
        -              "message",
        -              "recoverable"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      }
        -    },
        -    "required": [
        -      "_meta"
        -    ],
        -    "type": "object"
        -  }
        -]New value: +[
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "_meta": {
        +        "additionalProperties": false,
        +        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        +        "properties": {
        +          "deliverables": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        +                "properties": {
        +                  "docx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "dxf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "expires_at": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  },
        +                  "pdf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "xlsx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "expires_at"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "document_id": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "issued_at": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "rate_limit_remaining": {
        +            "anyOf": [
        +              {
        +                "minimum": 0,
        +                "type": "integer"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "request_id": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "schema_version": {
        +            "const": "1.0.0",
        +            "default": "1.0.0",
        +            "type": "string"
        +          },
        +          "scope_boundary": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        +                "properties": {
        +                  "not_in_scope": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "produced": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "recommended_companions": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "type": "string"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "produced",
        +                  "not_in_scope"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tier": {
        +            "enum": [
        +              "free",
        +              "paid"
        +            ],
        +            "type": "string"
        +          },
        +          "tier_upgrade": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        +                "properties": {
        +                  "available_tiers": {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        +                      "properties": {
        +                        "billing": {
        +                          "enum": [
        +                            "one_off",
        +                            "monthly",
        +                            "annual"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "currency": {
        +                          "enum": [
        +                            "GBP",
        +                            "SGD",
        +                            "EUR",
        +                            "USD",
        +                            "CAD",
        +                            "AUD",
        +                            "NZD",
        +                            "MYR"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "display_name": {
        +                          "type": "string"
        +                        },
        +                        "price_local": {
        +                          "type": "number"
        +                        },
        +                        "tier_slug": {
        +                          "enum": [
        +                            "7_day_pass",
        +                            "solo",
        +                            "studio",
        +                            "practice"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "unlock_summary": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "tier_slug",
        +                        "display_name",
        +                        "price_local",
        +                        "currency",
        +                        "billing",
        +                        "unlock_summary"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "current_tier": {
        +                    "const": "free",
        +                    "default": "free",
        +                    "type": "string"
        +                  },
        +                  "pass_credit": {
        +                    "anyOf": [
        +                      {
        +                        "additionalProperties": false,
        +                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        +                        "properties": {
        +                          "amount_local": {
        +                            "type": "number"
        +                          },
        +                          "applies_to": {
        +                            "const": "solo_first_month",
        +                            "default": "solo_first_month",
        +                            "type": "string"
        +                          },
        +                          "currency": {
        +                            "type": "string"
        +                          },
        +                          "redeemable_until": {
        +                            "type": "string"
        +                          }
        +                        },
        +                        "required": [
        +                          "amount_local",
        +                          "currency",
        +                          "redeemable_until"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "pricing_url": {
        +                    "default": "https://civilquants.com/pricing",
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "available_tiers"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tos_url": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "upgrade_hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "warranty_disclaimer": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          }
        +        },
        +        "required": [
        +          "request_id",
        +          "issued_at",
        +          "tier"
        +        ],
        +        "type": "object"
        +      },
        +      "data": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Schema § 1.1 — the typed payload returned inside `MCPResponse[ComputeResult]`.\n\nFree-tier responses omit `drawings` (the downloadable CAD artefact\npointers — the paid differentiator); the bridge enforces this. The\n`audit_trail` and the inline `drawing` preview are present on BOTH tiers\n(V1 ALIGN / 60th-fire D + C). `text_summary` is bounded to 2000 chars —\nkeeps the LLM-facing summary token-cheap and forces longer narrative into\nBoQ row descriptions where it belongs. `warnings` is the non-fatal\ngeometry advisory list (both tiers).",
        +            "properties": {
        +              "assembly_slug": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "audit_trail": {
        +                "anyOf": [
        +                  {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.7 — paid-tier audit-trail entry.\n\nOne entry per BoQ row; `boq_row_index` ties to the row position in\n`ComputeResult.boq_rows`. `derivation` is the human-readable formula\nwalk-through; `formula` is the optional formal expression.",
        +                      "properties": {
        +                        "boq_row_index": {
        +                          "minimum": 0,
        +                          "type": "integer"
        +                        },
        +                        "derivation": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "formula": {
        +                          "anyOf": [
        +                            {
        +                              "type": "string"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ],
        +                          "default": null
        +                        },
        +                        "id": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "parameters_referenced": {
        +                          "items": {
        +                            "type": "string"
        +                          },
        +                          "type": "array"
        +                        }
        +                      },
        +                      "required": [
        +                        "id",
        +                        "boq_row_index",
        +                        "derivation"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "boq_rows": {
        +                "items": {
        +                  "additionalProperties": false,
        +                  "description": "Schema § 1.3 — a single bill row in the requested standard's format.\n\n`description` is the non-verbatim functional description per spec § 13.9 /\n§ 15 invariant — NEVER reproduces a standard's verbatim clause text.\n`rate` / `amount` ship null because rates are commodity data the customer\nowns; the engine's job is the measurement, not the pricing.",
        +                  "properties": {
        +                    "amount": {
        +                      "anyOf": [
        +                        {
        +                          "type": "number"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "attribution": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "audit_id": {
        +                      "anyOf": [
        +                        {
        +                          "type": "string"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "description": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "quantity": {
        +                      "minimum": 0,
        +                      "type": "number"
        +                    },
        +                    "rate": {
        +                      "anyOf": [
        +                        {
        +                          "type": "number"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "unit": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "work_section": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    }
        +                  },
        +                  "required": [
        +                    "work_section",
        +                    "description",
        +                    "quantity",
        +                    "unit",
        +                    "attribution"
        +                  ],
        +                  "type": "object"
        +                },
        +                "type": "array"
        +              },
        +              "drawing": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": false,
        +                    "description": "Schema § 1.6a — inline server-rendered SVG preview of the geometry.\n\nThe MCP mirror of the web ``/compute`` response's ``drawing`` field\n(``api.schemas.compute.DrawingRef``): the same on-screen dimensioned\ndrawing both tiers see in the workspace, surfaced on the MCP compute\nresponse so a chat client can render it inline (60th-fire item C). This\nis the on-screen preview — present on BOTH tiers per the free/paid\nboundary; the downloadable CAD artefacts (DXF / dimensioned PDF) remain\nthe paid differentiator via the export tools.\n\nDefined here rather than importing ``DrawingRef`` because the web\n``schemas`` package imports back into this module (``schemas.render``),\nso reusing it would create an import cycle — the MCP wire contract keeps\nits own copy, the same pattern as ``BoQRow`` / ``DrawingReference``.",
        +                    "properties": {
        +                      "entity_count": {
        +                        "minimum": 0,
        +                        "type": "integer"
        +                      },
        +                      "svg_b64": {
        +                        "minLength": 1,
        +                        "type": "string"
        +                      },
        +                      "unit_of_drawing": {
        +                        "const": "m",
        +                        "default": "m",
        +                        "type": "string"
        +                      },
        +                      "viewbox_height": {
        +                        "exclusiveMinimum": 0,
        +                        "type": "number"
        +                      },
        +                      "viewbox_width": {
        +                        "exclusiveMinimum": 0,
        +                        "type": "number"
        +                      },
        +                      "viewbox_x": {
        +                        "type": "number"
        +                      },
        +                      "viewbox_y": {
        +                        "type": "number"
        +                      }
        +                    },
        +                    "required": [
        +                      "svg_b64",
        +                      "viewbox_x",
        +                      "viewbox_y",
        +                      "viewbox_width",
        +                      "viewbox_height",
        +                      "entity_count"
        +                    ],
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "drawings": {
        +                "anyOf": [
        +                  {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.6 — paid-tier drawing artefact pointer.\n\n`url` is an R2-signed URL; expiry is carried in `_meta.deliverables.expires_at`\non the envelope (not duplicated here). `layers` is DXF-only; PDF/SVG\ncallers omit it.",
        +                      "properties": {
        +                        "drawing_type": {
        +                          "enum": [
        +                            "section",
        +                            "plan",
        +                            "elevation",
        +                            "isometric",
        +                            "detail"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "format": {
        +                          "enum": [
        +                            "DXF",
        +                            "PDF",
        +                            "SVG"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "layers": {
        +                          "anyOf": [
        +                            {
        +                              "items": {
        +                                "type": "string"
        +                              },
        +                              "type": "array"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ],
        +                          "default": null
        +                        },
        +                        "scale": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "sheet_size": {
        +                          "enum": [
        +                            "A1",
        +                            "A2",
        +                            "A3",
        +                            "A4"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "url": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "drawing_type",
        +                        "format",
        +                        "url",
        +                        "sheet_size",
        +                        "scale"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "parameters_used": {
        +                "additionalProperties": false,
        +                "description": "Schema § 1.2 — the parameter snapshot the engine actually used.\n\nSplits user-supplied values from engine defaults so customers can see\nwhich numbers came from them and which the engine filled in. Every\ndefaulted parameter SHOULD have a corresponding entry in `assumptions`\n— the bridge layer enforces this when wrapping engine output.",
        +                "properties": {
        +                  "assumptions": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "engine_defaults": {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  "user_supplied": {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  }
        +                },
        +                "type": "object"
        +              },
        +              "standard": {
        +                "enum": [
        +                  "CESMM4",
        +                  "NRM2",
        +                  "SMM7",
        +                  "MMHW"
        +                ],
        +                "type": "string"
        +              },
        +              "text_summary": {
        +                "maxLength": 2000,
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "totals_summary": {
        +                "additionalProperties": false,
        +                "description": "Schema § 1.4 — totals_summary as a typed wrapper around the free-form dict.\n\nWire shape is a flat object (`{\"concrete_m3\": {...}, \"rebar_t\": {...}}`).\nWe model it as `RootModel`-equivalent via `model_config(extra=\"allow\")`\n+ a single `__root__`-style `entries` dict. Pydantic v2 recommends\n`RootModel` for free-form roots; using a wrapper class keeps the import\nsurface uniform with the rest of this module.",
        +                "properties": {
        +                  "entries": {
        +                    "additionalProperties": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.4 — single material/work-class total entry.",
        +                      "properties": {
        +                        "quantity": {
        +                          "minimum": 0,
        +                          "type": "number"
        +                        },
        +                        "unit": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "quantity",
        +                        "unit"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "object"
        +                  }
        +                },
        +                "type": "object"
        +              },
        +              "warnings": {
        +                "items": {
        +                  "additionalProperties": false,
        +                  "description": "Schema § 1.8 — a non-fatal geometry advisory (56th-fire T2).\n\nThe wire projection of the engine's `core.GeometryWarning`. Advisory only:\na warning NEVER changes a measured quantity — it flags geometry that is\nvalid but likely a mistake (e.g. a stale dependent-height default). Present\non BOTH tiers — a correctness/safety signal, not a paid feature.",
        +                  "properties": {
        +                    "affected_params": {
        +                      "items": {
        +                        "type": "string"
        +                      },
        +                      "type": "array"
        +                    },
        +                    "code": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "detail": {
        +                      "additionalProperties": {
        +                        "type": "number"
        +                      },
        +                      "type": "object"
        +                    },
        +                    "message": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "severity": {
        +                      "enum": [
        +                        "info",
        +                        "advisory",
        +                        "caution"
        +                      ],
        +                      "type": "string"
        +                    }
        +                  },
        +                  "required": [
        +                    "code",
        +                    "severity",
        +                    "message"
        +                  ],
        +                  "type": "object"
        +                },
        +                "type": "array"
        +              }
        +            },
        +            "required": [
        +              "assembly_slug",
        +              "standard",
        +              "parameters_used",
        +              "boq_rows",
        +              "totals_summary",
        +              "text_summary"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      },
        +      "error": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        +            "properties": {
        +              "code": {
        +                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        +                "enum": [
        +                  "RATE_LIMIT_EXCEEDED",
        +                  "TIER_INSUFFICIENT",
        +                  "INVALID_INPUT",
        +                  "SCHEMA_VERSION_MISMATCH",
        +                  "SCHEMA_INVARIANT_VIOLATION",
        +                  "UPSTREAM_TIMEOUT",
        +                  "BACKEND_FAILURE",
        +                  "IP_BLOCKED",
        +                  "RESOURCE_NOT_FOUND",
        +                  "RENDER_FAILURE",
        +                  "OCR_LOW_CONFIDENCE",
        +                  "MANUAL_REVIEW_REQUIRED",
        +                  "ACCEPTANCE_REQUIRED",
        +                  "INVALID_TOKEN"
        +                ],
        +                "type": "string"
        +              },
        +              "details": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "message": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "recoverable": {
        +                "type": "boolean"
        +              },
        +              "retry_after_seconds": {
        +                "anyOf": [
        +                  {
        +                    "minimum": 0,
        +                    "type": "integer"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              }
        +            },
        +            "required": [
        +              "code",
        +              "message",
        +              "recoverable"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      }
        +    },
        +    "required": [
        +      "_meta"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "_meta": {
        +        "additionalProperties": false,
        +        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        +        "properties": {
        +          "deliverables": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        +                "properties": {
        +                  "docx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "dxf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "expires_at": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  },
        +                  "pdf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "xlsx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "expires_at"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "document_id": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "issued_at": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "rate_limit_remaining": {
        +            "anyOf": [
        +              {
        +                "minimum": 0,
        +                "type": "integer"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "request_id": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "schema_version": {
        +            "const": "1.0.0",
        +            "default": "1.0.0",
        +            "type": "string"
        +          },
        +          "scope_boundary": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        +                "properties": {
        +                  "not_in_scope": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "produced": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "recommended_companions": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "type": "string"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "produced",
        +                  "not_in_scope"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tier": {
        +            "enum": [
        +              "free",
        +              "paid"
        +            ],
        +            "type": "string"
        +          },
        +          "tier_upgrade": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        +                "properties": {
        +                  "available_tiers": {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        +                      "properties": {
        +                        "billing": {
        +                          "enum": [
        +                            "one_off",
        +                            "monthly",
        +                            "annual"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "currency": {
        +                          "enum": [
        +                            "GBP",
        +                            "SGD",
        +                            "EUR",
        +                            "USD",
        +                            "CAD",
        +                            "AUD",
        +                            "NZD",
        +                            "MYR"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "display_name": {
        +                          "type": "string"
        +                        },
        +                        "price_local": {
        +                          "type": "number"
        +                        },
        +                        "tier_slug": {
        +                          "enum": [
        +                            "7_day_pass",
        +                            "solo",
        +                            "studio",
        +                            "practice"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "unlock_summary": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "tier_slug",
        +                        "display_name",
        +                        "price_local",
        +                        "currency",
        +                        "billing",
        +                        "unlock_summary"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "current_tier": {
        +                    "const": "free",
        +                    "default": "free",
        +                    "type": "string"
        +                  },
        +                  "pass_credit": {
        +                    "anyOf": [
        +                      {
        +                        "additionalProperties": false,
        +                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        +                        "properties": {
        +                          "amount_local": {
        +                            "type": "number"
        +                          },
        +                          "applies_to": {
        +                            "const": "solo_first_month",
        +                            "default": "solo_first_month",
        +                            "type": "string"
        +                          },
        +                          "currency": {
        +                            "type": "string"
        +                          },
        +                          "redeemable_until": {
        +                            "type": "string"
        +                          }
        +                        },
        +                        "required": [
        +                          "amount_local",
        +                          "currency",
        +                          "redeemable_until"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "pricing_url": {
        +                    "default": "https://civilquants.com/pricing",
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "available_tiers"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tos_url": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "upgrade_hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "warranty_disclaimer": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          }
        +        },
        +        "required": [
        +          "request_id",
        +          "issued_at",
        +          "tier"
        +        ],
        +        "type": "object"
        +      },
        +      "data": {
        +        "default": null,
        +        "title": "Data"
        +      },
        +      "error": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        +            "properties": {
        +              "code": {
        +                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        +                "enum": [
        +                  "RATE_LIMIT_EXCEEDED",
        +                  "TIER_INSUFFICIENT",
        +                  "INVALID_INPUT",
        +                  "SCHEMA_VERSION_MISMATCH",
        +                  "SCHEMA_INVARIANT_VIOLATION",
        +                  "UPSTREAM_TIMEOUT",
        +                  "BACKEND_FAILURE",
        +                  "IP_BLOCKED",
        +                  "RESOURCE_NOT_FOUND",
        +                  "RENDER_FAILURE",
        +                  "OCR_LOW_CONFIDENCE",
        +                  "MANUAL_REVIEW_REQUIRED",
        +                  "ACCEPTANCE_REQUIRED",
        +                  "INVALID_TOKEN"
        +                ],
        +                "type": "string"
        +              },
        +              "details": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "message": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "recoverable": {
        +                "type": "boolean"
        +              },
        +              "retry_after_seconds": {
        +                "anyOf": [
        +                  {
        +                    "minimum": 0,
        +                    "type": "integer"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              }
        +            },
        +            "required": [
        +              "code",
        +              "message",
        +              "recoverable"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      }
        +    },
        +    "required": [
        +      "_meta"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedcompute_utility_chamber1 field changed
      • changedOutput schema / properties / result / anyOf
        Previous value: -[
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "_meta": {
        -        "additionalProperties": false,
        -        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        -        "properties": {
        -          "deliverables": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        -                "properties": {
        -                  "docx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "dxf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "expires_at": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  },
        -                  "pdf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "xlsx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "expires_at"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "document_id": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "issued_at": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "rate_limit_remaining": {
        -            "anyOf": [
        -              {
        -                "minimum": 0,
        -                "type": "integer"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "request_id": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "schema_version": {
        -            "const": "1.0.0",
        -            "default": "1.0.0",
        -            "type": "string"
        -          },
        -          "scope_boundary": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        -                "properties": {
        -                  "not_in_scope": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "produced": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "recommended_companions": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "type": "string"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "produced",
        -                  "not_in_scope"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tier": {
        -            "enum": [
        -              "free",
        -              "paid"
        -            ],
        -            "type": "string"
        -          },
        -          "tier_upgrade": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        -                "properties": {
        -                  "available_tiers": {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        -                      "properties": {
        -                        "billing": {
        -                          "enum": [
        -                            "one_off",
        -                            "monthly",
        -                            "annual"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "currency": {
        -                          "enum": [
        -                            "GBP",
        -                            "SGD",
        -                            "EUR",
        -                            "USD",
        -                            "CAD",
        -                            "AUD",
        -                            "NZD",
        -                            "MYR"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "display_name": {
        -                          "type": "string"
        -                        },
        -                        "price_local": {
        -                          "type": "number"
        -                        },
        -                        "tier_slug": {
        -                          "enum": [
        -                            "7_day_pass",
        -                            "solo",
        -                            "studio",
        -                            "practice"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "unlock_summary": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "tier_slug",
        -                        "display_name",
        -                        "price_local",
        -                        "currency",
        -                        "billing",
        -                        "unlock_summary"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "current_tier": {
        -                    "const": "free",
        -                    "default": "free",
        -                    "type": "string"
        -                  },
        -                  "pass_credit": {
        -                    "anyOf": [
        -                      {
        -                        "additionalProperties": false,
        -                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        -                        "properties": {
        -                          "amount_local": {
        -                            "type": "number"
        -                          },
        -                          "applies_to": {
        -                            "const": "solo_first_month",
        -                            "default": "solo_first_month",
        -                            "type": "string"
        -                          },
        -                          "currency": {
        -                            "type": "string"
        -                          },
        -                          "redeemable_until": {
        -                            "type": "string"
        -                          }
        -                        },
        -                        "required": [
        -                          "amount_local",
        -                          "currency",
        -                          "redeemable_until"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "pricing_url": {
        -                    "default": "https://civilquants.com/pricing",
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "available_tiers"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tos_url": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "upgrade_hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "warranty_disclaimer": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          }
        -        },
        -        "required": [
        -          "request_id",
        -          "issued_at",
        -          "tier"
        -        ],
        -        "type": "object"
        -      },
        -      "data": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Schema § 1.1 — the typed payload returned inside `MCPResponse[ComputeResult]`.\n\nFree-tier responses omit `drawings` (the downloadable CAD artefact\npointers — the paid differentiator); the bridge enforces this. The\n`audit_trail` and the inline `drawing` preview are present on BOTH tiers\n(V1 ALIGN / 60th-fire D + C). `text_summary` is bounded to 2000 chars —\nkeeps the LLM-facing summary token-cheap and forces longer narrative into\nBoQ row descriptions where it belongs. `warnings` is the non-fatal\ngeometry advisory list (both tiers).",
        -            "properties": {
        -              "assembly_slug": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "audit_trail": {
        -                "anyOf": [
        -                  {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.7 — paid-tier audit-trail entry.\n\nOne entry per BoQ row; `boq_row_index` ties to the row position in\n`ComputeResult.boq_rows`. `derivation` is the human-readable formula\nwalk-through; `formula` is the optional formal expression.",
        -                      "properties": {
        -                        "boq_row_index": {
        -                          "minimum": 0,
        -                          "type": "integer"
        -                        },
        -                        "derivation": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "formula": {
        -                          "anyOf": [
        -                            {
        -                              "type": "string"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ],
        -                          "default": null
        -                        },
        -                        "id": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "parameters_referenced": {
        -                          "items": {
        -                            "type": "string"
        -                          },
        -                          "type": "array"
        -                        }
        -                      },
        -                      "required": [
        -                        "id",
        -                        "boq_row_index",
        -                        "derivation"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "boq_rows": {
        -                "items": {
        -                  "additionalProperties": false,
        -                  "description": "Schema § 1.3 — a single bill row in the requested standard's format.\n\n`description` is the non-verbatim functional description per spec § 13.9 /\n§ 15 invariant — NEVER reproduces a standard's verbatim clause text.\n`rate` / `amount` ship null because rates are commodity data the customer\nowns; the engine's job is the measurement, not the pricing.",
        -                  "properties": {
        -                    "amount": {
        -                      "anyOf": [
        -                        {
        -                          "type": "number"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "attribution": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "audit_id": {
        -                      "anyOf": [
        -                        {
        -                          "type": "string"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "description": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "quantity": {
        -                      "minimum": 0,
        -                      "type": "number"
        -                    },
        -                    "rate": {
        -                      "anyOf": [
        -                        {
        -                          "type": "number"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "unit": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "work_section": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    }
        -                  },
        -                  "required": [
        -                    "work_section",
        -                    "description",
        -                    "quantity",
        -                    "unit",
        -                    "attribution"
        -                  ],
        -                  "type": "object"
        -                },
        -                "type": "array"
        -              },
        -              "drawing": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": false,
        -                    "description": "Schema § 1.6a — inline server-rendered SVG preview of the geometry.\n\nThe MCP mirror of the web ``/compute`` response's ``drawing`` field\n(``api.schemas.compute.DrawingRef``): the same on-screen dimensioned\ndrawing both tiers see in the workspace, surfaced on the MCP compute\nresponse so a chat client can render it inline (60th-fire item C). This\nis the on-screen preview — present on BOTH tiers per the free/paid\nboundary; the downloadable CAD artefacts (DXF / dimensioned PDF) remain\nthe paid differentiator via the export tools.\n\nDefined here rather than importing ``DrawingRef`` because the web\n``schemas`` package imports back into this module (``schemas.render``),\nso reusing it would create an import cycle — the MCP wire contract keeps\nits own copy, the same pattern as ``BoQRow`` / ``DrawingReference``.",
        -                    "properties": {
        -                      "entity_count": {
        -                        "minimum": 0,
        -                        "type": "integer"
        -                      },
        -                      "svg_b64": {
        -                        "minLength": 1,
        -                        "type": "string"
        -                      },
        -                      "unit_of_drawing": {
        -                        "const": "m",
        -                        "default": "m",
        -                        "type": "string"
        -                      },
        -                      "viewbox_height": {
        -                        "exclusiveMinimum": 0,
        -                        "type": "number"
        -                      },
        -                      "viewbox_width": {
        -                        "exclusiveMinimum": 0,
        -                        "type": "number"
        -                      },
        -                      "viewbox_x": {
        -                        "type": "number"
        -                      },
        -                      "viewbox_y": {
        -                        "type": "number"
        -                      }
        -                    },
        -                    "required": [
        -                      "svg_b64",
        -                      "viewbox_x",
        -                      "viewbox_y",
        -                      "viewbox_width",
        -                      "viewbox_height",
        -                      "entity_count"
        -                    ],
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "drawings": {
        -                "anyOf": [
        -                  {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.6 — paid-tier drawing artefact pointer.\n\n`url` is an R2-signed URL; expiry is carried in `_meta.deliverables.expires_at`\non the envelope (not duplicated here). `layers` is DXF-only; PDF/SVG\ncallers omit it.",
        -                      "properties": {
        -                        "drawing_type": {
        -                          "enum": [
        -                            "section",
        -                            "plan",
        -                            "elevation",
        -                            "isometric",
        -                            "detail"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "format": {
        -                          "enum": [
        -                            "DXF",
        -                            "PDF",
        -                            "SVG"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "layers": {
        -                          "anyOf": [
        -                            {
        -                              "items": {
        -                                "type": "string"
        -                              },
        -                              "type": "array"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ],
        -                          "default": null
        -                        },
        -                        "scale": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "sheet_size": {
        -                          "enum": [
        -                            "A1",
        -                            "A2",
        -                            "A3",
        -                            "A4"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "url": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "drawing_type",
        -                        "format",
        -                        "url",
        -                        "sheet_size",
        -                        "scale"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "parameters_used": {
        -                "additionalProperties": false,
        -                "description": "Schema § 1.2 — the parameter snapshot the engine actually used.\n\nSplits user-supplied values from engine defaults so customers can see\nwhich numbers came from them and which the engine filled in. Every\ndefaulted parameter SHOULD have a corresponding entry in `assumptions`\n— the bridge layer enforces this when wrapping engine output.",
        -                "properties": {
        -                  "assumptions": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "engine_defaults": {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  "resolved_from_description": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "additionalProperties": false,
        -                          "description": "Schema § 1.2 — a parameter resolved by the forgiving-input layer.\n\nPopulated by the Track B-Forgiving Haiku-4.5 resolution pass; until that\nlayer lands, instances are constructed only by tests. `source` distinguishes\nthe resolution path so customers can audit which fields were inferred.",
        -                          "properties": {
        -                            "confidence": {
        -                              "anyOf": [
        -                                {
        -                                  "enum": [
        -                                    "high",
        -                                    "medium",
        -                                    "low"
        -                                  ],
        -                                  "type": "string"
        -                                },
        -                                {
        -                                  "type": "null"
        -                                }
        -                              ],
        -                              "default": null
        -                            },
        -                            "field_name": {
        -                              "minLength": 1,
        -                              "type": "string"
        -                            },
        -                            "resolved_value": {},
        -                            "source": {
        -                              "enum": [
        -                                "description_field",
        -                                "haiku_resolution",
        -                                "engine_default"
        -                              ],
        -                              "type": "string"
        -                            }
        -                          },
        -                          "required": [
        -                            "field_name",
        -                            "resolved_value",
        -                            "source"
        -                          ],
        -                          "type": "object"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "user_supplied": {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  }
        -                },
        -                "type": "object"
        -              },
        -              "standard": {
        -                "enum": [
        -                  "CESMM4",
        -                  "NRM2",
        -                  "SMM7",
        -                  "MMHW"
        -                ],
        -                "type": "string"
        -              },
        -              "text_summary": {
        -                "maxLength": 2000,
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "totals_summary": {
        -                "additionalProperties": false,
        -                "description": "Schema § 1.4 — totals_summary as a typed wrapper around the free-form dict.\n\nWire shape is a flat object (`{\"concrete_m3\": {...}, \"rebar_t\": {...}}`).\nWe model it as `RootModel`-equivalent via `model_config(extra=\"allow\")`\n+ a single `__root__`-style `entries` dict. Pydantic v2 recommends\n`RootModel` for free-form roots; using a wrapper class keeps the import\nsurface uniform with the rest of this module.",
        -                "properties": {
        -                  "entries": {
        -                    "additionalProperties": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.4 — single material/work-class total entry.",
        -                      "properties": {
        -                        "quantity": {
        -                          "minimum": 0,
        -                          "type": "number"
        -                        },
        -                        "unit": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "quantity",
        -                        "unit"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "object"
        -                  }
        -                },
        -                "type": "object"
        -              },
        -              "warnings": {
        -                "items": {
        -                  "additionalProperties": false,
        -                  "description": "Schema § 1.8 — a non-fatal geometry advisory (56th-fire T2).\n\nThe wire projection of the engine's `core.GeometryWarning`. Advisory only:\na warning NEVER changes a measured quantity — it flags geometry that is\nvalid but likely a mistake (e.g. a stale dependent-height default). Present\non BOTH tiers — a correctness/safety signal, not a paid feature.",
        -                  "properties": {
        -                    "affected_params": {
        -                      "items": {
        -                        "type": "string"
        -                      },
        -                      "type": "array"
        -                    },
        -                    "code": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "detail": {
        -                      "additionalProperties": {
        -                        "type": "number"
        -                      },
        -                      "type": "object"
        -                    },
        -                    "message": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "severity": {
        -                      "enum": [
        -                        "info",
        -                        "advisory",
        -                        "caution"
        -                      ],
        -                      "type": "string"
        -                    }
        -                  },
        -                  "required": [
        -                    "code",
        -                    "severity",
        -                    "message"
        -                  ],
        -                  "type": "object"
        -                },
        -                "type": "array"
        -              }
        -            },
        -            "required": [
        -              "assembly_slug",
        -              "standard",
        -              "parameters_used",
        -              "boq_rows",
        -              "totals_summary",
        -              "text_summary"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      },
        -      "error": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        -            "properties": {
        -              "code": {
        -                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        -                "enum": [
        -                  "RATE_LIMIT_EXCEEDED",
        -                  "TIER_INSUFFICIENT",
        -                  "INVALID_INPUT",
        -                  "SCHEMA_VERSION_MISMATCH",
        -                  "SCHEMA_INVARIANT_VIOLATION",
        -                  "UPSTREAM_TIMEOUT",
        -                  "BACKEND_FAILURE",
        -                  "IP_BLOCKED",
        -                  "RESOURCE_NOT_FOUND",
        -                  "RENDER_FAILURE",
        -                  "OCR_LOW_CONFIDENCE",
        -                  "MANUAL_REVIEW_REQUIRED",
        -                  "ACCEPTANCE_REQUIRED",
        -                  "INVALID_TOKEN"
        -                ],
        -                "type": "string"
        -              },
        -              "details": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "message": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "recoverable": {
        -                "type": "boolean"
        -              },
        -              "retry_after_seconds": {
        -                "anyOf": [
        -                  {
        -                    "minimum": 0,
        -                    "type": "integer"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              }
        -            },
        -            "required": [
        -              "code",
        -              "message",
        -              "recoverable"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      }
        -    },
        -    "required": [
        -      "_meta"
        -    ],
        -    "type": "object"
        -  },
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "_meta": {
        -        "additionalProperties": false,
        -        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        -        "properties": {
        -          "deliverables": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        -                "properties": {
        -                  "docx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "dxf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "expires_at": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  },
        -                  "pdf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "xlsx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "expires_at"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "document_id": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "issued_at": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "rate_limit_remaining": {
        -            "anyOf": [
        -              {
        -                "minimum": 0,
        -                "type": "integer"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "request_id": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "schema_version": {
        -            "const": "1.0.0",
        -            "default": "1.0.0",
        -            "type": "string"
        -          },
        -          "scope_boundary": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        -                "properties": {
        -                  "not_in_scope": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "produced": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "recommended_companions": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "type": "string"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "produced",
        -                  "not_in_scope"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tier": {
        -            "enum": [
        -              "free",
        -              "paid"
        -            ],
        -            "type": "string"
        -          },
        -          "tier_upgrade": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        -                "properties": {
        -                  "available_tiers": {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        -                      "properties": {
        -                        "billing": {
        -                          "enum": [
        -                            "one_off",
        -                            "monthly",
        -                            "annual"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "currency": {
        -                          "enum": [
        -                            "GBP",
        -                            "SGD",
        -                            "EUR",
        -                            "USD",
        -                            "CAD",
        -                            "AUD",
        -                            "NZD",
        -                            "MYR"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "display_name": {
        -                          "type": "string"
        -                        },
        -                        "price_local": {
        -                          "type": "number"
        -                        },
        -                        "tier_slug": {
        -                          "enum": [
        -                            "7_day_pass",
        -                            "solo",
        -                            "studio",
        -                            "practice"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "unlock_summary": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "tier_slug",
        -                        "display_name",
        -                        "price_local",
        -                        "currency",
        -                        "billing",
        -                        "unlock_summary"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "current_tier": {
        -                    "const": "free",
        -                    "default": "free",
        -                    "type": "string"
        -                  },
        -                  "pass_credit": {
        -                    "anyOf": [
        -                      {
        -                        "additionalProperties": false,
        -                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        -                        "properties": {
        -                          "amount_local": {
        -                            "type": "number"
        -                          },
        -                          "applies_to": {
        -                            "const": "solo_first_month",
        -                            "default": "solo_first_month",
        -                            "type": "string"
        -                          },
        -                          "currency": {
        -                            "type": "string"
        -                          },
        -                          "redeemable_until": {
        -                            "type": "string"
        -                          }
        -                        },
        -                        "required": [
        -                          "amount_local",
        -                          "currency",
        -                          "redeemable_until"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "pricing_url": {
        -                    "default": "https://civilquants.com/pricing",
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "available_tiers"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tos_url": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "upgrade_hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "warranty_disclaimer": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          }
        -        },
        -        "required": [
        -          "request_id",
        -          "issued_at",
        -          "tier"
        -        ],
        -        "type": "object"
        -      },
        -      "data": {
        -        "default": null,
        -        "title": "Data"
        -      },
        -      "error": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        -            "properties": {
        -              "code": {
        -                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        -                "enum": [
        -                  "RATE_LIMIT_EXCEEDED",
        -                  "TIER_INSUFFICIENT",
        -                  "INVALID_INPUT",
        -                  "SCHEMA_VERSION_MISMATCH",
        -                  "SCHEMA_INVARIANT_VIOLATION",
        -                  "UPSTREAM_TIMEOUT",
        -                  "BACKEND_FAILURE",
        -                  "IP_BLOCKED",
        -                  "RESOURCE_NOT_FOUND",
        -                  "RENDER_FAILURE",
        -                  "OCR_LOW_CONFIDENCE",
        -                  "MANUAL_REVIEW_REQUIRED",
        -                  "ACCEPTANCE_REQUIRED",
        -                  "INVALID_TOKEN"
        -                ],
        -                "type": "string"
        -              },
        -              "details": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "message": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "recoverable": {
        -                "type": "boolean"
        -              },
        -              "retry_after_seconds": {
        -                "anyOf": [
        -                  {
        -                    "minimum": 0,
        -                    "type": "integer"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              }
        -            },
        -            "required": [
        -              "code",
        -              "message",
        -              "recoverable"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      }
        -    },
        -    "required": [
        -      "_meta"
        -    ],
        -    "type": "object"
        -  }
        -]New value: +[
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "_meta": {
        +        "additionalProperties": false,
        +        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        +        "properties": {
        +          "deliverables": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        +                "properties": {
        +                  "docx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "dxf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "expires_at": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  },
        +                  "pdf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "xlsx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "expires_at"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "document_id": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "issued_at": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "rate_limit_remaining": {
        +            "anyOf": [
        +              {
        +                "minimum": 0,
        +                "type": "integer"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "request_id": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "schema_version": {
        +            "const": "1.0.0",
        +            "default": "1.0.0",
        +            "type": "string"
        +          },
        +          "scope_boundary": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        +                "properties": {
        +                  "not_in_scope": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "produced": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "recommended_companions": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "type": "string"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "produced",
        +                  "not_in_scope"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tier": {
        +            "enum": [
        +              "free",
        +              "paid"
        +            ],
        +            "type": "string"
        +          },
        +          "tier_upgrade": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        +                "properties": {
        +                  "available_tiers": {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        +                      "properties": {
        +                        "billing": {
        +                          "enum": [
        +                            "one_off",
        +                            "monthly",
        +                            "annual"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "currency": {
        +                          "enum": [
        +                            "GBP",
        +                            "SGD",
        +                            "EUR",
        +                            "USD",
        +                            "CAD",
        +                            "AUD",
        +                            "NZD",
        +                            "MYR"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "display_name": {
        +                          "type": "string"
        +                        },
        +                        "price_local": {
        +                          "type": "number"
        +                        },
        +                        "tier_slug": {
        +                          "enum": [
        +                            "7_day_pass",
        +                            "solo",
        +                            "studio",
        +                            "practice"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "unlock_summary": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "tier_slug",
        +                        "display_name",
        +                        "price_local",
        +                        "currency",
        +                        "billing",
        +                        "unlock_summary"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "current_tier": {
        +                    "const": "free",
        +                    "default": "free",
        +                    "type": "string"
        +                  },
        +                  "pass_credit": {
        +                    "anyOf": [
        +                      {
        +                        "additionalProperties": false,
        +                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        +                        "properties": {
        +                          "amount_local": {
        +                            "type": "number"
        +                          },
        +                          "applies_to": {
        +                            "const": "solo_first_month",
        +                            "default": "solo_first_month",
        +                            "type": "string"
        +                          },
        +                          "currency": {
        +                            "type": "string"
        +                          },
        +                          "redeemable_until": {
        +                            "type": "string"
        +                          }
        +                        },
        +                        "required": [
        +                          "amount_local",
        +                          "currency",
        +                          "redeemable_until"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "pricing_url": {
        +                    "default": "https://civilquants.com/pricing",
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "available_tiers"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tos_url": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "upgrade_hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "warranty_disclaimer": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          }
        +        },
        +        "required": [
        +          "request_id",
        +          "issued_at",
        +          "tier"
        +        ],
        +        "type": "object"
        +      },
        +      "data": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Schema § 1.1 — the typed payload returned inside `MCPResponse[ComputeResult]`.\n\nFree-tier responses omit `drawings` (the downloadable CAD artefact\npointers — the paid differentiator); the bridge enforces this. The\n`audit_trail` and the inline `drawing` preview are present on BOTH tiers\n(V1 ALIGN / 60th-fire D + C). `text_summary` is bounded to 2000 chars —\nkeeps the LLM-facing summary token-cheap and forces longer narrative into\nBoQ row descriptions where it belongs. `warnings` is the non-fatal\ngeometry advisory list (both tiers).",
        +            "properties": {
        +              "assembly_slug": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "audit_trail": {
        +                "anyOf": [
        +                  {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.7 — paid-tier audit-trail entry.\n\nOne entry per BoQ row; `boq_row_index` ties to the row position in\n`ComputeResult.boq_rows`. `derivation` is the human-readable formula\nwalk-through; `formula` is the optional formal expression.",
        +                      "properties": {
        +                        "boq_row_index": {
        +                          "minimum": 0,
        +                          "type": "integer"
        +                        },
        +                        "derivation": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "formula": {
        +                          "anyOf": [
        +                            {
        +                              "type": "string"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ],
        +                          "default": null
        +                        },
        +                        "id": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "parameters_referenced": {
        +                          "items": {
        +                            "type": "string"
        +                          },
        +                          "type": "array"
        +                        }
        +                      },
        +                      "required": [
        +                        "id",
        +                        "boq_row_index",
        +                        "derivation"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "boq_rows": {
        +                "items": {
        +                  "additionalProperties": false,
        +                  "description": "Schema § 1.3 — a single bill row in the requested standard's format.\n\n`description` is the non-verbatim functional description per spec § 13.9 /\n§ 15 invariant — NEVER reproduces a standard's verbatim clause text.\n`rate` / `amount` ship null because rates are commodity data the customer\nowns; the engine's job is the measurement, not the pricing.",
        +                  "properties": {
        +                    "amount": {
        +                      "anyOf": [
        +                        {
        +                          "type": "number"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "attribution": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "audit_id": {
        +                      "anyOf": [
        +                        {
        +                          "type": "string"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "description": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "quantity": {
        +                      "minimum": 0,
        +                      "type": "number"
        +                    },
        +                    "rate": {
        +                      "anyOf": [
        +                        {
        +                          "type": "number"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "unit": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "work_section": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    }
        +                  },
        +                  "required": [
        +                    "work_section",
        +                    "description",
        +                    "quantity",
        +                    "unit",
        +                    "attribution"
        +                  ],
        +                  "type": "object"
        +                },
        +                "type": "array"
        +              },
        +              "drawing": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": false,
        +                    "description": "Schema § 1.6a — inline server-rendered SVG preview of the geometry.\n\nThe MCP mirror of the web ``/compute`` response's ``drawing`` field\n(``api.schemas.compute.DrawingRef``): the same on-screen dimensioned\ndrawing both tiers see in the workspace, surfaced on the MCP compute\nresponse so a chat client can render it inline (60th-fire item C). This\nis the on-screen preview — present on BOTH tiers per the free/paid\nboundary; the downloadable CAD artefacts (DXF / dimensioned PDF) remain\nthe paid differentiator via the export tools.\n\nDefined here rather than importing ``DrawingRef`` because the web\n``schemas`` package imports back into this module (``schemas.render``),\nso reusing it would create an import cycle — the MCP wire contract keeps\nits own copy, the same pattern as ``BoQRow`` / ``DrawingReference``.",
        +                    "properties": {
        +                      "entity_count": {
        +                        "minimum": 0,
        +                        "type": "integer"
        +                      },
        +                      "svg_b64": {
        +                        "minLength": 1,
        +                        "type": "string"
        +                      },
        +                      "unit_of_drawing": {
        +                        "const": "m",
        +                        "default": "m",
        +                        "type": "string"
        +                      },
        +                      "viewbox_height": {
        +                        "exclusiveMinimum": 0,
        +                        "type": "number"
        +                      },
        +                      "viewbox_width": {
        +                        "exclusiveMinimum": 0,
        +                        "type": "number"
        +                      },
        +                      "viewbox_x": {
        +                        "type": "number"
        +                      },
        +                      "viewbox_y": {
        +                        "type": "number"
        +                      }
        +                    },
        +                    "required": [
        +                      "svg_b64",
        +                      "viewbox_x",
        +                      "viewbox_y",
        +                      "viewbox_width",
        +                      "viewbox_height",
        +                      "entity_count"
        +                    ],
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "drawings": {
        +                "anyOf": [
        +                  {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.6 — paid-tier drawing artefact pointer.\n\n`url` is an R2-signed URL; expiry is carried in `_meta.deliverables.expires_at`\non the envelope (not duplicated here). `layers` is DXF-only; PDF/SVG\ncallers omit it.",
        +                      "properties": {
        +                        "drawing_type": {
        +                          "enum": [
        +                            "section",
        +                            "plan",
        +                            "elevation",
        +                            "isometric",
        +                            "detail"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "format": {
        +                          "enum": [
        +                            "DXF",
        +                            "PDF",
        +                            "SVG"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "layers": {
        +                          "anyOf": [
        +                            {
        +                              "items": {
        +                                "type": "string"
        +                              },
        +                              "type": "array"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ],
        +                          "default": null
        +                        },
        +                        "scale": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "sheet_size": {
        +                          "enum": [
        +                            "A1",
        +                            "A2",
        +                            "A3",
        +                            "A4"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "url": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "drawing_type",
        +                        "format",
        +                        "url",
        +                        "sheet_size",
        +                        "scale"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "parameters_used": {
        +                "additionalProperties": false,
        +                "description": "Schema § 1.2 — the parameter snapshot the engine actually used.\n\nSplits user-supplied values from engine defaults so customers can see\nwhich numbers came from them and which the engine filled in. Every\ndefaulted parameter SHOULD have a corresponding entry in `assumptions`\n— the bridge layer enforces this when wrapping engine output.",
        +                "properties": {
        +                  "assumptions": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "engine_defaults": {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  "user_supplied": {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  }
        +                },
        +                "type": "object"
        +              },
        +              "standard": {
        +                "enum": [
        +                  "CESMM4",
        +                  "NRM2",
        +                  "SMM7",
        +                  "MMHW"
        +                ],
        +                "type": "string"
        +              },
        +              "text_summary": {
        +                "maxLength": 2000,
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "totals_summary": {
        +                "additionalProperties": false,
        +                "description": "Schema § 1.4 — totals_summary as a typed wrapper around the free-form dict.\n\nWire shape is a flat object (`{\"concrete_m3\": {...}, \"rebar_t\": {...}}`).\nWe model it as `RootModel`-equivalent via `model_config(extra=\"allow\")`\n+ a single `__root__`-style `entries` dict. Pydantic v2 recommends\n`RootModel` for free-form roots; using a wrapper class keeps the import\nsurface uniform with the rest of this module.",
        +                "properties": {
        +                  "entries": {
        +                    "additionalProperties": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.4 — single material/work-class total entry.",
        +                      "properties": {
        +                        "quantity": {
        +                          "minimum": 0,
        +                          "type": "number"
        +                        },
        +                        "unit": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "quantity",
        +                        "unit"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "object"
        +                  }
        +                },
        +                "type": "object"
        +              },
        +              "warnings": {
        +                "items": {
        +                  "additionalProperties": false,
        +                  "description": "Schema § 1.8 — a non-fatal geometry advisory (56th-fire T2).\n\nThe wire projection of the engine's `core.GeometryWarning`. Advisory only:\na warning NEVER changes a measured quantity — it flags geometry that is\nvalid but likely a mistake (e.g. a stale dependent-height default). Present\non BOTH tiers — a correctness/safety signal, not a paid feature.",
        +                  "properties": {
        +                    "affected_params": {
        +                      "items": {
        +                        "type": "string"
        +                      },
        +                      "type": "array"
        +                    },
        +                    "code": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "detail": {
        +                      "additionalProperties": {
        +                        "type": "number"
        +                      },
        +                      "type": "object"
        +                    },
        +                    "message": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "severity": {
        +                      "enum": [
        +                        "info",
        +                        "advisory",
        +                        "caution"
        +                      ],
        +                      "type": "string"
        +                    }
        +                  },
        +                  "required": [
        +                    "code",
        +                    "severity",
        +                    "message"
        +                  ],
        +                  "type": "object"
        +                },
        +                "type": "array"
        +              }
        +            },
        +            "required": [
        +              "assembly_slug",
        +              "standard",
        +              "parameters_used",
        +              "boq_rows",
        +              "totals_summary",
        +              "text_summary"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      },
        +      "error": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        +            "properties": {
        +              "code": {
        +                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        +                "enum": [
        +                  "RATE_LIMIT_EXCEEDED",
        +                  "TIER_INSUFFICIENT",
        +                  "INVALID_INPUT",
        +                  "SCHEMA_VERSION_MISMATCH",
        +                  "SCHEMA_INVARIANT_VIOLATION",
        +                  "UPSTREAM_TIMEOUT",
        +                  "BACKEND_FAILURE",
        +                  "IP_BLOCKED",
        +                  "RESOURCE_NOT_FOUND",
        +                  "RENDER_FAILURE",
        +                  "OCR_LOW_CONFIDENCE",
        +                  "MANUAL_REVIEW_REQUIRED",
        +                  "ACCEPTANCE_REQUIRED",
        +                  "INVALID_TOKEN"
        +                ],
        +                "type": "string"
        +              },
        +              "details": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "message": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "recoverable": {
        +                "type": "boolean"
        +              },
        +              "retry_after_seconds": {
        +                "anyOf": [
        +                  {
        +                    "minimum": 0,
        +                    "type": "integer"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              }
        +            },
        +            "required": [
        +              "code",
        +              "message",
        +              "recoverable"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      }
        +    },
        +    "required": [
        +      "_meta"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "_meta": {
        +        "additionalProperties": false,
        +        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        +        "properties": {
        +          "deliverables": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        +                "properties": {
        +                  "docx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "dxf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "expires_at": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  },
        +                  "pdf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "xlsx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "expires_at"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "document_id": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "issued_at": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "rate_limit_remaining": {
        +            "anyOf": [
        +              {
        +                "minimum": 0,
        +                "type": "integer"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "request_id": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "schema_version": {
        +            "const": "1.0.0",
        +            "default": "1.0.0",
        +            "type": "string"
        +          },
        +          "scope_boundary": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        +                "properties": {
        +                  "not_in_scope": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "produced": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "recommended_companions": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "type": "string"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "produced",
        +                  "not_in_scope"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tier": {
        +            "enum": [
        +              "free",
        +              "paid"
        +            ],
        +            "type": "string"
        +          },
        +          "tier_upgrade": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        +                "properties": {
        +                  "available_tiers": {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        +                      "properties": {
        +                        "billing": {
        +                          "enum": [
        +                            "one_off",
        +                            "monthly",
        +                            "annual"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "currency": {
        +                          "enum": [
        +                            "GBP",
        +                            "SGD",
        +                            "EUR",
        +                            "USD",
        +                            "CAD",
        +                            "AUD",
        +                            "NZD",
        +                            "MYR"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "display_name": {
        +                          "type": "string"
        +                        },
        +                        "price_local": {
        +                          "type": "number"
        +                        },
        +                        "tier_slug": {
        +                          "enum": [
        +                            "7_day_pass",
        +                            "solo",
        +                            "studio",
        +                            "practice"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "unlock_summary": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "tier_slug",
        +                        "display_name",
        +                        "price_local",
        +                        "currency",
        +                        "billing",
        +                        "unlock_summary"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "current_tier": {
        +                    "const": "free",
        +                    "default": "free",
        +                    "type": "string"
        +                  },
        +                  "pass_credit": {
        +                    "anyOf": [
        +                      {
        +                        "additionalProperties": false,
        +                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        +                        "properties": {
        +                          "amount_local": {
        +                            "type": "number"
        +                          },
        +                          "applies_to": {
        +                            "const": "solo_first_month",
        +                            "default": "solo_first_month",
        +                            "type": "string"
        +                          },
        +                          "currency": {
        +                            "type": "string"
        +                          },
        +                          "redeemable_until": {
        +                            "type": "string"
        +                          }
        +                        },
        +                        "required": [
        +                          "amount_local",
        +                          "currency",
        +                          "redeemable_until"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "pricing_url": {
        +                    "default": "https://civilquants.com/pricing",
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "available_tiers"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tos_url": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "upgrade_hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "warranty_disclaimer": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          }
        +        },
        +        "required": [
        +          "request_id",
        +          "issued_at",
        +          "tier"
        +        ],
        +        "type": "object"
        +      },
        +      "data": {
        +        "default": null,
        +        "title": "Data"
        +      },
        +      "error": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        +            "properties": {
        +              "code": {
        +                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        +                "enum": [
        +                  "RATE_LIMIT_EXCEEDED",
        +                  "TIER_INSUFFICIENT",
        +                  "INVALID_INPUT",
        +                  "SCHEMA_VERSION_MISMATCH",
        +                  "SCHEMA_INVARIANT_VIOLATION",
        +                  "UPSTREAM_TIMEOUT",
        +                  "BACKEND_FAILURE",
        +                  "IP_BLOCKED",
        +                  "RESOURCE_NOT_FOUND",
        +                  "RENDER_FAILURE",
        +                  "OCR_LOW_CONFIDENCE",
        +                  "MANUAL_REVIEW_REQUIRED",
        +                  "ACCEPTANCE_REQUIRED",
        +                  "INVALID_TOKEN"
        +                ],
        +                "type": "string"
        +              },
        +              "details": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "message": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "recoverable": {
        +                "type": "boolean"
        +              },
        +              "retry_after_seconds": {
        +                "anyOf": [
        +                  {
        +                    "minimum": 0,
        +                    "type": "integer"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              }
        +            },
        +            "required": [
        +              "code",
        +              "message",
        +              "recoverable"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      }
        +    },
        +    "required": [
        +      "_meta"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedcompute_utility_kiosk_base1 field changed
      • changedOutput schema / properties / result / anyOf
        Previous value: -[
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "_meta": {
        -        "additionalProperties": false,
        -        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        -        "properties": {
        -          "deliverables": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        -                "properties": {
        -                  "docx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "dxf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "expires_at": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  },
        -                  "pdf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "xlsx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "expires_at"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "document_id": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "issued_at": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "rate_limit_remaining": {
        -            "anyOf": [
        -              {
        -                "minimum": 0,
        -                "type": "integer"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "request_id": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "schema_version": {
        -            "const": "1.0.0",
        -            "default": "1.0.0",
        -            "type": "string"
        -          },
        -          "scope_boundary": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        -                "properties": {
        -                  "not_in_scope": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "produced": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "recommended_companions": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "type": "string"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "produced",
        -                  "not_in_scope"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tier": {
        -            "enum": [
        -              "free",
        -              "paid"
        -            ],
        -            "type": "string"
        -          },
        -          "tier_upgrade": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        -                "properties": {
        -                  "available_tiers": {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        -                      "properties": {
        -                        "billing": {
        -                          "enum": [
        -                            "one_off",
        -                            "monthly",
        -                            "annual"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "currency": {
        -                          "enum": [
        -                            "GBP",
        -                            "SGD",
        -                            "EUR",
        -                            "USD",
        -                            "CAD",
        -                            "AUD",
        -                            "NZD",
        -                            "MYR"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "display_name": {
        -                          "type": "string"
        -                        },
        -                        "price_local": {
        -                          "type": "number"
        -                        },
        -                        "tier_slug": {
        -                          "enum": [
        -                            "7_day_pass",
        -                            "solo",
        -                            "studio",
        -                            "practice"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "unlock_summary": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "tier_slug",
        -                        "display_name",
        -                        "price_local",
        -                        "currency",
        -                        "billing",
        -                        "unlock_summary"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "current_tier": {
        -                    "const": "free",
        -                    "default": "free",
        -                    "type": "string"
        -                  },
        -                  "pass_credit": {
        -                    "anyOf": [
        -                      {
        -                        "additionalProperties": false,
        -                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        -                        "properties": {
        -                          "amount_local": {
        -                            "type": "number"
        -                          },
        -                          "applies_to": {
        -                            "const": "solo_first_month",
        -                            "default": "solo_first_month",
        -                            "type": "string"
        -                          },
        -                          "currency": {
        -                            "type": "string"
        -                          },
        -                          "redeemable_until": {
        -                            "type": "string"
        -                          }
        -                        },
        -                        "required": [
        -                          "amount_local",
        -                          "currency",
        -                          "redeemable_until"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "pricing_url": {
        -                    "default": "https://civilquants.com/pricing",
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "available_tiers"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tos_url": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "upgrade_hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "warranty_disclaimer": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          }
        -        },
        -        "required": [
        -          "request_id",
        -          "issued_at",
        -          "tier"
        -        ],
        -        "type": "object"
        -      },
        -      "data": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Schema § 1.1 — the typed payload returned inside `MCPResponse[ComputeResult]`.\n\nFree-tier responses omit `drawings` (the downloadable CAD artefact\npointers — the paid differentiator); the bridge enforces this. The\n`audit_trail` and the inline `drawing` preview are present on BOTH tiers\n(V1 ALIGN / 60th-fire D + C). `text_summary` is bounded to 2000 chars —\nkeeps the LLM-facing summary token-cheap and forces longer narrative into\nBoQ row descriptions where it belongs. `warnings` is the non-fatal\ngeometry advisory list (both tiers).",
        -            "properties": {
        -              "assembly_slug": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "audit_trail": {
        -                "anyOf": [
        -                  {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.7 — paid-tier audit-trail entry.\n\nOne entry per BoQ row; `boq_row_index` ties to the row position in\n`ComputeResult.boq_rows`. `derivation` is the human-readable formula\nwalk-through; `formula` is the optional formal expression.",
        -                      "properties": {
        -                        "boq_row_index": {
        -                          "minimum": 0,
        -                          "type": "integer"
        -                        },
        -                        "derivation": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "formula": {
        -                          "anyOf": [
        -                            {
        -                              "type": "string"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ],
        -                          "default": null
        -                        },
        -                        "id": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "parameters_referenced": {
        -                          "items": {
        -                            "type": "string"
        -                          },
        -                          "type": "array"
        -                        }
        -                      },
        -                      "required": [
        -                        "id",
        -                        "boq_row_index",
        -                        "derivation"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "boq_rows": {
        -                "items": {
        -                  "additionalProperties": false,
        -                  "description": "Schema § 1.3 — a single bill row in the requested standard's format.\n\n`description` is the non-verbatim functional description per spec § 13.9 /\n§ 15 invariant — NEVER reproduces a standard's verbatim clause text.\n`rate` / `amount` ship null because rates are commodity data the customer\nowns; the engine's job is the measurement, not the pricing.",
        -                  "properties": {
        -                    "amount": {
        -                      "anyOf": [
        -                        {
        -                          "type": "number"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "attribution": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "audit_id": {
        -                      "anyOf": [
        -                        {
        -                          "type": "string"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "description": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "quantity": {
        -                      "minimum": 0,
        -                      "type": "number"
        -                    },
        -                    "rate": {
        -                      "anyOf": [
        -                        {
        -                          "type": "number"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "unit": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "work_section": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    }
        -                  },
        -                  "required": [
        -                    "work_section",
        -                    "description",
        -                    "quantity",
        -                    "unit",
        -                    "attribution"
        -                  ],
        -                  "type": "object"
        -                },
        -                "type": "array"
        -              },
        -              "drawing": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": false,
        -                    "description": "Schema § 1.6a — inline server-rendered SVG preview of the geometry.\n\nThe MCP mirror of the web ``/compute`` response's ``drawing`` field\n(``api.schemas.compute.DrawingRef``): the same on-screen dimensioned\ndrawing both tiers see in the workspace, surfaced on the MCP compute\nresponse so a chat client can render it inline (60th-fire item C). This\nis the on-screen preview — present on BOTH tiers per the free/paid\nboundary; the downloadable CAD artefacts (DXF / dimensioned PDF) remain\nthe paid differentiator via the export tools.\n\nDefined here rather than importing ``DrawingRef`` because the web\n``schemas`` package imports back into this module (``schemas.render``),\nso reusing it would create an import cycle — the MCP wire contract keeps\nits own copy, the same pattern as ``BoQRow`` / ``DrawingReference``.",
        -                    "properties": {
        -                      "entity_count": {
        -                        "minimum": 0,
        -                        "type": "integer"
        -                      },
        -                      "svg_b64": {
        -                        "minLength": 1,
        -                        "type": "string"
        -                      },
        -                      "unit_of_drawing": {
        -                        "const": "m",
        -                        "default": "m",
        -                        "type": "string"
        -                      },
        -                      "viewbox_height": {
        -                        "exclusiveMinimum": 0,
        -                        "type": "number"
        -                      },
        -                      "viewbox_width": {
        -                        "exclusiveMinimum": 0,
        -                        "type": "number"
        -                      },
        -                      "viewbox_x": {
        -                        "type": "number"
        -                      },
        -                      "viewbox_y": {
        -                        "type": "number"
        -                      }
        -                    },
        -                    "required": [
        -                      "svg_b64",
        -                      "viewbox_x",
        -                      "viewbox_y",
        -                      "viewbox_width",
        -                      "viewbox_height",
        -                      "entity_count"
        -                    ],
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "drawings": {
        -                "anyOf": [
        -                  {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.6 — paid-tier drawing artefact pointer.\n\n`url` is an R2-signed URL; expiry is carried in `_meta.deliverables.expires_at`\non the envelope (not duplicated here). `layers` is DXF-only; PDF/SVG\ncallers omit it.",
        -                      "properties": {
        -                        "drawing_type": {
        -                          "enum": [
        -                            "section",
        -                            "plan",
        -                            "elevation",
        -                            "isometric",
        -                            "detail"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "format": {
        -                          "enum": [
        -                            "DXF",
        -                            "PDF",
        -                            "SVG"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "layers": {
        -                          "anyOf": [
        -                            {
        -                              "items": {
        -                                "type": "string"
        -                              },
        -                              "type": "array"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ],
        -                          "default": null
        -                        },
        -                        "scale": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "sheet_size": {
        -                          "enum": [
        -                            "A1",
        -                            "A2",
        -                            "A3",
        -                            "A4"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "url": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "drawing_type",
        -                        "format",
        -                        "url",
        -                        "sheet_size",
        -                        "scale"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "parameters_used": {
        -                "additionalProperties": false,
        -                "description": "Schema § 1.2 — the parameter snapshot the engine actually used.\n\nSplits user-supplied values from engine defaults so customers can see\nwhich numbers came from them and which the engine filled in. Every\ndefaulted parameter SHOULD have a corresponding entry in `assumptions`\n— the bridge layer enforces this when wrapping engine output.",
        -                "properties": {
        -                  "assumptions": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "engine_defaults": {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  "resolved_from_description": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "additionalProperties": false,
        -                          "description": "Schema § 1.2 — a parameter resolved by the forgiving-input layer.\n\nPopulated by the Track B-Forgiving Haiku-4.5 resolution pass; until that\nlayer lands, instances are constructed only by tests. `source` distinguishes\nthe resolution path so customers can audit which fields were inferred.",
        -                          "properties": {
        -                            "confidence": {
        -                              "anyOf": [
        -                                {
        -                                  "enum": [
        -                                    "high",
        -                                    "medium",
        -                                    "low"
        -                                  ],
        -                                  "type": "string"
        -                                },
        -                                {
        -                                  "type": "null"
        -                                }
        -                              ],
        -                              "default": null
        -                            },
        -                            "field_name": {
        -                              "minLength": 1,
        -                              "type": "string"
        -                            },
        -                            "resolved_value": {},
        -                            "source": {
        -                              "enum": [
        -                                "description_field",
        -                                "haiku_resolution",
        -                                "engine_default"
        -                              ],
        -                              "type": "string"
        -                            }
        -                          },
        -                          "required": [
        -                            "field_name",
        -                            "resolved_value",
        -                            "source"
        -                          ],
        -                          "type": "object"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "user_supplied": {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  }
        -                },
        -                "type": "object"
        -              },
        -              "standard": {
        -                "enum": [
        -                  "CESMM4",
        -                  "NRM2",
        -                  "SMM7",
        -                  "MMHW"
        -                ],
        -                "type": "string"
        -              },
        -              "text_summary": {
        -                "maxLength": 2000,
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "totals_summary": {
        -                "additionalProperties": false,
        -                "description": "Schema § 1.4 — totals_summary as a typed wrapper around the free-form dict.\n\nWire shape is a flat object (`{\"concrete_m3\": {...}, \"rebar_t\": {...}}`).\nWe model it as `RootModel`-equivalent via `model_config(extra=\"allow\")`\n+ a single `__root__`-style `entries` dict. Pydantic v2 recommends\n`RootModel` for free-form roots; using a wrapper class keeps the import\nsurface uniform with the rest of this module.",
        -                "properties": {
        -                  "entries": {
        -                    "additionalProperties": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.4 — single material/work-class total entry.",
        -                      "properties": {
        -                        "quantity": {
        -                          "minimum": 0,
        -                          "type": "number"
        -                        },
        -                        "unit": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "quantity",
        -                        "unit"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "object"
        -                  }
        -                },
        -                "type": "object"
        -              },
        -              "warnings": {
        -                "items": {
        -                  "additionalProperties": false,
        -                  "description": "Schema § 1.8 — a non-fatal geometry advisory (56th-fire T2).\n\nThe wire projection of the engine's `core.GeometryWarning`. Advisory only:\na warning NEVER changes a measured quantity — it flags geometry that is\nvalid but likely a mistake (e.g. a stale dependent-height default). Present\non BOTH tiers — a correctness/safety signal, not a paid feature.",
        -                  "properties": {
        -                    "affected_params": {
        -                      "items": {
        -                        "type": "string"
        -                      },
        -                      "type": "array"
        -                    },
        -                    "code": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "detail": {
        -                      "additionalProperties": {
        -                        "type": "number"
        -                      },
        -                      "type": "object"
        -                    },
        -                    "message": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "severity": {
        -                      "enum": [
        -                        "info",
        -                        "advisory",
        -                        "caution"
        -                      ],
        -                      "type": "string"
        -                    }
        -                  },
        -                  "required": [
        -                    "code",
        -                    "severity",
        -                    "message"
        -                  ],
        -                  "type": "object"
        -                },
        -                "type": "array"
        -              }
        -            },
        -            "required": [
        -              "assembly_slug",
        -              "standard",
        -              "parameters_used",
        -              "boq_rows",
        -              "totals_summary",
        -              "text_summary"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      },
        -      "error": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        -            "properties": {
        -              "code": {
        -                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        -                "enum": [
        -                  "RATE_LIMIT_EXCEEDED",
        -                  "TIER_INSUFFICIENT",
        -                  "INVALID_INPUT",
        -                  "SCHEMA_VERSION_MISMATCH",
        -                  "SCHEMA_INVARIANT_VIOLATION",
        -                  "UPSTREAM_TIMEOUT",
        -                  "BACKEND_FAILURE",
        -                  "IP_BLOCKED",
        -                  "RESOURCE_NOT_FOUND",
        -                  "RENDER_FAILURE",
        -                  "OCR_LOW_CONFIDENCE",
        -                  "MANUAL_REVIEW_REQUIRED",
        -                  "ACCEPTANCE_REQUIRED",
        -                  "INVALID_TOKEN"
        -                ],
        -                "type": "string"
        -              },
        -              "details": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "message": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "recoverable": {
        -                "type": "boolean"
        -              },
        -              "retry_after_seconds": {
        -                "anyOf": [
        -                  {
        -                    "minimum": 0,
        -                    "type": "integer"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              }
        -            },
        -            "required": [
        -              "code",
        -              "message",
        -              "recoverable"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      }
        -    },
        -    "required": [
        -      "_meta"
        -    ],
        -    "type": "object"
        -  },
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "_meta": {
        -        "additionalProperties": false,
        -        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        -        "properties": {
        -          "deliverables": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        -                "properties": {
        -                  "docx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "dxf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "expires_at": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  },
        -                  "pdf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "xlsx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "expires_at"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "document_id": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "issued_at": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "rate_limit_remaining": {
        -            "anyOf": [
        -              {
        -                "minimum": 0,
        -                "type": "integer"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "request_id": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "schema_version": {
        -            "const": "1.0.0",
        -            "default": "1.0.0",
        -            "type": "string"
        -          },
        -          "scope_boundary": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        -                "properties": {
        -                  "not_in_scope": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "produced": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "recommended_companions": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "type": "string"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "produced",
        -                  "not_in_scope"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tier": {
        -            "enum": [
        -              "free",
        -              "paid"
        -            ],
        -            "type": "string"
        -          },
        -          "tier_upgrade": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        -                "properties": {
        -                  "available_tiers": {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        -                      "properties": {
        -                        "billing": {
        -                          "enum": [
        -                            "one_off",
        -                            "monthly",
        -                            "annual"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "currency": {
        -                          "enum": [
        -                            "GBP",
        -                            "SGD",
        -                            "EUR",
        -                            "USD",
        -                            "CAD",
        -                            "AUD",
        -                            "NZD",
        -                            "MYR"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "display_name": {
        -                          "type": "string"
        -                        },
        -                        "price_local": {
        -                          "type": "number"
        -                        },
        -                        "tier_slug": {
        -                          "enum": [
        -                            "7_day_pass",
        -                            "solo",
        -                            "studio",
        -                            "practice"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "unlock_summary": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "tier_slug",
        -                        "display_name",
        -                        "price_local",
        -                        "currency",
        -                        "billing",
        -                        "unlock_summary"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "current_tier": {
        -                    "const": "free",
        -                    "default": "free",
        -                    "type": "string"
        -                  },
        -                  "pass_credit": {
        -                    "anyOf": [
        -                      {
        -                        "additionalProperties": false,
        -                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        -                        "properties": {
        -                          "amount_local": {
        -                            "type": "number"
        -                          },
        -                          "applies_to": {
        -                            "const": "solo_first_month",
        -                            "default": "solo_first_month",
        -                            "type": "string"
        -                          },
        -                          "currency": {
        -                            "type": "string"
        -                          },
        -                          "redeemable_until": {
        -                            "type": "string"
        -                          }
        -                        },
        -                        "required": [
        -                          "amount_local",
        -                          "currency",
        -                          "redeemable_until"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "pricing_url": {
        -                    "default": "https://civilquants.com/pricing",
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "available_tiers"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tos_url": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "upgrade_hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "warranty_disclaimer": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          }
        -        },
        -        "required": [
        -          "request_id",
        -          "issued_at",
        -          "tier"
        -        ],
        -        "type": "object"
        -      },
        -      "data": {
        -        "default": null,
        -        "title": "Data"
        -      },
        -      "error": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        -            "properties": {
        -              "code": {
        -                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        -                "enum": [
        -                  "RATE_LIMIT_EXCEEDED",
        -                  "TIER_INSUFFICIENT",
        -                  "INVALID_INPUT",
        -                  "SCHEMA_VERSION_MISMATCH",
        -                  "SCHEMA_INVARIANT_VIOLATION",
        -                  "UPSTREAM_TIMEOUT",
        -                  "BACKEND_FAILURE",
        -                  "IP_BLOCKED",
        -                  "RESOURCE_NOT_FOUND",
        -                  "RENDER_FAILURE",
        -                  "OCR_LOW_CONFIDENCE",
        -                  "MANUAL_REVIEW_REQUIRED",
        -                  "ACCEPTANCE_REQUIRED",
        -                  "INVALID_TOKEN"
        -                ],
        -                "type": "string"
        -              },
        -              "details": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "message": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "recoverable": {
        -                "type": "boolean"
        -              },
        -              "retry_after_seconds": {
        -                "anyOf": [
        -                  {
        -                    "minimum": 0,
        -                    "type": "integer"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              }
        -            },
        -            "required": [
        -              "code",
        -              "message",
        -              "recoverable"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      }
        -    },
        -    "required": [
        -      "_meta"
        -    ],
        -    "type": "object"
        -  }
        -]New value: +[
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "_meta": {
        +        "additionalProperties": false,
        +        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        +        "properties": {
        +          "deliverables": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        +                "properties": {
        +                  "docx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "dxf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "expires_at": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  },
        +                  "pdf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "xlsx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "expires_at"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "document_id": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "issued_at": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "rate_limit_remaining": {
        +            "anyOf": [
        +              {
        +                "minimum": 0,
        +                "type": "integer"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "request_id": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "schema_version": {
        +            "const": "1.0.0",
        +            "default": "1.0.0",
        +            "type": "string"
        +          },
        +          "scope_boundary": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        +                "properties": {
        +                  "not_in_scope": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "produced": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "recommended_companions": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "type": "string"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "produced",
        +                  "not_in_scope"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tier": {
        +            "enum": [
        +              "free",
        +              "paid"
        +            ],
        +            "type": "string"
        +          },
        +          "tier_upgrade": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        +                "properties": {
        +                  "available_tiers": {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        +                      "properties": {
        +                        "billing": {
        +                          "enum": [
        +                            "one_off",
        +                            "monthly",
        +                            "annual"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "currency": {
        +                          "enum": [
        +                            "GBP",
        +                            "SGD",
        +                            "EUR",
        +                            "USD",
        +                            "CAD",
        +                            "AUD",
        +                            "NZD",
        +                            "MYR"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "display_name": {
        +                          "type": "string"
        +                        },
        +                        "price_local": {
        +                          "type": "number"
        +                        },
        +                        "tier_slug": {
        +                          "enum": [
        +                            "7_day_pass",
        +                            "solo",
        +                            "studio",
        +                            "practice"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "unlock_summary": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "tier_slug",
        +                        "display_name",
        +                        "price_local",
        +                        "currency",
        +                        "billing",
        +                        "unlock_summary"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "current_tier": {
        +                    "const": "free",
        +                    "default": "free",
        +                    "type": "string"
        +                  },
        +                  "pass_credit": {
        +                    "anyOf": [
        +                      {
        +                        "additionalProperties": false,
        +                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        +                        "properties": {
        +                          "amount_local": {
        +                            "type": "number"
        +                          },
        +                          "applies_to": {
        +                            "const": "solo_first_month",
        +                            "default": "solo_first_month",
        +                            "type": "string"
        +                          },
        +                          "currency": {
        +                            "type": "string"
        +                          },
        +                          "redeemable_until": {
        +                            "type": "string"
        +                          }
        +                        },
        +                        "required": [
        +                          "amount_local",
        +                          "currency",
        +                          "redeemable_until"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "pricing_url": {
        +                    "default": "https://civilquants.com/pricing",
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "available_tiers"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tos_url": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "upgrade_hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "warranty_disclaimer": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          }
        +        },
        +        "required": [
        +          "request_id",
        +          "issued_at",
        +          "tier"
        +        ],
        +        "type": "object"
        +      },
        +      "data": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Schema § 1.1 — the typed payload returned inside `MCPResponse[ComputeResult]`.\n\nFree-tier responses omit `drawings` (the downloadable CAD artefact\npointers — the paid differentiator); the bridge enforces this. The\n`audit_trail` and the inline `drawing` preview are present on BOTH tiers\n(V1 ALIGN / 60th-fire D + C). `text_summary` is bounded to 2000 chars —\nkeeps the LLM-facing summary token-cheap and forces longer narrative into\nBoQ row descriptions where it belongs. `warnings` is the non-fatal\ngeometry advisory list (both tiers).",
        +            "properties": {
        +              "assembly_slug": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "audit_trail": {
        +                "anyOf": [
        +                  {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.7 — paid-tier audit-trail entry.\n\nOne entry per BoQ row; `boq_row_index` ties to the row position in\n`ComputeResult.boq_rows`. `derivation` is the human-readable formula\nwalk-through; `formula` is the optional formal expression.",
        +                      "properties": {
        +                        "boq_row_index": {
        +                          "minimum": 0,
        +                          "type": "integer"
        +                        },
        +                        "derivation": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "formula": {
        +                          "anyOf": [
        +                            {
        +                              "type": "string"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ],
        +                          "default": null
        +                        },
        +                        "id": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "parameters_referenced": {
        +                          "items": {
        +                            "type": "string"
        +                          },
        +                          "type": "array"
        +                        }
        +                      },
        +                      "required": [
        +                        "id",
        +                        "boq_row_index",
        +                        "derivation"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "boq_rows": {
        +                "items": {
        +                  "additionalProperties": false,
        +                  "description": "Schema § 1.3 — a single bill row in the requested standard's format.\n\n`description` is the non-verbatim functional description per spec § 13.9 /\n§ 15 invariant — NEVER reproduces a standard's verbatim clause text.\n`rate` / `amount` ship null because rates are commodity data the customer\nowns; the engine's job is the measurement, not the pricing.",
        +                  "properties": {
        +                    "amount": {
        +                      "anyOf": [
        +                        {
        +                          "type": "number"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "attribution": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "audit_id": {
        +                      "anyOf": [
        +                        {
        +                          "type": "string"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "description": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "quantity": {
        +                      "minimum": 0,
        +                      "type": "number"
        +                    },
        +                    "rate": {
        +                      "anyOf": [
        +                        {
        +                          "type": "number"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "unit": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "work_section": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    }
        +                  },
        +                  "required": [
        +                    "work_section",
        +                    "description",
        +                    "quantity",
        +                    "unit",
        +                    "attribution"
        +                  ],
        +                  "type": "object"
        +                },
        +                "type": "array"
        +              },
        +              "drawing": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": false,
        +                    "description": "Schema § 1.6a — inline server-rendered SVG preview of the geometry.\n\nThe MCP mirror of the web ``/compute`` response's ``drawing`` field\n(``api.schemas.compute.DrawingRef``): the same on-screen dimensioned\ndrawing both tiers see in the workspace, surfaced on the MCP compute\nresponse so a chat client can render it inline (60th-fire item C). This\nis the on-screen preview — present on BOTH tiers per the free/paid\nboundary; the downloadable CAD artefacts (DXF / dimensioned PDF) remain\nthe paid differentiator via the export tools.\n\nDefined here rather than importing ``DrawingRef`` because the web\n``schemas`` package imports back into this module (``schemas.render``),\nso reusing it would create an import cycle — the MCP wire contract keeps\nits own copy, the same pattern as ``BoQRow`` / ``DrawingReference``.",
        +                    "properties": {
        +                      "entity_count": {
        +                        "minimum": 0,
        +                        "type": "integer"
        +                      },
        +                      "svg_b64": {
        +                        "minLength": 1,
        +                        "type": "string"
        +                      },
        +                      "unit_of_drawing": {
        +                        "const": "m",
        +                        "default": "m",
        +                        "type": "string"
        +                      },
        +                      "viewbox_height": {
        +                        "exclusiveMinimum": 0,
        +                        "type": "number"
        +                      },
        +                      "viewbox_width": {
        +                        "exclusiveMinimum": 0,
        +                        "type": "number"
        +                      },
        +                      "viewbox_x": {
        +                        "type": "number"
        +                      },
        +                      "viewbox_y": {
        +                        "type": "number"
        +                      }
        +                    },
        +                    "required": [
        +                      "svg_b64",
        +                      "viewbox_x",
        +                      "viewbox_y",
        +                      "viewbox_width",
        +                      "viewbox_height",
        +                      "entity_count"
        +                    ],
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "drawings": {
        +                "anyOf": [
        +                  {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.6 — paid-tier drawing artefact pointer.\n\n`url` is an R2-signed URL; expiry is carried in `_meta.deliverables.expires_at`\non the envelope (not duplicated here). `layers` is DXF-only; PDF/SVG\ncallers omit it.",
        +                      "properties": {
        +                        "drawing_type": {
        +                          "enum": [
        +                            "section",
        +                            "plan",
        +                            "elevation",
        +                            "isometric",
        +                            "detail"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "format": {
        +                          "enum": [
        +                            "DXF",
        +                            "PDF",
        +                            "SVG"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "layers": {
        +                          "anyOf": [
        +                            {
        +                              "items": {
        +                                "type": "string"
        +                              },
        +                              "type": "array"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ],
        +                          "default": null
        +                        },
        +                        "scale": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "sheet_size": {
        +                          "enum": [
        +                            "A1",
        +                            "A2",
        +                            "A3",
        +                            "A4"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "url": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "drawing_type",
        +                        "format",
        +                        "url",
        +                        "sheet_size",
        +                        "scale"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "parameters_used": {
        +                "additionalProperties": false,
        +                "description": "Schema § 1.2 — the parameter snapshot the engine actually used.\n\nSplits user-supplied values from engine defaults so customers can see\nwhich numbers came from them and which the engine filled in. Every\ndefaulted parameter SHOULD have a corresponding entry in `assumptions`\n— the bridge layer enforces this when wrapping engine output.",
        +                "properties": {
        +                  "assumptions": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "engine_defaults": {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  "user_supplied": {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  }
        +                },
        +                "type": "object"
        +              },
        +              "standard": {
        +                "enum": [
        +                  "CESMM4",
        +                  "NRM2",
        +                  "SMM7",
        +                  "MMHW"
        +                ],
        +                "type": "string"
        +              },
        +              "text_summary": {
        +                "maxLength": 2000,
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "totals_summary": {
        +                "additionalProperties": false,
        +                "description": "Schema § 1.4 — totals_summary as a typed wrapper around the free-form dict.\n\nWire shape is a flat object (`{\"concrete_m3\": {...}, \"rebar_t\": {...}}`).\nWe model it as `RootModel`-equivalent via `model_config(extra=\"allow\")`\n+ a single `__root__`-style `entries` dict. Pydantic v2 recommends\n`RootModel` for free-form roots; using a wrapper class keeps the import\nsurface uniform with the rest of this module.",
        +                "properties": {
        +                  "entries": {
        +                    "additionalProperties": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.4 — single material/work-class total entry.",
        +                      "properties": {
        +                        "quantity": {
        +                          "minimum": 0,
        +                          "type": "number"
        +                        },
        +                        "unit": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "quantity",
        +                        "unit"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "object"
        +                  }
        +                },
        +                "type": "object"
        +              },
        +              "warnings": {
        +                "items": {
        +                  "additionalProperties": false,
        +                  "description": "Schema § 1.8 — a non-fatal geometry advisory (56th-fire T2).\n\nThe wire projection of the engine's `core.GeometryWarning`. Advisory only:\na warning NEVER changes a measured quantity — it flags geometry that is\nvalid but likely a mistake (e.g. a stale dependent-height default). Present\non BOTH tiers — a correctness/safety signal, not a paid feature.",
        +                  "properties": {
        +                    "affected_params": {
        +                      "items": {
        +                        "type": "string"
        +                      },
        +                      "type": "array"
        +                    },
        +                    "code": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "detail": {
        +                      "additionalProperties": {
        +                        "type": "number"
        +                      },
        +                      "type": "object"
        +                    },
        +                    "message": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "severity": {
        +                      "enum": [
        +                        "info",
        +                        "advisory",
        +                        "caution"
        +                      ],
        +                      "type": "string"
        +                    }
        +                  },
        +                  "required": [
        +                    "code",
        +                    "severity",
        +                    "message"
        +                  ],
        +                  "type": "object"
        +                },
        +                "type": "array"
        +              }
        +            },
        +            "required": [
        +              "assembly_slug",
        +              "standard",
        +              "parameters_used",
        +              "boq_rows",
        +              "totals_summary",
        +              "text_summary"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      },
        +      "error": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        +            "properties": {
        +              "code": {
        +                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        +                "enum": [
        +                  "RATE_LIMIT_EXCEEDED",
        +                  "TIER_INSUFFICIENT",
        +                  "INVALID_INPUT",
        +                  "SCHEMA_VERSION_MISMATCH",
        +                  "SCHEMA_INVARIANT_VIOLATION",
        +                  "UPSTREAM_TIMEOUT",
        +                  "BACKEND_FAILURE",
        +                  "IP_BLOCKED",
        +                  "RESOURCE_NOT_FOUND",
        +                  "RENDER_FAILURE",
        +                  "OCR_LOW_CONFIDENCE",
        +                  "MANUAL_REVIEW_REQUIRED",
        +                  "ACCEPTANCE_REQUIRED",
        +                  "INVALID_TOKEN"
        +                ],
        +                "type": "string"
        +              },
        +              "details": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "message": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "recoverable": {
        +                "type": "boolean"
        +              },
        +              "retry_after_seconds": {
        +                "anyOf": [
        +                  {
        +                    "minimum": 0,
        +                    "type": "integer"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              }
        +            },
        +            "required": [
        +              "code",
        +              "message",
        +              "recoverable"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      }
        +    },
        +    "required": [
        +      "_meta"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "_meta": {
        +        "additionalProperties": false,
        +        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        +        "properties": {
        +          "deliverables": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        +                "properties": {
        +                  "docx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "dxf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "expires_at": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  },
        +                  "pdf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "xlsx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "expires_at"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "document_id": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "issued_at": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "rate_limit_remaining": {
        +            "anyOf": [
        +              {
        +                "minimum": 0,
        +                "type": "integer"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "request_id": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "schema_version": {
        +            "const": "1.0.0",
        +            "default": "1.0.0",
        +            "type": "string"
        +          },
        +          "scope_boundary": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        +                "properties": {
        +                  "not_in_scope": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "produced": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "recommended_companions": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "type": "string"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "produced",
        +                  "not_in_scope"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tier": {
        +            "enum": [
        +              "free",
        +              "paid"
        +            ],
        +            "type": "string"
        +          },
        +          "tier_upgrade": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        +                "properties": {
        +                  "available_tiers": {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        +                      "properties": {
        +                        "billing": {
        +                          "enum": [
        +                            "one_off",
        +                            "monthly",
        +                            "annual"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "currency": {
        +                          "enum": [
        +                            "GBP",
        +                            "SGD",
        +                            "EUR",
        +                            "USD",
        +                            "CAD",
        +                            "AUD",
        +                            "NZD",
        +                            "MYR"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "display_name": {
        +                          "type": "string"
        +                        },
        +                        "price_local": {
        +                          "type": "number"
        +                        },
        +                        "tier_slug": {
        +                          "enum": [
        +                            "7_day_pass",
        +                            "solo",
        +                            "studio",
        +                            "practice"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "unlock_summary": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "tier_slug",
        +                        "display_name",
        +                        "price_local",
        +                        "currency",
        +                        "billing",
        +                        "unlock_summary"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "current_tier": {
        +                    "const": "free",
        +                    "default": "free",
        +                    "type": "string"
        +                  },
        +                  "pass_credit": {
        +                    "anyOf": [
        +                      {
        +                        "additionalProperties": false,
        +                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        +                        "properties": {
        +                          "amount_local": {
        +                            "type": "number"
        +                          },
        +                          "applies_to": {
        +                            "const": "solo_first_month",
        +                            "default": "solo_first_month",
        +                            "type": "string"
        +                          },
        +                          "currency": {
        +                            "type": "string"
        +                          },
        +                          "redeemable_until": {
        +                            "type": "string"
        +                          }
        +                        },
        +                        "required": [
        +                          "amount_local",
        +                          "currency",
        +                          "redeemable_until"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "pricing_url": {
        +                    "default": "https://civilquants.com/pricing",
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "available_tiers"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tos_url": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "upgrade_hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "warranty_disclaimer": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          }
        +        },
        +        "required": [
        +          "request_id",
        +          "issued_at",
        +          "tier"
        +        ],
        +        "type": "object"
        +      },
        +      "data": {
        +        "default": null,
        +        "title": "Data"
        +      },
        +      "error": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        +            "properties": {
        +              "code": {
        +                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        +                "enum": [
        +                  "RATE_LIMIT_EXCEEDED",
        +                  "TIER_INSUFFICIENT",
        +                  "INVALID_INPUT",
        +                  "SCHEMA_VERSION_MISMATCH",
        +                  "SCHEMA_INVARIANT_VIOLATION",
        +                  "UPSTREAM_TIMEOUT",
        +                  "BACKEND_FAILURE",
        +                  "IP_BLOCKED",
        +                  "RESOURCE_NOT_FOUND",
        +                  "RENDER_FAILURE",
        +                  "OCR_LOW_CONFIDENCE",
        +                  "MANUAL_REVIEW_REQUIRED",
        +                  "ACCEPTANCE_REQUIRED",
        +                  "INVALID_TOKEN"
        +                ],
        +                "type": "string"
        +              },
        +              "details": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "message": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "recoverable": {
        +                "type": "boolean"
        +              },
        +              "retry_after_seconds": {
        +                "anyOf": [
        +                  {
        +                    "minimum": 0,
        +                    "type": "integer"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              }
        +            },
        +            "required": [
        +              "code",
        +              "message",
        +              "recoverable"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      }
        +    },
        +    "required": [
        +      "_meta"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedcompute_vehicle_restraint_system1 field changed
      • changedOutput schema / properties / result / anyOf
        Previous value: -[
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "_meta": {
        -        "additionalProperties": false,
        -        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        -        "properties": {
        -          "deliverables": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        -                "properties": {
        -                  "docx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "dxf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "expires_at": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  },
        -                  "pdf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "xlsx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "expires_at"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "document_id": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "issued_at": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "rate_limit_remaining": {
        -            "anyOf": [
        -              {
        -                "minimum": 0,
        -                "type": "integer"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "request_id": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "schema_version": {
        -            "const": "1.0.0",
        -            "default": "1.0.0",
        -            "type": "string"
        -          },
        -          "scope_boundary": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        -                "properties": {
        -                  "not_in_scope": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "produced": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "recommended_companions": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "type": "string"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "produced",
        -                  "not_in_scope"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tier": {
        -            "enum": [
        -              "free",
        -              "paid"
        -            ],
        -            "type": "string"
        -          },
        -          "tier_upgrade": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        -                "properties": {
        -                  "available_tiers": {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        -                      "properties": {
        -                        "billing": {
        -                          "enum": [
        -                            "one_off",
        -                            "monthly",
        -                            "annual"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "currency": {
        -                          "enum": [
        -                            "GBP",
        -                            "SGD",
        -                            "EUR",
        -                            "USD",
        -                            "CAD",
        -                            "AUD",
        -                            "NZD",
        -                            "MYR"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "display_name": {
        -                          "type": "string"
        -                        },
        -                        "price_local": {
        -                          "type": "number"
        -                        },
        -                        "tier_slug": {
        -                          "enum": [
        -                            "7_day_pass",
        -                            "solo",
        -                            "studio",
        -                            "practice"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "unlock_summary": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "tier_slug",
        -                        "display_name",
        -                        "price_local",
        -                        "currency",
        -                        "billing",
        -                        "unlock_summary"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "current_tier": {
        -                    "const": "free",
        -                    "default": "free",
        -                    "type": "string"
        -                  },
        -                  "pass_credit": {
        -                    "anyOf": [
        -                      {
        -                        "additionalProperties": false,
        -                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        -                        "properties": {
        -                          "amount_local": {
        -                            "type": "number"
        -                          },
        -                          "applies_to": {
        -                            "const": "solo_first_month",
        -                            "default": "solo_first_month",
        -                            "type": "string"
        -                          },
        -                          "currency": {
        -                            "type": "string"
        -                          },
        -                          "redeemable_until": {
        -                            "type": "string"
        -                          }
        -                        },
        -                        "required": [
        -                          "amount_local",
        -                          "currency",
        -                          "redeemable_until"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "pricing_url": {
        -                    "default": "https://civilquants.com/pricing",
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "available_tiers"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tos_url": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "upgrade_hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "warranty_disclaimer": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          }
        -        },
        -        "required": [
        -          "request_id",
        -          "issued_at",
        -          "tier"
        -        ],
        -        "type": "object"
        -      },
        -      "data": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Schema § 1.1 — the typed payload returned inside `MCPResponse[ComputeResult]`.\n\nFree-tier responses omit `drawings` (the downloadable CAD artefact\npointers — the paid differentiator); the bridge enforces this. The\n`audit_trail` and the inline `drawing` preview are present on BOTH tiers\n(V1 ALIGN / 60th-fire D + C). `text_summary` is bounded to 2000 chars —\nkeeps the LLM-facing summary token-cheap and forces longer narrative into\nBoQ row descriptions where it belongs. `warnings` is the non-fatal\ngeometry advisory list (both tiers).",
        -            "properties": {
        -              "assembly_slug": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "audit_trail": {
        -                "anyOf": [
        -                  {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.7 — paid-tier audit-trail entry.\n\nOne entry per BoQ row; `boq_row_index` ties to the row position in\n`ComputeResult.boq_rows`. `derivation` is the human-readable formula\nwalk-through; `formula` is the optional formal expression.",
        -                      "properties": {
        -                        "boq_row_index": {
        -                          "minimum": 0,
        -                          "type": "integer"
        -                        },
        -                        "derivation": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "formula": {
        -                          "anyOf": [
        -                            {
        -                              "type": "string"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ],
        -                          "default": null
        -                        },
        -                        "id": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "parameters_referenced": {
        -                          "items": {
        -                            "type": "string"
        -                          },
        -                          "type": "array"
        -                        }
        -                      },
        -                      "required": [
        -                        "id",
        -                        "boq_row_index",
        -                        "derivation"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "boq_rows": {
        -                "items": {
        -                  "additionalProperties": false,
        -                  "description": "Schema § 1.3 — a single bill row in the requested standard's format.\n\n`description` is the non-verbatim functional description per spec § 13.9 /\n§ 15 invariant — NEVER reproduces a standard's verbatim clause text.\n`rate` / `amount` ship null because rates are commodity data the customer\nowns; the engine's job is the measurement, not the pricing.",
        -                  "properties": {
        -                    "amount": {
        -                      "anyOf": [
        -                        {
        -                          "type": "number"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "attribution": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "audit_id": {
        -                      "anyOf": [
        -                        {
        -                          "type": "string"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "description": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "quantity": {
        -                      "minimum": 0,
        -                      "type": "number"
        -                    },
        -                    "rate": {
        -                      "anyOf": [
        -                        {
        -                          "type": "number"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "unit": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "work_section": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    }
        -                  },
        -                  "required": [
        -                    "work_section",
        -                    "description",
        -                    "quantity",
        -                    "unit",
        -                    "attribution"
        -                  ],
        -                  "type": "object"
        -                },
        -                "type": "array"
        -              },
        -              "drawing": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": false,
        -                    "description": "Schema § 1.6a — inline server-rendered SVG preview of the geometry.\n\nThe MCP mirror of the web ``/compute`` response's ``drawing`` field\n(``api.schemas.compute.DrawingRef``): the same on-screen dimensioned\ndrawing both tiers see in the workspace, surfaced on the MCP compute\nresponse so a chat client can render it inline (60th-fire item C). This\nis the on-screen preview — present on BOTH tiers per the free/paid\nboundary; the downloadable CAD artefacts (DXF / dimensioned PDF) remain\nthe paid differentiator via the export tools.\n\nDefined here rather than importing ``DrawingRef`` because the web\n``schemas`` package imports back into this module (``schemas.render``),\nso reusing it would create an import cycle — the MCP wire contract keeps\nits own copy, the same pattern as ``BoQRow`` / ``DrawingReference``.",
        -                    "properties": {
        -                      "entity_count": {
        -                        "minimum": 0,
        -                        "type": "integer"
        -                      },
        -                      "svg_b64": {
        -                        "minLength": 1,
        -                        "type": "string"
        -                      },
        -                      "unit_of_drawing": {
        -                        "const": "m",
        -                        "default": "m",
        -                        "type": "string"
        -                      },
        -                      "viewbox_height": {
        -                        "exclusiveMinimum": 0,
        -                        "type": "number"
        -                      },
        -                      "viewbox_width": {
        -                        "exclusiveMinimum": 0,
        -                        "type": "number"
        -                      },
        -                      "viewbox_x": {
        -                        "type": "number"
        -                      },
        -                      "viewbox_y": {
        -                        "type": "number"
        -                      }
        -                    },
        -                    "required": [
        -                      "svg_b64",
        -                      "viewbox_x",
        -                      "viewbox_y",
        -                      "viewbox_width",
        -                      "viewbox_height",
        -                      "entity_count"
        -                    ],
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "drawings": {
        -                "anyOf": [
        -                  {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.6 — paid-tier drawing artefact pointer.\n\n`url` is an R2-signed URL; expiry is carried in `_meta.deliverables.expires_at`\non the envelope (not duplicated here). `layers` is DXF-only; PDF/SVG\ncallers omit it.",
        -                      "properties": {
        -                        "drawing_type": {
        -                          "enum": [
        -                            "section",
        -                            "plan",
        -                            "elevation",
        -                            "isometric",
        -                            "detail"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "format": {
        -                          "enum": [
        -                            "DXF",
        -                            "PDF",
        -                            "SVG"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "layers": {
        -                          "anyOf": [
        -                            {
        -                              "items": {
        -                                "type": "string"
        -                              },
        -                              "type": "array"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ],
        -                          "default": null
        -                        },
        -                        "scale": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "sheet_size": {
        -                          "enum": [
        -                            "A1",
        -                            "A2",
        -                            "A3",
        -                            "A4"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "url": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "drawing_type",
        -                        "format",
        -                        "url",
        -                        "sheet_size",
        -                        "scale"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "parameters_used": {
        -                "additionalProperties": false,
        -                "description": "Schema § 1.2 — the parameter snapshot the engine actually used.\n\nSplits user-supplied values from engine defaults so customers can see\nwhich numbers came from them and which the engine filled in. Every\ndefaulted parameter SHOULD have a corresponding entry in `assumptions`\n— the bridge layer enforces this when wrapping engine output.",
        -                "properties": {
        -                  "assumptions": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "engine_defaults": {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  "resolved_from_description": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "additionalProperties": false,
        -                          "description": "Schema § 1.2 — a parameter resolved by the forgiving-input layer.\n\nPopulated by the Track B-Forgiving Haiku-4.5 resolution pass; until that\nlayer lands, instances are constructed only by tests. `source` distinguishes\nthe resolution path so customers can audit which fields were inferred.",
        -                          "properties": {
        -                            "confidence": {
        -                              "anyOf": [
        -                                {
        -                                  "enum": [
        -                                    "high",
        -                                    "medium",
        -                                    "low"
        -                                  ],
        -                                  "type": "string"
        -                                },
        -                                {
        -                                  "type": "null"
        -                                }
        -                              ],
        -                              "default": null
        -                            },
        -                            "field_name": {
        -                              "minLength": 1,
        -                              "type": "string"
        -                            },
        -                            "resolved_value": {},
        -                            "source": {
        -                              "enum": [
        -                                "description_field",
        -                                "haiku_resolution",
        -                                "engine_default"
        -                              ],
        -                              "type": "string"
        -                            }
        -                          },
        -                          "required": [
        -                            "field_name",
        -                            "resolved_value",
        -                            "source"
        -                          ],
        -                          "type": "object"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "user_supplied": {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  }
        -                },
        -                "type": "object"
        -              },
        -              "standard": {
        -                "enum": [
        -                  "CESMM4",
        -                  "NRM2",
        -                  "SMM7",
        -                  "MMHW"
        -                ],
        -                "type": "string"
        -              },
        -              "text_summary": {
        -                "maxLength": 2000,
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "totals_summary": {
        -                "additionalProperties": false,
        -                "description": "Schema § 1.4 — totals_summary as a typed wrapper around the free-form dict.\n\nWire shape is a flat object (`{\"concrete_m3\": {...}, \"rebar_t\": {...}}`).\nWe model it as `RootModel`-equivalent via `model_config(extra=\"allow\")`\n+ a single `__root__`-style `entries` dict. Pydantic v2 recommends\n`RootModel` for free-form roots; using a wrapper class keeps the import\nsurface uniform with the rest of this module.",
        -                "properties": {
        -                  "entries": {
        -                    "additionalProperties": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.4 — single material/work-class total entry.",
        -                      "properties": {
        -                        "quantity": {
        -                          "minimum": 0,
        -                          "type": "number"
        -                        },
        -                        "unit": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "quantity",
        -                        "unit"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "object"
        -                  }
        -                },
        -                "type": "object"
        -              },
        -              "warnings": {
        -                "items": {
        -                  "additionalProperties": false,
        -                  "description": "Schema § 1.8 — a non-fatal geometry advisory (56th-fire T2).\n\nThe wire projection of the engine's `core.GeometryWarning`. Advisory only:\na warning NEVER changes a measured quantity — it flags geometry that is\nvalid but likely a mistake (e.g. a stale dependent-height default). Present\non BOTH tiers — a correctness/safety signal, not a paid feature.",
        -                  "properties": {
        -                    "affected_params": {
        -                      "items": {
        -                        "type": "string"
        -                      },
        -                      "type": "array"
        -                    },
        -                    "code": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "detail": {
        -                      "additionalProperties": {
        -                        "type": "number"
        -                      },
        -                      "type": "object"
        -                    },
        -                    "message": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "severity": {
        -                      "enum": [
        -                        "info",
        -                        "advisory",
        -                        "caution"
        -                      ],
        -                      "type": "string"
        -                    }
        -                  },
        -                  "required": [
        -                    "code",
        -                    "severity",
        -                    "message"
        -                  ],
        -                  "type": "object"
        -                },
        -                "type": "array"
        -              }
        -            },
        -            "required": [
        -              "assembly_slug",
        -              "standard",
        -              "parameters_used",
        -              "boq_rows",
        -              "totals_summary",
        -              "text_summary"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      },
        -      "error": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        -            "properties": {
        -              "code": {
        -                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        -                "enum": [
        -                  "RATE_LIMIT_EXCEEDED",
        -                  "TIER_INSUFFICIENT",
        -                  "INVALID_INPUT",
        -                  "SCHEMA_VERSION_MISMATCH",
        -                  "SCHEMA_INVARIANT_VIOLATION",
        -                  "UPSTREAM_TIMEOUT",
        -                  "BACKEND_FAILURE",
        -                  "IP_BLOCKED",
        -                  "RESOURCE_NOT_FOUND",
        -                  "RENDER_FAILURE",
        -                  "OCR_LOW_CONFIDENCE",
        -                  "MANUAL_REVIEW_REQUIRED",
        -                  "ACCEPTANCE_REQUIRED",
        -                  "INVALID_TOKEN"
        -                ],
        -                "type": "string"
        -              },
        -              "details": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "message": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "recoverable": {
        -                "type": "boolean"
        -              },
        -              "retry_after_seconds": {
        -                "anyOf": [
        -                  {
        -                    "minimum": 0,
        -                    "type": "integer"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              }
        -            },
        -            "required": [
        -              "code",
        -              "message",
        -              "recoverable"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      }
        -    },
        -    "required": [
        -      "_meta"
        -    ],
        -    "type": "object"
        -  },
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "_meta": {
        -        "additionalProperties": false,
        -        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        -        "properties": {
        -          "deliverables": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        -                "properties": {
        -                  "docx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "dxf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "expires_at": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  },
        -                  "pdf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "xlsx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "expires_at"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "document_id": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "issued_at": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "rate_limit_remaining": {
        -            "anyOf": [
        -              {
        -                "minimum": 0,
        -                "type": "integer"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "request_id": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "schema_version": {
        -            "const": "1.0.0",
        -            "default": "1.0.0",
        -            "type": "string"
        -          },
        -          "scope_boundary": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        -                "properties": {
        -                  "not_in_scope": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "produced": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "recommended_companions": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "type": "string"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "produced",
        -                  "not_in_scope"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tier": {
        -            "enum": [
        -              "free",
        -              "paid"
        -            ],
        -            "type": "string"
        -          },
        -          "tier_upgrade": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        -                "properties": {
        -                  "available_tiers": {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        -                      "properties": {
        -                        "billing": {
        -                          "enum": [
        -                            "one_off",
        -                            "monthly",
        -                            "annual"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "currency": {
        -                          "enum": [
        -                            "GBP",
        -                            "SGD",
        -                            "EUR",
        -                            "USD",
        -                            "CAD",
        -                            "AUD",
        -                            "NZD",
        -                            "MYR"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "display_name": {
        -                          "type": "string"
        -                        },
        -                        "price_local": {
        -                          "type": "number"
        -                        },
        -                        "tier_slug": {
        -                          "enum": [
        -                            "7_day_pass",
        -                            "solo",
        -                            "studio",
        -                            "practice"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "unlock_summary": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "tier_slug",
        -                        "display_name",
        -                        "price_local",
        -                        "currency",
        -                        "billing",
        -                        "unlock_summary"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "current_tier": {
        -                    "const": "free",
        -                    "default": "free",
        -                    "type": "string"
        -                  },
        -                  "pass_credit": {
        -                    "anyOf": [
        -                      {
        -                        "additionalProperties": false,
        -                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        -                        "properties": {
        -                          "amount_local": {
        -                            "type": "number"
        -                          },
        -                          "applies_to": {
        -                            "const": "solo_first_month",
        -                            "default": "solo_first_month",
        -                            "type": "string"
        -                          },
        -                          "currency": {
        -                            "type": "string"
        -                          },
        -                          "redeemable_until": {
        -                            "type": "string"
        -                          }
        -                        },
        -                        "required": [
        -                          "amount_local",
        -                          "currency",
        -                          "redeemable_until"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "pricing_url": {
        -                    "default": "https://civilquants.com/pricing",
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "available_tiers"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tos_url": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "upgrade_hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "warranty_disclaimer": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          }
        -        },
        -        "required": [
        -          "request_id",
        -          "issued_at",
        -          "tier"
        -        ],
        -        "type": "object"
        -      },
        -      "data": {
        -        "default": null,
        -        "title": "Data"
        -      },
        -      "error": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        -            "properties": {
        -              "code": {
        -                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        -                "enum": [
        -                  "RATE_LIMIT_EXCEEDED",
        -                  "TIER_INSUFFICIENT",
        -                  "INVALID_INPUT",
        -                  "SCHEMA_VERSION_MISMATCH",
        -                  "SCHEMA_INVARIANT_VIOLATION",
        -                  "UPSTREAM_TIMEOUT",
        -                  "BACKEND_FAILURE",
        -                  "IP_BLOCKED",
        -                  "RESOURCE_NOT_FOUND",
        -                  "RENDER_FAILURE",
        -                  "OCR_LOW_CONFIDENCE",
        -                  "MANUAL_REVIEW_REQUIRED",
        -                  "ACCEPTANCE_REQUIRED",
        -                  "INVALID_TOKEN"
        -                ],
        -                "type": "string"
        -              },
        -              "details": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "message": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "recoverable": {
        -                "type": "boolean"
        -              },
        -              "retry_after_seconds": {
        -                "anyOf": [
        -                  {
        -                    "minimum": 0,
        -                    "type": "integer"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              }
        -            },
        -            "required": [
        -              "code",
        -              "message",
        -              "recoverable"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      }
        -    },
        -    "required": [
        -      "_meta"
        -    ],
        -    "type": "object"
        -  }
        -]New value: +[
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "_meta": {
        +        "additionalProperties": false,
        +        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        +        "properties": {
        +          "deliverables": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        +                "properties": {
        +                  "docx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "dxf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "expires_at": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  },
        +                  "pdf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "xlsx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "expires_at"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "document_id": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "issued_at": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "rate_limit_remaining": {
        +            "anyOf": [
        +              {
        +                "minimum": 0,
        +                "type": "integer"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "request_id": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "schema_version": {
        +            "const": "1.0.0",
        +            "default": "1.0.0",
        +            "type": "string"
        +          },
        +          "scope_boundary": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        +                "properties": {
        +                  "not_in_scope": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "produced": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "recommended_companions": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "type": "string"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "produced",
        +                  "not_in_scope"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tier": {
        +            "enum": [
        +              "free",
        +              "paid"
        +            ],
        +            "type": "string"
        +          },
        +          "tier_upgrade": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        +                "properties": {
        +                  "available_tiers": {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        +                      "properties": {
        +                        "billing": {
        +                          "enum": [
        +                            "one_off",
        +                            "monthly",
        +                            "annual"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "currency": {
        +                          "enum": [
        +                            "GBP",
        +                            "SGD",
        +                            "EUR",
        +                            "USD",
        +                            "CAD",
        +                            "AUD",
        +                            "NZD",
        +                            "MYR"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "display_name": {
        +                          "type": "string"
        +                        },
        +                        "price_local": {
        +                          "type": "number"
        +                        },
        +                        "tier_slug": {
        +                          "enum": [
        +                            "7_day_pass",
        +                            "solo",
        +                            "studio",
        +                            "practice"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "unlock_summary": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "tier_slug",
        +                        "display_name",
        +                        "price_local",
        +                        "currency",
        +                        "billing",
        +                        "unlock_summary"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "current_tier": {
        +                    "const": "free",
        +                    "default": "free",
        +                    "type": "string"
        +                  },
        +                  "pass_credit": {
        +                    "anyOf": [
        +                      {
        +                        "additionalProperties": false,
        +                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        +                        "properties": {
        +                          "amount_local": {
        +                            "type": "number"
        +                          },
        +                          "applies_to": {
        +                            "const": "solo_first_month",
        +                            "default": "solo_first_month",
        +                            "type": "string"
        +                          },
        +                          "currency": {
        +                            "type": "string"
        +                          },
        +                          "redeemable_until": {
        +                            "type": "string"
        +                          }
        +                        },
        +                        "required": [
        +                          "amount_local",
        +                          "currency",
        +                          "redeemable_until"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "pricing_url": {
        +                    "default": "https://civilquants.com/pricing",
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "available_tiers"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tos_url": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "upgrade_hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "warranty_disclaimer": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          }
        +        },
        +        "required": [
        +          "request_id",
        +          "issued_at",
        +          "tier"
        +        ],
        +        "type": "object"
        +      },
        +      "data": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Schema § 1.1 — the typed payload returned inside `MCPResponse[ComputeResult]`.\n\nFree-tier responses omit `drawings` (the downloadable CAD artefact\npointers — the paid differentiator); the bridge enforces this. The\n`audit_trail` and the inline `drawing` preview are present on BOTH tiers\n(V1 ALIGN / 60th-fire D + C). `text_summary` is bounded to 2000 chars —\nkeeps the LLM-facing summary token-cheap and forces longer narrative into\nBoQ row descriptions where it belongs. `warnings` is the non-fatal\ngeometry advisory list (both tiers).",
        +            "properties": {
        +              "assembly_slug": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "audit_trail": {
        +                "anyOf": [
        +                  {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.7 — paid-tier audit-trail entry.\n\nOne entry per BoQ row; `boq_row_index` ties to the row position in\n`ComputeResult.boq_rows`. `derivation` is the human-readable formula\nwalk-through; `formula` is the optional formal expression.",
        +                      "properties": {
        +                        "boq_row_index": {
        +                          "minimum": 0,
        +                          "type": "integer"
        +                        },
        +                        "derivation": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "formula": {
        +                          "anyOf": [
        +                            {
        +                              "type": "string"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ],
        +                          "default": null
        +                        },
        +                        "id": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "parameters_referenced": {
        +                          "items": {
        +                            "type": "string"
        +                          },
        +                          "type": "array"
        +                        }
        +                      },
        +                      "required": [
        +                        "id",
        +                        "boq_row_index",
        +                        "derivation"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "boq_rows": {
        +                "items": {
        +                  "additionalProperties": false,
        +                  "description": "Schema § 1.3 — a single bill row in the requested standard's format.\n\n`description` is the non-verbatim functional description per spec § 13.9 /\n§ 15 invariant — NEVER reproduces a standard's verbatim clause text.\n`rate` / `amount` ship null because rates are commodity data the customer\nowns; the engine's job is the measurement, not the pricing.",
        +                  "properties": {
        +                    "amount": {
        +                      "anyOf": [
        +                        {
        +                          "type": "number"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "attribution": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "audit_id": {
        +                      "anyOf": [
        +                        {
        +                          "type": "string"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "description": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "quantity": {
        +                      "minimum": 0,
        +                      "type": "number"
        +                    },
        +                    "rate": {
        +                      "anyOf": [
        +                        {
        +                          "type": "number"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "unit": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "work_section": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    }
        +                  },
        +                  "required": [
        +                    "work_section",
        +                    "description",
        +                    "quantity",
        +                    "unit",
        +                    "attribution"
        +                  ],
        +                  "type": "object"
        +                },
        +                "type": "array"
        +              },
        +              "drawing": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": false,
        +                    "description": "Schema § 1.6a — inline server-rendered SVG preview of the geometry.\n\nThe MCP mirror of the web ``/compute`` response's ``drawing`` field\n(``api.schemas.compute.DrawingRef``): the same on-screen dimensioned\ndrawing both tiers see in the workspace, surfaced on the MCP compute\nresponse so a chat client can render it inline (60th-fire item C). This\nis the on-screen preview — present on BOTH tiers per the free/paid\nboundary; the downloadable CAD artefacts (DXF / dimensioned PDF) remain\nthe paid differentiator via the export tools.\n\nDefined here rather than importing ``DrawingRef`` because the web\n``schemas`` package imports back into this module (``schemas.render``),\nso reusing it would create an import cycle — the MCP wire contract keeps\nits own copy, the same pattern as ``BoQRow`` / ``DrawingReference``.",
        +                    "properties": {
        +                      "entity_count": {
        +                        "minimum": 0,
        +                        "type": "integer"
        +                      },
        +                      "svg_b64": {
        +                        "minLength": 1,
        +                        "type": "string"
        +                      },
        +                      "unit_of_drawing": {
        +                        "const": "m",
        +                        "default": "m",
        +                        "type": "string"
        +                      },
        +                      "viewbox_height": {
        +                        "exclusiveMinimum": 0,
        +                        "type": "number"
        +                      },
        +                      "viewbox_width": {
        +                        "exclusiveMinimum": 0,
        +                        "type": "number"
        +                      },
        +                      "viewbox_x": {
        +                        "type": "number"
        +                      },
        +                      "viewbox_y": {
        +                        "type": "number"
        +                      }
        +                    },
        +                    "required": [
        +                      "svg_b64",
        +                      "viewbox_x",
        +                      "viewbox_y",
        +                      "viewbox_width",
        +                      "viewbox_height",
        +                      "entity_count"
        +                    ],
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "drawings": {
        +                "anyOf": [
        +                  {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.6 — paid-tier drawing artefact pointer.\n\n`url` is an R2-signed URL; expiry is carried in `_meta.deliverables.expires_at`\non the envelope (not duplicated here). `layers` is DXF-only; PDF/SVG\ncallers omit it.",
        +                      "properties": {
        +                        "drawing_type": {
        +                          "enum": [
        +                            "section",
        +                            "plan",
        +                            "elevation",
        +                            "isometric",
        +                            "detail"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "format": {
        +                          "enum": [
        +                            "DXF",
        +                            "PDF",
        +                            "SVG"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "layers": {
        +                          "anyOf": [
        +                            {
        +                              "items": {
        +                                "type": "string"
        +                              },
        +                              "type": "array"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ],
        +                          "default": null
        +                        },
        +                        "scale": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "sheet_size": {
        +                          "enum": [
        +                            "A1",
        +                            "A2",
        +                            "A3",
        +                            "A4"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "url": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "drawing_type",
        +                        "format",
        +                        "url",
        +                        "sheet_size",
        +                        "scale"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "parameters_used": {
        +                "additionalProperties": false,
        +                "description": "Schema § 1.2 — the parameter snapshot the engine actually used.\n\nSplits user-supplied values from engine defaults so customers can see\nwhich numbers came from them and which the engine filled in. Every\ndefaulted parameter SHOULD have a corresponding entry in `assumptions`\n— the bridge layer enforces this when wrapping engine output.",
        +                "properties": {
        +                  "assumptions": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "engine_defaults": {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  "user_supplied": {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  }
        +                },
        +                "type": "object"
        +              },
        +              "standard": {
        +                "enum": [
        +                  "CESMM4",
        +                  "NRM2",
        +                  "SMM7",
        +                  "MMHW"
        +                ],
        +                "type": "string"
        +              },
        +              "text_summary": {
        +                "maxLength": 2000,
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "totals_summary": {
        +                "additionalProperties": false,
        +                "description": "Schema § 1.4 — totals_summary as a typed wrapper around the free-form dict.\n\nWire shape is a flat object (`{\"concrete_m3\": {...}, \"rebar_t\": {...}}`).\nWe model it as `RootModel`-equivalent via `model_config(extra=\"allow\")`\n+ a single `__root__`-style `entries` dict. Pydantic v2 recommends\n`RootModel` for free-form roots; using a wrapper class keeps the import\nsurface uniform with the rest of this module.",
        +                "properties": {
        +                  "entries": {
        +                    "additionalProperties": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.4 — single material/work-class total entry.",
        +                      "properties": {
        +                        "quantity": {
        +                          "minimum": 0,
        +                          "type": "number"
        +                        },
        +                        "unit": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "quantity",
        +                        "unit"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "object"
        +                  }
        +                },
        +                "type": "object"
        +              },
        +              "warnings": {
        +                "items": {
        +                  "additionalProperties": false,
        +                  "description": "Schema § 1.8 — a non-fatal geometry advisory (56th-fire T2).\n\nThe wire projection of the engine's `core.GeometryWarning`. Advisory only:\na warning NEVER changes a measured quantity — it flags geometry that is\nvalid but likely a mistake (e.g. a stale dependent-height default). Present\non BOTH tiers — a correctness/safety signal, not a paid feature.",
        +                  "properties": {
        +                    "affected_params": {
        +                      "items": {
        +                        "type": "string"
        +                      },
        +                      "type": "array"
        +                    },
        +                    "code": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "detail": {
        +                      "additionalProperties": {
        +                        "type": "number"
        +                      },
        +                      "type": "object"
        +                    },
        +                    "message": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "severity": {
        +                      "enum": [
        +                        "info",
        +                        "advisory",
        +                        "caution"
        +                      ],
        +                      "type": "string"
        +                    }
        +                  },
        +                  "required": [
        +                    "code",
        +                    "severity",
        +                    "message"
        +                  ],
        +                  "type": "object"
        +                },
        +                "type": "array"
        +              }
        +            },
        +            "required": [
        +              "assembly_slug",
        +              "standard",
        +              "parameters_used",
        +              "boq_rows",
        +              "totals_summary",
        +              "text_summary"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      },
        +      "error": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        +            "properties": {
        +              "code": {
        +                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        +                "enum": [
        +                  "RATE_LIMIT_EXCEEDED",
        +                  "TIER_INSUFFICIENT",
        +                  "INVALID_INPUT",
        +                  "SCHEMA_VERSION_MISMATCH",
        +                  "SCHEMA_INVARIANT_VIOLATION",
        +                  "UPSTREAM_TIMEOUT",
        +                  "BACKEND_FAILURE",
        +                  "IP_BLOCKED",
        +                  "RESOURCE_NOT_FOUND",
        +                  "RENDER_FAILURE",
        +                  "OCR_LOW_CONFIDENCE",
        +                  "MANUAL_REVIEW_REQUIRED",
        +                  "ACCEPTANCE_REQUIRED",
        +                  "INVALID_TOKEN"
        +                ],
        +                "type": "string"
        +              },
        +              "details": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "message": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "recoverable": {
        +                "type": "boolean"
        +              },
        +              "retry_after_seconds": {
        +                "anyOf": [
        +                  {
        +                    "minimum": 0,
        +                    "type": "integer"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              }
        +            },
        +            "required": [
        +              "code",
        +              "message",
        +              "recoverable"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      }
        +    },
        +    "required": [
        +      "_meta"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "_meta": {
        +        "additionalProperties": false,
        +        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        +        "properties": {
        +          "deliverables": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        +                "properties": {
        +                  "docx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "dxf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "expires_at": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  },
        +                  "pdf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "xlsx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "expires_at"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "document_id": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "issued_at": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "rate_limit_remaining": {
        +            "anyOf": [
        +              {
        +                "minimum": 0,
        +                "type": "integer"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "request_id": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "schema_version": {
        +            "const": "1.0.0",
        +            "default": "1.0.0",
        +            "type": "string"
        +          },
        +          "scope_boundary": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        +                "properties": {
        +                  "not_in_scope": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "produced": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "recommended_companions": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "type": "string"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "produced",
        +                  "not_in_scope"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tier": {
        +            "enum": [
        +              "free",
        +              "paid"
        +            ],
        +            "type": "string"
        +          },
        +          "tier_upgrade": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        +                "properties": {
        +                  "available_tiers": {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        +                      "properties": {
        +                        "billing": {
        +                          "enum": [
        +                            "one_off",
        +                            "monthly",
        +                            "annual"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "currency": {
        +                          "enum": [
        +                            "GBP",
        +                            "SGD",
        +                            "EUR",
        +                            "USD",
        +                            "CAD",
        +                            "AUD",
        +                            "NZD",
        +                            "MYR"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "display_name": {
        +                          "type": "string"
        +                        },
        +                        "price_local": {
        +                          "type": "number"
        +                        },
        +                        "tier_slug": {
        +                          "enum": [
        +                            "7_day_pass",
        +                            "solo",
        +                            "studio",
        +                            "practice"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "unlock_summary": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "tier_slug",
        +                        "display_name",
        +                        "price_local",
        +                        "currency",
        +                        "billing",
        +                        "unlock_summary"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "current_tier": {
        +                    "const": "free",
        +                    "default": "free",
        +                    "type": "string"
        +                  },
        +                  "pass_credit": {
        +                    "anyOf": [
        +                      {
        +                        "additionalProperties": false,
        +                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        +                        "properties": {
        +                          "amount_local": {
        +                            "type": "number"
        +                          },
        +                          "applies_to": {
        +                            "const": "solo_first_month",
        +                            "default": "solo_first_month",
        +                            "type": "string"
        +                          },
        +                          "currency": {
        +                            "type": "string"
        +                          },
        +                          "redeemable_until": {
        +                            "type": "string"
        +                          }
        +                        },
        +                        "required": [
        +                          "amount_local",
        +                          "currency",
        +                          "redeemable_until"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "pricing_url": {
        +                    "default": "https://civilquants.com/pricing",
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "available_tiers"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tos_url": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "upgrade_hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "warranty_disclaimer": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          }
        +        },
        +        "required": [
        +          "request_id",
        +          "issued_at",
        +          "tier"
        +        ],
        +        "type": "object"
        +      },
        +      "data": {
        +        "default": null,
        +        "title": "Data"
        +      },
        +      "error": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        +            "properties": {
        +              "code": {
        +                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        +                "enum": [
        +                  "RATE_LIMIT_EXCEEDED",
        +                  "TIER_INSUFFICIENT",
        +                  "INVALID_INPUT",
        +                  "SCHEMA_VERSION_MISMATCH",
        +                  "SCHEMA_INVARIANT_VIOLATION",
        +                  "UPSTREAM_TIMEOUT",
        +                  "BACKEND_FAILURE",
        +                  "IP_BLOCKED",
        +                  "RESOURCE_NOT_FOUND",
        +                  "RENDER_FAILURE",
        +                  "OCR_LOW_CONFIDENCE",
        +                  "MANUAL_REVIEW_REQUIRED",
        +                  "ACCEPTANCE_REQUIRED",
        +                  "INVALID_TOKEN"
        +                ],
        +                "type": "string"
        +              },
        +              "details": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "message": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "recoverable": {
        +                "type": "boolean"
        +              },
        +              "retry_after_seconds": {
        +                "anyOf": [
        +                  {
        +                    "minimum": 0,
        +                    "type": "integer"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              }
        +            },
        +            "required": [
        +              "code",
        +              "message",
        +              "recoverable"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      }
        +    },
        +    "required": [
        +      "_meta"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedrender_skill_report1 field changed
      • removedInput schema / properties / request / properties / compute_results / items / properties / parameters_used / properties / resolved_from_description
        Removed value: -{
        -  "anyOf": [
        -    {
        -      "items": {
        -        "additionalProperties": false,
        -        "description": "Schema § 1.2 — a parameter resolved by the forgiving-input layer.\n\nPopulated by the Track B-Forgiving Haiku-4.5 resolution pass; until that\nlayer lands, instances are constructed only by tests. `source` distinguishes\nthe resolution path so customers can audit which fields were inferred.",
        -        "properties": {
        -          "confidence": {
        -            "anyOf": [
        -              {
        -                "enum": [
        -                  "high",
        -                  "medium",
        -                  "low"
        -                ],
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "field_name": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "resolved_value": {},
        -          "source": {
        -            "enum": [
        -              "description_field",
        -              "haiku_resolution",
        -              "engine_default"
        -            ],
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "field_name",
        -          "resolved_value",
        -          "source"
        -        ],
        -        "type": "object"
        -      },
        -      "type": "array"
        -    },
        -    {
        -      "type": "null"
        -    }
        -  ],
        -  "default": null
        -}
    • Addedresolve_assembly_from_description
  10. 51 tool updates
    • Changedcompute_anchored_wall4 fields changed
      • addedInput schema / properties / deliverables
        Added value: +{
        +  "anyOf": [
        +    {
        +      "items": {
        +        "const": "xlsx",
        +        "type": "string"
        +      },
        +      "type": "array"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null
        +}
      • addedInput schema / properties / freeboard
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "number"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null
        +}
      • addedInput schema / properties / output_mode
        Added value: +{
        +  "default": "full_json",
        +  "enum": [
        +    "summary",
        +    "boq",
        +    "boq_with_backup",
        +    "full_json"
        +  ],
        +  "type": "string"
        +}
      • changedOutput schema / properties / result / anyOf
        Previous value: -[
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "_meta": {
        -        "additionalProperties": false,
        -        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        -        "properties": {
        -          "deliverables": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        -                "properties": {
        -                  "docx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "dxf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "expires_at": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  },
        -                  "pdf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "xlsx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "expires_at"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "document_id": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "issued_at": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "rate_limit_remaining": {
        -            "anyOf": [
        -              {
        -                "minimum": 0,
        -                "type": "integer"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "request_id": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "schema_version": {
        -            "const": "1.0.0",
        -            "default": "1.0.0",
        -            "type": "string"
        -          },
        -          "scope_boundary": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        -                "properties": {
        -                  "not_in_scope": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "produced": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "recommended_companions": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "type": "string"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "produced",
        -                  "not_in_scope"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tier": {
        -            "enum": [
        -              "free",
        -              "paid"
        -            ],
        -            "type": "string"
        -          },
        -          "tier_upgrade": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        -                "properties": {
        -                  "available_tiers": {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        -                      "properties": {
        -                        "billing": {
        -                          "enum": [
        -                            "one_off",
        -                            "monthly",
        -                            "annual"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "currency": {
        -                          "enum": [
        -                            "GBP",
        -                            "SGD",
        -                            "EUR",
        -                            "USD",
        -                            "CAD",
        -                            "AUD",
        -                            "NZD",
        -                            "MYR"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "display_name": {
        -                          "type": "string"
        -                        },
        -                        "price_local": {
        -                          "type": "number"
        -                        },
        -                        "tier_slug": {
        -                          "enum": [
        -                            "7_day_pass",
        -                            "solo",
        -                            "studio",
        -                            "practice"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "unlock_summary": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "tier_slug",
        -                        "display_name",
        -                        "price_local",
        -                        "currency",
        -                        "billing",
        -                        "unlock_summary"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "current_tier": {
        -                    "const": "free",
        -                    "default": "free",
        -                    "type": "string"
        -                  },
        -                  "pass_credit": {
        -                    "anyOf": [
        -                      {
        -                        "additionalProperties": false,
        -                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        -                        "properties": {
        -                          "amount_local": {
        -                            "type": "number"
        -                          },
        -                          "applies_to": {
        -                            "const": "solo_first_month",
        -                            "default": "solo_first_month",
        -                            "type": "string"
        -                          },
        -                          "currency": {
        -                            "type": "string"
        -                          },
        -                          "redeemable_until": {
        -                            "type": "string"
        -                          }
        -                        },
        -                        "required": [
        -                          "amount_local",
        -                          "currency",
        -                          "redeemable_until"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "pricing_url": {
        -                    "default": "https://civilquants.com/pricing",
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "available_tiers"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tos_url": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "upgrade_hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "warranty_disclaimer": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          }
        -        },
        -        "required": [
        -          "request_id",
        -          "issued_at",
        -          "tier"
        -        ],
        -        "type": "object"
        -      },
        -      "data": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Schema § 1.1 — the typed payload returned inside `MCPResponse[ComputeResult]`.\n\nFree-tier responses MUST omit `drawings` and `audit_trail` (the bridge\nenforces this); paid-tier responses populate both. `text_summary` is\nbounded to 2000 chars — keeps the LLM-facing summary token-cheap and\nforces longer narrative into BoQ row descriptions where it belongs.\n`warnings` is the non-fatal geometry advisory list (both tiers).",
        -            "properties": {
        -              "assembly_slug": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "audit_trail": {
        -                "anyOf": [
        -                  {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.7 — paid-tier audit-trail entry.\n\nOne entry per BoQ row; `boq_row_index` ties to the row position in\n`ComputeResult.boq_rows`. `derivation` is the human-readable formula\nwalk-through; `formula` is the optional formal expression.",
        -                      "properties": {
        -                        "boq_row_index": {
        -                          "minimum": 0,
        -                          "type": "integer"
        -                        },
        -                        "derivation": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "formula": {
        -                          "anyOf": [
        -                            {
        -                              "type": "string"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ],
        -                          "default": null
        -                        },
        -                        "id": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "parameters_referenced": {
        -                          "items": {
        -                            "type": "string"
        -                          },
        -                          "type": "array"
        -                        }
        -                      },
        -                      "required": [
        -                        "id",
        -                        "boq_row_index",
        -                        "derivation"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "boq_rows": {
        -                "items": {
        -                  "additionalProperties": false,
        -                  "description": "Schema § 1.3 — a single bill row in the requested standard's format.\n\n`description` is the non-verbatim functional description per spec § 13.9 /\n§ 15 invariant — NEVER reproduces a standard's verbatim clause text.\n`rate` / `amount` ship null because rates are commodity data the customer\nowns; the engine's job is the measurement, not the pricing.",
        -                  "properties": {
        -                    "amount": {
        -                      "anyOf": [
        -                        {
        -                          "type": "number"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "attribution": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "audit_id": {
        -                      "anyOf": [
        -                        {
        -                          "type": "string"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "description": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "quantity": {
        -                      "minimum": 0,
        -                      "type": "number"
        -                    },
        -                    "rate": {
        -                      "anyOf": [
        -                        {
        -                          "type": "number"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "unit": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "work_section": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    }
        -                  },
        -                  "required": [
        -                    "work_section",
        -                    "description",
        -                    "quantity",
        -                    "unit",
        -                    "attribution"
        -                  ],
        -                  "type": "object"
        -                },
        -                "type": "array"
        -              },
        -              "drawings": {
        -                "anyOf": [
        -                  {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.6 — paid-tier drawing artefact pointer.\n\n`url` is an R2-signed URL; expiry is carried in `_meta.deliverables.expires_at`\non the envelope (not duplicated here). `layers` is DXF-only; PDF/SVG\ncallers omit it.",
        -                      "properties": {
        -                        "drawing_type": {
        -                          "enum": [
        -                            "section",
        -                            "plan",
        -                            "elevation",
        -                            "isometric",
        -                            "detail"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "format": {
        -                          "enum": [
        -                            "DXF",
        -                            "PDF",
        -                            "SVG"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "layers": {
        -                          "anyOf": [
        -                            {
        -                              "items": {
        -                                "type": "string"
        -                              },
        -                              "type": "array"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ],
        -                          "default": null
        -                        },
        -                        "scale": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "sheet_size": {
        -                          "enum": [
        -                            "A1",
        -                            "A2",
        -                            "A3",
        -                            "A4"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "url": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "drawing_type",
        -                        "format",
        -                        "url",
        -                        "sheet_size",
        -                        "scale"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "parameters_used": {
        -                "additionalProperties": false,
        -                "description": "Schema § 1.2 — the parameter snapshot the engine actually used.\n\nSplits user-supplied values from engine defaults so customers can see\nwhich numbers came from them and which the engine filled in. Every\ndefaulted parameter SHOULD have a corresponding entry in `assumptions`\n— the bridge layer enforces this when wrapping engine output.",
        -                "properties": {
        -                  "assumptions": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "engine_defaults": {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  "resolved_from_description": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "additionalProperties": false,
        -                          "description": "Schema § 1.2 — a parameter resolved by the forgiving-input layer.\n\nPopulated by the Track B-Forgiving Haiku-4.5 resolution pass; until that\nlayer lands, instances are constructed only by tests. `source` distinguishes\nthe resolution path so customers can audit which fields were inferred.",
        -                          "properties": {
        -                            "confidence": {
        -                              "anyOf": [
        -                                {
        -                                  "enum": [
        -                                    "high",
        -                                    "medium",
        -                                    "low"
        -                                  ],
        -                                  "type": "string"
        -                                },
        -                                {
        -                                  "type": "null"
        -                                }
        -                              ],
        -                              "default": null
        -                            },
        -                            "field_name": {
        -                              "minLength": 1,
        -                              "type": "string"
        -                            },
        -                            "resolved_value": {},
        -                            "source": {
        -                              "enum": [
        -                                "description_field",
        -                                "haiku_resolution",
        -                                "engine_default"
        -                              ],
        -                              "type": "string"
        -                            }
        -                          },
        -                          "required": [
        -                            "field_name",
        -                            "resolved_value",
        -                            "source"
        -                          ],
        -                          "type": "object"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "user_supplied": {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  }
        -                },
        -                "type": "object"
        -              },
        -              "standard": {
        -                "enum": [
        -                  "CESMM4",
        -                  "NRM2",
        -                  "SMM7",
        -                  "MMHW"
        -                ],
        -                "type": "string"
        -              },
        -              "text_summary": {
        -                "maxLength": 2000,
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "totals_summary": {
        -                "additionalProperties": false,
        -                "description": "Schema § 1.4 — totals_summary as a typed wrapper around the free-form dict.\n\nWire shape is a flat object (`{\"concrete_m3\": {...}, \"rebar_t\": {...}}`).\nWe model it as `RootModel`-equivalent via `model_config(extra=\"allow\")`\n+ a single `__root__`-style `entries` dict. Pydantic v2 recommends\n`RootModel` for free-form roots; using a wrapper class keeps the import\nsurface uniform with the rest of this module.",
        -                "properties": {
        -                  "entries": {
        -                    "additionalProperties": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.4 — single material/work-class total entry.",
        -                      "properties": {
        -                        "quantity": {
        -                          "minimum": 0,
        -                          "type": "number"
        -                        },
        -                        "unit": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "quantity",
        -                        "unit"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "object"
        -                  }
        -                },
        -                "type": "object"
        -              },
        -              "warnings": {
        -                "items": {
        -                  "additionalProperties": false,
        -                  "description": "Schema § 1.8 — a non-fatal geometry advisory (56th-fire T2).\n\nThe wire projection of the engine's `core.GeometryWarning`. Advisory only:\na warning NEVER changes a measured quantity — it flags geometry that is\nvalid but likely a mistake (e.g. a stale dependent-height default). Present\non BOTH tiers — a correctness/safety signal, not a paid feature.",
        -                  "properties": {
        -                    "affected_params": {
        -                      "items": {
        -                        "type": "string"
        -                      },
        -                      "type": "array"
        -                    },
        -                    "code": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "detail": {
        -                      "additionalProperties": {
        -                        "type": "number"
        -                      },
        -                      "type": "object"
        -                    },
        -                    "message": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "severity": {
        -                      "enum": [
        -                        "info",
        -                        "advisory",
        -                        "caution"
        -                      ],
        -                      "type": "string"
        -                    }
        -                  },
        -                  "required": [
        -                    "code",
        -                    "severity",
        -                    "message"
        -                  ],
        -                  "type": "object"
        -                },
        -                "type": "array"
        -              }
        -            },
        -            "required": [
        -              "assembly_slug",
        -              "standard",
        -              "parameters_used",
        -              "boq_rows",
        -              "totals_summary",
        -              "text_summary"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      },
        -      "error": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        -            "properties": {
        -              "code": {
        -                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        -                "enum": [
        -                  "RATE_LIMIT_EXCEEDED",
        -                  "TIER_INSUFFICIENT",
        -                  "INVALID_INPUT",
        -                  "SCHEMA_VERSION_MISMATCH",
        -                  "SCHEMA_INVARIANT_VIOLATION",
        -                  "UPSTREAM_TIMEOUT",
        -                  "BACKEND_FAILURE",
        -                  "IP_BLOCKED",
        -                  "RESOURCE_NOT_FOUND",
        -                  "RENDER_FAILURE",
        -                  "OCR_LOW_CONFIDENCE",
        -                  "MANUAL_REVIEW_REQUIRED",
        -                  "ACCEPTANCE_REQUIRED",
        -                  "INVALID_TOKEN"
        -                ],
        -                "type": "string"
        -              },
        -              "details": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "message": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "recoverable": {
        -                "type": "boolean"
        -              },
        -              "retry_after_seconds": {
        -                "anyOf": [
        -                  {
        -                    "minimum": 0,
        -                    "type": "integer"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              }
        -            },
        -            "required": [
        -              "code",
        -              "message",
        -              "recoverable"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      }
        -    },
        -    "required": [
        -      "_meta"
        -    ],
        -    "type": "object"
        -  },
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "_meta": {
        -        "additionalProperties": false,
        -        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        -        "properties": {
        -          "deliverables": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        -                "properties": {
        -                  "docx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "dxf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "expires_at": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  },
        -                  "pdf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "xlsx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "expires_at"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "document_id": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "issued_at": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "rate_limit_remaining": {
        -            "anyOf": [
        -              {
        -                "minimum": 0,
        -                "type": "integer"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "request_id": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "schema_version": {
        -            "const": "1.0.0",
        -            "default": "1.0.0",
        -            "type": "string"
        -          },
        -          "scope_boundary": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        -                "properties": {
        -                  "not_in_scope": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "produced": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "recommended_companions": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "type": "string"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "produced",
        -                  "not_in_scope"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tier": {
        -            "enum": [
        -              "free",
        -              "paid"
        -            ],
        -            "type": "string"
        -          },
        -          "tier_upgrade": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        -                "properties": {
        -                  "available_tiers": {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        -                      "properties": {
        -                        "billing": {
        -                          "enum": [
        -                            "one_off",
        -                            "monthly",
        -                            "annual"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "currency": {
        -                          "enum": [
        -                            "GBP",
        -                            "SGD",
        -                            "EUR",
        -                            "USD",
        -                            "CAD",
        -                            "AUD",
        -                            "NZD",
        -                            "MYR"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "display_name": {
        -                          "type": "string"
        -                        },
        -                        "price_local": {
        -                          "type": "number"
        -                        },
        -                        "tier_slug": {
        -                          "enum": [
        -                            "7_day_pass",
        -                            "solo",
        -                            "studio",
        -                            "practice"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "unlock_summary": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "tier_slug",
        -                        "display_name",
        -                        "price_local",
        -                        "currency",
        -                        "billing",
        -                        "unlock_summary"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "current_tier": {
        -                    "const": "free",
        -                    "default": "free",
        -                    "type": "string"
        -                  },
        -                  "pass_credit": {
        -                    "anyOf": [
        -                      {
        -                        "additionalProperties": false,
        -                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        -                        "properties": {
        -                          "amount_local": {
        -                            "type": "number"
        -                          },
        -                          "applies_to": {
        -                            "const": "solo_first_month",
        -                            "default": "solo_first_month",
        -                            "type": "string"
        -                          },
        -                          "currency": {
        -                            "type": "string"
        -                          },
        -                          "redeemable_until": {
        -                            "type": "string"
        -                          }
        -                        },
        -                        "required": [
        -                          "amount_local",
        -                          "currency",
        -                          "redeemable_until"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "pricing_url": {
        -                    "default": "https://civilquants.com/pricing",
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "available_tiers"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tos_url": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "upgrade_hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "warranty_disclaimer": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          }
        -        },
        -        "required": [
        -          "request_id",
        -          "issued_at",
        -          "tier"
        -        ],
        -        "type": "object"
        -      },
        -      "data": {
        -        "default": null,
        -        "title": "Data"
        -      },
        -      "error": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        -            "properties": {
        -              "code": {
        -                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        -                "enum": [
        -                  "RATE_LIMIT_EXCEEDED",
        -                  "TIER_INSUFFICIENT",
        -                  "INVALID_INPUT",
        -                  "SCHEMA_VERSION_MISMATCH",
        -                  "SCHEMA_INVARIANT_VIOLATION",
        -                  "UPSTREAM_TIMEOUT",
        -                  "BACKEND_FAILURE",
        -                  "IP_BLOCKED",
        -                  "RESOURCE_NOT_FOUND",
        -                  "RENDER_FAILURE",
        -                  "OCR_LOW_CONFIDENCE",
        -                  "MANUAL_REVIEW_REQUIRED",
        -                  "ACCEPTANCE_REQUIRED",
        -                  "INVALID_TOKEN"
        -                ],
        -                "type": "string"
        -              },
        -              "details": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "message": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "recoverable": {
        -                "type": "boolean"
        -              },
        -              "retry_after_seconds": {
        -                "anyOf": [
        -                  {
        -                    "minimum": 0,
        -                    "type": "integer"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              }
        -            },
        -            "required": [
        -              "code",
        -              "message",
        -              "recoverable"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      }
        -    },
        -    "required": [
        -      "_meta"
        -    ],
        -    "type": "object"
        -  }
        -]New value: +[
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "_meta": {
        +        "additionalProperties": false,
        +        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        +        "properties": {
        +          "deliverables": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        +                "properties": {
        +                  "docx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "dxf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "expires_at": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  },
        +                  "pdf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "xlsx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "expires_at"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "document_id": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "issued_at": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "rate_limit_remaining": {
        +            "anyOf": [
        +              {
        +                "minimum": 0,
        +                "type": "integer"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "request_id": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "schema_version": {
        +            "const": "1.0.0",
        +            "default": "1.0.0",
        +            "type": "string"
        +          },
        +          "scope_boundary": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        +                "properties": {
        +                  "not_in_scope": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "produced": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "recommended_companions": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "type": "string"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "produced",
        +                  "not_in_scope"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tier": {
        +            "enum": [
        +              "free",
        +              "paid"
        +            ],
        +            "type": "string"
        +          },
        +          "tier_upgrade": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        +                "properties": {
        +                  "available_tiers": {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        +                      "properties": {
        +                        "billing": {
        +                          "enum": [
        +                            "one_off",
        +                            "monthly",
        +                            "annual"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "currency": {
        +                          "enum": [
        +                            "GBP",
        +                            "SGD",
        +                            "EUR",
        +                            "USD",
        +                            "CAD",
        +                            "AUD",
        +                            "NZD",
        +                            "MYR"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "display_name": {
        +                          "type": "string"
        +                        },
        +                        "price_local": {
        +                          "type": "number"
        +                        },
        +                        "tier_slug": {
        +                          "enum": [
        +                            "7_day_pass",
        +                            "solo",
        +                            "studio",
        +                            "practice"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "unlock_summary": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "tier_slug",
        +                        "display_name",
        +                        "price_local",
        +                        "currency",
        +                        "billing",
        +                        "unlock_summary"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "current_tier": {
        +                    "const": "free",
        +                    "default": "free",
        +                    "type": "string"
        +                  },
        +                  "pass_credit": {
        +                    "anyOf": [
        +                      {
        +                        "additionalProperties": false,
        +                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        +                        "properties": {
        +                          "amount_local": {
        +                            "type": "number"
        +                          },
        +                          "applies_to": {
        +                            "const": "solo_first_month",
        +                            "default": "solo_first_month",
        +                            "type": "string"
        +                          },
        +                          "currency": {
        +                            "type": "string"
        +                          },
        +                          "redeemable_until": {
        +                            "type": "string"
        +                          }
        +                        },
        +                        "required": [
        +                          "amount_local",
        +                          "currency",
        +                          "redeemable_until"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "pricing_url": {
        +                    "default": "https://civilquants.com/pricing",
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "available_tiers"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tos_url": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "upgrade_hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "warranty_disclaimer": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          }
        +        },
        +        "required": [
        +          "request_id",
        +          "issued_at",
        +          "tier"
        +        ],
        +        "type": "object"
        +      },
        +      "data": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Schema § 1.1 — the typed payload returned inside `MCPResponse[ComputeResult]`.\n\nFree-tier responses omit `drawings` (the downloadable CAD artefact\npointers — the paid differentiator); the bridge enforces this. The\n`audit_trail` and the inline `drawing` preview are present on BOTH tiers\n(V1 ALIGN / 60th-fire D + C). `text_summary` is bounded to 2000 chars —\nkeeps the LLM-facing summary token-cheap and forces longer narrative into\nBoQ row descriptions where it belongs. `warnings` is the non-fatal\ngeometry advisory list (both tiers).",
        +            "properties": {
        +              "assembly_slug": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "audit_trail": {
        +                "anyOf": [
        +                  {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.7 — paid-tier audit-trail entry.\n\nOne entry per BoQ row; `boq_row_index` ties to the row position in\n`ComputeResult.boq_rows`. `derivation` is the human-readable formula\nwalk-through; `formula` is the optional formal expression.",
        +                      "properties": {
        +                        "boq_row_index": {
        +                          "minimum": 0,
        +                          "type": "integer"
        +                        },
        +                        "derivation": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "formula": {
        +                          "anyOf": [
        +                            {
        +                              "type": "string"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ],
        +                          "default": null
        +                        },
        +                        "id": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "parameters_referenced": {
        +                          "items": {
        +                            "type": "string"
        +                          },
        +                          "type": "array"
        +                        }
        +                      },
        +                      "required": [
        +                        "id",
        +                        "boq_row_index",
        +                        "derivation"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "boq_rows": {
        +                "items": {
        +                  "additionalProperties": false,
        +                  "description": "Schema § 1.3 — a single bill row in the requested standard's format.\n\n`description` is the non-verbatim functional description per spec § 13.9 /\n§ 15 invariant — NEVER reproduces a standard's verbatim clause text.\n`rate` / `amount` ship null because rates are commodity data the customer\nowns; the engine's job is the measurement, not the pricing.",
        +                  "properties": {
        +                    "amount": {
        +                      "anyOf": [
        +                        {
        +                          "type": "number"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "attribution": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "audit_id": {
        +                      "anyOf": [
        +                        {
        +                          "type": "string"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "description": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "quantity": {
        +                      "minimum": 0,
        +                      "type": "number"
        +                    },
        +                    "rate": {
        +                      "anyOf": [
        +                        {
        +                          "type": "number"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "unit": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "work_section": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    }
        +                  },
        +                  "required": [
        +                    "work_section",
        +                    "description",
        +                    "quantity",
        +                    "unit",
        +                    "attribution"
        +                  ],
        +                  "type": "object"
        +                },
        +                "type": "array"
        +              },
        +              "drawing": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": false,
        +                    "description": "Schema § 1.6a — inline server-rendered SVG preview of the geometry.\n\nThe MCP mirror of the web ``/compute`` response's ``drawing`` field\n(``api.schemas.compute.DrawingRef``): the same on-screen dimensioned\ndrawing both tiers see in the workspace, surfaced on the MCP compute\nresponse so a chat client can render it inline (60th-fire item C). This\nis the on-screen preview — present on BOTH tiers per the free/paid\nboundary; the downloadable CAD artefacts (DXF / dimensioned PDF) remain\nthe paid differentiator via the export tools.\n\nDefined here rather than importing ``DrawingRef`` because the web\n``schemas`` package imports back into this module (``schemas.render``),\nso reusing it would create an import cycle — the MCP wire contract keeps\nits own copy, the same pattern as ``BoQRow`` / ``DrawingReference``.",
        +                    "properties": {
        +                      "entity_count": {
        +                        "minimum": 0,
        +                        "type": "integer"
        +                      },
        +                      "svg_b64": {
        +                        "minLength": 1,
        +                        "type": "string"
        +                      },
        +                      "unit_of_drawing": {
        +                        "const": "m",
        +                        "default": "m",
        +                        "type": "string"
        +                      },
        +                      "viewbox_height": {
        +                        "exclusiveMinimum": 0,
        +                        "type": "number"
        +                      },
        +                      "viewbox_width": {
        +                        "exclusiveMinimum": 0,
        +                        "type": "number"
        +                      },
        +                      "viewbox_x": {
        +                        "type": "number"
        +                      },
        +                      "viewbox_y": {
        +                        "type": "number"
        +                      }
        +                    },
        +                    "required": [
        +                      "svg_b64",
        +                      "viewbox_x",
        +                      "viewbox_y",
        +                      "viewbox_width",
        +                      "viewbox_height",
        +                      "entity_count"
        +                    ],
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "drawings": {
        +                "anyOf": [
        +                  {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.6 — paid-tier drawing artefact pointer.\n\n`url` is an R2-signed URL; expiry is carried in `_meta.deliverables.expires_at`\non the envelope (not duplicated here). `layers` is DXF-only; PDF/SVG\ncallers omit it.",
        +                      "properties": {
        +                        "drawing_type": {
        +                          "enum": [
        +                            "section",
        +                            "plan",
        +                            "elevation",
        +                            "isometric",
        +                            "detail"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "format": {
        +                          "enum": [
        +                            "DXF",
        +                            "PDF",
        +                            "SVG"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "layers": {
        +                          "anyOf": [
        +                            {
        +                              "items": {
        +                                "type": "string"
        +                              },
        +                              "type": "array"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ],
        +                          "default": null
        +                        },
        +                        "scale": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "sheet_size": {
        +                          "enum": [
        +                            "A1",
        +                            "A2",
        +                            "A3",
        +                            "A4"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "url": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "drawing_type",
        +                        "format",
        +                        "url",
        +                        "sheet_size",
        +                        "scale"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "parameters_used": {
        +                "additionalProperties": false,
        +                "description": "Schema § 1.2 — the parameter snapshot the engine actually used.\n\nSplits user-supplied values from engine defaults so customers can see\nwhich numbers came from them and which the engine filled in. Every\ndefaulted parameter SHOULD have a corresponding entry in `assumptions`\n— the bridge layer enforces this when wrapping engine output.",
        +                "properties": {
        +                  "assumptions": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "engine_defaults": {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  "resolved_from_description": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "additionalProperties": false,
        +                          "description": "Schema § 1.2 — a parameter resolved by the forgiving-input layer.\n\nPopulated by the Track B-Forgiving Haiku-4.5 resolution pass; until that\nlayer lands, instances are constructed only by tests. `source` distinguishes\nthe resolution path so customers can audit which fields were inferred.",
        +                          "properties": {
        +                            "confidence": {
        +                              "anyOf": [
        +                                {
        +                                  "enum": [
        +                                    "high",
        +                                    "medium",
        +                                    "low"
        +                                  ],
        +                                  "type": "string"
        +                                },
        +                                {
        +                                  "type": "null"
        +                                }
        +                              ],
        +                              "default": null
        +                            },
        +                            "field_name": {
        +                              "minLength": 1,
        +                              "type": "string"
        +                            },
        +                            "resolved_value": {},
        +                            "source": {
        +                              "enum": [
        +                                "description_field",
        +                                "haiku_resolution",
        +                                "engine_default"
        +                              ],
        +                              "type": "string"
        +                            }
        +                          },
        +                          "required": [
        +                            "field_name",
        +                            "resolved_value",
        +                            "source"
        +                          ],
        +                          "type": "object"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "user_supplied": {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  }
        +                },
        +                "type": "object"
        +              },
        +              "standard": {
        +                "enum": [
        +                  "CESMM4",
        +                  "NRM2",
        +                  "SMM7",
        +                  "MMHW"
        +                ],
        +                "type": "string"
        +              },
        +              "text_summary": {
        +                "maxLength": 2000,
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "totals_summary": {
        +                "additionalProperties": false,
        +                "description": "Schema § 1.4 — totals_summary as a typed wrapper around the free-form dict.\n\nWire shape is a flat object (`{\"concrete_m3\": {...}, \"rebar_t\": {...}}`).\nWe model it as `RootModel`-equivalent via `model_config(extra=\"allow\")`\n+ a single `__root__`-style `entries` dict. Pydantic v2 recommends\n`RootModel` for free-form roots; using a wrapper class keeps the import\nsurface uniform with the rest of this module.",
        +                "properties": {
        +                  "entries": {
        +                    "additionalProperties": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.4 — single material/work-class total entry.",
        +                      "properties": {
        +                        "quantity": {
        +                          "minimum": 0,
        +                          "type": "number"
        +                        },
        +                        "unit": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "quantity",
        +                        "unit"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "object"
        +                  }
        +                },
        +                "type": "object"
        +              },
        +              "warnings": {
        +                "items": {
        +                  "additionalProperties": false,
        +                  "description": "Schema § 1.8 — a non-fatal geometry advisory (56th-fire T2).\n\nThe wire projection of the engine's `core.GeometryWarning`. Advisory only:\na warning NEVER changes a measured quantity — it flags geometry that is\nvalid but likely a mistake (e.g. a stale dependent-height default). Present\non BOTH tiers — a correctness/safety signal, not a paid feature.",
        +                  "properties": {
        +                    "affected_params": {
        +                      "items": {
        +                        "type": "string"
        +                      },
        +                      "type": "array"
        +                    },
        +                    "code": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "detail": {
        +                      "additionalProperties": {
        +                        "type": "number"
        +                      },
        +                      "type": "object"
        +                    },
        +                    "message": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "severity": {
        +                      "enum": [
        +                        "info",
        +                        "advisory",
        +                        "caution"
        +                      ],
        +                      "type": "string"
        +                    }
        +                  },
        +                  "required": [
        +                    "code",
        +                    "severity",
        +                    "message"
        +                  ],
        +                  "type": "object"
        +                },
        +                "type": "array"
        +              }
        +            },
        +            "required": [
        +              "assembly_slug",
        +              "standard",
        +              "parameters_used",
        +              "boq_rows",
        +              "totals_summary",
        +              "text_summary"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      },
        +      "error": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        +            "properties": {
        +              "code": {
        +                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        +                "enum": [
        +                  "RATE_LIMIT_EXCEEDED",
        +                  "TIER_INSUFFICIENT",
        +                  "INVALID_INPUT",
        +                  "SCHEMA_VERSION_MISMATCH",
        +                  "SCHEMA_INVARIANT_VIOLATION",
        +                  "UPSTREAM_TIMEOUT",
        +                  "BACKEND_FAILURE",
        +                  "IP_BLOCKED",
        +                  "RESOURCE_NOT_FOUND",
        +                  "RENDER_FAILURE",
        +                  "OCR_LOW_CONFIDENCE",
        +                  "MANUAL_REVIEW_REQUIRED",
        +                  "ACCEPTANCE_REQUIRED",
        +                  "INVALID_TOKEN"
        +                ],
        +                "type": "string"
        +              },
        +              "details": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "message": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "recoverable": {
        +                "type": "boolean"
        +              },
        +              "retry_after_seconds": {
        +                "anyOf": [
        +                  {
        +                    "minimum": 0,
        +                    "type": "integer"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              }
        +            },
        +            "required": [
        +              "code",
        +              "message",
        +              "recoverable"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      }
        +    },
        +    "required": [
        +      "_meta"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "_meta": {
        +        "additionalProperties": false,
        +        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        +        "properties": {
        +          "deliverables": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        +                "properties": {
        +                  "docx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "dxf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "expires_at": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  },
        +                  "pdf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "xlsx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "expires_at"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "document_id": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "issued_at": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "rate_limit_remaining": {
        +            "anyOf": [
        +              {
        +                "minimum": 0,
        +                "type": "integer"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "request_id": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "schema_version": {
        +            "const": "1.0.0",
        +            "default": "1.0.0",
        +            "type": "string"
        +          },
        +          "scope_boundary": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        +                "properties": {
        +                  "not_in_scope": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "produced": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "recommended_companions": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "type": "string"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "produced",
        +                  "not_in_scope"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tier": {
        +            "enum": [
        +              "free",
        +              "paid"
        +            ],
        +            "type": "string"
        +          },
        +          "tier_upgrade": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        +                "properties": {
        +                  "available_tiers": {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        +                      "properties": {
        +                        "billing": {
        +                          "enum": [
        +                            "one_off",
        +                            "monthly",
        +                            "annual"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "currency": {
        +                          "enum": [
        +                            "GBP",
        +                            "SGD",
        +                            "EUR",
        +                            "USD",
        +                            "CAD",
        +                            "AUD",
        +                            "NZD",
        +                            "MYR"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "display_name": {
        +                          "type": "string"
        +                        },
        +                        "price_local": {
        +                          "type": "number"
        +                        },
        +                        "tier_slug": {
        +                          "enum": [
        +                            "7_day_pass",
        +                            "solo",
        +                            "studio",
        +                            "practice"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "unlock_summary": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "tier_slug",
        +                        "display_name",
        +                        "price_local",
        +                        "currency",
        +                        "billing",
        +                        "unlock_summary"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "current_tier": {
        +                    "const": "free",
        +                    "default": "free",
        +                    "type": "string"
        +                  },
        +                  "pass_credit": {
        +                    "anyOf": [
        +                      {
        +                        "additionalProperties": false,
        +                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        +                        "properties": {
        +                          "amount_local": {
        +                            "type": "number"
        +                          },
        +                          "applies_to": {
        +                            "const": "solo_first_month",
        +                            "default": "solo_first_month",
        +                            "type": "string"
        +                          },
        +                          "currency": {
        +                            "type": "string"
        +                          },
        +                          "redeemable_until": {
        +                            "type": "string"
        +                          }
        +                        },
        +                        "required": [
        +                          "amount_local",
        +                          "currency",
        +                          "redeemable_until"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "pricing_url": {
        +                    "default": "https://civilquants.com/pricing",
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "available_tiers"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tos_url": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "upgrade_hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "warranty_disclaimer": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          }
        +        },
        +        "required": [
        +          "request_id",
        +          "issued_at",
        +          "tier"
        +        ],
        +        "type": "object"
        +      },
        +      "data": {
        +        "default": null,
        +        "title": "Data"
        +      },
        +      "error": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        +            "properties": {
        +              "code": {
        +                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        +                "enum": [
        +                  "RATE_LIMIT_EXCEEDED",
        +                  "TIER_INSUFFICIENT",
        +                  "INVALID_INPUT",
        +                  "SCHEMA_VERSION_MISMATCH",
        +                  "SCHEMA_INVARIANT_VIOLATION",
        +                  "UPSTREAM_TIMEOUT",
        +                  "BACKEND_FAILURE",
        +                  "IP_BLOCKED",
        +                  "RESOURCE_NOT_FOUND",
        +                  "RENDER_FAILURE",
        +                  "OCR_LOW_CONFIDENCE",
        +                  "MANUAL_REVIEW_REQUIRED",
        +                  "ACCEPTANCE_REQUIRED",
        +                  "INVALID_TOKEN"
        +                ],
        +                "type": "string"
        +              },
        +              "details": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "message": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "recoverable": {
        +                "type": "boolean"
        +              },
        +              "retry_after_seconds": {
        +                "anyOf": [
        +                  {
        +                    "minimum": 0,
        +                    "type": "integer"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              }
        +            },
        +            "required": [
        +              "code",
        +              "message",
        +              "recoverable"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      }
        +    },
        +    "required": [
        +      "_meta"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedcompute_attenuation_tank3 fields changed
      • addedInput schema / properties / deliverables
        Added value: +{
        +  "anyOf": [
        +    {
        +      "items": {
        +        "const": "xlsx",
        +        "type": "string"
        +      },
        +      "type": "array"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null
        +}
      • addedInput schema / properties / output_mode
        Added value: +{
        +  "default": "full_json",
        +  "enum": [
        +    "summary",
        +    "boq",
        +    "boq_with_backup",
        +    "full_json"
        +  ],
        +  "type": "string"
        +}
      • changedOutput schema / properties / result / anyOf
        Previous value: -[
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "_meta": {
        -        "additionalProperties": false,
        -        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        -        "properties": {
        -          "deliverables": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        -                "properties": {
        -                  "docx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "dxf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "expires_at": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  },
        -                  "pdf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "xlsx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "expires_at"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "document_id": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "issued_at": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "rate_limit_remaining": {
        -            "anyOf": [
        -              {
        -                "minimum": 0,
        -                "type": "integer"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "request_id": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "schema_version": {
        -            "const": "1.0.0",
        -            "default": "1.0.0",
        -            "type": "string"
        -          },
        -          "scope_boundary": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        -                "properties": {
        -                  "not_in_scope": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "produced": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "recommended_companions": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "type": "string"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "produced",
        -                  "not_in_scope"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tier": {
        -            "enum": [
        -              "free",
        -              "paid"
        -            ],
        -            "type": "string"
        -          },
        -          "tier_upgrade": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        -                "properties": {
        -                  "available_tiers": {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        -                      "properties": {
        -                        "billing": {
        -                          "enum": [
        -                            "one_off",
        -                            "monthly",
        -                            "annual"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "currency": {
        -                          "enum": [
        -                            "GBP",
        -                            "SGD",
        -                            "EUR",
        -                            "USD",
        -                            "CAD",
        -                            "AUD",
        -                            "NZD",
        -                            "MYR"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "display_name": {
        -                          "type": "string"
        -                        },
        -                        "price_local": {
        -                          "type": "number"
        -                        },
        -                        "tier_slug": {
        -                          "enum": [
        -                            "7_day_pass",
        -                            "solo",
        -                            "studio",
        -                            "practice"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "unlock_summary": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "tier_slug",
        -                        "display_name",
        -                        "price_local",
        -                        "currency",
        -                        "billing",
        -                        "unlock_summary"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "current_tier": {
        -                    "const": "free",
        -                    "default": "free",
        -                    "type": "string"
        -                  },
        -                  "pass_credit": {
        -                    "anyOf": [
        -                      {
        -                        "additionalProperties": false,
        -                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        -                        "properties": {
        -                          "amount_local": {
        -                            "type": "number"
        -                          },
        -                          "applies_to": {
        -                            "const": "solo_first_month",
        -                            "default": "solo_first_month",
        -                            "type": "string"
        -                          },
        -                          "currency": {
        -                            "type": "string"
        -                          },
        -                          "redeemable_until": {
        -                            "type": "string"
        -                          }
        -                        },
        -                        "required": [
        -                          "amount_local",
        -                          "currency",
        -                          "redeemable_until"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "pricing_url": {
        -                    "default": "https://civilquants.com/pricing",
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "available_tiers"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tos_url": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "upgrade_hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "warranty_disclaimer": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          }
        -        },
        -        "required": [
        -          "request_id",
        -          "issued_at",
        -          "tier"
        -        ],
        -        "type": "object"
        -      },
        -      "data": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Schema § 1.1 — the typed payload returned inside `MCPResponse[ComputeResult]`.\n\nFree-tier responses MUST omit `drawings` and `audit_trail` (the bridge\nenforces this); paid-tier responses populate both. `text_summary` is\nbounded to 2000 chars — keeps the LLM-facing summary token-cheap and\nforces longer narrative into BoQ row descriptions where it belongs.\n`warnings` is the non-fatal geometry advisory list (both tiers).",
        -            "properties": {
        -              "assembly_slug": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "audit_trail": {
        -                "anyOf": [
        -                  {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.7 — paid-tier audit-trail entry.\n\nOne entry per BoQ row; `boq_row_index` ties to the row position in\n`ComputeResult.boq_rows`. `derivation` is the human-readable formula\nwalk-through; `formula` is the optional formal expression.",
        -                      "properties": {
        -                        "boq_row_index": {
        -                          "minimum": 0,
        -                          "type": "integer"
        -                        },
        -                        "derivation": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "formula": {
        -                          "anyOf": [
        -                            {
        -                              "type": "string"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ],
        -                          "default": null
        -                        },
        -                        "id": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "parameters_referenced": {
        -                          "items": {
        -                            "type": "string"
        -                          },
        -                          "type": "array"
        -                        }
        -                      },
        -                      "required": [
        -                        "id",
        -                        "boq_row_index",
        -                        "derivation"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "boq_rows": {
        -                "items": {
        -                  "additionalProperties": false,
        -                  "description": "Schema § 1.3 — a single bill row in the requested standard's format.\n\n`description` is the non-verbatim functional description per spec § 13.9 /\n§ 15 invariant — NEVER reproduces a standard's verbatim clause text.\n`rate` / `amount` ship null because rates are commodity data the customer\nowns; the engine's job is the measurement, not the pricing.",
        -                  "properties": {
        -                    "amount": {
        -                      "anyOf": [
        -                        {
        -                          "type": "number"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "attribution": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "audit_id": {
        -                      "anyOf": [
        -                        {
        -                          "type": "string"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "description": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "quantity": {
        -                      "minimum": 0,
        -                      "type": "number"
        -                    },
        -                    "rate": {
        -                      "anyOf": [
        -                        {
        -                          "type": "number"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "unit": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "work_section": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    }
        -                  },
        -                  "required": [
        -                    "work_section",
        -                    "description",
        -                    "quantity",
        -                    "unit",
        -                    "attribution"
        -                  ],
        -                  "type": "object"
        -                },
        -                "type": "array"
        -              },
        -              "drawings": {
        -                "anyOf": [
        -                  {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.6 — paid-tier drawing artefact pointer.\n\n`url` is an R2-signed URL; expiry is carried in `_meta.deliverables.expires_at`\non the envelope (not duplicated here). `layers` is DXF-only; PDF/SVG\ncallers omit it.",
        -                      "properties": {
        -                        "drawing_type": {
        -                          "enum": [
        -                            "section",
        -                            "plan",
        -                            "elevation",
        -                            "isometric",
        -                            "detail"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "format": {
        -                          "enum": [
        -                            "DXF",
        -                            "PDF",
        -                            "SVG"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "layers": {
        -                          "anyOf": [
        -                            {
        -                              "items": {
        -                                "type": "string"
        -                              },
        -                              "type": "array"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ],
        -                          "default": null
        -                        },
        -                        "scale": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "sheet_size": {
        -                          "enum": [
        -                            "A1",
        -                            "A2",
        -                            "A3",
        -                            "A4"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "url": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "drawing_type",
        -                        "format",
        -                        "url",
        -                        "sheet_size",
        -                        "scale"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "parameters_used": {
        -                "additionalProperties": false,
        -                "description": "Schema § 1.2 — the parameter snapshot the engine actually used.\n\nSplits user-supplied values from engine defaults so customers can see\nwhich numbers came from them and which the engine filled in. Every\ndefaulted parameter SHOULD have a corresponding entry in `assumptions`\n— the bridge layer enforces this when wrapping engine output.",
        -                "properties": {
        -                  "assumptions": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "engine_defaults": {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  "resolved_from_description": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "additionalProperties": false,
        -                          "description": "Schema § 1.2 — a parameter resolved by the forgiving-input layer.\n\nPopulated by the Track B-Forgiving Haiku-4.5 resolution pass; until that\nlayer lands, instances are constructed only by tests. `source` distinguishes\nthe resolution path so customers can audit which fields were inferred.",
        -                          "properties": {
        -                            "confidence": {
        -                              "anyOf": [
        -                                {
        -                                  "enum": [
        -                                    "high",
        -                                    "medium",
        -                                    "low"
        -                                  ],
        -                                  "type": "string"
        -                                },
        -                                {
        -                                  "type": "null"
        -                                }
        -                              ],
        -                              "default": null
        -                            },
        -                            "field_name": {
        -                              "minLength": 1,
        -                              "type": "string"
        -                            },
        -                            "resolved_value": {},
        -                            "source": {
        -                              "enum": [
        -                                "description_field",
        -                                "haiku_resolution",
        -                                "engine_default"
        -                              ],
        -                              "type": "string"
        -                            }
        -                          },
        -                          "required": [
        -                            "field_name",
        -                            "resolved_value",
        -                            "source"
        -                          ],
        -                          "type": "object"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "user_supplied": {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  }
        -                },
        -                "type": "object"
        -              },
        -              "standard": {
        -                "enum": [
        -                  "CESMM4",
        -                  "NRM2",
        -                  "SMM7",
        -                  "MMHW"
        -                ],
        -                "type": "string"
        -              },
        -              "text_summary": {
        -                "maxLength": 2000,
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "totals_summary": {
        -                "additionalProperties": false,
        -                "description": "Schema § 1.4 — totals_summary as a typed wrapper around the free-form dict.\n\nWire shape is a flat object (`{\"concrete_m3\": {...}, \"rebar_t\": {...}}`).\nWe model it as `RootModel`-equivalent via `model_config(extra=\"allow\")`\n+ a single `__root__`-style `entries` dict. Pydantic v2 recommends\n`RootModel` for free-form roots; using a wrapper class keeps the import\nsurface uniform with the rest of this module.",
        -                "properties": {
        -                  "entries": {
        -                    "additionalProperties": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.4 — single material/work-class total entry.",
        -                      "properties": {
        -                        "quantity": {
        -                          "minimum": 0,
        -                          "type": "number"
        -                        },
        -                        "unit": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "quantity",
        -                        "unit"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "object"
        -                  }
        -                },
        -                "type": "object"
        -              },
        -              "warnings": {
        -                "items": {
        -                  "additionalProperties": false,
        -                  "description": "Schema § 1.8 — a non-fatal geometry advisory (56th-fire T2).\n\nThe wire projection of the engine's `core.GeometryWarning`. Advisory only:\na warning NEVER changes a measured quantity — it flags geometry that is\nvalid but likely a mistake (e.g. a stale dependent-height default). Present\non BOTH tiers — a correctness/safety signal, not a paid feature.",
        -                  "properties": {
        -                    "affected_params": {
        -                      "items": {
        -                        "type": "string"
        -                      },
        -                      "type": "array"
        -                    },
        -                    "code": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "detail": {
        -                      "additionalProperties": {
        -                        "type": "number"
        -                      },
        -                      "type": "object"
        -                    },
        -                    "message": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "severity": {
        -                      "enum": [
        -                        "info",
        -                        "advisory",
        -                        "caution"
        -                      ],
        -                      "type": "string"
        -                    }
        -                  },
        -                  "required": [
        -                    "code",
        -                    "severity",
        -                    "message"
        -                  ],
        -                  "type": "object"
        -                },
        -                "type": "array"
        -              }
        -            },
        -            "required": [
        -              "assembly_slug",
        -              "standard",
        -              "parameters_used",
        -              "boq_rows",
        -              "totals_summary",
        -              "text_summary"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      },
        -      "error": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        -            "properties": {
        -              "code": {
        -                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        -                "enum": [
        -                  "RATE_LIMIT_EXCEEDED",
        -                  "TIER_INSUFFICIENT",
        -                  "INVALID_INPUT",
        -                  "SCHEMA_VERSION_MISMATCH",
        -                  "SCHEMA_INVARIANT_VIOLATION",
        -                  "UPSTREAM_TIMEOUT",
        -                  "BACKEND_FAILURE",
        -                  "IP_BLOCKED",
        -                  "RESOURCE_NOT_FOUND",
        -                  "RENDER_FAILURE",
        -                  "OCR_LOW_CONFIDENCE",
        -                  "MANUAL_REVIEW_REQUIRED",
        -                  "ACCEPTANCE_REQUIRED",
        -                  "INVALID_TOKEN"
        -                ],
        -                "type": "string"
        -              },
        -              "details": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "message": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "recoverable": {
        -                "type": "boolean"
        -              },
        -              "retry_after_seconds": {
        -                "anyOf": [
        -                  {
        -                    "minimum": 0,
        -                    "type": "integer"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              }
        -            },
        -            "required": [
        -              "code",
        -              "message",
        -              "recoverable"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      }
        -    },
        -    "required": [
        -      "_meta"
        -    ],
        -    "type": "object"
        -  },
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "_meta": {
        -        "additionalProperties": false,
        -        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        -        "properties": {
        -          "deliverables": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        -                "properties": {
        -                  "docx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "dxf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "expires_at": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  },
        -                  "pdf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "xlsx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "expires_at"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "document_id": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "issued_at": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "rate_limit_remaining": {
        -            "anyOf": [
        -              {
        -                "minimum": 0,
        -                "type": "integer"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "request_id": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "schema_version": {
        -            "const": "1.0.0",
        -            "default": "1.0.0",
        -            "type": "string"
        -          },
        -          "scope_boundary": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        -                "properties": {
        -                  "not_in_scope": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "produced": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "recommended_companions": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "type": "string"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "produced",
        -                  "not_in_scope"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tier": {
        -            "enum": [
        -              "free",
        -              "paid"
        -            ],
        -            "type": "string"
        -          },
        -          "tier_upgrade": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        -                "properties": {
        -                  "available_tiers": {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        -                      "properties": {
        -                        "billing": {
        -                          "enum": [
        -                            "one_off",
        -                            "monthly",
        -                            "annual"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "currency": {
        -                          "enum": [
        -                            "GBP",
        -                            "SGD",
        -                            "EUR",
        -                            "USD",
        -                            "CAD",
        -                            "AUD",
        -                            "NZD",
        -                            "MYR"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "display_name": {
        -                          "type": "string"
        -                        },
        -                        "price_local": {
        -                          "type": "number"
        -                        },
        -                        "tier_slug": {
        -                          "enum": [
        -                            "7_day_pass",
        -                            "solo",
        -                            "studio",
        -                            "practice"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "unlock_summary": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "tier_slug",
        -                        "display_name",
        -                        "price_local",
        -                        "currency",
        -                        "billing",
        -                        "unlock_summary"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "current_tier": {
        -                    "const": "free",
        -                    "default": "free",
        -                    "type": "string"
        -                  },
        -                  "pass_credit": {
        -                    "anyOf": [
        -                      {
        -                        "additionalProperties": false,
        -                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        -                        "properties": {
        -                          "amount_local": {
        -                            "type": "number"
        -                          },
        -                          "applies_to": {
        -                            "const": "solo_first_month",
        -                            "default": "solo_first_month",
        -                            "type": "string"
        -                          },
        -                          "currency": {
        -                            "type": "string"
        -                          },
        -                          "redeemable_until": {
        -                            "type": "string"
        -                          }
        -                        },
        -                        "required": [
        -                          "amount_local",
        -                          "currency",
        -                          "redeemable_until"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "pricing_url": {
        -                    "default": "https://civilquants.com/pricing",
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "available_tiers"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tos_url": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "upgrade_hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "warranty_disclaimer": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          }
        -        },
        -        "required": [
        -          "request_id",
        -          "issued_at",
        -          "tier"
        -        ],
        -        "type": "object"
        -      },
        -      "data": {
        -        "default": null,
        -        "title": "Data"
        -      },
        -      "error": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        -            "properties": {
        -              "code": {
        -                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        -                "enum": [
        -                  "RATE_LIMIT_EXCEEDED",
        -                  "TIER_INSUFFICIENT",
        -                  "INVALID_INPUT",
        -                  "SCHEMA_VERSION_MISMATCH",
        -                  "SCHEMA_INVARIANT_VIOLATION",
        -                  "UPSTREAM_TIMEOUT",
        -                  "BACKEND_FAILURE",
        -                  "IP_BLOCKED",
        -                  "RESOURCE_NOT_FOUND",
        -                  "RENDER_FAILURE",
        -                  "OCR_LOW_CONFIDENCE",
        -                  "MANUAL_REVIEW_REQUIRED",
        -                  "ACCEPTANCE_REQUIRED",
        -                  "INVALID_TOKEN"
        -                ],
        -                "type": "string"
        -              },
        -              "details": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "message": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "recoverable": {
        -                "type": "boolean"
        -              },
        -              "retry_after_seconds": {
        -                "anyOf": [
        -                  {
        -                    "minimum": 0,
        -                    "type": "integer"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              }
        -            },
        -            "required": [
        -              "code",
        -              "message",
        -              "recoverable"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      }
        -    },
        -    "required": [
        -      "_meta"
        -    ],
        -    "type": "object"
        -  }
        -]New value: +[
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "_meta": {
        +        "additionalProperties": false,
        +        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        +        "properties": {
        +          "deliverables": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        +                "properties": {
        +                  "docx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "dxf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "expires_at": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  },
        +                  "pdf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "xlsx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "expires_at"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "document_id": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "issued_at": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "rate_limit_remaining": {
        +            "anyOf": [
        +              {
        +                "minimum": 0,
        +                "type": "integer"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "request_id": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "schema_version": {
        +            "const": "1.0.0",
        +            "default": "1.0.0",
        +            "type": "string"
        +          },
        +          "scope_boundary": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        +                "properties": {
        +                  "not_in_scope": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "produced": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "recommended_companions": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "type": "string"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "produced",
        +                  "not_in_scope"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tier": {
        +            "enum": [
        +              "free",
        +              "paid"
        +            ],
        +            "type": "string"
        +          },
        +          "tier_upgrade": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        +                "properties": {
        +                  "available_tiers": {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        +                      "properties": {
        +                        "billing": {
        +                          "enum": [
        +                            "one_off",
        +                            "monthly",
        +                            "annual"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "currency": {
        +                          "enum": [
        +                            "GBP",
        +                            "SGD",
        +                            "EUR",
        +                            "USD",
        +                            "CAD",
        +                            "AUD",
        +                            "NZD",
        +                            "MYR"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "display_name": {
        +                          "type": "string"
        +                        },
        +                        "price_local": {
        +                          "type": "number"
        +                        },
        +                        "tier_slug": {
        +                          "enum": [
        +                            "7_day_pass",
        +                            "solo",
        +                            "studio",
        +                            "practice"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "unlock_summary": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "tier_slug",
        +                        "display_name",
        +                        "price_local",
        +                        "currency",
        +                        "billing",
        +                        "unlock_summary"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "current_tier": {
        +                    "const": "free",
        +                    "default": "free",
        +                    "type": "string"
        +                  },
        +                  "pass_credit": {
        +                    "anyOf": [
        +                      {
        +                        "additionalProperties": false,
        +                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        +                        "properties": {
        +                          "amount_local": {
        +                            "type": "number"
        +                          },
        +                          "applies_to": {
        +                            "const": "solo_first_month",
        +                            "default": "solo_first_month",
        +                            "type": "string"
        +                          },
        +                          "currency": {
        +                            "type": "string"
        +                          },
        +                          "redeemable_until": {
        +                            "type": "string"
        +                          }
        +                        },
        +                        "required": [
        +                          "amount_local",
        +                          "currency",
        +                          "redeemable_until"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "pricing_url": {
        +                    "default": "https://civilquants.com/pricing",
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "available_tiers"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tos_url": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "upgrade_hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "warranty_disclaimer": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          }
        +        },
        +        "required": [
        +          "request_id",
        +          "issued_at",
        +          "tier"
        +        ],
        +        "type": "object"
        +      },
        +      "data": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Schema § 1.1 — the typed payload returned inside `MCPResponse[ComputeResult]`.\n\nFree-tier responses omit `drawings` (the downloadable CAD artefact\npointers — the paid differentiator); the bridge enforces this. The\n`audit_trail` and the inline `drawing` preview are present on BOTH tiers\n(V1 ALIGN / 60th-fire D + C). `text_summary` is bounded to 2000 chars —\nkeeps the LLM-facing summary token-cheap and forces longer narrative into\nBoQ row descriptions where it belongs. `warnings` is the non-fatal\ngeometry advisory list (both tiers).",
        +            "properties": {
        +              "assembly_slug": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "audit_trail": {
        +                "anyOf": [
        +                  {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.7 — paid-tier audit-trail entry.\n\nOne entry per BoQ row; `boq_row_index` ties to the row position in\n`ComputeResult.boq_rows`. `derivation` is the human-readable formula\nwalk-through; `formula` is the optional formal expression.",
        +                      "properties": {
        +                        "boq_row_index": {
        +                          "minimum": 0,
        +                          "type": "integer"
        +                        },
        +                        "derivation": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "formula": {
        +                          "anyOf": [
        +                            {
        +                              "type": "string"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ],
        +                          "default": null
        +                        },
        +                        "id": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "parameters_referenced": {
        +                          "items": {
        +                            "type": "string"
        +                          },
        +                          "type": "array"
        +                        }
        +                      },
        +                      "required": [
        +                        "id",
        +                        "boq_row_index",
        +                        "derivation"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "boq_rows": {
        +                "items": {
        +                  "additionalProperties": false,
        +                  "description": "Schema § 1.3 — a single bill row in the requested standard's format.\n\n`description` is the non-verbatim functional description per spec § 13.9 /\n§ 15 invariant — NEVER reproduces a standard's verbatim clause text.\n`rate` / `amount` ship null because rates are commodity data the customer\nowns; the engine's job is the measurement, not the pricing.",
        +                  "properties": {
        +                    "amount": {
        +                      "anyOf": [
        +                        {
        +                          "type": "number"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "attribution": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "audit_id": {
        +                      "anyOf": [
        +                        {
        +                          "type": "string"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "description": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "quantity": {
        +                      "minimum": 0,
        +                      "type": "number"
        +                    },
        +                    "rate": {
        +                      "anyOf": [
        +                        {
        +                          "type": "number"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "unit": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "work_section": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    }
        +                  },
        +                  "required": [
        +                    "work_section",
        +                    "description",
        +                    "quantity",
        +                    "unit",
        +                    "attribution"
        +                  ],
        +                  "type": "object"
        +                },
        +                "type": "array"
        +              },
        +              "drawing": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": false,
        +                    "description": "Schema § 1.6a — inline server-rendered SVG preview of the geometry.\n\nThe MCP mirror of the web ``/compute`` response's ``drawing`` field\n(``api.schemas.compute.DrawingRef``): the same on-screen dimensioned\ndrawing both tiers see in the workspace, surfaced on the MCP compute\nresponse so a chat client can render it inline (60th-fire item C). This\nis the on-screen preview — present on BOTH tiers per the free/paid\nboundary; the downloadable CAD artefacts (DXF / dimensioned PDF) remain\nthe paid differentiator via the export tools.\n\nDefined here rather than importing ``DrawingRef`` because the web\n``schemas`` package imports back into this module (``schemas.render``),\nso reusing it would create an import cycle — the MCP wire contract keeps\nits own copy, the same pattern as ``BoQRow`` / ``DrawingReference``.",
        +                    "properties": {
        +                      "entity_count": {
        +                        "minimum": 0,
        +                        "type": "integer"
        +                      },
        +                      "svg_b64": {
        +                        "minLength": 1,
        +                        "type": "string"
        +                      },
        +                      "unit_of_drawing": {
        +                        "const": "m",
        +                        "default": "m",
        +                        "type": "string"
        +                      },
        +                      "viewbox_height": {
        +                        "exclusiveMinimum": 0,
        +                        "type": "number"
        +                      },
        +                      "viewbox_width": {
        +                        "exclusiveMinimum": 0,
        +                        "type": "number"
        +                      },
        +                      "viewbox_x": {
        +                        "type": "number"
        +                      },
        +                      "viewbox_y": {
        +                        "type": "number"
        +                      }
        +                    },
        +                    "required": [
        +                      "svg_b64",
        +                      "viewbox_x",
        +                      "viewbox_y",
        +                      "viewbox_width",
        +                      "viewbox_height",
        +                      "entity_count"
        +                    ],
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "drawings": {
        +                "anyOf": [
        +                  {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.6 — paid-tier drawing artefact pointer.\n\n`url` is an R2-signed URL; expiry is carried in `_meta.deliverables.expires_at`\non the envelope (not duplicated here). `layers` is DXF-only; PDF/SVG\ncallers omit it.",
        +                      "properties": {
        +                        "drawing_type": {
        +                          "enum": [
        +                            "section",
        +                            "plan",
        +                            "elevation",
        +                            "isometric",
        +                            "detail"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "format": {
        +                          "enum": [
        +                            "DXF",
        +                            "PDF",
        +                            "SVG"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "layers": {
        +                          "anyOf": [
        +                            {
        +                              "items": {
        +                                "type": "string"
        +                              },
        +                              "type": "array"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ],
        +                          "default": null
        +                        },
        +                        "scale": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "sheet_size": {
        +                          "enum": [
        +                            "A1",
        +                            "A2",
        +                            "A3",
        +                            "A4"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "url": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "drawing_type",
        +                        "format",
        +                        "url",
        +                        "sheet_size",
        +                        "scale"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "parameters_used": {
        +                "additionalProperties": false,
        +                "description": "Schema § 1.2 — the parameter snapshot the engine actually used.\n\nSplits user-supplied values from engine defaults so customers can see\nwhich numbers came from them and which the engine filled in. Every\ndefaulted parameter SHOULD have a corresponding entry in `assumptions`\n— the bridge layer enforces this when wrapping engine output.",
        +                "properties": {
        +                  "assumptions": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "engine_defaults": {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  "resolved_from_description": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "additionalProperties": false,
        +                          "description": "Schema § 1.2 — a parameter resolved by the forgiving-input layer.\n\nPopulated by the Track B-Forgiving Haiku-4.5 resolution pass; until that\nlayer lands, instances are constructed only by tests. `source` distinguishes\nthe resolution path so customers can audit which fields were inferred.",
        +                          "properties": {
        +                            "confidence": {
        +                              "anyOf": [
        +                                {
        +                                  "enum": [
        +                                    "high",
        +                                    "medium",
        +                                    "low"
        +                                  ],
        +                                  "type": "string"
        +                                },
        +                                {
        +                                  "type": "null"
        +                                }
        +                              ],
        +                              "default": null
        +                            },
        +                            "field_name": {
        +                              "minLength": 1,
        +                              "type": "string"
        +                            },
        +                            "resolved_value": {},
        +                            "source": {
        +                              "enum": [
        +                                "description_field",
        +                                "haiku_resolution",
        +                                "engine_default"
        +                              ],
        +                              "type": "string"
        +                            }
        +                          },
        +                          "required": [
        +                            "field_name",
        +                            "resolved_value",
        +                            "source"
        +                          ],
        +                          "type": "object"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "user_supplied": {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  }
        +                },
        +                "type": "object"
        +              },
        +              "standard": {
        +                "enum": [
        +                  "CESMM4",
        +                  "NRM2",
        +                  "SMM7",
        +                  "MMHW"
        +                ],
        +                "type": "string"
        +              },
        +              "text_summary": {
        +                "maxLength": 2000,
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "totals_summary": {
        +                "additionalProperties": false,
        +                "description": "Schema § 1.4 — totals_summary as a typed wrapper around the free-form dict.\n\nWire shape is a flat object (`{\"concrete_m3\": {...}, \"rebar_t\": {...}}`).\nWe model it as `RootModel`-equivalent via `model_config(extra=\"allow\")`\n+ a single `__root__`-style `entries` dict. Pydantic v2 recommends\n`RootModel` for free-form roots; using a wrapper class keeps the import\nsurface uniform with the rest of this module.",
        +                "properties": {
        +                  "entries": {
        +                    "additionalProperties": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.4 — single material/work-class total entry.",
        +                      "properties": {
        +                        "quantity": {
        +                          "minimum": 0,
        +                          "type": "number"
        +                        },
        +                        "unit": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "quantity",
        +                        "unit"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "object"
        +                  }
        +                },
        +                "type": "object"
        +              },
        +              "warnings": {
        +                "items": {
        +                  "additionalProperties": false,
        +                  "description": "Schema § 1.8 — a non-fatal geometry advisory (56th-fire T2).\n\nThe wire projection of the engine's `core.GeometryWarning`. Advisory only:\na warning NEVER changes a measured quantity — it flags geometry that is\nvalid but likely a mistake (e.g. a stale dependent-height default). Present\non BOTH tiers — a correctness/safety signal, not a paid feature.",
        +                  "properties": {
        +                    "affected_params": {
        +                      "items": {
        +                        "type": "string"
        +                      },
        +                      "type": "array"
        +                    },
        +                    "code": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "detail": {
        +                      "additionalProperties": {
        +                        "type": "number"
        +                      },
        +                      "type": "object"
        +                    },
        +                    "message": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "severity": {
        +                      "enum": [
        +                        "info",
        +                        "advisory",
        +                        "caution"
        +                      ],
        +                      "type": "string"
        +                    }
        +                  },
        +                  "required": [
        +                    "code",
        +                    "severity",
        +                    "message"
        +                  ],
        +                  "type": "object"
        +                },
        +                "type": "array"
        +              }
        +            },
        +            "required": [
        +              "assembly_slug",
        +              "standard",
        +              "parameters_used",
        +              "boq_rows",
        +              "totals_summary",
        +              "text_summary"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      },
        +      "error": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        +            "properties": {
        +              "code": {
        +                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        +                "enum": [
        +                  "RATE_LIMIT_EXCEEDED",
        +                  "TIER_INSUFFICIENT",
        +                  "INVALID_INPUT",
        +                  "SCHEMA_VERSION_MISMATCH",
        +                  "SCHEMA_INVARIANT_VIOLATION",
        +                  "UPSTREAM_TIMEOUT",
        +                  "BACKEND_FAILURE",
        +                  "IP_BLOCKED",
        +                  "RESOURCE_NOT_FOUND",
        +                  "RENDER_FAILURE",
        +                  "OCR_LOW_CONFIDENCE",
        +                  "MANUAL_REVIEW_REQUIRED",
        +                  "ACCEPTANCE_REQUIRED",
        +                  "INVALID_TOKEN"
        +                ],
        +                "type": "string"
        +              },
        +              "details": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "message": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "recoverable": {
        +                "type": "boolean"
        +              },
        +              "retry_after_seconds": {
        +                "anyOf": [
        +                  {
        +                    "minimum": 0,
        +                    "type": "integer"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              }
        +            },
        +            "required": [
        +              "code",
        +              "message",
        +              "recoverable"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      }
        +    },
        +    "required": [
        +      "_meta"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "_meta": {
        +        "additionalProperties": false,
        +        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        +        "properties": {
        +          "deliverables": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        +                "properties": {
        +                  "docx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "dxf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "expires_at": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  },
        +                  "pdf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "xlsx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "expires_at"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "document_id": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "issued_at": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "rate_limit_remaining": {
        +            "anyOf": [
        +              {
        +                "minimum": 0,
        +                "type": "integer"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "request_id": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "schema_version": {
        +            "const": "1.0.0",
        +            "default": "1.0.0",
        +            "type": "string"
        +          },
        +          "scope_boundary": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        +                "properties": {
        +                  "not_in_scope": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "produced": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "recommended_companions": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "type": "string"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "produced",
        +                  "not_in_scope"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tier": {
        +            "enum": [
        +              "free",
        +              "paid"
        +            ],
        +            "type": "string"
        +          },
        +          "tier_upgrade": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        +                "properties": {
        +                  "available_tiers": {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        +                      "properties": {
        +                        "billing": {
        +                          "enum": [
        +                            "one_off",
        +                            "monthly",
        +                            "annual"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "currency": {
        +                          "enum": [
        +                            "GBP",
        +                            "SGD",
        +                            "EUR",
        +                            "USD",
        +                            "CAD",
        +                            "AUD",
        +                            "NZD",
        +                            "MYR"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "display_name": {
        +                          "type": "string"
        +                        },
        +                        "price_local": {
        +                          "type": "number"
        +                        },
        +                        "tier_slug": {
        +                          "enum": [
        +                            "7_day_pass",
        +                            "solo",
        +                            "studio",
        +                            "practice"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "unlock_summary": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "tier_slug",
        +                        "display_name",
        +                        "price_local",
        +                        "currency",
        +                        "billing",
        +                        "unlock_summary"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "current_tier": {
        +                    "const": "free",
        +                    "default": "free",
        +                    "type": "string"
        +                  },
        +                  "pass_credit": {
        +                    "anyOf": [
        +                      {
        +                        "additionalProperties": false,
        +                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        +                        "properties": {
        +                          "amount_local": {
        +                            "type": "number"
        +                          },
        +                          "applies_to": {
        +                            "const": "solo_first_month",
        +                            "default": "solo_first_month",
        +                            "type": "string"
        +                          },
        +                          "currency": {
        +                            "type": "string"
        +                          },
        +                          "redeemable_until": {
        +                            "type": "string"
        +                          }
        +                        },
        +                        "required": [
        +                          "amount_local",
        +                          "currency",
        +                          "redeemable_until"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "pricing_url": {
        +                    "default": "https://civilquants.com/pricing",
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "available_tiers"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tos_url": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "upgrade_hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "warranty_disclaimer": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          }
        +        },
        +        "required": [
        +          "request_id",
        +          "issued_at",
        +          "tier"
        +        ],
        +        "type": "object"
        +      },
        +      "data": {
        +        "default": null,
        +        "title": "Data"
        +      },
        +      "error": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        +            "properties": {
        +              "code": {
        +                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        +                "enum": [
        +                  "RATE_LIMIT_EXCEEDED",
        +                  "TIER_INSUFFICIENT",
        +                  "INVALID_INPUT",
        +                  "SCHEMA_VERSION_MISMATCH",
        +                  "SCHEMA_INVARIANT_VIOLATION",
        +                  "UPSTREAM_TIMEOUT",
        +                  "BACKEND_FAILURE",
        +                  "IP_BLOCKED",
        +                  "RESOURCE_NOT_FOUND",
        +                  "RENDER_FAILURE",
        +                  "OCR_LOW_CONFIDENCE",
        +                  "MANUAL_REVIEW_REQUIRED",
        +                  "ACCEPTANCE_REQUIRED",
        +                  "INVALID_TOKEN"
        +                ],
        +                "type": "string"
        +              },
        +              "details": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "message": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "recoverable": {
        +                "type": "boolean"
        +              },
        +              "retry_after_seconds": {
        +                "anyOf": [
        +                  {
        +                    "minimum": 0,
        +                    "type": "integer"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              }
        +            },
        +            "required": [
        +              "code",
        +              "message",
        +              "recoverable"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      }
        +    },
        +    "required": [
        +      "_meta"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedcompute_bored_pile_wall3 fields changed
      • addedInput schema / properties / deliverables
        Added value: +{
        +  "anyOf": [
        +    {
        +      "items": {
        +        "const": "xlsx",
        +        "type": "string"
        +      },
        +      "type": "array"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null
        +}
      • addedInput schema / properties / output_mode
        Added value: +{
        +  "default": "full_json",
        +  "enum": [
        +    "summary",
        +    "boq",
        +    "boq_with_backup",
        +    "full_json"
        +  ],
        +  "type": "string"
        +}
      • changedOutput schema / properties / result / anyOf
        Previous value: -[
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "_meta": {
        -        "additionalProperties": false,
        -        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        -        "properties": {
        -          "deliverables": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        -                "properties": {
        -                  "docx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "dxf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "expires_at": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  },
        -                  "pdf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "xlsx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "expires_at"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "document_id": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "issued_at": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "rate_limit_remaining": {
        -            "anyOf": [
        -              {
        -                "minimum": 0,
        -                "type": "integer"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "request_id": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "schema_version": {
        -            "const": "1.0.0",
        -            "default": "1.0.0",
        -            "type": "string"
        -          },
        -          "scope_boundary": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        -                "properties": {
        -                  "not_in_scope": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "produced": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "recommended_companions": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "type": "string"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "produced",
        -                  "not_in_scope"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tier": {
        -            "enum": [
        -              "free",
        -              "paid"
        -            ],
        -            "type": "string"
        -          },
        -          "tier_upgrade": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        -                "properties": {
        -                  "available_tiers": {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        -                      "properties": {
        -                        "billing": {
        -                          "enum": [
        -                            "one_off",
        -                            "monthly",
        -                            "annual"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "currency": {
        -                          "enum": [
        -                            "GBP",
        -                            "SGD",
        -                            "EUR",
        -                            "USD",
        -                            "CAD",
        -                            "AUD",
        -                            "NZD",
        -                            "MYR"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "display_name": {
        -                          "type": "string"
        -                        },
        -                        "price_local": {
        -                          "type": "number"
        -                        },
        -                        "tier_slug": {
        -                          "enum": [
        -                            "7_day_pass",
        -                            "solo",
        -                            "studio",
        -                            "practice"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "unlock_summary": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "tier_slug",
        -                        "display_name",
        -                        "price_local",
        -                        "currency",
        -                        "billing",
        -                        "unlock_summary"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "current_tier": {
        -                    "const": "free",
        -                    "default": "free",
        -                    "type": "string"
        -                  },
        -                  "pass_credit": {
        -                    "anyOf": [
        -                      {
        -                        "additionalProperties": false,
        -                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        -                        "properties": {
        -                          "amount_local": {
        -                            "type": "number"
        -                          },
        -                          "applies_to": {
        -                            "const": "solo_first_month",
        -                            "default": "solo_first_month",
        -                            "type": "string"
        -                          },
        -                          "currency": {
        -                            "type": "string"
        -                          },
        -                          "redeemable_until": {
        -                            "type": "string"
        -                          }
        -                        },
        -                        "required": [
        -                          "amount_local",
        -                          "currency",
        -                          "redeemable_until"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "pricing_url": {
        -                    "default": "https://civilquants.com/pricing",
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "available_tiers"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tos_url": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "upgrade_hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "warranty_disclaimer": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          }
        -        },
        -        "required": [
        -          "request_id",
        -          "issued_at",
        -          "tier"
        -        ],
        -        "type": "object"
        -      },
        -      "data": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Schema § 1.1 — the typed payload returned inside `MCPResponse[ComputeResult]`.\n\nFree-tier responses MUST omit `drawings` and `audit_trail` (the bridge\nenforces this); paid-tier responses populate both. `text_summary` is\nbounded to 2000 chars — keeps the LLM-facing summary token-cheap and\nforces longer narrative into BoQ row descriptions where it belongs.\n`warnings` is the non-fatal geometry advisory list (both tiers).",
        -            "properties": {
        -              "assembly_slug": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "audit_trail": {
        -                "anyOf": [
        -                  {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.7 — paid-tier audit-trail entry.\n\nOne entry per BoQ row; `boq_row_index` ties to the row position in\n`ComputeResult.boq_rows`. `derivation` is the human-readable formula\nwalk-through; `formula` is the optional formal expression.",
        -                      "properties": {
        -                        "boq_row_index": {
        -                          "minimum": 0,
        -                          "type": "integer"
        -                        },
        -                        "derivation": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "formula": {
        -                          "anyOf": [
        -                            {
        -                              "type": "string"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ],
        -                          "default": null
        -                        },
        -                        "id": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "parameters_referenced": {
        -                          "items": {
        -                            "type": "string"
        -                          },
        -                          "type": "array"
        -                        }
        -                      },
        -                      "required": [
        -                        "id",
        -                        "boq_row_index",
        -                        "derivation"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "boq_rows": {
        -                "items": {
        -                  "additionalProperties": false,
        -                  "description": "Schema § 1.3 — a single bill row in the requested standard's format.\n\n`description` is the non-verbatim functional description per spec § 13.9 /\n§ 15 invariant — NEVER reproduces a standard's verbatim clause text.\n`rate` / `amount` ship null because rates are commodity data the customer\nowns; the engine's job is the measurement, not the pricing.",
        -                  "properties": {
        -                    "amount": {
        -                      "anyOf": [
        -                        {
        -                          "type": "number"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "attribution": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "audit_id": {
        -                      "anyOf": [
        -                        {
        -                          "type": "string"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "description": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "quantity": {
        -                      "minimum": 0,
        -                      "type": "number"
        -                    },
        -                    "rate": {
        -                      "anyOf": [
        -                        {
        -                          "type": "number"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "unit": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "work_section": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    }
        -                  },
        -                  "required": [
        -                    "work_section",
        -                    "description",
        -                    "quantity",
        -                    "unit",
        -                    "attribution"
        -                  ],
        -                  "type": "object"
        -                },
        -                "type": "array"
        -              },
        -              "drawings": {
        -                "anyOf": [
        -                  {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.6 — paid-tier drawing artefact pointer.\n\n`url` is an R2-signed URL; expiry is carried in `_meta.deliverables.expires_at`\non the envelope (not duplicated here). `layers` is DXF-only; PDF/SVG\ncallers omit it.",
        -                      "properties": {
        -                        "drawing_type": {
        -                          "enum": [
        -                            "section",
        -                            "plan",
        -                            "elevation",
        -                            "isometric",
        -                            "detail"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "format": {
        -                          "enum": [
        -                            "DXF",
        -                            "PDF",
        -                            "SVG"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "layers": {
        -                          "anyOf": [
        -                            {
        -                              "items": {
        -                                "type": "string"
        -                              },
        -                              "type": "array"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ],
        -                          "default": null
        -                        },
        -                        "scale": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "sheet_size": {
        -                          "enum": [
        -                            "A1",
        -                            "A2",
        -                            "A3",
        -                            "A4"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "url": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "drawing_type",
        -                        "format",
        -                        "url",
        -                        "sheet_size",
        -                        "scale"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "parameters_used": {
        -                "additionalProperties": false,
        -                "description": "Schema § 1.2 — the parameter snapshot the engine actually used.\n\nSplits user-supplied values from engine defaults so customers can see\nwhich numbers came from them and which the engine filled in. Every\ndefaulted parameter SHOULD have a corresponding entry in `assumptions`\n— the bridge layer enforces this when wrapping engine output.",
        -                "properties": {
        -                  "assumptions": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "engine_defaults": {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  "resolved_from_description": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "additionalProperties": false,
        -                          "description": "Schema § 1.2 — a parameter resolved by the forgiving-input layer.\n\nPopulated by the Track B-Forgiving Haiku-4.5 resolution pass; until that\nlayer lands, instances are constructed only by tests. `source` distinguishes\nthe resolution path so customers can audit which fields were inferred.",
        -                          "properties": {
        -                            "confidence": {
        -                              "anyOf": [
        -                                {
        -                                  "enum": [
        -                                    "high",
        -                                    "medium",
        -                                    "low"
        -                                  ],
        -                                  "type": "string"
        -                                },
        -                                {
        -                                  "type": "null"
        -                                }
        -                              ],
        -                              "default": null
        -                            },
        -                            "field_name": {
        -                              "minLength": 1,
        -                              "type": "string"
        -                            },
        -                            "resolved_value": {},
        -                            "source": {
        -                              "enum": [
        -                                "description_field",
        -                                "haiku_resolution",
        -                                "engine_default"
        -                              ],
        -                              "type": "string"
        -                            }
        -                          },
        -                          "required": [
        -                            "field_name",
        -                            "resolved_value",
        -                            "source"
        -                          ],
        -                          "type": "object"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "user_supplied": {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  }
        -                },
        -                "type": "object"
        -              },
        -              "standard": {
        -                "enum": [
        -                  "CESMM4",
        -                  "NRM2",
        -                  "SMM7",
        -                  "MMHW"
        -                ],
        -                "type": "string"
        -              },
        -              "text_summary": {
        -                "maxLength": 2000,
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "totals_summary": {
        -                "additionalProperties": false,
        -                "description": "Schema § 1.4 — totals_summary as a typed wrapper around the free-form dict.\n\nWire shape is a flat object (`{\"concrete_m3\": {...}, \"rebar_t\": {...}}`).\nWe model it as `RootModel`-equivalent via `model_config(extra=\"allow\")`\n+ a single `__root__`-style `entries` dict. Pydantic v2 recommends\n`RootModel` for free-form roots; using a wrapper class keeps the import\nsurface uniform with the rest of this module.",
        -                "properties": {
        -                  "entries": {
        -                    "additionalProperties": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.4 — single material/work-class total entry.",
        -                      "properties": {
        -                        "quantity": {
        -                          "minimum": 0,
        -                          "type": "number"
        -                        },
        -                        "unit": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "quantity",
        -                        "unit"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "object"
        -                  }
        -                },
        -                "type": "object"
        -              },
        -              "warnings": {
        -                "items": {
        -                  "additionalProperties": false,
        -                  "description": "Schema § 1.8 — a non-fatal geometry advisory (56th-fire T2).\n\nThe wire projection of the engine's `core.GeometryWarning`. Advisory only:\na warning NEVER changes a measured quantity — it flags geometry that is\nvalid but likely a mistake (e.g. a stale dependent-height default). Present\non BOTH tiers — a correctness/safety signal, not a paid feature.",
        -                  "properties": {
        -                    "affected_params": {
        -                      "items": {
        -                        "type": "string"
        -                      },
        -                      "type": "array"
        -                    },
        -                    "code": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "detail": {
        -                      "additionalProperties": {
        -                        "type": "number"
        -                      },
        -                      "type": "object"
        -                    },
        -                    "message": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "severity": {
        -                      "enum": [
        -                        "info",
        -                        "advisory",
        -                        "caution"
        -                      ],
        -                      "type": "string"
        -                    }
        -                  },
        -                  "required": [
        -                    "code",
        -                    "severity",
        -                    "message"
        -                  ],
        -                  "type": "object"
        -                },
        -                "type": "array"
        -              }
        -            },
        -            "required": [
        -              "assembly_slug",
        -              "standard",
        -              "parameters_used",
        -              "boq_rows",
        -              "totals_summary",
        -              "text_summary"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      },
        -      "error": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        -            "properties": {
        -              "code": {
        -                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        -                "enum": [
        -                  "RATE_LIMIT_EXCEEDED",
        -                  "TIER_INSUFFICIENT",
        -                  "INVALID_INPUT",
        -                  "SCHEMA_VERSION_MISMATCH",
        -                  "SCHEMA_INVARIANT_VIOLATION",
        -                  "UPSTREAM_TIMEOUT",
        -                  "BACKEND_FAILURE",
        -                  "IP_BLOCKED",
        -                  "RESOURCE_NOT_FOUND",
        -                  "RENDER_FAILURE",
        -                  "OCR_LOW_CONFIDENCE",
        -                  "MANUAL_REVIEW_REQUIRED",
        -                  "ACCEPTANCE_REQUIRED",
        -                  "INVALID_TOKEN"
        -                ],
        -                "type": "string"
        -              },
        -              "details": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "message": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "recoverable": {
        -                "type": "boolean"
        -              },
        -              "retry_after_seconds": {
        -                "anyOf": [
        -                  {
        -                    "minimum": 0,
        -                    "type": "integer"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              }
        -            },
        -            "required": [
        -              "code",
        -              "message",
        -              "recoverable"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      }
        -    },
        -    "required": [
        -      "_meta"
        -    ],
        -    "type": "object"
        -  },
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "_meta": {
        -        "additionalProperties": false,
        -        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        -        "properties": {
        -          "deliverables": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        -                "properties": {
        -                  "docx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "dxf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "expires_at": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  },
        -                  "pdf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "xlsx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "expires_at"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "document_id": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "issued_at": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "rate_limit_remaining": {
        -            "anyOf": [
        -              {
        -                "minimum": 0,
        -                "type": "integer"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "request_id": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "schema_version": {
        -            "const": "1.0.0",
        -            "default": "1.0.0",
        -            "type": "string"
        -          },
        -          "scope_boundary": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        -                "properties": {
        -                  "not_in_scope": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "produced": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "recommended_companions": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "type": "string"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "produced",
        -                  "not_in_scope"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tier": {
        -            "enum": [
        -              "free",
        -              "paid"
        -            ],
        -            "type": "string"
        -          },
        -          "tier_upgrade": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        -                "properties": {
        -                  "available_tiers": {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        -                      "properties": {
        -                        "billing": {
        -                          "enum": [
        -                            "one_off",
        -                            "monthly",
        -                            "annual"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "currency": {
        -                          "enum": [
        -                            "GBP",
        -                            "SGD",
        -                            "EUR",
        -                            "USD",
        -                            "CAD",
        -                            "AUD",
        -                            "NZD",
        -                            "MYR"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "display_name": {
        -                          "type": "string"
        -                        },
        -                        "price_local": {
        -                          "type": "number"
        -                        },
        -                        "tier_slug": {
        -                          "enum": [
        -                            "7_day_pass",
        -                            "solo",
        -                            "studio",
        -                            "practice"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "unlock_summary": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "tier_slug",
        -                        "display_name",
        -                        "price_local",
        -                        "currency",
        -                        "billing",
        -                        "unlock_summary"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "current_tier": {
        -                    "const": "free",
        -                    "default": "free",
        -                    "type": "string"
        -                  },
        -                  "pass_credit": {
        -                    "anyOf": [
        -                      {
        -                        "additionalProperties": false,
        -                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        -                        "properties": {
        -                          "amount_local": {
        -                            "type": "number"
        -                          },
        -                          "applies_to": {
        -                            "const": "solo_first_month",
        -                            "default": "solo_first_month",
        -                            "type": "string"
        -                          },
        -                          "currency": {
        -                            "type": "string"
        -                          },
        -                          "redeemable_until": {
        -                            "type": "string"
        -                          }
        -                        },
        -                        "required": [
        -                          "amount_local",
        -                          "currency",
        -                          "redeemable_until"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "pricing_url": {
        -                    "default": "https://civilquants.com/pricing",
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "available_tiers"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tos_url": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "upgrade_hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "warranty_disclaimer": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          }
        -        },
        -        "required": [
        -          "request_id",
        -          "issued_at",
        -          "tier"
        -        ],
        -        "type": "object"
        -      },
        -      "data": {
        -        "default": null,
        -        "title": "Data"
        -      },
        -      "error": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        -            "properties": {
        -              "code": {
        -                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        -                "enum": [
        -                  "RATE_LIMIT_EXCEEDED",
        -                  "TIER_INSUFFICIENT",
        -                  "INVALID_INPUT",
        -                  "SCHEMA_VERSION_MISMATCH",
        -                  "SCHEMA_INVARIANT_VIOLATION",
        -                  "UPSTREAM_TIMEOUT",
        -                  "BACKEND_FAILURE",
        -                  "IP_BLOCKED",
        -                  "RESOURCE_NOT_FOUND",
        -                  "RENDER_FAILURE",
        -                  "OCR_LOW_CONFIDENCE",
        -                  "MANUAL_REVIEW_REQUIRED",
        -                  "ACCEPTANCE_REQUIRED",
        -                  "INVALID_TOKEN"
        -                ],
        -                "type": "string"
        -              },
        -              "details": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "message": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "recoverable": {
        -                "type": "boolean"
        -              },
        -              "retry_after_seconds": {
        -                "anyOf": [
        -                  {
        -                    "minimum": 0,
        -                    "type": "integer"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              }
        -            },
        -            "required": [
        -              "code",
        -              "message",
        -              "recoverable"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      }
        -    },
        -    "required": [
        -      "_meta"
        -    ],
        -    "type": "object"
        -  }
        -]New value: +[
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "_meta": {
        +        "additionalProperties": false,
        +        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        +        "properties": {
        +          "deliverables": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        +                "properties": {
        +                  "docx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "dxf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "expires_at": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  },
        +                  "pdf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "xlsx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "expires_at"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "document_id": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "issued_at": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "rate_limit_remaining": {
        +            "anyOf": [
        +              {
        +                "minimum": 0,
        +                "type": "integer"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "request_id": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "schema_version": {
        +            "const": "1.0.0",
        +            "default": "1.0.0",
        +            "type": "string"
        +          },
        +          "scope_boundary": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        +                "properties": {
        +                  "not_in_scope": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "produced": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "recommended_companions": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "type": "string"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "produced",
        +                  "not_in_scope"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tier": {
        +            "enum": [
        +              "free",
        +              "paid"
        +            ],
        +            "type": "string"
        +          },
        +          "tier_upgrade": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        +                "properties": {
        +                  "available_tiers": {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        +                      "properties": {
        +                        "billing": {
        +                          "enum": [
        +                            "one_off",
        +                            "monthly",
        +                            "annual"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "currency": {
        +                          "enum": [
        +                            "GBP",
        +                            "SGD",
        +                            "EUR",
        +                            "USD",
        +                            "CAD",
        +                            "AUD",
        +                            "NZD",
        +                            "MYR"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "display_name": {
        +                          "type": "string"
        +                        },
        +                        "price_local": {
        +                          "type": "number"
        +                        },
        +                        "tier_slug": {
        +                          "enum": [
        +                            "7_day_pass",
        +                            "solo",
        +                            "studio",
        +                            "practice"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "unlock_summary": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "tier_slug",
        +                        "display_name",
        +                        "price_local",
        +                        "currency",
        +                        "billing",
        +                        "unlock_summary"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "current_tier": {
        +                    "const": "free",
        +                    "default": "free",
        +                    "type": "string"
        +                  },
        +                  "pass_credit": {
        +                    "anyOf": [
        +                      {
        +                        "additionalProperties": false,
        +                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        +                        "properties": {
        +                          "amount_local": {
        +                            "type": "number"
        +                          },
        +                          "applies_to": {
        +                            "const": "solo_first_month",
        +                            "default": "solo_first_month",
        +                            "type": "string"
        +                          },
        +                          "currency": {
        +                            "type": "string"
        +                          },
        +                          "redeemable_until": {
        +                            "type": "string"
        +                          }
        +                        },
        +                        "required": [
        +                          "amount_local",
        +                          "currency",
        +                          "redeemable_until"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "pricing_url": {
        +                    "default": "https://civilquants.com/pricing",
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "available_tiers"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tos_url": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "upgrade_hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "warranty_disclaimer": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          }
        +        },
        +        "required": [
        +          "request_id",
        +          "issued_at",
        +          "tier"
        +        ],
        +        "type": "object"
        +      },
        +      "data": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Schema § 1.1 — the typed payload returned inside `MCPResponse[ComputeResult]`.\n\nFree-tier responses omit `drawings` (the downloadable CAD artefact\npointers — the paid differentiator); the bridge enforces this. The\n`audit_trail` and the inline `drawing` preview are present on BOTH tiers\n(V1 ALIGN / 60th-fire D + C). `text_summary` is bounded to 2000 chars —\nkeeps the LLM-facing summary token-cheap and forces longer narrative into\nBoQ row descriptions where it belongs. `warnings` is the non-fatal\ngeometry advisory list (both tiers).",
        +            "properties": {
        +              "assembly_slug": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "audit_trail": {
        +                "anyOf": [
        +                  {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.7 — paid-tier audit-trail entry.\n\nOne entry per BoQ row; `boq_row_index` ties to the row position in\n`ComputeResult.boq_rows`. `derivation` is the human-readable formula\nwalk-through; `formula` is the optional formal expression.",
        +                      "properties": {
        +                        "boq_row_index": {
        +                          "minimum": 0,
        +                          "type": "integer"
        +                        },
        +                        "derivation": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "formula": {
        +                          "anyOf": [
        +                            {
        +                              "type": "string"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ],
        +                          "default": null
        +                        },
        +                        "id": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "parameters_referenced": {
        +                          "items": {
        +                            "type": "string"
        +                          },
        +                          "type": "array"
        +                        }
        +                      },
        +                      "required": [
        +                        "id",
        +                        "boq_row_index",
        +                        "derivation"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "boq_rows": {
        +                "items": {
        +                  "additionalProperties": false,
        +                  "description": "Schema § 1.3 — a single bill row in the requested standard's format.\n\n`description` is the non-verbatim functional description per spec § 13.9 /\n§ 15 invariant — NEVER reproduces a standard's verbatim clause text.\n`rate` / `amount` ship null because rates are commodity data the customer\nowns; the engine's job is the measurement, not the pricing.",
        +                  "properties": {
        +                    "amount": {
        +                      "anyOf": [
        +                        {
        +                          "type": "number"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "attribution": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "audit_id": {
        +                      "anyOf": [
        +                        {
        +                          "type": "string"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "description": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "quantity": {
        +                      "minimum": 0,
        +                      "type": "number"
        +                    },
        +                    "rate": {
        +                      "anyOf": [
        +                        {
        +                          "type": "number"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "unit": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "work_section": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    }
        +                  },
        +                  "required": [
        +                    "work_section",
        +                    "description",
        +                    "quantity",
        +                    "unit",
        +                    "attribution"
        +                  ],
        +                  "type": "object"
        +                },
        +                "type": "array"
        +              },
        +              "drawing": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": false,
        +                    "description": "Schema § 1.6a — inline server-rendered SVG preview of the geometry.\n\nThe MCP mirror of the web ``/compute`` response's ``drawing`` field\n(``api.schemas.compute.DrawingRef``): the same on-screen dimensioned\ndrawing both tiers see in the workspace, surfaced on the MCP compute\nresponse so a chat client can render it inline (60th-fire item C). This\nis the on-screen preview — present on BOTH tiers per the free/paid\nboundary; the downloadable CAD artefacts (DXF / dimensioned PDF) remain\nthe paid differentiator via the export tools.\n\nDefined here rather than importing ``DrawingRef`` because the web\n``schemas`` package imports back into this module (``schemas.render``),\nso reusing it would create an import cycle — the MCP wire contract keeps\nits own copy, the same pattern as ``BoQRow`` / ``DrawingReference``.",
        +                    "properties": {
        +                      "entity_count": {
        +                        "minimum": 0,
        +                        "type": "integer"
        +                      },
        +                      "svg_b64": {
        +                        "minLength": 1,
        +                        "type": "string"
        +                      },
        +                      "unit_of_drawing": {
        +                        "const": "m",
        +                        "default": "m",
        +                        "type": "string"
        +                      },
        +                      "viewbox_height": {
        +                        "exclusiveMinimum": 0,
        +                        "type": "number"
        +                      },
        +                      "viewbox_width": {
        +                        "exclusiveMinimum": 0,
        +                        "type": "number"
        +                      },
        +                      "viewbox_x": {
        +                        "type": "number"
        +                      },
        +                      "viewbox_y": {
        +                        "type": "number"
        +                      }
        +                    },
        +                    "required": [
        +                      "svg_b64",
        +                      "viewbox_x",
        +                      "viewbox_y",
        +                      "viewbox_width",
        +                      "viewbox_height",
        +                      "entity_count"
        +                    ],
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "drawings": {
        +                "anyOf": [
        +                  {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.6 — paid-tier drawing artefact pointer.\n\n`url` is an R2-signed URL; expiry is carried in `_meta.deliverables.expires_at`\non the envelope (not duplicated here). `layers` is DXF-only; PDF/SVG\ncallers omit it.",
        +                      "properties": {
        +                        "drawing_type": {
        +                          "enum": [
        +                            "section",
        +                            "plan",
        +                            "elevation",
        +                            "isometric",
        +                            "detail"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "format": {
        +                          "enum": [
        +                            "DXF",
        +                            "PDF",
        +                            "SVG"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "layers": {
        +                          "anyOf": [
        +                            {
        +                              "items": {
        +                                "type": "string"
        +                              },
        +                              "type": "array"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ],
        +                          "default": null
        +                        },
        +                        "scale": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "sheet_size": {
        +                          "enum": [
        +                            "A1",
        +                            "A2",
        +                            "A3",
        +                            "A4"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "url": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "drawing_type",
        +                        "format",
        +                        "url",
        +                        "sheet_size",
        +                        "scale"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "parameters_used": {
        +                "additionalProperties": false,
        +                "description": "Schema § 1.2 — the parameter snapshot the engine actually used.\n\nSplits user-supplied values from engine defaults so customers can see\nwhich numbers came from them and which the engine filled in. Every\ndefaulted parameter SHOULD have a corresponding entry in `assumptions`\n— the bridge layer enforces this when wrapping engine output.",
        +                "properties": {
        +                  "assumptions": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "engine_defaults": {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  "resolved_from_description": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "additionalProperties": false,
        +                          "description": "Schema § 1.2 — a parameter resolved by the forgiving-input layer.\n\nPopulated by the Track B-Forgiving Haiku-4.5 resolution pass; until that\nlayer lands, instances are constructed only by tests. `source` distinguishes\nthe resolution path so customers can audit which fields were inferred.",
        +                          "properties": {
        +                            "confidence": {
        +                              "anyOf": [
        +                                {
        +                                  "enum": [
        +                                    "high",
        +                                    "medium",
        +                                    "low"
        +                                  ],
        +                                  "type": "string"
        +                                },
        +                                {
        +                                  "type": "null"
        +                                }
        +                              ],
        +                              "default": null
        +                            },
        +                            "field_name": {
        +                              "minLength": 1,
        +                              "type": "string"
        +                            },
        +                            "resolved_value": {},
        +                            "source": {
        +                              "enum": [
        +                                "description_field",
        +                                "haiku_resolution",
        +                                "engine_default"
        +                              ],
        +                              "type": "string"
        +                            }
        +                          },
        +                          "required": [
        +                            "field_name",
        +                            "resolved_value",
        +                            "source"
        +                          ],
        +                          "type": "object"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "user_supplied": {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  }
        +                },
        +                "type": "object"
        +              },
        +              "standard": {
        +                "enum": [
        +                  "CESMM4",
        +                  "NRM2",
        +                  "SMM7",
        +                  "MMHW"
        +                ],
        +                "type": "string"
        +              },
        +              "text_summary": {
        +                "maxLength": 2000,
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "totals_summary": {
        +                "additionalProperties": false,
        +                "description": "Schema § 1.4 — totals_summary as a typed wrapper around the free-form dict.\n\nWire shape is a flat object (`{\"concrete_m3\": {...}, \"rebar_t\": {...}}`).\nWe model it as `RootModel`-equivalent via `model_config(extra=\"allow\")`\n+ a single `__root__`-style `entries` dict. Pydantic v2 recommends\n`RootModel` for free-form roots; using a wrapper class keeps the import\nsurface uniform with the rest of this module.",
        +                "properties": {
        +                  "entries": {
        +                    "additionalProperties": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.4 — single material/work-class total entry.",
        +                      "properties": {
        +                        "quantity": {
        +                          "minimum": 0,
        +                          "type": "number"
        +                        },
        +                        "unit": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "quantity",
        +                        "unit"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "object"
        +                  }
        +                },
        +                "type": "object"
        +              },
        +              "warnings": {
        +                "items": {
        +                  "additionalProperties": false,
        +                  "description": "Schema § 1.8 — a non-fatal geometry advisory (56th-fire T2).\n\nThe wire projection of the engine's `core.GeometryWarning`. Advisory only:\na warning NEVER changes a measured quantity — it flags geometry that is\nvalid but likely a mistake (e.g. a stale dependent-height default). Present\non BOTH tiers — a correctness/safety signal, not a paid feature.",
        +                  "properties": {
        +                    "affected_params": {
        +                      "items": {
        +                        "type": "string"
        +                      },
        +                      "type": "array"
        +                    },
        +                    "code": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "detail": {
        +                      "additionalProperties": {
        +                        "type": "number"
        +                      },
        +                      "type": "object"
        +                    },
        +                    "message": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "severity": {
        +                      "enum": [
        +                        "info",
        +                        "advisory",
        +                        "caution"
        +                      ],
        +                      "type": "string"
        +                    }
        +                  },
        +                  "required": [
        +                    "code",
        +                    "severity",
        +                    "message"
        +                  ],
        +                  "type": "object"
        +                },
        +                "type": "array"
        +              }
        +            },
        +            "required": [
        +              "assembly_slug",
        +              "standard",
        +              "parameters_used",
        +              "boq_rows",
        +              "totals_summary",
        +              "text_summary"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      },
        +      "error": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        +            "properties": {
        +              "code": {
        +                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        +                "enum": [
        +                  "RATE_LIMIT_EXCEEDED",
        +                  "TIER_INSUFFICIENT",
        +                  "INVALID_INPUT",
        +                  "SCHEMA_VERSION_MISMATCH",
        +                  "SCHEMA_INVARIANT_VIOLATION",
        +                  "UPSTREAM_TIMEOUT",
        +                  "BACKEND_FAILURE",
        +                  "IP_BLOCKED",
        +                  "RESOURCE_NOT_FOUND",
        +                  "RENDER_FAILURE",
        +                  "OCR_LOW_CONFIDENCE",
        +                  "MANUAL_REVIEW_REQUIRED",
        +                  "ACCEPTANCE_REQUIRED",
        +                  "INVALID_TOKEN"
        +                ],
        +                "type": "string"
        +              },
        +              "details": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "message": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "recoverable": {
        +                "type": "boolean"
        +              },
        +              "retry_after_seconds": {
        +                "anyOf": [
        +                  {
        +                    "minimum": 0,
        +                    "type": "integer"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              }
        +            },
        +            "required": [
        +              "code",
        +              "message",
        +              "recoverable"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      }
        +    },
        +    "required": [
        +      "_meta"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "_meta": {
        +        "additionalProperties": false,
        +        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        +        "properties": {
        +          "deliverables": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        +                "properties": {
        +                  "docx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "dxf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "expires_at": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  },
        +                  "pdf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "xlsx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "expires_at"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "document_id": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "issued_at": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "rate_limit_remaining": {
        +            "anyOf": [
        +              {
        +                "minimum": 0,
        +                "type": "integer"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "request_id": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "schema_version": {
        +            "const": "1.0.0",
        +            "default": "1.0.0",
        +            "type": "string"
        +          },
        +          "scope_boundary": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        +                "properties": {
        +                  "not_in_scope": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "produced": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "recommended_companions": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "type": "string"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "produced",
        +                  "not_in_scope"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tier": {
        +            "enum": [
        +              "free",
        +              "paid"
        +            ],
        +            "type": "string"
        +          },
        +          "tier_upgrade": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        +                "properties": {
        +                  "available_tiers": {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        +                      "properties": {
        +                        "billing": {
        +                          "enum": [
        +                            "one_off",
        +                            "monthly",
        +                            "annual"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "currency": {
        +                          "enum": [
        +                            "GBP",
        +                            "SGD",
        +                            "EUR",
        +                            "USD",
        +                            "CAD",
        +                            "AUD",
        +                            "NZD",
        +                            "MYR"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "display_name": {
        +                          "type": "string"
        +                        },
        +                        "price_local": {
        +                          "type": "number"
        +                        },
        +                        "tier_slug": {
        +                          "enum": [
        +                            "7_day_pass",
        +                            "solo",
        +                            "studio",
        +                            "practice"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "unlock_summary": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "tier_slug",
        +                        "display_name",
        +                        "price_local",
        +                        "currency",
        +                        "billing",
        +                        "unlock_summary"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "current_tier": {
        +                    "const": "free",
        +                    "default": "free",
        +                    "type": "string"
        +                  },
        +                  "pass_credit": {
        +                    "anyOf": [
        +                      {
        +                        "additionalProperties": false,
        +                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        +                        "properties": {
        +                          "amount_local": {
        +                            "type": "number"
        +                          },
        +                          "applies_to": {
        +                            "const": "solo_first_month",
        +                            "default": "solo_first_month",
        +                            "type": "string"
        +                          },
        +                          "currency": {
        +                            "type": "string"
        +                          },
        +                          "redeemable_until": {
        +                            "type": "string"
        +                          }
        +                        },
        +                        "required": [
        +                          "amount_local",
        +                          "currency",
        +                          "redeemable_until"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "pricing_url": {
        +                    "default": "https://civilquants.com/pricing",
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "available_tiers"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tos_url": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "upgrade_hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "warranty_disclaimer": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          }
        +        },
        +        "required": [
        +          "request_id",
        +          "issued_at",
        +          "tier"
        +        ],
        +        "type": "object"
        +      },
        +      "data": {
        +        "default": null,
        +        "title": "Data"
        +      },
        +      "error": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        +            "properties": {
        +              "code": {
        +                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        +                "enum": [
        +                  "RATE_LIMIT_EXCEEDED",
        +                  "TIER_INSUFFICIENT",
        +                  "INVALID_INPUT",
        +                  "SCHEMA_VERSION_MISMATCH",
        +                  "SCHEMA_INVARIANT_VIOLATION",
        +                  "UPSTREAM_TIMEOUT",
        +                  "BACKEND_FAILURE",
        +                  "IP_BLOCKED",
        +                  "RESOURCE_NOT_FOUND",
        +                  "RENDER_FAILURE",
        +                  "OCR_LOW_CONFIDENCE",
        +                  "MANUAL_REVIEW_REQUIRED",
        +                  "ACCEPTANCE_REQUIRED",
        +                  "INVALID_TOKEN"
        +                ],
        +                "type": "string"
        +              },
        +              "details": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "message": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "recoverable": {
        +                "type": "boolean"
        +              },
        +              "retry_after_seconds": {
        +                "anyOf": [
        +                  {
        +                    "minimum": 0,
        +                    "type": "integer"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              }
        +            },
        +            "required": [
        +              "code",
        +              "message",
        +              "recoverable"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      }
        +    },
        +    "required": [
        +      "_meta"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedcompute_box_culvert3 fields changed
      • addedInput schema / properties / deliverables
        Added value: +{
        +  "anyOf": [
        +    {
        +      "items": {
        +        "const": "xlsx",
        +        "type": "string"
        +      },
        +      "type": "array"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null
        +}
      • addedInput schema / properties / output_mode
        Added value: +{
        +  "default": "full_json",
        +  "enum": [
        +    "summary",
        +    "boq",
        +    "boq_with_backup",
        +    "full_json"
        +  ],
        +  "type": "string"
        +}
      • changedOutput schema / properties / result / anyOf
        Previous value: -[
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "_meta": {
        -        "additionalProperties": false,
        -        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        -        "properties": {
        -          "deliverables": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        -                "properties": {
        -                  "docx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "dxf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "expires_at": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  },
        -                  "pdf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "xlsx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "expires_at"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "document_id": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "issued_at": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "rate_limit_remaining": {
        -            "anyOf": [
        -              {
        -                "minimum": 0,
        -                "type": "integer"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "request_id": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "schema_version": {
        -            "const": "1.0.0",
        -            "default": "1.0.0",
        -            "type": "string"
        -          },
        -          "scope_boundary": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        -                "properties": {
        -                  "not_in_scope": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "produced": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "recommended_companions": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "type": "string"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "produced",
        -                  "not_in_scope"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tier": {
        -            "enum": [
        -              "free",
        -              "paid"
        -            ],
        -            "type": "string"
        -          },
        -          "tier_upgrade": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        -                "properties": {
        -                  "available_tiers": {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        -                      "properties": {
        -                        "billing": {
        -                          "enum": [
        -                            "one_off",
        -                            "monthly",
        -                            "annual"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "currency": {
        -                          "enum": [
        -                            "GBP",
        -                            "SGD",
        -                            "EUR",
        -                            "USD",
        -                            "CAD",
        -                            "AUD",
        -                            "NZD",
        -                            "MYR"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "display_name": {
        -                          "type": "string"
        -                        },
        -                        "price_local": {
        -                          "type": "number"
        -                        },
        -                        "tier_slug": {
        -                          "enum": [
        -                            "7_day_pass",
        -                            "solo",
        -                            "studio",
        -                            "practice"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "unlock_summary": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "tier_slug",
        -                        "display_name",
        -                        "price_local",
        -                        "currency",
        -                        "billing",
        -                        "unlock_summary"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "current_tier": {
        -                    "const": "free",
        -                    "default": "free",
        -                    "type": "string"
        -                  },
        -                  "pass_credit": {
        -                    "anyOf": [
        -                      {
        -                        "additionalProperties": false,
        -                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        -                        "properties": {
        -                          "amount_local": {
        -                            "type": "number"
        -                          },
        -                          "applies_to": {
        -                            "const": "solo_first_month",
        -                            "default": "solo_first_month",
        -                            "type": "string"
        -                          },
        -                          "currency": {
        -                            "type": "string"
        -                          },
        -                          "redeemable_until": {
        -                            "type": "string"
        -                          }
        -                        },
        -                        "required": [
        -                          "amount_local",
        -                          "currency",
        -                          "redeemable_until"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "pricing_url": {
        -                    "default": "https://civilquants.com/pricing",
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "available_tiers"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tos_url": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "upgrade_hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "warranty_disclaimer": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          }
        -        },
        -        "required": [
        -          "request_id",
        -          "issued_at",
        -          "tier"
        -        ],
        -        "type": "object"
        -      },
        -      "data": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Schema § 1.1 — the typed payload returned inside `MCPResponse[ComputeResult]`.\n\nFree-tier responses MUST omit `drawings` and `audit_trail` (the bridge\nenforces this); paid-tier responses populate both. `text_summary` is\nbounded to 2000 chars — keeps the LLM-facing summary token-cheap and\nforces longer narrative into BoQ row descriptions where it belongs.\n`warnings` is the non-fatal geometry advisory list (both tiers).",
        -            "properties": {
        -              "assembly_slug": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "audit_trail": {
        -                "anyOf": [
        -                  {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.7 — paid-tier audit-trail entry.\n\nOne entry per BoQ row; `boq_row_index` ties to the row position in\n`ComputeResult.boq_rows`. `derivation` is the human-readable formula\nwalk-through; `formula` is the optional formal expression.",
        -                      "properties": {
        -                        "boq_row_index": {
        -                          "minimum": 0,
        -                          "type": "integer"
        -                        },
        -                        "derivation": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "formula": {
        -                          "anyOf": [
        -                            {
        -                              "type": "string"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ],
        -                          "default": null
        -                        },
        -                        "id": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "parameters_referenced": {
        -                          "items": {
        -                            "type": "string"
        -                          },
        -                          "type": "array"
        -                        }
        -                      },
        -                      "required": [
        -                        "id",
        -                        "boq_row_index",
        -                        "derivation"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "boq_rows": {
        -                "items": {
        -                  "additionalProperties": false,
        -                  "description": "Schema § 1.3 — a single bill row in the requested standard's format.\n\n`description` is the non-verbatim functional description per spec § 13.9 /\n§ 15 invariant — NEVER reproduces a standard's verbatim clause text.\n`rate` / `amount` ship null because rates are commodity data the customer\nowns; the engine's job is the measurement, not the pricing.",
        -                  "properties": {
        -                    "amount": {
        -                      "anyOf": [
        -                        {
        -                          "type": "number"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "attribution": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "audit_id": {
        -                      "anyOf": [
        -                        {
        -                          "type": "string"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "description": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "quantity": {
        -                      "minimum": 0,
        -                      "type": "number"
        -                    },
        -                    "rate": {
        -                      "anyOf": [
        -                        {
        -                          "type": "number"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "unit": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "work_section": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    }
        -                  },
        -                  "required": [
        -                    "work_section",
        -                    "description",
        -                    "quantity",
        -                    "unit",
        -                    "attribution"
        -                  ],
        -                  "type": "object"
        -                },
        -                "type": "array"
        -              },
        -              "drawings": {
        -                "anyOf": [
        -                  {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.6 — paid-tier drawing artefact pointer.\n\n`url` is an R2-signed URL; expiry is carried in `_meta.deliverables.expires_at`\non the envelope (not duplicated here). `layers` is DXF-only; PDF/SVG\ncallers omit it.",
        -                      "properties": {
        -                        "drawing_type": {
        -                          "enum": [
        -                            "section",
        -                            "plan",
        -                            "elevation",
        -                            "isometric",
        -                            "detail"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "format": {
        -                          "enum": [
        -                            "DXF",
        -                            "PDF",
        -                            "SVG"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "layers": {
        -                          "anyOf": [
        -                            {
        -                              "items": {
        -                                "type": "string"
        -                              },
        -                              "type": "array"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ],
        -                          "default": null
        -                        },
        -                        "scale": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "sheet_size": {
        -                          "enum": [
        -                            "A1",
        -                            "A2",
        -                            "A3",
        -                            "A4"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "url": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "drawing_type",
        -                        "format",
        -                        "url",
        -                        "sheet_size",
        -                        "scale"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "parameters_used": {
        -                "additionalProperties": false,
        -                "description": "Schema § 1.2 — the parameter snapshot the engine actually used.\n\nSplits user-supplied values from engine defaults so customers can see\nwhich numbers came from them and which the engine filled in. Every\ndefaulted parameter SHOULD have a corresponding entry in `assumptions`\n— the bridge layer enforces this when wrapping engine output.",
        -                "properties": {
        -                  "assumptions": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "engine_defaults": {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  "resolved_from_description": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "additionalProperties": false,
        -                          "description": "Schema § 1.2 — a parameter resolved by the forgiving-input layer.\n\nPopulated by the Track B-Forgiving Haiku-4.5 resolution pass; until that\nlayer lands, instances are constructed only by tests. `source` distinguishes\nthe resolution path so customers can audit which fields were inferred.",
        -                          "properties": {
        -                            "confidence": {
        -                              "anyOf": [
        -                                {
        -                                  "enum": [
        -                                    "high",
        -                                    "medium",
        -                                    "low"
        -                                  ],
        -                                  "type": "string"
        -                                },
        -                                {
        -                                  "type": "null"
        -                                }
        -                              ],
        -                              "default": null
        -                            },
        -                            "field_name": {
        -                              "minLength": 1,
        -                              "type": "string"
        -                            },
        -                            "resolved_value": {},
        -                            "source": {
        -                              "enum": [
        -                                "description_field",
        -                                "haiku_resolution",
        -                                "engine_default"
        -                              ],
        -                              "type": "string"
        -                            }
        -                          },
        -                          "required": [
        -                            "field_name",
        -                            "resolved_value",
        -                            "source"
        -                          ],
        -                          "type": "object"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "user_supplied": {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  }
        -                },
        -                "type": "object"
        -              },
        -              "standard": {
        -                "enum": [
        -                  "CESMM4",
        -                  "NRM2",
        -                  "SMM7",
        -                  "MMHW"
        -                ],
        -                "type": "string"
        -              },
        -              "text_summary": {
        -                "maxLength": 2000,
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "totals_summary": {
        -                "additionalProperties": false,
        -                "description": "Schema § 1.4 — totals_summary as a typed wrapper around the free-form dict.\n\nWire shape is a flat object (`{\"concrete_m3\": {...}, \"rebar_t\": {...}}`).\nWe model it as `RootModel`-equivalent via `model_config(extra=\"allow\")`\n+ a single `__root__`-style `entries` dict. Pydantic v2 recommends\n`RootModel` for free-form roots; using a wrapper class keeps the import\nsurface uniform with the rest of this module.",
        -                "properties": {
        -                  "entries": {
        -                    "additionalProperties": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.4 — single material/work-class total entry.",
        -                      "properties": {
        -                        "quantity": {
        -                          "minimum": 0,
        -                          "type": "number"
        -                        },
        -                        "unit": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "quantity",
        -                        "unit"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "object"
        -                  }
        -                },
        -                "type": "object"
        -              },
        -              "warnings": {
        -                "items": {
        -                  "additionalProperties": false,
        -                  "description": "Schema § 1.8 — a non-fatal geometry advisory (56th-fire T2).\n\nThe wire projection of the engine's `core.GeometryWarning`. Advisory only:\na warning NEVER changes a measured quantity — it flags geometry that is\nvalid but likely a mistake (e.g. a stale dependent-height default). Present\non BOTH tiers — a correctness/safety signal, not a paid feature.",
        -                  "properties": {
        -                    "affected_params": {
        -                      "items": {
        -                        "type": "string"
        -                      },
        -                      "type": "array"
        -                    },
        -                    "code": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "detail": {
        -                      "additionalProperties": {
        -                        "type": "number"
        -                      },
        -                      "type": "object"
        -                    },
        -                    "message": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "severity": {
        -                      "enum": [
        -                        "info",
        -                        "advisory",
        -                        "caution"
        -                      ],
        -                      "type": "string"
        -                    }
        -                  },
        -                  "required": [
        -                    "code",
        -                    "severity",
        -                    "message"
        -                  ],
        -                  "type": "object"
        -                },
        -                "type": "array"
        -              }
        -            },
        -            "required": [
        -              "assembly_slug",
        -              "standard",
        -              "parameters_used",
        -              "boq_rows",
        -              "totals_summary",
        -              "text_summary"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      },
        -      "error": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        -            "properties": {
        -              "code": {
        -                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        -                "enum": [
        -                  "RATE_LIMIT_EXCEEDED",
        -                  "TIER_INSUFFICIENT",
        -                  "INVALID_INPUT",
        -                  "SCHEMA_VERSION_MISMATCH",
        -                  "SCHEMA_INVARIANT_VIOLATION",
        -                  "UPSTREAM_TIMEOUT",
        -                  "BACKEND_FAILURE",
        -                  "IP_BLOCKED",
        -                  "RESOURCE_NOT_FOUND",
        -                  "RENDER_FAILURE",
        -                  "OCR_LOW_CONFIDENCE",
        -                  "MANUAL_REVIEW_REQUIRED",
        -                  "ACCEPTANCE_REQUIRED",
        -                  "INVALID_TOKEN"
        -                ],
        -                "type": "string"
        -              },
        -              "details": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "message": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "recoverable": {
        -                "type": "boolean"
        -              },
        -              "retry_after_seconds": {
        -                "anyOf": [
        -                  {
        -                    "minimum": 0,
        -                    "type": "integer"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              }
        -            },
        -            "required": [
        -              "code",
        -              "message",
        -              "recoverable"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      }
        -    },
        -    "required": [
        -      "_meta"
        -    ],
        -    "type": "object"
        -  },
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "_meta": {
        -        "additionalProperties": false,
        -        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        -        "properties": {
        -          "deliverables": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        -                "properties": {
        -                  "docx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "dxf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "expires_at": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  },
        -                  "pdf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "xlsx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "expires_at"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "document_id": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "issued_at": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "rate_limit_remaining": {
        -            "anyOf": [
        -              {
        -                "minimum": 0,
        -                "type": "integer"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "request_id": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "schema_version": {
        -            "const": "1.0.0",
        -            "default": "1.0.0",
        -            "type": "string"
        -          },
        -          "scope_boundary": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        -                "properties": {
        -                  "not_in_scope": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "produced": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "recommended_companions": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "type": "string"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "produced",
        -                  "not_in_scope"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tier": {
        -            "enum": [
        -              "free",
        -              "paid"
        -            ],
        -            "type": "string"
        -          },
        -          "tier_upgrade": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        -                "properties": {
        -                  "available_tiers": {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        -                      "properties": {
        -                        "billing": {
        -                          "enum": [
        -                            "one_off",
        -                            "monthly",
        -                            "annual"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "currency": {
        -                          "enum": [
        -                            "GBP",
        -                            "SGD",
        -                            "EUR",
        -                            "USD",
        -                            "CAD",
        -                            "AUD",
        -                            "NZD",
        -                            "MYR"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "display_name": {
        -                          "type": "string"
        -                        },
        -                        "price_local": {
        -                          "type": "number"
        -                        },
        -                        "tier_slug": {
        -                          "enum": [
        -                            "7_day_pass",
        -                            "solo",
        -                            "studio",
        -                            "practice"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "unlock_summary": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "tier_slug",
        -                        "display_name",
        -                        "price_local",
        -                        "currency",
        -                        "billing",
        -                        "unlock_summary"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "current_tier": {
        -                    "const": "free",
        -                    "default": "free",
        -                    "type": "string"
        -                  },
        -                  "pass_credit": {
        -                    "anyOf": [
        -                      {
        -                        "additionalProperties": false,
        -                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        -                        "properties": {
        -                          "amount_local": {
        -                            "type": "number"
        -                          },
        -                          "applies_to": {
        -                            "const": "solo_first_month",
        -                            "default": "solo_first_month",
        -                            "type": "string"
        -                          },
        -                          "currency": {
        -                            "type": "string"
        -                          },
        -                          "redeemable_until": {
        -                            "type": "string"
        -                          }
        -                        },
        -                        "required": [
        -                          "amount_local",
        -                          "currency",
        -                          "redeemable_until"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "pricing_url": {
        -                    "default": "https://civilquants.com/pricing",
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "available_tiers"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tos_url": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "upgrade_hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "warranty_disclaimer": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          }
        -        },
        -        "required": [
        -          "request_id",
        -          "issued_at",
        -          "tier"
        -        ],
        -        "type": "object"
        -      },
        -      "data": {
        -        "default": null,
        -        "title": "Data"
        -      },
        -      "error": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        -            "properties": {
        -              "code": {
        -                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        -                "enum": [
        -                  "RATE_LIMIT_EXCEEDED",
        -                  "TIER_INSUFFICIENT",
        -                  "INVALID_INPUT",
        -                  "SCHEMA_VERSION_MISMATCH",
        -                  "SCHEMA_INVARIANT_VIOLATION",
        -                  "UPSTREAM_TIMEOUT",
        -                  "BACKEND_FAILURE",
        -                  "IP_BLOCKED",
        -                  "RESOURCE_NOT_FOUND",
        -                  "RENDER_FAILURE",
        -                  "OCR_LOW_CONFIDENCE",
        -                  "MANUAL_REVIEW_REQUIRED",
        -                  "ACCEPTANCE_REQUIRED",
        -                  "INVALID_TOKEN"
        -                ],
        -                "type": "string"
        -              },
        -              "details": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "message": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "recoverable": {
        -                "type": "boolean"
        -              },
        -              "retry_after_seconds": {
        -                "anyOf": [
        -                  {
        -                    "minimum": 0,
        -                    "type": "integer"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              }
        -            },
        -            "required": [
        -              "code",
        -              "message",
        -              "recoverable"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      }
        -    },
        -    "required": [
        -      "_meta"
        -    ],
        -    "type": "object"
        -  }
        -]New value: +[
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "_meta": {
        +        "additionalProperties": false,
        +        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        +        "properties": {
        +          "deliverables": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        +                "properties": {
        +                  "docx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "dxf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "expires_at": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  },
        +                  "pdf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "xlsx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "expires_at"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "document_id": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "issued_at": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "rate_limit_remaining": {
        +            "anyOf": [
        +              {
        +                "minimum": 0,
        +                "type": "integer"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "request_id": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "schema_version": {
        +            "const": "1.0.0",
        +            "default": "1.0.0",
        +            "type": "string"
        +          },
        +          "scope_boundary": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        +                "properties": {
        +                  "not_in_scope": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "produced": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "recommended_companions": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "type": "string"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "produced",
        +                  "not_in_scope"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tier": {
        +            "enum": [
        +              "free",
        +              "paid"
        +            ],
        +            "type": "string"
        +          },
        +          "tier_upgrade": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        +                "properties": {
        +                  "available_tiers": {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        +                      "properties": {
        +                        "billing": {
        +                          "enum": [
        +                            "one_off",
        +                            "monthly",
        +                            "annual"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "currency": {
        +                          "enum": [
        +                            "GBP",
        +                            "SGD",
        +                            "EUR",
        +                            "USD",
        +                            "CAD",
        +                            "AUD",
        +                            "NZD",
        +                            "MYR"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "display_name": {
        +                          "type": "string"
        +                        },
        +                        "price_local": {
        +                          "type": "number"
        +                        },
        +                        "tier_slug": {
        +                          "enum": [
        +                            "7_day_pass",
        +                            "solo",
        +                            "studio",
        +                            "practice"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "unlock_summary": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "tier_slug",
        +                        "display_name",
        +                        "price_local",
        +                        "currency",
        +                        "billing",
        +                        "unlock_summary"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "current_tier": {
        +                    "const": "free",
        +                    "default": "free",
        +                    "type": "string"
        +                  },
        +                  "pass_credit": {
        +                    "anyOf": [
        +                      {
        +                        "additionalProperties": false,
        +                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        +                        "properties": {
        +                          "amount_local": {
        +                            "type": "number"
        +                          },
        +                          "applies_to": {
        +                            "const": "solo_first_month",
        +                            "default": "solo_first_month",
        +                            "type": "string"
        +                          },
        +                          "currency": {
        +                            "type": "string"
        +                          },
        +                          "redeemable_until": {
        +                            "type": "string"
        +                          }
        +                        },
        +                        "required": [
        +                          "amount_local",
        +                          "currency",
        +                          "redeemable_until"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "pricing_url": {
        +                    "default": "https://civilquants.com/pricing",
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "available_tiers"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tos_url": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "upgrade_hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "warranty_disclaimer": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          }
        +        },
        +        "required": [
        +          "request_id",
        +          "issued_at",
        +          "tier"
        +        ],
        +        "type": "object"
        +      },
        +      "data": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Schema § 1.1 — the typed payload returned inside `MCPResponse[ComputeResult]`.\n\nFree-tier responses omit `drawings` (the downloadable CAD artefact\npointers — the paid differentiator); the bridge enforces this. The\n`audit_trail` and the inline `drawing` preview are present on BOTH tiers\n(V1 ALIGN / 60th-fire D + C). `text_summary` is bounded to 2000 chars —\nkeeps the LLM-facing summary token-cheap and forces longer narrative into\nBoQ row descriptions where it belongs. `warnings` is the non-fatal\ngeometry advisory list (both tiers).",
        +            "properties": {
        +              "assembly_slug": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "audit_trail": {
        +                "anyOf": [
        +                  {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.7 — paid-tier audit-trail entry.\n\nOne entry per BoQ row; `boq_row_index` ties to the row position in\n`ComputeResult.boq_rows`. `derivation` is the human-readable formula\nwalk-through; `formula` is the optional formal expression.",
        +                      "properties": {
        +                        "boq_row_index": {
        +                          "minimum": 0,
        +                          "type": "integer"
        +                        },
        +                        "derivation": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "formula": {
        +                          "anyOf": [
        +                            {
        +                              "type": "string"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ],
        +                          "default": null
        +                        },
        +                        "id": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "parameters_referenced": {
        +                          "items": {
        +                            "type": "string"
        +                          },
        +                          "type": "array"
        +                        }
        +                      },
        +                      "required": [
        +                        "id",
        +                        "boq_row_index",
        +                        "derivation"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "boq_rows": {
        +                "items": {
        +                  "additionalProperties": false,
        +                  "description": "Schema § 1.3 — a single bill row in the requested standard's format.\n\n`description` is the non-verbatim functional description per spec § 13.9 /\n§ 15 invariant — NEVER reproduces a standard's verbatim clause text.\n`rate` / `amount` ship null because rates are commodity data the customer\nowns; the engine's job is the measurement, not the pricing.",
        +                  "properties": {
        +                    "amount": {
        +                      "anyOf": [
        +                        {
        +                          "type": "number"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "attribution": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "audit_id": {
        +                      "anyOf": [
        +                        {
        +                          "type": "string"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "description": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "quantity": {
        +                      "minimum": 0,
        +                      "type": "number"
        +                    },
        +                    "rate": {
        +                      "anyOf": [
        +                        {
        +                          "type": "number"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "unit": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "work_section": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    }
        +                  },
        +                  "required": [
        +                    "work_section",
        +                    "description",
        +                    "quantity",
        +                    "unit",
        +                    "attribution"
        +                  ],
        +                  "type": "object"
        +                },
        +                "type": "array"
        +              },
        +              "drawing": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": false,
        +                    "description": "Schema § 1.6a — inline server-rendered SVG preview of the geometry.\n\nThe MCP mirror of the web ``/compute`` response's ``drawing`` field\n(``api.schemas.compute.DrawingRef``): the same on-screen dimensioned\ndrawing both tiers see in the workspace, surfaced on the MCP compute\nresponse so a chat client can render it inline (60th-fire item C). This\nis the on-screen preview — present on BOTH tiers per the free/paid\nboundary; the downloadable CAD artefacts (DXF / dimensioned PDF) remain\nthe paid differentiator via the export tools.\n\nDefined here rather than importing ``DrawingRef`` because the web\n``schemas`` package imports back into this module (``schemas.render``),\nso reusing it would create an import cycle — the MCP wire contract keeps\nits own copy, the same pattern as ``BoQRow`` / ``DrawingReference``.",
        +                    "properties": {
        +                      "entity_count": {
        +                        "minimum": 0,
        +                        "type": "integer"
        +                      },
        +                      "svg_b64": {
        +                        "minLength": 1,
        +                        "type": "string"
        +                      },
        +                      "unit_of_drawing": {
        +                        "const": "m",
        +                        "default": "m",
        +                        "type": "string"
        +                      },
        +                      "viewbox_height": {
        +                        "exclusiveMinimum": 0,
        +                        "type": "number"
        +                      },
        +                      "viewbox_width": {
        +                        "exclusiveMinimum": 0,
        +                        "type": "number"
        +                      },
        +                      "viewbox_x": {
        +                        "type": "number"
        +                      },
        +                      "viewbox_y": {
        +                        "type": "number"
        +                      }
        +                    },
        +                    "required": [
        +                      "svg_b64",
        +                      "viewbox_x",
        +                      "viewbox_y",
        +                      "viewbox_width",
        +                      "viewbox_height",
        +                      "entity_count"
        +                    ],
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "drawings": {
        +                "anyOf": [
        +                  {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.6 — paid-tier drawing artefact pointer.\n\n`url` is an R2-signed URL; expiry is carried in `_meta.deliverables.expires_at`\non the envelope (not duplicated here). `layers` is DXF-only; PDF/SVG\ncallers omit it.",
        +                      "properties": {
        +                        "drawing_type": {
        +                          "enum": [
        +                            "section",
        +                            "plan",
        +                            "elevation",
        +                            "isometric",
        +                            "detail"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "format": {
        +                          "enum": [
        +                            "DXF",
        +                            "PDF",
        +                            "SVG"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "layers": {
        +                          "anyOf": [
        +                            {
        +                              "items": {
        +                                "type": "string"
        +                              },
        +                              "type": "array"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ],
        +                          "default": null
        +                        },
        +                        "scale": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "sheet_size": {
        +                          "enum": [
        +                            "A1",
        +                            "A2",
        +                            "A3",
        +                            "A4"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "url": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "drawing_type",
        +                        "format",
        +                        "url",
        +                        "sheet_size",
        +                        "scale"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "parameters_used": {
        +                "additionalProperties": false,
        +                "description": "Schema § 1.2 — the parameter snapshot the engine actually used.\n\nSplits user-supplied values from engine defaults so customers can see\nwhich numbers came from them and which the engine filled in. Every\ndefaulted parameter SHOULD have a corresponding entry in `assumptions`\n— the bridge layer enforces this when wrapping engine output.",
        +                "properties": {
        +                  "assumptions": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "engine_defaults": {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  "resolved_from_description": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "additionalProperties": false,
        +                          "description": "Schema § 1.2 — a parameter resolved by the forgiving-input layer.\n\nPopulated by the Track B-Forgiving Haiku-4.5 resolution pass; until that\nlayer lands, instances are constructed only by tests. `source` distinguishes\nthe resolution path so customers can audit which fields were inferred.",
        +                          "properties": {
        +                            "confidence": {
        +                              "anyOf": [
        +                                {
        +                                  "enum": [
        +                                    "high",
        +                                    "medium",
        +                                    "low"
        +                                  ],
        +                                  "type": "string"
        +                                },
        +                                {
        +                                  "type": "null"
        +                                }
        +                              ],
        +                              "default": null
        +                            },
        +                            "field_name": {
        +                              "minLength": 1,
        +                              "type": "string"
        +                            },
        +                            "resolved_value": {},
        +                            "source": {
        +                              "enum": [
        +                                "description_field",
        +                                "haiku_resolution",
        +                                "engine_default"
        +                              ],
        +                              "type": "string"
        +                            }
        +                          },
        +                          "required": [
        +                            "field_name",
        +                            "resolved_value",
        +                            "source"
        +                          ],
        +                          "type": "object"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "user_supplied": {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  }
        +                },
        +                "type": "object"
        +              },
        +              "standard": {
        +                "enum": [
        +                  "CESMM4",
        +                  "NRM2",
        +                  "SMM7",
        +                  "MMHW"
        +                ],
        +                "type": "string"
        +              },
        +              "text_summary": {
        +                "maxLength": 2000,
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "totals_summary": {
        +                "additionalProperties": false,
        +                "description": "Schema § 1.4 — totals_summary as a typed wrapper around the free-form dict.\n\nWire shape is a flat object (`{\"concrete_m3\": {...}, \"rebar_t\": {...}}`).\nWe model it as `RootModel`-equivalent via `model_config(extra=\"allow\")`\n+ a single `__root__`-style `entries` dict. Pydantic v2 recommends\n`RootModel` for free-form roots; using a wrapper class keeps the import\nsurface uniform with the rest of this module.",
        +                "properties": {
        +                  "entries": {
        +                    "additionalProperties": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.4 — single material/work-class total entry.",
        +                      "properties": {
        +                        "quantity": {
        +                          "minimum": 0,
        +                          "type": "number"
        +                        },
        +                        "unit": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "quantity",
        +                        "unit"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "object"
        +                  }
        +                },
        +                "type": "object"
        +              },
        +              "warnings": {
        +                "items": {
        +                  "additionalProperties": false,
        +                  "description": "Schema § 1.8 — a non-fatal geometry advisory (56th-fire T2).\n\nThe wire projection of the engine's `core.GeometryWarning`. Advisory only:\na warning NEVER changes a measured quantity — it flags geometry that is\nvalid but likely a mistake (e.g. a stale dependent-height default). Present\non BOTH tiers — a correctness/safety signal, not a paid feature.",
        +                  "properties": {
        +                    "affected_params": {
        +                      "items": {
        +                        "type": "string"
        +                      },
        +                      "type": "array"
        +                    },
        +                    "code": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "detail": {
        +                      "additionalProperties": {
        +                        "type": "number"
        +                      },
        +                      "type": "object"
        +                    },
        +                    "message": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "severity": {
        +                      "enum": [
        +                        "info",
        +                        "advisory",
        +                        "caution"
        +                      ],
        +                      "type": "string"
        +                    }
        +                  },
        +                  "required": [
        +                    "code",
        +                    "severity",
        +                    "message"
        +                  ],
        +                  "type": "object"
        +                },
        +                "type": "array"
        +              }
        +            },
        +            "required": [
        +              "assembly_slug",
        +              "standard",
        +              "parameters_used",
        +              "boq_rows",
        +              "totals_summary",
        +              "text_summary"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      },
        +      "error": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        +            "properties": {
        +              "code": {
        +                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        +                "enum": [
        +                  "RATE_LIMIT_EXCEEDED",
        +                  "TIER_INSUFFICIENT",
        +                  "INVALID_INPUT",
        +                  "SCHEMA_VERSION_MISMATCH",
        +                  "SCHEMA_INVARIANT_VIOLATION",
        +                  "UPSTREAM_TIMEOUT",
        +                  "BACKEND_FAILURE",
        +                  "IP_BLOCKED",
        +                  "RESOURCE_NOT_FOUND",
        +                  "RENDER_FAILURE",
        +                  "OCR_LOW_CONFIDENCE",
        +                  "MANUAL_REVIEW_REQUIRED",
        +                  "ACCEPTANCE_REQUIRED",
        +                  "INVALID_TOKEN"
        +                ],
        +                "type": "string"
        +              },
        +              "details": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "message": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "recoverable": {
        +                "type": "boolean"
        +              },
        +              "retry_after_seconds": {
        +                "anyOf": [
        +                  {
        +                    "minimum": 0,
        +                    "type": "integer"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              }
        +            },
        +            "required": [
        +              "code",
        +              "message",
        +              "recoverable"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      }
        +    },
        +    "required": [
        +      "_meta"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "_meta": {
        +        "additionalProperties": false,
        +        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        +        "properties": {
        +          "deliverables": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        +                "properties": {
        +                  "docx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "dxf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "expires_at": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  },
        +                  "pdf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "xlsx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "expires_at"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "document_id": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "issued_at": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "rate_limit_remaining": {
        +            "anyOf": [
        +              {
        +                "minimum": 0,
        +                "type": "integer"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "request_id": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "schema_version": {
        +            "const": "1.0.0",
        +            "default": "1.0.0",
        +            "type": "string"
        +          },
        +          "scope_boundary": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        +                "properties": {
        +                  "not_in_scope": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "produced": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "recommended_companions": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "type": "string"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "produced",
        +                  "not_in_scope"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tier": {
        +            "enum": [
        +              "free",
        +              "paid"
        +            ],
        +            "type": "string"
        +          },
        +          "tier_upgrade": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        +                "properties": {
        +                  "available_tiers": {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        +                      "properties": {
        +                        "billing": {
        +                          "enum": [
        +                            "one_off",
        +                            "monthly",
        +                            "annual"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "currency": {
        +                          "enum": [
        +                            "GBP",
        +                            "SGD",
        +                            "EUR",
        +                            "USD",
        +                            "CAD",
        +                            "AUD",
        +                            "NZD",
        +                            "MYR"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "display_name": {
        +                          "type": "string"
        +                        },
        +                        "price_local": {
        +                          "type": "number"
        +                        },
        +                        "tier_slug": {
        +                          "enum": [
        +                            "7_day_pass",
        +                            "solo",
        +                            "studio",
        +                            "practice"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "unlock_summary": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "tier_slug",
        +                        "display_name",
        +                        "price_local",
        +                        "currency",
        +                        "billing",
        +                        "unlock_summary"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "current_tier": {
        +                    "const": "free",
        +                    "default": "free",
        +                    "type": "string"
        +                  },
        +                  "pass_credit": {
        +                    "anyOf": [
        +                      {
        +                        "additionalProperties": false,
        +                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        +                        "properties": {
        +                          "amount_local": {
        +                            "type": "number"
        +                          },
        +                          "applies_to": {
        +                            "const": "solo_first_month",
        +                            "default": "solo_first_month",
        +                            "type": "string"
        +                          },
        +                          "currency": {
        +                            "type": "string"
        +                          },
        +                          "redeemable_until": {
        +                            "type": "string"
        +                          }
        +                        },
        +                        "required": [
        +                          "amount_local",
        +                          "currency",
        +                          "redeemable_until"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "pricing_url": {
        +                    "default": "https://civilquants.com/pricing",
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "available_tiers"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tos_url": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "upgrade_hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "warranty_disclaimer": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          }
        +        },
        +        "required": [
        +          "request_id",
        +          "issued_at",
        +          "tier"
        +        ],
        +        "type": "object"
        +      },
        +      "data": {
        +        "default": null,
        +        "title": "Data"
        +      },
        +      "error": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        +            "properties": {
        +              "code": {
        +                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        +                "enum": [
        +                  "RATE_LIMIT_EXCEEDED",
        +                  "TIER_INSUFFICIENT",
        +                  "INVALID_INPUT",
        +                  "SCHEMA_VERSION_MISMATCH",
        +                  "SCHEMA_INVARIANT_VIOLATION",
        +                  "UPSTREAM_TIMEOUT",
        +                  "BACKEND_FAILURE",
        +                  "IP_BLOCKED",
        +                  "RESOURCE_NOT_FOUND",
        +                  "RENDER_FAILURE",
        +                  "OCR_LOW_CONFIDENCE",
        +                  "MANUAL_REVIEW_REQUIRED",
        +                  "ACCEPTANCE_REQUIRED",
        +                  "INVALID_TOKEN"
        +                ],
        +                "type": "string"
        +              },
        +              "details": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "message": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "recoverable": {
        +                "type": "boolean"
        +              },
        +              "retry_after_seconds": {
        +                "anyOf": [
        +                  {
        +                    "minimum": 0,
        +                    "type": "integer"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              }
        +            },
        +            "required": [
        +              "code",
        +              "message",
        +              "recoverable"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      }
        +    },
        +    "required": [
        +      "_meta"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedcompute_cantilever_wall4 fields changed
      • addedInput schema / properties / deliverables
        Added value: +{
        +  "anyOf": [
        +    {
        +      "items": {
        +        "const": "xlsx",
        +        "type": "string"
        +      },
        +      "type": "array"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null
        +}
      • addedInput schema / properties / freeboard
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "number"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null
        +}
      • addedInput schema / properties / output_mode
        Added value: +{
        +  "default": "full_json",
        +  "enum": [
        +    "summary",
        +    "boq",
        +    "boq_with_backup",
        +    "full_json"
        +  ],
        +  "type": "string"
        +}
      • changedOutput schema / properties / result / anyOf
        Previous value: -[
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "_meta": {
        -        "additionalProperties": false,
        -        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        -        "properties": {
        -          "deliverables": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        -                "properties": {
        -                  "docx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "dxf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "expires_at": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  },
        -                  "pdf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "xlsx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "expires_at"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "document_id": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "issued_at": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "rate_limit_remaining": {
        -            "anyOf": [
        -              {
        -                "minimum": 0,
        -                "type": "integer"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "request_id": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "schema_version": {
        -            "const": "1.0.0",
        -            "default": "1.0.0",
        -            "type": "string"
        -          },
        -          "scope_boundary": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        -                "properties": {
        -                  "not_in_scope": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "produced": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "recommended_companions": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "type": "string"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "produced",
        -                  "not_in_scope"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tier": {
        -            "enum": [
        -              "free",
        -              "paid"
        -            ],
        -            "type": "string"
        -          },
        -          "tier_upgrade": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        -                "properties": {
        -                  "available_tiers": {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        -                      "properties": {
        -                        "billing": {
        -                          "enum": [
        -                            "one_off",
        -                            "monthly",
        -                            "annual"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "currency": {
        -                          "enum": [
        -                            "GBP",
        -                            "SGD",
        -                            "EUR",
        -                            "USD",
        -                            "CAD",
        -                            "AUD",
        -                            "NZD",
        -                            "MYR"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "display_name": {
        -                          "type": "string"
        -                        },
        -                        "price_local": {
        -                          "type": "number"
        -                        },
        -                        "tier_slug": {
        -                          "enum": [
        -                            "7_day_pass",
        -                            "solo",
        -                            "studio",
        -                            "practice"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "unlock_summary": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "tier_slug",
        -                        "display_name",
        -                        "price_local",
        -                        "currency",
        -                        "billing",
        -                        "unlock_summary"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "current_tier": {
        -                    "const": "free",
        -                    "default": "free",
        -                    "type": "string"
        -                  },
        -                  "pass_credit": {
        -                    "anyOf": [
        -                      {
        -                        "additionalProperties": false,
        -                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        -                        "properties": {
        -                          "amount_local": {
        -                            "type": "number"
        -                          },
        -                          "applies_to": {
        -                            "const": "solo_first_month",
        -                            "default": "solo_first_month",
        -                            "type": "string"
        -                          },
        -                          "currency": {
        -                            "type": "string"
        -                          },
        -                          "redeemable_until": {
        -                            "type": "string"
        -                          }
        -                        },
        -                        "required": [
        -                          "amount_local",
        -                          "currency",
        -                          "redeemable_until"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "pricing_url": {
        -                    "default": "https://civilquants.com/pricing",
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "available_tiers"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tos_url": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "upgrade_hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "warranty_disclaimer": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          }
        -        },
        -        "required": [
        -          "request_id",
        -          "issued_at",
        -          "tier"
        -        ],
        -        "type": "object"
        -      },
        -      "data": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Schema § 1.1 — the typed payload returned inside `MCPResponse[ComputeResult]`.\n\nFree-tier responses MUST omit `drawings` and `audit_trail` (the bridge\nenforces this); paid-tier responses populate both. `text_summary` is\nbounded to 2000 chars — keeps the LLM-facing summary token-cheap and\nforces longer narrative into BoQ row descriptions where it belongs.\n`warnings` is the non-fatal geometry advisory list (both tiers).",
        -            "properties": {
        -              "assembly_slug": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "audit_trail": {
        -                "anyOf": [
        -                  {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.7 — paid-tier audit-trail entry.\n\nOne entry per BoQ row; `boq_row_index` ties to the row position in\n`ComputeResult.boq_rows`. `derivation` is the human-readable formula\nwalk-through; `formula` is the optional formal expression.",
        -                      "properties": {
        -                        "boq_row_index": {
        -                          "minimum": 0,
        -                          "type": "integer"
        -                        },
        -                        "derivation": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "formula": {
        -                          "anyOf": [
        -                            {
        -                              "type": "string"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ],
        -                          "default": null
        -                        },
        -                        "id": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "parameters_referenced": {
        -                          "items": {
        -                            "type": "string"
        -                          },
        -                          "type": "array"
        -                        }
        -                      },
        -                      "required": [
        -                        "id",
        -                        "boq_row_index",
        -                        "derivation"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "boq_rows": {
        -                "items": {
        -                  "additionalProperties": false,
        -                  "description": "Schema § 1.3 — a single bill row in the requested standard's format.\n\n`description` is the non-verbatim functional description per spec § 13.9 /\n§ 15 invariant — NEVER reproduces a standard's verbatim clause text.\n`rate` / `amount` ship null because rates are commodity data the customer\nowns; the engine's job is the measurement, not the pricing.",
        -                  "properties": {
        -                    "amount": {
        -                      "anyOf": [
        -                        {
        -                          "type": "number"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "attribution": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "audit_id": {
        -                      "anyOf": [
        -                        {
        -                          "type": "string"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "description": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "quantity": {
        -                      "minimum": 0,
        -                      "type": "number"
        -                    },
        -                    "rate": {
        -                      "anyOf": [
        -                        {
        -                          "type": "number"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "unit": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "work_section": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    }
        -                  },
        -                  "required": [
        -                    "work_section",
        -                    "description",
        -                    "quantity",
        -                    "unit",
        -                    "attribution"
        -                  ],
        -                  "type": "object"
        -                },
        -                "type": "array"
        -              },
        -              "drawings": {
        -                "anyOf": [
        -                  {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.6 — paid-tier drawing artefact pointer.\n\n`url` is an R2-signed URL; expiry is carried in `_meta.deliverables.expires_at`\non the envelope (not duplicated here). `layers` is DXF-only; PDF/SVG\ncallers omit it.",
        -                      "properties": {
        -                        "drawing_type": {
        -                          "enum": [
        -                            "section",
        -                            "plan",
        -                            "elevation",
        -                            "isometric",
        -                            "detail"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "format": {
        -                          "enum": [
        -                            "DXF",
        -                            "PDF",
        -                            "SVG"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "layers": {
        -                          "anyOf": [
        -                            {
        -                              "items": {
        -                                "type": "string"
        -                              },
        -                              "type": "array"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ],
        -                          "default": null
        -                        },
        -                        "scale": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "sheet_size": {
        -                          "enum": [
        -                            "A1",
        -                            "A2",
        -                            "A3",
        -                            "A4"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "url": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "drawing_type",
        -                        "format",
        -                        "url",
        -                        "sheet_size",
        -                        "scale"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "parameters_used": {
        -                "additionalProperties": false,
        -                "description": "Schema § 1.2 — the parameter snapshot the engine actually used.\n\nSplits user-supplied values from engine defaults so customers can see\nwhich numbers came from them and which the engine filled in. Every\ndefaulted parameter SHOULD have a corresponding entry in `assumptions`\n— the bridge layer enforces this when wrapping engine output.",
        -                "properties": {
        -                  "assumptions": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "engine_defaults": {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  "resolved_from_description": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "additionalProperties": false,
        -                          "description": "Schema § 1.2 — a parameter resolved by the forgiving-input layer.\n\nPopulated by the Track B-Forgiving Haiku-4.5 resolution pass; until that\nlayer lands, instances are constructed only by tests. `source` distinguishes\nthe resolution path so customers can audit which fields were inferred.",
        -                          "properties": {
        -                            "confidence": {
        -                              "anyOf": [
        -                                {
        -                                  "enum": [
        -                                    "high",
        -                                    "medium",
        -                                    "low"
        -                                  ],
        -                                  "type": "string"
        -                                },
        -                                {
        -                                  "type": "null"
        -                                }
        -                              ],
        -                              "default": null
        -                            },
        -                            "field_name": {
        -                              "minLength": 1,
        -                              "type": "string"
        -                            },
        -                            "resolved_value": {},
        -                            "source": {
        -                              "enum": [
        -                                "description_field",
        -                                "haiku_resolution",
        -                                "engine_default"
        -                              ],
        -                              "type": "string"
        -                            }
        -                          },
        -                          "required": [
        -                            "field_name",
        -                            "resolved_value",
        -                            "source"
        -                          ],
        -                          "type": "object"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "user_supplied": {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  }
        -                },
        -                "type": "object"
        -              },
        -              "standard": {
        -                "enum": [
        -                  "CESMM4",
        -                  "NRM2",
        -                  "SMM7",
        -                  "MMHW"
        -                ],
        -                "type": "string"
        -              },
        -              "text_summary": {
        -                "maxLength": 2000,
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "totals_summary": {
        -                "additionalProperties": false,
        -                "description": "Schema § 1.4 — totals_summary as a typed wrapper around the free-form dict.\n\nWire shape is a flat object (`{\"concrete_m3\": {...}, \"rebar_t\": {...}}`).\nWe model it as `RootModel`-equivalent via `model_config(extra=\"allow\")`\n+ a single `__root__`-style `entries` dict. Pydantic v2 recommends\n`RootModel` for free-form roots; using a wrapper class keeps the import\nsurface uniform with the rest of this module.",
        -                "properties": {
        -                  "entries": {
        -                    "additionalProperties": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.4 — single material/work-class total entry.",
        -                      "properties": {
        -                        "quantity": {
        -                          "minimum": 0,
        -                          "type": "number"
        -                        },
        -                        "unit": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "quantity",
        -                        "unit"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "object"
        -                  }
        -                },
        -                "type": "object"
        -              },
        -              "warnings": {
        -                "items": {
        -                  "additionalProperties": false,
        -                  "description": "Schema § 1.8 — a non-fatal geometry advisory (56th-fire T2).\n\nThe wire projection of the engine's `core.GeometryWarning`. Advisory only:\na warning NEVER changes a measured quantity — it flags geometry that is\nvalid but likely a mistake (e.g. a stale dependent-height default). Present\non BOTH tiers — a correctness/safety signal, not a paid feature.",
        -                  "properties": {
        -                    "affected_params": {
        -                      "items": {
        -                        "type": "string"
        -                      },
        -                      "type": "array"
        -                    },
        -                    "code": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "detail": {
        -                      "additionalProperties": {
        -                        "type": "number"
        -                      },
        -                      "type": "object"
        -                    },
        -                    "message": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "severity": {
        -                      "enum": [
        -                        "info",
        -                        "advisory",
        -                        "caution"
        -                      ],
        -                      "type": "string"
        -                    }
        -                  },
        -                  "required": [
        -                    "code",
        -                    "severity",
        -                    "message"
        -                  ],
        -                  "type": "object"
        -                },
        -                "type": "array"
        -              }
        -            },
        -            "required": [
        -              "assembly_slug",
        -              "standard",
        -              "parameters_used",
        -              "boq_rows",
        -              "totals_summary",
        -              "text_summary"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      },
        -      "error": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        -            "properties": {
        -              "code": {
        -                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        -                "enum": [
        -                  "RATE_LIMIT_EXCEEDED",
        -                  "TIER_INSUFFICIENT",
        -                  "INVALID_INPUT",
        -                  "SCHEMA_VERSION_MISMATCH",
        -                  "SCHEMA_INVARIANT_VIOLATION",
        -                  "UPSTREAM_TIMEOUT",
        -                  "BACKEND_FAILURE",
        -                  "IP_BLOCKED",
        -                  "RESOURCE_NOT_FOUND",
        -                  "RENDER_FAILURE",
        -                  "OCR_LOW_CONFIDENCE",
        -                  "MANUAL_REVIEW_REQUIRED",
        -                  "ACCEPTANCE_REQUIRED",
        -                  "INVALID_TOKEN"
        -                ],
        -                "type": "string"
        -              },
        -              "details": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "message": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "recoverable": {
        -                "type": "boolean"
        -              },
        -              "retry_after_seconds": {
        -                "anyOf": [
        -                  {
        -                    "minimum": 0,
        -                    "type": "integer"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              }
        -            },
        -            "required": [
        -              "code",
        -              "message",
        -              "recoverable"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      }
        -    },
        -    "required": [
        -      "_meta"
        -    ],
        -    "type": "object"
        -  },
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "_meta": {
        -        "additionalProperties": false,
        -        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        -        "properties": {
        -          "deliverables": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        -                "properties": {
        -                  "docx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "dxf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "expires_at": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  },
        -                  "pdf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "xlsx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "expires_at"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "document_id": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "issued_at": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "rate_limit_remaining": {
        -            "anyOf": [
        -              {
        -                "minimum": 0,
        -                "type": "integer"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "request_id": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "schema_version": {
        -            "const": "1.0.0",
        -            "default": "1.0.0",
        -            "type": "string"
        -          },
        -          "scope_boundary": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        -                "properties": {
        -                  "not_in_scope": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "produced": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "recommended_companions": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "type": "string"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "produced",
        -                  "not_in_scope"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tier": {
        -            "enum": [
        -              "free",
        -              "paid"
        -            ],
        -            "type": "string"
        -          },
        -          "tier_upgrade": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        -                "properties": {
        -                  "available_tiers": {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        -                      "properties": {
        -                        "billing": {
        -                          "enum": [
        -                            "one_off",
        -                            "monthly",
        -                            "annual"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "currency": {
        -                          "enum": [
        -                            "GBP",
        -                            "SGD",
        -                            "EUR",
        -                            "USD",
        -                            "CAD",
        -                            "AUD",
        -                            "NZD",
        -                            "MYR"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "display_name": {
        -                          "type": "string"
        -                        },
        -                        "price_local": {
        -                          "type": "number"
        -                        },
        -                        "tier_slug": {
        -                          "enum": [
        -                            "7_day_pass",
        -                            "solo",
        -                            "studio",
        -                            "practice"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "unlock_summary": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "tier_slug",
        -                        "display_name",
        -                        "price_local",
        -                        "currency",
        -                        "billing",
        -                        "unlock_summary"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "current_tier": {
        -                    "const": "free",
        -                    "default": "free",
        -                    "type": "string"
        -                  },
        -                  "pass_credit": {
        -                    "anyOf": [
        -                      {
        -                        "additionalProperties": false,
        -                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        -                        "properties": {
        -                          "amount_local": {
        -                            "type": "number"
        -                          },
        -                          "applies_to": {
        -                            "const": "solo_first_month",
        -                            "default": "solo_first_month",
        -                            "type": "string"
        -                          },
        -                          "currency": {
        -                            "type": "string"
        -                          },
        -                          "redeemable_until": {
        -                            "type": "string"
        -                          }
        -                        },
        -                        "required": [
        -                          "amount_local",
        -                          "currency",
        -                          "redeemable_until"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "pricing_url": {
        -                    "default": "https://civilquants.com/pricing",
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "available_tiers"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tos_url": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "upgrade_hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "warranty_disclaimer": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          }
        -        },
        -        "required": [
        -          "request_id",
        -          "issued_at",
        -          "tier"
        -        ],
        -        "type": "object"
        -      },
        -      "data": {
        -        "default": null,
        -        "title": "Data"
        -      },
        -      "error": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        -            "properties": {
        -              "code": {
        -                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        -                "enum": [
        -                  "RATE_LIMIT_EXCEEDED",
        -                  "TIER_INSUFFICIENT",
        -                  "INVALID_INPUT",
        -                  "SCHEMA_VERSION_MISMATCH",
        -                  "SCHEMA_INVARIANT_VIOLATION",
        -                  "UPSTREAM_TIMEOUT",
        -                  "BACKEND_FAILURE",
        -                  "IP_BLOCKED",
        -                  "RESOURCE_NOT_FOUND",
        -                  "RENDER_FAILURE",
        -                  "OCR_LOW_CONFIDENCE",
        -                  "MANUAL_REVIEW_REQUIRED",
        -                  "ACCEPTANCE_REQUIRED",
        -                  "INVALID_TOKEN"
        -                ],
        -                "type": "string"
        -              },
        -              "details": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "message": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "recoverable": {
        -                "type": "boolean"
        -              },
        -              "retry_after_seconds": {
        -                "anyOf": [
        -                  {
        -                    "minimum": 0,
        -                    "type": "integer"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              }
        -            },
        -            "required": [
        -              "code",
        -              "message",
        -              "recoverable"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      }
        -    },
        -    "required": [
        -      "_meta"
        -    ],
        -    "type": "object"
        -  }
        -]New value: +[
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "_meta": {
        +        "additionalProperties": false,
        +        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        +        "properties": {
        +          "deliverables": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        +                "properties": {
        +                  "docx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "dxf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "expires_at": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  },
        +                  "pdf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "xlsx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "expires_at"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "document_id": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "issued_at": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "rate_limit_remaining": {
        +            "anyOf": [
        +              {
        +                "minimum": 0,
        +                "type": "integer"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "request_id": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "schema_version": {
        +            "const": "1.0.0",
        +            "default": "1.0.0",
        +            "type": "string"
        +          },
        +          "scope_boundary": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        +                "properties": {
        +                  "not_in_scope": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "produced": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "recommended_companions": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "type": "string"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "produced",
        +                  "not_in_scope"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tier": {
        +            "enum": [
        +              "free",
        +              "paid"
        +            ],
        +            "type": "string"
        +          },
        +          "tier_upgrade": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        +                "properties": {
        +                  "available_tiers": {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        +                      "properties": {
        +                        "billing": {
        +                          "enum": [
        +                            "one_off",
        +                            "monthly",
        +                            "annual"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "currency": {
        +                          "enum": [
        +                            "GBP",
        +                            "SGD",
        +                            "EUR",
        +                            "USD",
        +                            "CAD",
        +                            "AUD",
        +                            "NZD",
        +                            "MYR"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "display_name": {
        +                          "type": "string"
        +                        },
        +                        "price_local": {
        +                          "type": "number"
        +                        },
        +                        "tier_slug": {
        +                          "enum": [
        +                            "7_day_pass",
        +                            "solo",
        +                            "studio",
        +                            "practice"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "unlock_summary": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "tier_slug",
        +                        "display_name",
        +                        "price_local",
        +                        "currency",
        +                        "billing",
        +                        "unlock_summary"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "current_tier": {
        +                    "const": "free",
        +                    "default": "free",
        +                    "type": "string"
        +                  },
        +                  "pass_credit": {
        +                    "anyOf": [
        +                      {
        +                        "additionalProperties": false,
        +                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        +                        "properties": {
        +                          "amount_local": {
        +                            "type": "number"
        +                          },
        +                          "applies_to": {
        +                            "const": "solo_first_month",
        +                            "default": "solo_first_month",
        +                            "type": "string"
        +                          },
        +                          "currency": {
        +                            "type": "string"
        +                          },
        +                          "redeemable_until": {
        +                            "type": "string"
        +                          }
        +                        },
        +                        "required": [
        +                          "amount_local",
        +                          "currency",
        +                          "redeemable_until"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "pricing_url": {
        +                    "default": "https://civilquants.com/pricing",
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "available_tiers"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tos_url": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "upgrade_hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "warranty_disclaimer": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          }
        +        },
        +        "required": [
        +          "request_id",
        +          "issued_at",
        +          "tier"
        +        ],
        +        "type": "object"
        +      },
        +      "data": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Schema § 1.1 — the typed payload returned inside `MCPResponse[ComputeResult]`.\n\nFree-tier responses omit `drawings` (the downloadable CAD artefact\npointers — the paid differentiator); the bridge enforces this. The\n`audit_trail` and the inline `drawing` preview are present on BOTH tiers\n(V1 ALIGN / 60th-fire D + C). `text_summary` is bounded to 2000 chars —\nkeeps the LLM-facing summary token-cheap and forces longer narrative into\nBoQ row descriptions where it belongs. `warnings` is the non-fatal\ngeometry advisory list (both tiers).",
        +            "properties": {
        +              "assembly_slug": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "audit_trail": {
        +                "anyOf": [
        +                  {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.7 — paid-tier audit-trail entry.\n\nOne entry per BoQ row; `boq_row_index` ties to the row position in\n`ComputeResult.boq_rows`. `derivation` is the human-readable formula\nwalk-through; `formula` is the optional formal expression.",
        +                      "properties": {
        +                        "boq_row_index": {
        +                          "minimum": 0,
        +                          "type": "integer"
        +                        },
        +                        "derivation": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "formula": {
        +                          "anyOf": [
        +                            {
        +                              "type": "string"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ],
        +                          "default": null
        +                        },
        +                        "id": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "parameters_referenced": {
        +                          "items": {
        +                            "type": "string"
        +                          },
        +                          "type": "array"
        +                        }
        +                      },
        +                      "required": [
        +                        "id",
        +                        "boq_row_index",
        +                        "derivation"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "boq_rows": {
        +                "items": {
        +                  "additionalProperties": false,
        +                  "description": "Schema § 1.3 — a single bill row in the requested standard's format.\n\n`description` is the non-verbatim functional description per spec § 13.9 /\n§ 15 invariant — NEVER reproduces a standard's verbatim clause text.\n`rate` / `amount` ship null because rates are commodity data the customer\nowns; the engine's job is the measurement, not the pricing.",
        +                  "properties": {
        +                    "amount": {
        +                      "anyOf": [
        +                        {
        +                          "type": "number"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "attribution": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "audit_id": {
        +                      "anyOf": [
        +                        {
        +                          "type": "string"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "description": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "quantity": {
        +                      "minimum": 0,
        +                      "type": "number"
        +                    },
        +                    "rate": {
        +                      "anyOf": [
        +                        {
        +                          "type": "number"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "unit": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "work_section": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    }
        +                  },
        +                  "required": [
        +                    "work_section",
        +                    "description",
        +                    "quantity",
        +                    "unit",
        +                    "attribution"
        +                  ],
        +                  "type": "object"
        +                },
        +                "type": "array"
        +              },
        +              "drawing": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": false,
        +                    "description": "Schema § 1.6a — inline server-rendered SVG preview of the geometry.\n\nThe MCP mirror of the web ``/compute`` response's ``drawing`` field\n(``api.schemas.compute.DrawingRef``): the same on-screen dimensioned\ndrawing both tiers see in the workspace, surfaced on the MCP compute\nresponse so a chat client can render it inline (60th-fire item C). This\nis the on-screen preview — present on BOTH tiers per the free/paid\nboundary; the downloadable CAD artefacts (DXF / dimensioned PDF) remain\nthe paid differentiator via the export tools.\n\nDefined here rather than importing ``DrawingRef`` because the web\n``schemas`` package imports back into this module (``schemas.render``),\nso reusing it would create an import cycle — the MCP wire contract keeps\nits own copy, the same pattern as ``BoQRow`` / ``DrawingReference``.",
        +                    "properties": {
        +                      "entity_count": {
        +                        "minimum": 0,
        +                        "type": "integer"
        +                      },
        +                      "svg_b64": {
        +                        "minLength": 1,
        +                        "type": "string"
        +                      },
        +                      "unit_of_drawing": {
        +                        "const": "m",
        +                        "default": "m",
        +                        "type": "string"
        +                      },
        +                      "viewbox_height": {
        +                        "exclusiveMinimum": 0,
        +                        "type": "number"
        +                      },
        +                      "viewbox_width": {
        +                        "exclusiveMinimum": 0,
        +                        "type": "number"
        +                      },
        +                      "viewbox_x": {
        +                        "type": "number"
        +                      },
        +                      "viewbox_y": {
        +                        "type": "number"
        +                      }
        +                    },
        +                    "required": [
        +                      "svg_b64",
        +                      "viewbox_x",
        +                      "viewbox_y",
        +                      "viewbox_width",
        +                      "viewbox_height",
        +                      "entity_count"
        +                    ],
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "drawings": {
        +                "anyOf": [
        +                  {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.6 — paid-tier drawing artefact pointer.\n\n`url` is an R2-signed URL; expiry is carried in `_meta.deliverables.expires_at`\non the envelope (not duplicated here). `layers` is DXF-only; PDF/SVG\ncallers omit it.",
        +                      "properties": {
        +                        "drawing_type": {
        +                          "enum": [
        +                            "section",
        +                            "plan",
        +                            "elevation",
        +                            "isometric",
        +                            "detail"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "format": {
        +                          "enum": [
        +                            "DXF",
        +                            "PDF",
        +                            "SVG"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "layers": {
        +                          "anyOf": [
        +                            {
        +                              "items": {
        +                                "type": "string"
        +                              },
        +                              "type": "array"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ],
        +                          "default": null
        +                        },
        +                        "scale": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "sheet_size": {
        +                          "enum": [
        +                            "A1",
        +                            "A2",
        +                            "A3",
        +                            "A4"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "url": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "drawing_type",
        +                        "format",
        +                        "url",
        +                        "sheet_size",
        +                        "scale"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "parameters_used": {
        +                "additionalProperties": false,
        +                "description": "Schema § 1.2 — the parameter snapshot the engine actually used.\n\nSplits user-supplied values from engine defaults so customers can see\nwhich numbers came from them and which the engine filled in. Every\ndefaulted parameter SHOULD have a corresponding entry in `assumptions`\n— the bridge layer enforces this when wrapping engine output.",
        +                "properties": {
        +                  "assumptions": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "engine_defaults": {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  "resolved_from_description": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "additionalProperties": false,
        +                          "description": "Schema § 1.2 — a parameter resolved by the forgiving-input layer.\n\nPopulated by the Track B-Forgiving Haiku-4.5 resolution pass; until that\nlayer lands, instances are constructed only by tests. `source` distinguishes\nthe resolution path so customers can audit which fields were inferred.",
        +                          "properties": {
        +                            "confidence": {
        +                              "anyOf": [
        +                                {
        +                                  "enum": [
        +                                    "high",
        +                                    "medium",
        +                                    "low"
        +                                  ],
        +                                  "type": "string"
        +                                },
        +                                {
        +                                  "type": "null"
        +                                }
        +                              ],
        +                              "default": null
        +                            },
        +                            "field_name": {
        +                              "minLength": 1,
        +                              "type": "string"
        +                            },
        +                            "resolved_value": {},
        +                            "source": {
        +                              "enum": [
        +                                "description_field",
        +                                "haiku_resolution",
        +                                "engine_default"
        +                              ],
        +                              "type": "string"
        +                            }
        +                          },
        +                          "required": [
        +                            "field_name",
        +                            "resolved_value",
        +                            "source"
        +                          ],
        +                          "type": "object"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "user_supplied": {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  }
        +                },
        +                "type": "object"
        +              },
        +              "standard": {
        +                "enum": [
        +                  "CESMM4",
        +                  "NRM2",
        +                  "SMM7",
        +                  "MMHW"
        +                ],
        +                "type": "string"
        +              },
        +              "text_summary": {
        +                "maxLength": 2000,
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "totals_summary": {
        +                "additionalProperties": false,
        +                "description": "Schema § 1.4 — totals_summary as a typed wrapper around the free-form dict.\n\nWire shape is a flat object (`{\"concrete_m3\": {...}, \"rebar_t\": {...}}`).\nWe model it as `RootModel`-equivalent via `model_config(extra=\"allow\")`\n+ a single `__root__`-style `entries` dict. Pydantic v2 recommends\n`RootModel` for free-form roots; using a wrapper class keeps the import\nsurface uniform with the rest of this module.",
        +                "properties": {
        +                  "entries": {
        +                    "additionalProperties": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.4 — single material/work-class total entry.",
        +                      "properties": {
        +                        "quantity": {
        +                          "minimum": 0,
        +                          "type": "number"
        +                        },
        +                        "unit": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "quantity",
        +                        "unit"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "object"
        +                  }
        +                },
        +                "type": "object"
        +              },
        +              "warnings": {
        +                "items": {
        +                  "additionalProperties": false,
        +                  "description": "Schema § 1.8 — a non-fatal geometry advisory (56th-fire T2).\n\nThe wire projection of the engine's `core.GeometryWarning`. Advisory only:\na warning NEVER changes a measured quantity — it flags geometry that is\nvalid but likely a mistake (e.g. a stale dependent-height default). Present\non BOTH tiers — a correctness/safety signal, not a paid feature.",
        +                  "properties": {
        +                    "affected_params": {
        +                      "items": {
        +                        "type": "string"
        +                      },
        +                      "type": "array"
        +                    },
        +                    "code": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "detail": {
        +                      "additionalProperties": {
        +                        "type": "number"
        +                      },
        +                      "type": "object"
        +                    },
        +                    "message": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "severity": {
        +                      "enum": [
        +                        "info",
        +                        "advisory",
        +                        "caution"
        +                      ],
        +                      "type": "string"
        +                    }
        +                  },
        +                  "required": [
        +                    "code",
        +                    "severity",
        +                    "message"
        +                  ],
        +                  "type": "object"
        +                },
        +                "type": "array"
        +              }
        +            },
        +            "required": [
        +              "assembly_slug",
        +              "standard",
        +              "parameters_used",
        +              "boq_rows",
        +              "totals_summary",
        +              "text_summary"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      },
        +      "error": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        +            "properties": {
        +              "code": {
        +                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        +                "enum": [
        +                  "RATE_LIMIT_EXCEEDED",
        +                  "TIER_INSUFFICIENT",
        +                  "INVALID_INPUT",
        +                  "SCHEMA_VERSION_MISMATCH",
        +                  "SCHEMA_INVARIANT_VIOLATION",
        +                  "UPSTREAM_TIMEOUT",
        +                  "BACKEND_FAILURE",
        +                  "IP_BLOCKED",
        +                  "RESOURCE_NOT_FOUND",
        +                  "RENDER_FAILURE",
        +                  "OCR_LOW_CONFIDENCE",
        +                  "MANUAL_REVIEW_REQUIRED",
        +                  "ACCEPTANCE_REQUIRED",
        +                  "INVALID_TOKEN"
        +                ],
        +                "type": "string"
        +              },
        +              "details": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "message": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "recoverable": {
        +                "type": "boolean"
        +              },
        +              "retry_after_seconds": {
        +                "anyOf": [
        +                  {
        +                    "minimum": 0,
        +                    "type": "integer"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              }
        +            },
        +            "required": [
        +              "code",
        +              "message",
        +              "recoverable"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      }
        +    },
        +    "required": [
        +      "_meta"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "_meta": {
        +        "additionalProperties": false,
        +        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        +        "properties": {
        +          "deliverables": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        +                "properties": {
        +                  "docx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "dxf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "expires_at": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  },
        +                  "pdf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "xlsx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "expires_at"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "document_id": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "issued_at": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "rate_limit_remaining": {
        +            "anyOf": [
        +              {
        +                "minimum": 0,
        +                "type": "integer"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "request_id": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "schema_version": {
        +            "const": "1.0.0",
        +            "default": "1.0.0",
        +            "type": "string"
        +          },
        +          "scope_boundary": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        +                "properties": {
        +                  "not_in_scope": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "produced": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "recommended_companions": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "type": "string"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "produced",
        +                  "not_in_scope"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tier": {
        +            "enum": [
        +              "free",
        +              "paid"
        +            ],
        +            "type": "string"
        +          },
        +          "tier_upgrade": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        +                "properties": {
        +                  "available_tiers": {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        +                      "properties": {
        +                        "billing": {
        +                          "enum": [
        +                            "one_off",
        +                            "monthly",
        +                            "annual"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "currency": {
        +                          "enum": [
        +                            "GBP",
        +                            "SGD",
        +                            "EUR",
        +                            "USD",
        +                            "CAD",
        +                            "AUD",
        +                            "NZD",
        +                            "MYR"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "display_name": {
        +                          "type": "string"
        +                        },
        +                        "price_local": {
        +                          "type": "number"
        +                        },
        +                        "tier_slug": {
        +                          "enum": [
        +                            "7_day_pass",
        +                            "solo",
        +                            "studio",
        +                            "practice"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "unlock_summary": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "tier_slug",
        +                        "display_name",
        +                        "price_local",
        +                        "currency",
        +                        "billing",
        +                        "unlock_summary"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "current_tier": {
        +                    "const": "free",
        +                    "default": "free",
        +                    "type": "string"
        +                  },
        +                  "pass_credit": {
        +                    "anyOf": [
        +                      {
        +                        "additionalProperties": false,
        +                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        +                        "properties": {
        +                          "amount_local": {
        +                            "type": "number"
        +                          },
        +                          "applies_to": {
        +                            "const": "solo_first_month",
        +                            "default": "solo_first_month",
        +                            "type": "string"
        +                          },
        +                          "currency": {
        +                            "type": "string"
        +                          },
        +                          "redeemable_until": {
        +                            "type": "string"
        +                          }
        +                        },
        +                        "required": [
        +                          "amount_local",
        +                          "currency",
        +                          "redeemable_until"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "pricing_url": {
        +                    "default": "https://civilquants.com/pricing",
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "available_tiers"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tos_url": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "upgrade_hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "warranty_disclaimer": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          }
        +        },
        +        "required": [
        +          "request_id",
        +          "issued_at",
        +          "tier"
        +        ],
        +        "type": "object"
        +      },
        +      "data": {
        +        "default": null,
        +        "title": "Data"
        +      },
        +      "error": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        +            "properties": {
        +              "code": {
        +                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        +                "enum": [
        +                  "RATE_LIMIT_EXCEEDED",
        +                  "TIER_INSUFFICIENT",
        +                  "INVALID_INPUT",
        +                  "SCHEMA_VERSION_MISMATCH",
        +                  "SCHEMA_INVARIANT_VIOLATION",
        +                  "UPSTREAM_TIMEOUT",
        +                  "BACKEND_FAILURE",
        +                  "IP_BLOCKED",
        +                  "RESOURCE_NOT_FOUND",
        +                  "RENDER_FAILURE",
        +                  "OCR_LOW_CONFIDENCE",
        +                  "MANUAL_REVIEW_REQUIRED",
        +                  "ACCEPTANCE_REQUIRED",
        +                  "INVALID_TOKEN"
        +                ],
        +                "type": "string"
        +              },
        +              "details": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "message": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "recoverable": {
        +                "type": "boolean"
        +              },
        +              "retry_after_seconds": {
        +                "anyOf": [
        +                  {
        +                    "minimum": 0,
        +                    "type": "integer"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              }
        +            },
        +            "required": [
        +              "code",
        +              "message",
        +              "recoverable"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      }
        +    },
        +    "required": [
        +      "_meta"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedcompute_carrier_pipe_run3 fields changed
      • addedInput schema / properties / deliverables
        Added value: +{
        +  "anyOf": [
        +    {
        +      "items": {
        +        "const": "xlsx",
        +        "type": "string"
        +      },
        +      "type": "array"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null
        +}
      • addedInput schema / properties / output_mode
        Added value: +{
        +  "default": "full_json",
        +  "enum": [
        +    "summary",
        +    "boq",
        +    "boq_with_backup",
        +    "full_json"
        +  ],
        +  "type": "string"
        +}
      • changedOutput schema / properties / result / anyOf
        Previous value: -[
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "_meta": {
        -        "additionalProperties": false,
        -        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        -        "properties": {
        -          "deliverables": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        -                "properties": {
        -                  "docx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "dxf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "expires_at": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  },
        -                  "pdf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "xlsx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "expires_at"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "document_id": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "issued_at": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "rate_limit_remaining": {
        -            "anyOf": [
        -              {
        -                "minimum": 0,
        -                "type": "integer"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "request_id": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "schema_version": {
        -            "const": "1.0.0",
        -            "default": "1.0.0",
        -            "type": "string"
        -          },
        -          "scope_boundary": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        -                "properties": {
        -                  "not_in_scope": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "produced": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "recommended_companions": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "type": "string"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "produced",
        -                  "not_in_scope"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tier": {
        -            "enum": [
        -              "free",
        -              "paid"
        -            ],
        -            "type": "string"
        -          },
        -          "tier_upgrade": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        -                "properties": {
        -                  "available_tiers": {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        -                      "properties": {
        -                        "billing": {
        -                          "enum": [
        -                            "one_off",
        -                            "monthly",
        -                            "annual"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "currency": {
        -                          "enum": [
        -                            "GBP",
        -                            "SGD",
        -                            "EUR",
        -                            "USD",
        -                            "CAD",
        -                            "AUD",
        -                            "NZD",
        -                            "MYR"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "display_name": {
        -                          "type": "string"
        -                        },
        -                        "price_local": {
        -                          "type": "number"
        -                        },
        -                        "tier_slug": {
        -                          "enum": [
        -                            "7_day_pass",
        -                            "solo",
        -                            "studio",
        -                            "practice"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "unlock_summary": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "tier_slug",
        -                        "display_name",
        -                        "price_local",
        -                        "currency",
        -                        "billing",
        -                        "unlock_summary"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "current_tier": {
        -                    "const": "free",
        -                    "default": "free",
        -                    "type": "string"
        -                  },
        -                  "pass_credit": {
        -                    "anyOf": [
        -                      {
        -                        "additionalProperties": false,
        -                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        -                        "properties": {
        -                          "amount_local": {
        -                            "type": "number"
        -                          },
        -                          "applies_to": {
        -                            "const": "solo_first_month",
        -                            "default": "solo_first_month",
        -                            "type": "string"
        -                          },
        -                          "currency": {
        -                            "type": "string"
        -                          },
        -                          "redeemable_until": {
        -                            "type": "string"
        -                          }
        -                        },
        -                        "required": [
        -                          "amount_local",
        -                          "currency",
        -                          "redeemable_until"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "pricing_url": {
        -                    "default": "https://civilquants.com/pricing",
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "available_tiers"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tos_url": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "upgrade_hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "warranty_disclaimer": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          }
        -        },
        -        "required": [
        -          "request_id",
        -          "issued_at",
        -          "tier"
        -        ],
        -        "type": "object"
        -      },
        -      "data": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Schema § 1.1 — the typed payload returned inside `MCPResponse[ComputeResult]`.\n\nFree-tier responses MUST omit `drawings` and `audit_trail` (the bridge\nenforces this); paid-tier responses populate both. `text_summary` is\nbounded to 2000 chars — keeps the LLM-facing summary token-cheap and\nforces longer narrative into BoQ row descriptions where it belongs.\n`warnings` is the non-fatal geometry advisory list (both tiers).",
        -            "properties": {
        -              "assembly_slug": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "audit_trail": {
        -                "anyOf": [
        -                  {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.7 — paid-tier audit-trail entry.\n\nOne entry per BoQ row; `boq_row_index` ties to the row position in\n`ComputeResult.boq_rows`. `derivation` is the human-readable formula\nwalk-through; `formula` is the optional formal expression.",
        -                      "properties": {
        -                        "boq_row_index": {
        -                          "minimum": 0,
        -                          "type": "integer"
        -                        },
        -                        "derivation": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "formula": {
        -                          "anyOf": [
        -                            {
        -                              "type": "string"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ],
        -                          "default": null
        -                        },
        -                        "id": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "parameters_referenced": {
        -                          "items": {
        -                            "type": "string"
        -                          },
        -                          "type": "array"
        -                        }
        -                      },
        -                      "required": [
        -                        "id",
        -                        "boq_row_index",
        -                        "derivation"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "boq_rows": {
        -                "items": {
        -                  "additionalProperties": false,
        -                  "description": "Schema § 1.3 — a single bill row in the requested standard's format.\n\n`description` is the non-verbatim functional description per spec § 13.9 /\n§ 15 invariant — NEVER reproduces a standard's verbatim clause text.\n`rate` / `amount` ship null because rates are commodity data the customer\nowns; the engine's job is the measurement, not the pricing.",
        -                  "properties": {
        -                    "amount": {
        -                      "anyOf": [
        -                        {
        -                          "type": "number"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "attribution": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "audit_id": {
        -                      "anyOf": [
        -                        {
        -                          "type": "string"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "description": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "quantity": {
        -                      "minimum": 0,
        -                      "type": "number"
        -                    },
        -                    "rate": {
        -                      "anyOf": [
        -                        {
        -                          "type": "number"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "unit": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "work_section": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    }
        -                  },
        -                  "required": [
        -                    "work_section",
        -                    "description",
        -                    "quantity",
        -                    "unit",
        -                    "attribution"
        -                  ],
        -                  "type": "object"
        -                },
        -                "type": "array"
        -              },
        -              "drawings": {
        -                "anyOf": [
        -                  {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.6 — paid-tier drawing artefact pointer.\n\n`url` is an R2-signed URL; expiry is carried in `_meta.deliverables.expires_at`\non the envelope (not duplicated here). `layers` is DXF-only; PDF/SVG\ncallers omit it.",
        -                      "properties": {
        -                        "drawing_type": {
        -                          "enum": [
        -                            "section",
        -                            "plan",
        -                            "elevation",
        -                            "isometric",
        -                            "detail"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "format": {
        -                          "enum": [
        -                            "DXF",
        -                            "PDF",
        -                            "SVG"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "layers": {
        -                          "anyOf": [
        -                            {
        -                              "items": {
        -                                "type": "string"
        -                              },
        -                              "type": "array"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ],
        -                          "default": null
        -                        },
        -                        "scale": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "sheet_size": {
        -                          "enum": [
        -                            "A1",
        -                            "A2",
        -                            "A3",
        -                            "A4"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "url": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "drawing_type",
        -                        "format",
        -                        "url",
        -                        "sheet_size",
        -                        "scale"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "parameters_used": {
        -                "additionalProperties": false,
        -                "description": "Schema § 1.2 — the parameter snapshot the engine actually used.\n\nSplits user-supplied values from engine defaults so customers can see\nwhich numbers came from them and which the engine filled in. Every\ndefaulted parameter SHOULD have a corresponding entry in `assumptions`\n— the bridge layer enforces this when wrapping engine output.",
        -                "properties": {
        -                  "assumptions": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "engine_defaults": {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  "resolved_from_description": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "additionalProperties": false,
        -                          "description": "Schema § 1.2 — a parameter resolved by the forgiving-input layer.\n\nPopulated by the Track B-Forgiving Haiku-4.5 resolution pass; until that\nlayer lands, instances are constructed only by tests. `source` distinguishes\nthe resolution path so customers can audit which fields were inferred.",
        -                          "properties": {
        -                            "confidence": {
        -                              "anyOf": [
        -                                {
        -                                  "enum": [
        -                                    "high",
        -                                    "medium",
        -                                    "low"
        -                                  ],
        -                                  "type": "string"
        -                                },
        -                                {
        -                                  "type": "null"
        -                                }
        -                              ],
        -                              "default": null
        -                            },
        -                            "field_name": {
        -                              "minLength": 1,
        -                              "type": "string"
        -                            },
        -                            "resolved_value": {},
        -                            "source": {
        -                              "enum": [
        -                                "description_field",
        -                                "haiku_resolution",
        -                                "engine_default"
        -                              ],
        -                              "type": "string"
        -                            }
        -                          },
        -                          "required": [
        -                            "field_name",
        -                            "resolved_value",
        -                            "source"
        -                          ],
        -                          "type": "object"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "user_supplied": {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  }
        -                },
        -                "type": "object"
        -              },
        -              "standard": {
        -                "enum": [
        -                  "CESMM4",
        -                  "NRM2",
        -                  "SMM7",
        -                  "MMHW"
        -                ],
        -                "type": "string"
        -              },
        -              "text_summary": {
        -                "maxLength": 2000,
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "totals_summary": {
        -                "additionalProperties": false,
        -                "description": "Schema § 1.4 — totals_summary as a typed wrapper around the free-form dict.\n\nWire shape is a flat object (`{\"concrete_m3\": {...}, \"rebar_t\": {...}}`).\nWe model it as `RootModel`-equivalent via `model_config(extra=\"allow\")`\n+ a single `__root__`-style `entries` dict. Pydantic v2 recommends\n`RootModel` for free-form roots; using a wrapper class keeps the import\nsurface uniform with the rest of this module.",
        -                "properties": {
        -                  "entries": {
        -                    "additionalProperties": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.4 — single material/work-class total entry.",
        -                      "properties": {
        -                        "quantity": {
        -                          "minimum": 0,
        -                          "type": "number"
        -                        },
        -                        "unit": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "quantity",
        -                        "unit"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "object"
        -                  }
        -                },
        -                "type": "object"
        -              },
        -              "warnings": {
        -                "items": {
        -                  "additionalProperties": false,
        -                  "description": "Schema § 1.8 — a non-fatal geometry advisory (56th-fire T2).\n\nThe wire projection of the engine's `core.GeometryWarning`. Advisory only:\na warning NEVER changes a measured quantity — it flags geometry that is\nvalid but likely a mistake (e.g. a stale dependent-height default). Present\non BOTH tiers — a correctness/safety signal, not a paid feature.",
        -                  "properties": {
        -                    "affected_params": {
        -                      "items": {
        -                        "type": "string"
        -                      },
        -                      "type": "array"
        -                    },
        -                    "code": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "detail": {
        -                      "additionalProperties": {
        -                        "type": "number"
        -                      },
        -                      "type": "object"
        -                    },
        -                    "message": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "severity": {
        -                      "enum": [
        -                        "info",
        -                        "advisory",
        -                        "caution"
        -                      ],
        -                      "type": "string"
        -                    }
        -                  },
        -                  "required": [
        -                    "code",
        -                    "severity",
        -                    "message"
        -                  ],
        -                  "type": "object"
        -                },
        -                "type": "array"
        -              }
        -            },
        -            "required": [
        -              "assembly_slug",
        -              "standard",
        -              "parameters_used",
        -              "boq_rows",
        -              "totals_summary",
        -              "text_summary"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      },
        -      "error": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        -            "properties": {
        -              "code": {
        -                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        -                "enum": [
        -                  "RATE_LIMIT_EXCEEDED",
        -                  "TIER_INSUFFICIENT",
        -                  "INVALID_INPUT",
        -                  "SCHEMA_VERSION_MISMATCH",
        -                  "SCHEMA_INVARIANT_VIOLATION",
        -                  "UPSTREAM_TIMEOUT",
        -                  "BACKEND_FAILURE",
        -                  "IP_BLOCKED",
        -                  "RESOURCE_NOT_FOUND",
        -                  "RENDER_FAILURE",
        -                  "OCR_LOW_CONFIDENCE",
        -                  "MANUAL_REVIEW_REQUIRED",
        -                  "ACCEPTANCE_REQUIRED",
        -                  "INVALID_TOKEN"
        -                ],
        -                "type": "string"
        -              },
        -              "details": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "message": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "recoverable": {
        -                "type": "boolean"
        -              },
        -              "retry_after_seconds": {
        -                "anyOf": [
        -                  {
        -                    "minimum": 0,
        -                    "type": "integer"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              }
        -            },
        -            "required": [
        -              "code",
        -              "message",
        -              "recoverable"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      }
        -    },
        -    "required": [
        -      "_meta"
        -    ],
        -    "type": "object"
        -  },
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "_meta": {
        -        "additionalProperties": false,
        -        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        -        "properties": {
        -          "deliverables": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        -                "properties": {
        -                  "docx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "dxf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "expires_at": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  },
        -                  "pdf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "xlsx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "expires_at"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "document_id": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "issued_at": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "rate_limit_remaining": {
        -            "anyOf": [
        -              {
        -                "minimum": 0,
        -                "type": "integer"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "request_id": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "schema_version": {
        -            "const": "1.0.0",
        -            "default": "1.0.0",
        -            "type": "string"
        -          },
        -          "scope_boundary": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        -                "properties": {
        -                  "not_in_scope": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "produced": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "recommended_companions": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "type": "string"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "produced",
        -                  "not_in_scope"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tier": {
        -            "enum": [
        -              "free",
        -              "paid"
        -            ],
        -            "type": "string"
        -          },
        -          "tier_upgrade": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        -                "properties": {
        -                  "available_tiers": {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        -                      "properties": {
        -                        "billing": {
        -                          "enum": [
        -                            "one_off",
        -                            "monthly",
        -                            "annual"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "currency": {
        -                          "enum": [
        -                            "GBP",
        -                            "SGD",
        -                            "EUR",
        -                            "USD",
        -                            "CAD",
        -                            "AUD",
        -                            "NZD",
        -                            "MYR"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "display_name": {
        -                          "type": "string"
        -                        },
        -                        "price_local": {
        -                          "type": "number"
        -                        },
        -                        "tier_slug": {
        -                          "enum": [
        -                            "7_day_pass",
        -                            "solo",
        -                            "studio",
        -                            "practice"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "unlock_summary": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "tier_slug",
        -                        "display_name",
        -                        "price_local",
        -                        "currency",
        -                        "billing",
        -                        "unlock_summary"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "current_tier": {
        -                    "const": "free",
        -                    "default": "free",
        -                    "type": "string"
        -                  },
        -                  "pass_credit": {
        -                    "anyOf": [
        -                      {
        -                        "additionalProperties": false,
        -                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        -                        "properties": {
        -                          "amount_local": {
        -                            "type": "number"
        -                          },
        -                          "applies_to": {
        -                            "const": "solo_first_month",
        -                            "default": "solo_first_month",
        -                            "type": "string"
        -                          },
        -                          "currency": {
        -                            "type": "string"
        -                          },
        -                          "redeemable_until": {
        -                            "type": "string"
        -                          }
        -                        },
        -                        "required": [
        -                          "amount_local",
        -                          "currency",
        -                          "redeemable_until"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "pricing_url": {
        -                    "default": "https://civilquants.com/pricing",
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "available_tiers"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tos_url": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "upgrade_hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "warranty_disclaimer": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          }
        -        },
        -        "required": [
        -          "request_id",
        -          "issued_at",
        -          "tier"
        -        ],
        -        "type": "object"
        -      },
        -      "data": {
        -        "default": null,
        -        "title": "Data"
        -      },
        -      "error": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        -            "properties": {
        -              "code": {
        -                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        -                "enum": [
        -                  "RATE_LIMIT_EXCEEDED",
        -                  "TIER_INSUFFICIENT",
        -                  "INVALID_INPUT",
        -                  "SCHEMA_VERSION_MISMATCH",
        -                  "SCHEMA_INVARIANT_VIOLATION",
        -                  "UPSTREAM_TIMEOUT",
        -                  "BACKEND_FAILURE",
        -                  "IP_BLOCKED",
        -                  "RESOURCE_NOT_FOUND",
        -                  "RENDER_FAILURE",
        -                  "OCR_LOW_CONFIDENCE",
        -                  "MANUAL_REVIEW_REQUIRED",
        -                  "ACCEPTANCE_REQUIRED",
        -                  "INVALID_TOKEN"
        -                ],
        -                "type": "string"
        -              },
        -              "details": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "message": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "recoverable": {
        -                "type": "boolean"
        -              },
        -              "retry_after_seconds": {
        -                "anyOf": [
        -                  {
        -                    "minimum": 0,
        -                    "type": "integer"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              }
        -            },
        -            "required": [
        -              "code",
        -              "message",
        -              "recoverable"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      }
        -    },
        -    "required": [
        -      "_meta"
        -    ],
        -    "type": "object"
        -  }
        -]New value: +[
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "_meta": {
        +        "additionalProperties": false,
        +        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        +        "properties": {
        +          "deliverables": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        +                "properties": {
        +                  "docx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "dxf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "expires_at": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  },
        +                  "pdf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "xlsx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "expires_at"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "document_id": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "issued_at": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "rate_limit_remaining": {
        +            "anyOf": [
        +              {
        +                "minimum": 0,
        +                "type": "integer"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "request_id": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "schema_version": {
        +            "const": "1.0.0",
        +            "default": "1.0.0",
        +            "type": "string"
        +          },
        +          "scope_boundary": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        +                "properties": {
        +                  "not_in_scope": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "produced": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "recommended_companions": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "type": "string"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "produced",
        +                  "not_in_scope"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tier": {
        +            "enum": [
        +              "free",
        +              "paid"
        +            ],
        +            "type": "string"
        +          },
        +          "tier_upgrade": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        +                "properties": {
        +                  "available_tiers": {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        +                      "properties": {
        +                        "billing": {
        +                          "enum": [
        +                            "one_off",
        +                            "monthly",
        +                            "annual"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "currency": {
        +                          "enum": [
        +                            "GBP",
        +                            "SGD",
        +                            "EUR",
        +                            "USD",
        +                            "CAD",
        +                            "AUD",
        +                            "NZD",
        +                            "MYR"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "display_name": {
        +                          "type": "string"
        +                        },
        +                        "price_local": {
        +                          "type": "number"
        +                        },
        +                        "tier_slug": {
        +                          "enum": [
        +                            "7_day_pass",
        +                            "solo",
        +                            "studio",
        +                            "practice"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "unlock_summary": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "tier_slug",
        +                        "display_name",
        +                        "price_local",
        +                        "currency",
        +                        "billing",
        +                        "unlock_summary"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "current_tier": {
        +                    "const": "free",
        +                    "default": "free",
        +                    "type": "string"
        +                  },
        +                  "pass_credit": {
        +                    "anyOf": [
        +                      {
        +                        "additionalProperties": false,
        +                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        +                        "properties": {
        +                          "amount_local": {
        +                            "type": "number"
        +                          },
        +                          "applies_to": {
        +                            "const": "solo_first_month",
        +                            "default": "solo_first_month",
        +                            "type": "string"
        +                          },
        +                          "currency": {
        +                            "type": "string"
        +                          },
        +                          "redeemable_until": {
        +                            "type": "string"
        +                          }
        +                        },
        +                        "required": [
        +                          "amount_local",
        +                          "currency",
        +                          "redeemable_until"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "pricing_url": {
        +                    "default": "https://civilquants.com/pricing",
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "available_tiers"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tos_url": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "upgrade_hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "warranty_disclaimer": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          }
        +        },
        +        "required": [
        +          "request_id",
        +          "issued_at",
        +          "tier"
        +        ],
        +        "type": "object"
        +      },
        +      "data": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Schema § 1.1 — the typed payload returned inside `MCPResponse[ComputeResult]`.\n\nFree-tier responses omit `drawings` (the downloadable CAD artefact\npointers — the paid differentiator); the bridge enforces this. The\n`audit_trail` and the inline `drawing` preview are present on BOTH tiers\n(V1 ALIGN / 60th-fire D + C). `text_summary` is bounded to 2000 chars —\nkeeps the LLM-facing summary token-cheap and forces longer narrative into\nBoQ row descriptions where it belongs. `warnings` is the non-fatal\ngeometry advisory list (both tiers).",
        +            "properties": {
        +              "assembly_slug": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "audit_trail": {
        +                "anyOf": [
        +                  {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.7 — paid-tier audit-trail entry.\n\nOne entry per BoQ row; `boq_row_index` ties to the row position in\n`ComputeResult.boq_rows`. `derivation` is the human-readable formula\nwalk-through; `formula` is the optional formal expression.",
        +                      "properties": {
        +                        "boq_row_index": {
        +                          "minimum": 0,
        +                          "type": "integer"
        +                        },
        +                        "derivation": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "formula": {
        +                          "anyOf": [
        +                            {
        +                              "type": "string"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ],
        +                          "default": null
        +                        },
        +                        "id": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "parameters_referenced": {
        +                          "items": {
        +                            "type": "string"
        +                          },
        +                          "type": "array"
        +                        }
        +                      },
        +                      "required": [
        +                        "id",
        +                        "boq_row_index",
        +                        "derivation"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "boq_rows": {
        +                "items": {
        +                  "additionalProperties": false,
        +                  "description": "Schema § 1.3 — a single bill row in the requested standard's format.\n\n`description` is the non-verbatim functional description per spec § 13.9 /\n§ 15 invariant — NEVER reproduces a standard's verbatim clause text.\n`rate` / `amount` ship null because rates are commodity data the customer\nowns; the engine's job is the measurement, not the pricing.",
        +                  "properties": {
        +                    "amount": {
        +                      "anyOf": [
        +                        {
        +                          "type": "number"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "attribution": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "audit_id": {
        +                      "anyOf": [
        +                        {
        +                          "type": "string"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "description": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "quantity": {
        +                      "minimum": 0,
        +                      "type": "number"
        +                    },
        +                    "rate": {
        +                      "anyOf": [
        +                        {
        +                          "type": "number"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "unit": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "work_section": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    }
        +                  },
        +                  "required": [
        +                    "work_section",
        +                    "description",
        +                    "quantity",
        +                    "unit",
        +                    "attribution"
        +                  ],
        +                  "type": "object"
        +                },
        +                "type": "array"
        +              },
        +              "drawing": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": false,
        +                    "description": "Schema § 1.6a — inline server-rendered SVG preview of the geometry.\n\nThe MCP mirror of the web ``/compute`` response's ``drawing`` field\n(``api.schemas.compute.DrawingRef``): the same on-screen dimensioned\ndrawing both tiers see in the workspace, surfaced on the MCP compute\nresponse so a chat client can render it inline (60th-fire item C). This\nis the on-screen preview — present on BOTH tiers per the free/paid\nboundary; the downloadable CAD artefacts (DXF / dimensioned PDF) remain\nthe paid differentiator via the export tools.\n\nDefined here rather than importing ``DrawingRef`` because the web\n``schemas`` package imports back into this module (``schemas.render``),\nso reusing it would create an import cycle — the MCP wire contract keeps\nits own copy, the same pattern as ``BoQRow`` / ``DrawingReference``.",
        +                    "properties": {
        +                      "entity_count": {
        +                        "minimum": 0,
        +                        "type": "integer"
        +                      },
        +                      "svg_b64": {
        +                        "minLength": 1,
        +                        "type": "string"
        +                      },
        +                      "unit_of_drawing": {
        +                        "const": "m",
        +                        "default": "m",
        +                        "type": "string"
        +                      },
        +                      "viewbox_height": {
        +                        "exclusiveMinimum": 0,
        +                        "type": "number"
        +                      },
        +                      "viewbox_width": {
        +                        "exclusiveMinimum": 0,
        +                        "type": "number"
        +                      },
        +                      "viewbox_x": {
        +                        "type": "number"
        +                      },
        +                      "viewbox_y": {
        +                        "type": "number"
        +                      }
        +                    },
        +                    "required": [
        +                      "svg_b64",
        +                      "viewbox_x",
        +                      "viewbox_y",
        +                      "viewbox_width",
        +                      "viewbox_height",
        +                      "entity_count"
        +                    ],
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "drawings": {
        +                "anyOf": [
        +                  {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.6 — paid-tier drawing artefact pointer.\n\n`url` is an R2-signed URL; expiry is carried in `_meta.deliverables.expires_at`\non the envelope (not duplicated here). `layers` is DXF-only; PDF/SVG\ncallers omit it.",
        +                      "properties": {
        +                        "drawing_type": {
        +                          "enum": [
        +                            "section",
        +                            "plan",
        +                            "elevation",
        +                            "isometric",
        +                            "detail"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "format": {
        +                          "enum": [
        +                            "DXF",
        +                            "PDF",
        +                            "SVG"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "layers": {
        +                          "anyOf": [
        +                            {
        +                              "items": {
        +                                "type": "string"
        +                              },
        +                              "type": "array"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ],
        +                          "default": null
        +                        },
        +                        "scale": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "sheet_size": {
        +                          "enum": [
        +                            "A1",
        +                            "A2",
        +                            "A3",
        +                            "A4"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "url": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "drawing_type",
        +                        "format",
        +                        "url",
        +                        "sheet_size",
        +                        "scale"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "parameters_used": {
        +                "additionalProperties": false,
        +                "description": "Schema § 1.2 — the parameter snapshot the engine actually used.\n\nSplits user-supplied values from engine defaults so customers can see\nwhich numbers came from them and which the engine filled in. Every\ndefaulted parameter SHOULD have a corresponding entry in `assumptions`\n— the bridge layer enforces this when wrapping engine output.",
        +                "properties": {
        +                  "assumptions": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "engine_defaults": {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  "resolved_from_description": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "additionalProperties": false,
        +                          "description": "Schema § 1.2 — a parameter resolved by the forgiving-input layer.\n\nPopulated by the Track B-Forgiving Haiku-4.5 resolution pass; until that\nlayer lands, instances are constructed only by tests. `source` distinguishes\nthe resolution path so customers can audit which fields were inferred.",
        +                          "properties": {
        +                            "confidence": {
        +                              "anyOf": [
        +                                {
        +                                  "enum": [
        +                                    "high",
        +                                    "medium",
        +                                    "low"
        +                                  ],
        +                                  "type": "string"
        +                                },
        +                                {
        +                                  "type": "null"
        +                                }
        +                              ],
        +                              "default": null
        +                            },
        +                            "field_name": {
        +                              "minLength": 1,
        +                              "type": "string"
        +                            },
        +                            "resolved_value": {},
        +                            "source": {
        +                              "enum": [
        +                                "description_field",
        +                                "haiku_resolution",
        +                                "engine_default"
        +                              ],
        +                              "type": "string"
        +                            }
        +                          },
        +                          "required": [
        +                            "field_name",
        +                            "resolved_value",
        +                            "source"
        +                          ],
        +                          "type": "object"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "user_supplied": {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  }
        +                },
        +                "type": "object"
        +              },
        +              "standard": {
        +                "enum": [
        +                  "CESMM4",
        +                  "NRM2",
        +                  "SMM7",
        +                  "MMHW"
        +                ],
        +                "type": "string"
        +              },
        +              "text_summary": {
        +                "maxLength": 2000,
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "totals_summary": {
        +                "additionalProperties": false,
        +                "description": "Schema § 1.4 — totals_summary as a typed wrapper around the free-form dict.\n\nWire shape is a flat object (`{\"concrete_m3\": {...}, \"rebar_t\": {...}}`).\nWe model it as `RootModel`-equivalent via `model_config(extra=\"allow\")`\n+ a single `__root__`-style `entries` dict. Pydantic v2 recommends\n`RootModel` for free-form roots; using a wrapper class keeps the import\nsurface uniform with the rest of this module.",
        +                "properties": {
        +                  "entries": {
        +                    "additionalProperties": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.4 — single material/work-class total entry.",
        +                      "properties": {
        +                        "quantity": {
        +                          "minimum": 0,
        +                          "type": "number"
        +                        },
        +                        "unit": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "quantity",
        +                        "unit"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "object"
        +                  }
        +                },
        +                "type": "object"
        +              },
        +              "warnings": {
        +                "items": {
        +                  "additionalProperties": false,
        +                  "description": "Schema § 1.8 — a non-fatal geometry advisory (56th-fire T2).\n\nThe wire projection of the engine's `core.GeometryWarning`. Advisory only:\na warning NEVER changes a measured quantity — it flags geometry that is\nvalid but likely a mistake (e.g. a stale dependent-height default). Present\non BOTH tiers — a correctness/safety signal, not a paid feature.",
        +                  "properties": {
        +                    "affected_params": {
        +                      "items": {
        +                        "type": "string"
        +                      },
        +                      "type": "array"
        +                    },
        +                    "code": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "detail": {
        +                      "additionalProperties": {
        +                        "type": "number"
        +                      },
        +                      "type": "object"
        +                    },
        +                    "message": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "severity": {
        +                      "enum": [
        +                        "info",
        +                        "advisory",
        +                        "caution"
        +                      ],
        +                      "type": "string"
        +                    }
        +                  },
        +                  "required": [
        +                    "code",
        +                    "severity",
        +                    "message"
        +                  ],
        +                  "type": "object"
        +                },
        +                "type": "array"
        +              }
        +            },
        +            "required": [
        +              "assembly_slug",
        +              "standard",
        +              "parameters_used",
        +              "boq_rows",
        +              "totals_summary",
        +              "text_summary"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      },
        +      "error": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        +            "properties": {
        +              "code": {
        +                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        +                "enum": [
        +                  "RATE_LIMIT_EXCEEDED",
        +                  "TIER_INSUFFICIENT",
        +                  "INVALID_INPUT",
        +                  "SCHEMA_VERSION_MISMATCH",
        +                  "SCHEMA_INVARIANT_VIOLATION",
        +                  "UPSTREAM_TIMEOUT",
        +                  "BACKEND_FAILURE",
        +                  "IP_BLOCKED",
        +                  "RESOURCE_NOT_FOUND",
        +                  "RENDER_FAILURE",
        +                  "OCR_LOW_CONFIDENCE",
        +                  "MANUAL_REVIEW_REQUIRED",
        +                  "ACCEPTANCE_REQUIRED",
        +                  "INVALID_TOKEN"
        +                ],
        +                "type": "string"
        +              },
        +              "details": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "message": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "recoverable": {
        +                "type": "boolean"
        +              },
        +              "retry_after_seconds": {
        +                "anyOf": [
        +                  {
        +                    "minimum": 0,
        +                    "type": "integer"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              }
        +            },
        +            "required": [
        +              "code",
        +              "message",
        +              "recoverable"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      }
        +    },
        +    "required": [
        +      "_meta"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "_meta": {
        +        "additionalProperties": false,
        +        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        +        "properties": {
        +          "deliverables": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        +                "properties": {
        +                  "docx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "dxf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "expires_at": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  },
        +                  "pdf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "xlsx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "expires_at"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "document_id": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "issued_at": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "rate_limit_remaining": {
        +            "anyOf": [
        +              {
        +                "minimum": 0,
        +                "type": "integer"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "request_id": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "schema_version": {
        +            "const": "1.0.0",
        +            "default": "1.0.0",
        +            "type": "string"
        +          },
        +          "scope_boundary": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        +                "properties": {
        +                  "not_in_scope": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "produced": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "recommended_companions": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "type": "string"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "produced",
        +                  "not_in_scope"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tier": {
        +            "enum": [
        +              "free",
        +              "paid"
        +            ],
        +            "type": "string"
        +          },
        +          "tier_upgrade": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        +                "properties": {
        +                  "available_tiers": {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        +                      "properties": {
        +                        "billing": {
        +                          "enum": [
        +                            "one_off",
        +                            "monthly",
        +                            "annual"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "currency": {
        +                          "enum": [
        +                            "GBP",
        +                            "SGD",
        +                            "EUR",
        +                            "USD",
        +                            "CAD",
        +                            "AUD",
        +                            "NZD",
        +                            "MYR"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "display_name": {
        +                          "type": "string"
        +                        },
        +                        "price_local": {
        +                          "type": "number"
        +                        },
        +                        "tier_slug": {
        +                          "enum": [
        +                            "7_day_pass",
        +                            "solo",
        +                            "studio",
        +                            "practice"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "unlock_summary": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "tier_slug",
        +                        "display_name",
        +                        "price_local",
        +                        "currency",
        +                        "billing",
        +                        "unlock_summary"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "current_tier": {
        +                    "const": "free",
        +                    "default": "free",
        +                    "type": "string"
        +                  },
        +                  "pass_credit": {
        +                    "anyOf": [
        +                      {
        +                        "additionalProperties": false,
        +                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        +                        "properties": {
        +                          "amount_local": {
        +                            "type": "number"
        +                          },
        +                          "applies_to": {
        +                            "const": "solo_first_month",
        +                            "default": "solo_first_month",
        +                            "type": "string"
        +                          },
        +                          "currency": {
        +                            "type": "string"
        +                          },
        +                          "redeemable_until": {
        +                            "type": "string"
        +                          }
        +                        },
        +                        "required": [
        +                          "amount_local",
        +                          "currency",
        +                          "redeemable_until"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "pricing_url": {
        +                    "default": "https://civilquants.com/pricing",
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "available_tiers"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tos_url": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "upgrade_hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "warranty_disclaimer": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          }
        +        },
        +        "required": [
        +          "request_id",
        +          "issued_at",
        +          "tier"
        +        ],
        +        "type": "object"
        +      },
        +      "data": {
        +        "default": null,
        +        "title": "Data"
        +      },
        +      "error": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        +            "properties": {
        +              "code": {
        +                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        +                "enum": [
        +                  "RATE_LIMIT_EXCEEDED",
        +                  "TIER_INSUFFICIENT",
        +                  "INVALID_INPUT",
        +                  "SCHEMA_VERSION_MISMATCH",
        +                  "SCHEMA_INVARIANT_VIOLATION",
        +                  "UPSTREAM_TIMEOUT",
        +                  "BACKEND_FAILURE",
        +                  "IP_BLOCKED",
        +                  "RESOURCE_NOT_FOUND",
        +                  "RENDER_FAILURE",
        +                  "OCR_LOW_CONFIDENCE",
        +                  "MANUAL_REVIEW_REQUIRED",
        +                  "ACCEPTANCE_REQUIRED",
        +                  "INVALID_TOKEN"
        +                ],
        +                "type": "string"
        +              },
        +              "details": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "message": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "recoverable": {
        +                "type": "boolean"
        +              },
        +              "retry_after_seconds": {
        +                "anyOf": [
        +                  {
        +                    "minimum": 0,
        +                    "type": "integer"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              }
        +            },
        +            "required": [
        +              "code",
        +              "message",
        +              "recoverable"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      }
        +    },
        +    "required": [
        +      "_meta"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedcompute_catchpit3 fields changed
      • addedInput schema / properties / deliverables
        Added value: +{
        +  "anyOf": [
        +    {
        +      "items": {
        +        "const": "xlsx",
        +        "type": "string"
        +      },
        +      "type": "array"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null
        +}
      • addedInput schema / properties / output_mode
        Added value: +{
        +  "default": "full_json",
        +  "enum": [
        +    "summary",
        +    "boq",
        +    "boq_with_backup",
        +    "full_json"
        +  ],
        +  "type": "string"
        +}
      • changedOutput schema / properties / result / anyOf
        Previous value: -[
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "_meta": {
        -        "additionalProperties": false,
        -        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        -        "properties": {
        -          "deliverables": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        -                "properties": {
        -                  "docx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "dxf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "expires_at": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  },
        -                  "pdf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "xlsx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "expires_at"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "document_id": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "issued_at": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "rate_limit_remaining": {
        -            "anyOf": [
        -              {
        -                "minimum": 0,
        -                "type": "integer"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "request_id": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "schema_version": {
        -            "const": "1.0.0",
        -            "default": "1.0.0",
        -            "type": "string"
        -          },
        -          "scope_boundary": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        -                "properties": {
        -                  "not_in_scope": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "produced": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "recommended_companions": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "type": "string"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "produced",
        -                  "not_in_scope"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tier": {
        -            "enum": [
        -              "free",
        -              "paid"
        -            ],
        -            "type": "string"
        -          },
        -          "tier_upgrade": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        -                "properties": {
        -                  "available_tiers": {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        -                      "properties": {
        -                        "billing": {
        -                          "enum": [
        -                            "one_off",
        -                            "monthly",
        -                            "annual"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "currency": {
        -                          "enum": [
        -                            "GBP",
        -                            "SGD",
        -                            "EUR",
        -                            "USD",
        -                            "CAD",
        -                            "AUD",
        -                            "NZD",
        -                            "MYR"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "display_name": {
        -                          "type": "string"
        -                        },
        -                        "price_local": {
        -                          "type": "number"
        -                        },
        -                        "tier_slug": {
        -                          "enum": [
        -                            "7_day_pass",
        -                            "solo",
        -                            "studio",
        -                            "practice"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "unlock_summary": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "tier_slug",
        -                        "display_name",
        -                        "price_local",
        -                        "currency",
        -                        "billing",
        -                        "unlock_summary"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "current_tier": {
        -                    "const": "free",
        -                    "default": "free",
        -                    "type": "string"
        -                  },
        -                  "pass_credit": {
        -                    "anyOf": [
        -                      {
        -                        "additionalProperties": false,
        -                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        -                        "properties": {
        -                          "amount_local": {
        -                            "type": "number"
        -                          },
        -                          "applies_to": {
        -                            "const": "solo_first_month",
        -                            "default": "solo_first_month",
        -                            "type": "string"
        -                          },
        -                          "currency": {
        -                            "type": "string"
        -                          },
        -                          "redeemable_until": {
        -                            "type": "string"
        -                          }
        -                        },
        -                        "required": [
        -                          "amount_local",
        -                          "currency",
        -                          "redeemable_until"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "pricing_url": {
        -                    "default": "https://civilquants.com/pricing",
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "available_tiers"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tos_url": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "upgrade_hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "warranty_disclaimer": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          }
        -        },
        -        "required": [
        -          "request_id",
        -          "issued_at",
        -          "tier"
        -        ],
        -        "type": "object"
        -      },
        -      "data": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Schema § 1.1 — the typed payload returned inside `MCPResponse[ComputeResult]`.\n\nFree-tier responses MUST omit `drawings` and `audit_trail` (the bridge\nenforces this); paid-tier responses populate both. `text_summary` is\nbounded to 2000 chars — keeps the LLM-facing summary token-cheap and\nforces longer narrative into BoQ row descriptions where it belongs.\n`warnings` is the non-fatal geometry advisory list (both tiers).",
        -            "properties": {
        -              "assembly_slug": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "audit_trail": {
        -                "anyOf": [
        -                  {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.7 — paid-tier audit-trail entry.\n\nOne entry per BoQ row; `boq_row_index` ties to the row position in\n`ComputeResult.boq_rows`. `derivation` is the human-readable formula\nwalk-through; `formula` is the optional formal expression.",
        -                      "properties": {
        -                        "boq_row_index": {
        -                          "minimum": 0,
        -                          "type": "integer"
        -                        },
        -                        "derivation": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "formula": {
        -                          "anyOf": [
        -                            {
        -                              "type": "string"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ],
        -                          "default": null
        -                        },
        -                        "id": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "parameters_referenced": {
        -                          "items": {
        -                            "type": "string"
        -                          },
        -                          "type": "array"
        -                        }
        -                      },
        -                      "required": [
        -                        "id",
        -                        "boq_row_index",
        -                        "derivation"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "boq_rows": {
        -                "items": {
        -                  "additionalProperties": false,
        -                  "description": "Schema § 1.3 — a single bill row in the requested standard's format.\n\n`description` is the non-verbatim functional description per spec § 13.9 /\n§ 15 invariant — NEVER reproduces a standard's verbatim clause text.\n`rate` / `amount` ship null because rates are commodity data the customer\nowns; the engine's job is the measurement, not the pricing.",
        -                  "properties": {
        -                    "amount": {
        -                      "anyOf": [
        -                        {
        -                          "type": "number"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "attribution": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "audit_id": {
        -                      "anyOf": [
        -                        {
        -                          "type": "string"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "description": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "quantity": {
        -                      "minimum": 0,
        -                      "type": "number"
        -                    },
        -                    "rate": {
        -                      "anyOf": [
        -                        {
        -                          "type": "number"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "unit": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "work_section": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    }
        -                  },
        -                  "required": [
        -                    "work_section",
        -                    "description",
        -                    "quantity",
        -                    "unit",
        -                    "attribution"
        -                  ],
        -                  "type": "object"
        -                },
        -                "type": "array"
        -              },
        -              "drawings": {
        -                "anyOf": [
        -                  {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.6 — paid-tier drawing artefact pointer.\n\n`url` is an R2-signed URL; expiry is carried in `_meta.deliverables.expires_at`\non the envelope (not duplicated here). `layers` is DXF-only; PDF/SVG\ncallers omit it.",
        -                      "properties": {
        -                        "drawing_type": {
        -                          "enum": [
        -                            "section",
        -                            "plan",
        -                            "elevation",
        -                            "isometric",
        -                            "detail"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "format": {
        -                          "enum": [
        -                            "DXF",
        -                            "PDF",
        -                            "SVG"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "layers": {
        -                          "anyOf": [
        -                            {
        -                              "items": {
        -                                "type": "string"
        -                              },
        -                              "type": "array"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ],
        -                          "default": null
        -                        },
        -                        "scale": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "sheet_size": {
        -                          "enum": [
        -                            "A1",
        -                            "A2",
        -                            "A3",
        -                            "A4"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "url": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "drawing_type",
        -                        "format",
        -                        "url",
        -                        "sheet_size",
        -                        "scale"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "parameters_used": {
        -                "additionalProperties": false,
        -                "description": "Schema § 1.2 — the parameter snapshot the engine actually used.\n\nSplits user-supplied values from engine defaults so customers can see\nwhich numbers came from them and which the engine filled in. Every\ndefaulted parameter SHOULD have a corresponding entry in `assumptions`\n— the bridge layer enforces this when wrapping engine output.",
        -                "properties": {
        -                  "assumptions": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "engine_defaults": {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  "resolved_from_description": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "additionalProperties": false,
        -                          "description": "Schema § 1.2 — a parameter resolved by the forgiving-input layer.\n\nPopulated by the Track B-Forgiving Haiku-4.5 resolution pass; until that\nlayer lands, instances are constructed only by tests. `source` distinguishes\nthe resolution path so customers can audit which fields were inferred.",
        -                          "properties": {
        -                            "confidence": {
        -                              "anyOf": [
        -                                {
        -                                  "enum": [
        -                                    "high",
        -                                    "medium",
        -                                    "low"
        -                                  ],
        -                                  "type": "string"
        -                                },
        -                                {
        -                                  "type": "null"
        -                                }
        -                              ],
        -                              "default": null
        -                            },
        -                            "field_name": {
        -                              "minLength": 1,
        -                              "type": "string"
        -                            },
        -                            "resolved_value": {},
        -                            "source": {
        -                              "enum": [
        -                                "description_field",
        -                                "haiku_resolution",
        -                                "engine_default"
        -                              ],
        -                              "type": "string"
        -                            }
        -                          },
        -                          "required": [
        -                            "field_name",
        -                            "resolved_value",
        -                            "source"
        -                          ],
        -                          "type": "object"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "user_supplied": {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  }
        -                },
        -                "type": "object"
        -              },
        -              "standard": {
        -                "enum": [
        -                  "CESMM4",
        -                  "NRM2",
        -                  "SMM7",
        -                  "MMHW"
        -                ],
        -                "type": "string"
        -              },
        -              "text_summary": {
        -                "maxLength": 2000,
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "totals_summary": {
        -                "additionalProperties": false,
        -                "description": "Schema § 1.4 — totals_summary as a typed wrapper around the free-form dict.\n\nWire shape is a flat object (`{\"concrete_m3\": {...}, \"rebar_t\": {...}}`).\nWe model it as `RootModel`-equivalent via `model_config(extra=\"allow\")`\n+ a single `__root__`-style `entries` dict. Pydantic v2 recommends\n`RootModel` for free-form roots; using a wrapper class keeps the import\nsurface uniform with the rest of this module.",
        -                "properties": {
        -                  "entries": {
        -                    "additionalProperties": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.4 — single material/work-class total entry.",
        -                      "properties": {
        -                        "quantity": {
        -                          "minimum": 0,
        -                          "type": "number"
        -                        },
        -                        "unit": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "quantity",
        -                        "unit"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "object"
        -                  }
        -                },
        -                "type": "object"
        -              },
        -              "warnings": {
        -                "items": {
        -                  "additionalProperties": false,
        -                  "description": "Schema § 1.8 — a non-fatal geometry advisory (56th-fire T2).\n\nThe wire projection of the engine's `core.GeometryWarning`. Advisory only:\na warning NEVER changes a measured quantity — it flags geometry that is\nvalid but likely a mistake (e.g. a stale dependent-height default). Present\non BOTH tiers — a correctness/safety signal, not a paid feature.",
        -                  "properties": {
        -                    "affected_params": {
        -                      "items": {
        -                        "type": "string"
        -                      },
        -                      "type": "array"
        -                    },
        -                    "code": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "detail": {
        -                      "additionalProperties": {
        -                        "type": "number"
        -                      },
        -                      "type": "object"
        -                    },
        -                    "message": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "severity": {
        -                      "enum": [
        -                        "info",
        -                        "advisory",
        -                        "caution"
        -                      ],
        -                      "type": "string"
        -                    }
        -                  },
        -                  "required": [
        -                    "code",
        -                    "severity",
        -                    "message"
        -                  ],
        -                  "type": "object"
        -                },
        -                "type": "array"
        -              }
        -            },
        -            "required": [
        -              "assembly_slug",
        -              "standard",
        -              "parameters_used",
        -              "boq_rows",
        -              "totals_summary",
        -              "text_summary"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      },
        -      "error": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        -            "properties": {
        -              "code": {
        -                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        -                "enum": [
        -                  "RATE_LIMIT_EXCEEDED",
        -                  "TIER_INSUFFICIENT",
        -                  "INVALID_INPUT",
        -                  "SCHEMA_VERSION_MISMATCH",
        -                  "SCHEMA_INVARIANT_VIOLATION",
        -                  "UPSTREAM_TIMEOUT",
        -                  "BACKEND_FAILURE",
        -                  "IP_BLOCKED",
        -                  "RESOURCE_NOT_FOUND",
        -                  "RENDER_FAILURE",
        -                  "OCR_LOW_CONFIDENCE",
        -                  "MANUAL_REVIEW_REQUIRED",
        -                  "ACCEPTANCE_REQUIRED",
        -                  "INVALID_TOKEN"
        -                ],
        -                "type": "string"
        -              },
        -              "details": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "message": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "recoverable": {
        -                "type": "boolean"
        -              },
        -              "retry_after_seconds": {
        -                "anyOf": [
        -                  {
        -                    "minimum": 0,
        -                    "type": "integer"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              }
        -            },
        -            "required": [
        -              "code",
        -              "message",
        -              "recoverable"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      }
        -    },
        -    "required": [
        -      "_meta"
        -    ],
        -    "type": "object"
        -  },
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "_meta": {
        -        "additionalProperties": false,
        -        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        -        "properties": {
        -          "deliverables": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        -                "properties": {
        -                  "docx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "dxf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "expires_at": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  },
        -                  "pdf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "xlsx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "expires_at"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "document_id": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "issued_at": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "rate_limit_remaining": {
        -            "anyOf": [
        -              {
        -                "minimum": 0,
        -                "type": "integer"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "request_id": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "schema_version": {
        -            "const": "1.0.0",
        -            "default": "1.0.0",
        -            "type": "string"
        -          },
        -          "scope_boundary": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        -                "properties": {
        -                  "not_in_scope": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "produced": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "recommended_companions": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "type": "string"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "produced",
        -                  "not_in_scope"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tier": {
        -            "enum": [
        -              "free",
        -              "paid"
        -            ],
        -            "type": "string"
        -          },
        -          "tier_upgrade": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        -                "properties": {
        -                  "available_tiers": {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        -                      "properties": {
        -                        "billing": {
        -                          "enum": [
        -                            "one_off",
        -                            "monthly",
        -                            "annual"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "currency": {
        -                          "enum": [
        -                            "GBP",
        -                            "SGD",
        -                            "EUR",
        -                            "USD",
        -                            "CAD",
        -                            "AUD",
        -                            "NZD",
        -                            "MYR"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "display_name": {
        -                          "type": "string"
        -                        },
        -                        "price_local": {
        -                          "type": "number"
        -                        },
        -                        "tier_slug": {
        -                          "enum": [
        -                            "7_day_pass",
        -                            "solo",
        -                            "studio",
        -                            "practice"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "unlock_summary": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "tier_slug",
        -                        "display_name",
        -                        "price_local",
        -                        "currency",
        -                        "billing",
        -                        "unlock_summary"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "current_tier": {
        -                    "const": "free",
        -                    "default": "free",
        -                    "type": "string"
        -                  },
        -                  "pass_credit": {
        -                    "anyOf": [
        -                      {
        -                        "additionalProperties": false,
        -                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        -                        "properties": {
        -                          "amount_local": {
        -                            "type": "number"
        -                          },
        -                          "applies_to": {
        -                            "const": "solo_first_month",
        -                            "default": "solo_first_month",
        -                            "type": "string"
        -                          },
        -                          "currency": {
        -                            "type": "string"
        -                          },
        -                          "redeemable_until": {
        -                            "type": "string"
        -                          }
        -                        },
        -                        "required": [
        -                          "amount_local",
        -                          "currency",
        -                          "redeemable_until"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "pricing_url": {
        -                    "default": "https://civilquants.com/pricing",
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "available_tiers"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tos_url": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "upgrade_hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "warranty_disclaimer": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          }
        -        },
        -        "required": [
        -          "request_id",
        -          "issued_at",
        -          "tier"
        -        ],
        -        "type": "object"
        -      },
        -      "data": {
        -        "default": null,
        -        "title": "Data"
        -      },
        -      "error": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        -            "properties": {
        -              "code": {
        -                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        -                "enum": [
        -                  "RATE_LIMIT_EXCEEDED",
        -                  "TIER_INSUFFICIENT",
        -                  "INVALID_INPUT",
        -                  "SCHEMA_VERSION_MISMATCH",
        -                  "SCHEMA_INVARIANT_VIOLATION",
        -                  "UPSTREAM_TIMEOUT",
        -                  "BACKEND_FAILURE",
        -                  "IP_BLOCKED",
        -                  "RESOURCE_NOT_FOUND",
        -                  "RENDER_FAILURE",
        -                  "OCR_LOW_CONFIDENCE",
        -                  "MANUAL_REVIEW_REQUIRED",
        -                  "ACCEPTANCE_REQUIRED",
        -                  "INVALID_TOKEN"
        -                ],
        -                "type": "string"
        -              },
        -              "details": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "message": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "recoverable": {
        -                "type": "boolean"
        -              },
        -              "retry_after_seconds": {
        -                "anyOf": [
        -                  {
        -                    "minimum": 0,
        -                    "type": "integer"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              }
        -            },
        -            "required": [
        -              "code",
        -              "message",
        -              "recoverable"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      }
        -    },
        -    "required": [
        -      "_meta"
        -    ],
        -    "type": "object"
        -  }
        -]New value: +[
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "_meta": {
        +        "additionalProperties": false,
        +        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        +        "properties": {
        +          "deliverables": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        +                "properties": {
        +                  "docx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "dxf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "expires_at": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  },
        +                  "pdf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "xlsx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "expires_at"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "document_id": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "issued_at": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "rate_limit_remaining": {
        +            "anyOf": [
        +              {
        +                "minimum": 0,
        +                "type": "integer"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "request_id": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "schema_version": {
        +            "const": "1.0.0",
        +            "default": "1.0.0",
        +            "type": "string"
        +          },
        +          "scope_boundary": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        +                "properties": {
        +                  "not_in_scope": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "produced": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "recommended_companions": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "type": "string"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "produced",
        +                  "not_in_scope"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tier": {
        +            "enum": [
        +              "free",
        +              "paid"
        +            ],
        +            "type": "string"
        +          },
        +          "tier_upgrade": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        +                "properties": {
        +                  "available_tiers": {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        +                      "properties": {
        +                        "billing": {
        +                          "enum": [
        +                            "one_off",
        +                            "monthly",
        +                            "annual"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "currency": {
        +                          "enum": [
        +                            "GBP",
        +                            "SGD",
        +                            "EUR",
        +                            "USD",
        +                            "CAD",
        +                            "AUD",
        +                            "NZD",
        +                            "MYR"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "display_name": {
        +                          "type": "string"
        +                        },
        +                        "price_local": {
        +                          "type": "number"
        +                        },
        +                        "tier_slug": {
        +                          "enum": [
        +                            "7_day_pass",
        +                            "solo",
        +                            "studio",
        +                            "practice"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "unlock_summary": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "tier_slug",
        +                        "display_name",
        +                        "price_local",
        +                        "currency",
        +                        "billing",
        +                        "unlock_summary"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "current_tier": {
        +                    "const": "free",
        +                    "default": "free",
        +                    "type": "string"
        +                  },
        +                  "pass_credit": {
        +                    "anyOf": [
        +                      {
        +                        "additionalProperties": false,
        +                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        +                        "properties": {
        +                          "amount_local": {
        +                            "type": "number"
        +                          },
        +                          "applies_to": {
        +                            "const": "solo_first_month",
        +                            "default": "solo_first_month",
        +                            "type": "string"
        +                          },
        +                          "currency": {
        +                            "type": "string"
        +                          },
        +                          "redeemable_until": {
        +                            "type": "string"
        +                          }
        +                        },
        +                        "required": [
        +                          "amount_local",
        +                          "currency",
        +                          "redeemable_until"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "pricing_url": {
        +                    "default": "https://civilquants.com/pricing",
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "available_tiers"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tos_url": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "upgrade_hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "warranty_disclaimer": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          }
        +        },
        +        "required": [
        +          "request_id",
        +          "issued_at",
        +          "tier"
        +        ],
        +        "type": "object"
        +      },
        +      "data": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Schema § 1.1 — the typed payload returned inside `MCPResponse[ComputeResult]`.\n\nFree-tier responses omit `drawings` (the downloadable CAD artefact\npointers — the paid differentiator); the bridge enforces this. The\n`audit_trail` and the inline `drawing` preview are present on BOTH tiers\n(V1 ALIGN / 60th-fire D + C). `text_summary` is bounded to 2000 chars —\nkeeps the LLM-facing summary token-cheap and forces longer narrative into\nBoQ row descriptions where it belongs. `warnings` is the non-fatal\ngeometry advisory list (both tiers).",
        +            "properties": {
        +              "assembly_slug": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "audit_trail": {
        +                "anyOf": [
        +                  {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.7 — paid-tier audit-trail entry.\n\nOne entry per BoQ row; `boq_row_index` ties to the row position in\n`ComputeResult.boq_rows`. `derivation` is the human-readable formula\nwalk-through; `formula` is the optional formal expression.",
        +                      "properties": {
        +                        "boq_row_index": {
        +                          "minimum": 0,
        +                          "type": "integer"
        +                        },
        +                        "derivation": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "formula": {
        +                          "anyOf": [
        +                            {
        +                              "type": "string"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ],
        +                          "default": null
        +                        },
        +                        "id": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "parameters_referenced": {
        +                          "items": {
        +                            "type": "string"
        +                          },
        +                          "type": "array"
        +                        }
        +                      },
        +                      "required": [
        +                        "id",
        +                        "boq_row_index",
        +                        "derivation"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "boq_rows": {
        +                "items": {
        +                  "additionalProperties": false,
        +                  "description": "Schema § 1.3 — a single bill row in the requested standard's format.\n\n`description` is the non-verbatim functional description per spec § 13.9 /\n§ 15 invariant — NEVER reproduces a standard's verbatim clause text.\n`rate` / `amount` ship null because rates are commodity data the customer\nowns; the engine's job is the measurement, not the pricing.",
        +                  "properties": {
        +                    "amount": {
        +                      "anyOf": [
        +                        {
        +                          "type": "number"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "attribution": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "audit_id": {
        +                      "anyOf": [
        +                        {
        +                          "type": "string"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "description": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "quantity": {
        +                      "minimum": 0,
        +                      "type": "number"
        +                    },
        +                    "rate": {
        +                      "anyOf": [
        +                        {
        +                          "type": "number"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "unit": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "work_section": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    }
        +                  },
        +                  "required": [
        +                    "work_section",
        +                    "description",
        +                    "quantity",
        +                    "unit",
        +                    "attribution"
        +                  ],
        +                  "type": "object"
        +                },
        +                "type": "array"
        +              },
        +              "drawing": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": false,
        +                    "description": "Schema § 1.6a — inline server-rendered SVG preview of the geometry.\n\nThe MCP mirror of the web ``/compute`` response's ``drawing`` field\n(``api.schemas.compute.DrawingRef``): the same on-screen dimensioned\ndrawing both tiers see in the workspace, surfaced on the MCP compute\nresponse so a chat client can render it inline (60th-fire item C). This\nis the on-screen preview — present on BOTH tiers per the free/paid\nboundary; the downloadable CAD artefacts (DXF / dimensioned PDF) remain\nthe paid differentiator via the export tools.\n\nDefined here rather than importing ``DrawingRef`` because the web\n``schemas`` package imports back into this module (``schemas.render``),\nso reusing it would create an import cycle — the MCP wire contract keeps\nits own copy, the same pattern as ``BoQRow`` / ``DrawingReference``.",
        +                    "properties": {
        +                      "entity_count": {
        +                        "minimum": 0,
        +                        "type": "integer"
        +                      },
        +                      "svg_b64": {
        +                        "minLength": 1,
        +                        "type": "string"
        +                      },
        +                      "unit_of_drawing": {
        +                        "const": "m",
        +                        "default": "m",
        +                        "type": "string"
        +                      },
        +                      "viewbox_height": {
        +                        "exclusiveMinimum": 0,
        +                        "type": "number"
        +                      },
        +                      "viewbox_width": {
        +                        "exclusiveMinimum": 0,
        +                        "type": "number"
        +                      },
        +                      "viewbox_x": {
        +                        "type": "number"
        +                      },
        +                      "viewbox_y": {
        +                        "type": "number"
        +                      }
        +                    },
        +                    "required": [
        +                      "svg_b64",
        +                      "viewbox_x",
        +                      "viewbox_y",
        +                      "viewbox_width",
        +                      "viewbox_height",
        +                      "entity_count"
        +                    ],
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "drawings": {
        +                "anyOf": [
        +                  {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.6 — paid-tier drawing artefact pointer.\n\n`url` is an R2-signed URL; expiry is carried in `_meta.deliverables.expires_at`\non the envelope (not duplicated here). `layers` is DXF-only; PDF/SVG\ncallers omit it.",
        +                      "properties": {
        +                        "drawing_type": {
        +                          "enum": [
        +                            "section",
        +                            "plan",
        +                            "elevation",
        +                            "isometric",
        +                            "detail"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "format": {
        +                          "enum": [
        +                            "DXF",
        +                            "PDF",
        +                            "SVG"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "layers": {
        +                          "anyOf": [
        +                            {
        +                              "items": {
        +                                "type": "string"
        +                              },
        +                              "type": "array"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ],
        +                          "default": null
        +                        },
        +                        "scale": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "sheet_size": {
        +                          "enum": [
        +                            "A1",
        +                            "A2",
        +                            "A3",
        +                            "A4"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "url": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "drawing_type",
        +                        "format",
        +                        "url",
        +                        "sheet_size",
        +                        "scale"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "parameters_used": {
        +                "additionalProperties": false,
        +                "description": "Schema § 1.2 — the parameter snapshot the engine actually used.\n\nSplits user-supplied values from engine defaults so customers can see\nwhich numbers came from them and which the engine filled in. Every\ndefaulted parameter SHOULD have a corresponding entry in `assumptions`\n— the bridge layer enforces this when wrapping engine output.",
        +                "properties": {
        +                  "assumptions": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "engine_defaults": {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  "resolved_from_description": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "additionalProperties": false,
        +                          "description": "Schema § 1.2 — a parameter resolved by the forgiving-input layer.\n\nPopulated by the Track B-Forgiving Haiku-4.5 resolution pass; until that\nlayer lands, instances are constructed only by tests. `source` distinguishes\nthe resolution path so customers can audit which fields were inferred.",
        +                          "properties": {
        +                            "confidence": {
        +                              "anyOf": [
        +                                {
        +                                  "enum": [
        +                                    "high",
        +                                    "medium",
        +                                    "low"
        +                                  ],
        +                                  "type": "string"
        +                                },
        +                                {
        +                                  "type": "null"
        +                                }
        +                              ],
        +                              "default": null
        +                            },
        +                            "field_name": {
        +                              "minLength": 1,
        +                              "type": "string"
        +                            },
        +                            "resolved_value": {},
        +                            "source": {
        +                              "enum": [
        +                                "description_field",
        +                                "haiku_resolution",
        +                                "engine_default"
        +                              ],
        +                              "type": "string"
        +                            }
        +                          },
        +                          "required": [
        +                            "field_name",
        +                            "resolved_value",
        +                            "source"
        +                          ],
        +                          "type": "object"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "user_supplied": {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  }
        +                },
        +                "type": "object"
        +              },
        +              "standard": {
        +                "enum": [
        +                  "CESMM4",
        +                  "NRM2",
        +                  "SMM7",
        +                  "MMHW"
        +                ],
        +                "type": "string"
        +              },
        +              "text_summary": {
        +                "maxLength": 2000,
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "totals_summary": {
        +                "additionalProperties": false,
        +                "description": "Schema § 1.4 — totals_summary as a typed wrapper around the free-form dict.\n\nWire shape is a flat object (`{\"concrete_m3\": {...}, \"rebar_t\": {...}}`).\nWe model it as `RootModel`-equivalent via `model_config(extra=\"allow\")`\n+ a single `__root__`-style `entries` dict. Pydantic v2 recommends\n`RootModel` for free-form roots; using a wrapper class keeps the import\nsurface uniform with the rest of this module.",
        +                "properties": {
        +                  "entries": {
        +                    "additionalProperties": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.4 — single material/work-class total entry.",
        +                      "properties": {
        +                        "quantity": {
        +                          "minimum": 0,
        +                          "type": "number"
        +                        },
        +                        "unit": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "quantity",
        +                        "unit"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "object"
        +                  }
        +                },
        +                "type": "object"
        +              },
        +              "warnings": {
        +                "items": {
        +                  "additionalProperties": false,
        +                  "description": "Schema § 1.8 — a non-fatal geometry advisory (56th-fire T2).\n\nThe wire projection of the engine's `core.GeometryWarning`. Advisory only:\na warning NEVER changes a measured quantity — it flags geometry that is\nvalid but likely a mistake (e.g. a stale dependent-height default). Present\non BOTH tiers — a correctness/safety signal, not a paid feature.",
        +                  "properties": {
        +                    "affected_params": {
        +                      "items": {
        +                        "type": "string"
        +                      },
        +                      "type": "array"
        +                    },
        +                    "code": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "detail": {
        +                      "additionalProperties": {
        +                        "type": "number"
        +                      },
        +                      "type": "object"
        +                    },
        +                    "message": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "severity": {
        +                      "enum": [
        +                        "info",
        +                        "advisory",
        +                        "caution"
        +                      ],
        +                      "type": "string"
        +                    }
        +                  },
        +                  "required": [
        +                    "code",
        +                    "severity",
        +                    "message"
        +                  ],
        +                  "type": "object"
        +                },
        +                "type": "array"
        +              }
        +            },
        +            "required": [
        +              "assembly_slug",
        +              "standard",
        +              "parameters_used",
        +              "boq_rows",
        +              "totals_summary",
        +              "text_summary"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      },
        +      "error": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        +            "properties": {
        +              "code": {
        +                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        +                "enum": [
        +                  "RATE_LIMIT_EXCEEDED",
        +                  "TIER_INSUFFICIENT",
        +                  "INVALID_INPUT",
        +                  "SCHEMA_VERSION_MISMATCH",
        +                  "SCHEMA_INVARIANT_VIOLATION",
        +                  "UPSTREAM_TIMEOUT",
        +                  "BACKEND_FAILURE",
        +                  "IP_BLOCKED",
        +                  "RESOURCE_NOT_FOUND",
        +                  "RENDER_FAILURE",
        +                  "OCR_LOW_CONFIDENCE",
        +                  "MANUAL_REVIEW_REQUIRED",
        +                  "ACCEPTANCE_REQUIRED",
        +                  "INVALID_TOKEN"
        +                ],
        +                "type": "string"
        +              },
        +              "details": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "message": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "recoverable": {
        +                "type": "boolean"
        +              },
        +              "retry_after_seconds": {
        +                "anyOf": [
        +                  {
        +                    "minimum": 0,
        +                    "type": "integer"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              }
        +            },
        +            "required": [
        +              "code",
        +              "message",
        +              "recoverable"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      }
        +    },
        +    "required": [
        +      "_meta"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "_meta": {
        +        "additionalProperties": false,
        +        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        +        "properties": {
        +          "deliverables": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        +                "properties": {
        +                  "docx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "dxf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "expires_at": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  },
        +                  "pdf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "xlsx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "expires_at"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "document_id": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "issued_at": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "rate_limit_remaining": {
        +            "anyOf": [
        +              {
        +                "minimum": 0,
        +                "type": "integer"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "request_id": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "schema_version": {
        +            "const": "1.0.0",
        +            "default": "1.0.0",
        +            "type": "string"
        +          },
        +          "scope_boundary": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        +                "properties": {
        +                  "not_in_scope": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "produced": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "recommended_companions": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "type": "string"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "produced",
        +                  "not_in_scope"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tier": {
        +            "enum": [
        +              "free",
        +              "paid"
        +            ],
        +            "type": "string"
        +          },
        +          "tier_upgrade": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        +                "properties": {
        +                  "available_tiers": {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        +                      "properties": {
        +                        "billing": {
        +                          "enum": [
        +                            "one_off",
        +                            "monthly",
        +                            "annual"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "currency": {
        +                          "enum": [
        +                            "GBP",
        +                            "SGD",
        +                            "EUR",
        +                            "USD",
        +                            "CAD",
        +                            "AUD",
        +                            "NZD",
        +                            "MYR"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "display_name": {
        +                          "type": "string"
        +                        },
        +                        "price_local": {
        +                          "type": "number"
        +                        },
        +                        "tier_slug": {
        +                          "enum": [
        +                            "7_day_pass",
        +                            "solo",
        +                            "studio",
        +                            "practice"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "unlock_summary": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "tier_slug",
        +                        "display_name",
        +                        "price_local",
        +                        "currency",
        +                        "billing",
        +                        "unlock_summary"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "current_tier": {
        +                    "const": "free",
        +                    "default": "free",
        +                    "type": "string"
        +                  },
        +                  "pass_credit": {
        +                    "anyOf": [
        +                      {
        +                        "additionalProperties": false,
        +                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        +                        "properties": {
        +                          "amount_local": {
        +                            "type": "number"
        +                          },
        +                          "applies_to": {
        +                            "const": "solo_first_month",
        +                            "default": "solo_first_month",
        +                            "type": "string"
        +                          },
        +                          "currency": {
        +                            "type": "string"
        +                          },
        +                          "redeemable_until": {
        +                            "type": "string"
        +                          }
        +                        },
        +                        "required": [
        +                          "amount_local",
        +                          "currency",
        +                          "redeemable_until"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "pricing_url": {
        +                    "default": "https://civilquants.com/pricing",
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "available_tiers"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tos_url": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "upgrade_hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "warranty_disclaimer": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          }
        +        },
        +        "required": [
        +          "request_id",
        +          "issued_at",
        +          "tier"
        +        ],
        +        "type": "object"
        +      },
        +      "data": {
        +        "default": null,
        +        "title": "Data"
        +      },
        +      "error": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        +            "properties": {
        +              "code": {
        +                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        +                "enum": [
        +                  "RATE_LIMIT_EXCEEDED",
        +                  "TIER_INSUFFICIENT",
        +                  "INVALID_INPUT",
        +                  "SCHEMA_VERSION_MISMATCH",
        +                  "SCHEMA_INVARIANT_VIOLATION",
        +                  "UPSTREAM_TIMEOUT",
        +                  "BACKEND_FAILURE",
        +                  "IP_BLOCKED",
        +                  "RESOURCE_NOT_FOUND",
        +                  "RENDER_FAILURE",
        +                  "OCR_LOW_CONFIDENCE",
        +                  "MANUAL_REVIEW_REQUIRED",
        +                  "ACCEPTANCE_REQUIRED",
        +                  "INVALID_TOKEN"
        +                ],
        +                "type": "string"
        +              },
        +              "details": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "message": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "recoverable": {
        +                "type": "boolean"
        +              },
        +              "retry_after_seconds": {
        +                "anyOf": [
        +                  {
        +                    "minimum": 0,
        +                    "type": "integer"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              }
        +            },
        +            "required": [
        +              "code",
        +              "message",
        +              "recoverable"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      }
        +    },
        +    "required": [
        +      "_meta"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedcompute_combined_services_trench3 fields changed
      • addedInput schema / properties / deliverables
        Added value: +{
        +  "anyOf": [
        +    {
        +      "items": {
        +        "const": "xlsx",
        +        "type": "string"
        +      },
        +      "type": "array"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null
        +}
      • addedInput schema / properties / output_mode
        Added value: +{
        +  "default": "full_json",
        +  "enum": [
        +    "summary",
        +    "boq",
        +    "boq_with_backup",
        +    "full_json"
        +  ],
        +  "type": "string"
        +}
      • changedOutput schema / properties / result / anyOf
        Previous value: -[
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "_meta": {
        -        "additionalProperties": false,
        -        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        -        "properties": {
        -          "deliverables": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        -                "properties": {
        -                  "docx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "dxf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "expires_at": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  },
        -                  "pdf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "xlsx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "expires_at"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "document_id": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "issued_at": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "rate_limit_remaining": {
        -            "anyOf": [
        -              {
        -                "minimum": 0,
        -                "type": "integer"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "request_id": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "schema_version": {
        -            "const": "1.0.0",
        -            "default": "1.0.0",
        -            "type": "string"
        -          },
        -          "scope_boundary": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        -                "properties": {
        -                  "not_in_scope": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "produced": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "recommended_companions": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "type": "string"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "produced",
        -                  "not_in_scope"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tier": {
        -            "enum": [
        -              "free",
        -              "paid"
        -            ],
        -            "type": "string"
        -          },
        -          "tier_upgrade": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        -                "properties": {
        -                  "available_tiers": {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        -                      "properties": {
        -                        "billing": {
        -                          "enum": [
        -                            "one_off",
        -                            "monthly",
        -                            "annual"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "currency": {
        -                          "enum": [
        -                            "GBP",
        -                            "SGD",
        -                            "EUR",
        -                            "USD",
        -                            "CAD",
        -                            "AUD",
        -                            "NZD",
        -                            "MYR"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "display_name": {
        -                          "type": "string"
        -                        },
        -                        "price_local": {
        -                          "type": "number"
        -                        },
        -                        "tier_slug": {
        -                          "enum": [
        -                            "7_day_pass",
        -                            "solo",
        -                            "studio",
        -                            "practice"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "unlock_summary": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "tier_slug",
        -                        "display_name",
        -                        "price_local",
        -                        "currency",
        -                        "billing",
        -                        "unlock_summary"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "current_tier": {
        -                    "const": "free",
        -                    "default": "free",
        -                    "type": "string"
        -                  },
        -                  "pass_credit": {
        -                    "anyOf": [
        -                      {
        -                        "additionalProperties": false,
        -                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        -                        "properties": {
        -                          "amount_local": {
        -                            "type": "number"
        -                          },
        -                          "applies_to": {
        -                            "const": "solo_first_month",
        -                            "default": "solo_first_month",
        -                            "type": "string"
        -                          },
        -                          "currency": {
        -                            "type": "string"
        -                          },
        -                          "redeemable_until": {
        -                            "type": "string"
        -                          }
        -                        },
        -                        "required": [
        -                          "amount_local",
        -                          "currency",
        -                          "redeemable_until"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "pricing_url": {
        -                    "default": "https://civilquants.com/pricing",
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "available_tiers"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tos_url": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "upgrade_hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "warranty_disclaimer": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          }
        -        },
        -        "required": [
        -          "request_id",
        -          "issued_at",
        -          "tier"
        -        ],
        -        "type": "object"
        -      },
        -      "data": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Schema § 1.1 — the typed payload returned inside `MCPResponse[ComputeResult]`.\n\nFree-tier responses MUST omit `drawings` and `audit_trail` (the bridge\nenforces this); paid-tier responses populate both. `text_summary` is\nbounded to 2000 chars — keeps the LLM-facing summary token-cheap and\nforces longer narrative into BoQ row descriptions where it belongs.\n`warnings` is the non-fatal geometry advisory list (both tiers).",
        -            "properties": {
        -              "assembly_slug": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "audit_trail": {
        -                "anyOf": [
        -                  {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.7 — paid-tier audit-trail entry.\n\nOne entry per BoQ row; `boq_row_index` ties to the row position in\n`ComputeResult.boq_rows`. `derivation` is the human-readable formula\nwalk-through; `formula` is the optional formal expression.",
        -                      "properties": {
        -                        "boq_row_index": {
        -                          "minimum": 0,
        -                          "type": "integer"
        -                        },
        -                        "derivation": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "formula": {
        -                          "anyOf": [
        -                            {
        -                              "type": "string"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ],
        -                          "default": null
        -                        },
        -                        "id": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "parameters_referenced": {
        -                          "items": {
        -                            "type": "string"
        -                          },
        -                          "type": "array"
        -                        }
        -                      },
        -                      "required": [
        -                        "id",
        -                        "boq_row_index",
        -                        "derivation"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "boq_rows": {
        -                "items": {
        -                  "additionalProperties": false,
        -                  "description": "Schema § 1.3 — a single bill row in the requested standard's format.\n\n`description` is the non-verbatim functional description per spec § 13.9 /\n§ 15 invariant — NEVER reproduces a standard's verbatim clause text.\n`rate` / `amount` ship null because rates are commodity data the customer\nowns; the engine's job is the measurement, not the pricing.",
        -                  "properties": {
        -                    "amount": {
        -                      "anyOf": [
        -                        {
        -                          "type": "number"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "attribution": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "audit_id": {
        -                      "anyOf": [
        -                        {
        -                          "type": "string"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "description": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "quantity": {
        -                      "minimum": 0,
        -                      "type": "number"
        -                    },
        -                    "rate": {
        -                      "anyOf": [
        -                        {
        -                          "type": "number"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "unit": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "work_section": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    }
        -                  },
        -                  "required": [
        -                    "work_section",
        -                    "description",
        -                    "quantity",
        -                    "unit",
        -                    "attribution"
        -                  ],
        -                  "type": "object"
        -                },
        -                "type": "array"
        -              },
        -              "drawings": {
        -                "anyOf": [
        -                  {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.6 — paid-tier drawing artefact pointer.\n\n`url` is an R2-signed URL; expiry is carried in `_meta.deliverables.expires_at`\non the envelope (not duplicated here). `layers` is DXF-only; PDF/SVG\ncallers omit it.",
        -                      "properties": {
        -                        "drawing_type": {
        -                          "enum": [
        -                            "section",
        -                            "plan",
        -                            "elevation",
        -                            "isometric",
        -                            "detail"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "format": {
        -                          "enum": [
        -                            "DXF",
        -                            "PDF",
        -                            "SVG"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "layers": {
        -                          "anyOf": [
        -                            {
        -                              "items": {
        -                                "type": "string"
        -                              },
        -                              "type": "array"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ],
        -                          "default": null
        -                        },
        -                        "scale": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "sheet_size": {
        -                          "enum": [
        -                            "A1",
        -                            "A2",
        -                            "A3",
        -                            "A4"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "url": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "drawing_type",
        -                        "format",
        -                        "url",
        -                        "sheet_size",
        -                        "scale"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "parameters_used": {
        -                "additionalProperties": false,
        -                "description": "Schema § 1.2 — the parameter snapshot the engine actually used.\n\nSplits user-supplied values from engine defaults so customers can see\nwhich numbers came from them and which the engine filled in. Every\ndefaulted parameter SHOULD have a corresponding entry in `assumptions`\n— the bridge layer enforces this when wrapping engine output.",
        -                "properties": {
        -                  "assumptions": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "engine_defaults": {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  "resolved_from_description": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "additionalProperties": false,
        -                          "description": "Schema § 1.2 — a parameter resolved by the forgiving-input layer.\n\nPopulated by the Track B-Forgiving Haiku-4.5 resolution pass; until that\nlayer lands, instances are constructed only by tests. `source` distinguishes\nthe resolution path so customers can audit which fields were inferred.",
        -                          "properties": {
        -                            "confidence": {
        -                              "anyOf": [
        -                                {
        -                                  "enum": [
        -                                    "high",
        -                                    "medium",
        -                                    "low"
        -                                  ],
        -                                  "type": "string"
        -                                },
        -                                {
        -                                  "type": "null"
        -                                }
        -                              ],
        -                              "default": null
        -                            },
        -                            "field_name": {
        -                              "minLength": 1,
        -                              "type": "string"
        -                            },
        -                            "resolved_value": {},
        -                            "source": {
        -                              "enum": [
        -                                "description_field",
        -                                "haiku_resolution",
        -                                "engine_default"
        -                              ],
        -                              "type": "string"
        -                            }
        -                          },
        -                          "required": [
        -                            "field_name",
        -                            "resolved_value",
        -                            "source"
        -                          ],
        -                          "type": "object"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "user_supplied": {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  }
        -                },
        -                "type": "object"
        -              },
        -              "standard": {
        -                "enum": [
        -                  "CESMM4",
        -                  "NRM2",
        -                  "SMM7",
        -                  "MMHW"
        -                ],
        -                "type": "string"
        -              },
        -              "text_summary": {
        -                "maxLength": 2000,
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "totals_summary": {
        -                "additionalProperties": false,
        -                "description": "Schema § 1.4 — totals_summary as a typed wrapper around the free-form dict.\n\nWire shape is a flat object (`{\"concrete_m3\": {...}, \"rebar_t\": {...}}`).\nWe model it as `RootModel`-equivalent via `model_config(extra=\"allow\")`\n+ a single `__root__`-style `entries` dict. Pydantic v2 recommends\n`RootModel` for free-form roots; using a wrapper class keeps the import\nsurface uniform with the rest of this module.",
        -                "properties": {
        -                  "entries": {
        -                    "additionalProperties": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.4 — single material/work-class total entry.",
        -                      "properties": {
        -                        "quantity": {
        -                          "minimum": 0,
        -                          "type": "number"
        -                        },
        -                        "unit": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "quantity",
        -                        "unit"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "object"
        -                  }
        -                },
        -                "type": "object"
        -              },
        -              "warnings": {
        -                "items": {
        -                  "additionalProperties": false,
        -                  "description": "Schema § 1.8 — a non-fatal geometry advisory (56th-fire T2).\n\nThe wire projection of the engine's `core.GeometryWarning`. Advisory only:\na warning NEVER changes a measured quantity — it flags geometry that is\nvalid but likely a mistake (e.g. a stale dependent-height default). Present\non BOTH tiers — a correctness/safety signal, not a paid feature.",
        -                  "properties": {
        -                    "affected_params": {
        -                      "items": {
        -                        "type": "string"
        -                      },
        -                      "type": "array"
        -                    },
        -                    "code": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "detail": {
        -                      "additionalProperties": {
        -                        "type": "number"
        -                      },
        -                      "type": "object"
        -                    },
        -                    "message": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "severity": {
        -                      "enum": [
        -                        "info",
        -                        "advisory",
        -                        "caution"
        -                      ],
        -                      "type": "string"
        -                    }
        -                  },
        -                  "required": [
        -                    "code",
        -                    "severity",
        -                    "message"
        -                  ],
        -                  "type": "object"
        -                },
        -                "type": "array"
        -              }
        -            },
        -            "required": [
        -              "assembly_slug",
        -              "standard",
        -              "parameters_used",
        -              "boq_rows",
        -              "totals_summary",
        -              "text_summary"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      },
        -      "error": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        -            "properties": {
        -              "code": {
        -                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        -                "enum": [
        -                  "RATE_LIMIT_EXCEEDED",
        -                  "TIER_INSUFFICIENT",
        -                  "INVALID_INPUT",
        -                  "SCHEMA_VERSION_MISMATCH",
        -                  "SCHEMA_INVARIANT_VIOLATION",
        -                  "UPSTREAM_TIMEOUT",
        -                  "BACKEND_FAILURE",
        -                  "IP_BLOCKED",
        -                  "RESOURCE_NOT_FOUND",
        -                  "RENDER_FAILURE",
        -                  "OCR_LOW_CONFIDENCE",
        -                  "MANUAL_REVIEW_REQUIRED",
        -                  "ACCEPTANCE_REQUIRED",
        -                  "INVALID_TOKEN"
        -                ],
        -                "type": "string"
        -              },
        -              "details": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "message": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "recoverable": {
        -                "type": "boolean"
        -              },
        -              "retry_after_seconds": {
        -                "anyOf": [
        -                  {
        -                    "minimum": 0,
        -                    "type": "integer"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              }
        -            },
        -            "required": [
        -              "code",
        -              "message",
        -              "recoverable"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      }
        -    },
        -    "required": [
        -      "_meta"
        -    ],
        -    "type": "object"
        -  },
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "_meta": {
        -        "additionalProperties": false,
        -        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        -        "properties": {
        -          "deliverables": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        -                "properties": {
        -                  "docx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "dxf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "expires_at": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  },
        -                  "pdf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "xlsx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "expires_at"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "document_id": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "issued_at": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "rate_limit_remaining": {
        -            "anyOf": [
        -              {
        -                "minimum": 0,
        -                "type": "integer"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "request_id": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "schema_version": {
        -            "const": "1.0.0",
        -            "default": "1.0.0",
        -            "type": "string"
        -          },
        -          "scope_boundary": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        -                "properties": {
        -                  "not_in_scope": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "produced": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "recommended_companions": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "type": "string"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "produced",
        -                  "not_in_scope"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tier": {
        -            "enum": [
        -              "free",
        -              "paid"
        -            ],
        -            "type": "string"
        -          },
        -          "tier_upgrade": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        -                "properties": {
        -                  "available_tiers": {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        -                      "properties": {
        -                        "billing": {
        -                          "enum": [
        -                            "one_off",
        -                            "monthly",
        -                            "annual"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "currency": {
        -                          "enum": [
        -                            "GBP",
        -                            "SGD",
        -                            "EUR",
        -                            "USD",
        -                            "CAD",
        -                            "AUD",
        -                            "NZD",
        -                            "MYR"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "display_name": {
        -                          "type": "string"
        -                        },
        -                        "price_local": {
        -                          "type": "number"
        -                        },
        -                        "tier_slug": {
        -                          "enum": [
        -                            "7_day_pass",
        -                            "solo",
        -                            "studio",
        -                            "practice"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "unlock_summary": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "tier_slug",
        -                        "display_name",
        -                        "price_local",
        -                        "currency",
        -                        "billing",
        -                        "unlock_summary"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "current_tier": {
        -                    "const": "free",
        -                    "default": "free",
        -                    "type": "string"
        -                  },
        -                  "pass_credit": {
        -                    "anyOf": [
        -                      {
        -                        "additionalProperties": false,
        -                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        -                        "properties": {
        -                          "amount_local": {
        -                            "type": "number"
        -                          },
        -                          "applies_to": {
        -                            "const": "solo_first_month",
        -                            "default": "solo_first_month",
        -                            "type": "string"
        -                          },
        -                          "currency": {
        -                            "type": "string"
        -                          },
        -                          "redeemable_until": {
        -                            "type": "string"
        -                          }
        -                        },
        -                        "required": [
        -                          "amount_local",
        -                          "currency",
        -                          "redeemable_until"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "pricing_url": {
        -                    "default": "https://civilquants.com/pricing",
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "available_tiers"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tos_url": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "upgrade_hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "warranty_disclaimer": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          }
        -        },
        -        "required": [
        -          "request_id",
        -          "issued_at",
        -          "tier"
        -        ],
        -        "type": "object"
        -      },
        -      "data": {
        -        "default": null,
        -        "title": "Data"
        -      },
        -      "error": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        -            "properties": {
        -              "code": {
        -                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        -                "enum": [
        -                  "RATE_LIMIT_EXCEEDED",
        -                  "TIER_INSUFFICIENT",
        -                  "INVALID_INPUT",
        -                  "SCHEMA_VERSION_MISMATCH",
        -                  "SCHEMA_INVARIANT_VIOLATION",
        -                  "UPSTREAM_TIMEOUT",
        -                  "BACKEND_FAILURE",
        -                  "IP_BLOCKED",
        -                  "RESOURCE_NOT_FOUND",
        -                  "RENDER_FAILURE",
        -                  "OCR_LOW_CONFIDENCE",
        -                  "MANUAL_REVIEW_REQUIRED",
        -                  "ACCEPTANCE_REQUIRED",
        -                  "INVALID_TOKEN"
        -                ],
        -                "type": "string"
        -              },
        -              "details": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "message": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "recoverable": {
        -                "type": "boolean"
        -              },
        -              "retry_after_seconds": {
        -                "anyOf": [
        -                  {
        -                    "minimum": 0,
        -                    "type": "integer"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              }
        -            },
        -            "required": [
        -              "code",
        -              "message",
        -              "recoverable"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      }
        -    },
        -    "required": [
        -      "_meta"
        -    ],
        -    "type": "object"
        -  }
        -]New value: +[
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "_meta": {
        +        "additionalProperties": false,
        +        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        +        "properties": {
        +          "deliverables": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        +                "properties": {
        +                  "docx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "dxf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "expires_at": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  },
        +                  "pdf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "xlsx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "expires_at"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "document_id": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "issued_at": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "rate_limit_remaining": {
        +            "anyOf": [
        +              {
        +                "minimum": 0,
        +                "type": "integer"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "request_id": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "schema_version": {
        +            "const": "1.0.0",
        +            "default": "1.0.0",
        +            "type": "string"
        +          },
        +          "scope_boundary": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        +                "properties": {
        +                  "not_in_scope": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "produced": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "recommended_companions": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "type": "string"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "produced",
        +                  "not_in_scope"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tier": {
        +            "enum": [
        +              "free",
        +              "paid"
        +            ],
        +            "type": "string"
        +          },
        +          "tier_upgrade": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        +                "properties": {
        +                  "available_tiers": {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        +                      "properties": {
        +                        "billing": {
        +                          "enum": [
        +                            "one_off",
        +                            "monthly",
        +                            "annual"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "currency": {
        +                          "enum": [
        +                            "GBP",
        +                            "SGD",
        +                            "EUR",
        +                            "USD",
        +                            "CAD",
        +                            "AUD",
        +                            "NZD",
        +                            "MYR"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "display_name": {
        +                          "type": "string"
        +                        },
        +                        "price_local": {
        +                          "type": "number"
        +                        },
        +                        "tier_slug": {
        +                          "enum": [
        +                            "7_day_pass",
        +                            "solo",
        +                            "studio",
        +                            "practice"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "unlock_summary": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "tier_slug",
        +                        "display_name",
        +                        "price_local",
        +                        "currency",
        +                        "billing",
        +                        "unlock_summary"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "current_tier": {
        +                    "const": "free",
        +                    "default": "free",
        +                    "type": "string"
        +                  },
        +                  "pass_credit": {
        +                    "anyOf": [
        +                      {
        +                        "additionalProperties": false,
        +                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        +                        "properties": {
        +                          "amount_local": {
        +                            "type": "number"
        +                          },
        +                          "applies_to": {
        +                            "const": "solo_first_month",
        +                            "default": "solo_first_month",
        +                            "type": "string"
        +                          },
        +                          "currency": {
        +                            "type": "string"
        +                          },
        +                          "redeemable_until": {
        +                            "type": "string"
        +                          }
        +                        },
        +                        "required": [
        +                          "amount_local",
        +                          "currency",
        +                          "redeemable_until"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "pricing_url": {
        +                    "default": "https://civilquants.com/pricing",
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "available_tiers"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tos_url": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "upgrade_hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "warranty_disclaimer": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          }
        +        },
        +        "required": [
        +          "request_id",
        +          "issued_at",
        +          "tier"
        +        ],
        +        "type": "object"
        +      },
        +      "data": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Schema § 1.1 — the typed payload returned inside `MCPResponse[ComputeResult]`.\n\nFree-tier responses omit `drawings` (the downloadable CAD artefact\npointers — the paid differentiator); the bridge enforces this. The\n`audit_trail` and the inline `drawing` preview are present on BOTH tiers\n(V1 ALIGN / 60th-fire D + C). `text_summary` is bounded to 2000 chars —\nkeeps the LLM-facing summary token-cheap and forces longer narrative into\nBoQ row descriptions where it belongs. `warnings` is the non-fatal\ngeometry advisory list (both tiers).",
        +            "properties": {
        +              "assembly_slug": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "audit_trail": {
        +                "anyOf": [
        +                  {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.7 — paid-tier audit-trail entry.\n\nOne entry per BoQ row; `boq_row_index` ties to the row position in\n`ComputeResult.boq_rows`. `derivation` is the human-readable formula\nwalk-through; `formula` is the optional formal expression.",
        +                      "properties": {
        +                        "boq_row_index": {
        +                          "minimum": 0,
        +                          "type": "integer"
        +                        },
        +                        "derivation": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "formula": {
        +                          "anyOf": [
        +                            {
        +                              "type": "string"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ],
        +                          "default": null
        +                        },
        +                        "id": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "parameters_referenced": {
        +                          "items": {
        +                            "type": "string"
        +                          },
        +                          "type": "array"
        +                        }
        +                      },
        +                      "required": [
        +                        "id",
        +                        "boq_row_index",
        +                        "derivation"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "boq_rows": {
        +                "items": {
        +                  "additionalProperties": false,
        +                  "description": "Schema § 1.3 — a single bill row in the requested standard's format.\n\n`description` is the non-verbatim functional description per spec § 13.9 /\n§ 15 invariant — NEVER reproduces a standard's verbatim clause text.\n`rate` / `amount` ship null because rates are commodity data the customer\nowns; the engine's job is the measurement, not the pricing.",
        +                  "properties": {
        +                    "amount": {
        +                      "anyOf": [
        +                        {
        +                          "type": "number"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "attribution": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "audit_id": {
        +                      "anyOf": [
        +                        {
        +                          "type": "string"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "description": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "quantity": {
        +                      "minimum": 0,
        +                      "type": "number"
        +                    },
        +                    "rate": {
        +                      "anyOf": [
        +                        {
        +                          "type": "number"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "unit": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "work_section": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    }
        +                  },
        +                  "required": [
        +                    "work_section",
        +                    "description",
        +                    "quantity",
        +                    "unit",
        +                    "attribution"
        +                  ],
        +                  "type": "object"
        +                },
        +                "type": "array"
        +              },
        +              "drawing": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": false,
        +                    "description": "Schema § 1.6a — inline server-rendered SVG preview of the geometry.\n\nThe MCP mirror of the web ``/compute`` response's ``drawing`` field\n(``api.schemas.compute.DrawingRef``): the same on-screen dimensioned\ndrawing both tiers see in the workspace, surfaced on the MCP compute\nresponse so a chat client can render it inline (60th-fire item C). This\nis the on-screen preview — present on BOTH tiers per the free/paid\nboundary; the downloadable CAD artefacts (DXF / dimensioned PDF) remain\nthe paid differentiator via the export tools.\n\nDefined here rather than importing ``DrawingRef`` because the web\n``schemas`` package imports back into this module (``schemas.render``),\nso reusing it would create an import cycle — the MCP wire contract keeps\nits own copy, the same pattern as ``BoQRow`` / ``DrawingReference``.",
        +                    "properties": {
        +                      "entity_count": {
        +                        "minimum": 0,
        +                        "type": "integer"
        +                      },
        +                      "svg_b64": {
        +                        "minLength": 1,
        +                        "type": "string"
        +                      },
        +                      "unit_of_drawing": {
        +                        "const": "m",
        +                        "default": "m",
        +                        "type": "string"
        +                      },
        +                      "viewbox_height": {
        +                        "exclusiveMinimum": 0,
        +                        "type": "number"
        +                      },
        +                      "viewbox_width": {
        +                        "exclusiveMinimum": 0,
        +                        "type": "number"
        +                      },
        +                      "viewbox_x": {
        +                        "type": "number"
        +                      },
        +                      "viewbox_y": {
        +                        "type": "number"
        +                      }
        +                    },
        +                    "required": [
        +                      "svg_b64",
        +                      "viewbox_x",
        +                      "viewbox_y",
        +                      "viewbox_width",
        +                      "viewbox_height",
        +                      "entity_count"
        +                    ],
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "drawings": {
        +                "anyOf": [
        +                  {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.6 — paid-tier drawing artefact pointer.\n\n`url` is an R2-signed URL; expiry is carried in `_meta.deliverables.expires_at`\non the envelope (not duplicated here). `layers` is DXF-only; PDF/SVG\ncallers omit it.",
        +                      "properties": {
        +                        "drawing_type": {
        +                          "enum": [
        +                            "section",
        +                            "plan",
        +                            "elevation",
        +                            "isometric",
        +                            "detail"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "format": {
        +                          "enum": [
        +                            "DXF",
        +                            "PDF",
        +                            "SVG"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "layers": {
        +                          "anyOf": [
        +                            {
        +                              "items": {
        +                                "type": "string"
        +                              },
        +                              "type": "array"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ],
        +                          "default": null
        +                        },
        +                        "scale": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "sheet_size": {
        +                          "enum": [
        +                            "A1",
        +                            "A2",
        +                            "A3",
        +                            "A4"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "url": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "drawing_type",
        +                        "format",
        +                        "url",
        +                        "sheet_size",
        +                        "scale"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "parameters_used": {
        +                "additionalProperties": false,
        +                "description": "Schema § 1.2 — the parameter snapshot the engine actually used.\n\nSplits user-supplied values from engine defaults so customers can see\nwhich numbers came from them and which the engine filled in. Every\ndefaulted parameter SHOULD have a corresponding entry in `assumptions`\n— the bridge layer enforces this when wrapping engine output.",
        +                "properties": {
        +                  "assumptions": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "engine_defaults": {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  "resolved_from_description": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "additionalProperties": false,
        +                          "description": "Schema § 1.2 — a parameter resolved by the forgiving-input layer.\n\nPopulated by the Track B-Forgiving Haiku-4.5 resolution pass; until that\nlayer lands, instances are constructed only by tests. `source` distinguishes\nthe resolution path so customers can audit which fields were inferred.",
        +                          "properties": {
        +                            "confidence": {
        +                              "anyOf": [
        +                                {
        +                                  "enum": [
        +                                    "high",
        +                                    "medium",
        +                                    "low"
        +                                  ],
        +                                  "type": "string"
        +                                },
        +                                {
        +                                  "type": "null"
        +                                }
        +                              ],
        +                              "default": null
        +                            },
        +                            "field_name": {
        +                              "minLength": 1,
        +                              "type": "string"
        +                            },
        +                            "resolved_value": {},
        +                            "source": {
        +                              "enum": [
        +                                "description_field",
        +                                "haiku_resolution",
        +                                "engine_default"
        +                              ],
        +                              "type": "string"
        +                            }
        +                          },
        +                          "required": [
        +                            "field_name",
        +                            "resolved_value",
        +                            "source"
        +                          ],
        +                          "type": "object"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "user_supplied": {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  }
        +                },
        +                "type": "object"
        +              },
        +              "standard": {
        +                "enum": [
        +                  "CESMM4",
        +                  "NRM2",
        +                  "SMM7",
        +                  "MMHW"
        +                ],
        +                "type": "string"
        +              },
        +              "text_summary": {
        +                "maxLength": 2000,
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "totals_summary": {
        +                "additionalProperties": false,
        +                "description": "Schema § 1.4 — totals_summary as a typed wrapper around the free-form dict.\n\nWire shape is a flat object (`{\"concrete_m3\": {...}, \"rebar_t\": {...}}`).\nWe model it as `RootModel`-equivalent via `model_config(extra=\"allow\")`\n+ a single `__root__`-style `entries` dict. Pydantic v2 recommends\n`RootModel` for free-form roots; using a wrapper class keeps the import\nsurface uniform with the rest of this module.",
        +                "properties": {
        +                  "entries": {
        +                    "additionalProperties": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.4 — single material/work-class total entry.",
        +                      "properties": {
        +                        "quantity": {
        +                          "minimum": 0,
        +                          "type": "number"
        +                        },
        +                        "unit": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "quantity",
        +                        "unit"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "object"
        +                  }
        +                },
        +                "type": "object"
        +              },
        +              "warnings": {
        +                "items": {
        +                  "additionalProperties": false,
        +                  "description": "Schema § 1.8 — a non-fatal geometry advisory (56th-fire T2).\n\nThe wire projection of the engine's `core.GeometryWarning`. Advisory only:\na warning NEVER changes a measured quantity — it flags geometry that is\nvalid but likely a mistake (e.g. a stale dependent-height default). Present\non BOTH tiers — a correctness/safety signal, not a paid feature.",
        +                  "properties": {
        +                    "affected_params": {
        +                      "items": {
        +                        "type": "string"
        +                      },
        +                      "type": "array"
        +                    },
        +                    "code": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "detail": {
        +                      "additionalProperties": {
        +                        "type": "number"
        +                      },
        +                      "type": "object"
        +                    },
        +                    "message": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "severity": {
        +                      "enum": [
        +                        "info",
        +                        "advisory",
        +                        "caution"
        +                      ],
        +                      "type": "string"
        +                    }
        +                  },
        +                  "required": [
        +                    "code",
        +                    "severity",
        +                    "message"
        +                  ],
        +                  "type": "object"
        +                },
        +                "type": "array"
        +              }
        +            },
        +            "required": [
        +              "assembly_slug",
        +              "standard",
        +              "parameters_used",
        +              "boq_rows",
        +              "totals_summary",
        +              "text_summary"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      },
        +      "error": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        +            "properties": {
        +              "code": {
        +                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        +                "enum": [
        +                  "RATE_LIMIT_EXCEEDED",
        +                  "TIER_INSUFFICIENT",
        +                  "INVALID_INPUT",
        +                  "SCHEMA_VERSION_MISMATCH",
        +                  "SCHEMA_INVARIANT_VIOLATION",
        +                  "UPSTREAM_TIMEOUT",
        +                  "BACKEND_FAILURE",
        +                  "IP_BLOCKED",
        +                  "RESOURCE_NOT_FOUND",
        +                  "RENDER_FAILURE",
        +                  "OCR_LOW_CONFIDENCE",
        +                  "MANUAL_REVIEW_REQUIRED",
        +                  "ACCEPTANCE_REQUIRED",
        +                  "INVALID_TOKEN"
        +                ],
        +                "type": "string"
        +              },
        +              "details": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "message": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "recoverable": {
        +                "type": "boolean"
        +              },
        +              "retry_after_seconds": {
        +                "anyOf": [
        +                  {
        +                    "minimum": 0,
        +                    "type": "integer"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              }
        +            },
        +            "required": [
        +              "code",
        +              "message",
        +              "recoverable"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      }
        +    },
        +    "required": [
        +      "_meta"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "_meta": {
        +        "additionalProperties": false,
        +        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        +        "properties": {
        +          "deliverables": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        +                "properties": {
        +                  "docx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "dxf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "expires_at": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  },
        +                  "pdf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "xlsx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "expires_at"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "document_id": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "issued_at": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "rate_limit_remaining": {
        +            "anyOf": [
        +              {
        +                "minimum": 0,
        +                "type": "integer"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "request_id": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "schema_version": {
        +            "const": "1.0.0",
        +            "default": "1.0.0",
        +            "type": "string"
        +          },
        +          "scope_boundary": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        +                "properties": {
        +                  "not_in_scope": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "produced": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "recommended_companions": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "type": "string"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "produced",
        +                  "not_in_scope"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tier": {
        +            "enum": [
        +              "free",
        +              "paid"
        +            ],
        +            "type": "string"
        +          },
        +          "tier_upgrade": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        +                "properties": {
        +                  "available_tiers": {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        +                      "properties": {
        +                        "billing": {
        +                          "enum": [
        +                            "one_off",
        +                            "monthly",
        +                            "annual"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "currency": {
        +                          "enum": [
        +                            "GBP",
        +                            "SGD",
        +                            "EUR",
        +                            "USD",
        +                            "CAD",
        +                            "AUD",
        +                            "NZD",
        +                            "MYR"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "display_name": {
        +                          "type": "string"
        +                        },
        +                        "price_local": {
        +                          "type": "number"
        +                        },
        +                        "tier_slug": {
        +                          "enum": [
        +                            "7_day_pass",
        +                            "solo",
        +                            "studio",
        +                            "practice"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "unlock_summary": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "tier_slug",
        +                        "display_name",
        +                        "price_local",
        +                        "currency",
        +                        "billing",
        +                        "unlock_summary"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "current_tier": {
        +                    "const": "free",
        +                    "default": "free",
        +                    "type": "string"
        +                  },
        +                  "pass_credit": {
        +                    "anyOf": [
        +                      {
        +                        "additionalProperties": false,
        +                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        +                        "properties": {
        +                          "amount_local": {
        +                            "type": "number"
        +                          },
        +                          "applies_to": {
        +                            "const": "solo_first_month",
        +                            "default": "solo_first_month",
        +                            "type": "string"
        +                          },
        +                          "currency": {
        +                            "type": "string"
        +                          },
        +                          "redeemable_until": {
        +                            "type": "string"
        +                          }
        +                        },
        +                        "required": [
        +                          "amount_local",
        +                          "currency",
        +                          "redeemable_until"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "pricing_url": {
        +                    "default": "https://civilquants.com/pricing",
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "available_tiers"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tos_url": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "upgrade_hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "warranty_disclaimer": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          }
        +        },
        +        "required": [
        +          "request_id",
        +          "issued_at",
        +          "tier"
        +        ],
        +        "type": "object"
        +      },
        +      "data": {
        +        "default": null,
        +        "title": "Data"
        +      },
        +      "error": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        +            "properties": {
        +              "code": {
        +                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        +                "enum": [
        +                  "RATE_LIMIT_EXCEEDED",
        +                  "TIER_INSUFFICIENT",
        +                  "INVALID_INPUT",
        +                  "SCHEMA_VERSION_MISMATCH",
        +                  "SCHEMA_INVARIANT_VIOLATION",
        +                  "UPSTREAM_TIMEOUT",
        +                  "BACKEND_FAILURE",
        +                  "IP_BLOCKED",
        +                  "RESOURCE_NOT_FOUND",
        +                  "RENDER_FAILURE",
        +                  "OCR_LOW_CONFIDENCE",
        +                  "MANUAL_REVIEW_REQUIRED",
        +                  "ACCEPTANCE_REQUIRED",
        +                  "INVALID_TOKEN"
        +                ],
        +                "type": "string"
        +              },
        +              "details": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "message": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "recoverable": {
        +                "type": "boolean"
        +              },
        +              "retry_after_seconds": {
        +                "anyOf": [
        +                  {
        +                    "minimum": 0,
        +                    "type": "integer"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              }
        +            },
        +            "required": [
        +              "code",
        +              "message",
        +              "recoverable"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      }
        +    },
        +    "required": [
        +      "_meta"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedcompute_connection_to_existing3 fields changed
      • addedInput schema / properties / deliverables
        Added value: +{
        +  "anyOf": [
        +    {
        +      "items": {
        +        "const": "xlsx",
        +        "type": "string"
        +      },
        +      "type": "array"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null
        +}
      • addedInput schema / properties / output_mode
        Added value: +{
        +  "default": "full_json",
        +  "enum": [
        +    "summary",
        +    "boq",
        +    "boq_with_backup",
        +    "full_json"
        +  ],
        +  "type": "string"
        +}
      • changedOutput schema / properties / result / anyOf
        Previous value: -[
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "_meta": {
        -        "additionalProperties": false,
        -        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        -        "properties": {
        -          "deliverables": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        -                "properties": {
        -                  "docx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "dxf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "expires_at": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  },
        -                  "pdf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "xlsx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "expires_at"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "document_id": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "issued_at": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "rate_limit_remaining": {
        -            "anyOf": [
        -              {
        -                "minimum": 0,
        -                "type": "integer"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "request_id": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "schema_version": {
        -            "const": "1.0.0",
        -            "default": "1.0.0",
        -            "type": "string"
        -          },
        -          "scope_boundary": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        -                "properties": {
        -                  "not_in_scope": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "produced": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "recommended_companions": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "type": "string"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "produced",
        -                  "not_in_scope"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tier": {
        -            "enum": [
        -              "free",
        -              "paid"
        -            ],
        -            "type": "string"
        -          },
        -          "tier_upgrade": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        -                "properties": {
        -                  "available_tiers": {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        -                      "properties": {
        -                        "billing": {
        -                          "enum": [
        -                            "one_off",
        -                            "monthly",
        -                            "annual"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "currency": {
        -                          "enum": [
        -                            "GBP",
        -                            "SGD",
        -                            "EUR",
        -                            "USD",
        -                            "CAD",
        -                            "AUD",
        -                            "NZD",
        -                            "MYR"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "display_name": {
        -                          "type": "string"
        -                        },
        -                        "price_local": {
        -                          "type": "number"
        -                        },
        -                        "tier_slug": {
        -                          "enum": [
        -                            "7_day_pass",
        -                            "solo",
        -                            "studio",
        -                            "practice"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "unlock_summary": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "tier_slug",
        -                        "display_name",
        -                        "price_local",
        -                        "currency",
        -                        "billing",
        -                        "unlock_summary"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "current_tier": {
        -                    "const": "free",
        -                    "default": "free",
        -                    "type": "string"
        -                  },
        -                  "pass_credit": {
        -                    "anyOf": [
        -                      {
        -                        "additionalProperties": false,
        -                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        -                        "properties": {
        -                          "amount_local": {
        -                            "type": "number"
        -                          },
        -                          "applies_to": {
        -                            "const": "solo_first_month",
        -                            "default": "solo_first_month",
        -                            "type": "string"
        -                          },
        -                          "currency": {
        -                            "type": "string"
        -                          },
        -                          "redeemable_until": {
        -                            "type": "string"
        -                          }
        -                        },
        -                        "required": [
        -                          "amount_local",
        -                          "currency",
        -                          "redeemable_until"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "pricing_url": {
        -                    "default": "https://civilquants.com/pricing",
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "available_tiers"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tos_url": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "upgrade_hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "warranty_disclaimer": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          }
        -        },
        -        "required": [
        -          "request_id",
        -          "issued_at",
        -          "tier"
        -        ],
        -        "type": "object"
        -      },
        -      "data": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Schema § 1.1 — the typed payload returned inside `MCPResponse[ComputeResult]`.\n\nFree-tier responses MUST omit `drawings` and `audit_trail` (the bridge\nenforces this); paid-tier responses populate both. `text_summary` is\nbounded to 2000 chars — keeps the LLM-facing summary token-cheap and\nforces longer narrative into BoQ row descriptions where it belongs.\n`warnings` is the non-fatal geometry advisory list (both tiers).",
        -            "properties": {
        -              "assembly_slug": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "audit_trail": {
        -                "anyOf": [
        -                  {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.7 — paid-tier audit-trail entry.\n\nOne entry per BoQ row; `boq_row_index` ties to the row position in\n`ComputeResult.boq_rows`. `derivation` is the human-readable formula\nwalk-through; `formula` is the optional formal expression.",
        -                      "properties": {
        -                        "boq_row_index": {
        -                          "minimum": 0,
        -                          "type": "integer"
        -                        },
        -                        "derivation": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "formula": {
        -                          "anyOf": [
        -                            {
        -                              "type": "string"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ],
        -                          "default": null
        -                        },
        -                        "id": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "parameters_referenced": {
        -                          "items": {
        -                            "type": "string"
        -                          },
        -                          "type": "array"
        -                        }
        -                      },
        -                      "required": [
        -                        "id",
        -                        "boq_row_index",
        -                        "derivation"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "boq_rows": {
        -                "items": {
        -                  "additionalProperties": false,
        -                  "description": "Schema § 1.3 — a single bill row in the requested standard's format.\n\n`description` is the non-verbatim functional description per spec § 13.9 /\n§ 15 invariant — NEVER reproduces a standard's verbatim clause text.\n`rate` / `amount` ship null because rates are commodity data the customer\nowns; the engine's job is the measurement, not the pricing.",
        -                  "properties": {
        -                    "amount": {
        -                      "anyOf": [
        -                        {
        -                          "type": "number"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "attribution": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "audit_id": {
        -                      "anyOf": [
        -                        {
        -                          "type": "string"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "description": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "quantity": {
        -                      "minimum": 0,
        -                      "type": "number"
        -                    },
        -                    "rate": {
        -                      "anyOf": [
        -                        {
        -                          "type": "number"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "unit": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "work_section": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    }
        -                  },
        -                  "required": [
        -                    "work_section",
        -                    "description",
        -                    "quantity",
        -                    "unit",
        -                    "attribution"
        -                  ],
        -                  "type": "object"
        -                },
        -                "type": "array"
        -              },
        -              "drawings": {
        -                "anyOf": [
        -                  {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.6 — paid-tier drawing artefact pointer.\n\n`url` is an R2-signed URL; expiry is carried in `_meta.deliverables.expires_at`\non the envelope (not duplicated here). `layers` is DXF-only; PDF/SVG\ncallers omit it.",
        -                      "properties": {
        -                        "drawing_type": {
        -                          "enum": [
        -                            "section",
        -                            "plan",
        -                            "elevation",
        -                            "isometric",
        -                            "detail"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "format": {
        -                          "enum": [
        -                            "DXF",
        -                            "PDF",
        -                            "SVG"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "layers": {
        -                          "anyOf": [
        -                            {
        -                              "items": {
        -                                "type": "string"
        -                              },
        -                              "type": "array"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ],
        -                          "default": null
        -                        },
        -                        "scale": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "sheet_size": {
        -                          "enum": [
        -                            "A1",
        -                            "A2",
        -                            "A3",
        -                            "A4"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "url": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "drawing_type",
        -                        "format",
        -                        "url",
        -                        "sheet_size",
        -                        "scale"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "parameters_used": {
        -                "additionalProperties": false,
        -                "description": "Schema § 1.2 — the parameter snapshot the engine actually used.\n\nSplits user-supplied values from engine defaults so customers can see\nwhich numbers came from them and which the engine filled in. Every\ndefaulted parameter SHOULD have a corresponding entry in `assumptions`\n— the bridge layer enforces this when wrapping engine output.",
        -                "properties": {
        -                  "assumptions": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "engine_defaults": {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  "resolved_from_description": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "additionalProperties": false,
        -                          "description": "Schema § 1.2 — a parameter resolved by the forgiving-input layer.\n\nPopulated by the Track B-Forgiving Haiku-4.5 resolution pass; until that\nlayer lands, instances are constructed only by tests. `source` distinguishes\nthe resolution path so customers can audit which fields were inferred.",
        -                          "properties": {
        -                            "confidence": {
        -                              "anyOf": [
        -                                {
        -                                  "enum": [
        -                                    "high",
        -                                    "medium",
        -                                    "low"
        -                                  ],
        -                                  "type": "string"
        -                                },
        -                                {
        -                                  "type": "null"
        -                                }
        -                              ],
        -                              "default": null
        -                            },
        -                            "field_name": {
        -                              "minLength": 1,
        -                              "type": "string"
        -                            },
        -                            "resolved_value": {},
        -                            "source": {
        -                              "enum": [
        -                                "description_field",
        -                                "haiku_resolution",
        -                                "engine_default"
        -                              ],
        -                              "type": "string"
        -                            }
        -                          },
        -                          "required": [
        -                            "field_name",
        -                            "resolved_value",
        -                            "source"
        -                          ],
        -                          "type": "object"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "user_supplied": {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  }
        -                },
        -                "type": "object"
        -              },
        -              "standard": {
        -                "enum": [
        -                  "CESMM4",
        -                  "NRM2",
        -                  "SMM7",
        -                  "MMHW"
        -                ],
        -                "type": "string"
        -              },
        -              "text_summary": {
        -                "maxLength": 2000,
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "totals_summary": {
        -                "additionalProperties": false,
        -                "description": "Schema § 1.4 — totals_summary as a typed wrapper around the free-form dict.\n\nWire shape is a flat object (`{\"concrete_m3\": {...}, \"rebar_t\": {...}}`).\nWe model it as `RootModel`-equivalent via `model_config(extra=\"allow\")`\n+ a single `__root__`-style `entries` dict. Pydantic v2 recommends\n`RootModel` for free-form roots; using a wrapper class keeps the import\nsurface uniform with the rest of this module.",
        -                "properties": {
        -                  "entries": {
        -                    "additionalProperties": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.4 — single material/work-class total entry.",
        -                      "properties": {
        -                        "quantity": {
        -                          "minimum": 0,
        -                          "type": "number"
        -                        },
        -                        "unit": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "quantity",
        -                        "unit"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "object"
        -                  }
        -                },
        -                "type": "object"
        -              },
        -              "warnings": {
        -                "items": {
        -                  "additionalProperties": false,
        -                  "description": "Schema § 1.8 — a non-fatal geometry advisory (56th-fire T2).\n\nThe wire projection of the engine's `core.GeometryWarning`. Advisory only:\na warning NEVER changes a measured quantity — it flags geometry that is\nvalid but likely a mistake (e.g. a stale dependent-height default). Present\non BOTH tiers — a correctness/safety signal, not a paid feature.",
        -                  "properties": {
        -                    "affected_params": {
        -                      "items": {
        -                        "type": "string"
        -                      },
        -                      "type": "array"
        -                    },
        -                    "code": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "detail": {
        -                      "additionalProperties": {
        -                        "type": "number"
        -                      },
        -                      "type": "object"
        -                    },
        -                    "message": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "severity": {
        -                      "enum": [
        -                        "info",
        -                        "advisory",
        -                        "caution"
        -                      ],
        -                      "type": "string"
        -                    }
        -                  },
        -                  "required": [
        -                    "code",
        -                    "severity",
        -                    "message"
        -                  ],
        -                  "type": "object"
        -                },
        -                "type": "array"
        -              }
        -            },
        -            "required": [
        -              "assembly_slug",
        -              "standard",
        -              "parameters_used",
        -              "boq_rows",
        -              "totals_summary",
        -              "text_summary"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      },
        -      "error": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        -            "properties": {
        -              "code": {
        -                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        -                "enum": [
        -                  "RATE_LIMIT_EXCEEDED",
        -                  "TIER_INSUFFICIENT",
        -                  "INVALID_INPUT",
        -                  "SCHEMA_VERSION_MISMATCH",
        -                  "SCHEMA_INVARIANT_VIOLATION",
        -                  "UPSTREAM_TIMEOUT",
        -                  "BACKEND_FAILURE",
        -                  "IP_BLOCKED",
        -                  "RESOURCE_NOT_FOUND",
        -                  "RENDER_FAILURE",
        -                  "OCR_LOW_CONFIDENCE",
        -                  "MANUAL_REVIEW_REQUIRED",
        -                  "ACCEPTANCE_REQUIRED",
        -                  "INVALID_TOKEN"
        -                ],
        -                "type": "string"
        -              },
        -              "details": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "message": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "recoverable": {
        -                "type": "boolean"
        -              },
        -              "retry_after_seconds": {
        -                "anyOf": [
        -                  {
        -                    "minimum": 0,
        -                    "type": "integer"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              }
        -            },
        -            "required": [
        -              "code",
        -              "message",
        -              "recoverable"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      }
        -    },
        -    "required": [
        -      "_meta"
        -    ],
        -    "type": "object"
        -  },
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "_meta": {
        -        "additionalProperties": false,
        -        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        -        "properties": {
        -          "deliverables": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        -                "properties": {
        -                  "docx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "dxf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "expires_at": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  },
        -                  "pdf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "xlsx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "expires_at"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "document_id": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "issued_at": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "rate_limit_remaining": {
        -            "anyOf": [
        -              {
        -                "minimum": 0,
        -                "type": "integer"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "request_id": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "schema_version": {
        -            "const": "1.0.0",
        -            "default": "1.0.0",
        -            "type": "string"
        -          },
        -          "scope_boundary": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        -                "properties": {
        -                  "not_in_scope": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "produced": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "recommended_companions": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "type": "string"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "produced",
        -                  "not_in_scope"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tier": {
        -            "enum": [
        -              "free",
        -              "paid"
        -            ],
        -            "type": "string"
        -          },
        -          "tier_upgrade": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        -                "properties": {
        -                  "available_tiers": {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        -                      "properties": {
        -                        "billing": {
        -                          "enum": [
        -                            "one_off",
        -                            "monthly",
        -                            "annual"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "currency": {
        -                          "enum": [
        -                            "GBP",
        -                            "SGD",
        -                            "EUR",
        -                            "USD",
        -                            "CAD",
        -                            "AUD",
        -                            "NZD",
        -                            "MYR"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "display_name": {
        -                          "type": "string"
        -                        },
        -                        "price_local": {
        -                          "type": "number"
        -                        },
        -                        "tier_slug": {
        -                          "enum": [
        -                            "7_day_pass",
        -                            "solo",
        -                            "studio",
        -                            "practice"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "unlock_summary": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "tier_slug",
        -                        "display_name",
        -                        "price_local",
        -                        "currency",
        -                        "billing",
        -                        "unlock_summary"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "current_tier": {
        -                    "const": "free",
        -                    "default": "free",
        -                    "type": "string"
        -                  },
        -                  "pass_credit": {
        -                    "anyOf": [
        -                      {
        -                        "additionalProperties": false,
        -                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        -                        "properties": {
        -                          "amount_local": {
        -                            "type": "number"
        -                          },
        -                          "applies_to": {
        -                            "const": "solo_first_month",
        -                            "default": "solo_first_month",
        -                            "type": "string"
        -                          },
        -                          "currency": {
        -                            "type": "string"
        -                          },
        -                          "redeemable_until": {
        -                            "type": "string"
        -                          }
        -                        },
        -                        "required": [
        -                          "amount_local",
        -                          "currency",
        -                          "redeemable_until"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "pricing_url": {
        -                    "default": "https://civilquants.com/pricing",
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "available_tiers"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tos_url": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "upgrade_hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "warranty_disclaimer": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          }
        -        },
        -        "required": [
        -          "request_id",
        -          "issued_at",
        -          "tier"
        -        ],
        -        "type": "object"
        -      },
        -      "data": {
        -        "default": null,
        -        "title": "Data"
        -      },
        -      "error": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        -            "properties": {
        -              "code": {
        -                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        -                "enum": [
        -                  "RATE_LIMIT_EXCEEDED",
        -                  "TIER_INSUFFICIENT",
        -                  "INVALID_INPUT",
        -                  "SCHEMA_VERSION_MISMATCH",
        -                  "SCHEMA_INVARIANT_VIOLATION",
        -                  "UPSTREAM_TIMEOUT",
        -                  "BACKEND_FAILURE",
        -                  "IP_BLOCKED",
        -                  "RESOURCE_NOT_FOUND",
        -                  "RENDER_FAILURE",
        -                  "OCR_LOW_CONFIDENCE",
        -                  "MANUAL_REVIEW_REQUIRED",
        -                  "ACCEPTANCE_REQUIRED",
        -                  "INVALID_TOKEN"
        -                ],
        -                "type": "string"
        -              },
        -              "details": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "message": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "recoverable": {
        -                "type": "boolean"
        -              },
        -              "retry_after_seconds": {
        -                "anyOf": [
        -                  {
        -                    "minimum": 0,
        -                    "type": "integer"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              }
        -            },
        -            "required": [
        -              "code",
        -              "message",
        -              "recoverable"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      }
        -    },
        -    "required": [
        -      "_meta"
        -    ],
        -    "type": "object"
        -  }
        -]New value: +[
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "_meta": {
        +        "additionalProperties": false,
        +        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        +        "properties": {
        +          "deliverables": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        +                "properties": {
        +                  "docx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "dxf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "expires_at": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  },
        +                  "pdf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "xlsx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "expires_at"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "document_id": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "issued_at": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "rate_limit_remaining": {
        +            "anyOf": [
        +              {
        +                "minimum": 0,
        +                "type": "integer"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "request_id": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "schema_version": {
        +            "const": "1.0.0",
        +            "default": "1.0.0",
        +            "type": "string"
        +          },
        +          "scope_boundary": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        +                "properties": {
        +                  "not_in_scope": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "produced": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "recommended_companions": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "type": "string"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "produced",
        +                  "not_in_scope"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tier": {
        +            "enum": [
        +              "free",
        +              "paid"
        +            ],
        +            "type": "string"
        +          },
        +          "tier_upgrade": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        +                "properties": {
        +                  "available_tiers": {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        +                      "properties": {
        +                        "billing": {
        +                          "enum": [
        +                            "one_off",
        +                            "monthly",
        +                            "annual"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "currency": {
        +                          "enum": [
        +                            "GBP",
        +                            "SGD",
        +                            "EUR",
        +                            "USD",
        +                            "CAD",
        +                            "AUD",
        +                            "NZD",
        +                            "MYR"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "display_name": {
        +                          "type": "string"
        +                        },
        +                        "price_local": {
        +                          "type": "number"
        +                        },
        +                        "tier_slug": {
        +                          "enum": [
        +                            "7_day_pass",
        +                            "solo",
        +                            "studio",
        +                            "practice"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "unlock_summary": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "tier_slug",
        +                        "display_name",
        +                        "price_local",
        +                        "currency",
        +                        "billing",
        +                        "unlock_summary"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "current_tier": {
        +                    "const": "free",
        +                    "default": "free",
        +                    "type": "string"
        +                  },
        +                  "pass_credit": {
        +                    "anyOf": [
        +                      {
        +                        "additionalProperties": false,
        +                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        +                        "properties": {
        +                          "amount_local": {
        +                            "type": "number"
        +                          },
        +                          "applies_to": {
        +                            "const": "solo_first_month",
        +                            "default": "solo_first_month",
        +                            "type": "string"
        +                          },
        +                          "currency": {
        +                            "type": "string"
        +                          },
        +                          "redeemable_until": {
        +                            "type": "string"
        +                          }
        +                        },
        +                        "required": [
        +                          "amount_local",
        +                          "currency",
        +                          "redeemable_until"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "pricing_url": {
        +                    "default": "https://civilquants.com/pricing",
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "available_tiers"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tos_url": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "upgrade_hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "warranty_disclaimer": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          }
        +        },
        +        "required": [
        +          "request_id",
        +          "issued_at",
        +          "tier"
        +        ],
        +        "type": "object"
        +      },
        +      "data": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Schema § 1.1 — the typed payload returned inside `MCPResponse[ComputeResult]`.\n\nFree-tier responses omit `drawings` (the downloadable CAD artefact\npointers — the paid differentiator); the bridge enforces this. The\n`audit_trail` and the inline `drawing` preview are present on BOTH tiers\n(V1 ALIGN / 60th-fire D + C). `text_summary` is bounded to 2000 chars —\nkeeps the LLM-facing summary token-cheap and forces longer narrative into\nBoQ row descriptions where it belongs. `warnings` is the non-fatal\ngeometry advisory list (both tiers).",
        +            "properties": {
        +              "assembly_slug": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "audit_trail": {
        +                "anyOf": [
        +                  {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.7 — paid-tier audit-trail entry.\n\nOne entry per BoQ row; `boq_row_index` ties to the row position in\n`ComputeResult.boq_rows`. `derivation` is the human-readable formula\nwalk-through; `formula` is the optional formal expression.",
        +                      "properties": {
        +                        "boq_row_index": {
        +                          "minimum": 0,
        +                          "type": "integer"
        +                        },
        +                        "derivation": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "formula": {
        +                          "anyOf": [
        +                            {
        +                              "type": "string"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ],
        +                          "default": null
        +                        },
        +                        "id": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "parameters_referenced": {
        +                          "items": {
        +                            "type": "string"
        +                          },
        +                          "type": "array"
        +                        }
        +                      },
        +                      "required": [
        +                        "id",
        +                        "boq_row_index",
        +                        "derivation"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "boq_rows": {
        +                "items": {
        +                  "additionalProperties": false,
        +                  "description": "Schema § 1.3 — a single bill row in the requested standard's format.\n\n`description` is the non-verbatim functional description per spec § 13.9 /\n§ 15 invariant — NEVER reproduces a standard's verbatim clause text.\n`rate` / `amount` ship null because rates are commodity data the customer\nowns; the engine's job is the measurement, not the pricing.",
        +                  "properties": {
        +                    "amount": {
        +                      "anyOf": [
        +                        {
        +                          "type": "number"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "attribution": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "audit_id": {
        +                      "anyOf": [
        +                        {
        +                          "type": "string"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "description": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "quantity": {
        +                      "minimum": 0,
        +                      "type": "number"
        +                    },
        +                    "rate": {
        +                      "anyOf": [
        +                        {
        +                          "type": "number"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "unit": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "work_section": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    }
        +                  },
        +                  "required": [
        +                    "work_section",
        +                    "description",
        +                    "quantity",
        +                    "unit",
        +                    "attribution"
        +                  ],
        +                  "type": "object"
        +                },
        +                "type": "array"
        +              },
        +              "drawing": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": false,
        +                    "description": "Schema § 1.6a — inline server-rendered SVG preview of the geometry.\n\nThe MCP mirror of the web ``/compute`` response's ``drawing`` field\n(``api.schemas.compute.DrawingRef``): the same on-screen dimensioned\ndrawing both tiers see in the workspace, surfaced on the MCP compute\nresponse so a chat client can render it inline (60th-fire item C). This\nis the on-screen preview — present on BOTH tiers per the free/paid\nboundary; the downloadable CAD artefacts (DXF / dimensioned PDF) remain\nthe paid differentiator via the export tools.\n\nDefined here rather than importing ``DrawingRef`` because the web\n``schemas`` package imports back into this module (``schemas.render``),\nso reusing it would create an import cycle — the MCP wire contract keeps\nits own copy, the same pattern as ``BoQRow`` / ``DrawingReference``.",
        +                    "properties": {
        +                      "entity_count": {
        +                        "minimum": 0,
        +                        "type": "integer"
        +                      },
        +                      "svg_b64": {
        +                        "minLength": 1,
        +                        "type": "string"
        +                      },
        +                      "unit_of_drawing": {
        +                        "const": "m",
        +                        "default": "m",
        +                        "type": "string"
        +                      },
        +                      "viewbox_height": {
        +                        "exclusiveMinimum": 0,
        +                        "type": "number"
        +                      },
        +                      "viewbox_width": {
        +                        "exclusiveMinimum": 0,
        +                        "type": "number"
        +                      },
        +                      "viewbox_x": {
        +                        "type": "number"
        +                      },
        +                      "viewbox_y": {
        +                        "type": "number"
        +                      }
        +                    },
        +                    "required": [
        +                      "svg_b64",
        +                      "viewbox_x",
        +                      "viewbox_y",
        +                      "viewbox_width",
        +                      "viewbox_height",
        +                      "entity_count"
        +                    ],
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "drawings": {
        +                "anyOf": [
        +                  {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.6 — paid-tier drawing artefact pointer.\n\n`url` is an R2-signed URL; expiry is carried in `_meta.deliverables.expires_at`\non the envelope (not duplicated here). `layers` is DXF-only; PDF/SVG\ncallers omit it.",
        +                      "properties": {
        +                        "drawing_type": {
        +                          "enum": [
        +                            "section",
        +                            "plan",
        +                            "elevation",
        +                            "isometric",
        +                            "detail"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "format": {
        +                          "enum": [
        +                            "DXF",
        +                            "PDF",
        +                            "SVG"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "layers": {
        +                          "anyOf": [
        +                            {
        +                              "items": {
        +                                "type": "string"
        +                              },
        +                              "type": "array"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ],
        +                          "default": null
        +                        },
        +                        "scale": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "sheet_size": {
        +                          "enum": [
        +                            "A1",
        +                            "A2",
        +                            "A3",
        +                            "A4"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "url": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "drawing_type",
        +                        "format",
        +                        "url",
        +                        "sheet_size",
        +                        "scale"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "parameters_used": {
        +                "additionalProperties": false,
        +                "description": "Schema § 1.2 — the parameter snapshot the engine actually used.\n\nSplits user-supplied values from engine defaults so customers can see\nwhich numbers came from them and which the engine filled in. Every\ndefaulted parameter SHOULD have a corresponding entry in `assumptions`\n— the bridge layer enforces this when wrapping engine output.",
        +                "properties": {
        +                  "assumptions": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "engine_defaults": {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  "resolved_from_description": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "additionalProperties": false,
        +                          "description": "Schema § 1.2 — a parameter resolved by the forgiving-input layer.\n\nPopulated by the Track B-Forgiving Haiku-4.5 resolution pass; until that\nlayer lands, instances are constructed only by tests. `source` distinguishes\nthe resolution path so customers can audit which fields were inferred.",
        +                          "properties": {
        +                            "confidence": {
        +                              "anyOf": [
        +                                {
        +                                  "enum": [
        +                                    "high",
        +                                    "medium",
        +                                    "low"
        +                                  ],
        +                                  "type": "string"
        +                                },
        +                                {
        +                                  "type": "null"
        +                                }
        +                              ],
        +                              "default": null
        +                            },
        +                            "field_name": {
        +                              "minLength": 1,
        +                              "type": "string"
        +                            },
        +                            "resolved_value": {},
        +                            "source": {
        +                              "enum": [
        +                                "description_field",
        +                                "haiku_resolution",
        +                                "engine_default"
        +                              ],
        +                              "type": "string"
        +                            }
        +                          },
        +                          "required": [
        +                            "field_name",
        +                            "resolved_value",
        +                            "source"
        +                          ],
        +                          "type": "object"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "user_supplied": {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  }
        +                },
        +                "type": "object"
        +              },
        +              "standard": {
        +                "enum": [
        +                  "CESMM4",
        +                  "NRM2",
        +                  "SMM7",
        +                  "MMHW"
        +                ],
        +                "type": "string"
        +              },
        +              "text_summary": {
        +                "maxLength": 2000,
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "totals_summary": {
        +                "additionalProperties": false,
        +                "description": "Schema § 1.4 — totals_summary as a typed wrapper around the free-form dict.\n\nWire shape is a flat object (`{\"concrete_m3\": {...}, \"rebar_t\": {...}}`).\nWe model it as `RootModel`-equivalent via `model_config(extra=\"allow\")`\n+ a single `__root__`-style `entries` dict. Pydantic v2 recommends\n`RootModel` for free-form roots; using a wrapper class keeps the import\nsurface uniform with the rest of this module.",
        +                "properties": {
        +                  "entries": {
        +                    "additionalProperties": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.4 — single material/work-class total entry.",
        +                      "properties": {
        +                        "quantity": {
        +                          "minimum": 0,
        +                          "type": "number"
        +                        },
        +                        "unit": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "quantity",
        +                        "unit"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "object"
        +                  }
        +                },
        +                "type": "object"
        +              },
        +              "warnings": {
        +                "items": {
        +                  "additionalProperties": false,
        +                  "description": "Schema § 1.8 — a non-fatal geometry advisory (56th-fire T2).\n\nThe wire projection of the engine's `core.GeometryWarning`. Advisory only:\na warning NEVER changes a measured quantity — it flags geometry that is\nvalid but likely a mistake (e.g. a stale dependent-height default). Present\non BOTH tiers — a correctness/safety signal, not a paid feature.",
        +                  "properties": {
        +                    "affected_params": {
        +                      "items": {
        +                        "type": "string"
        +                      },
        +                      "type": "array"
        +                    },
        +                    "code": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "detail": {
        +                      "additionalProperties": {
        +                        "type": "number"
        +                      },
        +                      "type": "object"
        +                    },
        +                    "message": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "severity": {
        +                      "enum": [
        +                        "info",
        +                        "advisory",
        +                        "caution"
        +                      ],
        +                      "type": "string"
        +                    }
        +                  },
        +                  "required": [
        +                    "code",
        +                    "severity",
        +                    "message"
        +                  ],
        +                  "type": "object"
        +                },
        +                "type": "array"
        +              }
        +            },
        +            "required": [
        +              "assembly_slug",
        +              "standard",
        +              "parameters_used",
        +              "boq_rows",
        +              "totals_summary",
        +              "text_summary"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      },
        +      "error": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        +            "properties": {
        +              "code": {
        +                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        +                "enum": [
        +                  "RATE_LIMIT_EXCEEDED",
        +                  "TIER_INSUFFICIENT",
        +                  "INVALID_INPUT",
        +                  "SCHEMA_VERSION_MISMATCH",
        +                  "SCHEMA_INVARIANT_VIOLATION",
        +                  "UPSTREAM_TIMEOUT",
        +                  "BACKEND_FAILURE",
        +                  "IP_BLOCKED",
        +                  "RESOURCE_NOT_FOUND",
        +                  "RENDER_FAILURE",
        +                  "OCR_LOW_CONFIDENCE",
        +                  "MANUAL_REVIEW_REQUIRED",
        +                  "ACCEPTANCE_REQUIRED",
        +                  "INVALID_TOKEN"
        +                ],
        +                "type": "string"
        +              },
        +              "details": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "message": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "recoverable": {
        +                "type": "boolean"
        +              },
        +              "retry_after_seconds": {
        +                "anyOf": [
        +                  {
        +                    "minimum": 0,
        +                    "type": "integer"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              }
        +            },
        +            "required": [
        +              "code",
        +              "message",
        +              "recoverable"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      }
        +    },
        +    "required": [
        +      "_meta"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "_meta": {
        +        "additionalProperties": false,
        +        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        +        "properties": {
        +          "deliverables": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        +                "properties": {
        +                  "docx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "dxf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "expires_at": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  },
        +                  "pdf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "xlsx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "expires_at"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "document_id": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "issued_at": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "rate_limit_remaining": {
        +            "anyOf": [
        +              {
        +                "minimum": 0,
        +                "type": "integer"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "request_id": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "schema_version": {
        +            "const": "1.0.0",
        +            "default": "1.0.0",
        +            "type": "string"
        +          },
        +          "scope_boundary": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        +                "properties": {
        +                  "not_in_scope": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "produced": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "recommended_companions": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "type": "string"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "produced",
        +                  "not_in_scope"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tier": {
        +            "enum": [
        +              "free",
        +              "paid"
        +            ],
        +            "type": "string"
        +          },
        +          "tier_upgrade": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        +                "properties": {
        +                  "available_tiers": {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        +                      "properties": {
        +                        "billing": {
        +                          "enum": [
        +                            "one_off",
        +                            "monthly",
        +                            "annual"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "currency": {
        +                          "enum": [
        +                            "GBP",
        +                            "SGD",
        +                            "EUR",
        +                            "USD",
        +                            "CAD",
        +                            "AUD",
        +                            "NZD",
        +                            "MYR"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "display_name": {
        +                          "type": "string"
        +                        },
        +                        "price_local": {
        +                          "type": "number"
        +                        },
        +                        "tier_slug": {
        +                          "enum": [
        +                            "7_day_pass",
        +                            "solo",
        +                            "studio",
        +                            "practice"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "unlock_summary": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "tier_slug",
        +                        "display_name",
        +                        "price_local",
        +                        "currency",
        +                        "billing",
        +                        "unlock_summary"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "current_tier": {
        +                    "const": "free",
        +                    "default": "free",
        +                    "type": "string"
        +                  },
        +                  "pass_credit": {
        +                    "anyOf": [
        +                      {
        +                        "additionalProperties": false,
        +                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        +                        "properties": {
        +                          "amount_local": {
        +                            "type": "number"
        +                          },
        +                          "applies_to": {
        +                            "const": "solo_first_month",
        +                            "default": "solo_first_month",
        +                            "type": "string"
        +                          },
        +                          "currency": {
        +                            "type": "string"
        +                          },
        +                          "redeemable_until": {
        +                            "type": "string"
        +                          }
        +                        },
        +                        "required": [
        +                          "amount_local",
        +                          "currency",
        +                          "redeemable_until"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "pricing_url": {
        +                    "default": "https://civilquants.com/pricing",
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "available_tiers"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tos_url": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "upgrade_hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "warranty_disclaimer": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          }
        +        },
        +        "required": [
        +          "request_id",
        +          "issued_at",
        +          "tier"
        +        ],
        +        "type": "object"
        +      },
        +      "data": {
        +        "default": null,
        +        "title": "Data"
        +      },
        +      "error": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        +            "properties": {
        +              "code": {
        +                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        +                "enum": [
        +                  "RATE_LIMIT_EXCEEDED",
        +                  "TIER_INSUFFICIENT",
        +                  "INVALID_INPUT",
        +                  "SCHEMA_VERSION_MISMATCH",
        +                  "SCHEMA_INVARIANT_VIOLATION",
        +                  "UPSTREAM_TIMEOUT",
        +                  "BACKEND_FAILURE",
        +                  "IP_BLOCKED",
        +                  "RESOURCE_NOT_FOUND",
        +                  "RENDER_FAILURE",
        +                  "OCR_LOW_CONFIDENCE",
        +                  "MANUAL_REVIEW_REQUIRED",
        +                  "ACCEPTANCE_REQUIRED",
        +                  "INVALID_TOKEN"
        +                ],
        +                "type": "string"
        +              },
        +              "details": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "message": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "recoverable": {
        +                "type": "boolean"
        +              },
        +              "retry_after_seconds": {
        +                "anyOf": [
        +                  {
        +                    "minimum": 0,
        +                    "type": "integer"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              }
        +            },
        +            "required": [
        +              "code",
        +              "message",
        +              "recoverable"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      }
        +    },
        +    "required": [
        +      "_meta"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedcompute_counterfort_wall4 fields changed
      • addedInput schema / properties / deliverables
        Added value: +{
        +  "anyOf": [
        +    {
        +      "items": {
        +        "const": "xlsx",
        +        "type": "string"
        +      },
        +      "type": "array"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null
        +}
      • addedInput schema / properties / freeboard
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "number"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null
        +}
      • addedInput schema / properties / output_mode
        Added value: +{
        +  "default": "full_json",
        +  "enum": [
        +    "summary",
        +    "boq",
        +    "boq_with_backup",
        +    "full_json"
        +  ],
        +  "type": "string"
        +}
      • changedOutput schema / properties / result / anyOf
        Previous value: -[
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "_meta": {
        -        "additionalProperties": false,
        -        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        -        "properties": {
        -          "deliverables": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        -                "properties": {
        -                  "docx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "dxf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "expires_at": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  },
        -                  "pdf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "xlsx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "expires_at"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "document_id": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "issued_at": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "rate_limit_remaining": {
        -            "anyOf": [
        -              {
        -                "minimum": 0,
        -                "type": "integer"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "request_id": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "schema_version": {
        -            "const": "1.0.0",
        -            "default": "1.0.0",
        -            "type": "string"
        -          },
        -          "scope_boundary": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        -                "properties": {
        -                  "not_in_scope": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "produced": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "recommended_companions": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "type": "string"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "produced",
        -                  "not_in_scope"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tier": {
        -            "enum": [
        -              "free",
        -              "paid"
        -            ],
        -            "type": "string"
        -          },
        -          "tier_upgrade": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        -                "properties": {
        -                  "available_tiers": {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        -                      "properties": {
        -                        "billing": {
        -                          "enum": [
        -                            "one_off",
        -                            "monthly",
        -                            "annual"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "currency": {
        -                          "enum": [
        -                            "GBP",
        -                            "SGD",
        -                            "EUR",
        -                            "USD",
        -                            "CAD",
        -                            "AUD",
        -                            "NZD",
        -                            "MYR"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "display_name": {
        -                          "type": "string"
        -                        },
        -                        "price_local": {
        -                          "type": "number"
        -                        },
        -                        "tier_slug": {
        -                          "enum": [
        -                            "7_day_pass",
        -                            "solo",
        -                            "studio",
        -                            "practice"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "unlock_summary": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "tier_slug",
        -                        "display_name",
        -                        "price_local",
        -                        "currency",
        -                        "billing",
        -                        "unlock_summary"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "current_tier": {
        -                    "const": "free",
        -                    "default": "free",
        -                    "type": "string"
        -                  },
        -                  "pass_credit": {
        -                    "anyOf": [
        -                      {
        -                        "additionalProperties": false,
        -                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        -                        "properties": {
        -                          "amount_local": {
        -                            "type": "number"
        -                          },
        -                          "applies_to": {
        -                            "const": "solo_first_month",
        -                            "default": "solo_first_month",
        -                            "type": "string"
        -                          },
        -                          "currency": {
        -                            "type": "string"
        -                          },
        -                          "redeemable_until": {
        -                            "type": "string"
        -                          }
        -                        },
        -                        "required": [
        -                          "amount_local",
        -                          "currency",
        -                          "redeemable_until"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "pricing_url": {
        -                    "default": "https://civilquants.com/pricing",
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "available_tiers"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tos_url": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "upgrade_hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "warranty_disclaimer": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          }
        -        },
        -        "required": [
        -          "request_id",
        -          "issued_at",
        -          "tier"
        -        ],
        -        "type": "object"
        -      },
        -      "data": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Schema § 1.1 — the typed payload returned inside `MCPResponse[ComputeResult]`.\n\nFree-tier responses MUST omit `drawings` and `audit_trail` (the bridge\nenforces this); paid-tier responses populate both. `text_summary` is\nbounded to 2000 chars — keeps the LLM-facing summary token-cheap and\nforces longer narrative into BoQ row descriptions where it belongs.\n`warnings` is the non-fatal geometry advisory list (both tiers).",
        -            "properties": {
        -              "assembly_slug": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "audit_trail": {
        -                "anyOf": [
        -                  {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.7 — paid-tier audit-trail entry.\n\nOne entry per BoQ row; `boq_row_index` ties to the row position in\n`ComputeResult.boq_rows`. `derivation` is the human-readable formula\nwalk-through; `formula` is the optional formal expression.",
        -                      "properties": {
        -                        "boq_row_index": {
        -                          "minimum": 0,
        -                          "type": "integer"
        -                        },
        -                        "derivation": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "formula": {
        -                          "anyOf": [
        -                            {
        -                              "type": "string"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ],
        -                          "default": null
        -                        },
        -                        "id": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "parameters_referenced": {
        -                          "items": {
        -                            "type": "string"
        -                          },
        -                          "type": "array"
        -                        }
        -                      },
        -                      "required": [
        -                        "id",
        -                        "boq_row_index",
        -                        "derivation"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "boq_rows": {
        -                "items": {
        -                  "additionalProperties": false,
        -                  "description": "Schema § 1.3 — a single bill row in the requested standard's format.\n\n`description` is the non-verbatim functional description per spec § 13.9 /\n§ 15 invariant — NEVER reproduces a standard's verbatim clause text.\n`rate` / `amount` ship null because rates are commodity data the customer\nowns; the engine's job is the measurement, not the pricing.",
        -                  "properties": {
        -                    "amount": {
        -                      "anyOf": [
        -                        {
        -                          "type": "number"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "attribution": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "audit_id": {
        -                      "anyOf": [
        -                        {
        -                          "type": "string"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "description": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "quantity": {
        -                      "minimum": 0,
        -                      "type": "number"
        -                    },
        -                    "rate": {
        -                      "anyOf": [
        -                        {
        -                          "type": "number"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "unit": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "work_section": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    }
        -                  },
        -                  "required": [
        -                    "work_section",
        -                    "description",
        -                    "quantity",
        -                    "unit",
        -                    "attribution"
        -                  ],
        -                  "type": "object"
        -                },
        -                "type": "array"
        -              },
        -              "drawings": {
        -                "anyOf": [
        -                  {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.6 — paid-tier drawing artefact pointer.\n\n`url` is an R2-signed URL; expiry is carried in `_meta.deliverables.expires_at`\non the envelope (not duplicated here). `layers` is DXF-only; PDF/SVG\ncallers omit it.",
        -                      "properties": {
        -                        "drawing_type": {
        -                          "enum": [
        -                            "section",
        -                            "plan",
        -                            "elevation",
        -                            "isometric",
        -                            "detail"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "format": {
        -                          "enum": [
        -                            "DXF",
        -                            "PDF",
        -                            "SVG"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "layers": {
        -                          "anyOf": [
        -                            {
        -                              "items": {
        -                                "type": "string"
        -                              },
        -                              "type": "array"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ],
        -                          "default": null
        -                        },
        -                        "scale": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "sheet_size": {
        -                          "enum": [
        -                            "A1",
        -                            "A2",
        -                            "A3",
        -                            "A4"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "url": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "drawing_type",
        -                        "format",
        -                        "url",
        -                        "sheet_size",
        -                        "scale"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "parameters_used": {
        -                "additionalProperties": false,
        -                "description": "Schema § 1.2 — the parameter snapshot the engine actually used.\n\nSplits user-supplied values from engine defaults so customers can see\nwhich numbers came from them and which the engine filled in. Every\ndefaulted parameter SHOULD have a corresponding entry in `assumptions`\n— the bridge layer enforces this when wrapping engine output.",
        -                "properties": {
        -                  "assumptions": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "engine_defaults": {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  "resolved_from_description": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "additionalProperties": false,
        -                          "description": "Schema § 1.2 — a parameter resolved by the forgiving-input layer.\n\nPopulated by the Track B-Forgiving Haiku-4.5 resolution pass; until that\nlayer lands, instances are constructed only by tests. `source` distinguishes\nthe resolution path so customers can audit which fields were inferred.",
        -                          "properties": {
        -                            "confidence": {
        -                              "anyOf": [
        -                                {
        -                                  "enum": [
        -                                    "high",
        -                                    "medium",
        -                                    "low"
        -                                  ],
        -                                  "type": "string"
        -                                },
        -                                {
        -                                  "type": "null"
        -                                }
        -                              ],
        -                              "default": null
        -                            },
        -                            "field_name": {
        -                              "minLength": 1,
        -                              "type": "string"
        -                            },
        -                            "resolved_value": {},
        -                            "source": {
        -                              "enum": [
        -                                "description_field",
        -                                "haiku_resolution",
        -                                "engine_default"
        -                              ],
        -                              "type": "string"
        -                            }
        -                          },
        -                          "required": [
        -                            "field_name",
        -                            "resolved_value",
        -                            "source"
        -                          ],
        -                          "type": "object"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "user_supplied": {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  }
        -                },
        -                "type": "object"
        -              },
        -              "standard": {
        -                "enum": [
        -                  "CESMM4",
        -                  "NRM2",
        -                  "SMM7",
        -                  "MMHW"
        -                ],
        -                "type": "string"
        -              },
        -              "text_summary": {
        -                "maxLength": 2000,
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "totals_summary": {
        -                "additionalProperties": false,
        -                "description": "Schema § 1.4 — totals_summary as a typed wrapper around the free-form dict.\n\nWire shape is a flat object (`{\"concrete_m3\": {...}, \"rebar_t\": {...}}`).\nWe model it as `RootModel`-equivalent via `model_config(extra=\"allow\")`\n+ a single `__root__`-style `entries` dict. Pydantic v2 recommends\n`RootModel` for free-form roots; using a wrapper class keeps the import\nsurface uniform with the rest of this module.",
        -                "properties": {
        -                  "entries": {
        -                    "additionalProperties": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.4 — single material/work-class total entry.",
        -                      "properties": {
        -                        "quantity": {
        -                          "minimum": 0,
        -                          "type": "number"
        -                        },
        -                        "unit": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "quantity",
        -                        "unit"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "object"
        -                  }
        -                },
        -                "type": "object"
        -              },
        -              "warnings": {
        -                "items": {
        -                  "additionalProperties": false,
        -                  "description": "Schema § 1.8 — a non-fatal geometry advisory (56th-fire T2).\n\nThe wire projection of the engine's `core.GeometryWarning`. Advisory only:\na warning NEVER changes a measured quantity — it flags geometry that is\nvalid but likely a mistake (e.g. a stale dependent-height default). Present\non BOTH tiers — a correctness/safety signal, not a paid feature.",
        -                  "properties": {
        -                    "affected_params": {
        -                      "items": {
        -                        "type": "string"
        -                      },
        -                      "type": "array"
        -                    },
        -                    "code": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "detail": {
        -                      "additionalProperties": {
        -                        "type": "number"
        -                      },
        -                      "type": "object"
        -                    },
        -                    "message": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "severity": {
        -                      "enum": [
        -                        "info",
        -                        "advisory",
        -                        "caution"
        -                      ],
        -                      "type": "string"
        -                    }
        -                  },
        -                  "required": [
        -                    "code",
        -                    "severity",
        -                    "message"
        -                  ],
        -                  "type": "object"
        -                },
        -                "type": "array"
        -              }
        -            },
        -            "required": [
        -              "assembly_slug",
        -              "standard",
        -              "parameters_used",
        -              "boq_rows",
        -              "totals_summary",
        -              "text_summary"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      },
        -      "error": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        -            "properties": {
        -              "code": {
        -                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        -                "enum": [
        -                  "RATE_LIMIT_EXCEEDED",
        -                  "TIER_INSUFFICIENT",
        -                  "INVALID_INPUT",
        -                  "SCHEMA_VERSION_MISMATCH",
        -                  "SCHEMA_INVARIANT_VIOLATION",
        -                  "UPSTREAM_TIMEOUT",
        -                  "BACKEND_FAILURE",
        -                  "IP_BLOCKED",
        -                  "RESOURCE_NOT_FOUND",
        -                  "RENDER_FAILURE",
        -                  "OCR_LOW_CONFIDENCE",
        -                  "MANUAL_REVIEW_REQUIRED",
        -                  "ACCEPTANCE_REQUIRED",
        -                  "INVALID_TOKEN"
        -                ],
        -                "type": "string"
        -              },
        -              "details": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "message": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "recoverable": {
        -                "type": "boolean"
        -              },
        -              "retry_after_seconds": {
        -                "anyOf": [
        -                  {
        -                    "minimum": 0,
        -                    "type": "integer"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              }
        -            },
        -            "required": [
        -              "code",
        -              "message",
        -              "recoverable"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      }
        -    },
        -    "required": [
        -      "_meta"
        -    ],
        -    "type": "object"
        -  },
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "_meta": {
        -        "additionalProperties": false,
        -        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        -        "properties": {
        -          "deliverables": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        -                "properties": {
        -                  "docx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "dxf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "expires_at": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  },
        -                  "pdf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "xlsx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "expires_at"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "document_id": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "issued_at": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "rate_limit_remaining": {
        -            "anyOf": [
        -              {
        -                "minimum": 0,
        -                "type": "integer"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "request_id": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "schema_version": {
        -            "const": "1.0.0",
        -            "default": "1.0.0",
        -            "type": "string"
        -          },
        -          "scope_boundary": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        -                "properties": {
        -                  "not_in_scope": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "produced": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "recommended_companions": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "type": "string"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "produced",
        -                  "not_in_scope"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tier": {
        -            "enum": [
        -              "free",
        -              "paid"
        -            ],
        -            "type": "string"
        -          },
        -          "tier_upgrade": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        -                "properties": {
        -                  "available_tiers": {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        -                      "properties": {
        -                        "billing": {
        -                          "enum": [
        -                            "one_off",
        -                            "monthly",
        -                            "annual"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "currency": {
        -                          "enum": [
        -                            "GBP",
        -                            "SGD",
        -                            "EUR",
        -                            "USD",
        -                            "CAD",
        -                            "AUD",
        -                            "NZD",
        -                            "MYR"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "display_name": {
        -                          "type": "string"
        -                        },
        -                        "price_local": {
        -                          "type": "number"
        -                        },
        -                        "tier_slug": {
        -                          "enum": [
        -                            "7_day_pass",
        -                            "solo",
        -                            "studio",
        -                            "practice"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "unlock_summary": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "tier_slug",
        -                        "display_name",
        -                        "price_local",
        -                        "currency",
        -                        "billing",
        -                        "unlock_summary"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "current_tier": {
        -                    "const": "free",
        -                    "default": "free",
        -                    "type": "string"
        -                  },
        -                  "pass_credit": {
        -                    "anyOf": [
        -                      {
        -                        "additionalProperties": false,
        -                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        -                        "properties": {
        -                          "amount_local": {
        -                            "type": "number"
        -                          },
        -                          "applies_to": {
        -                            "const": "solo_first_month",
        -                            "default": "solo_first_month",
        -                            "type": "string"
        -                          },
        -                          "currency": {
        -                            "type": "string"
        -                          },
        -                          "redeemable_until": {
        -                            "type": "string"
        -                          }
        -                        },
        -                        "required": [
        -                          "amount_local",
        -                          "currency",
        -                          "redeemable_until"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "pricing_url": {
        -                    "default": "https://civilquants.com/pricing",
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "available_tiers"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tos_url": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "upgrade_hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "warranty_disclaimer": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          }
        -        },
        -        "required": [
        -          "request_id",
        -          "issued_at",
        -          "tier"
        -        ],
        -        "type": "object"
        -      },
        -      "data": {
        -        "default": null,
        -        "title": "Data"
        -      },
        -      "error": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        -            "properties": {
        -              "code": {
        -                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        -                "enum": [
        -                  "RATE_LIMIT_EXCEEDED",
        -                  "TIER_INSUFFICIENT",
        -                  "INVALID_INPUT",
        -                  "SCHEMA_VERSION_MISMATCH",
        -                  "SCHEMA_INVARIANT_VIOLATION",
        -                  "UPSTREAM_TIMEOUT",
        -                  "BACKEND_FAILURE",
        -                  "IP_BLOCKED",
        -                  "RESOURCE_NOT_FOUND",
        -                  "RENDER_FAILURE",
        -                  "OCR_LOW_CONFIDENCE",
        -                  "MANUAL_REVIEW_REQUIRED",
        -                  "ACCEPTANCE_REQUIRED",
        -                  "INVALID_TOKEN"
        -                ],
        -                "type": "string"
        -              },
        -              "details": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "message": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "recoverable": {
        -                "type": "boolean"
        -              },
        -              "retry_after_seconds": {
        -                "anyOf": [
        -                  {
        -                    "minimum": 0,
        -                    "type": "integer"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              }
        -            },
        -            "required": [
        -              "code",
        -              "message",
        -              "recoverable"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      }
        -    },
        -    "required": [
        -      "_meta"
        -    ],
        -    "type": "object"
        -  }
        -]New value: +[
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "_meta": {
        +        "additionalProperties": false,
        +        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        +        "properties": {
        +          "deliverables": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        +                "properties": {
        +                  "docx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "dxf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "expires_at": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  },
        +                  "pdf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "xlsx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "expires_at"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "document_id": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "issued_at": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "rate_limit_remaining": {
        +            "anyOf": [
        +              {
        +                "minimum": 0,
        +                "type": "integer"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "request_id": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "schema_version": {
        +            "const": "1.0.0",
        +            "default": "1.0.0",
        +            "type": "string"
        +          },
        +          "scope_boundary": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        +                "properties": {
        +                  "not_in_scope": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "produced": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "recommended_companions": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "type": "string"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "produced",
        +                  "not_in_scope"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tier": {
        +            "enum": [
        +              "free",
        +              "paid"
        +            ],
        +            "type": "string"
        +          },
        +          "tier_upgrade": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        +                "properties": {
        +                  "available_tiers": {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        +                      "properties": {
        +                        "billing": {
        +                          "enum": [
        +                            "one_off",
        +                            "monthly",
        +                            "annual"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "currency": {
        +                          "enum": [
        +                            "GBP",
        +                            "SGD",
        +                            "EUR",
        +                            "USD",
        +                            "CAD",
        +                            "AUD",
        +                            "NZD",
        +                            "MYR"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "display_name": {
        +                          "type": "string"
        +                        },
        +                        "price_local": {
        +                          "type": "number"
        +                        },
        +                        "tier_slug": {
        +                          "enum": [
        +                            "7_day_pass",
        +                            "solo",
        +                            "studio",
        +                            "practice"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "unlock_summary": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "tier_slug",
        +                        "display_name",
        +                        "price_local",
        +                        "currency",
        +                        "billing",
        +                        "unlock_summary"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "current_tier": {
        +                    "const": "free",
        +                    "default": "free",
        +                    "type": "string"
        +                  },
        +                  "pass_credit": {
        +                    "anyOf": [
        +                      {
        +                        "additionalProperties": false,
        +                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        +                        "properties": {
        +                          "amount_local": {
        +                            "type": "number"
        +                          },
        +                          "applies_to": {
        +                            "const": "solo_first_month",
        +                            "default": "solo_first_month",
        +                            "type": "string"
        +                          },
        +                          "currency": {
        +                            "type": "string"
        +                          },
        +                          "redeemable_until": {
        +                            "type": "string"
        +                          }
        +                        },
        +                        "required": [
        +                          "amount_local",
        +                          "currency",
        +                          "redeemable_until"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "pricing_url": {
        +                    "default": "https://civilquants.com/pricing",
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "available_tiers"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tos_url": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "upgrade_hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "warranty_disclaimer": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          }
        +        },
        +        "required": [
        +          "request_id",
        +          "issued_at",
        +          "tier"
        +        ],
        +        "type": "object"
        +      },
        +      "data": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Schema § 1.1 — the typed payload returned inside `MCPResponse[ComputeResult]`.\n\nFree-tier responses omit `drawings` (the downloadable CAD artefact\npointers — the paid differentiator); the bridge enforces this. The\n`audit_trail` and the inline `drawing` preview are present on BOTH tiers\n(V1 ALIGN / 60th-fire D + C). `text_summary` is bounded to 2000 chars —\nkeeps the LLM-facing summary token-cheap and forces longer narrative into\nBoQ row descriptions where it belongs. `warnings` is the non-fatal\ngeometry advisory list (both tiers).",
        +            "properties": {
        +              "assembly_slug": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "audit_trail": {
        +                "anyOf": [
        +                  {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.7 — paid-tier audit-trail entry.\n\nOne entry per BoQ row; `boq_row_index` ties to the row position in\n`ComputeResult.boq_rows`. `derivation` is the human-readable formula\nwalk-through; `formula` is the optional formal expression.",
        +                      "properties": {
        +                        "boq_row_index": {
        +                          "minimum": 0,
        +                          "type": "integer"
        +                        },
        +                        "derivation": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "formula": {
        +                          "anyOf": [
        +                            {
        +                              "type": "string"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ],
        +                          "default": null
        +                        },
        +                        "id": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "parameters_referenced": {
        +                          "items": {
        +                            "type": "string"
        +                          },
        +                          "type": "array"
        +                        }
        +                      },
        +                      "required": [
        +                        "id",
        +                        "boq_row_index",
        +                        "derivation"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "boq_rows": {
        +                "items": {
        +                  "additionalProperties": false,
        +                  "description": "Schema § 1.3 — a single bill row in the requested standard's format.\n\n`description` is the non-verbatim functional description per spec § 13.9 /\n§ 15 invariant — NEVER reproduces a standard's verbatim clause text.\n`rate` / `amount` ship null because rates are commodity data the customer\nowns; the engine's job is the measurement, not the pricing.",
        +                  "properties": {
        +                    "amount": {
        +                      "anyOf": [
        +                        {
        +                          "type": "number"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "attribution": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "audit_id": {
        +                      "anyOf": [
        +                        {
        +                          "type": "string"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "description": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "quantity": {
        +                      "minimum": 0,
        +                      "type": "number"
        +                    },
        +                    "rate": {
        +                      "anyOf": [
        +                        {
        +                          "type": "number"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "unit": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "work_section": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    }
        +                  },
        +                  "required": [
        +                    "work_section",
        +                    "description",
        +                    "quantity",
        +                    "unit",
        +                    "attribution"
        +                  ],
        +                  "type": "object"
        +                },
        +                "type": "array"
        +              },
        +              "drawing": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": false,
        +                    "description": "Schema § 1.6a — inline server-rendered SVG preview of the geometry.\n\nThe MCP mirror of the web ``/compute`` response's ``drawing`` field\n(``api.schemas.compute.DrawingRef``): the same on-screen dimensioned\ndrawing both tiers see in the workspace, surfaced on the MCP compute\nresponse so a chat client can render it inline (60th-fire item C). This\nis the on-screen preview — present on BOTH tiers per the free/paid\nboundary; the downloadable CAD artefacts (DXF / dimensioned PDF) remain\nthe paid differentiator via the export tools.\n\nDefined here rather than importing ``DrawingRef`` because the web\n``schemas`` package imports back into this module (``schemas.render``),\nso reusing it would create an import cycle — the MCP wire contract keeps\nits own copy, the same pattern as ``BoQRow`` / ``DrawingReference``.",
        +                    "properties": {
        +                      "entity_count": {
        +                        "minimum": 0,
        +                        "type": "integer"
        +                      },
        +                      "svg_b64": {
        +                        "minLength": 1,
        +                        "type": "string"
        +                      },
        +                      "unit_of_drawing": {
        +                        "const": "m",
        +                        "default": "m",
        +                        "type": "string"
        +                      },
        +                      "viewbox_height": {
        +                        "exclusiveMinimum": 0,
        +                        "type": "number"
        +                      },
        +                      "viewbox_width": {
        +                        "exclusiveMinimum": 0,
        +                        "type": "number"
        +                      },
        +                      "viewbox_x": {
        +                        "type": "number"
        +                      },
        +                      "viewbox_y": {
        +                        "type": "number"
        +                      }
        +                    },
        +                    "required": [
        +                      "svg_b64",
        +                      "viewbox_x",
        +                      "viewbox_y",
        +                      "viewbox_width",
        +                      "viewbox_height",
        +                      "entity_count"
        +                    ],
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "drawings": {
        +                "anyOf": [
        +                  {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.6 — paid-tier drawing artefact pointer.\n\n`url` is an R2-signed URL; expiry is carried in `_meta.deliverables.expires_at`\non the envelope (not duplicated here). `layers` is DXF-only; PDF/SVG\ncallers omit it.",
        +                      "properties": {
        +                        "drawing_type": {
        +                          "enum": [
        +                            "section",
        +                            "plan",
        +                            "elevation",
        +                            "isometric",
        +                            "detail"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "format": {
        +                          "enum": [
        +                            "DXF",
        +                            "PDF",
        +                            "SVG"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "layers": {
        +                          "anyOf": [
        +                            {
        +                              "items": {
        +                                "type": "string"
        +                              },
        +                              "type": "array"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ],
        +                          "default": null
        +                        },
        +                        "scale": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "sheet_size": {
        +                          "enum": [
        +                            "A1",
        +                            "A2",
        +                            "A3",
        +                            "A4"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "url": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "drawing_type",
        +                        "format",
        +                        "url",
        +                        "sheet_size",
        +                        "scale"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "parameters_used": {
        +                "additionalProperties": false,
        +                "description": "Schema § 1.2 — the parameter snapshot the engine actually used.\n\nSplits user-supplied values from engine defaults so customers can see\nwhich numbers came from them and which the engine filled in. Every\ndefaulted parameter SHOULD have a corresponding entry in `assumptions`\n— the bridge layer enforces this when wrapping engine output.",
        +                "properties": {
        +                  "assumptions": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "engine_defaults": {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  "resolved_from_description": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "additionalProperties": false,
        +                          "description": "Schema § 1.2 — a parameter resolved by the forgiving-input layer.\n\nPopulated by the Track B-Forgiving Haiku-4.5 resolution pass; until that\nlayer lands, instances are constructed only by tests. `source` distinguishes\nthe resolution path so customers can audit which fields were inferred.",
        +                          "properties": {
        +                            "confidence": {
        +                              "anyOf": [
        +                                {
        +                                  "enum": [
        +                                    "high",
        +                                    "medium",
        +                                    "low"
        +                                  ],
        +                                  "type": "string"
        +                                },
        +                                {
        +                                  "type": "null"
        +                                }
        +                              ],
        +                              "default": null
        +                            },
        +                            "field_name": {
        +                              "minLength": 1,
        +                              "type": "string"
        +                            },
        +                            "resolved_value": {},
        +                            "source": {
        +                              "enum": [
        +                                "description_field",
        +                                "haiku_resolution",
        +                                "engine_default"
        +                              ],
        +                              "type": "string"
        +                            }
        +                          },
        +                          "required": [
        +                            "field_name",
        +                            "resolved_value",
        +                            "source"
        +                          ],
        +                          "type": "object"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "user_supplied": {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  }
        +                },
        +                "type": "object"
        +              },
        +              "standard": {
        +                "enum": [
        +                  "CESMM4",
        +                  "NRM2",
        +                  "SMM7",
        +                  "MMHW"
        +                ],
        +                "type": "string"
        +              },
        +              "text_summary": {
        +                "maxLength": 2000,
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "totals_summary": {
        +                "additionalProperties": false,
        +                "description": "Schema § 1.4 — totals_summary as a typed wrapper around the free-form dict.\n\nWire shape is a flat object (`{\"concrete_m3\": {...}, \"rebar_t\": {...}}`).\nWe model it as `RootModel`-equivalent via `model_config(extra=\"allow\")`\n+ a single `__root__`-style `entries` dict. Pydantic v2 recommends\n`RootModel` for free-form roots; using a wrapper class keeps the import\nsurface uniform with the rest of this module.",
        +                "properties": {
        +                  "entries": {
        +                    "additionalProperties": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.4 — single material/work-class total entry.",
        +                      "properties": {
        +                        "quantity": {
        +                          "minimum": 0,
        +                          "type": "number"
        +                        },
        +                        "unit": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "quantity",
        +                        "unit"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "object"
        +                  }
        +                },
        +                "type": "object"
        +              },
        +              "warnings": {
        +                "items": {
        +                  "additionalProperties": false,
        +                  "description": "Schema § 1.8 — a non-fatal geometry advisory (56th-fire T2).\n\nThe wire projection of the engine's `core.GeometryWarning`. Advisory only:\na warning NEVER changes a measured quantity — it flags geometry that is\nvalid but likely a mistake (e.g. a stale dependent-height default). Present\non BOTH tiers — a correctness/safety signal, not a paid feature.",
        +                  "properties": {
        +                    "affected_params": {
        +                      "items": {
        +                        "type": "string"
        +                      },
        +                      "type": "array"
        +                    },
        +                    "code": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "detail": {
        +                      "additionalProperties": {
        +                        "type": "number"
        +                      },
        +                      "type": "object"
        +                    },
        +                    "message": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "severity": {
        +                      "enum": [
        +                        "info",
        +                        "advisory",
        +                        "caution"
        +                      ],
        +                      "type": "string"
        +                    }
        +                  },
        +                  "required": [
        +                    "code",
        +                    "severity",
        +                    "message"
        +                  ],
        +                  "type": "object"
        +                },
        +                "type": "array"
        +              }
        +            },
        +            "required": [
        +              "assembly_slug",
        +              "standard",
        +              "parameters_used",
        +              "boq_rows",
        +              "totals_summary",
        +              "text_summary"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      },
        +      "error": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        +            "properties": {
        +              "code": {
        +                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        +                "enum": [
        +                  "RATE_LIMIT_EXCEEDED",
        +                  "TIER_INSUFFICIENT",
        +                  "INVALID_INPUT",
        +                  "SCHEMA_VERSION_MISMATCH",
        +                  "SCHEMA_INVARIANT_VIOLATION",
        +                  "UPSTREAM_TIMEOUT",
        +                  "BACKEND_FAILURE",
        +                  "IP_BLOCKED",
        +                  "RESOURCE_NOT_FOUND",
        +                  "RENDER_FAILURE",
        +                  "OCR_LOW_CONFIDENCE",
        +                  "MANUAL_REVIEW_REQUIRED",
        +                  "ACCEPTANCE_REQUIRED",
        +                  "INVALID_TOKEN"
        +                ],
        +                "type": "string"
        +              },
        +              "details": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "message": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "recoverable": {
        +                "type": "boolean"
        +              },
        +              "retry_after_seconds": {
        +                "anyOf": [
        +                  {
        +                    "minimum": 0,
        +                    "type": "integer"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              }
        +            },
        +            "required": [
        +              "code",
        +              "message",
        +              "recoverable"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      }
        +    },
        +    "required": [
        +      "_meta"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "_meta": {
        +        "additionalProperties": false,
        +        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        +        "properties": {
        +          "deliverables": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        +                "properties": {
        +                  "docx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "dxf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "expires_at": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  },
        +                  "pdf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "xlsx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "expires_at"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "document_id": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "issued_at": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "rate_limit_remaining": {
        +            "anyOf": [
        +              {
        +                "minimum": 0,
        +                "type": "integer"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "request_id": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "schema_version": {
        +            "const": "1.0.0",
        +            "default": "1.0.0",
        +            "type": "string"
        +          },
        +          "scope_boundary": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        +                "properties": {
        +                  "not_in_scope": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "produced": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "recommended_companions": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "type": "string"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "produced",
        +                  "not_in_scope"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tier": {
        +            "enum": [
        +              "free",
        +              "paid"
        +            ],
        +            "type": "string"
        +          },
        +          "tier_upgrade": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        +                "properties": {
        +                  "available_tiers": {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        +                      "properties": {
        +                        "billing": {
        +                          "enum": [
        +                            "one_off",
        +                            "monthly",
        +                            "annual"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "currency": {
        +                          "enum": [
        +                            "GBP",
        +                            "SGD",
        +                            "EUR",
        +                            "USD",
        +                            "CAD",
        +                            "AUD",
        +                            "NZD",
        +                            "MYR"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "display_name": {
        +                          "type": "string"
        +                        },
        +                        "price_local": {
        +                          "type": "number"
        +                        },
        +                        "tier_slug": {
        +                          "enum": [
        +                            "7_day_pass",
        +                            "solo",
        +                            "studio",
        +                            "practice"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "unlock_summary": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "tier_slug",
        +                        "display_name",
        +                        "price_local",
        +                        "currency",
        +                        "billing",
        +                        "unlock_summary"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "current_tier": {
        +                    "const": "free",
        +                    "default": "free",
        +                    "type": "string"
        +                  },
        +                  "pass_credit": {
        +                    "anyOf": [
        +                      {
        +                        "additionalProperties": false,
        +                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        +                        "properties": {
        +                          "amount_local": {
        +                            "type": "number"
        +                          },
        +                          "applies_to": {
        +                            "const": "solo_first_month",
        +                            "default": "solo_first_month",
        +                            "type": "string"
        +                          },
        +                          "currency": {
        +                            "type": "string"
        +                          },
        +                          "redeemable_until": {
        +                            "type": "string"
        +                          }
        +                        },
        +                        "required": [
        +                          "amount_local",
        +                          "currency",
        +                          "redeemable_until"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "pricing_url": {
        +                    "default": "https://civilquants.com/pricing",
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "available_tiers"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tos_url": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "upgrade_hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "warranty_disclaimer": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          }
        +        },
        +        "required": [
        +          "request_id",
        +          "issued_at",
        +          "tier"
        +        ],
        +        "type": "object"
        +      },
        +      "data": {
        +        "default": null,
        +        "title": "Data"
        +      },
        +      "error": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        +            "properties": {
        +              "code": {
        +                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        +                "enum": [
        +                  "RATE_LIMIT_EXCEEDED",
        +                  "TIER_INSUFFICIENT",
        +                  "INVALID_INPUT",
        +                  "SCHEMA_VERSION_MISMATCH",
        +                  "SCHEMA_INVARIANT_VIOLATION",
        +                  "UPSTREAM_TIMEOUT",
        +                  "BACKEND_FAILURE",
        +                  "IP_BLOCKED",
        +                  "RESOURCE_NOT_FOUND",
        +                  "RENDER_FAILURE",
        +                  "OCR_LOW_CONFIDENCE",
        +                  "MANUAL_REVIEW_REQUIRED",
        +                  "ACCEPTANCE_REQUIRED",
        +                  "INVALID_TOKEN"
        +                ],
        +                "type": "string"
        +              },
        +              "details": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "message": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "recoverable": {
        +                "type": "boolean"
        +              },
        +              "retry_after_seconds": {
        +                "anyOf": [
        +                  {
        +                    "minimum": 0,
        +                    "type": "integer"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              }
        +            },
        +            "required": [
        +              "code",
        +              "message",
        +              "recoverable"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      }
        +    },
        +    "required": [
        +      "_meta"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedcompute_ditch3 fields changed
      • addedInput schema / properties / deliverables
        Added value: +{
        +  "anyOf": [
        +    {
        +      "items": {
        +        "const": "xlsx",
        +        "type": "string"
        +      },
        +      "type": "array"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null
        +}
      • addedInput schema / properties / output_mode
        Added value: +{
        +  "default": "full_json",
        +  "enum": [
        +    "summary",
        +    "boq",
        +    "boq_with_backup",
        +    "full_json"
        +  ],
        +  "type": "string"
        +}
      • changedOutput schema / properties / result / anyOf
        Previous value: -[
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "_meta": {
        -        "additionalProperties": false,
        -        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        -        "properties": {
        -          "deliverables": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        -                "properties": {
        -                  "docx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "dxf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "expires_at": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  },
        -                  "pdf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "xlsx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "expires_at"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "document_id": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "issued_at": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "rate_limit_remaining": {
        -            "anyOf": [
        -              {
        -                "minimum": 0,
        -                "type": "integer"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "request_id": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "schema_version": {
        -            "const": "1.0.0",
        -            "default": "1.0.0",
        -            "type": "string"
        -          },
        -          "scope_boundary": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        -                "properties": {
        -                  "not_in_scope": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "produced": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "recommended_companions": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "type": "string"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "produced",
        -                  "not_in_scope"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tier": {
        -            "enum": [
        -              "free",
        -              "paid"
        -            ],
        -            "type": "string"
        -          },
        -          "tier_upgrade": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        -                "properties": {
        -                  "available_tiers": {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        -                      "properties": {
        -                        "billing": {
        -                          "enum": [
        -                            "one_off",
        -                            "monthly",
        -                            "annual"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "currency": {
        -                          "enum": [
        -                            "GBP",
        -                            "SGD",
        -                            "EUR",
        -                            "USD",
        -                            "CAD",
        -                            "AUD",
        -                            "NZD",
        -                            "MYR"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "display_name": {
        -                          "type": "string"
        -                        },
        -                        "price_local": {
        -                          "type": "number"
        -                        },
        -                        "tier_slug": {
        -                          "enum": [
        -                            "7_day_pass",
        -                            "solo",
        -                            "studio",
        -                            "practice"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "unlock_summary": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "tier_slug",
        -                        "display_name",
        -                        "price_local",
        -                        "currency",
        -                        "billing",
        -                        "unlock_summary"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "current_tier": {
        -                    "const": "free",
        -                    "default": "free",
        -                    "type": "string"
        -                  },
        -                  "pass_credit": {
        -                    "anyOf": [
        -                      {
        -                        "additionalProperties": false,
        -                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        -                        "properties": {
        -                          "amount_local": {
        -                            "type": "number"
        -                          },
        -                          "applies_to": {
        -                            "const": "solo_first_month",
        -                            "default": "solo_first_month",
        -                            "type": "string"
        -                          },
        -                          "currency": {
        -                            "type": "string"
        -                          },
        -                          "redeemable_until": {
        -                            "type": "string"
        -                          }
        -                        },
        -                        "required": [
        -                          "amount_local",
        -                          "currency",
        -                          "redeemable_until"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "pricing_url": {
        -                    "default": "https://civilquants.com/pricing",
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "available_tiers"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tos_url": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "upgrade_hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "warranty_disclaimer": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          }
        -        },
        -        "required": [
        -          "request_id",
        -          "issued_at",
        -          "tier"
        -        ],
        -        "type": "object"
        -      },
        -      "data": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Schema § 1.1 — the typed payload returned inside `MCPResponse[ComputeResult]`.\n\nFree-tier responses MUST omit `drawings` and `audit_trail` (the bridge\nenforces this); paid-tier responses populate both. `text_summary` is\nbounded to 2000 chars — keeps the LLM-facing summary token-cheap and\nforces longer narrative into BoQ row descriptions where it belongs.\n`warnings` is the non-fatal geometry advisory list (both tiers).",
        -            "properties": {
        -              "assembly_slug": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "audit_trail": {
        -                "anyOf": [
        -                  {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.7 — paid-tier audit-trail entry.\n\nOne entry per BoQ row; `boq_row_index` ties to the row position in\n`ComputeResult.boq_rows`. `derivation` is the human-readable formula\nwalk-through; `formula` is the optional formal expression.",
        -                      "properties": {
        -                        "boq_row_index": {
        -                          "minimum": 0,
        -                          "type": "integer"
        -                        },
        -                        "derivation": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "formula": {
        -                          "anyOf": [
        -                            {
        -                              "type": "string"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ],
        -                          "default": null
        -                        },
        -                        "id": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "parameters_referenced": {
        -                          "items": {
        -                            "type": "string"
        -                          },
        -                          "type": "array"
        -                        }
        -                      },
        -                      "required": [
        -                        "id",
        -                        "boq_row_index",
        -                        "derivation"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "boq_rows": {
        -                "items": {
        -                  "additionalProperties": false,
        -                  "description": "Schema § 1.3 — a single bill row in the requested standard's format.\n\n`description` is the non-verbatim functional description per spec § 13.9 /\n§ 15 invariant — NEVER reproduces a standard's verbatim clause text.\n`rate` / `amount` ship null because rates are commodity data the customer\nowns; the engine's job is the measurement, not the pricing.",
        -                  "properties": {
        -                    "amount": {
        -                      "anyOf": [
        -                        {
        -                          "type": "number"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "attribution": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "audit_id": {
        -                      "anyOf": [
        -                        {
        -                          "type": "string"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "description": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "quantity": {
        -                      "minimum": 0,
        -                      "type": "number"
        -                    },
        -                    "rate": {
        -                      "anyOf": [
        -                        {
        -                          "type": "number"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "unit": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "work_section": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    }
        -                  },
        -                  "required": [
        -                    "work_section",
        -                    "description",
        -                    "quantity",
        -                    "unit",
        -                    "attribution"
        -                  ],
        -                  "type": "object"
        -                },
        -                "type": "array"
        -              },
        -              "drawings": {
        -                "anyOf": [
        -                  {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.6 — paid-tier drawing artefact pointer.\n\n`url` is an R2-signed URL; expiry is carried in `_meta.deliverables.expires_at`\non the envelope (not duplicated here). `layers` is DXF-only; PDF/SVG\ncallers omit it.",
        -                      "properties": {
        -                        "drawing_type": {
        -                          "enum": [
        -                            "section",
        -                            "plan",
        -                            "elevation",
        -                            "isometric",
        -                            "detail"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "format": {
        -                          "enum": [
        -                            "DXF",
        -                            "PDF",
        -                            "SVG"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "layers": {
        -                          "anyOf": [
        -                            {
        -                              "items": {
        -                                "type": "string"
        -                              },
        -                              "type": "array"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ],
        -                          "default": null
        -                        },
        -                        "scale": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "sheet_size": {
        -                          "enum": [
        -                            "A1",
        -                            "A2",
        -                            "A3",
        -                            "A4"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "url": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "drawing_type",
        -                        "format",
        -                        "url",
        -                        "sheet_size",
        -                        "scale"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "parameters_used": {
        -                "additionalProperties": false,
        -                "description": "Schema § 1.2 — the parameter snapshot the engine actually used.\n\nSplits user-supplied values from engine defaults so customers can see\nwhich numbers came from them and which the engine filled in. Every\ndefaulted parameter SHOULD have a corresponding entry in `assumptions`\n— the bridge layer enforces this when wrapping engine output.",
        -                "properties": {
        -                  "assumptions": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "engine_defaults": {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  "resolved_from_description": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "additionalProperties": false,
        -                          "description": "Schema § 1.2 — a parameter resolved by the forgiving-input layer.\n\nPopulated by the Track B-Forgiving Haiku-4.5 resolution pass; until that\nlayer lands, instances are constructed only by tests. `source` distinguishes\nthe resolution path so customers can audit which fields were inferred.",
        -                          "properties": {
        -                            "confidence": {
        -                              "anyOf": [
        -                                {
        -                                  "enum": [
        -                                    "high",
        -                                    "medium",
        -                                    "low"
        -                                  ],
        -                                  "type": "string"
        -                                },
        -                                {
        -                                  "type": "null"
        -                                }
        -                              ],
        -                              "default": null
        -                            },
        -                            "field_name": {
        -                              "minLength": 1,
        -                              "type": "string"
        -                            },
        -                            "resolved_value": {},
        -                            "source": {
        -                              "enum": [
        -                                "description_field",
        -                                "haiku_resolution",
        -                                "engine_default"
        -                              ],
        -                              "type": "string"
        -                            }
        -                          },
        -                          "required": [
        -                            "field_name",
        -                            "resolved_value",
        -                            "source"
        -                          ],
        -                          "type": "object"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "user_supplied": {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  }
        -                },
        -                "type": "object"
        -              },
        -              "standard": {
        -                "enum": [
        -                  "CESMM4",
        -                  "NRM2",
        -                  "SMM7",
        -                  "MMHW"
        -                ],
        -                "type": "string"
        -              },
        -              "text_summary": {
        -                "maxLength": 2000,
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "totals_summary": {
        -                "additionalProperties": false,
        -                "description": "Schema § 1.4 — totals_summary as a typed wrapper around the free-form dict.\n\nWire shape is a flat object (`{\"concrete_m3\": {...}, \"rebar_t\": {...}}`).\nWe model it as `RootModel`-equivalent via `model_config(extra=\"allow\")`\n+ a single `__root__`-style `entries` dict. Pydantic v2 recommends\n`RootModel` for free-form roots; using a wrapper class keeps the import\nsurface uniform with the rest of this module.",
        -                "properties": {
        -                  "entries": {
        -                    "additionalProperties": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.4 — single material/work-class total entry.",
        -                      "properties": {
        -                        "quantity": {
        -                          "minimum": 0,
        -                          "type": "number"
        -                        },
        -                        "unit": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "quantity",
        -                        "unit"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "object"
        -                  }
        -                },
        -                "type": "object"
        -              },
        -              "warnings": {
        -                "items": {
        -                  "additionalProperties": false,
        -                  "description": "Schema § 1.8 — a non-fatal geometry advisory (56th-fire T2).\n\nThe wire projection of the engine's `core.GeometryWarning`. Advisory only:\na warning NEVER changes a measured quantity — it flags geometry that is\nvalid but likely a mistake (e.g. a stale dependent-height default). Present\non BOTH tiers — a correctness/safety signal, not a paid feature.",
        -                  "properties": {
        -                    "affected_params": {
        -                      "items": {
        -                        "type": "string"
        -                      },
        -                      "type": "array"
        -                    },
        -                    "code": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "detail": {
        -                      "additionalProperties": {
        -                        "type": "number"
        -                      },
        -                      "type": "object"
        -                    },
        -                    "message": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "severity": {
        -                      "enum": [
        -                        "info",
        -                        "advisory",
        -                        "caution"
        -                      ],
        -                      "type": "string"
        -                    }
        -                  },
        -                  "required": [
        -                    "code",
        -                    "severity",
        -                    "message"
        -                  ],
        -                  "type": "object"
        -                },
        -                "type": "array"
        -              }
        -            },
        -            "required": [
        -              "assembly_slug",
        -              "standard",
        -              "parameters_used",
        -              "boq_rows",
        -              "totals_summary",
        -              "text_summary"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      },
        -      "error": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        -            "properties": {
        -              "code": {
        -                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        -                "enum": [
        -                  "RATE_LIMIT_EXCEEDED",
        -                  "TIER_INSUFFICIENT",
        -                  "INVALID_INPUT",
        -                  "SCHEMA_VERSION_MISMATCH",
        -                  "SCHEMA_INVARIANT_VIOLATION",
        -                  "UPSTREAM_TIMEOUT",
        -                  "BACKEND_FAILURE",
        -                  "IP_BLOCKED",
        -                  "RESOURCE_NOT_FOUND",
        -                  "RENDER_FAILURE",
        -                  "OCR_LOW_CONFIDENCE",
        -                  "MANUAL_REVIEW_REQUIRED",
        -                  "ACCEPTANCE_REQUIRED",
        -                  "INVALID_TOKEN"
        -                ],
        -                "type": "string"
        -              },
        -              "details": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "message": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "recoverable": {
        -                "type": "boolean"
        -              },
        -              "retry_after_seconds": {
        -                "anyOf": [
        -                  {
        -                    "minimum": 0,
        -                    "type": "integer"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              }
        -            },
        -            "required": [
        -              "code",
        -              "message",
        -              "recoverable"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      }
        -    },
        -    "required": [
        -      "_meta"
        -    ],
        -    "type": "object"
        -  },
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "_meta": {
        -        "additionalProperties": false,
        -        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        -        "properties": {
        -          "deliverables": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        -                "properties": {
        -                  "docx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "dxf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "expires_at": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  },
        -                  "pdf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "xlsx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "expires_at"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "document_id": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "issued_at": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "rate_limit_remaining": {
        -            "anyOf": [
        -              {
        -                "minimum": 0,
        -                "type": "integer"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "request_id": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "schema_version": {
        -            "const": "1.0.0",
        -            "default": "1.0.0",
        -            "type": "string"
        -          },
        -          "scope_boundary": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        -                "properties": {
        -                  "not_in_scope": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "produced": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "recommended_companions": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "type": "string"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "produced",
        -                  "not_in_scope"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tier": {
        -            "enum": [
        -              "free",
        -              "paid"
        -            ],
        -            "type": "string"
        -          },
        -          "tier_upgrade": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        -                "properties": {
        -                  "available_tiers": {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        -                      "properties": {
        -                        "billing": {
        -                          "enum": [
        -                            "one_off",
        -                            "monthly",
        -                            "annual"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "currency": {
        -                          "enum": [
        -                            "GBP",
        -                            "SGD",
        -                            "EUR",
        -                            "USD",
        -                            "CAD",
        -                            "AUD",
        -                            "NZD",
        -                            "MYR"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "display_name": {
        -                          "type": "string"
        -                        },
        -                        "price_local": {
        -                          "type": "number"
        -                        },
        -                        "tier_slug": {
        -                          "enum": [
        -                            "7_day_pass",
        -                            "solo",
        -                            "studio",
        -                            "practice"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "unlock_summary": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "tier_slug",
        -                        "display_name",
        -                        "price_local",
        -                        "currency",
        -                        "billing",
        -                        "unlock_summary"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "current_tier": {
        -                    "const": "free",
        -                    "default": "free",
        -                    "type": "string"
        -                  },
        -                  "pass_credit": {
        -                    "anyOf": [
        -                      {
        -                        "additionalProperties": false,
        -                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        -                        "properties": {
        -                          "amount_local": {
        -                            "type": "number"
        -                          },
        -                          "applies_to": {
        -                            "const": "solo_first_month",
        -                            "default": "solo_first_month",
        -                            "type": "string"
        -                          },
        -                          "currency": {
        -                            "type": "string"
        -                          },
        -                          "redeemable_until": {
        -                            "type": "string"
        -                          }
        -                        },
        -                        "required": [
        -                          "amount_local",
        -                          "currency",
        -                          "redeemable_until"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "pricing_url": {
        -                    "default": "https://civilquants.com/pricing",
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "available_tiers"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tos_url": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "upgrade_hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "warranty_disclaimer": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          }
        -        },
        -        "required": [
        -          "request_id",
        -          "issued_at",
        -          "tier"
        -        ],
        -        "type": "object"
        -      },
        -      "data": {
        -        "default": null,
        -        "title": "Data"
        -      },
        -      "error": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        -            "properties": {
        -              "code": {
        -                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        -                "enum": [
        -                  "RATE_LIMIT_EXCEEDED",
        -                  "TIER_INSUFFICIENT",
        -                  "INVALID_INPUT",
        -                  "SCHEMA_VERSION_MISMATCH",
        -                  "SCHEMA_INVARIANT_VIOLATION",
        -                  "UPSTREAM_TIMEOUT",
        -                  "BACKEND_FAILURE",
        -                  "IP_BLOCKED",
        -                  "RESOURCE_NOT_FOUND",
        -                  "RENDER_FAILURE",
        -                  "OCR_LOW_CONFIDENCE",
        -                  "MANUAL_REVIEW_REQUIRED",
        -                  "ACCEPTANCE_REQUIRED",
        -                  "INVALID_TOKEN"
        -                ],
        -                "type": "string"
        -              },
        -              "details": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "message": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "recoverable": {
        -                "type": "boolean"
        -              },
        -              "retry_after_seconds": {
        -                "anyOf": [
        -                  {
        -                    "minimum": 0,
        -                    "type": "integer"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              }
        -            },
        -            "required": [
        -              "code",
        -              "message",
        -              "recoverable"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      }
        -    },
        -    "required": [
        -      "_meta"
        -    ],
        -    "type": "object"
        -  }
        -]New value: +[
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "_meta": {
        +        "additionalProperties": false,
        +        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        +        "properties": {
        +          "deliverables": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        +                "properties": {
        +                  "docx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "dxf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "expires_at": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  },
        +                  "pdf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "xlsx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "expires_at"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "document_id": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "issued_at": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "rate_limit_remaining": {
        +            "anyOf": [
        +              {
        +                "minimum": 0,
        +                "type": "integer"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "request_id": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "schema_version": {
        +            "const": "1.0.0",
        +            "default": "1.0.0",
        +            "type": "string"
        +          },
        +          "scope_boundary": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        +                "properties": {
        +                  "not_in_scope": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "produced": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "recommended_companions": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "type": "string"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "produced",
        +                  "not_in_scope"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tier": {
        +            "enum": [
        +              "free",
        +              "paid"
        +            ],
        +            "type": "string"
        +          },
        +          "tier_upgrade": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        +                "properties": {
        +                  "available_tiers": {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        +                      "properties": {
        +                        "billing": {
        +                          "enum": [
        +                            "one_off",
        +                            "monthly",
        +                            "annual"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "currency": {
        +                          "enum": [
        +                            "GBP",
        +                            "SGD",
        +                            "EUR",
        +                            "USD",
        +                            "CAD",
        +                            "AUD",
        +                            "NZD",
        +                            "MYR"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "display_name": {
        +                          "type": "string"
        +                        },
        +                        "price_local": {
        +                          "type": "number"
        +                        },
        +                        "tier_slug": {
        +                          "enum": [
        +                            "7_day_pass",
        +                            "solo",
        +                            "studio",
        +                            "practice"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "unlock_summary": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "tier_slug",
        +                        "display_name",
        +                        "price_local",
        +                        "currency",
        +                        "billing",
        +                        "unlock_summary"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "current_tier": {
        +                    "const": "free",
        +                    "default": "free",
        +                    "type": "string"
        +                  },
        +                  "pass_credit": {
        +                    "anyOf": [
        +                      {
        +                        "additionalProperties": false,
        +                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        +                        "properties": {
        +                          "amount_local": {
        +                            "type": "number"
        +                          },
        +                          "applies_to": {
        +                            "const": "solo_first_month",
        +                            "default": "solo_first_month",
        +                            "type": "string"
        +                          },
        +                          "currency": {
        +                            "type": "string"
        +                          },
        +                          "redeemable_until": {
        +                            "type": "string"
        +                          }
        +                        },
        +                        "required": [
        +                          "amount_local",
        +                          "currency",
        +                          "redeemable_until"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "pricing_url": {
        +                    "default": "https://civilquants.com/pricing",
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "available_tiers"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tos_url": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "upgrade_hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "warranty_disclaimer": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          }
        +        },
        +        "required": [
        +          "request_id",
        +          "issued_at",
        +          "tier"
        +        ],
        +        "type": "object"
        +      },
        +      "data": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Schema § 1.1 — the typed payload returned inside `MCPResponse[ComputeResult]`.\n\nFree-tier responses omit `drawings` (the downloadable CAD artefact\npointers — the paid differentiator); the bridge enforces this. The\n`audit_trail` and the inline `drawing` preview are present on BOTH tiers\n(V1 ALIGN / 60th-fire D + C). `text_summary` is bounded to 2000 chars —\nkeeps the LLM-facing summary token-cheap and forces longer narrative into\nBoQ row descriptions where it belongs. `warnings` is the non-fatal\ngeometry advisory list (both tiers).",
        +            "properties": {
        +              "assembly_slug": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "audit_trail": {
        +                "anyOf": [
        +                  {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.7 — paid-tier audit-trail entry.\n\nOne entry per BoQ row; `boq_row_index` ties to the row position in\n`ComputeResult.boq_rows`. `derivation` is the human-readable formula\nwalk-through; `formula` is the optional formal expression.",
        +                      "properties": {
        +                        "boq_row_index": {
        +                          "minimum": 0,
        +                          "type": "integer"
        +                        },
        +                        "derivation": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "formula": {
        +                          "anyOf": [
        +                            {
        +                              "type": "string"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ],
        +                          "default": null
        +                        },
        +                        "id": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "parameters_referenced": {
        +                          "items": {
        +                            "type": "string"
        +                          },
        +                          "type": "array"
        +                        }
        +                      },
        +                      "required": [
        +                        "id",
        +                        "boq_row_index",
        +                        "derivation"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "boq_rows": {
        +                "items": {
        +                  "additionalProperties": false,
        +                  "description": "Schema § 1.3 — a single bill row in the requested standard's format.\n\n`description` is the non-verbatim functional description per spec § 13.9 /\n§ 15 invariant — NEVER reproduces a standard's verbatim clause text.\n`rate` / `amount` ship null because rates are commodity data the customer\nowns; the engine's job is the measurement, not the pricing.",
        +                  "properties": {
        +                    "amount": {
        +                      "anyOf": [
        +                        {
        +                          "type": "number"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "attribution": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "audit_id": {
        +                      "anyOf": [
        +                        {
        +                          "type": "string"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "description": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "quantity": {
        +                      "minimum": 0,
        +                      "type": "number"
        +                    },
        +                    "rate": {
        +                      "anyOf": [
        +                        {
        +                          "type": "number"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "unit": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "work_section": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    }
        +                  },
        +                  "required": [
        +                    "work_section",
        +                    "description",
        +                    "quantity",
        +                    "unit",
        +                    "attribution"
        +                  ],
        +                  "type": "object"
        +                },
        +                "type": "array"
        +              },
        +              "drawing": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": false,
        +                    "description": "Schema § 1.6a — inline server-rendered SVG preview of the geometry.\n\nThe MCP mirror of the web ``/compute`` response's ``drawing`` field\n(``api.schemas.compute.DrawingRef``): the same on-screen dimensioned\ndrawing both tiers see in the workspace, surfaced on the MCP compute\nresponse so a chat client can render it inline (60th-fire item C). This\nis the on-screen preview — present on BOTH tiers per the free/paid\nboundary; the downloadable CAD artefacts (DXF / dimensioned PDF) remain\nthe paid differentiator via the export tools.\n\nDefined here rather than importing ``DrawingRef`` because the web\n``schemas`` package imports back into this module (``schemas.render``),\nso reusing it would create an import cycle — the MCP wire contract keeps\nits own copy, the same pattern as ``BoQRow`` / ``DrawingReference``.",
        +                    "properties": {
        +                      "entity_count": {
        +                        "minimum": 0,
        +                        "type": "integer"
        +                      },
        +                      "svg_b64": {
        +                        "minLength": 1,
        +                        "type": "string"
        +                      },
        +                      "unit_of_drawing": {
        +                        "const": "m",
        +                        "default": "m",
        +                        "type": "string"
        +                      },
        +                      "viewbox_height": {
        +                        "exclusiveMinimum": 0,
        +                        "type": "number"
        +                      },
        +                      "viewbox_width": {
        +                        "exclusiveMinimum": 0,
        +                        "type": "number"
        +                      },
        +                      "viewbox_x": {
        +                        "type": "number"
        +                      },
        +                      "viewbox_y": {
        +                        "type": "number"
        +                      }
        +                    },
        +                    "required": [
        +                      "svg_b64",
        +                      "viewbox_x",
        +                      "viewbox_y",
        +                      "viewbox_width",
        +                      "viewbox_height",
        +                      "entity_count"
        +                    ],
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "drawings": {
        +                "anyOf": [
        +                  {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.6 — paid-tier drawing artefact pointer.\n\n`url` is an R2-signed URL; expiry is carried in `_meta.deliverables.expires_at`\non the envelope (not duplicated here). `layers` is DXF-only; PDF/SVG\ncallers omit it.",
        +                      "properties": {
        +                        "drawing_type": {
        +                          "enum": [
        +                            "section",
        +                            "plan",
        +                            "elevation",
        +                            "isometric",
        +                            "detail"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "format": {
        +                          "enum": [
        +                            "DXF",
        +                            "PDF",
        +                            "SVG"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "layers": {
        +                          "anyOf": [
        +                            {
        +                              "items": {
        +                                "type": "string"
        +                              },
        +                              "type": "array"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ],
        +                          "default": null
        +                        },
        +                        "scale": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "sheet_size": {
        +                          "enum": [
        +                            "A1",
        +                            "A2",
        +                            "A3",
        +                            "A4"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "url": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "drawing_type",
        +                        "format",
        +                        "url",
        +                        "sheet_size",
        +                        "scale"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "parameters_used": {
        +                "additionalProperties": false,
        +                "description": "Schema § 1.2 — the parameter snapshot the engine actually used.\n\nSplits user-supplied values from engine defaults so customers can see\nwhich numbers came from them and which the engine filled in. Every\ndefaulted parameter SHOULD have a corresponding entry in `assumptions`\n— the bridge layer enforces this when wrapping engine output.",
        +                "properties": {
        +                  "assumptions": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "engine_defaults": {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  "resolved_from_description": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "additionalProperties": false,
        +                          "description": "Schema § 1.2 — a parameter resolved by the forgiving-input layer.\n\nPopulated by the Track B-Forgiving Haiku-4.5 resolution pass; until that\nlayer lands, instances are constructed only by tests. `source` distinguishes\nthe resolution path so customers can audit which fields were inferred.",
        +                          "properties": {
        +                            "confidence": {
        +                              "anyOf": [
        +                                {
        +                                  "enum": [
        +                                    "high",
        +                                    "medium",
        +                                    "low"
        +                                  ],
        +                                  "type": "string"
        +                                },
        +                                {
        +                                  "type": "null"
        +                                }
        +                              ],
        +                              "default": null
        +                            },
        +                            "field_name": {
        +                              "minLength": 1,
        +                              "type": "string"
        +                            },
        +                            "resolved_value": {},
        +                            "source": {
        +                              "enum": [
        +                                "description_field",
        +                                "haiku_resolution",
        +                                "engine_default"
        +                              ],
        +                              "type": "string"
        +                            }
        +                          },
        +                          "required": [
        +                            "field_name",
        +                            "resolved_value",
        +                            "source"
        +                          ],
        +                          "type": "object"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "user_supplied": {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  }
        +                },
        +                "type": "object"
        +              },
        +              "standard": {
        +                "enum": [
        +                  "CESMM4",
        +                  "NRM2",
        +                  "SMM7",
        +                  "MMHW"
        +                ],
        +                "type": "string"
        +              },
        +              "text_summary": {
        +                "maxLength": 2000,
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "totals_summary": {
        +                "additionalProperties": false,
        +                "description": "Schema § 1.4 — totals_summary as a typed wrapper around the free-form dict.\n\nWire shape is a flat object (`{\"concrete_m3\": {...}, \"rebar_t\": {...}}`).\nWe model it as `RootModel`-equivalent via `model_config(extra=\"allow\")`\n+ a single `__root__`-style `entries` dict. Pydantic v2 recommends\n`RootModel` for free-form roots; using a wrapper class keeps the import\nsurface uniform with the rest of this module.",
        +                "properties": {
        +                  "entries": {
        +                    "additionalProperties": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.4 — single material/work-class total entry.",
        +                      "properties": {
        +                        "quantity": {
        +                          "minimum": 0,
        +                          "type": "number"
        +                        },
        +                        "unit": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "quantity",
        +                        "unit"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "object"
        +                  }
        +                },
        +                "type": "object"
        +              },
        +              "warnings": {
        +                "items": {
        +                  "additionalProperties": false,
        +                  "description": "Schema § 1.8 — a non-fatal geometry advisory (56th-fire T2).\n\nThe wire projection of the engine's `core.GeometryWarning`. Advisory only:\na warning NEVER changes a measured quantity — it flags geometry that is\nvalid but likely a mistake (e.g. a stale dependent-height default). Present\non BOTH tiers — a correctness/safety signal, not a paid feature.",
        +                  "properties": {
        +                    "affected_params": {
        +                      "items": {
        +                        "type": "string"
        +                      },
        +                      "type": "array"
        +                    },
        +                    "code": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "detail": {
        +                      "additionalProperties": {
        +                        "type": "number"
        +                      },
        +                      "type": "object"
        +                    },
        +                    "message": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "severity": {
        +                      "enum": [
        +                        "info",
        +                        "advisory",
        +                        "caution"
        +                      ],
        +                      "type": "string"
        +                    }
        +                  },
        +                  "required": [
        +                    "code",
        +                    "severity",
        +                    "message"
        +                  ],
        +                  "type": "object"
        +                },
        +                "type": "array"
        +              }
        +            },
        +            "required": [
        +              "assembly_slug",
        +              "standard",
        +              "parameters_used",
        +              "boq_rows",
        +              "totals_summary",
        +              "text_summary"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      },
        +      "error": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        +            "properties": {
        +              "code": {
        +                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        +                "enum": [
        +                  "RATE_LIMIT_EXCEEDED",
        +                  "TIER_INSUFFICIENT",
        +                  "INVALID_INPUT",
        +                  "SCHEMA_VERSION_MISMATCH",
        +                  "SCHEMA_INVARIANT_VIOLATION",
        +                  "UPSTREAM_TIMEOUT",
        +                  "BACKEND_FAILURE",
        +                  "IP_BLOCKED",
        +                  "RESOURCE_NOT_FOUND",
        +                  "RENDER_FAILURE",
        +                  "OCR_LOW_CONFIDENCE",
        +                  "MANUAL_REVIEW_REQUIRED",
        +                  "ACCEPTANCE_REQUIRED",
        +                  "INVALID_TOKEN"
        +                ],
        +                "type": "string"
        +              },
        +              "details": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "message": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "recoverable": {
        +                "type": "boolean"
        +              },
        +              "retry_after_seconds": {
        +                "anyOf": [
        +                  {
        +                    "minimum": 0,
        +                    "type": "integer"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              }
        +            },
        +            "required": [
        +              "code",
        +              "message",
        +              "recoverable"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      }
        +    },
        +    "required": [
        +      "_meta"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "_meta": {
        +        "additionalProperties": false,
        +        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        +        "properties": {
        +          "deliverables": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        +                "properties": {
        +                  "docx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "dxf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "expires_at": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  },
        +                  "pdf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "xlsx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "expires_at"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "document_id": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "issued_at": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "rate_limit_remaining": {
        +            "anyOf": [
        +              {
        +                "minimum": 0,
        +                "type": "integer"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "request_id": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "schema_version": {
        +            "const": "1.0.0",
        +            "default": "1.0.0",
        +            "type": "string"
        +          },
        +          "scope_boundary": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        +                "properties": {
        +                  "not_in_scope": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "produced": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "recommended_companions": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "type": "string"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "produced",
        +                  "not_in_scope"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tier": {
        +            "enum": [
        +              "free",
        +              "paid"
        +            ],
        +            "type": "string"
        +          },
        +          "tier_upgrade": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        +                "properties": {
        +                  "available_tiers": {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        +                      "properties": {
        +                        "billing": {
        +                          "enum": [
        +                            "one_off",
        +                            "monthly",
        +                            "annual"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "currency": {
        +                          "enum": [
        +                            "GBP",
        +                            "SGD",
        +                            "EUR",
        +                            "USD",
        +                            "CAD",
        +                            "AUD",
        +                            "NZD",
        +                            "MYR"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "display_name": {
        +                          "type": "string"
        +                        },
        +                        "price_local": {
        +                          "type": "number"
        +                        },
        +                        "tier_slug": {
        +                          "enum": [
        +                            "7_day_pass",
        +                            "solo",
        +                            "studio",
        +                            "practice"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "unlock_summary": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "tier_slug",
        +                        "display_name",
        +                        "price_local",
        +                        "currency",
        +                        "billing",
        +                        "unlock_summary"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "current_tier": {
        +                    "const": "free",
        +                    "default": "free",
        +                    "type": "string"
        +                  },
        +                  "pass_credit": {
        +                    "anyOf": [
        +                      {
        +                        "additionalProperties": false,
        +                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        +                        "properties": {
        +                          "amount_local": {
        +                            "type": "number"
        +                          },
        +                          "applies_to": {
        +                            "const": "solo_first_month",
        +                            "default": "solo_first_month",
        +                            "type": "string"
        +                          },
        +                          "currency": {
        +                            "type": "string"
        +                          },
        +                          "redeemable_until": {
        +                            "type": "string"
        +                          }
        +                        },
        +                        "required": [
        +                          "amount_local",
        +                          "currency",
        +                          "redeemable_until"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "pricing_url": {
        +                    "default": "https://civilquants.com/pricing",
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "available_tiers"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tos_url": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "upgrade_hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "warranty_disclaimer": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          }
        +        },
        +        "required": [
        +          "request_id",
        +          "issued_at",
        +          "tier"
        +        ],
        +        "type": "object"
        +      },
        +      "data": {
        +        "default": null,
        +        "title": "Data"
        +      },
        +      "error": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        +            "properties": {
        +              "code": {
        +                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        +                "enum": [
        +                  "RATE_LIMIT_EXCEEDED",
        +                  "TIER_INSUFFICIENT",
        +                  "INVALID_INPUT",
        +                  "SCHEMA_VERSION_MISMATCH",
        +                  "SCHEMA_INVARIANT_VIOLATION",
        +                  "UPSTREAM_TIMEOUT",
        +                  "BACKEND_FAILURE",
        +                  "IP_BLOCKED",
        +                  "RESOURCE_NOT_FOUND",
        +                  "RENDER_FAILURE",
        +                  "OCR_LOW_CONFIDENCE",
        +                  "MANUAL_REVIEW_REQUIRED",
        +                  "ACCEPTANCE_REQUIRED",
        +                  "INVALID_TOKEN"
        +                ],
        +                "type": "string"
        +              },
        +              "details": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "message": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "recoverable": {
        +                "type": "boolean"
        +              },
        +              "retry_after_seconds": {
        +                "anyOf": [
        +                  {
        +                    "minimum": 0,
        +                    "type": "integer"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              }
        +            },
        +            "required": [
        +              "code",
        +              "message",
        +              "recoverable"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      }
        +    },
        +    "required": [
        +      "_meta"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedcompute_edge_drain3 fields changed
      • addedInput schema / properties / deliverables
        Added value: +{
        +  "anyOf": [
        +    {
        +      "items": {
        +        "const": "xlsx",
        +        "type": "string"
        +      },
        +      "type": "array"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null
        +}
      • addedInput schema / properties / output_mode
        Added value: +{
        +  "default": "full_json",
        +  "enum": [
        +    "summary",
        +    "boq",
        +    "boq_with_backup",
        +    "full_json"
        +  ],
        +  "type": "string"
        +}
      • changedOutput schema / properties / result / anyOf
        Previous value: -[
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "_meta": {
        -        "additionalProperties": false,
        -        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        -        "properties": {
        -          "deliverables": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        -                "properties": {
        -                  "docx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "dxf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "expires_at": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  },
        -                  "pdf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "xlsx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "expires_at"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "document_id": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "issued_at": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "rate_limit_remaining": {
        -            "anyOf": [
        -              {
        -                "minimum": 0,
        -                "type": "integer"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "request_id": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "schema_version": {
        -            "const": "1.0.0",
        -            "default": "1.0.0",
        -            "type": "string"
        -          },
        -          "scope_boundary": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        -                "properties": {
        -                  "not_in_scope": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "produced": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "recommended_companions": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "type": "string"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "produced",
        -                  "not_in_scope"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tier": {
        -            "enum": [
        -              "free",
        -              "paid"
        -            ],
        -            "type": "string"
        -          },
        -          "tier_upgrade": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        -                "properties": {
        -                  "available_tiers": {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        -                      "properties": {
        -                        "billing": {
        -                          "enum": [
        -                            "one_off",
        -                            "monthly",
        -                            "annual"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "currency": {
        -                          "enum": [
        -                            "GBP",
        -                            "SGD",
        -                            "EUR",
        -                            "USD",
        -                            "CAD",
        -                            "AUD",
        -                            "NZD",
        -                            "MYR"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "display_name": {
        -                          "type": "string"
        -                        },
        -                        "price_local": {
        -                          "type": "number"
        -                        },
        -                        "tier_slug": {
        -                          "enum": [
        -                            "7_day_pass",
        -                            "solo",
        -                            "studio",
        -                            "practice"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "unlock_summary": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "tier_slug",
        -                        "display_name",
        -                        "price_local",
        -                        "currency",
        -                        "billing",
        -                        "unlock_summary"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "current_tier": {
        -                    "const": "free",
        -                    "default": "free",
        -                    "type": "string"
        -                  },
        -                  "pass_credit": {
        -                    "anyOf": [
        -                      {
        -                        "additionalProperties": false,
        -                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        -                        "properties": {
        -                          "amount_local": {
        -                            "type": "number"
        -                          },
        -                          "applies_to": {
        -                            "const": "solo_first_month",
        -                            "default": "solo_first_month",
        -                            "type": "string"
        -                          },
        -                          "currency": {
        -                            "type": "string"
        -                          },
        -                          "redeemable_until": {
        -                            "type": "string"
        -                          }
        -                        },
        -                        "required": [
        -                          "amount_local",
        -                          "currency",
        -                          "redeemable_until"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "pricing_url": {
        -                    "default": "https://civilquants.com/pricing",
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "available_tiers"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tos_url": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "upgrade_hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "warranty_disclaimer": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          }
        -        },
        -        "required": [
        -          "request_id",
        -          "issued_at",
        -          "tier"
        -        ],
        -        "type": "object"
        -      },
        -      "data": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Schema § 1.1 — the typed payload returned inside `MCPResponse[ComputeResult]`.\n\nFree-tier responses MUST omit `drawings` and `audit_trail` (the bridge\nenforces this); paid-tier responses populate both. `text_summary` is\nbounded to 2000 chars — keeps the LLM-facing summary token-cheap and\nforces longer narrative into BoQ row descriptions where it belongs.\n`warnings` is the non-fatal geometry advisory list (both tiers).",
        -            "properties": {
        -              "assembly_slug": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "audit_trail": {
        -                "anyOf": [
        -                  {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.7 — paid-tier audit-trail entry.\n\nOne entry per BoQ row; `boq_row_index` ties to the row position in\n`ComputeResult.boq_rows`. `derivation` is the human-readable formula\nwalk-through; `formula` is the optional formal expression.",
        -                      "properties": {
        -                        "boq_row_index": {
        -                          "minimum": 0,
        -                          "type": "integer"
        -                        },
        -                        "derivation": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "formula": {
        -                          "anyOf": [
        -                            {
        -                              "type": "string"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ],
        -                          "default": null
        -                        },
        -                        "id": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "parameters_referenced": {
        -                          "items": {
        -                            "type": "string"
        -                          },
        -                          "type": "array"
        -                        }
        -                      },
        -                      "required": [
        -                        "id",
        -                        "boq_row_index",
        -                        "derivation"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "boq_rows": {
        -                "items": {
        -                  "additionalProperties": false,
        -                  "description": "Schema § 1.3 — a single bill row in the requested standard's format.\n\n`description` is the non-verbatim functional description per spec § 13.9 /\n§ 15 invariant — NEVER reproduces a standard's verbatim clause text.\n`rate` / `amount` ship null because rates are commodity data the customer\nowns; the engine's job is the measurement, not the pricing.",
        -                  "properties": {
        -                    "amount": {
        -                      "anyOf": [
        -                        {
        -                          "type": "number"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "attribution": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "audit_id": {
        -                      "anyOf": [
        -                        {
        -                          "type": "string"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "description": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "quantity": {
        -                      "minimum": 0,
        -                      "type": "number"
        -                    },
        -                    "rate": {
        -                      "anyOf": [
        -                        {
        -                          "type": "number"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "unit": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "work_section": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    }
        -                  },
        -                  "required": [
        -                    "work_section",
        -                    "description",
        -                    "quantity",
        -                    "unit",
        -                    "attribution"
        -                  ],
        -                  "type": "object"
        -                },
        -                "type": "array"
        -              },
        -              "drawings": {
        -                "anyOf": [
        -                  {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.6 — paid-tier drawing artefact pointer.\n\n`url` is an R2-signed URL; expiry is carried in `_meta.deliverables.expires_at`\non the envelope (not duplicated here). `layers` is DXF-only; PDF/SVG\ncallers omit it.",
        -                      "properties": {
        -                        "drawing_type": {
        -                          "enum": [
        -                            "section",
        -                            "plan",
        -                            "elevation",
        -                            "isometric",
        -                            "detail"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "format": {
        -                          "enum": [
        -                            "DXF",
        -                            "PDF",
        -                            "SVG"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "layers": {
        -                          "anyOf": [
        -                            {
        -                              "items": {
        -                                "type": "string"
        -                              },
        -                              "type": "array"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ],
        -                          "default": null
        -                        },
        -                        "scale": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "sheet_size": {
        -                          "enum": [
        -                            "A1",
        -                            "A2",
        -                            "A3",
        -                            "A4"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "url": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "drawing_type",
        -                        "format",
        -                        "url",
        -                        "sheet_size",
        -                        "scale"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "parameters_used": {
        -                "additionalProperties": false,
        -                "description": "Schema § 1.2 — the parameter snapshot the engine actually used.\n\nSplits user-supplied values from engine defaults so customers can see\nwhich numbers came from them and which the engine filled in. Every\ndefaulted parameter SHOULD have a corresponding entry in `assumptions`\n— the bridge layer enforces this when wrapping engine output.",
        -                "properties": {
        -                  "assumptions": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "engine_defaults": {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  "resolved_from_description": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "additionalProperties": false,
        -                          "description": "Schema § 1.2 — a parameter resolved by the forgiving-input layer.\n\nPopulated by the Track B-Forgiving Haiku-4.5 resolution pass; until that\nlayer lands, instances are constructed only by tests. `source` distinguishes\nthe resolution path so customers can audit which fields were inferred.",
        -                          "properties": {
        -                            "confidence": {
        -                              "anyOf": [
        -                                {
        -                                  "enum": [
        -                                    "high",
        -                                    "medium",
        -                                    "low"
        -                                  ],
        -                                  "type": "string"
        -                                },
        -                                {
        -                                  "type": "null"
        -                                }
        -                              ],
        -                              "default": null
        -                            },
        -                            "field_name": {
        -                              "minLength": 1,
        -                              "type": "string"
        -                            },
        -                            "resolved_value": {},
        -                            "source": {
        -                              "enum": [
        -                                "description_field",
        -                                "haiku_resolution",
        -                                "engine_default"
        -                              ],
        -                              "type": "string"
        -                            }
        -                          },
        -                          "required": [
        -                            "field_name",
        -                            "resolved_value",
        -                            "source"
        -                          ],
        -                          "type": "object"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "user_supplied": {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  }
        -                },
        -                "type": "object"
        -              },
        -              "standard": {
        -                "enum": [
        -                  "CESMM4",
        -                  "NRM2",
        -                  "SMM7",
        -                  "MMHW"
        -                ],
        -                "type": "string"
        -              },
        -              "text_summary": {
        -                "maxLength": 2000,
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "totals_summary": {
        -                "additionalProperties": false,
        -                "description": "Schema § 1.4 — totals_summary as a typed wrapper around the free-form dict.\n\nWire shape is a flat object (`{\"concrete_m3\": {...}, \"rebar_t\": {...}}`).\nWe model it as `RootModel`-equivalent via `model_config(extra=\"allow\")`\n+ a single `__root__`-style `entries` dict. Pydantic v2 recommends\n`RootModel` for free-form roots; using a wrapper class keeps the import\nsurface uniform with the rest of this module.",
        -                "properties": {
        -                  "entries": {
        -                    "additionalProperties": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.4 — single material/work-class total entry.",
        -                      "properties": {
        -                        "quantity": {
        -                          "minimum": 0,
        -                          "type": "number"
        -                        },
        -                        "unit": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "quantity",
        -                        "unit"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "object"
        -                  }
        -                },
        -                "type": "object"
        -              },
        -              "warnings": {
        -                "items": {
        -                  "additionalProperties": false,
        -                  "description": "Schema § 1.8 — a non-fatal geometry advisory (56th-fire T2).\n\nThe wire projection of the engine's `core.GeometryWarning`. Advisory only:\na warning NEVER changes a measured quantity — it flags geometry that is\nvalid but likely a mistake (e.g. a stale dependent-height default). Present\non BOTH tiers — a correctness/safety signal, not a paid feature.",
        -                  "properties": {
        -                    "affected_params": {
        -                      "items": {
        -                        "type": "string"
        -                      },
        -                      "type": "array"
        -                    },
        -                    "code": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "detail": {
        -                      "additionalProperties": {
        -                        "type": "number"
        -                      },
        -                      "type": "object"
        -                    },
        -                    "message": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "severity": {
        -                      "enum": [
        -                        "info",
        -                        "advisory",
        -                        "caution"
        -                      ],
        -                      "type": "string"
        -                    }
        -                  },
        -                  "required": [
        -                    "code",
        -                    "severity",
        -                    "message"
        -                  ],
        -                  "type": "object"
        -                },
        -                "type": "array"
        -              }
        -            },
        -            "required": [
        -              "assembly_slug",
        -              "standard",
        -              "parameters_used",
        -              "boq_rows",
        -              "totals_summary",
        -              "text_summary"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      },
        -      "error": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        -            "properties": {
        -              "code": {
        -                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        -                "enum": [
        -                  "RATE_LIMIT_EXCEEDED",
        -                  "TIER_INSUFFICIENT",
        -                  "INVALID_INPUT",
        -                  "SCHEMA_VERSION_MISMATCH",
        -                  "SCHEMA_INVARIANT_VIOLATION",
        -                  "UPSTREAM_TIMEOUT",
        -                  "BACKEND_FAILURE",
        -                  "IP_BLOCKED",
        -                  "RESOURCE_NOT_FOUND",
        -                  "RENDER_FAILURE",
        -                  "OCR_LOW_CONFIDENCE",
        -                  "MANUAL_REVIEW_REQUIRED",
        -                  "ACCEPTANCE_REQUIRED",
        -                  "INVALID_TOKEN"
        -                ],
        -                "type": "string"
        -              },
        -              "details": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "message": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "recoverable": {
        -                "type": "boolean"
        -              },
        -              "retry_after_seconds": {
        -                "anyOf": [
        -                  {
        -                    "minimum": 0,
        -                    "type": "integer"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              }
        -            },
        -            "required": [
        -              "code",
        -              "message",
        -              "recoverable"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      }
        -    },
        -    "required": [
        -      "_meta"
        -    ],
        -    "type": "object"
        -  },
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "_meta": {
        -        "additionalProperties": false,
        -        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        -        "properties": {
        -          "deliverables": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        -                "properties": {
        -                  "docx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "dxf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "expires_at": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  },
        -                  "pdf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "xlsx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "expires_at"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "document_id": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "issued_at": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "rate_limit_remaining": {
        -            "anyOf": [
        -              {
        -                "minimum": 0,
        -                "type": "integer"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "request_id": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "schema_version": {
        -            "const": "1.0.0",
        -            "default": "1.0.0",
        -            "type": "string"
        -          },
        -          "scope_boundary": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        -                "properties": {
        -                  "not_in_scope": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "produced": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "recommended_companions": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "type": "string"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "produced",
        -                  "not_in_scope"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tier": {
        -            "enum": [
        -              "free",
        -              "paid"
        -            ],
        -            "type": "string"
        -          },
        -          "tier_upgrade": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        -                "properties": {
        -                  "available_tiers": {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        -                      "properties": {
        -                        "billing": {
        -                          "enum": [
        -                            "one_off",
        -                            "monthly",
        -                            "annual"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "currency": {
        -                          "enum": [
        -                            "GBP",
        -                            "SGD",
        -                            "EUR",
        -                            "USD",
        -                            "CAD",
        -                            "AUD",
        -                            "NZD",
        -                            "MYR"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "display_name": {
        -                          "type": "string"
        -                        },
        -                        "price_local": {
        -                          "type": "number"
        -                        },
        -                        "tier_slug": {
        -                          "enum": [
        -                            "7_day_pass",
        -                            "solo",
        -                            "studio",
        -                            "practice"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "unlock_summary": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "tier_slug",
        -                        "display_name",
        -                        "price_local",
        -                        "currency",
        -                        "billing",
        -                        "unlock_summary"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "current_tier": {
        -                    "const": "free",
        -                    "default": "free",
        -                    "type": "string"
        -                  },
        -                  "pass_credit": {
        -                    "anyOf": [
        -                      {
        -                        "additionalProperties": false,
        -                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        -                        "properties": {
        -                          "amount_local": {
        -                            "type": "number"
        -                          },
        -                          "applies_to": {
        -                            "const": "solo_first_month",
        -                            "default": "solo_first_month",
        -                            "type": "string"
        -                          },
        -                          "currency": {
        -                            "type": "string"
        -                          },
        -                          "redeemable_until": {
        -                            "type": "string"
        -                          }
        -                        },
        -                        "required": [
        -                          "amount_local",
        -                          "currency",
        -                          "redeemable_until"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "pricing_url": {
        -                    "default": "https://civilquants.com/pricing",
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "available_tiers"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tos_url": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "upgrade_hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "warranty_disclaimer": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          }
        -        },
        -        "required": [
        -          "request_id",
        -          "issued_at",
        -          "tier"
        -        ],
        -        "type": "object"
        -      },
        -      "data": {
        -        "default": null,
        -        "title": "Data"
        -      },
        -      "error": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        -            "properties": {
        -              "code": {
        -                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        -                "enum": [
        -                  "RATE_LIMIT_EXCEEDED",
        -                  "TIER_INSUFFICIENT",
        -                  "INVALID_INPUT",
        -                  "SCHEMA_VERSION_MISMATCH",
        -                  "SCHEMA_INVARIANT_VIOLATION",
        -                  "UPSTREAM_TIMEOUT",
        -                  "BACKEND_FAILURE",
        -                  "IP_BLOCKED",
        -                  "RESOURCE_NOT_FOUND",
        -                  "RENDER_FAILURE",
        -                  "OCR_LOW_CONFIDENCE",
        -                  "MANUAL_REVIEW_REQUIRED",
        -                  "ACCEPTANCE_REQUIRED",
        -                  "INVALID_TOKEN"
        -                ],
        -                "type": "string"
        -              },
        -              "details": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "message": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "recoverable": {
        -                "type": "boolean"
        -              },
        -              "retry_after_seconds": {
        -                "anyOf": [
        -                  {
        -                    "minimum": 0,
        -                    "type": "integer"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              }
        -            },
        -            "required": [
        -              "code",
        -              "message",
        -              "recoverable"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      }
        -    },
        -    "required": [
        -      "_meta"
        -    ],
        -    "type": "object"
        -  }
        -]New value: +[
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "_meta": {
        +        "additionalProperties": false,
        +        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        +        "properties": {
        +          "deliverables": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        +                "properties": {
        +                  "docx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "dxf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "expires_at": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  },
        +                  "pdf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "xlsx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "expires_at"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "document_id": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "issued_at": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "rate_limit_remaining": {
        +            "anyOf": [
        +              {
        +                "minimum": 0,
        +                "type": "integer"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "request_id": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "schema_version": {
        +            "const": "1.0.0",
        +            "default": "1.0.0",
        +            "type": "string"
        +          },
        +          "scope_boundary": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        +                "properties": {
        +                  "not_in_scope": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "produced": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "recommended_companions": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "type": "string"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "produced",
        +                  "not_in_scope"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tier": {
        +            "enum": [
        +              "free",
        +              "paid"
        +            ],
        +            "type": "string"
        +          },
        +          "tier_upgrade": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        +                "properties": {
        +                  "available_tiers": {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        +                      "properties": {
        +                        "billing": {
        +                          "enum": [
        +                            "one_off",
        +                            "monthly",
        +                            "annual"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "currency": {
        +                          "enum": [
        +                            "GBP",
        +                            "SGD",
        +                            "EUR",
        +                            "USD",
        +                            "CAD",
        +                            "AUD",
        +                            "NZD",
        +                            "MYR"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "display_name": {
        +                          "type": "string"
        +                        },
        +                        "price_local": {
        +                          "type": "number"
        +                        },
        +                        "tier_slug": {
        +                          "enum": [
        +                            "7_day_pass",
        +                            "solo",
        +                            "studio",
        +                            "practice"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "unlock_summary": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "tier_slug",
        +                        "display_name",
        +                        "price_local",
        +                        "currency",
        +                        "billing",
        +                        "unlock_summary"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "current_tier": {
        +                    "const": "free",
        +                    "default": "free",
        +                    "type": "string"
        +                  },
        +                  "pass_credit": {
        +                    "anyOf": [
        +                      {
        +                        "additionalProperties": false,
        +                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        +                        "properties": {
        +                          "amount_local": {
        +                            "type": "number"
        +                          },
        +                          "applies_to": {
        +                            "const": "solo_first_month",
        +                            "default": "solo_first_month",
        +                            "type": "string"
        +                          },
        +                          "currency": {
        +                            "type": "string"
        +                          },
        +                          "redeemable_until": {
        +                            "type": "string"
        +                          }
        +                        },
        +                        "required": [
        +                          "amount_local",
        +                          "currency",
        +                          "redeemable_until"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "pricing_url": {
        +                    "default": "https://civilquants.com/pricing",
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "available_tiers"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tos_url": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "upgrade_hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "warranty_disclaimer": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          }
        +        },
        +        "required": [
        +          "request_id",
        +          "issued_at",
        +          "tier"
        +        ],
        +        "type": "object"
        +      },
        +      "data": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Schema § 1.1 — the typed payload returned inside `MCPResponse[ComputeResult]`.\n\nFree-tier responses omit `drawings` (the downloadable CAD artefact\npointers — the paid differentiator); the bridge enforces this. The\n`audit_trail` and the inline `drawing` preview are present on BOTH tiers\n(V1 ALIGN / 60th-fire D + C). `text_summary` is bounded to 2000 chars —\nkeeps the LLM-facing summary token-cheap and forces longer narrative into\nBoQ row descriptions where it belongs. `warnings` is the non-fatal\ngeometry advisory list (both tiers).",
        +            "properties": {
        +              "assembly_slug": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "audit_trail": {
        +                "anyOf": [
        +                  {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.7 — paid-tier audit-trail entry.\n\nOne entry per BoQ row; `boq_row_index` ties to the row position in\n`ComputeResult.boq_rows`. `derivation` is the human-readable formula\nwalk-through; `formula` is the optional formal expression.",
        +                      "properties": {
        +                        "boq_row_index": {
        +                          "minimum": 0,
        +                          "type": "integer"
        +                        },
        +                        "derivation": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "formula": {
        +                          "anyOf": [
        +                            {
        +                              "type": "string"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ],
        +                          "default": null
        +                        },
        +                        "id": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "parameters_referenced": {
        +                          "items": {
        +                            "type": "string"
        +                          },
        +                          "type": "array"
        +                        }
        +                      },
        +                      "required": [
        +                        "id",
        +                        "boq_row_index",
        +                        "derivation"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "boq_rows": {
        +                "items": {
        +                  "additionalProperties": false,
        +                  "description": "Schema § 1.3 — a single bill row in the requested standard's format.\n\n`description` is the non-verbatim functional description per spec § 13.9 /\n§ 15 invariant — NEVER reproduces a standard's verbatim clause text.\n`rate` / `amount` ship null because rates are commodity data the customer\nowns; the engine's job is the measurement, not the pricing.",
        +                  "properties": {
        +                    "amount": {
        +                      "anyOf": [
        +                        {
        +                          "type": "number"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "attribution": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "audit_id": {
        +                      "anyOf": [
        +                        {
        +                          "type": "string"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "description": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "quantity": {
        +                      "minimum": 0,
        +                      "type": "number"
        +                    },
        +                    "rate": {
        +                      "anyOf": [
        +                        {
        +                          "type": "number"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "unit": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "work_section": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    }
        +                  },
        +                  "required": [
        +                    "work_section",
        +                    "description",
        +                    "quantity",
        +                    "unit",
        +                    "attribution"
        +                  ],
        +                  "type": "object"
        +                },
        +                "type": "array"
        +              },
        +              "drawing": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": false,
        +                    "description": "Schema § 1.6a — inline server-rendered SVG preview of the geometry.\n\nThe MCP mirror of the web ``/compute`` response's ``drawing`` field\n(``api.schemas.compute.DrawingRef``): the same on-screen dimensioned\ndrawing both tiers see in the workspace, surfaced on the MCP compute\nresponse so a chat client can render it inline (60th-fire item C). This\nis the on-screen preview — present on BOTH tiers per the free/paid\nboundary; the downloadable CAD artefacts (DXF / dimensioned PDF) remain\nthe paid differentiator via the export tools.\n\nDefined here rather than importing ``DrawingRef`` because the web\n``schemas`` package imports back into this module (``schemas.render``),\nso reusing it would create an import cycle — the MCP wire contract keeps\nits own copy, the same pattern as ``BoQRow`` / ``DrawingReference``.",
        +                    "properties": {
        +                      "entity_count": {
        +                        "minimum": 0,
        +                        "type": "integer"
        +                      },
        +                      "svg_b64": {
        +                        "minLength": 1,
        +                        "type": "string"
        +                      },
        +                      "unit_of_drawing": {
        +                        "const": "m",
        +                        "default": "m",
        +                        "type": "string"
        +                      },
        +                      "viewbox_height": {
        +                        "exclusiveMinimum": 0,
        +                        "type": "number"
        +                      },
        +                      "viewbox_width": {
        +                        "exclusiveMinimum": 0,
        +                        "type": "number"
        +                      },
        +                      "viewbox_x": {
        +                        "type": "number"
        +                      },
        +                      "viewbox_y": {
        +                        "type": "number"
        +                      }
        +                    },
        +                    "required": [
        +                      "svg_b64",
        +                      "viewbox_x",
        +                      "viewbox_y",
        +                      "viewbox_width",
        +                      "viewbox_height",
        +                      "entity_count"
        +                    ],
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "drawings": {
        +                "anyOf": [
        +                  {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.6 — paid-tier drawing artefact pointer.\n\n`url` is an R2-signed URL; expiry is carried in `_meta.deliverables.expires_at`\non the envelope (not duplicated here). `layers` is DXF-only; PDF/SVG\ncallers omit it.",
        +                      "properties": {
        +                        "drawing_type": {
        +                          "enum": [
        +                            "section",
        +                            "plan",
        +                            "elevation",
        +                            "isometric",
        +                            "detail"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "format": {
        +                          "enum": [
        +                            "DXF",
        +                            "PDF",
        +                            "SVG"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "layers": {
        +                          "anyOf": [
        +                            {
        +                              "items": {
        +                                "type": "string"
        +                              },
        +                              "type": "array"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ],
        +                          "default": null
        +                        },
        +                        "scale": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "sheet_size": {
        +                          "enum": [
        +                            "A1",
        +                            "A2",
        +                            "A3",
        +                            "A4"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "url": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "drawing_type",
        +                        "format",
        +                        "url",
        +                        "sheet_size",
        +                        "scale"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "parameters_used": {
        +                "additionalProperties": false,
        +                "description": "Schema § 1.2 — the parameter snapshot the engine actually used.\n\nSplits user-supplied values from engine defaults so customers can see\nwhich numbers came from them and which the engine filled in. Every\ndefaulted parameter SHOULD have a corresponding entry in `assumptions`\n— the bridge layer enforces this when wrapping engine output.",
        +                "properties": {
        +                  "assumptions": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "engine_defaults": {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  "resolved_from_description": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "additionalProperties": false,
        +                          "description": "Schema § 1.2 — a parameter resolved by the forgiving-input layer.\n\nPopulated by the Track B-Forgiving Haiku-4.5 resolution pass; until that\nlayer lands, instances are constructed only by tests. `source` distinguishes\nthe resolution path so customers can audit which fields were inferred.",
        +                          "properties": {
        +                            "confidence": {
        +                              "anyOf": [
        +                                {
        +                                  "enum": [
        +                                    "high",
        +                                    "medium",
        +                                    "low"
        +                                  ],
        +                                  "type": "string"
        +                                },
        +                                {
        +                                  "type": "null"
        +                                }
        +                              ],
        +                              "default": null
        +                            },
        +                            "field_name": {
        +                              "minLength": 1,
        +                              "type": "string"
        +                            },
        +                            "resolved_value": {},
        +                            "source": {
        +                              "enum": [
        +                                "description_field",
        +                                "haiku_resolution",
        +                                "engine_default"
        +                              ],
        +                              "type": "string"
        +                            }
        +                          },
        +                          "required": [
        +                            "field_name",
        +                            "resolved_value",
        +                            "source"
        +                          ],
        +                          "type": "object"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "user_supplied": {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  }
        +                },
        +                "type": "object"
        +              },
        +              "standard": {
        +                "enum": [
        +                  "CESMM4",
        +                  "NRM2",
        +                  "SMM7",
        +                  "MMHW"
        +                ],
        +                "type": "string"
        +              },
        +              "text_summary": {
        +                "maxLength": 2000,
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "totals_summary": {
        +                "additionalProperties": false,
        +                "description": "Schema § 1.4 — totals_summary as a typed wrapper around the free-form dict.\n\nWire shape is a flat object (`{\"concrete_m3\": {...}, \"rebar_t\": {...}}`).\nWe model it as `RootModel`-equivalent via `model_config(extra=\"allow\")`\n+ a single `__root__`-style `entries` dict. Pydantic v2 recommends\n`RootModel` for free-form roots; using a wrapper class keeps the import\nsurface uniform with the rest of this module.",
        +                "properties": {
        +                  "entries": {
        +                    "additionalProperties": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.4 — single material/work-class total entry.",
        +                      "properties": {
        +                        "quantity": {
        +                          "minimum": 0,
        +                          "type": "number"
        +                        },
        +                        "unit": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "quantity",
        +                        "unit"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "object"
        +                  }
        +                },
        +                "type": "object"
        +              },
        +              "warnings": {
        +                "items": {
        +                  "additionalProperties": false,
        +                  "description": "Schema § 1.8 — a non-fatal geometry advisory (56th-fire T2).\n\nThe wire projection of the engine's `core.GeometryWarning`. Advisory only:\na warning NEVER changes a measured quantity — it flags geometry that is\nvalid but likely a mistake (e.g. a stale dependent-height default). Present\non BOTH tiers — a correctness/safety signal, not a paid feature.",
        +                  "properties": {
        +                    "affected_params": {
        +                      "items": {
        +                        "type": "string"
        +                      },
        +                      "type": "array"
        +                    },
        +                    "code": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "detail": {
        +                      "additionalProperties": {
        +                        "type": "number"
        +                      },
        +                      "type": "object"
        +                    },
        +                    "message": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "severity": {
        +                      "enum": [
        +                        "info",
        +                        "advisory",
        +                        "caution"
        +                      ],
        +                      "type": "string"
        +                    }
        +                  },
        +                  "required": [
        +                    "code",
        +                    "severity",
        +                    "message"
        +                  ],
        +                  "type": "object"
        +                },
        +                "type": "array"
        +              }
        +            },
        +            "required": [
        +              "assembly_slug",
        +              "standard",
        +              "parameters_used",
        +              "boq_rows",
        +              "totals_summary",
        +              "text_summary"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      },
        +      "error": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        +            "properties": {
        +              "code": {
        +                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        +                "enum": [
        +                  "RATE_LIMIT_EXCEEDED",
        +                  "TIER_INSUFFICIENT",
        +                  "INVALID_INPUT",
        +                  "SCHEMA_VERSION_MISMATCH",
        +                  "SCHEMA_INVARIANT_VIOLATION",
        +                  "UPSTREAM_TIMEOUT",
        +                  "BACKEND_FAILURE",
        +                  "IP_BLOCKED",
        +                  "RESOURCE_NOT_FOUND",
        +                  "RENDER_FAILURE",
        +                  "OCR_LOW_CONFIDENCE",
        +                  "MANUAL_REVIEW_REQUIRED",
        +                  "ACCEPTANCE_REQUIRED",
        +                  "INVALID_TOKEN"
        +                ],
        +                "type": "string"
        +              },
        +              "details": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "message": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "recoverable": {
        +                "type": "boolean"
        +              },
        +              "retry_after_seconds": {
        +                "anyOf": [
        +                  {
        +                    "minimum": 0,
        +                    "type": "integer"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              }
        +            },
        +            "required": [
        +              "code",
        +              "message",
        +              "recoverable"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      }
        +    },
        +    "required": [
        +      "_meta"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "_meta": {
        +        "additionalProperties": false,
        +        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        +        "properties": {
        +          "deliverables": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        +                "properties": {
        +                  "docx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "dxf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "expires_at": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  },
        +                  "pdf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "xlsx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "expires_at"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "document_id": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "issued_at": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "rate_limit_remaining": {
        +            "anyOf": [
        +              {
        +                "minimum": 0,
        +                "type": "integer"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "request_id": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "schema_version": {
        +            "const": "1.0.0",
        +            "default": "1.0.0",
        +            "type": "string"
        +          },
        +          "scope_boundary": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        +                "properties": {
        +                  "not_in_scope": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "produced": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "recommended_companions": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "type": "string"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "produced",
        +                  "not_in_scope"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tier": {
        +            "enum": [
        +              "free",
        +              "paid"
        +            ],
        +            "type": "string"
        +          },
        +          "tier_upgrade": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        +                "properties": {
        +                  "available_tiers": {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        +                      "properties": {
        +                        "billing": {
        +                          "enum": [
        +                            "one_off",
        +                            "monthly",
        +                            "annual"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "currency": {
        +                          "enum": [
        +                            "GBP",
        +                            "SGD",
        +                            "EUR",
        +                            "USD",
        +                            "CAD",
        +                            "AUD",
        +                            "NZD",
        +                            "MYR"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "display_name": {
        +                          "type": "string"
        +                        },
        +                        "price_local": {
        +                          "type": "number"
        +                        },
        +                        "tier_slug": {
        +                          "enum": [
        +                            "7_day_pass",
        +                            "solo",
        +                            "studio",
        +                            "practice"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "unlock_summary": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "tier_slug",
        +                        "display_name",
        +                        "price_local",
        +                        "currency",
        +                        "billing",
        +                        "unlock_summary"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "current_tier": {
        +                    "const": "free",
        +                    "default": "free",
        +                    "type": "string"
        +                  },
        +                  "pass_credit": {
        +                    "anyOf": [
        +                      {
        +                        "additionalProperties": false,
        +                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        +                        "properties": {
        +                          "amount_local": {
        +                            "type": "number"
        +                          },
        +                          "applies_to": {
        +                            "const": "solo_first_month",
        +                            "default": "solo_first_month",
        +                            "type": "string"
        +                          },
        +                          "currency": {
        +                            "type": "string"
        +                          },
        +                          "redeemable_until": {
        +                            "type": "string"
        +                          }
        +                        },
        +                        "required": [
        +                          "amount_local",
        +                          "currency",
        +                          "redeemable_until"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "pricing_url": {
        +                    "default": "https://civilquants.com/pricing",
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "available_tiers"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tos_url": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "upgrade_hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "warranty_disclaimer": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          }
        +        },
        +        "required": [
        +          "request_id",
        +          "issued_at",
        +          "tier"
        +        ],
        +        "type": "object"
        +      },
        +      "data": {
        +        "default": null,
        +        "title": "Data"
        +      },
        +      "error": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        +            "properties": {
        +              "code": {
        +                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        +                "enum": [
        +                  "RATE_LIMIT_EXCEEDED",
        +                  "TIER_INSUFFICIENT",
        +                  "INVALID_INPUT",
        +                  "SCHEMA_VERSION_MISMATCH",
        +                  "SCHEMA_INVARIANT_VIOLATION",
        +                  "UPSTREAM_TIMEOUT",
        +                  "BACKEND_FAILURE",
        +                  "IP_BLOCKED",
        +                  "RESOURCE_NOT_FOUND",
        +                  "RENDER_FAILURE",
        +                  "OCR_LOW_CONFIDENCE",
        +                  "MANUAL_REVIEW_REQUIRED",
        +                  "ACCEPTANCE_REQUIRED",
        +                  "INVALID_TOKEN"
        +                ],
        +                "type": "string"
        +              },
        +              "details": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "message": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "recoverable": {
        +                "type": "boolean"
        +              },
        +              "retry_after_seconds": {
        +                "anyOf": [
        +                  {
        +                    "minimum": 0,
        +                    "type": "integer"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              }
        +            },
        +            "required": [
        +              "code",
        +              "message",
        +              "recoverable"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      }
        +    },
        +    "required": [
        +      "_meta"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedcompute_embankment_cross_section3 fields changed
      • addedInput schema / properties / deliverables
        Added value: +{
        +  "anyOf": [
        +    {
        +      "items": {
        +        "const": "xlsx",
        +        "type": "string"
        +      },
        +      "type": "array"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null
        +}
      • addedInput schema / properties / output_mode
        Added value: +{
        +  "default": "full_json",
        +  "enum": [
        +    "summary",
        +    "boq",
        +    "boq_with_backup",
        +    "full_json"
        +  ],
        +  "type": "string"
        +}
      • changedOutput schema / properties / result / anyOf
        Previous value: -[
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "_meta": {
        -        "additionalProperties": false,
        -        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        -        "properties": {
        -          "deliverables": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        -                "properties": {
        -                  "docx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "dxf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "expires_at": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  },
        -                  "pdf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "xlsx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "expires_at"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "document_id": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "issued_at": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "rate_limit_remaining": {
        -            "anyOf": [
        -              {
        -                "minimum": 0,
        -                "type": "integer"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "request_id": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "schema_version": {
        -            "const": "1.0.0",
        -            "default": "1.0.0",
        -            "type": "string"
        -          },
        -          "scope_boundary": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        -                "properties": {
        -                  "not_in_scope": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "produced": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "recommended_companions": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "type": "string"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "produced",
        -                  "not_in_scope"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tier": {
        -            "enum": [
        -              "free",
        -              "paid"
        -            ],
        -            "type": "string"
        -          },
        -          "tier_upgrade": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        -                "properties": {
        -                  "available_tiers": {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        -                      "properties": {
        -                        "billing": {
        -                          "enum": [
        -                            "one_off",
        -                            "monthly",
        -                            "annual"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "currency": {
        -                          "enum": [
        -                            "GBP",
        -                            "SGD",
        -                            "EUR",
        -                            "USD",
        -                            "CAD",
        -                            "AUD",
        -                            "NZD",
        -                            "MYR"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "display_name": {
        -                          "type": "string"
        -                        },
        -                        "price_local": {
        -                          "type": "number"
        -                        },
        -                        "tier_slug": {
        -                          "enum": [
        -                            "7_day_pass",
        -                            "solo",
        -                            "studio",
        -                            "practice"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "unlock_summary": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "tier_slug",
        -                        "display_name",
        -                        "price_local",
        -                        "currency",
        -                        "billing",
        -                        "unlock_summary"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "current_tier": {
        -                    "const": "free",
        -                    "default": "free",
        -                    "type": "string"
        -                  },
        -                  "pass_credit": {
        -                    "anyOf": [
        -                      {
        -                        "additionalProperties": false,
        -                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        -                        "properties": {
        -                          "amount_local": {
        -                            "type": "number"
        -                          },
        -                          "applies_to": {
        -                            "const": "solo_first_month",
        -                            "default": "solo_first_month",
        -                            "type": "string"
        -                          },
        -                          "currency": {
        -                            "type": "string"
        -                          },
        -                          "redeemable_until": {
        -                            "type": "string"
        -                          }
        -                        },
        -                        "required": [
        -                          "amount_local",
        -                          "currency",
        -                          "redeemable_until"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "pricing_url": {
        -                    "default": "https://civilquants.com/pricing",
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "available_tiers"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tos_url": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "upgrade_hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "warranty_disclaimer": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          }
        -        },
        -        "required": [
        -          "request_id",
        -          "issued_at",
        -          "tier"
        -        ],
        -        "type": "object"
        -      },
        -      "data": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Schema § 1.1 — the typed payload returned inside `MCPResponse[ComputeResult]`.\n\nFree-tier responses MUST omit `drawings` and `audit_trail` (the bridge\nenforces this); paid-tier responses populate both. `text_summary` is\nbounded to 2000 chars — keeps the LLM-facing summary token-cheap and\nforces longer narrative into BoQ row descriptions where it belongs.\n`warnings` is the non-fatal geometry advisory list (both tiers).",
        -            "properties": {
        -              "assembly_slug": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "audit_trail": {
        -                "anyOf": [
        -                  {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.7 — paid-tier audit-trail entry.\n\nOne entry per BoQ row; `boq_row_index` ties to the row position in\n`ComputeResult.boq_rows`. `derivation` is the human-readable formula\nwalk-through; `formula` is the optional formal expression.",
        -                      "properties": {
        -                        "boq_row_index": {
        -                          "minimum": 0,
        -                          "type": "integer"
        -                        },
        -                        "derivation": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "formula": {
        -                          "anyOf": [
        -                            {
        -                              "type": "string"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ],
        -                          "default": null
        -                        },
        -                        "id": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "parameters_referenced": {
        -                          "items": {
        -                            "type": "string"
        -                          },
        -                          "type": "array"
        -                        }
        -                      },
        -                      "required": [
        -                        "id",
        -                        "boq_row_index",
        -                        "derivation"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "boq_rows": {
        -                "items": {
        -                  "additionalProperties": false,
        -                  "description": "Schema § 1.3 — a single bill row in the requested standard's format.\n\n`description` is the non-verbatim functional description per spec § 13.9 /\n§ 15 invariant — NEVER reproduces a standard's verbatim clause text.\n`rate` / `amount` ship null because rates are commodity data the customer\nowns; the engine's job is the measurement, not the pricing.",
        -                  "properties": {
        -                    "amount": {
        -                      "anyOf": [
        -                        {
        -                          "type": "number"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "attribution": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "audit_id": {
        -                      "anyOf": [
        -                        {
        -                          "type": "string"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "description": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "quantity": {
        -                      "minimum": 0,
        -                      "type": "number"
        -                    },
        -                    "rate": {
        -                      "anyOf": [
        -                        {
        -                          "type": "number"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "unit": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "work_section": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    }
        -                  },
        -                  "required": [
        -                    "work_section",
        -                    "description",
        -                    "quantity",
        -                    "unit",
        -                    "attribution"
        -                  ],
        -                  "type": "object"
        -                },
        -                "type": "array"
        -              },
        -              "drawings": {
        -                "anyOf": [
        -                  {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.6 — paid-tier drawing artefact pointer.\n\n`url` is an R2-signed URL; expiry is carried in `_meta.deliverables.expires_at`\non the envelope (not duplicated here). `layers` is DXF-only; PDF/SVG\ncallers omit it.",
        -                      "properties": {
        -                        "drawing_type": {
        -                          "enum": [
        -                            "section",
        -                            "plan",
        -                            "elevation",
        -                            "isometric",
        -                            "detail"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "format": {
        -                          "enum": [
        -                            "DXF",
        -                            "PDF",
        -                            "SVG"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "layers": {
        -                          "anyOf": [
        -                            {
        -                              "items": {
        -                                "type": "string"
        -                              },
        -                              "type": "array"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ],
        -                          "default": null
        -                        },
        -                        "scale": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "sheet_size": {
        -                          "enum": [
        -                            "A1",
        -                            "A2",
        -                            "A3",
        -                            "A4"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "url": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "drawing_type",
        -                        "format",
        -                        "url",
        -                        "sheet_size",
        -                        "scale"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "parameters_used": {
        -                "additionalProperties": false,
        -                "description": "Schema § 1.2 — the parameter snapshot the engine actually used.\n\nSplits user-supplied values from engine defaults so customers can see\nwhich numbers came from them and which the engine filled in. Every\ndefaulted parameter SHOULD have a corresponding entry in `assumptions`\n— the bridge layer enforces this when wrapping engine output.",
        -                "properties": {
        -                  "assumptions": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "engine_defaults": {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  "resolved_from_description": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "additionalProperties": false,
        -                          "description": "Schema § 1.2 — a parameter resolved by the forgiving-input layer.\n\nPopulated by the Track B-Forgiving Haiku-4.5 resolution pass; until that\nlayer lands, instances are constructed only by tests. `source` distinguishes\nthe resolution path so customers can audit which fields were inferred.",
        -                          "properties": {
        -                            "confidence": {
        -                              "anyOf": [
        -                                {
        -                                  "enum": [
        -                                    "high",
        -                                    "medium",
        -                                    "low"
        -                                  ],
        -                                  "type": "string"
        -                                },
        -                                {
        -                                  "type": "null"
        -                                }
        -                              ],
        -                              "default": null
        -                            },
        -                            "field_name": {
        -                              "minLength": 1,
        -                              "type": "string"
        -                            },
        -                            "resolved_value": {},
        -                            "source": {
        -                              "enum": [
        -                                "description_field",
        -                                "haiku_resolution",
        -                                "engine_default"
        -                              ],
        -                              "type": "string"
        -                            }
        -                          },
        -                          "required": [
        -                            "field_name",
        -                            "resolved_value",
        -                            "source"
        -                          ],
        -                          "type": "object"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "user_supplied": {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  }
        -                },
        -                "type": "object"
        -              },
        -              "standard": {
        -                "enum": [
        -                  "CESMM4",
        -                  "NRM2",
        -                  "SMM7",
        -                  "MMHW"
        -                ],
        -                "type": "string"
        -              },
        -              "text_summary": {
        -                "maxLength": 2000,
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "totals_summary": {
        -                "additionalProperties": false,
        -                "description": "Schema § 1.4 — totals_summary as a typed wrapper around the free-form dict.\n\nWire shape is a flat object (`{\"concrete_m3\": {...}, \"rebar_t\": {...}}`).\nWe model it as `RootModel`-equivalent via `model_config(extra=\"allow\")`\n+ a single `__root__`-style `entries` dict. Pydantic v2 recommends\n`RootModel` for free-form roots; using a wrapper class keeps the import\nsurface uniform with the rest of this module.",
        -                "properties": {
        -                  "entries": {
        -                    "additionalProperties": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.4 — single material/work-class total entry.",
        -                      "properties": {
        -                        "quantity": {
        -                          "minimum": 0,
        -                          "type": "number"
        -                        },
        -                        "unit": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "quantity",
        -                        "unit"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "object"
        -                  }
        -                },
        -                "type": "object"
        -              },
        -              "warnings": {
        -                "items": {
        -                  "additionalProperties": false,
        -                  "description": "Schema § 1.8 — a non-fatal geometry advisory (56th-fire T2).\n\nThe wire projection of the engine's `core.GeometryWarning`. Advisory only:\na warning NEVER changes a measured quantity — it flags geometry that is\nvalid but likely a mistake (e.g. a stale dependent-height default). Present\non BOTH tiers — a correctness/safety signal, not a paid feature.",
        -                  "properties": {
        -                    "affected_params": {
        -                      "items": {
        -                        "type": "string"
        -                      },
        -                      "type": "array"
        -                    },
        -                    "code": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "detail": {
        -                      "additionalProperties": {
        -                        "type": "number"
        -                      },
        -                      "type": "object"
        -                    },
        -                    "message": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "severity": {
        -                      "enum": [
        -                        "info",
        -                        "advisory",
        -                        "caution"
        -                      ],
        -                      "type": "string"
        -                    }
        -                  },
        -                  "required": [
        -                    "code",
        -                    "severity",
        -                    "message"
        -                  ],
        -                  "type": "object"
        -                },
        -                "type": "array"
        -              }
        -            },
        -            "required": [
        -              "assembly_slug",
        -              "standard",
        -              "parameters_used",
        -              "boq_rows",
        -              "totals_summary",
        -              "text_summary"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      },
        -      "error": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        -            "properties": {
        -              "code": {
        -                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        -                "enum": [
        -                  "RATE_LIMIT_EXCEEDED",
        -                  "TIER_INSUFFICIENT",
        -                  "INVALID_INPUT",
        -                  "SCHEMA_VERSION_MISMATCH",
        -                  "SCHEMA_INVARIANT_VIOLATION",
        -                  "UPSTREAM_TIMEOUT",
        -                  "BACKEND_FAILURE",
        -                  "IP_BLOCKED",
        -                  "RESOURCE_NOT_FOUND",
        -                  "RENDER_FAILURE",
        -                  "OCR_LOW_CONFIDENCE",
        -                  "MANUAL_REVIEW_REQUIRED",
        -                  "ACCEPTANCE_REQUIRED",
        -                  "INVALID_TOKEN"
        -                ],
        -                "type": "string"
        -              },
        -              "details": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "message": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "recoverable": {
        -                "type": "boolean"
        -              },
        -              "retry_after_seconds": {
        -                "anyOf": [
        -                  {
        -                    "minimum": 0,
        -                    "type": "integer"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              }
        -            },
        -            "required": [
        -              "code",
        -              "message",
        -              "recoverable"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      }
        -    },
        -    "required": [
        -      "_meta"
        -    ],
        -    "type": "object"
        -  },
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "_meta": {
        -        "additionalProperties": false,
        -        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        -        "properties": {
        -          "deliverables": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        -                "properties": {
        -                  "docx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "dxf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "expires_at": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  },
        -                  "pdf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "xlsx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "expires_at"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "document_id": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "issued_at": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "rate_limit_remaining": {
        -            "anyOf": [
        -              {
        -                "minimum": 0,
        -                "type": "integer"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "request_id": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "schema_version": {
        -            "const": "1.0.0",
        -            "default": "1.0.0",
        -            "type": "string"
        -          },
        -          "scope_boundary": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        -                "properties": {
        -                  "not_in_scope": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "produced": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "recommended_companions": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "type": "string"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "produced",
        -                  "not_in_scope"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tier": {
        -            "enum": [
        -              "free",
        -              "paid"
        -            ],
        -            "type": "string"
        -          },
        -          "tier_upgrade": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        -                "properties": {
        -                  "available_tiers": {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        -                      "properties": {
        -                        "billing": {
        -                          "enum": [
        -                            "one_off",
        -                            "monthly",
        -                            "annual"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "currency": {
        -                          "enum": [
        -                            "GBP",
        -                            "SGD",
        -                            "EUR",
        -                            "USD",
        -                            "CAD",
        -                            "AUD",
        -                            "NZD",
        -                            "MYR"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "display_name": {
        -                          "type": "string"
        -                        },
        -                        "price_local": {
        -                          "type": "number"
        -                        },
        -                        "tier_slug": {
        -                          "enum": [
        -                            "7_day_pass",
        -                            "solo",
        -                            "studio",
        -                            "practice"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "unlock_summary": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "tier_slug",
        -                        "display_name",
        -                        "price_local",
        -                        "currency",
        -                        "billing",
        -                        "unlock_summary"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "current_tier": {
        -                    "const": "free",
        -                    "default": "free",
        -                    "type": "string"
        -                  },
        -                  "pass_credit": {
        -                    "anyOf": [
        -                      {
        -                        "additionalProperties": false,
        -                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        -                        "properties": {
        -                          "amount_local": {
        -                            "type": "number"
        -                          },
        -                          "applies_to": {
        -                            "const": "solo_first_month",
        -                            "default": "solo_first_month",
        -                            "type": "string"
        -                          },
        -                          "currency": {
        -                            "type": "string"
        -                          },
        -                          "redeemable_until": {
        -                            "type": "string"
        -                          }
        -                        },
        -                        "required": [
        -                          "amount_local",
        -                          "currency",
        -                          "redeemable_until"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "pricing_url": {
        -                    "default": "https://civilquants.com/pricing",
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "available_tiers"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tos_url": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "upgrade_hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "warranty_disclaimer": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          }
        -        },
        -        "required": [
        -          "request_id",
        -          "issued_at",
        -          "tier"
        -        ],
        -        "type": "object"
        -      },
        -      "data": {
        -        "default": null,
        -        "title": "Data"
        -      },
        -      "error": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        -            "properties": {
        -              "code": {
        -                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        -                "enum": [
        -                  "RATE_LIMIT_EXCEEDED",
        -                  "TIER_INSUFFICIENT",
        -                  "INVALID_INPUT",
        -                  "SCHEMA_VERSION_MISMATCH",
        -                  "SCHEMA_INVARIANT_VIOLATION",
        -                  "UPSTREAM_TIMEOUT",
        -                  "BACKEND_FAILURE",
        -                  "IP_BLOCKED",
        -                  "RESOURCE_NOT_FOUND",
        -                  "RENDER_FAILURE",
        -                  "OCR_LOW_CONFIDENCE",
        -                  "MANUAL_REVIEW_REQUIRED",
        -                  "ACCEPTANCE_REQUIRED",
        -                  "INVALID_TOKEN"
        -                ],
        -                "type": "string"
        -              },
        -              "details": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "message": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "recoverable": {
        -                "type": "boolean"
        -              },
        -              "retry_after_seconds": {
        -                "anyOf": [
        -                  {
        -                    "minimum": 0,
        -                    "type": "integer"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              }
        -            },
        -            "required": [
        -              "code",
        -              "message",
        -              "recoverable"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      }
        -    },
        -    "required": [
        -      "_meta"
        -    ],
        -    "type": "object"
        -  }
        -]New value: +[
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "_meta": {
        +        "additionalProperties": false,
        +        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        +        "properties": {
        +          "deliverables": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        +                "properties": {
        +                  "docx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "dxf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "expires_at": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  },
        +                  "pdf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "xlsx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "expires_at"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "document_id": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "issued_at": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "rate_limit_remaining": {
        +            "anyOf": [
        +              {
        +                "minimum": 0,
        +                "type": "integer"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "request_id": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "schema_version": {
        +            "const": "1.0.0",
        +            "default": "1.0.0",
        +            "type": "string"
        +          },
        +          "scope_boundary": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        +                "properties": {
        +                  "not_in_scope": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "produced": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "recommended_companions": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "type": "string"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "produced",
        +                  "not_in_scope"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tier": {
        +            "enum": [
        +              "free",
        +              "paid"
        +            ],
        +            "type": "string"
        +          },
        +          "tier_upgrade": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        +                "properties": {
        +                  "available_tiers": {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        +                      "properties": {
        +                        "billing": {
        +                          "enum": [
        +                            "one_off",
        +                            "monthly",
        +                            "annual"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "currency": {
        +                          "enum": [
        +                            "GBP",
        +                            "SGD",
        +                            "EUR",
        +                            "USD",
        +                            "CAD",
        +                            "AUD",
        +                            "NZD",
        +                            "MYR"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "display_name": {
        +                          "type": "string"
        +                        },
        +                        "price_local": {
        +                          "type": "number"
        +                        },
        +                        "tier_slug": {
        +                          "enum": [
        +                            "7_day_pass",
        +                            "solo",
        +                            "studio",
        +                            "practice"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "unlock_summary": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "tier_slug",
        +                        "display_name",
        +                        "price_local",
        +                        "currency",
        +                        "billing",
        +                        "unlock_summary"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "current_tier": {
        +                    "const": "free",
        +                    "default": "free",
        +                    "type": "string"
        +                  },
        +                  "pass_credit": {
        +                    "anyOf": [
        +                      {
        +                        "additionalProperties": false,
        +                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        +                        "properties": {
        +                          "amount_local": {
        +                            "type": "number"
        +                          },
        +                          "applies_to": {
        +                            "const": "solo_first_month",
        +                            "default": "solo_first_month",
        +                            "type": "string"
        +                          },
        +                          "currency": {
        +                            "type": "string"
        +                          },
        +                          "redeemable_until": {
        +                            "type": "string"
        +                          }
        +                        },
        +                        "required": [
        +                          "amount_local",
        +                          "currency",
        +                          "redeemable_until"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "pricing_url": {
        +                    "default": "https://civilquants.com/pricing",
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "available_tiers"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tos_url": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "upgrade_hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "warranty_disclaimer": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          }
        +        },
        +        "required": [
        +          "request_id",
        +          "issued_at",
        +          "tier"
        +        ],
        +        "type": "object"
        +      },
        +      "data": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Schema § 1.1 — the typed payload returned inside `MCPResponse[ComputeResult]`.\n\nFree-tier responses omit `drawings` (the downloadable CAD artefact\npointers — the paid differentiator); the bridge enforces this. The\n`audit_trail` and the inline `drawing` preview are present on BOTH tiers\n(V1 ALIGN / 60th-fire D + C). `text_summary` is bounded to 2000 chars —\nkeeps the LLM-facing summary token-cheap and forces longer narrative into\nBoQ row descriptions where it belongs. `warnings` is the non-fatal\ngeometry advisory list (both tiers).",
        +            "properties": {
        +              "assembly_slug": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "audit_trail": {
        +                "anyOf": [
        +                  {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.7 — paid-tier audit-trail entry.\n\nOne entry per BoQ row; `boq_row_index` ties to the row position in\n`ComputeResult.boq_rows`. `derivation` is the human-readable formula\nwalk-through; `formula` is the optional formal expression.",
        +                      "properties": {
        +                        "boq_row_index": {
        +                          "minimum": 0,
        +                          "type": "integer"
        +                        },
        +                        "derivation": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "formula": {
        +                          "anyOf": [
        +                            {
        +                              "type": "string"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ],
        +                          "default": null
        +                        },
        +                        "id": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "parameters_referenced": {
        +                          "items": {
        +                            "type": "string"
        +                          },
        +                          "type": "array"
        +                        }
        +                      },
        +                      "required": [
        +                        "id",
        +                        "boq_row_index",
        +                        "derivation"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "boq_rows": {
        +                "items": {
        +                  "additionalProperties": false,
        +                  "description": "Schema § 1.3 — a single bill row in the requested standard's format.\n\n`description` is the non-verbatim functional description per spec § 13.9 /\n§ 15 invariant — NEVER reproduces a standard's verbatim clause text.\n`rate` / `amount` ship null because rates are commodity data the customer\nowns; the engine's job is the measurement, not the pricing.",
        +                  "properties": {
        +                    "amount": {
        +                      "anyOf": [
        +                        {
        +                          "type": "number"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "attribution": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "audit_id": {
        +                      "anyOf": [
        +                        {
        +                          "type": "string"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "description": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "quantity": {
        +                      "minimum": 0,
        +                      "type": "number"
        +                    },
        +                    "rate": {
        +                      "anyOf": [
        +                        {
        +                          "type": "number"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "unit": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "work_section": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    }
        +                  },
        +                  "required": [
        +                    "work_section",
        +                    "description",
        +                    "quantity",
        +                    "unit",
        +                    "attribution"
        +                  ],
        +                  "type": "object"
        +                },
        +                "type": "array"
        +              },
        +              "drawing": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": false,
        +                    "description": "Schema § 1.6a — inline server-rendered SVG preview of the geometry.\n\nThe MCP mirror of the web ``/compute`` response's ``drawing`` field\n(``api.schemas.compute.DrawingRef``): the same on-screen dimensioned\ndrawing both tiers see in the workspace, surfaced on the MCP compute\nresponse so a chat client can render it inline (60th-fire item C). This\nis the on-screen preview — present on BOTH tiers per the free/paid\nboundary; the downloadable CAD artefacts (DXF / dimensioned PDF) remain\nthe paid differentiator via the export tools.\n\nDefined here rather than importing ``DrawingRef`` because the web\n``schemas`` package imports back into this module (``schemas.render``),\nso reusing it would create an import cycle — the MCP wire contract keeps\nits own copy, the same pattern as ``BoQRow`` / ``DrawingReference``.",
        +                    "properties": {
        +                      "entity_count": {
        +                        "minimum": 0,
        +                        "type": "integer"
        +                      },
        +                      "svg_b64": {
        +                        "minLength": 1,
        +                        "type": "string"
        +                      },
        +                      "unit_of_drawing": {
        +                        "const": "m",
        +                        "default": "m",
        +                        "type": "string"
        +                      },
        +                      "viewbox_height": {
        +                        "exclusiveMinimum": 0,
        +                        "type": "number"
        +                      },
        +                      "viewbox_width": {
        +                        "exclusiveMinimum": 0,
        +                        "type": "number"
        +                      },
        +                      "viewbox_x": {
        +                        "type": "number"
        +                      },
        +                      "viewbox_y": {
        +                        "type": "number"
        +                      }
        +                    },
        +                    "required": [
        +                      "svg_b64",
        +                      "viewbox_x",
        +                      "viewbox_y",
        +                      "viewbox_width",
        +                      "viewbox_height",
        +                      "entity_count"
        +                    ],
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "drawings": {
        +                "anyOf": [
        +                  {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.6 — paid-tier drawing artefact pointer.\n\n`url` is an R2-signed URL; expiry is carried in `_meta.deliverables.expires_at`\non the envelope (not duplicated here). `layers` is DXF-only; PDF/SVG\ncallers omit it.",
        +                      "properties": {
        +                        "drawing_type": {
        +                          "enum": [
        +                            "section",
        +                            "plan",
        +                            "elevation",
        +                            "isometric",
        +                            "detail"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "format": {
        +                          "enum": [
        +                            "DXF",
        +                            "PDF",
        +                            "SVG"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "layers": {
        +                          "anyOf": [
        +                            {
        +                              "items": {
        +                                "type": "string"
        +                              },
        +                              "type": "array"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ],
        +                          "default": null
        +                        },
        +                        "scale": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "sheet_size": {
        +                          "enum": [
        +                            "A1",
        +                            "A2",
        +                            "A3",
        +                            "A4"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "url": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "drawing_type",
        +                        "format",
        +                        "url",
        +                        "sheet_size",
        +                        "scale"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "parameters_used": {
        +                "additionalProperties": false,
        +                "description": "Schema § 1.2 — the parameter snapshot the engine actually used.\n\nSplits user-supplied values from engine defaults so customers can see\nwhich numbers came from them and which the engine filled in. Every\ndefaulted parameter SHOULD have a corresponding entry in `assumptions`\n— the bridge layer enforces this when wrapping engine output.",
        +                "properties": {
        +                  "assumptions": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "engine_defaults": {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  "resolved_from_description": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "additionalProperties": false,
        +                          "description": "Schema § 1.2 — a parameter resolved by the forgiving-input layer.\n\nPopulated by the Track B-Forgiving Haiku-4.5 resolution pass; until that\nlayer lands, instances are constructed only by tests. `source` distinguishes\nthe resolution path so customers can audit which fields were inferred.",
        +                          "properties": {
        +                            "confidence": {
        +                              "anyOf": [
        +                                {
        +                                  "enum": [
        +                                    "high",
        +                                    "medium",
        +                                    "low"
        +                                  ],
        +                                  "type": "string"
        +                                },
        +                                {
        +                                  "type": "null"
        +                                }
        +                              ],
        +                              "default": null
        +                            },
        +                            "field_name": {
        +                              "minLength": 1,
        +                              "type": "string"
        +                            },
        +                            "resolved_value": {},
        +                            "source": {
        +                              "enum": [
        +                                "description_field",
        +                                "haiku_resolution",
        +                                "engine_default"
        +                              ],
        +                              "type": "string"
        +                            }
        +                          },
        +                          "required": [
        +                            "field_name",
        +                            "resolved_value",
        +                            "source"
        +                          ],
        +                          "type": "object"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "user_supplied": {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  }
        +                },
        +                "type": "object"
        +              },
        +              "standard": {
        +                "enum": [
        +                  "CESMM4",
        +                  "NRM2",
        +                  "SMM7",
        +                  "MMHW"
        +                ],
        +                "type": "string"
        +              },
        +              "text_summary": {
        +                "maxLength": 2000,
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "totals_summary": {
        +                "additionalProperties": false,
        +                "description": "Schema § 1.4 — totals_summary as a typed wrapper around the free-form dict.\n\nWire shape is a flat object (`{\"concrete_m3\": {...}, \"rebar_t\": {...}}`).\nWe model it as `RootModel`-equivalent via `model_config(extra=\"allow\")`\n+ a single `__root__`-style `entries` dict. Pydantic v2 recommends\n`RootModel` for free-form roots; using a wrapper class keeps the import\nsurface uniform with the rest of this module.",
        +                "properties": {
        +                  "entries": {
        +                    "additionalProperties": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.4 — single material/work-class total entry.",
        +                      "properties": {
        +                        "quantity": {
        +                          "minimum": 0,
        +                          "type": "number"
        +                        },
        +                        "unit": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "quantity",
        +                        "unit"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "object"
        +                  }
        +                },
        +                "type": "object"
        +              },
        +              "warnings": {
        +                "items": {
        +                  "additionalProperties": false,
        +                  "description": "Schema § 1.8 — a non-fatal geometry advisory (56th-fire T2).\n\nThe wire projection of the engine's `core.GeometryWarning`. Advisory only:\na warning NEVER changes a measured quantity — it flags geometry that is\nvalid but likely a mistake (e.g. a stale dependent-height default). Present\non BOTH tiers — a correctness/safety signal, not a paid feature.",
        +                  "properties": {
        +                    "affected_params": {
        +                      "items": {
        +                        "type": "string"
        +                      },
        +                      "type": "array"
        +                    },
        +                    "code": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "detail": {
        +                      "additionalProperties": {
        +                        "type": "number"
        +                      },
        +                      "type": "object"
        +                    },
        +                    "message": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "severity": {
        +                      "enum": [
        +                        "info",
        +                        "advisory",
        +                        "caution"
        +                      ],
        +                      "type": "string"
        +                    }
        +                  },
        +                  "required": [
        +                    "code",
        +                    "severity",
        +                    "message"
        +                  ],
        +                  "type": "object"
        +                },
        +                "type": "array"
        +              }
        +            },
        +            "required": [
        +              "assembly_slug",
        +              "standard",
        +              "parameters_used",
        +              "boq_rows",
        +              "totals_summary",
        +              "text_summary"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      },
        +      "error": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        +            "properties": {
        +              "code": {
        +                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        +                "enum": [
        +                  "RATE_LIMIT_EXCEEDED",
        +                  "TIER_INSUFFICIENT",
        +                  "INVALID_INPUT",
        +                  "SCHEMA_VERSION_MISMATCH",
        +                  "SCHEMA_INVARIANT_VIOLATION",
        +                  "UPSTREAM_TIMEOUT",
        +                  "BACKEND_FAILURE",
        +                  "IP_BLOCKED",
        +                  "RESOURCE_NOT_FOUND",
        +                  "RENDER_FAILURE",
        +                  "OCR_LOW_CONFIDENCE",
        +                  "MANUAL_REVIEW_REQUIRED",
        +                  "ACCEPTANCE_REQUIRED",
        +                  "INVALID_TOKEN"
        +                ],
        +                "type": "string"
        +              },
        +              "details": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "message": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "recoverable": {
        +                "type": "boolean"
        +              },
        +              "retry_after_seconds": {
        +                "anyOf": [
        +                  {
        +                    "minimum": 0,
        +                    "type": "integer"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              }
        +            },
        +            "required": [
        +              "code",
        +              "message",
        +              "recoverable"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      }
        +    },
        +    "required": [
        +      "_meta"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "_meta": {
        +        "additionalProperties": false,
        +        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        +        "properties": {
        +          "deliverables": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        +                "properties": {
        +                  "docx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "dxf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "expires_at": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  },
        +                  "pdf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "xlsx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "expires_at"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "document_id": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "issued_at": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "rate_limit_remaining": {
        +            "anyOf": [
        +              {
        +                "minimum": 0,
        +                "type": "integer"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "request_id": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "schema_version": {
        +            "const": "1.0.0",
        +            "default": "1.0.0",
        +            "type": "string"
        +          },
        +          "scope_boundary": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        +                "properties": {
        +                  "not_in_scope": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "produced": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "recommended_companions": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "type": "string"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "produced",
        +                  "not_in_scope"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tier": {
        +            "enum": [
        +              "free",
        +              "paid"
        +            ],
        +            "type": "string"
        +          },
        +          "tier_upgrade": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        +                "properties": {
        +                  "available_tiers": {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        +                      "properties": {
        +                        "billing": {
        +                          "enum": [
        +                            "one_off",
        +                            "monthly",
        +                            "annual"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "currency": {
        +                          "enum": [
        +                            "GBP",
        +                            "SGD",
        +                            "EUR",
        +                            "USD",
        +                            "CAD",
        +                            "AUD",
        +                            "NZD",
        +                            "MYR"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "display_name": {
        +                          "type": "string"
        +                        },
        +                        "price_local": {
        +                          "type": "number"
        +                        },
        +                        "tier_slug": {
        +                          "enum": [
        +                            "7_day_pass",
        +                            "solo",
        +                            "studio",
        +                            "practice"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "unlock_summary": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "tier_slug",
        +                        "display_name",
        +                        "price_local",
        +                        "currency",
        +                        "billing",
        +                        "unlock_summary"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "current_tier": {
        +                    "const": "free",
        +                    "default": "free",
        +                    "type": "string"
        +                  },
        +                  "pass_credit": {
        +                    "anyOf": [
        +                      {
        +                        "additionalProperties": false,
        +                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        +                        "properties": {
        +                          "amount_local": {
        +                            "type": "number"
        +                          },
        +                          "applies_to": {
        +                            "const": "solo_first_month",
        +                            "default": "solo_first_month",
        +                            "type": "string"
        +                          },
        +                          "currency": {
        +                            "type": "string"
        +                          },
        +                          "redeemable_until": {
        +                            "type": "string"
        +                          }
        +                        },
        +                        "required": [
        +                          "amount_local",
        +                          "currency",
        +                          "redeemable_until"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "pricing_url": {
        +                    "default": "https://civilquants.com/pricing",
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "available_tiers"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tos_url": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "upgrade_hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "warranty_disclaimer": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          }
        +        },
        +        "required": [
        +          "request_id",
        +          "issued_at",
        +          "tier"
        +        ],
        +        "type": "object"
        +      },
        +      "data": {
        +        "default": null,
        +        "title": "Data"
        +      },
        +      "error": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        +            "properties": {
        +              "code": {
        +                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        +                "enum": [
        +                  "RATE_LIMIT_EXCEEDED",
        +                  "TIER_INSUFFICIENT",
        +                  "INVALID_INPUT",
        +                  "SCHEMA_VERSION_MISMATCH",
        +                  "SCHEMA_INVARIANT_VIOLATION",
        +                  "UPSTREAM_TIMEOUT",
        +                  "BACKEND_FAILURE",
        +                  "IP_BLOCKED",
        +                  "RESOURCE_NOT_FOUND",
        +                  "RENDER_FAILURE",
        +                  "OCR_LOW_CONFIDENCE",
        +                  "MANUAL_REVIEW_REQUIRED",
        +                  "ACCEPTANCE_REQUIRED",
        +                  "INVALID_TOKEN"
        +                ],
        +                "type": "string"
        +              },
        +              "details": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "message": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "recoverable": {
        +                "type": "boolean"
        +              },
        +              "retry_after_seconds": {
        +                "anyOf": [
        +                  {
        +                    "minimum": 0,
        +                    "type": "integer"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              }
        +            },
        +            "required": [
        +              "code",
        +              "message",
        +              "recoverable"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      }
        +    },
        +    "required": [
        +      "_meta"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedcompute_end_area_earthworks3 fields changed
      • addedInput schema / properties / deliverables
        Added value: +{
        +  "anyOf": [
        +    {
        +      "items": {
        +        "const": "xlsx",
        +        "type": "string"
        +      },
        +      "type": "array"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null
        +}
      • addedInput schema / properties / output_mode
        Added value: +{
        +  "default": "full_json",
        +  "enum": [
        +    "summary",
        +    "boq",
        +    "boq_with_backup",
        +    "full_json"
        +  ],
        +  "type": "string"
        +}
      • changedOutput schema / properties / result / anyOf
        Previous value: -[
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "_meta": {
        -        "additionalProperties": false,
        -        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        -        "properties": {
        -          "deliverables": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        -                "properties": {
        -                  "docx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "dxf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "expires_at": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  },
        -                  "pdf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "xlsx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "expires_at"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "document_id": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "issued_at": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "rate_limit_remaining": {
        -            "anyOf": [
        -              {
        -                "minimum": 0,
        -                "type": "integer"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "request_id": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "schema_version": {
        -            "const": "1.0.0",
        -            "default": "1.0.0",
        -            "type": "string"
        -          },
        -          "scope_boundary": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        -                "properties": {
        -                  "not_in_scope": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "produced": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "recommended_companions": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "type": "string"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "produced",
        -                  "not_in_scope"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tier": {
        -            "enum": [
        -              "free",
        -              "paid"
        -            ],
        -            "type": "string"
        -          },
        -          "tier_upgrade": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        -                "properties": {
        -                  "available_tiers": {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        -                      "properties": {
        -                        "billing": {
        -                          "enum": [
        -                            "one_off",
        -                            "monthly",
        -                            "annual"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "currency": {
        -                          "enum": [
        -                            "GBP",
        -                            "SGD",
        -                            "EUR",
        -                            "USD",
        -                            "CAD",
        -                            "AUD",
        -                            "NZD",
        -                            "MYR"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "display_name": {
        -                          "type": "string"
        -                        },
        -                        "price_local": {
        -                          "type": "number"
        -                        },
        -                        "tier_slug": {
        -                          "enum": [
        -                            "7_day_pass",
        -                            "solo",
        -                            "studio",
        -                            "practice"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "unlock_summary": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "tier_slug",
        -                        "display_name",
        -                        "price_local",
        -                        "currency",
        -                        "billing",
        -                        "unlock_summary"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "current_tier": {
        -                    "const": "free",
        -                    "default": "free",
        -                    "type": "string"
        -                  },
        -                  "pass_credit": {
        -                    "anyOf": [
        -                      {
        -                        "additionalProperties": false,
        -                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        -                        "properties": {
        -                          "amount_local": {
        -                            "type": "number"
        -                          },
        -                          "applies_to": {
        -                            "const": "solo_first_month",
        -                            "default": "solo_first_month",
        -                            "type": "string"
        -                          },
        -                          "currency": {
        -                            "type": "string"
        -                          },
        -                          "redeemable_until": {
        -                            "type": "string"
        -                          }
        -                        },
        -                        "required": [
        -                          "amount_local",
        -                          "currency",
        -                          "redeemable_until"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "pricing_url": {
        -                    "default": "https://civilquants.com/pricing",
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "available_tiers"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tos_url": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "upgrade_hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "warranty_disclaimer": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          }
        -        },
        -        "required": [
        -          "request_id",
        -          "issued_at",
        -          "tier"
        -        ],
        -        "type": "object"
        -      },
        -      "data": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Schema § 1.1 — the typed payload returned inside `MCPResponse[ComputeResult]`.\n\nFree-tier responses MUST omit `drawings` and `audit_trail` (the bridge\nenforces this); paid-tier responses populate both. `text_summary` is\nbounded to 2000 chars — keeps the LLM-facing summary token-cheap and\nforces longer narrative into BoQ row descriptions where it belongs.\n`warnings` is the non-fatal geometry advisory list (both tiers).",
        -            "properties": {
        -              "assembly_slug": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "audit_trail": {
        -                "anyOf": [
        -                  {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.7 — paid-tier audit-trail entry.\n\nOne entry per BoQ row; `boq_row_index` ties to the row position in\n`ComputeResult.boq_rows`. `derivation` is the human-readable formula\nwalk-through; `formula` is the optional formal expression.",
        -                      "properties": {
        -                        "boq_row_index": {
        -                          "minimum": 0,
        -                          "type": "integer"
        -                        },
        -                        "derivation": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "formula": {
        -                          "anyOf": [
        -                            {
        -                              "type": "string"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ],
        -                          "default": null
        -                        },
        -                        "id": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "parameters_referenced": {
        -                          "items": {
        -                            "type": "string"
        -                          },
        -                          "type": "array"
        -                        }
        -                      },
        -                      "required": [
        -                        "id",
        -                        "boq_row_index",
        -                        "derivation"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "boq_rows": {
        -                "items": {
        -                  "additionalProperties": false,
        -                  "description": "Schema § 1.3 — a single bill row in the requested standard's format.\n\n`description` is the non-verbatim functional description per spec § 13.9 /\n§ 15 invariant — NEVER reproduces a standard's verbatim clause text.\n`rate` / `amount` ship null because rates are commodity data the customer\nowns; the engine's job is the measurement, not the pricing.",
        -                  "properties": {
        -                    "amount": {
        -                      "anyOf": [
        -                        {
        -                          "type": "number"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "attribution": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "audit_id": {
        -                      "anyOf": [
        -                        {
        -                          "type": "string"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "description": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "quantity": {
        -                      "minimum": 0,
        -                      "type": "number"
        -                    },
        -                    "rate": {
        -                      "anyOf": [
        -                        {
        -                          "type": "number"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "unit": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "work_section": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    }
        -                  },
        -                  "required": [
        -                    "work_section",
        -                    "description",
        -                    "quantity",
        -                    "unit",
        -                    "attribution"
        -                  ],
        -                  "type": "object"
        -                },
        -                "type": "array"
        -              },
        -              "drawings": {
        -                "anyOf": [
        -                  {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.6 — paid-tier drawing artefact pointer.\n\n`url` is an R2-signed URL; expiry is carried in `_meta.deliverables.expires_at`\non the envelope (not duplicated here). `layers` is DXF-only; PDF/SVG\ncallers omit it.",
        -                      "properties": {
        -                        "drawing_type": {
        -                          "enum": [
        -                            "section",
        -                            "plan",
        -                            "elevation",
        -                            "isometric",
        -                            "detail"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "format": {
        -                          "enum": [
        -                            "DXF",
        -                            "PDF",
        -                            "SVG"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "layers": {
        -                          "anyOf": [
        -                            {
        -                              "items": {
        -                                "type": "string"
        -                              },
        -                              "type": "array"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ],
        -                          "default": null
        -                        },
        -                        "scale": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "sheet_size": {
        -                          "enum": [
        -                            "A1",
        -                            "A2",
        -                            "A3",
        -                            "A4"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "url": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "drawing_type",
        -                        "format",
        -                        "url",
        -                        "sheet_size",
        -                        "scale"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "parameters_used": {
        -                "additionalProperties": false,
        -                "description": "Schema § 1.2 — the parameter snapshot the engine actually used.\n\nSplits user-supplied values from engine defaults so customers can see\nwhich numbers came from them and which the engine filled in. Every\ndefaulted parameter SHOULD have a corresponding entry in `assumptions`\n— the bridge layer enforces this when wrapping engine output.",
        -                "properties": {
        -                  "assumptions": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "engine_defaults": {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  "resolved_from_description": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "additionalProperties": false,
        -                          "description": "Schema § 1.2 — a parameter resolved by the forgiving-input layer.\n\nPopulated by the Track B-Forgiving Haiku-4.5 resolution pass; until that\nlayer lands, instances are constructed only by tests. `source` distinguishes\nthe resolution path so customers can audit which fields were inferred.",
        -                          "properties": {
        -                            "confidence": {
        -                              "anyOf": [
        -                                {
        -                                  "enum": [
        -                                    "high",
        -                                    "medium",
        -                                    "low"
        -                                  ],
        -                                  "type": "string"
        -                                },
        -                                {
        -                                  "type": "null"
        -                                }
        -                              ],
        -                              "default": null
        -                            },
        -                            "field_name": {
        -                              "minLength": 1,
        -                              "type": "string"
        -                            },
        -                            "resolved_value": {},
        -                            "source": {
        -                              "enum": [
        -                                "description_field",
        -                                "haiku_resolution",
        -                                "engine_default"
        -                              ],
        -                              "type": "string"
        -                            }
        -                          },
        -                          "required": [
        -                            "field_name",
        -                            "resolved_value",
        -                            "source"
        -                          ],
        -                          "type": "object"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "user_supplied": {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  }
        -                },
        -                "type": "object"
        -              },
        -              "standard": {
        -                "enum": [
        -                  "CESMM4",
        -                  "NRM2",
        -                  "SMM7",
        -                  "MMHW"
        -                ],
        -                "type": "string"
        -              },
        -              "text_summary": {
        -                "maxLength": 2000,
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "totals_summary": {
        -                "additionalProperties": false,
        -                "description": "Schema § 1.4 — totals_summary as a typed wrapper around the free-form dict.\n\nWire shape is a flat object (`{\"concrete_m3\": {...}, \"rebar_t\": {...}}`).\nWe model it as `RootModel`-equivalent via `model_config(extra=\"allow\")`\n+ a single `__root__`-style `entries` dict. Pydantic v2 recommends\n`RootModel` for free-form roots; using a wrapper class keeps the import\nsurface uniform with the rest of this module.",
        -                "properties": {
        -                  "entries": {
        -                    "additionalProperties": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.4 — single material/work-class total entry.",
        -                      "properties": {
        -                        "quantity": {
        -                          "minimum": 0,
        -                          "type": "number"
        -                        },
        -                        "unit": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "quantity",
        -                        "unit"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "object"
        -                  }
        -                },
        -                "type": "object"
        -              },
        -              "warnings": {
        -                "items": {
        -                  "additionalProperties": false,
        -                  "description": "Schema § 1.8 — a non-fatal geometry advisory (56th-fire T2).\n\nThe wire projection of the engine's `core.GeometryWarning`. Advisory only:\na warning NEVER changes a measured quantity — it flags geometry that is\nvalid but likely a mistake (e.g. a stale dependent-height default). Present\non BOTH tiers — a correctness/safety signal, not a paid feature.",
        -                  "properties": {
        -                    "affected_params": {
        -                      "items": {
        -                        "type": "string"
        -                      },
        -                      "type": "array"
        -                    },
        -                    "code": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "detail": {
        -                      "additionalProperties": {
        -                        "type": "number"
        -                      },
        -                      "type": "object"
        -                    },
        -                    "message": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "severity": {
        -                      "enum": [
        -                        "info",
        -                        "advisory",
        -                        "caution"
        -                      ],
        -                      "type": "string"
        -                    }
        -                  },
        -                  "required": [
        -                    "code",
        -                    "severity",
        -                    "message"
        -                  ],
        -                  "type": "object"
        -                },
        -                "type": "array"
        -              }
        -            },
        -            "required": [
        -              "assembly_slug",
        -              "standard",
        -              "parameters_used",
        -              "boq_rows",
        -              "totals_summary",
        -              "text_summary"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      },
        -      "error": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        -            "properties": {
        -              "code": {
        -                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        -                "enum": [
        -                  "RATE_LIMIT_EXCEEDED",
        -                  "TIER_INSUFFICIENT",
        -                  "INVALID_INPUT",
        -                  "SCHEMA_VERSION_MISMATCH",
        -                  "SCHEMA_INVARIANT_VIOLATION",
        -                  "UPSTREAM_TIMEOUT",
        -                  "BACKEND_FAILURE",
        -                  "IP_BLOCKED",
        -                  "RESOURCE_NOT_FOUND",
        -                  "RENDER_FAILURE",
        -                  "OCR_LOW_CONFIDENCE",
        -                  "MANUAL_REVIEW_REQUIRED",
        -                  "ACCEPTANCE_REQUIRED",
        -                  "INVALID_TOKEN"
        -                ],
        -                "type": "string"
        -              },
        -              "details": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "message": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "recoverable": {
        -                "type": "boolean"
        -              },
        -              "retry_after_seconds": {
        -                "anyOf": [
        -                  {
        -                    "minimum": 0,
        -                    "type": "integer"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              }
        -            },
        -            "required": [
        -              "code",
        -              "message",
        -              "recoverable"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      }
        -    },
        -    "required": [
        -      "_meta"
        -    ],
        -    "type": "object"
        -  },
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "_meta": {
        -        "additionalProperties": false,
        -        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        -        "properties": {
        -          "deliverables": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        -                "properties": {
        -                  "docx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "dxf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "expires_at": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  },
        -                  "pdf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "xlsx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "expires_at"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "document_id": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "issued_at": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "rate_limit_remaining": {
        -            "anyOf": [
        -              {
        -                "minimum": 0,
        -                "type": "integer"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "request_id": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "schema_version": {
        -            "const": "1.0.0",
        -            "default": "1.0.0",
        -            "type": "string"
        -          },
        -          "scope_boundary": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        -                "properties": {
        -                  "not_in_scope": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "produced": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "recommended_companions": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "type": "string"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "produced",
        -                  "not_in_scope"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tier": {
        -            "enum": [
        -              "free",
        -              "paid"
        -            ],
        -            "type": "string"
        -          },
        -          "tier_upgrade": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        -                "properties": {
        -                  "available_tiers": {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        -                      "properties": {
        -                        "billing": {
        -                          "enum": [
        -                            "one_off",
        -                            "monthly",
        -                            "annual"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "currency": {
        -                          "enum": [
        -                            "GBP",
        -                            "SGD",
        -                            "EUR",
        -                            "USD",
        -                            "CAD",
        -                            "AUD",
        -                            "NZD",
        -                            "MYR"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "display_name": {
        -                          "type": "string"
        -                        },
        -                        "price_local": {
        -                          "type": "number"
        -                        },
        -                        "tier_slug": {
        -                          "enum": [
        -                            "7_day_pass",
        -                            "solo",
        -                            "studio",
        -                            "practice"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "unlock_summary": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "tier_slug",
        -                        "display_name",
        -                        "price_local",
        -                        "currency",
        -                        "billing",
        -                        "unlock_summary"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "current_tier": {
        -                    "const": "free",
        -                    "default": "free",
        -                    "type": "string"
        -                  },
        -                  "pass_credit": {
        -                    "anyOf": [
        -                      {
        -                        "additionalProperties": false,
        -                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        -                        "properties": {
        -                          "amount_local": {
        -                            "type": "number"
        -                          },
        -                          "applies_to": {
        -                            "const": "solo_first_month",
        -                            "default": "solo_first_month",
        -                            "type": "string"
        -                          },
        -                          "currency": {
        -                            "type": "string"
        -                          },
        -                          "redeemable_until": {
        -                            "type": "string"
        -                          }
        -                        },
        -                        "required": [
        -                          "amount_local",
        -                          "currency",
        -                          "redeemable_until"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "pricing_url": {
        -                    "default": "https://civilquants.com/pricing",
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "available_tiers"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tos_url": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "upgrade_hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "warranty_disclaimer": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          }
        -        },
        -        "required": [
        -          "request_id",
        -          "issued_at",
        -          "tier"
        -        ],
        -        "type": "object"
        -      },
        -      "data": {
        -        "default": null,
        -        "title": "Data"
        -      },
        -      "error": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        -            "properties": {
        -              "code": {
        -                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        -                "enum": [
        -                  "RATE_LIMIT_EXCEEDED",
        -                  "TIER_INSUFFICIENT",
        -                  "INVALID_INPUT",
        -                  "SCHEMA_VERSION_MISMATCH",
        -                  "SCHEMA_INVARIANT_VIOLATION",
        -                  "UPSTREAM_TIMEOUT",
        -                  "BACKEND_FAILURE",
        -                  "IP_BLOCKED",
        -                  "RESOURCE_NOT_FOUND",
        -                  "RENDER_FAILURE",
        -                  "OCR_LOW_CONFIDENCE",
        -                  "MANUAL_REVIEW_REQUIRED",
        -                  "ACCEPTANCE_REQUIRED",
        -                  "INVALID_TOKEN"
        -                ],
        -                "type": "string"
        -              },
        -              "details": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "message": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "recoverable": {
        -                "type": "boolean"
        -              },
        -              "retry_after_seconds": {
        -                "anyOf": [
        -                  {
        -                    "minimum": 0,
        -                    "type": "integer"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              }
        -            },
        -            "required": [
        -              "code",
        -              "message",
        -              "recoverable"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      }
        -    },
        -    "required": [
        -      "_meta"
        -    ],
        -    "type": "object"
        -  }
        -]New value: +[
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "_meta": {
        +        "additionalProperties": false,
        +        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        +        "properties": {
        +          "deliverables": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        +                "properties": {
        +                  "docx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "dxf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "expires_at": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  },
        +                  "pdf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "xlsx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "expires_at"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "document_id": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "issued_at": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "rate_limit_remaining": {
        +            "anyOf": [
        +              {
        +                "minimum": 0,
        +                "type": "integer"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "request_id": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "schema_version": {
        +            "const": "1.0.0",
        +            "default": "1.0.0",
        +            "type": "string"
        +          },
        +          "scope_boundary": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        +                "properties": {
        +                  "not_in_scope": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "produced": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "recommended_companions": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "type": "string"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "produced",
        +                  "not_in_scope"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tier": {
        +            "enum": [
        +              "free",
        +              "paid"
        +            ],
        +            "type": "string"
        +          },
        +          "tier_upgrade": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        +                "properties": {
        +                  "available_tiers": {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        +                      "properties": {
        +                        "billing": {
        +                          "enum": [
        +                            "one_off",
        +                            "monthly",
        +                            "annual"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "currency": {
        +                          "enum": [
        +                            "GBP",
        +                            "SGD",
        +                            "EUR",
        +                            "USD",
        +                            "CAD",
        +                            "AUD",
        +                            "NZD",
        +                            "MYR"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "display_name": {
        +                          "type": "string"
        +                        },
        +                        "price_local": {
        +                          "type": "number"
        +                        },
        +                        "tier_slug": {
        +                          "enum": [
        +                            "7_day_pass",
        +                            "solo",
        +                            "studio",
        +                            "practice"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "unlock_summary": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "tier_slug",
        +                        "display_name",
        +                        "price_local",
        +                        "currency",
        +                        "billing",
        +                        "unlock_summary"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "current_tier": {
        +                    "const": "free",
        +                    "default": "free",
        +                    "type": "string"
        +                  },
        +                  "pass_credit": {
        +                    "anyOf": [
        +                      {
        +                        "additionalProperties": false,
        +                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        +                        "properties": {
        +                          "amount_local": {
        +                            "type": "number"
        +                          },
        +                          "applies_to": {
        +                            "const": "solo_first_month",
        +                            "default": "solo_first_month",
        +                            "type": "string"
        +                          },
        +                          "currency": {
        +                            "type": "string"
        +                          },
        +                          "redeemable_until": {
        +                            "type": "string"
        +                          }
        +                        },
        +                        "required": [
        +                          "amount_local",
        +                          "currency",
        +                          "redeemable_until"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "pricing_url": {
        +                    "default": "https://civilquants.com/pricing",
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "available_tiers"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tos_url": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "upgrade_hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "warranty_disclaimer": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          }
        +        },
        +        "required": [
        +          "request_id",
        +          "issued_at",
        +          "tier"
        +        ],
        +        "type": "object"
        +      },
        +      "data": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Schema § 1.1 — the typed payload returned inside `MCPResponse[ComputeResult]`.\n\nFree-tier responses omit `drawings` (the downloadable CAD artefact\npointers — the paid differentiator); the bridge enforces this. The\n`audit_trail` and the inline `drawing` preview are present on BOTH tiers\n(V1 ALIGN / 60th-fire D + C). `text_summary` is bounded to 2000 chars —\nkeeps the LLM-facing summary token-cheap and forces longer narrative into\nBoQ row descriptions where it belongs. `warnings` is the non-fatal\ngeometry advisory list (both tiers).",
        +            "properties": {
        +              "assembly_slug": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "audit_trail": {
        +                "anyOf": [
        +                  {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.7 — paid-tier audit-trail entry.\n\nOne entry per BoQ row; `boq_row_index` ties to the row position in\n`ComputeResult.boq_rows`. `derivation` is the human-readable formula\nwalk-through; `formula` is the optional formal expression.",
        +                      "properties": {
        +                        "boq_row_index": {
        +                          "minimum": 0,
        +                          "type": "integer"
        +                        },
        +                        "derivation": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "formula": {
        +                          "anyOf": [
        +                            {
        +                              "type": "string"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ],
        +                          "default": null
        +                        },
        +                        "id": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "parameters_referenced": {
        +                          "items": {
        +                            "type": "string"
        +                          },
        +                          "type": "array"
        +                        }
        +                      },
        +                      "required": [
        +                        "id",
        +                        "boq_row_index",
        +                        "derivation"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "boq_rows": {
        +                "items": {
        +                  "additionalProperties": false,
        +                  "description": "Schema § 1.3 — a single bill row in the requested standard's format.\n\n`description` is the non-verbatim functional description per spec § 13.9 /\n§ 15 invariant — NEVER reproduces a standard's verbatim clause text.\n`rate` / `amount` ship null because rates are commodity data the customer\nowns; the engine's job is the measurement, not the pricing.",
        +                  "properties": {
        +                    "amount": {
        +                      "anyOf": [
        +                        {
        +                          "type": "number"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "attribution": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "audit_id": {
        +                      "anyOf": [
        +                        {
        +                          "type": "string"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "description": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "quantity": {
        +                      "minimum": 0,
        +                      "type": "number"
        +                    },
        +                    "rate": {
        +                      "anyOf": [
        +                        {
        +                          "type": "number"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "unit": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "work_section": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    }
        +                  },
        +                  "required": [
        +                    "work_section",
        +                    "description",
        +                    "quantity",
        +                    "unit",
        +                    "attribution"
        +                  ],
        +                  "type": "object"
        +                },
        +                "type": "array"
        +              },
        +              "drawing": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": false,
        +                    "description": "Schema § 1.6a — inline server-rendered SVG preview of the geometry.\n\nThe MCP mirror of the web ``/compute`` response's ``drawing`` field\n(``api.schemas.compute.DrawingRef``): the same on-screen dimensioned\ndrawing both tiers see in the workspace, surfaced on the MCP compute\nresponse so a chat client can render it inline (60th-fire item C). This\nis the on-screen preview — present on BOTH tiers per the free/paid\nboundary; the downloadable CAD artefacts (DXF / dimensioned PDF) remain\nthe paid differentiator via the export tools.\n\nDefined here rather than importing ``DrawingRef`` because the web\n``schemas`` package imports back into this module (``schemas.render``),\nso reusing it would create an import cycle — the MCP wire contract keeps\nits own copy, the same pattern as ``BoQRow`` / ``DrawingReference``.",
        +                    "properties": {
        +                      "entity_count": {
        +                        "minimum": 0,
        +                        "type": "integer"
        +                      },
        +                      "svg_b64": {
        +                        "minLength": 1,
        +                        "type": "string"
        +                      },
        +                      "unit_of_drawing": {
        +                        "const": "m",
        +                        "default": "m",
        +                        "type": "string"
        +                      },
        +                      "viewbox_height": {
        +                        "exclusiveMinimum": 0,
        +                        "type": "number"
        +                      },
        +                      "viewbox_width": {
        +                        "exclusiveMinimum": 0,
        +                        "type": "number"
        +                      },
        +                      "viewbox_x": {
        +                        "type": "number"
        +                      },
        +                      "viewbox_y": {
        +                        "type": "number"
        +                      }
        +                    },
        +                    "required": [
        +                      "svg_b64",
        +                      "viewbox_x",
        +                      "viewbox_y",
        +                      "viewbox_width",
        +                      "viewbox_height",
        +                      "entity_count"
        +                    ],
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "drawings": {
        +                "anyOf": [
        +                  {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.6 — paid-tier drawing artefact pointer.\n\n`url` is an R2-signed URL; expiry is carried in `_meta.deliverables.expires_at`\non the envelope (not duplicated here). `layers` is DXF-only; PDF/SVG\ncallers omit it.",
        +                      "properties": {
        +                        "drawing_type": {
        +                          "enum": [
        +                            "section",
        +                            "plan",
        +                            "elevation",
        +                            "isometric",
        +                            "detail"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "format": {
        +                          "enum": [
        +                            "DXF",
        +                            "PDF",
        +                            "SVG"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "layers": {
        +                          "anyOf": [
        +                            {
        +                              "items": {
        +                                "type": "string"
        +                              },
        +                              "type": "array"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ],
        +                          "default": null
        +                        },
        +                        "scale": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "sheet_size": {
        +                          "enum": [
        +                            "A1",
        +                            "A2",
        +                            "A3",
        +                            "A4"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "url": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "drawing_type",
        +                        "format",
        +                        "url",
        +                        "sheet_size",
        +                        "scale"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "parameters_used": {
        +                "additionalProperties": false,
        +                "description": "Schema § 1.2 — the parameter snapshot the engine actually used.\n\nSplits user-supplied values from engine defaults so customers can see\nwhich numbers came from them and which the engine filled in. Every\ndefaulted parameter SHOULD have a corresponding entry in `assumptions`\n— the bridge layer enforces this when wrapping engine output.",
        +                "properties": {
        +                  "assumptions": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "engine_defaults": {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  "resolved_from_description": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "additionalProperties": false,
        +                          "description": "Schema § 1.2 — a parameter resolved by the forgiving-input layer.\n\nPopulated by the Track B-Forgiving Haiku-4.5 resolution pass; until that\nlayer lands, instances are constructed only by tests. `source` distinguishes\nthe resolution path so customers can audit which fields were inferred.",
        +                          "properties": {
        +                            "confidence": {
        +                              "anyOf": [
        +                                {
        +                                  "enum": [
        +                                    "high",
        +                                    "medium",
        +                                    "low"
        +                                  ],
        +                                  "type": "string"
        +                                },
        +                                {
        +                                  "type": "null"
        +                                }
        +                              ],
        +                              "default": null
        +                            },
        +                            "field_name": {
        +                              "minLength": 1,
        +                              "type": "string"
        +                            },
        +                            "resolved_value": {},
        +                            "source": {
        +                              "enum": [
        +                                "description_field",
        +                                "haiku_resolution",
        +                                "engine_default"
        +                              ],
        +                              "type": "string"
        +                            }
        +                          },
        +                          "required": [
        +                            "field_name",
        +                            "resolved_value",
        +                            "source"
        +                          ],
        +                          "type": "object"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "user_supplied": {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  }
        +                },
        +                "type": "object"
        +              },
        +              "standard": {
        +                "enum": [
        +                  "CESMM4",
        +                  "NRM2",
        +                  "SMM7",
        +                  "MMHW"
        +                ],
        +                "type": "string"
        +              },
        +              "text_summary": {
        +                "maxLength": 2000,
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "totals_summary": {
        +                "additionalProperties": false,
        +                "description": "Schema § 1.4 — totals_summary as a typed wrapper around the free-form dict.\n\nWire shape is a flat object (`{\"concrete_m3\": {...}, \"rebar_t\": {...}}`).\nWe model it as `RootModel`-equivalent via `model_config(extra=\"allow\")`\n+ a single `__root__`-style `entries` dict. Pydantic v2 recommends\n`RootModel` for free-form roots; using a wrapper class keeps the import\nsurface uniform with the rest of this module.",
        +                "properties": {
        +                  "entries": {
        +                    "additionalProperties": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.4 — single material/work-class total entry.",
        +                      "properties": {
        +                        "quantity": {
        +                          "minimum": 0,
        +                          "type": "number"
        +                        },
        +                        "unit": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "quantity",
        +                        "unit"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "object"
        +                  }
        +                },
        +                "type": "object"
        +              },
        +              "warnings": {
        +                "items": {
        +                  "additionalProperties": false,
        +                  "description": "Schema § 1.8 — a non-fatal geometry advisory (56th-fire T2).\n\nThe wire projection of the engine's `core.GeometryWarning`. Advisory only:\na warning NEVER changes a measured quantity — it flags geometry that is\nvalid but likely a mistake (e.g. a stale dependent-height default). Present\non BOTH tiers — a correctness/safety signal, not a paid feature.",
        +                  "properties": {
        +                    "affected_params": {
        +                      "items": {
        +                        "type": "string"
        +                      },
        +                      "type": "array"
        +                    },
        +                    "code": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "detail": {
        +                      "additionalProperties": {
        +                        "type": "number"
        +                      },
        +                      "type": "object"
        +                    },
        +                    "message": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "severity": {
        +                      "enum": [
        +                        "info",
        +                        "advisory",
        +                        "caution"
        +                      ],
        +                      "type": "string"
        +                    }
        +                  },
        +                  "required": [
        +                    "code",
        +                    "severity",
        +                    "message"
        +                  ],
        +                  "type": "object"
        +                },
        +                "type": "array"
        +              }
        +            },
        +            "required": [
        +              "assembly_slug",
        +              "standard",
        +              "parameters_used",
        +              "boq_rows",
        +              "totals_summary",
        +              "text_summary"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      },
        +      "error": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        +            "properties": {
        +              "code": {
        +                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        +                "enum": [
        +                  "RATE_LIMIT_EXCEEDED",
        +                  "TIER_INSUFFICIENT",
        +                  "INVALID_INPUT",
        +                  "SCHEMA_VERSION_MISMATCH",
        +                  "SCHEMA_INVARIANT_VIOLATION",
        +                  "UPSTREAM_TIMEOUT",
        +                  "BACKEND_FAILURE",
        +                  "IP_BLOCKED",
        +                  "RESOURCE_NOT_FOUND",
        +                  "RENDER_FAILURE",
        +                  "OCR_LOW_CONFIDENCE",
        +                  "MANUAL_REVIEW_REQUIRED",
        +                  "ACCEPTANCE_REQUIRED",
        +                  "INVALID_TOKEN"
        +                ],
        +                "type": "string"
        +              },
        +              "details": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "message": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "recoverable": {
        +                "type": "boolean"
        +              },
        +              "retry_after_seconds": {
        +                "anyOf": [
        +                  {
        +                    "minimum": 0,
        +                    "type": "integer"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              }
        +            },
        +            "required": [
        +              "code",
        +              "message",
        +              "recoverable"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      }
        +    },
        +    "required": [
        +      "_meta"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "_meta": {
        +        "additionalProperties": false,
        +        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        +        "properties": {
        +          "deliverables": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        +                "properties": {
        +                  "docx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "dxf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "expires_at": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  },
        +                  "pdf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "xlsx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "expires_at"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "document_id": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "issued_at": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "rate_limit_remaining": {
        +            "anyOf": [
        +              {
        +                "minimum": 0,
        +                "type": "integer"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "request_id": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "schema_version": {
        +            "const": "1.0.0",
        +            "default": "1.0.0",
        +            "type": "string"
        +          },
        +          "scope_boundary": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        +                "properties": {
        +                  "not_in_scope": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "produced": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "recommended_companions": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "type": "string"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "produced",
        +                  "not_in_scope"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tier": {
        +            "enum": [
        +              "free",
        +              "paid"
        +            ],
        +            "type": "string"
        +          },
        +          "tier_upgrade": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        +                "properties": {
        +                  "available_tiers": {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        +                      "properties": {
        +                        "billing": {
        +                          "enum": [
        +                            "one_off",
        +                            "monthly",
        +                            "annual"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "currency": {
        +                          "enum": [
        +                            "GBP",
        +                            "SGD",
        +                            "EUR",
        +                            "USD",
        +                            "CAD",
        +                            "AUD",
        +                            "NZD",
        +                            "MYR"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "display_name": {
        +                          "type": "string"
        +                        },
        +                        "price_local": {
        +                          "type": "number"
        +                        },
        +                        "tier_slug": {
        +                          "enum": [
        +                            "7_day_pass",
        +                            "solo",
        +                            "studio",
        +                            "practice"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "unlock_summary": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "tier_slug",
        +                        "display_name",
        +                        "price_local",
        +                        "currency",
        +                        "billing",
        +                        "unlock_summary"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "current_tier": {
        +                    "const": "free",
        +                    "default": "free",
        +                    "type": "string"
        +                  },
        +                  "pass_credit": {
        +                    "anyOf": [
        +                      {
        +                        "additionalProperties": false,
        +                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        +                        "properties": {
        +                          "amount_local": {
        +                            "type": "number"
        +                          },
        +                          "applies_to": {
        +                            "const": "solo_first_month",
        +                            "default": "solo_first_month",
        +                            "type": "string"
        +                          },
        +                          "currency": {
        +                            "type": "string"
        +                          },
        +                          "redeemable_until": {
        +                            "type": "string"
        +                          }
        +                        },
        +                        "required": [
        +                          "amount_local",
        +                          "currency",
        +                          "redeemable_until"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "pricing_url": {
        +                    "default": "https://civilquants.com/pricing",
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "available_tiers"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tos_url": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "upgrade_hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "warranty_disclaimer": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          }
        +        },
        +        "required": [
        +          "request_id",
        +          "issued_at",
        +          "tier"
        +        ],
        +        "type": "object"
        +      },
        +      "data": {
        +        "default": null,
        +        "title": "Data"
        +      },
        +      "error": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        +            "properties": {
        +              "code": {
        +                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        +                "enum": [
        +                  "RATE_LIMIT_EXCEEDED",
        +                  "TIER_INSUFFICIENT",
        +                  "INVALID_INPUT",
        +                  "SCHEMA_VERSION_MISMATCH",
        +                  "SCHEMA_INVARIANT_VIOLATION",
        +                  "UPSTREAM_TIMEOUT",
        +                  "BACKEND_FAILURE",
        +                  "IP_BLOCKED",
        +                  "RESOURCE_NOT_FOUND",
        +                  "RENDER_FAILURE",
        +                  "OCR_LOW_CONFIDENCE",
        +                  "MANUAL_REVIEW_REQUIRED",
        +                  "ACCEPTANCE_REQUIRED",
        +                  "INVALID_TOKEN"
        +                ],
        +                "type": "string"
        +              },
        +              "details": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "message": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "recoverable": {
        +                "type": "boolean"
        +              },
        +              "retry_after_seconds": {
        +                "anyOf": [
        +                  {
        +                    "minimum": 0,
        +                    "type": "integer"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              }
        +            },
        +            "required": [
        +              "code",
        +              "message",
        +              "recoverable"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      }
        +    },
        +    "required": [
        +      "_meta"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedcompute_flexible_pavement3 fields changed
      • addedInput schema / properties / deliverables
        Added value: +{
        +  "anyOf": [
        +    {
        +      "items": {
        +        "const": "xlsx",
        +        "type": "string"
        +      },
        +      "type": "array"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null
        +}
      • addedInput schema / properties / output_mode
        Added value: +{
        +  "default": "full_json",
        +  "enum": [
        +    "summary",
        +    "boq",
        +    "boq_with_backup",
        +    "full_json"
        +  ],
        +  "type": "string"
        +}
      • changedOutput schema / properties / result / anyOf
        Previous value: -[
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "_meta": {
        -        "additionalProperties": false,
        -        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        -        "properties": {
        -          "deliverables": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        -                "properties": {
        -                  "docx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "dxf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "expires_at": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  },
        -                  "pdf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "xlsx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "expires_at"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "document_id": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "issued_at": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "rate_limit_remaining": {
        -            "anyOf": [
        -              {
        -                "minimum": 0,
        -                "type": "integer"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "request_id": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "schema_version": {
        -            "const": "1.0.0",
        -            "default": "1.0.0",
        -            "type": "string"
        -          },
        -          "scope_boundary": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        -                "properties": {
        -                  "not_in_scope": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "produced": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "recommended_companions": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "type": "string"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "produced",
        -                  "not_in_scope"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tier": {
        -            "enum": [
        -              "free",
        -              "paid"
        -            ],
        -            "type": "string"
        -          },
        -          "tier_upgrade": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        -                "properties": {
        -                  "available_tiers": {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        -                      "properties": {
        -                        "billing": {
        -                          "enum": [
        -                            "one_off",
        -                            "monthly",
        -                            "annual"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "currency": {
        -                          "enum": [
        -                            "GBP",
        -                            "SGD",
        -                            "EUR",
        -                            "USD",
        -                            "CAD",
        -                            "AUD",
        -                            "NZD",
        -                            "MYR"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "display_name": {
        -                          "type": "string"
        -                        },
        -                        "price_local": {
        -                          "type": "number"
        -                        },
        -                        "tier_slug": {
        -                          "enum": [
        -                            "7_day_pass",
        -                            "solo",
        -                            "studio",
        -                            "practice"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "unlock_summary": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "tier_slug",
        -                        "display_name",
        -                        "price_local",
        -                        "currency",
        -                        "billing",
        -                        "unlock_summary"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "current_tier": {
        -                    "const": "free",
        -                    "default": "free",
        -                    "type": "string"
        -                  },
        -                  "pass_credit": {
        -                    "anyOf": [
        -                      {
        -                        "additionalProperties": false,
        -                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        -                        "properties": {
        -                          "amount_local": {
        -                            "type": "number"
        -                          },
        -                          "applies_to": {
        -                            "const": "solo_first_month",
        -                            "default": "solo_first_month",
        -                            "type": "string"
        -                          },
        -                          "currency": {
        -                            "type": "string"
        -                          },
        -                          "redeemable_until": {
        -                            "type": "string"
        -                          }
        -                        },
        -                        "required": [
        -                          "amount_local",
        -                          "currency",
        -                          "redeemable_until"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "pricing_url": {
        -                    "default": "https://civilquants.com/pricing",
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "available_tiers"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tos_url": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "upgrade_hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "warranty_disclaimer": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          }
        -        },
        -        "required": [
        -          "request_id",
        -          "issued_at",
        -          "tier"
        -        ],
        -        "type": "object"
        -      },
        -      "data": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Schema § 1.1 — the typed payload returned inside `MCPResponse[ComputeResult]`.\n\nFree-tier responses MUST omit `drawings` and `audit_trail` (the bridge\nenforces this); paid-tier responses populate both. `text_summary` is\nbounded to 2000 chars — keeps the LLM-facing summary token-cheap and\nforces longer narrative into BoQ row descriptions where it belongs.\n`warnings` is the non-fatal geometry advisory list (both tiers).",
        -            "properties": {
        -              "assembly_slug": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "audit_trail": {
        -                "anyOf": [
        -                  {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.7 — paid-tier audit-trail entry.\n\nOne entry per BoQ row; `boq_row_index` ties to the row position in\n`ComputeResult.boq_rows`. `derivation` is the human-readable formula\nwalk-through; `formula` is the optional formal expression.",
        -                      "properties": {
        -                        "boq_row_index": {
        -                          "minimum": 0,
        -                          "type": "integer"
        -                        },
        -                        "derivation": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "formula": {
        -                          "anyOf": [
        -                            {
        -                              "type": "string"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ],
        -                          "default": null
        -                        },
        -                        "id": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "parameters_referenced": {
        -                          "items": {
        -                            "type": "string"
        -                          },
        -                          "type": "array"
        -                        }
        -                      },
        -                      "required": [
        -                        "id",
        -                        "boq_row_index",
        -                        "derivation"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "boq_rows": {
        -                "items": {
        -                  "additionalProperties": false,
        -                  "description": "Schema § 1.3 — a single bill row in the requested standard's format.\n\n`description` is the non-verbatim functional description per spec § 13.9 /\n§ 15 invariant — NEVER reproduces a standard's verbatim clause text.\n`rate` / `amount` ship null because rates are commodity data the customer\nowns; the engine's job is the measurement, not the pricing.",
        -                  "properties": {
        -                    "amount": {
        -                      "anyOf": [
        -                        {
        -                          "type": "number"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "attribution": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "audit_id": {
        -                      "anyOf": [
        -                        {
        -                          "type": "string"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "description": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "quantity": {
        -                      "minimum": 0,
        -                      "type": "number"
        -                    },
        -                    "rate": {
        -                      "anyOf": [
        -                        {
        -                          "type": "number"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "unit": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "work_section": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    }
        -                  },
        -                  "required": [
        -                    "work_section",
        -                    "description",
        -                    "quantity",
        -                    "unit",
        -                    "attribution"
        -                  ],
        -                  "type": "object"
        -                },
        -                "type": "array"
        -              },
        -              "drawings": {
        -                "anyOf": [
        -                  {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.6 — paid-tier drawing artefact pointer.\n\n`url` is an R2-signed URL; expiry is carried in `_meta.deliverables.expires_at`\non the envelope (not duplicated here). `layers` is DXF-only; PDF/SVG\ncallers omit it.",
        -                      "properties": {
        -                        "drawing_type": {
        -                          "enum": [
        -                            "section",
        -                            "plan",
        -                            "elevation",
        -                            "isometric",
        -                            "detail"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "format": {
        -                          "enum": [
        -                            "DXF",
        -                            "PDF",
        -                            "SVG"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "layers": {
        -                          "anyOf": [
        -                            {
        -                              "items": {
        -                                "type": "string"
        -                              },
        -                              "type": "array"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ],
        -                          "default": null
        -                        },
        -                        "scale": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "sheet_size": {
        -                          "enum": [
        -                            "A1",
        -                            "A2",
        -                            "A3",
        -                            "A4"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "url": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "drawing_type",
        -                        "format",
        -                        "url",
        -                        "sheet_size",
        -                        "scale"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "parameters_used": {
        -                "additionalProperties": false,
        -                "description": "Schema § 1.2 — the parameter snapshot the engine actually used.\n\nSplits user-supplied values from engine defaults so customers can see\nwhich numbers came from them and which the engine filled in. Every\ndefaulted parameter SHOULD have a corresponding entry in `assumptions`\n— the bridge layer enforces this when wrapping engine output.",
        -                "properties": {
        -                  "assumptions": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "engine_defaults": {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  "resolved_from_description": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "additionalProperties": false,
        -                          "description": "Schema § 1.2 — a parameter resolved by the forgiving-input layer.\n\nPopulated by the Track B-Forgiving Haiku-4.5 resolution pass; until that\nlayer lands, instances are constructed only by tests. `source` distinguishes\nthe resolution path so customers can audit which fields were inferred.",
        -                          "properties": {
        -                            "confidence": {
        -                              "anyOf": [
        -                                {
        -                                  "enum": [
        -                                    "high",
        -                                    "medium",
        -                                    "low"
        -                                  ],
        -                                  "type": "string"
        -                                },
        -                                {
        -                                  "type": "null"
        -                                }
        -                              ],
        -                              "default": null
        -                            },
        -                            "field_name": {
        -                              "minLength": 1,
        -                              "type": "string"
        -                            },
        -                            "resolved_value": {},
        -                            "source": {
        -                              "enum": [
        -                                "description_field",
        -                                "haiku_resolution",
        -                                "engine_default"
        -                              ],
        -                              "type": "string"
        -                            }
        -                          },
        -                          "required": [
        -                            "field_name",
        -                            "resolved_value",
        -                            "source"
        -                          ],
        -                          "type": "object"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "user_supplied": {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  }
        -                },
        -                "type": "object"
        -              },
        -              "standard": {
        -                "enum": [
        -                  "CESMM4",
        -                  "NRM2",
        -                  "SMM7",
        -                  "MMHW"
        -                ],
        -                "type": "string"
        -              },
        -              "text_summary": {
        -                "maxLength": 2000,
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "totals_summary": {
        -                "additionalProperties": false,
        -                "description": "Schema § 1.4 — totals_summary as a typed wrapper around the free-form dict.\n\nWire shape is a flat object (`{\"concrete_m3\": {...}, \"rebar_t\": {...}}`).\nWe model it as `RootModel`-equivalent via `model_config(extra=\"allow\")`\n+ a single `__root__`-style `entries` dict. Pydantic v2 recommends\n`RootModel` for free-form roots; using a wrapper class keeps the import\nsurface uniform with the rest of this module.",
        -                "properties": {
        -                  "entries": {
        -                    "additionalProperties": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.4 — single material/work-class total entry.",
        -                      "properties": {
        -                        "quantity": {
        -                          "minimum": 0,
        -                          "type": "number"
        -                        },
        -                        "unit": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "quantity",
        -                        "unit"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "object"
        -                  }
        -                },
        -                "type": "object"
        -              },
        -              "warnings": {
        -                "items": {
        -                  "additionalProperties": false,
        -                  "description": "Schema § 1.8 — a non-fatal geometry advisory (56th-fire T2).\n\nThe wire projection of the engine's `core.GeometryWarning`. Advisory only:\na warning NEVER changes a measured quantity — it flags geometry that is\nvalid but likely a mistake (e.g. a stale dependent-height default). Present\non BOTH tiers — a correctness/safety signal, not a paid feature.",
        -                  "properties": {
        -                    "affected_params": {
        -                      "items": {
        -                        "type": "string"
        -                      },
        -                      "type": "array"
        -                    },
        -                    "code": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "detail": {
        -                      "additionalProperties": {
        -                        "type": "number"
        -                      },
        -                      "type": "object"
        -                    },
        -                    "message": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "severity": {
        -                      "enum": [
        -                        "info",
        -                        "advisory",
        -                        "caution"
        -                      ],
        -                      "type": "string"
        -                    }
        -                  },
        -                  "required": [
        -                    "code",
        -                    "severity",
        -                    "message"
        -                  ],
        -                  "type": "object"
        -                },
        -                "type": "array"
        -              }
        -            },
        -            "required": [
        -              "assembly_slug",
        -              "standard",
        -              "parameters_used",
        -              "boq_rows",
        -              "totals_summary",
        -              "text_summary"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      },
        -      "error": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        -            "properties": {
        -              "code": {
        -                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        -                "enum": [
        -                  "RATE_LIMIT_EXCEEDED",
        -                  "TIER_INSUFFICIENT",
        -                  "INVALID_INPUT",
        -                  "SCHEMA_VERSION_MISMATCH",
        -                  "SCHEMA_INVARIANT_VIOLATION",
        -                  "UPSTREAM_TIMEOUT",
        -                  "BACKEND_FAILURE",
        -                  "IP_BLOCKED",
        -                  "RESOURCE_NOT_FOUND",
        -                  "RENDER_FAILURE",
        -                  "OCR_LOW_CONFIDENCE",
        -                  "MANUAL_REVIEW_REQUIRED",
        -                  "ACCEPTANCE_REQUIRED",
        -                  "INVALID_TOKEN"
        -                ],
        -                "type": "string"
        -              },
        -              "details": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "message": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "recoverable": {
        -                "type": "boolean"
        -              },
        -              "retry_after_seconds": {
        -                "anyOf": [
        -                  {
        -                    "minimum": 0,
        -                    "type": "integer"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              }
        -            },
        -            "required": [
        -              "code",
        -              "message",
        -              "recoverable"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      }
        -    },
        -    "required": [
        -      "_meta"
        -    ],
        -    "type": "object"
        -  },
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "_meta": {
        -        "additionalProperties": false,
        -        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        -        "properties": {
        -          "deliverables": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        -                "properties": {
        -                  "docx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "dxf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "expires_at": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  },
        -                  "pdf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "xlsx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "expires_at"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "document_id": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "issued_at": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "rate_limit_remaining": {
        -            "anyOf": [
        -              {
        -                "minimum": 0,
        -                "type": "integer"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "request_id": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "schema_version": {
        -            "const": "1.0.0",
        -            "default": "1.0.0",
        -            "type": "string"
        -          },
        -          "scope_boundary": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        -                "properties": {
        -                  "not_in_scope": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "produced": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "recommended_companions": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "type": "string"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "produced",
        -                  "not_in_scope"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tier": {
        -            "enum": [
        -              "free",
        -              "paid"
        -            ],
        -            "type": "string"
        -          },
        -          "tier_upgrade": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        -                "properties": {
        -                  "available_tiers": {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        -                      "properties": {
        -                        "billing": {
        -                          "enum": [
        -                            "one_off",
        -                            "monthly",
        -                            "annual"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "currency": {
        -                          "enum": [
        -                            "GBP",
        -                            "SGD",
        -                            "EUR",
        -                            "USD",
        -                            "CAD",
        -                            "AUD",
        -                            "NZD",
        -                            "MYR"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "display_name": {
        -                          "type": "string"
        -                        },
        -                        "price_local": {
        -                          "type": "number"
        -                        },
        -                        "tier_slug": {
        -                          "enum": [
        -                            "7_day_pass",
        -                            "solo",
        -                            "studio",
        -                            "practice"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "unlock_summary": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "tier_slug",
        -                        "display_name",
        -                        "price_local",
        -                        "currency",
        -                        "billing",
        -                        "unlock_summary"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "current_tier": {
        -                    "const": "free",
        -                    "default": "free",
        -                    "type": "string"
        -                  },
        -                  "pass_credit": {
        -                    "anyOf": [
        -                      {
        -                        "additionalProperties": false,
        -                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        -                        "properties": {
        -                          "amount_local": {
        -                            "type": "number"
        -                          },
        -                          "applies_to": {
        -                            "const": "solo_first_month",
        -                            "default": "solo_first_month",
        -                            "type": "string"
        -                          },
        -                          "currency": {
        -                            "type": "string"
        -                          },
        -                          "redeemable_until": {
        -                            "type": "string"
        -                          }
        -                        },
        -                        "required": [
        -                          "amount_local",
        -                          "currency",
        -                          "redeemable_until"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "pricing_url": {
        -                    "default": "https://civilquants.com/pricing",
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "available_tiers"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tos_url": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "upgrade_hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "warranty_disclaimer": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          }
        -        },
        -        "required": [
        -          "request_id",
        -          "issued_at",
        -          "tier"
        -        ],
        -        "type": "object"
        -      },
        -      "data": {
        -        "default": null,
        -        "title": "Data"
        -      },
        -      "error": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        -            "properties": {
        -              "code": {
        -                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        -                "enum": [
        -                  "RATE_LIMIT_EXCEEDED",
        -                  "TIER_INSUFFICIENT",
        -                  "INVALID_INPUT",
        -                  "SCHEMA_VERSION_MISMATCH",
        -                  "SCHEMA_INVARIANT_VIOLATION",
        -                  "UPSTREAM_TIMEOUT",
        -                  "BACKEND_FAILURE",
        -                  "IP_BLOCKED",
        -                  "RESOURCE_NOT_FOUND",
        -                  "RENDER_FAILURE",
        -                  "OCR_LOW_CONFIDENCE",
        -                  "MANUAL_REVIEW_REQUIRED",
        -                  "ACCEPTANCE_REQUIRED",
        -                  "INVALID_TOKEN"
        -                ],
        -                "type": "string"
        -              },
        -              "details": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "message": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "recoverable": {
        -                "type": "boolean"
        -              },
        -              "retry_after_seconds": {
        -                "anyOf": [
        -                  {
        -                    "minimum": 0,
        -                    "type": "integer"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              }
        -            },
        -            "required": [
        -              "code",
        -              "message",
        -              "recoverable"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      }
        -    },
        -    "required": [
        -      "_meta"
        -    ],
        -    "type": "object"
        -  }
        -]New value: +[
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "_meta": {
        +        "additionalProperties": false,
        +        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        +        "properties": {
        +          "deliverables": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        +                "properties": {
        +                  "docx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "dxf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "expires_at": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  },
        +                  "pdf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "xlsx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "expires_at"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "document_id": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "issued_at": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "rate_limit_remaining": {
        +            "anyOf": [
        +              {
        +                "minimum": 0,
        +                "type": "integer"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "request_id": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "schema_version": {
        +            "const": "1.0.0",
        +            "default": "1.0.0",
        +            "type": "string"
        +          },
        +          "scope_boundary": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        +                "properties": {
        +                  "not_in_scope": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "produced": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "recommended_companions": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "type": "string"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "produced",
        +                  "not_in_scope"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tier": {
        +            "enum": [
        +              "free",
        +              "paid"
        +            ],
        +            "type": "string"
        +          },
        +          "tier_upgrade": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        +                "properties": {
        +                  "available_tiers": {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        +                      "properties": {
        +                        "billing": {
        +                          "enum": [
        +                            "one_off",
        +                            "monthly",
        +                            "annual"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "currency": {
        +                          "enum": [
        +                            "GBP",
        +                            "SGD",
        +                            "EUR",
        +                            "USD",
        +                            "CAD",
        +                            "AUD",
        +                            "NZD",
        +                            "MYR"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "display_name": {
        +                          "type": "string"
        +                        },
        +                        "price_local": {
        +                          "type": "number"
        +                        },
        +                        "tier_slug": {
        +                          "enum": [
        +                            "7_day_pass",
        +                            "solo",
        +                            "studio",
        +                            "practice"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "unlock_summary": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "tier_slug",
        +                        "display_name",
        +                        "price_local",
        +                        "currency",
        +                        "billing",
        +                        "unlock_summary"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "current_tier": {
        +                    "const": "free",
        +                    "default": "free",
        +                    "type": "string"
        +                  },
        +                  "pass_credit": {
        +                    "anyOf": [
        +                      {
        +                        "additionalProperties": false,
        +                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        +                        "properties": {
        +                          "amount_local": {
        +                            "type": "number"
        +                          },
        +                          "applies_to": {
        +                            "const": "solo_first_month",
        +                            "default": "solo_first_month",
        +                            "type": "string"
        +                          },
        +                          "currency": {
        +                            "type": "string"
        +                          },
        +                          "redeemable_until": {
        +                            "type": "string"
        +                          }
        +                        },
        +                        "required": [
        +                          "amount_local",
        +                          "currency",
        +                          "redeemable_until"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "pricing_url": {
        +                    "default": "https://civilquants.com/pricing",
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "available_tiers"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tos_url": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "upgrade_hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "warranty_disclaimer": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          }
        +        },
        +        "required": [
        +          "request_id",
        +          "issued_at",
        +          "tier"
        +        ],
        +        "type": "object"
        +      },
        +      "data": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Schema § 1.1 — the typed payload returned inside `MCPResponse[ComputeResult]`.\n\nFree-tier responses omit `drawings` (the downloadable CAD artefact\npointers — the paid differentiator); the bridge enforces this. The\n`audit_trail` and the inline `drawing` preview are present on BOTH tiers\n(V1 ALIGN / 60th-fire D + C). `text_summary` is bounded to 2000 chars —\nkeeps the LLM-facing summary token-cheap and forces longer narrative into\nBoQ row descriptions where it belongs. `warnings` is the non-fatal\ngeometry advisory list (both tiers).",
        +            "properties": {
        +              "assembly_slug": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "audit_trail": {
        +                "anyOf": [
        +                  {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.7 — paid-tier audit-trail entry.\n\nOne entry per BoQ row; `boq_row_index` ties to the row position in\n`ComputeResult.boq_rows`. `derivation` is the human-readable formula\nwalk-through; `formula` is the optional formal expression.",
        +                      "properties": {
        +                        "boq_row_index": {
        +                          "minimum": 0,
        +                          "type": "integer"
        +                        },
        +                        "derivation": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "formula": {
        +                          "anyOf": [
        +                            {
        +                              "type": "string"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ],
        +                          "default": null
        +                        },
        +                        "id": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "parameters_referenced": {
        +                          "items": {
        +                            "type": "string"
        +                          },
        +                          "type": "array"
        +                        }
        +                      },
        +                      "required": [
        +                        "id",
        +                        "boq_row_index",
        +                        "derivation"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "boq_rows": {
        +                "items": {
        +                  "additionalProperties": false,
        +                  "description": "Schema § 1.3 — a single bill row in the requested standard's format.\n\n`description` is the non-verbatim functional description per spec § 13.9 /\n§ 15 invariant — NEVER reproduces a standard's verbatim clause text.\n`rate` / `amount` ship null because rates are commodity data the customer\nowns; the engine's job is the measurement, not the pricing.",
        +                  "properties": {
        +                    "amount": {
        +                      "anyOf": [
        +                        {
        +                          "type": "number"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "attribution": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "audit_id": {
        +                      "anyOf": [
        +                        {
        +                          "type": "string"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "description": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "quantity": {
        +                      "minimum": 0,
        +                      "type": "number"
        +                    },
        +                    "rate": {
        +                      "anyOf": [
        +                        {
        +                          "type": "number"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "unit": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "work_section": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    }
        +                  },
        +                  "required": [
        +                    "work_section",
        +                    "description",
        +                    "quantity",
        +                    "unit",
        +                    "attribution"
        +                  ],
        +                  "type": "object"
        +                },
        +                "type": "array"
        +              },
        +              "drawing": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": false,
        +                    "description": "Schema § 1.6a — inline server-rendered SVG preview of the geometry.\n\nThe MCP mirror of the web ``/compute`` response's ``drawing`` field\n(``api.schemas.compute.DrawingRef``): the same on-screen dimensioned\ndrawing both tiers see in the workspace, surfaced on the MCP compute\nresponse so a chat client can render it inline (60th-fire item C). This\nis the on-screen preview — present on BOTH tiers per the free/paid\nboundary; the downloadable CAD artefacts (DXF / dimensioned PDF) remain\nthe paid differentiator via the export tools.\n\nDefined here rather than importing ``DrawingRef`` because the web\n``schemas`` package imports back into this module (``schemas.render``),\nso reusing it would create an import cycle — the MCP wire contract keeps\nits own copy, the same pattern as ``BoQRow`` / ``DrawingReference``.",
        +                    "properties": {
        +                      "entity_count": {
        +                        "minimum": 0,
        +                        "type": "integer"
        +                      },
        +                      "svg_b64": {
        +                        "minLength": 1,
        +                        "type": "string"
        +                      },
        +                      "unit_of_drawing": {
        +                        "const": "m",
        +                        "default": "m",
        +                        "type": "string"
        +                      },
        +                      "viewbox_height": {
        +                        "exclusiveMinimum": 0,
        +                        "type": "number"
        +                      },
        +                      "viewbox_width": {
        +                        "exclusiveMinimum": 0,
        +                        "type": "number"
        +                      },
        +                      "viewbox_x": {
        +                        "type": "number"
        +                      },
        +                      "viewbox_y": {
        +                        "type": "number"
        +                      }
        +                    },
        +                    "required": [
        +                      "svg_b64",
        +                      "viewbox_x",
        +                      "viewbox_y",
        +                      "viewbox_width",
        +                      "viewbox_height",
        +                      "entity_count"
        +                    ],
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "drawings": {
        +                "anyOf": [
        +                  {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.6 — paid-tier drawing artefact pointer.\n\n`url` is an R2-signed URL; expiry is carried in `_meta.deliverables.expires_at`\non the envelope (not duplicated here). `layers` is DXF-only; PDF/SVG\ncallers omit it.",
        +                      "properties": {
        +                        "drawing_type": {
        +                          "enum": [
        +                            "section",
        +                            "plan",
        +                            "elevation",
        +                            "isometric",
        +                            "detail"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "format": {
        +                          "enum": [
        +                            "DXF",
        +                            "PDF",
        +                            "SVG"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "layers": {
        +                          "anyOf": [
        +                            {
        +                              "items": {
        +                                "type": "string"
        +                              },
        +                              "type": "array"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ],
        +                          "default": null
        +                        },
        +                        "scale": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "sheet_size": {
        +                          "enum": [
        +                            "A1",
        +                            "A2",
        +                            "A3",
        +                            "A4"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "url": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "drawing_type",
        +                        "format",
        +                        "url",
        +                        "sheet_size",
        +                        "scale"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "parameters_used": {
        +                "additionalProperties": false,
        +                "description": "Schema § 1.2 — the parameter snapshot the engine actually used.\n\nSplits user-supplied values from engine defaults so customers can see\nwhich numbers came from them and which the engine filled in. Every\ndefaulted parameter SHOULD have a corresponding entry in `assumptions`\n— the bridge layer enforces this when wrapping engine output.",
        +                "properties": {
        +                  "assumptions": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "engine_defaults": {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  "resolved_from_description": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "additionalProperties": false,
        +                          "description": "Schema § 1.2 — a parameter resolved by the forgiving-input layer.\n\nPopulated by the Track B-Forgiving Haiku-4.5 resolution pass; until that\nlayer lands, instances are constructed only by tests. `source` distinguishes\nthe resolution path so customers can audit which fields were inferred.",
        +                          "properties": {
        +                            "confidence": {
        +                              "anyOf": [
        +                                {
        +                                  "enum": [
        +                                    "high",
        +                                    "medium",
        +                                    "low"
        +                                  ],
        +                                  "type": "string"
        +                                },
        +                                {
        +                                  "type": "null"
        +                                }
        +                              ],
        +                              "default": null
        +                            },
        +                            "field_name": {
        +                              "minLength": 1,
        +                              "type": "string"
        +                            },
        +                            "resolved_value": {},
        +                            "source": {
        +                              "enum": [
        +                                "description_field",
        +                                "haiku_resolution",
        +                                "engine_default"
        +                              ],
        +                              "type": "string"
        +                            }
        +                          },
        +                          "required": [
        +                            "field_name",
        +                            "resolved_value",
        +                            "source"
        +                          ],
        +                          "type": "object"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "user_supplied": {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  }
        +                },
        +                "type": "object"
        +              },
        +              "standard": {
        +                "enum": [
        +                  "CESMM4",
        +                  "NRM2",
        +                  "SMM7",
        +                  "MMHW"
        +                ],
        +                "type": "string"
        +              },
        +              "text_summary": {
        +                "maxLength": 2000,
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "totals_summary": {
        +                "additionalProperties": false,
        +                "description": "Schema § 1.4 — totals_summary as a typed wrapper around the free-form dict.\n\nWire shape is a flat object (`{\"concrete_m3\": {...}, \"rebar_t\": {...}}`).\nWe model it as `RootModel`-equivalent via `model_config(extra=\"allow\")`\n+ a single `__root__`-style `entries` dict. Pydantic v2 recommends\n`RootModel` for free-form roots; using a wrapper class keeps the import\nsurface uniform with the rest of this module.",
        +                "properties": {
        +                  "entries": {
        +                    "additionalProperties": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.4 — single material/work-class total entry.",
        +                      "properties": {
        +                        "quantity": {
        +                          "minimum": 0,
        +                          "type": "number"
        +                        },
        +                        "unit": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "quantity",
        +                        "unit"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "object"
        +                  }
        +                },
        +                "type": "object"
        +              },
        +              "warnings": {
        +                "items": {
        +                  "additionalProperties": false,
        +                  "description": "Schema § 1.8 — a non-fatal geometry advisory (56th-fire T2).\n\nThe wire projection of the engine's `core.GeometryWarning`. Advisory only:\na warning NEVER changes a measured quantity — it flags geometry that is\nvalid but likely a mistake (e.g. a stale dependent-height default). Present\non BOTH tiers — a correctness/safety signal, not a paid feature.",
        +                  "properties": {
        +                    "affected_params": {
        +                      "items": {
        +                        "type": "string"
        +                      },
        +                      "type": "array"
        +                    },
        +                    "code": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "detail": {
        +                      "additionalProperties": {
        +                        "type": "number"
        +                      },
        +                      "type": "object"
        +                    },
        +                    "message": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "severity": {
        +                      "enum": [
        +                        "info",
        +                        "advisory",
        +                        "caution"
        +                      ],
        +                      "type": "string"
        +                    }
        +                  },
        +                  "required": [
        +                    "code",
        +                    "severity",
        +                    "message"
        +                  ],
        +                  "type": "object"
        +                },
        +                "type": "array"
        +              }
        +            },
        +            "required": [
        +              "assembly_slug",
        +              "standard",
        +              "parameters_used",
        +              "boq_rows",
        +              "totals_summary",
        +              "text_summary"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      },
        +      "error": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        +            "properties": {
        +              "code": {
        +                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        +                "enum": [
        +                  "RATE_LIMIT_EXCEEDED",
        +                  "TIER_INSUFFICIENT",
        +                  "INVALID_INPUT",
        +                  "SCHEMA_VERSION_MISMATCH",
        +                  "SCHEMA_INVARIANT_VIOLATION",
        +                  "UPSTREAM_TIMEOUT",
        +                  "BACKEND_FAILURE",
        +                  "IP_BLOCKED",
        +                  "RESOURCE_NOT_FOUND",
        +                  "RENDER_FAILURE",
        +                  "OCR_LOW_CONFIDENCE",
        +                  "MANUAL_REVIEW_REQUIRED",
        +                  "ACCEPTANCE_REQUIRED",
        +                  "INVALID_TOKEN"
        +                ],
        +                "type": "string"
        +              },
        +              "details": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "message": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "recoverable": {
        +                "type": "boolean"
        +              },
        +              "retry_after_seconds": {
        +                "anyOf": [
        +                  {
        +                    "minimum": 0,
        +                    "type": "integer"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              }
        +            },
        +            "required": [
        +              "code",
        +              "message",
        +              "recoverable"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      }
        +    },
        +    "required": [
        +      "_meta"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "_meta": {
        +        "additionalProperties": false,
        +        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        +        "properties": {
        +          "deliverables": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        +                "properties": {
        +                  "docx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "dxf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "expires_at": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  },
        +                  "pdf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "xlsx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "expires_at"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "document_id": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "issued_at": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "rate_limit_remaining": {
        +            "anyOf": [
        +              {
        +                "minimum": 0,
        +                "type": "integer"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "request_id": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "schema_version": {
        +            "const": "1.0.0",
        +            "default": "1.0.0",
        +            "type": "string"
        +          },
        +          "scope_boundary": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        +                "properties": {
        +                  "not_in_scope": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "produced": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "recommended_companions": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "type": "string"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "produced",
        +                  "not_in_scope"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tier": {
        +            "enum": [
        +              "free",
        +              "paid"
        +            ],
        +            "type": "string"
        +          },
        +          "tier_upgrade": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        +                "properties": {
        +                  "available_tiers": {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        +                      "properties": {
        +                        "billing": {
        +                          "enum": [
        +                            "one_off",
        +                            "monthly",
        +                            "annual"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "currency": {
        +                          "enum": [
        +                            "GBP",
        +                            "SGD",
        +                            "EUR",
        +                            "USD",
        +                            "CAD",
        +                            "AUD",
        +                            "NZD",
        +                            "MYR"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "display_name": {
        +                          "type": "string"
        +                        },
        +                        "price_local": {
        +                          "type": "number"
        +                        },
        +                        "tier_slug": {
        +                          "enum": [
        +                            "7_day_pass",
        +                            "solo",
        +                            "studio",
        +                            "practice"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "unlock_summary": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "tier_slug",
        +                        "display_name",
        +                        "price_local",
        +                        "currency",
        +                        "billing",
        +                        "unlock_summary"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "current_tier": {
        +                    "const": "free",
        +                    "default": "free",
        +                    "type": "string"
        +                  },
        +                  "pass_credit": {
        +                    "anyOf": [
        +                      {
        +                        "additionalProperties": false,
        +                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        +                        "properties": {
        +                          "amount_local": {
        +                            "type": "number"
        +                          },
        +                          "applies_to": {
        +                            "const": "solo_first_month",
        +                            "default": "solo_first_month",
        +                            "type": "string"
        +                          },
        +                          "currency": {
        +                            "type": "string"
        +                          },
        +                          "redeemable_until": {
        +                            "type": "string"
        +                          }
        +                        },
        +                        "required": [
        +                          "amount_local",
        +                          "currency",
        +                          "redeemable_until"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "pricing_url": {
        +                    "default": "https://civilquants.com/pricing",
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "available_tiers"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tos_url": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "upgrade_hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "warranty_disclaimer": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          }
        +        },
        +        "required": [
        +          "request_id",
        +          "issued_at",
        +          "tier"
        +        ],
        +        "type": "object"
        +      },
        +      "data": {
        +        "default": null,
        +        "title": "Data"
        +      },
        +      "error": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        +            "properties": {
        +              "code": {
        +                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        +                "enum": [
        +                  "RATE_LIMIT_EXCEEDED",
        +                  "TIER_INSUFFICIENT",
        +                  "INVALID_INPUT",
        +                  "SCHEMA_VERSION_MISMATCH",
        +                  "SCHEMA_INVARIANT_VIOLATION",
        +                  "UPSTREAM_TIMEOUT",
        +                  "BACKEND_FAILURE",
        +                  "IP_BLOCKED",
        +                  "RESOURCE_NOT_FOUND",
        +                  "RENDER_FAILURE",
        +                  "OCR_LOW_CONFIDENCE",
        +                  "MANUAL_REVIEW_REQUIRED",
        +                  "ACCEPTANCE_REQUIRED",
        +                  "INVALID_TOKEN"
        +                ],
        +                "type": "string"
        +              },
        +              "details": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "message": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "recoverable": {
        +                "type": "boolean"
        +              },
        +              "retry_after_seconds": {
        +                "anyOf": [
        +                  {
        +                    "minimum": 0,
        +                    "type": "integer"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              }
        +            },
        +            "required": [
        +              "code",
        +              "message",
        +              "recoverable"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      }
        +    },
        +    "required": [
        +      "_meta"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedcompute_french_drain3 fields changed
      • addedInput schema / properties / deliverables
        Added value: +{
        +  "anyOf": [
        +    {
        +      "items": {
        +        "const": "xlsx",
        +        "type": "string"
        +      },
        +      "type": "array"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null
        +}
      • addedInput schema / properties / output_mode
        Added value: +{
        +  "default": "full_json",
        +  "enum": [
        +    "summary",
        +    "boq",
        +    "boq_with_backup",
        +    "full_json"
        +  ],
        +  "type": "string"
        +}
      • changedOutput schema / properties / result / anyOf
        Previous value: -[
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "_meta": {
        -        "additionalProperties": false,
        -        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        -        "properties": {
        -          "deliverables": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        -                "properties": {
        -                  "docx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "dxf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "expires_at": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  },
        -                  "pdf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "xlsx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "expires_at"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "document_id": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "issued_at": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "rate_limit_remaining": {
        -            "anyOf": [
        -              {
        -                "minimum": 0,
        -                "type": "integer"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "request_id": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "schema_version": {
        -            "const": "1.0.0",
        -            "default": "1.0.0",
        -            "type": "string"
        -          },
        -          "scope_boundary": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        -                "properties": {
        -                  "not_in_scope": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "produced": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "recommended_companions": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "type": "string"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "produced",
        -                  "not_in_scope"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tier": {
        -            "enum": [
        -              "free",
        -              "paid"
        -            ],
        -            "type": "string"
        -          },
        -          "tier_upgrade": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        -                "properties": {
        -                  "available_tiers": {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        -                      "properties": {
        -                        "billing": {
        -                          "enum": [
        -                            "one_off",
        -                            "monthly",
        -                            "annual"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "currency": {
        -                          "enum": [
        -                            "GBP",
        -                            "SGD",
        -                            "EUR",
        -                            "USD",
        -                            "CAD",
        -                            "AUD",
        -                            "NZD",
        -                            "MYR"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "display_name": {
        -                          "type": "string"
        -                        },
        -                        "price_local": {
        -                          "type": "number"
        -                        },
        -                        "tier_slug": {
        -                          "enum": [
        -                            "7_day_pass",
        -                            "solo",
        -                            "studio",
        -                            "practice"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "unlock_summary": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "tier_slug",
        -                        "display_name",
        -                        "price_local",
        -                        "currency",
        -                        "billing",
        -                        "unlock_summary"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "current_tier": {
        -                    "const": "free",
        -                    "default": "free",
        -                    "type": "string"
        -                  },
        -                  "pass_credit": {
        -                    "anyOf": [
        -                      {
        -                        "additionalProperties": false,
        -                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        -                        "properties": {
        -                          "amount_local": {
        -                            "type": "number"
        -                          },
        -                          "applies_to": {
        -                            "const": "solo_first_month",
        -                            "default": "solo_first_month",
        -                            "type": "string"
        -                          },
        -                          "currency": {
        -                            "type": "string"
        -                          },
        -                          "redeemable_until": {
        -                            "type": "string"
        -                          }
        -                        },
        -                        "required": [
        -                          "amount_local",
        -                          "currency",
        -                          "redeemable_until"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "pricing_url": {
        -                    "default": "https://civilquants.com/pricing",
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "available_tiers"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tos_url": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "upgrade_hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "warranty_disclaimer": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          }
        -        },
        -        "required": [
        -          "request_id",
        -          "issued_at",
        -          "tier"
        -        ],
        -        "type": "object"
        -      },
        -      "data": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Schema § 1.1 — the typed payload returned inside `MCPResponse[ComputeResult]`.\n\nFree-tier responses MUST omit `drawings` and `audit_trail` (the bridge\nenforces this); paid-tier responses populate both. `text_summary` is\nbounded to 2000 chars — keeps the LLM-facing summary token-cheap and\nforces longer narrative into BoQ row descriptions where it belongs.\n`warnings` is the non-fatal geometry advisory list (both tiers).",
        -            "properties": {
        -              "assembly_slug": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "audit_trail": {
        -                "anyOf": [
        -                  {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.7 — paid-tier audit-trail entry.\n\nOne entry per BoQ row; `boq_row_index` ties to the row position in\n`ComputeResult.boq_rows`. `derivation` is the human-readable formula\nwalk-through; `formula` is the optional formal expression.",
        -                      "properties": {
        -                        "boq_row_index": {
        -                          "minimum": 0,
        -                          "type": "integer"
        -                        },
        -                        "derivation": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "formula": {
        -                          "anyOf": [
        -                            {
        -                              "type": "string"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ],
        -                          "default": null
        -                        },
        -                        "id": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "parameters_referenced": {
        -                          "items": {
        -                            "type": "string"
        -                          },
        -                          "type": "array"
        -                        }
        -                      },
        -                      "required": [
        -                        "id",
        -                        "boq_row_index",
        -                        "derivation"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "boq_rows": {
        -                "items": {
        -                  "additionalProperties": false,
        -                  "description": "Schema § 1.3 — a single bill row in the requested standard's format.\n\n`description` is the non-verbatim functional description per spec § 13.9 /\n§ 15 invariant — NEVER reproduces a standard's verbatim clause text.\n`rate` / `amount` ship null because rates are commodity data the customer\nowns; the engine's job is the measurement, not the pricing.",
        -                  "properties": {
        -                    "amount": {
        -                      "anyOf": [
        -                        {
        -                          "type": "number"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "attribution": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "audit_id": {
        -                      "anyOf": [
        -                        {
        -                          "type": "string"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "description": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "quantity": {
        -                      "minimum": 0,
        -                      "type": "number"
        -                    },
        -                    "rate": {
        -                      "anyOf": [
        -                        {
        -                          "type": "number"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "unit": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "work_section": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    }
        -                  },
        -                  "required": [
        -                    "work_section",
        -                    "description",
        -                    "quantity",
        -                    "unit",
        -                    "attribution"
        -                  ],
        -                  "type": "object"
        -                },
        -                "type": "array"
        -              },
        -              "drawings": {
        -                "anyOf": [
        -                  {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.6 — paid-tier drawing artefact pointer.\n\n`url` is an R2-signed URL; expiry is carried in `_meta.deliverables.expires_at`\non the envelope (not duplicated here). `layers` is DXF-only; PDF/SVG\ncallers omit it.",
        -                      "properties": {
        -                        "drawing_type": {
        -                          "enum": [
        -                            "section",
        -                            "plan",
        -                            "elevation",
        -                            "isometric",
        -                            "detail"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "format": {
        -                          "enum": [
        -                            "DXF",
        -                            "PDF",
        -                            "SVG"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "layers": {
        -                          "anyOf": [
        -                            {
        -                              "items": {
        -                                "type": "string"
        -                              },
        -                              "type": "array"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ],
        -                          "default": null
        -                        },
        -                        "scale": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "sheet_size": {
        -                          "enum": [
        -                            "A1",
        -                            "A2",
        -                            "A3",
        -                            "A4"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "url": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "drawing_type",
        -                        "format",
        -                        "url",
        -                        "sheet_size",
        -                        "scale"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "parameters_used": {
        -                "additionalProperties": false,
        -                "description": "Schema § 1.2 — the parameter snapshot the engine actually used.\n\nSplits user-supplied values from engine defaults so customers can see\nwhich numbers came from them and which the engine filled in. Every\ndefaulted parameter SHOULD have a corresponding entry in `assumptions`\n— the bridge layer enforces this when wrapping engine output.",
        -                "properties": {
        -                  "assumptions": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "engine_defaults": {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  "resolved_from_description": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "additionalProperties": false,
        -                          "description": "Schema § 1.2 — a parameter resolved by the forgiving-input layer.\n\nPopulated by the Track B-Forgiving Haiku-4.5 resolution pass; until that\nlayer lands, instances are constructed only by tests. `source` distinguishes\nthe resolution path so customers can audit which fields were inferred.",
        -                          "properties": {
        -                            "confidence": {
        -                              "anyOf": [
        -                                {
        -                                  "enum": [
        -                                    "high",
        -                                    "medium",
        -                                    "low"
        -                                  ],
        -                                  "type": "string"
        -                                },
        -                                {
        -                                  "type": "null"
        -                                }
        -                              ],
        -                              "default": null
        -                            },
        -                            "field_name": {
        -                              "minLength": 1,
        -                              "type": "string"
        -                            },
        -                            "resolved_value": {},
        -                            "source": {
        -                              "enum": [
        -                                "description_field",
        -                                "haiku_resolution",
        -                                "engine_default"
        -                              ],
        -                              "type": "string"
        -                            }
        -                          },
        -                          "required": [
        -                            "field_name",
        -                            "resolved_value",
        -                            "source"
        -                          ],
        -                          "type": "object"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "user_supplied": {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  }
        -                },
        -                "type": "object"
        -              },
        -              "standard": {
        -                "enum": [
        -                  "CESMM4",
        -                  "NRM2",
        -                  "SMM7",
        -                  "MMHW"
        -                ],
        -                "type": "string"
        -              },
        -              "text_summary": {
        -                "maxLength": 2000,
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "totals_summary": {
        -                "additionalProperties": false,
        -                "description": "Schema § 1.4 — totals_summary as a typed wrapper around the free-form dict.\n\nWire shape is a flat object (`{\"concrete_m3\": {...}, \"rebar_t\": {...}}`).\nWe model it as `RootModel`-equivalent via `model_config(extra=\"allow\")`\n+ a single `__root__`-style `entries` dict. Pydantic v2 recommends\n`RootModel` for free-form roots; using a wrapper class keeps the import\nsurface uniform with the rest of this module.",
        -                "properties": {
        -                  "entries": {
        -                    "additionalProperties": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.4 — single material/work-class total entry.",
        -                      "properties": {
        -                        "quantity": {
        -                          "minimum": 0,
        -                          "type": "number"
        -                        },
        -                        "unit": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "quantity",
        -                        "unit"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "object"
        -                  }
        -                },
        -                "type": "object"
        -              },
        -              "warnings": {
        -                "items": {
        -                  "additionalProperties": false,
        -                  "description": "Schema § 1.8 — a non-fatal geometry advisory (56th-fire T2).\n\nThe wire projection of the engine's `core.GeometryWarning`. Advisory only:\na warning NEVER changes a measured quantity — it flags geometry that is\nvalid but likely a mistake (e.g. a stale dependent-height default). Present\non BOTH tiers — a correctness/safety signal, not a paid feature.",
        -                  "properties": {
        -                    "affected_params": {
        -                      "items": {
        -                        "type": "string"
        -                      },
        -                      "type": "array"
        -                    },
        -                    "code": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "detail": {
        -                      "additionalProperties": {
        -                        "type": "number"
        -                      },
        -                      "type": "object"
        -                    },
        -                    "message": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "severity": {
        -                      "enum": [
        -                        "info",
        -                        "advisory",
        -                        "caution"
        -                      ],
        -                      "type": "string"
        -                    }
        -                  },
        -                  "required": [
        -                    "code",
        -                    "severity",
        -                    "message"
        -                  ],
        -                  "type": "object"
        -                },
        -                "type": "array"
        -              }
        -            },
        -            "required": [
        -              "assembly_slug",
        -              "standard",
        -              "parameters_used",
        -              "boq_rows",
        -              "totals_summary",
        -              "text_summary"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      },
        -      "error": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        -            "properties": {
        -              "code": {
        -                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        -                "enum": [
        -                  "RATE_LIMIT_EXCEEDED",
        -                  "TIER_INSUFFICIENT",
        -                  "INVALID_INPUT",
        -                  "SCHEMA_VERSION_MISMATCH",
        -                  "SCHEMA_INVARIANT_VIOLATION",
        -                  "UPSTREAM_TIMEOUT",
        -                  "BACKEND_FAILURE",
        -                  "IP_BLOCKED",
        -                  "RESOURCE_NOT_FOUND",
        -                  "RENDER_FAILURE",
        -                  "OCR_LOW_CONFIDENCE",
        -                  "MANUAL_REVIEW_REQUIRED",
        -                  "ACCEPTANCE_REQUIRED",
        -                  "INVALID_TOKEN"
        -                ],
        -                "type": "string"
        -              },
        -              "details": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "message": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "recoverable": {
        -                "type": "boolean"
        -              },
        -              "retry_after_seconds": {
        -                "anyOf": [
        -                  {
        -                    "minimum": 0,
        -                    "type": "integer"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              }
        -            },
        -            "required": [
        -              "code",
        -              "message",
        -              "recoverable"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      }
        -    },
        -    "required": [
        -      "_meta"
        -    ],
        -    "type": "object"
        -  },
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "_meta": {
        -        "additionalProperties": false,
        -        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        -        "properties": {
        -          "deliverables": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        -                "properties": {
        -                  "docx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "dxf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "expires_at": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  },
        -                  "pdf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "xlsx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "expires_at"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "document_id": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "issued_at": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "rate_limit_remaining": {
        -            "anyOf": [
        -              {
        -                "minimum": 0,
        -                "type": "integer"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "request_id": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "schema_version": {
        -            "const": "1.0.0",
        -            "default": "1.0.0",
        -            "type": "string"
        -          },
        -          "scope_boundary": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        -                "properties": {
        -                  "not_in_scope": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "produced": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "recommended_companions": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "type": "string"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "produced",
        -                  "not_in_scope"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tier": {
        -            "enum": [
        -              "free",
        -              "paid"
        -            ],
        -            "type": "string"
        -          },
        -          "tier_upgrade": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        -                "properties": {
        -                  "available_tiers": {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        -                      "properties": {
        -                        "billing": {
        -                          "enum": [
        -                            "one_off",
        -                            "monthly",
        -                            "annual"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "currency": {
        -                          "enum": [
        -                            "GBP",
        -                            "SGD",
        -                            "EUR",
        -                            "USD",
        -                            "CAD",
        -                            "AUD",
        -                            "NZD",
        -                            "MYR"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "display_name": {
        -                          "type": "string"
        -                        },
        -                        "price_local": {
        -                          "type": "number"
        -                        },
        -                        "tier_slug": {
        -                          "enum": [
        -                            "7_day_pass",
        -                            "solo",
        -                            "studio",
        -                            "practice"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "unlock_summary": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "tier_slug",
        -                        "display_name",
        -                        "price_local",
        -                        "currency",
        -                        "billing",
        -                        "unlock_summary"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "current_tier": {
        -                    "const": "free",
        -                    "default": "free",
        -                    "type": "string"
        -                  },
        -                  "pass_credit": {
        -                    "anyOf": [
        -                      {
        -                        "additionalProperties": false,
        -                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        -                        "properties": {
        -                          "amount_local": {
        -                            "type": "number"
        -                          },
        -                          "applies_to": {
        -                            "const": "solo_first_month",
        -                            "default": "solo_first_month",
        -                            "type": "string"
        -                          },
        -                          "currency": {
        -                            "type": "string"
        -                          },
        -                          "redeemable_until": {
        -                            "type": "string"
        -                          }
        -                        },
        -                        "required": [
        -                          "amount_local",
        -                          "currency",
        -                          "redeemable_until"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "pricing_url": {
        -                    "default": "https://civilquants.com/pricing",
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "available_tiers"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tos_url": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "upgrade_hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "warranty_disclaimer": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          }
        -        },
        -        "required": [
        -          "request_id",
        -          "issued_at",
        -          "tier"
        -        ],
        -        "type": "object"
        -      },
        -      "data": {
        -        "default": null,
        -        "title": "Data"
        -      },
        -      "error": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        -            "properties": {
        -              "code": {
        -                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        -                "enum": [
        -                  "RATE_LIMIT_EXCEEDED",
        -                  "TIER_INSUFFICIENT",
        -                  "INVALID_INPUT",
        -                  "SCHEMA_VERSION_MISMATCH",
        -                  "SCHEMA_INVARIANT_VIOLATION",
        -                  "UPSTREAM_TIMEOUT",
        -                  "BACKEND_FAILURE",
        -                  "IP_BLOCKED",
        -                  "RESOURCE_NOT_FOUND",
        -                  "RENDER_FAILURE",
        -                  "OCR_LOW_CONFIDENCE",
        -                  "MANUAL_REVIEW_REQUIRED",
        -                  "ACCEPTANCE_REQUIRED",
        -                  "INVALID_TOKEN"
        -                ],
        -                "type": "string"
        -              },
        -              "details": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "message": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "recoverable": {
        -                "type": "boolean"
        -              },
        -              "retry_after_seconds": {
        -                "anyOf": [
        -                  {
        -                    "minimum": 0,
        -                    "type": "integer"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              }
        -            },
        -            "required": [
        -              "code",
        -              "message",
        -              "recoverable"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      }
        -    },
        -    "required": [
        -      "_meta"
        -    ],
        -    "type": "object"
        -  }
        -]New value: +[
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "_meta": {
        +        "additionalProperties": false,
        +        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        +        "properties": {
        +          "deliverables": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        +                "properties": {
        +                  "docx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "dxf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "expires_at": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  },
        +                  "pdf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "xlsx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "expires_at"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "document_id": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "issued_at": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "rate_limit_remaining": {
        +            "anyOf": [
        +              {
        +                "minimum": 0,
        +                "type": "integer"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "request_id": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "schema_version": {
        +            "const": "1.0.0",
        +            "default": "1.0.0",
        +            "type": "string"
        +          },
        +          "scope_boundary": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        +                "properties": {
        +                  "not_in_scope": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "produced": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "recommended_companions": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "type": "string"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "produced",
        +                  "not_in_scope"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tier": {
        +            "enum": [
        +              "free",
        +              "paid"
        +            ],
        +            "type": "string"
        +          },
        +          "tier_upgrade": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        +                "properties": {
        +                  "available_tiers": {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        +                      "properties": {
        +                        "billing": {
        +                          "enum": [
        +                            "one_off",
        +                            "monthly",
        +                            "annual"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "currency": {
        +                          "enum": [
        +                            "GBP",
        +                            "SGD",
        +                            "EUR",
        +                            "USD",
        +                            "CAD",
        +                            "AUD",
        +                            "NZD",
        +                            "MYR"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "display_name": {
        +                          "type": "string"
        +                        },
        +                        "price_local": {
        +                          "type": "number"
        +                        },
        +                        "tier_slug": {
        +                          "enum": [
        +                            "7_day_pass",
        +                            "solo",
        +                            "studio",
        +                            "practice"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "unlock_summary": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "tier_slug",
        +                        "display_name",
        +                        "price_local",
        +                        "currency",
        +                        "billing",
        +                        "unlock_summary"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "current_tier": {
        +                    "const": "free",
        +                    "default": "free",
        +                    "type": "string"
        +                  },
        +                  "pass_credit": {
        +                    "anyOf": [
        +                      {
        +                        "additionalProperties": false,
        +                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        +                        "properties": {
        +                          "amount_local": {
        +                            "type": "number"
        +                          },
        +                          "applies_to": {
        +                            "const": "solo_first_month",
        +                            "default": "solo_first_month",
        +                            "type": "string"
        +                          },
        +                          "currency": {
        +                            "type": "string"
        +                          },
        +                          "redeemable_until": {
        +                            "type": "string"
        +                          }
        +                        },
        +                        "required": [
        +                          "amount_local",
        +                          "currency",
        +                          "redeemable_until"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "pricing_url": {
        +                    "default": "https://civilquants.com/pricing",
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "available_tiers"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tos_url": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "upgrade_hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "warranty_disclaimer": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          }
        +        },
        +        "required": [
        +          "request_id",
        +          "issued_at",
        +          "tier"
        +        ],
        +        "type": "object"
        +      },
        +      "data": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Schema § 1.1 — the typed payload returned inside `MCPResponse[ComputeResult]`.\n\nFree-tier responses omit `drawings` (the downloadable CAD artefact\npointers — the paid differentiator); the bridge enforces this. The\n`audit_trail` and the inline `drawing` preview are present on BOTH tiers\n(V1 ALIGN / 60th-fire D + C). `text_summary` is bounded to 2000 chars —\nkeeps the LLM-facing summary token-cheap and forces longer narrative into\nBoQ row descriptions where it belongs. `warnings` is the non-fatal\ngeometry advisory list (both tiers).",
        +            "properties": {
        +              "assembly_slug": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "audit_trail": {
        +                "anyOf": [
        +                  {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.7 — paid-tier audit-trail entry.\n\nOne entry per BoQ row; `boq_row_index` ties to the row position in\n`ComputeResult.boq_rows`. `derivation` is the human-readable formula\nwalk-through; `formula` is the optional formal expression.",
        +                      "properties": {
        +                        "boq_row_index": {
        +                          "minimum": 0,
        +                          "type": "integer"
        +                        },
        +                        "derivation": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "formula": {
        +                          "anyOf": [
        +                            {
        +                              "type": "string"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ],
        +                          "default": null
        +                        },
        +                        "id": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "parameters_referenced": {
        +                          "items": {
        +                            "type": "string"
        +                          },
        +                          "type": "array"
        +                        }
        +                      },
        +                      "required": [
        +                        "id",
        +                        "boq_row_index",
        +                        "derivation"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "boq_rows": {
        +                "items": {
        +                  "additionalProperties": false,
        +                  "description": "Schema § 1.3 — a single bill row in the requested standard's format.\n\n`description` is the non-verbatim functional description per spec § 13.9 /\n§ 15 invariant — NEVER reproduces a standard's verbatim clause text.\n`rate` / `amount` ship null because rates are commodity data the customer\nowns; the engine's job is the measurement, not the pricing.",
        +                  "properties": {
        +                    "amount": {
        +                      "anyOf": [
        +                        {
        +                          "type": "number"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "attribution": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "audit_id": {
        +                      "anyOf": [
        +                        {
        +                          "type": "string"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "description": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "quantity": {
        +                      "minimum": 0,
        +                      "type": "number"
        +                    },
        +                    "rate": {
        +                      "anyOf": [
        +                        {
        +                          "type": "number"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "unit": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "work_section": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    }
        +                  },
        +                  "required": [
        +                    "work_section",
        +                    "description",
        +                    "quantity",
        +                    "unit",
        +                    "attribution"
        +                  ],
        +                  "type": "object"
        +                },
        +                "type": "array"
        +              },
        +              "drawing": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": false,
        +                    "description": "Schema § 1.6a — inline server-rendered SVG preview of the geometry.\n\nThe MCP mirror of the web ``/compute`` response's ``drawing`` field\n(``api.schemas.compute.DrawingRef``): the same on-screen dimensioned\ndrawing both tiers see in the workspace, surfaced on the MCP compute\nresponse so a chat client can render it inline (60th-fire item C). This\nis the on-screen preview — present on BOTH tiers per the free/paid\nboundary; the downloadable CAD artefacts (DXF / dimensioned PDF) remain\nthe paid differentiator via the export tools.\n\nDefined here rather than importing ``DrawingRef`` because the web\n``schemas`` package imports back into this module (``schemas.render``),\nso reusing it would create an import cycle — the MCP wire contract keeps\nits own copy, the same pattern as ``BoQRow`` / ``DrawingReference``.",
        +                    "properties": {
        +                      "entity_count": {
        +                        "minimum": 0,
        +                        "type": "integer"
        +                      },
        +                      "svg_b64": {
        +                        "minLength": 1,
        +                        "type": "string"
        +                      },
        +                      "unit_of_drawing": {
        +                        "const": "m",
        +                        "default": "m",
        +                        "type": "string"
        +                      },
        +                      "viewbox_height": {
        +                        "exclusiveMinimum": 0,
        +                        "type": "number"
        +                      },
        +                      "viewbox_width": {
        +                        "exclusiveMinimum": 0,
        +                        "type": "number"
        +                      },
        +                      "viewbox_x": {
        +                        "type": "number"
        +                      },
        +                      "viewbox_y": {
        +                        "type": "number"
        +                      }
        +                    },
        +                    "required": [
        +                      "svg_b64",
        +                      "viewbox_x",
        +                      "viewbox_y",
        +                      "viewbox_width",
        +                      "viewbox_height",
        +                      "entity_count"
        +                    ],
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "drawings": {
        +                "anyOf": [
        +                  {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.6 — paid-tier drawing artefact pointer.\n\n`url` is an R2-signed URL; expiry is carried in `_meta.deliverables.expires_at`\non the envelope (not duplicated here). `layers` is DXF-only; PDF/SVG\ncallers omit it.",
        +                      "properties": {
        +                        "drawing_type": {
        +                          "enum": [
        +                            "section",
        +                            "plan",
        +                            "elevation",
        +                            "isometric",
        +                            "detail"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "format": {
        +                          "enum": [
        +                            "DXF",
        +                            "PDF",
        +                            "SVG"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "layers": {
        +                          "anyOf": [
        +                            {
        +                              "items": {
        +                                "type": "string"
        +                              },
        +                              "type": "array"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ],
        +                          "default": null
        +                        },
        +                        "scale": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "sheet_size": {
        +                          "enum": [
        +                            "A1",
        +                            "A2",
        +                            "A3",
        +                            "A4"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "url": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "drawing_type",
        +                        "format",
        +                        "url",
        +                        "sheet_size",
        +                        "scale"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "parameters_used": {
        +                "additionalProperties": false,
        +                "description": "Schema § 1.2 — the parameter snapshot the engine actually used.\n\nSplits user-supplied values from engine defaults so customers can see\nwhich numbers came from them and which the engine filled in. Every\ndefaulted parameter SHOULD have a corresponding entry in `assumptions`\n— the bridge layer enforces this when wrapping engine output.",
        +                "properties": {
        +                  "assumptions": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "engine_defaults": {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  "resolved_from_description": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "additionalProperties": false,
        +                          "description": "Schema § 1.2 — a parameter resolved by the forgiving-input layer.\n\nPopulated by the Track B-Forgiving Haiku-4.5 resolution pass; until that\nlayer lands, instances are constructed only by tests. `source` distinguishes\nthe resolution path so customers can audit which fields were inferred.",
        +                          "properties": {
        +                            "confidence": {
        +                              "anyOf": [
        +                                {
        +                                  "enum": [
        +                                    "high",
        +                                    "medium",
        +                                    "low"
        +                                  ],
        +                                  "type": "string"
        +                                },
        +                                {
        +                                  "type": "null"
        +                                }
        +                              ],
        +                              "default": null
        +                            },
        +                            "field_name": {
        +                              "minLength": 1,
        +                              "type": "string"
        +                            },
        +                            "resolved_value": {},
        +                            "source": {
        +                              "enum": [
        +                                "description_field",
        +                                "haiku_resolution",
        +                                "engine_default"
        +                              ],
        +                              "type": "string"
        +                            }
        +                          },
        +                          "required": [
        +                            "field_name",
        +                            "resolved_value",
        +                            "source"
        +                          ],
        +                          "type": "object"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "user_supplied": {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  }
        +                },
        +                "type": "object"
        +              },
        +              "standard": {
        +                "enum": [
        +                  "CESMM4",
        +                  "NRM2",
        +                  "SMM7",
        +                  "MMHW"
        +                ],
        +                "type": "string"
        +              },
        +              "text_summary": {
        +                "maxLength": 2000,
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "totals_summary": {
        +                "additionalProperties": false,
        +                "description": "Schema § 1.4 — totals_summary as a typed wrapper around the free-form dict.\n\nWire shape is a flat object (`{\"concrete_m3\": {...}, \"rebar_t\": {...}}`).\nWe model it as `RootModel`-equivalent via `model_config(extra=\"allow\")`\n+ a single `__root__`-style `entries` dict. Pydantic v2 recommends\n`RootModel` for free-form roots; using a wrapper class keeps the import\nsurface uniform with the rest of this module.",
        +                "properties": {
        +                  "entries": {
        +                    "additionalProperties": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.4 — single material/work-class total entry.",
        +                      "properties": {
        +                        "quantity": {
        +                          "minimum": 0,
        +                          "type": "number"
        +                        },
        +                        "unit": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "quantity",
        +                        "unit"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "object"
        +                  }
        +                },
        +                "type": "object"
        +              },
        +              "warnings": {
        +                "items": {
        +                  "additionalProperties": false,
        +                  "description": "Schema § 1.8 — a non-fatal geometry advisory (56th-fire T2).\n\nThe wire projection of the engine's `core.GeometryWarning`. Advisory only:\na warning NEVER changes a measured quantity — it flags geometry that is\nvalid but likely a mistake (e.g. a stale dependent-height default). Present\non BOTH tiers — a correctness/safety signal, not a paid feature.",
        +                  "properties": {
        +                    "affected_params": {
        +                      "items": {
        +                        "type": "string"
        +                      },
        +                      "type": "array"
        +                    },
        +                    "code": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "detail": {
        +                      "additionalProperties": {
        +                        "type": "number"
        +                      },
        +                      "type": "object"
        +                    },
        +                    "message": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "severity": {
        +                      "enum": [
        +                        "info",
        +                        "advisory",
        +                        "caution"
        +                      ],
        +                      "type": "string"
        +                    }
        +                  },
        +                  "required": [
        +                    "code",
        +                    "severity",
        +                    "message"
        +                  ],
        +                  "type": "object"
        +                },
        +                "type": "array"
        +              }
        +            },
        +            "required": [
        +              "assembly_slug",
        +              "standard",
        +              "parameters_used",
        +              "boq_rows",
        +              "totals_summary",
        +              "text_summary"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      },
        +      "error": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        +            "properties": {
        +              "code": {
        +                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        +                "enum": [
        +                  "RATE_LIMIT_EXCEEDED",
        +                  "TIER_INSUFFICIENT",
        +                  "INVALID_INPUT",
        +                  "SCHEMA_VERSION_MISMATCH",
        +                  "SCHEMA_INVARIANT_VIOLATION",
        +                  "UPSTREAM_TIMEOUT",
        +                  "BACKEND_FAILURE",
        +                  "IP_BLOCKED",
        +                  "RESOURCE_NOT_FOUND",
        +                  "RENDER_FAILURE",
        +                  "OCR_LOW_CONFIDENCE",
        +                  "MANUAL_REVIEW_REQUIRED",
        +                  "ACCEPTANCE_REQUIRED",
        +                  "INVALID_TOKEN"
        +                ],
        +                "type": "string"
        +              },
        +              "details": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "message": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "recoverable": {
        +                "type": "boolean"
        +              },
        +              "retry_after_seconds": {
        +                "anyOf": [
        +                  {
        +                    "minimum": 0,
        +                    "type": "integer"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              }
        +            },
        +            "required": [
        +              "code",
        +              "message",
        +              "recoverable"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      }
        +    },
        +    "required": [
        +      "_meta"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "_meta": {
        +        "additionalProperties": false,
        +        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        +        "properties": {
        +          "deliverables": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        +                "properties": {
        +                  "docx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "dxf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "expires_at": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  },
        +                  "pdf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "xlsx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "expires_at"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "document_id": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "issued_at": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "rate_limit_remaining": {
        +            "anyOf": [
        +              {
        +                "minimum": 0,
        +                "type": "integer"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "request_id": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "schema_version": {
        +            "const": "1.0.0",
        +            "default": "1.0.0",
        +            "type": "string"
        +          },
        +          "scope_boundary": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        +                "properties": {
        +                  "not_in_scope": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "produced": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "recommended_companions": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "type": "string"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "produced",
        +                  "not_in_scope"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tier": {
        +            "enum": [
        +              "free",
        +              "paid"
        +            ],
        +            "type": "string"
        +          },
        +          "tier_upgrade": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        +                "properties": {
        +                  "available_tiers": {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        +                      "properties": {
        +                        "billing": {
        +                          "enum": [
        +                            "one_off",
        +                            "monthly",
        +                            "annual"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "currency": {
        +                          "enum": [
        +                            "GBP",
        +                            "SGD",
        +                            "EUR",
        +                            "USD",
        +                            "CAD",
        +                            "AUD",
        +                            "NZD",
        +                            "MYR"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "display_name": {
        +                          "type": "string"
        +                        },
        +                        "price_local": {
        +                          "type": "number"
        +                        },
        +                        "tier_slug": {
        +                          "enum": [
        +                            "7_day_pass",
        +                            "solo",
        +                            "studio",
        +                            "practice"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "unlock_summary": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "tier_slug",
        +                        "display_name",
        +                        "price_local",
        +                        "currency",
        +                        "billing",
        +                        "unlock_summary"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "current_tier": {
        +                    "const": "free",
        +                    "default": "free",
        +                    "type": "string"
        +                  },
        +                  "pass_credit": {
        +                    "anyOf": [
        +                      {
        +                        "additionalProperties": false,
        +                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        +                        "properties": {
        +                          "amount_local": {
        +                            "type": "number"
        +                          },
        +                          "applies_to": {
        +                            "const": "solo_first_month",
        +                            "default": "solo_first_month",
        +                            "type": "string"
        +                          },
        +                          "currency": {
        +                            "type": "string"
        +                          },
        +                          "redeemable_until": {
        +                            "type": "string"
        +                          }
        +                        },
        +                        "required": [
        +                          "amount_local",
        +                          "currency",
        +                          "redeemable_until"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "pricing_url": {
        +                    "default": "https://civilquants.com/pricing",
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "available_tiers"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tos_url": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "upgrade_hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "warranty_disclaimer": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          }
        +        },
        +        "required": [
        +          "request_id",
        +          "issued_at",
        +          "tier"
        +        ],
        +        "type": "object"
        +      },
        +      "data": {
        +        "default": null,
        +        "title": "Data"
        +      },
        +      "error": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        +            "properties": {
        +              "code": {
        +                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        +                "enum": [
        +                  "RATE_LIMIT_EXCEEDED",
        +                  "TIER_INSUFFICIENT",
        +                  "INVALID_INPUT",
        +                  "SCHEMA_VERSION_MISMATCH",
        +                  "SCHEMA_INVARIANT_VIOLATION",
        +                  "UPSTREAM_TIMEOUT",
        +                  "BACKEND_FAILURE",
        +                  "IP_BLOCKED",
        +                  "RESOURCE_NOT_FOUND",
        +                  "RENDER_FAILURE",
        +                  "OCR_LOW_CONFIDENCE",
        +                  "MANUAL_REVIEW_REQUIRED",
        +                  "ACCEPTANCE_REQUIRED",
        +                  "INVALID_TOKEN"
        +                ],
        +                "type": "string"
        +              },
        +              "details": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "message": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "recoverable": {
        +                "type": "boolean"
        +              },
        +              "retry_after_seconds": {
        +                "anyOf": [
        +                  {
        +                    "minimum": 0,
        +                    "type": "integer"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              }
        +            },
        +            "required": [
        +              "code",
        +              "message",
        +              "recoverable"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      }
        +    },
        +    "required": [
        +      "_meta"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedcompute_gabion_wall3 fields changed
      • addedInput schema / properties / deliverables
        Added value: +{
        +  "anyOf": [
        +    {
        +      "items": {
        +        "const": "xlsx",
        +        "type": "string"
        +      },
        +      "type": "array"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null
        +}
      • addedInput schema / properties / output_mode
        Added value: +{
        +  "default": "full_json",
        +  "enum": [
        +    "summary",
        +    "boq",
        +    "boq_with_backup",
        +    "full_json"
        +  ],
        +  "type": "string"
        +}
      • changedOutput schema / properties / result / anyOf
        Previous value: -[
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "_meta": {
        -        "additionalProperties": false,
        -        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        -        "properties": {
        -          "deliverables": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        -                "properties": {
        -                  "docx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "dxf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "expires_at": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  },
        -                  "pdf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "xlsx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "expires_at"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "document_id": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "issued_at": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "rate_limit_remaining": {
        -            "anyOf": [
        -              {
        -                "minimum": 0,
        -                "type": "integer"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "request_id": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "schema_version": {
        -            "const": "1.0.0",
        -            "default": "1.0.0",
        -            "type": "string"
        -          },
        -          "scope_boundary": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        -                "properties": {
        -                  "not_in_scope": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "produced": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "recommended_companions": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "type": "string"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "produced",
        -                  "not_in_scope"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tier": {
        -            "enum": [
        -              "free",
        -              "paid"
        -            ],
        -            "type": "string"
        -          },
        -          "tier_upgrade": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        -                "properties": {
        -                  "available_tiers": {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        -                      "properties": {
        -                        "billing": {
        -                          "enum": [
        -                            "one_off",
        -                            "monthly",
        -                            "annual"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "currency": {
        -                          "enum": [
        -                            "GBP",
        -                            "SGD",
        -                            "EUR",
        -                            "USD",
        -                            "CAD",
        -                            "AUD",
        -                            "NZD",
        -                            "MYR"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "display_name": {
        -                          "type": "string"
        -                        },
        -                        "price_local": {
        -                          "type": "number"
        -                        },
        -                        "tier_slug": {
        -                          "enum": [
        -                            "7_day_pass",
        -                            "solo",
        -                            "studio",
        -                            "practice"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "unlock_summary": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "tier_slug",
        -                        "display_name",
        -                        "price_local",
        -                        "currency",
        -                        "billing",
        -                        "unlock_summary"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "current_tier": {
        -                    "const": "free",
        -                    "default": "free",
        -                    "type": "string"
        -                  },
        -                  "pass_credit": {
        -                    "anyOf": [
        -                      {
        -                        "additionalProperties": false,
        -                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        -                        "properties": {
        -                          "amount_local": {
        -                            "type": "number"
        -                          },
        -                          "applies_to": {
        -                            "const": "solo_first_month",
        -                            "default": "solo_first_month",
        -                            "type": "string"
        -                          },
        -                          "currency": {
        -                            "type": "string"
        -                          },
        -                          "redeemable_until": {
        -                            "type": "string"
        -                          }
        -                        },
        -                        "required": [
        -                          "amount_local",
        -                          "currency",
        -                          "redeemable_until"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "pricing_url": {
        -                    "default": "https://civilquants.com/pricing",
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "available_tiers"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tos_url": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "upgrade_hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "warranty_disclaimer": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          }
        -        },
        -        "required": [
        -          "request_id",
        -          "issued_at",
        -          "tier"
        -        ],
        -        "type": "object"
        -      },
        -      "data": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Schema § 1.1 — the typed payload returned inside `MCPResponse[ComputeResult]`.\n\nFree-tier responses MUST omit `drawings` and `audit_trail` (the bridge\nenforces this); paid-tier responses populate both. `text_summary` is\nbounded to 2000 chars — keeps the LLM-facing summary token-cheap and\nforces longer narrative into BoQ row descriptions where it belongs.\n`warnings` is the non-fatal geometry advisory list (both tiers).",
        -            "properties": {
        -              "assembly_slug": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "audit_trail": {
        -                "anyOf": [
        -                  {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.7 — paid-tier audit-trail entry.\n\nOne entry per BoQ row; `boq_row_index` ties to the row position in\n`ComputeResult.boq_rows`. `derivation` is the human-readable formula\nwalk-through; `formula` is the optional formal expression.",
        -                      "properties": {
        -                        "boq_row_index": {
        -                          "minimum": 0,
        -                          "type": "integer"
        -                        },
        -                        "derivation": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "formula": {
        -                          "anyOf": [
        -                            {
        -                              "type": "string"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ],
        -                          "default": null
        -                        },
        -                        "id": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "parameters_referenced": {
        -                          "items": {
        -                            "type": "string"
        -                          },
        -                          "type": "array"
        -                        }
        -                      },
        -                      "required": [
        -                        "id",
        -                        "boq_row_index",
        -                        "derivation"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "boq_rows": {
        -                "items": {
        -                  "additionalProperties": false,
        -                  "description": "Schema § 1.3 — a single bill row in the requested standard's format.\n\n`description` is the non-verbatim functional description per spec § 13.9 /\n§ 15 invariant — NEVER reproduces a standard's verbatim clause text.\n`rate` / `amount` ship null because rates are commodity data the customer\nowns; the engine's job is the measurement, not the pricing.",
        -                  "properties": {
        -                    "amount": {
        -                      "anyOf": [
        -                        {
        -                          "type": "number"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "attribution": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "audit_id": {
        -                      "anyOf": [
        -                        {
        -                          "type": "string"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "description": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "quantity": {
        -                      "minimum": 0,
        -                      "type": "number"
        -                    },
        -                    "rate": {
        -                      "anyOf": [
        -                        {
        -                          "type": "number"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "unit": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "work_section": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    }
        -                  },
        -                  "required": [
        -                    "work_section",
        -                    "description",
        -                    "quantity",
        -                    "unit",
        -                    "attribution"
        -                  ],
        -                  "type": "object"
        -                },
        -                "type": "array"
        -              },
        -              "drawings": {
        -                "anyOf": [
        -                  {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.6 — paid-tier drawing artefact pointer.\n\n`url` is an R2-signed URL; expiry is carried in `_meta.deliverables.expires_at`\non the envelope (not duplicated here). `layers` is DXF-only; PDF/SVG\ncallers omit it.",
        -                      "properties": {
        -                        "drawing_type": {
        -                          "enum": [
        -                            "section",
        -                            "plan",
        -                            "elevation",
        -                            "isometric",
        -                            "detail"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "format": {
        -                          "enum": [
        -                            "DXF",
        -                            "PDF",
        -                            "SVG"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "layers": {
        -                          "anyOf": [
        -                            {
        -                              "items": {
        -                                "type": "string"
        -                              },
        -                              "type": "array"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ],
        -                          "default": null
        -                        },
        -                        "scale": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "sheet_size": {
        -                          "enum": [
        -                            "A1",
        -                            "A2",
        -                            "A3",
        -                            "A4"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "url": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "drawing_type",
        -                        "format",
        -                        "url",
        -                        "sheet_size",
        -                        "scale"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "parameters_used": {
        -                "additionalProperties": false,
        -                "description": "Schema § 1.2 — the parameter snapshot the engine actually used.\n\nSplits user-supplied values from engine defaults so customers can see\nwhich numbers came from them and which the engine filled in. Every\ndefaulted parameter SHOULD have a corresponding entry in `assumptions`\n— the bridge layer enforces this when wrapping engine output.",
        -                "properties": {
        -                  "assumptions": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "engine_defaults": {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  "resolved_from_description": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "additionalProperties": false,
        -                          "description": "Schema § 1.2 — a parameter resolved by the forgiving-input layer.\n\nPopulated by the Track B-Forgiving Haiku-4.5 resolution pass; until that\nlayer lands, instances are constructed only by tests. `source` distinguishes\nthe resolution path so customers can audit which fields were inferred.",
        -                          "properties": {
        -                            "confidence": {
        -                              "anyOf": [
        -                                {
        -                                  "enum": [
        -                                    "high",
        -                                    "medium",
        -                                    "low"
        -                                  ],
        -                                  "type": "string"
        -                                },
        -                                {
        -                                  "type": "null"
        -                                }
        -                              ],
        -                              "default": null
        -                            },
        -                            "field_name": {
        -                              "minLength": 1,
        -                              "type": "string"
        -                            },
        -                            "resolved_value": {},
        -                            "source": {
        -                              "enum": [
        -                                "description_field",
        -                                "haiku_resolution",
        -                                "engine_default"
        -                              ],
        -                              "type": "string"
        -                            }
        -                          },
        -                          "required": [
        -                            "field_name",
        -                            "resolved_value",
        -                            "source"
        -                          ],
        -                          "type": "object"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "user_supplied": {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  }
        -                },
        -                "type": "object"
        -              },
        -              "standard": {
        -                "enum": [
        -                  "CESMM4",
        -                  "NRM2",
        -                  "SMM7",
        -                  "MMHW"
        -                ],
        -                "type": "string"
        -              },
        -              "text_summary": {
        -                "maxLength": 2000,
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "totals_summary": {
        -                "additionalProperties": false,
        -                "description": "Schema § 1.4 — totals_summary as a typed wrapper around the free-form dict.\n\nWire shape is a flat object (`{\"concrete_m3\": {...}, \"rebar_t\": {...}}`).\nWe model it as `RootModel`-equivalent via `model_config(extra=\"allow\")`\n+ a single `__root__`-style `entries` dict. Pydantic v2 recommends\n`RootModel` for free-form roots; using a wrapper class keeps the import\nsurface uniform with the rest of this module.",
        -                "properties": {
        -                  "entries": {
        -                    "additionalProperties": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.4 — single material/work-class total entry.",
        -                      "properties": {
        -                        "quantity": {
        -                          "minimum": 0,
        -                          "type": "number"
        -                        },
        -                        "unit": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "quantity",
        -                        "unit"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "object"
        -                  }
        -                },
        -                "type": "object"
        -              },
        -              "warnings": {
        -                "items": {
        -                  "additionalProperties": false,
        -                  "description": "Schema § 1.8 — a non-fatal geometry advisory (56th-fire T2).\n\nThe wire projection of the engine's `core.GeometryWarning`. Advisory only:\na warning NEVER changes a measured quantity — it flags geometry that is\nvalid but likely a mistake (e.g. a stale dependent-height default). Present\non BOTH tiers — a correctness/safety signal, not a paid feature.",
        -                  "properties": {
        -                    "affected_params": {
        -                      "items": {
        -                        "type": "string"
        -                      },
        -                      "type": "array"
        -                    },
        -                    "code": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "detail": {
        -                      "additionalProperties": {
        -                        "type": "number"
        -                      },
        -                      "type": "object"
        -                    },
        -                    "message": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "severity": {
        -                      "enum": [
        -                        "info",
        -                        "advisory",
        -                        "caution"
        -                      ],
        -                      "type": "string"
        -                    }
        -                  },
        -                  "required": [
        -                    "code",
        -                    "severity",
        -                    "message"
        -                  ],
        -                  "type": "object"
        -                },
        -                "type": "array"
        -              }
        -            },
        -            "required": [
        -              "assembly_slug",
        -              "standard",
        -              "parameters_used",
        -              "boq_rows",
        -              "totals_summary",
        -              "text_summary"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      },
        -      "error": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        -            "properties": {
        -              "code": {
        -                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        -                "enum": [
        -                  "RATE_LIMIT_EXCEEDED",
        -                  "TIER_INSUFFICIENT",
        -                  "INVALID_INPUT",
        -                  "SCHEMA_VERSION_MISMATCH",
        -                  "SCHEMA_INVARIANT_VIOLATION",
        -                  "UPSTREAM_TIMEOUT",
        -                  "BACKEND_FAILURE",
        -                  "IP_BLOCKED",
        -                  "RESOURCE_NOT_FOUND",
        -                  "RENDER_FAILURE",
        -                  "OCR_LOW_CONFIDENCE",
        -                  "MANUAL_REVIEW_REQUIRED",
        -                  "ACCEPTANCE_REQUIRED",
        -                  "INVALID_TOKEN"
        -                ],
        -                "type": "string"
        -              },
        -              "details": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "message": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "recoverable": {
        -                "type": "boolean"
        -              },
        -              "retry_after_seconds": {
        -                "anyOf": [
        -                  {
        -                    "minimum": 0,
        -                    "type": "integer"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              }
        -            },
        -            "required": [
        -              "code",
        -              "message",
        -              "recoverable"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      }
        -    },
        -    "required": [
        -      "_meta"
        -    ],
        -    "type": "object"
        -  },
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "_meta": {
        -        "additionalProperties": false,
        -        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        -        "properties": {
        -          "deliverables": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        -                "properties": {
        -                  "docx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "dxf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "expires_at": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  },
        -                  "pdf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "xlsx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "expires_at"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "document_id": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "issued_at": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "rate_limit_remaining": {
        -            "anyOf": [
        -              {
        -                "minimum": 0,
        -                "type": "integer"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "request_id": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "schema_version": {
        -            "const": "1.0.0",
        -            "default": "1.0.0",
        -            "type": "string"
        -          },
        -          "scope_boundary": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        -                "properties": {
        -                  "not_in_scope": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "produced": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "recommended_companions": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "type": "string"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "produced",
        -                  "not_in_scope"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tier": {
        -            "enum": [
        -              "free",
        -              "paid"
        -            ],
        -            "type": "string"
        -          },
        -          "tier_upgrade": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        -                "properties": {
        -                  "available_tiers": {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        -                      "properties": {
        -                        "billing": {
        -                          "enum": [
        -                            "one_off",
        -                            "monthly",
        -                            "annual"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "currency": {
        -                          "enum": [
        -                            "GBP",
        -                            "SGD",
        -                            "EUR",
        -                            "USD",
        -                            "CAD",
        -                            "AUD",
        -                            "NZD",
        -                            "MYR"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "display_name": {
        -                          "type": "string"
        -                        },
        -                        "price_local": {
        -                          "type": "number"
        -                        },
        -                        "tier_slug": {
        -                          "enum": [
        -                            "7_day_pass",
        -                            "solo",
        -                            "studio",
        -                            "practice"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "unlock_summary": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "tier_slug",
        -                        "display_name",
        -                        "price_local",
        -                        "currency",
        -                        "billing",
        -                        "unlock_summary"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "current_tier": {
        -                    "const": "free",
        -                    "default": "free",
        -                    "type": "string"
        -                  },
        -                  "pass_credit": {
        -                    "anyOf": [
        -                      {
        -                        "additionalProperties": false,
        -                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        -                        "properties": {
        -                          "amount_local": {
        -                            "type": "number"
        -                          },
        -                          "applies_to": {
        -                            "const": "solo_first_month",
        -                            "default": "solo_first_month",
        -                            "type": "string"
        -                          },
        -                          "currency": {
        -                            "type": "string"
        -                          },
        -                          "redeemable_until": {
        -                            "type": "string"
        -                          }
        -                        },
        -                        "required": [
        -                          "amount_local",
        -                          "currency",
        -                          "redeemable_until"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "pricing_url": {
        -                    "default": "https://civilquants.com/pricing",
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "available_tiers"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tos_url": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "upgrade_hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "warranty_disclaimer": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          }
        -        },
        -        "required": [
        -          "request_id",
        -          "issued_at",
        -          "tier"
        -        ],
        -        "type": "object"
        -      },
        -      "data": {
        -        "default": null,
        -        "title": "Data"
        -      },
        -      "error": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        -            "properties": {
        -              "code": {
        -                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        -                "enum": [
        -                  "RATE_LIMIT_EXCEEDED",
        -                  "TIER_INSUFFICIENT",
        -                  "INVALID_INPUT",
        -                  "SCHEMA_VERSION_MISMATCH",
        -                  "SCHEMA_INVARIANT_VIOLATION",
        -                  "UPSTREAM_TIMEOUT",
        -                  "BACKEND_FAILURE",
        -                  "IP_BLOCKED",
        -                  "RESOURCE_NOT_FOUND",
        -                  "RENDER_FAILURE",
        -                  "OCR_LOW_CONFIDENCE",
        -                  "MANUAL_REVIEW_REQUIRED",
        -                  "ACCEPTANCE_REQUIRED",
        -                  "INVALID_TOKEN"
        -                ],
        -                "type": "string"
        -              },
        -              "details": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "message": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "recoverable": {
        -                "type": "boolean"
        -              },
        -              "retry_after_seconds": {
        -                "anyOf": [
        -                  {
        -                    "minimum": 0,
        -                    "type": "integer"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              }
        -            },
        -            "required": [
        -              "code",
        -              "message",
        -              "recoverable"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      }
        -    },
        -    "required": [
        -      "_meta"
        -    ],
        -    "type": "object"
        -  }
        -]New value: +[
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "_meta": {
        +        "additionalProperties": false,
        +        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        +        "properties": {
        +          "deliverables": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        +                "properties": {
        +                  "docx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "dxf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "expires_at": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  },
        +                  "pdf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "xlsx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "expires_at"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "document_id": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "issued_at": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "rate_limit_remaining": {
        +            "anyOf": [
        +              {
        +                "minimum": 0,
        +                "type": "integer"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "request_id": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "schema_version": {
        +            "const": "1.0.0",
        +            "default": "1.0.0",
        +            "type": "string"
        +          },
        +          "scope_boundary": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        +                "properties": {
        +                  "not_in_scope": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "produced": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "recommended_companions": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "type": "string"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "produced",
        +                  "not_in_scope"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tier": {
        +            "enum": [
        +              "free",
        +              "paid"
        +            ],
        +            "type": "string"
        +          },
        +          "tier_upgrade": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        +                "properties": {
        +                  "available_tiers": {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        +                      "properties": {
        +                        "billing": {
        +                          "enum": [
        +                            "one_off",
        +                            "monthly",
        +                            "annual"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "currency": {
        +                          "enum": [
        +                            "GBP",
        +                            "SGD",
        +                            "EUR",
        +                            "USD",
        +                            "CAD",
        +                            "AUD",
        +                            "NZD",
        +                            "MYR"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "display_name": {
        +                          "type": "string"
        +                        },
        +                        "price_local": {
        +                          "type": "number"
        +                        },
        +                        "tier_slug": {
        +                          "enum": [
        +                            "7_day_pass",
        +                            "solo",
        +                            "studio",
        +                            "practice"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "unlock_summary": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "tier_slug",
        +                        "display_name",
        +                        "price_local",
        +                        "currency",
        +                        "billing",
        +                        "unlock_summary"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "current_tier": {
        +                    "const": "free",
        +                    "default": "free",
        +                    "type": "string"
        +                  },
        +                  "pass_credit": {
        +                    "anyOf": [
        +                      {
        +                        "additionalProperties": false,
        +                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        +                        "properties": {
        +                          "amount_local": {
        +                            "type": "number"
        +                          },
        +                          "applies_to": {
        +                            "const": "solo_first_month",
        +                            "default": "solo_first_month",
        +                            "type": "string"
        +                          },
        +                          "currency": {
        +                            "type": "string"
        +                          },
        +                          "redeemable_until": {
        +                            "type": "string"
        +                          }
        +                        },
        +                        "required": [
        +                          "amount_local",
        +                          "currency",
        +                          "redeemable_until"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "pricing_url": {
        +                    "default": "https://civilquants.com/pricing",
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "available_tiers"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tos_url": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "upgrade_hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "warranty_disclaimer": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          }
        +        },
        +        "required": [
        +          "request_id",
        +          "issued_at",
        +          "tier"
        +        ],
        +        "type": "object"
        +      },
        +      "data": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Schema § 1.1 — the typed payload returned inside `MCPResponse[ComputeResult]`.\n\nFree-tier responses omit `drawings` (the downloadable CAD artefact\npointers — the paid differentiator); the bridge enforces this. The\n`audit_trail` and the inline `drawing` preview are present on BOTH tiers\n(V1 ALIGN / 60th-fire D + C). `text_summary` is bounded to 2000 chars —\nkeeps the LLM-facing summary token-cheap and forces longer narrative into\nBoQ row descriptions where it belongs. `warnings` is the non-fatal\ngeometry advisory list (both tiers).",
        +            "properties": {
        +              "assembly_slug": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "audit_trail": {
        +                "anyOf": [
        +                  {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.7 — paid-tier audit-trail entry.\n\nOne entry per BoQ row; `boq_row_index` ties to the row position in\n`ComputeResult.boq_rows`. `derivation` is the human-readable formula\nwalk-through; `formula` is the optional formal expression.",
        +                      "properties": {
        +                        "boq_row_index": {
        +                          "minimum": 0,
        +                          "type": "integer"
        +                        },
        +                        "derivation": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "formula": {
        +                          "anyOf": [
        +                            {
        +                              "type": "string"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ],
        +                          "default": null
        +                        },
        +                        "id": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "parameters_referenced": {
        +                          "items": {
        +                            "type": "string"
        +                          },
        +                          "type": "array"
        +                        }
        +                      },
        +                      "required": [
        +                        "id",
        +                        "boq_row_index",
        +                        "derivation"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "boq_rows": {
        +                "items": {
        +                  "additionalProperties": false,
        +                  "description": "Schema § 1.3 — a single bill row in the requested standard's format.\n\n`description` is the non-verbatim functional description per spec § 13.9 /\n§ 15 invariant — NEVER reproduces a standard's verbatim clause text.\n`rate` / `amount` ship null because rates are commodity data the customer\nowns; the engine's job is the measurement, not the pricing.",
        +                  "properties": {
        +                    "amount": {
        +                      "anyOf": [
        +                        {
        +                          "type": "number"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "attribution": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "audit_id": {
        +                      "anyOf": [
        +                        {
        +                          "type": "string"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "description": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "quantity": {
        +                      "minimum": 0,
        +                      "type": "number"
        +                    },
        +                    "rate": {
        +                      "anyOf": [
        +                        {
        +                          "type": "number"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "unit": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "work_section": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    }
        +                  },
        +                  "required": [
        +                    "work_section",
        +                    "description",
        +                    "quantity",
        +                    "unit",
        +                    "attribution"
        +                  ],
        +                  "type": "object"
        +                },
        +                "type": "array"
        +              },
        +              "drawing": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": false,
        +                    "description": "Schema § 1.6a — inline server-rendered SVG preview of the geometry.\n\nThe MCP mirror of the web ``/compute`` response's ``drawing`` field\n(``api.schemas.compute.DrawingRef``): the same on-screen dimensioned\ndrawing both tiers see in the workspace, surfaced on the MCP compute\nresponse so a chat client can render it inline (60th-fire item C). This\nis the on-screen preview — present on BOTH tiers per the free/paid\nboundary; the downloadable CAD artefacts (DXF / dimensioned PDF) remain\nthe paid differentiator via the export tools.\n\nDefined here rather than importing ``DrawingRef`` because the web\n``schemas`` package imports back into this module (``schemas.render``),\nso reusing it would create an import cycle — the MCP wire contract keeps\nits own copy, the same pattern as ``BoQRow`` / ``DrawingReference``.",
        +                    "properties": {
        +                      "entity_count": {
        +                        "minimum": 0,
        +                        "type": "integer"
        +                      },
        +                      "svg_b64": {
        +                        "minLength": 1,
        +                        "type": "string"
        +                      },
        +                      "unit_of_drawing": {
        +                        "const": "m",
        +                        "default": "m",
        +                        "type": "string"
        +                      },
        +                      "viewbox_height": {
        +                        "exclusiveMinimum": 0,
        +                        "type": "number"
        +                      },
        +                      "viewbox_width": {
        +                        "exclusiveMinimum": 0,
        +                        "type": "number"
        +                      },
        +                      "viewbox_x": {
        +                        "type": "number"
        +                      },
        +                      "viewbox_y": {
        +                        "type": "number"
        +                      }
        +                    },
        +                    "required": [
        +                      "svg_b64",
        +                      "viewbox_x",
        +                      "viewbox_y",
        +                      "viewbox_width",
        +                      "viewbox_height",
        +                      "entity_count"
        +                    ],
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "drawings": {
        +                "anyOf": [
        +                  {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.6 — paid-tier drawing artefact pointer.\n\n`url` is an R2-signed URL; expiry is carried in `_meta.deliverables.expires_at`\non the envelope (not duplicated here). `layers` is DXF-only; PDF/SVG\ncallers omit it.",
        +                      "properties": {
        +                        "drawing_type": {
        +                          "enum": [
        +                            "section",
        +                            "plan",
        +                            "elevation",
        +                            "isometric",
        +                            "detail"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "format": {
        +                          "enum": [
        +                            "DXF",
        +                            "PDF",
        +                            "SVG"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "layers": {
        +                          "anyOf": [
        +                            {
        +                              "items": {
        +                                "type": "string"
        +                              },
        +                              "type": "array"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ],
        +                          "default": null
        +                        },
        +                        "scale": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "sheet_size": {
        +                          "enum": [
        +                            "A1",
        +                            "A2",
        +                            "A3",
        +                            "A4"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "url": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "drawing_type",
        +                        "format",
        +                        "url",
        +                        "sheet_size",
        +                        "scale"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "parameters_used": {
        +                "additionalProperties": false,
        +                "description": "Schema § 1.2 — the parameter snapshot the engine actually used.\n\nSplits user-supplied values from engine defaults so customers can see\nwhich numbers came from them and which the engine filled in. Every\ndefaulted parameter SHOULD have a corresponding entry in `assumptions`\n— the bridge layer enforces this when wrapping engine output.",
        +                "properties": {
        +                  "assumptions": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "engine_defaults": {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  "resolved_from_description": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "additionalProperties": false,
        +                          "description": "Schema § 1.2 — a parameter resolved by the forgiving-input layer.\n\nPopulated by the Track B-Forgiving Haiku-4.5 resolution pass; until that\nlayer lands, instances are constructed only by tests. `source` distinguishes\nthe resolution path so customers can audit which fields were inferred.",
        +                          "properties": {
        +                            "confidence": {
        +                              "anyOf": [
        +                                {
        +                                  "enum": [
        +                                    "high",
        +                                    "medium",
        +                                    "low"
        +                                  ],
        +                                  "type": "string"
        +                                },
        +                                {
        +                                  "type": "null"
        +                                }
        +                              ],
        +                              "default": null
        +                            },
        +                            "field_name": {
        +                              "minLength": 1,
        +                              "type": "string"
        +                            },
        +                            "resolved_value": {},
        +                            "source": {
        +                              "enum": [
        +                                "description_field",
        +                                "haiku_resolution",
        +                                "engine_default"
        +                              ],
        +                              "type": "string"
        +                            }
        +                          },
        +                          "required": [
        +                            "field_name",
        +                            "resolved_value",
        +                            "source"
        +                          ],
        +                          "type": "object"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "user_supplied": {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  }
        +                },
        +                "type": "object"
        +              },
        +              "standard": {
        +                "enum": [
        +                  "CESMM4",
        +                  "NRM2",
        +                  "SMM7",
        +                  "MMHW"
        +                ],
        +                "type": "string"
        +              },
        +              "text_summary": {
        +                "maxLength": 2000,
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "totals_summary": {
        +                "additionalProperties": false,
        +                "description": "Schema § 1.4 — totals_summary as a typed wrapper around the free-form dict.\n\nWire shape is a flat object (`{\"concrete_m3\": {...}, \"rebar_t\": {...}}`).\nWe model it as `RootModel`-equivalent via `model_config(extra=\"allow\")`\n+ a single `__root__`-style `entries` dict. Pydantic v2 recommends\n`RootModel` for free-form roots; using a wrapper class keeps the import\nsurface uniform with the rest of this module.",
        +                "properties": {
        +                  "entries": {
        +                    "additionalProperties": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.4 — single material/work-class total entry.",
        +                      "properties": {
        +                        "quantity": {
        +                          "minimum": 0,
        +                          "type": "number"
        +                        },
        +                        "unit": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "quantity",
        +                        "unit"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "object"
        +                  }
        +                },
        +                "type": "object"
        +              },
        +              "warnings": {
        +                "items": {
        +                  "additionalProperties": false,
        +                  "description": "Schema § 1.8 — a non-fatal geometry advisory (56th-fire T2).\n\nThe wire projection of the engine's `core.GeometryWarning`. Advisory only:\na warning NEVER changes a measured quantity — it flags geometry that is\nvalid but likely a mistake (e.g. a stale dependent-height default). Present\non BOTH tiers — a correctness/safety signal, not a paid feature.",
        +                  "properties": {
        +                    "affected_params": {
        +                      "items": {
        +                        "type": "string"
        +                      },
        +                      "type": "array"
        +                    },
        +                    "code": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "detail": {
        +                      "additionalProperties": {
        +                        "type": "number"
        +                      },
        +                      "type": "object"
        +                    },
        +                    "message": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "severity": {
        +                      "enum": [
        +                        "info",
        +                        "advisory",
        +                        "caution"
        +                      ],
        +                      "type": "string"
        +                    }
        +                  },
        +                  "required": [
        +                    "code",
        +                    "severity",
        +                    "message"
        +                  ],
        +                  "type": "object"
        +                },
        +                "type": "array"
        +              }
        +            },
        +            "required": [
        +              "assembly_slug",
        +              "standard",
        +              "parameters_used",
        +              "boq_rows",
        +              "totals_summary",
        +              "text_summary"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      },
        +      "error": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        +            "properties": {
        +              "code": {
        +                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        +                "enum": [
        +                  "RATE_LIMIT_EXCEEDED",
        +                  "TIER_INSUFFICIENT",
        +                  "INVALID_INPUT",
        +                  "SCHEMA_VERSION_MISMATCH",
        +                  "SCHEMA_INVARIANT_VIOLATION",
        +                  "UPSTREAM_TIMEOUT",
        +                  "BACKEND_FAILURE",
        +                  "IP_BLOCKED",
        +                  "RESOURCE_NOT_FOUND",
        +                  "RENDER_FAILURE",
        +                  "OCR_LOW_CONFIDENCE",
        +                  "MANUAL_REVIEW_REQUIRED",
        +                  "ACCEPTANCE_REQUIRED",
        +                  "INVALID_TOKEN"
        +                ],
        +                "type": "string"
        +              },
        +              "details": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "message": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "recoverable": {
        +                "type": "boolean"
        +              },
        +              "retry_after_seconds": {
        +                "anyOf": [
        +                  {
        +                    "minimum": 0,
        +                    "type": "integer"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              }
        +            },
        +            "required": [
        +              "code",
        +              "message",
        +              "recoverable"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      }
        +    },
        +    "required": [
        +      "_meta"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "_meta": {
        +        "additionalProperties": false,
        +        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        +        "properties": {
        +          "deliverables": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        +                "properties": {
        +                  "docx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "dxf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "expires_at": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  },
        +                  "pdf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "xlsx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "expires_at"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "document_id": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "issued_at": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "rate_limit_remaining": {
        +            "anyOf": [
        +              {
        +                "minimum": 0,
        +                "type": "integer"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "request_id": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "schema_version": {
        +            "const": "1.0.0",
        +            "default": "1.0.0",
        +            "type": "string"
        +          },
        +          "scope_boundary": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        +                "properties": {
        +                  "not_in_scope": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "produced": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "recommended_companions": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "type": "string"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "produced",
        +                  "not_in_scope"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tier": {
        +            "enum": [
        +              "free",
        +              "paid"
        +            ],
        +            "type": "string"
        +          },
        +          "tier_upgrade": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        +                "properties": {
        +                  "available_tiers": {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        +                      "properties": {
        +                        "billing": {
        +                          "enum": [
        +                            "one_off",
        +                            "monthly",
        +                            "annual"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "currency": {
        +                          "enum": [
        +                            "GBP",
        +                            "SGD",
        +                            "EUR",
        +                            "USD",
        +                            "CAD",
        +                            "AUD",
        +                            "NZD",
        +                            "MYR"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "display_name": {
        +                          "type": "string"
        +                        },
        +                        "price_local": {
        +                          "type": "number"
        +                        },
        +                        "tier_slug": {
        +                          "enum": [
        +                            "7_day_pass",
        +                            "solo",
        +                            "studio",
        +                            "practice"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "unlock_summary": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "tier_slug",
        +                        "display_name",
        +                        "price_local",
        +                        "currency",
        +                        "billing",
        +                        "unlock_summary"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "current_tier": {
        +                    "const": "free",
        +                    "default": "free",
        +                    "type": "string"
        +                  },
        +                  "pass_credit": {
        +                    "anyOf": [
        +                      {
        +                        "additionalProperties": false,
        +                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        +                        "properties": {
        +                          "amount_local": {
        +                            "type": "number"
        +                          },
        +                          "applies_to": {
        +                            "const": "solo_first_month",
        +                            "default": "solo_first_month",
        +                            "type": "string"
        +                          },
        +                          "currency": {
        +                            "type": "string"
        +                          },
        +                          "redeemable_until": {
        +                            "type": "string"
        +                          }
        +                        },
        +                        "required": [
        +                          "amount_local",
        +                          "currency",
        +                          "redeemable_until"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "pricing_url": {
        +                    "default": "https://civilquants.com/pricing",
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "available_tiers"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tos_url": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "upgrade_hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "warranty_disclaimer": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          }
        +        },
        +        "required": [
        +          "request_id",
        +          "issued_at",
        +          "tier"
        +        ],
        +        "type": "object"
        +      },
        +      "data": {
        +        "default": null,
        +        "title": "Data"
        +      },
        +      "error": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        +            "properties": {
        +              "code": {
        +                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        +                "enum": [
        +                  "RATE_LIMIT_EXCEEDED",
        +                  "TIER_INSUFFICIENT",
        +                  "INVALID_INPUT",
        +                  "SCHEMA_VERSION_MISMATCH",
        +                  "SCHEMA_INVARIANT_VIOLATION",
        +                  "UPSTREAM_TIMEOUT",
        +                  "BACKEND_FAILURE",
        +                  "IP_BLOCKED",
        +                  "RESOURCE_NOT_FOUND",
        +                  "RENDER_FAILURE",
        +                  "OCR_LOW_CONFIDENCE",
        +                  "MANUAL_REVIEW_REQUIRED",
        +                  "ACCEPTANCE_REQUIRED",
        +                  "INVALID_TOKEN"
        +                ],
        +                "type": "string"
        +              },
        +              "details": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "message": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "recoverable": {
        +                "type": "boolean"
        +              },
        +              "retry_after_seconds": {
        +                "anyOf": [
        +                  {
        +                    "minimum": 0,
        +                    "type": "integer"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              }
        +            },
        +            "required": [
        +              "code",
        +              "message",
        +              "recoverable"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      }
        +    },
        +    "required": [
        +      "_meta"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedcompute_gravity_wall3 fields changed
      • addedInput schema / properties / deliverables
        Added value: +{
        +  "anyOf": [
        +    {
        +      "items": {
        +        "const": "xlsx",
        +        "type": "string"
        +      },
        +      "type": "array"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null
        +}
      • addedInput schema / properties / output_mode
        Added value: +{
        +  "default": "full_json",
        +  "enum": [
        +    "summary",
        +    "boq",
        +    "boq_with_backup",
        +    "full_json"
        +  ],
        +  "type": "string"
        +}
      • changedOutput schema / properties / result / anyOf
        Previous value: -[
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "_meta": {
        -        "additionalProperties": false,
        -        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        -        "properties": {
        -          "deliverables": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        -                "properties": {
        -                  "docx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "dxf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "expires_at": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  },
        -                  "pdf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "xlsx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "expires_at"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "document_id": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "issued_at": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "rate_limit_remaining": {
        -            "anyOf": [
        -              {
        -                "minimum": 0,
        -                "type": "integer"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "request_id": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "schema_version": {
        -            "const": "1.0.0",
        -            "default": "1.0.0",
        -            "type": "string"
        -          },
        -          "scope_boundary": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        -                "properties": {
        -                  "not_in_scope": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "produced": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "recommended_companions": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "type": "string"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "produced",
        -                  "not_in_scope"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tier": {
        -            "enum": [
        -              "free",
        -              "paid"
        -            ],
        -            "type": "string"
        -          },
        -          "tier_upgrade": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        -                "properties": {
        -                  "available_tiers": {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        -                      "properties": {
        -                        "billing": {
        -                          "enum": [
        -                            "one_off",
        -                            "monthly",
        -                            "annual"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "currency": {
        -                          "enum": [
        -                            "GBP",
        -                            "SGD",
        -                            "EUR",
        -                            "USD",
        -                            "CAD",
        -                            "AUD",
        -                            "NZD",
        -                            "MYR"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "display_name": {
        -                          "type": "string"
        -                        },
        -                        "price_local": {
        -                          "type": "number"
        -                        },
        -                        "tier_slug": {
        -                          "enum": [
        -                            "7_day_pass",
        -                            "solo",
        -                            "studio",
        -                            "practice"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "unlock_summary": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "tier_slug",
        -                        "display_name",
        -                        "price_local",
        -                        "currency",
        -                        "billing",
        -                        "unlock_summary"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "current_tier": {
        -                    "const": "free",
        -                    "default": "free",
        -                    "type": "string"
        -                  },
        -                  "pass_credit": {
        -                    "anyOf": [
        -                      {
        -                        "additionalProperties": false,
        -                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        -                        "properties": {
        -                          "amount_local": {
        -                            "type": "number"
        -                          },
        -                          "applies_to": {
        -                            "const": "solo_first_month",
        -                            "default": "solo_first_month",
        -                            "type": "string"
        -                          },
        -                          "currency": {
        -                            "type": "string"
        -                          },
        -                          "redeemable_until": {
        -                            "type": "string"
        -                          }
        -                        },
        -                        "required": [
        -                          "amount_local",
        -                          "currency",
        -                          "redeemable_until"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "pricing_url": {
        -                    "default": "https://civilquants.com/pricing",
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "available_tiers"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tos_url": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "upgrade_hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "warranty_disclaimer": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          }
        -        },
        -        "required": [
        -          "request_id",
        -          "issued_at",
        -          "tier"
        -        ],
        -        "type": "object"
        -      },
        -      "data": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Schema § 1.1 — the typed payload returned inside `MCPResponse[ComputeResult]`.\n\nFree-tier responses MUST omit `drawings` and `audit_trail` (the bridge\nenforces this); paid-tier responses populate both. `text_summary` is\nbounded to 2000 chars — keeps the LLM-facing summary token-cheap and\nforces longer narrative into BoQ row descriptions where it belongs.\n`warnings` is the non-fatal geometry advisory list (both tiers).",
        -            "properties": {
        -              "assembly_slug": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "audit_trail": {
        -                "anyOf": [
        -                  {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.7 — paid-tier audit-trail entry.\n\nOne entry per BoQ row; `boq_row_index` ties to the row position in\n`ComputeResult.boq_rows`. `derivation` is the human-readable formula\nwalk-through; `formula` is the optional formal expression.",
        -                      "properties": {
        -                        "boq_row_index": {
        -                          "minimum": 0,
        -                          "type": "integer"
        -                        },
        -                        "derivation": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "formula": {
        -                          "anyOf": [
        -                            {
        -                              "type": "string"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ],
        -                          "default": null
        -                        },
        -                        "id": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "parameters_referenced": {
        -                          "items": {
        -                            "type": "string"
        -                          },
        -                          "type": "array"
        -                        }
        -                      },
        -                      "required": [
        -                        "id",
        -                        "boq_row_index",
        -                        "derivation"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "boq_rows": {
        -                "items": {
        -                  "additionalProperties": false,
        -                  "description": "Schema § 1.3 — a single bill row in the requested standard's format.\n\n`description` is the non-verbatim functional description per spec § 13.9 /\n§ 15 invariant — NEVER reproduces a standard's verbatim clause text.\n`rate` / `amount` ship null because rates are commodity data the customer\nowns; the engine's job is the measurement, not the pricing.",
        -                  "properties": {
        -                    "amount": {
        -                      "anyOf": [
        -                        {
        -                          "type": "number"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "attribution": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "audit_id": {
        -                      "anyOf": [
        -                        {
        -                          "type": "string"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "description": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "quantity": {
        -                      "minimum": 0,
        -                      "type": "number"
        -                    },
        -                    "rate": {
        -                      "anyOf": [
        -                        {
        -                          "type": "number"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "unit": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "work_section": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    }
        -                  },
        -                  "required": [
        -                    "work_section",
        -                    "description",
        -                    "quantity",
        -                    "unit",
        -                    "attribution"
        -                  ],
        -                  "type": "object"
        -                },
        -                "type": "array"
        -              },
        -              "drawings": {
        -                "anyOf": [
        -                  {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.6 — paid-tier drawing artefact pointer.\n\n`url` is an R2-signed URL; expiry is carried in `_meta.deliverables.expires_at`\non the envelope (not duplicated here). `layers` is DXF-only; PDF/SVG\ncallers omit it.",
        -                      "properties": {
        -                        "drawing_type": {
        -                          "enum": [
        -                            "section",
        -                            "plan",
        -                            "elevation",
        -                            "isometric",
        -                            "detail"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "format": {
        -                          "enum": [
        -                            "DXF",
        -                            "PDF",
        -                            "SVG"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "layers": {
        -                          "anyOf": [
        -                            {
        -                              "items": {
        -                                "type": "string"
        -                              },
        -                              "type": "array"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ],
        -                          "default": null
        -                        },
        -                        "scale": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "sheet_size": {
        -                          "enum": [
        -                            "A1",
        -                            "A2",
        -                            "A3",
        -                            "A4"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "url": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "drawing_type",
        -                        "format",
        -                        "url",
        -                        "sheet_size",
        -                        "scale"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "parameters_used": {
        -                "additionalProperties": false,
        -                "description": "Schema § 1.2 — the parameter snapshot the engine actually used.\n\nSplits user-supplied values from engine defaults so customers can see\nwhich numbers came from them and which the engine filled in. Every\ndefaulted parameter SHOULD have a corresponding entry in `assumptions`\n— the bridge layer enforces this when wrapping engine output.",
        -                "properties": {
        -                  "assumptions": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "engine_defaults": {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  "resolved_from_description": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "additionalProperties": false,
        -                          "description": "Schema § 1.2 — a parameter resolved by the forgiving-input layer.\n\nPopulated by the Track B-Forgiving Haiku-4.5 resolution pass; until that\nlayer lands, instances are constructed only by tests. `source` distinguishes\nthe resolution path so customers can audit which fields were inferred.",
        -                          "properties": {
        -                            "confidence": {
        -                              "anyOf": [
        -                                {
        -                                  "enum": [
        -                                    "high",
        -                                    "medium",
        -                                    "low"
        -                                  ],
        -                                  "type": "string"
        -                                },
        -                                {
        -                                  "type": "null"
        -                                }
        -                              ],
        -                              "default": null
        -                            },
        -                            "field_name": {
        -                              "minLength": 1,
        -                              "type": "string"
        -                            },
        -                            "resolved_value": {},
        -                            "source": {
        -                              "enum": [
        -                                "description_field",
        -                                "haiku_resolution",
        -                                "engine_default"
        -                              ],
        -                              "type": "string"
        -                            }
        -                          },
        -                          "required": [
        -                            "field_name",
        -                            "resolved_value",
        -                            "source"
        -                          ],
        -                          "type": "object"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "user_supplied": {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  }
        -                },
        -                "type": "object"
        -              },
        -              "standard": {
        -                "enum": [
        -                  "CESMM4",
        -                  "NRM2",
        -                  "SMM7",
        -                  "MMHW"
        -                ],
        -                "type": "string"
        -              },
        -              "text_summary": {
        -                "maxLength": 2000,
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "totals_summary": {
        -                "additionalProperties": false,
        -                "description": "Schema § 1.4 — totals_summary as a typed wrapper around the free-form dict.\n\nWire shape is a flat object (`{\"concrete_m3\": {...}, \"rebar_t\": {...}}`).\nWe model it as `RootModel`-equivalent via `model_config(extra=\"allow\")`\n+ a single `__root__`-style `entries` dict. Pydantic v2 recommends\n`RootModel` for free-form roots; using a wrapper class keeps the import\nsurface uniform with the rest of this module.",
        -                "properties": {
        -                  "entries": {
        -                    "additionalProperties": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.4 — single material/work-class total entry.",
        -                      "properties": {
        -                        "quantity": {
        -                          "minimum": 0,
        -                          "type": "number"
        -                        },
        -                        "unit": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "quantity",
        -                        "unit"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "object"
        -                  }
        -                },
        -                "type": "object"
        -              },
        -              "warnings": {
        -                "items": {
        -                  "additionalProperties": false,
        -                  "description": "Schema § 1.8 — a non-fatal geometry advisory (56th-fire T2).\n\nThe wire projection of the engine's `core.GeometryWarning`. Advisory only:\na warning NEVER changes a measured quantity — it flags geometry that is\nvalid but likely a mistake (e.g. a stale dependent-height default). Present\non BOTH tiers — a correctness/safety signal, not a paid feature.",
        -                  "properties": {
        -                    "affected_params": {
        -                      "items": {
        -                        "type": "string"
        -                      },
        -                      "type": "array"
        -                    },
        -                    "code": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "detail": {
        -                      "additionalProperties": {
        -                        "type": "number"
        -                      },
        -                      "type": "object"
        -                    },
        -                    "message": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "severity": {
        -                      "enum": [
        -                        "info",
        -                        "advisory",
        -                        "caution"
        -                      ],
        -                      "type": "string"
        -                    }
        -                  },
        -                  "required": [
        -                    "code",
        -                    "severity",
        -                    "message"
        -                  ],
        -                  "type": "object"
        -                },
        -                "type": "array"
        -              }
        -            },
        -            "required": [
        -              "assembly_slug",
        -              "standard",
        -              "parameters_used",
        -              "boq_rows",
        -              "totals_summary",
        -              "text_summary"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      },
        -      "error": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        -            "properties": {
        -              "code": {
        -                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        -                "enum": [
        -                  "RATE_LIMIT_EXCEEDED",
        -                  "TIER_INSUFFICIENT",
        -                  "INVALID_INPUT",
        -                  "SCHEMA_VERSION_MISMATCH",
        -                  "SCHEMA_INVARIANT_VIOLATION",
        -                  "UPSTREAM_TIMEOUT",
        -                  "BACKEND_FAILURE",
        -                  "IP_BLOCKED",
        -                  "RESOURCE_NOT_FOUND",
        -                  "RENDER_FAILURE",
        -                  "OCR_LOW_CONFIDENCE",
        -                  "MANUAL_REVIEW_REQUIRED",
        -                  "ACCEPTANCE_REQUIRED",
        -                  "INVALID_TOKEN"
        -                ],
        -                "type": "string"
        -              },
        -              "details": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "message": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "recoverable": {
        -                "type": "boolean"
        -              },
        -              "retry_after_seconds": {
        -                "anyOf": [
        -                  {
        -                    "minimum": 0,
        -                    "type": "integer"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              }
        -            },
        -            "required": [
        -              "code",
        -              "message",
        -              "recoverable"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      }
        -    },
        -    "required": [
        -      "_meta"
        -    ],
        -    "type": "object"
        -  },
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "_meta": {
        -        "additionalProperties": false,
        -        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        -        "properties": {
        -          "deliverables": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        -                "properties": {
        -                  "docx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "dxf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "expires_at": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  },
        -                  "pdf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "xlsx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "expires_at"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "document_id": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "issued_at": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "rate_limit_remaining": {
        -            "anyOf": [
        -              {
        -                "minimum": 0,
        -                "type": "integer"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "request_id": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "schema_version": {
        -            "const": "1.0.0",
        -            "default": "1.0.0",
        -            "type": "string"
        -          },
        -          "scope_boundary": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        -                "properties": {
        -                  "not_in_scope": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "produced": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "recommended_companions": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "type": "string"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "produced",
        -                  "not_in_scope"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tier": {
        -            "enum": [
        -              "free",
        -              "paid"
        -            ],
        -            "type": "string"
        -          },
        -          "tier_upgrade": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        -                "properties": {
        -                  "available_tiers": {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        -                      "properties": {
        -                        "billing": {
        -                          "enum": [
        -                            "one_off",
        -                            "monthly",
        -                            "annual"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "currency": {
        -                          "enum": [
        -                            "GBP",
        -                            "SGD",
        -                            "EUR",
        -                            "USD",
        -                            "CAD",
        -                            "AUD",
        -                            "NZD",
        -                            "MYR"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "display_name": {
        -                          "type": "string"
        -                        },
        -                        "price_local": {
        -                          "type": "number"
        -                        },
        -                        "tier_slug": {
        -                          "enum": [
        -                            "7_day_pass",
        -                            "solo",
        -                            "studio",
        -                            "practice"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "unlock_summary": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "tier_slug",
        -                        "display_name",
        -                        "price_local",
        -                        "currency",
        -                        "billing",
        -                        "unlock_summary"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "current_tier": {
        -                    "const": "free",
        -                    "default": "free",
        -                    "type": "string"
        -                  },
        -                  "pass_credit": {
        -                    "anyOf": [
        -                      {
        -                        "additionalProperties": false,
        -                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        -                        "properties": {
        -                          "amount_local": {
        -                            "type": "number"
        -                          },
        -                          "applies_to": {
        -                            "const": "solo_first_month",
        -                            "default": "solo_first_month",
        -                            "type": "string"
        -                          },
        -                          "currency": {
        -                            "type": "string"
        -                          },
        -                          "redeemable_until": {
        -                            "type": "string"
        -                          }
        -                        },
        -                        "required": [
        -                          "amount_local",
        -                          "currency",
        -                          "redeemable_until"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "pricing_url": {
        -                    "default": "https://civilquants.com/pricing",
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "available_tiers"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tos_url": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "upgrade_hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "warranty_disclaimer": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          }
        -        },
        -        "required": [
        -          "request_id",
        -          "issued_at",
        -          "tier"
        -        ],
        -        "type": "object"
        -      },
        -      "data": {
        -        "default": null,
        -        "title": "Data"
        -      },
        -      "error": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        -            "properties": {
        -              "code": {
        -                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        -                "enum": [
        -                  "RATE_LIMIT_EXCEEDED",
        -                  "TIER_INSUFFICIENT",
        -                  "INVALID_INPUT",
        -                  "SCHEMA_VERSION_MISMATCH",
        -                  "SCHEMA_INVARIANT_VIOLATION",
        -                  "UPSTREAM_TIMEOUT",
        -                  "BACKEND_FAILURE",
        -                  "IP_BLOCKED",
        -                  "RESOURCE_NOT_FOUND",
        -                  "RENDER_FAILURE",
        -                  "OCR_LOW_CONFIDENCE",
        -                  "MANUAL_REVIEW_REQUIRED",
        -                  "ACCEPTANCE_REQUIRED",
        -                  "INVALID_TOKEN"
        -                ],
        -                "type": "string"
        -              },
        -              "details": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "message": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "recoverable": {
        -                "type": "boolean"
        -              },
        -              "retry_after_seconds": {
        -                "anyOf": [
        -                  {
        -                    "minimum": 0,
        -                    "type": "integer"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              }
        -            },
        -            "required": [
        -              "code",
        -              "message",
        -              "recoverable"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      }
        -    },
        -    "required": [
        -      "_meta"
        -    ],
        -    "type": "object"
        -  }
        -]New value: +[
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "_meta": {
        +        "additionalProperties": false,
        +        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        +        "properties": {
        +          "deliverables": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        +                "properties": {
        +                  "docx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "dxf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "expires_at": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  },
        +                  "pdf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "xlsx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "expires_at"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "document_id": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "issued_at": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "rate_limit_remaining": {
        +            "anyOf": [
        +              {
        +                "minimum": 0,
        +                "type": "integer"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "request_id": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "schema_version": {
        +            "const": "1.0.0",
        +            "default": "1.0.0",
        +            "type": "string"
        +          },
        +          "scope_boundary": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        +                "properties": {
        +                  "not_in_scope": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "produced": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "recommended_companions": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "type": "string"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "produced",
        +                  "not_in_scope"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tier": {
        +            "enum": [
        +              "free",
        +              "paid"
        +            ],
        +            "type": "string"
        +          },
        +          "tier_upgrade": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        +                "properties": {
        +                  "available_tiers": {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        +                      "properties": {
        +                        "billing": {
        +                          "enum": [
        +                            "one_off",
        +                            "monthly",
        +                            "annual"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "currency": {
        +                          "enum": [
        +                            "GBP",
        +                            "SGD",
        +                            "EUR",
        +                            "USD",
        +                            "CAD",
        +                            "AUD",
        +                            "NZD",
        +                            "MYR"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "display_name": {
        +                          "type": "string"
        +                        },
        +                        "price_local": {
        +                          "type": "number"
        +                        },
        +                        "tier_slug": {
        +                          "enum": [
        +                            "7_day_pass",
        +                            "solo",
        +                            "studio",
        +                            "practice"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "unlock_summary": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "tier_slug",
        +                        "display_name",
        +                        "price_local",
        +                        "currency",
        +                        "billing",
        +                        "unlock_summary"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "current_tier": {
        +                    "const": "free",
        +                    "default": "free",
        +                    "type": "string"
        +                  },
        +                  "pass_credit": {
        +                    "anyOf": [
        +                      {
        +                        "additionalProperties": false,
        +                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        +                        "properties": {
        +                          "amount_local": {
        +                            "type": "number"
        +                          },
        +                          "applies_to": {
        +                            "const": "solo_first_month",
        +                            "default": "solo_first_month",
        +                            "type": "string"
        +                          },
        +                          "currency": {
        +                            "type": "string"
        +                          },
        +                          "redeemable_until": {
        +                            "type": "string"
        +                          }
        +                        },
        +                        "required": [
        +                          "amount_local",
        +                          "currency",
        +                          "redeemable_until"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "pricing_url": {
        +                    "default": "https://civilquants.com/pricing",
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "available_tiers"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tos_url": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "upgrade_hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "warranty_disclaimer": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          }
        +        },
        +        "required": [
        +          "request_id",
        +          "issued_at",
        +          "tier"
        +        ],
        +        "type": "object"
        +      },
        +      "data": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Schema § 1.1 — the typed payload returned inside `MCPResponse[ComputeResult]`.\n\nFree-tier responses omit `drawings` (the downloadable CAD artefact\npointers — the paid differentiator); the bridge enforces this. The\n`audit_trail` and the inline `drawing` preview are present on BOTH tiers\n(V1 ALIGN / 60th-fire D + C). `text_summary` is bounded to 2000 chars —\nkeeps the LLM-facing summary token-cheap and forces longer narrative into\nBoQ row descriptions where it belongs. `warnings` is the non-fatal\ngeometry advisory list (both tiers).",
        +            "properties": {
        +              "assembly_slug": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "audit_trail": {
        +                "anyOf": [
        +                  {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.7 — paid-tier audit-trail entry.\n\nOne entry per BoQ row; `boq_row_index` ties to the row position in\n`ComputeResult.boq_rows`. `derivation` is the human-readable formula\nwalk-through; `formula` is the optional formal expression.",
        +                      "properties": {
        +                        "boq_row_index": {
        +                          "minimum": 0,
        +                          "type": "integer"
        +                        },
        +                        "derivation": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "formula": {
        +                          "anyOf": [
        +                            {
        +                              "type": "string"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ],
        +                          "default": null
        +                        },
        +                        "id": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "parameters_referenced": {
        +                          "items": {
        +                            "type": "string"
        +                          },
        +                          "type": "array"
        +                        }
        +                      },
        +                      "required": [
        +                        "id",
        +                        "boq_row_index",
        +                        "derivation"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "boq_rows": {
        +                "items": {
        +                  "additionalProperties": false,
        +                  "description": "Schema § 1.3 — a single bill row in the requested standard's format.\n\n`description` is the non-verbatim functional description per spec § 13.9 /\n§ 15 invariant — NEVER reproduces a standard's verbatim clause text.\n`rate` / `amount` ship null because rates are commodity data the customer\nowns; the engine's job is the measurement, not the pricing.",
        +                  "properties": {
        +                    "amount": {
        +                      "anyOf": [
        +                        {
        +                          "type": "number"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "attribution": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "audit_id": {
        +                      "anyOf": [
        +                        {
        +                          "type": "string"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "description": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "quantity": {
        +                      "minimum": 0,
        +                      "type": "number"
        +                    },
        +                    "rate": {
        +                      "anyOf": [
        +                        {
        +                          "type": "number"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "unit": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "work_section": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    }
        +                  },
        +                  "required": [
        +                    "work_section",
        +                    "description",
        +                    "quantity",
        +                    "unit",
        +                    "attribution"
        +                  ],
        +                  "type": "object"
        +                },
        +                "type": "array"
        +              },
        +              "drawing": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": false,
        +                    "description": "Schema § 1.6a — inline server-rendered SVG preview of the geometry.\n\nThe MCP mirror of the web ``/compute`` response's ``drawing`` field\n(``api.schemas.compute.DrawingRef``): the same on-screen dimensioned\ndrawing both tiers see in the workspace, surfaced on the MCP compute\nresponse so a chat client can render it inline (60th-fire item C). This\nis the on-screen preview — present on BOTH tiers per the free/paid\nboundary; the downloadable CAD artefacts (DXF / dimensioned PDF) remain\nthe paid differentiator via the export tools.\n\nDefined here rather than importing ``DrawingRef`` because the web\n``schemas`` package imports back into this module (``schemas.render``),\nso reusing it would create an import cycle — the MCP wire contract keeps\nits own copy, the same pattern as ``BoQRow`` / ``DrawingReference``.",
        +                    "properties": {
        +                      "entity_count": {
        +                        "minimum": 0,
        +                        "type": "integer"
        +                      },
        +                      "svg_b64": {
        +                        "minLength": 1,
        +                        "type": "string"
        +                      },
        +                      "unit_of_drawing": {
        +                        "const": "m",
        +                        "default": "m",
        +                        "type": "string"
        +                      },
        +                      "viewbox_height": {
        +                        "exclusiveMinimum": 0,
        +                        "type": "number"
        +                      },
        +                      "viewbox_width": {
        +                        "exclusiveMinimum": 0,
        +                        "type": "number"
        +                      },
        +                      "viewbox_x": {
        +                        "type": "number"
        +                      },
        +                      "viewbox_y": {
        +                        "type": "number"
        +                      }
        +                    },
        +                    "required": [
        +                      "svg_b64",
        +                      "viewbox_x",
        +                      "viewbox_y",
        +                      "viewbox_width",
        +                      "viewbox_height",
        +                      "entity_count"
        +                    ],
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "drawings": {
        +                "anyOf": [
        +                  {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.6 — paid-tier drawing artefact pointer.\n\n`url` is an R2-signed URL; expiry is carried in `_meta.deliverables.expires_at`\non the envelope (not duplicated here). `layers` is DXF-only; PDF/SVG\ncallers omit it.",
        +                      "properties": {
        +                        "drawing_type": {
        +                          "enum": [
        +                            "section",
        +                            "plan",
        +                            "elevation",
        +                            "isometric",
        +                            "detail"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "format": {
        +                          "enum": [
        +                            "DXF",
        +                            "PDF",
        +                            "SVG"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "layers": {
        +                          "anyOf": [
        +                            {
        +                              "items": {
        +                                "type": "string"
        +                              },
        +                              "type": "array"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ],
        +                          "default": null
        +                        },
        +                        "scale": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "sheet_size": {
        +                          "enum": [
        +                            "A1",
        +                            "A2",
        +                            "A3",
        +                            "A4"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "url": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "drawing_type",
        +                        "format",
        +                        "url",
        +                        "sheet_size",
        +                        "scale"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "parameters_used": {
        +                "additionalProperties": false,
        +                "description": "Schema § 1.2 — the parameter snapshot the engine actually used.\n\nSplits user-supplied values from engine defaults so customers can see\nwhich numbers came from them and which the engine filled in. Every\ndefaulted parameter SHOULD have a corresponding entry in `assumptions`\n— the bridge layer enforces this when wrapping engine output.",
        +                "properties": {
        +                  "assumptions": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "engine_defaults": {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  "resolved_from_description": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "additionalProperties": false,
        +                          "description": "Schema § 1.2 — a parameter resolved by the forgiving-input layer.\n\nPopulated by the Track B-Forgiving Haiku-4.5 resolution pass; until that\nlayer lands, instances are constructed only by tests. `source` distinguishes\nthe resolution path so customers can audit which fields were inferred.",
        +                          "properties": {
        +                            "confidence": {
        +                              "anyOf": [
        +                                {
        +                                  "enum": [
        +                                    "high",
        +                                    "medium",
        +                                    "low"
        +                                  ],
        +                                  "type": "string"
        +                                },
        +                                {
        +                                  "type": "null"
        +                                }
        +                              ],
        +                              "default": null
        +                            },
        +                            "field_name": {
        +                              "minLength": 1,
        +                              "type": "string"
        +                            },
        +                            "resolved_value": {},
        +                            "source": {
        +                              "enum": [
        +                                "description_field",
        +                                "haiku_resolution",
        +                                "engine_default"
        +                              ],
        +                              "type": "string"
        +                            }
        +                          },
        +                          "required": [
        +                            "field_name",
        +                            "resolved_value",
        +                            "source"
        +                          ],
        +                          "type": "object"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "user_supplied": {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  }
        +                },
        +                "type": "object"
        +              },
        +              "standard": {
        +                "enum": [
        +                  "CESMM4",
        +                  "NRM2",
        +                  "SMM7",
        +                  "MMHW"
        +                ],
        +                "type": "string"
        +              },
        +              "text_summary": {
        +                "maxLength": 2000,
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "totals_summary": {
        +                "additionalProperties": false,
        +                "description": "Schema § 1.4 — totals_summary as a typed wrapper around the free-form dict.\n\nWire shape is a flat object (`{\"concrete_m3\": {...}, \"rebar_t\": {...}}`).\nWe model it as `RootModel`-equivalent via `model_config(extra=\"allow\")`\n+ a single `__root__`-style `entries` dict. Pydantic v2 recommends\n`RootModel` for free-form roots; using a wrapper class keeps the import\nsurface uniform with the rest of this module.",
        +                "properties": {
        +                  "entries": {
        +                    "additionalProperties": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.4 — single material/work-class total entry.",
        +                      "properties": {
        +                        "quantity": {
        +                          "minimum": 0,
        +                          "type": "number"
        +                        },
        +                        "unit": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "quantity",
        +                        "unit"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "object"
        +                  }
        +                },
        +                "type": "object"
        +              },
        +              "warnings": {
        +                "items": {
        +                  "additionalProperties": false,
        +                  "description": "Schema § 1.8 — a non-fatal geometry advisory (56th-fire T2).\n\nThe wire projection of the engine's `core.GeometryWarning`. Advisory only:\na warning NEVER changes a measured quantity — it flags geometry that is\nvalid but likely a mistake (e.g. a stale dependent-height default). Present\non BOTH tiers — a correctness/safety signal, not a paid feature.",
        +                  "properties": {
        +                    "affected_params": {
        +                      "items": {
        +                        "type": "string"
        +                      },
        +                      "type": "array"
        +                    },
        +                    "code": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "detail": {
        +                      "additionalProperties": {
        +                        "type": "number"
        +                      },
        +                      "type": "object"
        +                    },
        +                    "message": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "severity": {
        +                      "enum": [
        +                        "info",
        +                        "advisory",
        +                        "caution"
        +                      ],
        +                      "type": "string"
        +                    }
        +                  },
        +                  "required": [
        +                    "code",
        +                    "severity",
        +                    "message"
        +                  ],
        +                  "type": "object"
        +                },
        +                "type": "array"
        +              }
        +            },
        +            "required": [
        +              "assembly_slug",
        +              "standard",
        +              "parameters_used",
        +              "boq_rows",
        +              "totals_summary",
        +              "text_summary"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      },
        +      "error": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        +            "properties": {
        +              "code": {
        +                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        +                "enum": [
        +                  "RATE_LIMIT_EXCEEDED",
        +                  "TIER_INSUFFICIENT",
        +                  "INVALID_INPUT",
        +                  "SCHEMA_VERSION_MISMATCH",
        +                  "SCHEMA_INVARIANT_VIOLATION",
        +                  "UPSTREAM_TIMEOUT",
        +                  "BACKEND_FAILURE",
        +                  "IP_BLOCKED",
        +                  "RESOURCE_NOT_FOUND",
        +                  "RENDER_FAILURE",
        +                  "OCR_LOW_CONFIDENCE",
        +                  "MANUAL_REVIEW_REQUIRED",
        +                  "ACCEPTANCE_REQUIRED",
        +                  "INVALID_TOKEN"
        +                ],
        +                "type": "string"
        +              },
        +              "details": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "message": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "recoverable": {
        +                "type": "boolean"
        +              },
        +              "retry_after_seconds": {
        +                "anyOf": [
        +                  {
        +                    "minimum": 0,
        +                    "type": "integer"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              }
        +            },
        +            "required": [
        +              "code",
        +              "message",
        +              "recoverable"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      }
        +    },
        +    "required": [
        +      "_meta"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "_meta": {
        +        "additionalProperties": false,
        +        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        +        "properties": {
        +          "deliverables": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        +                "properties": {
        +                  "docx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "dxf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "expires_at": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  },
        +                  "pdf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "xlsx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "expires_at"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "document_id": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "issued_at": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "rate_limit_remaining": {
        +            "anyOf": [
        +              {
        +                "minimum": 0,
        +                "type": "integer"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "request_id": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "schema_version": {
        +            "const": "1.0.0",
        +            "default": "1.0.0",
        +            "type": "string"
        +          },
        +          "scope_boundary": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        +                "properties": {
        +                  "not_in_scope": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "produced": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "recommended_companions": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "type": "string"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "produced",
        +                  "not_in_scope"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tier": {
        +            "enum": [
        +              "free",
        +              "paid"
        +            ],
        +            "type": "string"
        +          },
        +          "tier_upgrade": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        +                "properties": {
        +                  "available_tiers": {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        +                      "properties": {
        +                        "billing": {
        +                          "enum": [
        +                            "one_off",
        +                            "monthly",
        +                            "annual"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "currency": {
        +                          "enum": [
        +                            "GBP",
        +                            "SGD",
        +                            "EUR",
        +                            "USD",
        +                            "CAD",
        +                            "AUD",
        +                            "NZD",
        +                            "MYR"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "display_name": {
        +                          "type": "string"
        +                        },
        +                        "price_local": {
        +                          "type": "number"
        +                        },
        +                        "tier_slug": {
        +                          "enum": [
        +                            "7_day_pass",
        +                            "solo",
        +                            "studio",
        +                            "practice"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "unlock_summary": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "tier_slug",
        +                        "display_name",
        +                        "price_local",
        +                        "currency",
        +                        "billing",
        +                        "unlock_summary"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "current_tier": {
        +                    "const": "free",
        +                    "default": "free",
        +                    "type": "string"
        +                  },
        +                  "pass_credit": {
        +                    "anyOf": [
        +                      {
        +                        "additionalProperties": false,
        +                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        +                        "properties": {
        +                          "amount_local": {
        +                            "type": "number"
        +                          },
        +                          "applies_to": {
        +                            "const": "solo_first_month",
        +                            "default": "solo_first_month",
        +                            "type": "string"
        +                          },
        +                          "currency": {
        +                            "type": "string"
        +                          },
        +                          "redeemable_until": {
        +                            "type": "string"
        +                          }
        +                        },
        +                        "required": [
        +                          "amount_local",
        +                          "currency",
        +                          "redeemable_until"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "pricing_url": {
        +                    "default": "https://civilquants.com/pricing",
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "available_tiers"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tos_url": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "upgrade_hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "warranty_disclaimer": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          }
        +        },
        +        "required": [
        +          "request_id",
        +          "issued_at",
        +          "tier"
        +        ],
        +        "type": "object"
        +      },
        +      "data": {
        +        "default": null,
        +        "title": "Data"
        +      },
        +      "error": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        +            "properties": {
        +              "code": {
        +                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        +                "enum": [
        +                  "RATE_LIMIT_EXCEEDED",
        +                  "TIER_INSUFFICIENT",
        +                  "INVALID_INPUT",
        +                  "SCHEMA_VERSION_MISMATCH",
        +                  "SCHEMA_INVARIANT_VIOLATION",
        +                  "UPSTREAM_TIMEOUT",
        +                  "BACKEND_FAILURE",
        +                  "IP_BLOCKED",
        +                  "RESOURCE_NOT_FOUND",
        +                  "RENDER_FAILURE",
        +                  "OCR_LOW_CONFIDENCE",
        +                  "MANUAL_REVIEW_REQUIRED",
        +                  "ACCEPTANCE_REQUIRED",
        +                  "INVALID_TOKEN"
        +                ],
        +                "type": "string"
        +              },
        +              "details": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "message": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "recoverable": {
        +                "type": "boolean"
        +              },
        +              "retry_after_seconds": {
        +                "anyOf": [
        +                  {
        +                    "minimum": 0,
        +                    "type": "integer"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              }
        +            },
        +            "required": [
        +              "code",
        +              "message",
        +              "recoverable"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      }
        +    },
        +    "required": [
        +      "_meta"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedcompute_gully3 fields changed
      • addedInput schema / properties / deliverables
        Added value: +{
        +  "anyOf": [
        +    {
        +      "items": {
        +        "const": "xlsx",
        +        "type": "string"
        +      },
        +      "type": "array"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null
        +}
      • addedInput schema / properties / output_mode
        Added value: +{
        +  "default": "full_json",
        +  "enum": [
        +    "summary",
        +    "boq",
        +    "boq_with_backup",
        +    "full_json"
        +  ],
        +  "type": "string"
        +}
      • changedOutput schema / properties / result / anyOf
        Previous value: -[
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "_meta": {
        -        "additionalProperties": false,
        -        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        -        "properties": {
        -          "deliverables": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        -                "properties": {
        -                  "docx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "dxf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "expires_at": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  },
        -                  "pdf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "xlsx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "expires_at"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "document_id": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "issued_at": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "rate_limit_remaining": {
        -            "anyOf": [
        -              {
        -                "minimum": 0,
        -                "type": "integer"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "request_id": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "schema_version": {
        -            "const": "1.0.0",
        -            "default": "1.0.0",
        -            "type": "string"
        -          },
        -          "scope_boundary": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        -                "properties": {
        -                  "not_in_scope": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "produced": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "recommended_companions": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "type": "string"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "produced",
        -                  "not_in_scope"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tier": {
        -            "enum": [
        -              "free",
        -              "paid"
        -            ],
        -            "type": "string"
        -          },
        -          "tier_upgrade": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        -                "properties": {
        -                  "available_tiers": {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        -                      "properties": {
        -                        "billing": {
        -                          "enum": [
        -                            "one_off",
        -                            "monthly",
        -                            "annual"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "currency": {
        -                          "enum": [
        -                            "GBP",
        -                            "SGD",
        -                            "EUR",
        -                            "USD",
        -                            "CAD",
        -                            "AUD",
        -                            "NZD",
        -                            "MYR"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "display_name": {
        -                          "type": "string"
        -                        },
        -                        "price_local": {
        -                          "type": "number"
        -                        },
        -                        "tier_slug": {
        -                          "enum": [
        -                            "7_day_pass",
        -                            "solo",
        -                            "studio",
        -                            "practice"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "unlock_summary": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "tier_slug",
        -                        "display_name",
        -                        "price_local",
        -                        "currency",
        -                        "billing",
        -                        "unlock_summary"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "current_tier": {
        -                    "const": "free",
        -                    "default": "free",
        -                    "type": "string"
        -                  },
        -                  "pass_credit": {
        -                    "anyOf": [
        -                      {
        -                        "additionalProperties": false,
        -                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        -                        "properties": {
        -                          "amount_local": {
        -                            "type": "number"
        -                          },
        -                          "applies_to": {
        -                            "const": "solo_first_month",
        -                            "default": "solo_first_month",
        -                            "type": "string"
        -                          },
        -                          "currency": {
        -                            "type": "string"
        -                          },
        -                          "redeemable_until": {
        -                            "type": "string"
        -                          }
        -                        },
        -                        "required": [
        -                          "amount_local",
        -                          "currency",
        -                          "redeemable_until"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "pricing_url": {
        -                    "default": "https://civilquants.com/pricing",
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "available_tiers"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tos_url": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "upgrade_hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "warranty_disclaimer": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          }
        -        },
        -        "required": [
        -          "request_id",
        -          "issued_at",
        -          "tier"
        -        ],
        -        "type": "object"
        -      },
        -      "data": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Schema § 1.1 — the typed payload returned inside `MCPResponse[ComputeResult]`.\n\nFree-tier responses MUST omit `drawings` and `audit_trail` (the bridge\nenforces this); paid-tier responses populate both. `text_summary` is\nbounded to 2000 chars — keeps the LLM-facing summary token-cheap and\nforces longer narrative into BoQ row descriptions where it belongs.\n`warnings` is the non-fatal geometry advisory list (both tiers).",
        -            "properties": {
        -              "assembly_slug": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "audit_trail": {
        -                "anyOf": [
        -                  {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.7 — paid-tier audit-trail entry.\n\nOne entry per BoQ row; `boq_row_index` ties to the row position in\n`ComputeResult.boq_rows`. `derivation` is the human-readable formula\nwalk-through; `formula` is the optional formal expression.",
        -                      "properties": {
        -                        "boq_row_index": {
        -                          "minimum": 0,
        -                          "type": "integer"
        -                        },
        -                        "derivation": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "formula": {
        -                          "anyOf": [
        -                            {
        -                              "type": "string"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ],
        -                          "default": null
        -                        },
        -                        "id": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "parameters_referenced": {
        -                          "items": {
        -                            "type": "string"
        -                          },
        -                          "type": "array"
        -                        }
        -                      },
        -                      "required": [
        -                        "id",
        -                        "boq_row_index",
        -                        "derivation"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "boq_rows": {
        -                "items": {
        -                  "additionalProperties": false,
        -                  "description": "Schema § 1.3 — a single bill row in the requested standard's format.\n\n`description` is the non-verbatim functional description per spec § 13.9 /\n§ 15 invariant — NEVER reproduces a standard's verbatim clause text.\n`rate` / `amount` ship null because rates are commodity data the customer\nowns; the engine's job is the measurement, not the pricing.",
        -                  "properties": {
        -                    "amount": {
        -                      "anyOf": [
        -                        {
        -                          "type": "number"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "attribution": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "audit_id": {
        -                      "anyOf": [
        -                        {
        -                          "type": "string"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "description": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "quantity": {
        -                      "minimum": 0,
        -                      "type": "number"
        -                    },
        -                    "rate": {
        -                      "anyOf": [
        -                        {
        -                          "type": "number"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "unit": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "work_section": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    }
        -                  },
        -                  "required": [
        -                    "work_section",
        -                    "description",
        -                    "quantity",
        -                    "unit",
        -                    "attribution"
        -                  ],
        -                  "type": "object"
        -                },
        -                "type": "array"
        -              },
        -              "drawings": {
        -                "anyOf": [
        -                  {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.6 — paid-tier drawing artefact pointer.\n\n`url` is an R2-signed URL; expiry is carried in `_meta.deliverables.expires_at`\non the envelope (not duplicated here). `layers` is DXF-only; PDF/SVG\ncallers omit it.",
        -                      "properties": {
        -                        "drawing_type": {
        -                          "enum": [
        -                            "section",
        -                            "plan",
        -                            "elevation",
        -                            "isometric",
        -                            "detail"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "format": {
        -                          "enum": [
        -                            "DXF",
        -                            "PDF",
        -                            "SVG"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "layers": {
        -                          "anyOf": [
        -                            {
        -                              "items": {
        -                                "type": "string"
        -                              },
        -                              "type": "array"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ],
        -                          "default": null
        -                        },
        -                        "scale": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "sheet_size": {
        -                          "enum": [
        -                            "A1",
        -                            "A2",
        -                            "A3",
        -                            "A4"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "url": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "drawing_type",
        -                        "format",
        -                        "url",
        -                        "sheet_size",
        -                        "scale"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "parameters_used": {
        -                "additionalProperties": false,
        -                "description": "Schema § 1.2 — the parameter snapshot the engine actually used.\n\nSplits user-supplied values from engine defaults so customers can see\nwhich numbers came from them and which the engine filled in. Every\ndefaulted parameter SHOULD have a corresponding entry in `assumptions`\n— the bridge layer enforces this when wrapping engine output.",
        -                "properties": {
        -                  "assumptions": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "engine_defaults": {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  "resolved_from_description": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "additionalProperties": false,
        -                          "description": "Schema § 1.2 — a parameter resolved by the forgiving-input layer.\n\nPopulated by the Track B-Forgiving Haiku-4.5 resolution pass; until that\nlayer lands, instances are constructed only by tests. `source` distinguishes\nthe resolution path so customers can audit which fields were inferred.",
        -                          "properties": {
        -                            "confidence": {
        -                              "anyOf": [
        -                                {
        -                                  "enum": [
        -                                    "high",
        -                                    "medium",
        -                                    "low"
        -                                  ],
        -                                  "type": "string"
        -                                },
        -                                {
        -                                  "type": "null"
        -                                }
        -                              ],
        -                              "default": null
        -                            },
        -                            "field_name": {
        -                              "minLength": 1,
        -                              "type": "string"
        -                            },
        -                            "resolved_value": {},
        -                            "source": {
        -                              "enum": [
        -                                "description_field",
        -                                "haiku_resolution",
        -                                "engine_default"
        -                              ],
        -                              "type": "string"
        -                            }
        -                          },
        -                          "required": [
        -                            "field_name",
        -                            "resolved_value",
        -                            "source"
        -                          ],
        -                          "type": "object"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "user_supplied": {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  }
        -                },
        -                "type": "object"
        -              },
        -              "standard": {
        -                "enum": [
        -                  "CESMM4",
        -                  "NRM2",
        -                  "SMM7",
        -                  "MMHW"
        -                ],
        -                "type": "string"
        -              },
        -              "text_summary": {
        -                "maxLength": 2000,
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "totals_summary": {
        -                "additionalProperties": false,
        -                "description": "Schema § 1.4 — totals_summary as a typed wrapper around the free-form dict.\n\nWire shape is a flat object (`{\"concrete_m3\": {...}, \"rebar_t\": {...}}`).\nWe model it as `RootModel`-equivalent via `model_config(extra=\"allow\")`\n+ a single `__root__`-style `entries` dict. Pydantic v2 recommends\n`RootModel` for free-form roots; using a wrapper class keeps the import\nsurface uniform with the rest of this module.",
        -                "properties": {
        -                  "entries": {
        -                    "additionalProperties": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.4 — single material/work-class total entry.",
        -                      "properties": {
        -                        "quantity": {
        -                          "minimum": 0,
        -                          "type": "number"
        -                        },
        -                        "unit": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "quantity",
        -                        "unit"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "object"
        -                  }
        -                },
        -                "type": "object"
        -              },
        -              "warnings": {
        -                "items": {
        -                  "additionalProperties": false,
        -                  "description": "Schema § 1.8 — a non-fatal geometry advisory (56th-fire T2).\n\nThe wire projection of the engine's `core.GeometryWarning`. Advisory only:\na warning NEVER changes a measured quantity — it flags geometry that is\nvalid but likely a mistake (e.g. a stale dependent-height default). Present\non BOTH tiers — a correctness/safety signal, not a paid feature.",
        -                  "properties": {
        -                    "affected_params": {
        -                      "items": {
        -                        "type": "string"
        -                      },
        -                      "type": "array"
        -                    },
        -                    "code": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "detail": {
        -                      "additionalProperties": {
        -                        "type": "number"
        -                      },
        -                      "type": "object"
        -                    },
        -                    "message": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "severity": {
        -                      "enum": [
        -                        "info",
        -                        "advisory",
        -                        "caution"
        -                      ],
        -                      "type": "string"
        -                    }
        -                  },
        -                  "required": [
        -                    "code",
        -                    "severity",
        -                    "message"
        -                  ],
        -                  "type": "object"
        -                },
        -                "type": "array"
        -              }
        -            },
        -            "required": [
        -              "assembly_slug",
        -              "standard",
        -              "parameters_used",
        -              "boq_rows",
        -              "totals_summary",
        -              "text_summary"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      },
        -      "error": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        -            "properties": {
        -              "code": {
        -                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        -                "enum": [
        -                  "RATE_LIMIT_EXCEEDED",
        -                  "TIER_INSUFFICIENT",
        -                  "INVALID_INPUT",
        -                  "SCHEMA_VERSION_MISMATCH",
        -                  "SCHEMA_INVARIANT_VIOLATION",
        -                  "UPSTREAM_TIMEOUT",
        -                  "BACKEND_FAILURE",
        -                  "IP_BLOCKED",
        -                  "RESOURCE_NOT_FOUND",
        -                  "RENDER_FAILURE",
        -                  "OCR_LOW_CONFIDENCE",
        -                  "MANUAL_REVIEW_REQUIRED",
        -                  "ACCEPTANCE_REQUIRED",
        -                  "INVALID_TOKEN"
        -                ],
        -                "type": "string"
        -              },
        -              "details": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "message": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "recoverable": {
        -                "type": "boolean"
        -              },
        -              "retry_after_seconds": {
        -                "anyOf": [
        -                  {
        -                    "minimum": 0,
        -                    "type": "integer"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              }
        -            },
        -            "required": [
        -              "code",
        -              "message",
        -              "recoverable"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      }
        -    },
        -    "required": [
        -      "_meta"
        -    ],
        -    "type": "object"
        -  },
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "_meta": {
        -        "additionalProperties": false,
        -        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        -        "properties": {
        -          "deliverables": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        -                "properties": {
        -                  "docx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "dxf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "expires_at": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  },
        -                  "pdf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "xlsx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "expires_at"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "document_id": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "issued_at": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "rate_limit_remaining": {
        -            "anyOf": [
        -              {
        -                "minimum": 0,
        -                "type": "integer"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "request_id": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "schema_version": {
        -            "const": "1.0.0",
        -            "default": "1.0.0",
        -            "type": "string"
        -          },
        -          "scope_boundary": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        -                "properties": {
        -                  "not_in_scope": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "produced": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "recommended_companions": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "type": "string"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "produced",
        -                  "not_in_scope"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tier": {
        -            "enum": [
        -              "free",
        -              "paid"
        -            ],
        -            "type": "string"
        -          },
        -          "tier_upgrade": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        -                "properties": {
        -                  "available_tiers": {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        -                      "properties": {
        -                        "billing": {
        -                          "enum": [
        -                            "one_off",
        -                            "monthly",
        -                            "annual"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "currency": {
        -                          "enum": [
        -                            "GBP",
        -                            "SGD",
        -                            "EUR",
        -                            "USD",
        -                            "CAD",
        -                            "AUD",
        -                            "NZD",
        -                            "MYR"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "display_name": {
        -                          "type": "string"
        -                        },
        -                        "price_local": {
        -                          "type": "number"
        -                        },
        -                        "tier_slug": {
        -                          "enum": [
        -                            "7_day_pass",
        -                            "solo",
        -                            "studio",
        -                            "practice"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "unlock_summary": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "tier_slug",
        -                        "display_name",
        -                        "price_local",
        -                        "currency",
        -                        "billing",
        -                        "unlock_summary"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "current_tier": {
        -                    "const": "free",
        -                    "default": "free",
        -                    "type": "string"
        -                  },
        -                  "pass_credit": {
        -                    "anyOf": [
        -                      {
        -                        "additionalProperties": false,
        -                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        -                        "properties": {
        -                          "amount_local": {
        -                            "type": "number"
        -                          },
        -                          "applies_to": {
        -                            "const": "solo_first_month",
        -                            "default": "solo_first_month",
        -                            "type": "string"
        -                          },
        -                          "currency": {
        -                            "type": "string"
        -                          },
        -                          "redeemable_until": {
        -                            "type": "string"
        -                          }
        -                        },
        -                        "required": [
        -                          "amount_local",
        -                          "currency",
        -                          "redeemable_until"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "pricing_url": {
        -                    "default": "https://civilquants.com/pricing",
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "available_tiers"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tos_url": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "upgrade_hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "warranty_disclaimer": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          }
        -        },
        -        "required": [
        -          "request_id",
        -          "issued_at",
        -          "tier"
        -        ],
        -        "type": "object"
        -      },
        -      "data": {
        -        "default": null,
        -        "title": "Data"
        -      },
        -      "error": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        -            "properties": {
        -              "code": {
        -                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        -                "enum": [
        -                  "RATE_LIMIT_EXCEEDED",
        -                  "TIER_INSUFFICIENT",
        -                  "INVALID_INPUT",
        -                  "SCHEMA_VERSION_MISMATCH",
        -                  "SCHEMA_INVARIANT_VIOLATION",
        -                  "UPSTREAM_TIMEOUT",
        -                  "BACKEND_FAILURE",
        -                  "IP_BLOCKED",
        -                  "RESOURCE_NOT_FOUND",
        -                  "RENDER_FAILURE",
        -                  "OCR_LOW_CONFIDENCE",
        -                  "MANUAL_REVIEW_REQUIRED",
        -                  "ACCEPTANCE_REQUIRED",
        -                  "INVALID_TOKEN"
        -                ],
        -                "type": "string"
        -              },
        -              "details": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "message": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "recoverable": {
        -                "type": "boolean"
        -              },
        -              "retry_after_seconds": {
        -                "anyOf": [
        -                  {
        -                    "minimum": 0,
        -                    "type": "integer"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              }
        -            },
        -            "required": [
        -              "code",
        -              "message",
        -              "recoverable"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      }
        -    },
        -    "required": [
        -      "_meta"
        -    ],
        -    "type": "object"
        -  }
        -]New value: +[
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "_meta": {
        +        "additionalProperties": false,
        +        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        +        "properties": {
        +          "deliverables": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        +                "properties": {
        +                  "docx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "dxf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "expires_at": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  },
        +                  "pdf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "xlsx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "expires_at"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "document_id": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "issued_at": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "rate_limit_remaining": {
        +            "anyOf": [
        +              {
        +                "minimum": 0,
        +                "type": "integer"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "request_id": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "schema_version": {
        +            "const": "1.0.0",
        +            "default": "1.0.0",
        +            "type": "string"
        +          },
        +          "scope_boundary": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        +                "properties": {
        +                  "not_in_scope": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "produced": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "recommended_companions": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "type": "string"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "produced",
        +                  "not_in_scope"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tier": {
        +            "enum": [
        +              "free",
        +              "paid"
        +            ],
        +            "type": "string"
        +          },
        +          "tier_upgrade": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        +                "properties": {
        +                  "available_tiers": {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        +                      "properties": {
        +                        "billing": {
        +                          "enum": [
        +                            "one_off",
        +                            "monthly",
        +                            "annual"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "currency": {
        +                          "enum": [
        +                            "GBP",
        +                            "SGD",
        +                            "EUR",
        +                            "USD",
        +                            "CAD",
        +                            "AUD",
        +                            "NZD",
        +                            "MYR"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "display_name": {
        +                          "type": "string"
        +                        },
        +                        "price_local": {
        +                          "type": "number"
        +                        },
        +                        "tier_slug": {
        +                          "enum": [
        +                            "7_day_pass",
        +                            "solo",
        +                            "studio",
        +                            "practice"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "unlock_summary": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "tier_slug",
        +                        "display_name",
        +                        "price_local",
        +                        "currency",
        +                        "billing",
        +                        "unlock_summary"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "current_tier": {
        +                    "const": "free",
        +                    "default": "free",
        +                    "type": "string"
        +                  },
        +                  "pass_credit": {
        +                    "anyOf": [
        +                      {
        +                        "additionalProperties": false,
        +                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        +                        "properties": {
        +                          "amount_local": {
        +                            "type": "number"
        +                          },
        +                          "applies_to": {
        +                            "const": "solo_first_month",
        +                            "default": "solo_first_month",
        +                            "type": "string"
        +                          },
        +                          "currency": {
        +                            "type": "string"
        +                          },
        +                          "redeemable_until": {
        +                            "type": "string"
        +                          }
        +                        },
        +                        "required": [
        +                          "amount_local",
        +                          "currency",
        +                          "redeemable_until"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "pricing_url": {
        +                    "default": "https://civilquants.com/pricing",
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "available_tiers"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tos_url": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "upgrade_hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "warranty_disclaimer": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          }
        +        },
        +        "required": [
        +          "request_id",
        +          "issued_at",
        +          "tier"
        +        ],
        +        "type": "object"
        +      },
        +      "data": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Schema § 1.1 — the typed payload returned inside `MCPResponse[ComputeResult]`.\n\nFree-tier responses omit `drawings` (the downloadable CAD artefact\npointers — the paid differentiator); the bridge enforces this. The\n`audit_trail` and the inline `drawing` preview are present on BOTH tiers\n(V1 ALIGN / 60th-fire D + C). `text_summary` is bounded to 2000 chars —\nkeeps the LLM-facing summary token-cheap and forces longer narrative into\nBoQ row descriptions where it belongs. `warnings` is the non-fatal\ngeometry advisory list (both tiers).",
        +            "properties": {
        +              "assembly_slug": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "audit_trail": {
        +                "anyOf": [
        +                  {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.7 — paid-tier audit-trail entry.\n\nOne entry per BoQ row; `boq_row_index` ties to the row position in\n`ComputeResult.boq_rows`. `derivation` is the human-readable formula\nwalk-through; `formula` is the optional formal expression.",
        +                      "properties": {
        +                        "boq_row_index": {
        +                          "minimum": 0,
        +                          "type": "integer"
        +                        },
        +                        "derivation": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "formula": {
        +                          "anyOf": [
        +                            {
        +                              "type": "string"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ],
        +                          "default": null
        +                        },
        +                        "id": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "parameters_referenced": {
        +                          "items": {
        +                            "type": "string"
        +                          },
        +                          "type": "array"
        +                        }
        +                      },
        +                      "required": [
        +                        "id",
        +                        "boq_row_index",
        +                        "derivation"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "boq_rows": {
        +                "items": {
        +                  "additionalProperties": false,
        +                  "description": "Schema § 1.3 — a single bill row in the requested standard's format.\n\n`description` is the non-verbatim functional description per spec § 13.9 /\n§ 15 invariant — NEVER reproduces a standard's verbatim clause text.\n`rate` / `amount` ship null because rates are commodity data the customer\nowns; the engine's job is the measurement, not the pricing.",
        +                  "properties": {
        +                    "amount": {
        +                      "anyOf": [
        +                        {
        +                          "type": "number"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "attribution": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "audit_id": {
        +                      "anyOf": [
        +                        {
        +                          "type": "string"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "description": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "quantity": {
        +                      "minimum": 0,
        +                      "type": "number"
        +                    },
        +                    "rate": {
        +                      "anyOf": [
        +                        {
        +                          "type": "number"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "unit": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "work_section": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    }
        +                  },
        +                  "required": [
        +                    "work_section",
        +                    "description",
        +                    "quantity",
        +                    "unit",
        +                    "attribution"
        +                  ],
        +                  "type": "object"
        +                },
        +                "type": "array"
        +              },
        +              "drawing": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": false,
        +                    "description": "Schema § 1.6a — inline server-rendered SVG preview of the geometry.\n\nThe MCP mirror of the web ``/compute`` response's ``drawing`` field\n(``api.schemas.compute.DrawingRef``): the same on-screen dimensioned\ndrawing both tiers see in the workspace, surfaced on the MCP compute\nresponse so a chat client can render it inline (60th-fire item C). This\nis the on-screen preview — present on BOTH tiers per the free/paid\nboundary; the downloadable CAD artefacts (DXF / dimensioned PDF) remain\nthe paid differentiator via the export tools.\n\nDefined here rather than importing ``DrawingRef`` because the web\n``schemas`` package imports back into this module (``schemas.render``),\nso reusing it would create an import cycle — the MCP wire contract keeps\nits own copy, the same pattern as ``BoQRow`` / ``DrawingReference``.",
        +                    "properties": {
        +                      "entity_count": {
        +                        "minimum": 0,
        +                        "type": "integer"
        +                      },
        +                      "svg_b64": {
        +                        "minLength": 1,
        +                        "type": "string"
        +                      },
        +                      "unit_of_drawing": {
        +                        "const": "m",
        +                        "default": "m",
        +                        "type": "string"
        +                      },
        +                      "viewbox_height": {
        +                        "exclusiveMinimum": 0,
        +                        "type": "number"
        +                      },
        +                      "viewbox_width": {
        +                        "exclusiveMinimum": 0,
        +                        "type": "number"
        +                      },
        +                      "viewbox_x": {
        +                        "type": "number"
        +                      },
        +                      "viewbox_y": {
        +                        "type": "number"
        +                      }
        +                    },
        +                    "required": [
        +                      "svg_b64",
        +                      "viewbox_x",
        +                      "viewbox_y",
        +                      "viewbox_width",
        +                      "viewbox_height",
        +                      "entity_count"
        +                    ],
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "drawings": {
        +                "anyOf": [
        +                  {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.6 — paid-tier drawing artefact pointer.\n\n`url` is an R2-signed URL; expiry is carried in `_meta.deliverables.expires_at`\non the envelope (not duplicated here). `layers` is DXF-only; PDF/SVG\ncallers omit it.",
        +                      "properties": {
        +                        "drawing_type": {
        +                          "enum": [
        +                            "section",
        +                            "plan",
        +                            "elevation",
        +                            "isometric",
        +                            "detail"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "format": {
        +                          "enum": [
        +                            "DXF",
        +                            "PDF",
        +                            "SVG"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "layers": {
        +                          "anyOf": [
        +                            {
        +                              "items": {
        +                                "type": "string"
        +                              },
        +                              "type": "array"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ],
        +                          "default": null
        +                        },
        +                        "scale": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "sheet_size": {
        +                          "enum": [
        +                            "A1",
        +                            "A2",
        +                            "A3",
        +                            "A4"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "url": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "drawing_type",
        +                        "format",
        +                        "url",
        +                        "sheet_size",
        +                        "scale"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "parameters_used": {
        +                "additionalProperties": false,
        +                "description": "Schema § 1.2 — the parameter snapshot the engine actually used.\n\nSplits user-supplied values from engine defaults so customers can see\nwhich numbers came from them and which the engine filled in. Every\ndefaulted parameter SHOULD have a corresponding entry in `assumptions`\n— the bridge layer enforces this when wrapping engine output.",
        +                "properties": {
        +                  "assumptions": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "engine_defaults": {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  "resolved_from_description": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "additionalProperties": false,
        +                          "description": "Schema § 1.2 — a parameter resolved by the forgiving-input layer.\n\nPopulated by the Track B-Forgiving Haiku-4.5 resolution pass; until that\nlayer lands, instances are constructed only by tests. `source` distinguishes\nthe resolution path so customers can audit which fields were inferred.",
        +                          "properties": {
        +                            "confidence": {
        +                              "anyOf": [
        +                                {
        +                                  "enum": [
        +                                    "high",
        +                                    "medium",
        +                                    "low"
        +                                  ],
        +                                  "type": "string"
        +                                },
        +                                {
        +                                  "type": "null"
        +                                }
        +                              ],
        +                              "default": null
        +                            },
        +                            "field_name": {
        +                              "minLength": 1,
        +                              "type": "string"
        +                            },
        +                            "resolved_value": {},
        +                            "source": {
        +                              "enum": [
        +                                "description_field",
        +                                "haiku_resolution",
        +                                "engine_default"
        +                              ],
        +                              "type": "string"
        +                            }
        +                          },
        +                          "required": [
        +                            "field_name",
        +                            "resolved_value",
        +                            "source"
        +                          ],
        +                          "type": "object"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "user_supplied": {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  }
        +                },
        +                "type": "object"
        +              },
        +              "standard": {
        +                "enum": [
        +                  "CESMM4",
        +                  "NRM2",
        +                  "SMM7",
        +                  "MMHW"
        +                ],
        +                "type": "string"
        +              },
        +              "text_summary": {
        +                "maxLength": 2000,
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "totals_summary": {
        +                "additionalProperties": false,
        +                "description": "Schema § 1.4 — totals_summary as a typed wrapper around the free-form dict.\n\nWire shape is a flat object (`{\"concrete_m3\": {...}, \"rebar_t\": {...}}`).\nWe model it as `RootModel`-equivalent via `model_config(extra=\"allow\")`\n+ a single `__root__`-style `entries` dict. Pydantic v2 recommends\n`RootModel` for free-form roots; using a wrapper class keeps the import\nsurface uniform with the rest of this module.",
        +                "properties": {
        +                  "entries": {
        +                    "additionalProperties": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.4 — single material/work-class total entry.",
        +                      "properties": {
        +                        "quantity": {
        +                          "minimum": 0,
        +                          "type": "number"
        +                        },
        +                        "unit": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "quantity",
        +                        "unit"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "object"
        +                  }
        +                },
        +                "type": "object"
        +              },
        +              "warnings": {
        +                "items": {
        +                  "additionalProperties": false,
        +                  "description": "Schema § 1.8 — a non-fatal geometry advisory (56th-fire T2).\n\nThe wire projection of the engine's `core.GeometryWarning`. Advisory only:\na warning NEVER changes a measured quantity — it flags geometry that is\nvalid but likely a mistake (e.g. a stale dependent-height default). Present\non BOTH tiers — a correctness/safety signal, not a paid feature.",
        +                  "properties": {
        +                    "affected_params": {
        +                      "items": {
        +                        "type": "string"
        +                      },
        +                      "type": "array"
        +                    },
        +                    "code": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "detail": {
        +                      "additionalProperties": {
        +                        "type": "number"
        +                      },
        +                      "type": "object"
        +                    },
        +                    "message": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "severity": {
        +                      "enum": [
        +                        "info",
        +                        "advisory",
        +                        "caution"
        +                      ],
        +                      "type": "string"
        +                    }
        +                  },
        +                  "required": [
        +                    "code",
        +                    "severity",
        +                    "message"
        +                  ],
        +                  "type": "object"
        +                },
        +                "type": "array"
        +              }
        +            },
        +            "required": [
        +              "assembly_slug",
        +              "standard",
        +              "parameters_used",
        +              "boq_rows",
        +              "totals_summary",
        +              "text_summary"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      },
        +      "error": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        +            "properties": {
        +              "code": {
        +                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        +                "enum": [
        +                  "RATE_LIMIT_EXCEEDED",
        +                  "TIER_INSUFFICIENT",
        +                  "INVALID_INPUT",
        +                  "SCHEMA_VERSION_MISMATCH",
        +                  "SCHEMA_INVARIANT_VIOLATION",
        +                  "UPSTREAM_TIMEOUT",
        +                  "BACKEND_FAILURE",
        +                  "IP_BLOCKED",
        +                  "RESOURCE_NOT_FOUND",
        +                  "RENDER_FAILURE",
        +                  "OCR_LOW_CONFIDENCE",
        +                  "MANUAL_REVIEW_REQUIRED",
        +                  "ACCEPTANCE_REQUIRED",
        +                  "INVALID_TOKEN"
        +                ],
        +                "type": "string"
        +              },
        +              "details": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "message": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "recoverable": {
        +                "type": "boolean"
        +              },
        +              "retry_after_seconds": {
        +                "anyOf": [
        +                  {
        +                    "minimum": 0,
        +                    "type": "integer"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              }
        +            },
        +            "required": [
        +              "code",
        +              "message",
        +              "recoverable"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      }
        +    },
        +    "required": [
        +      "_meta"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "_meta": {
        +        "additionalProperties": false,
        +        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        +        "properties": {
        +          "deliverables": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        +                "properties": {
        +                  "docx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "dxf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "expires_at": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  },
        +                  "pdf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "xlsx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "expires_at"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "document_id": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "issued_at": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "rate_limit_remaining": {
        +            "anyOf": [
        +              {
        +                "minimum": 0,
        +                "type": "integer"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "request_id": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "schema_version": {
        +            "const": "1.0.0",
        +            "default": "1.0.0",
        +            "type": "string"
        +          },
        +          "scope_boundary": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        +                "properties": {
        +                  "not_in_scope": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "produced": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "recommended_companions": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "type": "string"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "produced",
        +                  "not_in_scope"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tier": {
        +            "enum": [
        +              "free",
        +              "paid"
        +            ],
        +            "type": "string"
        +          },
        +          "tier_upgrade": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        +                "properties": {
        +                  "available_tiers": {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        +                      "properties": {
        +                        "billing": {
        +                          "enum": [
        +                            "one_off",
        +                            "monthly",
        +                            "annual"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "currency": {
        +                          "enum": [
        +                            "GBP",
        +                            "SGD",
        +                            "EUR",
        +                            "USD",
        +                            "CAD",
        +                            "AUD",
        +                            "NZD",
        +                            "MYR"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "display_name": {
        +                          "type": "string"
        +                        },
        +                        "price_local": {
        +                          "type": "number"
        +                        },
        +                        "tier_slug": {
        +                          "enum": [
        +                            "7_day_pass",
        +                            "solo",
        +                            "studio",
        +                            "practice"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "unlock_summary": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "tier_slug",
        +                        "display_name",
        +                        "price_local",
        +                        "currency",
        +                        "billing",
        +                        "unlock_summary"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "current_tier": {
        +                    "const": "free",
        +                    "default": "free",
        +                    "type": "string"
        +                  },
        +                  "pass_credit": {
        +                    "anyOf": [
        +                      {
        +                        "additionalProperties": false,
        +                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        +                        "properties": {
        +                          "amount_local": {
        +                            "type": "number"
        +                          },
        +                          "applies_to": {
        +                            "const": "solo_first_month",
        +                            "default": "solo_first_month",
        +                            "type": "string"
        +                          },
        +                          "currency": {
        +                            "type": "string"
        +                          },
        +                          "redeemable_until": {
        +                            "type": "string"
        +                          }
        +                        },
        +                        "required": [
        +                          "amount_local",
        +                          "currency",
        +                          "redeemable_until"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "pricing_url": {
        +                    "default": "https://civilquants.com/pricing",
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "available_tiers"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tos_url": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "upgrade_hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "warranty_disclaimer": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          }
        +        },
        +        "required": [
        +          "request_id",
        +          "issued_at",
        +          "tier"
        +        ],
        +        "type": "object"
        +      },
        +      "data": {
        +        "default": null,
        +        "title": "Data"
        +      },
        +      "error": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        +            "properties": {
        +              "code": {
        +                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        +                "enum": [
        +                  "RATE_LIMIT_EXCEEDED",
        +                  "TIER_INSUFFICIENT",
        +                  "INVALID_INPUT",
        +                  "SCHEMA_VERSION_MISMATCH",
        +                  "SCHEMA_INVARIANT_VIOLATION",
        +                  "UPSTREAM_TIMEOUT",
        +                  "BACKEND_FAILURE",
        +                  "IP_BLOCKED",
        +                  "RESOURCE_NOT_FOUND",
        +                  "RENDER_FAILURE",
        +                  "OCR_LOW_CONFIDENCE",
        +                  "MANUAL_REVIEW_REQUIRED",
        +                  "ACCEPTANCE_REQUIRED",
        +                  "INVALID_TOKEN"
        +                ],
        +                "type": "string"
        +              },
        +              "details": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "message": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "recoverable": {
        +                "type": "boolean"
        +              },
        +              "retry_after_seconds": {
        +                "anyOf": [
        +                  {
        +                    "minimum": 0,
        +                    "type": "integer"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              }
        +            },
        +            "required": [
        +              "code",
        +              "message",
        +              "recoverable"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      }
        +    },
        +    "required": [
        +      "_meta"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedcompute_hard_material_in_trench3 fields changed
      • addedInput schema / properties / deliverables
        Added value: +{
        +  "anyOf": [
        +    {
        +      "items": {
        +        "const": "xlsx",
        +        "type": "string"
        +      },
        +      "type": "array"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null
        +}
      • addedInput schema / properties / output_mode
        Added value: +{
        +  "default": "full_json",
        +  "enum": [
        +    "summary",
        +    "boq",
        +    "boq_with_backup",
        +    "full_json"
        +  ],
        +  "type": "string"
        +}
      • changedOutput schema / properties / result / anyOf
        Previous value: -[
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "_meta": {
        -        "additionalProperties": false,
        -        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        -        "properties": {
        -          "deliverables": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        -                "properties": {
        -                  "docx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "dxf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "expires_at": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  },
        -                  "pdf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "xlsx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "expires_at"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "document_id": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "issued_at": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "rate_limit_remaining": {
        -            "anyOf": [
        -              {
        -                "minimum": 0,
        -                "type": "integer"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "request_id": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "schema_version": {
        -            "const": "1.0.0",
        -            "default": "1.0.0",
        -            "type": "string"
        -          },
        -          "scope_boundary": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        -                "properties": {
        -                  "not_in_scope": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "produced": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "recommended_companions": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "type": "string"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "produced",
        -                  "not_in_scope"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tier": {
        -            "enum": [
        -              "free",
        -              "paid"
        -            ],
        -            "type": "string"
        -          },
        -          "tier_upgrade": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        -                "properties": {
        -                  "available_tiers": {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        -                      "properties": {
        -                        "billing": {
        -                          "enum": [
        -                            "one_off",
        -                            "monthly",
        -                            "annual"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "currency": {
        -                          "enum": [
        -                            "GBP",
        -                            "SGD",
        -                            "EUR",
        -                            "USD",
        -                            "CAD",
        -                            "AUD",
        -                            "NZD",
        -                            "MYR"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "display_name": {
        -                          "type": "string"
        -                        },
        -                        "price_local": {
        -                          "type": "number"
        -                        },
        -                        "tier_slug": {
        -                          "enum": [
        -                            "7_day_pass",
        -                            "solo",
        -                            "studio",
        -                            "practice"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "unlock_summary": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "tier_slug",
        -                        "display_name",
        -                        "price_local",
        -                        "currency",
        -                        "billing",
        -                        "unlock_summary"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "current_tier": {
        -                    "const": "free",
        -                    "default": "free",
        -                    "type": "string"
        -                  },
        -                  "pass_credit": {
        -                    "anyOf": [
        -                      {
        -                        "additionalProperties": false,
        -                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        -                        "properties": {
        -                          "amount_local": {
        -                            "type": "number"
        -                          },
        -                          "applies_to": {
        -                            "const": "solo_first_month",
        -                            "default": "solo_first_month",
        -                            "type": "string"
        -                          },
        -                          "currency": {
        -                            "type": "string"
        -                          },
        -                          "redeemable_until": {
        -                            "type": "string"
        -                          }
        -                        },
        -                        "required": [
        -                          "amount_local",
        -                          "currency",
        -                          "redeemable_until"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "pricing_url": {
        -                    "default": "https://civilquants.com/pricing",
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "available_tiers"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tos_url": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "upgrade_hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "warranty_disclaimer": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          }
        -        },
        -        "required": [
        -          "request_id",
        -          "issued_at",
        -          "tier"
        -        ],
        -        "type": "object"
        -      },
        -      "data": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Schema § 1.1 — the typed payload returned inside `MCPResponse[ComputeResult]`.\n\nFree-tier responses MUST omit `drawings` and `audit_trail` (the bridge\nenforces this); paid-tier responses populate both. `text_summary` is\nbounded to 2000 chars — keeps the LLM-facing summary token-cheap and\nforces longer narrative into BoQ row descriptions where it belongs.\n`warnings` is the non-fatal geometry advisory list (both tiers).",
        -            "properties": {
        -              "assembly_slug": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "audit_trail": {
        -                "anyOf": [
        -                  {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.7 — paid-tier audit-trail entry.\n\nOne entry per BoQ row; `boq_row_index` ties to the row position in\n`ComputeResult.boq_rows`. `derivation` is the human-readable formula\nwalk-through; `formula` is the optional formal expression.",
        -                      "properties": {
        -                        "boq_row_index": {
        -                          "minimum": 0,
        -                          "type": "integer"
        -                        },
        -                        "derivation": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "formula": {
        -                          "anyOf": [
        -                            {
        -                              "type": "string"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ],
        -                          "default": null
        -                        },
        -                        "id": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "parameters_referenced": {
        -                          "items": {
        -                            "type": "string"
        -                          },
        -                          "type": "array"
        -                        }
        -                      },
        -                      "required": [
        -                        "id",
        -                        "boq_row_index",
        -                        "derivation"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "boq_rows": {
        -                "items": {
        -                  "additionalProperties": false,
        -                  "description": "Schema § 1.3 — a single bill row in the requested standard's format.\n\n`description` is the non-verbatim functional description per spec § 13.9 /\n§ 15 invariant — NEVER reproduces a standard's verbatim clause text.\n`rate` / `amount` ship null because rates are commodity data the customer\nowns; the engine's job is the measurement, not the pricing.",
        -                  "properties": {
        -                    "amount": {
        -                      "anyOf": [
        -                        {
        -                          "type": "number"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "attribution": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "audit_id": {
        -                      "anyOf": [
        -                        {
        -                          "type": "string"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "description": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "quantity": {
        -                      "minimum": 0,
        -                      "type": "number"
        -                    },
        -                    "rate": {
        -                      "anyOf": [
        -                        {
        -                          "type": "number"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "unit": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "work_section": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    }
        -                  },
        -                  "required": [
        -                    "work_section",
        -                    "description",
        -                    "quantity",
        -                    "unit",
        -                    "attribution"
        -                  ],
        -                  "type": "object"
        -                },
        -                "type": "array"
        -              },
        -              "drawings": {
        -                "anyOf": [
        -                  {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.6 — paid-tier drawing artefact pointer.\n\n`url` is an R2-signed URL; expiry is carried in `_meta.deliverables.expires_at`\non the envelope (not duplicated here). `layers` is DXF-only; PDF/SVG\ncallers omit it.",
        -                      "properties": {
        -                        "drawing_type": {
        -                          "enum": [
        -                            "section",
        -                            "plan",
        -                            "elevation",
        -                            "isometric",
        -                            "detail"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "format": {
        -                          "enum": [
        -                            "DXF",
        -                            "PDF",
        -                            "SVG"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "layers": {
        -                          "anyOf": [
        -                            {
        -                              "items": {
        -                                "type": "string"
        -                              },
        -                              "type": "array"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ],
        -                          "default": null
        -                        },
        -                        "scale": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "sheet_size": {
        -                          "enum": [
        -                            "A1",
        -                            "A2",
        -                            "A3",
        -                            "A4"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "url": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "drawing_type",
        -                        "format",
        -                        "url",
        -                        "sheet_size",
        -                        "scale"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "parameters_used": {
        -                "additionalProperties": false,
        -                "description": "Schema § 1.2 — the parameter snapshot the engine actually used.\n\nSplits user-supplied values from engine defaults so customers can see\nwhich numbers came from them and which the engine filled in. Every\ndefaulted parameter SHOULD have a corresponding entry in `assumptions`\n— the bridge layer enforces this when wrapping engine output.",
        -                "properties": {
        -                  "assumptions": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "engine_defaults": {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  "resolved_from_description": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "additionalProperties": false,
        -                          "description": "Schema § 1.2 — a parameter resolved by the forgiving-input layer.\n\nPopulated by the Track B-Forgiving Haiku-4.5 resolution pass; until that\nlayer lands, instances are constructed only by tests. `source` distinguishes\nthe resolution path so customers can audit which fields were inferred.",
        -                          "properties": {
        -                            "confidence": {
        -                              "anyOf": [
        -                                {
        -                                  "enum": [
        -                                    "high",
        -                                    "medium",
        -                                    "low"
        -                                  ],
        -                                  "type": "string"
        -                                },
        -                                {
        -                                  "type": "null"
        -                                }
        -                              ],
        -                              "default": null
        -                            },
        -                            "field_name": {
        -                              "minLength": 1,
        -                              "type": "string"
        -                            },
        -                            "resolved_value": {},
        -                            "source": {
        -                              "enum": [
        -                                "description_field",
        -                                "haiku_resolution",
        -                                "engine_default"
        -                              ],
        -                              "type": "string"
        -                            }
        -                          },
        -                          "required": [
        -                            "field_name",
        -                            "resolved_value",
        -                            "source"
        -                          ],
        -                          "type": "object"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "user_supplied": {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  }
        -                },
        -                "type": "object"
        -              },
        -              "standard": {
        -                "enum": [
        -                  "CESMM4",
        -                  "NRM2",
        -                  "SMM7",
        -                  "MMHW"
        -                ],
        -                "type": "string"
        -              },
        -              "text_summary": {
        -                "maxLength": 2000,
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "totals_summary": {
        -                "additionalProperties": false,
        -                "description": "Schema § 1.4 — totals_summary as a typed wrapper around the free-form dict.\n\nWire shape is a flat object (`{\"concrete_m3\": {...}, \"rebar_t\": {...}}`).\nWe model it as `RootModel`-equivalent via `model_config(extra=\"allow\")`\n+ a single `__root__`-style `entries` dict. Pydantic v2 recommends\n`RootModel` for free-form roots; using a wrapper class keeps the import\nsurface uniform with the rest of this module.",
        -                "properties": {
        -                  "entries": {
        -                    "additionalProperties": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.4 — single material/work-class total entry.",
        -                      "properties": {
        -                        "quantity": {
        -                          "minimum": 0,
        -                          "type": "number"
        -                        },
        -                        "unit": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "quantity",
        -                        "unit"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "object"
        -                  }
        -                },
        -                "type": "object"
        -              },
        -              "warnings": {
        -                "items": {
        -                  "additionalProperties": false,
        -                  "description": "Schema § 1.8 — a non-fatal geometry advisory (56th-fire T2).\n\nThe wire projection of the engine's `core.GeometryWarning`. Advisory only:\na warning NEVER changes a measured quantity — it flags geometry that is\nvalid but likely a mistake (e.g. a stale dependent-height default). Present\non BOTH tiers — a correctness/safety signal, not a paid feature.",
        -                  "properties": {
        -                    "affected_params": {
        -                      "items": {
        -                        "type": "string"
        -                      },
        -                      "type": "array"
        -                    },
        -                    "code": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "detail": {
        -                      "additionalProperties": {
        -                        "type": "number"
        -                      },
        -                      "type": "object"
        -                    },
        -                    "message": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "severity": {
        -                      "enum": [
        -                        "info",
        -                        "advisory",
        -                        "caution"
        -                      ],
        -                      "type": "string"
        -                    }
        -                  },
        -                  "required": [
        -                    "code",
        -                    "severity",
        -                    "message"
        -                  ],
        -                  "type": "object"
        -                },
        -                "type": "array"
        -              }
        -            },
        -            "required": [
        -              "assembly_slug",
        -              "standard",
        -              "parameters_used",
        -              "boq_rows",
        -              "totals_summary",
        -              "text_summary"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      },
        -      "error": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        -            "properties": {
        -              "code": {
        -                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        -                "enum": [
        -                  "RATE_LIMIT_EXCEEDED",
        -                  "TIER_INSUFFICIENT",
        -                  "INVALID_INPUT",
        -                  "SCHEMA_VERSION_MISMATCH",
        -                  "SCHEMA_INVARIANT_VIOLATION",
        -                  "UPSTREAM_TIMEOUT",
        -                  "BACKEND_FAILURE",
        -                  "IP_BLOCKED",
        -                  "RESOURCE_NOT_FOUND",
        -                  "RENDER_FAILURE",
        -                  "OCR_LOW_CONFIDENCE",
        -                  "MANUAL_REVIEW_REQUIRED",
        -                  "ACCEPTANCE_REQUIRED",
        -                  "INVALID_TOKEN"
        -                ],
        -                "type": "string"
        -              },
        -              "details": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "message": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "recoverable": {
        -                "type": "boolean"
        -              },
        -              "retry_after_seconds": {
        -                "anyOf": [
        -                  {
        -                    "minimum": 0,
        -                    "type": "integer"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              }
        -            },
        -            "required": [
        -              "code",
        -              "message",
        -              "recoverable"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      }
        -    },
        -    "required": [
        -      "_meta"
        -    ],
        -    "type": "object"
        -  },
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "_meta": {
        -        "additionalProperties": false,
        -        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        -        "properties": {
        -          "deliverables": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        -                "properties": {
        -                  "docx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "dxf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "expires_at": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  },
        -                  "pdf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "xlsx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "expires_at"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "document_id": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "issued_at": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "rate_limit_remaining": {
        -            "anyOf": [
        -              {
        -                "minimum": 0,
        -                "type": "integer"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "request_id": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "schema_version": {
        -            "const": "1.0.0",
        -            "default": "1.0.0",
        -            "type": "string"
        -          },
        -          "scope_boundary": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        -                "properties": {
        -                  "not_in_scope": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "produced": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "recommended_companions": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "type": "string"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "produced",
        -                  "not_in_scope"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tier": {
        -            "enum": [
        -              "free",
        -              "paid"
        -            ],
        -            "type": "string"
        -          },
        -          "tier_upgrade": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        -                "properties": {
        -                  "available_tiers": {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        -                      "properties": {
        -                        "billing": {
        -                          "enum": [
        -                            "one_off",
        -                            "monthly",
        -                            "annual"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "currency": {
        -                          "enum": [
        -                            "GBP",
        -                            "SGD",
        -                            "EUR",
        -                            "USD",
        -                            "CAD",
        -                            "AUD",
        -                            "NZD",
        -                            "MYR"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "display_name": {
        -                          "type": "string"
        -                        },
        -                        "price_local": {
        -                          "type": "number"
        -                        },
        -                        "tier_slug": {
        -                          "enum": [
        -                            "7_day_pass",
        -                            "solo",
        -                            "studio",
        -                            "practice"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "unlock_summary": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "tier_slug",
        -                        "display_name",
        -                        "price_local",
        -                        "currency",
        -                        "billing",
        -                        "unlock_summary"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "current_tier": {
        -                    "const": "free",
        -                    "default": "free",
        -                    "type": "string"
        -                  },
        -                  "pass_credit": {
        -                    "anyOf": [
        -                      {
        -                        "additionalProperties": false,
        -                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        -                        "properties": {
        -                          "amount_local": {
        -                            "type": "number"
        -                          },
        -                          "applies_to": {
        -                            "const": "solo_first_month",
        -                            "default": "solo_first_month",
        -                            "type": "string"
        -                          },
        -                          "currency": {
        -                            "type": "string"
        -                          },
        -                          "redeemable_until": {
        -                            "type": "string"
        -                          }
        -                        },
        -                        "required": [
        -                          "amount_local",
        -                          "currency",
        -                          "redeemable_until"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "pricing_url": {
        -                    "default": "https://civilquants.com/pricing",
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "available_tiers"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tos_url": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "upgrade_hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "warranty_disclaimer": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          }
        -        },
        -        "required": [
        -          "request_id",
        -          "issued_at",
        -          "tier"
        -        ],
        -        "type": "object"
        -      },
        -      "data": {
        -        "default": null,
        -        "title": "Data"
        -      },
        -      "error": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        -            "properties": {
        -              "code": {
        -                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        -                "enum": [
        -                  "RATE_LIMIT_EXCEEDED",
        -                  "TIER_INSUFFICIENT",
        -                  "INVALID_INPUT",
        -                  "SCHEMA_VERSION_MISMATCH",
        -                  "SCHEMA_INVARIANT_VIOLATION",
        -                  "UPSTREAM_TIMEOUT",
        -                  "BACKEND_FAILURE",
        -                  "IP_BLOCKED",
        -                  "RESOURCE_NOT_FOUND",
        -                  "RENDER_FAILURE",
        -                  "OCR_LOW_CONFIDENCE",
        -                  "MANUAL_REVIEW_REQUIRED",
        -                  "ACCEPTANCE_REQUIRED",
        -                  "INVALID_TOKEN"
        -                ],
        -                "type": "string"
        -              },
        -              "details": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "message": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "recoverable": {
        -                "type": "boolean"
        -              },
        -              "retry_after_seconds": {
        -                "anyOf": [
        -                  {
        -                    "minimum": 0,
        -                    "type": "integer"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              }
        -            },
        -            "required": [
        -              "code",
        -              "message",
        -              "recoverable"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      }
        -    },
        -    "required": [
        -      "_meta"
        -    ],
        -    "type": "object"
        -  }
        -]New value: +[
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "_meta": {
        +        "additionalProperties": false,
        +        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        +        "properties": {
        +          "deliverables": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        +                "properties": {
        +                  "docx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "dxf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "expires_at": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  },
        +                  "pdf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "xlsx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "expires_at"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "document_id": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "issued_at": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "rate_limit_remaining": {
        +            "anyOf": [
        +              {
        +                "minimum": 0,
        +                "type": "integer"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "request_id": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "schema_version": {
        +            "const": "1.0.0",
        +            "default": "1.0.0",
        +            "type": "string"
        +          },
        +          "scope_boundary": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        +                "properties": {
        +                  "not_in_scope": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "produced": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "recommended_companions": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "type": "string"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "produced",
        +                  "not_in_scope"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tier": {
        +            "enum": [
        +              "free",
        +              "paid"
        +            ],
        +            "type": "string"
        +          },
        +          "tier_upgrade": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        +                "properties": {
        +                  "available_tiers": {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        +                      "properties": {
        +                        "billing": {
        +                          "enum": [
        +                            "one_off",
        +                            "monthly",
        +                            "annual"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "currency": {
        +                          "enum": [
        +                            "GBP",
        +                            "SGD",
        +                            "EUR",
        +                            "USD",
        +                            "CAD",
        +                            "AUD",
        +                            "NZD",
        +                            "MYR"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "display_name": {
        +                          "type": "string"
        +                        },
        +                        "price_local": {
        +                          "type": "number"
        +                        },
        +                        "tier_slug": {
        +                          "enum": [
        +                            "7_day_pass",
        +                            "solo",
        +                            "studio",
        +                            "practice"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "unlock_summary": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "tier_slug",
        +                        "display_name",
        +                        "price_local",
        +                        "currency",
        +                        "billing",
        +                        "unlock_summary"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "current_tier": {
        +                    "const": "free",
        +                    "default": "free",
        +                    "type": "string"
        +                  },
        +                  "pass_credit": {
        +                    "anyOf": [
        +                      {
        +                        "additionalProperties": false,
        +                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        +                        "properties": {
        +                          "amount_local": {
        +                            "type": "number"
        +                          },
        +                          "applies_to": {
        +                            "const": "solo_first_month",
        +                            "default": "solo_first_month",
        +                            "type": "string"
        +                          },
        +                          "currency": {
        +                            "type": "string"
        +                          },
        +                          "redeemable_until": {
        +                            "type": "string"
        +                          }
        +                        },
        +                        "required": [
        +                          "amount_local",
        +                          "currency",
        +                          "redeemable_until"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "pricing_url": {
        +                    "default": "https://civilquants.com/pricing",
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "available_tiers"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tos_url": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "upgrade_hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "warranty_disclaimer": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          }
        +        },
        +        "required": [
        +          "request_id",
        +          "issued_at",
        +          "tier"
        +        ],
        +        "type": "object"
        +      },
        +      "data": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Schema § 1.1 — the typed payload returned inside `MCPResponse[ComputeResult]`.\n\nFree-tier responses omit `drawings` (the downloadable CAD artefact\npointers — the paid differentiator); the bridge enforces this. The\n`audit_trail` and the inline `drawing` preview are present on BOTH tiers\n(V1 ALIGN / 60th-fire D + C). `text_summary` is bounded to 2000 chars —\nkeeps the LLM-facing summary token-cheap and forces longer narrative into\nBoQ row descriptions where it belongs. `warnings` is the non-fatal\ngeometry advisory list (both tiers).",
        +            "properties": {
        +              "assembly_slug": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "audit_trail": {
        +                "anyOf": [
        +                  {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.7 — paid-tier audit-trail entry.\n\nOne entry per BoQ row; `boq_row_index` ties to the row position in\n`ComputeResult.boq_rows`. `derivation` is the human-readable formula\nwalk-through; `formula` is the optional formal expression.",
        +                      "properties": {
        +                        "boq_row_index": {
        +                          "minimum": 0,
        +                          "type": "integer"
        +                        },
        +                        "derivation": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "formula": {
        +                          "anyOf": [
        +                            {
        +                              "type": "string"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ],
        +                          "default": null
        +                        },
        +                        "id": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "parameters_referenced": {
        +                          "items": {
        +                            "type": "string"
        +                          },
        +                          "type": "array"
        +                        }
        +                      },
        +                      "required": [
        +                        "id",
        +                        "boq_row_index",
        +                        "derivation"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "boq_rows": {
        +                "items": {
        +                  "additionalProperties": false,
        +                  "description": "Schema § 1.3 — a single bill row in the requested standard's format.\n\n`description` is the non-verbatim functional description per spec § 13.9 /\n§ 15 invariant — NEVER reproduces a standard's verbatim clause text.\n`rate` / `amount` ship null because rates are commodity data the customer\nowns; the engine's job is the measurement, not the pricing.",
        +                  "properties": {
        +                    "amount": {
        +                      "anyOf": [
        +                        {
        +                          "type": "number"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "attribution": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "audit_id": {
        +                      "anyOf": [
        +                        {
        +                          "type": "string"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "description": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "quantity": {
        +                      "minimum": 0,
        +                      "type": "number"
        +                    },
        +                    "rate": {
        +                      "anyOf": [
        +                        {
        +                          "type": "number"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "unit": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "work_section": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    }
        +                  },
        +                  "required": [
        +                    "work_section",
        +                    "description",
        +                    "quantity",
        +                    "unit",
        +                    "attribution"
        +                  ],
        +                  "type": "object"
        +                },
        +                "type": "array"
        +              },
        +              "drawing": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": false,
        +                    "description": "Schema § 1.6a — inline server-rendered SVG preview of the geometry.\n\nThe MCP mirror of the web ``/compute`` response's ``drawing`` field\n(``api.schemas.compute.DrawingRef``): the same on-screen dimensioned\ndrawing both tiers see in the workspace, surfaced on the MCP compute\nresponse so a chat client can render it inline (60th-fire item C). This\nis the on-screen preview — present on BOTH tiers per the free/paid\nboundary; the downloadable CAD artefacts (DXF / dimensioned PDF) remain\nthe paid differentiator via the export tools.\n\nDefined here rather than importing ``DrawingRef`` because the web\n``schemas`` package imports back into this module (``schemas.render``),\nso reusing it would create an import cycle — the MCP wire contract keeps\nits own copy, the same pattern as ``BoQRow`` / ``DrawingReference``.",
        +                    "properties": {
        +                      "entity_count": {
        +                        "minimum": 0,
        +                        "type": "integer"
        +                      },
        +                      "svg_b64": {
        +                        "minLength": 1,
        +                        "type": "string"
        +                      },
        +                      "unit_of_drawing": {
        +                        "const": "m",
        +                        "default": "m",
        +                        "type": "string"
        +                      },
        +                      "viewbox_height": {
        +                        "exclusiveMinimum": 0,
        +                        "type": "number"
        +                      },
        +                      "viewbox_width": {
        +                        "exclusiveMinimum": 0,
        +                        "type": "number"
        +                      },
        +                      "viewbox_x": {
        +                        "type": "number"
        +                      },
        +                      "viewbox_y": {
        +                        "type": "number"
        +                      }
        +                    },
        +                    "required": [
        +                      "svg_b64",
        +                      "viewbox_x",
        +                      "viewbox_y",
        +                      "viewbox_width",
        +                      "viewbox_height",
        +                      "entity_count"
        +                    ],
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "drawings": {
        +                "anyOf": [
        +                  {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.6 — paid-tier drawing artefact pointer.\n\n`url` is an R2-signed URL; expiry is carried in `_meta.deliverables.expires_at`\non the envelope (not duplicated here). `layers` is DXF-only; PDF/SVG\ncallers omit it.",
        +                      "properties": {
        +                        "drawing_type": {
        +                          "enum": [
        +                            "section",
        +                            "plan",
        +                            "elevation",
        +                            "isometric",
        +                            "detail"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "format": {
        +                          "enum": [
        +                            "DXF",
        +                            "PDF",
        +                            "SVG"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "layers": {
        +                          "anyOf": [
        +                            {
        +                              "items": {
        +                                "type": "string"
        +                              },
        +                              "type": "array"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ],
        +                          "default": null
        +                        },
        +                        "scale": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "sheet_size": {
        +                          "enum": [
        +                            "A1",
        +                            "A2",
        +                            "A3",
        +                            "A4"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "url": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "drawing_type",
        +                        "format",
        +                        "url",
        +                        "sheet_size",
        +                        "scale"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "parameters_used": {
        +                "additionalProperties": false,
        +                "description": "Schema § 1.2 — the parameter snapshot the engine actually used.\n\nSplits user-supplied values from engine defaults so customers can see\nwhich numbers came from them and which the engine filled in. Every\ndefaulted parameter SHOULD have a corresponding entry in `assumptions`\n— the bridge layer enforces this when wrapping engine output.",
        +                "properties": {
        +                  "assumptions": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "engine_defaults": {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  "resolved_from_description": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "additionalProperties": false,
        +                          "description": "Schema § 1.2 — a parameter resolved by the forgiving-input layer.\n\nPopulated by the Track B-Forgiving Haiku-4.5 resolution pass; until that\nlayer lands, instances are constructed only by tests. `source` distinguishes\nthe resolution path so customers can audit which fields were inferred.",
        +                          "properties": {
        +                            "confidence": {
        +                              "anyOf": [
        +                                {
        +                                  "enum": [
        +                                    "high",
        +                                    "medium",
        +                                    "low"
        +                                  ],
        +                                  "type": "string"
        +                                },
        +                                {
        +                                  "type": "null"
        +                                }
        +                              ],
        +                              "default": null
        +                            },
        +                            "field_name": {
        +                              "minLength": 1,
        +                              "type": "string"
        +                            },
        +                            "resolved_value": {},
        +                            "source": {
        +                              "enum": [
        +                                "description_field",
        +                                "haiku_resolution",
        +                                "engine_default"
        +                              ],
        +                              "type": "string"
        +                            }
        +                          },
        +                          "required": [
        +                            "field_name",
        +                            "resolved_value",
        +                            "source"
        +                          ],
        +                          "type": "object"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "user_supplied": {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  }
        +                },
        +                "type": "object"
        +              },
        +              "standard": {
        +                "enum": [
        +                  "CESMM4",
        +                  "NRM2",
        +                  "SMM7",
        +                  "MMHW"
        +                ],
        +                "type": "string"
        +              },
        +              "text_summary": {
        +                "maxLength": 2000,
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "totals_summary": {
        +                "additionalProperties": false,
        +                "description": "Schema § 1.4 — totals_summary as a typed wrapper around the free-form dict.\n\nWire shape is a flat object (`{\"concrete_m3\": {...}, \"rebar_t\": {...}}`).\nWe model it as `RootModel`-equivalent via `model_config(extra=\"allow\")`\n+ a single `__root__`-style `entries` dict. Pydantic v2 recommends\n`RootModel` for free-form roots; using a wrapper class keeps the import\nsurface uniform with the rest of this module.",
        +                "properties": {
        +                  "entries": {
        +                    "additionalProperties": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.4 — single material/work-class total entry.",
        +                      "properties": {
        +                        "quantity": {
        +                          "minimum": 0,
        +                          "type": "number"
        +                        },
        +                        "unit": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "quantity",
        +                        "unit"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "object"
        +                  }
        +                },
        +                "type": "object"
        +              },
        +              "warnings": {
        +                "items": {
        +                  "additionalProperties": false,
        +                  "description": "Schema § 1.8 — a non-fatal geometry advisory (56th-fire T2).\n\nThe wire projection of the engine's `core.GeometryWarning`. Advisory only:\na warning NEVER changes a measured quantity — it flags geometry that is\nvalid but likely a mistake (e.g. a stale dependent-height default). Present\non BOTH tiers — a correctness/safety signal, not a paid feature.",
        +                  "properties": {
        +                    "affected_params": {
        +                      "items": {
        +                        "type": "string"
        +                      },
        +                      "type": "array"
        +                    },
        +                    "code": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "detail": {
        +                      "additionalProperties": {
        +                        "type": "number"
        +                      },
        +                      "type": "object"
        +                    },
        +                    "message": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "severity": {
        +                      "enum": [
        +                        "info",
        +                        "advisory",
        +                        "caution"
        +                      ],
        +                      "type": "string"
        +                    }
        +                  },
        +                  "required": [
        +                    "code",
        +                    "severity",
        +                    "message"
        +                  ],
        +                  "type": "object"
        +                },
        +                "type": "array"
        +              }
        +            },
        +            "required": [
        +              "assembly_slug",
        +              "standard",
        +              "parameters_used",
        +              "boq_rows",
        +              "totals_summary",
        +              "text_summary"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      },
        +      "error": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        +            "properties": {
        +              "code": {
        +                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        +                "enum": [
        +                  "RATE_LIMIT_EXCEEDED",
        +                  "TIER_INSUFFICIENT",
        +                  "INVALID_INPUT",
        +                  "SCHEMA_VERSION_MISMATCH",
        +                  "SCHEMA_INVARIANT_VIOLATION",
        +                  "UPSTREAM_TIMEOUT",
        +                  "BACKEND_FAILURE",
        +                  "IP_BLOCKED",
        +                  "RESOURCE_NOT_FOUND",
        +                  "RENDER_FAILURE",
        +                  "OCR_LOW_CONFIDENCE",
        +                  "MANUAL_REVIEW_REQUIRED",
        +                  "ACCEPTANCE_REQUIRED",
        +                  "INVALID_TOKEN"
        +                ],
        +                "type": "string"
        +              },
        +              "details": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "message": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "recoverable": {
        +                "type": "boolean"
        +              },
        +              "retry_after_seconds": {
        +                "anyOf": [
        +                  {
        +                    "minimum": 0,
        +                    "type": "integer"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              }
        +            },
        +            "required": [
        +              "code",
        +              "message",
        +              "recoverable"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      }
        +    },
        +    "required": [
        +      "_meta"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "_meta": {
        +        "additionalProperties": false,
        +        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        +        "properties": {
        +          "deliverables": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        +                "properties": {
        +                  "docx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "dxf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "expires_at": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  },
        +                  "pdf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "xlsx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "expires_at"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "document_id": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "issued_at": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "rate_limit_remaining": {
        +            "anyOf": [
        +              {
        +                "minimum": 0,
        +                "type": "integer"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "request_id": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "schema_version": {
        +            "const": "1.0.0",
        +            "default": "1.0.0",
        +            "type": "string"
        +          },
        +          "scope_boundary": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        +                "properties": {
        +                  "not_in_scope": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "produced": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "recommended_companions": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "type": "string"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "produced",
        +                  "not_in_scope"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tier": {
        +            "enum": [
        +              "free",
        +              "paid"
        +            ],
        +            "type": "string"
        +          },
        +          "tier_upgrade": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        +                "properties": {
        +                  "available_tiers": {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        +                      "properties": {
        +                        "billing": {
        +                          "enum": [
        +                            "one_off",
        +                            "monthly",
        +                            "annual"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "currency": {
        +                          "enum": [
        +                            "GBP",
        +                            "SGD",
        +                            "EUR",
        +                            "USD",
        +                            "CAD",
        +                            "AUD",
        +                            "NZD",
        +                            "MYR"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "display_name": {
        +                          "type": "string"
        +                        },
        +                        "price_local": {
        +                          "type": "number"
        +                        },
        +                        "tier_slug": {
        +                          "enum": [
        +                            "7_day_pass",
        +                            "solo",
        +                            "studio",
        +                            "practice"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "unlock_summary": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "tier_slug",
        +                        "display_name",
        +                        "price_local",
        +                        "currency",
        +                        "billing",
        +                        "unlock_summary"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "current_tier": {
        +                    "const": "free",
        +                    "default": "free",
        +                    "type": "string"
        +                  },
        +                  "pass_credit": {
        +                    "anyOf": [
        +                      {
        +                        "additionalProperties": false,
        +                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        +                        "properties": {
        +                          "amount_local": {
        +                            "type": "number"
        +                          },
        +                          "applies_to": {
        +                            "const": "solo_first_month",
        +                            "default": "solo_first_month",
        +                            "type": "string"
        +                          },
        +                          "currency": {
        +                            "type": "string"
        +                          },
        +                          "redeemable_until": {
        +                            "type": "string"
        +                          }
        +                        },
        +                        "required": [
        +                          "amount_local",
        +                          "currency",
        +                          "redeemable_until"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "pricing_url": {
        +                    "default": "https://civilquants.com/pricing",
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "available_tiers"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tos_url": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "upgrade_hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "warranty_disclaimer": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          }
        +        },
        +        "required": [
        +          "request_id",
        +          "issued_at",
        +          "tier"
        +        ],
        +        "type": "object"
        +      },
        +      "data": {
        +        "default": null,
        +        "title": "Data"
        +      },
        +      "error": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        +            "properties": {
        +              "code": {
        +                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        +                "enum": [
        +                  "RATE_LIMIT_EXCEEDED",
        +                  "TIER_INSUFFICIENT",
        +                  "INVALID_INPUT",
        +                  "SCHEMA_VERSION_MISMATCH",
        +                  "SCHEMA_INVARIANT_VIOLATION",
        +                  "UPSTREAM_TIMEOUT",
        +                  "BACKEND_FAILURE",
        +                  "IP_BLOCKED",
        +                  "RESOURCE_NOT_FOUND",
        +                  "RENDER_FAILURE",
        +                  "OCR_LOW_CONFIDENCE",
        +                  "MANUAL_REVIEW_REQUIRED",
        +                  "ACCEPTANCE_REQUIRED",
        +                  "INVALID_TOKEN"
        +                ],
        +                "type": "string"
        +              },
        +              "details": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "message": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "recoverable": {
        +                "type": "boolean"
        +              },
        +              "retry_after_seconds": {
        +                "anyOf": [
        +                  {
        +                    "minimum": 0,
        +                    "type": "integer"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              }
        +            },
        +            "required": [
        +              "code",
        +              "message",
        +              "recoverable"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      }
        +    },
        +    "required": [
        +      "_meta"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedcompute_headwall3 fields changed
      • addedInput schema / properties / deliverables
        Added value: +{
        +  "anyOf": [
        +    {
        +      "items": {
        +        "const": "xlsx",
        +        "type": "string"
        +      },
        +      "type": "array"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null
        +}
      • addedInput schema / properties / output_mode
        Added value: +{
        +  "default": "full_json",
        +  "enum": [
        +    "summary",
        +    "boq",
        +    "boq_with_backup",
        +    "full_json"
        +  ],
        +  "type": "string"
        +}
      • changedOutput schema / properties / result / anyOf
        Previous value: -[
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "_meta": {
        -        "additionalProperties": false,
        -        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        -        "properties": {
        -          "deliverables": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        -                "properties": {
        -                  "docx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "dxf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "expires_at": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  },
        -                  "pdf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "xlsx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "expires_at"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "document_id": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "issued_at": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "rate_limit_remaining": {
        -            "anyOf": [
        -              {
        -                "minimum": 0,
        -                "type": "integer"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "request_id": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "schema_version": {
        -            "const": "1.0.0",
        -            "default": "1.0.0",
        -            "type": "string"
        -          },
        -          "scope_boundary": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        -                "properties": {
        -                  "not_in_scope": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "produced": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "recommended_companions": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "type": "string"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "produced",
        -                  "not_in_scope"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tier": {
        -            "enum": [
        -              "free",
        -              "paid"
        -            ],
        -            "type": "string"
        -          },
        -          "tier_upgrade": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        -                "properties": {
        -                  "available_tiers": {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        -                      "properties": {
        -                        "billing": {
        -                          "enum": [
        -                            "one_off",
        -                            "monthly",
        -                            "annual"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "currency": {
        -                          "enum": [
        -                            "GBP",
        -                            "SGD",
        -                            "EUR",
        -                            "USD",
        -                            "CAD",
        -                            "AUD",
        -                            "NZD",
        -                            "MYR"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "display_name": {
        -                          "type": "string"
        -                        },
        -                        "price_local": {
        -                          "type": "number"
        -                        },
        -                        "tier_slug": {
        -                          "enum": [
        -                            "7_day_pass",
        -                            "solo",
        -                            "studio",
        -                            "practice"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "unlock_summary": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "tier_slug",
        -                        "display_name",
        -                        "price_local",
        -                        "currency",
        -                        "billing",
        -                        "unlock_summary"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "current_tier": {
        -                    "const": "free",
        -                    "default": "free",
        -                    "type": "string"
        -                  },
        -                  "pass_credit": {
        -                    "anyOf": [
        -                      {
        -                        "additionalProperties": false,
        -                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        -                        "properties": {
        -                          "amount_local": {
        -                            "type": "number"
        -                          },
        -                          "applies_to": {
        -                            "const": "solo_first_month",
        -                            "default": "solo_first_month",
        -                            "type": "string"
        -                          },
        -                          "currency": {
        -                            "type": "string"
        -                          },
        -                          "redeemable_until": {
        -                            "type": "string"
        -                          }
        -                        },
        -                        "required": [
        -                          "amount_local",
        -                          "currency",
        -                          "redeemable_until"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "pricing_url": {
        -                    "default": "https://civilquants.com/pricing",
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "available_tiers"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tos_url": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "upgrade_hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "warranty_disclaimer": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          }
        -        },
        -        "required": [
        -          "request_id",
        -          "issued_at",
        -          "tier"
        -        ],
        -        "type": "object"
        -      },
        -      "data": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Schema § 1.1 — the typed payload returned inside `MCPResponse[ComputeResult]`.\n\nFree-tier responses MUST omit `drawings` and `audit_trail` (the bridge\nenforces this); paid-tier responses populate both. `text_summary` is\nbounded to 2000 chars — keeps the LLM-facing summary token-cheap and\nforces longer narrative into BoQ row descriptions where it belongs.\n`warnings` is the non-fatal geometry advisory list (both tiers).",
        -            "properties": {
        -              "assembly_slug": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "audit_trail": {
        -                "anyOf": [
        -                  {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.7 — paid-tier audit-trail entry.\n\nOne entry per BoQ row; `boq_row_index` ties to the row position in\n`ComputeResult.boq_rows`. `derivation` is the human-readable formula\nwalk-through; `formula` is the optional formal expression.",
        -                      "properties": {
        -                        "boq_row_index": {
        -                          "minimum": 0,
        -                          "type": "integer"
        -                        },
        -                        "derivation": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "formula": {
        -                          "anyOf": [
        -                            {
        -                              "type": "string"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ],
        -                          "default": null
        -                        },
        -                        "id": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "parameters_referenced": {
        -                          "items": {
        -                            "type": "string"
        -                          },
        -                          "type": "array"
        -                        }
        -                      },
        -                      "required": [
        -                        "id",
        -                        "boq_row_index",
        -                        "derivation"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "boq_rows": {
        -                "items": {
        -                  "additionalProperties": false,
        -                  "description": "Schema § 1.3 — a single bill row in the requested standard's format.\n\n`description` is the non-verbatim functional description per spec § 13.9 /\n§ 15 invariant — NEVER reproduces a standard's verbatim clause text.\n`rate` / `amount` ship null because rates are commodity data the customer\nowns; the engine's job is the measurement, not the pricing.",
        -                  "properties": {
        -                    "amount": {
        -                      "anyOf": [
        -                        {
        -                          "type": "number"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "attribution": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "audit_id": {
        -                      "anyOf": [
        -                        {
        -                          "type": "string"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "description": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "quantity": {
        -                      "minimum": 0,
        -                      "type": "number"
        -                    },
        -                    "rate": {
        -                      "anyOf": [
        -                        {
        -                          "type": "number"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "unit": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "work_section": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    }
        -                  },
        -                  "required": [
        -                    "work_section",
        -                    "description",
        -                    "quantity",
        -                    "unit",
        -                    "attribution"
        -                  ],
        -                  "type": "object"
        -                },
        -                "type": "array"
        -              },
        -              "drawings": {
        -                "anyOf": [
        -                  {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.6 — paid-tier drawing artefact pointer.\n\n`url` is an R2-signed URL; expiry is carried in `_meta.deliverables.expires_at`\non the envelope (not duplicated here). `layers` is DXF-only; PDF/SVG\ncallers omit it.",
        -                      "properties": {
        -                        "drawing_type": {
        -                          "enum": [
        -                            "section",
        -                            "plan",
        -                            "elevation",
        -                            "isometric",
        -                            "detail"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "format": {
        -                          "enum": [
        -                            "DXF",
        -                            "PDF",
        -                            "SVG"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "layers": {
        -                          "anyOf": [
        -                            {
        -                              "items": {
        -                                "type": "string"
        -                              },
        -                              "type": "array"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ],
        -                          "default": null
        -                        },
        -                        "scale": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "sheet_size": {
        -                          "enum": [
        -                            "A1",
        -                            "A2",
        -                            "A3",
        -                            "A4"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "url": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "drawing_type",
        -                        "format",
        -                        "url",
        -                        "sheet_size",
        -                        "scale"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "parameters_used": {
        -                "additionalProperties": false,
        -                "description": "Schema § 1.2 — the parameter snapshot the engine actually used.\n\nSplits user-supplied values from engine defaults so customers can see\nwhich numbers came from them and which the engine filled in. Every\ndefaulted parameter SHOULD have a corresponding entry in `assumptions`\n— the bridge layer enforces this when wrapping engine output.",
        -                "properties": {
        -                  "assumptions": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "engine_defaults": {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  "resolved_from_description": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "additionalProperties": false,
        -                          "description": "Schema § 1.2 — a parameter resolved by the forgiving-input layer.\n\nPopulated by the Track B-Forgiving Haiku-4.5 resolution pass; until that\nlayer lands, instances are constructed only by tests. `source` distinguishes\nthe resolution path so customers can audit which fields were inferred.",
        -                          "properties": {
        -                            "confidence": {
        -                              "anyOf": [
        -                                {
        -                                  "enum": [
        -                                    "high",
        -                                    "medium",
        -                                    "low"
        -                                  ],
        -                                  "type": "string"
        -                                },
        -                                {
        -                                  "type": "null"
        -                                }
        -                              ],
        -                              "default": null
        -                            },
        -                            "field_name": {
        -                              "minLength": 1,
        -                              "type": "string"
        -                            },
        -                            "resolved_value": {},
        -                            "source": {
        -                              "enum": [
        -                                "description_field",
        -                                "haiku_resolution",
        -                                "engine_default"
        -                              ],
        -                              "type": "string"
        -                            }
        -                          },
        -                          "required": [
        -                            "field_name",
        -                            "resolved_value",
        -                            "source"
        -                          ],
        -                          "type": "object"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "user_supplied": {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  }
        -                },
        -                "type": "object"
        -              },
        -              "standard": {
        -                "enum": [
        -                  "CESMM4",
        -                  "NRM2",
        -                  "SMM7",
        -                  "MMHW"
        -                ],
        -                "type": "string"
        -              },
        -              "text_summary": {
        -                "maxLength": 2000,
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "totals_summary": {
        -                "additionalProperties": false,
        -                "description": "Schema § 1.4 — totals_summary as a typed wrapper around the free-form dict.\n\nWire shape is a flat object (`{\"concrete_m3\": {...}, \"rebar_t\": {...}}`).\nWe model it as `RootModel`-equivalent via `model_config(extra=\"allow\")`\n+ a single `__root__`-style `entries` dict. Pydantic v2 recommends\n`RootModel` for free-form roots; using a wrapper class keeps the import\nsurface uniform with the rest of this module.",
        -                "properties": {
        -                  "entries": {
        -                    "additionalProperties": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.4 — single material/work-class total entry.",
        -                      "properties": {
        -                        "quantity": {
        -                          "minimum": 0,
        -                          "type": "number"
        -                        },
        -                        "unit": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "quantity",
        -                        "unit"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "object"
        -                  }
        -                },
        -                "type": "object"
        -              },
        -              "warnings": {
        -                "items": {
        -                  "additionalProperties": false,
        -                  "description": "Schema § 1.8 — a non-fatal geometry advisory (56th-fire T2).\n\nThe wire projection of the engine's `core.GeometryWarning`. Advisory only:\na warning NEVER changes a measured quantity — it flags geometry that is\nvalid but likely a mistake (e.g. a stale dependent-height default). Present\non BOTH tiers — a correctness/safety signal, not a paid feature.",
        -                  "properties": {
        -                    "affected_params": {
        -                      "items": {
        -                        "type": "string"
        -                      },
        -                      "type": "array"
        -                    },
        -                    "code": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "detail": {
        -                      "additionalProperties": {
        -                        "type": "number"
        -                      },
        -                      "type": "object"
        -                    },
        -                    "message": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "severity": {
        -                      "enum": [
        -                        "info",
        -                        "advisory",
        -                        "caution"
        -                      ],
        -                      "type": "string"
        -                    }
        -                  },
        -                  "required": [
        -                    "code",
        -                    "severity",
        -                    "message"
        -                  ],
        -                  "type": "object"
        -                },
        -                "type": "array"
        -              }
        -            },
        -            "required": [
        -              "assembly_slug",
        -              "standard",
        -              "parameters_used",
        -              "boq_rows",
        -              "totals_summary",
        -              "text_summary"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      },
        -      "error": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        -            "properties": {
        -              "code": {
        -                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        -                "enum": [
        -                  "RATE_LIMIT_EXCEEDED",
        -                  "TIER_INSUFFICIENT",
        -                  "INVALID_INPUT",
        -                  "SCHEMA_VERSION_MISMATCH",
        -                  "SCHEMA_INVARIANT_VIOLATION",
        -                  "UPSTREAM_TIMEOUT",
        -                  "BACKEND_FAILURE",
        -                  "IP_BLOCKED",
        -                  "RESOURCE_NOT_FOUND",
        -                  "RENDER_FAILURE",
        -                  "OCR_LOW_CONFIDENCE",
        -                  "MANUAL_REVIEW_REQUIRED",
        -                  "ACCEPTANCE_REQUIRED",
        -                  "INVALID_TOKEN"
        -                ],
        -                "type": "string"
        -              },
        -              "details": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "message": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "recoverable": {
        -                "type": "boolean"
        -              },
        -              "retry_after_seconds": {
        -                "anyOf": [
        -                  {
        -                    "minimum": 0,
        -                    "type": "integer"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              }
        -            },
        -            "required": [
        -              "code",
        -              "message",
        -              "recoverable"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      }
        -    },
        -    "required": [
        -      "_meta"
        -    ],
        -    "type": "object"
        -  },
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "_meta": {
        -        "additionalProperties": false,
        -        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        -        "properties": {
        -          "deliverables": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        -                "properties": {
        -                  "docx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "dxf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "expires_at": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  },
        -                  "pdf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "xlsx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "expires_at"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "document_id": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "issued_at": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "rate_limit_remaining": {
        -            "anyOf": [
        -              {
        -                "minimum": 0,
        -                "type": "integer"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "request_id": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "schema_version": {
        -            "const": "1.0.0",
        -            "default": "1.0.0",
        -            "type": "string"
        -          },
        -          "scope_boundary": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        -                "properties": {
        -                  "not_in_scope": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "produced": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "recommended_companions": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "type": "string"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "produced",
        -                  "not_in_scope"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tier": {
        -            "enum": [
        -              "free",
        -              "paid"
        -            ],
        -            "type": "string"
        -          },
        -          "tier_upgrade": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        -                "properties": {
        -                  "available_tiers": {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        -                      "properties": {
        -                        "billing": {
        -                          "enum": [
        -                            "one_off",
        -                            "monthly",
        -                            "annual"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "currency": {
        -                          "enum": [
        -                            "GBP",
        -                            "SGD",
        -                            "EUR",
        -                            "USD",
        -                            "CAD",
        -                            "AUD",
        -                            "NZD",
        -                            "MYR"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "display_name": {
        -                          "type": "string"
        -                        },
        -                        "price_local": {
        -                          "type": "number"
        -                        },
        -                        "tier_slug": {
        -                          "enum": [
        -                            "7_day_pass",
        -                            "solo",
        -                            "studio",
        -                            "practice"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "unlock_summary": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "tier_slug",
        -                        "display_name",
        -                        "price_local",
        -                        "currency",
        -                        "billing",
        -                        "unlock_summary"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "current_tier": {
        -                    "const": "free",
        -                    "default": "free",
        -                    "type": "string"
        -                  },
        -                  "pass_credit": {
        -                    "anyOf": [
        -                      {
        -                        "additionalProperties": false,
        -                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        -                        "properties": {
        -                          "amount_local": {
        -                            "type": "number"
        -                          },
        -                          "applies_to": {
        -                            "const": "solo_first_month",
        -                            "default": "solo_first_month",
        -                            "type": "string"
        -                          },
        -                          "currency": {
        -                            "type": "string"
        -                          },
        -                          "redeemable_until": {
        -                            "type": "string"
        -                          }
        -                        },
        -                        "required": [
        -                          "amount_local",
        -                          "currency",
        -                          "redeemable_until"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "pricing_url": {
        -                    "default": "https://civilquants.com/pricing",
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "available_tiers"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tos_url": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "upgrade_hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "warranty_disclaimer": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          }
        -        },
        -        "required": [
        -          "request_id",
        -          "issued_at",
        -          "tier"
        -        ],
        -        "type": "object"
        -      },
        -      "data": {
        -        "default": null,
        -        "title": "Data"
        -      },
        -      "error": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        -            "properties": {
        -              "code": {
        -                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        -                "enum": [
        -                  "RATE_LIMIT_EXCEEDED",
        -                  "TIER_INSUFFICIENT",
        -                  "INVALID_INPUT",
        -                  "SCHEMA_VERSION_MISMATCH",
        -                  "SCHEMA_INVARIANT_VIOLATION",
        -                  "UPSTREAM_TIMEOUT",
        -                  "BACKEND_FAILURE",
        -                  "IP_BLOCKED",
        -                  "RESOURCE_NOT_FOUND",
        -                  "RENDER_FAILURE",
        -                  "OCR_LOW_CONFIDENCE",
        -                  "MANUAL_REVIEW_REQUIRED",
        -                  "ACCEPTANCE_REQUIRED",
        -                  "INVALID_TOKEN"
        -                ],
        -                "type": "string"
        -              },
        -              "details": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "message": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "recoverable": {
        -                "type": "boolean"
        -              },
        -              "retry_after_seconds": {
        -                "anyOf": [
        -                  {
        -                    "minimum": 0,
        -                    "type": "integer"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              }
        -            },
        -            "required": [
        -              "code",
        -              "message",
        -              "recoverable"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      }
        -    },
        -    "required": [
        -      "_meta"
        -    ],
        -    "type": "object"
        -  }
        -]New value: +[
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "_meta": {
        +        "additionalProperties": false,
        +        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        +        "properties": {
        +          "deliverables": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        +                "properties": {
        +                  "docx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "dxf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "expires_at": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  },
        +                  "pdf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "xlsx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "expires_at"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "document_id": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "issued_at": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "rate_limit_remaining": {
        +            "anyOf": [
        +              {
        +                "minimum": 0,
        +                "type": "integer"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "request_id": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "schema_version": {
        +            "const": "1.0.0",
        +            "default": "1.0.0",
        +            "type": "string"
        +          },
        +          "scope_boundary": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        +                "properties": {
        +                  "not_in_scope": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "produced": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "recommended_companions": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "type": "string"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "produced",
        +                  "not_in_scope"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tier": {
        +            "enum": [
        +              "free",
        +              "paid"
        +            ],
        +            "type": "string"
        +          },
        +          "tier_upgrade": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        +                "properties": {
        +                  "available_tiers": {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        +                      "properties": {
        +                        "billing": {
        +                          "enum": [
        +                            "one_off",
        +                            "monthly",
        +                            "annual"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "currency": {
        +                          "enum": [
        +                            "GBP",
        +                            "SGD",
        +                            "EUR",
        +                            "USD",
        +                            "CAD",
        +                            "AUD",
        +                            "NZD",
        +                            "MYR"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "display_name": {
        +                          "type": "string"
        +                        },
        +                        "price_local": {
        +                          "type": "number"
        +                        },
        +                        "tier_slug": {
        +                          "enum": [
        +                            "7_day_pass",
        +                            "solo",
        +                            "studio",
        +                            "practice"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "unlock_summary": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "tier_slug",
        +                        "display_name",
        +                        "price_local",
        +                        "currency",
        +                        "billing",
        +                        "unlock_summary"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "current_tier": {
        +                    "const": "free",
        +                    "default": "free",
        +                    "type": "string"
        +                  },
        +                  "pass_credit": {
        +                    "anyOf": [
        +                      {
        +                        "additionalProperties": false,
        +                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        +                        "properties": {
        +                          "amount_local": {
        +                            "type": "number"
        +                          },
        +                          "applies_to": {
        +                            "const": "solo_first_month",
        +                            "default": "solo_first_month",
        +                            "type": "string"
        +                          },
        +                          "currency": {
        +                            "type": "string"
        +                          },
        +                          "redeemable_until": {
        +                            "type": "string"
        +                          }
        +                        },
        +                        "required": [
        +                          "amount_local",
        +                          "currency",
        +                          "redeemable_until"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "pricing_url": {
        +                    "default": "https://civilquants.com/pricing",
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "available_tiers"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tos_url": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "upgrade_hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "warranty_disclaimer": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          }
        +        },
        +        "required": [
        +          "request_id",
        +          "issued_at",
        +          "tier"
        +        ],
        +        "type": "object"
        +      },
        +      "data": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Schema § 1.1 — the typed payload returned inside `MCPResponse[ComputeResult]`.\n\nFree-tier responses omit `drawings` (the downloadable CAD artefact\npointers — the paid differentiator); the bridge enforces this. The\n`audit_trail` and the inline `drawing` preview are present on BOTH tiers\n(V1 ALIGN / 60th-fire D + C). `text_summary` is bounded to 2000 chars —\nkeeps the LLM-facing summary token-cheap and forces longer narrative into\nBoQ row descriptions where it belongs. `warnings` is the non-fatal\ngeometry advisory list (both tiers).",
        +            "properties": {
        +              "assembly_slug": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "audit_trail": {
        +                "anyOf": [
        +                  {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.7 — paid-tier audit-trail entry.\n\nOne entry per BoQ row; `boq_row_index` ties to the row position in\n`ComputeResult.boq_rows`. `derivation` is the human-readable formula\nwalk-through; `formula` is the optional formal expression.",
        +                      "properties": {
        +                        "boq_row_index": {
        +                          "minimum": 0,
        +                          "type": "integer"
        +                        },
        +                        "derivation": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "formula": {
        +                          "anyOf": [
        +                            {
        +                              "type": "string"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ],
        +                          "default": null
        +                        },
        +                        "id": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "parameters_referenced": {
        +                          "items": {
        +                            "type": "string"
        +                          },
        +                          "type": "array"
        +                        }
        +                      },
        +                      "required": [
        +                        "id",
        +                        "boq_row_index",
        +                        "derivation"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "boq_rows": {
        +                "items": {
        +                  "additionalProperties": false,
        +                  "description": "Schema § 1.3 — a single bill row in the requested standard's format.\n\n`description` is the non-verbatim functional description per spec § 13.9 /\n§ 15 invariant — NEVER reproduces a standard's verbatim clause text.\n`rate` / `amount` ship null because rates are commodity data the customer\nowns; the engine's job is the measurement, not the pricing.",
        +                  "properties": {
        +                    "amount": {
        +                      "anyOf": [
        +                        {
        +                          "type": "number"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "attribution": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "audit_id": {
        +                      "anyOf": [
        +                        {
        +                          "type": "string"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "description": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "quantity": {
        +                      "minimum": 0,
        +                      "type": "number"
        +                    },
        +                    "rate": {
        +                      "anyOf": [
        +                        {
        +                          "type": "number"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "unit": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "work_section": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    }
        +                  },
        +                  "required": [
        +                    "work_section",
        +                    "description",
        +                    "quantity",
        +                    "unit",
        +                    "attribution"
        +                  ],
        +                  "type": "object"
        +                },
        +                "type": "array"
        +              },
        +              "drawing": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": false,
        +                    "description": "Schema § 1.6a — inline server-rendered SVG preview of the geometry.\n\nThe MCP mirror of the web ``/compute`` response's ``drawing`` field\n(``api.schemas.compute.DrawingRef``): the same on-screen dimensioned\ndrawing both tiers see in the workspace, surfaced on the MCP compute\nresponse so a chat client can render it inline (60th-fire item C). This\nis the on-screen preview — present on BOTH tiers per the free/paid\nboundary; the downloadable CAD artefacts (DXF / dimensioned PDF) remain\nthe paid differentiator via the export tools.\n\nDefined here rather than importing ``DrawingRef`` because the web\n``schemas`` package imports back into this module (``schemas.render``),\nso reusing it would create an import cycle — the MCP wire contract keeps\nits own copy, the same pattern as ``BoQRow`` / ``DrawingReference``.",
        +                    "properties": {
        +                      "entity_count": {
        +                        "minimum": 0,
        +                        "type": "integer"
        +                      },
        +                      "svg_b64": {
        +                        "minLength": 1,
        +                        "type": "string"
        +                      },
        +                      "unit_of_drawing": {
        +                        "const": "m",
        +                        "default": "m",
        +                        "type": "string"
        +                      },
        +                      "viewbox_height": {
        +                        "exclusiveMinimum": 0,
        +                        "type": "number"
        +                      },
        +                      "viewbox_width": {
        +                        "exclusiveMinimum": 0,
        +                        "type": "number"
        +                      },
        +                      "viewbox_x": {
        +                        "type": "number"
        +                      },
        +                      "viewbox_y": {
        +                        "type": "number"
        +                      }
        +                    },
        +                    "required": [
        +                      "svg_b64",
        +                      "viewbox_x",
        +                      "viewbox_y",
        +                      "viewbox_width",
        +                      "viewbox_height",
        +                      "entity_count"
        +                    ],
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "drawings": {
        +                "anyOf": [
        +                  {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.6 — paid-tier drawing artefact pointer.\n\n`url` is an R2-signed URL; expiry is carried in `_meta.deliverables.expires_at`\non the envelope (not duplicated here). `layers` is DXF-only; PDF/SVG\ncallers omit it.",
        +                      "properties": {
        +                        "drawing_type": {
        +                          "enum": [
        +                            "section",
        +                            "plan",
        +                            "elevation",
        +                            "isometric",
        +                            "detail"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "format": {
        +                          "enum": [
        +                            "DXF",
        +                            "PDF",
        +                            "SVG"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "layers": {
        +                          "anyOf": [
        +                            {
        +                              "items": {
        +                                "type": "string"
        +                              },
        +                              "type": "array"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ],
        +                          "default": null
        +                        },
        +                        "scale": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "sheet_size": {
        +                          "enum": [
        +                            "A1",
        +                            "A2",
        +                            "A3",
        +                            "A4"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "url": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "drawing_type",
        +                        "format",
        +                        "url",
        +                        "sheet_size",
        +                        "scale"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "parameters_used": {
        +                "additionalProperties": false,
        +                "description": "Schema § 1.2 — the parameter snapshot the engine actually used.\n\nSplits user-supplied values from engine defaults so customers can see\nwhich numbers came from them and which the engine filled in. Every\ndefaulted parameter SHOULD have a corresponding entry in `assumptions`\n— the bridge layer enforces this when wrapping engine output.",
        +                "properties": {
        +                  "assumptions": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "engine_defaults": {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  "resolved_from_description": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "additionalProperties": false,
        +                          "description": "Schema § 1.2 — a parameter resolved by the forgiving-input layer.\n\nPopulated by the Track B-Forgiving Haiku-4.5 resolution pass; until that\nlayer lands, instances are constructed only by tests. `source` distinguishes\nthe resolution path so customers can audit which fields were inferred.",
        +                          "properties": {
        +                            "confidence": {
        +                              "anyOf": [
        +                                {
        +                                  "enum": [
        +                                    "high",
        +                                    "medium",
        +                                    "low"
        +                                  ],
        +                                  "type": "string"
        +                                },
        +                                {
        +                                  "type": "null"
        +                                }
        +                              ],
        +                              "default": null
        +                            },
        +                            "field_name": {
        +                              "minLength": 1,
        +                              "type": "string"
        +                            },
        +                            "resolved_value": {},
        +                            "source": {
        +                              "enum": [
        +                                "description_field",
        +                                "haiku_resolution",
        +                                "engine_default"
        +                              ],
        +                              "type": "string"
        +                            }
        +                          },
        +                          "required": [
        +                            "field_name",
        +                            "resolved_value",
        +                            "source"
        +                          ],
        +                          "type": "object"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "user_supplied": {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  }
        +                },
        +                "type": "object"
        +              },
        +              "standard": {
        +                "enum": [
        +                  "CESMM4",
        +                  "NRM2",
        +                  "SMM7",
        +                  "MMHW"
        +                ],
        +                "type": "string"
        +              },
        +              "text_summary": {
        +                "maxLength": 2000,
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "totals_summary": {
        +                "additionalProperties": false,
        +                "description": "Schema § 1.4 — totals_summary as a typed wrapper around the free-form dict.\n\nWire shape is a flat object (`{\"concrete_m3\": {...}, \"rebar_t\": {...}}`).\nWe model it as `RootModel`-equivalent via `model_config(extra=\"allow\")`\n+ a single `__root__`-style `entries` dict. Pydantic v2 recommends\n`RootModel` for free-form roots; using a wrapper class keeps the import\nsurface uniform with the rest of this module.",
        +                "properties": {
        +                  "entries": {
        +                    "additionalProperties": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.4 — single material/work-class total entry.",
        +                      "properties": {
        +                        "quantity": {
        +                          "minimum": 0,
        +                          "type": "number"
        +                        },
        +                        "unit": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "quantity",
        +                        "unit"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "object"
        +                  }
        +                },
        +                "type": "object"
        +              },
        +              "warnings": {
        +                "items": {
        +                  "additionalProperties": false,
        +                  "description": "Schema § 1.8 — a non-fatal geometry advisory (56th-fire T2).\n\nThe wire projection of the engine's `core.GeometryWarning`. Advisory only:\na warning NEVER changes a measured quantity — it flags geometry that is\nvalid but likely a mistake (e.g. a stale dependent-height default). Present\non BOTH tiers — a correctness/safety signal, not a paid feature.",
        +                  "properties": {
        +                    "affected_params": {
        +                      "items": {
        +                        "type": "string"
        +                      },
        +                      "type": "array"
        +                    },
        +                    "code": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "detail": {
        +                      "additionalProperties": {
        +                        "type": "number"
        +                      },
        +                      "type": "object"
        +                    },
        +                    "message": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "severity": {
        +                      "enum": [
        +                        "info",
        +                        "advisory",
        +                        "caution"
        +                      ],
        +                      "type": "string"
        +                    }
        +                  },
        +                  "required": [
        +                    "code",
        +                    "severity",
        +                    "message"
        +                  ],
        +                  "type": "object"
        +                },
        +                "type": "array"
        +              }
        +            },
        +            "required": [
        +              "assembly_slug",
        +              "standard",
        +              "parameters_used",
        +              "boq_rows",
        +              "totals_summary",
        +              "text_summary"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      },
        +      "error": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        +            "properties": {
        +              "code": {
        +                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        +                "enum": [
        +                  "RATE_LIMIT_EXCEEDED",
        +                  "TIER_INSUFFICIENT",
        +                  "INVALID_INPUT",
        +                  "SCHEMA_VERSION_MISMATCH",
        +                  "SCHEMA_INVARIANT_VIOLATION",
        +                  "UPSTREAM_TIMEOUT",
        +                  "BACKEND_FAILURE",
        +                  "IP_BLOCKED",
        +                  "RESOURCE_NOT_FOUND",
        +                  "RENDER_FAILURE",
        +                  "OCR_LOW_CONFIDENCE",
        +                  "MANUAL_REVIEW_REQUIRED",
        +                  "ACCEPTANCE_REQUIRED",
        +                  "INVALID_TOKEN"
        +                ],
        +                "type": "string"
        +              },
        +              "details": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "message": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "recoverable": {
        +                "type": "boolean"
        +              },
        +              "retry_after_seconds": {
        +                "anyOf": [
        +                  {
        +                    "minimum": 0,
        +                    "type": "integer"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              }
        +            },
        +            "required": [
        +              "code",
        +              "message",
        +              "recoverable"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      }
        +    },
        +    "required": [
        +      "_meta"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "_meta": {
        +        "additionalProperties": false,
        +        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        +        "properties": {
        +          "deliverables": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        +                "properties": {
        +                  "docx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "dxf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "expires_at": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  },
        +                  "pdf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "xlsx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "expires_at"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "document_id": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "issued_at": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "rate_limit_remaining": {
        +            "anyOf": [
        +              {
        +                "minimum": 0,
        +                "type": "integer"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "request_id": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "schema_version": {
        +            "const": "1.0.0",
        +            "default": "1.0.0",
        +            "type": "string"
        +          },
        +          "scope_boundary": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        +                "properties": {
        +                  "not_in_scope": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "produced": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "recommended_companions": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "type": "string"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "produced",
        +                  "not_in_scope"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tier": {
        +            "enum": [
        +              "free",
        +              "paid"
        +            ],
        +            "type": "string"
        +          },
        +          "tier_upgrade": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        +                "properties": {
        +                  "available_tiers": {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        +                      "properties": {
        +                        "billing": {
        +                          "enum": [
        +                            "one_off",
        +                            "monthly",
        +                            "annual"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "currency": {
        +                          "enum": [
        +                            "GBP",
        +                            "SGD",
        +                            "EUR",
        +                            "USD",
        +                            "CAD",
        +                            "AUD",
        +                            "NZD",
        +                            "MYR"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "display_name": {
        +                          "type": "string"
        +                        },
        +                        "price_local": {
        +                          "type": "number"
        +                        },
        +                        "tier_slug": {
        +                          "enum": [
        +                            "7_day_pass",
        +                            "solo",
        +                            "studio",
        +                            "practice"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "unlock_summary": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "tier_slug",
        +                        "display_name",
        +                        "price_local",
        +                        "currency",
        +                        "billing",
        +                        "unlock_summary"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "current_tier": {
        +                    "const": "free",
        +                    "default": "free",
        +                    "type": "string"
        +                  },
        +                  "pass_credit": {
        +                    "anyOf": [
        +                      {
        +                        "additionalProperties": false,
        +                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        +                        "properties": {
        +                          "amount_local": {
        +                            "type": "number"
        +                          },
        +                          "applies_to": {
        +                            "const": "solo_first_month",
        +                            "default": "solo_first_month",
        +                            "type": "string"
        +                          },
        +                          "currency": {
        +                            "type": "string"
        +                          },
        +                          "redeemable_until": {
        +                            "type": "string"
        +                          }
        +                        },
        +                        "required": [
        +                          "amount_local",
        +                          "currency",
        +                          "redeemable_until"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "pricing_url": {
        +                    "default": "https://civilquants.com/pricing",
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "available_tiers"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tos_url": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "upgrade_hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "warranty_disclaimer": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          }
        +        },
        +        "required": [
        +          "request_id",
        +          "issued_at",
        +          "tier"
        +        ],
        +        "type": "object"
        +      },
        +      "data": {
        +        "default": null,
        +        "title": "Data"
        +      },
        +      "error": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        +            "properties": {
        +              "code": {
        +                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        +                "enum": [
        +                  "RATE_LIMIT_EXCEEDED",
        +                  "TIER_INSUFFICIENT",
        +                  "INVALID_INPUT",
        +                  "SCHEMA_VERSION_MISMATCH",
        +                  "SCHEMA_INVARIANT_VIOLATION",
        +                  "UPSTREAM_TIMEOUT",
        +                  "BACKEND_FAILURE",
        +                  "IP_BLOCKED",
        +                  "RESOURCE_NOT_FOUND",
        +                  "RENDER_FAILURE",
        +                  "OCR_LOW_CONFIDENCE",
        +                  "MANUAL_REVIEW_REQUIRED",
        +                  "ACCEPTANCE_REQUIRED",
        +                  "INVALID_TOKEN"
        +                ],
        +                "type": "string"
        +              },
        +              "details": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "message": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "recoverable": {
        +                "type": "boolean"
        +              },
        +              "retry_after_seconds": {
        +                "anyOf": [
        +                  {
        +                    "minimum": 0,
        +                    "type": "integer"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              }
        +            },
        +            "required": [
        +              "code",
        +              "message",
        +              "recoverable"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      }
        +    },
        +    "required": [
        +      "_meta"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedcompute_headwall_attenuation_outlet3 fields changed
      • addedInput schema / properties / deliverables
        Added value: +{
        +  "anyOf": [
        +    {
        +      "items": {
        +        "const": "xlsx",
        +        "type": "string"
        +      },
        +      "type": "array"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null
        +}
      • addedInput schema / properties / output_mode
        Added value: +{
        +  "default": "full_json",
        +  "enum": [
        +    "summary",
        +    "boq",
        +    "boq_with_backup",
        +    "full_json"
        +  ],
        +  "type": "string"
        +}
      • changedOutput schema / properties / result / anyOf
        Previous value: -[
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "_meta": {
        -        "additionalProperties": false,
        -        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        -        "properties": {
        -          "deliverables": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        -                "properties": {
        -                  "docx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "dxf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "expires_at": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  },
        -                  "pdf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "xlsx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "expires_at"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "document_id": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "issued_at": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "rate_limit_remaining": {
        -            "anyOf": [
        -              {
        -                "minimum": 0,
        -                "type": "integer"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "request_id": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "schema_version": {
        -            "const": "1.0.0",
        -            "default": "1.0.0",
        -            "type": "string"
        -          },
        -          "scope_boundary": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        -                "properties": {
        -                  "not_in_scope": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "produced": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "recommended_companions": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "type": "string"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "produced",
        -                  "not_in_scope"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tier": {
        -            "enum": [
        -              "free",
        -              "paid"
        -            ],
        -            "type": "string"
        -          },
        -          "tier_upgrade": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        -                "properties": {
        -                  "available_tiers": {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        -                      "properties": {
        -                        "billing": {
        -                          "enum": [
        -                            "one_off",
        -                            "monthly",
        -                            "annual"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "currency": {
        -                          "enum": [
        -                            "GBP",
        -                            "SGD",
        -                            "EUR",
        -                            "USD",
        -                            "CAD",
        -                            "AUD",
        -                            "NZD",
        -                            "MYR"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "display_name": {
        -                          "type": "string"
        -                        },
        -                        "price_local": {
        -                          "type": "number"
        -                        },
        -                        "tier_slug": {
        -                          "enum": [
        -                            "7_day_pass",
        -                            "solo",
        -                            "studio",
        -                            "practice"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "unlock_summary": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "tier_slug",
        -                        "display_name",
        -                        "price_local",
        -                        "currency",
        -                        "billing",
        -                        "unlock_summary"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "current_tier": {
        -                    "const": "free",
        -                    "default": "free",
        -                    "type": "string"
        -                  },
        -                  "pass_credit": {
        -                    "anyOf": [
        -                      {
        -                        "additionalProperties": false,
        -                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        -                        "properties": {
        -                          "amount_local": {
        -                            "type": "number"
        -                          },
        -                          "applies_to": {
        -                            "const": "solo_first_month",
        -                            "default": "solo_first_month",
        -                            "type": "string"
        -                          },
        -                          "currency": {
        -                            "type": "string"
        -                          },
        -                          "redeemable_until": {
        -                            "type": "string"
        -                          }
        -                        },
        -                        "required": [
        -                          "amount_local",
        -                          "currency",
        -                          "redeemable_until"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "pricing_url": {
        -                    "default": "https://civilquants.com/pricing",
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "available_tiers"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tos_url": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "upgrade_hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "warranty_disclaimer": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          }
        -        },
        -        "required": [
        -          "request_id",
        -          "issued_at",
        -          "tier"
        -        ],
        -        "type": "object"
        -      },
        -      "data": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Schema § 1.1 — the typed payload returned inside `MCPResponse[ComputeResult]`.\n\nFree-tier responses MUST omit `drawings` and `audit_trail` (the bridge\nenforces this); paid-tier responses populate both. `text_summary` is\nbounded to 2000 chars — keeps the LLM-facing summary token-cheap and\nforces longer narrative into BoQ row descriptions where it belongs.\n`warnings` is the non-fatal geometry advisory list (both tiers).",
        -            "properties": {
        -              "assembly_slug": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "audit_trail": {
        -                "anyOf": [
        -                  {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.7 — paid-tier audit-trail entry.\n\nOne entry per BoQ row; `boq_row_index` ties to the row position in\n`ComputeResult.boq_rows`. `derivation` is the human-readable formula\nwalk-through; `formula` is the optional formal expression.",
        -                      "properties": {
        -                        "boq_row_index": {
        -                          "minimum": 0,
        -                          "type": "integer"
        -                        },
        -                        "derivation": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "formula": {
        -                          "anyOf": [
        -                            {
        -                              "type": "string"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ],
        -                          "default": null
        -                        },
        -                        "id": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "parameters_referenced": {
        -                          "items": {
        -                            "type": "string"
        -                          },
        -                          "type": "array"
        -                        }
        -                      },
        -                      "required": [
        -                        "id",
        -                        "boq_row_index",
        -                        "derivation"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "boq_rows": {
        -                "items": {
        -                  "additionalProperties": false,
        -                  "description": "Schema § 1.3 — a single bill row in the requested standard's format.\n\n`description` is the non-verbatim functional description per spec § 13.9 /\n§ 15 invariant — NEVER reproduces a standard's verbatim clause text.\n`rate` / `amount` ship null because rates are commodity data the customer\nowns; the engine's job is the measurement, not the pricing.",
        -                  "properties": {
        -                    "amount": {
        -                      "anyOf": [
        -                        {
        -                          "type": "number"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "attribution": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "audit_id": {
        -                      "anyOf": [
        -                        {
        -                          "type": "string"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "description": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "quantity": {
        -                      "minimum": 0,
        -                      "type": "number"
        -                    },
        -                    "rate": {
        -                      "anyOf": [
        -                        {
        -                          "type": "number"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "unit": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "work_section": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    }
        -                  },
        -                  "required": [
        -                    "work_section",
        -                    "description",
        -                    "quantity",
        -                    "unit",
        -                    "attribution"
        -                  ],
        -                  "type": "object"
        -                },
        -                "type": "array"
        -              },
        -              "drawings": {
        -                "anyOf": [
        -                  {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.6 — paid-tier drawing artefact pointer.\n\n`url` is an R2-signed URL; expiry is carried in `_meta.deliverables.expires_at`\non the envelope (not duplicated here). `layers` is DXF-only; PDF/SVG\ncallers omit it.",
        -                      "properties": {
        -                        "drawing_type": {
        -                          "enum": [
        -                            "section",
        -                            "plan",
        -                            "elevation",
        -                            "isometric",
        -                            "detail"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "format": {
        -                          "enum": [
        -                            "DXF",
        -                            "PDF",
        -                            "SVG"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "layers": {
        -                          "anyOf": [
        -                            {
        -                              "items": {
        -                                "type": "string"
        -                              },
        -                              "type": "array"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ],
        -                          "default": null
        -                        },
        -                        "scale": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "sheet_size": {
        -                          "enum": [
        -                            "A1",
        -                            "A2",
        -                            "A3",
        -                            "A4"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "url": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "drawing_type",
        -                        "format",
        -                        "url",
        -                        "sheet_size",
        -                        "scale"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "parameters_used": {
        -                "additionalProperties": false,
        -                "description": "Schema § 1.2 — the parameter snapshot the engine actually used.\n\nSplits user-supplied values from engine defaults so customers can see\nwhich numbers came from them and which the engine filled in. Every\ndefaulted parameter SHOULD have a corresponding entry in `assumptions`\n— the bridge layer enforces this when wrapping engine output.",
        -                "properties": {
        -                  "assumptions": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "engine_defaults": {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  "resolved_from_description": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "additionalProperties": false,
        -                          "description": "Schema § 1.2 — a parameter resolved by the forgiving-input layer.\n\nPopulated by the Track B-Forgiving Haiku-4.5 resolution pass; until that\nlayer lands, instances are constructed only by tests. `source` distinguishes\nthe resolution path so customers can audit which fields were inferred.",
        -                          "properties": {
        -                            "confidence": {
        -                              "anyOf": [
        -                                {
        -                                  "enum": [
        -                                    "high",
        -                                    "medium",
        -                                    "low"
        -                                  ],
        -                                  "type": "string"
        -                                },
        -                                {
        -                                  "type": "null"
        -                                }
        -                              ],
        -                              "default": null
        -                            },
        -                            "field_name": {
        -                              "minLength": 1,
        -                              "type": "string"
        -                            },
        -                            "resolved_value": {},
        -                            "source": {
        -                              "enum": [
        -                                "description_field",
        -                                "haiku_resolution",
        -                                "engine_default"
        -                              ],
        -                              "type": "string"
        -                            }
        -                          },
        -                          "required": [
        -                            "field_name",
        -                            "resolved_value",
        -                            "source"
        -                          ],
        -                          "type": "object"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "user_supplied": {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  }
        -                },
        -                "type": "object"
        -              },
        -              "standard": {
        -                "enum": [
        -                  "CESMM4",
        -                  "NRM2",
        -                  "SMM7",
        -                  "MMHW"
        -                ],
        -                "type": "string"
        -              },
        -              "text_summary": {
        -                "maxLength": 2000,
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "totals_summary": {
        -                "additionalProperties": false,
        -                "description": "Schema § 1.4 — totals_summary as a typed wrapper around the free-form dict.\n\nWire shape is a flat object (`{\"concrete_m3\": {...}, \"rebar_t\": {...}}`).\nWe model it as `RootModel`-equivalent via `model_config(extra=\"allow\")`\n+ a single `__root__`-style `entries` dict. Pydantic v2 recommends\n`RootModel` for free-form roots; using a wrapper class keeps the import\nsurface uniform with the rest of this module.",
        -                "properties": {
        -                  "entries": {
        -                    "additionalProperties": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.4 — single material/work-class total entry.",
        -                      "properties": {
        -                        "quantity": {
        -                          "minimum": 0,
        -                          "type": "number"
        -                        },
        -                        "unit": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "quantity",
        -                        "unit"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "object"
        -                  }
        -                },
        -                "type": "object"
        -              },
        -              "warnings": {
        -                "items": {
        -                  "additionalProperties": false,
        -                  "description": "Schema § 1.8 — a non-fatal geometry advisory (56th-fire T2).\n\nThe wire projection of the engine's `core.GeometryWarning`. Advisory only:\na warning NEVER changes a measured quantity — it flags geometry that is\nvalid but likely a mistake (e.g. a stale dependent-height default). Present\non BOTH tiers — a correctness/safety signal, not a paid feature.",
        -                  "properties": {
        -                    "affected_params": {
        -                      "items": {
        -                        "type": "string"
        -                      },
        -                      "type": "array"
        -                    },
        -                    "code": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "detail": {
        -                      "additionalProperties": {
        -                        "type": "number"
        -                      },
        -                      "type": "object"
        -                    },
        -                    "message": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "severity": {
        -                      "enum": [
        -                        "info",
        -                        "advisory",
        -                        "caution"
        -                      ],
        -                      "type": "string"
        -                    }
        -                  },
        -                  "required": [
        -                    "code",
        -                    "severity",
        -                    "message"
        -                  ],
        -                  "type": "object"
        -                },
        -                "type": "array"
        -              }
        -            },
        -            "required": [
        -              "assembly_slug",
        -              "standard",
        -              "parameters_used",
        -              "boq_rows",
        -              "totals_summary",
        -              "text_summary"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      },
        -      "error": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        -            "properties": {
        -              "code": {
        -                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        -                "enum": [
        -                  "RATE_LIMIT_EXCEEDED",
        -                  "TIER_INSUFFICIENT",
        -                  "INVALID_INPUT",
        -                  "SCHEMA_VERSION_MISMATCH",
        -                  "SCHEMA_INVARIANT_VIOLATION",
        -                  "UPSTREAM_TIMEOUT",
        -                  "BACKEND_FAILURE",
        -                  "IP_BLOCKED",
        -                  "RESOURCE_NOT_FOUND",
        -                  "RENDER_FAILURE",
        -                  "OCR_LOW_CONFIDENCE",
        -                  "MANUAL_REVIEW_REQUIRED",
        -                  "ACCEPTANCE_REQUIRED",
        -                  "INVALID_TOKEN"
        -                ],
        -                "type": "string"
        -              },
        -              "details": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "message": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "recoverable": {
        -                "type": "boolean"
        -              },
        -              "retry_after_seconds": {
        -                "anyOf": [
        -                  {
        -                    "minimum": 0,
        -                    "type": "integer"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              }
        -            },
        -            "required": [
        -              "code",
        -              "message",
        -              "recoverable"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      }
        -    },
        -    "required": [
        -      "_meta"
        -    ],
        -    "type": "object"
        -  },
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "_meta": {
        -        "additionalProperties": false,
        -        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        -        "properties": {
        -          "deliverables": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        -                "properties": {
        -                  "docx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "dxf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "expires_at": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  },
        -                  "pdf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "xlsx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "expires_at"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "document_id": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "issued_at": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "rate_limit_remaining": {
        -            "anyOf": [
        -              {
        -                "minimum": 0,
        -                "type": "integer"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "request_id": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "schema_version": {
        -            "const": "1.0.0",
        -            "default": "1.0.0",
        -            "type": "string"
        -          },
        -          "scope_boundary": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        -                "properties": {
        -                  "not_in_scope": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "produced": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "recommended_companions": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "type": "string"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "produced",
        -                  "not_in_scope"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tier": {
        -            "enum": [
        -              "free",
        -              "paid"
        -            ],
        -            "type": "string"
        -          },
        -          "tier_upgrade": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        -                "properties": {
        -                  "available_tiers": {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        -                      "properties": {
        -                        "billing": {
        -                          "enum": [
        -                            "one_off",
        -                            "monthly",
        -                            "annual"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "currency": {
        -                          "enum": [
        -                            "GBP",
        -                            "SGD",
        -                            "EUR",
        -                            "USD",
        -                            "CAD",
        -                            "AUD",
        -                            "NZD",
        -                            "MYR"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "display_name": {
        -                          "type": "string"
        -                        },
        -                        "price_local": {
        -                          "type": "number"
        -                        },
        -                        "tier_slug": {
        -                          "enum": [
        -                            "7_day_pass",
        -                            "solo",
        -                            "studio",
        -                            "practice"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "unlock_summary": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "tier_slug",
        -                        "display_name",
        -                        "price_local",
        -                        "currency",
        -                        "billing",
        -                        "unlock_summary"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "current_tier": {
        -                    "const": "free",
        -                    "default": "free",
        -                    "type": "string"
        -                  },
        -                  "pass_credit": {
        -                    "anyOf": [
        -                      {
        -                        "additionalProperties": false,
        -                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        -                        "properties": {
        -                          "amount_local": {
        -                            "type": "number"
        -                          },
        -                          "applies_to": {
        -                            "const": "solo_first_month",
        -                            "default": "solo_first_month",
        -                            "type": "string"
        -                          },
        -                          "currency": {
        -                            "type": "string"
        -                          },
        -                          "redeemable_until": {
        -                            "type": "string"
        -                          }
        -                        },
        -                        "required": [
        -                          "amount_local",
        -                          "currency",
        -                          "redeemable_until"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "pricing_url": {
        -                    "default": "https://civilquants.com/pricing",
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "available_tiers"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tos_url": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "upgrade_hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "warranty_disclaimer": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          }
        -        },
        -        "required": [
        -          "request_id",
        -          "issued_at",
        -          "tier"
        -        ],
        -        "type": "object"
        -      },
        -      "data": {
        -        "default": null,
        -        "title": "Data"
        -      },
        -      "error": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        -            "properties": {
        -              "code": {
        -                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        -                "enum": [
        -                  "RATE_LIMIT_EXCEEDED",
        -                  "TIER_INSUFFICIENT",
        -                  "INVALID_INPUT",
        -                  "SCHEMA_VERSION_MISMATCH",
        -                  "SCHEMA_INVARIANT_VIOLATION",
        -                  "UPSTREAM_TIMEOUT",
        -                  "BACKEND_FAILURE",
        -                  "IP_BLOCKED",
        -                  "RESOURCE_NOT_FOUND",
        -                  "RENDER_FAILURE",
        -                  "OCR_LOW_CONFIDENCE",
        -                  "MANUAL_REVIEW_REQUIRED",
        -                  "ACCEPTANCE_REQUIRED",
        -                  "INVALID_TOKEN"
        -                ],
        -                "type": "string"
        -              },
        -              "details": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "message": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "recoverable": {
        -                "type": "boolean"
        -              },
        -              "retry_after_seconds": {
        -                "anyOf": [
        -                  {
        -                    "minimum": 0,
        -                    "type": "integer"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              }
        -            },
        -            "required": [
        -              "code",
        -              "message",
        -              "recoverable"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      }
        -    },
        -    "required": [
        -      "_meta"
        -    ],
        -    "type": "object"
        -  }
        -]New value: +[
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "_meta": {
        +        "additionalProperties": false,
        +        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        +        "properties": {
        +          "deliverables": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        +                "properties": {
        +                  "docx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "dxf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "expires_at": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  },
        +                  "pdf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "xlsx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "expires_at"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "document_id": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "issued_at": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "rate_limit_remaining": {
        +            "anyOf": [
        +              {
        +                "minimum": 0,
        +                "type": "integer"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "request_id": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "schema_version": {
        +            "const": "1.0.0",
        +            "default": "1.0.0",
        +            "type": "string"
        +          },
        +          "scope_boundary": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        +                "properties": {
        +                  "not_in_scope": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "produced": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "recommended_companions": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "type": "string"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "produced",
        +                  "not_in_scope"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tier": {
        +            "enum": [
        +              "free",
        +              "paid"
        +            ],
        +            "type": "string"
        +          },
        +          "tier_upgrade": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        +                "properties": {
        +                  "available_tiers": {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        +                      "properties": {
        +                        "billing": {
        +                          "enum": [
        +                            "one_off",
        +                            "monthly",
        +                            "annual"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "currency": {
        +                          "enum": [
        +                            "GBP",
        +                            "SGD",
        +                            "EUR",
        +                            "USD",
        +                            "CAD",
        +                            "AUD",
        +                            "NZD",
        +                            "MYR"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "display_name": {
        +                          "type": "string"
        +                        },
        +                        "price_local": {
        +                          "type": "number"
        +                        },
        +                        "tier_slug": {
        +                          "enum": [
        +                            "7_day_pass",
        +                            "solo",
        +                            "studio",
        +                            "practice"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "unlock_summary": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "tier_slug",
        +                        "display_name",
        +                        "price_local",
        +                        "currency",
        +                        "billing",
        +                        "unlock_summary"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "current_tier": {
        +                    "const": "free",
        +                    "default": "free",
        +                    "type": "string"
        +                  },
        +                  "pass_credit": {
        +                    "anyOf": [
        +                      {
        +                        "additionalProperties": false,
        +                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        +                        "properties": {
        +                          "amount_local": {
        +                            "type": "number"
        +                          },
        +                          "applies_to": {
        +                            "const": "solo_first_month",
        +                            "default": "solo_first_month",
        +                            "type": "string"
        +                          },
        +                          "currency": {
        +                            "type": "string"
        +                          },
        +                          "redeemable_until": {
        +                            "type": "string"
        +                          }
        +                        },
        +                        "required": [
        +                          "amount_local",
        +                          "currency",
        +                          "redeemable_until"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "pricing_url": {
        +                    "default": "https://civilquants.com/pricing",
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "available_tiers"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tos_url": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "upgrade_hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "warranty_disclaimer": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          }
        +        },
        +        "required": [
        +          "request_id",
        +          "issued_at",
        +          "tier"
        +        ],
        +        "type": "object"
        +      },
        +      "data": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Schema § 1.1 — the typed payload returned inside `MCPResponse[ComputeResult]`.\n\nFree-tier responses omit `drawings` (the downloadable CAD artefact\npointers — the paid differentiator); the bridge enforces this. The\n`audit_trail` and the inline `drawing` preview are present on BOTH tiers\n(V1 ALIGN / 60th-fire D + C). `text_summary` is bounded to 2000 chars —\nkeeps the LLM-facing summary token-cheap and forces longer narrative into\nBoQ row descriptions where it belongs. `warnings` is the non-fatal\ngeometry advisory list (both tiers).",
        +            "properties": {
        +              "assembly_slug": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "audit_trail": {
        +                "anyOf": [
        +                  {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.7 — paid-tier audit-trail entry.\n\nOne entry per BoQ row; `boq_row_index` ties to the row position in\n`ComputeResult.boq_rows`. `derivation` is the human-readable formula\nwalk-through; `formula` is the optional formal expression.",
        +                      "properties": {
        +                        "boq_row_index": {
        +                          "minimum": 0,
        +                          "type": "integer"
        +                        },
        +                        "derivation": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "formula": {
        +                          "anyOf": [
        +                            {
        +                              "type": "string"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ],
        +                          "default": null
        +                        },
        +                        "id": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "parameters_referenced": {
        +                          "items": {
        +                            "type": "string"
        +                          },
        +                          "type": "array"
        +                        }
        +                      },
        +                      "required": [
        +                        "id",
        +                        "boq_row_index",
        +                        "derivation"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "boq_rows": {
        +                "items": {
        +                  "additionalProperties": false,
        +                  "description": "Schema § 1.3 — a single bill row in the requested standard's format.\n\n`description` is the non-verbatim functional description per spec § 13.9 /\n§ 15 invariant — NEVER reproduces a standard's verbatim clause text.\n`rate` / `amount` ship null because rates are commodity data the customer\nowns; the engine's job is the measurement, not the pricing.",
        +                  "properties": {
        +                    "amount": {
        +                      "anyOf": [
        +                        {
        +                          "type": "number"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "attribution": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "audit_id": {
        +                      "anyOf": [
        +                        {
        +                          "type": "string"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "description": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "quantity": {
        +                      "minimum": 0,
        +                      "type": "number"
        +                    },
        +                    "rate": {
        +                      "anyOf": [
        +                        {
        +                          "type": "number"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "unit": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "work_section": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    }
        +                  },
        +                  "required": [
        +                    "work_section",
        +                    "description",
        +                    "quantity",
        +                    "unit",
        +                    "attribution"
        +                  ],
        +                  "type": "object"
        +                },
        +                "type": "array"
        +              },
        +              "drawing": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": false,
        +                    "description": "Schema § 1.6a — inline server-rendered SVG preview of the geometry.\n\nThe MCP mirror of the web ``/compute`` response's ``drawing`` field\n(``api.schemas.compute.DrawingRef``): the same on-screen dimensioned\ndrawing both tiers see in the workspace, surfaced on the MCP compute\nresponse so a chat client can render it inline (60th-fire item C). This\nis the on-screen preview — present on BOTH tiers per the free/paid\nboundary; the downloadable CAD artefacts (DXF / dimensioned PDF) remain\nthe paid differentiator via the export tools.\n\nDefined here rather than importing ``DrawingRef`` because the web\n``schemas`` package imports back into this module (``schemas.render``),\nso reusing it would create an import cycle — the MCP wire contract keeps\nits own copy, the same pattern as ``BoQRow`` / ``DrawingReference``.",
        +                    "properties": {
        +                      "entity_count": {
        +                        "minimum": 0,
        +                        "type": "integer"
        +                      },
        +                      "svg_b64": {
        +                        "minLength": 1,
        +                        "type": "string"
        +                      },
        +                      "unit_of_drawing": {
        +                        "const": "m",
        +                        "default": "m",
        +                        "type": "string"
        +                      },
        +                      "viewbox_height": {
        +                        "exclusiveMinimum": 0,
        +                        "type": "number"
        +                      },
        +                      "viewbox_width": {
        +                        "exclusiveMinimum": 0,
        +                        "type": "number"
        +                      },
        +                      "viewbox_x": {
        +                        "type": "number"
        +                      },
        +                      "viewbox_y": {
        +                        "type": "number"
        +                      }
        +                    },
        +                    "required": [
        +                      "svg_b64",
        +                      "viewbox_x",
        +                      "viewbox_y",
        +                      "viewbox_width",
        +                      "viewbox_height",
        +                      "entity_count"
        +                    ],
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "drawings": {
        +                "anyOf": [
        +                  {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.6 — paid-tier drawing artefact pointer.\n\n`url` is an R2-signed URL; expiry is carried in `_meta.deliverables.expires_at`\non the envelope (not duplicated here). `layers` is DXF-only; PDF/SVG\ncallers omit it.",
        +                      "properties": {
        +                        "drawing_type": {
        +                          "enum": [
        +                            "section",
        +                            "plan",
        +                            "elevation",
        +                            "isometric",
        +                            "detail"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "format": {
        +                          "enum": [
        +                            "DXF",
        +                            "PDF",
        +                            "SVG"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "layers": {
        +                          "anyOf": [
        +                            {
        +                              "items": {
        +                                "type": "string"
        +                              },
        +                              "type": "array"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ],
        +                          "default": null
        +                        },
        +                        "scale": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "sheet_size": {
        +                          "enum": [
        +                            "A1",
        +                            "A2",
        +                            "A3",
        +                            "A4"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "url": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "drawing_type",
        +                        "format",
        +                        "url",
        +                        "sheet_size",
        +                        "scale"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "parameters_used": {
        +                "additionalProperties": false,
        +                "description": "Schema § 1.2 — the parameter snapshot the engine actually used.\n\nSplits user-supplied values from engine defaults so customers can see\nwhich numbers came from them and which the engine filled in. Every\ndefaulted parameter SHOULD have a corresponding entry in `assumptions`\n— the bridge layer enforces this when wrapping engine output.",
        +                "properties": {
        +                  "assumptions": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "engine_defaults": {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  "resolved_from_description": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "additionalProperties": false,
        +                          "description": "Schema § 1.2 — a parameter resolved by the forgiving-input layer.\n\nPopulated by the Track B-Forgiving Haiku-4.5 resolution pass; until that\nlayer lands, instances are constructed only by tests. `source` distinguishes\nthe resolution path so customers can audit which fields were inferred.",
        +                          "properties": {
        +                            "confidence": {
        +                              "anyOf": [
        +                                {
        +                                  "enum": [
        +                                    "high",
        +                                    "medium",
        +                                    "low"
        +                                  ],
        +                                  "type": "string"
        +                                },
        +                                {
        +                                  "type": "null"
        +                                }
        +                              ],
        +                              "default": null
        +                            },
        +                            "field_name": {
        +                              "minLength": 1,
        +                              "type": "string"
        +                            },
        +                            "resolved_value": {},
        +                            "source": {
        +                              "enum": [
        +                                "description_field",
        +                                "haiku_resolution",
        +                                "engine_default"
        +                              ],
        +                              "type": "string"
        +                            }
        +                          },
        +                          "required": [
        +                            "field_name",
        +                            "resolved_value",
        +                            "source"
        +                          ],
        +                          "type": "object"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "user_supplied": {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  }
        +                },
        +                "type": "object"
        +              },
        +              "standard": {
        +                "enum": [
        +                  "CESMM4",
        +                  "NRM2",
        +                  "SMM7",
        +                  "MMHW"
        +                ],
        +                "type": "string"
        +              },
        +              "text_summary": {
        +                "maxLength": 2000,
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "totals_summary": {
        +                "additionalProperties": false,
        +                "description": "Schema § 1.4 — totals_summary as a typed wrapper around the free-form dict.\n\nWire shape is a flat object (`{\"concrete_m3\": {...}, \"rebar_t\": {...}}`).\nWe model it as `RootModel`-equivalent via `model_config(extra=\"allow\")`\n+ a single `__root__`-style `entries` dict. Pydantic v2 recommends\n`RootModel` for free-form roots; using a wrapper class keeps the import\nsurface uniform with the rest of this module.",
        +                "properties": {
        +                  "entries": {
        +                    "additionalProperties": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.4 — single material/work-class total entry.",
        +                      "properties": {
        +                        "quantity": {
        +                          "minimum": 0,
        +                          "type": "number"
        +                        },
        +                        "unit": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "quantity",
        +                        "unit"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "object"
        +                  }
        +                },
        +                "type": "object"
        +              },
        +              "warnings": {
        +                "items": {
        +                  "additionalProperties": false,
        +                  "description": "Schema § 1.8 — a non-fatal geometry advisory (56th-fire T2).\n\nThe wire projection of the engine's `core.GeometryWarning`. Advisory only:\na warning NEVER changes a measured quantity — it flags geometry that is\nvalid but likely a mistake (e.g. a stale dependent-height default). Present\non BOTH tiers — a correctness/safety signal, not a paid feature.",
        +                  "properties": {
        +                    "affected_params": {
        +                      "items": {
        +                        "type": "string"
        +                      },
        +                      "type": "array"
        +                    },
        +                    "code": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "detail": {
        +                      "additionalProperties": {
        +                        "type": "number"
        +                      },
        +                      "type": "object"
        +                    },
        +                    "message": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "severity": {
        +                      "enum": [
        +                        "info",
        +                        "advisory",
        +                        "caution"
        +                      ],
        +                      "type": "string"
        +                    }
        +                  },
        +                  "required": [
        +                    "code",
        +                    "severity",
        +                    "message"
        +                  ],
        +                  "type": "object"
        +                },
        +                "type": "array"
        +              }
        +            },
        +            "required": [
        +              "assembly_slug",
        +              "standard",
        +              "parameters_used",
        +              "boq_rows",
        +              "totals_summary",
        +              "text_summary"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      },
        +      "error": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        +            "properties": {
        +              "code": {
        +                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        +                "enum": [
        +                  "RATE_LIMIT_EXCEEDED",
        +                  "TIER_INSUFFICIENT",
        +                  "INVALID_INPUT",
        +                  "SCHEMA_VERSION_MISMATCH",
        +                  "SCHEMA_INVARIANT_VIOLATION",
        +                  "UPSTREAM_TIMEOUT",
        +                  "BACKEND_FAILURE",
        +                  "IP_BLOCKED",
        +                  "RESOURCE_NOT_FOUND",
        +                  "RENDER_FAILURE",
        +                  "OCR_LOW_CONFIDENCE",
        +                  "MANUAL_REVIEW_REQUIRED",
        +                  "ACCEPTANCE_REQUIRED",
        +                  "INVALID_TOKEN"
        +                ],
        +                "type": "string"
        +              },
        +              "details": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "message": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "recoverable": {
        +                "type": "boolean"
        +              },
        +              "retry_after_seconds": {
        +                "anyOf": [
        +                  {
        +                    "minimum": 0,
        +                    "type": "integer"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              }
        +            },
        +            "required": [
        +              "code",
        +              "message",
        +              "recoverable"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      }
        +    },
        +    "required": [
        +      "_meta"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "_meta": {
        +        "additionalProperties": false,
        +        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        +        "properties": {
        +          "deliverables": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        +                "properties": {
        +                  "docx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "dxf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "expires_at": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  },
        +                  "pdf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "xlsx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "expires_at"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "document_id": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "issued_at": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "rate_limit_remaining": {
        +            "anyOf": [
        +              {
        +                "minimum": 0,
        +                "type": "integer"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "request_id": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "schema_version": {
        +            "const": "1.0.0",
        +            "default": "1.0.0",
        +            "type": "string"
        +          },
        +          "scope_boundary": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        +                "properties": {
        +                  "not_in_scope": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "produced": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "recommended_companions": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "type": "string"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "produced",
        +                  "not_in_scope"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tier": {
        +            "enum": [
        +              "free",
        +              "paid"
        +            ],
        +            "type": "string"
        +          },
        +          "tier_upgrade": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        +                "properties": {
        +                  "available_tiers": {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        +                      "properties": {
        +                        "billing": {
        +                          "enum": [
        +                            "one_off",
        +                            "monthly",
        +                            "annual"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "currency": {
        +                          "enum": [
        +                            "GBP",
        +                            "SGD",
        +                            "EUR",
        +                            "USD",
        +                            "CAD",
        +                            "AUD",
        +                            "NZD",
        +                            "MYR"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "display_name": {
        +                          "type": "string"
        +                        },
        +                        "price_local": {
        +                          "type": "number"
        +                        },
        +                        "tier_slug": {
        +                          "enum": [
        +                            "7_day_pass",
        +                            "solo",
        +                            "studio",
        +                            "practice"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "unlock_summary": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "tier_slug",
        +                        "display_name",
        +                        "price_local",
        +                        "currency",
        +                        "billing",
        +                        "unlock_summary"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "current_tier": {
        +                    "const": "free",
        +                    "default": "free",
        +                    "type": "string"
        +                  },
        +                  "pass_credit": {
        +                    "anyOf": [
        +                      {
        +                        "additionalProperties": false,
        +                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        +                        "properties": {
        +                          "amount_local": {
        +                            "type": "number"
        +                          },
        +                          "applies_to": {
        +                            "const": "solo_first_month",
        +                            "default": "solo_first_month",
        +                            "type": "string"
        +                          },
        +                          "currency": {
        +                            "type": "string"
        +                          },
        +                          "redeemable_until": {
        +                            "type": "string"
        +                          }
        +                        },
        +                        "required": [
        +                          "amount_local",
        +                          "currency",
        +                          "redeemable_until"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "pricing_url": {
        +                    "default": "https://civilquants.com/pricing",
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "available_tiers"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tos_url": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "upgrade_hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "warranty_disclaimer": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          }
        +        },
        +        "required": [
        +          "request_id",
        +          "issued_at",
        +          "tier"
        +        ],
        +        "type": "object"
        +      },
        +      "data": {
        +        "default": null,
        +        "title": "Data"
        +      },
        +      "error": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        +            "properties": {
        +              "code": {
        +                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        +                "enum": [
        +                  "RATE_LIMIT_EXCEEDED",
        +                  "TIER_INSUFFICIENT",
        +                  "INVALID_INPUT",
        +                  "SCHEMA_VERSION_MISMATCH",
        +                  "SCHEMA_INVARIANT_VIOLATION",
        +                  "UPSTREAM_TIMEOUT",
        +                  "BACKEND_FAILURE",
        +                  "IP_BLOCKED",
        +                  "RESOURCE_NOT_FOUND",
        +                  "RENDER_FAILURE",
        +                  "OCR_LOW_CONFIDENCE",
        +                  "MANUAL_REVIEW_REQUIRED",
        +                  "ACCEPTANCE_REQUIRED",
        +                  "INVALID_TOKEN"
        +                ],
        +                "type": "string"
        +              },
        +              "details": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "message": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "recoverable": {
        +                "type": "boolean"
        +              },
        +              "retry_after_seconds": {
        +                "anyOf": [
        +                  {
        +                    "minimum": 0,
        +                    "type": "integer"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              }
        +            },
        +            "required": [
        +              "code",
        +              "message",
        +              "recoverable"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      }
        +    },
        +    "required": [
        +      "_meta"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedcompute_headwall_precast3 fields changed
      • addedInput schema / properties / deliverables
        Added value: +{
        +  "anyOf": [
        +    {
        +      "items": {
        +        "const": "xlsx",
        +        "type": "string"
        +      },
        +      "type": "array"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null
        +}
      • addedInput schema / properties / output_mode
        Added value: +{
        +  "default": "full_json",
        +  "enum": [
        +    "summary",
        +    "boq",
        +    "boq_with_backup",
        +    "full_json"
        +  ],
        +  "type": "string"
        +}
      • changedOutput schema / properties / result / anyOf
        Previous value: -[
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "_meta": {
        -        "additionalProperties": false,
        -        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        -        "properties": {
        -          "deliverables": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        -                "properties": {
        -                  "docx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "dxf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "expires_at": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  },
        -                  "pdf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "xlsx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "expires_at"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "document_id": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "issued_at": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "rate_limit_remaining": {
        -            "anyOf": [
        -              {
        -                "minimum": 0,
        -                "type": "integer"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "request_id": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "schema_version": {
        -            "const": "1.0.0",
        -            "default": "1.0.0",
        -            "type": "string"
        -          },
        -          "scope_boundary": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        -                "properties": {
        -                  "not_in_scope": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "produced": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "recommended_companions": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "type": "string"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "produced",
        -                  "not_in_scope"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tier": {
        -            "enum": [
        -              "free",
        -              "paid"
        -            ],
        -            "type": "string"
        -          },
        -          "tier_upgrade": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        -                "properties": {
        -                  "available_tiers": {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        -                      "properties": {
        -                        "billing": {
        -                          "enum": [
        -                            "one_off",
        -                            "monthly",
        -                            "annual"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "currency": {
        -                          "enum": [
        -                            "GBP",
        -                            "SGD",
        -                            "EUR",
        -                            "USD",
        -                            "CAD",
        -                            "AUD",
        -                            "NZD",
        -                            "MYR"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "display_name": {
        -                          "type": "string"
        -                        },
        -                        "price_local": {
        -                          "type": "number"
        -                        },
        -                        "tier_slug": {
        -                          "enum": [
        -                            "7_day_pass",
        -                            "solo",
        -                            "studio",
        -                            "practice"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "unlock_summary": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "tier_slug",
        -                        "display_name",
        -                        "price_local",
        -                        "currency",
        -                        "billing",
        -                        "unlock_summary"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "current_tier": {
        -                    "const": "free",
        -                    "default": "free",
        -                    "type": "string"
        -                  },
        -                  "pass_credit": {
        -                    "anyOf": [
        -                      {
        -                        "additionalProperties": false,
        -                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        -                        "properties": {
        -                          "amount_local": {
        -                            "type": "number"
        -                          },
        -                          "applies_to": {
        -                            "const": "solo_first_month",
        -                            "default": "solo_first_month",
        -                            "type": "string"
        -                          },
        -                          "currency": {
        -                            "type": "string"
        -                          },
        -                          "redeemable_until": {
        -                            "type": "string"
        -                          }
        -                        },
        -                        "required": [
        -                          "amount_local",
        -                          "currency",
        -                          "redeemable_until"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "pricing_url": {
        -                    "default": "https://civilquants.com/pricing",
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "available_tiers"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tos_url": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "upgrade_hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "warranty_disclaimer": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          }
        -        },
        -        "required": [
        -          "request_id",
        -          "issued_at",
        -          "tier"
        -        ],
        -        "type": "object"
        -      },
        -      "data": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Schema § 1.1 — the typed payload returned inside `MCPResponse[ComputeResult]`.\n\nFree-tier responses MUST omit `drawings` and `audit_trail` (the bridge\nenforces this); paid-tier responses populate both. `text_summary` is\nbounded to 2000 chars — keeps the LLM-facing summary token-cheap and\nforces longer narrative into BoQ row descriptions where it belongs.\n`warnings` is the non-fatal geometry advisory list (both tiers).",
        -            "properties": {
        -              "assembly_slug": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "audit_trail": {
        -                "anyOf": [
        -                  {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.7 — paid-tier audit-trail entry.\n\nOne entry per BoQ row; `boq_row_index` ties to the row position in\n`ComputeResult.boq_rows`. `derivation` is the human-readable formula\nwalk-through; `formula` is the optional formal expression.",
        -                      "properties": {
        -                        "boq_row_index": {
        -                          "minimum": 0,
        -                          "type": "integer"
        -                        },
        -                        "derivation": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "formula": {
        -                          "anyOf": [
        -                            {
        -                              "type": "string"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ],
        -                          "default": null
        -                        },
        -                        "id": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "parameters_referenced": {
        -                          "items": {
        -                            "type": "string"
        -                          },
        -                          "type": "array"
        -                        }
        -                      },
        -                      "required": [
        -                        "id",
        -                        "boq_row_index",
        -                        "derivation"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "boq_rows": {
        -                "items": {
        -                  "additionalProperties": false,
        -                  "description": "Schema § 1.3 — a single bill row in the requested standard's format.\n\n`description` is the non-verbatim functional description per spec § 13.9 /\n§ 15 invariant — NEVER reproduces a standard's verbatim clause text.\n`rate` / `amount` ship null because rates are commodity data the customer\nowns; the engine's job is the measurement, not the pricing.",
        -                  "properties": {
        -                    "amount": {
        -                      "anyOf": [
        -                        {
        -                          "type": "number"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "attribution": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "audit_id": {
        -                      "anyOf": [
        -                        {
        -                          "type": "string"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "description": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "quantity": {
        -                      "minimum": 0,
        -                      "type": "number"
        -                    },
        -                    "rate": {
        -                      "anyOf": [
        -                        {
        -                          "type": "number"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "unit": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "work_section": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    }
        -                  },
        -                  "required": [
        -                    "work_section",
        -                    "description",
        -                    "quantity",
        -                    "unit",
        -                    "attribution"
        -                  ],
        -                  "type": "object"
        -                },
        -                "type": "array"
        -              },
        -              "drawings": {
        -                "anyOf": [
        -                  {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.6 — paid-tier drawing artefact pointer.\n\n`url` is an R2-signed URL; expiry is carried in `_meta.deliverables.expires_at`\non the envelope (not duplicated here). `layers` is DXF-only; PDF/SVG\ncallers omit it.",
        -                      "properties": {
        -                        "drawing_type": {
        -                          "enum": [
        -                            "section",
        -                            "plan",
        -                            "elevation",
        -                            "isometric",
        -                            "detail"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "format": {
        -                          "enum": [
        -                            "DXF",
        -                            "PDF",
        -                            "SVG"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "layers": {
        -                          "anyOf": [
        -                            {
        -                              "items": {
        -                                "type": "string"
        -                              },
        -                              "type": "array"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ],
        -                          "default": null
        -                        },
        -                        "scale": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "sheet_size": {
        -                          "enum": [
        -                            "A1",
        -                            "A2",
        -                            "A3",
        -                            "A4"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "url": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "drawing_type",
        -                        "format",
        -                        "url",
        -                        "sheet_size",
        -                        "scale"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "parameters_used": {
        -                "additionalProperties": false,
        -                "description": "Schema § 1.2 — the parameter snapshot the engine actually used.\n\nSplits user-supplied values from engine defaults so customers can see\nwhich numbers came from them and which the engine filled in. Every\ndefaulted parameter SHOULD have a corresponding entry in `assumptions`\n— the bridge layer enforces this when wrapping engine output.",
        -                "properties": {
        -                  "assumptions": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "engine_defaults": {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  "resolved_from_description": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "additionalProperties": false,
        -                          "description": "Schema § 1.2 — a parameter resolved by the forgiving-input layer.\n\nPopulated by the Track B-Forgiving Haiku-4.5 resolution pass; until that\nlayer lands, instances are constructed only by tests. `source` distinguishes\nthe resolution path so customers can audit which fields were inferred.",
        -                          "properties": {
        -                            "confidence": {
        -                              "anyOf": [
        -                                {
        -                                  "enum": [
        -                                    "high",
        -                                    "medium",
        -                                    "low"
        -                                  ],
        -                                  "type": "string"
        -                                },
        -                                {
        -                                  "type": "null"
        -                                }
        -                              ],
        -                              "default": null
        -                            },
        -                            "field_name": {
        -                              "minLength": 1,
        -                              "type": "string"
        -                            },
        -                            "resolved_value": {},
        -                            "source": {
        -                              "enum": [
        -                                "description_field",
        -                                "haiku_resolution",
        -                                "engine_default"
        -                              ],
        -                              "type": "string"
        -                            }
        -                          },
        -                          "required": [
        -                            "field_name",
        -                            "resolved_value",
        -                            "source"
        -                          ],
        -                          "type": "object"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "user_supplied": {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  }
        -                },
        -                "type": "object"
        -              },
        -              "standard": {
        -                "enum": [
        -                  "CESMM4",
        -                  "NRM2",
        -                  "SMM7",
        -                  "MMHW"
        -                ],
        -                "type": "string"
        -              },
        -              "text_summary": {
        -                "maxLength": 2000,
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "totals_summary": {
        -                "additionalProperties": false,
        -                "description": "Schema § 1.4 — totals_summary as a typed wrapper around the free-form dict.\n\nWire shape is a flat object (`{\"concrete_m3\": {...}, \"rebar_t\": {...}}`).\nWe model it as `RootModel`-equivalent via `model_config(extra=\"allow\")`\n+ a single `__root__`-style `entries` dict. Pydantic v2 recommends\n`RootModel` for free-form roots; using a wrapper class keeps the import\nsurface uniform with the rest of this module.",
        -                "properties": {
        -                  "entries": {
        -                    "additionalProperties": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.4 — single material/work-class total entry.",
        -                      "properties": {
        -                        "quantity": {
        -                          "minimum": 0,
        -                          "type": "number"
        -                        },
        -                        "unit": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "quantity",
        -                        "unit"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "object"
        -                  }
        -                },
        -                "type": "object"
        -              },
        -              "warnings": {
        -                "items": {
        -                  "additionalProperties": false,
        -                  "description": "Schema § 1.8 — a non-fatal geometry advisory (56th-fire T2).\n\nThe wire projection of the engine's `core.GeometryWarning`. Advisory only:\na warning NEVER changes a measured quantity — it flags geometry that is\nvalid but likely a mistake (e.g. a stale dependent-height default). Present\non BOTH tiers — a correctness/safety signal, not a paid feature.",
        -                  "properties": {
        -                    "affected_params": {
        -                      "items": {
        -                        "type": "string"
        -                      },
        -                      "type": "array"
        -                    },
        -                    "code": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "detail": {
        -                      "additionalProperties": {
        -                        "type": "number"
        -                      },
        -                      "type": "object"
        -                    },
        -                    "message": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "severity": {
        -                      "enum": [
        -                        "info",
        -                        "advisory",
        -                        "caution"
        -                      ],
        -                      "type": "string"
        -                    }
        -                  },
        -                  "required": [
        -                    "code",
        -                    "severity",
        -                    "message"
        -                  ],
        -                  "type": "object"
        -                },
        -                "type": "array"
        -              }
        -            },
        -            "required": [
        -              "assembly_slug",
        -              "standard",
        -              "parameters_used",
        -              "boq_rows",
        -              "totals_summary",
        -              "text_summary"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      },
        -      "error": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        -            "properties": {
        -              "code": {
        -                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        -                "enum": [
        -                  "RATE_LIMIT_EXCEEDED",
        -                  "TIER_INSUFFICIENT",
        -                  "INVALID_INPUT",
        -                  "SCHEMA_VERSION_MISMATCH",
        -                  "SCHEMA_INVARIANT_VIOLATION",
        -                  "UPSTREAM_TIMEOUT",
        -                  "BACKEND_FAILURE",
        -                  "IP_BLOCKED",
        -                  "RESOURCE_NOT_FOUND",
        -                  "RENDER_FAILURE",
        -                  "OCR_LOW_CONFIDENCE",
        -                  "MANUAL_REVIEW_REQUIRED",
        -                  "ACCEPTANCE_REQUIRED",
        -                  "INVALID_TOKEN"
        -                ],
        -                "type": "string"
        -              },
        -              "details": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "message": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "recoverable": {
        -                "type": "boolean"
        -              },
        -              "retry_after_seconds": {
        -                "anyOf": [
        -                  {
        -                    "minimum": 0,
        -                    "type": "integer"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              }
        -            },
        -            "required": [
        -              "code",
        -              "message",
        -              "recoverable"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      }
        -    },
        -    "required": [
        -      "_meta"
        -    ],
        -    "type": "object"
        -  },
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "_meta": {
        -        "additionalProperties": false,
        -        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        -        "properties": {
        -          "deliverables": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        -                "properties": {
        -                  "docx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "dxf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "expires_at": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  },
        -                  "pdf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "xlsx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "expires_at"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "document_id": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "issued_at": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "rate_limit_remaining": {
        -            "anyOf": [
        -              {
        -                "minimum": 0,
        -                "type": "integer"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "request_id": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "schema_version": {
        -            "const": "1.0.0",
        -            "default": "1.0.0",
        -            "type": "string"
        -          },
        -          "scope_boundary": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        -                "properties": {
        -                  "not_in_scope": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "produced": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "recommended_companions": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "type": "string"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "produced",
        -                  "not_in_scope"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tier": {
        -            "enum": [
        -              "free",
        -              "paid"
        -            ],
        -            "type": "string"
        -          },
        -          "tier_upgrade": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        -                "properties": {
        -                  "available_tiers": {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        -                      "properties": {
        -                        "billing": {
        -                          "enum": [
        -                            "one_off",
        -                            "monthly",
        -                            "annual"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "currency": {
        -                          "enum": [
        -                            "GBP",
        -                            "SGD",
        -                            "EUR",
        -                            "USD",
        -                            "CAD",
        -                            "AUD",
        -                            "NZD",
        -                            "MYR"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "display_name": {
        -                          "type": "string"
        -                        },
        -                        "price_local": {
        -                          "type": "number"
        -                        },
        -                        "tier_slug": {
        -                          "enum": [
        -                            "7_day_pass",
        -                            "solo",
        -                            "studio",
        -                            "practice"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "unlock_summary": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "tier_slug",
        -                        "display_name",
        -                        "price_local",
        -                        "currency",
        -                        "billing",
        -                        "unlock_summary"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "current_tier": {
        -                    "const": "free",
        -                    "default": "free",
        -                    "type": "string"
        -                  },
        -                  "pass_credit": {
        -                    "anyOf": [
        -                      {
        -                        "additionalProperties": false,
        -                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        -                        "properties": {
        -                          "amount_local": {
        -                            "type": "number"
        -                          },
        -                          "applies_to": {
        -                            "const": "solo_first_month",
        -                            "default": "solo_first_month",
        -                            "type": "string"
        -                          },
        -                          "currency": {
        -                            "type": "string"
        -                          },
        -                          "redeemable_until": {
        -                            "type": "string"
        -                          }
        -                        },
        -                        "required": [
        -                          "amount_local",
        -                          "currency",
        -                          "redeemable_until"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "pricing_url": {
        -                    "default": "https://civilquants.com/pricing",
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "available_tiers"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tos_url": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "upgrade_hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "warranty_disclaimer": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          }
        -        },
        -        "required": [
        -          "request_id",
        -          "issued_at",
        -          "tier"
        -        ],
        -        "type": "object"
        -      },
        -      "data": {
        -        "default": null,
        -        "title": "Data"
        -      },
        -      "error": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        -            "properties": {
        -              "code": {
        -                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        -                "enum": [
        -                  "RATE_LIMIT_EXCEEDED",
        -                  "TIER_INSUFFICIENT",
        -                  "INVALID_INPUT",
        -                  "SCHEMA_VERSION_MISMATCH",
        -                  "SCHEMA_INVARIANT_VIOLATION",
        -                  "UPSTREAM_TIMEOUT",
        -                  "BACKEND_FAILURE",
        -                  "IP_BLOCKED",
        -                  "RESOURCE_NOT_FOUND",
        -                  "RENDER_FAILURE",
        -                  "OCR_LOW_CONFIDENCE",
        -                  "MANUAL_REVIEW_REQUIRED",
        -                  "ACCEPTANCE_REQUIRED",
        -                  "INVALID_TOKEN"
        -                ],
        -                "type": "string"
        -              },
        -              "details": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "message": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "recoverable": {
        -                "type": "boolean"
        -              },
        -              "retry_after_seconds": {
        -                "anyOf": [
        -                  {
        -                    "minimum": 0,
        -                    "type": "integer"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              }
        -            },
        -            "required": [
        -              "code",
        -              "message",
        -              "recoverable"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      }
        -    },
        -    "required": [
        -      "_meta"
        -    ],
        -    "type": "object"
        -  }
        -]New value: +[
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "_meta": {
        +        "additionalProperties": false,
        +        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        +        "properties": {
        +          "deliverables": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        +                "properties": {
        +                  "docx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "dxf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "expires_at": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  },
        +                  "pdf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "xlsx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "expires_at"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "document_id": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "issued_at": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "rate_limit_remaining": {
        +            "anyOf": [
        +              {
        +                "minimum": 0,
        +                "type": "integer"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "request_id": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "schema_version": {
        +            "const": "1.0.0",
        +            "default": "1.0.0",
        +            "type": "string"
        +          },
        +          "scope_boundary": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        +                "properties": {
        +                  "not_in_scope": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "produced": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "recommended_companions": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "type": "string"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "produced",
        +                  "not_in_scope"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tier": {
        +            "enum": [
        +              "free",
        +              "paid"
        +            ],
        +            "type": "string"
        +          },
        +          "tier_upgrade": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        +                "properties": {
        +                  "available_tiers": {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        +                      "properties": {
        +                        "billing": {
        +                          "enum": [
        +                            "one_off",
        +                            "monthly",
        +                            "annual"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "currency": {
        +                          "enum": [
        +                            "GBP",
        +                            "SGD",
        +                            "EUR",
        +                            "USD",
        +                            "CAD",
        +                            "AUD",
        +                            "NZD",
        +                            "MYR"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "display_name": {
        +                          "type": "string"
        +                        },
        +                        "price_local": {
        +                          "type": "number"
        +                        },
        +                        "tier_slug": {
        +                          "enum": [
        +                            "7_day_pass",
        +                            "solo",
        +                            "studio",
        +                            "practice"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "unlock_summary": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "tier_slug",
        +                        "display_name",
        +                        "price_local",
        +                        "currency",
        +                        "billing",
        +                        "unlock_summary"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "current_tier": {
        +                    "const": "free",
        +                    "default": "free",
        +                    "type": "string"
        +                  },
        +                  "pass_credit": {
        +                    "anyOf": [
        +                      {
        +                        "additionalProperties": false,
        +                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        +                        "properties": {
        +                          "amount_local": {
        +                            "type": "number"
        +                          },
        +                          "applies_to": {
        +                            "const": "solo_first_month",
        +                            "default": "solo_first_month",
        +                            "type": "string"
        +                          },
        +                          "currency": {
        +                            "type": "string"
        +                          },
        +                          "redeemable_until": {
        +                            "type": "string"
        +                          }
        +                        },
        +                        "required": [
        +                          "amount_local",
        +                          "currency",
        +                          "redeemable_until"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "pricing_url": {
        +                    "default": "https://civilquants.com/pricing",
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "available_tiers"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tos_url": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "upgrade_hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "warranty_disclaimer": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          }
        +        },
        +        "required": [
        +          "request_id",
        +          "issued_at",
        +          "tier"
        +        ],
        +        "type": "object"
        +      },
        +      "data": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Schema § 1.1 — the typed payload returned inside `MCPResponse[ComputeResult]`.\n\nFree-tier responses omit `drawings` (the downloadable CAD artefact\npointers — the paid differentiator); the bridge enforces this. The\n`audit_trail` and the inline `drawing` preview are present on BOTH tiers\n(V1 ALIGN / 60th-fire D + C). `text_summary` is bounded to 2000 chars —\nkeeps the LLM-facing summary token-cheap and forces longer narrative into\nBoQ row descriptions where it belongs. `warnings` is the non-fatal\ngeometry advisory list (both tiers).",
        +            "properties": {
        +              "assembly_slug": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "audit_trail": {
        +                "anyOf": [
        +                  {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.7 — paid-tier audit-trail entry.\n\nOne entry per BoQ row; `boq_row_index` ties to the row position in\n`ComputeResult.boq_rows`. `derivation` is the human-readable formula\nwalk-through; `formula` is the optional formal expression.",
        +                      "properties": {
        +                        "boq_row_index": {
        +                          "minimum": 0,
        +                          "type": "integer"
        +                        },
        +                        "derivation": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "formula": {
        +                          "anyOf": [
        +                            {
        +                              "type": "string"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ],
        +                          "default": null
        +                        },
        +                        "id": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "parameters_referenced": {
        +                          "items": {
        +                            "type": "string"
        +                          },
        +                          "type": "array"
        +                        }
        +                      },
        +                      "required": [
        +                        "id",
        +                        "boq_row_index",
        +                        "derivation"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "boq_rows": {
        +                "items": {
        +                  "additionalProperties": false,
        +                  "description": "Schema § 1.3 — a single bill row in the requested standard's format.\n\n`description` is the non-verbatim functional description per spec § 13.9 /\n§ 15 invariant — NEVER reproduces a standard's verbatim clause text.\n`rate` / `amount` ship null because rates are commodity data the customer\nowns; the engine's job is the measurement, not the pricing.",
        +                  "properties": {
        +                    "amount": {
        +                      "anyOf": [
        +                        {
        +                          "type": "number"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "attribution": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "audit_id": {
        +                      "anyOf": [
        +                        {
        +                          "type": "string"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "description": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "quantity": {
        +                      "minimum": 0,
        +                      "type": "number"
        +                    },
        +                    "rate": {
        +                      "anyOf": [
        +                        {
        +                          "type": "number"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "unit": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "work_section": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    }
        +                  },
        +                  "required": [
        +                    "work_section",
        +                    "description",
        +                    "quantity",
        +                    "unit",
        +                    "attribution"
        +                  ],
        +                  "type": "object"
        +                },
        +                "type": "array"
        +              },
        +              "drawing": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": false,
        +                    "description": "Schema § 1.6a — inline server-rendered SVG preview of the geometry.\n\nThe MCP mirror of the web ``/compute`` response's ``drawing`` field\n(``api.schemas.compute.DrawingRef``): the same on-screen dimensioned\ndrawing both tiers see in the workspace, surfaced on the MCP compute\nresponse so a chat client can render it inline (60th-fire item C). This\nis the on-screen preview — present on BOTH tiers per the free/paid\nboundary; the downloadable CAD artefacts (DXF / dimensioned PDF) remain\nthe paid differentiator via the export tools.\n\nDefined here rather than importing ``DrawingRef`` because the web\n``schemas`` package imports back into this module (``schemas.render``),\nso reusing it would create an import cycle — the MCP wire contract keeps\nits own copy, the same pattern as ``BoQRow`` / ``DrawingReference``.",
        +                    "properties": {
        +                      "entity_count": {
        +                        "minimum": 0,
        +                        "type": "integer"
        +                      },
        +                      "svg_b64": {
        +                        "minLength": 1,
        +                        "type": "string"
        +                      },
        +                      "unit_of_drawing": {
        +                        "const": "m",
        +                        "default": "m",
        +                        "type": "string"
        +                      },
        +                      "viewbox_height": {
        +                        "exclusiveMinimum": 0,
        +                        "type": "number"
        +                      },
        +                      "viewbox_width": {
        +                        "exclusiveMinimum": 0,
        +                        "type": "number"
        +                      },
        +                      "viewbox_x": {
        +                        "type": "number"
        +                      },
        +                      "viewbox_y": {
        +                        "type": "number"
        +                      }
        +                    },
        +                    "required": [
        +                      "svg_b64",
        +                      "viewbox_x",
        +                      "viewbox_y",
        +                      "viewbox_width",
        +                      "viewbox_height",
        +                      "entity_count"
        +                    ],
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "drawings": {
        +                "anyOf": [
        +                  {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.6 — paid-tier drawing artefact pointer.\n\n`url` is an R2-signed URL; expiry is carried in `_meta.deliverables.expires_at`\non the envelope (not duplicated here). `layers` is DXF-only; PDF/SVG\ncallers omit it.",
        +                      "properties": {
        +                        "drawing_type": {
        +                          "enum": [
        +                            "section",
        +                            "plan",
        +                            "elevation",
        +                            "isometric",
        +                            "detail"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "format": {
        +                          "enum": [
        +                            "DXF",
        +                            "PDF",
        +                            "SVG"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "layers": {
        +                          "anyOf": [
        +                            {
        +                              "items": {
        +                                "type": "string"
        +                              },
        +                              "type": "array"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ],
        +                          "default": null
        +                        },
        +                        "scale": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "sheet_size": {
        +                          "enum": [
        +                            "A1",
        +                            "A2",
        +                            "A3",
        +                            "A4"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "url": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "drawing_type",
        +                        "format",
        +                        "url",
        +                        "sheet_size",
        +                        "scale"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "parameters_used": {
        +                "additionalProperties": false,
        +                "description": "Schema § 1.2 — the parameter snapshot the engine actually used.\n\nSplits user-supplied values from engine defaults so customers can see\nwhich numbers came from them and which the engine filled in. Every\ndefaulted parameter SHOULD have a corresponding entry in `assumptions`\n— the bridge layer enforces this when wrapping engine output.",
        +                "properties": {
        +                  "assumptions": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "engine_defaults": {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  "resolved_from_description": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "additionalProperties": false,
        +                          "description": "Schema § 1.2 — a parameter resolved by the forgiving-input layer.\n\nPopulated by the Track B-Forgiving Haiku-4.5 resolution pass; until that\nlayer lands, instances are constructed only by tests. `source` distinguishes\nthe resolution path so customers can audit which fields were inferred.",
        +                          "properties": {
        +                            "confidence": {
        +                              "anyOf": [
        +                                {
        +                                  "enum": [
        +                                    "high",
        +                                    "medium",
        +                                    "low"
        +                                  ],
        +                                  "type": "string"
        +                                },
        +                                {
        +                                  "type": "null"
        +                                }
        +                              ],
        +                              "default": null
        +                            },
        +                            "field_name": {
        +                              "minLength": 1,
        +                              "type": "string"
        +                            },
        +                            "resolved_value": {},
        +                            "source": {
        +                              "enum": [
        +                                "description_field",
        +                                "haiku_resolution",
        +                                "engine_default"
        +                              ],
        +                              "type": "string"
        +                            }
        +                          },
        +                          "required": [
        +                            "field_name",
        +                            "resolved_value",
        +                            "source"
        +                          ],
        +                          "type": "object"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "user_supplied": {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  }
        +                },
        +                "type": "object"
        +              },
        +              "standard": {
        +                "enum": [
        +                  "CESMM4",
        +                  "NRM2",
        +                  "SMM7",
        +                  "MMHW"
        +                ],
        +                "type": "string"
        +              },
        +              "text_summary": {
        +                "maxLength": 2000,
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "totals_summary": {
        +                "additionalProperties": false,
        +                "description": "Schema § 1.4 — totals_summary as a typed wrapper around the free-form dict.\n\nWire shape is a flat object (`{\"concrete_m3\": {...}, \"rebar_t\": {...}}`).\nWe model it as `RootModel`-equivalent via `model_config(extra=\"allow\")`\n+ a single `__root__`-style `entries` dict. Pydantic v2 recommends\n`RootModel` for free-form roots; using a wrapper class keeps the import\nsurface uniform with the rest of this module.",
        +                "properties": {
        +                  "entries": {
        +                    "additionalProperties": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.4 — single material/work-class total entry.",
        +                      "properties": {
        +                        "quantity": {
        +                          "minimum": 0,
        +                          "type": "number"
        +                        },
        +                        "unit": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "quantity",
        +                        "unit"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "object"
        +                  }
        +                },
        +                "type": "object"
        +              },
        +              "warnings": {
        +                "items": {
        +                  "additionalProperties": false,
        +                  "description": "Schema § 1.8 — a non-fatal geometry advisory (56th-fire T2).\n\nThe wire projection of the engine's `core.GeometryWarning`. Advisory only:\na warning NEVER changes a measured quantity — it flags geometry that is\nvalid but likely a mistake (e.g. a stale dependent-height default). Present\non BOTH tiers — a correctness/safety signal, not a paid feature.",
        +                  "properties": {
        +                    "affected_params": {
        +                      "items": {
        +                        "type": "string"
        +                      },
        +                      "type": "array"
        +                    },
        +                    "code": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "detail": {
        +                      "additionalProperties": {
        +                        "type": "number"
        +                      },
        +                      "type": "object"
        +                    },
        +                    "message": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "severity": {
        +                      "enum": [
        +                        "info",
        +                        "advisory",
        +                        "caution"
        +                      ],
        +                      "type": "string"
        +                    }
        +                  },
        +                  "required": [
        +                    "code",
        +                    "severity",
        +                    "message"
        +                  ],
        +                  "type": "object"
        +                },
        +                "type": "array"
        +              }
        +            },
        +            "required": [
        +              "assembly_slug",
        +              "standard",
        +              "parameters_used",
        +              "boq_rows",
        +              "totals_summary",
        +              "text_summary"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      },
        +      "error": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        +            "properties": {
        +              "code": {
        +                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        +                "enum": [
        +                  "RATE_LIMIT_EXCEEDED",
        +                  "TIER_INSUFFICIENT",
        +                  "INVALID_INPUT",
        +                  "SCHEMA_VERSION_MISMATCH",
        +                  "SCHEMA_INVARIANT_VIOLATION",
        +                  "UPSTREAM_TIMEOUT",
        +                  "BACKEND_FAILURE",
        +                  "IP_BLOCKED",
        +                  "RESOURCE_NOT_FOUND",
        +                  "RENDER_FAILURE",
        +                  "OCR_LOW_CONFIDENCE",
        +                  "MANUAL_REVIEW_REQUIRED",
        +                  "ACCEPTANCE_REQUIRED",
        +                  "INVALID_TOKEN"
        +                ],
        +                "type": "string"
        +              },
        +              "details": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "message": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "recoverable": {
        +                "type": "boolean"
        +              },
        +              "retry_after_seconds": {
        +                "anyOf": [
        +                  {
        +                    "minimum": 0,
        +                    "type": "integer"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              }
        +            },
        +            "required": [
        +              "code",
        +              "message",
        +              "recoverable"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      }
        +    },
        +    "required": [
        +      "_meta"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "_meta": {
        +        "additionalProperties": false,
        +        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        +        "properties": {
        +          "deliverables": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        +                "properties": {
        +                  "docx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "dxf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "expires_at": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  },
        +                  "pdf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "xlsx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "expires_at"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "document_id": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "issued_at": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "rate_limit_remaining": {
        +            "anyOf": [
        +              {
        +                "minimum": 0,
        +                "type": "integer"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "request_id": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "schema_version": {
        +            "const": "1.0.0",
        +            "default": "1.0.0",
        +            "type": "string"
        +          },
        +          "scope_boundary": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        +                "properties": {
        +                  "not_in_scope": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "produced": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "recommended_companions": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "type": "string"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "produced",
        +                  "not_in_scope"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tier": {
        +            "enum": [
        +              "free",
        +              "paid"
        +            ],
        +            "type": "string"
        +          },
        +          "tier_upgrade": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        +                "properties": {
        +                  "available_tiers": {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        +                      "properties": {
        +                        "billing": {
        +                          "enum": [
        +                            "one_off",
        +                            "monthly",
        +                            "annual"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "currency": {
        +                          "enum": [
        +                            "GBP",
        +                            "SGD",
        +                            "EUR",
        +                            "USD",
        +                            "CAD",
        +                            "AUD",
        +                            "NZD",
        +                            "MYR"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "display_name": {
        +                          "type": "string"
        +                        },
        +                        "price_local": {
        +                          "type": "number"
        +                        },
        +                        "tier_slug": {
        +                          "enum": [
        +                            "7_day_pass",
        +                            "solo",
        +                            "studio",
        +                            "practice"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "unlock_summary": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "tier_slug",
        +                        "display_name",
        +                        "price_local",
        +                        "currency",
        +                        "billing",
        +                        "unlock_summary"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "current_tier": {
        +                    "const": "free",
        +                    "default": "free",
        +                    "type": "string"
        +                  },
        +                  "pass_credit": {
        +                    "anyOf": [
        +                      {
        +                        "additionalProperties": false,
        +                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        +                        "properties": {
        +                          "amount_local": {
        +                            "type": "number"
        +                          },
        +                          "applies_to": {
        +                            "const": "solo_first_month",
        +                            "default": "solo_first_month",
        +                            "type": "string"
        +                          },
        +                          "currency": {
        +                            "type": "string"
        +                          },
        +                          "redeemable_until": {
        +                            "type": "string"
        +                          }
        +                        },
        +                        "required": [
        +                          "amount_local",
        +                          "currency",
        +                          "redeemable_until"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "pricing_url": {
        +                    "default": "https://civilquants.com/pricing",
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "available_tiers"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tos_url": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "upgrade_hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "warranty_disclaimer": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          }
        +        },
        +        "required": [
        +          "request_id",
        +          "issued_at",
        +          "tier"
        +        ],
        +        "type": "object"
        +      },
        +      "data": {
        +        "default": null,
        +        "title": "Data"
        +      },
        +      "error": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        +            "properties": {
        +              "code": {
        +                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        +                "enum": [
        +                  "RATE_LIMIT_EXCEEDED",
        +                  "TIER_INSUFFICIENT",
        +                  "INVALID_INPUT",
        +                  "SCHEMA_VERSION_MISMATCH",
        +                  "SCHEMA_INVARIANT_VIOLATION",
        +                  "UPSTREAM_TIMEOUT",
        +                  "BACKEND_FAILURE",
        +                  "IP_BLOCKED",
        +                  "RESOURCE_NOT_FOUND",
        +                  "RENDER_FAILURE",
        +                  "OCR_LOW_CONFIDENCE",
        +                  "MANUAL_REVIEW_REQUIRED",
        +                  "ACCEPTANCE_REQUIRED",
        +                  "INVALID_TOKEN"
        +                ],
        +                "type": "string"
        +              },
        +              "details": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "message": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "recoverable": {
        +                "type": "boolean"
        +              },
        +              "retry_after_seconds": {
        +                "anyOf": [
        +                  {
        +                    "minimum": 0,
        +                    "type": "integer"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              }
        +            },
        +            "required": [
        +              "code",
        +              "message",
        +              "recoverable"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      }
        +    },
        +    "required": [
        +      "_meta"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedcompute_highway_drainage_channel3 fields changed
      • addedInput schema / properties / deliverables
        Added value: +{
        +  "anyOf": [
        +    {
        +      "items": {
        +        "const": "xlsx",
        +        "type": "string"
        +      },
        +      "type": "array"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null
        +}
      • addedInput schema / properties / output_mode
        Added value: +{
        +  "default": "full_json",
        +  "enum": [
        +    "summary",
        +    "boq",
        +    "boq_with_backup",
        +    "full_json"
        +  ],
        +  "type": "string"
        +}
      • changedOutput schema / properties / result / anyOf
        Previous value: -[
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "_meta": {
        -        "additionalProperties": false,
        -        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        -        "properties": {
        -          "deliverables": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        -                "properties": {
        -                  "docx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "dxf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "expires_at": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  },
        -                  "pdf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "xlsx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "expires_at"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "document_id": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "issued_at": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "rate_limit_remaining": {
        -            "anyOf": [
        -              {
        -                "minimum": 0,
        -                "type": "integer"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "request_id": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "schema_version": {
        -            "const": "1.0.0",
        -            "default": "1.0.0",
        -            "type": "string"
        -          },
        -          "scope_boundary": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        -                "properties": {
        -                  "not_in_scope": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "produced": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "recommended_companions": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "type": "string"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "produced",
        -                  "not_in_scope"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tier": {
        -            "enum": [
        -              "free",
        -              "paid"
        -            ],
        -            "type": "string"
        -          },
        -          "tier_upgrade": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        -                "properties": {
        -                  "available_tiers": {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        -                      "properties": {
        -                        "billing": {
        -                          "enum": [
        -                            "one_off",
        -                            "monthly",
        -                            "annual"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "currency": {
        -                          "enum": [
        -                            "GBP",
        -                            "SGD",
        -                            "EUR",
        -                            "USD",
        -                            "CAD",
        -                            "AUD",
        -                            "NZD",
        -                            "MYR"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "display_name": {
        -                          "type": "string"
        -                        },
        -                        "price_local": {
        -                          "type": "number"
        -                        },
        -                        "tier_slug": {
        -                          "enum": [
        -                            "7_day_pass",
        -                            "solo",
        -                            "studio",
        -                            "practice"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "unlock_summary": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "tier_slug",
        -                        "display_name",
        -                        "price_local",
        -                        "currency",
        -                        "billing",
        -                        "unlock_summary"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "current_tier": {
        -                    "const": "free",
        -                    "default": "free",
        -                    "type": "string"
        -                  },
        -                  "pass_credit": {
        -                    "anyOf": [
        -                      {
        -                        "additionalProperties": false,
        -                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        -                        "properties": {
        -                          "amount_local": {
        -                            "type": "number"
        -                          },
        -                          "applies_to": {
        -                            "const": "solo_first_month",
        -                            "default": "solo_first_month",
        -                            "type": "string"
        -                          },
        -                          "currency": {
        -                            "type": "string"
        -                          },
        -                          "redeemable_until": {
        -                            "type": "string"
        -                          }
        -                        },
        -                        "required": [
        -                          "amount_local",
        -                          "currency",
        -                          "redeemable_until"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "pricing_url": {
        -                    "default": "https://civilquants.com/pricing",
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "available_tiers"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tos_url": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "upgrade_hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "warranty_disclaimer": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          }
        -        },
        -        "required": [
        -          "request_id",
        -          "issued_at",
        -          "tier"
        -        ],
        -        "type": "object"
        -      },
        -      "data": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Schema § 1.1 — the typed payload returned inside `MCPResponse[ComputeResult]`.\n\nFree-tier responses MUST omit `drawings` and `audit_trail` (the bridge\nenforces this); paid-tier responses populate both. `text_summary` is\nbounded to 2000 chars — keeps the LLM-facing summary token-cheap and\nforces longer narrative into BoQ row descriptions where it belongs.\n`warnings` is the non-fatal geometry advisory list (both tiers).",
        -            "properties": {
        -              "assembly_slug": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "audit_trail": {
        -                "anyOf": [
        -                  {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.7 — paid-tier audit-trail entry.\n\nOne entry per BoQ row; `boq_row_index` ties to the row position in\n`ComputeResult.boq_rows`. `derivation` is the human-readable formula\nwalk-through; `formula` is the optional formal expression.",
        -                      "properties": {
        -                        "boq_row_index": {
        -                          "minimum": 0,
        -                          "type": "integer"
        -                        },
        -                        "derivation": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "formula": {
        -                          "anyOf": [
        -                            {
        -                              "type": "string"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ],
        -                          "default": null
        -                        },
        -                        "id": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "parameters_referenced": {
        -                          "items": {
        -                            "type": "string"
        -                          },
        -                          "type": "array"
        -                        }
        -                      },
        -                      "required": [
        -                        "id",
        -                        "boq_row_index",
        -                        "derivation"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "boq_rows": {
        -                "items": {
        -                  "additionalProperties": false,
        -                  "description": "Schema § 1.3 — a single bill row in the requested standard's format.\n\n`description` is the non-verbatim functional description per spec § 13.9 /\n§ 15 invariant — NEVER reproduces a standard's verbatim clause text.\n`rate` / `amount` ship null because rates are commodity data the customer\nowns; the engine's job is the measurement, not the pricing.",
        -                  "properties": {
        -                    "amount": {
        -                      "anyOf": [
        -                        {
        -                          "type": "number"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "attribution": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "audit_id": {
        -                      "anyOf": [
        -                        {
        -                          "type": "string"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "description": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "quantity": {
        -                      "minimum": 0,
        -                      "type": "number"
        -                    },
        -                    "rate": {
        -                      "anyOf": [
        -                        {
        -                          "type": "number"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "unit": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "work_section": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    }
        -                  },
        -                  "required": [
        -                    "work_section",
        -                    "description",
        -                    "quantity",
        -                    "unit",
        -                    "attribution"
        -                  ],
        -                  "type": "object"
        -                },
        -                "type": "array"
        -              },
        -              "drawings": {
        -                "anyOf": [
        -                  {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.6 — paid-tier drawing artefact pointer.\n\n`url` is an R2-signed URL; expiry is carried in `_meta.deliverables.expires_at`\non the envelope (not duplicated here). `layers` is DXF-only; PDF/SVG\ncallers omit it.",
        -                      "properties": {
        -                        "drawing_type": {
        -                          "enum": [
        -                            "section",
        -                            "plan",
        -                            "elevation",
        -                            "isometric",
        -                            "detail"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "format": {
        -                          "enum": [
        -                            "DXF",
        -                            "PDF",
        -                            "SVG"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "layers": {
        -                          "anyOf": [
        -                            {
        -                              "items": {
        -                                "type": "string"
        -                              },
        -                              "type": "array"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ],
        -                          "default": null
        -                        },
        -                        "scale": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "sheet_size": {
        -                          "enum": [
        -                            "A1",
        -                            "A2",
        -                            "A3",
        -                            "A4"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "url": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "drawing_type",
        -                        "format",
        -                        "url",
        -                        "sheet_size",
        -                        "scale"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "parameters_used": {
        -                "additionalProperties": false,
        -                "description": "Schema § 1.2 — the parameter snapshot the engine actually used.\n\nSplits user-supplied values from engine defaults so customers can see\nwhich numbers came from them and which the engine filled in. Every\ndefaulted parameter SHOULD have a corresponding entry in `assumptions`\n— the bridge layer enforces this when wrapping engine output.",
        -                "properties": {
        -                  "assumptions": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "engine_defaults": {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  "resolved_from_description": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "additionalProperties": false,
        -                          "description": "Schema § 1.2 — a parameter resolved by the forgiving-input layer.\n\nPopulated by the Track B-Forgiving Haiku-4.5 resolution pass; until that\nlayer lands, instances are constructed only by tests. `source` distinguishes\nthe resolution path so customers can audit which fields were inferred.",
        -                          "properties": {
        -                            "confidence": {
        -                              "anyOf": [
        -                                {
        -                                  "enum": [
        -                                    "high",
        -                                    "medium",
        -                                    "low"
        -                                  ],
        -                                  "type": "string"
        -                                },
        -                                {
        -                                  "type": "null"
        -                                }
        -                              ],
        -                              "default": null
        -                            },
        -                            "field_name": {
        -                              "minLength": 1,
        -                              "type": "string"
        -                            },
        -                            "resolved_value": {},
        -                            "source": {
        -                              "enum": [
        -                                "description_field",
        -                                "haiku_resolution",
        -                                "engine_default"
        -                              ],
        -                              "type": "string"
        -                            }
        -                          },
        -                          "required": [
        -                            "field_name",
        -                            "resolved_value",
        -                            "source"
        -                          ],
        -                          "type": "object"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "user_supplied": {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  }
        -                },
        -                "type": "object"
        -              },
        -              "standard": {
        -                "enum": [
        -                  "CESMM4",
        -                  "NRM2",
        -                  "SMM7",
        -                  "MMHW"
        -                ],
        -                "type": "string"
        -              },
        -              "text_summary": {
        -                "maxLength": 2000,
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "totals_summary": {
        -                "additionalProperties": false,
        -                "description": "Schema § 1.4 — totals_summary as a typed wrapper around the free-form dict.\n\nWire shape is a flat object (`{\"concrete_m3\": {...}, \"rebar_t\": {...}}`).\nWe model it as `RootModel`-equivalent via `model_config(extra=\"allow\")`\n+ a single `__root__`-style `entries` dict. Pydantic v2 recommends\n`RootModel` for free-form roots; using a wrapper class keeps the import\nsurface uniform with the rest of this module.",
        -                "properties": {
        -                  "entries": {
        -                    "additionalProperties": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.4 — single material/work-class total entry.",
        -                      "properties": {
        -                        "quantity": {
        -                          "minimum": 0,
        -                          "type": "number"
        -                        },
        -                        "unit": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "quantity",
        -                        "unit"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "object"
        -                  }
        -                },
        -                "type": "object"
        -              },
        -              "warnings": {
        -                "items": {
        -                  "additionalProperties": false,
        -                  "description": "Schema § 1.8 — a non-fatal geometry advisory (56th-fire T2).\n\nThe wire projection of the engine's `core.GeometryWarning`. Advisory only:\na warning NEVER changes a measured quantity — it flags geometry that is\nvalid but likely a mistake (e.g. a stale dependent-height default). Present\non BOTH tiers — a correctness/safety signal, not a paid feature.",
        -                  "properties": {
        -                    "affected_params": {
        -                      "items": {
        -                        "type": "string"
        -                      },
        -                      "type": "array"
        -                    },
        -                    "code": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "detail": {
        -                      "additionalProperties": {
        -                        "type": "number"
        -                      },
        -                      "type": "object"
        -                    },
        -                    "message": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "severity": {
        -                      "enum": [
        -                        "info",
        -                        "advisory",
        -                        "caution"
        -                      ],
        -                      "type": "string"
        -                    }
        -                  },
        -                  "required": [
        -                    "code",
        -                    "severity",
        -                    "message"
        -                  ],
        -                  "type": "object"
        -                },
        -                "type": "array"
        -              }
        -            },
        -            "required": [
        -              "assembly_slug",
        -              "standard",
        -              "parameters_used",
        -              "boq_rows",
        -              "totals_summary",
        -              "text_summary"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      },
        -      "error": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        -            "properties": {
        -              "code": {
        -                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        -                "enum": [
        -                  "RATE_LIMIT_EXCEEDED",
        -                  "TIER_INSUFFICIENT",
        -                  "INVALID_INPUT",
        -                  "SCHEMA_VERSION_MISMATCH",
        -                  "SCHEMA_INVARIANT_VIOLATION",
        -                  "UPSTREAM_TIMEOUT",
        -                  "BACKEND_FAILURE",
        -                  "IP_BLOCKED",
        -                  "RESOURCE_NOT_FOUND",
        -                  "RENDER_FAILURE",
        -                  "OCR_LOW_CONFIDENCE",
        -                  "MANUAL_REVIEW_REQUIRED",
        -                  "ACCEPTANCE_REQUIRED",
        -                  "INVALID_TOKEN"
        -                ],
        -                "type": "string"
        -              },
        -              "details": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "message": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "recoverable": {
        -                "type": "boolean"
        -              },
        -              "retry_after_seconds": {
        -                "anyOf": [
        -                  {
        -                    "minimum": 0,
        -                    "type": "integer"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              }
        -            },
        -            "required": [
        -              "code",
        -              "message",
        -              "recoverable"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      }
        -    },
        -    "required": [
        -      "_meta"
        -    ],
        -    "type": "object"
        -  },
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "_meta": {
        -        "additionalProperties": false,
        -        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        -        "properties": {
        -          "deliverables": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        -                "properties": {
        -                  "docx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "dxf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "expires_at": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  },
        -                  "pdf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "xlsx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "expires_at"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "document_id": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "issued_at": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "rate_limit_remaining": {
        -            "anyOf": [
        -              {
        -                "minimum": 0,
        -                "type": "integer"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "request_id": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "schema_version": {
        -            "const": "1.0.0",
        -            "default": "1.0.0",
        -            "type": "string"
        -          },
        -          "scope_boundary": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        -                "properties": {
        -                  "not_in_scope": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "produced": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "recommended_companions": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "type": "string"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "produced",
        -                  "not_in_scope"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tier": {
        -            "enum": [
        -              "free",
        -              "paid"
        -            ],
        -            "type": "string"
        -          },
        -          "tier_upgrade": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        -                "properties": {
        -                  "available_tiers": {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        -                      "properties": {
        -                        "billing": {
        -                          "enum": [
        -                            "one_off",
        -                            "monthly",
        -                            "annual"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "currency": {
        -                          "enum": [
        -                            "GBP",
        -                            "SGD",
        -                            "EUR",
        -                            "USD",
        -                            "CAD",
        -                            "AUD",
        -                            "NZD",
        -                            "MYR"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "display_name": {
        -                          "type": "string"
        -                        },
        -                        "price_local": {
        -                          "type": "number"
        -                        },
        -                        "tier_slug": {
        -                          "enum": [
        -                            "7_day_pass",
        -                            "solo",
        -                            "studio",
        -                            "practice"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "unlock_summary": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "tier_slug",
        -                        "display_name",
        -                        "price_local",
        -                        "currency",
        -                        "billing",
        -                        "unlock_summary"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "current_tier": {
        -                    "const": "free",
        -                    "default": "free",
        -                    "type": "string"
        -                  },
        -                  "pass_credit": {
        -                    "anyOf": [
        -                      {
        -                        "additionalProperties": false,
        -                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        -                        "properties": {
        -                          "amount_local": {
        -                            "type": "number"
        -                          },
        -                          "applies_to": {
        -                            "const": "solo_first_month",
        -                            "default": "solo_first_month",
        -                            "type": "string"
        -                          },
        -                          "currency": {
        -                            "type": "string"
        -                          },
        -                          "redeemable_until": {
        -                            "type": "string"
        -                          }
        -                        },
        -                        "required": [
        -                          "amount_local",
        -                          "currency",
        -                          "redeemable_until"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "pricing_url": {
        -                    "default": "https://civilquants.com/pricing",
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "available_tiers"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tos_url": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "upgrade_hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "warranty_disclaimer": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          }
        -        },
        -        "required": [
        -          "request_id",
        -          "issued_at",
        -          "tier"
        -        ],
        -        "type": "object"
        -      },
        -      "data": {
        -        "default": null,
        -        "title": "Data"
        -      },
        -      "error": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        -            "properties": {
        -              "code": {
        -                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        -                "enum": [
        -                  "RATE_LIMIT_EXCEEDED",
        -                  "TIER_INSUFFICIENT",
        -                  "INVALID_INPUT",
        -                  "SCHEMA_VERSION_MISMATCH",
        -                  "SCHEMA_INVARIANT_VIOLATION",
        -                  "UPSTREAM_TIMEOUT",
        -                  "BACKEND_FAILURE",
        -                  "IP_BLOCKED",
        -                  "RESOURCE_NOT_FOUND",
        -                  "RENDER_FAILURE",
        -                  "OCR_LOW_CONFIDENCE",
        -                  "MANUAL_REVIEW_REQUIRED",
        -                  "ACCEPTANCE_REQUIRED",
        -                  "INVALID_TOKEN"
        -                ],
        -                "type": "string"
        -              },
        -              "details": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "message": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "recoverable": {
        -                "type": "boolean"
        -              },
        -              "retry_after_seconds": {
        -                "anyOf": [
        -                  {
        -                    "minimum": 0,
        -                    "type": "integer"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              }
        -            },
        -            "required": [
        -              "code",
        -              "message",
        -              "recoverable"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      }
        -    },
        -    "required": [
        -      "_meta"
        -    ],
        -    "type": "object"
        -  }
        -]New value: +[
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "_meta": {
        +        "additionalProperties": false,
        +        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        +        "properties": {
        +          "deliverables": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        +                "properties": {
        +                  "docx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "dxf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "expires_at": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  },
        +                  "pdf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "xlsx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "expires_at"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "document_id": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "issued_at": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "rate_limit_remaining": {
        +            "anyOf": [
        +              {
        +                "minimum": 0,
        +                "type": "integer"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "request_id": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "schema_version": {
        +            "const": "1.0.0",
        +            "default": "1.0.0",
        +            "type": "string"
        +          },
        +          "scope_boundary": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        +                "properties": {
        +                  "not_in_scope": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "produced": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "recommended_companions": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "type": "string"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "produced",
        +                  "not_in_scope"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tier": {
        +            "enum": [
        +              "free",
        +              "paid"
        +            ],
        +            "type": "string"
        +          },
        +          "tier_upgrade": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        +                "properties": {
        +                  "available_tiers": {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        +                      "properties": {
        +                        "billing": {
        +                          "enum": [
        +                            "one_off",
        +                            "monthly",
        +                            "annual"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "currency": {
        +                          "enum": [
        +                            "GBP",
        +                            "SGD",
        +                            "EUR",
        +                            "USD",
        +                            "CAD",
        +                            "AUD",
        +                            "NZD",
        +                            "MYR"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "display_name": {
        +                          "type": "string"
        +                        },
        +                        "price_local": {
        +                          "type": "number"
        +                        },
        +                        "tier_slug": {
        +                          "enum": [
        +                            "7_day_pass",
        +                            "solo",
        +                            "studio",
        +                            "practice"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "unlock_summary": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "tier_slug",
        +                        "display_name",
        +                        "price_local",
        +                        "currency",
        +                        "billing",
        +                        "unlock_summary"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "current_tier": {
        +                    "const": "free",
        +                    "default": "free",
        +                    "type": "string"
        +                  },
        +                  "pass_credit": {
        +                    "anyOf": [
        +                      {
        +                        "additionalProperties": false,
        +                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        +                        "properties": {
        +                          "amount_local": {
        +                            "type": "number"
        +                          },
        +                          "applies_to": {
        +                            "const": "solo_first_month",
        +                            "default": "solo_first_month",
        +                            "type": "string"
        +                          },
        +                          "currency": {
        +                            "type": "string"
        +                          },
        +                          "redeemable_until": {
        +                            "type": "string"
        +                          }
        +                        },
        +                        "required": [
        +                          "amount_local",
        +                          "currency",
        +                          "redeemable_until"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "pricing_url": {
        +                    "default": "https://civilquants.com/pricing",
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "available_tiers"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tos_url": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "upgrade_hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "warranty_disclaimer": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          }
        +        },
        +        "required": [
        +          "request_id",
        +          "issued_at",
        +          "tier"
        +        ],
        +        "type": "object"
        +      },
        +      "data": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Schema § 1.1 — the typed payload returned inside `MCPResponse[ComputeResult]`.\n\nFree-tier responses omit `drawings` (the downloadable CAD artefact\npointers — the paid differentiator); the bridge enforces this. The\n`audit_trail` and the inline `drawing` preview are present on BOTH tiers\n(V1 ALIGN / 60th-fire D + C). `text_summary` is bounded to 2000 chars —\nkeeps the LLM-facing summary token-cheap and forces longer narrative into\nBoQ row descriptions where it belongs. `warnings` is the non-fatal\ngeometry advisory list (both tiers).",
        +            "properties": {
        +              "assembly_slug": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "audit_trail": {
        +                "anyOf": [
        +                  {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.7 — paid-tier audit-trail entry.\n\nOne entry per BoQ row; `boq_row_index` ties to the row position in\n`ComputeResult.boq_rows`. `derivation` is the human-readable formula\nwalk-through; `formula` is the optional formal expression.",
        +                      "properties": {
        +                        "boq_row_index": {
        +                          "minimum": 0,
        +                          "type": "integer"
        +                        },
        +                        "derivation": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "formula": {
        +                          "anyOf": [
        +                            {
        +                              "type": "string"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ],
        +                          "default": null
        +                        },
        +                        "id": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "parameters_referenced": {
        +                          "items": {
        +                            "type": "string"
        +                          },
        +                          "type": "array"
        +                        }
        +                      },
        +                      "required": [
        +                        "id",
        +                        "boq_row_index",
        +                        "derivation"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "boq_rows": {
        +                "items": {
        +                  "additionalProperties": false,
        +                  "description": "Schema § 1.3 — a single bill row in the requested standard's format.\n\n`description` is the non-verbatim functional description per spec § 13.9 /\n§ 15 invariant — NEVER reproduces a standard's verbatim clause text.\n`rate` / `amount` ship null because rates are commodity data the customer\nowns; the engine's job is the measurement, not the pricing.",
        +                  "properties": {
        +                    "amount": {
        +                      "anyOf": [
        +                        {
        +                          "type": "number"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "attribution": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "audit_id": {
        +                      "anyOf": [
        +                        {
        +                          "type": "string"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "description": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "quantity": {
        +                      "minimum": 0,
        +                      "type": "number"
        +                    },
        +                    "rate": {
        +                      "anyOf": [
        +                        {
        +                          "type": "number"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "unit": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "work_section": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    }
        +                  },
        +                  "required": [
        +                    "work_section",
        +                    "description",
        +                    "quantity",
        +                    "unit",
        +                    "attribution"
        +                  ],
        +                  "type": "object"
        +                },
        +                "type": "array"
        +              },
        +              "drawing": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": false,
        +                    "description": "Schema § 1.6a — inline server-rendered SVG preview of the geometry.\n\nThe MCP mirror of the web ``/compute`` response's ``drawing`` field\n(``api.schemas.compute.DrawingRef``): the same on-screen dimensioned\ndrawing both tiers see in the workspace, surfaced on the MCP compute\nresponse so a chat client can render it inline (60th-fire item C). This\nis the on-screen preview — present on BOTH tiers per the free/paid\nboundary; the downloadable CAD artefacts (DXF / dimensioned PDF) remain\nthe paid differentiator via the export tools.\n\nDefined here rather than importing ``DrawingRef`` because the web\n``schemas`` package imports back into this module (``schemas.render``),\nso reusing it would create an import cycle — the MCP wire contract keeps\nits own copy, the same pattern as ``BoQRow`` / ``DrawingReference``.",
        +                    "properties": {
        +                      "entity_count": {
        +                        "minimum": 0,
        +                        "type": "integer"
        +                      },
        +                      "svg_b64": {
        +                        "minLength": 1,
        +                        "type": "string"
        +                      },
        +                      "unit_of_drawing": {
        +                        "const": "m",
        +                        "default": "m",
        +                        "type": "string"
        +                      },
        +                      "viewbox_height": {
        +                        "exclusiveMinimum": 0,
        +                        "type": "number"
        +                      },
        +                      "viewbox_width": {
        +                        "exclusiveMinimum": 0,
        +                        "type": "number"
        +                      },
        +                      "viewbox_x": {
        +                        "type": "number"
        +                      },
        +                      "viewbox_y": {
        +                        "type": "number"
        +                      }
        +                    },
        +                    "required": [
        +                      "svg_b64",
        +                      "viewbox_x",
        +                      "viewbox_y",
        +                      "viewbox_width",
        +                      "viewbox_height",
        +                      "entity_count"
        +                    ],
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "drawings": {
        +                "anyOf": [
        +                  {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.6 — paid-tier drawing artefact pointer.\n\n`url` is an R2-signed URL; expiry is carried in `_meta.deliverables.expires_at`\non the envelope (not duplicated here). `layers` is DXF-only; PDF/SVG\ncallers omit it.",
        +                      "properties": {
        +                        "drawing_type": {
        +                          "enum": [
        +                            "section",
        +                            "plan",
        +                            "elevation",
        +                            "isometric",
        +                            "detail"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "format": {
        +                          "enum": [
        +                            "DXF",
        +                            "PDF",
        +                            "SVG"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "layers": {
        +                          "anyOf": [
        +                            {
        +                              "items": {
        +                                "type": "string"
        +                              },
        +                              "type": "array"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ],
        +                          "default": null
        +                        },
        +                        "scale": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "sheet_size": {
        +                          "enum": [
        +                            "A1",
        +                            "A2",
        +                            "A3",
        +                            "A4"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "url": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "drawing_type",
        +                        "format",
        +                        "url",
        +                        "sheet_size",
        +                        "scale"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "parameters_used": {
        +                "additionalProperties": false,
        +                "description": "Schema § 1.2 — the parameter snapshot the engine actually used.\n\nSplits user-supplied values from engine defaults so customers can see\nwhich numbers came from them and which the engine filled in. Every\ndefaulted parameter SHOULD have a corresponding entry in `assumptions`\n— the bridge layer enforces this when wrapping engine output.",
        +                "properties": {
        +                  "assumptions": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "engine_defaults": {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  "resolved_from_description": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "additionalProperties": false,
        +                          "description": "Schema § 1.2 — a parameter resolved by the forgiving-input layer.\n\nPopulated by the Track B-Forgiving Haiku-4.5 resolution pass; until that\nlayer lands, instances are constructed only by tests. `source` distinguishes\nthe resolution path so customers can audit which fields were inferred.",
        +                          "properties": {
        +                            "confidence": {
        +                              "anyOf": [
        +                                {
        +                                  "enum": [
        +                                    "high",
        +                                    "medium",
        +                                    "low"
        +                                  ],
        +                                  "type": "string"
        +                                },
        +                                {
        +                                  "type": "null"
        +                                }
        +                              ],
        +                              "default": null
        +                            },
        +                            "field_name": {
        +                              "minLength": 1,
        +                              "type": "string"
        +                            },
        +                            "resolved_value": {},
        +                            "source": {
        +                              "enum": [
        +                                "description_field",
        +                                "haiku_resolution",
        +                                "engine_default"
        +                              ],
        +                              "type": "string"
        +                            }
        +                          },
        +                          "required": [
        +                            "field_name",
        +                            "resolved_value",
        +                            "source"
        +                          ],
        +                          "type": "object"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "user_supplied": {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  }
        +                },
        +                "type": "object"
        +              },
        +              "standard": {
        +                "enum": [
        +                  "CESMM4",
        +                  "NRM2",
        +                  "SMM7",
        +                  "MMHW"
        +                ],
        +                "type": "string"
        +              },
        +              "text_summary": {
        +                "maxLength": 2000,
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "totals_summary": {
        +                "additionalProperties": false,
        +                "description": "Schema § 1.4 — totals_summary as a typed wrapper around the free-form dict.\n\nWire shape is a flat object (`{\"concrete_m3\": {...}, \"rebar_t\": {...}}`).\nWe model it as `RootModel`-equivalent via `model_config(extra=\"allow\")`\n+ a single `__root__`-style `entries` dict. Pydantic v2 recommends\n`RootModel` for free-form roots; using a wrapper class keeps the import\nsurface uniform with the rest of this module.",
        +                "properties": {
        +                  "entries": {
        +                    "additionalProperties": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.4 — single material/work-class total entry.",
        +                      "properties": {
        +                        "quantity": {
        +                          "minimum": 0,
        +                          "type": "number"
        +                        },
        +                        "unit": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "quantity",
        +                        "unit"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "object"
        +                  }
        +                },
        +                "type": "object"
        +              },
        +              "warnings": {
        +                "items": {
        +                  "additionalProperties": false,
        +                  "description": "Schema § 1.8 — a non-fatal geometry advisory (56th-fire T2).\n\nThe wire projection of the engine's `core.GeometryWarning`. Advisory only:\na warning NEVER changes a measured quantity — it flags geometry that is\nvalid but likely a mistake (e.g. a stale dependent-height default). Present\non BOTH tiers — a correctness/safety signal, not a paid feature.",
        +                  "properties": {
        +                    "affected_params": {
        +                      "items": {
        +                        "type": "string"
        +                      },
        +                      "type": "array"
        +                    },
        +                    "code": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "detail": {
        +                      "additionalProperties": {
        +                        "type": "number"
        +                      },
        +                      "type": "object"
        +                    },
        +                    "message": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "severity": {
        +                      "enum": [
        +                        "info",
        +                        "advisory",
        +                        "caution"
        +                      ],
        +                      "type": "string"
        +                    }
        +                  },
        +                  "required": [
        +                    "code",
        +                    "severity",
        +                    "message"
        +                  ],
        +                  "type": "object"
        +                },
        +                "type": "array"
        +              }
        +            },
        +            "required": [
        +              "assembly_slug",
        +              "standard",
        +              "parameters_used",
        +              "boq_rows",
        +              "totals_summary",
        +              "text_summary"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      },
        +      "error": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        +            "properties": {
        +              "code": {
        +                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        +                "enum": [
        +                  "RATE_LIMIT_EXCEEDED",
        +                  "TIER_INSUFFICIENT",
        +                  "INVALID_INPUT",
        +                  "SCHEMA_VERSION_MISMATCH",
        +                  "SCHEMA_INVARIANT_VIOLATION",
        +                  "UPSTREAM_TIMEOUT",
        +                  "BACKEND_FAILURE",
        +                  "IP_BLOCKED",
        +                  "RESOURCE_NOT_FOUND",
        +                  "RENDER_FAILURE",
        +                  "OCR_LOW_CONFIDENCE",
        +                  "MANUAL_REVIEW_REQUIRED",
        +                  "ACCEPTANCE_REQUIRED",
        +                  "INVALID_TOKEN"
        +                ],
        +                "type": "string"
        +              },
        +              "details": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "message": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "recoverable": {
        +                "type": "boolean"
        +              },
        +              "retry_after_seconds": {
        +                "anyOf": [
        +                  {
        +                    "minimum": 0,
        +                    "type": "integer"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              }
        +            },
        +            "required": [
        +              "code",
        +              "message",
        +              "recoverable"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      }
        +    },
        +    "required": [
        +      "_meta"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "_meta": {
        +        "additionalProperties": false,
        +        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        +        "properties": {
        +          "deliverables": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        +                "properties": {
        +                  "docx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "dxf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "expires_at": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  },
        +                  "pdf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "xlsx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "expires_at"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "document_id": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "issued_at": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "rate_limit_remaining": {
        +            "anyOf": [
        +              {
        +                "minimum": 0,
        +                "type": "integer"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "request_id": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "schema_version": {
        +            "const": "1.0.0",
        +            "default": "1.0.0",
        +            "type": "string"
        +          },
        +          "scope_boundary": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        +                "properties": {
        +                  "not_in_scope": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "produced": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "recommended_companions": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "type": "string"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "produced",
        +                  "not_in_scope"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tier": {
        +            "enum": [
        +              "free",
        +              "paid"
        +            ],
        +            "type": "string"
        +          },
        +          "tier_upgrade": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        +                "properties": {
        +                  "available_tiers": {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        +                      "properties": {
        +                        "billing": {
        +                          "enum": [
        +                            "one_off",
        +                            "monthly",
        +                            "annual"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "currency": {
        +                          "enum": [
        +                            "GBP",
        +                            "SGD",
        +                            "EUR",
        +                            "USD",
        +                            "CAD",
        +                            "AUD",
        +                            "NZD",
        +                            "MYR"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "display_name": {
        +                          "type": "string"
        +                        },
        +                        "price_local": {
        +                          "type": "number"
        +                        },
        +                        "tier_slug": {
        +                          "enum": [
        +                            "7_day_pass",
        +                            "solo",
        +                            "studio",
        +                            "practice"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "unlock_summary": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "tier_slug",
        +                        "display_name",
        +                        "price_local",
        +                        "currency",
        +                        "billing",
        +                        "unlock_summary"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "current_tier": {
        +                    "const": "free",
        +                    "default": "free",
        +                    "type": "string"
        +                  },
        +                  "pass_credit": {
        +                    "anyOf": [
        +                      {
        +                        "additionalProperties": false,
        +                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        +                        "properties": {
        +                          "amount_local": {
        +                            "type": "number"
        +                          },
        +                          "applies_to": {
        +                            "const": "solo_first_month",
        +                            "default": "solo_first_month",
        +                            "type": "string"
        +                          },
        +                          "currency": {
        +                            "type": "string"
        +                          },
        +                          "redeemable_until": {
        +                            "type": "string"
        +                          }
        +                        },
        +                        "required": [
        +                          "amount_local",
        +                          "currency",
        +                          "redeemable_until"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "pricing_url": {
        +                    "default": "https://civilquants.com/pricing",
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "available_tiers"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tos_url": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "upgrade_hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "warranty_disclaimer": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          }
        +        },
        +        "required": [
        +          "request_id",
        +          "issued_at",
        +          "tier"
        +        ],
        +        "type": "object"
        +      },
        +      "data": {
        +        "default": null,
        +        "title": "Data"
        +      },
        +      "error": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        +            "properties": {
        +              "code": {
        +                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        +                "enum": [
        +                  "RATE_LIMIT_EXCEEDED",
        +                  "TIER_INSUFFICIENT",
        +                  "INVALID_INPUT",
        +                  "SCHEMA_VERSION_MISMATCH",
        +                  "SCHEMA_INVARIANT_VIOLATION",
        +                  "UPSTREAM_TIMEOUT",
        +                  "BACKEND_FAILURE",
        +                  "IP_BLOCKED",
        +                  "RESOURCE_NOT_FOUND",
        +                  "RENDER_FAILURE",
        +                  "OCR_LOW_CONFIDENCE",
        +                  "MANUAL_REVIEW_REQUIRED",
        +                  "ACCEPTANCE_REQUIRED",
        +                  "INVALID_TOKEN"
        +                ],
        +                "type": "string"
        +              },
        +              "details": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "message": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "recoverable": {
        +                "type": "boolean"
        +              },
        +              "retry_after_seconds": {
        +                "anyOf": [
        +                  {
        +                    "minimum": 0,
        +                    "type": "integer"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              }
        +            },
        +            "required": [
        +              "code",
        +              "message",
        +              "recoverable"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      }
        +    },
        +    "required": [
        +      "_meta"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedcompute_kerb_run3 fields changed
      • addedInput schema / properties / deliverables
        Added value: +{
        +  "anyOf": [
        +    {
        +      "items": {
        +        "const": "xlsx",
        +        "type": "string"
        +      },
        +      "type": "array"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null
        +}
      • addedInput schema / properties / output_mode
        Added value: +{
        +  "default": "full_json",
        +  "enum": [
        +    "summary",
        +    "boq",
        +    "boq_with_backup",
        +    "full_json"
        +  ],
        +  "type": "string"
        +}
      • changedOutput schema / properties / result / anyOf
        Previous value: -[
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "_meta": {
        -        "additionalProperties": false,
        -        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        -        "properties": {
        -          "deliverables": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        -                "properties": {
        -                  "docx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "dxf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "expires_at": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  },
        -                  "pdf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "xlsx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "expires_at"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "document_id": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "issued_at": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "rate_limit_remaining": {
        -            "anyOf": [
        -              {
        -                "minimum": 0,
        -                "type": "integer"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "request_id": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "schema_version": {
        -            "const": "1.0.0",
        -            "default": "1.0.0",
        -            "type": "string"
        -          },
        -          "scope_boundary": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        -                "properties": {
        -                  "not_in_scope": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "produced": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "recommended_companions": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "type": "string"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "produced",
        -                  "not_in_scope"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tier": {
        -            "enum": [
        -              "free",
        -              "paid"
        -            ],
        -            "type": "string"
        -          },
        -          "tier_upgrade": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        -                "properties": {
        -                  "available_tiers": {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        -                      "properties": {
        -                        "billing": {
        -                          "enum": [
        -                            "one_off",
        -                            "monthly",
        -                            "annual"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "currency": {
        -                          "enum": [
        -                            "GBP",
        -                            "SGD",
        -                            "EUR",
        -                            "USD",
        -                            "CAD",
        -                            "AUD",
        -                            "NZD",
        -                            "MYR"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "display_name": {
        -                          "type": "string"
        -                        },
        -                        "price_local": {
        -                          "type": "number"
        -                        },
        -                        "tier_slug": {
        -                          "enum": [
        -                            "7_day_pass",
        -                            "solo",
        -                            "studio",
        -                            "practice"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "unlock_summary": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "tier_slug",
        -                        "display_name",
        -                        "price_local",
        -                        "currency",
        -                        "billing",
        -                        "unlock_summary"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "current_tier": {
        -                    "const": "free",
        -                    "default": "free",
        -                    "type": "string"
        -                  },
        -                  "pass_credit": {
        -                    "anyOf": [
        -                      {
        -                        "additionalProperties": false,
        -                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        -                        "properties": {
        -                          "amount_local": {
        -                            "type": "number"
        -                          },
        -                          "applies_to": {
        -                            "const": "solo_first_month",
        -                            "default": "solo_first_month",
        -                            "type": "string"
        -                          },
        -                          "currency": {
        -                            "type": "string"
        -                          },
        -                          "redeemable_until": {
        -                            "type": "string"
        -                          }
        -                        },
        -                        "required": [
        -                          "amount_local",
        -                          "currency",
        -                          "redeemable_until"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "pricing_url": {
        -                    "default": "https://civilquants.com/pricing",
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "available_tiers"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tos_url": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "upgrade_hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "warranty_disclaimer": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          }
        -        },
        -        "required": [
        -          "request_id",
        -          "issued_at",
        -          "tier"
        -        ],
        -        "type": "object"
        -      },
        -      "data": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Schema § 1.1 — the typed payload returned inside `MCPResponse[ComputeResult]`.\n\nFree-tier responses MUST omit `drawings` and `audit_trail` (the bridge\nenforces this); paid-tier responses populate both. `text_summary` is\nbounded to 2000 chars — keeps the LLM-facing summary token-cheap and\nforces longer narrative into BoQ row descriptions where it belongs.\n`warnings` is the non-fatal geometry advisory list (both tiers).",
        -            "properties": {
        -              "assembly_slug": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "audit_trail": {
        -                "anyOf": [
        -                  {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.7 — paid-tier audit-trail entry.\n\nOne entry per BoQ row; `boq_row_index` ties to the row position in\n`ComputeResult.boq_rows`. `derivation` is the human-readable formula\nwalk-through; `formula` is the optional formal expression.",
        -                      "properties": {
        -                        "boq_row_index": {
        -                          "minimum": 0,
        -                          "type": "integer"
        -                        },
        -                        "derivation": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "formula": {
        -                          "anyOf": [
        -                            {
        -                              "type": "string"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ],
        -                          "default": null
        -                        },
        -                        "id": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "parameters_referenced": {
        -                          "items": {
        -                            "type": "string"
        -                          },
        -                          "type": "array"
        -                        }
        -                      },
        -                      "required": [
        -                        "id",
        -                        "boq_row_index",
        -                        "derivation"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "boq_rows": {
        -                "items": {
        -                  "additionalProperties": false,
        -                  "description": "Schema § 1.3 — a single bill row in the requested standard's format.\n\n`description` is the non-verbatim functional description per spec § 13.9 /\n§ 15 invariant — NEVER reproduces a standard's verbatim clause text.\n`rate` / `amount` ship null because rates are commodity data the customer\nowns; the engine's job is the measurement, not the pricing.",
        -                  "properties": {
        -                    "amount": {
        -                      "anyOf": [
        -                        {
        -                          "type": "number"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "attribution": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "audit_id": {
        -                      "anyOf": [
        -                        {
        -                          "type": "string"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "description": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "quantity": {
        -                      "minimum": 0,
        -                      "type": "number"
        -                    },
        -                    "rate": {
        -                      "anyOf": [
        -                        {
        -                          "type": "number"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "unit": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "work_section": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    }
        -                  },
        -                  "required": [
        -                    "work_section",
        -                    "description",
        -                    "quantity",
        -                    "unit",
        -                    "attribution"
        -                  ],
        -                  "type": "object"
        -                },
        -                "type": "array"
        -              },
        -              "drawings": {
        -                "anyOf": [
        -                  {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.6 — paid-tier drawing artefact pointer.\n\n`url` is an R2-signed URL; expiry is carried in `_meta.deliverables.expires_at`\non the envelope (not duplicated here). `layers` is DXF-only; PDF/SVG\ncallers omit it.",
        -                      "properties": {
        -                        "drawing_type": {
        -                          "enum": [
        -                            "section",
        -                            "plan",
        -                            "elevation",
        -                            "isometric",
        -                            "detail"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "format": {
        -                          "enum": [
        -                            "DXF",
        -                            "PDF",
        -                            "SVG"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "layers": {
        -                          "anyOf": [
        -                            {
        -                              "items": {
        -                                "type": "string"
        -                              },
        -                              "type": "array"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ],
        -                          "default": null
        -                        },
        -                        "scale": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "sheet_size": {
        -                          "enum": [
        -                            "A1",
        -                            "A2",
        -                            "A3",
        -                            "A4"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "url": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "drawing_type",
        -                        "format",
        -                        "url",
        -                        "sheet_size",
        -                        "scale"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "parameters_used": {
        -                "additionalProperties": false,
        -                "description": "Schema § 1.2 — the parameter snapshot the engine actually used.\n\nSplits user-supplied values from engine defaults so customers can see\nwhich numbers came from them and which the engine filled in. Every\ndefaulted parameter SHOULD have a corresponding entry in `assumptions`\n— the bridge layer enforces this when wrapping engine output.",
        -                "properties": {
        -                  "assumptions": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "engine_defaults": {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  "resolved_from_description": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "additionalProperties": false,
        -                          "description": "Schema § 1.2 — a parameter resolved by the forgiving-input layer.\n\nPopulated by the Track B-Forgiving Haiku-4.5 resolution pass; until that\nlayer lands, instances are constructed only by tests. `source` distinguishes\nthe resolution path so customers can audit which fields were inferred.",
        -                          "properties": {
        -                            "confidence": {
        -                              "anyOf": [
        -                                {
        -                                  "enum": [
        -                                    "high",
        -                                    "medium",
        -                                    "low"
        -                                  ],
        -                                  "type": "string"
        -                                },
        -                                {
        -                                  "type": "null"
        -                                }
        -                              ],
        -                              "default": null
        -                            },
        -                            "field_name": {
        -                              "minLength": 1,
        -                              "type": "string"
        -                            },
        -                            "resolved_value": {},
        -                            "source": {
        -                              "enum": [
        -                                "description_field",
        -                                "haiku_resolution",
        -                                "engine_default"
        -                              ],
        -                              "type": "string"
        -                            }
        -                          },
        -                          "required": [
        -                            "field_name",
        -                            "resolved_value",
        -                            "source"
        -                          ],
        -                          "type": "object"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "user_supplied": {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  }
        -                },
        -                "type": "object"
        -              },
        -              "standard": {
        -                "enum": [
        -                  "CESMM4",
        -                  "NRM2",
        -                  "SMM7",
        -                  "MMHW"
        -                ],
        -                "type": "string"
        -              },
        -              "text_summary": {
        -                "maxLength": 2000,
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "totals_summary": {
        -                "additionalProperties": false,
        -                "description": "Schema § 1.4 — totals_summary as a typed wrapper around the free-form dict.\n\nWire shape is a flat object (`{\"concrete_m3\": {...}, \"rebar_t\": {...}}`).\nWe model it as `RootModel`-equivalent via `model_config(extra=\"allow\")`\n+ a single `__root__`-style `entries` dict. Pydantic v2 recommends\n`RootModel` for free-form roots; using a wrapper class keeps the import\nsurface uniform with the rest of this module.",
        -                "properties": {
        -                  "entries": {
        -                    "additionalProperties": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.4 — single material/work-class total entry.",
        -                      "properties": {
        -                        "quantity": {
        -                          "minimum": 0,
        -                          "type": "number"
        -                        },
        -                        "unit": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "quantity",
        -                        "unit"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "object"
        -                  }
        -                },
        -                "type": "object"
        -              },
        -              "warnings": {
        -                "items": {
        -                  "additionalProperties": false,
        -                  "description": "Schema § 1.8 — a non-fatal geometry advisory (56th-fire T2).\n\nThe wire projection of the engine's `core.GeometryWarning`. Advisory only:\na warning NEVER changes a measured quantity — it flags geometry that is\nvalid but likely a mistake (e.g. a stale dependent-height default). Present\non BOTH tiers — a correctness/safety signal, not a paid feature.",
        -                  "properties": {
        -                    "affected_params": {
        -                      "items": {
        -                        "type": "string"
        -                      },
        -                      "type": "array"
        -                    },
        -                    "code": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "detail": {
        -                      "additionalProperties": {
        -                        "type": "number"
        -                      },
        -                      "type": "object"
        -                    },
        -                    "message": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "severity": {
        -                      "enum": [
        -                        "info",
        -                        "advisory",
        -                        "caution"
        -                      ],
        -                      "type": "string"
        -                    }
        -                  },
        -                  "required": [
        -                    "code",
        -                    "severity",
        -                    "message"
        -                  ],
        -                  "type": "object"
        -                },
        -                "type": "array"
        -              }
        -            },
        -            "required": [
        -              "assembly_slug",
        -              "standard",
        -              "parameters_used",
        -              "boq_rows",
        -              "totals_summary",
        -              "text_summary"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      },
        -      "error": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        -            "properties": {
        -              "code": {
        -                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        -                "enum": [
        -                  "RATE_LIMIT_EXCEEDED",
        -                  "TIER_INSUFFICIENT",
        -                  "INVALID_INPUT",
        -                  "SCHEMA_VERSION_MISMATCH",
        -                  "SCHEMA_INVARIANT_VIOLATION",
        -                  "UPSTREAM_TIMEOUT",
        -                  "BACKEND_FAILURE",
        -                  "IP_BLOCKED",
        -                  "RESOURCE_NOT_FOUND",
        -                  "RENDER_FAILURE",
        -                  "OCR_LOW_CONFIDENCE",
        -                  "MANUAL_REVIEW_REQUIRED",
        -                  "ACCEPTANCE_REQUIRED",
        -                  "INVALID_TOKEN"
        -                ],
        -                "type": "string"
        -              },
        -              "details": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "message": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "recoverable": {
        -                "type": "boolean"
        -              },
        -              "retry_after_seconds": {
        -                "anyOf": [
        -                  {
        -                    "minimum": 0,
        -                    "type": "integer"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              }
        -            },
        -            "required": [
        -              "code",
        -              "message",
        -              "recoverable"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      }
        -    },
        -    "required": [
        -      "_meta"
        -    ],
        -    "type": "object"
        -  },
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "_meta": {
        -        "additionalProperties": false,
        -        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        -        "properties": {
        -          "deliverables": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        -                "properties": {
        -                  "docx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "dxf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "expires_at": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  },
        -                  "pdf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "xlsx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "expires_at"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "document_id": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "issued_at": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "rate_limit_remaining": {
        -            "anyOf": [
        -              {
        -                "minimum": 0,
        -                "type": "integer"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "request_id": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "schema_version": {
        -            "const": "1.0.0",
        -            "default": "1.0.0",
        -            "type": "string"
        -          },
        -          "scope_boundary": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        -                "properties": {
        -                  "not_in_scope": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "produced": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "recommended_companions": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "type": "string"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "produced",
        -                  "not_in_scope"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tier": {
        -            "enum": [
        -              "free",
        -              "paid"
        -            ],
        -            "type": "string"
        -          },
        -          "tier_upgrade": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        -                "properties": {
        -                  "available_tiers": {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        -                      "properties": {
        -                        "billing": {
        -                          "enum": [
        -                            "one_off",
        -                            "monthly",
        -                            "annual"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "currency": {
        -                          "enum": [
        -                            "GBP",
        -                            "SGD",
        -                            "EUR",
        -                            "USD",
        -                            "CAD",
        -                            "AUD",
        -                            "NZD",
        -                            "MYR"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "display_name": {
        -                          "type": "string"
        -                        },
        -                        "price_local": {
        -                          "type": "number"
        -                        },
        -                        "tier_slug": {
        -                          "enum": [
        -                            "7_day_pass",
        -                            "solo",
        -                            "studio",
        -                            "practice"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "unlock_summary": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "tier_slug",
        -                        "display_name",
        -                        "price_local",
        -                        "currency",
        -                        "billing",
        -                        "unlock_summary"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "current_tier": {
        -                    "const": "free",
        -                    "default": "free",
        -                    "type": "string"
        -                  },
        -                  "pass_credit": {
        -                    "anyOf": [
        -                      {
        -                        "additionalProperties": false,
        -                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        -                        "properties": {
        -                          "amount_local": {
        -                            "type": "number"
        -                          },
        -                          "applies_to": {
        -                            "const": "solo_first_month",
        -                            "default": "solo_first_month",
        -                            "type": "string"
        -                          },
        -                          "currency": {
        -                            "type": "string"
        -                          },
        -                          "redeemable_until": {
        -                            "type": "string"
        -                          }
        -                        },
        -                        "required": [
        -                          "amount_local",
        -                          "currency",
        -                          "redeemable_until"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "pricing_url": {
        -                    "default": "https://civilquants.com/pricing",
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "available_tiers"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tos_url": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "upgrade_hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "warranty_disclaimer": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          }
        -        },
        -        "required": [
        -          "request_id",
        -          "issued_at",
        -          "tier"
        -        ],
        -        "type": "object"
        -      },
        -      "data": {
        -        "default": null,
        -        "title": "Data"
        -      },
        -      "error": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        -            "properties": {
        -              "code": {
        -                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        -                "enum": [
        -                  "RATE_LIMIT_EXCEEDED",
        -                  "TIER_INSUFFICIENT",
        -                  "INVALID_INPUT",
        -                  "SCHEMA_VERSION_MISMATCH",
        -                  "SCHEMA_INVARIANT_VIOLATION",
        -                  "UPSTREAM_TIMEOUT",
        -                  "BACKEND_FAILURE",
        -                  "IP_BLOCKED",
        -                  "RESOURCE_NOT_FOUND",
        -                  "RENDER_FAILURE",
        -                  "OCR_LOW_CONFIDENCE",
        -                  "MANUAL_REVIEW_REQUIRED",
        -                  "ACCEPTANCE_REQUIRED",
        -                  "INVALID_TOKEN"
        -                ],
        -                "type": "string"
        -              },
        -              "details": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "message": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "recoverable": {
        -                "type": "boolean"
        -              },
        -              "retry_after_seconds": {
        -                "anyOf": [
        -                  {
        -                    "minimum": 0,
        -                    "type": "integer"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              }
        -            },
        -            "required": [
        -              "code",
        -              "message",
        -              "recoverable"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      }
        -    },
        -    "required": [
        -      "_meta"
        -    ],
        -    "type": "object"
        -  }
        -]New value: +[
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "_meta": {
        +        "additionalProperties": false,
        +        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        +        "properties": {
        +          "deliverables": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        +                "properties": {
        +                  "docx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "dxf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "expires_at": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  },
        +                  "pdf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "xlsx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "expires_at"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "document_id": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "issued_at": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "rate_limit_remaining": {
        +            "anyOf": [
        +              {
        +                "minimum": 0,
        +                "type": "integer"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "request_id": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "schema_version": {
        +            "const": "1.0.0",
        +            "default": "1.0.0",
        +            "type": "string"
        +          },
        +          "scope_boundary": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        +                "properties": {
        +                  "not_in_scope": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "produced": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "recommended_companions": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "type": "string"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "produced",
        +                  "not_in_scope"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tier": {
        +            "enum": [
        +              "free",
        +              "paid"
        +            ],
        +            "type": "string"
        +          },
        +          "tier_upgrade": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        +                "properties": {
        +                  "available_tiers": {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        +                      "properties": {
        +                        "billing": {
        +                          "enum": [
        +                            "one_off",
        +                            "monthly",
        +                            "annual"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "currency": {
        +                          "enum": [
        +                            "GBP",
        +                            "SGD",
        +                            "EUR",
        +                            "USD",
        +                            "CAD",
        +                            "AUD",
        +                            "NZD",
        +                            "MYR"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "display_name": {
        +                          "type": "string"
        +                        },
        +                        "price_local": {
        +                          "type": "number"
        +                        },
        +                        "tier_slug": {
        +                          "enum": [
        +                            "7_day_pass",
        +                            "solo",
        +                            "studio",
        +                            "practice"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "unlock_summary": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "tier_slug",
        +                        "display_name",
        +                        "price_local",
        +                        "currency",
        +                        "billing",
        +                        "unlock_summary"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "current_tier": {
        +                    "const": "free",
        +                    "default": "free",
        +                    "type": "string"
        +                  },
        +                  "pass_credit": {
        +                    "anyOf": [
        +                      {
        +                        "additionalProperties": false,
        +                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        +                        "properties": {
        +                          "amount_local": {
        +                            "type": "number"
        +                          },
        +                          "applies_to": {
        +                            "const": "solo_first_month",
        +                            "default": "solo_first_month",
        +                            "type": "string"
        +                          },
        +                          "currency": {
        +                            "type": "string"
        +                          },
        +                          "redeemable_until": {
        +                            "type": "string"
        +                          }
        +                        },
        +                        "required": [
        +                          "amount_local",
        +                          "currency",
        +                          "redeemable_until"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "pricing_url": {
        +                    "default": "https://civilquants.com/pricing",
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "available_tiers"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tos_url": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "upgrade_hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "warranty_disclaimer": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          }
        +        },
        +        "required": [
        +          "request_id",
        +          "issued_at",
        +          "tier"
        +        ],
        +        "type": "object"
        +      },
        +      "data": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Schema § 1.1 — the typed payload returned inside `MCPResponse[ComputeResult]`.\n\nFree-tier responses omit `drawings` (the downloadable CAD artefact\npointers — the paid differentiator); the bridge enforces this. The\n`audit_trail` and the inline `drawing` preview are present on BOTH tiers\n(V1 ALIGN / 60th-fire D + C). `text_summary` is bounded to 2000 chars —\nkeeps the LLM-facing summary token-cheap and forces longer narrative into\nBoQ row descriptions where it belongs. `warnings` is the non-fatal\ngeometry advisory list (both tiers).",
        +            "properties": {
        +              "assembly_slug": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "audit_trail": {
        +                "anyOf": [
        +                  {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.7 — paid-tier audit-trail entry.\n\nOne entry per BoQ row; `boq_row_index` ties to the row position in\n`ComputeResult.boq_rows`. `derivation` is the human-readable formula\nwalk-through; `formula` is the optional formal expression.",
        +                      "properties": {
        +                        "boq_row_index": {
        +                          "minimum": 0,
        +                          "type": "integer"
        +                        },
        +                        "derivation": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "formula": {
        +                          "anyOf": [
        +                            {
        +                              "type": "string"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ],
        +                          "default": null
        +                        },
        +                        "id": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "parameters_referenced": {
        +                          "items": {
        +                            "type": "string"
        +                          },
        +                          "type": "array"
        +                        }
        +                      },
        +                      "required": [
        +                        "id",
        +                        "boq_row_index",
        +                        "derivation"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "boq_rows": {
        +                "items": {
        +                  "additionalProperties": false,
        +                  "description": "Schema § 1.3 — a single bill row in the requested standard's format.\n\n`description` is the non-verbatim functional description per spec § 13.9 /\n§ 15 invariant — NEVER reproduces a standard's verbatim clause text.\n`rate` / `amount` ship null because rates are commodity data the customer\nowns; the engine's job is the measurement, not the pricing.",
        +                  "properties": {
        +                    "amount": {
        +                      "anyOf": [
        +                        {
        +                          "type": "number"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "attribution": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "audit_id": {
        +                      "anyOf": [
        +                        {
        +                          "type": "string"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "description": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "quantity": {
        +                      "minimum": 0,
        +                      "type": "number"
        +                    },
        +                    "rate": {
        +                      "anyOf": [
        +                        {
        +                          "type": "number"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "unit": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "work_section": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    }
        +                  },
        +                  "required": [
        +                    "work_section",
        +                    "description",
        +                    "quantity",
        +                    "unit",
        +                    "attribution"
        +                  ],
        +                  "type": "object"
        +                },
        +                "type": "array"
        +              },
        +              "drawing": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": false,
        +                    "description": "Schema § 1.6a — inline server-rendered SVG preview of the geometry.\n\nThe MCP mirror of the web ``/compute`` response's ``drawing`` field\n(``api.schemas.compute.DrawingRef``): the same on-screen dimensioned\ndrawing both tiers see in the workspace, surfaced on the MCP compute\nresponse so a chat client can render it inline (60th-fire item C). This\nis the on-screen preview — present on BOTH tiers per the free/paid\nboundary; the downloadable CAD artefacts (DXF / dimensioned PDF) remain\nthe paid differentiator via the export tools.\n\nDefined here rather than importing ``DrawingRef`` because the web\n``schemas`` package imports back into this module (``schemas.render``),\nso reusing it would create an import cycle — the MCP wire contract keeps\nits own copy, the same pattern as ``BoQRow`` / ``DrawingReference``.",
        +                    "properties": {
        +                      "entity_count": {
        +                        "minimum": 0,
        +                        "type": "integer"
        +                      },
        +                      "svg_b64": {
        +                        "minLength": 1,
        +                        "type": "string"
        +                      },
        +                      "unit_of_drawing": {
        +                        "const": "m",
        +                        "default": "m",
        +                        "type": "string"
        +                      },
        +                      "viewbox_height": {
        +                        "exclusiveMinimum": 0,
        +                        "type": "number"
        +                      },
        +                      "viewbox_width": {
        +                        "exclusiveMinimum": 0,
        +                        "type": "number"
        +                      },
        +                      "viewbox_x": {
        +                        "type": "number"
        +                      },
        +                      "viewbox_y": {
        +                        "type": "number"
        +                      }
        +                    },
        +                    "required": [
        +                      "svg_b64",
        +                      "viewbox_x",
        +                      "viewbox_y",
        +                      "viewbox_width",
        +                      "viewbox_height",
        +                      "entity_count"
        +                    ],
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "drawings": {
        +                "anyOf": [
        +                  {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.6 — paid-tier drawing artefact pointer.\n\n`url` is an R2-signed URL; expiry is carried in `_meta.deliverables.expires_at`\non the envelope (not duplicated here). `layers` is DXF-only; PDF/SVG\ncallers omit it.",
        +                      "properties": {
        +                        "drawing_type": {
        +                          "enum": [
        +                            "section",
        +                            "plan",
        +                            "elevation",
        +                            "isometric",
        +                            "detail"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "format": {
        +                          "enum": [
        +                            "DXF",
        +                            "PDF",
        +                            "SVG"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "layers": {
        +                          "anyOf": [
        +                            {
        +                              "items": {
        +                                "type": "string"
        +                              },
        +                              "type": "array"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ],
        +                          "default": null
        +                        },
        +                        "scale": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "sheet_size": {
        +                          "enum": [
        +                            "A1",
        +                            "A2",
        +                            "A3",
        +                            "A4"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "url": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "drawing_type",
        +                        "format",
        +                        "url",
        +                        "sheet_size",
        +                        "scale"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "parameters_used": {
        +                "additionalProperties": false,
        +                "description": "Schema § 1.2 — the parameter snapshot the engine actually used.\n\nSplits user-supplied values from engine defaults so customers can see\nwhich numbers came from them and which the engine filled in. Every\ndefaulted parameter SHOULD have a corresponding entry in `assumptions`\n— the bridge layer enforces this when wrapping engine output.",
        +                "properties": {
        +                  "assumptions": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "engine_defaults": {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  "resolved_from_description": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "additionalProperties": false,
        +                          "description": "Schema § 1.2 — a parameter resolved by the forgiving-input layer.\n\nPopulated by the Track B-Forgiving Haiku-4.5 resolution pass; until that\nlayer lands, instances are constructed only by tests. `source` distinguishes\nthe resolution path so customers can audit which fields were inferred.",
        +                          "properties": {
        +                            "confidence": {
        +                              "anyOf": [
        +                                {
        +                                  "enum": [
        +                                    "high",
        +                                    "medium",
        +                                    "low"
        +                                  ],
        +                                  "type": "string"
        +                                },
        +                                {
        +                                  "type": "null"
        +                                }
        +                              ],
        +                              "default": null
        +                            },
        +                            "field_name": {
        +                              "minLength": 1,
        +                              "type": "string"
        +                            },
        +                            "resolved_value": {},
        +                            "source": {
        +                              "enum": [
        +                                "description_field",
        +                                "haiku_resolution",
        +                                "engine_default"
        +                              ],
        +                              "type": "string"
        +                            }
        +                          },
        +                          "required": [
        +                            "field_name",
        +                            "resolved_value",
        +                            "source"
        +                          ],
        +                          "type": "object"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "user_supplied": {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  }
        +                },
        +                "type": "object"
        +              },
        +              "standard": {
        +                "enum": [
        +                  "CESMM4",
        +                  "NRM2",
        +                  "SMM7",
        +                  "MMHW"
        +                ],
        +                "type": "string"
        +              },
        +              "text_summary": {
        +                "maxLength": 2000,
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "totals_summary": {
        +                "additionalProperties": false,
        +                "description": "Schema § 1.4 — totals_summary as a typed wrapper around the free-form dict.\n\nWire shape is a flat object (`{\"concrete_m3\": {...}, \"rebar_t\": {...}}`).\nWe model it as `RootModel`-equivalent via `model_config(extra=\"allow\")`\n+ a single `__root__`-style `entries` dict. Pydantic v2 recommends\n`RootModel` for free-form roots; using a wrapper class keeps the import\nsurface uniform with the rest of this module.",
        +                "properties": {
        +                  "entries": {
        +                    "additionalProperties": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.4 — single material/work-class total entry.",
        +                      "properties": {
        +                        "quantity": {
        +                          "minimum": 0,
        +                          "type": "number"
        +                        },
        +                        "unit": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "quantity",
        +                        "unit"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "object"
        +                  }
        +                },
        +                "type": "object"
        +              },
        +              "warnings": {
        +                "items": {
        +                  "additionalProperties": false,
        +                  "description": "Schema § 1.8 — a non-fatal geometry advisory (56th-fire T2).\n\nThe wire projection of the engine's `core.GeometryWarning`. Advisory only:\na warning NEVER changes a measured quantity — it flags geometry that is\nvalid but likely a mistake (e.g. a stale dependent-height default). Present\non BOTH tiers — a correctness/safety signal, not a paid feature.",
        +                  "properties": {
        +                    "affected_params": {
        +                      "items": {
        +                        "type": "string"
        +                      },
        +                      "type": "array"
        +                    },
        +                    "code": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "detail": {
        +                      "additionalProperties": {
        +                        "type": "number"
        +                      },
        +                      "type": "object"
        +                    },
        +                    "message": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "severity": {
        +                      "enum": [
        +                        "info",
        +                        "advisory",
        +                        "caution"
        +                      ],
        +                      "type": "string"
        +                    }
        +                  },
        +                  "required": [
        +                    "code",
        +                    "severity",
        +                    "message"
        +                  ],
        +                  "type": "object"
        +                },
        +                "type": "array"
        +              }
        +            },
        +            "required": [
        +              "assembly_slug",
        +              "standard",
        +              "parameters_used",
        +              "boq_rows",
        +              "totals_summary",
        +              "text_summary"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      },
        +      "error": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        +            "properties": {
        +              "code": {
        +                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        +                "enum": [
        +                  "RATE_LIMIT_EXCEEDED",
        +                  "TIER_INSUFFICIENT",
        +                  "INVALID_INPUT",
        +                  "SCHEMA_VERSION_MISMATCH",
        +                  "SCHEMA_INVARIANT_VIOLATION",
        +                  "UPSTREAM_TIMEOUT",
        +                  "BACKEND_FAILURE",
        +                  "IP_BLOCKED",
        +                  "RESOURCE_NOT_FOUND",
        +                  "RENDER_FAILURE",
        +                  "OCR_LOW_CONFIDENCE",
        +                  "MANUAL_REVIEW_REQUIRED",
        +                  "ACCEPTANCE_REQUIRED",
        +                  "INVALID_TOKEN"
        +                ],
        +                "type": "string"
        +              },
        +              "details": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "message": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "recoverable": {
        +                "type": "boolean"
        +              },
        +              "retry_after_seconds": {
        +                "anyOf": [
        +                  {
        +                    "minimum": 0,
        +                    "type": "integer"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              }
        +            },
        +            "required": [
        +              "code",
        +              "message",
        +              "recoverable"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      }
        +    },
        +    "required": [
        +      "_meta"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "_meta": {
        +        "additionalProperties": false,
        +        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        +        "properties": {
        +          "deliverables": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        +                "properties": {
        +                  "docx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "dxf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "expires_at": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  },
        +                  "pdf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "xlsx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "expires_at"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "document_id": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "issued_at": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "rate_limit_remaining": {
        +            "anyOf": [
        +              {
        +                "minimum": 0,
        +                "type": "integer"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "request_id": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "schema_version": {
        +            "const": "1.0.0",
        +            "default": "1.0.0",
        +            "type": "string"
        +          },
        +          "scope_boundary": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        +                "properties": {
        +                  "not_in_scope": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "produced": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "recommended_companions": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "type": "string"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "produced",
        +                  "not_in_scope"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tier": {
        +            "enum": [
        +              "free",
        +              "paid"
        +            ],
        +            "type": "string"
        +          },
        +          "tier_upgrade": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        +                "properties": {
        +                  "available_tiers": {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        +                      "properties": {
        +                        "billing": {
        +                          "enum": [
        +                            "one_off",
        +                            "monthly",
        +                            "annual"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "currency": {
        +                          "enum": [
        +                            "GBP",
        +                            "SGD",
        +                            "EUR",
        +                            "USD",
        +                            "CAD",
        +                            "AUD",
        +                            "NZD",
        +                            "MYR"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "display_name": {
        +                          "type": "string"
        +                        },
        +                        "price_local": {
        +                          "type": "number"
        +                        },
        +                        "tier_slug": {
        +                          "enum": [
        +                            "7_day_pass",
        +                            "solo",
        +                            "studio",
        +                            "practice"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "unlock_summary": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "tier_slug",
        +                        "display_name",
        +                        "price_local",
        +                        "currency",
        +                        "billing",
        +                        "unlock_summary"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "current_tier": {
        +                    "const": "free",
        +                    "default": "free",
        +                    "type": "string"
        +                  },
        +                  "pass_credit": {
        +                    "anyOf": [
        +                      {
        +                        "additionalProperties": false,
        +                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        +                        "properties": {
        +                          "amount_local": {
        +                            "type": "number"
        +                          },
        +                          "applies_to": {
        +                            "const": "solo_first_month",
        +                            "default": "solo_first_month",
        +                            "type": "string"
        +                          },
        +                          "currency": {
        +                            "type": "string"
        +                          },
        +                          "redeemable_until": {
        +                            "type": "string"
        +                          }
        +                        },
        +                        "required": [
        +                          "amount_local",
        +                          "currency",
        +                          "redeemable_until"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "pricing_url": {
        +                    "default": "https://civilquants.com/pricing",
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "available_tiers"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tos_url": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "upgrade_hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "warranty_disclaimer": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          }
        +        },
        +        "required": [
        +          "request_id",
        +          "issued_at",
        +          "tier"
        +        ],
        +        "type": "object"
        +      },
        +      "data": {
        +        "default": null,
        +        "title": "Data"
        +      },
        +      "error": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        +            "properties": {
        +              "code": {
        +                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        +                "enum": [
        +                  "RATE_LIMIT_EXCEEDED",
        +                  "TIER_INSUFFICIENT",
        +                  "INVALID_INPUT",
        +                  "SCHEMA_VERSION_MISMATCH",
        +                  "SCHEMA_INVARIANT_VIOLATION",
        +                  "UPSTREAM_TIMEOUT",
        +                  "BACKEND_FAILURE",
        +                  "IP_BLOCKED",
        +                  "RESOURCE_NOT_FOUND",
        +                  "RENDER_FAILURE",
        +                  "OCR_LOW_CONFIDENCE",
        +                  "MANUAL_REVIEW_REQUIRED",
        +                  "ACCEPTANCE_REQUIRED",
        +                  "INVALID_TOKEN"
        +                ],
        +                "type": "string"
        +              },
        +              "details": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "message": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "recoverable": {
        +                "type": "boolean"
        +              },
        +              "retry_after_seconds": {
        +                "anyOf": [
        +                  {
        +                    "minimum": 0,
        +                    "type": "integer"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              }
        +            },
        +            "required": [
        +              "code",
        +              "message",
        +              "recoverable"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      }
        +    },
        +    "required": [
        +      "_meta"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedcompute_lighting_column3 fields changed
      • addedInput schema / properties / deliverables
        Added value: +{
        +  "anyOf": [
        +    {
        +      "items": {
        +        "const": "xlsx",
        +        "type": "string"
        +      },
        +      "type": "array"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null
        +}
      • addedInput schema / properties / output_mode
        Added value: +{
        +  "default": "full_json",
        +  "enum": [
        +    "summary",
        +    "boq",
        +    "boq_with_backup",
        +    "full_json"
        +  ],
        +  "type": "string"
        +}
      • changedOutput schema / properties / result / anyOf
        Previous value: -[
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "_meta": {
        -        "additionalProperties": false,
        -        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        -        "properties": {
        -          "deliverables": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        -                "properties": {
        -                  "docx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "dxf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "expires_at": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  },
        -                  "pdf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "xlsx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "expires_at"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "document_id": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "issued_at": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "rate_limit_remaining": {
        -            "anyOf": [
        -              {
        -                "minimum": 0,
        -                "type": "integer"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "request_id": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "schema_version": {
        -            "const": "1.0.0",
        -            "default": "1.0.0",
        -            "type": "string"
        -          },
        -          "scope_boundary": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        -                "properties": {
        -                  "not_in_scope": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "produced": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "recommended_companions": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "type": "string"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "produced",
        -                  "not_in_scope"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tier": {
        -            "enum": [
        -              "free",
        -              "paid"
        -            ],
        -            "type": "string"
        -          },
        -          "tier_upgrade": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        -                "properties": {
        -                  "available_tiers": {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        -                      "properties": {
        -                        "billing": {
        -                          "enum": [
        -                            "one_off",
        -                            "monthly",
        -                            "annual"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "currency": {
        -                          "enum": [
        -                            "GBP",
        -                            "SGD",
        -                            "EUR",
        -                            "USD",
        -                            "CAD",
        -                            "AUD",
        -                            "NZD",
        -                            "MYR"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "display_name": {
        -                          "type": "string"
        -                        },
        -                        "price_local": {
        -                          "type": "number"
        -                        },
        -                        "tier_slug": {
        -                          "enum": [
        -                            "7_day_pass",
        -                            "solo",
        -                            "studio",
        -                            "practice"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "unlock_summary": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "tier_slug",
        -                        "display_name",
        -                        "price_local",
        -                        "currency",
        -                        "billing",
        -                        "unlock_summary"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "current_tier": {
        -                    "const": "free",
        -                    "default": "free",
        -                    "type": "string"
        -                  },
        -                  "pass_credit": {
        -                    "anyOf": [
        -                      {
        -                        "additionalProperties": false,
        -                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        -                        "properties": {
        -                          "amount_local": {
        -                            "type": "number"
        -                          },
        -                          "applies_to": {
        -                            "const": "solo_first_month",
        -                            "default": "solo_first_month",
        -                            "type": "string"
        -                          },
        -                          "currency": {
        -                            "type": "string"
        -                          },
        -                          "redeemable_until": {
        -                            "type": "string"
        -                          }
        -                        },
        -                        "required": [
        -                          "amount_local",
        -                          "currency",
        -                          "redeemable_until"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "pricing_url": {
        -                    "default": "https://civilquants.com/pricing",
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "available_tiers"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tos_url": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "upgrade_hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "warranty_disclaimer": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          }
        -        },
        -        "required": [
        -          "request_id",
        -          "issued_at",
        -          "tier"
        -        ],
        -        "type": "object"
        -      },
        -      "data": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Schema § 1.1 — the typed payload returned inside `MCPResponse[ComputeResult]`.\n\nFree-tier responses MUST omit `drawings` and `audit_trail` (the bridge\nenforces this); paid-tier responses populate both. `text_summary` is\nbounded to 2000 chars — keeps the LLM-facing summary token-cheap and\nforces longer narrative into BoQ row descriptions where it belongs.\n`warnings` is the non-fatal geometry advisory list (both tiers).",
        -            "properties": {
        -              "assembly_slug": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "audit_trail": {
        -                "anyOf": [
        -                  {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.7 — paid-tier audit-trail entry.\n\nOne entry per BoQ row; `boq_row_index` ties to the row position in\n`ComputeResult.boq_rows`. `derivation` is the human-readable formula\nwalk-through; `formula` is the optional formal expression.",
        -                      "properties": {
        -                        "boq_row_index": {
        -                          "minimum": 0,
        -                          "type": "integer"
        -                        },
        -                        "derivation": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "formula": {
        -                          "anyOf": [
        -                            {
        -                              "type": "string"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ],
        -                          "default": null
        -                        },
        -                        "id": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "parameters_referenced": {
        -                          "items": {
        -                            "type": "string"
        -                          },
        -                          "type": "array"
        -                        }
        -                      },
        -                      "required": [
        -                        "id",
        -                        "boq_row_index",
        -                        "derivation"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "boq_rows": {
        -                "items": {
        -                  "additionalProperties": false,
        -                  "description": "Schema § 1.3 — a single bill row in the requested standard's format.\n\n`description` is the non-verbatim functional description per spec § 13.9 /\n§ 15 invariant — NEVER reproduces a standard's verbatim clause text.\n`rate` / `amount` ship null because rates are commodity data the customer\nowns; the engine's job is the measurement, not the pricing.",
        -                  "properties": {
        -                    "amount": {
        -                      "anyOf": [
        -                        {
        -                          "type": "number"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "attribution": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "audit_id": {
        -                      "anyOf": [
        -                        {
        -                          "type": "string"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "description": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "quantity": {
        -                      "minimum": 0,
        -                      "type": "number"
        -                    },
        -                    "rate": {
        -                      "anyOf": [
        -                        {
        -                          "type": "number"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "unit": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "work_section": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    }
        -                  },
        -                  "required": [
        -                    "work_section",
        -                    "description",
        -                    "quantity",
        -                    "unit",
        -                    "attribution"
        -                  ],
        -                  "type": "object"
        -                },
        -                "type": "array"
        -              },
        -              "drawings": {
        -                "anyOf": [
        -                  {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.6 — paid-tier drawing artefact pointer.\n\n`url` is an R2-signed URL; expiry is carried in `_meta.deliverables.expires_at`\non the envelope (not duplicated here). `layers` is DXF-only; PDF/SVG\ncallers omit it.",
        -                      "properties": {
        -                        "drawing_type": {
        -                          "enum": [
        -                            "section",
        -                            "plan",
        -                            "elevation",
        -                            "isometric",
        -                            "detail"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "format": {
        -                          "enum": [
        -                            "DXF",
        -                            "PDF",
        -                            "SVG"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "layers": {
        -                          "anyOf": [
        -                            {
        -                              "items": {
        -                                "type": "string"
        -                              },
        -                              "type": "array"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ],
        -                          "default": null
        -                        },
        -                        "scale": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "sheet_size": {
        -                          "enum": [
        -                            "A1",
        -                            "A2",
        -                            "A3",
        -                            "A4"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "url": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "drawing_type",
        -                        "format",
        -                        "url",
        -                        "sheet_size",
        -                        "scale"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "parameters_used": {
        -                "additionalProperties": false,
        -                "description": "Schema § 1.2 — the parameter snapshot the engine actually used.\n\nSplits user-supplied values from engine defaults so customers can see\nwhich numbers came from them and which the engine filled in. Every\ndefaulted parameter SHOULD have a corresponding entry in `assumptions`\n— the bridge layer enforces this when wrapping engine output.",
        -                "properties": {
        -                  "assumptions": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "engine_defaults": {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  "resolved_from_description": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "additionalProperties": false,
        -                          "description": "Schema § 1.2 — a parameter resolved by the forgiving-input layer.\n\nPopulated by the Track B-Forgiving Haiku-4.5 resolution pass; until that\nlayer lands, instances are constructed only by tests. `source` distinguishes\nthe resolution path so customers can audit which fields were inferred.",
        -                          "properties": {
        -                            "confidence": {
        -                              "anyOf": [
        -                                {
        -                                  "enum": [
        -                                    "high",
        -                                    "medium",
        -                                    "low"
        -                                  ],
        -                                  "type": "string"
        -                                },
        -                                {
        -                                  "type": "null"
        -                                }
        -                              ],
        -                              "default": null
        -                            },
        -                            "field_name": {
        -                              "minLength": 1,
        -                              "type": "string"
        -                            },
        -                            "resolved_value": {},
        -                            "source": {
        -                              "enum": [
        -                                "description_field",
        -                                "haiku_resolution",
        -                                "engine_default"
        -                              ],
        -                              "type": "string"
        -                            }
        -                          },
        -                          "required": [
        -                            "field_name",
        -                            "resolved_value",
        -                            "source"
        -                          ],
        -                          "type": "object"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "user_supplied": {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  }
        -                },
        -                "type": "object"
        -              },
        -              "standard": {
        -                "enum": [
        -                  "CESMM4",
        -                  "NRM2",
        -                  "SMM7",
        -                  "MMHW"
        -                ],
        -                "type": "string"
        -              },
        -              "text_summary": {
        -                "maxLength": 2000,
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "totals_summary": {
        -                "additionalProperties": false,
        -                "description": "Schema § 1.4 — totals_summary as a typed wrapper around the free-form dict.\n\nWire shape is a flat object (`{\"concrete_m3\": {...}, \"rebar_t\": {...}}`).\nWe model it as `RootModel`-equivalent via `model_config(extra=\"allow\")`\n+ a single `__root__`-style `entries` dict. Pydantic v2 recommends\n`RootModel` for free-form roots; using a wrapper class keeps the import\nsurface uniform with the rest of this module.",
        -                "properties": {
        -                  "entries": {
        -                    "additionalProperties": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.4 — single material/work-class total entry.",
        -                      "properties": {
        -                        "quantity": {
        -                          "minimum": 0,
        -                          "type": "number"
        -                        },
        -                        "unit": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "quantity",
        -                        "unit"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "object"
        -                  }
        -                },
        -                "type": "object"
        -              },
        -              "warnings": {
        -                "items": {
        -                  "additionalProperties": false,
        -                  "description": "Schema § 1.8 — a non-fatal geometry advisory (56th-fire T2).\n\nThe wire projection of the engine's `core.GeometryWarning`. Advisory only:\na warning NEVER changes a measured quantity — it flags geometry that is\nvalid but likely a mistake (e.g. a stale dependent-height default). Present\non BOTH tiers — a correctness/safety signal, not a paid feature.",
        -                  "properties": {
        -                    "affected_params": {
        -                      "items": {
        -                        "type": "string"
        -                      },
        -                      "type": "array"
        -                    },
        -                    "code": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "detail": {
        -                      "additionalProperties": {
        -                        "type": "number"
        -                      },
        -                      "type": "object"
        -                    },
        -                    "message": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "severity": {
        -                      "enum": [
        -                        "info",
        -                        "advisory",
        -                        "caution"
        -                      ],
        -                      "type": "string"
        -                    }
        -                  },
        -                  "required": [
        -                    "code",
        -                    "severity",
        -                    "message"
        -                  ],
        -                  "type": "object"
        -                },
        -                "type": "array"
        -              }
        -            },
        -            "required": [
        -              "assembly_slug",
        -              "standard",
        -              "parameters_used",
        -              "boq_rows",
        -              "totals_summary",
        -              "text_summary"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      },
        -      "error": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        -            "properties": {
        -              "code": {
        -                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        -                "enum": [
        -                  "RATE_LIMIT_EXCEEDED",
        -                  "TIER_INSUFFICIENT",
        -                  "INVALID_INPUT",
        -                  "SCHEMA_VERSION_MISMATCH",
        -                  "SCHEMA_INVARIANT_VIOLATION",
        -                  "UPSTREAM_TIMEOUT",
        -                  "BACKEND_FAILURE",
        -                  "IP_BLOCKED",
        -                  "RESOURCE_NOT_FOUND",
        -                  "RENDER_FAILURE",
        -                  "OCR_LOW_CONFIDENCE",
        -                  "MANUAL_REVIEW_REQUIRED",
        -                  "ACCEPTANCE_REQUIRED",
        -                  "INVALID_TOKEN"
        -                ],
        -                "type": "string"
        -              },
        -              "details": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "message": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "recoverable": {
        -                "type": "boolean"
        -              },
        -              "retry_after_seconds": {
        -                "anyOf": [
        -                  {
        -                    "minimum": 0,
        -                    "type": "integer"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              }
        -            },
        -            "required": [
        -              "code",
        -              "message",
        -              "recoverable"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      }
        -    },
        -    "required": [
        -      "_meta"
        -    ],
        -    "type": "object"
        -  },
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "_meta": {
        -        "additionalProperties": false,
        -        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        -        "properties": {
        -          "deliverables": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        -                "properties": {
        -                  "docx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "dxf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "expires_at": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  },
        -                  "pdf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "xlsx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "expires_at"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "document_id": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "issued_at": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "rate_limit_remaining": {
        -            "anyOf": [
        -              {
        -                "minimum": 0,
        -                "type": "integer"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "request_id": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "schema_version": {
        -            "const": "1.0.0",
        -            "default": "1.0.0",
        -            "type": "string"
        -          },
        -          "scope_boundary": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        -                "properties": {
        -                  "not_in_scope": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "produced": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "recommended_companions": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "type": "string"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "produced",
        -                  "not_in_scope"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tier": {
        -            "enum": [
        -              "free",
        -              "paid"
        -            ],
        -            "type": "string"
        -          },
        -          "tier_upgrade": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        -                "properties": {
        -                  "available_tiers": {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        -                      "properties": {
        -                        "billing": {
        -                          "enum": [
        -                            "one_off",
        -                            "monthly",
        -                            "annual"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "currency": {
        -                          "enum": [
        -                            "GBP",
        -                            "SGD",
        -                            "EUR",
        -                            "USD",
        -                            "CAD",
        -                            "AUD",
        -                            "NZD",
        -                            "MYR"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "display_name": {
        -                          "type": "string"
        -                        },
        -                        "price_local": {
        -                          "type": "number"
        -                        },
        -                        "tier_slug": {
        -                          "enum": [
        -                            "7_day_pass",
        -                            "solo",
        -                            "studio",
        -                            "practice"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "unlock_summary": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "tier_slug",
        -                        "display_name",
        -                        "price_local",
        -                        "currency",
        -                        "billing",
        -                        "unlock_summary"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "current_tier": {
        -                    "const": "free",
        -                    "default": "free",
        -                    "type": "string"
        -                  },
        -                  "pass_credit": {
        -                    "anyOf": [
        -                      {
        -                        "additionalProperties": false,
        -                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        -                        "properties": {
        -                          "amount_local": {
        -                            "type": "number"
        -                          },
        -                          "applies_to": {
        -                            "const": "solo_first_month",
        -                            "default": "solo_first_month",
        -                            "type": "string"
        -                          },
        -                          "currency": {
        -                            "type": "string"
        -                          },
        -                          "redeemable_until": {
        -                            "type": "string"
        -                          }
        -                        },
        -                        "required": [
        -                          "amount_local",
        -                          "currency",
        -                          "redeemable_until"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "pricing_url": {
        -                    "default": "https://civilquants.com/pricing",
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "available_tiers"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tos_url": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "upgrade_hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "warranty_disclaimer": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          }
        -        },
        -        "required": [
        -          "request_id",
        -          "issued_at",
        -          "tier"
        -        ],
        -        "type": "object"
        -      },
        -      "data": {
        -        "default": null,
        -        "title": "Data"
        -      },
        -      "error": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        -            "properties": {
        -              "code": {
        -                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        -                "enum": [
        -                  "RATE_LIMIT_EXCEEDED",
        -                  "TIER_INSUFFICIENT",
        -                  "INVALID_INPUT",
        -                  "SCHEMA_VERSION_MISMATCH",
        -                  "SCHEMA_INVARIANT_VIOLATION",
        -                  "UPSTREAM_TIMEOUT",
        -                  "BACKEND_FAILURE",
        -                  "IP_BLOCKED",
        -                  "RESOURCE_NOT_FOUND",
        -                  "RENDER_FAILURE",
        -                  "OCR_LOW_CONFIDENCE",
        -                  "MANUAL_REVIEW_REQUIRED",
        -                  "ACCEPTANCE_REQUIRED",
        -                  "INVALID_TOKEN"
        -                ],
        -                "type": "string"
        -              },
        -              "details": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "message": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "recoverable": {
        -                "type": "boolean"
        -              },
        -              "retry_after_seconds": {
        -                "anyOf": [
        -                  {
        -                    "minimum": 0,
        -                    "type": "integer"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              }
        -            },
        -            "required": [
        -              "code",
        -              "message",
        -              "recoverable"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      }
        -    },
        -    "required": [
        -      "_meta"
        -    ],
        -    "type": "object"
        -  }
        -]New value: +[
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "_meta": {
        +        "additionalProperties": false,
        +        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        +        "properties": {
        +          "deliverables": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        +                "properties": {
        +                  "docx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "dxf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "expires_at": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  },
        +                  "pdf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "xlsx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "expires_at"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "document_id": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "issued_at": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "rate_limit_remaining": {
        +            "anyOf": [
        +              {
        +                "minimum": 0,
        +                "type": "integer"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "request_id": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "schema_version": {
        +            "const": "1.0.0",
        +            "default": "1.0.0",
        +            "type": "string"
        +          },
        +          "scope_boundary": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        +                "properties": {
        +                  "not_in_scope": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "produced": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "recommended_companions": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "type": "string"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "produced",
        +                  "not_in_scope"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tier": {
        +            "enum": [
        +              "free",
        +              "paid"
        +            ],
        +            "type": "string"
        +          },
        +          "tier_upgrade": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        +                "properties": {
        +                  "available_tiers": {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        +                      "properties": {
        +                        "billing": {
        +                          "enum": [
        +                            "one_off",
        +                            "monthly",
        +                            "annual"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "currency": {
        +                          "enum": [
        +                            "GBP",
        +                            "SGD",
        +                            "EUR",
        +                            "USD",
        +                            "CAD",
        +                            "AUD",
        +                            "NZD",
        +                            "MYR"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "display_name": {
        +                          "type": "string"
        +                        },
        +                        "price_local": {
        +                          "type": "number"
        +                        },
        +                        "tier_slug": {
        +                          "enum": [
        +                            "7_day_pass",
        +                            "solo",
        +                            "studio",
        +                            "practice"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "unlock_summary": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "tier_slug",
        +                        "display_name",
        +                        "price_local",
        +                        "currency",
        +                        "billing",
        +                        "unlock_summary"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "current_tier": {
        +                    "const": "free",
        +                    "default": "free",
        +                    "type": "string"
        +                  },
        +                  "pass_credit": {
        +                    "anyOf": [
        +                      {
        +                        "additionalProperties": false,
        +                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        +                        "properties": {
        +                          "amount_local": {
        +                            "type": "number"
        +                          },
        +                          "applies_to": {
        +                            "const": "solo_first_month",
        +                            "default": "solo_first_month",
        +                            "type": "string"
        +                          },
        +                          "currency": {
        +                            "type": "string"
        +                          },
        +                          "redeemable_until": {
        +                            "type": "string"
        +                          }
        +                        },
        +                        "required": [
        +                          "amount_local",
        +                          "currency",
        +                          "redeemable_until"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "pricing_url": {
        +                    "default": "https://civilquants.com/pricing",
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "available_tiers"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tos_url": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "upgrade_hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "warranty_disclaimer": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          }
        +        },
        +        "required": [
        +          "request_id",
        +          "issued_at",
        +          "tier"
        +        ],
        +        "type": "object"
        +      },
        +      "data": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Schema § 1.1 — the typed payload returned inside `MCPResponse[ComputeResult]`.\n\nFree-tier responses omit `drawings` (the downloadable CAD artefact\npointers — the paid differentiator); the bridge enforces this. The\n`audit_trail` and the inline `drawing` preview are present on BOTH tiers\n(V1 ALIGN / 60th-fire D + C). `text_summary` is bounded to 2000 chars —\nkeeps the LLM-facing summary token-cheap and forces longer narrative into\nBoQ row descriptions where it belongs. `warnings` is the non-fatal\ngeometry advisory list (both tiers).",
        +            "properties": {
        +              "assembly_slug": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "audit_trail": {
        +                "anyOf": [
        +                  {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.7 — paid-tier audit-trail entry.\n\nOne entry per BoQ row; `boq_row_index` ties to the row position in\n`ComputeResult.boq_rows`. `derivation` is the human-readable formula\nwalk-through; `formula` is the optional formal expression.",
        +                      "properties": {
        +                        "boq_row_index": {
        +                          "minimum": 0,
        +                          "type": "integer"
        +                        },
        +                        "derivation": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "formula": {
        +                          "anyOf": [
        +                            {
        +                              "type": "string"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ],
        +                          "default": null
        +                        },
        +                        "id": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "parameters_referenced": {
        +                          "items": {
        +                            "type": "string"
        +                          },
        +                          "type": "array"
        +                        }
        +                      },
        +                      "required": [
        +                        "id",
        +                        "boq_row_index",
        +                        "derivation"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "boq_rows": {
        +                "items": {
        +                  "additionalProperties": false,
        +                  "description": "Schema § 1.3 — a single bill row in the requested standard's format.\n\n`description` is the non-verbatim functional description per spec § 13.9 /\n§ 15 invariant — NEVER reproduces a standard's verbatim clause text.\n`rate` / `amount` ship null because rates are commodity data the customer\nowns; the engine's job is the measurement, not the pricing.",
        +                  "properties": {
        +                    "amount": {
        +                      "anyOf": [
        +                        {
        +                          "type": "number"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "attribution": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "audit_id": {
        +                      "anyOf": [
        +                        {
        +                          "type": "string"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "description": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "quantity": {
        +                      "minimum": 0,
        +                      "type": "number"
        +                    },
        +                    "rate": {
        +                      "anyOf": [
        +                        {
        +                          "type": "number"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "unit": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "work_section": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    }
        +                  },
        +                  "required": [
        +                    "work_section",
        +                    "description",
        +                    "quantity",
        +                    "unit",
        +                    "attribution"
        +                  ],
        +                  "type": "object"
        +                },
        +                "type": "array"
        +              },
        +              "drawing": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": false,
        +                    "description": "Schema § 1.6a — inline server-rendered SVG preview of the geometry.\n\nThe MCP mirror of the web ``/compute`` response's ``drawing`` field\n(``api.schemas.compute.DrawingRef``): the same on-screen dimensioned\ndrawing both tiers see in the workspace, surfaced on the MCP compute\nresponse so a chat client can render it inline (60th-fire item C). This\nis the on-screen preview — present on BOTH tiers per the free/paid\nboundary; the downloadable CAD artefacts (DXF / dimensioned PDF) remain\nthe paid differentiator via the export tools.\n\nDefined here rather than importing ``DrawingRef`` because the web\n``schemas`` package imports back into this module (``schemas.render``),\nso reusing it would create an import cycle — the MCP wire contract keeps\nits own copy, the same pattern as ``BoQRow`` / ``DrawingReference``.",
        +                    "properties": {
        +                      "entity_count": {
        +                        "minimum": 0,
        +                        "type": "integer"
        +                      },
        +                      "svg_b64": {
        +                        "minLength": 1,
        +                        "type": "string"
        +                      },
        +                      "unit_of_drawing": {
        +                        "const": "m",
        +                        "default": "m",
        +                        "type": "string"
        +                      },
        +                      "viewbox_height": {
        +                        "exclusiveMinimum": 0,
        +                        "type": "number"
        +                      },
        +                      "viewbox_width": {
        +                        "exclusiveMinimum": 0,
        +                        "type": "number"
        +                      },
        +                      "viewbox_x": {
        +                        "type": "number"
        +                      },
        +                      "viewbox_y": {
        +                        "type": "number"
        +                      }
        +                    },
        +                    "required": [
        +                      "svg_b64",
        +                      "viewbox_x",
        +                      "viewbox_y",
        +                      "viewbox_width",
        +                      "viewbox_height",
        +                      "entity_count"
        +                    ],
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "drawings": {
        +                "anyOf": [
        +                  {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.6 — paid-tier drawing artefact pointer.\n\n`url` is an R2-signed URL; expiry is carried in `_meta.deliverables.expires_at`\non the envelope (not duplicated here). `layers` is DXF-only; PDF/SVG\ncallers omit it.",
        +                      "properties": {
        +                        "drawing_type": {
        +                          "enum": [
        +                            "section",
        +                            "plan",
        +                            "elevation",
        +                            "isometric",
        +                            "detail"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "format": {
        +                          "enum": [
        +                            "DXF",
        +                            "PDF",
        +                            "SVG"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "layers": {
        +                          "anyOf": [
        +                            {
        +                              "items": {
        +                                "type": "string"
        +                              },
        +                              "type": "array"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ],
        +                          "default": null
        +                        },
        +                        "scale": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "sheet_size": {
        +                          "enum": [
        +                            "A1",
        +                            "A2",
        +                            "A3",
        +                            "A4"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "url": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "drawing_type",
        +                        "format",
        +                        "url",
        +                        "sheet_size",
        +                        "scale"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "parameters_used": {
        +                "additionalProperties": false,
        +                "description": "Schema § 1.2 — the parameter snapshot the engine actually used.\n\nSplits user-supplied values from engine defaults so customers can see\nwhich numbers came from them and which the engine filled in. Every\ndefaulted parameter SHOULD have a corresponding entry in `assumptions`\n— the bridge layer enforces this when wrapping engine output.",
        +                "properties": {
        +                  "assumptions": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "engine_defaults": {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  "resolved_from_description": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "additionalProperties": false,
        +                          "description": "Schema § 1.2 — a parameter resolved by the forgiving-input layer.\n\nPopulated by the Track B-Forgiving Haiku-4.5 resolution pass; until that\nlayer lands, instances are constructed only by tests. `source` distinguishes\nthe resolution path so customers can audit which fields were inferred.",
        +                          "properties": {
        +                            "confidence": {
        +                              "anyOf": [
        +                                {
        +                                  "enum": [
        +                                    "high",
        +                                    "medium",
        +                                    "low"
        +                                  ],
        +                                  "type": "string"
        +                                },
        +                                {
        +                                  "type": "null"
        +                                }
        +                              ],
        +                              "default": null
        +                            },
        +                            "field_name": {
        +                              "minLength": 1,
        +                              "type": "string"
        +                            },
        +                            "resolved_value": {},
        +                            "source": {
        +                              "enum": [
        +                                "description_field",
        +                                "haiku_resolution",
        +                                "engine_default"
        +                              ],
        +                              "type": "string"
        +                            }
        +                          },
        +                          "required": [
        +                            "field_name",
        +                            "resolved_value",
        +                            "source"
        +                          ],
        +                          "type": "object"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "user_supplied": {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  }
        +                },
        +                "type": "object"
        +              },
        +              "standard": {
        +                "enum": [
        +                  "CESMM4",
        +                  "NRM2",
        +                  "SMM7",
        +                  "MMHW"
        +                ],
        +                "type": "string"
        +              },
        +              "text_summary": {
        +                "maxLength": 2000,
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "totals_summary": {
        +                "additionalProperties": false,
        +                "description": "Schema § 1.4 — totals_summary as a typed wrapper around the free-form dict.\n\nWire shape is a flat object (`{\"concrete_m3\": {...}, \"rebar_t\": {...}}`).\nWe model it as `RootModel`-equivalent via `model_config(extra=\"allow\")`\n+ a single `__root__`-style `entries` dict. Pydantic v2 recommends\n`RootModel` for free-form roots; using a wrapper class keeps the import\nsurface uniform with the rest of this module.",
        +                "properties": {
        +                  "entries": {
        +                    "additionalProperties": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.4 — single material/work-class total entry.",
        +                      "properties": {
        +                        "quantity": {
        +                          "minimum": 0,
        +                          "type": "number"
        +                        },
        +                        "unit": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "quantity",
        +                        "unit"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "object"
        +                  }
        +                },
        +                "type": "object"
        +              },
        +              "warnings": {
        +                "items": {
        +                  "additionalProperties": false,
        +                  "description": "Schema § 1.8 — a non-fatal geometry advisory (56th-fire T2).\n\nThe wire projection of the engine's `core.GeometryWarning`. Advisory only:\na warning NEVER changes a measured quantity — it flags geometry that is\nvalid but likely a mistake (e.g. a stale dependent-height default). Present\non BOTH tiers — a correctness/safety signal, not a paid feature.",
        +                  "properties": {
        +                    "affected_params": {
        +                      "items": {
        +                        "type": "string"
        +                      },
        +                      "type": "array"
        +                    },
        +                    "code": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "detail": {
        +                      "additionalProperties": {
        +                        "type": "number"
        +                      },
        +                      "type": "object"
        +                    },
        +                    "message": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "severity": {
        +                      "enum": [
        +                        "info",
        +                        "advisory",
        +                        "caution"
        +                      ],
        +                      "type": "string"
        +                    }
        +                  },
        +                  "required": [
        +                    "code",
        +                    "severity",
        +                    "message"
        +                  ],
        +                  "type": "object"
        +                },
        +                "type": "array"
        +              }
        +            },
        +            "required": [
        +              "assembly_slug",
        +              "standard",
        +              "parameters_used",
        +              "boq_rows",
        +              "totals_summary",
        +              "text_summary"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      },
        +      "error": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        +            "properties": {
        +              "code": {
        +                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        +                "enum": [
        +                  "RATE_LIMIT_EXCEEDED",
        +                  "TIER_INSUFFICIENT",
        +                  "INVALID_INPUT",
        +                  "SCHEMA_VERSION_MISMATCH",
        +                  "SCHEMA_INVARIANT_VIOLATION",
        +                  "UPSTREAM_TIMEOUT",
        +                  "BACKEND_FAILURE",
        +                  "IP_BLOCKED",
        +                  "RESOURCE_NOT_FOUND",
        +                  "RENDER_FAILURE",
        +                  "OCR_LOW_CONFIDENCE",
        +                  "MANUAL_REVIEW_REQUIRED",
        +                  "ACCEPTANCE_REQUIRED",
        +                  "INVALID_TOKEN"
        +                ],
        +                "type": "string"
        +              },
        +              "details": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "message": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "recoverable": {
        +                "type": "boolean"
        +              },
        +              "retry_after_seconds": {
        +                "anyOf": [
        +                  {
        +                    "minimum": 0,
        +                    "type": "integer"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              }
        +            },
        +            "required": [
        +              "code",
        +              "message",
        +              "recoverable"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      }
        +    },
        +    "required": [
        +      "_meta"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "_meta": {
        +        "additionalProperties": false,
        +        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        +        "properties": {
        +          "deliverables": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        +                "properties": {
        +                  "docx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "dxf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "expires_at": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  },
        +                  "pdf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "xlsx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "expires_at"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "document_id": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "issued_at": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "rate_limit_remaining": {
        +            "anyOf": [
        +              {
        +                "minimum": 0,
        +                "type": "integer"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "request_id": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "schema_version": {
        +            "const": "1.0.0",
        +            "default": "1.0.0",
        +            "type": "string"
        +          },
        +          "scope_boundary": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        +                "properties": {
        +                  "not_in_scope": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "produced": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "recommended_companions": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "type": "string"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "produced",
        +                  "not_in_scope"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tier": {
        +            "enum": [
        +              "free",
        +              "paid"
        +            ],
        +            "type": "string"
        +          },
        +          "tier_upgrade": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        +                "properties": {
        +                  "available_tiers": {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        +                      "properties": {
        +                        "billing": {
        +                          "enum": [
        +                            "one_off",
        +                            "monthly",
        +                            "annual"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "currency": {
        +                          "enum": [
        +                            "GBP",
        +                            "SGD",
        +                            "EUR",
        +                            "USD",
        +                            "CAD",
        +                            "AUD",
        +                            "NZD",
        +                            "MYR"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "display_name": {
        +                          "type": "string"
        +                        },
        +                        "price_local": {
        +                          "type": "number"
        +                        },
        +                        "tier_slug": {
        +                          "enum": [
        +                            "7_day_pass",
        +                            "solo",
        +                            "studio",
        +                            "practice"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "unlock_summary": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "tier_slug",
        +                        "display_name",
        +                        "price_local",
        +                        "currency",
        +                        "billing",
        +                        "unlock_summary"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "current_tier": {
        +                    "const": "free",
        +                    "default": "free",
        +                    "type": "string"
        +                  },
        +                  "pass_credit": {
        +                    "anyOf": [
        +                      {
        +                        "additionalProperties": false,
        +                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        +                        "properties": {
        +                          "amount_local": {
        +                            "type": "number"
        +                          },
        +                          "applies_to": {
        +                            "const": "solo_first_month",
        +                            "default": "solo_first_month",
        +                            "type": "string"
        +                          },
        +                          "currency": {
        +                            "type": "string"
        +                          },
        +                          "redeemable_until": {
        +                            "type": "string"
        +                          }
        +                        },
        +                        "required": [
        +                          "amount_local",
        +                          "currency",
        +                          "redeemable_until"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "pricing_url": {
        +                    "default": "https://civilquants.com/pricing",
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "available_tiers"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tos_url": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "upgrade_hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "warranty_disclaimer": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          }
        +        },
        +        "required": [
        +          "request_id",
        +          "issued_at",
        +          "tier"
        +        ],
        +        "type": "object"
        +      },
        +      "data": {
        +        "default": null,
        +        "title": "Data"
        +      },
        +      "error": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        +            "properties": {
        +              "code": {
        +                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        +                "enum": [
        +                  "RATE_LIMIT_EXCEEDED",
        +                  "TIER_INSUFFICIENT",
        +                  "INVALID_INPUT",
        +                  "SCHEMA_VERSION_MISMATCH",
        +                  "SCHEMA_INVARIANT_VIOLATION",
        +                  "UPSTREAM_TIMEOUT",
        +                  "BACKEND_FAILURE",
        +                  "IP_BLOCKED",
        +                  "RESOURCE_NOT_FOUND",
        +                  "RENDER_FAILURE",
        +                  "OCR_LOW_CONFIDENCE",
        +                  "MANUAL_REVIEW_REQUIRED",
        +                  "ACCEPTANCE_REQUIRED",
        +                  "INVALID_TOKEN"
        +                ],
        +                "type": "string"
        +              },
        +              "details": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "message": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "recoverable": {
        +                "type": "boolean"
        +              },
        +              "retry_after_seconds": {
        +                "anyOf": [
        +                  {
        +                    "minimum": 0,
        +                    "type": "integer"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              }
        +            },
        +            "required": [
        +              "code",
        +              "message",
        +              "recoverable"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      }
        +    },
        +    "required": [
        +      "_meta"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedcompute_manhole3 fields changed
      • addedInput schema / properties / deliverables
        Added value: +{
        +  "anyOf": [
        +    {
        +      "items": {
        +        "const": "xlsx",
        +        "type": "string"
        +      },
        +      "type": "array"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null
        +}
      • addedInput schema / properties / output_mode
        Added value: +{
        +  "default": "full_json",
        +  "enum": [
        +    "summary",
        +    "boq",
        +    "boq_with_backup",
        +    "full_json"
        +  ],
        +  "type": "string"
        +}
      • changedOutput schema / properties / result / anyOf
        Previous value: -[
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "_meta": {
        -        "additionalProperties": false,
        -        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        -        "properties": {
        -          "deliverables": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        -                "properties": {
        -                  "docx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "dxf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "expires_at": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  },
        -                  "pdf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "xlsx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "expires_at"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "document_id": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "issued_at": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "rate_limit_remaining": {
        -            "anyOf": [
        -              {
        -                "minimum": 0,
        -                "type": "integer"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "request_id": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "schema_version": {
        -            "const": "1.0.0",
        -            "default": "1.0.0",
        -            "type": "string"
        -          },
        -          "scope_boundary": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        -                "properties": {
        -                  "not_in_scope": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "produced": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "recommended_companions": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "type": "string"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "produced",
        -                  "not_in_scope"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tier": {
        -            "enum": [
        -              "free",
        -              "paid"
        -            ],
        -            "type": "string"
        -          },
        -          "tier_upgrade": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        -                "properties": {
        -                  "available_tiers": {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        -                      "properties": {
        -                        "billing": {
        -                          "enum": [
        -                            "one_off",
        -                            "monthly",
        -                            "annual"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "currency": {
        -                          "enum": [
        -                            "GBP",
        -                            "SGD",
        -                            "EUR",
        -                            "USD",
        -                            "CAD",
        -                            "AUD",
        -                            "NZD",
        -                            "MYR"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "display_name": {
        -                          "type": "string"
        -                        },
        -                        "price_local": {
        -                          "type": "number"
        -                        },
        -                        "tier_slug": {
        -                          "enum": [
        -                            "7_day_pass",
        -                            "solo",
        -                            "studio",
        -                            "practice"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "unlock_summary": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "tier_slug",
        -                        "display_name",
        -                        "price_local",
        -                        "currency",
        -                        "billing",
        -                        "unlock_summary"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "current_tier": {
        -                    "const": "free",
        -                    "default": "free",
        -                    "type": "string"
        -                  },
        -                  "pass_credit": {
        -                    "anyOf": [
        -                      {
        -                        "additionalProperties": false,
        -                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        -                        "properties": {
        -                          "amount_local": {
        -                            "type": "number"
        -                          },
        -                          "applies_to": {
        -                            "const": "solo_first_month",
        -                            "default": "solo_first_month",
        -                            "type": "string"
        -                          },
        -                          "currency": {
        -                            "type": "string"
        -                          },
        -                          "redeemable_until": {
        -                            "type": "string"
        -                          }
        -                        },
        -                        "required": [
        -                          "amount_local",
        -                          "currency",
        -                          "redeemable_until"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "pricing_url": {
        -                    "default": "https://civilquants.com/pricing",
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "available_tiers"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tos_url": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "upgrade_hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "warranty_disclaimer": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          }
        -        },
        -        "required": [
        -          "request_id",
        -          "issued_at",
        -          "tier"
        -        ],
        -        "type": "object"
        -      },
        -      "data": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Schema § 1.1 — the typed payload returned inside `MCPResponse[ComputeResult]`.\n\nFree-tier responses MUST omit `drawings` and `audit_trail` (the bridge\nenforces this); paid-tier responses populate both. `text_summary` is\nbounded to 2000 chars — keeps the LLM-facing summary token-cheap and\nforces longer narrative into BoQ row descriptions where it belongs.\n`warnings` is the non-fatal geometry advisory list (both tiers).",
        -            "properties": {
        -              "assembly_slug": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "audit_trail": {
        -                "anyOf": [
        -                  {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.7 — paid-tier audit-trail entry.\n\nOne entry per BoQ row; `boq_row_index` ties to the row position in\n`ComputeResult.boq_rows`. `derivation` is the human-readable formula\nwalk-through; `formula` is the optional formal expression.",
        -                      "properties": {
        -                        "boq_row_index": {
        -                          "minimum": 0,
        -                          "type": "integer"
        -                        },
        -                        "derivation": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "formula": {
        -                          "anyOf": [
        -                            {
        -                              "type": "string"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ],
        -                          "default": null
        -                        },
        -                        "id": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "parameters_referenced": {
        -                          "items": {
        -                            "type": "string"
        -                          },
        -                          "type": "array"
        -                        }
        -                      },
        -                      "required": [
        -                        "id",
        -                        "boq_row_index",
        -                        "derivation"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "boq_rows": {
        -                "items": {
        -                  "additionalProperties": false,
        -                  "description": "Schema § 1.3 — a single bill row in the requested standard's format.\n\n`description` is the non-verbatim functional description per spec § 13.9 /\n§ 15 invariant — NEVER reproduces a standard's verbatim clause text.\n`rate` / `amount` ship null because rates are commodity data the customer\nowns; the engine's job is the measurement, not the pricing.",
        -                  "properties": {
        -                    "amount": {
        -                      "anyOf": [
        -                        {
        -                          "type": "number"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "attribution": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "audit_id": {
        -                      "anyOf": [
        -                        {
        -                          "type": "string"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "description": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "quantity": {
        -                      "minimum": 0,
        -                      "type": "number"
        -                    },
        -                    "rate": {
        -                      "anyOf": [
        -                        {
        -                          "type": "number"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "unit": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "work_section": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    }
        -                  },
        -                  "required": [
        -                    "work_section",
        -                    "description",
        -                    "quantity",
        -                    "unit",
        -                    "attribution"
        -                  ],
        -                  "type": "object"
        -                },
        -                "type": "array"
        -              },
        -              "drawings": {
        -                "anyOf": [
        -                  {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.6 — paid-tier drawing artefact pointer.\n\n`url` is an R2-signed URL; expiry is carried in `_meta.deliverables.expires_at`\non the envelope (not duplicated here). `layers` is DXF-only; PDF/SVG\ncallers omit it.",
        -                      "properties": {
        -                        "drawing_type": {
        -                          "enum": [
        -                            "section",
        -                            "plan",
        -                            "elevation",
        -                            "isometric",
        -                            "detail"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "format": {
        -                          "enum": [
        -                            "DXF",
        -                            "PDF",
        -                            "SVG"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "layers": {
        -                          "anyOf": [
        -                            {
        -                              "items": {
        -                                "type": "string"
        -                              },
        -                              "type": "array"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ],
        -                          "default": null
        -                        },
        -                        "scale": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "sheet_size": {
        -                          "enum": [
        -                            "A1",
        -                            "A2",
        -                            "A3",
        -                            "A4"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "url": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "drawing_type",
        -                        "format",
        -                        "url",
        -                        "sheet_size",
        -                        "scale"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "parameters_used": {
        -                "additionalProperties": false,
        -                "description": "Schema § 1.2 — the parameter snapshot the engine actually used.\n\nSplits user-supplied values from engine defaults so customers can see\nwhich numbers came from them and which the engine filled in. Every\ndefaulted parameter SHOULD have a corresponding entry in `assumptions`\n— the bridge layer enforces this when wrapping engine output.",
        -                "properties": {
        -                  "assumptions": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "engine_defaults": {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  "resolved_from_description": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "additionalProperties": false,
        -                          "description": "Schema § 1.2 — a parameter resolved by the forgiving-input layer.\n\nPopulated by the Track B-Forgiving Haiku-4.5 resolution pass; until that\nlayer lands, instances are constructed only by tests. `source` distinguishes\nthe resolution path so customers can audit which fields were inferred.",
        -                          "properties": {
        -                            "confidence": {
        -                              "anyOf": [
        -                                {
        -                                  "enum": [
        -                                    "high",
        -                                    "medium",
        -                                    "low"
        -                                  ],
        -                                  "type": "string"
        -                                },
        -                                {
        -                                  "type": "null"
        -                                }
        -                              ],
        -                              "default": null
        -                            },
        -                            "field_name": {
        -                              "minLength": 1,
        -                              "type": "string"
        -                            },
        -                            "resolved_value": {},
        -                            "source": {
        -                              "enum": [
        -                                "description_field",
        -                                "haiku_resolution",
        -                                "engine_default"
        -                              ],
        -                              "type": "string"
        -                            }
        -                          },
        -                          "required": [
        -                            "field_name",
        -                            "resolved_value",
        -                            "source"
        -                          ],
        -                          "type": "object"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "user_supplied": {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  }
        -                },
        -                "type": "object"
        -              },
        -              "standard": {
        -                "enum": [
        -                  "CESMM4",
        -                  "NRM2",
        -                  "SMM7",
        -                  "MMHW"
        -                ],
        -                "type": "string"
        -              },
        -              "text_summary": {
        -                "maxLength": 2000,
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "totals_summary": {
        -                "additionalProperties": false,
        -                "description": "Schema § 1.4 — totals_summary as a typed wrapper around the free-form dict.\n\nWire shape is a flat object (`{\"concrete_m3\": {...}, \"rebar_t\": {...}}`).\nWe model it as `RootModel`-equivalent via `model_config(extra=\"allow\")`\n+ a single `__root__`-style `entries` dict. Pydantic v2 recommends\n`RootModel` for free-form roots; using a wrapper class keeps the import\nsurface uniform with the rest of this module.",
        -                "properties": {
        -                  "entries": {
        -                    "additionalProperties": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.4 — single material/work-class total entry.",
        -                      "properties": {
        -                        "quantity": {
        -                          "minimum": 0,
        -                          "type": "number"
        -                        },
        -                        "unit": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "quantity",
        -                        "unit"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "object"
        -                  }
        -                },
        -                "type": "object"
        -              },
        -              "warnings": {
        -                "items": {
        -                  "additionalProperties": false,
        -                  "description": "Schema § 1.8 — a non-fatal geometry advisory (56th-fire T2).\n\nThe wire projection of the engine's `core.GeometryWarning`. Advisory only:\na warning NEVER changes a measured quantity — it flags geometry that is\nvalid but likely a mistake (e.g. a stale dependent-height default). Present\non BOTH tiers — a correctness/safety signal, not a paid feature.",
        -                  "properties": {
        -                    "affected_params": {
        -                      "items": {
        -                        "type": "string"
        -                      },
        -                      "type": "array"
        -                    },
        -                    "code": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "detail": {
        -                      "additionalProperties": {
        -                        "type": "number"
        -                      },
        -                      "type": "object"
        -                    },
        -                    "message": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "severity": {
        -                      "enum": [
        -                        "info",
        -                        "advisory",
        -                        "caution"
        -                      ],
        -                      "type": "string"
        -                    }
        -                  },
        -                  "required": [
        -                    "code",
        -                    "severity",
        -                    "message"
        -                  ],
        -                  "type": "object"
        -                },
        -                "type": "array"
        -              }
        -            },
        -            "required": [
        -              "assembly_slug",
        -              "standard",
        -              "parameters_used",
        -              "boq_rows",
        -              "totals_summary",
        -              "text_summary"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      },
        -      "error": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        -            "properties": {
        -              "code": {
        -                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        -                "enum": [
        -                  "RATE_LIMIT_EXCEEDED",
        -                  "TIER_INSUFFICIENT",
        -                  "INVALID_INPUT",
        -                  "SCHEMA_VERSION_MISMATCH",
        -                  "SCHEMA_INVARIANT_VIOLATION",
        -                  "UPSTREAM_TIMEOUT",
        -                  "BACKEND_FAILURE",
        -                  "IP_BLOCKED",
        -                  "RESOURCE_NOT_FOUND",
        -                  "RENDER_FAILURE",
        -                  "OCR_LOW_CONFIDENCE",
        -                  "MANUAL_REVIEW_REQUIRED",
        -                  "ACCEPTANCE_REQUIRED",
        -                  "INVALID_TOKEN"
        -                ],
        -                "type": "string"
        -              },
        -              "details": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "message": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "recoverable": {
        -                "type": "boolean"
        -              },
        -              "retry_after_seconds": {
        -                "anyOf": [
        -                  {
        -                    "minimum": 0,
        -                    "type": "integer"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              }
        -            },
        -            "required": [
        -              "code",
        -              "message",
        -              "recoverable"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      }
        -    },
        -    "required": [
        -      "_meta"
        -    ],
        -    "type": "object"
        -  },
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "_meta": {
        -        "additionalProperties": false,
        -        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        -        "properties": {
        -          "deliverables": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        -                "properties": {
        -                  "docx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "dxf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "expires_at": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  },
        -                  "pdf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "xlsx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "expires_at"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "document_id": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "issued_at": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "rate_limit_remaining": {
        -            "anyOf": [
        -              {
        -                "minimum": 0,
        -                "type": "integer"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "request_id": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "schema_version": {
        -            "const": "1.0.0",
        -            "default": "1.0.0",
        -            "type": "string"
        -          },
        -          "scope_boundary": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        -                "properties": {
        -                  "not_in_scope": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "produced": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "recommended_companions": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "type": "string"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "produced",
        -                  "not_in_scope"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tier": {
        -            "enum": [
        -              "free",
        -              "paid"
        -            ],
        -            "type": "string"
        -          },
        -          "tier_upgrade": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        -                "properties": {
        -                  "available_tiers": {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        -                      "properties": {
        -                        "billing": {
        -                          "enum": [
        -                            "one_off",
        -                            "monthly",
        -                            "annual"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "currency": {
        -                          "enum": [
        -                            "GBP",
        -                            "SGD",
        -                            "EUR",
        -                            "USD",
        -                            "CAD",
        -                            "AUD",
        -                            "NZD",
        -                            "MYR"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "display_name": {
        -                          "type": "string"
        -                        },
        -                        "price_local": {
        -                          "type": "number"
        -                        },
        -                        "tier_slug": {
        -                          "enum": [
        -                            "7_day_pass",
        -                            "solo",
        -                            "studio",
        -                            "practice"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "unlock_summary": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "tier_slug",
        -                        "display_name",
        -                        "price_local",
        -                        "currency",
        -                        "billing",
        -                        "unlock_summary"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "current_tier": {
        -                    "const": "free",
        -                    "default": "free",
        -                    "type": "string"
        -                  },
        -                  "pass_credit": {
        -                    "anyOf": [
        -                      {
        -                        "additionalProperties": false,
        -                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        -                        "properties": {
        -                          "amount_local": {
        -                            "type": "number"
        -                          },
        -                          "applies_to": {
        -                            "const": "solo_first_month",
        -                            "default": "solo_first_month",
        -                            "type": "string"
        -                          },
        -                          "currency": {
        -                            "type": "string"
        -                          },
        -                          "redeemable_until": {
        -                            "type": "string"
        -                          }
        -                        },
        -                        "required": [
        -                          "amount_local",
        -                          "currency",
        -                          "redeemable_until"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "pricing_url": {
        -                    "default": "https://civilquants.com/pricing",
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "available_tiers"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tos_url": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "upgrade_hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "warranty_disclaimer": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          }
        -        },
        -        "required": [
        -          "request_id",
        -          "issued_at",
        -          "tier"
        -        ],
        -        "type": "object"
        -      },
        -      "data": {
        -        "default": null,
        -        "title": "Data"
        -      },
        -      "error": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        -            "properties": {
        -              "code": {
        -                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        -                "enum": [
        -                  "RATE_LIMIT_EXCEEDED",
        -                  "TIER_INSUFFICIENT",
        -                  "INVALID_INPUT",
        -                  "SCHEMA_VERSION_MISMATCH",
        -                  "SCHEMA_INVARIANT_VIOLATION",
        -                  "UPSTREAM_TIMEOUT",
        -                  "BACKEND_FAILURE",
        -                  "IP_BLOCKED",
        -                  "RESOURCE_NOT_FOUND",
        -                  "RENDER_FAILURE",
        -                  "OCR_LOW_CONFIDENCE",
        -                  "MANUAL_REVIEW_REQUIRED",
        -                  "ACCEPTANCE_REQUIRED",
        -                  "INVALID_TOKEN"
        -                ],
        -                "type": "string"
        -              },
        -              "details": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "message": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "recoverable": {
        -                "type": "boolean"
        -              },
        -              "retry_after_seconds": {
        -                "anyOf": [
        -                  {
        -                    "minimum": 0,
        -                    "type": "integer"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              }
        -            },
        -            "required": [
        -              "code",
        -              "message",
        -              "recoverable"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      }
        -    },
        -    "required": [
        -      "_meta"
        -    ],
        -    "type": "object"
        -  }
        -]New value: +[
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "_meta": {
        +        "additionalProperties": false,
        +        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        +        "properties": {
        +          "deliverables": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        +                "properties": {
        +                  "docx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "dxf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "expires_at": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  },
        +                  "pdf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "xlsx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "expires_at"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "document_id": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "issued_at": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "rate_limit_remaining": {
        +            "anyOf": [
        +              {
        +                "minimum": 0,
        +                "type": "integer"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "request_id": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "schema_version": {
        +            "const": "1.0.0",
        +            "default": "1.0.0",
        +            "type": "string"
        +          },
        +          "scope_boundary": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        +                "properties": {
        +                  "not_in_scope": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "produced": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "recommended_companions": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "type": "string"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "produced",
        +                  "not_in_scope"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tier": {
        +            "enum": [
        +              "free",
        +              "paid"
        +            ],
        +            "type": "string"
        +          },
        +          "tier_upgrade": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        +                "properties": {
        +                  "available_tiers": {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        +                      "properties": {
        +                        "billing": {
        +                          "enum": [
        +                            "one_off",
        +                            "monthly",
        +                            "annual"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "currency": {
        +                          "enum": [
        +                            "GBP",
        +                            "SGD",
        +                            "EUR",
        +                            "USD",
        +                            "CAD",
        +                            "AUD",
        +                            "NZD",
        +                            "MYR"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "display_name": {
        +                          "type": "string"
        +                        },
        +                        "price_local": {
        +                          "type": "number"
        +                        },
        +                        "tier_slug": {
        +                          "enum": [
        +                            "7_day_pass",
        +                            "solo",
        +                            "studio",
        +                            "practice"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "unlock_summary": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "tier_slug",
        +                        "display_name",
        +                        "price_local",
        +                        "currency",
        +                        "billing",
        +                        "unlock_summary"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "current_tier": {
        +                    "const": "free",
        +                    "default": "free",
        +                    "type": "string"
        +                  },
        +                  "pass_credit": {
        +                    "anyOf": [
        +                      {
        +                        "additionalProperties": false,
        +                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        +                        "properties": {
        +                          "amount_local": {
        +                            "type": "number"
        +                          },
        +                          "applies_to": {
        +                            "const": "solo_first_month",
        +                            "default": "solo_first_month",
        +                            "type": "string"
        +                          },
        +                          "currency": {
        +                            "type": "string"
        +                          },
        +                          "redeemable_until": {
        +                            "type": "string"
        +                          }
        +                        },
        +                        "required": [
        +                          "amount_local",
        +                          "currency",
        +                          "redeemable_until"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "pricing_url": {
        +                    "default": "https://civilquants.com/pricing",
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "available_tiers"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tos_url": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "upgrade_hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "warranty_disclaimer": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          }
        +        },
        +        "required": [
        +          "request_id",
        +          "issued_at",
        +          "tier"
        +        ],
        +        "type": "object"
        +      },
        +      "data": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Schema § 1.1 — the typed payload returned inside `MCPResponse[ComputeResult]`.\n\nFree-tier responses omit `drawings` (the downloadable CAD artefact\npointers — the paid differentiator); the bridge enforces this. The\n`audit_trail` and the inline `drawing` preview are present on BOTH tiers\n(V1 ALIGN / 60th-fire D + C). `text_summary` is bounded to 2000 chars —\nkeeps the LLM-facing summary token-cheap and forces longer narrative into\nBoQ row descriptions where it belongs. `warnings` is the non-fatal\ngeometry advisory list (both tiers).",
        +            "properties": {
        +              "assembly_slug": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "audit_trail": {
        +                "anyOf": [
        +                  {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.7 — paid-tier audit-trail entry.\n\nOne entry per BoQ row; `boq_row_index` ties to the row position in\n`ComputeResult.boq_rows`. `derivation` is the human-readable formula\nwalk-through; `formula` is the optional formal expression.",
        +                      "properties": {
        +                        "boq_row_index": {
        +                          "minimum": 0,
        +                          "type": "integer"
        +                        },
        +                        "derivation": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "formula": {
        +                          "anyOf": [
        +                            {
        +                              "type": "string"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ],
        +                          "default": null
        +                        },
        +                        "id": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "parameters_referenced": {
        +                          "items": {
        +                            "type": "string"
        +                          },
        +                          "type": "array"
        +                        }
        +                      },
        +                      "required": [
        +                        "id",
        +                        "boq_row_index",
        +                        "derivation"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "boq_rows": {
        +                "items": {
        +                  "additionalProperties": false,
        +                  "description": "Schema § 1.3 — a single bill row in the requested standard's format.\n\n`description` is the non-verbatim functional description per spec § 13.9 /\n§ 15 invariant — NEVER reproduces a standard's verbatim clause text.\n`rate` / `amount` ship null because rates are commodity data the customer\nowns; the engine's job is the measurement, not the pricing.",
        +                  "properties": {
        +                    "amount": {
        +                      "anyOf": [
        +                        {
        +                          "type": "number"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "attribution": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "audit_id": {
        +                      "anyOf": [
        +                        {
        +                          "type": "string"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "description": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "quantity": {
        +                      "minimum": 0,
        +                      "type": "number"
        +                    },
        +                    "rate": {
        +                      "anyOf": [
        +                        {
        +                          "type": "number"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "unit": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "work_section": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    }
        +                  },
        +                  "required": [
        +                    "work_section",
        +                    "description",
        +                    "quantity",
        +                    "unit",
        +                    "attribution"
        +                  ],
        +                  "type": "object"
        +                },
        +                "type": "array"
        +              },
        +              "drawing": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": false,
        +                    "description": "Schema § 1.6a — inline server-rendered SVG preview of the geometry.\n\nThe MCP mirror of the web ``/compute`` response's ``drawing`` field\n(``api.schemas.compute.DrawingRef``): the same on-screen dimensioned\ndrawing both tiers see in the workspace, surfaced on the MCP compute\nresponse so a chat client can render it inline (60th-fire item C). This\nis the on-screen preview — present on BOTH tiers per the free/paid\nboundary; the downloadable CAD artefacts (DXF / dimensioned PDF) remain\nthe paid differentiator via the export tools.\n\nDefined here rather than importing ``DrawingRef`` because the web\n``schemas`` package imports back into this module (``schemas.render``),\nso reusing it would create an import cycle — the MCP wire contract keeps\nits own copy, the same pattern as ``BoQRow`` / ``DrawingReference``.",
        +                    "properties": {
        +                      "entity_count": {
        +                        "minimum": 0,
        +                        "type": "integer"
        +                      },
        +                      "svg_b64": {
        +                        "minLength": 1,
        +                        "type": "string"
        +                      },
        +                      "unit_of_drawing": {
        +                        "const": "m",
        +                        "default": "m",
        +                        "type": "string"
        +                      },
        +                      "viewbox_height": {
        +                        "exclusiveMinimum": 0,
        +                        "type": "number"
        +                      },
        +                      "viewbox_width": {
        +                        "exclusiveMinimum": 0,
        +                        "type": "number"
        +                      },
        +                      "viewbox_x": {
        +                        "type": "number"
        +                      },
        +                      "viewbox_y": {
        +                        "type": "number"
        +                      }
        +                    },
        +                    "required": [
        +                      "svg_b64",
        +                      "viewbox_x",
        +                      "viewbox_y",
        +                      "viewbox_width",
        +                      "viewbox_height",
        +                      "entity_count"
        +                    ],
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "drawings": {
        +                "anyOf": [
        +                  {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.6 — paid-tier drawing artefact pointer.\n\n`url` is an R2-signed URL; expiry is carried in `_meta.deliverables.expires_at`\non the envelope (not duplicated here). `layers` is DXF-only; PDF/SVG\ncallers omit it.",
        +                      "properties": {
        +                        "drawing_type": {
        +                          "enum": [
        +                            "section",
        +                            "plan",
        +                            "elevation",
        +                            "isometric",
        +                            "detail"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "format": {
        +                          "enum": [
        +                            "DXF",
        +                            "PDF",
        +                            "SVG"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "layers": {
        +                          "anyOf": [
        +                            {
        +                              "items": {
        +                                "type": "string"
        +                              },
        +                              "type": "array"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ],
        +                          "default": null
        +                        },
        +                        "scale": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "sheet_size": {
        +                          "enum": [
        +                            "A1",
        +                            "A2",
        +                            "A3",
        +                            "A4"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "url": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "drawing_type",
        +                        "format",
        +                        "url",
        +                        "sheet_size",
        +                        "scale"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "parameters_used": {
        +                "additionalProperties": false,
        +                "description": "Schema § 1.2 — the parameter snapshot the engine actually used.\n\nSplits user-supplied values from engine defaults so customers can see\nwhich numbers came from them and which the engine filled in. Every\ndefaulted parameter SHOULD have a corresponding entry in `assumptions`\n— the bridge layer enforces this when wrapping engine output.",
        +                "properties": {
        +                  "assumptions": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "engine_defaults": {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  "resolved_from_description": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "additionalProperties": false,
        +                          "description": "Schema § 1.2 — a parameter resolved by the forgiving-input layer.\n\nPopulated by the Track B-Forgiving Haiku-4.5 resolution pass; until that\nlayer lands, instances are constructed only by tests. `source` distinguishes\nthe resolution path so customers can audit which fields were inferred.",
        +                          "properties": {
        +                            "confidence": {
        +                              "anyOf": [
        +                                {
        +                                  "enum": [
        +                                    "high",
        +                                    "medium",
        +                                    "low"
        +                                  ],
        +                                  "type": "string"
        +                                },
        +                                {
        +                                  "type": "null"
        +                                }
        +                              ],
        +                              "default": null
        +                            },
        +                            "field_name": {
        +                              "minLength": 1,
        +                              "type": "string"
        +                            },
        +                            "resolved_value": {},
        +                            "source": {
        +                              "enum": [
        +                                "description_field",
        +                                "haiku_resolution",
        +                                "engine_default"
        +                              ],
        +                              "type": "string"
        +                            }
        +                          },
        +                          "required": [
        +                            "field_name",
        +                            "resolved_value",
        +                            "source"
        +                          ],
        +                          "type": "object"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "user_supplied": {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  }
        +                },
        +                "type": "object"
        +              },
        +              "standard": {
        +                "enum": [
        +                  "CESMM4",
        +                  "NRM2",
        +                  "SMM7",
        +                  "MMHW"
        +                ],
        +                "type": "string"
        +              },
        +              "text_summary": {
        +                "maxLength": 2000,
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "totals_summary": {
        +                "additionalProperties": false,
        +                "description": "Schema § 1.4 — totals_summary as a typed wrapper around the free-form dict.\n\nWire shape is a flat object (`{\"concrete_m3\": {...}, \"rebar_t\": {...}}`).\nWe model it as `RootModel`-equivalent via `model_config(extra=\"allow\")`\n+ a single `__root__`-style `entries` dict. Pydantic v2 recommends\n`RootModel` for free-form roots; using a wrapper class keeps the import\nsurface uniform with the rest of this module.",
        +                "properties": {
        +                  "entries": {
        +                    "additionalProperties": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.4 — single material/work-class total entry.",
        +                      "properties": {
        +                        "quantity": {
        +                          "minimum": 0,
        +                          "type": "number"
        +                        },
        +                        "unit": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "quantity",
        +                        "unit"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "object"
        +                  }
        +                },
        +                "type": "object"
        +              },
        +              "warnings": {
        +                "items": {
        +                  "additionalProperties": false,
        +                  "description": "Schema § 1.8 — a non-fatal geometry advisory (56th-fire T2).\n\nThe wire projection of the engine's `core.GeometryWarning`. Advisory only:\na warning NEVER changes a measured quantity — it flags geometry that is\nvalid but likely a mistake (e.g. a stale dependent-height default). Present\non BOTH tiers — a correctness/safety signal, not a paid feature.",
        +                  "properties": {
        +                    "affected_params": {
        +                      "items": {
        +                        "type": "string"
        +                      },
        +                      "type": "array"
        +                    },
        +                    "code": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "detail": {
        +                      "additionalProperties": {
        +                        "type": "number"
        +                      },
        +                      "type": "object"
        +                    },
        +                    "message": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "severity": {
        +                      "enum": [
        +                        "info",
        +                        "advisory",
        +                        "caution"
        +                      ],
        +                      "type": "string"
        +                    }
        +                  },
        +                  "required": [
        +                    "code",
        +                    "severity",
        +                    "message"
        +                  ],
        +                  "type": "object"
        +                },
        +                "type": "array"
        +              }
        +            },
        +            "required": [
        +              "assembly_slug",
        +              "standard",
        +              "parameters_used",
        +              "boq_rows",
        +              "totals_summary",
        +              "text_summary"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      },
        +      "error": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        +            "properties": {
        +              "code": {
        +                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        +                "enum": [
        +                  "RATE_LIMIT_EXCEEDED",
        +                  "TIER_INSUFFICIENT",
        +                  "INVALID_INPUT",
        +                  "SCHEMA_VERSION_MISMATCH",
        +                  "SCHEMA_INVARIANT_VIOLATION",
        +                  "UPSTREAM_TIMEOUT",
        +                  "BACKEND_FAILURE",
        +                  "IP_BLOCKED",
        +                  "RESOURCE_NOT_FOUND",
        +                  "RENDER_FAILURE",
        +                  "OCR_LOW_CONFIDENCE",
        +                  "MANUAL_REVIEW_REQUIRED",
        +                  "ACCEPTANCE_REQUIRED",
        +                  "INVALID_TOKEN"
        +                ],
        +                "type": "string"
        +              },
        +              "details": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "message": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "recoverable": {
        +                "type": "boolean"
        +              },
        +              "retry_after_seconds": {
        +                "anyOf": [
        +                  {
        +                    "minimum": 0,
        +                    "type": "integer"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              }
        +            },
        +            "required": [
        +              "code",
        +              "message",
        +              "recoverable"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      }
        +    },
        +    "required": [
        +      "_meta"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "_meta": {
        +        "additionalProperties": false,
        +        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        +        "properties": {
        +          "deliverables": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        +                "properties": {
        +                  "docx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "dxf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "expires_at": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  },
        +                  "pdf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "xlsx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "expires_at"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "document_id": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "issued_at": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "rate_limit_remaining": {
        +            "anyOf": [
        +              {
        +                "minimum": 0,
        +                "type": "integer"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "request_id": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "schema_version": {
        +            "const": "1.0.0",
        +            "default": "1.0.0",
        +            "type": "string"
        +          },
        +          "scope_boundary": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        +                "properties": {
        +                  "not_in_scope": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "produced": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "recommended_companions": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "type": "string"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "produced",
        +                  "not_in_scope"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tier": {
        +            "enum": [
        +              "free",
        +              "paid"
        +            ],
        +            "type": "string"
        +          },
        +          "tier_upgrade": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        +                "properties": {
        +                  "available_tiers": {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        +                      "properties": {
        +                        "billing": {
        +                          "enum": [
        +                            "one_off",
        +                            "monthly",
        +                            "annual"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "currency": {
        +                          "enum": [
        +                            "GBP",
        +                            "SGD",
        +                            "EUR",
        +                            "USD",
        +                            "CAD",
        +                            "AUD",
        +                            "NZD",
        +                            "MYR"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "display_name": {
        +                          "type": "string"
        +                        },
        +                        "price_local": {
        +                          "type": "number"
        +                        },
        +                        "tier_slug": {
        +                          "enum": [
        +                            "7_day_pass",
        +                            "solo",
        +                            "studio",
        +                            "practice"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "unlock_summary": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "tier_slug",
        +                        "display_name",
        +                        "price_local",
        +                        "currency",
        +                        "billing",
        +                        "unlock_summary"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "current_tier": {
        +                    "const": "free",
        +                    "default": "free",
        +                    "type": "string"
        +                  },
        +                  "pass_credit": {
        +                    "anyOf": [
        +                      {
        +                        "additionalProperties": false,
        +                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        +                        "properties": {
        +                          "amount_local": {
        +                            "type": "number"
        +                          },
        +                          "applies_to": {
        +                            "const": "solo_first_month",
        +                            "default": "solo_first_month",
        +                            "type": "string"
        +                          },
        +                          "currency": {
        +                            "type": "string"
        +                          },
        +                          "redeemable_until": {
        +                            "type": "string"
        +                          }
        +                        },
        +                        "required": [
        +                          "amount_local",
        +                          "currency",
        +                          "redeemable_until"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "pricing_url": {
        +                    "default": "https://civilquants.com/pricing",
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "available_tiers"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tos_url": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "upgrade_hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "warranty_disclaimer": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          }
        +        },
        +        "required": [
        +          "request_id",
        +          "issued_at",
        +          "tier"
        +        ],
        +        "type": "object"
        +      },
        +      "data": {
        +        "default": null,
        +        "title": "Data"
        +      },
        +      "error": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        +            "properties": {
        +              "code": {
        +                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        +                "enum": [
        +                  "RATE_LIMIT_EXCEEDED",
        +                  "TIER_INSUFFICIENT",
        +                  "INVALID_INPUT",
        +                  "SCHEMA_VERSION_MISMATCH",
        +                  "SCHEMA_INVARIANT_VIOLATION",
        +                  "UPSTREAM_TIMEOUT",
        +                  "BACKEND_FAILURE",
        +                  "IP_BLOCKED",
        +                  "RESOURCE_NOT_FOUND",
        +                  "RENDER_FAILURE",
        +                  "OCR_LOW_CONFIDENCE",
        +                  "MANUAL_REVIEW_REQUIRED",
        +                  "ACCEPTANCE_REQUIRED",
        +                  "INVALID_TOKEN"
        +                ],
        +                "type": "string"
        +              },
        +              "details": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "message": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "recoverable": {
        +                "type": "boolean"
        +              },
        +              "retry_after_seconds": {
        +                "anyOf": [
        +                  {
        +                    "minimum": 0,
        +                    "type": "integer"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              }
        +            },
        +            "required": [
        +              "code",
        +              "message",
        +              "recoverable"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      }
        +    },
        +    "required": [
        +      "_meta"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedcompute_manhole_precast3 fields changed
      • addedInput schema / properties / deliverables
        Added value: +{
        +  "anyOf": [
        +    {
        +      "items": {
        +        "const": "xlsx",
        +        "type": "string"
        +      },
        +      "type": "array"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null
        +}
      • addedInput schema / properties / output_mode
        Added value: +{
        +  "default": "full_json",
        +  "enum": [
        +    "summary",
        +    "boq",
        +    "boq_with_backup",
        +    "full_json"
        +  ],
        +  "type": "string"
        +}
      • changedOutput schema / properties / result / anyOf
        Previous value: -[
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "_meta": {
        -        "additionalProperties": false,
        -        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        -        "properties": {
        -          "deliverables": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        -                "properties": {
        -                  "docx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "dxf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "expires_at": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  },
        -                  "pdf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "xlsx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "expires_at"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "document_id": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "issued_at": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "rate_limit_remaining": {
        -            "anyOf": [
        -              {
        -                "minimum": 0,
        -                "type": "integer"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "request_id": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "schema_version": {
        -            "const": "1.0.0",
        -            "default": "1.0.0",
        -            "type": "string"
        -          },
        -          "scope_boundary": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        -                "properties": {
        -                  "not_in_scope": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "produced": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "recommended_companions": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "type": "string"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "produced",
        -                  "not_in_scope"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tier": {
        -            "enum": [
        -              "free",
        -              "paid"
        -            ],
        -            "type": "string"
        -          },
        -          "tier_upgrade": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        -                "properties": {
        -                  "available_tiers": {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        -                      "properties": {
        -                        "billing": {
        -                          "enum": [
        -                            "one_off",
        -                            "monthly",
        -                            "annual"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "currency": {
        -                          "enum": [
        -                            "GBP",
        -                            "SGD",
        -                            "EUR",
        -                            "USD",
        -                            "CAD",
        -                            "AUD",
        -                            "NZD",
        -                            "MYR"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "display_name": {
        -                          "type": "string"
        -                        },
        -                        "price_local": {
        -                          "type": "number"
        -                        },
        -                        "tier_slug": {
        -                          "enum": [
        -                            "7_day_pass",
        -                            "solo",
        -                            "studio",
        -                            "practice"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "unlock_summary": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "tier_slug",
        -                        "display_name",
        -                        "price_local",
        -                        "currency",
        -                        "billing",
        -                        "unlock_summary"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "current_tier": {
        -                    "const": "free",
        -                    "default": "free",
        -                    "type": "string"
        -                  },
        -                  "pass_credit": {
        -                    "anyOf": [
        -                      {
        -                        "additionalProperties": false,
        -                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        -                        "properties": {
        -                          "amount_local": {
        -                            "type": "number"
        -                          },
        -                          "applies_to": {
        -                            "const": "solo_first_month",
        -                            "default": "solo_first_month",
        -                            "type": "string"
        -                          },
        -                          "currency": {
        -                            "type": "string"
        -                          },
        -                          "redeemable_until": {
        -                            "type": "string"
        -                          }
        -                        },
        -                        "required": [
        -                          "amount_local",
        -                          "currency",
        -                          "redeemable_until"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "pricing_url": {
        -                    "default": "https://civilquants.com/pricing",
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "available_tiers"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tos_url": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "upgrade_hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "warranty_disclaimer": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          }
        -        },
        -        "required": [
        -          "request_id",
        -          "issued_at",
        -          "tier"
        -        ],
        -        "type": "object"
        -      },
        -      "data": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Schema § 1.1 — the typed payload returned inside `MCPResponse[ComputeResult]`.\n\nFree-tier responses MUST omit `drawings` and `audit_trail` (the bridge\nenforces this); paid-tier responses populate both. `text_summary` is\nbounded to 2000 chars — keeps the LLM-facing summary token-cheap and\nforces longer narrative into BoQ row descriptions where it belongs.\n`warnings` is the non-fatal geometry advisory list (both tiers).",
        -            "properties": {
        -              "assembly_slug": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "audit_trail": {
        -                "anyOf": [
        -                  {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.7 — paid-tier audit-trail entry.\n\nOne entry per BoQ row; `boq_row_index` ties to the row position in\n`ComputeResult.boq_rows`. `derivation` is the human-readable formula\nwalk-through; `formula` is the optional formal expression.",
        -                      "properties": {
        -                        "boq_row_index": {
        -                          "minimum": 0,
        -                          "type": "integer"
        -                        },
        -                        "derivation": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "formula": {
        -                          "anyOf": [
        -                            {
        -                              "type": "string"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ],
        -                          "default": null
        -                        },
        -                        "id": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "parameters_referenced": {
        -                          "items": {
        -                            "type": "string"
        -                          },
        -                          "type": "array"
        -                        }
        -                      },
        -                      "required": [
        -                        "id",
        -                        "boq_row_index",
        -                        "derivation"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "boq_rows": {
        -                "items": {
        -                  "additionalProperties": false,
        -                  "description": "Schema § 1.3 — a single bill row in the requested standard's format.\n\n`description` is the non-verbatim functional description per spec § 13.9 /\n§ 15 invariant — NEVER reproduces a standard's verbatim clause text.\n`rate` / `amount` ship null because rates are commodity data the customer\nowns; the engine's job is the measurement, not the pricing.",
        -                  "properties": {
        -                    "amount": {
        -                      "anyOf": [
        -                        {
        -                          "type": "number"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "attribution": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "audit_id": {
        -                      "anyOf": [
        -                        {
        -                          "type": "string"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "description": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "quantity": {
        -                      "minimum": 0,
        -                      "type": "number"
        -                    },
        -                    "rate": {
        -                      "anyOf": [
        -                        {
        -                          "type": "number"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "unit": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "work_section": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    }
        -                  },
        -                  "required": [
        -                    "work_section",
        -                    "description",
        -                    "quantity",
        -                    "unit",
        -                    "attribution"
        -                  ],
        -                  "type": "object"
        -                },
        -                "type": "array"
        -              },
        -              "drawings": {
        -                "anyOf": [
        -                  {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.6 — paid-tier drawing artefact pointer.\n\n`url` is an R2-signed URL; expiry is carried in `_meta.deliverables.expires_at`\non the envelope (not duplicated here). `layers` is DXF-only; PDF/SVG\ncallers omit it.",
        -                      "properties": {
        -                        "drawing_type": {
        -                          "enum": [
        -                            "section",
        -                            "plan",
        -                            "elevation",
        -                            "isometric",
        -                            "detail"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "format": {
        -                          "enum": [
        -                            "DXF",
        -                            "PDF",
        -                            "SVG"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "layers": {
        -                          "anyOf": [
        -                            {
        -                              "items": {
        -                                "type": "string"
        -                              },
        -                              "type": "array"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ],
        -                          "default": null
        -                        },
        -                        "scale": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "sheet_size": {
        -                          "enum": [
        -                            "A1",
        -                            "A2",
        -                            "A3",
        -                            "A4"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "url": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "drawing_type",
        -                        "format",
        -                        "url",
        -                        "sheet_size",
        -                        "scale"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "parameters_used": {
        -                "additionalProperties": false,
        -                "description": "Schema § 1.2 — the parameter snapshot the engine actually used.\n\nSplits user-supplied values from engine defaults so customers can see\nwhich numbers came from them and which the engine filled in. Every\ndefaulted parameter SHOULD have a corresponding entry in `assumptions`\n— the bridge layer enforces this when wrapping engine output.",
        -                "properties": {
        -                  "assumptions": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "engine_defaults": {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  "resolved_from_description": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "additionalProperties": false,
        -                          "description": "Schema § 1.2 — a parameter resolved by the forgiving-input layer.\n\nPopulated by the Track B-Forgiving Haiku-4.5 resolution pass; until that\nlayer lands, instances are constructed only by tests. `source` distinguishes\nthe resolution path so customers can audit which fields were inferred.",
        -                          "properties": {
        -                            "confidence": {
        -                              "anyOf": [
        -                                {
        -                                  "enum": [
        -                                    "high",
        -                                    "medium",
        -                                    "low"
        -                                  ],
        -                                  "type": "string"
        -                                },
        -                                {
        -                                  "type": "null"
        -                                }
        -                              ],
        -                              "default": null
        -                            },
        -                            "field_name": {
        -                              "minLength": 1,
        -                              "type": "string"
        -                            },
        -                            "resolved_value": {},
        -                            "source": {
        -                              "enum": [
        -                                "description_field",
        -                                "haiku_resolution",
        -                                "engine_default"
        -                              ],
        -                              "type": "string"
        -                            }
        -                          },
        -                          "required": [
        -                            "field_name",
        -                            "resolved_value",
        -                            "source"
        -                          ],
        -                          "type": "object"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "user_supplied": {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  }
        -                },
        -                "type": "object"
        -              },
        -              "standard": {
        -                "enum": [
        -                  "CESMM4",
        -                  "NRM2",
        -                  "SMM7",
        -                  "MMHW"
        -                ],
        -                "type": "string"
        -              },
        -              "text_summary": {
        -                "maxLength": 2000,
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "totals_summary": {
        -                "additionalProperties": false,
        -                "description": "Schema § 1.4 — totals_summary as a typed wrapper around the free-form dict.\n\nWire shape is a flat object (`{\"concrete_m3\": {...}, \"rebar_t\": {...}}`).\nWe model it as `RootModel`-equivalent via `model_config(extra=\"allow\")`\n+ a single `__root__`-style `entries` dict. Pydantic v2 recommends\n`RootModel` for free-form roots; using a wrapper class keeps the import\nsurface uniform with the rest of this module.",
        -                "properties": {
        -                  "entries": {
        -                    "additionalProperties": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.4 — single material/work-class total entry.",
        -                      "properties": {
        -                        "quantity": {
        -                          "minimum": 0,
        -                          "type": "number"
        -                        },
        -                        "unit": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "quantity",
        -                        "unit"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "object"
        -                  }
        -                },
        -                "type": "object"
        -              },
        -              "warnings": {
        -                "items": {
        -                  "additionalProperties": false,
        -                  "description": "Schema § 1.8 — a non-fatal geometry advisory (56th-fire T2).\n\nThe wire projection of the engine's `core.GeometryWarning`. Advisory only:\na warning NEVER changes a measured quantity — it flags geometry that is\nvalid but likely a mistake (e.g. a stale dependent-height default). Present\non BOTH tiers — a correctness/safety signal, not a paid feature.",
        -                  "properties": {
        -                    "affected_params": {
        -                      "items": {
        -                        "type": "string"
        -                      },
        -                      "type": "array"
        -                    },
        -                    "code": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "detail": {
        -                      "additionalProperties": {
        -                        "type": "number"
        -                      },
        -                      "type": "object"
        -                    },
        -                    "message": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "severity": {
        -                      "enum": [
        -                        "info",
        -                        "advisory",
        -                        "caution"
        -                      ],
        -                      "type": "string"
        -                    }
        -                  },
        -                  "required": [
        -                    "code",
        -                    "severity",
        -                    "message"
        -                  ],
        -                  "type": "object"
        -                },
        -                "type": "array"
        -              }
        -            },
        -            "required": [
        -              "assembly_slug",
        -              "standard",
        -              "parameters_used",
        -              "boq_rows",
        -              "totals_summary",
        -              "text_summary"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      },
        -      "error": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        -            "properties": {
        -              "code": {
        -                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        -                "enum": [
        -                  "RATE_LIMIT_EXCEEDED",
        -                  "TIER_INSUFFICIENT",
        -                  "INVALID_INPUT",
        -                  "SCHEMA_VERSION_MISMATCH",
        -                  "SCHEMA_INVARIANT_VIOLATION",
        -                  "UPSTREAM_TIMEOUT",
        -                  "BACKEND_FAILURE",
        -                  "IP_BLOCKED",
        -                  "RESOURCE_NOT_FOUND",
        -                  "RENDER_FAILURE",
        -                  "OCR_LOW_CONFIDENCE",
        -                  "MANUAL_REVIEW_REQUIRED",
        -                  "ACCEPTANCE_REQUIRED",
        -                  "INVALID_TOKEN"
        -                ],
        -                "type": "string"
        -              },
        -              "details": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "message": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "recoverable": {
        -                "type": "boolean"
        -              },
        -              "retry_after_seconds": {
        -                "anyOf": [
        -                  {
        -                    "minimum": 0,
        -                    "type": "integer"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              }
        -            },
        -            "required": [
        -              "code",
        -              "message",
        -              "recoverable"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      }
        -    },
        -    "required": [
        -      "_meta"
        -    ],
        -    "type": "object"
        -  },
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "_meta": {
        -        "additionalProperties": false,
        -        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        -        "properties": {
        -          "deliverables": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        -                "properties": {
        -                  "docx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "dxf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "expires_at": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  },
        -                  "pdf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "xlsx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "expires_at"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "document_id": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "issued_at": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "rate_limit_remaining": {
        -            "anyOf": [
        -              {
        -                "minimum": 0,
        -                "type": "integer"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "request_id": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "schema_version": {
        -            "const": "1.0.0",
        -            "default": "1.0.0",
        -            "type": "string"
        -          },
        -          "scope_boundary": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        -                "properties": {
        -                  "not_in_scope": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "produced": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "recommended_companions": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "type": "string"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "produced",
        -                  "not_in_scope"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tier": {
        -            "enum": [
        -              "free",
        -              "paid"
        -            ],
        -            "type": "string"
        -          },
        -          "tier_upgrade": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        -                "properties": {
        -                  "available_tiers": {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        -                      "properties": {
        -                        "billing": {
        -                          "enum": [
        -                            "one_off",
        -                            "monthly",
        -                            "annual"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "currency": {
        -                          "enum": [
        -                            "GBP",
        -                            "SGD",
        -                            "EUR",
        -                            "USD",
        -                            "CAD",
        -                            "AUD",
        -                            "NZD",
        -                            "MYR"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "display_name": {
        -                          "type": "string"
        -                        },
        -                        "price_local": {
        -                          "type": "number"
        -                        },
        -                        "tier_slug": {
        -                          "enum": [
        -                            "7_day_pass",
        -                            "solo",
        -                            "studio",
        -                            "practice"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "unlock_summary": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "tier_slug",
        -                        "display_name",
        -                        "price_local",
        -                        "currency",
        -                        "billing",
        -                        "unlock_summary"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "current_tier": {
        -                    "const": "free",
        -                    "default": "free",
        -                    "type": "string"
        -                  },
        -                  "pass_credit": {
        -                    "anyOf": [
        -                      {
        -                        "additionalProperties": false,
        -                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        -                        "properties": {
        -                          "amount_local": {
        -                            "type": "number"
        -                          },
        -                          "applies_to": {
        -                            "const": "solo_first_month",
        -                            "default": "solo_first_month",
        -                            "type": "string"
        -                          },
        -                          "currency": {
        -                            "type": "string"
        -                          },
        -                          "redeemable_until": {
        -                            "type": "string"
        -                          }
        -                        },
        -                        "required": [
        -                          "amount_local",
        -                          "currency",
        -                          "redeemable_until"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "pricing_url": {
        -                    "default": "https://civilquants.com/pricing",
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "available_tiers"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tos_url": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "upgrade_hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "warranty_disclaimer": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          }
        -        },
        -        "required": [
        -          "request_id",
        -          "issued_at",
        -          "tier"
        -        ],
        -        "type": "object"
        -      },
        -      "data": {
        -        "default": null,
        -        "title": "Data"
        -      },
        -      "error": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        -            "properties": {
        -              "code": {
        -                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        -                "enum": [
        -                  "RATE_LIMIT_EXCEEDED",
        -                  "TIER_INSUFFICIENT",
        -                  "INVALID_INPUT",
        -                  "SCHEMA_VERSION_MISMATCH",
        -                  "SCHEMA_INVARIANT_VIOLATION",
        -                  "UPSTREAM_TIMEOUT",
        -                  "BACKEND_FAILURE",
        -                  "IP_BLOCKED",
        -                  "RESOURCE_NOT_FOUND",
        -                  "RENDER_FAILURE",
        -                  "OCR_LOW_CONFIDENCE",
        -                  "MANUAL_REVIEW_REQUIRED",
        -                  "ACCEPTANCE_REQUIRED",
        -                  "INVALID_TOKEN"
        -                ],
        -                "type": "string"
        -              },
        -              "details": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "message": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "recoverable": {
        -                "type": "boolean"
        -              },
        -              "retry_after_seconds": {
        -                "anyOf": [
        -                  {
        -                    "minimum": 0,
        -                    "type": "integer"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              }
        -            },
        -            "required": [
        -              "code",
        -              "message",
        -              "recoverable"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      }
        -    },
        -    "required": [
        -      "_meta"
        -    ],
        -    "type": "object"
        -  }
        -]New value: +[
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "_meta": {
        +        "additionalProperties": false,
        +        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        +        "properties": {
        +          "deliverables": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        +                "properties": {
        +                  "docx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "dxf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "expires_at": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  },
        +                  "pdf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "xlsx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "expires_at"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "document_id": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "issued_at": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "rate_limit_remaining": {
        +            "anyOf": [
        +              {
        +                "minimum": 0,
        +                "type": "integer"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "request_id": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "schema_version": {
        +            "const": "1.0.0",
        +            "default": "1.0.0",
        +            "type": "string"
        +          },
        +          "scope_boundary": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        +                "properties": {
        +                  "not_in_scope": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "produced": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "recommended_companions": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "type": "string"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "produced",
        +                  "not_in_scope"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tier": {
        +            "enum": [
        +              "free",
        +              "paid"
        +            ],
        +            "type": "string"
        +          },
        +          "tier_upgrade": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        +                "properties": {
        +                  "available_tiers": {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        +                      "properties": {
        +                        "billing": {
        +                          "enum": [
        +                            "one_off",
        +                            "monthly",
        +                            "annual"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "currency": {
        +                          "enum": [
        +                            "GBP",
        +                            "SGD",
        +                            "EUR",
        +                            "USD",
        +                            "CAD",
        +                            "AUD",
        +                            "NZD",
        +                            "MYR"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "display_name": {
        +                          "type": "string"
        +                        },
        +                        "price_local": {
        +                          "type": "number"
        +                        },
        +                        "tier_slug": {
        +                          "enum": [
        +                            "7_day_pass",
        +                            "solo",
        +                            "studio",
        +                            "practice"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "unlock_summary": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "tier_slug",
        +                        "display_name",
        +                        "price_local",
        +                        "currency",
        +                        "billing",
        +                        "unlock_summary"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "current_tier": {
        +                    "const": "free",
        +                    "default": "free",
        +                    "type": "string"
        +                  },
        +                  "pass_credit": {
        +                    "anyOf": [
        +                      {
        +                        "additionalProperties": false,
        +                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        +                        "properties": {
        +                          "amount_local": {
        +                            "type": "number"
        +                          },
        +                          "applies_to": {
        +                            "const": "solo_first_month",
        +                            "default": "solo_first_month",
        +                            "type": "string"
        +                          },
        +                          "currency": {
        +                            "type": "string"
        +                          },
        +                          "redeemable_until": {
        +                            "type": "string"
        +                          }
        +                        },
        +                        "required": [
        +                          "amount_local",
        +                          "currency",
        +                          "redeemable_until"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "pricing_url": {
        +                    "default": "https://civilquants.com/pricing",
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "available_tiers"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tos_url": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "upgrade_hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "warranty_disclaimer": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          }
        +        },
        +        "required": [
        +          "request_id",
        +          "issued_at",
        +          "tier"
        +        ],
        +        "type": "object"
        +      },
        +      "data": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Schema § 1.1 — the typed payload returned inside `MCPResponse[ComputeResult]`.\n\nFree-tier responses omit `drawings` (the downloadable CAD artefact\npointers — the paid differentiator); the bridge enforces this. The\n`audit_trail` and the inline `drawing` preview are present on BOTH tiers\n(V1 ALIGN / 60th-fire D + C). `text_summary` is bounded to 2000 chars —\nkeeps the LLM-facing summary token-cheap and forces longer narrative into\nBoQ row descriptions where it belongs. `warnings` is the non-fatal\ngeometry advisory list (both tiers).",
        +            "properties": {
        +              "assembly_slug": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "audit_trail": {
        +                "anyOf": [
        +                  {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.7 — paid-tier audit-trail entry.\n\nOne entry per BoQ row; `boq_row_index` ties to the row position in\n`ComputeResult.boq_rows`. `derivation` is the human-readable formula\nwalk-through; `formula` is the optional formal expression.",
        +                      "properties": {
        +                        "boq_row_index": {
        +                          "minimum": 0,
        +                          "type": "integer"
        +                        },
        +                        "derivation": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "formula": {
        +                          "anyOf": [
        +                            {
        +                              "type": "string"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ],
        +                          "default": null
        +                        },
        +                        "id": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "parameters_referenced": {
        +                          "items": {
        +                            "type": "string"
        +                          },
        +                          "type": "array"
        +                        }
        +                      },
        +                      "required": [
        +                        "id",
        +                        "boq_row_index",
        +                        "derivation"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "boq_rows": {
        +                "items": {
        +                  "additionalProperties": false,
        +                  "description": "Schema § 1.3 — a single bill row in the requested standard's format.\n\n`description` is the non-verbatim functional description per spec § 13.9 /\n§ 15 invariant — NEVER reproduces a standard's verbatim clause text.\n`rate` / `amount` ship null because rates are commodity data the customer\nowns; the engine's job is the measurement, not the pricing.",
        +                  "properties": {
        +                    "amount": {
        +                      "anyOf": [
        +                        {
        +                          "type": "number"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "attribution": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "audit_id": {
        +                      "anyOf": [
        +                        {
        +                          "type": "string"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "description": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "quantity": {
        +                      "minimum": 0,
        +                      "type": "number"
        +                    },
        +                    "rate": {
        +                      "anyOf": [
        +                        {
        +                          "type": "number"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "unit": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "work_section": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    }
        +                  },
        +                  "required": [
        +                    "work_section",
        +                    "description",
        +                    "quantity",
        +                    "unit",
        +                    "attribution"
        +                  ],
        +                  "type": "object"
        +                },
        +                "type": "array"
        +              },
        +              "drawing": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": false,
        +                    "description": "Schema § 1.6a — inline server-rendered SVG preview of the geometry.\n\nThe MCP mirror of the web ``/compute`` response's ``drawing`` field\n(``api.schemas.compute.DrawingRef``): the same on-screen dimensioned\ndrawing both tiers see in the workspace, surfaced on the MCP compute\nresponse so a chat client can render it inline (60th-fire item C). This\nis the on-screen preview — present on BOTH tiers per the free/paid\nboundary; the downloadable CAD artefacts (DXF / dimensioned PDF) remain\nthe paid differentiator via the export tools.\n\nDefined here rather than importing ``DrawingRef`` because the web\n``schemas`` package imports back into this module (``schemas.render``),\nso reusing it would create an import cycle — the MCP wire contract keeps\nits own copy, the same pattern as ``BoQRow`` / ``DrawingReference``.",
        +                    "properties": {
        +                      "entity_count": {
        +                        "minimum": 0,
        +                        "type": "integer"
        +                      },
        +                      "svg_b64": {
        +                        "minLength": 1,
        +                        "type": "string"
        +                      },
        +                      "unit_of_drawing": {
        +                        "const": "m",
        +                        "default": "m",
        +                        "type": "string"
        +                      },
        +                      "viewbox_height": {
        +                        "exclusiveMinimum": 0,
        +                        "type": "number"
        +                      },
        +                      "viewbox_width": {
        +                        "exclusiveMinimum": 0,
        +                        "type": "number"
        +                      },
        +                      "viewbox_x": {
        +                        "type": "number"
        +                      },
        +                      "viewbox_y": {
        +                        "type": "number"
        +                      }
        +                    },
        +                    "required": [
        +                      "svg_b64",
        +                      "viewbox_x",
        +                      "viewbox_y",
        +                      "viewbox_width",
        +                      "viewbox_height",
        +                      "entity_count"
        +                    ],
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "drawings": {
        +                "anyOf": [
        +                  {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.6 — paid-tier drawing artefact pointer.\n\n`url` is an R2-signed URL; expiry is carried in `_meta.deliverables.expires_at`\non the envelope (not duplicated here). `layers` is DXF-only; PDF/SVG\ncallers omit it.",
        +                      "properties": {
        +                        "drawing_type": {
        +                          "enum": [
        +                            "section",
        +                            "plan",
        +                            "elevation",
        +                            "isometric",
        +                            "detail"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "format": {
        +                          "enum": [
        +                            "DXF",
        +                            "PDF",
        +                            "SVG"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "layers": {
        +                          "anyOf": [
        +                            {
        +                              "items": {
        +                                "type": "string"
        +                              },
        +                              "type": "array"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ],
        +                          "default": null
        +                        },
        +                        "scale": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "sheet_size": {
        +                          "enum": [
        +                            "A1",
        +                            "A2",
        +                            "A3",
        +                            "A4"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "url": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "drawing_type",
        +                        "format",
        +                        "url",
        +                        "sheet_size",
        +                        "scale"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "parameters_used": {
        +                "additionalProperties": false,
        +                "description": "Schema § 1.2 — the parameter snapshot the engine actually used.\n\nSplits user-supplied values from engine defaults so customers can see\nwhich numbers came from them and which the engine filled in. Every\ndefaulted parameter SHOULD have a corresponding entry in `assumptions`\n— the bridge layer enforces this when wrapping engine output.",
        +                "properties": {
        +                  "assumptions": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "engine_defaults": {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  "resolved_from_description": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "additionalProperties": false,
        +                          "description": "Schema § 1.2 — a parameter resolved by the forgiving-input layer.\n\nPopulated by the Track B-Forgiving Haiku-4.5 resolution pass; until that\nlayer lands, instances are constructed only by tests. `source` distinguishes\nthe resolution path so customers can audit which fields were inferred.",
        +                          "properties": {
        +                            "confidence": {
        +                              "anyOf": [
        +                                {
        +                                  "enum": [
        +                                    "high",
        +                                    "medium",
        +                                    "low"
        +                                  ],
        +                                  "type": "string"
        +                                },
        +                                {
        +                                  "type": "null"
        +                                }
        +                              ],
        +                              "default": null
        +                            },
        +                            "field_name": {
        +                              "minLength": 1,
        +                              "type": "string"
        +                            },
        +                            "resolved_value": {},
        +                            "source": {
        +                              "enum": [
        +                                "description_field",
        +                                "haiku_resolution",
        +                                "engine_default"
        +                              ],
        +                              "type": "string"
        +                            }
        +                          },
        +                          "required": [
        +                            "field_name",
        +                            "resolved_value",
        +                            "source"
        +                          ],
        +                          "type": "object"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "user_supplied": {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  }
        +                },
        +                "type": "object"
        +              },
        +              "standard": {
        +                "enum": [
        +                  "CESMM4",
        +                  "NRM2",
        +                  "SMM7",
        +                  "MMHW"
        +                ],
        +                "type": "string"
        +              },
        +              "text_summary": {
        +                "maxLength": 2000,
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "totals_summary": {
        +                "additionalProperties": false,
        +                "description": "Schema § 1.4 — totals_summary as a typed wrapper around the free-form dict.\n\nWire shape is a flat object (`{\"concrete_m3\": {...}, \"rebar_t\": {...}}`).\nWe model it as `RootModel`-equivalent via `model_config(extra=\"allow\")`\n+ a single `__root__`-style `entries` dict. Pydantic v2 recommends\n`RootModel` for free-form roots; using a wrapper class keeps the import\nsurface uniform with the rest of this module.",
        +                "properties": {
        +                  "entries": {
        +                    "additionalProperties": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.4 — single material/work-class total entry.",
        +                      "properties": {
        +                        "quantity": {
        +                          "minimum": 0,
        +                          "type": "number"
        +                        },
        +                        "unit": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "quantity",
        +                        "unit"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "object"
        +                  }
        +                },
        +                "type": "object"
        +              },
        +              "warnings": {
        +                "items": {
        +                  "additionalProperties": false,
        +                  "description": "Schema § 1.8 — a non-fatal geometry advisory (56th-fire T2).\n\nThe wire projection of the engine's `core.GeometryWarning`. Advisory only:\na warning NEVER changes a measured quantity — it flags geometry that is\nvalid but likely a mistake (e.g. a stale dependent-height default). Present\non BOTH tiers — a correctness/safety signal, not a paid feature.",
        +                  "properties": {
        +                    "affected_params": {
        +                      "items": {
        +                        "type": "string"
        +                      },
        +                      "type": "array"
        +                    },
        +                    "code": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "detail": {
        +                      "additionalProperties": {
        +                        "type": "number"
        +                      },
        +                      "type": "object"
        +                    },
        +                    "message": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "severity": {
        +                      "enum": [
        +                        "info",
        +                        "advisory",
        +                        "caution"
        +                      ],
        +                      "type": "string"
        +                    }
        +                  },
        +                  "required": [
        +                    "code",
        +                    "severity",
        +                    "message"
        +                  ],
        +                  "type": "object"
        +                },
        +                "type": "array"
        +              }
        +            },
        +            "required": [
        +              "assembly_slug",
        +              "standard",
        +              "parameters_used",
        +              "boq_rows",
        +              "totals_summary",
        +              "text_summary"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      },
        +      "error": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        +            "properties": {
        +              "code": {
        +                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        +                "enum": [
        +                  "RATE_LIMIT_EXCEEDED",
        +                  "TIER_INSUFFICIENT",
        +                  "INVALID_INPUT",
        +                  "SCHEMA_VERSION_MISMATCH",
        +                  "SCHEMA_INVARIANT_VIOLATION",
        +                  "UPSTREAM_TIMEOUT",
        +                  "BACKEND_FAILURE",
        +                  "IP_BLOCKED",
        +                  "RESOURCE_NOT_FOUND",
        +                  "RENDER_FAILURE",
        +                  "OCR_LOW_CONFIDENCE",
        +                  "MANUAL_REVIEW_REQUIRED",
        +                  "ACCEPTANCE_REQUIRED",
        +                  "INVALID_TOKEN"
        +                ],
        +                "type": "string"
        +              },
        +              "details": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "message": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "recoverable": {
        +                "type": "boolean"
        +              },
        +              "retry_after_seconds": {
        +                "anyOf": [
        +                  {
        +                    "minimum": 0,
        +                    "type": "integer"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              }
        +            },
        +            "required": [
        +              "code",
        +              "message",
        +              "recoverable"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      }
        +    },
        +    "required": [
        +      "_meta"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "_meta": {
        +        "additionalProperties": false,
        +        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        +        "properties": {
        +          "deliverables": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        +                "properties": {
        +                  "docx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "dxf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "expires_at": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  },
        +                  "pdf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "xlsx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "expires_at"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "document_id": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "issued_at": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "rate_limit_remaining": {
        +            "anyOf": [
        +              {
        +                "minimum": 0,
        +                "type": "integer"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "request_id": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "schema_version": {
        +            "const": "1.0.0",
        +            "default": "1.0.0",
        +            "type": "string"
        +          },
        +          "scope_boundary": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        +                "properties": {
        +                  "not_in_scope": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "produced": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "recommended_companions": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "type": "string"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "produced",
        +                  "not_in_scope"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tier": {
        +            "enum": [
        +              "free",
        +              "paid"
        +            ],
        +            "type": "string"
        +          },
        +          "tier_upgrade": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        +                "properties": {
        +                  "available_tiers": {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        +                      "properties": {
        +                        "billing": {
        +                          "enum": [
        +                            "one_off",
        +                            "monthly",
        +                            "annual"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "currency": {
        +                          "enum": [
        +                            "GBP",
        +                            "SGD",
        +                            "EUR",
        +                            "USD",
        +                            "CAD",
        +                            "AUD",
        +                            "NZD",
        +                            "MYR"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "display_name": {
        +                          "type": "string"
        +                        },
        +                        "price_local": {
        +                          "type": "number"
        +                        },
        +                        "tier_slug": {
        +                          "enum": [
        +                            "7_day_pass",
        +                            "solo",
        +                            "studio",
        +                            "practice"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "unlock_summary": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "tier_slug",
        +                        "display_name",
        +                        "price_local",
        +                        "currency",
        +                        "billing",
        +                        "unlock_summary"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "current_tier": {
        +                    "const": "free",
        +                    "default": "free",
        +                    "type": "string"
        +                  },
        +                  "pass_credit": {
        +                    "anyOf": [
        +                      {
        +                        "additionalProperties": false,
        +                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        +                        "properties": {
        +                          "amount_local": {
        +                            "type": "number"
        +                          },
        +                          "applies_to": {
        +                            "const": "solo_first_month",
        +                            "default": "solo_first_month",
        +                            "type": "string"
        +                          },
        +                          "currency": {
        +                            "type": "string"
        +                          },
        +                          "redeemable_until": {
        +                            "type": "string"
        +                          }
        +                        },
        +                        "required": [
        +                          "amount_local",
        +                          "currency",
        +                          "redeemable_until"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "pricing_url": {
        +                    "default": "https://civilquants.com/pricing",
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "available_tiers"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tos_url": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "upgrade_hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "warranty_disclaimer": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          }
        +        },
        +        "required": [
        +          "request_id",
        +          "issued_at",
        +          "tier"
        +        ],
        +        "type": "object"
        +      },
        +      "data": {
        +        "default": null,
        +        "title": "Data"
        +      },
        +      "error": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        +            "properties": {
        +              "code": {
        +                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        +                "enum": [
        +                  "RATE_LIMIT_EXCEEDED",
        +                  "TIER_INSUFFICIENT",
        +                  "INVALID_INPUT",
        +                  "SCHEMA_VERSION_MISMATCH",
        +                  "SCHEMA_INVARIANT_VIOLATION",
        +                  "UPSTREAM_TIMEOUT",
        +                  "BACKEND_FAILURE",
        +                  "IP_BLOCKED",
        +                  "RESOURCE_NOT_FOUND",
        +                  "RENDER_FAILURE",
        +                  "OCR_LOW_CONFIDENCE",
        +                  "MANUAL_REVIEW_REQUIRED",
        +                  "ACCEPTANCE_REQUIRED",
        +                  "INVALID_TOKEN"
        +                ],
        +                "type": "string"
        +              },
        +              "details": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "message": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "recoverable": {
        +                "type": "boolean"
        +              },
        +              "retry_after_seconds": {
        +                "anyOf": [
        +                  {
        +                    "minimum": 0,
        +                    "type": "integer"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              }
        +            },
        +            "required": [
        +              "code",
        +              "message",
        +              "recoverable"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      }
        +    },
        +    "required": [
        +      "_meta"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Addedcompute_multi_section_assembly
    • Changedcompute_pad_foundation3 fields changed
      • addedInput schema / properties / deliverables
        Added value: +{
        +  "anyOf": [
        +    {
        +      "items": {
        +        "const": "xlsx",
        +        "type": "string"
        +      },
        +      "type": "array"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null
        +}
      • addedInput schema / properties / output_mode
        Added value: +{
        +  "default": "full_json",
        +  "enum": [
        +    "summary",
        +    "boq",
        +    "boq_with_backup",
        +    "full_json"
        +  ],
        +  "type": "string"
        +}
      • changedOutput schema / properties / result / anyOf
        Previous value: -[
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "_meta": {
        -        "additionalProperties": false,
        -        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        -        "properties": {
        -          "deliverables": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        -                "properties": {
        -                  "docx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "dxf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "expires_at": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  },
        -                  "pdf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "xlsx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "expires_at"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "document_id": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "issued_at": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "rate_limit_remaining": {
        -            "anyOf": [
        -              {
        -                "minimum": 0,
        -                "type": "integer"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "request_id": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "schema_version": {
        -            "const": "1.0.0",
        -            "default": "1.0.0",
        -            "type": "string"
        -          },
        -          "scope_boundary": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        -                "properties": {
        -                  "not_in_scope": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "produced": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "recommended_companions": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "type": "string"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "produced",
        -                  "not_in_scope"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tier": {
        -            "enum": [
        -              "free",
        -              "paid"
        -            ],
        -            "type": "string"
        -          },
        -          "tier_upgrade": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        -                "properties": {
        -                  "available_tiers": {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        -                      "properties": {
        -                        "billing": {
        -                          "enum": [
        -                            "one_off",
        -                            "monthly",
        -                            "annual"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "currency": {
        -                          "enum": [
        -                            "GBP",
        -                            "SGD",
        -                            "EUR",
        -                            "USD",
        -                            "CAD",
        -                            "AUD",
        -                            "NZD",
        -                            "MYR"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "display_name": {
        -                          "type": "string"
        -                        },
        -                        "price_local": {
        -                          "type": "number"
        -                        },
        -                        "tier_slug": {
        -                          "enum": [
        -                            "7_day_pass",
        -                            "solo",
        -                            "studio",
        -                            "practice"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "unlock_summary": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "tier_slug",
        -                        "display_name",
        -                        "price_local",
        -                        "currency",
        -                        "billing",
        -                        "unlock_summary"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "current_tier": {
        -                    "const": "free",
        -                    "default": "free",
        -                    "type": "string"
        -                  },
        -                  "pass_credit": {
        -                    "anyOf": [
        -                      {
        -                        "additionalProperties": false,
        -                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        -                        "properties": {
        -                          "amount_local": {
        -                            "type": "number"
        -                          },
        -                          "applies_to": {
        -                            "const": "solo_first_month",
        -                            "default": "solo_first_month",
        -                            "type": "string"
        -                          },
        -                          "currency": {
        -                            "type": "string"
        -                          },
        -                          "redeemable_until": {
        -                            "type": "string"
        -                          }
        -                        },
        -                        "required": [
        -                          "amount_local",
        -                          "currency",
        -                          "redeemable_until"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "pricing_url": {
        -                    "default": "https://civilquants.com/pricing",
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "available_tiers"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tos_url": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "upgrade_hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "warranty_disclaimer": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          }
        -        },
        -        "required": [
        -          "request_id",
        -          "issued_at",
        -          "tier"
        -        ],
        -        "type": "object"
        -      },
        -      "data": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Schema § 1.1 — the typed payload returned inside `MCPResponse[ComputeResult]`.\n\nFree-tier responses MUST omit `drawings` and `audit_trail` (the bridge\nenforces this); paid-tier responses populate both. `text_summary` is\nbounded to 2000 chars — keeps the LLM-facing summary token-cheap and\nforces longer narrative into BoQ row descriptions where it belongs.\n`warnings` is the non-fatal geometry advisory list (both tiers).",
        -            "properties": {
        -              "assembly_slug": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "audit_trail": {
        -                "anyOf": [
        -                  {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.7 — paid-tier audit-trail entry.\n\nOne entry per BoQ row; `boq_row_index` ties to the row position in\n`ComputeResult.boq_rows`. `derivation` is the human-readable formula\nwalk-through; `formula` is the optional formal expression.",
        -                      "properties": {
        -                        "boq_row_index": {
        -                          "minimum": 0,
        -                          "type": "integer"
        -                        },
        -                        "derivation": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "formula": {
        -                          "anyOf": [
        -                            {
        -                              "type": "string"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ],
        -                          "default": null
        -                        },
        -                        "id": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "parameters_referenced": {
        -                          "items": {
        -                            "type": "string"
        -                          },
        -                          "type": "array"
        -                        }
        -                      },
        -                      "required": [
        -                        "id",
        -                        "boq_row_index",
        -                        "derivation"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "boq_rows": {
        -                "items": {
        -                  "additionalProperties": false,
        -                  "description": "Schema § 1.3 — a single bill row in the requested standard's format.\n\n`description` is the non-verbatim functional description per spec § 13.9 /\n§ 15 invariant — NEVER reproduces a standard's verbatim clause text.\n`rate` / `amount` ship null because rates are commodity data the customer\nowns; the engine's job is the measurement, not the pricing.",
        -                  "properties": {
        -                    "amount": {
        -                      "anyOf": [
        -                        {
        -                          "type": "number"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "attribution": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "audit_id": {
        -                      "anyOf": [
        -                        {
        -                          "type": "string"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "description": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "quantity": {
        -                      "minimum": 0,
        -                      "type": "number"
        -                    },
        -                    "rate": {
        -                      "anyOf": [
        -                        {
        -                          "type": "number"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "unit": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "work_section": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    }
        -                  },
        -                  "required": [
        -                    "work_section",
        -                    "description",
        -                    "quantity",
        -                    "unit",
        -                    "attribution"
        -                  ],
        -                  "type": "object"
        -                },
        -                "type": "array"
        -              },
        -              "drawings": {
        -                "anyOf": [
        -                  {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.6 — paid-tier drawing artefact pointer.\n\n`url` is an R2-signed URL; expiry is carried in `_meta.deliverables.expires_at`\non the envelope (not duplicated here). `layers` is DXF-only; PDF/SVG\ncallers omit it.",
        -                      "properties": {
        -                        "drawing_type": {
        -                          "enum": [
        -                            "section",
        -                            "plan",
        -                            "elevation",
        -                            "isometric",
        -                            "detail"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "format": {
        -                          "enum": [
        -                            "DXF",
        -                            "PDF",
        -                            "SVG"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "layers": {
        -                          "anyOf": [
        -                            {
        -                              "items": {
        -                                "type": "string"
        -                              },
        -                              "type": "array"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ],
        -                          "default": null
        -                        },
        -                        "scale": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "sheet_size": {
        -                          "enum": [
        -                            "A1",
        -                            "A2",
        -                            "A3",
        -                            "A4"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "url": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "drawing_type",
        -                        "format",
        -                        "url",
        -                        "sheet_size",
        -                        "scale"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "parameters_used": {
        -                "additionalProperties": false,
        -                "description": "Schema § 1.2 — the parameter snapshot the engine actually used.\n\nSplits user-supplied values from engine defaults so customers can see\nwhich numbers came from them and which the engine filled in. Every\ndefaulted parameter SHOULD have a corresponding entry in `assumptions`\n— the bridge layer enforces this when wrapping engine output.",
        -                "properties": {
        -                  "assumptions": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "engine_defaults": {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  "resolved_from_description": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "additionalProperties": false,
        -                          "description": "Schema § 1.2 — a parameter resolved by the forgiving-input layer.\n\nPopulated by the Track B-Forgiving Haiku-4.5 resolution pass; until that\nlayer lands, instances are constructed only by tests. `source` distinguishes\nthe resolution path so customers can audit which fields were inferred.",
        -                          "properties": {
        -                            "confidence": {
        -                              "anyOf": [
        -                                {
        -                                  "enum": [
        -                                    "high",
        -                                    "medium",
        -                                    "low"
        -                                  ],
        -                                  "type": "string"
        -                                },
        -                                {
        -                                  "type": "null"
        -                                }
        -                              ],
        -                              "default": null
        -                            },
        -                            "field_name": {
        -                              "minLength": 1,
        -                              "type": "string"
        -                            },
        -                            "resolved_value": {},
        -                            "source": {
        -                              "enum": [
        -                                "description_field",
        -                                "haiku_resolution",
        -                                "engine_default"
        -                              ],
        -                              "type": "string"
        -                            }
        -                          },
        -                          "required": [
        -                            "field_name",
        -                            "resolved_value",
        -                            "source"
        -                          ],
        -                          "type": "object"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "user_supplied": {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  }
        -                },
        -                "type": "object"
        -              },
        -              "standard": {
        -                "enum": [
        -                  "CESMM4",
        -                  "NRM2",
        -                  "SMM7",
        -                  "MMHW"
        -                ],
        -                "type": "string"
        -              },
        -              "text_summary": {
        -                "maxLength": 2000,
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "totals_summary": {
        -                "additionalProperties": false,
        -                "description": "Schema § 1.4 — totals_summary as a typed wrapper around the free-form dict.\n\nWire shape is a flat object (`{\"concrete_m3\": {...}, \"rebar_t\": {...}}`).\nWe model it as `RootModel`-equivalent via `model_config(extra=\"allow\")`\n+ a single `__root__`-style `entries` dict. Pydantic v2 recommends\n`RootModel` for free-form roots; using a wrapper class keeps the import\nsurface uniform with the rest of this module.",
        -                "properties": {
        -                  "entries": {
        -                    "additionalProperties": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.4 — single material/work-class total entry.",
        -                      "properties": {
        -                        "quantity": {
        -                          "minimum": 0,
        -                          "type": "number"
        -                        },
        -                        "unit": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "quantity",
        -                        "unit"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "object"
        -                  }
        -                },
        -                "type": "object"
        -              },
        -              "warnings": {
        -                "items": {
        -                  "additionalProperties": false,
        -                  "description": "Schema § 1.8 — a non-fatal geometry advisory (56th-fire T2).\n\nThe wire projection of the engine's `core.GeometryWarning`. Advisory only:\na warning NEVER changes a measured quantity — it flags geometry that is\nvalid but likely a mistake (e.g. a stale dependent-height default). Present\non BOTH tiers — a correctness/safety signal, not a paid feature.",
        -                  "properties": {
        -                    "affected_params": {
        -                      "items": {
        -                        "type": "string"
        -                      },
        -                      "type": "array"
        -                    },
        -                    "code": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "detail": {
        -                      "additionalProperties": {
        -                        "type": "number"
        -                      },
        -                      "type": "object"
        -                    },
        -                    "message": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "severity": {
        -                      "enum": [
        -                        "info",
        -                        "advisory",
        -                        "caution"
        -                      ],
        -                      "type": "string"
        -                    }
        -                  },
        -                  "required": [
        -                    "code",
        -                    "severity",
        -                    "message"
        -                  ],
        -                  "type": "object"
        -                },
        -                "type": "array"
        -              }
        -            },
        -            "required": [
        -              "assembly_slug",
        -              "standard",
        -              "parameters_used",
        -              "boq_rows",
        -              "totals_summary",
        -              "text_summary"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      },
        -      "error": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        -            "properties": {
        -              "code": {
        -                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        -                "enum": [
        -                  "RATE_LIMIT_EXCEEDED",
        -                  "TIER_INSUFFICIENT",
        -                  "INVALID_INPUT",
        -                  "SCHEMA_VERSION_MISMATCH",
        -                  "SCHEMA_INVARIANT_VIOLATION",
        -                  "UPSTREAM_TIMEOUT",
        -                  "BACKEND_FAILURE",
        -                  "IP_BLOCKED",
        -                  "RESOURCE_NOT_FOUND",
        -                  "RENDER_FAILURE",
        -                  "OCR_LOW_CONFIDENCE",
        -                  "MANUAL_REVIEW_REQUIRED",
        -                  "ACCEPTANCE_REQUIRED",
        -                  "INVALID_TOKEN"
        -                ],
        -                "type": "string"
        -              },
        -              "details": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "message": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "recoverable": {
        -                "type": "boolean"
        -              },
        -              "retry_after_seconds": {
        -                "anyOf": [
        -                  {
        -                    "minimum": 0,
        -                    "type": "integer"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              }
        -            },
        -            "required": [
        -              "code",
        -              "message",
        -              "recoverable"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      }
        -    },
        -    "required": [
        -      "_meta"
        -    ],
        -    "type": "object"
        -  },
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "_meta": {
        -        "additionalProperties": false,
        -        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        -        "properties": {
        -          "deliverables": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        -                "properties": {
        -                  "docx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "dxf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "expires_at": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  },
        -                  "pdf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "xlsx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "expires_at"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "document_id": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "issued_at": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "rate_limit_remaining": {
        -            "anyOf": [
        -              {
        -                "minimum": 0,
        -                "type": "integer"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "request_id": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "schema_version": {
        -            "const": "1.0.0",
        -            "default": "1.0.0",
        -            "type": "string"
        -          },
        -          "scope_boundary": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        -                "properties": {
        -                  "not_in_scope": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "produced": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "recommended_companions": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "type": "string"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "produced",
        -                  "not_in_scope"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tier": {
        -            "enum": [
        -              "free",
        -              "paid"
        -            ],
        -            "type": "string"
        -          },
        -          "tier_upgrade": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        -                "properties": {
        -                  "available_tiers": {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        -                      "properties": {
        -                        "billing": {
        -                          "enum": [
        -                            "one_off",
        -                            "monthly",
        -                            "annual"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "currency": {
        -                          "enum": [
        -                            "GBP",
        -                            "SGD",
        -                            "EUR",
        -                            "USD",
        -                            "CAD",
        -                            "AUD",
        -                            "NZD",
        -                            "MYR"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "display_name": {
        -                          "type": "string"
        -                        },
        -                        "price_local": {
        -                          "type": "number"
        -                        },
        -                        "tier_slug": {
        -                          "enum": [
        -                            "7_day_pass",
        -                            "solo",
        -                            "studio",
        -                            "practice"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "unlock_summary": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "tier_slug",
        -                        "display_name",
        -                        "price_local",
        -                        "currency",
        -                        "billing",
        -                        "unlock_summary"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "current_tier": {
        -                    "const": "free",
        -                    "default": "free",
        -                    "type": "string"
        -                  },
        -                  "pass_credit": {
        -                    "anyOf": [
        -                      {
        -                        "additionalProperties": false,
        -                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        -                        "properties": {
        -                          "amount_local": {
        -                            "type": "number"
        -                          },
        -                          "applies_to": {
        -                            "const": "solo_first_month",
        -                            "default": "solo_first_month",
        -                            "type": "string"
        -                          },
        -                          "currency": {
        -                            "type": "string"
        -                          },
        -                          "redeemable_until": {
        -                            "type": "string"
        -                          }
        -                        },
        -                        "required": [
        -                          "amount_local",
        -                          "currency",
        -                          "redeemable_until"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "pricing_url": {
        -                    "default": "https://civilquants.com/pricing",
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "available_tiers"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tos_url": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "upgrade_hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "warranty_disclaimer": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          }
        -        },
        -        "required": [
        -          "request_id",
        -          "issued_at",
        -          "tier"
        -        ],
        -        "type": "object"
        -      },
        -      "data": {
        -        "default": null,
        -        "title": "Data"
        -      },
        -      "error": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        -            "properties": {
        -              "code": {
        -                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        -                "enum": [
        -                  "RATE_LIMIT_EXCEEDED",
        -                  "TIER_INSUFFICIENT",
        -                  "INVALID_INPUT",
        -                  "SCHEMA_VERSION_MISMATCH",
        -                  "SCHEMA_INVARIANT_VIOLATION",
        -                  "UPSTREAM_TIMEOUT",
        -                  "BACKEND_FAILURE",
        -                  "IP_BLOCKED",
        -                  "RESOURCE_NOT_FOUND",
        -                  "RENDER_FAILURE",
        -                  "OCR_LOW_CONFIDENCE",
        -                  "MANUAL_REVIEW_REQUIRED",
        -                  "ACCEPTANCE_REQUIRED",
        -                  "INVALID_TOKEN"
        -                ],
        -                "type": "string"
        -              },
        -              "details": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "message": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "recoverable": {
        -                "type": "boolean"
        -              },
        -              "retry_after_seconds": {
        -                "anyOf": [
        -                  {
        -                    "minimum": 0,
        -                    "type": "integer"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              }
        -            },
        -            "required": [
        -              "code",
        -              "message",
        -              "recoverable"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      }
        -    },
        -    "required": [
        -      "_meta"
        -    ],
        -    "type": "object"
        -  }
        -]New value: +[
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "_meta": {
        +        "additionalProperties": false,
        +        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        +        "properties": {
        +          "deliverables": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        +                "properties": {
        +                  "docx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "dxf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "expires_at": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  },
        +                  "pdf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "xlsx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "expires_at"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "document_id": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "issued_at": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "rate_limit_remaining": {
        +            "anyOf": [
        +              {
        +                "minimum": 0,
        +                "type": "integer"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "request_id": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "schema_version": {
        +            "const": "1.0.0",
        +            "default": "1.0.0",
        +            "type": "string"
        +          },
        +          "scope_boundary": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        +                "properties": {
        +                  "not_in_scope": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "produced": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "recommended_companions": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "type": "string"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "produced",
        +                  "not_in_scope"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tier": {
        +            "enum": [
        +              "free",
        +              "paid"
        +            ],
        +            "type": "string"
        +          },
        +          "tier_upgrade": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        +                "properties": {
        +                  "available_tiers": {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        +                      "properties": {
        +                        "billing": {
        +                          "enum": [
        +                            "one_off",
        +                            "monthly",
        +                            "annual"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "currency": {
        +                          "enum": [
        +                            "GBP",
        +                            "SGD",
        +                            "EUR",
        +                            "USD",
        +                            "CAD",
        +                            "AUD",
        +                            "NZD",
        +                            "MYR"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "display_name": {
        +                          "type": "string"
        +                        },
        +                        "price_local": {
        +                          "type": "number"
        +                        },
        +                        "tier_slug": {
        +                          "enum": [
        +                            "7_day_pass",
        +                            "solo",
        +                            "studio",
        +                            "practice"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "unlock_summary": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "tier_slug",
        +                        "display_name",
        +                        "price_local",
        +                        "currency",
        +                        "billing",
        +                        "unlock_summary"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "current_tier": {
        +                    "const": "free",
        +                    "default": "free",
        +                    "type": "string"
        +                  },
        +                  "pass_credit": {
        +                    "anyOf": [
        +                      {
        +                        "additionalProperties": false,
        +                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        +                        "properties": {
        +                          "amount_local": {
        +                            "type": "number"
        +                          },
        +                          "applies_to": {
        +                            "const": "solo_first_month",
        +                            "default": "solo_first_month",
        +                            "type": "string"
        +                          },
        +                          "currency": {
        +                            "type": "string"
        +                          },
        +                          "redeemable_until": {
        +                            "type": "string"
        +                          }
        +                        },
        +                        "required": [
        +                          "amount_local",
        +                          "currency",
        +                          "redeemable_until"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "pricing_url": {
        +                    "default": "https://civilquants.com/pricing",
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "available_tiers"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tos_url": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "upgrade_hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "warranty_disclaimer": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          }
        +        },
        +        "required": [
        +          "request_id",
        +          "issued_at",
        +          "tier"
        +        ],
        +        "type": "object"
        +      },
        +      "data": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Schema § 1.1 — the typed payload returned inside `MCPResponse[ComputeResult]`.\n\nFree-tier responses omit `drawings` (the downloadable CAD artefact\npointers — the paid differentiator); the bridge enforces this. The\n`audit_trail` and the inline `drawing` preview are present on BOTH tiers\n(V1 ALIGN / 60th-fire D + C). `text_summary` is bounded to 2000 chars —\nkeeps the LLM-facing summary token-cheap and forces longer narrative into\nBoQ row descriptions where it belongs. `warnings` is the non-fatal\ngeometry advisory list (both tiers).",
        +            "properties": {
        +              "assembly_slug": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "audit_trail": {
        +                "anyOf": [
        +                  {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.7 — paid-tier audit-trail entry.\n\nOne entry per BoQ row; `boq_row_index` ties to the row position in\n`ComputeResult.boq_rows`. `derivation` is the human-readable formula\nwalk-through; `formula` is the optional formal expression.",
        +                      "properties": {
        +                        "boq_row_index": {
        +                          "minimum": 0,
        +                          "type": "integer"
        +                        },
        +                        "derivation": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "formula": {
        +                          "anyOf": [
        +                            {
        +                              "type": "string"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ],
        +                          "default": null
        +                        },
        +                        "id": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "parameters_referenced": {
        +                          "items": {
        +                            "type": "string"
        +                          },
        +                          "type": "array"
        +                        }
        +                      },
        +                      "required": [
        +                        "id",
        +                        "boq_row_index",
        +                        "derivation"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "boq_rows": {
        +                "items": {
        +                  "additionalProperties": false,
        +                  "description": "Schema § 1.3 — a single bill row in the requested standard's format.\n\n`description` is the non-verbatim functional description per spec § 13.9 /\n§ 15 invariant — NEVER reproduces a standard's verbatim clause text.\n`rate` / `amount` ship null because rates are commodity data the customer\nowns; the engine's job is the measurement, not the pricing.",
        +                  "properties": {
        +                    "amount": {
        +                      "anyOf": [
        +                        {
        +                          "type": "number"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "attribution": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "audit_id": {
        +                      "anyOf": [
        +                        {
        +                          "type": "string"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "description": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "quantity": {
        +                      "minimum": 0,
        +                      "type": "number"
        +                    },
        +                    "rate": {
        +                      "anyOf": [
        +                        {
        +                          "type": "number"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "unit": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "work_section": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    }
        +                  },
        +                  "required": [
        +                    "work_section",
        +                    "description",
        +                    "quantity",
        +                    "unit",
        +                    "attribution"
        +                  ],
        +                  "type": "object"
        +                },
        +                "type": "array"
        +              },
        +              "drawing": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": false,
        +                    "description": "Schema § 1.6a — inline server-rendered SVG preview of the geometry.\n\nThe MCP mirror of the web ``/compute`` response's ``drawing`` field\n(``api.schemas.compute.DrawingRef``): the same on-screen dimensioned\ndrawing both tiers see in the workspace, surfaced on the MCP compute\nresponse so a chat client can render it inline (60th-fire item C). This\nis the on-screen preview — present on BOTH tiers per the free/paid\nboundary; the downloadable CAD artefacts (DXF / dimensioned PDF) remain\nthe paid differentiator via the export tools.\n\nDefined here rather than importing ``DrawingRef`` because the web\n``schemas`` package imports back into this module (``schemas.render``),\nso reusing it would create an import cycle — the MCP wire contract keeps\nits own copy, the same pattern as ``BoQRow`` / ``DrawingReference``.",
        +                    "properties": {
        +                      "entity_count": {
        +                        "minimum": 0,
        +                        "type": "integer"
        +                      },
        +                      "svg_b64": {
        +                        "minLength": 1,
        +                        "type": "string"
        +                      },
        +                      "unit_of_drawing": {
        +                        "const": "m",
        +                        "default": "m",
        +                        "type": "string"
        +                      },
        +                      "viewbox_height": {
        +                        "exclusiveMinimum": 0,
        +                        "type": "number"
        +                      },
        +                      "viewbox_width": {
        +                        "exclusiveMinimum": 0,
        +                        "type": "number"
        +                      },
        +                      "viewbox_x": {
        +                        "type": "number"
        +                      },
        +                      "viewbox_y": {
        +                        "type": "number"
        +                      }
        +                    },
        +                    "required": [
        +                      "svg_b64",
        +                      "viewbox_x",
        +                      "viewbox_y",
        +                      "viewbox_width",
        +                      "viewbox_height",
        +                      "entity_count"
        +                    ],
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "drawings": {
        +                "anyOf": [
        +                  {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.6 — paid-tier drawing artefact pointer.\n\n`url` is an R2-signed URL; expiry is carried in `_meta.deliverables.expires_at`\non the envelope (not duplicated here). `layers` is DXF-only; PDF/SVG\ncallers omit it.",
        +                      "properties": {
        +                        "drawing_type": {
        +                          "enum": [
        +                            "section",
        +                            "plan",
        +                            "elevation",
        +                            "isometric",
        +                            "detail"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "format": {
        +                          "enum": [
        +                            "DXF",
        +                            "PDF",
        +                            "SVG"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "layers": {
        +                          "anyOf": [
        +                            {
        +                              "items": {
        +                                "type": "string"
        +                              },
        +                              "type": "array"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ],
        +                          "default": null
        +                        },
        +                        "scale": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "sheet_size": {
        +                          "enum": [
        +                            "A1",
        +                            "A2",
        +                            "A3",
        +                            "A4"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "url": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "drawing_type",
        +                        "format",
        +                        "url",
        +                        "sheet_size",
        +                        "scale"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "parameters_used": {
        +                "additionalProperties": false,
        +                "description": "Schema § 1.2 — the parameter snapshot the engine actually used.\n\nSplits user-supplied values from engine defaults so customers can see\nwhich numbers came from them and which the engine filled in. Every\ndefaulted parameter SHOULD have a corresponding entry in `assumptions`\n— the bridge layer enforces this when wrapping engine output.",
        +                "properties": {
        +                  "assumptions": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "engine_defaults": {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  "resolved_from_description": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "additionalProperties": false,
        +                          "description": "Schema § 1.2 — a parameter resolved by the forgiving-input layer.\n\nPopulated by the Track B-Forgiving Haiku-4.5 resolution pass; until that\nlayer lands, instances are constructed only by tests. `source` distinguishes\nthe resolution path so customers can audit which fields were inferred.",
        +                          "properties": {
        +                            "confidence": {
        +                              "anyOf": [
        +                                {
        +                                  "enum": [
        +                                    "high",
        +                                    "medium",
        +                                    "low"
        +                                  ],
        +                                  "type": "string"
        +                                },
        +                                {
        +                                  "type": "null"
        +                                }
        +                              ],
        +                              "default": null
        +                            },
        +                            "field_name": {
        +                              "minLength": 1,
        +                              "type": "string"
        +                            },
        +                            "resolved_value": {},
        +                            "source": {
        +                              "enum": [
        +                                "description_field",
        +                                "haiku_resolution",
        +                                "engine_default"
        +                              ],
        +                              "type": "string"
        +                            }
        +                          },
        +                          "required": [
        +                            "field_name",
        +                            "resolved_value",
        +                            "source"
        +                          ],
        +                          "type": "object"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "user_supplied": {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  }
        +                },
        +                "type": "object"
        +              },
        +              "standard": {
        +                "enum": [
        +                  "CESMM4",
        +                  "NRM2",
        +                  "SMM7",
        +                  "MMHW"
        +                ],
        +                "type": "string"
        +              },
        +              "text_summary": {
        +                "maxLength": 2000,
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "totals_summary": {
        +                "additionalProperties": false,
        +                "description": "Schema § 1.4 — totals_summary as a typed wrapper around the free-form dict.\n\nWire shape is a flat object (`{\"concrete_m3\": {...}, \"rebar_t\": {...}}`).\nWe model it as `RootModel`-equivalent via `model_config(extra=\"allow\")`\n+ a single `__root__`-style `entries` dict. Pydantic v2 recommends\n`RootModel` for free-form roots; using a wrapper class keeps the import\nsurface uniform with the rest of this module.",
        +                "properties": {
        +                  "entries": {
        +                    "additionalProperties": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.4 — single material/work-class total entry.",
        +                      "properties": {
        +                        "quantity": {
        +                          "minimum": 0,
        +                          "type": "number"
        +                        },
        +                        "unit": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "quantity",
        +                        "unit"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "object"
        +                  }
        +                },
        +                "type": "object"
        +              },
        +              "warnings": {
        +                "items": {
        +                  "additionalProperties": false,
        +                  "description": "Schema § 1.8 — a non-fatal geometry advisory (56th-fire T2).\n\nThe wire projection of the engine's `core.GeometryWarning`. Advisory only:\na warning NEVER changes a measured quantity — it flags geometry that is\nvalid but likely a mistake (e.g. a stale dependent-height default). Present\non BOTH tiers — a correctness/safety signal, not a paid feature.",
        +                  "properties": {
        +                    "affected_params": {
        +                      "items": {
        +                        "type": "string"
        +                      },
        +                      "type": "array"
        +                    },
        +                    "code": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "detail": {
        +                      "additionalProperties": {
        +                        "type": "number"
        +                      },
        +                      "type": "object"
        +                    },
        +                    "message": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "severity": {
        +                      "enum": [
        +                        "info",
        +                        "advisory",
        +                        "caution"
        +                      ],
        +                      "type": "string"
        +                    }
        +                  },
        +                  "required": [
        +                    "code",
        +                    "severity",
        +                    "message"
        +                  ],
        +                  "type": "object"
        +                },
        +                "type": "array"
        +              }
        +            },
        +            "required": [
        +              "assembly_slug",
        +              "standard",
        +              "parameters_used",
        +              "boq_rows",
        +              "totals_summary",
        +              "text_summary"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      },
        +      "error": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        +            "properties": {
        +              "code": {
        +                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        +                "enum": [
        +                  "RATE_LIMIT_EXCEEDED",
        +                  "TIER_INSUFFICIENT",
        +                  "INVALID_INPUT",
        +                  "SCHEMA_VERSION_MISMATCH",
        +                  "SCHEMA_INVARIANT_VIOLATION",
        +                  "UPSTREAM_TIMEOUT",
        +                  "BACKEND_FAILURE",
        +                  "IP_BLOCKED",
        +                  "RESOURCE_NOT_FOUND",
        +                  "RENDER_FAILURE",
        +                  "OCR_LOW_CONFIDENCE",
        +                  "MANUAL_REVIEW_REQUIRED",
        +                  "ACCEPTANCE_REQUIRED",
        +                  "INVALID_TOKEN"
        +                ],
        +                "type": "string"
        +              },
        +              "details": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "message": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "recoverable": {
        +                "type": "boolean"
        +              },
        +              "retry_after_seconds": {
        +                "anyOf": [
        +                  {
        +                    "minimum": 0,
        +                    "type": "integer"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              }
        +            },
        +            "required": [
        +              "code",
        +              "message",
        +              "recoverable"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      }
        +    },
        +    "required": [
        +      "_meta"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "_meta": {
        +        "additionalProperties": false,
        +        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        +        "properties": {
        +          "deliverables": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        +                "properties": {
        +                  "docx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "dxf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "expires_at": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  },
        +                  "pdf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "xlsx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "expires_at"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "document_id": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "issued_at": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "rate_limit_remaining": {
        +            "anyOf": [
        +              {
        +                "minimum": 0,
        +                "type": "integer"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "request_id": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "schema_version": {
        +            "const": "1.0.0",
        +            "default": "1.0.0",
        +            "type": "string"
        +          },
        +          "scope_boundary": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        +                "properties": {
        +                  "not_in_scope": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "produced": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "recommended_companions": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "type": "string"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "produced",
        +                  "not_in_scope"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tier": {
        +            "enum": [
        +              "free",
        +              "paid"
        +            ],
        +            "type": "string"
        +          },
        +          "tier_upgrade": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        +                "properties": {
        +                  "available_tiers": {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        +                      "properties": {
        +                        "billing": {
        +                          "enum": [
        +                            "one_off",
        +                            "monthly",
        +                            "annual"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "currency": {
        +                          "enum": [
        +                            "GBP",
        +                            "SGD",
        +                            "EUR",
        +                            "USD",
        +                            "CAD",
        +                            "AUD",
        +                            "NZD",
        +                            "MYR"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "display_name": {
        +                          "type": "string"
        +                        },
        +                        "price_local": {
        +                          "type": "number"
        +                        },
        +                        "tier_slug": {
        +                          "enum": [
        +                            "7_day_pass",
        +                            "solo",
        +                            "studio",
        +                            "practice"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "unlock_summary": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "tier_slug",
        +                        "display_name",
        +                        "price_local",
        +                        "currency",
        +                        "billing",
        +                        "unlock_summary"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "current_tier": {
        +                    "const": "free",
        +                    "default": "free",
        +                    "type": "string"
        +                  },
        +                  "pass_credit": {
        +                    "anyOf": [
        +                      {
        +                        "additionalProperties": false,
        +                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        +                        "properties": {
        +                          "amount_local": {
        +                            "type": "number"
        +                          },
        +                          "applies_to": {
        +                            "const": "solo_first_month",
        +                            "default": "solo_first_month",
        +                            "type": "string"
        +                          },
        +                          "currency": {
        +                            "type": "string"
        +                          },
        +                          "redeemable_until": {
        +                            "type": "string"
        +                          }
        +                        },
        +                        "required": [
        +                          "amount_local",
        +                          "currency",
        +                          "redeemable_until"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "pricing_url": {
        +                    "default": "https://civilquants.com/pricing",
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "available_tiers"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tos_url": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "upgrade_hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "warranty_disclaimer": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          }
        +        },
        +        "required": [
        +          "request_id",
        +          "issued_at",
        +          "tier"
        +        ],
        +        "type": "object"
        +      },
        +      "data": {
        +        "default": null,
        +        "title": "Data"
        +      },
        +      "error": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        +            "properties": {
        +              "code": {
        +                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        +                "enum": [
        +                  "RATE_LIMIT_EXCEEDED",
        +                  "TIER_INSUFFICIENT",
        +                  "INVALID_INPUT",
        +                  "SCHEMA_VERSION_MISMATCH",
        +                  "SCHEMA_INVARIANT_VIOLATION",
        +                  "UPSTREAM_TIMEOUT",
        +                  "BACKEND_FAILURE",
        +                  "IP_BLOCKED",
        +                  "RESOURCE_NOT_FOUND",
        +                  "RENDER_FAILURE",
        +                  "OCR_LOW_CONFIDENCE",
        +                  "MANUAL_REVIEW_REQUIRED",
        +                  "ACCEPTANCE_REQUIRED",
        +                  "INVALID_TOKEN"
        +                ],
        +                "type": "string"
        +              },
        +              "details": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "message": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "recoverable": {
        +                "type": "boolean"
        +              },
        +              "retry_after_seconds": {
        +                "anyOf": [
        +                  {
        +                    "minimum": 0,
        +                    "type": "integer"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              }
        +            },
        +            "required": [
        +              "code",
        +              "message",
        +              "recoverable"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      }
        +    },
        +    "required": [
        +      "_meta"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedcompute_parapet3 fields changed
      • addedInput schema / properties / deliverables
        Added value: +{
        +  "anyOf": [
        +    {
        +      "items": {
        +        "const": "xlsx",
        +        "type": "string"
        +      },
        +      "type": "array"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null
        +}
      • addedInput schema / properties / output_mode
        Added value: +{
        +  "default": "full_json",
        +  "enum": [
        +    "summary",
        +    "boq",
        +    "boq_with_backup",
        +    "full_json"
        +  ],
        +  "type": "string"
        +}
      • changedOutput schema / properties / result / anyOf
        Previous value: -[
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "_meta": {
        -        "additionalProperties": false,
        -        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        -        "properties": {
        -          "deliverables": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        -                "properties": {
        -                  "docx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "dxf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "expires_at": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  },
        -                  "pdf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "xlsx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "expires_at"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "document_id": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "issued_at": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "rate_limit_remaining": {
        -            "anyOf": [
        -              {
        -                "minimum": 0,
        -                "type": "integer"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "request_id": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "schema_version": {
        -            "const": "1.0.0",
        -            "default": "1.0.0",
        -            "type": "string"
        -          },
        -          "scope_boundary": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        -                "properties": {
        -                  "not_in_scope": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "produced": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "recommended_companions": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "type": "string"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "produced",
        -                  "not_in_scope"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tier": {
        -            "enum": [
        -              "free",
        -              "paid"
        -            ],
        -            "type": "string"
        -          },
        -          "tier_upgrade": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        -                "properties": {
        -                  "available_tiers": {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        -                      "properties": {
        -                        "billing": {
        -                          "enum": [
        -                            "one_off",
        -                            "monthly",
        -                            "annual"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "currency": {
        -                          "enum": [
        -                            "GBP",
        -                            "SGD",
        -                            "EUR",
        -                            "USD",
        -                            "CAD",
        -                            "AUD",
        -                            "NZD",
        -                            "MYR"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "display_name": {
        -                          "type": "string"
        -                        },
        -                        "price_local": {
        -                          "type": "number"
        -                        },
        -                        "tier_slug": {
        -                          "enum": [
        -                            "7_day_pass",
        -                            "solo",
        -                            "studio",
        -                            "practice"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "unlock_summary": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "tier_slug",
        -                        "display_name",
        -                        "price_local",
        -                        "currency",
        -                        "billing",
        -                        "unlock_summary"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "current_tier": {
        -                    "const": "free",
        -                    "default": "free",
        -                    "type": "string"
        -                  },
        -                  "pass_credit": {
        -                    "anyOf": [
        -                      {
        -                        "additionalProperties": false,
        -                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        -                        "properties": {
        -                          "amount_local": {
        -                            "type": "number"
        -                          },
        -                          "applies_to": {
        -                            "const": "solo_first_month",
        -                            "default": "solo_first_month",
        -                            "type": "string"
        -                          },
        -                          "currency": {
        -                            "type": "string"
        -                          },
        -                          "redeemable_until": {
        -                            "type": "string"
        -                          }
        -                        },
        -                        "required": [
        -                          "amount_local",
        -                          "currency",
        -                          "redeemable_until"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "pricing_url": {
        -                    "default": "https://civilquants.com/pricing",
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "available_tiers"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tos_url": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "upgrade_hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "warranty_disclaimer": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          }
        -        },
        -        "required": [
        -          "request_id",
        -          "issued_at",
        -          "tier"
        -        ],
        -        "type": "object"
        -      },
        -      "data": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Schema § 1.1 — the typed payload returned inside `MCPResponse[ComputeResult]`.\n\nFree-tier responses MUST omit `drawings` and `audit_trail` (the bridge\nenforces this); paid-tier responses populate both. `text_summary` is\nbounded to 2000 chars — keeps the LLM-facing summary token-cheap and\nforces longer narrative into BoQ row descriptions where it belongs.\n`warnings` is the non-fatal geometry advisory list (both tiers).",
        -            "properties": {
        -              "assembly_slug": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "audit_trail": {
        -                "anyOf": [
        -                  {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.7 — paid-tier audit-trail entry.\n\nOne entry per BoQ row; `boq_row_index` ties to the row position in\n`ComputeResult.boq_rows`. `derivation` is the human-readable formula\nwalk-through; `formula` is the optional formal expression.",
        -                      "properties": {
        -                        "boq_row_index": {
        -                          "minimum": 0,
        -                          "type": "integer"
        -                        },
        -                        "derivation": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "formula": {
        -                          "anyOf": [
        -                            {
        -                              "type": "string"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ],
        -                          "default": null
        -                        },
        -                        "id": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "parameters_referenced": {
        -                          "items": {
        -                            "type": "string"
        -                          },
        -                          "type": "array"
        -                        }
        -                      },
        -                      "required": [
        -                        "id",
        -                        "boq_row_index",
        -                        "derivation"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "boq_rows": {
        -                "items": {
        -                  "additionalProperties": false,
        -                  "description": "Schema § 1.3 — a single bill row in the requested standard's format.\n\n`description` is the non-verbatim functional description per spec § 13.9 /\n§ 15 invariant — NEVER reproduces a standard's verbatim clause text.\n`rate` / `amount` ship null because rates are commodity data the customer\nowns; the engine's job is the measurement, not the pricing.",
        -                  "properties": {
        -                    "amount": {
        -                      "anyOf": [
        -                        {
        -                          "type": "number"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "attribution": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "audit_id": {
        -                      "anyOf": [
        -                        {
        -                          "type": "string"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "description": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "quantity": {
        -                      "minimum": 0,
        -                      "type": "number"
        -                    },
        -                    "rate": {
        -                      "anyOf": [
        -                        {
        -                          "type": "number"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "unit": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "work_section": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    }
        -                  },
        -                  "required": [
        -                    "work_section",
        -                    "description",
        -                    "quantity",
        -                    "unit",
        -                    "attribution"
        -                  ],
        -                  "type": "object"
        -                },
        -                "type": "array"
        -              },
        -              "drawings": {
        -                "anyOf": [
        -                  {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.6 — paid-tier drawing artefact pointer.\n\n`url` is an R2-signed URL; expiry is carried in `_meta.deliverables.expires_at`\non the envelope (not duplicated here). `layers` is DXF-only; PDF/SVG\ncallers omit it.",
        -                      "properties": {
        -                        "drawing_type": {
        -                          "enum": [
        -                            "section",
        -                            "plan",
        -                            "elevation",
        -                            "isometric",
        -                            "detail"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "format": {
        -                          "enum": [
        -                            "DXF",
        -                            "PDF",
        -                            "SVG"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "layers": {
        -                          "anyOf": [
        -                            {
        -                              "items": {
        -                                "type": "string"
        -                              },
        -                              "type": "array"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ],
        -                          "default": null
        -                        },
        -                        "scale": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "sheet_size": {
        -                          "enum": [
        -                            "A1",
        -                            "A2",
        -                            "A3",
        -                            "A4"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "url": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "drawing_type",
        -                        "format",
        -                        "url",
        -                        "sheet_size",
        -                        "scale"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "parameters_used": {
        -                "additionalProperties": false,
        -                "description": "Schema § 1.2 — the parameter snapshot the engine actually used.\n\nSplits user-supplied values from engine defaults so customers can see\nwhich numbers came from them and which the engine filled in. Every\ndefaulted parameter SHOULD have a corresponding entry in `assumptions`\n— the bridge layer enforces this when wrapping engine output.",
        -                "properties": {
        -                  "assumptions": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "engine_defaults": {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  "resolved_from_description": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "additionalProperties": false,
        -                          "description": "Schema § 1.2 — a parameter resolved by the forgiving-input layer.\n\nPopulated by the Track B-Forgiving Haiku-4.5 resolution pass; until that\nlayer lands, instances are constructed only by tests. `source` distinguishes\nthe resolution path so customers can audit which fields were inferred.",
        -                          "properties": {
        -                            "confidence": {
        -                              "anyOf": [
        -                                {
        -                                  "enum": [
        -                                    "high",
        -                                    "medium",
        -                                    "low"
        -                                  ],
        -                                  "type": "string"
        -                                },
        -                                {
        -                                  "type": "null"
        -                                }
        -                              ],
        -                              "default": null
        -                            },
        -                            "field_name": {
        -                              "minLength": 1,
        -                              "type": "string"
        -                            },
        -                            "resolved_value": {},
        -                            "source": {
        -                              "enum": [
        -                                "description_field",
        -                                "haiku_resolution",
        -                                "engine_default"
        -                              ],
        -                              "type": "string"
        -                            }
        -                          },
        -                          "required": [
        -                            "field_name",
        -                            "resolved_value",
        -                            "source"
        -                          ],
        -                          "type": "object"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "user_supplied": {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  }
        -                },
        -                "type": "object"
        -              },
        -              "standard": {
        -                "enum": [
        -                  "CESMM4",
        -                  "NRM2",
        -                  "SMM7",
        -                  "MMHW"
        -                ],
        -                "type": "string"
        -              },
        -              "text_summary": {
        -                "maxLength": 2000,
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "totals_summary": {
        -                "additionalProperties": false,
        -                "description": "Schema § 1.4 — totals_summary as a typed wrapper around the free-form dict.\n\nWire shape is a flat object (`{\"concrete_m3\": {...}, \"rebar_t\": {...}}`).\nWe model it as `RootModel`-equivalent via `model_config(extra=\"allow\")`\n+ a single `__root__`-style `entries` dict. Pydantic v2 recommends\n`RootModel` for free-form roots; using a wrapper class keeps the import\nsurface uniform with the rest of this module.",
        -                "properties": {
        -                  "entries": {
        -                    "additionalProperties": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.4 — single material/work-class total entry.",
        -                      "properties": {
        -                        "quantity": {
        -                          "minimum": 0,
        -                          "type": "number"
        -                        },
        -                        "unit": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "quantity",
        -                        "unit"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "object"
        -                  }
        -                },
        -                "type": "object"
        -              },
        -              "warnings": {
        -                "items": {
        -                  "additionalProperties": false,
        -                  "description": "Schema § 1.8 — a non-fatal geometry advisory (56th-fire T2).\n\nThe wire projection of the engine's `core.GeometryWarning`. Advisory only:\na warning NEVER changes a measured quantity — it flags geometry that is\nvalid but likely a mistake (e.g. a stale dependent-height default). Present\non BOTH tiers — a correctness/safety signal, not a paid feature.",
        -                  "properties": {
        -                    "affected_params": {
        -                      "items": {
        -                        "type": "string"
        -                      },
        -                      "type": "array"
        -                    },
        -                    "code": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "detail": {
        -                      "additionalProperties": {
        -                        "type": "number"
        -                      },
        -                      "type": "object"
        -                    },
        -                    "message": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "severity": {
        -                      "enum": [
        -                        "info",
        -                        "advisory",
        -                        "caution"
        -                      ],
        -                      "type": "string"
        -                    }
        -                  },
        -                  "required": [
        -                    "code",
        -                    "severity",
        -                    "message"
        -                  ],
        -                  "type": "object"
        -                },
        -                "type": "array"
        -              }
        -            },
        -            "required": [
        -              "assembly_slug",
        -              "standard",
        -              "parameters_used",
        -              "boq_rows",
        -              "totals_summary",
        -              "text_summary"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      },
        -      "error": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        -            "properties": {
        -              "code": {
        -                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        -                "enum": [
        -                  "RATE_LIMIT_EXCEEDED",
        -                  "TIER_INSUFFICIENT",
        -                  "INVALID_INPUT",
        -                  "SCHEMA_VERSION_MISMATCH",
        -                  "SCHEMA_INVARIANT_VIOLATION",
        -                  "UPSTREAM_TIMEOUT",
        -                  "BACKEND_FAILURE",
        -                  "IP_BLOCKED",
        -                  "RESOURCE_NOT_FOUND",
        -                  "RENDER_FAILURE",
        -                  "OCR_LOW_CONFIDENCE",
        -                  "MANUAL_REVIEW_REQUIRED",
        -                  "ACCEPTANCE_REQUIRED",
        -                  "INVALID_TOKEN"
        -                ],
        -                "type": "string"
        -              },
        -              "details": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "message": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "recoverable": {
        -                "type": "boolean"
        -              },
        -              "retry_after_seconds": {
        -                "anyOf": [
        -                  {
        -                    "minimum": 0,
        -                    "type": "integer"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              }
        -            },
        -            "required": [
        -              "code",
        -              "message",
        -              "recoverable"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      }
        -    },
        -    "required": [
        -      "_meta"
        -    ],
        -    "type": "object"
        -  },
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "_meta": {
        -        "additionalProperties": false,
        -        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        -        "properties": {
        -          "deliverables": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        -                "properties": {
        -                  "docx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "dxf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "expires_at": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  },
        -                  "pdf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "xlsx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "expires_at"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "document_id": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "issued_at": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "rate_limit_remaining": {
        -            "anyOf": [
        -              {
        -                "minimum": 0,
        -                "type": "integer"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "request_id": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "schema_version": {
        -            "const": "1.0.0",
        -            "default": "1.0.0",
        -            "type": "string"
        -          },
        -          "scope_boundary": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        -                "properties": {
        -                  "not_in_scope": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "produced": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "recommended_companions": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "type": "string"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "produced",
        -                  "not_in_scope"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tier": {
        -            "enum": [
        -              "free",
        -              "paid"
        -            ],
        -            "type": "string"
        -          },
        -          "tier_upgrade": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        -                "properties": {
        -                  "available_tiers": {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        -                      "properties": {
        -                        "billing": {
        -                          "enum": [
        -                            "one_off",
        -                            "monthly",
        -                            "annual"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "currency": {
        -                          "enum": [
        -                            "GBP",
        -                            "SGD",
        -                            "EUR",
        -                            "USD",
        -                            "CAD",
        -                            "AUD",
        -                            "NZD",
        -                            "MYR"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "display_name": {
        -                          "type": "string"
        -                        },
        -                        "price_local": {
        -                          "type": "number"
        -                        },
        -                        "tier_slug": {
        -                          "enum": [
        -                            "7_day_pass",
        -                            "solo",
        -                            "studio",
        -                            "practice"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "unlock_summary": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "tier_slug",
        -                        "display_name",
        -                        "price_local",
        -                        "currency",
        -                        "billing",
        -                        "unlock_summary"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "current_tier": {
        -                    "const": "free",
        -                    "default": "free",
        -                    "type": "string"
        -                  },
        -                  "pass_credit": {
        -                    "anyOf": [
        -                      {
        -                        "additionalProperties": false,
        -                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        -                        "properties": {
        -                          "amount_local": {
        -                            "type": "number"
        -                          },
        -                          "applies_to": {
        -                            "const": "solo_first_month",
        -                            "default": "solo_first_month",
        -                            "type": "string"
        -                          },
        -                          "currency": {
        -                            "type": "string"
        -                          },
        -                          "redeemable_until": {
        -                            "type": "string"
        -                          }
        -                        },
        -                        "required": [
        -                          "amount_local",
        -                          "currency",
        -                          "redeemable_until"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "pricing_url": {
        -                    "default": "https://civilquants.com/pricing",
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "available_tiers"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tos_url": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "upgrade_hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "warranty_disclaimer": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          }
        -        },
        -        "required": [
        -          "request_id",
        -          "issued_at",
        -          "tier"
        -        ],
        -        "type": "object"
        -      },
        -      "data": {
        -        "default": null,
        -        "title": "Data"
        -      },
        -      "error": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        -            "properties": {
        -              "code": {
        -                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        -                "enum": [
        -                  "RATE_LIMIT_EXCEEDED",
        -                  "TIER_INSUFFICIENT",
        -                  "INVALID_INPUT",
        -                  "SCHEMA_VERSION_MISMATCH",
        -                  "SCHEMA_INVARIANT_VIOLATION",
        -                  "UPSTREAM_TIMEOUT",
        -                  "BACKEND_FAILURE",
        -                  "IP_BLOCKED",
        -                  "RESOURCE_NOT_FOUND",
        -                  "RENDER_FAILURE",
        -                  "OCR_LOW_CONFIDENCE",
        -                  "MANUAL_REVIEW_REQUIRED",
        -                  "ACCEPTANCE_REQUIRED",
        -                  "INVALID_TOKEN"
        -                ],
        -                "type": "string"
        -              },
        -              "details": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "message": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "recoverable": {
        -                "type": "boolean"
        -              },
        -              "retry_after_seconds": {
        -                "anyOf": [
        -                  {
        -                    "minimum": 0,
        -                    "type": "integer"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              }
        -            },
        -            "required": [
        -              "code",
        -              "message",
        -              "recoverable"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      }
        -    },
        -    "required": [
        -      "_meta"
        -    ],
        -    "type": "object"
        -  }
        -]New value: +[
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "_meta": {
        +        "additionalProperties": false,
        +        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        +        "properties": {
        +          "deliverables": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        +                "properties": {
        +                  "docx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "dxf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "expires_at": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  },
        +                  "pdf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "xlsx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "expires_at"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "document_id": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "issued_at": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "rate_limit_remaining": {
        +            "anyOf": [
        +              {
        +                "minimum": 0,
        +                "type": "integer"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "request_id": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "schema_version": {
        +            "const": "1.0.0",
        +            "default": "1.0.0",
        +            "type": "string"
        +          },
        +          "scope_boundary": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        +                "properties": {
        +                  "not_in_scope": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "produced": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "recommended_companions": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "type": "string"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "produced",
        +                  "not_in_scope"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tier": {
        +            "enum": [
        +              "free",
        +              "paid"
        +            ],
        +            "type": "string"
        +          },
        +          "tier_upgrade": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        +                "properties": {
        +                  "available_tiers": {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        +                      "properties": {
        +                        "billing": {
        +                          "enum": [
        +                            "one_off",
        +                            "monthly",
        +                            "annual"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "currency": {
        +                          "enum": [
        +                            "GBP",
        +                            "SGD",
        +                            "EUR",
        +                            "USD",
        +                            "CAD",
        +                            "AUD",
        +                            "NZD",
        +                            "MYR"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "display_name": {
        +                          "type": "string"
        +                        },
        +                        "price_local": {
        +                          "type": "number"
        +                        },
        +                        "tier_slug": {
        +                          "enum": [
        +                            "7_day_pass",
        +                            "solo",
        +                            "studio",
        +                            "practice"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "unlock_summary": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "tier_slug",
        +                        "display_name",
        +                        "price_local",
        +                        "currency",
        +                        "billing",
        +                        "unlock_summary"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "current_tier": {
        +                    "const": "free",
        +                    "default": "free",
        +                    "type": "string"
        +                  },
        +                  "pass_credit": {
        +                    "anyOf": [
        +                      {
        +                        "additionalProperties": false,
        +                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        +                        "properties": {
        +                          "amount_local": {
        +                            "type": "number"
        +                          },
        +                          "applies_to": {
        +                            "const": "solo_first_month",
        +                            "default": "solo_first_month",
        +                            "type": "string"
        +                          },
        +                          "currency": {
        +                            "type": "string"
        +                          },
        +                          "redeemable_until": {
        +                            "type": "string"
        +                          }
        +                        },
        +                        "required": [
        +                          "amount_local",
        +                          "currency",
        +                          "redeemable_until"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "pricing_url": {
        +                    "default": "https://civilquants.com/pricing",
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "available_tiers"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tos_url": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "upgrade_hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "warranty_disclaimer": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          }
        +        },
        +        "required": [
        +          "request_id",
        +          "issued_at",
        +          "tier"
        +        ],
        +        "type": "object"
        +      },
        +      "data": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Schema § 1.1 — the typed payload returned inside `MCPResponse[ComputeResult]`.\n\nFree-tier responses omit `drawings` (the downloadable CAD artefact\npointers — the paid differentiator); the bridge enforces this. The\n`audit_trail` and the inline `drawing` preview are present on BOTH tiers\n(V1 ALIGN / 60th-fire D + C). `text_summary` is bounded to 2000 chars —\nkeeps the LLM-facing summary token-cheap and forces longer narrative into\nBoQ row descriptions where it belongs. `warnings` is the non-fatal\ngeometry advisory list (both tiers).",
        +            "properties": {
        +              "assembly_slug": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "audit_trail": {
        +                "anyOf": [
        +                  {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.7 — paid-tier audit-trail entry.\n\nOne entry per BoQ row; `boq_row_index` ties to the row position in\n`ComputeResult.boq_rows`. `derivation` is the human-readable formula\nwalk-through; `formula` is the optional formal expression.",
        +                      "properties": {
        +                        "boq_row_index": {
        +                          "minimum": 0,
        +                          "type": "integer"
        +                        },
        +                        "derivation": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "formula": {
        +                          "anyOf": [
        +                            {
        +                              "type": "string"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ],
        +                          "default": null
        +                        },
        +                        "id": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "parameters_referenced": {
        +                          "items": {
        +                            "type": "string"
        +                          },
        +                          "type": "array"
        +                        }
        +                      },
        +                      "required": [
        +                        "id",
        +                        "boq_row_index",
        +                        "derivation"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "boq_rows": {
        +                "items": {
        +                  "additionalProperties": false,
        +                  "description": "Schema § 1.3 — a single bill row in the requested standard's format.\n\n`description` is the non-verbatim functional description per spec § 13.9 /\n§ 15 invariant — NEVER reproduces a standard's verbatim clause text.\n`rate` / `amount` ship null because rates are commodity data the customer\nowns; the engine's job is the measurement, not the pricing.",
        +                  "properties": {
        +                    "amount": {
        +                      "anyOf": [
        +                        {
        +                          "type": "number"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "attribution": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "audit_id": {
        +                      "anyOf": [
        +                        {
        +                          "type": "string"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "description": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "quantity": {
        +                      "minimum": 0,
        +                      "type": "number"
        +                    },
        +                    "rate": {
        +                      "anyOf": [
        +                        {
        +                          "type": "number"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "unit": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "work_section": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    }
        +                  },
        +                  "required": [
        +                    "work_section",
        +                    "description",
        +                    "quantity",
        +                    "unit",
        +                    "attribution"
        +                  ],
        +                  "type": "object"
        +                },
        +                "type": "array"
        +              },
        +              "drawing": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": false,
        +                    "description": "Schema § 1.6a — inline server-rendered SVG preview of the geometry.\n\nThe MCP mirror of the web ``/compute`` response's ``drawing`` field\n(``api.schemas.compute.DrawingRef``): the same on-screen dimensioned\ndrawing both tiers see in the workspace, surfaced on the MCP compute\nresponse so a chat client can render it inline (60th-fire item C). This\nis the on-screen preview — present on BOTH tiers per the free/paid\nboundary; the downloadable CAD artefacts (DXF / dimensioned PDF) remain\nthe paid differentiator via the export tools.\n\nDefined here rather than importing ``DrawingRef`` because the web\n``schemas`` package imports back into this module (``schemas.render``),\nso reusing it would create an import cycle — the MCP wire contract keeps\nits own copy, the same pattern as ``BoQRow`` / ``DrawingReference``.",
        +                    "properties": {
        +                      "entity_count": {
        +                        "minimum": 0,
        +                        "type": "integer"
        +                      },
        +                      "svg_b64": {
        +                        "minLength": 1,
        +                        "type": "string"
        +                      },
        +                      "unit_of_drawing": {
        +                        "const": "m",
        +                        "default": "m",
        +                        "type": "string"
        +                      },
        +                      "viewbox_height": {
        +                        "exclusiveMinimum": 0,
        +                        "type": "number"
        +                      },
        +                      "viewbox_width": {
        +                        "exclusiveMinimum": 0,
        +                        "type": "number"
        +                      },
        +                      "viewbox_x": {
        +                        "type": "number"
        +                      },
        +                      "viewbox_y": {
        +                        "type": "number"
        +                      }
        +                    },
        +                    "required": [
        +                      "svg_b64",
        +                      "viewbox_x",
        +                      "viewbox_y",
        +                      "viewbox_width",
        +                      "viewbox_height",
        +                      "entity_count"
        +                    ],
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "drawings": {
        +                "anyOf": [
        +                  {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.6 — paid-tier drawing artefact pointer.\n\n`url` is an R2-signed URL; expiry is carried in `_meta.deliverables.expires_at`\non the envelope (not duplicated here). `layers` is DXF-only; PDF/SVG\ncallers omit it.",
        +                      "properties": {
        +                        "drawing_type": {
        +                          "enum": [
        +                            "section",
        +                            "plan",
        +                            "elevation",
        +                            "isometric",
        +                            "detail"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "format": {
        +                          "enum": [
        +                            "DXF",
        +                            "PDF",
        +                            "SVG"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "layers": {
        +                          "anyOf": [
        +                            {
        +                              "items": {
        +                                "type": "string"
        +                              },
        +                              "type": "array"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ],
        +                          "default": null
        +                        },
        +                        "scale": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "sheet_size": {
        +                          "enum": [
        +                            "A1",
        +                            "A2",
        +                            "A3",
        +                            "A4"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "url": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "drawing_type",
        +                        "format",
        +                        "url",
        +                        "sheet_size",
        +                        "scale"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "parameters_used": {
        +                "additionalProperties": false,
        +                "description": "Schema § 1.2 — the parameter snapshot the engine actually used.\n\nSplits user-supplied values from engine defaults so customers can see\nwhich numbers came from them and which the engine filled in. Every\ndefaulted parameter SHOULD have a corresponding entry in `assumptions`\n— the bridge layer enforces this when wrapping engine output.",
        +                "properties": {
        +                  "assumptions": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "engine_defaults": {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  "resolved_from_description": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "additionalProperties": false,
        +                          "description": "Schema § 1.2 — a parameter resolved by the forgiving-input layer.\n\nPopulated by the Track B-Forgiving Haiku-4.5 resolution pass; until that\nlayer lands, instances are constructed only by tests. `source` distinguishes\nthe resolution path so customers can audit which fields were inferred.",
        +                          "properties": {
        +                            "confidence": {
        +                              "anyOf": [
        +                                {
        +                                  "enum": [
        +                                    "high",
        +                                    "medium",
        +                                    "low"
        +                                  ],
        +                                  "type": "string"
        +                                },
        +                                {
        +                                  "type": "null"
        +                                }
        +                              ],
        +                              "default": null
        +                            },
        +                            "field_name": {
        +                              "minLength": 1,
        +                              "type": "string"
        +                            },
        +                            "resolved_value": {},
        +                            "source": {
        +                              "enum": [
        +                                "description_field",
        +                                "haiku_resolution",
        +                                "engine_default"
        +                              ],
        +                              "type": "string"
        +                            }
        +                          },
        +                          "required": [
        +                            "field_name",
        +                            "resolved_value",
        +                            "source"
        +                          ],
        +                          "type": "object"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "user_supplied": {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  }
        +                },
        +                "type": "object"
        +              },
        +              "standard": {
        +                "enum": [
        +                  "CESMM4",
        +                  "NRM2",
        +                  "SMM7",
        +                  "MMHW"
        +                ],
        +                "type": "string"
        +              },
        +              "text_summary": {
        +                "maxLength": 2000,
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "totals_summary": {
        +                "additionalProperties": false,
        +                "description": "Schema § 1.4 — totals_summary as a typed wrapper around the free-form dict.\n\nWire shape is a flat object (`{\"concrete_m3\": {...}, \"rebar_t\": {...}}`).\nWe model it as `RootModel`-equivalent via `model_config(extra=\"allow\")`\n+ a single `__root__`-style `entries` dict. Pydantic v2 recommends\n`RootModel` for free-form roots; using a wrapper class keeps the import\nsurface uniform with the rest of this module.",
        +                "properties": {
        +                  "entries": {
        +                    "additionalProperties": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.4 — single material/work-class total entry.",
        +                      "properties": {
        +                        "quantity": {
        +                          "minimum": 0,
        +                          "type": "number"
        +                        },
        +                        "unit": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "quantity",
        +                        "unit"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "object"
        +                  }
        +                },
        +                "type": "object"
        +              },
        +              "warnings": {
        +                "items": {
        +                  "additionalProperties": false,
        +                  "description": "Schema § 1.8 — a non-fatal geometry advisory (56th-fire T2).\n\nThe wire projection of the engine's `core.GeometryWarning`. Advisory only:\na warning NEVER changes a measured quantity — it flags geometry that is\nvalid but likely a mistake (e.g. a stale dependent-height default). Present\non BOTH tiers — a correctness/safety signal, not a paid feature.",
        +                  "properties": {
        +                    "affected_params": {
        +                      "items": {
        +                        "type": "string"
        +                      },
        +                      "type": "array"
        +                    },
        +                    "code": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "detail": {
        +                      "additionalProperties": {
        +                        "type": "number"
        +                      },
        +                      "type": "object"
        +                    },
        +                    "message": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "severity": {
        +                      "enum": [
        +                        "info",
        +                        "advisory",
        +                        "caution"
        +                      ],
        +                      "type": "string"
        +                    }
        +                  },
        +                  "required": [
        +                    "code",
        +                    "severity",
        +                    "message"
        +                  ],
        +                  "type": "object"
        +                },
        +                "type": "array"
        +              }
        +            },
        +            "required": [
        +              "assembly_slug",
        +              "standard",
        +              "parameters_used",
        +              "boq_rows",
        +              "totals_summary",
        +              "text_summary"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      },
        +      "error": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        +            "properties": {
        +              "code": {
        +                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        +                "enum": [
        +                  "RATE_LIMIT_EXCEEDED",
        +                  "TIER_INSUFFICIENT",
        +                  "INVALID_INPUT",
        +                  "SCHEMA_VERSION_MISMATCH",
        +                  "SCHEMA_INVARIANT_VIOLATION",
        +                  "UPSTREAM_TIMEOUT",
        +                  "BACKEND_FAILURE",
        +                  "IP_BLOCKED",
        +                  "RESOURCE_NOT_FOUND",
        +                  "RENDER_FAILURE",
        +                  "OCR_LOW_CONFIDENCE",
        +                  "MANUAL_REVIEW_REQUIRED",
        +                  "ACCEPTANCE_REQUIRED",
        +                  "INVALID_TOKEN"
        +                ],
        +                "type": "string"
        +              },
        +              "details": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "message": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "recoverable": {
        +                "type": "boolean"
        +              },
        +              "retry_after_seconds": {
        +                "anyOf": [
        +                  {
        +                    "minimum": 0,
        +                    "type": "integer"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              }
        +            },
        +            "required": [
        +              "code",
        +              "message",
        +              "recoverable"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      }
        +    },
        +    "required": [
        +      "_meta"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "_meta": {
        +        "additionalProperties": false,
        +        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        +        "properties": {
        +          "deliverables": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        +                "properties": {
        +                  "docx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "dxf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "expires_at": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  },
        +                  "pdf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "xlsx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "expires_at"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "document_id": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "issued_at": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "rate_limit_remaining": {
        +            "anyOf": [
        +              {
        +                "minimum": 0,
        +                "type": "integer"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "request_id": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "schema_version": {
        +            "const": "1.0.0",
        +            "default": "1.0.0",
        +            "type": "string"
        +          },
        +          "scope_boundary": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        +                "properties": {
        +                  "not_in_scope": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "produced": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "recommended_companions": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "type": "string"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "produced",
        +                  "not_in_scope"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tier": {
        +            "enum": [
        +              "free",
        +              "paid"
        +            ],
        +            "type": "string"
        +          },
        +          "tier_upgrade": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        +                "properties": {
        +                  "available_tiers": {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        +                      "properties": {
        +                        "billing": {
        +                          "enum": [
        +                            "one_off",
        +                            "monthly",
        +                            "annual"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "currency": {
        +                          "enum": [
        +                            "GBP",
        +                            "SGD",
        +                            "EUR",
        +                            "USD",
        +                            "CAD",
        +                            "AUD",
        +                            "NZD",
        +                            "MYR"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "display_name": {
        +                          "type": "string"
        +                        },
        +                        "price_local": {
        +                          "type": "number"
        +                        },
        +                        "tier_slug": {
        +                          "enum": [
        +                            "7_day_pass",
        +                            "solo",
        +                            "studio",
        +                            "practice"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "unlock_summary": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "tier_slug",
        +                        "display_name",
        +                        "price_local",
        +                        "currency",
        +                        "billing",
        +                        "unlock_summary"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "current_tier": {
        +                    "const": "free",
        +                    "default": "free",
        +                    "type": "string"
        +                  },
        +                  "pass_credit": {
        +                    "anyOf": [
        +                      {
        +                        "additionalProperties": false,
        +                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        +                        "properties": {
        +                          "amount_local": {
        +                            "type": "number"
        +                          },
        +                          "applies_to": {
        +                            "const": "solo_first_month",
        +                            "default": "solo_first_month",
        +                            "type": "string"
        +                          },
        +                          "currency": {
        +                            "type": "string"
        +                          },
        +                          "redeemable_until": {
        +                            "type": "string"
        +                          }
        +                        },
        +                        "required": [
        +                          "amount_local",
        +                          "currency",
        +                          "redeemable_until"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "pricing_url": {
        +                    "default": "https://civilquants.com/pricing",
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "available_tiers"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tos_url": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "upgrade_hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "warranty_disclaimer": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          }
        +        },
        +        "required": [
        +          "request_id",
        +          "issued_at",
        +          "tier"
        +        ],
        +        "type": "object"
        +      },
        +      "data": {
        +        "default": null,
        +        "title": "Data"
        +      },
        +      "error": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        +            "properties": {
        +              "code": {
        +                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        +                "enum": [
        +                  "RATE_LIMIT_EXCEEDED",
        +                  "TIER_INSUFFICIENT",
        +                  "INVALID_INPUT",
        +                  "SCHEMA_VERSION_MISMATCH",
        +                  "SCHEMA_INVARIANT_VIOLATION",
        +                  "UPSTREAM_TIMEOUT",
        +                  "BACKEND_FAILURE",
        +                  "IP_BLOCKED",
        +                  "RESOURCE_NOT_FOUND",
        +                  "RENDER_FAILURE",
        +                  "OCR_LOW_CONFIDENCE",
        +                  "MANUAL_REVIEW_REQUIRED",
        +                  "ACCEPTANCE_REQUIRED",
        +                  "INVALID_TOKEN"
        +                ],
        +                "type": "string"
        +              },
        +              "details": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "message": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "recoverable": {
        +                "type": "boolean"
        +              },
        +              "retry_after_seconds": {
        +                "anyOf": [
        +                  {
        +                    "minimum": 0,
        +                    "type": "integer"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              }
        +            },
        +            "required": [
        +              "code",
        +              "message",
        +              "recoverable"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      }
        +    },
        +    "required": [
        +      "_meta"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedcompute_permeable_pavement3 fields changed
      • addedInput schema / properties / deliverables
        Added value: +{
        +  "anyOf": [
        +    {
        +      "items": {
        +        "const": "xlsx",
        +        "type": "string"
        +      },
        +      "type": "array"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null
        +}
      • addedInput schema / properties / output_mode
        Added value: +{
        +  "default": "full_json",
        +  "enum": [
        +    "summary",
        +    "boq",
        +    "boq_with_backup",
        +    "full_json"
        +  ],
        +  "type": "string"
        +}
      • changedOutput schema / properties / result / anyOf
        Previous value: -[
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "_meta": {
        -        "additionalProperties": false,
        -        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        -        "properties": {
        -          "deliverables": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        -                "properties": {
        -                  "docx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "dxf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "expires_at": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  },
        -                  "pdf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "xlsx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "expires_at"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "document_id": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "issued_at": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "rate_limit_remaining": {
        -            "anyOf": [
        -              {
        -                "minimum": 0,
        -                "type": "integer"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "request_id": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "schema_version": {
        -            "const": "1.0.0",
        -            "default": "1.0.0",
        -            "type": "string"
        -          },
        -          "scope_boundary": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        -                "properties": {
        -                  "not_in_scope": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "produced": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "recommended_companions": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "type": "string"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "produced",
        -                  "not_in_scope"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tier": {
        -            "enum": [
        -              "free",
        -              "paid"
        -            ],
        -            "type": "string"
        -          },
        -          "tier_upgrade": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        -                "properties": {
        -                  "available_tiers": {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        -                      "properties": {
        -                        "billing": {
        -                          "enum": [
        -                            "one_off",
        -                            "monthly",
        -                            "annual"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "currency": {
        -                          "enum": [
        -                            "GBP",
        -                            "SGD",
        -                            "EUR",
        -                            "USD",
        -                            "CAD",
        -                            "AUD",
        -                            "NZD",
        -                            "MYR"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "display_name": {
        -                          "type": "string"
        -                        },
        -                        "price_local": {
        -                          "type": "number"
        -                        },
        -                        "tier_slug": {
        -                          "enum": [
        -                            "7_day_pass",
        -                            "solo",
        -                            "studio",
        -                            "practice"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "unlock_summary": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "tier_slug",
        -                        "display_name",
        -                        "price_local",
        -                        "currency",
        -                        "billing",
        -                        "unlock_summary"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "current_tier": {
        -                    "const": "free",
        -                    "default": "free",
        -                    "type": "string"
        -                  },
        -                  "pass_credit": {
        -                    "anyOf": [
        -                      {
        -                        "additionalProperties": false,
        -                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        -                        "properties": {
        -                          "amount_local": {
        -                            "type": "number"
        -                          },
        -                          "applies_to": {
        -                            "const": "solo_first_month",
        -                            "default": "solo_first_month",
        -                            "type": "string"
        -                          },
        -                          "currency": {
        -                            "type": "string"
        -                          },
        -                          "redeemable_until": {
        -                            "type": "string"
        -                          }
        -                        },
        -                        "required": [
        -                          "amount_local",
        -                          "currency",
        -                          "redeemable_until"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "pricing_url": {
        -                    "default": "https://civilquants.com/pricing",
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "available_tiers"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tos_url": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "upgrade_hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "warranty_disclaimer": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          }
        -        },
        -        "required": [
        -          "request_id",
        -          "issued_at",
        -          "tier"
        -        ],
        -        "type": "object"
        -      },
        -      "data": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Schema § 1.1 — the typed payload returned inside `MCPResponse[ComputeResult]`.\n\nFree-tier responses MUST omit `drawings` and `audit_trail` (the bridge\nenforces this); paid-tier responses populate both. `text_summary` is\nbounded to 2000 chars — keeps the LLM-facing summary token-cheap and\nforces longer narrative into BoQ row descriptions where it belongs.\n`warnings` is the non-fatal geometry advisory list (both tiers).",
        -            "properties": {
        -              "assembly_slug": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "audit_trail": {
        -                "anyOf": [
        -                  {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.7 — paid-tier audit-trail entry.\n\nOne entry per BoQ row; `boq_row_index` ties to the row position in\n`ComputeResult.boq_rows`. `derivation` is the human-readable formula\nwalk-through; `formula` is the optional formal expression.",
        -                      "properties": {
        -                        "boq_row_index": {
        -                          "minimum": 0,
        -                          "type": "integer"
        -                        },
        -                        "derivation": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "formula": {
        -                          "anyOf": [
        -                            {
        -                              "type": "string"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ],
        -                          "default": null
        -                        },
        -                        "id": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "parameters_referenced": {
        -                          "items": {
        -                            "type": "string"
        -                          },
        -                          "type": "array"
        -                        }
        -                      },
        -                      "required": [
        -                        "id",
        -                        "boq_row_index",
        -                        "derivation"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "boq_rows": {
        -                "items": {
        -                  "additionalProperties": false,
        -                  "description": "Schema § 1.3 — a single bill row in the requested standard's format.\n\n`description` is the non-verbatim functional description per spec § 13.9 /\n§ 15 invariant — NEVER reproduces a standard's verbatim clause text.\n`rate` / `amount` ship null because rates are commodity data the customer\nowns; the engine's job is the measurement, not the pricing.",
        -                  "properties": {
        -                    "amount": {
        -                      "anyOf": [
        -                        {
        -                          "type": "number"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "attribution": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "audit_id": {
        -                      "anyOf": [
        -                        {
        -                          "type": "string"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "description": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "quantity": {
        -                      "minimum": 0,
        -                      "type": "number"
        -                    },
        -                    "rate": {
        -                      "anyOf": [
        -                        {
        -                          "type": "number"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "unit": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "work_section": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    }
        -                  },
        -                  "required": [
        -                    "work_section",
        -                    "description",
        -                    "quantity",
        -                    "unit",
        -                    "attribution"
        -                  ],
        -                  "type": "object"
        -                },
        -                "type": "array"
        -              },
        -              "drawings": {
        -                "anyOf": [
        -                  {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.6 — paid-tier drawing artefact pointer.\n\n`url` is an R2-signed URL; expiry is carried in `_meta.deliverables.expires_at`\non the envelope (not duplicated here). `layers` is DXF-only; PDF/SVG\ncallers omit it.",
        -                      "properties": {
        -                        "drawing_type": {
        -                          "enum": [
        -                            "section",
        -                            "plan",
        -                            "elevation",
        -                            "isometric",
        -                            "detail"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "format": {
        -                          "enum": [
        -                            "DXF",
        -                            "PDF",
        -                            "SVG"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "layers": {
        -                          "anyOf": [
        -                            {
        -                              "items": {
        -                                "type": "string"
        -                              },
        -                              "type": "array"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ],
        -                          "default": null
        -                        },
        -                        "scale": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "sheet_size": {
        -                          "enum": [
        -                            "A1",
        -                            "A2",
        -                            "A3",
        -                            "A4"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "url": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "drawing_type",
        -                        "format",
        -                        "url",
        -                        "sheet_size",
        -                        "scale"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "parameters_used": {
        -                "additionalProperties": false,
        -                "description": "Schema § 1.2 — the parameter snapshot the engine actually used.\n\nSplits user-supplied values from engine defaults so customers can see\nwhich numbers came from them and which the engine filled in. Every\ndefaulted parameter SHOULD have a corresponding entry in `assumptions`\n— the bridge layer enforces this when wrapping engine output.",
        -                "properties": {
        -                  "assumptions": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "engine_defaults": {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  "resolved_from_description": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "additionalProperties": false,
        -                          "description": "Schema § 1.2 — a parameter resolved by the forgiving-input layer.\n\nPopulated by the Track B-Forgiving Haiku-4.5 resolution pass; until that\nlayer lands, instances are constructed only by tests. `source` distinguishes\nthe resolution path so customers can audit which fields were inferred.",
        -                          "properties": {
        -                            "confidence": {
        -                              "anyOf": [
        -                                {
        -                                  "enum": [
        -                                    "high",
        -                                    "medium",
        -                                    "low"
        -                                  ],
        -                                  "type": "string"
        -                                },
        -                                {
        -                                  "type": "null"
        -                                }
        -                              ],
        -                              "default": null
        -                            },
        -                            "field_name": {
        -                              "minLength": 1,
        -                              "type": "string"
        -                            },
        -                            "resolved_value": {},
        -                            "source": {
        -                              "enum": [
        -                                "description_field",
        -                                "haiku_resolution",
        -                                "engine_default"
        -                              ],
        -                              "type": "string"
        -                            }
        -                          },
        -                          "required": [
        -                            "field_name",
        -                            "resolved_value",
        -                            "source"
        -                          ],
        -                          "type": "object"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "user_supplied": {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  }
        -                },
        -                "type": "object"
        -              },
        -              "standard": {
        -                "enum": [
        -                  "CESMM4",
        -                  "NRM2",
        -                  "SMM7",
        -                  "MMHW"
        -                ],
        -                "type": "string"
        -              },
        -              "text_summary": {
        -                "maxLength": 2000,
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "totals_summary": {
        -                "additionalProperties": false,
        -                "description": "Schema § 1.4 — totals_summary as a typed wrapper around the free-form dict.\n\nWire shape is a flat object (`{\"concrete_m3\": {...}, \"rebar_t\": {...}}`).\nWe model it as `RootModel`-equivalent via `model_config(extra=\"allow\")`\n+ a single `__root__`-style `entries` dict. Pydantic v2 recommends\n`RootModel` for free-form roots; using a wrapper class keeps the import\nsurface uniform with the rest of this module.",
        -                "properties": {
        -                  "entries": {
        -                    "additionalProperties": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.4 — single material/work-class total entry.",
        -                      "properties": {
        -                        "quantity": {
        -                          "minimum": 0,
        -                          "type": "number"
        -                        },
        -                        "unit": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "quantity",
        -                        "unit"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "object"
        -                  }
        -                },
        -                "type": "object"
        -              },
        -              "warnings": {
        -                "items": {
        -                  "additionalProperties": false,
        -                  "description": "Schema § 1.8 — a non-fatal geometry advisory (56th-fire T2).\n\nThe wire projection of the engine's `core.GeometryWarning`. Advisory only:\na warning NEVER changes a measured quantity — it flags geometry that is\nvalid but likely a mistake (e.g. a stale dependent-height default). Present\non BOTH tiers — a correctness/safety signal, not a paid feature.",
        -                  "properties": {
        -                    "affected_params": {
        -                      "items": {
        -                        "type": "string"
        -                      },
        -                      "type": "array"
        -                    },
        -                    "code": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "detail": {
        -                      "additionalProperties": {
        -                        "type": "number"
        -                      },
        -                      "type": "object"
        -                    },
        -                    "message": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "severity": {
        -                      "enum": [
        -                        "info",
        -                        "advisory",
        -                        "caution"
        -                      ],
        -                      "type": "string"
        -                    }
        -                  },
        -                  "required": [
        -                    "code",
        -                    "severity",
        -                    "message"
        -                  ],
        -                  "type": "object"
        -                },
        -                "type": "array"
        -              }
        -            },
        -            "required": [
        -              "assembly_slug",
        -              "standard",
        -              "parameters_used",
        -              "boq_rows",
        -              "totals_summary",
        -              "text_summary"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      },
        -      "error": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        -            "properties": {
        -              "code": {
        -                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        -                "enum": [
        -                  "RATE_LIMIT_EXCEEDED",
        -                  "TIER_INSUFFICIENT",
        -                  "INVALID_INPUT",
        -                  "SCHEMA_VERSION_MISMATCH",
        -                  "SCHEMA_INVARIANT_VIOLATION",
        -                  "UPSTREAM_TIMEOUT",
        -                  "BACKEND_FAILURE",
        -                  "IP_BLOCKED",
        -                  "RESOURCE_NOT_FOUND",
        -                  "RENDER_FAILURE",
        -                  "OCR_LOW_CONFIDENCE",
        -                  "MANUAL_REVIEW_REQUIRED",
        -                  "ACCEPTANCE_REQUIRED",
        -                  "INVALID_TOKEN"
        -                ],
        -                "type": "string"
        -              },
        -              "details": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "message": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "recoverable": {
        -                "type": "boolean"
        -              },
        -              "retry_after_seconds": {
        -                "anyOf": [
        -                  {
        -                    "minimum": 0,
        -                    "type": "integer"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              }
        -            },
        -            "required": [
        -              "code",
        -              "message",
        -              "recoverable"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      }
        -    },
        -    "required": [
        -      "_meta"
        -    ],
        -    "type": "object"
        -  },
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "_meta": {
        -        "additionalProperties": false,
        -        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        -        "properties": {
        -          "deliverables": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        -                "properties": {
        -                  "docx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "dxf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "expires_at": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  },
        -                  "pdf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "xlsx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "expires_at"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "document_id": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "issued_at": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "rate_limit_remaining": {
        -            "anyOf": [
        -              {
        -                "minimum": 0,
        -                "type": "integer"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "request_id": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "schema_version": {
        -            "const": "1.0.0",
        -            "default": "1.0.0",
        -            "type": "string"
        -          },
        -          "scope_boundary": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        -                "properties": {
        -                  "not_in_scope": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "produced": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "recommended_companions": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "type": "string"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "produced",
        -                  "not_in_scope"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tier": {
        -            "enum": [
        -              "free",
        -              "paid"
        -            ],
        -            "type": "string"
        -          },
        -          "tier_upgrade": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        -                "properties": {
        -                  "available_tiers": {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        -                      "properties": {
        -                        "billing": {
        -                          "enum": [
        -                            "one_off",
        -                            "monthly",
        -                            "annual"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "currency": {
        -                          "enum": [
        -                            "GBP",
        -                            "SGD",
        -                            "EUR",
        -                            "USD",
        -                            "CAD",
        -                            "AUD",
        -                            "NZD",
        -                            "MYR"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "display_name": {
        -                          "type": "string"
        -                        },
        -                        "price_local": {
        -                          "type": "number"
        -                        },
        -                        "tier_slug": {
        -                          "enum": [
        -                            "7_day_pass",
        -                            "solo",
        -                            "studio",
        -                            "practice"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "unlock_summary": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "tier_slug",
        -                        "display_name",
        -                        "price_local",
        -                        "currency",
        -                        "billing",
        -                        "unlock_summary"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "current_tier": {
        -                    "const": "free",
        -                    "default": "free",
        -                    "type": "string"
        -                  },
        -                  "pass_credit": {
        -                    "anyOf": [
        -                      {
        -                        "additionalProperties": false,
        -                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        -                        "properties": {
        -                          "amount_local": {
        -                            "type": "number"
        -                          },
        -                          "applies_to": {
        -                            "const": "solo_first_month",
        -                            "default": "solo_first_month",
        -                            "type": "string"
        -                          },
        -                          "currency": {
        -                            "type": "string"
        -                          },
        -                          "redeemable_until": {
        -                            "type": "string"
        -                          }
        -                        },
        -                        "required": [
        -                          "amount_local",
        -                          "currency",
        -                          "redeemable_until"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "pricing_url": {
        -                    "default": "https://civilquants.com/pricing",
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "available_tiers"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tos_url": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "upgrade_hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "warranty_disclaimer": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          }
        -        },
        -        "required": [
        -          "request_id",
        -          "issued_at",
        -          "tier"
        -        ],
        -        "type": "object"
        -      },
        -      "data": {
        -        "default": null,
        -        "title": "Data"
        -      },
        -      "error": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        -            "properties": {
        -              "code": {
        -                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        -                "enum": [
        -                  "RATE_LIMIT_EXCEEDED",
        -                  "TIER_INSUFFICIENT",
        -                  "INVALID_INPUT",
        -                  "SCHEMA_VERSION_MISMATCH",
        -                  "SCHEMA_INVARIANT_VIOLATION",
        -                  "UPSTREAM_TIMEOUT",
        -                  "BACKEND_FAILURE",
        -                  "IP_BLOCKED",
        -                  "RESOURCE_NOT_FOUND",
        -                  "RENDER_FAILURE",
        -                  "OCR_LOW_CONFIDENCE",
        -                  "MANUAL_REVIEW_REQUIRED",
        -                  "ACCEPTANCE_REQUIRED",
        -                  "INVALID_TOKEN"
        -                ],
        -                "type": "string"
        -              },
        -              "details": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "message": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "recoverable": {
        -                "type": "boolean"
        -              },
        -              "retry_after_seconds": {
        -                "anyOf": [
        -                  {
        -                    "minimum": 0,
        -                    "type": "integer"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              }
        -            },
        -            "required": [
        -              "code",
        -              "message",
        -              "recoverable"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      }
        -    },
        -    "required": [
        -      "_meta"
        -    ],
        -    "type": "object"
        -  }
        -]New value: +[
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "_meta": {
        +        "additionalProperties": false,
        +        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        +        "properties": {
        +          "deliverables": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        +                "properties": {
        +                  "docx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "dxf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "expires_at": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  },
        +                  "pdf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "xlsx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "expires_at"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "document_id": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "issued_at": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "rate_limit_remaining": {
        +            "anyOf": [
        +              {
        +                "minimum": 0,
        +                "type": "integer"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "request_id": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "schema_version": {
        +            "const": "1.0.0",
        +            "default": "1.0.0",
        +            "type": "string"
        +          },
        +          "scope_boundary": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        +                "properties": {
        +                  "not_in_scope": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "produced": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "recommended_companions": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "type": "string"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "produced",
        +                  "not_in_scope"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tier": {
        +            "enum": [
        +              "free",
        +              "paid"
        +            ],
        +            "type": "string"
        +          },
        +          "tier_upgrade": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        +                "properties": {
        +                  "available_tiers": {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        +                      "properties": {
        +                        "billing": {
        +                          "enum": [
        +                            "one_off",
        +                            "monthly",
        +                            "annual"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "currency": {
        +                          "enum": [
        +                            "GBP",
        +                            "SGD",
        +                            "EUR",
        +                            "USD",
        +                            "CAD",
        +                            "AUD",
        +                            "NZD",
        +                            "MYR"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "display_name": {
        +                          "type": "string"
        +                        },
        +                        "price_local": {
        +                          "type": "number"
        +                        },
        +                        "tier_slug": {
        +                          "enum": [
        +                            "7_day_pass",
        +                            "solo",
        +                            "studio",
        +                            "practice"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "unlock_summary": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "tier_slug",
        +                        "display_name",
        +                        "price_local",
        +                        "currency",
        +                        "billing",
        +                        "unlock_summary"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "current_tier": {
        +                    "const": "free",
        +                    "default": "free",
        +                    "type": "string"
        +                  },
        +                  "pass_credit": {
        +                    "anyOf": [
        +                      {
        +                        "additionalProperties": false,
        +                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        +                        "properties": {
        +                          "amount_local": {
        +                            "type": "number"
        +                          },
        +                          "applies_to": {
        +                            "const": "solo_first_month",
        +                            "default": "solo_first_month",
        +                            "type": "string"
        +                          },
        +                          "currency": {
        +                            "type": "string"
        +                          },
        +                          "redeemable_until": {
        +                            "type": "string"
        +                          }
        +                        },
        +                        "required": [
        +                          "amount_local",
        +                          "currency",
        +                          "redeemable_until"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "pricing_url": {
        +                    "default": "https://civilquants.com/pricing",
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "available_tiers"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tos_url": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "upgrade_hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "warranty_disclaimer": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          }
        +        },
        +        "required": [
        +          "request_id",
        +          "issued_at",
        +          "tier"
        +        ],
        +        "type": "object"
        +      },
        +      "data": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Schema § 1.1 — the typed payload returned inside `MCPResponse[ComputeResult]`.\n\nFree-tier responses omit `drawings` (the downloadable CAD artefact\npointers — the paid differentiator); the bridge enforces this. The\n`audit_trail` and the inline `drawing` preview are present on BOTH tiers\n(V1 ALIGN / 60th-fire D + C). `text_summary` is bounded to 2000 chars —\nkeeps the LLM-facing summary token-cheap and forces longer narrative into\nBoQ row descriptions where it belongs. `warnings` is the non-fatal\ngeometry advisory list (both tiers).",
        +            "properties": {
        +              "assembly_slug": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "audit_trail": {
        +                "anyOf": [
        +                  {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.7 — paid-tier audit-trail entry.\n\nOne entry per BoQ row; `boq_row_index` ties to the row position in\n`ComputeResult.boq_rows`. `derivation` is the human-readable formula\nwalk-through; `formula` is the optional formal expression.",
        +                      "properties": {
        +                        "boq_row_index": {
        +                          "minimum": 0,
        +                          "type": "integer"
        +                        },
        +                        "derivation": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "formula": {
        +                          "anyOf": [
        +                            {
        +                              "type": "string"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ],
        +                          "default": null
        +                        },
        +                        "id": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "parameters_referenced": {
        +                          "items": {
        +                            "type": "string"
        +                          },
        +                          "type": "array"
        +                        }
        +                      },
        +                      "required": [
        +                        "id",
        +                        "boq_row_index",
        +                        "derivation"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "boq_rows": {
        +                "items": {
        +                  "additionalProperties": false,
        +                  "description": "Schema § 1.3 — a single bill row in the requested standard's format.\n\n`description` is the non-verbatim functional description per spec § 13.9 /\n§ 15 invariant — NEVER reproduces a standard's verbatim clause text.\n`rate` / `amount` ship null because rates are commodity data the customer\nowns; the engine's job is the measurement, not the pricing.",
        +                  "properties": {
        +                    "amount": {
        +                      "anyOf": [
        +                        {
        +                          "type": "number"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "attribution": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "audit_id": {
        +                      "anyOf": [
        +                        {
        +                          "type": "string"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "description": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "quantity": {
        +                      "minimum": 0,
        +                      "type": "number"
        +                    },
        +                    "rate": {
        +                      "anyOf": [
        +                        {
        +                          "type": "number"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "unit": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "work_section": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    }
        +                  },
        +                  "required": [
        +                    "work_section",
        +                    "description",
        +                    "quantity",
        +                    "unit",
        +                    "attribution"
        +                  ],
        +                  "type": "object"
        +                },
        +                "type": "array"
        +              },
        +              "drawing": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": false,
        +                    "description": "Schema § 1.6a — inline server-rendered SVG preview of the geometry.\n\nThe MCP mirror of the web ``/compute`` response's ``drawing`` field\n(``api.schemas.compute.DrawingRef``): the same on-screen dimensioned\ndrawing both tiers see in the workspace, surfaced on the MCP compute\nresponse so a chat client can render it inline (60th-fire item C). This\nis the on-screen preview — present on BOTH tiers per the free/paid\nboundary; the downloadable CAD artefacts (DXF / dimensioned PDF) remain\nthe paid differentiator via the export tools.\n\nDefined here rather than importing ``DrawingRef`` because the web\n``schemas`` package imports back into this module (``schemas.render``),\nso reusing it would create an import cycle — the MCP wire contract keeps\nits own copy, the same pattern as ``BoQRow`` / ``DrawingReference``.",
        +                    "properties": {
        +                      "entity_count": {
        +                        "minimum": 0,
        +                        "type": "integer"
        +                      },
        +                      "svg_b64": {
        +                        "minLength": 1,
        +                        "type": "string"
        +                      },
        +                      "unit_of_drawing": {
        +                        "const": "m",
        +                        "default": "m",
        +                        "type": "string"
        +                      },
        +                      "viewbox_height": {
        +                        "exclusiveMinimum": 0,
        +                        "type": "number"
        +                      },
        +                      "viewbox_width": {
        +                        "exclusiveMinimum": 0,
        +                        "type": "number"
        +                      },
        +                      "viewbox_x": {
        +                        "type": "number"
        +                      },
        +                      "viewbox_y": {
        +                        "type": "number"
        +                      }
        +                    },
        +                    "required": [
        +                      "svg_b64",
        +                      "viewbox_x",
        +                      "viewbox_y",
        +                      "viewbox_width",
        +                      "viewbox_height",
        +                      "entity_count"
        +                    ],
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "drawings": {
        +                "anyOf": [
        +                  {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.6 — paid-tier drawing artefact pointer.\n\n`url` is an R2-signed URL; expiry is carried in `_meta.deliverables.expires_at`\non the envelope (not duplicated here). `layers` is DXF-only; PDF/SVG\ncallers omit it.",
        +                      "properties": {
        +                        "drawing_type": {
        +                          "enum": [
        +                            "section",
        +                            "plan",
        +                            "elevation",
        +                            "isometric",
        +                            "detail"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "format": {
        +                          "enum": [
        +                            "DXF",
        +                            "PDF",
        +                            "SVG"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "layers": {
        +                          "anyOf": [
        +                            {
        +                              "items": {
        +                                "type": "string"
        +                              },
        +                              "type": "array"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ],
        +                          "default": null
        +                        },
        +                        "scale": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "sheet_size": {
        +                          "enum": [
        +                            "A1",
        +                            "A2",
        +                            "A3",
        +                            "A4"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "url": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "drawing_type",
        +                        "format",
        +                        "url",
        +                        "sheet_size",
        +                        "scale"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "parameters_used": {
        +                "additionalProperties": false,
        +                "description": "Schema § 1.2 — the parameter snapshot the engine actually used.\n\nSplits user-supplied values from engine defaults so customers can see\nwhich numbers came from them and which the engine filled in. Every\ndefaulted parameter SHOULD have a corresponding entry in `assumptions`\n— the bridge layer enforces this when wrapping engine output.",
        +                "properties": {
        +                  "assumptions": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "engine_defaults": {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  "resolved_from_description": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "additionalProperties": false,
        +                          "description": "Schema § 1.2 — a parameter resolved by the forgiving-input layer.\n\nPopulated by the Track B-Forgiving Haiku-4.5 resolution pass; until that\nlayer lands, instances are constructed only by tests. `source` distinguishes\nthe resolution path so customers can audit which fields were inferred.",
        +                          "properties": {
        +                            "confidence": {
        +                              "anyOf": [
        +                                {
        +                                  "enum": [
        +                                    "high",
        +                                    "medium",
        +                                    "low"
        +                                  ],
        +                                  "type": "string"
        +                                },
        +                                {
        +                                  "type": "null"
        +                                }
        +                              ],
        +                              "default": null
        +                            },
        +                            "field_name": {
        +                              "minLength": 1,
        +                              "type": "string"
        +                            },
        +                            "resolved_value": {},
        +                            "source": {
        +                              "enum": [
        +                                "description_field",
        +                                "haiku_resolution",
        +                                "engine_default"
        +                              ],
        +                              "type": "string"
        +                            }
        +                          },
        +                          "required": [
        +                            "field_name",
        +                            "resolved_value",
        +                            "source"
        +                          ],
        +                          "type": "object"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "user_supplied": {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  }
        +                },
        +                "type": "object"
        +              },
        +              "standard": {
        +                "enum": [
        +                  "CESMM4",
        +                  "NRM2",
        +                  "SMM7",
        +                  "MMHW"
        +                ],
        +                "type": "string"
        +              },
        +              "text_summary": {
        +                "maxLength": 2000,
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "totals_summary": {
        +                "additionalProperties": false,
        +                "description": "Schema § 1.4 — totals_summary as a typed wrapper around the free-form dict.\n\nWire shape is a flat object (`{\"concrete_m3\": {...}, \"rebar_t\": {...}}`).\nWe model it as `RootModel`-equivalent via `model_config(extra=\"allow\")`\n+ a single `__root__`-style `entries` dict. Pydantic v2 recommends\n`RootModel` for free-form roots; using a wrapper class keeps the import\nsurface uniform with the rest of this module.",
        +                "properties": {
        +                  "entries": {
        +                    "additionalProperties": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.4 — single material/work-class total entry.",
        +                      "properties": {
        +                        "quantity": {
        +                          "minimum": 0,
        +                          "type": "number"
        +                        },
        +                        "unit": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "quantity",
        +                        "unit"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "object"
        +                  }
        +                },
        +                "type": "object"
        +              },
        +              "warnings": {
        +                "items": {
        +                  "additionalProperties": false,
        +                  "description": "Schema § 1.8 — a non-fatal geometry advisory (56th-fire T2).\n\nThe wire projection of the engine's `core.GeometryWarning`. Advisory only:\na warning NEVER changes a measured quantity — it flags geometry that is\nvalid but likely a mistake (e.g. a stale dependent-height default). Present\non BOTH tiers — a correctness/safety signal, not a paid feature.",
        +                  "properties": {
        +                    "affected_params": {
        +                      "items": {
        +                        "type": "string"
        +                      },
        +                      "type": "array"
        +                    },
        +                    "code": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "detail": {
        +                      "additionalProperties": {
        +                        "type": "number"
        +                      },
        +                      "type": "object"
        +                    },
        +                    "message": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "severity": {
        +                      "enum": [
        +                        "info",
        +                        "advisory",
        +                        "caution"
        +                      ],
        +                      "type": "string"
        +                    }
        +                  },
        +                  "required": [
        +                    "code",
        +                    "severity",
        +                    "message"
        +                  ],
        +                  "type": "object"
        +                },
        +                "type": "array"
        +              }
        +            },
        +            "required": [
        +              "assembly_slug",
        +              "standard",
        +              "parameters_used",
        +              "boq_rows",
        +              "totals_summary",
        +              "text_summary"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      },
        +      "error": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        +            "properties": {
        +              "code": {
        +                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        +                "enum": [
        +                  "RATE_LIMIT_EXCEEDED",
        +                  "TIER_INSUFFICIENT",
        +                  "INVALID_INPUT",
        +                  "SCHEMA_VERSION_MISMATCH",
        +                  "SCHEMA_INVARIANT_VIOLATION",
        +                  "UPSTREAM_TIMEOUT",
        +                  "BACKEND_FAILURE",
        +                  "IP_BLOCKED",
        +                  "RESOURCE_NOT_FOUND",
        +                  "RENDER_FAILURE",
        +                  "OCR_LOW_CONFIDENCE",
        +                  "MANUAL_REVIEW_REQUIRED",
        +                  "ACCEPTANCE_REQUIRED",
        +                  "INVALID_TOKEN"
        +                ],
        +                "type": "string"
        +              },
        +              "details": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "message": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "recoverable": {
        +                "type": "boolean"
        +              },
        +              "retry_after_seconds": {
        +                "anyOf": [
        +                  {
        +                    "minimum": 0,
        +                    "type": "integer"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              }
        +            },
        +            "required": [
        +              "code",
        +              "message",
        +              "recoverable"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      }
        +    },
        +    "required": [
        +      "_meta"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "_meta": {
        +        "additionalProperties": false,
        +        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        +        "properties": {
        +          "deliverables": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        +                "properties": {
        +                  "docx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "dxf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "expires_at": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  },
        +                  "pdf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "xlsx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "expires_at"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "document_id": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "issued_at": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "rate_limit_remaining": {
        +            "anyOf": [
        +              {
        +                "minimum": 0,
        +                "type": "integer"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "request_id": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "schema_version": {
        +            "const": "1.0.0",
        +            "default": "1.0.0",
        +            "type": "string"
        +          },
        +          "scope_boundary": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        +                "properties": {
        +                  "not_in_scope": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "produced": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "recommended_companions": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "type": "string"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "produced",
        +                  "not_in_scope"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tier": {
        +            "enum": [
        +              "free",
        +              "paid"
        +            ],
        +            "type": "string"
        +          },
        +          "tier_upgrade": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        +                "properties": {
        +                  "available_tiers": {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        +                      "properties": {
        +                        "billing": {
        +                          "enum": [
        +                            "one_off",
        +                            "monthly",
        +                            "annual"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "currency": {
        +                          "enum": [
        +                            "GBP",
        +                            "SGD",
        +                            "EUR",
        +                            "USD",
        +                            "CAD",
        +                            "AUD",
        +                            "NZD",
        +                            "MYR"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "display_name": {
        +                          "type": "string"
        +                        },
        +                        "price_local": {
        +                          "type": "number"
        +                        },
        +                        "tier_slug": {
        +                          "enum": [
        +                            "7_day_pass",
        +                            "solo",
        +                            "studio",
        +                            "practice"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "unlock_summary": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "tier_slug",
        +                        "display_name",
        +                        "price_local",
        +                        "currency",
        +                        "billing",
        +                        "unlock_summary"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "current_tier": {
        +                    "const": "free",
        +                    "default": "free",
        +                    "type": "string"
        +                  },
        +                  "pass_credit": {
        +                    "anyOf": [
        +                      {
        +                        "additionalProperties": false,
        +                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        +                        "properties": {
        +                          "amount_local": {
        +                            "type": "number"
        +                          },
        +                          "applies_to": {
        +                            "const": "solo_first_month",
        +                            "default": "solo_first_month",
        +                            "type": "string"
        +                          },
        +                          "currency": {
        +                            "type": "string"
        +                          },
        +                          "redeemable_until": {
        +                            "type": "string"
        +                          }
        +                        },
        +                        "required": [
        +                          "amount_local",
        +                          "currency",
        +                          "redeemable_until"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "pricing_url": {
        +                    "default": "https://civilquants.com/pricing",
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "available_tiers"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tos_url": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "upgrade_hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "warranty_disclaimer": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          }
        +        },
        +        "required": [
        +          "request_id",
        +          "issued_at",
        +          "tier"
        +        ],
        +        "type": "object"
        +      },
        +      "data": {
        +        "default": null,
        +        "title": "Data"
        +      },
        +      "error": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        +            "properties": {
        +              "code": {
        +                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        +                "enum": [
        +                  "RATE_LIMIT_EXCEEDED",
        +                  "TIER_INSUFFICIENT",
        +                  "INVALID_INPUT",
        +                  "SCHEMA_VERSION_MISMATCH",
        +                  "SCHEMA_INVARIANT_VIOLATION",
        +                  "UPSTREAM_TIMEOUT",
        +                  "BACKEND_FAILURE",
        +                  "IP_BLOCKED",
        +                  "RESOURCE_NOT_FOUND",
        +                  "RENDER_FAILURE",
        +                  "OCR_LOW_CONFIDENCE",
        +                  "MANUAL_REVIEW_REQUIRED",
        +                  "ACCEPTANCE_REQUIRED",
        +                  "INVALID_TOKEN"
        +                ],
        +                "type": "string"
        +              },
        +              "details": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "message": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "recoverable": {
        +                "type": "boolean"
        +              },
        +              "retry_after_seconds": {
        +                "anyOf": [
        +                  {
        +                    "minimum": 0,
        +                    "type": "integer"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              }
        +            },
        +            "required": [
        +              "code",
        +              "message",
        +              "recoverable"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      }
        +    },
        +    "required": [
        +      "_meta"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedcompute_petrol_oil_interceptor3 fields changed
      • addedInput schema / properties / deliverables
        Added value: +{
        +  "anyOf": [
        +    {
        +      "items": {
        +        "const": "xlsx",
        +        "type": "string"
        +      },
        +      "type": "array"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null
        +}
      • addedInput schema / properties / output_mode
        Added value: +{
        +  "default": "full_json",
        +  "enum": [
        +    "summary",
        +    "boq",
        +    "boq_with_backup",
        +    "full_json"
        +  ],
        +  "type": "string"
        +}
      • changedOutput schema / properties / result / anyOf
        Previous value: -[
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "_meta": {
        -        "additionalProperties": false,
        -        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        -        "properties": {
        -          "deliverables": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        -                "properties": {
        -                  "docx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "dxf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "expires_at": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  },
        -                  "pdf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "xlsx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "expires_at"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "document_id": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "issued_at": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "rate_limit_remaining": {
        -            "anyOf": [
        -              {
        -                "minimum": 0,
        -                "type": "integer"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "request_id": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "schema_version": {
        -            "const": "1.0.0",
        -            "default": "1.0.0",
        -            "type": "string"
        -          },
        -          "scope_boundary": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        -                "properties": {
        -                  "not_in_scope": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "produced": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "recommended_companions": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "type": "string"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "produced",
        -                  "not_in_scope"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tier": {
        -            "enum": [
        -              "free",
        -              "paid"
        -            ],
        -            "type": "string"
        -          },
        -          "tier_upgrade": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        -                "properties": {
        -                  "available_tiers": {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        -                      "properties": {
        -                        "billing": {
        -                          "enum": [
        -                            "one_off",
        -                            "monthly",
        -                            "annual"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "currency": {
        -                          "enum": [
        -                            "GBP",
        -                            "SGD",
        -                            "EUR",
        -                            "USD",
        -                            "CAD",
        -                            "AUD",
        -                            "NZD",
        -                            "MYR"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "display_name": {
        -                          "type": "string"
        -                        },
        -                        "price_local": {
        -                          "type": "number"
        -                        },
        -                        "tier_slug": {
        -                          "enum": [
        -                            "7_day_pass",
        -                            "solo",
        -                            "studio",
        -                            "practice"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "unlock_summary": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "tier_slug",
        -                        "display_name",
        -                        "price_local",
        -                        "currency",
        -                        "billing",
        -                        "unlock_summary"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "current_tier": {
        -                    "const": "free",
        -                    "default": "free",
        -                    "type": "string"
        -                  },
        -                  "pass_credit": {
        -                    "anyOf": [
        -                      {
        -                        "additionalProperties": false,
        -                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        -                        "properties": {
        -                          "amount_local": {
        -                            "type": "number"
        -                          },
        -                          "applies_to": {
        -                            "const": "solo_first_month",
        -                            "default": "solo_first_month",
        -                            "type": "string"
        -                          },
        -                          "currency": {
        -                            "type": "string"
        -                          },
        -                          "redeemable_until": {
        -                            "type": "string"
        -                          }
        -                        },
        -                        "required": [
        -                          "amount_local",
        -                          "currency",
        -                          "redeemable_until"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "pricing_url": {
        -                    "default": "https://civilquants.com/pricing",
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "available_tiers"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tos_url": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "upgrade_hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "warranty_disclaimer": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          }
        -        },
        -        "required": [
        -          "request_id",
        -          "issued_at",
        -          "tier"
        -        ],
        -        "type": "object"
        -      },
        -      "data": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Schema § 1.1 — the typed payload returned inside `MCPResponse[ComputeResult]`.\n\nFree-tier responses MUST omit `drawings` and `audit_trail` (the bridge\nenforces this); paid-tier responses populate both. `text_summary` is\nbounded to 2000 chars — keeps the LLM-facing summary token-cheap and\nforces longer narrative into BoQ row descriptions where it belongs.\n`warnings` is the non-fatal geometry advisory list (both tiers).",
        -            "properties": {
        -              "assembly_slug": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "audit_trail": {
        -                "anyOf": [
        -                  {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.7 — paid-tier audit-trail entry.\n\nOne entry per BoQ row; `boq_row_index` ties to the row position in\n`ComputeResult.boq_rows`. `derivation` is the human-readable formula\nwalk-through; `formula` is the optional formal expression.",
        -                      "properties": {
        -                        "boq_row_index": {
        -                          "minimum": 0,
        -                          "type": "integer"
        -                        },
        -                        "derivation": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "formula": {
        -                          "anyOf": [
        -                            {
        -                              "type": "string"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ],
        -                          "default": null
        -                        },
        -                        "id": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "parameters_referenced": {
        -                          "items": {
        -                            "type": "string"
        -                          },
        -                          "type": "array"
        -                        }
        -                      },
        -                      "required": [
        -                        "id",
        -                        "boq_row_index",
        -                        "derivation"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "boq_rows": {
        -                "items": {
        -                  "additionalProperties": false,
        -                  "description": "Schema § 1.3 — a single bill row in the requested standard's format.\n\n`description` is the non-verbatim functional description per spec § 13.9 /\n§ 15 invariant — NEVER reproduces a standard's verbatim clause text.\n`rate` / `amount` ship null because rates are commodity data the customer\nowns; the engine's job is the measurement, not the pricing.",
        -                  "properties": {
        -                    "amount": {
        -                      "anyOf": [
        -                        {
        -                          "type": "number"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "attribution": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "audit_id": {
        -                      "anyOf": [
        -                        {
        -                          "type": "string"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "description": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "quantity": {
        -                      "minimum": 0,
        -                      "type": "number"
        -                    },
        -                    "rate": {
        -                      "anyOf": [
        -                        {
        -                          "type": "number"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "unit": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "work_section": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    }
        -                  },
        -                  "required": [
        -                    "work_section",
        -                    "description",
        -                    "quantity",
        -                    "unit",
        -                    "attribution"
        -                  ],
        -                  "type": "object"
        -                },
        -                "type": "array"
        -              },
        -              "drawings": {
        -                "anyOf": [
        -                  {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.6 — paid-tier drawing artefact pointer.\n\n`url` is an R2-signed URL; expiry is carried in `_meta.deliverables.expires_at`\non the envelope (not duplicated here). `layers` is DXF-only; PDF/SVG\ncallers omit it.",
        -                      "properties": {
        -                        "drawing_type": {
        -                          "enum": [
        -                            "section",
        -                            "plan",
        -                            "elevation",
        -                            "isometric",
        -                            "detail"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "format": {
        -                          "enum": [
        -                            "DXF",
        -                            "PDF",
        -                            "SVG"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "layers": {
        -                          "anyOf": [
        -                            {
        -                              "items": {
        -                                "type": "string"
        -                              },
        -                              "type": "array"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ],
        -                          "default": null
        -                        },
        -                        "scale": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "sheet_size": {
        -                          "enum": [
        -                            "A1",
        -                            "A2",
        -                            "A3",
        -                            "A4"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "url": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "drawing_type",
        -                        "format",
        -                        "url",
        -                        "sheet_size",
        -                        "scale"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "parameters_used": {
        -                "additionalProperties": false,
        -                "description": "Schema § 1.2 — the parameter snapshot the engine actually used.\n\nSplits user-supplied values from engine defaults so customers can see\nwhich numbers came from them and which the engine filled in. Every\ndefaulted parameter SHOULD have a corresponding entry in `assumptions`\n— the bridge layer enforces this when wrapping engine output.",
        -                "properties": {
        -                  "assumptions": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "engine_defaults": {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  "resolved_from_description": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "additionalProperties": false,
        -                          "description": "Schema § 1.2 — a parameter resolved by the forgiving-input layer.\n\nPopulated by the Track B-Forgiving Haiku-4.5 resolution pass; until that\nlayer lands, instances are constructed only by tests. `source` distinguishes\nthe resolution path so customers can audit which fields were inferred.",
        -                          "properties": {
        -                            "confidence": {
        -                              "anyOf": [
        -                                {
        -                                  "enum": [
        -                                    "high",
        -                                    "medium",
        -                                    "low"
        -                                  ],
        -                                  "type": "string"
        -                                },
        -                                {
        -                                  "type": "null"
        -                                }
        -                              ],
        -                              "default": null
        -                            },
        -                            "field_name": {
        -                              "minLength": 1,
        -                              "type": "string"
        -                            },
        -                            "resolved_value": {},
        -                            "source": {
        -                              "enum": [
        -                                "description_field",
        -                                "haiku_resolution",
        -                                "engine_default"
        -                              ],
        -                              "type": "string"
        -                            }
        -                          },
        -                          "required": [
        -                            "field_name",
        -                            "resolved_value",
        -                            "source"
        -                          ],
        -                          "type": "object"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "user_supplied": {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  }
        -                },
        -                "type": "object"
        -              },
        -              "standard": {
        -                "enum": [
        -                  "CESMM4",
        -                  "NRM2",
        -                  "SMM7",
        -                  "MMHW"
        -                ],
        -                "type": "string"
        -              },
        -              "text_summary": {
        -                "maxLength": 2000,
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "totals_summary": {
        -                "additionalProperties": false,
        -                "description": "Schema § 1.4 — totals_summary as a typed wrapper around the free-form dict.\n\nWire shape is a flat object (`{\"concrete_m3\": {...}, \"rebar_t\": {...}}`).\nWe model it as `RootModel`-equivalent via `model_config(extra=\"allow\")`\n+ a single `__root__`-style `entries` dict. Pydantic v2 recommends\n`RootModel` for free-form roots; using a wrapper class keeps the import\nsurface uniform with the rest of this module.",
        -                "properties": {
        -                  "entries": {
        -                    "additionalProperties": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.4 — single material/work-class total entry.",
        -                      "properties": {
        -                        "quantity": {
        -                          "minimum": 0,
        -                          "type": "number"
        -                        },
        -                        "unit": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "quantity",
        -                        "unit"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "object"
        -                  }
        -                },
        -                "type": "object"
        -              },
        -              "warnings": {
        -                "items": {
        -                  "additionalProperties": false,
        -                  "description": "Schema § 1.8 — a non-fatal geometry advisory (56th-fire T2).\n\nThe wire projection of the engine's `core.GeometryWarning`. Advisory only:\na warning NEVER changes a measured quantity — it flags geometry that is\nvalid but likely a mistake (e.g. a stale dependent-height default). Present\non BOTH tiers — a correctness/safety signal, not a paid feature.",
        -                  "properties": {
        -                    "affected_params": {
        -                      "items": {
        -                        "type": "string"
        -                      },
        -                      "type": "array"
        -                    },
        -                    "code": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "detail": {
        -                      "additionalProperties": {
        -                        "type": "number"
        -                      },
        -                      "type": "object"
        -                    },
        -                    "message": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "severity": {
        -                      "enum": [
        -                        "info",
        -                        "advisory",
        -                        "caution"
        -                      ],
        -                      "type": "string"
        -                    }
        -                  },
        -                  "required": [
        -                    "code",
        -                    "severity",
        -                    "message"
        -                  ],
        -                  "type": "object"
        -                },
        -                "type": "array"
        -              }
        -            },
        -            "required": [
        -              "assembly_slug",
        -              "standard",
        -              "parameters_used",
        -              "boq_rows",
        -              "totals_summary",
        -              "text_summary"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      },
        -      "error": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        -            "properties": {
        -              "code": {
        -                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        -                "enum": [
        -                  "RATE_LIMIT_EXCEEDED",
        -                  "TIER_INSUFFICIENT",
        -                  "INVALID_INPUT",
        -                  "SCHEMA_VERSION_MISMATCH",
        -                  "SCHEMA_INVARIANT_VIOLATION",
        -                  "UPSTREAM_TIMEOUT",
        -                  "BACKEND_FAILURE",
        -                  "IP_BLOCKED",
        -                  "RESOURCE_NOT_FOUND",
        -                  "RENDER_FAILURE",
        -                  "OCR_LOW_CONFIDENCE",
        -                  "MANUAL_REVIEW_REQUIRED",
        -                  "ACCEPTANCE_REQUIRED",
        -                  "INVALID_TOKEN"
        -                ],
        -                "type": "string"
        -              },
        -              "details": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "message": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "recoverable": {
        -                "type": "boolean"
        -              },
        -              "retry_after_seconds": {
        -                "anyOf": [
        -                  {
        -                    "minimum": 0,
        -                    "type": "integer"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              }
        -            },
        -            "required": [
        -              "code",
        -              "message",
        -              "recoverable"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      }
        -    },
        -    "required": [
        -      "_meta"
        -    ],
        -    "type": "object"
        -  },
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "_meta": {
        -        "additionalProperties": false,
        -        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        -        "properties": {
        -          "deliverables": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        -                "properties": {
        -                  "docx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "dxf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "expires_at": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  },
        -                  "pdf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "xlsx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "expires_at"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "document_id": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "issued_at": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "rate_limit_remaining": {
        -            "anyOf": [
        -              {
        -                "minimum": 0,
        -                "type": "integer"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "request_id": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "schema_version": {
        -            "const": "1.0.0",
        -            "default": "1.0.0",
        -            "type": "string"
        -          },
        -          "scope_boundary": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        -                "properties": {
        -                  "not_in_scope": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "produced": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "recommended_companions": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "type": "string"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "produced",
        -                  "not_in_scope"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tier": {
        -            "enum": [
        -              "free",
        -              "paid"
        -            ],
        -            "type": "string"
        -          },
        -          "tier_upgrade": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        -                "properties": {
        -                  "available_tiers": {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        -                      "properties": {
        -                        "billing": {
        -                          "enum": [
        -                            "one_off",
        -                            "monthly",
        -                            "annual"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "currency": {
        -                          "enum": [
        -                            "GBP",
        -                            "SGD",
        -                            "EUR",
        -                            "USD",
        -                            "CAD",
        -                            "AUD",
        -                            "NZD",
        -                            "MYR"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "display_name": {
        -                          "type": "string"
        -                        },
        -                        "price_local": {
        -                          "type": "number"
        -                        },
        -                        "tier_slug": {
        -                          "enum": [
        -                            "7_day_pass",
        -                            "solo",
        -                            "studio",
        -                            "practice"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "unlock_summary": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "tier_slug",
        -                        "display_name",
        -                        "price_local",
        -                        "currency",
        -                        "billing",
        -                        "unlock_summary"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "current_tier": {
        -                    "const": "free",
        -                    "default": "free",
        -                    "type": "string"
        -                  },
        -                  "pass_credit": {
        -                    "anyOf": [
        -                      {
        -                        "additionalProperties": false,
        -                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        -                        "properties": {
        -                          "amount_local": {
        -                            "type": "number"
        -                          },
        -                          "applies_to": {
        -                            "const": "solo_first_month",
        -                            "default": "solo_first_month",
        -                            "type": "string"
        -                          },
        -                          "currency": {
        -                            "type": "string"
        -                          },
        -                          "redeemable_until": {
        -                            "type": "string"
        -                          }
        -                        },
        -                        "required": [
        -                          "amount_local",
        -                          "currency",
        -                          "redeemable_until"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "pricing_url": {
        -                    "default": "https://civilquants.com/pricing",
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "available_tiers"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tos_url": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "upgrade_hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "warranty_disclaimer": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          }
        -        },
        -        "required": [
        -          "request_id",
        -          "issued_at",
        -          "tier"
        -        ],
        -        "type": "object"
        -      },
        -      "data": {
        -        "default": null,
        -        "title": "Data"
        -      },
        -      "error": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        -            "properties": {
        -              "code": {
        -                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        -                "enum": [
        -                  "RATE_LIMIT_EXCEEDED",
        -                  "TIER_INSUFFICIENT",
        -                  "INVALID_INPUT",
        -                  "SCHEMA_VERSION_MISMATCH",
        -                  "SCHEMA_INVARIANT_VIOLATION",
        -                  "UPSTREAM_TIMEOUT",
        -                  "BACKEND_FAILURE",
        -                  "IP_BLOCKED",
        -                  "RESOURCE_NOT_FOUND",
        -                  "RENDER_FAILURE",
        -                  "OCR_LOW_CONFIDENCE",
        -                  "MANUAL_REVIEW_REQUIRED",
        -                  "ACCEPTANCE_REQUIRED",
        -                  "INVALID_TOKEN"
        -                ],
        -                "type": "string"
        -              },
        -              "details": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "message": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "recoverable": {
        -                "type": "boolean"
        -              },
        -              "retry_after_seconds": {
        -                "anyOf": [
        -                  {
        -                    "minimum": 0,
        -                    "type": "integer"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              }
        -            },
        -            "required": [
        -              "code",
        -              "message",
        -              "recoverable"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      }
        -    },
        -    "required": [
        -      "_meta"
        -    ],
        -    "type": "object"
        -  }
        -]New value: +[
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "_meta": {
        +        "additionalProperties": false,
        +        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        +        "properties": {
        +          "deliverables": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        +                "properties": {
        +                  "docx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "dxf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "expires_at": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  },
        +                  "pdf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "xlsx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "expires_at"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "document_id": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "issued_at": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "rate_limit_remaining": {
        +            "anyOf": [
        +              {
        +                "minimum": 0,
        +                "type": "integer"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "request_id": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "schema_version": {
        +            "const": "1.0.0",
        +            "default": "1.0.0",
        +            "type": "string"
        +          },
        +          "scope_boundary": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        +                "properties": {
        +                  "not_in_scope": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "produced": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "recommended_companions": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "type": "string"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "produced",
        +                  "not_in_scope"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tier": {
        +            "enum": [
        +              "free",
        +              "paid"
        +            ],
        +            "type": "string"
        +          },
        +          "tier_upgrade": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        +                "properties": {
        +                  "available_tiers": {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        +                      "properties": {
        +                        "billing": {
        +                          "enum": [
        +                            "one_off",
        +                            "monthly",
        +                            "annual"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "currency": {
        +                          "enum": [
        +                            "GBP",
        +                            "SGD",
        +                            "EUR",
        +                            "USD",
        +                            "CAD",
        +                            "AUD",
        +                            "NZD",
        +                            "MYR"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "display_name": {
        +                          "type": "string"
        +                        },
        +                        "price_local": {
        +                          "type": "number"
        +                        },
        +                        "tier_slug": {
        +                          "enum": [
        +                            "7_day_pass",
        +                            "solo",
        +                            "studio",
        +                            "practice"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "unlock_summary": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "tier_slug",
        +                        "display_name",
        +                        "price_local",
        +                        "currency",
        +                        "billing",
        +                        "unlock_summary"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "current_tier": {
        +                    "const": "free",
        +                    "default": "free",
        +                    "type": "string"
        +                  },
        +                  "pass_credit": {
        +                    "anyOf": [
        +                      {
        +                        "additionalProperties": false,
        +                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        +                        "properties": {
        +                          "amount_local": {
        +                            "type": "number"
        +                          },
        +                          "applies_to": {
        +                            "const": "solo_first_month",
        +                            "default": "solo_first_month",
        +                            "type": "string"
        +                          },
        +                          "currency": {
        +                            "type": "string"
        +                          },
        +                          "redeemable_until": {
        +                            "type": "string"
        +                          }
        +                        },
        +                        "required": [
        +                          "amount_local",
        +                          "currency",
        +                          "redeemable_until"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "pricing_url": {
        +                    "default": "https://civilquants.com/pricing",
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "available_tiers"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tos_url": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "upgrade_hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "warranty_disclaimer": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          }
        +        },
        +        "required": [
        +          "request_id",
        +          "issued_at",
        +          "tier"
        +        ],
        +        "type": "object"
        +      },
        +      "data": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Schema § 1.1 — the typed payload returned inside `MCPResponse[ComputeResult]`.\n\nFree-tier responses omit `drawings` (the downloadable CAD artefact\npointers — the paid differentiator); the bridge enforces this. The\n`audit_trail` and the inline `drawing` preview are present on BOTH tiers\n(V1 ALIGN / 60th-fire D + C). `text_summary` is bounded to 2000 chars —\nkeeps the LLM-facing summary token-cheap and forces longer narrative into\nBoQ row descriptions where it belongs. `warnings` is the non-fatal\ngeometry advisory list (both tiers).",
        +            "properties": {
        +              "assembly_slug": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "audit_trail": {
        +                "anyOf": [
        +                  {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.7 — paid-tier audit-trail entry.\n\nOne entry per BoQ row; `boq_row_index` ties to the row position in\n`ComputeResult.boq_rows`. `derivation` is the human-readable formula\nwalk-through; `formula` is the optional formal expression.",
        +                      "properties": {
        +                        "boq_row_index": {
        +                          "minimum": 0,
        +                          "type": "integer"
        +                        },
        +                        "derivation": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "formula": {
        +                          "anyOf": [
        +                            {
        +                              "type": "string"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ],
        +                          "default": null
        +                        },
        +                        "id": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "parameters_referenced": {
        +                          "items": {
        +                            "type": "string"
        +                          },
        +                          "type": "array"
        +                        }
        +                      },
        +                      "required": [
        +                        "id",
        +                        "boq_row_index",
        +                        "derivation"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "boq_rows": {
        +                "items": {
        +                  "additionalProperties": false,
        +                  "description": "Schema § 1.3 — a single bill row in the requested standard's format.\n\n`description` is the non-verbatim functional description per spec § 13.9 /\n§ 15 invariant — NEVER reproduces a standard's verbatim clause text.\n`rate` / `amount` ship null because rates are commodity data the customer\nowns; the engine's job is the measurement, not the pricing.",
        +                  "properties": {
        +                    "amount": {
        +                      "anyOf": [
        +                        {
        +                          "type": "number"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "attribution": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "audit_id": {
        +                      "anyOf": [
        +                        {
        +                          "type": "string"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "description": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "quantity": {
        +                      "minimum": 0,
        +                      "type": "number"
        +                    },
        +                    "rate": {
        +                      "anyOf": [
        +                        {
        +                          "type": "number"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "unit": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "work_section": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    }
        +                  },
        +                  "required": [
        +                    "work_section",
        +                    "description",
        +                    "quantity",
        +                    "unit",
        +                    "attribution"
        +                  ],
        +                  "type": "object"
        +                },
        +                "type": "array"
        +              },
        +              "drawing": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": false,
        +                    "description": "Schema § 1.6a — inline server-rendered SVG preview of the geometry.\n\nThe MCP mirror of the web ``/compute`` response's ``drawing`` field\n(``api.schemas.compute.DrawingRef``): the same on-screen dimensioned\ndrawing both tiers see in the workspace, surfaced on the MCP compute\nresponse so a chat client can render it inline (60th-fire item C). This\nis the on-screen preview — present on BOTH tiers per the free/paid\nboundary; the downloadable CAD artefacts (DXF / dimensioned PDF) remain\nthe paid differentiator via the export tools.\n\nDefined here rather than importing ``DrawingRef`` because the web\n``schemas`` package imports back into this module (``schemas.render``),\nso reusing it would create an import cycle — the MCP wire contract keeps\nits own copy, the same pattern as ``BoQRow`` / ``DrawingReference``.",
        +                    "properties": {
        +                      "entity_count": {
        +                        "minimum": 0,
        +                        "type": "integer"
        +                      },
        +                      "svg_b64": {
        +                        "minLength": 1,
        +                        "type": "string"
        +                      },
        +                      "unit_of_drawing": {
        +                        "const": "m",
        +                        "default": "m",
        +                        "type": "string"
        +                      },
        +                      "viewbox_height": {
        +                        "exclusiveMinimum": 0,
        +                        "type": "number"
        +                      },
        +                      "viewbox_width": {
        +                        "exclusiveMinimum": 0,
        +                        "type": "number"
        +                      },
        +                      "viewbox_x": {
        +                        "type": "number"
        +                      },
        +                      "viewbox_y": {
        +                        "type": "number"
        +                      }
        +                    },
        +                    "required": [
        +                      "svg_b64",
        +                      "viewbox_x",
        +                      "viewbox_y",
        +                      "viewbox_width",
        +                      "viewbox_height",
        +                      "entity_count"
        +                    ],
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "drawings": {
        +                "anyOf": [
        +                  {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.6 — paid-tier drawing artefact pointer.\n\n`url` is an R2-signed URL; expiry is carried in `_meta.deliverables.expires_at`\non the envelope (not duplicated here). `layers` is DXF-only; PDF/SVG\ncallers omit it.",
        +                      "properties": {
        +                        "drawing_type": {
        +                          "enum": [
        +                            "section",
        +                            "plan",
        +                            "elevation",
        +                            "isometric",
        +                            "detail"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "format": {
        +                          "enum": [
        +                            "DXF",
        +                            "PDF",
        +                            "SVG"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "layers": {
        +                          "anyOf": [
        +                            {
        +                              "items": {
        +                                "type": "string"
        +                              },
        +                              "type": "array"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ],
        +                          "default": null
        +                        },
        +                        "scale": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "sheet_size": {
        +                          "enum": [
        +                            "A1",
        +                            "A2",
        +                            "A3",
        +                            "A4"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "url": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "drawing_type",
        +                        "format",
        +                        "url",
        +                        "sheet_size",
        +                        "scale"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "parameters_used": {
        +                "additionalProperties": false,
        +                "description": "Schema § 1.2 — the parameter snapshot the engine actually used.\n\nSplits user-supplied values from engine defaults so customers can see\nwhich numbers came from them and which the engine filled in. Every\ndefaulted parameter SHOULD have a corresponding entry in `assumptions`\n— the bridge layer enforces this when wrapping engine output.",
        +                "properties": {
        +                  "assumptions": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "engine_defaults": {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  "resolved_from_description": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "additionalProperties": false,
        +                          "description": "Schema § 1.2 — a parameter resolved by the forgiving-input layer.\n\nPopulated by the Track B-Forgiving Haiku-4.5 resolution pass; until that\nlayer lands, instances are constructed only by tests. `source` distinguishes\nthe resolution path so customers can audit which fields were inferred.",
        +                          "properties": {
        +                            "confidence": {
        +                              "anyOf": [
        +                                {
        +                                  "enum": [
        +                                    "high",
        +                                    "medium",
        +                                    "low"
        +                                  ],
        +                                  "type": "string"
        +                                },
        +                                {
        +                                  "type": "null"
        +                                }
        +                              ],
        +                              "default": null
        +                            },
        +                            "field_name": {
        +                              "minLength": 1,
        +                              "type": "string"
        +                            },
        +                            "resolved_value": {},
        +                            "source": {
        +                              "enum": [
        +                                "description_field",
        +                                "haiku_resolution",
        +                                "engine_default"
        +                              ],
        +                              "type": "string"
        +                            }
        +                          },
        +                          "required": [
        +                            "field_name",
        +                            "resolved_value",
        +                            "source"
        +                          ],
        +                          "type": "object"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "user_supplied": {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  }
        +                },
        +                "type": "object"
        +              },
        +              "standard": {
        +                "enum": [
        +                  "CESMM4",
        +                  "NRM2",
        +                  "SMM7",
        +                  "MMHW"
        +                ],
        +                "type": "string"
        +              },
        +              "text_summary": {
        +                "maxLength": 2000,
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "totals_summary": {
        +                "additionalProperties": false,
        +                "description": "Schema § 1.4 — totals_summary as a typed wrapper around the free-form dict.\n\nWire shape is a flat object (`{\"concrete_m3\": {...}, \"rebar_t\": {...}}`).\nWe model it as `RootModel`-equivalent via `model_config(extra=\"allow\")`\n+ a single `__root__`-style `entries` dict. Pydantic v2 recommends\n`RootModel` for free-form roots; using a wrapper class keeps the import\nsurface uniform with the rest of this module.",
        +                "properties": {
        +                  "entries": {
        +                    "additionalProperties": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.4 — single material/work-class total entry.",
        +                      "properties": {
        +                        "quantity": {
        +                          "minimum": 0,
        +                          "type": "number"
        +                        },
        +                        "unit": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "quantity",
        +                        "unit"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "object"
        +                  }
        +                },
        +                "type": "object"
        +              },
        +              "warnings": {
        +                "items": {
        +                  "additionalProperties": false,
        +                  "description": "Schema § 1.8 — a non-fatal geometry advisory (56th-fire T2).\n\nThe wire projection of the engine's `core.GeometryWarning`. Advisory only:\na warning NEVER changes a measured quantity — it flags geometry that is\nvalid but likely a mistake (e.g. a stale dependent-height default). Present\non BOTH tiers — a correctness/safety signal, not a paid feature.",
        +                  "properties": {
        +                    "affected_params": {
        +                      "items": {
        +                        "type": "string"
        +                      },
        +                      "type": "array"
        +                    },
        +                    "code": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "detail": {
        +                      "additionalProperties": {
        +                        "type": "number"
        +                      },
        +                      "type": "object"
        +                    },
        +                    "message": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "severity": {
        +                      "enum": [
        +                        "info",
        +                        "advisory",
        +                        "caution"
        +                      ],
        +                      "type": "string"
        +                    }
        +                  },
        +                  "required": [
        +                    "code",
        +                    "severity",
        +                    "message"
        +                  ],
        +                  "type": "object"
        +                },
        +                "type": "array"
        +              }
        +            },
        +            "required": [
        +              "assembly_slug",
        +              "standard",
        +              "parameters_used",
        +              "boq_rows",
        +              "totals_summary",
        +              "text_summary"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      },
        +      "error": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        +            "properties": {
        +              "code": {
        +                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        +                "enum": [
        +                  "RATE_LIMIT_EXCEEDED",
        +                  "TIER_INSUFFICIENT",
        +                  "INVALID_INPUT",
        +                  "SCHEMA_VERSION_MISMATCH",
        +                  "SCHEMA_INVARIANT_VIOLATION",
        +                  "UPSTREAM_TIMEOUT",
        +                  "BACKEND_FAILURE",
        +                  "IP_BLOCKED",
        +                  "RESOURCE_NOT_FOUND",
        +                  "RENDER_FAILURE",
        +                  "OCR_LOW_CONFIDENCE",
        +                  "MANUAL_REVIEW_REQUIRED",
        +                  "ACCEPTANCE_REQUIRED",
        +                  "INVALID_TOKEN"
        +                ],
        +                "type": "string"
        +              },
        +              "details": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "message": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "recoverable": {
        +                "type": "boolean"
        +              },
        +              "retry_after_seconds": {
        +                "anyOf": [
        +                  {
        +                    "minimum": 0,
        +                    "type": "integer"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              }
        +            },
        +            "required": [
        +              "code",
        +              "message",
        +              "recoverable"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      }
        +    },
        +    "required": [
        +      "_meta"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "_meta": {
        +        "additionalProperties": false,
        +        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        +        "properties": {
        +          "deliverables": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        +                "properties": {
        +                  "docx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "dxf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "expires_at": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  },
        +                  "pdf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "xlsx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "expires_at"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "document_id": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "issued_at": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "rate_limit_remaining": {
        +            "anyOf": [
        +              {
        +                "minimum": 0,
        +                "type": "integer"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "request_id": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "schema_version": {
        +            "const": "1.0.0",
        +            "default": "1.0.0",
        +            "type": "string"
        +          },
        +          "scope_boundary": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        +                "properties": {
        +                  "not_in_scope": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "produced": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "recommended_companions": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "type": "string"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "produced",
        +                  "not_in_scope"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tier": {
        +            "enum": [
        +              "free",
        +              "paid"
        +            ],
        +            "type": "string"
        +          },
        +          "tier_upgrade": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        +                "properties": {
        +                  "available_tiers": {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        +                      "properties": {
        +                        "billing": {
        +                          "enum": [
        +                            "one_off",
        +                            "monthly",
        +                            "annual"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "currency": {
        +                          "enum": [
        +                            "GBP",
        +                            "SGD",
        +                            "EUR",
        +                            "USD",
        +                            "CAD",
        +                            "AUD",
        +                            "NZD",
        +                            "MYR"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "display_name": {
        +                          "type": "string"
        +                        },
        +                        "price_local": {
        +                          "type": "number"
        +                        },
        +                        "tier_slug": {
        +                          "enum": [
        +                            "7_day_pass",
        +                            "solo",
        +                            "studio",
        +                            "practice"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "unlock_summary": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "tier_slug",
        +                        "display_name",
        +                        "price_local",
        +                        "currency",
        +                        "billing",
        +                        "unlock_summary"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "current_tier": {
        +                    "const": "free",
        +                    "default": "free",
        +                    "type": "string"
        +                  },
        +                  "pass_credit": {
        +                    "anyOf": [
        +                      {
        +                        "additionalProperties": false,
        +                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        +                        "properties": {
        +                          "amount_local": {
        +                            "type": "number"
        +                          },
        +                          "applies_to": {
        +                            "const": "solo_first_month",
        +                            "default": "solo_first_month",
        +                            "type": "string"
        +                          },
        +                          "currency": {
        +                            "type": "string"
        +                          },
        +                          "redeemable_until": {
        +                            "type": "string"
        +                          }
        +                        },
        +                        "required": [
        +                          "amount_local",
        +                          "currency",
        +                          "redeemable_until"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "pricing_url": {
        +                    "default": "https://civilquants.com/pricing",
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "available_tiers"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tos_url": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "upgrade_hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "warranty_disclaimer": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          }
        +        },
        +        "required": [
        +          "request_id",
        +          "issued_at",
        +          "tier"
        +        ],
        +        "type": "object"
        +      },
        +      "data": {
        +        "default": null,
        +        "title": "Data"
        +      },
        +      "error": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        +            "properties": {
        +              "code": {
        +                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        +                "enum": [
        +                  "RATE_LIMIT_EXCEEDED",
        +                  "TIER_INSUFFICIENT",
        +                  "INVALID_INPUT",
        +                  "SCHEMA_VERSION_MISMATCH",
        +                  "SCHEMA_INVARIANT_VIOLATION",
        +                  "UPSTREAM_TIMEOUT",
        +                  "BACKEND_FAILURE",
        +                  "IP_BLOCKED",
        +                  "RESOURCE_NOT_FOUND",
        +                  "RENDER_FAILURE",
        +                  "OCR_LOW_CONFIDENCE",
        +                  "MANUAL_REVIEW_REQUIRED",
        +                  "ACCEPTANCE_REQUIRED",
        +                  "INVALID_TOKEN"
        +                ],
        +                "type": "string"
        +              },
        +              "details": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "message": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "recoverable": {
        +                "type": "boolean"
        +              },
        +              "retry_after_seconds": {
        +                "anyOf": [
        +                  {
        +                    "minimum": 0,
        +                    "type": "integer"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              }
        +            },
        +            "required": [
        +              "code",
        +              "message",
        +              "recoverable"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      }
        +    },
        +    "required": [
        +      "_meta"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedcompute_pipe_bedding3 fields changed
      • addedInput schema / properties / deliverables
        Added value: +{
        +  "anyOf": [
        +    {
        +      "items": {
        +        "const": "xlsx",
        +        "type": "string"
        +      },
        +      "type": "array"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null
        +}
      • addedInput schema / properties / output_mode
        Added value: +{
        +  "default": "full_json",
        +  "enum": [
        +    "summary",
        +    "boq",
        +    "boq_with_backup",
        +    "full_json"
        +  ],
        +  "type": "string"
        +}
      • changedOutput schema / properties / result / anyOf
        Previous value: -[
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "_meta": {
        -        "additionalProperties": false,
        -        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        -        "properties": {
        -          "deliverables": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        -                "properties": {
        -                  "docx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "dxf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "expires_at": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  },
        -                  "pdf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "xlsx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "expires_at"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "document_id": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "issued_at": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "rate_limit_remaining": {
        -            "anyOf": [
        -              {
        -                "minimum": 0,
        -                "type": "integer"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "request_id": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "schema_version": {
        -            "const": "1.0.0",
        -            "default": "1.0.0",
        -            "type": "string"
        -          },
        -          "scope_boundary": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        -                "properties": {
        -                  "not_in_scope": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "produced": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "recommended_companions": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "type": "string"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "produced",
        -                  "not_in_scope"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tier": {
        -            "enum": [
        -              "free",
        -              "paid"
        -            ],
        -            "type": "string"
        -          },
        -          "tier_upgrade": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        -                "properties": {
        -                  "available_tiers": {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        -                      "properties": {
        -                        "billing": {
        -                          "enum": [
        -                            "one_off",
        -                            "monthly",
        -                            "annual"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "currency": {
        -                          "enum": [
        -                            "GBP",
        -                            "SGD",
        -                            "EUR",
        -                            "USD",
        -                            "CAD",
        -                            "AUD",
        -                            "NZD",
        -                            "MYR"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "display_name": {
        -                          "type": "string"
        -                        },
        -                        "price_local": {
        -                          "type": "number"
        -                        },
        -                        "tier_slug": {
        -                          "enum": [
        -                            "7_day_pass",
        -                            "solo",
        -                            "studio",
        -                            "practice"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "unlock_summary": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "tier_slug",
        -                        "display_name",
        -                        "price_local",
        -                        "currency",
        -                        "billing",
        -                        "unlock_summary"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "current_tier": {
        -                    "const": "free",
        -                    "default": "free",
        -                    "type": "string"
        -                  },
        -                  "pass_credit": {
        -                    "anyOf": [
        -                      {
        -                        "additionalProperties": false,
        -                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        -                        "properties": {
        -                          "amount_local": {
        -                            "type": "number"
        -                          },
        -                          "applies_to": {
        -                            "const": "solo_first_month",
        -                            "default": "solo_first_month",
        -                            "type": "string"
        -                          },
        -                          "currency": {
        -                            "type": "string"
        -                          },
        -                          "redeemable_until": {
        -                            "type": "string"
        -                          }
        -                        },
        -                        "required": [
        -                          "amount_local",
        -                          "currency",
        -                          "redeemable_until"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "pricing_url": {
        -                    "default": "https://civilquants.com/pricing",
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "available_tiers"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tos_url": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "upgrade_hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "warranty_disclaimer": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          }
        -        },
        -        "required": [
        -          "request_id",
        -          "issued_at",
        -          "tier"
        -        ],
        -        "type": "object"
        -      },
        -      "data": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Schema § 1.1 — the typed payload returned inside `MCPResponse[ComputeResult]`.\n\nFree-tier responses MUST omit `drawings` and `audit_trail` (the bridge\nenforces this); paid-tier responses populate both. `text_summary` is\nbounded to 2000 chars — keeps the LLM-facing summary token-cheap and\nforces longer narrative into BoQ row descriptions where it belongs.\n`warnings` is the non-fatal geometry advisory list (both tiers).",
        -            "properties": {
        -              "assembly_slug": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "audit_trail": {
        -                "anyOf": [
        -                  {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.7 — paid-tier audit-trail entry.\n\nOne entry per BoQ row; `boq_row_index` ties to the row position in\n`ComputeResult.boq_rows`. `derivation` is the human-readable formula\nwalk-through; `formula` is the optional formal expression.",
        -                      "properties": {
        -                        "boq_row_index": {
        -                          "minimum": 0,
        -                          "type": "integer"
        -                        },
        -                        "derivation": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "formula": {
        -                          "anyOf": [
        -                            {
        -                              "type": "string"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ],
        -                          "default": null
        -                        },
        -                        "id": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "parameters_referenced": {
        -                          "items": {
        -                            "type": "string"
        -                          },
        -                          "type": "array"
        -                        }
        -                      },
        -                      "required": [
        -                        "id",
        -                        "boq_row_index",
        -                        "derivation"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "boq_rows": {
        -                "items": {
        -                  "additionalProperties": false,
        -                  "description": "Schema § 1.3 — a single bill row in the requested standard's format.\n\n`description` is the non-verbatim functional description per spec § 13.9 /\n§ 15 invariant — NEVER reproduces a standard's verbatim clause text.\n`rate` / `amount` ship null because rates are commodity data the customer\nowns; the engine's job is the measurement, not the pricing.",
        -                  "properties": {
        -                    "amount": {
        -                      "anyOf": [
        -                        {
        -                          "type": "number"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "attribution": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "audit_id": {
        -                      "anyOf": [
        -                        {
        -                          "type": "string"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "description": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "quantity": {
        -                      "minimum": 0,
        -                      "type": "number"
        -                    },
        -                    "rate": {
        -                      "anyOf": [
        -                        {
        -                          "type": "number"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "unit": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "work_section": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    }
        -                  },
        -                  "required": [
        -                    "work_section",
        -                    "description",
        -                    "quantity",
        -                    "unit",
        -                    "attribution"
        -                  ],
        -                  "type": "object"
        -                },
        -                "type": "array"
        -              },
        -              "drawings": {
        -                "anyOf": [
        -                  {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.6 — paid-tier drawing artefact pointer.\n\n`url` is an R2-signed URL; expiry is carried in `_meta.deliverables.expires_at`\non the envelope (not duplicated here). `layers` is DXF-only; PDF/SVG\ncallers omit it.",
        -                      "properties": {
        -                        "drawing_type": {
        -                          "enum": [
        -                            "section",
        -                            "plan",
        -                            "elevation",
        -                            "isometric",
        -                            "detail"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "format": {
        -                          "enum": [
        -                            "DXF",
        -                            "PDF",
        -                            "SVG"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "layers": {
        -                          "anyOf": [
        -                            {
        -                              "items": {
        -                                "type": "string"
        -                              },
        -                              "type": "array"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ],
        -                          "default": null
        -                        },
        -                        "scale": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "sheet_size": {
        -                          "enum": [
        -                            "A1",
        -                            "A2",
        -                            "A3",
        -                            "A4"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "url": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "drawing_type",
        -                        "format",
        -                        "url",
        -                        "sheet_size",
        -                        "scale"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "parameters_used": {
        -                "additionalProperties": false,
        -                "description": "Schema § 1.2 — the parameter snapshot the engine actually used.\n\nSplits user-supplied values from engine defaults so customers can see\nwhich numbers came from them and which the engine filled in. Every\ndefaulted parameter SHOULD have a corresponding entry in `assumptions`\n— the bridge layer enforces this when wrapping engine output.",
        -                "properties": {
        -                  "assumptions": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "engine_defaults": {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  "resolved_from_description": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "additionalProperties": false,
        -                          "description": "Schema § 1.2 — a parameter resolved by the forgiving-input layer.\n\nPopulated by the Track B-Forgiving Haiku-4.5 resolution pass; until that\nlayer lands, instances are constructed only by tests. `source` distinguishes\nthe resolution path so customers can audit which fields were inferred.",
        -                          "properties": {
        -                            "confidence": {
        -                              "anyOf": [
        -                                {
        -                                  "enum": [
        -                                    "high",
        -                                    "medium",
        -                                    "low"
        -                                  ],
        -                                  "type": "string"
        -                                },
        -                                {
        -                                  "type": "null"
        -                                }
        -                              ],
        -                              "default": null
        -                            },
        -                            "field_name": {
        -                              "minLength": 1,
        -                              "type": "string"
        -                            },
        -                            "resolved_value": {},
        -                            "source": {
        -                              "enum": [
        -                                "description_field",
        -                                "haiku_resolution",
        -                                "engine_default"
        -                              ],
        -                              "type": "string"
        -                            }
        -                          },
        -                          "required": [
        -                            "field_name",
        -                            "resolved_value",
        -                            "source"
        -                          ],
        -                          "type": "object"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "user_supplied": {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  }
        -                },
        -                "type": "object"
        -              },
        -              "standard": {
        -                "enum": [
        -                  "CESMM4",
        -                  "NRM2",
        -                  "SMM7",
        -                  "MMHW"
        -                ],
        -                "type": "string"
        -              },
        -              "text_summary": {
        -                "maxLength": 2000,
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "totals_summary": {
        -                "additionalProperties": false,
        -                "description": "Schema § 1.4 — totals_summary as a typed wrapper around the free-form dict.\n\nWire shape is a flat object (`{\"concrete_m3\": {...}, \"rebar_t\": {...}}`).\nWe model it as `RootModel`-equivalent via `model_config(extra=\"allow\")`\n+ a single `__root__`-style `entries` dict. Pydantic v2 recommends\n`RootModel` for free-form roots; using a wrapper class keeps the import\nsurface uniform with the rest of this module.",
        -                "properties": {
        -                  "entries": {
        -                    "additionalProperties": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.4 — single material/work-class total entry.",
        -                      "properties": {
        -                        "quantity": {
        -                          "minimum": 0,
        -                          "type": "number"
        -                        },
        -                        "unit": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "quantity",
        -                        "unit"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "object"
        -                  }
        -                },
        -                "type": "object"
        -              },
        -              "warnings": {
        -                "items": {
        -                  "additionalProperties": false,
        -                  "description": "Schema § 1.8 — a non-fatal geometry advisory (56th-fire T2).\n\nThe wire projection of the engine's `core.GeometryWarning`. Advisory only:\na warning NEVER changes a measured quantity — it flags geometry that is\nvalid but likely a mistake (e.g. a stale dependent-height default). Present\non BOTH tiers — a correctness/safety signal, not a paid feature.",
        -                  "properties": {
        -                    "affected_params": {
        -                      "items": {
        -                        "type": "string"
        -                      },
        -                      "type": "array"
        -                    },
        -                    "code": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "detail": {
        -                      "additionalProperties": {
        -                        "type": "number"
        -                      },
        -                      "type": "object"
        -                    },
        -                    "message": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "severity": {
        -                      "enum": [
        -                        "info",
        -                        "advisory",
        -                        "caution"
        -                      ],
        -                      "type": "string"
        -                    }
        -                  },
        -                  "required": [
        -                    "code",
        -                    "severity",
        -                    "message"
        -                  ],
        -                  "type": "object"
        -                },
        -                "type": "array"
        -              }
        -            },
        -            "required": [
        -              "assembly_slug",
        -              "standard",
        -              "parameters_used",
        -              "boq_rows",
        -              "totals_summary",
        -              "text_summary"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      },
        -      "error": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        -            "properties": {
        -              "code": {
        -                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        -                "enum": [
        -                  "RATE_LIMIT_EXCEEDED",
        -                  "TIER_INSUFFICIENT",
        -                  "INVALID_INPUT",
        -                  "SCHEMA_VERSION_MISMATCH",
        -                  "SCHEMA_INVARIANT_VIOLATION",
        -                  "UPSTREAM_TIMEOUT",
        -                  "BACKEND_FAILURE",
        -                  "IP_BLOCKED",
        -                  "RESOURCE_NOT_FOUND",
        -                  "RENDER_FAILURE",
        -                  "OCR_LOW_CONFIDENCE",
        -                  "MANUAL_REVIEW_REQUIRED",
        -                  "ACCEPTANCE_REQUIRED",
        -                  "INVALID_TOKEN"
        -                ],
        -                "type": "string"
        -              },
        -              "details": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "message": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "recoverable": {
        -                "type": "boolean"
        -              },
        -              "retry_after_seconds": {
        -                "anyOf": [
        -                  {
        -                    "minimum": 0,
        -                    "type": "integer"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              }
        -            },
        -            "required": [
        -              "code",
        -              "message",
        -              "recoverable"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      }
        -    },
        -    "required": [
        -      "_meta"
        -    ],
        -    "type": "object"
        -  },
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "_meta": {
        -        "additionalProperties": false,
        -        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        -        "properties": {
        -          "deliverables": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        -                "properties": {
        -                  "docx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "dxf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "expires_at": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  },
        -                  "pdf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "xlsx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "expires_at"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "document_id": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "issued_at": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "rate_limit_remaining": {
        -            "anyOf": [
        -              {
        -                "minimum": 0,
        -                "type": "integer"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "request_id": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "schema_version": {
        -            "const": "1.0.0",
        -            "default": "1.0.0",
        -            "type": "string"
        -          },
        -          "scope_boundary": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        -                "properties": {
        -                  "not_in_scope": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "produced": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "recommended_companions": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "type": "string"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "produced",
        -                  "not_in_scope"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tier": {
        -            "enum": [
        -              "free",
        -              "paid"
        -            ],
        -            "type": "string"
        -          },
        -          "tier_upgrade": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        -                "properties": {
        -                  "available_tiers": {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        -                      "properties": {
        -                        "billing": {
        -                          "enum": [
        -                            "one_off",
        -                            "monthly",
        -                            "annual"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "currency": {
        -                          "enum": [
        -                            "GBP",
        -                            "SGD",
        -                            "EUR",
        -                            "USD",
        -                            "CAD",
        -                            "AUD",
        -                            "NZD",
        -                            "MYR"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "display_name": {
        -                          "type": "string"
        -                        },
        -                        "price_local": {
        -                          "type": "number"
        -                        },
        -                        "tier_slug": {
        -                          "enum": [
        -                            "7_day_pass",
        -                            "solo",
        -                            "studio",
        -                            "practice"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "unlock_summary": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "tier_slug",
        -                        "display_name",
        -                        "price_local",
        -                        "currency",
        -                        "billing",
        -                        "unlock_summary"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "current_tier": {
        -                    "const": "free",
        -                    "default": "free",
        -                    "type": "string"
        -                  },
        -                  "pass_credit": {
        -                    "anyOf": [
        -                      {
        -                        "additionalProperties": false,
        -                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        -                        "properties": {
        -                          "amount_local": {
        -                            "type": "number"
        -                          },
        -                          "applies_to": {
        -                            "const": "solo_first_month",
        -                            "default": "solo_first_month",
        -                            "type": "string"
        -                          },
        -                          "currency": {
        -                            "type": "string"
        -                          },
        -                          "redeemable_until": {
        -                            "type": "string"
        -                          }
        -                        },
        -                        "required": [
        -                          "amount_local",
        -                          "currency",
        -                          "redeemable_until"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "pricing_url": {
        -                    "default": "https://civilquants.com/pricing",
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "available_tiers"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tos_url": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "upgrade_hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "warranty_disclaimer": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          }
        -        },
        -        "required": [
        -          "request_id",
        -          "issued_at",
        -          "tier"
        -        ],
        -        "type": "object"
        -      },
        -      "data": {
        -        "default": null,
        -        "title": "Data"
        -      },
        -      "error": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        -            "properties": {
        -              "code": {
        -                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        -                "enum": [
        -                  "RATE_LIMIT_EXCEEDED",
        -                  "TIER_INSUFFICIENT",
        -                  "INVALID_INPUT",
        -                  "SCHEMA_VERSION_MISMATCH",
        -                  "SCHEMA_INVARIANT_VIOLATION",
        -                  "UPSTREAM_TIMEOUT",
        -                  "BACKEND_FAILURE",
        -                  "IP_BLOCKED",
        -                  "RESOURCE_NOT_FOUND",
        -                  "RENDER_FAILURE",
        -                  "OCR_LOW_CONFIDENCE",
        -                  "MANUAL_REVIEW_REQUIRED",
        -                  "ACCEPTANCE_REQUIRED",
        -                  "INVALID_TOKEN"
        -                ],
        -                "type": "string"
        -              },
        -              "details": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "message": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "recoverable": {
        -                "type": "boolean"
        -              },
        -              "retry_after_seconds": {
        -                "anyOf": [
        -                  {
        -                    "minimum": 0,
        -                    "type": "integer"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              }
        -            },
        -            "required": [
        -              "code",
        -              "message",
        -              "recoverable"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      }
        -    },
        -    "required": [
        -      "_meta"
        -    ],
        -    "type": "object"
        -  }
        -]New value: +[
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "_meta": {
        +        "additionalProperties": false,
        +        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        +        "properties": {
        +          "deliverables": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        +                "properties": {
        +                  "docx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "dxf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "expires_at": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  },
        +                  "pdf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "xlsx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "expires_at"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "document_id": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "issued_at": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "rate_limit_remaining": {
        +            "anyOf": [
        +              {
        +                "minimum": 0,
        +                "type": "integer"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "request_id": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "schema_version": {
        +            "const": "1.0.0",
        +            "default": "1.0.0",
        +            "type": "string"
        +          },
        +          "scope_boundary": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        +                "properties": {
        +                  "not_in_scope": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "produced": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "recommended_companions": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "type": "string"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "produced",
        +                  "not_in_scope"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tier": {
        +            "enum": [
        +              "free",
        +              "paid"
        +            ],
        +            "type": "string"
        +          },
        +          "tier_upgrade": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        +                "properties": {
        +                  "available_tiers": {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        +                      "properties": {
        +                        "billing": {
        +                          "enum": [
        +                            "one_off",
        +                            "monthly",
        +                            "annual"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "currency": {
        +                          "enum": [
        +                            "GBP",
        +                            "SGD",
        +                            "EUR",
        +                            "USD",
        +                            "CAD",
        +                            "AUD",
        +                            "NZD",
        +                            "MYR"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "display_name": {
        +                          "type": "string"
        +                        },
        +                        "price_local": {
        +                          "type": "number"
        +                        },
        +                        "tier_slug": {
        +                          "enum": [
        +                            "7_day_pass",
        +                            "solo",
        +                            "studio",
        +                            "practice"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "unlock_summary": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "tier_slug",
        +                        "display_name",
        +                        "price_local",
        +                        "currency",
        +                        "billing",
        +                        "unlock_summary"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "current_tier": {
        +                    "const": "free",
        +                    "default": "free",
        +                    "type": "string"
        +                  },
        +                  "pass_credit": {
        +                    "anyOf": [
        +                      {
        +                        "additionalProperties": false,
        +                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        +                        "properties": {
        +                          "amount_local": {
        +                            "type": "number"
        +                          },
        +                          "applies_to": {
        +                            "const": "solo_first_month",
        +                            "default": "solo_first_month",
        +                            "type": "string"
        +                          },
        +                          "currency": {
        +                            "type": "string"
        +                          },
        +                          "redeemable_until": {
        +                            "type": "string"
        +                          }
        +                        },
        +                        "required": [
        +                          "amount_local",
        +                          "currency",
        +                          "redeemable_until"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "pricing_url": {
        +                    "default": "https://civilquants.com/pricing",
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "available_tiers"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tos_url": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "upgrade_hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "warranty_disclaimer": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          }
        +        },
        +        "required": [
        +          "request_id",
        +          "issued_at",
        +          "tier"
        +        ],
        +        "type": "object"
        +      },
        +      "data": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Schema § 1.1 — the typed payload returned inside `MCPResponse[ComputeResult]`.\n\nFree-tier responses omit `drawings` (the downloadable CAD artefact\npointers — the paid differentiator); the bridge enforces this. The\n`audit_trail` and the inline `drawing` preview are present on BOTH tiers\n(V1 ALIGN / 60th-fire D + C). `text_summary` is bounded to 2000 chars —\nkeeps the LLM-facing summary token-cheap and forces longer narrative into\nBoQ row descriptions where it belongs. `warnings` is the non-fatal\ngeometry advisory list (both tiers).",
        +            "properties": {
        +              "assembly_slug": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "audit_trail": {
        +                "anyOf": [
        +                  {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.7 — paid-tier audit-trail entry.\n\nOne entry per BoQ row; `boq_row_index` ties to the row position in\n`ComputeResult.boq_rows`. `derivation` is the human-readable formula\nwalk-through; `formula` is the optional formal expression.",
        +                      "properties": {
        +                        "boq_row_index": {
        +                          "minimum": 0,
        +                          "type": "integer"
        +                        },
        +                        "derivation": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "formula": {
        +                          "anyOf": [
        +                            {
        +                              "type": "string"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ],
        +                          "default": null
        +                        },
        +                        "id": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "parameters_referenced": {
        +                          "items": {
        +                            "type": "string"
        +                          },
        +                          "type": "array"
        +                        }
        +                      },
        +                      "required": [
        +                        "id",
        +                        "boq_row_index",
        +                        "derivation"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "boq_rows": {
        +                "items": {
        +                  "additionalProperties": false,
        +                  "description": "Schema § 1.3 — a single bill row in the requested standard's format.\n\n`description` is the non-verbatim functional description per spec § 13.9 /\n§ 15 invariant — NEVER reproduces a standard's verbatim clause text.\n`rate` / `amount` ship null because rates are commodity data the customer\nowns; the engine's job is the measurement, not the pricing.",
        +                  "properties": {
        +                    "amount": {
        +                      "anyOf": [
        +                        {
        +                          "type": "number"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "attribution": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "audit_id": {
        +                      "anyOf": [
        +                        {
        +                          "type": "string"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "description": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "quantity": {
        +                      "minimum": 0,
        +                      "type": "number"
        +                    },
        +                    "rate": {
        +                      "anyOf": [
        +                        {
        +                          "type": "number"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "unit": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "work_section": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    }
        +                  },
        +                  "required": [
        +                    "work_section",
        +                    "description",
        +                    "quantity",
        +                    "unit",
        +                    "attribution"
        +                  ],
        +                  "type": "object"
        +                },
        +                "type": "array"
        +              },
        +              "drawing": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": false,
        +                    "description": "Schema § 1.6a — inline server-rendered SVG preview of the geometry.\n\nThe MCP mirror of the web ``/compute`` response's ``drawing`` field\n(``api.schemas.compute.DrawingRef``): the same on-screen dimensioned\ndrawing both tiers see in the workspace, surfaced on the MCP compute\nresponse so a chat client can render it inline (60th-fire item C). This\nis the on-screen preview — present on BOTH tiers per the free/paid\nboundary; the downloadable CAD artefacts (DXF / dimensioned PDF) remain\nthe paid differentiator via the export tools.\n\nDefined here rather than importing ``DrawingRef`` because the web\n``schemas`` package imports back into this module (``schemas.render``),\nso reusing it would create an import cycle — the MCP wire contract keeps\nits own copy, the same pattern as ``BoQRow`` / ``DrawingReference``.",
        +                    "properties": {
        +                      "entity_count": {
        +                        "minimum": 0,
        +                        "type": "integer"
        +                      },
        +                      "svg_b64": {
        +                        "minLength": 1,
        +                        "type": "string"
        +                      },
        +                      "unit_of_drawing": {
        +                        "const": "m",
        +                        "default": "m",
        +                        "type": "string"
        +                      },
        +                      "viewbox_height": {
        +                        "exclusiveMinimum": 0,
        +                        "type": "number"
        +                      },
        +                      "viewbox_width": {
        +                        "exclusiveMinimum": 0,
        +                        "type": "number"
        +                      },
        +                      "viewbox_x": {
        +                        "type": "number"
        +                      },
        +                      "viewbox_y": {
        +                        "type": "number"
        +                      }
        +                    },
        +                    "required": [
        +                      "svg_b64",
        +                      "viewbox_x",
        +                      "viewbox_y",
        +                      "viewbox_width",
        +                      "viewbox_height",
        +                      "entity_count"
        +                    ],
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "drawings": {
        +                "anyOf": [
        +                  {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.6 — paid-tier drawing artefact pointer.\n\n`url` is an R2-signed URL; expiry is carried in `_meta.deliverables.expires_at`\non the envelope (not duplicated here). `layers` is DXF-only; PDF/SVG\ncallers omit it.",
        +                      "properties": {
        +                        "drawing_type": {
        +                          "enum": [
        +                            "section",
        +                            "plan",
        +                            "elevation",
        +                            "isometric",
        +                            "detail"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "format": {
        +                          "enum": [
        +                            "DXF",
        +                            "PDF",
        +                            "SVG"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "layers": {
        +                          "anyOf": [
        +                            {
        +                              "items": {
        +                                "type": "string"
        +                              },
        +                              "type": "array"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ],
        +                          "default": null
        +                        },
        +                        "scale": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "sheet_size": {
        +                          "enum": [
        +                            "A1",
        +                            "A2",
        +                            "A3",
        +                            "A4"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "url": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "drawing_type",
        +                        "format",
        +                        "url",
        +                        "sheet_size",
        +                        "scale"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "parameters_used": {
        +                "additionalProperties": false,
        +                "description": "Schema § 1.2 — the parameter snapshot the engine actually used.\n\nSplits user-supplied values from engine defaults so customers can see\nwhich numbers came from them and which the engine filled in. Every\ndefaulted parameter SHOULD have a corresponding entry in `assumptions`\n— the bridge layer enforces this when wrapping engine output.",
        +                "properties": {
        +                  "assumptions": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "engine_defaults": {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  "resolved_from_description": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "additionalProperties": false,
        +                          "description": "Schema § 1.2 — a parameter resolved by the forgiving-input layer.\n\nPopulated by the Track B-Forgiving Haiku-4.5 resolution pass; until that\nlayer lands, instances are constructed only by tests. `source` distinguishes\nthe resolution path so customers can audit which fields were inferred.",
        +                          "properties": {
        +                            "confidence": {
        +                              "anyOf": [
        +                                {
        +                                  "enum": [
        +                                    "high",
        +                                    "medium",
        +                                    "low"
        +                                  ],
        +                                  "type": "string"
        +                                },
        +                                {
        +                                  "type": "null"
        +                                }
        +                              ],
        +                              "default": null
        +                            },
        +                            "field_name": {
        +                              "minLength": 1,
        +                              "type": "string"
        +                            },
        +                            "resolved_value": {},
        +                            "source": {
        +                              "enum": [
        +                                "description_field",
        +                                "haiku_resolution",
        +                                "engine_default"
        +                              ],
        +                              "type": "string"
        +                            }
        +                          },
        +                          "required": [
        +                            "field_name",
        +                            "resolved_value",
        +                            "source"
        +                          ],
        +                          "type": "object"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "user_supplied": {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  }
        +                },
        +                "type": "object"
        +              },
        +              "standard": {
        +                "enum": [
        +                  "CESMM4",
        +                  "NRM2",
        +                  "SMM7",
        +                  "MMHW"
        +                ],
        +                "type": "string"
        +              },
        +              "text_summary": {
        +                "maxLength": 2000,
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "totals_summary": {
        +                "additionalProperties": false,
        +                "description": "Schema § 1.4 — totals_summary as a typed wrapper around the free-form dict.\n\nWire shape is a flat object (`{\"concrete_m3\": {...}, \"rebar_t\": {...}}`).\nWe model it as `RootModel`-equivalent via `model_config(extra=\"allow\")`\n+ a single `__root__`-style `entries` dict. Pydantic v2 recommends\n`RootModel` for free-form roots; using a wrapper class keeps the import\nsurface uniform with the rest of this module.",
        +                "properties": {
        +                  "entries": {
        +                    "additionalProperties": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.4 — single material/work-class total entry.",
        +                      "properties": {
        +                        "quantity": {
        +                          "minimum": 0,
        +                          "type": "number"
        +                        },
        +                        "unit": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "quantity",
        +                        "unit"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "object"
        +                  }
        +                },
        +                "type": "object"
        +              },
        +              "warnings": {
        +                "items": {
        +                  "additionalProperties": false,
        +                  "description": "Schema § 1.8 — a non-fatal geometry advisory (56th-fire T2).\n\nThe wire projection of the engine's `core.GeometryWarning`. Advisory only:\na warning NEVER changes a measured quantity — it flags geometry that is\nvalid but likely a mistake (e.g. a stale dependent-height default). Present\non BOTH tiers — a correctness/safety signal, not a paid feature.",
        +                  "properties": {
        +                    "affected_params": {
        +                      "items": {
        +                        "type": "string"
        +                      },
        +                      "type": "array"
        +                    },
        +                    "code": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "detail": {
        +                      "additionalProperties": {
        +                        "type": "number"
        +                      },
        +                      "type": "object"
        +                    },
        +                    "message": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "severity": {
        +                      "enum": [
        +                        "info",
        +                        "advisory",
        +                        "caution"
        +                      ],
        +                      "type": "string"
        +                    }
        +                  },
        +                  "required": [
        +                    "code",
        +                    "severity",
        +                    "message"
        +                  ],
        +                  "type": "object"
        +                },
        +                "type": "array"
        +              }
        +            },
        +            "required": [
        +              "assembly_slug",
        +              "standard",
        +              "parameters_used",
        +              "boq_rows",
        +              "totals_summary",
        +              "text_summary"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      },
        +      "error": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        +            "properties": {
        +              "code": {
        +                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        +                "enum": [
        +                  "RATE_LIMIT_EXCEEDED",
        +                  "TIER_INSUFFICIENT",
        +                  "INVALID_INPUT",
        +                  "SCHEMA_VERSION_MISMATCH",
        +                  "SCHEMA_INVARIANT_VIOLATION",
        +                  "UPSTREAM_TIMEOUT",
        +                  "BACKEND_FAILURE",
        +                  "IP_BLOCKED",
        +                  "RESOURCE_NOT_FOUND",
        +                  "RENDER_FAILURE",
        +                  "OCR_LOW_CONFIDENCE",
        +                  "MANUAL_REVIEW_REQUIRED",
        +                  "ACCEPTANCE_REQUIRED",
        +                  "INVALID_TOKEN"
        +                ],
        +                "type": "string"
        +              },
        +              "details": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "message": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "recoverable": {
        +                "type": "boolean"
        +              },
        +              "retry_after_seconds": {
        +                "anyOf": [
        +                  {
        +                    "minimum": 0,
        +                    "type": "integer"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              }
        +            },
        +            "required": [
        +              "code",
        +              "message",
        +              "recoverable"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      }
        +    },
        +    "required": [
        +      "_meta"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "_meta": {
        +        "additionalProperties": false,
        +        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        +        "properties": {
        +          "deliverables": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        +                "properties": {
        +                  "docx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "dxf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "expires_at": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  },
        +                  "pdf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "xlsx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "expires_at"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "document_id": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "issued_at": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "rate_limit_remaining": {
        +            "anyOf": [
        +              {
        +                "minimum": 0,
        +                "type": "integer"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "request_id": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "schema_version": {
        +            "const": "1.0.0",
        +            "default": "1.0.0",
        +            "type": "string"
        +          },
        +          "scope_boundary": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        +                "properties": {
        +                  "not_in_scope": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "produced": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "recommended_companions": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "type": "string"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "produced",
        +                  "not_in_scope"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tier": {
        +            "enum": [
        +              "free",
        +              "paid"
        +            ],
        +            "type": "string"
        +          },
        +          "tier_upgrade": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        +                "properties": {
        +                  "available_tiers": {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        +                      "properties": {
        +                        "billing": {
        +                          "enum": [
        +                            "one_off",
        +                            "monthly",
        +                            "annual"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "currency": {
        +                          "enum": [
        +                            "GBP",
        +                            "SGD",
        +                            "EUR",
        +                            "USD",
        +                            "CAD",
        +                            "AUD",
        +                            "NZD",
        +                            "MYR"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "display_name": {
        +                          "type": "string"
        +                        },
        +                        "price_local": {
        +                          "type": "number"
        +                        },
        +                        "tier_slug": {
        +                          "enum": [
        +                            "7_day_pass",
        +                            "solo",
        +                            "studio",
        +                            "practice"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "unlock_summary": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "tier_slug",
        +                        "display_name",
        +                        "price_local",
        +                        "currency",
        +                        "billing",
        +                        "unlock_summary"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "current_tier": {
        +                    "const": "free",
        +                    "default": "free",
        +                    "type": "string"
        +                  },
        +                  "pass_credit": {
        +                    "anyOf": [
        +                      {
        +                        "additionalProperties": false,
        +                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        +                        "properties": {
        +                          "amount_local": {
        +                            "type": "number"
        +                          },
        +                          "applies_to": {
        +                            "const": "solo_first_month",
        +                            "default": "solo_first_month",
        +                            "type": "string"
        +                          },
        +                          "currency": {
        +                            "type": "string"
        +                          },
        +                          "redeemable_until": {
        +                            "type": "string"
        +                          }
        +                        },
        +                        "required": [
        +                          "amount_local",
        +                          "currency",
        +                          "redeemable_until"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "pricing_url": {
        +                    "default": "https://civilquants.com/pricing",
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "available_tiers"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tos_url": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "upgrade_hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "warranty_disclaimer": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          }
        +        },
        +        "required": [
        +          "request_id",
        +          "issued_at",
        +          "tier"
        +        ],
        +        "type": "object"
        +      },
        +      "data": {
        +        "default": null,
        +        "title": "Data"
        +      },
        +      "error": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        +            "properties": {
        +              "code": {
        +                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        +                "enum": [
        +                  "RATE_LIMIT_EXCEEDED",
        +                  "TIER_INSUFFICIENT",
        +                  "INVALID_INPUT",
        +                  "SCHEMA_VERSION_MISMATCH",
        +                  "SCHEMA_INVARIANT_VIOLATION",
        +                  "UPSTREAM_TIMEOUT",
        +                  "BACKEND_FAILURE",
        +                  "IP_BLOCKED",
        +                  "RESOURCE_NOT_FOUND",
        +                  "RENDER_FAILURE",
        +                  "OCR_LOW_CONFIDENCE",
        +                  "MANUAL_REVIEW_REQUIRED",
        +                  "ACCEPTANCE_REQUIRED",
        +                  "INVALID_TOKEN"
        +                ],
        +                "type": "string"
        +              },
        +              "details": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "message": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "recoverable": {
        +                "type": "boolean"
        +              },
        +              "retry_after_seconds": {
        +                "anyOf": [
        +                  {
        +                    "minimum": 0,
        +                    "type": "integer"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              }
        +            },
        +            "required": [
        +              "code",
        +              "message",
        +              "recoverable"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      }
        +    },
        +    "required": [
        +      "_meta"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedcompute_pipework_testing3 fields changed
      • addedInput schema / properties / deliverables
        Added value: +{
        +  "anyOf": [
        +    {
        +      "items": {
        +        "const": "xlsx",
        +        "type": "string"
        +      },
        +      "type": "array"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null
        +}
      • addedInput schema / properties / output_mode
        Added value: +{
        +  "default": "full_json",
        +  "enum": [
        +    "summary",
        +    "boq",
        +    "boq_with_backup",
        +    "full_json"
        +  ],
        +  "type": "string"
        +}
      • changedOutput schema / properties / result / anyOf
        Previous value: -[
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "_meta": {
        -        "additionalProperties": false,
        -        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        -        "properties": {
        -          "deliverables": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        -                "properties": {
        -                  "docx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "dxf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "expires_at": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  },
        -                  "pdf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "xlsx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "expires_at"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "document_id": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "issued_at": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "rate_limit_remaining": {
        -            "anyOf": [
        -              {
        -                "minimum": 0,
        -                "type": "integer"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "request_id": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "schema_version": {
        -            "const": "1.0.0",
        -            "default": "1.0.0",
        -            "type": "string"
        -          },
        -          "scope_boundary": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        -                "properties": {
        -                  "not_in_scope": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "produced": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "recommended_companions": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "type": "string"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "produced",
        -                  "not_in_scope"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tier": {
        -            "enum": [
        -              "free",
        -              "paid"
        -            ],
        -            "type": "string"
        -          },
        -          "tier_upgrade": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        -                "properties": {
        -                  "available_tiers": {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        -                      "properties": {
        -                        "billing": {
        -                          "enum": [
        -                            "one_off",
        -                            "monthly",
        -                            "annual"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "currency": {
        -                          "enum": [
        -                            "GBP",
        -                            "SGD",
        -                            "EUR",
        -                            "USD",
        -                            "CAD",
        -                            "AUD",
        -                            "NZD",
        -                            "MYR"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "display_name": {
        -                          "type": "string"
        -                        },
        -                        "price_local": {
        -                          "type": "number"
        -                        },
        -                        "tier_slug": {
        -                          "enum": [
        -                            "7_day_pass",
        -                            "solo",
        -                            "studio",
        -                            "practice"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "unlock_summary": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "tier_slug",
        -                        "display_name",
        -                        "price_local",
        -                        "currency",
        -                        "billing",
        -                        "unlock_summary"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "current_tier": {
        -                    "const": "free",
        -                    "default": "free",
        -                    "type": "string"
        -                  },
        -                  "pass_credit": {
        -                    "anyOf": [
        -                      {
        -                        "additionalProperties": false,
        -                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        -                        "properties": {
        -                          "amount_local": {
        -                            "type": "number"
        -                          },
        -                          "applies_to": {
        -                            "const": "solo_first_month",
        -                            "default": "solo_first_month",
        -                            "type": "string"
        -                          },
        -                          "currency": {
        -                            "type": "string"
        -                          },
        -                          "redeemable_until": {
        -                            "type": "string"
        -                          }
        -                        },
        -                        "required": [
        -                          "amount_local",
        -                          "currency",
        -                          "redeemable_until"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "pricing_url": {
        -                    "default": "https://civilquants.com/pricing",
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "available_tiers"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tos_url": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "upgrade_hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "warranty_disclaimer": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          }
        -        },
        -        "required": [
        -          "request_id",
        -          "issued_at",
        -          "tier"
        -        ],
        -        "type": "object"
        -      },
        -      "data": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Schema § 1.1 — the typed payload returned inside `MCPResponse[ComputeResult]`.\n\nFree-tier responses MUST omit `drawings` and `audit_trail` (the bridge\nenforces this); paid-tier responses populate both. `text_summary` is\nbounded to 2000 chars — keeps the LLM-facing summary token-cheap and\nforces longer narrative into BoQ row descriptions where it belongs.\n`warnings` is the non-fatal geometry advisory list (both tiers).",
        -            "properties": {
        -              "assembly_slug": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "audit_trail": {
        -                "anyOf": [
        -                  {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.7 — paid-tier audit-trail entry.\n\nOne entry per BoQ row; `boq_row_index` ties to the row position in\n`ComputeResult.boq_rows`. `derivation` is the human-readable formula\nwalk-through; `formula` is the optional formal expression.",
        -                      "properties": {
        -                        "boq_row_index": {
        -                          "minimum": 0,
        -                          "type": "integer"
        -                        },
        -                        "derivation": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "formula": {
        -                          "anyOf": [
        -                            {
        -                              "type": "string"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ],
        -                          "default": null
        -                        },
        -                        "id": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "parameters_referenced": {
        -                          "items": {
        -                            "type": "string"
        -                          },
        -                          "type": "array"
        -                        }
        -                      },
        -                      "required": [
        -                        "id",
        -                        "boq_row_index",
        -                        "derivation"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "boq_rows": {
        -                "items": {
        -                  "additionalProperties": false,
        -                  "description": "Schema § 1.3 — a single bill row in the requested standard's format.\n\n`description` is the non-verbatim functional description per spec § 13.9 /\n§ 15 invariant — NEVER reproduces a standard's verbatim clause text.\n`rate` / `amount` ship null because rates are commodity data the customer\nowns; the engine's job is the measurement, not the pricing.",
        -                  "properties": {
        -                    "amount": {
        -                      "anyOf": [
        -                        {
        -                          "type": "number"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "attribution": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "audit_id": {
        -                      "anyOf": [
        -                        {
        -                          "type": "string"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "description": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "quantity": {
        -                      "minimum": 0,
        -                      "type": "number"
        -                    },
        -                    "rate": {
        -                      "anyOf": [
        -                        {
        -                          "type": "number"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "unit": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "work_section": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    }
        -                  },
        -                  "required": [
        -                    "work_section",
        -                    "description",
        -                    "quantity",
        -                    "unit",
        -                    "attribution"
        -                  ],
        -                  "type": "object"
        -                },
        -                "type": "array"
        -              },
        -              "drawings": {
        -                "anyOf": [
        -                  {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.6 — paid-tier drawing artefact pointer.\n\n`url` is an R2-signed URL; expiry is carried in `_meta.deliverables.expires_at`\non the envelope (not duplicated here). `layers` is DXF-only; PDF/SVG\ncallers omit it.",
        -                      "properties": {
        -                        "drawing_type": {
        -                          "enum": [
        -                            "section",
        -                            "plan",
        -                            "elevation",
        -                            "isometric",
        -                            "detail"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "format": {
        -                          "enum": [
        -                            "DXF",
        -                            "PDF",
        -                            "SVG"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "layers": {
        -                          "anyOf": [
        -                            {
        -                              "items": {
        -                                "type": "string"
        -                              },
        -                              "type": "array"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ],
        -                          "default": null
        -                        },
        -                        "scale": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "sheet_size": {
        -                          "enum": [
        -                            "A1",
        -                            "A2",
        -                            "A3",
        -                            "A4"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "url": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "drawing_type",
        -                        "format",
        -                        "url",
        -                        "sheet_size",
        -                        "scale"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "parameters_used": {
        -                "additionalProperties": false,
        -                "description": "Schema § 1.2 — the parameter snapshot the engine actually used.\n\nSplits user-supplied values from engine defaults so customers can see\nwhich numbers came from them and which the engine filled in. Every\ndefaulted parameter SHOULD have a corresponding entry in `assumptions`\n— the bridge layer enforces this when wrapping engine output.",
        -                "properties": {
        -                  "assumptions": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "engine_defaults": {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  "resolved_from_description": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "additionalProperties": false,
        -                          "description": "Schema § 1.2 — a parameter resolved by the forgiving-input layer.\n\nPopulated by the Track B-Forgiving Haiku-4.5 resolution pass; until that\nlayer lands, instances are constructed only by tests. `source` distinguishes\nthe resolution path so customers can audit which fields were inferred.",
        -                          "properties": {
        -                            "confidence": {
        -                              "anyOf": [
        -                                {
        -                                  "enum": [
        -                                    "high",
        -                                    "medium",
        -                                    "low"
        -                                  ],
        -                                  "type": "string"
        -                                },
        -                                {
        -                                  "type": "null"
        -                                }
        -                              ],
        -                              "default": null
        -                            },
        -                            "field_name": {
        -                              "minLength": 1,
        -                              "type": "string"
        -                            },
        -                            "resolved_value": {},
        -                            "source": {
        -                              "enum": [
        -                                "description_field",
        -                                "haiku_resolution",
        -                                "engine_default"
        -                              ],
        -                              "type": "string"
        -                            }
        -                          },
        -                          "required": [
        -                            "field_name",
        -                            "resolved_value",
        -                            "source"
        -                          ],
        -                          "type": "object"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "user_supplied": {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  }
        -                },
        -                "type": "object"
        -              },
        -              "standard": {
        -                "enum": [
        -                  "CESMM4",
        -                  "NRM2",
        -                  "SMM7",
        -                  "MMHW"
        -                ],
        -                "type": "string"
        -              },
        -              "text_summary": {
        -                "maxLength": 2000,
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "totals_summary": {
        -                "additionalProperties": false,
        -                "description": "Schema § 1.4 — totals_summary as a typed wrapper around the free-form dict.\n\nWire shape is a flat object (`{\"concrete_m3\": {...}, \"rebar_t\": {...}}`).\nWe model it as `RootModel`-equivalent via `model_config(extra=\"allow\")`\n+ a single `__root__`-style `entries` dict. Pydantic v2 recommends\n`RootModel` for free-form roots; using a wrapper class keeps the import\nsurface uniform with the rest of this module.",
        -                "properties": {
        -                  "entries": {
        -                    "additionalProperties": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.4 — single material/work-class total entry.",
        -                      "properties": {
        -                        "quantity": {
        -                          "minimum": 0,
        -                          "type": "number"
        -                        },
        -                        "unit": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "quantity",
        -                        "unit"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "object"
        -                  }
        -                },
        -                "type": "object"
        -              },
        -              "warnings": {
        -                "items": {
        -                  "additionalProperties": false,
        -                  "description": "Schema § 1.8 — a non-fatal geometry advisory (56th-fire T2).\n\nThe wire projection of the engine's `core.GeometryWarning`. Advisory only:\na warning NEVER changes a measured quantity — it flags geometry that is\nvalid but likely a mistake (e.g. a stale dependent-height default). Present\non BOTH tiers — a correctness/safety signal, not a paid feature.",
        -                  "properties": {
        -                    "affected_params": {
        -                      "items": {
        -                        "type": "string"
        -                      },
        -                      "type": "array"
        -                    },
        -                    "code": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "detail": {
        -                      "additionalProperties": {
        -                        "type": "number"
        -                      },
        -                      "type": "object"
        -                    },
        -                    "message": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "severity": {
        -                      "enum": [
        -                        "info",
        -                        "advisory",
        -                        "caution"
        -                      ],
        -                      "type": "string"
        -                    }
        -                  },
        -                  "required": [
        -                    "code",
        -                    "severity",
        -                    "message"
        -                  ],
        -                  "type": "object"
        -                },
        -                "type": "array"
        -              }
        -            },
        -            "required": [
        -              "assembly_slug",
        -              "standard",
        -              "parameters_used",
        -              "boq_rows",
        -              "totals_summary",
        -              "text_summary"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      },
        -      "error": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        -            "properties": {
        -              "code": {
        -                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        -                "enum": [
        -                  "RATE_LIMIT_EXCEEDED",
        -                  "TIER_INSUFFICIENT",
        -                  "INVALID_INPUT",
        -                  "SCHEMA_VERSION_MISMATCH",
        -                  "SCHEMA_INVARIANT_VIOLATION",
        -                  "UPSTREAM_TIMEOUT",
        -                  "BACKEND_FAILURE",
        -                  "IP_BLOCKED",
        -                  "RESOURCE_NOT_FOUND",
        -                  "RENDER_FAILURE",
        -                  "OCR_LOW_CONFIDENCE",
        -                  "MANUAL_REVIEW_REQUIRED",
        -                  "ACCEPTANCE_REQUIRED",
        -                  "INVALID_TOKEN"
        -                ],
        -                "type": "string"
        -              },
        -              "details": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "message": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "recoverable": {
        -                "type": "boolean"
        -              },
        -              "retry_after_seconds": {
        -                "anyOf": [
        -                  {
        -                    "minimum": 0,
        -                    "type": "integer"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              }
        -            },
        -            "required": [
        -              "code",
        -              "message",
        -              "recoverable"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      }
        -    },
        -    "required": [
        -      "_meta"
        -    ],
        -    "type": "object"
        -  },
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "_meta": {
        -        "additionalProperties": false,
        -        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        -        "properties": {
        -          "deliverables": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        -                "properties": {
        -                  "docx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "dxf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "expires_at": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  },
        -                  "pdf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "xlsx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "expires_at"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "document_id": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "issued_at": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "rate_limit_remaining": {
        -            "anyOf": [
        -              {
        -                "minimum": 0,
        -                "type": "integer"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "request_id": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "schema_version": {
        -            "const": "1.0.0",
        -            "default": "1.0.0",
        -            "type": "string"
        -          },
        -          "scope_boundary": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        -                "properties": {
        -                  "not_in_scope": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "produced": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "recommended_companions": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "type": "string"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "produced",
        -                  "not_in_scope"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tier": {
        -            "enum": [
        -              "free",
        -              "paid"
        -            ],
        -            "type": "string"
        -          },
        -          "tier_upgrade": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        -                "properties": {
        -                  "available_tiers": {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        -                      "properties": {
        -                        "billing": {
        -                          "enum": [
        -                            "one_off",
        -                            "monthly",
        -                            "annual"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "currency": {
        -                          "enum": [
        -                            "GBP",
        -                            "SGD",
        -                            "EUR",
        -                            "USD",
        -                            "CAD",
        -                            "AUD",
        -                            "NZD",
        -                            "MYR"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "display_name": {
        -                          "type": "string"
        -                        },
        -                        "price_local": {
        -                          "type": "number"
        -                        },
        -                        "tier_slug": {
        -                          "enum": [
        -                            "7_day_pass",
        -                            "solo",
        -                            "studio",
        -                            "practice"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "unlock_summary": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "tier_slug",
        -                        "display_name",
        -                        "price_local",
        -                        "currency",
        -                        "billing",
        -                        "unlock_summary"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "current_tier": {
        -                    "const": "free",
        -                    "default": "free",
        -                    "type": "string"
        -                  },
        -                  "pass_credit": {
        -                    "anyOf": [
        -                      {
        -                        "additionalProperties": false,
        -                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        -                        "properties": {
        -                          "amount_local": {
        -                            "type": "number"
        -                          },
        -                          "applies_to": {
        -                            "const": "solo_first_month",
        -                            "default": "solo_first_month",
        -                            "type": "string"
        -                          },
        -                          "currency": {
        -                            "type": "string"
        -                          },
        -                          "redeemable_until": {
        -                            "type": "string"
        -                          }
        -                        },
        -                        "required": [
        -                          "amount_local",
        -                          "currency",
        -                          "redeemable_until"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "pricing_url": {
        -                    "default": "https://civilquants.com/pricing",
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "available_tiers"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tos_url": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "upgrade_hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "warranty_disclaimer": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          }
        -        },
        -        "required": [
        -          "request_id",
        -          "issued_at",
        -          "tier"
        -        ],
        -        "type": "object"
        -      },
        -      "data": {
        -        "default": null,
        -        "title": "Data"
        -      },
        -      "error": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        -            "properties": {
        -              "code": {
        -                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        -                "enum": [
        -                  "RATE_LIMIT_EXCEEDED",
        -                  "TIER_INSUFFICIENT",
        -                  "INVALID_INPUT",
        -                  "SCHEMA_VERSION_MISMATCH",
        -                  "SCHEMA_INVARIANT_VIOLATION",
        -                  "UPSTREAM_TIMEOUT",
        -                  "BACKEND_FAILURE",
        -                  "IP_BLOCKED",
        -                  "RESOURCE_NOT_FOUND",
        -                  "RENDER_FAILURE",
        -                  "OCR_LOW_CONFIDENCE",
        -                  "MANUAL_REVIEW_REQUIRED",
        -                  "ACCEPTANCE_REQUIRED",
        -                  "INVALID_TOKEN"
        -                ],
        -                "type": "string"
        -              },
        -              "details": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "message": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "recoverable": {
        -                "type": "boolean"
        -              },
        -              "retry_after_seconds": {
        -                "anyOf": [
        -                  {
        -                    "minimum": 0,
        -                    "type": "integer"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              }
        -            },
        -            "required": [
        -              "code",
        -              "message",
        -              "recoverable"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      }
        -    },
        -    "required": [
        -      "_meta"
        -    ],
        -    "type": "object"
        -  }
        -]New value: +[
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "_meta": {
        +        "additionalProperties": false,
        +        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        +        "properties": {
        +          "deliverables": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        +                "properties": {
        +                  "docx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "dxf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "expires_at": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  },
        +                  "pdf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "xlsx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "expires_at"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "document_id": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "issued_at": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "rate_limit_remaining": {
        +            "anyOf": [
        +              {
        +                "minimum": 0,
        +                "type": "integer"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "request_id": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "schema_version": {
        +            "const": "1.0.0",
        +            "default": "1.0.0",
        +            "type": "string"
        +          },
        +          "scope_boundary": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        +                "properties": {
        +                  "not_in_scope": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "produced": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "recommended_companions": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "type": "string"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "produced",
        +                  "not_in_scope"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tier": {
        +            "enum": [
        +              "free",
        +              "paid"
        +            ],
        +            "type": "string"
        +          },
        +          "tier_upgrade": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        +                "properties": {
        +                  "available_tiers": {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        +                      "properties": {
        +                        "billing": {
        +                          "enum": [
        +                            "one_off",
        +                            "monthly",
        +                            "annual"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "currency": {
        +                          "enum": [
        +                            "GBP",
        +                            "SGD",
        +                            "EUR",
        +                            "USD",
        +                            "CAD",
        +                            "AUD",
        +                            "NZD",
        +                            "MYR"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "display_name": {
        +                          "type": "string"
        +                        },
        +                        "price_local": {
        +                          "type": "number"
        +                        },
        +                        "tier_slug": {
        +                          "enum": [
        +                            "7_day_pass",
        +                            "solo",
        +                            "studio",
        +                            "practice"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "unlock_summary": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "tier_slug",
        +                        "display_name",
        +                        "price_local",
        +                        "currency",
        +                        "billing",
        +                        "unlock_summary"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "current_tier": {
        +                    "const": "free",
        +                    "default": "free",
        +                    "type": "string"
        +                  },
        +                  "pass_credit": {
        +                    "anyOf": [
        +                      {
        +                        "additionalProperties": false,
        +                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        +                        "properties": {
        +                          "amount_local": {
        +                            "type": "number"
        +                          },
        +                          "applies_to": {
        +                            "const": "solo_first_month",
        +                            "default": "solo_first_month",
        +                            "type": "string"
        +                          },
        +                          "currency": {
        +                            "type": "string"
        +                          },
        +                          "redeemable_until": {
        +                            "type": "string"
        +                          }
        +                        },
        +                        "required": [
        +                          "amount_local",
        +                          "currency",
        +                          "redeemable_until"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "pricing_url": {
        +                    "default": "https://civilquants.com/pricing",
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "available_tiers"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tos_url": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "upgrade_hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "warranty_disclaimer": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          }
        +        },
        +        "required": [
        +          "request_id",
        +          "issued_at",
        +          "tier"
        +        ],
        +        "type": "object"
        +      },
        +      "data": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Schema § 1.1 — the typed payload returned inside `MCPResponse[ComputeResult]`.\n\nFree-tier responses omit `drawings` (the downloadable CAD artefact\npointers — the paid differentiator); the bridge enforces this. The\n`audit_trail` and the inline `drawing` preview are present on BOTH tiers\n(V1 ALIGN / 60th-fire D + C). `text_summary` is bounded to 2000 chars —\nkeeps the LLM-facing summary token-cheap and forces longer narrative into\nBoQ row descriptions where it belongs. `warnings` is the non-fatal\ngeometry advisory list (both tiers).",
        +            "properties": {
        +              "assembly_slug": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "audit_trail": {
        +                "anyOf": [
        +                  {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.7 — paid-tier audit-trail entry.\n\nOne entry per BoQ row; `boq_row_index` ties to the row position in\n`ComputeResult.boq_rows`. `derivation` is the human-readable formula\nwalk-through; `formula` is the optional formal expression.",
        +                      "properties": {
        +                        "boq_row_index": {
        +                          "minimum": 0,
        +                          "type": "integer"
        +                        },
        +                        "derivation": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "formula": {
        +                          "anyOf": [
        +                            {
        +                              "type": "string"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ],
        +                          "default": null
        +                        },
        +                        "id": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "parameters_referenced": {
        +                          "items": {
        +                            "type": "string"
        +                          },
        +                          "type": "array"
        +                        }
        +                      },
        +                      "required": [
        +                        "id",
        +                        "boq_row_index",
        +                        "derivation"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "boq_rows": {
        +                "items": {
        +                  "additionalProperties": false,
        +                  "description": "Schema § 1.3 — a single bill row in the requested standard's format.\n\n`description` is the non-verbatim functional description per spec § 13.9 /\n§ 15 invariant — NEVER reproduces a standard's verbatim clause text.\n`rate` / `amount` ship null because rates are commodity data the customer\nowns; the engine's job is the measurement, not the pricing.",
        +                  "properties": {
        +                    "amount": {
        +                      "anyOf": [
        +                        {
        +                          "type": "number"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "attribution": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "audit_id": {
        +                      "anyOf": [
        +                        {
        +                          "type": "string"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "description": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "quantity": {
        +                      "minimum": 0,
        +                      "type": "number"
        +                    },
        +                    "rate": {
        +                      "anyOf": [
        +                        {
        +                          "type": "number"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "unit": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "work_section": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    }
        +                  },
        +                  "required": [
        +                    "work_section",
        +                    "description",
        +                    "quantity",
        +                    "unit",
        +                    "attribution"
        +                  ],
        +                  "type": "object"
        +                },
        +                "type": "array"
        +              },
        +              "drawing": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": false,
        +                    "description": "Schema § 1.6a — inline server-rendered SVG preview of the geometry.\n\nThe MCP mirror of the web ``/compute`` response's ``drawing`` field\n(``api.schemas.compute.DrawingRef``): the same on-screen dimensioned\ndrawing both tiers see in the workspace, surfaced on the MCP compute\nresponse so a chat client can render it inline (60th-fire item C). This\nis the on-screen preview — present on BOTH tiers per the free/paid\nboundary; the downloadable CAD artefacts (DXF / dimensioned PDF) remain\nthe paid differentiator via the export tools.\n\nDefined here rather than importing ``DrawingRef`` because the web\n``schemas`` package imports back into this module (``schemas.render``),\nso reusing it would create an import cycle — the MCP wire contract keeps\nits own copy, the same pattern as ``BoQRow`` / ``DrawingReference``.",
        +                    "properties": {
        +                      "entity_count": {
        +                        "minimum": 0,
        +                        "type": "integer"
        +                      },
        +                      "svg_b64": {
        +                        "minLength": 1,
        +                        "type": "string"
        +                      },
        +                      "unit_of_drawing": {
        +                        "const": "m",
        +                        "default": "m",
        +                        "type": "string"
        +                      },
        +                      "viewbox_height": {
        +                        "exclusiveMinimum": 0,
        +                        "type": "number"
        +                      },
        +                      "viewbox_width": {
        +                        "exclusiveMinimum": 0,
        +                        "type": "number"
        +                      },
        +                      "viewbox_x": {
        +                        "type": "number"
        +                      },
        +                      "viewbox_y": {
        +                        "type": "number"
        +                      }
        +                    },
        +                    "required": [
        +                      "svg_b64",
        +                      "viewbox_x",
        +                      "viewbox_y",
        +                      "viewbox_width",
        +                      "viewbox_height",
        +                      "entity_count"
        +                    ],
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "drawings": {
        +                "anyOf": [
        +                  {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.6 — paid-tier drawing artefact pointer.\n\n`url` is an R2-signed URL; expiry is carried in `_meta.deliverables.expires_at`\non the envelope (not duplicated here). `layers` is DXF-only; PDF/SVG\ncallers omit it.",
        +                      "properties": {
        +                        "drawing_type": {
        +                          "enum": [
        +                            "section",
        +                            "plan",
        +                            "elevation",
        +                            "isometric",
        +                            "detail"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "format": {
        +                          "enum": [
        +                            "DXF",
        +                            "PDF",
        +                            "SVG"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "layers": {
        +                          "anyOf": [
        +                            {
        +                              "items": {
        +                                "type": "string"
        +                              },
        +                              "type": "array"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ],
        +                          "default": null
        +                        },
        +                        "scale": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "sheet_size": {
        +                          "enum": [
        +                            "A1",
        +                            "A2",
        +                            "A3",
        +                            "A4"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "url": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "drawing_type",
        +                        "format",
        +                        "url",
        +                        "sheet_size",
        +                        "scale"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "parameters_used": {
        +                "additionalProperties": false,
        +                "description": "Schema § 1.2 — the parameter snapshot the engine actually used.\n\nSplits user-supplied values from engine defaults so customers can see\nwhich numbers came from them and which the engine filled in. Every\ndefaulted parameter SHOULD have a corresponding entry in `assumptions`\n— the bridge layer enforces this when wrapping engine output.",
        +                "properties": {
        +                  "assumptions": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "engine_defaults": {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  "resolved_from_description": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "additionalProperties": false,
        +                          "description": "Schema § 1.2 — a parameter resolved by the forgiving-input layer.\n\nPopulated by the Track B-Forgiving Haiku-4.5 resolution pass; until that\nlayer lands, instances are constructed only by tests. `source` distinguishes\nthe resolution path so customers can audit which fields were inferred.",
        +                          "properties": {
        +                            "confidence": {
        +                              "anyOf": [
        +                                {
        +                                  "enum": [
        +                                    "high",
        +                                    "medium",
        +                                    "low"
        +                                  ],
        +                                  "type": "string"
        +                                },
        +                                {
        +                                  "type": "null"
        +                                }
        +                              ],
        +                              "default": null
        +                            },
        +                            "field_name": {
        +                              "minLength": 1,
        +                              "type": "string"
        +                            },
        +                            "resolved_value": {},
        +                            "source": {
        +                              "enum": [
        +                                "description_field",
        +                                "haiku_resolution",
        +                                "engine_default"
        +                              ],
        +                              "type": "string"
        +                            }
        +                          },
        +                          "required": [
        +                            "field_name",
        +                            "resolved_value",
        +                            "source"
        +                          ],
        +                          "type": "object"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "user_supplied": {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  }
        +                },
        +                "type": "object"
        +              },
        +              "standard": {
        +                "enum": [
        +                  "CESMM4",
        +                  "NRM2",
        +                  "SMM7",
        +                  "MMHW"
        +                ],
        +                "type": "string"
        +              },
        +              "text_summary": {
        +                "maxLength": 2000,
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "totals_summary": {
        +                "additionalProperties": false,
        +                "description": "Schema § 1.4 — totals_summary as a typed wrapper around the free-form dict.\n\nWire shape is a flat object (`{\"concrete_m3\": {...}, \"rebar_t\": {...}}`).\nWe model it as `RootModel`-equivalent via `model_config(extra=\"allow\")`\n+ a single `__root__`-style `entries` dict. Pydantic v2 recommends\n`RootModel` for free-form roots; using a wrapper class keeps the import\nsurface uniform with the rest of this module.",
        +                "properties": {
        +                  "entries": {
        +                    "additionalProperties": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.4 — single material/work-class total entry.",
        +                      "properties": {
        +                        "quantity": {
        +                          "minimum": 0,
        +                          "type": "number"
        +                        },
        +                        "unit": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "quantity",
        +                        "unit"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "object"
        +                  }
        +                },
        +                "type": "object"
        +              },
        +              "warnings": {
        +                "items": {
        +                  "additionalProperties": false,
        +                  "description": "Schema § 1.8 — a non-fatal geometry advisory (56th-fire T2).\n\nThe wire projection of the engine's `core.GeometryWarning`. Advisory only:\na warning NEVER changes a measured quantity — it flags geometry that is\nvalid but likely a mistake (e.g. a stale dependent-height default). Present\non BOTH tiers — a correctness/safety signal, not a paid feature.",
        +                  "properties": {
        +                    "affected_params": {
        +                      "items": {
        +                        "type": "string"
        +                      },
        +                      "type": "array"
        +                    },
        +                    "code": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "detail": {
        +                      "additionalProperties": {
        +                        "type": "number"
        +                      },
        +                      "type": "object"
        +                    },
        +                    "message": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "severity": {
        +                      "enum": [
        +                        "info",
        +                        "advisory",
        +                        "caution"
        +                      ],
        +                      "type": "string"
        +                    }
        +                  },
        +                  "required": [
        +                    "code",
        +                    "severity",
        +                    "message"
        +                  ],
        +                  "type": "object"
        +                },
        +                "type": "array"
        +              }
        +            },
        +            "required": [
        +              "assembly_slug",
        +              "standard",
        +              "parameters_used",
        +              "boq_rows",
        +              "totals_summary",
        +              "text_summary"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      },
        +      "error": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        +            "properties": {
        +              "code": {
        +                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        +                "enum": [
        +                  "RATE_LIMIT_EXCEEDED",
        +                  "TIER_INSUFFICIENT",
        +                  "INVALID_INPUT",
        +                  "SCHEMA_VERSION_MISMATCH",
        +                  "SCHEMA_INVARIANT_VIOLATION",
        +                  "UPSTREAM_TIMEOUT",
        +                  "BACKEND_FAILURE",
        +                  "IP_BLOCKED",
        +                  "RESOURCE_NOT_FOUND",
        +                  "RENDER_FAILURE",
        +                  "OCR_LOW_CONFIDENCE",
        +                  "MANUAL_REVIEW_REQUIRED",
        +                  "ACCEPTANCE_REQUIRED",
        +                  "INVALID_TOKEN"
        +                ],
        +                "type": "string"
        +              },
        +              "details": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "message": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "recoverable": {
        +                "type": "boolean"
        +              },
        +              "retry_after_seconds": {
        +                "anyOf": [
        +                  {
        +                    "minimum": 0,
        +                    "type": "integer"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              }
        +            },
        +            "required": [
        +              "code",
        +              "message",
        +              "recoverable"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      }
        +    },
        +    "required": [
        +      "_meta"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "_meta": {
        +        "additionalProperties": false,
        +        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        +        "properties": {
        +          "deliverables": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        +                "properties": {
        +                  "docx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "dxf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "expires_at": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  },
        +                  "pdf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "xlsx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "expires_at"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "document_id": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "issued_at": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "rate_limit_remaining": {
        +            "anyOf": [
        +              {
        +                "minimum": 0,
        +                "type": "integer"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "request_id": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "schema_version": {
        +            "const": "1.0.0",
        +            "default": "1.0.0",
        +            "type": "string"
        +          },
        +          "scope_boundary": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        +                "properties": {
        +                  "not_in_scope": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "produced": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "recommended_companions": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "type": "string"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "produced",
        +                  "not_in_scope"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tier": {
        +            "enum": [
        +              "free",
        +              "paid"
        +            ],
        +            "type": "string"
        +          },
        +          "tier_upgrade": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        +                "properties": {
        +                  "available_tiers": {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        +                      "properties": {
        +                        "billing": {
        +                          "enum": [
        +                            "one_off",
        +                            "monthly",
        +                            "annual"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "currency": {
        +                          "enum": [
        +                            "GBP",
        +                            "SGD",
        +                            "EUR",
        +                            "USD",
        +                            "CAD",
        +                            "AUD",
        +                            "NZD",
        +                            "MYR"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "display_name": {
        +                          "type": "string"
        +                        },
        +                        "price_local": {
        +                          "type": "number"
        +                        },
        +                        "tier_slug": {
        +                          "enum": [
        +                            "7_day_pass",
        +                            "solo",
        +                            "studio",
        +                            "practice"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "unlock_summary": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "tier_slug",
        +                        "display_name",
        +                        "price_local",
        +                        "currency",
        +                        "billing",
        +                        "unlock_summary"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "current_tier": {
        +                    "const": "free",
        +                    "default": "free",
        +                    "type": "string"
        +                  },
        +                  "pass_credit": {
        +                    "anyOf": [
        +                      {
        +                        "additionalProperties": false,
        +                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        +                        "properties": {
        +                          "amount_local": {
        +                            "type": "number"
        +                          },
        +                          "applies_to": {
        +                            "const": "solo_first_month",
        +                            "default": "solo_first_month",
        +                            "type": "string"
        +                          },
        +                          "currency": {
        +                            "type": "string"
        +                          },
        +                          "redeemable_until": {
        +                            "type": "string"
        +                          }
        +                        },
        +                        "required": [
        +                          "amount_local",
        +                          "currency",
        +                          "redeemable_until"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "pricing_url": {
        +                    "default": "https://civilquants.com/pricing",
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "available_tiers"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tos_url": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "upgrade_hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "warranty_disclaimer": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          }
        +        },
        +        "required": [
        +          "request_id",
        +          "issued_at",
        +          "tier"
        +        ],
        +        "type": "object"
        +      },
        +      "data": {
        +        "default": null,
        +        "title": "Data"
        +      },
        +      "error": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        +            "properties": {
        +              "code": {
        +                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        +                "enum": [
        +                  "RATE_LIMIT_EXCEEDED",
        +                  "TIER_INSUFFICIENT",
        +                  "INVALID_INPUT",
        +                  "SCHEMA_VERSION_MISMATCH",
        +                  "SCHEMA_INVARIANT_VIOLATION",
        +                  "UPSTREAM_TIMEOUT",
        +                  "BACKEND_FAILURE",
        +                  "IP_BLOCKED",
        +                  "RESOURCE_NOT_FOUND",
        +                  "RENDER_FAILURE",
        +                  "OCR_LOW_CONFIDENCE",
        +                  "MANUAL_REVIEW_REQUIRED",
        +                  "ACCEPTANCE_REQUIRED",
        +                  "INVALID_TOKEN"
        +                ],
        +                "type": "string"
        +              },
        +              "details": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "message": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "recoverable": {
        +                "type": "boolean"
        +              },
        +              "retry_after_seconds": {
        +                "anyOf": [
        +                  {
        +                    "minimum": 0,
        +                    "type": "integer"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              }
        +            },
        +            "required": [
        +              "code",
        +              "message",
        +              "recoverable"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      }
        +    },
        +    "required": [
        +      "_meta"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedcompute_reinforced_soil_wall3 fields changed
      • addedInput schema / properties / deliverables
        Added value: +{
        +  "anyOf": [
        +    {
        +      "items": {
        +        "const": "xlsx",
        +        "type": "string"
        +      },
        +      "type": "array"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null
        +}
      • addedInput schema / properties / output_mode
        Added value: +{
        +  "default": "full_json",
        +  "enum": [
        +    "summary",
        +    "boq",
        +    "boq_with_backup",
        +    "full_json"
        +  ],
        +  "type": "string"
        +}
      • changedOutput schema / properties / result / anyOf
        Previous value: -[
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "_meta": {
        -        "additionalProperties": false,
        -        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        -        "properties": {
        -          "deliverables": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        -                "properties": {
        -                  "docx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "dxf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "expires_at": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  },
        -                  "pdf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "xlsx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "expires_at"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "document_id": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "issued_at": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "rate_limit_remaining": {
        -            "anyOf": [
        -              {
        -                "minimum": 0,
        -                "type": "integer"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "request_id": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "schema_version": {
        -            "const": "1.0.0",
        -            "default": "1.0.0",
        -            "type": "string"
        -          },
        -          "scope_boundary": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        -                "properties": {
        -                  "not_in_scope": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "produced": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "recommended_companions": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "type": "string"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "produced",
        -                  "not_in_scope"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tier": {
        -            "enum": [
        -              "free",
        -              "paid"
        -            ],
        -            "type": "string"
        -          },
        -          "tier_upgrade": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        -                "properties": {
        -                  "available_tiers": {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        -                      "properties": {
        -                        "billing": {
        -                          "enum": [
        -                            "one_off",
        -                            "monthly",
        -                            "annual"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "currency": {
        -                          "enum": [
        -                            "GBP",
        -                            "SGD",
        -                            "EUR",
        -                            "USD",
        -                            "CAD",
        -                            "AUD",
        -                            "NZD",
        -                            "MYR"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "display_name": {
        -                          "type": "string"
        -                        },
        -                        "price_local": {
        -                          "type": "number"
        -                        },
        -                        "tier_slug": {
        -                          "enum": [
        -                            "7_day_pass",
        -                            "solo",
        -                            "studio",
        -                            "practice"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "unlock_summary": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "tier_slug",
        -                        "display_name",
        -                        "price_local",
        -                        "currency",
        -                        "billing",
        -                        "unlock_summary"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "current_tier": {
        -                    "const": "free",
        -                    "default": "free",
        -                    "type": "string"
        -                  },
        -                  "pass_credit": {
        -                    "anyOf": [
        -                      {
        -                        "additionalProperties": false,
        -                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        -                        "properties": {
        -                          "amount_local": {
        -                            "type": "number"
        -                          },
        -                          "applies_to": {
        -                            "const": "solo_first_month",
        -                            "default": "solo_first_month",
        -                            "type": "string"
        -                          },
        -                          "currency": {
        -                            "type": "string"
        -                          },
        -                          "redeemable_until": {
        -                            "type": "string"
        -                          }
        -                        },
        -                        "required": [
        -                          "amount_local",
        -                          "currency",
        -                          "redeemable_until"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "pricing_url": {
        -                    "default": "https://civilquants.com/pricing",
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "available_tiers"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tos_url": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "upgrade_hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "warranty_disclaimer": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          }
        -        },
        -        "required": [
        -          "request_id",
        -          "issued_at",
        -          "tier"
        -        ],
        -        "type": "object"
        -      },
        -      "data": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Schema § 1.1 — the typed payload returned inside `MCPResponse[ComputeResult]`.\n\nFree-tier responses MUST omit `drawings` and `audit_trail` (the bridge\nenforces this); paid-tier responses populate both. `text_summary` is\nbounded to 2000 chars — keeps the LLM-facing summary token-cheap and\nforces longer narrative into BoQ row descriptions where it belongs.\n`warnings` is the non-fatal geometry advisory list (both tiers).",
        -            "properties": {
        -              "assembly_slug": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "audit_trail": {
        -                "anyOf": [
        -                  {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.7 — paid-tier audit-trail entry.\n\nOne entry per BoQ row; `boq_row_index` ties to the row position in\n`ComputeResult.boq_rows`. `derivation` is the human-readable formula\nwalk-through; `formula` is the optional formal expression.",
        -                      "properties": {
        -                        "boq_row_index": {
        -                          "minimum": 0,
        -                          "type": "integer"
        -                        },
        -                        "derivation": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "formula": {
        -                          "anyOf": [
        -                            {
        -                              "type": "string"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ],
        -                          "default": null
        -                        },
        -                        "id": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "parameters_referenced": {
        -                          "items": {
        -                            "type": "string"
        -                          },
        -                          "type": "array"
        -                        }
        -                      },
        -                      "required": [
        -                        "id",
        -                        "boq_row_index",
        -                        "derivation"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "boq_rows": {
        -                "items": {
        -                  "additionalProperties": false,
        -                  "description": "Schema § 1.3 — a single bill row in the requested standard's format.\n\n`description` is the non-verbatim functional description per spec § 13.9 /\n§ 15 invariant — NEVER reproduces a standard's verbatim clause text.\n`rate` / `amount` ship null because rates are commodity data the customer\nowns; the engine's job is the measurement, not the pricing.",
        -                  "properties": {
        -                    "amount": {
        -                      "anyOf": [
        -                        {
        -                          "type": "number"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "attribution": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "audit_id": {
        -                      "anyOf": [
        -                        {
        -                          "type": "string"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "description": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "quantity": {
        -                      "minimum": 0,
        -                      "type": "number"
        -                    },
        -                    "rate": {
        -                      "anyOf": [
        -                        {
        -                          "type": "number"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "unit": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "work_section": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    }
        -                  },
        -                  "required": [
        -                    "work_section",
        -                    "description",
        -                    "quantity",
        -                    "unit",
        -                    "attribution"
        -                  ],
        -                  "type": "object"
        -                },
        -                "type": "array"
        -              },
        -              "drawings": {
        -                "anyOf": [
        -                  {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.6 — paid-tier drawing artefact pointer.\n\n`url` is an R2-signed URL; expiry is carried in `_meta.deliverables.expires_at`\non the envelope (not duplicated here). `layers` is DXF-only; PDF/SVG\ncallers omit it.",
        -                      "properties": {
        -                        "drawing_type": {
        -                          "enum": [
        -                            "section",
        -                            "plan",
        -                            "elevation",
        -                            "isometric",
        -                            "detail"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "format": {
        -                          "enum": [
        -                            "DXF",
        -                            "PDF",
        -                            "SVG"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "layers": {
        -                          "anyOf": [
        -                            {
        -                              "items": {
        -                                "type": "string"
        -                              },
        -                              "type": "array"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ],
        -                          "default": null
        -                        },
        -                        "scale": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "sheet_size": {
        -                          "enum": [
        -                            "A1",
        -                            "A2",
        -                            "A3",
        -                            "A4"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "url": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "drawing_type",
        -                        "format",
        -                        "url",
        -                        "sheet_size",
        -                        "scale"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "parameters_used": {
        -                "additionalProperties": false,
        -                "description": "Schema § 1.2 — the parameter snapshot the engine actually used.\n\nSplits user-supplied values from engine defaults so customers can see\nwhich numbers came from them and which the engine filled in. Every\ndefaulted parameter SHOULD have a corresponding entry in `assumptions`\n— the bridge layer enforces this when wrapping engine output.",
        -                "properties": {
        -                  "assumptions": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "engine_defaults": {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  "resolved_from_description": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "additionalProperties": false,
        -                          "description": "Schema § 1.2 — a parameter resolved by the forgiving-input layer.\n\nPopulated by the Track B-Forgiving Haiku-4.5 resolution pass; until that\nlayer lands, instances are constructed only by tests. `source` distinguishes\nthe resolution path so customers can audit which fields were inferred.",
        -                          "properties": {
        -                            "confidence": {
        -                              "anyOf": [
        -                                {
        -                                  "enum": [
        -                                    "high",
        -                                    "medium",
        -                                    "low"
        -                                  ],
        -                                  "type": "string"
        -                                },
        -                                {
        -                                  "type": "null"
        -                                }
        -                              ],
        -                              "default": null
        -                            },
        -                            "field_name": {
        -                              "minLength": 1,
        -                              "type": "string"
        -                            },
        -                            "resolved_value": {},
        -                            "source": {
        -                              "enum": [
        -                                "description_field",
        -                                "haiku_resolution",
        -                                "engine_default"
        -                              ],
        -                              "type": "string"
        -                            }
        -                          },
        -                          "required": [
        -                            "field_name",
        -                            "resolved_value",
        -                            "source"
        -                          ],
        -                          "type": "object"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "user_supplied": {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  }
        -                },
        -                "type": "object"
        -              },
        -              "standard": {
        -                "enum": [
        -                  "CESMM4",
        -                  "NRM2",
        -                  "SMM7",
        -                  "MMHW"
        -                ],
        -                "type": "string"
        -              },
        -              "text_summary": {
        -                "maxLength": 2000,
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "totals_summary": {
        -                "additionalProperties": false,
        -                "description": "Schema § 1.4 — totals_summary as a typed wrapper around the free-form dict.\n\nWire shape is a flat object (`{\"concrete_m3\": {...}, \"rebar_t\": {...}}`).\nWe model it as `RootModel`-equivalent via `model_config(extra=\"allow\")`\n+ a single `__root__`-style `entries` dict. Pydantic v2 recommends\n`RootModel` for free-form roots; using a wrapper class keeps the import\nsurface uniform with the rest of this module.",
        -                "properties": {
        -                  "entries": {
        -                    "additionalProperties": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.4 — single material/work-class total entry.",
        -                      "properties": {
        -                        "quantity": {
        -                          "minimum": 0,
        -                          "type": "number"
        -                        },
        -                        "unit": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "quantity",
        -                        "unit"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "object"
        -                  }
        -                },
        -                "type": "object"
        -              },
        -              "warnings": {
        -                "items": {
        -                  "additionalProperties": false,
        -                  "description": "Schema § 1.8 — a non-fatal geometry advisory (56th-fire T2).\n\nThe wire projection of the engine's `core.GeometryWarning`. Advisory only:\na warning NEVER changes a measured quantity — it flags geometry that is\nvalid but likely a mistake (e.g. a stale dependent-height default). Present\non BOTH tiers — a correctness/safety signal, not a paid feature.",
        -                  "properties": {
        -                    "affected_params": {
        -                      "items": {
        -                        "type": "string"
        -                      },
        -                      "type": "array"
        -                    },
        -                    "code": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "detail": {
        -                      "additionalProperties": {
        -                        "type": "number"
        -                      },
        -                      "type": "object"
        -                    },
        -                    "message": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "severity": {
        -                      "enum": [
        -                        "info",
        -                        "advisory",
        -                        "caution"
        -                      ],
        -                      "type": "string"
        -                    }
        -                  },
        -                  "required": [
        -                    "code",
        -                    "severity",
        -                    "message"
        -                  ],
        -                  "type": "object"
        -                },
        -                "type": "array"
        -              }
        -            },
        -            "required": [
        -              "assembly_slug",
        -              "standard",
        -              "parameters_used",
        -              "boq_rows",
        -              "totals_summary",
        -              "text_summary"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      },
        -      "error": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        -            "properties": {
        -              "code": {
        -                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        -                "enum": [
        -                  "RATE_LIMIT_EXCEEDED",
        -                  "TIER_INSUFFICIENT",
        -                  "INVALID_INPUT",
        -                  "SCHEMA_VERSION_MISMATCH",
        -                  "SCHEMA_INVARIANT_VIOLATION",
        -                  "UPSTREAM_TIMEOUT",
        -                  "BACKEND_FAILURE",
        -                  "IP_BLOCKED",
        -                  "RESOURCE_NOT_FOUND",
        -                  "RENDER_FAILURE",
        -                  "OCR_LOW_CONFIDENCE",
        -                  "MANUAL_REVIEW_REQUIRED",
        -                  "ACCEPTANCE_REQUIRED",
        -                  "INVALID_TOKEN"
        -                ],
        -                "type": "string"
        -              },
        -              "details": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "message": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "recoverable": {
        -                "type": "boolean"
        -              },
        -              "retry_after_seconds": {
        -                "anyOf": [
        -                  {
        -                    "minimum": 0,
        -                    "type": "integer"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              }
        -            },
        -            "required": [
        -              "code",
        -              "message",
        -              "recoverable"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      }
        -    },
        -    "required": [
        -      "_meta"
        -    ],
        -    "type": "object"
        -  },
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "_meta": {
        -        "additionalProperties": false,
        -        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        -        "properties": {
        -          "deliverables": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        -                "properties": {
        -                  "docx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "dxf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "expires_at": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  },
        -                  "pdf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "xlsx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "expires_at"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "document_id": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "issued_at": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "rate_limit_remaining": {
        -            "anyOf": [
        -              {
        -                "minimum": 0,
        -                "type": "integer"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "request_id": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "schema_version": {
        -            "const": "1.0.0",
        -            "default": "1.0.0",
        -            "type": "string"
        -          },
        -          "scope_boundary": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        -                "properties": {
        -                  "not_in_scope": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "produced": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "recommended_companions": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "type": "string"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "produced",
        -                  "not_in_scope"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tier": {
        -            "enum": [
        -              "free",
        -              "paid"
        -            ],
        -            "type": "string"
        -          },
        -          "tier_upgrade": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        -                "properties": {
        -                  "available_tiers": {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        -                      "properties": {
        -                        "billing": {
        -                          "enum": [
        -                            "one_off",
        -                            "monthly",
        -                            "annual"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "currency": {
        -                          "enum": [
        -                            "GBP",
        -                            "SGD",
        -                            "EUR",
        -                            "USD",
        -                            "CAD",
        -                            "AUD",
        -                            "NZD",
        -                            "MYR"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "display_name": {
        -                          "type": "string"
        -                        },
        -                        "price_local": {
        -                          "type": "number"
        -                        },
        -                        "tier_slug": {
        -                          "enum": [
        -                            "7_day_pass",
        -                            "solo",
        -                            "studio",
        -                            "practice"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "unlock_summary": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "tier_slug",
        -                        "display_name",
        -                        "price_local",
        -                        "currency",
        -                        "billing",
        -                        "unlock_summary"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "current_tier": {
        -                    "const": "free",
        -                    "default": "free",
        -                    "type": "string"
        -                  },
        -                  "pass_credit": {
        -                    "anyOf": [
        -                      {
        -                        "additionalProperties": false,
        -                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        -                        "properties": {
        -                          "amount_local": {
        -                            "type": "number"
        -                          },
        -                          "applies_to": {
        -                            "const": "solo_first_month",
        -                            "default": "solo_first_month",
        -                            "type": "string"
        -                          },
        -                          "currency": {
        -                            "type": "string"
        -                          },
        -                          "redeemable_until": {
        -                            "type": "string"
        -                          }
        -                        },
        -                        "required": [
        -                          "amount_local",
        -                          "currency",
        -                          "redeemable_until"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "pricing_url": {
        -                    "default": "https://civilquants.com/pricing",
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "available_tiers"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tos_url": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "upgrade_hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "warranty_disclaimer": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          }
        -        },
        -        "required": [
        -          "request_id",
        -          "issued_at",
        -          "tier"
        -        ],
        -        "type": "object"
        -      },
        -      "data": {
        -        "default": null,
        -        "title": "Data"
        -      },
        -      "error": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        -            "properties": {
        -              "code": {
        -                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        -                "enum": [
        -                  "RATE_LIMIT_EXCEEDED",
        -                  "TIER_INSUFFICIENT",
        -                  "INVALID_INPUT",
        -                  "SCHEMA_VERSION_MISMATCH",
        -                  "SCHEMA_INVARIANT_VIOLATION",
        -                  "UPSTREAM_TIMEOUT",
        -                  "BACKEND_FAILURE",
        -                  "IP_BLOCKED",
        -                  "RESOURCE_NOT_FOUND",
        -                  "RENDER_FAILURE",
        -                  "OCR_LOW_CONFIDENCE",
        -                  "MANUAL_REVIEW_REQUIRED",
        -                  "ACCEPTANCE_REQUIRED",
        -                  "INVALID_TOKEN"
        -                ],
        -                "type": "string"
        -              },
        -              "details": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "message": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "recoverable": {
        -                "type": "boolean"
        -              },
        -              "retry_after_seconds": {
        -                "anyOf": [
        -                  {
        -                    "minimum": 0,
        -                    "type": "integer"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              }
        -            },
        -            "required": [
        -              "code",
        -              "message",
        -              "recoverable"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      }
        -    },
        -    "required": [
        -      "_meta"
        -    ],
        -    "type": "object"
        -  }
        -]New value: +[
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "_meta": {
        +        "additionalProperties": false,
        +        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        +        "properties": {
        +          "deliverables": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        +                "properties": {
        +                  "docx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "dxf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "expires_at": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  },
        +                  "pdf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "xlsx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "expires_at"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "document_id": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "issued_at": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "rate_limit_remaining": {
        +            "anyOf": [
        +              {
        +                "minimum": 0,
        +                "type": "integer"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "request_id": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "schema_version": {
        +            "const": "1.0.0",
        +            "default": "1.0.0",
        +            "type": "string"
        +          },
        +          "scope_boundary": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        +                "properties": {
        +                  "not_in_scope": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "produced": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "recommended_companions": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "type": "string"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "produced",
        +                  "not_in_scope"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tier": {
        +            "enum": [
        +              "free",
        +              "paid"
        +            ],
        +            "type": "string"
        +          },
        +          "tier_upgrade": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        +                "properties": {
        +                  "available_tiers": {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        +                      "properties": {
        +                        "billing": {
        +                          "enum": [
        +                            "one_off",
        +                            "monthly",
        +                            "annual"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "currency": {
        +                          "enum": [
        +                            "GBP",
        +                            "SGD",
        +                            "EUR",
        +                            "USD",
        +                            "CAD",
        +                            "AUD",
        +                            "NZD",
        +                            "MYR"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "display_name": {
        +                          "type": "string"
        +                        },
        +                        "price_local": {
        +                          "type": "number"
        +                        },
        +                        "tier_slug": {
        +                          "enum": [
        +                            "7_day_pass",
        +                            "solo",
        +                            "studio",
        +                            "practice"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "unlock_summary": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "tier_slug",
        +                        "display_name",
        +                        "price_local",
        +                        "currency",
        +                        "billing",
        +                        "unlock_summary"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "current_tier": {
        +                    "const": "free",
        +                    "default": "free",
        +                    "type": "string"
        +                  },
        +                  "pass_credit": {
        +                    "anyOf": [
        +                      {
        +                        "additionalProperties": false,
        +                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        +                        "properties": {
        +                          "amount_local": {
        +                            "type": "number"
        +                          },
        +                          "applies_to": {
        +                            "const": "solo_first_month",
        +                            "default": "solo_first_month",
        +                            "type": "string"
        +                          },
        +                          "currency": {
        +                            "type": "string"
        +                          },
        +                          "redeemable_until": {
        +                            "type": "string"
        +                          }
        +                        },
        +                        "required": [
        +                          "amount_local",
        +                          "currency",
        +                          "redeemable_until"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "pricing_url": {
        +                    "default": "https://civilquants.com/pricing",
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "available_tiers"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tos_url": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "upgrade_hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "warranty_disclaimer": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          }
        +        },
        +        "required": [
        +          "request_id",
        +          "issued_at",
        +          "tier"
        +        ],
        +        "type": "object"
        +      },
        +      "data": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Schema § 1.1 — the typed payload returned inside `MCPResponse[ComputeResult]`.\n\nFree-tier responses omit `drawings` (the downloadable CAD artefact\npointers — the paid differentiator); the bridge enforces this. The\n`audit_trail` and the inline `drawing` preview are present on BOTH tiers\n(V1 ALIGN / 60th-fire D + C). `text_summary` is bounded to 2000 chars —\nkeeps the LLM-facing summary token-cheap and forces longer narrative into\nBoQ row descriptions where it belongs. `warnings` is the non-fatal\ngeometry advisory list (both tiers).",
        +            "properties": {
        +              "assembly_slug": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "audit_trail": {
        +                "anyOf": [
        +                  {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.7 — paid-tier audit-trail entry.\n\nOne entry per BoQ row; `boq_row_index` ties to the row position in\n`ComputeResult.boq_rows`. `derivation` is the human-readable formula\nwalk-through; `formula` is the optional formal expression.",
        +                      "properties": {
        +                        "boq_row_index": {
        +                          "minimum": 0,
        +                          "type": "integer"
        +                        },
        +                        "derivation": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "formula": {
        +                          "anyOf": [
        +                            {
        +                              "type": "string"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ],
        +                          "default": null
        +                        },
        +                        "id": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "parameters_referenced": {
        +                          "items": {
        +                            "type": "string"
        +                          },
        +                          "type": "array"
        +                        }
        +                      },
        +                      "required": [
        +                        "id",
        +                        "boq_row_index",
        +                        "derivation"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "boq_rows": {
        +                "items": {
        +                  "additionalProperties": false,
        +                  "description": "Schema § 1.3 — a single bill row in the requested standard's format.\n\n`description` is the non-verbatim functional description per spec § 13.9 /\n§ 15 invariant — NEVER reproduces a standard's verbatim clause text.\n`rate` / `amount` ship null because rates are commodity data the customer\nowns; the engine's job is the measurement, not the pricing.",
        +                  "properties": {
        +                    "amount": {
        +                      "anyOf": [
        +                        {
        +                          "type": "number"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "attribution": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "audit_id": {
        +                      "anyOf": [
        +                        {
        +                          "type": "string"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "description": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "quantity": {
        +                      "minimum": 0,
        +                      "type": "number"
        +                    },
        +                    "rate": {
        +                      "anyOf": [
        +                        {
        +                          "type": "number"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "unit": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "work_section": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    }
        +                  },
        +                  "required": [
        +                    "work_section",
        +                    "description",
        +                    "quantity",
        +                    "unit",
        +                    "attribution"
        +                  ],
        +                  "type": "object"
        +                },
        +                "type": "array"
        +              },
        +              "drawing": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": false,
        +                    "description": "Schema § 1.6a — inline server-rendered SVG preview of the geometry.\n\nThe MCP mirror of the web ``/compute`` response's ``drawing`` field\n(``api.schemas.compute.DrawingRef``): the same on-screen dimensioned\ndrawing both tiers see in the workspace, surfaced on the MCP compute\nresponse so a chat client can render it inline (60th-fire item C). This\nis the on-screen preview — present on BOTH tiers per the free/paid\nboundary; the downloadable CAD artefacts (DXF / dimensioned PDF) remain\nthe paid differentiator via the export tools.\n\nDefined here rather than importing ``DrawingRef`` because the web\n``schemas`` package imports back into this module (``schemas.render``),\nso reusing it would create an import cycle — the MCP wire contract keeps\nits own copy, the same pattern as ``BoQRow`` / ``DrawingReference``.",
        +                    "properties": {
        +                      "entity_count": {
        +                        "minimum": 0,
        +                        "type": "integer"
        +                      },
        +                      "svg_b64": {
        +                        "minLength": 1,
        +                        "type": "string"
        +                      },
        +                      "unit_of_drawing": {
        +                        "const": "m",
        +                        "default": "m",
        +                        "type": "string"
        +                      },
        +                      "viewbox_height": {
        +                        "exclusiveMinimum": 0,
        +                        "type": "number"
        +                      },
        +                      "viewbox_width": {
        +                        "exclusiveMinimum": 0,
        +                        "type": "number"
        +                      },
        +                      "viewbox_x": {
        +                        "type": "number"
        +                      },
        +                      "viewbox_y": {
        +                        "type": "number"
        +                      }
        +                    },
        +                    "required": [
        +                      "svg_b64",
        +                      "viewbox_x",
        +                      "viewbox_y",
        +                      "viewbox_width",
        +                      "viewbox_height",
        +                      "entity_count"
        +                    ],
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "drawings": {
        +                "anyOf": [
        +                  {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.6 — paid-tier drawing artefact pointer.\n\n`url` is an R2-signed URL; expiry is carried in `_meta.deliverables.expires_at`\non the envelope (not duplicated here). `layers` is DXF-only; PDF/SVG\ncallers omit it.",
        +                      "properties": {
        +                        "drawing_type": {
        +                          "enum": [
        +                            "section",
        +                            "plan",
        +                            "elevation",
        +                            "isometric",
        +                            "detail"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "format": {
        +                          "enum": [
        +                            "DXF",
        +                            "PDF",
        +                            "SVG"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "layers": {
        +                          "anyOf": [
        +                            {
        +                              "items": {
        +                                "type": "string"
        +                              },
        +                              "type": "array"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ],
        +                          "default": null
        +                        },
        +                        "scale": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "sheet_size": {
        +                          "enum": [
        +                            "A1",
        +                            "A2",
        +                            "A3",
        +                            "A4"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "url": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "drawing_type",
        +                        "format",
        +                        "url",
        +                        "sheet_size",
        +                        "scale"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "parameters_used": {
        +                "additionalProperties": false,
        +                "description": "Schema § 1.2 — the parameter snapshot the engine actually used.\n\nSplits user-supplied values from engine defaults so customers can see\nwhich numbers came from them and which the engine filled in. Every\ndefaulted parameter SHOULD have a corresponding entry in `assumptions`\n— the bridge layer enforces this when wrapping engine output.",
        +                "properties": {
        +                  "assumptions": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "engine_defaults": {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  "resolved_from_description": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "additionalProperties": false,
        +                          "description": "Schema § 1.2 — a parameter resolved by the forgiving-input layer.\n\nPopulated by the Track B-Forgiving Haiku-4.5 resolution pass; until that\nlayer lands, instances are constructed only by tests. `source` distinguishes\nthe resolution path so customers can audit which fields were inferred.",
        +                          "properties": {
        +                            "confidence": {
        +                              "anyOf": [
        +                                {
        +                                  "enum": [
        +                                    "high",
        +                                    "medium",
        +                                    "low"
        +                                  ],
        +                                  "type": "string"
        +                                },
        +                                {
        +                                  "type": "null"
        +                                }
        +                              ],
        +                              "default": null
        +                            },
        +                            "field_name": {
        +                              "minLength": 1,
        +                              "type": "string"
        +                            },
        +                            "resolved_value": {},
        +                            "source": {
        +                              "enum": [
        +                                "description_field",
        +                                "haiku_resolution",
        +                                "engine_default"
        +                              ],
        +                              "type": "string"
        +                            }
        +                          },
        +                          "required": [
        +                            "field_name",
        +                            "resolved_value",
        +                            "source"
        +                          ],
        +                          "type": "object"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "user_supplied": {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  }
        +                },
        +                "type": "object"
        +              },
        +              "standard": {
        +                "enum": [
        +                  "CESMM4",
        +                  "NRM2",
        +                  "SMM7",
        +                  "MMHW"
        +                ],
        +                "type": "string"
        +              },
        +              "text_summary": {
        +                "maxLength": 2000,
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "totals_summary": {
        +                "additionalProperties": false,
        +                "description": "Schema § 1.4 — totals_summary as a typed wrapper around the free-form dict.\n\nWire shape is a flat object (`{\"concrete_m3\": {...}, \"rebar_t\": {...}}`).\nWe model it as `RootModel`-equivalent via `model_config(extra=\"allow\")`\n+ a single `__root__`-style `entries` dict. Pydantic v2 recommends\n`RootModel` for free-form roots; using a wrapper class keeps the import\nsurface uniform with the rest of this module.",
        +                "properties": {
        +                  "entries": {
        +                    "additionalProperties": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.4 — single material/work-class total entry.",
        +                      "properties": {
        +                        "quantity": {
        +                          "minimum": 0,
        +                          "type": "number"
        +                        },
        +                        "unit": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "quantity",
        +                        "unit"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "object"
        +                  }
        +                },
        +                "type": "object"
        +              },
        +              "warnings": {
        +                "items": {
        +                  "additionalProperties": false,
        +                  "description": "Schema § 1.8 — a non-fatal geometry advisory (56th-fire T2).\n\nThe wire projection of the engine's `core.GeometryWarning`. Advisory only:\na warning NEVER changes a measured quantity — it flags geometry that is\nvalid but likely a mistake (e.g. a stale dependent-height default). Present\non BOTH tiers — a correctness/safety signal, not a paid feature.",
        +                  "properties": {
        +                    "affected_params": {
        +                      "items": {
        +                        "type": "string"
        +                      },
        +                      "type": "array"
        +                    },
        +                    "code": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "detail": {
        +                      "additionalProperties": {
        +                        "type": "number"
        +                      },
        +                      "type": "object"
        +                    },
        +                    "message": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "severity": {
        +                      "enum": [
        +                        "info",
        +                        "advisory",
        +                        "caution"
        +                      ],
        +                      "type": "string"
        +                    }
        +                  },
        +                  "required": [
        +                    "code",
        +                    "severity",
        +                    "message"
        +                  ],
        +                  "type": "object"
        +                },
        +                "type": "array"
        +              }
        +            },
        +            "required": [
        +              "assembly_slug",
        +              "standard",
        +              "parameters_used",
        +              "boq_rows",
        +              "totals_summary",
        +              "text_summary"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      },
        +      "error": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        +            "properties": {
        +              "code": {
        +                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        +                "enum": [
        +                  "RATE_LIMIT_EXCEEDED",
        +                  "TIER_INSUFFICIENT",
        +                  "INVALID_INPUT",
        +                  "SCHEMA_VERSION_MISMATCH",
        +                  "SCHEMA_INVARIANT_VIOLATION",
        +                  "UPSTREAM_TIMEOUT",
        +                  "BACKEND_FAILURE",
        +                  "IP_BLOCKED",
        +                  "RESOURCE_NOT_FOUND",
        +                  "RENDER_FAILURE",
        +                  "OCR_LOW_CONFIDENCE",
        +                  "MANUAL_REVIEW_REQUIRED",
        +                  "ACCEPTANCE_REQUIRED",
        +                  "INVALID_TOKEN"
        +                ],
        +                "type": "string"
        +              },
        +              "details": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "message": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "recoverable": {
        +                "type": "boolean"
        +              },
        +              "retry_after_seconds": {
        +                "anyOf": [
        +                  {
        +                    "minimum": 0,
        +                    "type": "integer"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              }
        +            },
        +            "required": [
        +              "code",
        +              "message",
        +              "recoverable"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      }
        +    },
        +    "required": [
        +      "_meta"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "_meta": {
        +        "additionalProperties": false,
        +        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        +        "properties": {
        +          "deliverables": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        +                "properties": {
        +                  "docx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "dxf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "expires_at": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  },
        +                  "pdf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "xlsx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "expires_at"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "document_id": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "issued_at": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "rate_limit_remaining": {
        +            "anyOf": [
        +              {
        +                "minimum": 0,
        +                "type": "integer"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "request_id": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "schema_version": {
        +            "const": "1.0.0",
        +            "default": "1.0.0",
        +            "type": "string"
        +          },
        +          "scope_boundary": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        +                "properties": {
        +                  "not_in_scope": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "produced": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "recommended_companions": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "type": "string"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "produced",
        +                  "not_in_scope"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tier": {
        +            "enum": [
        +              "free",
        +              "paid"
        +            ],
        +            "type": "string"
        +          },
        +          "tier_upgrade": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        +                "properties": {
        +                  "available_tiers": {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        +                      "properties": {
        +                        "billing": {
        +                          "enum": [
        +                            "one_off",
        +                            "monthly",
        +                            "annual"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "currency": {
        +                          "enum": [
        +                            "GBP",
        +                            "SGD",
        +                            "EUR",
        +                            "USD",
        +                            "CAD",
        +                            "AUD",
        +                            "NZD",
        +                            "MYR"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "display_name": {
        +                          "type": "string"
        +                        },
        +                        "price_local": {
        +                          "type": "number"
        +                        },
        +                        "tier_slug": {
        +                          "enum": [
        +                            "7_day_pass",
        +                            "solo",
        +                            "studio",
        +                            "practice"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "unlock_summary": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "tier_slug",
        +                        "display_name",
        +                        "price_local",
        +                        "currency",
        +                        "billing",
        +                        "unlock_summary"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "current_tier": {
        +                    "const": "free",
        +                    "default": "free",
        +                    "type": "string"
        +                  },
        +                  "pass_credit": {
        +                    "anyOf": [
        +                      {
        +                        "additionalProperties": false,
        +                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        +                        "properties": {
        +                          "amount_local": {
        +                            "type": "number"
        +                          },
        +                          "applies_to": {
        +                            "const": "solo_first_month",
        +                            "default": "solo_first_month",
        +                            "type": "string"
        +                          },
        +                          "currency": {
        +                            "type": "string"
        +                          },
        +                          "redeemable_until": {
        +                            "type": "string"
        +                          }
        +                        },
        +                        "required": [
        +                          "amount_local",
        +                          "currency",
        +                          "redeemable_until"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "pricing_url": {
        +                    "default": "https://civilquants.com/pricing",
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "available_tiers"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tos_url": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "upgrade_hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "warranty_disclaimer": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          }
        +        },
        +        "required": [
        +          "request_id",
        +          "issued_at",
        +          "tier"
        +        ],
        +        "type": "object"
        +      },
        +      "data": {
        +        "default": null,
        +        "title": "Data"
        +      },
        +      "error": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        +            "properties": {
        +              "code": {
        +                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        +                "enum": [
        +                  "RATE_LIMIT_EXCEEDED",
        +                  "TIER_INSUFFICIENT",
        +                  "INVALID_INPUT",
        +                  "SCHEMA_VERSION_MISMATCH",
        +                  "SCHEMA_INVARIANT_VIOLATION",
        +                  "UPSTREAM_TIMEOUT",
        +                  "BACKEND_FAILURE",
        +                  "IP_BLOCKED",
        +                  "RESOURCE_NOT_FOUND",
        +                  "RENDER_FAILURE",
        +                  "OCR_LOW_CONFIDENCE",
        +                  "MANUAL_REVIEW_REQUIRED",
        +                  "ACCEPTANCE_REQUIRED",
        +                  "INVALID_TOKEN"
        +                ],
        +                "type": "string"
        +              },
        +              "details": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "message": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "recoverable": {
        +                "type": "boolean"
        +              },
        +              "retry_after_seconds": {
        +                "anyOf": [
        +                  {
        +                    "minimum": 0,
        +                    "type": "integer"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              }
        +            },
        +            "required": [
        +              "code",
        +              "message",
        +              "recoverable"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      }
        +    },
        +    "required": [
        +      "_meta"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedcompute_rigid_pavement3 fields changed
      • addedInput schema / properties / deliverables
        Added value: +{
        +  "anyOf": [
        +    {
        +      "items": {
        +        "const": "xlsx",
        +        "type": "string"
        +      },
        +      "type": "array"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null
        +}
      • addedInput schema / properties / output_mode
        Added value: +{
        +  "default": "full_json",
        +  "enum": [
        +    "summary",
        +    "boq",
        +    "boq_with_backup",
        +    "full_json"
        +  ],
        +  "type": "string"
        +}
      • changedOutput schema / properties / result / anyOf
        Previous value: -[
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "_meta": {
        -        "additionalProperties": false,
        -        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        -        "properties": {
        -          "deliverables": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        -                "properties": {
        -                  "docx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "dxf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "expires_at": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  },
        -                  "pdf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "xlsx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "expires_at"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "document_id": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "issued_at": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "rate_limit_remaining": {
        -            "anyOf": [
        -              {
        -                "minimum": 0,
        -                "type": "integer"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "request_id": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "schema_version": {
        -            "const": "1.0.0",
        -            "default": "1.0.0",
        -            "type": "string"
        -          },
        -          "scope_boundary": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        -                "properties": {
        -                  "not_in_scope": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "produced": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "recommended_companions": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "type": "string"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "produced",
        -                  "not_in_scope"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tier": {
        -            "enum": [
        -              "free",
        -              "paid"
        -            ],
        -            "type": "string"
        -          },
        -          "tier_upgrade": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        -                "properties": {
        -                  "available_tiers": {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        -                      "properties": {
        -                        "billing": {
        -                          "enum": [
        -                            "one_off",
        -                            "monthly",
        -                            "annual"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "currency": {
        -                          "enum": [
        -                            "GBP",
        -                            "SGD",
        -                            "EUR",
        -                            "USD",
        -                            "CAD",
        -                            "AUD",
        -                            "NZD",
        -                            "MYR"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "display_name": {
        -                          "type": "string"
        -                        },
        -                        "price_local": {
        -                          "type": "number"
        -                        },
        -                        "tier_slug": {
        -                          "enum": [
        -                            "7_day_pass",
        -                            "solo",
        -                            "studio",
        -                            "practice"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "unlock_summary": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "tier_slug",
        -                        "display_name",
        -                        "price_local",
        -                        "currency",
        -                        "billing",
        -                        "unlock_summary"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "current_tier": {
        -                    "const": "free",
        -                    "default": "free",
        -                    "type": "string"
        -                  },
        -                  "pass_credit": {
        -                    "anyOf": [
        -                      {
        -                        "additionalProperties": false,
        -                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        -                        "properties": {
        -                          "amount_local": {
        -                            "type": "number"
        -                          },
        -                          "applies_to": {
        -                            "const": "solo_first_month",
        -                            "default": "solo_first_month",
        -                            "type": "string"
        -                          },
        -                          "currency": {
        -                            "type": "string"
        -                          },
        -                          "redeemable_until": {
        -                            "type": "string"
        -                          }
        -                        },
        -                        "required": [
        -                          "amount_local",
        -                          "currency",
        -                          "redeemable_until"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "pricing_url": {
        -                    "default": "https://civilquants.com/pricing",
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "available_tiers"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tos_url": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "upgrade_hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "warranty_disclaimer": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          }
        -        },
        -        "required": [
        -          "request_id",
        -          "issued_at",
        -          "tier"
        -        ],
        -        "type": "object"
        -      },
        -      "data": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Schema § 1.1 — the typed payload returned inside `MCPResponse[ComputeResult]`.\n\nFree-tier responses MUST omit `drawings` and `audit_trail` (the bridge\nenforces this); paid-tier responses populate both. `text_summary` is\nbounded to 2000 chars — keeps the LLM-facing summary token-cheap and\nforces longer narrative into BoQ row descriptions where it belongs.\n`warnings` is the non-fatal geometry advisory list (both tiers).",
        -            "properties": {
        -              "assembly_slug": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "audit_trail": {
        -                "anyOf": [
        -                  {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.7 — paid-tier audit-trail entry.\n\nOne entry per BoQ row; `boq_row_index` ties to the row position in\n`ComputeResult.boq_rows`. `derivation` is the human-readable formula\nwalk-through; `formula` is the optional formal expression.",
        -                      "properties": {
        -                        "boq_row_index": {
        -                          "minimum": 0,
        -                          "type": "integer"
        -                        },
        -                        "derivation": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "formula": {
        -                          "anyOf": [
        -                            {
        -                              "type": "string"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ],
        -                          "default": null
        -                        },
        -                        "id": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "parameters_referenced": {
        -                          "items": {
        -                            "type": "string"
        -                          },
        -                          "type": "array"
        -                        }
        -                      },
        -                      "required": [
        -                        "id",
        -                        "boq_row_index",
        -                        "derivation"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "boq_rows": {
        -                "items": {
        -                  "additionalProperties": false,
        -                  "description": "Schema § 1.3 — a single bill row in the requested standard's format.\n\n`description` is the non-verbatim functional description per spec § 13.9 /\n§ 15 invariant — NEVER reproduces a standard's verbatim clause text.\n`rate` / `amount` ship null because rates are commodity data the customer\nowns; the engine's job is the measurement, not the pricing.",
        -                  "properties": {
        -                    "amount": {
        -                      "anyOf": [
        -                        {
        -                          "type": "number"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "attribution": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "audit_id": {
        -                      "anyOf": [
        -                        {
        -                          "type": "string"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "description": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "quantity": {
        -                      "minimum": 0,
        -                      "type": "number"
        -                    },
        -                    "rate": {
        -                      "anyOf": [
        -                        {
        -                          "type": "number"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "unit": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "work_section": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    }
        -                  },
        -                  "required": [
        -                    "work_section",
        -                    "description",
        -                    "quantity",
        -                    "unit",
        -                    "attribution"
        -                  ],
        -                  "type": "object"
        -                },
        -                "type": "array"
        -              },
        -              "drawings": {
        -                "anyOf": [
        -                  {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.6 — paid-tier drawing artefact pointer.\n\n`url` is an R2-signed URL; expiry is carried in `_meta.deliverables.expires_at`\non the envelope (not duplicated here). `layers` is DXF-only; PDF/SVG\ncallers omit it.",
        -                      "properties": {
        -                        "drawing_type": {
        -                          "enum": [
        -                            "section",
        -                            "plan",
        -                            "elevation",
        -                            "isometric",
        -                            "detail"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "format": {
        -                          "enum": [
        -                            "DXF",
        -                            "PDF",
        -                            "SVG"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "layers": {
        -                          "anyOf": [
        -                            {
        -                              "items": {
        -                                "type": "string"
        -                              },
        -                              "type": "array"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ],
        -                          "default": null
        -                        },
        -                        "scale": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "sheet_size": {
        -                          "enum": [
        -                            "A1",
        -                            "A2",
        -                            "A3",
        -                            "A4"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "url": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "drawing_type",
        -                        "format",
        -                        "url",
        -                        "sheet_size",
        -                        "scale"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "parameters_used": {
        -                "additionalProperties": false,
        -                "description": "Schema § 1.2 — the parameter snapshot the engine actually used.\n\nSplits user-supplied values from engine defaults so customers can see\nwhich numbers came from them and which the engine filled in. Every\ndefaulted parameter SHOULD have a corresponding entry in `assumptions`\n— the bridge layer enforces this when wrapping engine output.",
        -                "properties": {
        -                  "assumptions": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "engine_defaults": {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  "resolved_from_description": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "additionalProperties": false,
        -                          "description": "Schema § 1.2 — a parameter resolved by the forgiving-input layer.\n\nPopulated by the Track B-Forgiving Haiku-4.5 resolution pass; until that\nlayer lands, instances are constructed only by tests. `source` distinguishes\nthe resolution path so customers can audit which fields were inferred.",
        -                          "properties": {
        -                            "confidence": {
        -                              "anyOf": [
        -                                {
        -                                  "enum": [
        -                                    "high",
        -                                    "medium",
        -                                    "low"
        -                                  ],
        -                                  "type": "string"
        -                                },
        -                                {
        -                                  "type": "null"
        -                                }
        -                              ],
        -                              "default": null
        -                            },
        -                            "field_name": {
        -                              "minLength": 1,
        -                              "type": "string"
        -                            },
        -                            "resolved_value": {},
        -                            "source": {
        -                              "enum": [
        -                                "description_field",
        -                                "haiku_resolution",
        -                                "engine_default"
        -                              ],
        -                              "type": "string"
        -                            }
        -                          },
        -                          "required": [
        -                            "field_name",
        -                            "resolved_value",
        -                            "source"
        -                          ],
        -                          "type": "object"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "user_supplied": {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  }
        -                },
        -                "type": "object"
        -              },
        -              "standard": {
        -                "enum": [
        -                  "CESMM4",
        -                  "NRM2",
        -                  "SMM7",
        -                  "MMHW"
        -                ],
        -                "type": "string"
        -              },
        -              "text_summary": {
        -                "maxLength": 2000,
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "totals_summary": {
        -                "additionalProperties": false,
        -                "description": "Schema § 1.4 — totals_summary as a typed wrapper around the free-form dict.\n\nWire shape is a flat object (`{\"concrete_m3\": {...}, \"rebar_t\": {...}}`).\nWe model it as `RootModel`-equivalent via `model_config(extra=\"allow\")`\n+ a single `__root__`-style `entries` dict. Pydantic v2 recommends\n`RootModel` for free-form roots; using a wrapper class keeps the import\nsurface uniform with the rest of this module.",
        -                "properties": {
        -                  "entries": {
        -                    "additionalProperties": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.4 — single material/work-class total entry.",
        -                      "properties": {
        -                        "quantity": {
        -                          "minimum": 0,
        -                          "type": "number"
        -                        },
        -                        "unit": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "quantity",
        -                        "unit"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "object"
        -                  }
        -                },
        -                "type": "object"
        -              },
        -              "warnings": {
        -                "items": {
        -                  "additionalProperties": false,
        -                  "description": "Schema § 1.8 — a non-fatal geometry advisory (56th-fire T2).\n\nThe wire projection of the engine's `core.GeometryWarning`. Advisory only:\na warning NEVER changes a measured quantity — it flags geometry that is\nvalid but likely a mistake (e.g. a stale dependent-height default). Present\non BOTH tiers — a correctness/safety signal, not a paid feature.",
        -                  "properties": {
        -                    "affected_params": {
        -                      "items": {
        -                        "type": "string"
        -                      },
        -                      "type": "array"
        -                    },
        -                    "code": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "detail": {
        -                      "additionalProperties": {
        -                        "type": "number"
        -                      },
        -                      "type": "object"
        -                    },
        -                    "message": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "severity": {
        -                      "enum": [
        -                        "info",
        -                        "advisory",
        -                        "caution"
        -                      ],
        -                      "type": "string"
        -                    }
        -                  },
        -                  "required": [
        -                    "code",
        -                    "severity",
        -                    "message"
        -                  ],
        -                  "type": "object"
        -                },
        -                "type": "array"
        -              }
        -            },
        -            "required": [
        -              "assembly_slug",
        -              "standard",
        -              "parameters_used",
        -              "boq_rows",
        -              "totals_summary",
        -              "text_summary"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      },
        -      "error": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        -            "properties": {
        -              "code": {
        -                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        -                "enum": [
        -                  "RATE_LIMIT_EXCEEDED",
        -                  "TIER_INSUFFICIENT",
        -                  "INVALID_INPUT",
        -                  "SCHEMA_VERSION_MISMATCH",
        -                  "SCHEMA_INVARIANT_VIOLATION",
        -                  "UPSTREAM_TIMEOUT",
        -                  "BACKEND_FAILURE",
        -                  "IP_BLOCKED",
        -                  "RESOURCE_NOT_FOUND",
        -                  "RENDER_FAILURE",
        -                  "OCR_LOW_CONFIDENCE",
        -                  "MANUAL_REVIEW_REQUIRED",
        -                  "ACCEPTANCE_REQUIRED",
        -                  "INVALID_TOKEN"
        -                ],
        -                "type": "string"
        -              },
        -              "details": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "message": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "recoverable": {
        -                "type": "boolean"
        -              },
        -              "retry_after_seconds": {
        -                "anyOf": [
        -                  {
        -                    "minimum": 0,
        -                    "type": "integer"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              }
        -            },
        -            "required": [
        -              "code",
        -              "message",
        -              "recoverable"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      }
        -    },
        -    "required": [
        -      "_meta"
        -    ],
        -    "type": "object"
        -  },
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "_meta": {
        -        "additionalProperties": false,
        -        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        -        "properties": {
        -          "deliverables": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        -                "properties": {
        -                  "docx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "dxf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "expires_at": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  },
        -                  "pdf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "xlsx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "expires_at"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "document_id": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "issued_at": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "rate_limit_remaining": {
        -            "anyOf": [
        -              {
        -                "minimum": 0,
        -                "type": "integer"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "request_id": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "schema_version": {
        -            "const": "1.0.0",
        -            "default": "1.0.0",
        -            "type": "string"
        -          },
        -          "scope_boundary": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        -                "properties": {
        -                  "not_in_scope": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "produced": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "recommended_companions": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "type": "string"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "produced",
        -                  "not_in_scope"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tier": {
        -            "enum": [
        -              "free",
        -              "paid"
        -            ],
        -            "type": "string"
        -          },
        -          "tier_upgrade": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        -                "properties": {
        -                  "available_tiers": {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        -                      "properties": {
        -                        "billing": {
        -                          "enum": [
        -                            "one_off",
        -                            "monthly",
        -                            "annual"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "currency": {
        -                          "enum": [
        -                            "GBP",
        -                            "SGD",
        -                            "EUR",
        -                            "USD",
        -                            "CAD",
        -                            "AUD",
        -                            "NZD",
        -                            "MYR"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "display_name": {
        -                          "type": "string"
        -                        },
        -                        "price_local": {
        -                          "type": "number"
        -                        },
        -                        "tier_slug": {
        -                          "enum": [
        -                            "7_day_pass",
        -                            "solo",
        -                            "studio",
        -                            "practice"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "unlock_summary": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "tier_slug",
        -                        "display_name",
        -                        "price_local",
        -                        "currency",
        -                        "billing",
        -                        "unlock_summary"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "current_tier": {
        -                    "const": "free",
        -                    "default": "free",
        -                    "type": "string"
        -                  },
        -                  "pass_credit": {
        -                    "anyOf": [
        -                      {
        -                        "additionalProperties": false,
        -                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        -                        "properties": {
        -                          "amount_local": {
        -                            "type": "number"
        -                          },
        -                          "applies_to": {
        -                            "const": "solo_first_month",
        -                            "default": "solo_first_month",
        -                            "type": "string"
        -                          },
        -                          "currency": {
        -                            "type": "string"
        -                          },
        -                          "redeemable_until": {
        -                            "type": "string"
        -                          }
        -                        },
        -                        "required": [
        -                          "amount_local",
        -                          "currency",
        -                          "redeemable_until"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "pricing_url": {
        -                    "default": "https://civilquants.com/pricing",
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "available_tiers"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tos_url": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "upgrade_hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "warranty_disclaimer": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          }
        -        },
        -        "required": [
        -          "request_id",
        -          "issued_at",
        -          "tier"
        -        ],
        -        "type": "object"
        -      },
        -      "data": {
        -        "default": null,
        -        "title": "Data"
        -      },
        -      "error": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        -            "properties": {
        -              "code": {
        -                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        -                "enum": [
        -                  "RATE_LIMIT_EXCEEDED",
        -                  "TIER_INSUFFICIENT",
        -                  "INVALID_INPUT",
        -                  "SCHEMA_VERSION_MISMATCH",
        -                  "SCHEMA_INVARIANT_VIOLATION",
        -                  "UPSTREAM_TIMEOUT",
        -                  "BACKEND_FAILURE",
        -                  "IP_BLOCKED",
        -                  "RESOURCE_NOT_FOUND",
        -                  "RENDER_FAILURE",
        -                  "OCR_LOW_CONFIDENCE",
        -                  "MANUAL_REVIEW_REQUIRED",
        -                  "ACCEPTANCE_REQUIRED",
        -                  "INVALID_TOKEN"
        -                ],
        -                "type": "string"
        -              },
        -              "details": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "message": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "recoverable": {
        -                "type": "boolean"
        -              },
        -              "retry_after_seconds": {
        -                "anyOf": [
        -                  {
        -                    "minimum": 0,
        -                    "type": "integer"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              }
        -            },
        -            "required": [
        -              "code",
        -              "message",
        -              "recoverable"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      }
        -    },
        -    "required": [
        -      "_meta"
        -    ],
        -    "type": "object"
        -  }
        -]New value: +[
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "_meta": {
        +        "additionalProperties": false,
        +        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        +        "properties": {
        +          "deliverables": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        +                "properties": {
        +                  "docx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "dxf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "expires_at": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  },
        +                  "pdf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "xlsx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "expires_at"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "document_id": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "issued_at": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "rate_limit_remaining": {
        +            "anyOf": [
        +              {
        +                "minimum": 0,
        +                "type": "integer"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "request_id": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "schema_version": {
        +            "const": "1.0.0",
        +            "default": "1.0.0",
        +            "type": "string"
        +          },
        +          "scope_boundary": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        +                "properties": {
        +                  "not_in_scope": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "produced": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "recommended_companions": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "type": "string"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "produced",
        +                  "not_in_scope"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tier": {
        +            "enum": [
        +              "free",
        +              "paid"
        +            ],
        +            "type": "string"
        +          },
        +          "tier_upgrade": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        +                "properties": {
        +                  "available_tiers": {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        +                      "properties": {
        +                        "billing": {
        +                          "enum": [
        +                            "one_off",
        +                            "monthly",
        +                            "annual"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "currency": {
        +                          "enum": [
        +                            "GBP",
        +                            "SGD",
        +                            "EUR",
        +                            "USD",
        +                            "CAD",
        +                            "AUD",
        +                            "NZD",
        +                            "MYR"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "display_name": {
        +                          "type": "string"
        +                        },
        +                        "price_local": {
        +                          "type": "number"
        +                        },
        +                        "tier_slug": {
        +                          "enum": [
        +                            "7_day_pass",
        +                            "solo",
        +                            "studio",
        +                            "practice"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "unlock_summary": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "tier_slug",
        +                        "display_name",
        +                        "price_local",
        +                        "currency",
        +                        "billing",
        +                        "unlock_summary"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "current_tier": {
        +                    "const": "free",
        +                    "default": "free",
        +                    "type": "string"
        +                  },
        +                  "pass_credit": {
        +                    "anyOf": [
        +                      {
        +                        "additionalProperties": false,
        +                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        +                        "properties": {
        +                          "amount_local": {
        +                            "type": "number"
        +                          },
        +                          "applies_to": {
        +                            "const": "solo_first_month",
        +                            "default": "solo_first_month",
        +                            "type": "string"
        +                          },
        +                          "currency": {
        +                            "type": "string"
        +                          },
        +                          "redeemable_until": {
        +                            "type": "string"
        +                          }
        +                        },
        +                        "required": [
        +                          "amount_local",
        +                          "currency",
        +                          "redeemable_until"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "pricing_url": {
        +                    "default": "https://civilquants.com/pricing",
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "available_tiers"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tos_url": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "upgrade_hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "warranty_disclaimer": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          }
        +        },
        +        "required": [
        +          "request_id",
        +          "issued_at",
        +          "tier"
        +        ],
        +        "type": "object"
        +      },
        +      "data": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Schema § 1.1 — the typed payload returned inside `MCPResponse[ComputeResult]`.\n\nFree-tier responses omit `drawings` (the downloadable CAD artefact\npointers — the paid differentiator); the bridge enforces this. The\n`audit_trail` and the inline `drawing` preview are present on BOTH tiers\n(V1 ALIGN / 60th-fire D + C). `text_summary` is bounded to 2000 chars —\nkeeps the LLM-facing summary token-cheap and forces longer narrative into\nBoQ row descriptions where it belongs. `warnings` is the non-fatal\ngeometry advisory list (both tiers).",
        +            "properties": {
        +              "assembly_slug": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "audit_trail": {
        +                "anyOf": [
        +                  {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.7 — paid-tier audit-trail entry.\n\nOne entry per BoQ row; `boq_row_index` ties to the row position in\n`ComputeResult.boq_rows`. `derivation` is the human-readable formula\nwalk-through; `formula` is the optional formal expression.",
        +                      "properties": {
        +                        "boq_row_index": {
        +                          "minimum": 0,
        +                          "type": "integer"
        +                        },
        +                        "derivation": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "formula": {
        +                          "anyOf": [
        +                            {
        +                              "type": "string"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ],
        +                          "default": null
        +                        },
        +                        "id": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "parameters_referenced": {
        +                          "items": {
        +                            "type": "string"
        +                          },
        +                          "type": "array"
        +                        }
        +                      },
        +                      "required": [
        +                        "id",
        +                        "boq_row_index",
        +                        "derivation"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "boq_rows": {
        +                "items": {
        +                  "additionalProperties": false,
        +                  "description": "Schema § 1.3 — a single bill row in the requested standard's format.\n\n`description` is the non-verbatim functional description per spec § 13.9 /\n§ 15 invariant — NEVER reproduces a standard's verbatim clause text.\n`rate` / `amount` ship null because rates are commodity data the customer\nowns; the engine's job is the measurement, not the pricing.",
        +                  "properties": {
        +                    "amount": {
        +                      "anyOf": [
        +                        {
        +                          "type": "number"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "attribution": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "audit_id": {
        +                      "anyOf": [
        +                        {
        +                          "type": "string"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "description": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "quantity": {
        +                      "minimum": 0,
        +                      "type": "number"
        +                    },
        +                    "rate": {
        +                      "anyOf": [
        +                        {
        +                          "type": "number"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "unit": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "work_section": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    }
        +                  },
        +                  "required": [
        +                    "work_section",
        +                    "description",
        +                    "quantity",
        +                    "unit",
        +                    "attribution"
        +                  ],
        +                  "type": "object"
        +                },
        +                "type": "array"
        +              },
        +              "drawing": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": false,
        +                    "description": "Schema § 1.6a — inline server-rendered SVG preview of the geometry.\n\nThe MCP mirror of the web ``/compute`` response's ``drawing`` field\n(``api.schemas.compute.DrawingRef``): the same on-screen dimensioned\ndrawing both tiers see in the workspace, surfaced on the MCP compute\nresponse so a chat client can render it inline (60th-fire item C). This\nis the on-screen preview — present on BOTH tiers per the free/paid\nboundary; the downloadable CAD artefacts (DXF / dimensioned PDF) remain\nthe paid differentiator via the export tools.\n\nDefined here rather than importing ``DrawingRef`` because the web\n``schemas`` package imports back into this module (``schemas.render``),\nso reusing it would create an import cycle — the MCP wire contract keeps\nits own copy, the same pattern as ``BoQRow`` / ``DrawingReference``.",
        +                    "properties": {
        +                      "entity_count": {
        +                        "minimum": 0,
        +                        "type": "integer"
        +                      },
        +                      "svg_b64": {
        +                        "minLength": 1,
        +                        "type": "string"
        +                      },
        +                      "unit_of_drawing": {
        +                        "const": "m",
        +                        "default": "m",
        +                        "type": "string"
        +                      },
        +                      "viewbox_height": {
        +                        "exclusiveMinimum": 0,
        +                        "type": "number"
        +                      },
        +                      "viewbox_width": {
        +                        "exclusiveMinimum": 0,
        +                        "type": "number"
        +                      },
        +                      "viewbox_x": {
        +                        "type": "number"
        +                      },
        +                      "viewbox_y": {
        +                        "type": "number"
        +                      }
        +                    },
        +                    "required": [
        +                      "svg_b64",
        +                      "viewbox_x",
        +                      "viewbox_y",
        +                      "viewbox_width",
        +                      "viewbox_height",
        +                      "entity_count"
        +                    ],
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "drawings": {
        +                "anyOf": [
        +                  {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.6 — paid-tier drawing artefact pointer.\n\n`url` is an R2-signed URL; expiry is carried in `_meta.deliverables.expires_at`\non the envelope (not duplicated here). `layers` is DXF-only; PDF/SVG\ncallers omit it.",
        +                      "properties": {
        +                        "drawing_type": {
        +                          "enum": [
        +                            "section",
        +                            "plan",
        +                            "elevation",
        +                            "isometric",
        +                            "detail"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "format": {
        +                          "enum": [
        +                            "DXF",
        +                            "PDF",
        +                            "SVG"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "layers": {
        +                          "anyOf": [
        +                            {
        +                              "items": {
        +                                "type": "string"
        +                              },
        +                              "type": "array"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ],
        +                          "default": null
        +                        },
        +                        "scale": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "sheet_size": {
        +                          "enum": [
        +                            "A1",
        +                            "A2",
        +                            "A3",
        +                            "A4"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "url": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "drawing_type",
        +                        "format",
        +                        "url",
        +                        "sheet_size",
        +                        "scale"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "parameters_used": {
        +                "additionalProperties": false,
        +                "description": "Schema § 1.2 — the parameter snapshot the engine actually used.\n\nSplits user-supplied values from engine defaults so customers can see\nwhich numbers came from them and which the engine filled in. Every\ndefaulted parameter SHOULD have a corresponding entry in `assumptions`\n— the bridge layer enforces this when wrapping engine output.",
        +                "properties": {
        +                  "assumptions": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "engine_defaults": {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  "resolved_from_description": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "additionalProperties": false,
        +                          "description": "Schema § 1.2 — a parameter resolved by the forgiving-input layer.\n\nPopulated by the Track B-Forgiving Haiku-4.5 resolution pass; until that\nlayer lands, instances are constructed only by tests. `source` distinguishes\nthe resolution path so customers can audit which fields were inferred.",
        +                          "properties": {
        +                            "confidence": {
        +                              "anyOf": [
        +                                {
        +                                  "enum": [
        +                                    "high",
        +                                    "medium",
        +                                    "low"
        +                                  ],
        +                                  "type": "string"
        +                                },
        +                                {
        +                                  "type": "null"
        +                                }
        +                              ],
        +                              "default": null
        +                            },
        +                            "field_name": {
        +                              "minLength": 1,
        +                              "type": "string"
        +                            },
        +                            "resolved_value": {},
        +                            "source": {
        +                              "enum": [
        +                                "description_field",
        +                                "haiku_resolution",
        +                                "engine_default"
        +                              ],
        +                              "type": "string"
        +                            }
        +                          },
        +                          "required": [
        +                            "field_name",
        +                            "resolved_value",
        +                            "source"
        +                          ],
        +                          "type": "object"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "user_supplied": {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  }
        +                },
        +                "type": "object"
        +              },
        +              "standard": {
        +                "enum": [
        +                  "CESMM4",
        +                  "NRM2",
        +                  "SMM7",
        +                  "MMHW"
        +                ],
        +                "type": "string"
        +              },
        +              "text_summary": {
        +                "maxLength": 2000,
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "totals_summary": {
        +                "additionalProperties": false,
        +                "description": "Schema § 1.4 — totals_summary as a typed wrapper around the free-form dict.\n\nWire shape is a flat object (`{\"concrete_m3\": {...}, \"rebar_t\": {...}}`).\nWe model it as `RootModel`-equivalent via `model_config(extra=\"allow\")`\n+ a single `__root__`-style `entries` dict. Pydantic v2 recommends\n`RootModel` for free-form roots; using a wrapper class keeps the import\nsurface uniform with the rest of this module.",
        +                "properties": {
        +                  "entries": {
        +                    "additionalProperties": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.4 — single material/work-class total entry.",
        +                      "properties": {
        +                        "quantity": {
        +                          "minimum": 0,
        +                          "type": "number"
        +                        },
        +                        "unit": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "quantity",
        +                        "unit"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "object"
        +                  }
        +                },
        +                "type": "object"
        +              },
        +              "warnings": {
        +                "items": {
        +                  "additionalProperties": false,
        +                  "description": "Schema § 1.8 — a non-fatal geometry advisory (56th-fire T2).\n\nThe wire projection of the engine's `core.GeometryWarning`. Advisory only:\na warning NEVER changes a measured quantity — it flags geometry that is\nvalid but likely a mistake (e.g. a stale dependent-height default). Present\non BOTH tiers — a correctness/safety signal, not a paid feature.",
        +                  "properties": {
        +                    "affected_params": {
        +                      "items": {
        +                        "type": "string"
        +                      },
        +                      "type": "array"
        +                    },
        +                    "code": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "detail": {
        +                      "additionalProperties": {
        +                        "type": "number"
        +                      },
        +                      "type": "object"
        +                    },
        +                    "message": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "severity": {
        +                      "enum": [
        +                        "info",
        +                        "advisory",
        +                        "caution"
        +                      ],
        +                      "type": "string"
        +                    }
        +                  },
        +                  "required": [
        +                    "code",
        +                    "severity",
        +                    "message"
        +                  ],
        +                  "type": "object"
        +                },
        +                "type": "array"
        +              }
        +            },
        +            "required": [
        +              "assembly_slug",
        +              "standard",
        +              "parameters_used",
        +              "boq_rows",
        +              "totals_summary",
        +              "text_summary"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      },
        +      "error": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        +            "properties": {
        +              "code": {
        +                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        +                "enum": [
        +                  "RATE_LIMIT_EXCEEDED",
        +                  "TIER_INSUFFICIENT",
        +                  "INVALID_INPUT",
        +                  "SCHEMA_VERSION_MISMATCH",
        +                  "SCHEMA_INVARIANT_VIOLATION",
        +                  "UPSTREAM_TIMEOUT",
        +                  "BACKEND_FAILURE",
        +                  "IP_BLOCKED",
        +                  "RESOURCE_NOT_FOUND",
        +                  "RENDER_FAILURE",
        +                  "OCR_LOW_CONFIDENCE",
        +                  "MANUAL_REVIEW_REQUIRED",
        +                  "ACCEPTANCE_REQUIRED",
        +                  "INVALID_TOKEN"
        +                ],
        +                "type": "string"
        +              },
        +              "details": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "message": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "recoverable": {
        +                "type": "boolean"
        +              },
        +              "retry_after_seconds": {
        +                "anyOf": [
        +                  {
        +                    "minimum": 0,
        +                    "type": "integer"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              }
        +            },
        +            "required": [
        +              "code",
        +              "message",
        +              "recoverable"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      }
        +    },
        +    "required": [
        +      "_meta"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "_meta": {
        +        "additionalProperties": false,
        +        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        +        "properties": {
        +          "deliverables": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        +                "properties": {
        +                  "docx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "dxf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "expires_at": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  },
        +                  "pdf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "xlsx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "expires_at"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "document_id": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "issued_at": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "rate_limit_remaining": {
        +            "anyOf": [
        +              {
        +                "minimum": 0,
        +                "type": "integer"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "request_id": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "schema_version": {
        +            "const": "1.0.0",
        +            "default": "1.0.0",
        +            "type": "string"
        +          },
        +          "scope_boundary": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        +                "properties": {
        +                  "not_in_scope": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "produced": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "recommended_companions": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "type": "string"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "produced",
        +                  "not_in_scope"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tier": {
        +            "enum": [
        +              "free",
        +              "paid"
        +            ],
        +            "type": "string"
        +          },
        +          "tier_upgrade": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        +                "properties": {
        +                  "available_tiers": {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        +                      "properties": {
        +                        "billing": {
        +                          "enum": [
        +                            "one_off",
        +                            "monthly",
        +                            "annual"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "currency": {
        +                          "enum": [
        +                            "GBP",
        +                            "SGD",
        +                            "EUR",
        +                            "USD",
        +                            "CAD",
        +                            "AUD",
        +                            "NZD",
        +                            "MYR"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "display_name": {
        +                          "type": "string"
        +                        },
        +                        "price_local": {
        +                          "type": "number"
        +                        },
        +                        "tier_slug": {
        +                          "enum": [
        +                            "7_day_pass",
        +                            "solo",
        +                            "studio",
        +                            "practice"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "unlock_summary": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "tier_slug",
        +                        "display_name",
        +                        "price_local",
        +                        "currency",
        +                        "billing",
        +                        "unlock_summary"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "current_tier": {
        +                    "const": "free",
        +                    "default": "free",
        +                    "type": "string"
        +                  },
        +                  "pass_credit": {
        +                    "anyOf": [
        +                      {
        +                        "additionalProperties": false,
        +                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        +                        "properties": {
        +                          "amount_local": {
        +                            "type": "number"
        +                          },
        +                          "applies_to": {
        +                            "const": "solo_first_month",
        +                            "default": "solo_first_month",
        +                            "type": "string"
        +                          },
        +                          "currency": {
        +                            "type": "string"
        +                          },
        +                          "redeemable_until": {
        +                            "type": "string"
        +                          }
        +                        },
        +                        "required": [
        +                          "amount_local",
        +                          "currency",
        +                          "redeemable_until"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "pricing_url": {
        +                    "default": "https://civilquants.com/pricing",
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "available_tiers"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tos_url": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "upgrade_hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "warranty_disclaimer": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          }
        +        },
        +        "required": [
        +          "request_id",
        +          "issued_at",
        +          "tier"
        +        ],
        +        "type": "object"
        +      },
        +      "data": {
        +        "default": null,
        +        "title": "Data"
        +      },
        +      "error": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        +            "properties": {
        +              "code": {
        +                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        +                "enum": [
        +                  "RATE_LIMIT_EXCEEDED",
        +                  "TIER_INSUFFICIENT",
        +                  "INVALID_INPUT",
        +                  "SCHEMA_VERSION_MISMATCH",
        +                  "SCHEMA_INVARIANT_VIOLATION",
        +                  "UPSTREAM_TIMEOUT",
        +                  "BACKEND_FAILURE",
        +                  "IP_BLOCKED",
        +                  "RESOURCE_NOT_FOUND",
        +                  "RENDER_FAILURE",
        +                  "OCR_LOW_CONFIDENCE",
        +                  "MANUAL_REVIEW_REQUIRED",
        +                  "ACCEPTANCE_REQUIRED",
        +                  "INVALID_TOKEN"
        +                ],
        +                "type": "string"
        +              },
        +              "details": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "message": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "recoverable": {
        +                "type": "boolean"
        +              },
        +              "retry_after_seconds": {
        +                "anyOf": [
        +                  {
        +                    "minimum": 0,
        +                    "type": "integer"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              }
        +            },
        +            "required": [
        +              "code",
        +              "message",
        +              "recoverable"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      }
        +    },
        +    "required": [
        +      "_meta"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedcompute_road_marking3 fields changed
      • addedInput schema / properties / deliverables
        Added value: +{
        +  "anyOf": [
        +    {
        +      "items": {
        +        "const": "xlsx",
        +        "type": "string"
        +      },
        +      "type": "array"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null
        +}
      • addedInput schema / properties / output_mode
        Added value: +{
        +  "default": "full_json",
        +  "enum": [
        +    "summary",
        +    "boq",
        +    "boq_with_backup",
        +    "full_json"
        +  ],
        +  "type": "string"
        +}
      • changedOutput schema / properties / result / anyOf
        Previous value: -[
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "_meta": {
        -        "additionalProperties": false,
        -        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        -        "properties": {
        -          "deliverables": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        -                "properties": {
        -                  "docx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "dxf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "expires_at": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  },
        -                  "pdf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "xlsx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "expires_at"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "document_id": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "issued_at": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "rate_limit_remaining": {
        -            "anyOf": [
        -              {
        -                "minimum": 0,
        -                "type": "integer"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "request_id": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "schema_version": {
        -            "const": "1.0.0",
        -            "default": "1.0.0",
        -            "type": "string"
        -          },
        -          "scope_boundary": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        -                "properties": {
        -                  "not_in_scope": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "produced": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "recommended_companions": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "type": "string"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "produced",
        -                  "not_in_scope"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tier": {
        -            "enum": [
        -              "free",
        -              "paid"
        -            ],
        -            "type": "string"
        -          },
        -          "tier_upgrade": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        -                "properties": {
        -                  "available_tiers": {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        -                      "properties": {
        -                        "billing": {
        -                          "enum": [
        -                            "one_off",
        -                            "monthly",
        -                            "annual"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "currency": {
        -                          "enum": [
        -                            "GBP",
        -                            "SGD",
        -                            "EUR",
        -                            "USD",
        -                            "CAD",
        -                            "AUD",
        -                            "NZD",
        -                            "MYR"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "display_name": {
        -                          "type": "string"
        -                        },
        -                        "price_local": {
        -                          "type": "number"
        -                        },
        -                        "tier_slug": {
        -                          "enum": [
        -                            "7_day_pass",
        -                            "solo",
        -                            "studio",
        -                            "practice"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "unlock_summary": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "tier_slug",
        -                        "display_name",
        -                        "price_local",
        -                        "currency",
        -                        "billing",
        -                        "unlock_summary"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "current_tier": {
        -                    "const": "free",
        -                    "default": "free",
        -                    "type": "string"
        -                  },
        -                  "pass_credit": {
        -                    "anyOf": [
        -                      {
        -                        "additionalProperties": false,
        -                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        -                        "properties": {
        -                          "amount_local": {
        -                            "type": "number"
        -                          },
        -                          "applies_to": {
        -                            "const": "solo_first_month",
        -                            "default": "solo_first_month",
        -                            "type": "string"
        -                          },
        -                          "currency": {
        -                            "type": "string"
        -                          },
        -                          "redeemable_until": {
        -                            "type": "string"
        -                          }
        -                        },
        -                        "required": [
        -                          "amount_local",
        -                          "currency",
        -                          "redeemable_until"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "pricing_url": {
        -                    "default": "https://civilquants.com/pricing",
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "available_tiers"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tos_url": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "upgrade_hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "warranty_disclaimer": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          }
        -        },
        -        "required": [
        -          "request_id",
        -          "issued_at",
        -          "tier"
        -        ],
        -        "type": "object"
        -      },
        -      "data": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Schema § 1.1 — the typed payload returned inside `MCPResponse[ComputeResult]`.\n\nFree-tier responses MUST omit `drawings` and `audit_trail` (the bridge\nenforces this); paid-tier responses populate both. `text_summary` is\nbounded to 2000 chars — keeps the LLM-facing summary token-cheap and\nforces longer narrative into BoQ row descriptions where it belongs.\n`warnings` is the non-fatal geometry advisory list (both tiers).",
        -            "properties": {
        -              "assembly_slug": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "audit_trail": {
        -                "anyOf": [
        -                  {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.7 — paid-tier audit-trail entry.\n\nOne entry per BoQ row; `boq_row_index` ties to the row position in\n`ComputeResult.boq_rows`. `derivation` is the human-readable formula\nwalk-through; `formula` is the optional formal expression.",
        -                      "properties": {
        -                        "boq_row_index": {
        -                          "minimum": 0,
        -                          "type": "integer"
        -                        },
        -                        "derivation": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "formula": {
        -                          "anyOf": [
        -                            {
        -                              "type": "string"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ],
        -                          "default": null
        -                        },
        -                        "id": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "parameters_referenced": {
        -                          "items": {
        -                            "type": "string"
        -                          },
        -                          "type": "array"
        -                        }
        -                      },
        -                      "required": [
        -                        "id",
        -                        "boq_row_index",
        -                        "derivation"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "boq_rows": {
        -                "items": {
        -                  "additionalProperties": false,
        -                  "description": "Schema § 1.3 — a single bill row in the requested standard's format.\n\n`description` is the non-verbatim functional description per spec § 13.9 /\n§ 15 invariant — NEVER reproduces a standard's verbatim clause text.\n`rate` / `amount` ship null because rates are commodity data the customer\nowns; the engine's job is the measurement, not the pricing.",
        -                  "properties": {
        -                    "amount": {
        -                      "anyOf": [
        -                        {
        -                          "type": "number"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "attribution": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "audit_id": {
        -                      "anyOf": [
        -                        {
        -                          "type": "string"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "description": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "quantity": {
        -                      "minimum": 0,
        -                      "type": "number"
        -                    },
        -                    "rate": {
        -                      "anyOf": [
        -                        {
        -                          "type": "number"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "unit": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "work_section": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    }
        -                  },
        -                  "required": [
        -                    "work_section",
        -                    "description",
        -                    "quantity",
        -                    "unit",
        -                    "attribution"
        -                  ],
        -                  "type": "object"
        -                },
        -                "type": "array"
        -              },
        -              "drawings": {
        -                "anyOf": [
        -                  {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.6 — paid-tier drawing artefact pointer.\n\n`url` is an R2-signed URL; expiry is carried in `_meta.deliverables.expires_at`\non the envelope (not duplicated here). `layers` is DXF-only; PDF/SVG\ncallers omit it.",
        -                      "properties": {
        -                        "drawing_type": {
        -                          "enum": [
        -                            "section",
        -                            "plan",
        -                            "elevation",
        -                            "isometric",
        -                            "detail"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "format": {
        -                          "enum": [
        -                            "DXF",
        -                            "PDF",
        -                            "SVG"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "layers": {
        -                          "anyOf": [
        -                            {
        -                              "items": {
        -                                "type": "string"
        -                              },
        -                              "type": "array"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ],
        -                          "default": null
        -                        },
        -                        "scale": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "sheet_size": {
        -                          "enum": [
        -                            "A1",
        -                            "A2",
        -                            "A3",
        -                            "A4"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "url": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "drawing_type",
        -                        "format",
        -                        "url",
        -                        "sheet_size",
        -                        "scale"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "parameters_used": {
        -                "additionalProperties": false,
        -                "description": "Schema § 1.2 — the parameter snapshot the engine actually used.\n\nSplits user-supplied values from engine defaults so customers can see\nwhich numbers came from them and which the engine filled in. Every\ndefaulted parameter SHOULD have a corresponding entry in `assumptions`\n— the bridge layer enforces this when wrapping engine output.",
        -                "properties": {
        -                  "assumptions": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "engine_defaults": {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  "resolved_from_description": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "additionalProperties": false,
        -                          "description": "Schema § 1.2 — a parameter resolved by the forgiving-input layer.\n\nPopulated by the Track B-Forgiving Haiku-4.5 resolution pass; until that\nlayer lands, instances are constructed only by tests. `source` distinguishes\nthe resolution path so customers can audit which fields were inferred.",
        -                          "properties": {
        -                            "confidence": {
        -                              "anyOf": [
        -                                {
        -                                  "enum": [
        -                                    "high",
        -                                    "medium",
        -                                    "low"
        -                                  ],
        -                                  "type": "string"
        -                                },
        -                                {
        -                                  "type": "null"
        -                                }
        -                              ],
        -                              "default": null
        -                            },
        -                            "field_name": {
        -                              "minLength": 1,
        -                              "type": "string"
        -                            },
        -                            "resolved_value": {},
        -                            "source": {
        -                              "enum": [
        -                                "description_field",
        -                                "haiku_resolution",
        -                                "engine_default"
        -                              ],
        -                              "type": "string"
        -                            }
        -                          },
        -                          "required": [
        -                            "field_name",
        -                            "resolved_value",
        -                            "source"
        -                          ],
        -                          "type": "object"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "user_supplied": {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  }
        -                },
        -                "type": "object"
        -              },
        -              "standard": {
        -                "enum": [
        -                  "CESMM4",
        -                  "NRM2",
        -                  "SMM7",
        -                  "MMHW"
        -                ],
        -                "type": "string"
        -              },
        -              "text_summary": {
        -                "maxLength": 2000,
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "totals_summary": {
        -                "additionalProperties": false,
        -                "description": "Schema § 1.4 — totals_summary as a typed wrapper around the free-form dict.\n\nWire shape is a flat object (`{\"concrete_m3\": {...}, \"rebar_t\": {...}}`).\nWe model it as `RootModel`-equivalent via `model_config(extra=\"allow\")`\n+ a single `__root__`-style `entries` dict. Pydantic v2 recommends\n`RootModel` for free-form roots; using a wrapper class keeps the import\nsurface uniform with the rest of this module.",
        -                "properties": {
        -                  "entries": {
        -                    "additionalProperties": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.4 — single material/work-class total entry.",
        -                      "properties": {
        -                        "quantity": {
        -                          "minimum": 0,
        -                          "type": "number"
        -                        },
        -                        "unit": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "quantity",
        -                        "unit"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "object"
        -                  }
        -                },
        -                "type": "object"
        -              },
        -              "warnings": {
        -                "items": {
        -                  "additionalProperties": false,
        -                  "description": "Schema § 1.8 — a non-fatal geometry advisory (56th-fire T2).\n\nThe wire projection of the engine's `core.GeometryWarning`. Advisory only:\na warning NEVER changes a measured quantity — it flags geometry that is\nvalid but likely a mistake (e.g. a stale dependent-height default). Present\non BOTH tiers — a correctness/safety signal, not a paid feature.",
        -                  "properties": {
        -                    "affected_params": {
        -                      "items": {
        -                        "type": "string"
        -                      },
        -                      "type": "array"
        -                    },
        -                    "code": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "detail": {
        -                      "additionalProperties": {
        -                        "type": "number"
        -                      },
        -                      "type": "object"
        -                    },
        -                    "message": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "severity": {
        -                      "enum": [
        -                        "info",
        -                        "advisory",
        -                        "caution"
        -                      ],
        -                      "type": "string"
        -                    }
        -                  },
        -                  "required": [
        -                    "code",
        -                    "severity",
        -                    "message"
        -                  ],
        -                  "type": "object"
        -                },
        -                "type": "array"
        -              }
        -            },
        -            "required": [
        -              "assembly_slug",
        -              "standard",
        -              "parameters_used",
        -              "boq_rows",
        -              "totals_summary",
        -              "text_summary"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      },
        -      "error": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        -            "properties": {
        -              "code": {
        -                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        -                "enum": [
        -                  "RATE_LIMIT_EXCEEDED",
        -                  "TIER_INSUFFICIENT",
        -                  "INVALID_INPUT",
        -                  "SCHEMA_VERSION_MISMATCH",
        -                  "SCHEMA_INVARIANT_VIOLATION",
        -                  "UPSTREAM_TIMEOUT",
        -                  "BACKEND_FAILURE",
        -                  "IP_BLOCKED",
        -                  "RESOURCE_NOT_FOUND",
        -                  "RENDER_FAILURE",
        -                  "OCR_LOW_CONFIDENCE",
        -                  "MANUAL_REVIEW_REQUIRED",
        -                  "ACCEPTANCE_REQUIRED",
        -                  "INVALID_TOKEN"
        -                ],
        -                "type": "string"
        -              },
        -              "details": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "message": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "recoverable": {
        -                "type": "boolean"
        -              },
        -              "retry_after_seconds": {
        -                "anyOf": [
        -                  {
        -                    "minimum": 0,
        -                    "type": "integer"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              }
        -            },
        -            "required": [
        -              "code",
        -              "message",
        -              "recoverable"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      }
        -    },
        -    "required": [
        -      "_meta"
        -    ],
        -    "type": "object"
        -  },
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "_meta": {
        -        "additionalProperties": false,
        -        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        -        "properties": {
        -          "deliverables": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        -                "properties": {
        -                  "docx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "dxf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "expires_at": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  },
        -                  "pdf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "xlsx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "expires_at"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "document_id": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "issued_at": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "rate_limit_remaining": {
        -            "anyOf": [
        -              {
        -                "minimum": 0,
        -                "type": "integer"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "request_id": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "schema_version": {
        -            "const": "1.0.0",
        -            "default": "1.0.0",
        -            "type": "string"
        -          },
        -          "scope_boundary": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        -                "properties": {
        -                  "not_in_scope": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "produced": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "recommended_companions": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "type": "string"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "produced",
        -                  "not_in_scope"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tier": {
        -            "enum": [
        -              "free",
        -              "paid"
        -            ],
        -            "type": "string"
        -          },
        -          "tier_upgrade": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        -                "properties": {
        -                  "available_tiers": {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        -                      "properties": {
        -                        "billing": {
        -                          "enum": [
        -                            "one_off",
        -                            "monthly",
        -                            "annual"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "currency": {
        -                          "enum": [
        -                            "GBP",
        -                            "SGD",
        -                            "EUR",
        -                            "USD",
        -                            "CAD",
        -                            "AUD",
        -                            "NZD",
        -                            "MYR"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "display_name": {
        -                          "type": "string"
        -                        },
        -                        "price_local": {
        -                          "type": "number"
        -                        },
        -                        "tier_slug": {
        -                          "enum": [
        -                            "7_day_pass",
        -                            "solo",
        -                            "studio",
        -                            "practice"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "unlock_summary": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "tier_slug",
        -                        "display_name",
        -                        "price_local",
        -                        "currency",
        -                        "billing",
        -                        "unlock_summary"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "current_tier": {
        -                    "const": "free",
        -                    "default": "free",
        -                    "type": "string"
        -                  },
        -                  "pass_credit": {
        -                    "anyOf": [
        -                      {
        -                        "additionalProperties": false,
        -                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        -                        "properties": {
        -                          "amount_local": {
        -                            "type": "number"
        -                          },
        -                          "applies_to": {
        -                            "const": "solo_first_month",
        -                            "default": "solo_first_month",
        -                            "type": "string"
        -                          },
        -                          "currency": {
        -                            "type": "string"
        -                          },
        -                          "redeemable_until": {
        -                            "type": "string"
        -                          }
        -                        },
        -                        "required": [
        -                          "amount_local",
        -                          "currency",
        -                          "redeemable_until"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "pricing_url": {
        -                    "default": "https://civilquants.com/pricing",
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "available_tiers"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tos_url": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "upgrade_hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "warranty_disclaimer": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          }
        -        },
        -        "required": [
        -          "request_id",
        -          "issued_at",
        -          "tier"
        -        ],
        -        "type": "object"
        -      },
        -      "data": {
        -        "default": null,
        -        "title": "Data"
        -      },
        -      "error": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        -            "properties": {
        -              "code": {
        -                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        -                "enum": [
        -                  "RATE_LIMIT_EXCEEDED",
        -                  "TIER_INSUFFICIENT",
        -                  "INVALID_INPUT",
        -                  "SCHEMA_VERSION_MISMATCH",
        -                  "SCHEMA_INVARIANT_VIOLATION",
        -                  "UPSTREAM_TIMEOUT",
        -                  "BACKEND_FAILURE",
        -                  "IP_BLOCKED",
        -                  "RESOURCE_NOT_FOUND",
        -                  "RENDER_FAILURE",
        -                  "OCR_LOW_CONFIDENCE",
        -                  "MANUAL_REVIEW_REQUIRED",
        -                  "ACCEPTANCE_REQUIRED",
        -                  "INVALID_TOKEN"
        -                ],
        -                "type": "string"
        -              },
        -              "details": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "message": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "recoverable": {
        -                "type": "boolean"
        -              },
        -              "retry_after_seconds": {
        -                "anyOf": [
        -                  {
        -                    "minimum": 0,
        -                    "type": "integer"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              }
        -            },
        -            "required": [
        -              "code",
        -              "message",
        -              "recoverable"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      }
        -    },
        -    "required": [
        -      "_meta"
        -    ],
        -    "type": "object"
        -  }
        -]New value: +[
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "_meta": {
        +        "additionalProperties": false,
        +        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        +        "properties": {
        +          "deliverables": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        +                "properties": {
        +                  "docx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "dxf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "expires_at": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  },
        +                  "pdf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "xlsx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "expires_at"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "document_id": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "issued_at": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "rate_limit_remaining": {
        +            "anyOf": [
        +              {
        +                "minimum": 0,
        +                "type": "integer"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "request_id": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "schema_version": {
        +            "const": "1.0.0",
        +            "default": "1.0.0",
        +            "type": "string"
        +          },
        +          "scope_boundary": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        +                "properties": {
        +                  "not_in_scope": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "produced": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "recommended_companions": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "type": "string"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "produced",
        +                  "not_in_scope"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tier": {
        +            "enum": [
        +              "free",
        +              "paid"
        +            ],
        +            "type": "string"
        +          },
        +          "tier_upgrade": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        +                "properties": {
        +                  "available_tiers": {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        +                      "properties": {
        +                        "billing": {
        +                          "enum": [
        +                            "one_off",
        +                            "monthly",
        +                            "annual"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "currency": {
        +                          "enum": [
        +                            "GBP",
        +                            "SGD",
        +                            "EUR",
        +                            "USD",
        +                            "CAD",
        +                            "AUD",
        +                            "NZD",
        +                            "MYR"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "display_name": {
        +                          "type": "string"
        +                        },
        +                        "price_local": {
        +                          "type": "number"
        +                        },
        +                        "tier_slug": {
        +                          "enum": [
        +                            "7_day_pass",
        +                            "solo",
        +                            "studio",
        +                            "practice"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "unlock_summary": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "tier_slug",
        +                        "display_name",
        +                        "price_local",
        +                        "currency",
        +                        "billing",
        +                        "unlock_summary"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "current_tier": {
        +                    "const": "free",
        +                    "default": "free",
        +                    "type": "string"
        +                  },
        +                  "pass_credit": {
        +                    "anyOf": [
        +                      {
        +                        "additionalProperties": false,
        +                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        +                        "properties": {
        +                          "amount_local": {
        +                            "type": "number"
        +                          },
        +                          "applies_to": {
        +                            "const": "solo_first_month",
        +                            "default": "solo_first_month",
        +                            "type": "string"
        +                          },
        +                          "currency": {
        +                            "type": "string"
        +                          },
        +                          "redeemable_until": {
        +                            "type": "string"
        +                          }
        +                        },
        +                        "required": [
        +                          "amount_local",
        +                          "currency",
        +                          "redeemable_until"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "pricing_url": {
        +                    "default": "https://civilquants.com/pricing",
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "available_tiers"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tos_url": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "upgrade_hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "warranty_disclaimer": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          }
        +        },
        +        "required": [
        +          "request_id",
        +          "issued_at",
        +          "tier"
        +        ],
        +        "type": "object"
        +      },
        +      "data": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Schema § 1.1 — the typed payload returned inside `MCPResponse[ComputeResult]`.\n\nFree-tier responses omit `drawings` (the downloadable CAD artefact\npointers — the paid differentiator); the bridge enforces this. The\n`audit_trail` and the inline `drawing` preview are present on BOTH tiers\n(V1 ALIGN / 60th-fire D + C). `text_summary` is bounded to 2000 chars —\nkeeps the LLM-facing summary token-cheap and forces longer narrative into\nBoQ row descriptions where it belongs. `warnings` is the non-fatal\ngeometry advisory list (both tiers).",
        +            "properties": {
        +              "assembly_slug": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "audit_trail": {
        +                "anyOf": [
        +                  {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.7 — paid-tier audit-trail entry.\n\nOne entry per BoQ row; `boq_row_index` ties to the row position in\n`ComputeResult.boq_rows`. `derivation` is the human-readable formula\nwalk-through; `formula` is the optional formal expression.",
        +                      "properties": {
        +                        "boq_row_index": {
        +                          "minimum": 0,
        +                          "type": "integer"
        +                        },
        +                        "derivation": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "formula": {
        +                          "anyOf": [
        +                            {
        +                              "type": "string"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ],
        +                          "default": null
        +                        },
        +                        "id": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "parameters_referenced": {
        +                          "items": {
        +                            "type": "string"
        +                          },
        +                          "type": "array"
        +                        }
        +                      },
        +                      "required": [
        +                        "id",
        +                        "boq_row_index",
        +                        "derivation"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "boq_rows": {
        +                "items": {
        +                  "additionalProperties": false,
        +                  "description": "Schema § 1.3 — a single bill row in the requested standard's format.\n\n`description` is the non-verbatim functional description per spec § 13.9 /\n§ 15 invariant — NEVER reproduces a standard's verbatim clause text.\n`rate` / `amount` ship null because rates are commodity data the customer\nowns; the engine's job is the measurement, not the pricing.",
        +                  "properties": {
        +                    "amount": {
        +                      "anyOf": [
        +                        {
        +                          "type": "number"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "attribution": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "audit_id": {
        +                      "anyOf": [
        +                        {
        +                          "type": "string"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "description": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "quantity": {
        +                      "minimum": 0,
        +                      "type": "number"
        +                    },
        +                    "rate": {
        +                      "anyOf": [
        +                        {
        +                          "type": "number"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "unit": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "work_section": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    }
        +                  },
        +                  "required": [
        +                    "work_section",
        +                    "description",
        +                    "quantity",
        +                    "unit",
        +                    "attribution"
        +                  ],
        +                  "type": "object"
        +                },
        +                "type": "array"
        +              },
        +              "drawing": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": false,
        +                    "description": "Schema § 1.6a — inline server-rendered SVG preview of the geometry.\n\nThe MCP mirror of the web ``/compute`` response's ``drawing`` field\n(``api.schemas.compute.DrawingRef``): the same on-screen dimensioned\ndrawing both tiers see in the workspace, surfaced on the MCP compute\nresponse so a chat client can render it inline (60th-fire item C). This\nis the on-screen preview — present on BOTH tiers per the free/paid\nboundary; the downloadable CAD artefacts (DXF / dimensioned PDF) remain\nthe paid differentiator via the export tools.\n\nDefined here rather than importing ``DrawingRef`` because the web\n``schemas`` package imports back into this module (``schemas.render``),\nso reusing it would create an import cycle — the MCP wire contract keeps\nits own copy, the same pattern as ``BoQRow`` / ``DrawingReference``.",
        +                    "properties": {
        +                      "entity_count": {
        +                        "minimum": 0,
        +                        "type": "integer"
        +                      },
        +                      "svg_b64": {
        +                        "minLength": 1,
        +                        "type": "string"
        +                      },
        +                      "unit_of_drawing": {
        +                        "const": "m",
        +                        "default": "m",
        +                        "type": "string"
        +                      },
        +                      "viewbox_height": {
        +                        "exclusiveMinimum": 0,
        +                        "type": "number"
        +                      },
        +                      "viewbox_width": {
        +                        "exclusiveMinimum": 0,
        +                        "type": "number"
        +                      },
        +                      "viewbox_x": {
        +                        "type": "number"
        +                      },
        +                      "viewbox_y": {
        +                        "type": "number"
        +                      }
        +                    },
        +                    "required": [
        +                      "svg_b64",
        +                      "viewbox_x",
        +                      "viewbox_y",
        +                      "viewbox_width",
        +                      "viewbox_height",
        +                      "entity_count"
        +                    ],
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "drawings": {
        +                "anyOf": [
        +                  {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.6 — paid-tier drawing artefact pointer.\n\n`url` is an R2-signed URL; expiry is carried in `_meta.deliverables.expires_at`\non the envelope (not duplicated here). `layers` is DXF-only; PDF/SVG\ncallers omit it.",
        +                      "properties": {
        +                        "drawing_type": {
        +                          "enum": [
        +                            "section",
        +                            "plan",
        +                            "elevation",
        +                            "isometric",
        +                            "detail"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "format": {
        +                          "enum": [
        +                            "DXF",
        +                            "PDF",
        +                            "SVG"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "layers": {
        +                          "anyOf": [
        +                            {
        +                              "items": {
        +                                "type": "string"
        +                              },
        +                              "type": "array"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ],
        +                          "default": null
        +                        },
        +                        "scale": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "sheet_size": {
        +                          "enum": [
        +                            "A1",
        +                            "A2",
        +                            "A3",
        +                            "A4"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "url": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "drawing_type",
        +                        "format",
        +                        "url",
        +                        "sheet_size",
        +                        "scale"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "parameters_used": {
        +                "additionalProperties": false,
        +                "description": "Schema § 1.2 — the parameter snapshot the engine actually used.\n\nSplits user-supplied values from engine defaults so customers can see\nwhich numbers came from them and which the engine filled in. Every\ndefaulted parameter SHOULD have a corresponding entry in `assumptions`\n— the bridge layer enforces this when wrapping engine output.",
        +                "properties": {
        +                  "assumptions": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "engine_defaults": {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  "resolved_from_description": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "additionalProperties": false,
        +                          "description": "Schema § 1.2 — a parameter resolved by the forgiving-input layer.\n\nPopulated by the Track B-Forgiving Haiku-4.5 resolution pass; until that\nlayer lands, instances are constructed only by tests. `source` distinguishes\nthe resolution path so customers can audit which fields were inferred.",
        +                          "properties": {
        +                            "confidence": {
        +                              "anyOf": [
        +                                {
        +                                  "enum": [
        +                                    "high",
        +                                    "medium",
        +                                    "low"
        +                                  ],
        +                                  "type": "string"
        +                                },
        +                                {
        +                                  "type": "null"
        +                                }
        +                              ],
        +                              "default": null
        +                            },
        +                            "field_name": {
        +                              "minLength": 1,
        +                              "type": "string"
        +                            },
        +                            "resolved_value": {},
        +                            "source": {
        +                              "enum": [
        +                                "description_field",
        +                                "haiku_resolution",
        +                                "engine_default"
        +                              ],
        +                              "type": "string"
        +                            }
        +                          },
        +                          "required": [
        +                            "field_name",
        +                            "resolved_value",
        +                            "source"
        +                          ],
        +                          "type": "object"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "user_supplied": {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  }
        +                },
        +                "type": "object"
        +              },
        +              "standard": {
        +                "enum": [
        +                  "CESMM4",
        +                  "NRM2",
        +                  "SMM7",
        +                  "MMHW"
        +                ],
        +                "type": "string"
        +              },
        +              "text_summary": {
        +                "maxLength": 2000,
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "totals_summary": {
        +                "additionalProperties": false,
        +                "description": "Schema § 1.4 — totals_summary as a typed wrapper around the free-form dict.\n\nWire shape is a flat object (`{\"concrete_m3\": {...}, \"rebar_t\": {...}}`).\nWe model it as `RootModel`-equivalent via `model_config(extra=\"allow\")`\n+ a single `__root__`-style `entries` dict. Pydantic v2 recommends\n`RootModel` for free-form roots; using a wrapper class keeps the import\nsurface uniform with the rest of this module.",
        +                "properties": {
        +                  "entries": {
        +                    "additionalProperties": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.4 — single material/work-class total entry.",
        +                      "properties": {
        +                        "quantity": {
        +                          "minimum": 0,
        +                          "type": "number"
        +                        },
        +                        "unit": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "quantity",
        +                        "unit"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "object"
        +                  }
        +                },
        +                "type": "object"
        +              },
        +              "warnings": {
        +                "items": {
        +                  "additionalProperties": false,
        +                  "description": "Schema § 1.8 — a non-fatal geometry advisory (56th-fire T2).\n\nThe wire projection of the engine's `core.GeometryWarning`. Advisory only:\na warning NEVER changes a measured quantity — it flags geometry that is\nvalid but likely a mistake (e.g. a stale dependent-height default). Present\non BOTH tiers — a correctness/safety signal, not a paid feature.",
        +                  "properties": {
        +                    "affected_params": {
        +                      "items": {
        +                        "type": "string"
        +                      },
        +                      "type": "array"
        +                    },
        +                    "code": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "detail": {
        +                      "additionalProperties": {
        +                        "type": "number"
        +                      },
        +                      "type": "object"
        +                    },
        +                    "message": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "severity": {
        +                      "enum": [
        +                        "info",
        +                        "advisory",
        +                        "caution"
        +                      ],
        +                      "type": "string"
        +                    }
        +                  },
        +                  "required": [
        +                    "code",
        +                    "severity",
        +                    "message"
        +                  ],
        +                  "type": "object"
        +                },
        +                "type": "array"
        +              }
        +            },
        +            "required": [
        +              "assembly_slug",
        +              "standard",
        +              "parameters_used",
        +              "boq_rows",
        +              "totals_summary",
        +              "text_summary"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      },
        +      "error": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        +            "properties": {
        +              "code": {
        +                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        +                "enum": [
        +                  "RATE_LIMIT_EXCEEDED",
        +                  "TIER_INSUFFICIENT",
        +                  "INVALID_INPUT",
        +                  "SCHEMA_VERSION_MISMATCH",
        +                  "SCHEMA_INVARIANT_VIOLATION",
        +                  "UPSTREAM_TIMEOUT",
        +                  "BACKEND_FAILURE",
        +                  "IP_BLOCKED",
        +                  "RESOURCE_NOT_FOUND",
        +                  "RENDER_FAILURE",
        +                  "OCR_LOW_CONFIDENCE",
        +                  "MANUAL_REVIEW_REQUIRED",
        +                  "ACCEPTANCE_REQUIRED",
        +                  "INVALID_TOKEN"
        +                ],
        +                "type": "string"
        +              },
        +              "details": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "message": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "recoverable": {
        +                "type": "boolean"
        +              },
        +              "retry_after_seconds": {
        +                "anyOf": [
        +                  {
        +                    "minimum": 0,
        +                    "type": "integer"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              }
        +            },
        +            "required": [
        +              "code",
        +              "message",
        +              "recoverable"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      }
        +    },
        +    "required": [
        +      "_meta"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "_meta": {
        +        "additionalProperties": false,
        +        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        +        "properties": {
        +          "deliverables": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        +                "properties": {
        +                  "docx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "dxf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "expires_at": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  },
        +                  "pdf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "xlsx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "expires_at"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "document_id": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "issued_at": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "rate_limit_remaining": {
        +            "anyOf": [
        +              {
        +                "minimum": 0,
        +                "type": "integer"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "request_id": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "schema_version": {
        +            "const": "1.0.0",
        +            "default": "1.0.0",
        +            "type": "string"
        +          },
        +          "scope_boundary": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        +                "properties": {
        +                  "not_in_scope": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "produced": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "recommended_companions": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "type": "string"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "produced",
        +                  "not_in_scope"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tier": {
        +            "enum": [
        +              "free",
        +              "paid"
        +            ],
        +            "type": "string"
        +          },
        +          "tier_upgrade": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        +                "properties": {
        +                  "available_tiers": {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        +                      "properties": {
        +                        "billing": {
        +                          "enum": [
        +                            "one_off",
        +                            "monthly",
        +                            "annual"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "currency": {
        +                          "enum": [
        +                            "GBP",
        +                            "SGD",
        +                            "EUR",
        +                            "USD",
        +                            "CAD",
        +                            "AUD",
        +                            "NZD",
        +                            "MYR"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "display_name": {
        +                          "type": "string"
        +                        },
        +                        "price_local": {
        +                          "type": "number"
        +                        },
        +                        "tier_slug": {
        +                          "enum": [
        +                            "7_day_pass",
        +                            "solo",
        +                            "studio",
        +                            "practice"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "unlock_summary": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "tier_slug",
        +                        "display_name",
        +                        "price_local",
        +                        "currency",
        +                        "billing",
        +                        "unlock_summary"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "current_tier": {
        +                    "const": "free",
        +                    "default": "free",
        +                    "type": "string"
        +                  },
        +                  "pass_credit": {
        +                    "anyOf": [
        +                      {
        +                        "additionalProperties": false,
        +                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        +                        "properties": {
        +                          "amount_local": {
        +                            "type": "number"
        +                          },
        +                          "applies_to": {
        +                            "const": "solo_first_month",
        +                            "default": "solo_first_month",
        +                            "type": "string"
        +                          },
        +                          "currency": {
        +                            "type": "string"
        +                          },
        +                          "redeemable_until": {
        +                            "type": "string"
        +                          }
        +                        },
        +                        "required": [
        +                          "amount_local",
        +                          "currency",
        +                          "redeemable_until"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "pricing_url": {
        +                    "default": "https://civilquants.com/pricing",
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "available_tiers"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tos_url": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "upgrade_hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "warranty_disclaimer": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          }
        +        },
        +        "required": [
        +          "request_id",
        +          "issued_at",
        +          "tier"
        +        ],
        +        "type": "object"
        +      },
        +      "data": {
        +        "default": null,
        +        "title": "Data"
        +      },
        +      "error": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        +            "properties": {
        +              "code": {
        +                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        +                "enum": [
        +                  "RATE_LIMIT_EXCEEDED",
        +                  "TIER_INSUFFICIENT",
        +                  "INVALID_INPUT",
        +                  "SCHEMA_VERSION_MISMATCH",
        +                  "SCHEMA_INVARIANT_VIOLATION",
        +                  "UPSTREAM_TIMEOUT",
        +                  "BACKEND_FAILURE",
        +                  "IP_BLOCKED",
        +                  "RESOURCE_NOT_FOUND",
        +                  "RENDER_FAILURE",
        +                  "OCR_LOW_CONFIDENCE",
        +                  "MANUAL_REVIEW_REQUIRED",
        +                  "ACCEPTANCE_REQUIRED",
        +                  "INVALID_TOKEN"
        +                ],
        +                "type": "string"
        +              },
        +              "details": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "message": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "recoverable": {
        +                "type": "boolean"
        +              },
        +              "retry_after_seconds": {
        +                "anyOf": [
        +                  {
        +                    "minimum": 0,
        +                    "type": "integer"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              }
        +            },
        +            "required": [
        +              "code",
        +              "message",
        +              "recoverable"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      }
        +    },
        +    "required": [
        +      "_meta"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedcompute_single_service_run3 fields changed
      • addedInput schema / properties / deliverables
        Added value: +{
        +  "anyOf": [
        +    {
        +      "items": {
        +        "const": "xlsx",
        +        "type": "string"
        +      },
        +      "type": "array"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null
        +}
      • addedInput schema / properties / output_mode
        Added value: +{
        +  "default": "full_json",
        +  "enum": [
        +    "summary",
        +    "boq",
        +    "boq_with_backup",
        +    "full_json"
        +  ],
        +  "type": "string"
        +}
      • changedOutput schema / properties / result / anyOf
        Previous value: -[
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "_meta": {
        -        "additionalProperties": false,
        -        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        -        "properties": {
        -          "deliverables": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        -                "properties": {
        -                  "docx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "dxf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "expires_at": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  },
        -                  "pdf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "xlsx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "expires_at"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "document_id": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "issued_at": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "rate_limit_remaining": {
        -            "anyOf": [
        -              {
        -                "minimum": 0,
        -                "type": "integer"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "request_id": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "schema_version": {
        -            "const": "1.0.0",
        -            "default": "1.0.0",
        -            "type": "string"
        -          },
        -          "scope_boundary": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        -                "properties": {
        -                  "not_in_scope": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "produced": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "recommended_companions": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "type": "string"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "produced",
        -                  "not_in_scope"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tier": {
        -            "enum": [
        -              "free",
        -              "paid"
        -            ],
        -            "type": "string"
        -          },
        -          "tier_upgrade": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        -                "properties": {
        -                  "available_tiers": {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        -                      "properties": {
        -                        "billing": {
        -                          "enum": [
        -                            "one_off",
        -                            "monthly",
        -                            "annual"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "currency": {
        -                          "enum": [
        -                            "GBP",
        -                            "SGD",
        -                            "EUR",
        -                            "USD",
        -                            "CAD",
        -                            "AUD",
        -                            "NZD",
        -                            "MYR"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "display_name": {
        -                          "type": "string"
        -                        },
        -                        "price_local": {
        -                          "type": "number"
        -                        },
        -                        "tier_slug": {
        -                          "enum": [
        -                            "7_day_pass",
        -                            "solo",
        -                            "studio",
        -                            "practice"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "unlock_summary": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "tier_slug",
        -                        "display_name",
        -                        "price_local",
        -                        "currency",
        -                        "billing",
        -                        "unlock_summary"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "current_tier": {
        -                    "const": "free",
        -                    "default": "free",
        -                    "type": "string"
        -                  },
        -                  "pass_credit": {
        -                    "anyOf": [
        -                      {
        -                        "additionalProperties": false,
        -                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        -                        "properties": {
        -                          "amount_local": {
        -                            "type": "number"
        -                          },
        -                          "applies_to": {
        -                            "const": "solo_first_month",
        -                            "default": "solo_first_month",
        -                            "type": "string"
        -                          },
        -                          "currency": {
        -                            "type": "string"
        -                          },
        -                          "redeemable_until": {
        -                            "type": "string"
        -                          }
        -                        },
        -                        "required": [
        -                          "amount_local",
        -                          "currency",
        -                          "redeemable_until"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "pricing_url": {
        -                    "default": "https://civilquants.com/pricing",
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "available_tiers"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tos_url": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "upgrade_hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "warranty_disclaimer": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          }
        -        },
        -        "required": [
        -          "request_id",
        -          "issued_at",
        -          "tier"
        -        ],
        -        "type": "object"
        -      },
        -      "data": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Schema § 1.1 — the typed payload returned inside `MCPResponse[ComputeResult]`.\n\nFree-tier responses MUST omit `drawings` and `audit_trail` (the bridge\nenforces this); paid-tier responses populate both. `text_summary` is\nbounded to 2000 chars — keeps the LLM-facing summary token-cheap and\nforces longer narrative into BoQ row descriptions where it belongs.\n`warnings` is the non-fatal geometry advisory list (both tiers).",
        -            "properties": {
        -              "assembly_slug": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "audit_trail": {
        -                "anyOf": [
        -                  {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.7 — paid-tier audit-trail entry.\n\nOne entry per BoQ row; `boq_row_index` ties to the row position in\n`ComputeResult.boq_rows`. `derivation` is the human-readable formula\nwalk-through; `formula` is the optional formal expression.",
        -                      "properties": {
        -                        "boq_row_index": {
        -                          "minimum": 0,
        -                          "type": "integer"
        -                        },
        -                        "derivation": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "formula": {
        -                          "anyOf": [
        -                            {
        -                              "type": "string"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ],
        -                          "default": null
        -                        },
        -                        "id": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "parameters_referenced": {
        -                          "items": {
        -                            "type": "string"
        -                          },
        -                          "type": "array"
        -                        }
        -                      },
        -                      "required": [
        -                        "id",
        -                        "boq_row_index",
        -                        "derivation"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "boq_rows": {
        -                "items": {
        -                  "additionalProperties": false,
        -                  "description": "Schema § 1.3 — a single bill row in the requested standard's format.\n\n`description` is the non-verbatim functional description per spec § 13.9 /\n§ 15 invariant — NEVER reproduces a standard's verbatim clause text.\n`rate` / `amount` ship null because rates are commodity data the customer\nowns; the engine's job is the measurement, not the pricing.",
        -                  "properties": {
        -                    "amount": {
        -                      "anyOf": [
        -                        {
        -                          "type": "number"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "attribution": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "audit_id": {
        -                      "anyOf": [
        -                        {
        -                          "type": "string"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "description": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "quantity": {
        -                      "minimum": 0,
        -                      "type": "number"
        -                    },
        -                    "rate": {
        -                      "anyOf": [
        -                        {
        -                          "type": "number"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "unit": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "work_section": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    }
        -                  },
        -                  "required": [
        -                    "work_section",
        -                    "description",
        -                    "quantity",
        -                    "unit",
        -                    "attribution"
        -                  ],
        -                  "type": "object"
        -                },
        -                "type": "array"
        -              },
        -              "drawings": {
        -                "anyOf": [
        -                  {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.6 — paid-tier drawing artefact pointer.\n\n`url` is an R2-signed URL; expiry is carried in `_meta.deliverables.expires_at`\non the envelope (not duplicated here). `layers` is DXF-only; PDF/SVG\ncallers omit it.",
        -                      "properties": {
        -                        "drawing_type": {
        -                          "enum": [
        -                            "section",
        -                            "plan",
        -                            "elevation",
        -                            "isometric",
        -                            "detail"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "format": {
        -                          "enum": [
        -                            "DXF",
        -                            "PDF",
        -                            "SVG"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "layers": {
        -                          "anyOf": [
        -                            {
        -                              "items": {
        -                                "type": "string"
        -                              },
        -                              "type": "array"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ],
        -                          "default": null
        -                        },
        -                        "scale": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "sheet_size": {
        -                          "enum": [
        -                            "A1",
        -                            "A2",
        -                            "A3",
        -                            "A4"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "url": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "drawing_type",
        -                        "format",
        -                        "url",
        -                        "sheet_size",
        -                        "scale"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "parameters_used": {
        -                "additionalProperties": false,
        -                "description": "Schema § 1.2 — the parameter snapshot the engine actually used.\n\nSplits user-supplied values from engine defaults so customers can see\nwhich numbers came from them and which the engine filled in. Every\ndefaulted parameter SHOULD have a corresponding entry in `assumptions`\n— the bridge layer enforces this when wrapping engine output.",
        -                "properties": {
        -                  "assumptions": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "engine_defaults": {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  "resolved_from_description": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "additionalProperties": false,
        -                          "description": "Schema § 1.2 — a parameter resolved by the forgiving-input layer.\n\nPopulated by the Track B-Forgiving Haiku-4.5 resolution pass; until that\nlayer lands, instances are constructed only by tests. `source` distinguishes\nthe resolution path so customers can audit which fields were inferred.",
        -                          "properties": {
        -                            "confidence": {
        -                              "anyOf": [
        -                                {
        -                                  "enum": [
        -                                    "high",
        -                                    "medium",
        -                                    "low"
        -                                  ],
        -                                  "type": "string"
        -                                },
        -                                {
        -                                  "type": "null"
        -                                }
        -                              ],
        -                              "default": null
        -                            },
        -                            "field_name": {
        -                              "minLength": 1,
        -                              "type": "string"
        -                            },
        -                            "resolved_value": {},
        -                            "source": {
        -                              "enum": [
        -                                "description_field",
        -                                "haiku_resolution",
        -                                "engine_default"
        -                              ],
        -                              "type": "string"
        -                            }
        -                          },
        -                          "required": [
        -                            "field_name",
        -                            "resolved_value",
        -                            "source"
        -                          ],
        -                          "type": "object"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "user_supplied": {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  }
        -                },
        -                "type": "object"
        -              },
        -              "standard": {
        -                "enum": [
        -                  "CESMM4",
        -                  "NRM2",
        -                  "SMM7",
        -                  "MMHW"
        -                ],
        -                "type": "string"
        -              },
        -              "text_summary": {
        -                "maxLength": 2000,
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "totals_summary": {
        -                "additionalProperties": false,
        -                "description": "Schema § 1.4 — totals_summary as a typed wrapper around the free-form dict.\n\nWire shape is a flat object (`{\"concrete_m3\": {...}, \"rebar_t\": {...}}`).\nWe model it as `RootModel`-equivalent via `model_config(extra=\"allow\")`\n+ a single `__root__`-style `entries` dict. Pydantic v2 recommends\n`RootModel` for free-form roots; using a wrapper class keeps the import\nsurface uniform with the rest of this module.",
        -                "properties": {
        -                  "entries": {
        -                    "additionalProperties": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.4 — single material/work-class total entry.",
        -                      "properties": {
        -                        "quantity": {
        -                          "minimum": 0,
        -                          "type": "number"
        -                        },
        -                        "unit": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "quantity",
        -                        "unit"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "object"
        -                  }
        -                },
        -                "type": "object"
        -              },
        -              "warnings": {
        -                "items": {
        -                  "additionalProperties": false,
        -                  "description": "Schema § 1.8 — a non-fatal geometry advisory (56th-fire T2).\n\nThe wire projection of the engine's `core.GeometryWarning`. Advisory only:\na warning NEVER changes a measured quantity — it flags geometry that is\nvalid but likely a mistake (e.g. a stale dependent-height default). Present\non BOTH tiers — a correctness/safety signal, not a paid feature.",
        -                  "properties": {
        -                    "affected_params": {
        -                      "items": {
        -                        "type": "string"
        -                      },
        -                      "type": "array"
        -                    },
        -                    "code": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "detail": {
        -                      "additionalProperties": {
        -                        "type": "number"
        -                      },
        -                      "type": "object"
        -                    },
        -                    "message": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "severity": {
        -                      "enum": [
        -                        "info",
        -                        "advisory",
        -                        "caution"
        -                      ],
        -                      "type": "string"
        -                    }
        -                  },
        -                  "required": [
        -                    "code",
        -                    "severity",
        -                    "message"
        -                  ],
        -                  "type": "object"
        -                },
        -                "type": "array"
        -              }
        -            },
        -            "required": [
        -              "assembly_slug",
        -              "standard",
        -              "parameters_used",
        -              "boq_rows",
        -              "totals_summary",
        -              "text_summary"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      },
        -      "error": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        -            "properties": {
        -              "code": {
        -                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        -                "enum": [
        -                  "RATE_LIMIT_EXCEEDED",
        -                  "TIER_INSUFFICIENT",
        -                  "INVALID_INPUT",
        -                  "SCHEMA_VERSION_MISMATCH",
        -                  "SCHEMA_INVARIANT_VIOLATION",
        -                  "UPSTREAM_TIMEOUT",
        -                  "BACKEND_FAILURE",
        -                  "IP_BLOCKED",
        -                  "RESOURCE_NOT_FOUND",
        -                  "RENDER_FAILURE",
        -                  "OCR_LOW_CONFIDENCE",
        -                  "MANUAL_REVIEW_REQUIRED",
        -                  "ACCEPTANCE_REQUIRED",
        -                  "INVALID_TOKEN"
        -                ],
        -                "type": "string"
        -              },
        -              "details": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "message": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "recoverable": {
        -                "type": "boolean"
        -              },
        -              "retry_after_seconds": {
        -                "anyOf": [
        -                  {
        -                    "minimum": 0,
        -                    "type": "integer"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              }
        -            },
        -            "required": [
        -              "code",
        -              "message",
        -              "recoverable"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      }
        -    },
        -    "required": [
        -      "_meta"
        -    ],
        -    "type": "object"
        -  },
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "_meta": {
        -        "additionalProperties": false,
        -        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        -        "properties": {
        -          "deliverables": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        -                "properties": {
        -                  "docx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "dxf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "expires_at": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  },
        -                  "pdf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "xlsx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "expires_at"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "document_id": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "issued_at": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "rate_limit_remaining": {
        -            "anyOf": [
        -              {
        -                "minimum": 0,
        -                "type": "integer"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "request_id": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "schema_version": {
        -            "const": "1.0.0",
        -            "default": "1.0.0",
        -            "type": "string"
        -          },
        -          "scope_boundary": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        -                "properties": {
        -                  "not_in_scope": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "produced": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "recommended_companions": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "type": "string"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "produced",
        -                  "not_in_scope"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tier": {
        -            "enum": [
        -              "free",
        -              "paid"
        -            ],
        -            "type": "string"
        -          },
        -          "tier_upgrade": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        -                "properties": {
        -                  "available_tiers": {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        -                      "properties": {
        -                        "billing": {
        -                          "enum": [
        -                            "one_off",
        -                            "monthly",
        -                            "annual"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "currency": {
        -                          "enum": [
        -                            "GBP",
        -                            "SGD",
        -                            "EUR",
        -                            "USD",
        -                            "CAD",
        -                            "AUD",
        -                            "NZD",
        -                            "MYR"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "display_name": {
        -                          "type": "string"
        -                        },
        -                        "price_local": {
        -                          "type": "number"
        -                        },
        -                        "tier_slug": {
        -                          "enum": [
        -                            "7_day_pass",
        -                            "solo",
        -                            "studio",
        -                            "practice"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "unlock_summary": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "tier_slug",
        -                        "display_name",
        -                        "price_local",
        -                        "currency",
        -                        "billing",
        -                        "unlock_summary"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "current_tier": {
        -                    "const": "free",
        -                    "default": "free",
        -                    "type": "string"
        -                  },
        -                  "pass_credit": {
        -                    "anyOf": [
        -                      {
        -                        "additionalProperties": false,
        -                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        -                        "properties": {
        -                          "amount_local": {
        -                            "type": "number"
        -                          },
        -                          "applies_to": {
        -                            "const": "solo_first_month",
        -                            "default": "solo_first_month",
        -                            "type": "string"
        -                          },
        -                          "currency": {
        -                            "type": "string"
        -                          },
        -                          "redeemable_until": {
        -                            "type": "string"
        -                          }
        -                        },
        -                        "required": [
        -                          "amount_local",
        -                          "currency",
        -                          "redeemable_until"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "pricing_url": {
        -                    "default": "https://civilquants.com/pricing",
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "available_tiers"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tos_url": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "upgrade_hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "warranty_disclaimer": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          }
        -        },
        -        "required": [
        -          "request_id",
        -          "issued_at",
        -          "tier"
        -        ],
        -        "type": "object"
        -      },
        -      "data": {
        -        "default": null,
        -        "title": "Data"
        -      },
        -      "error": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        -            "properties": {
        -              "code": {
        -                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        -                "enum": [
        -                  "RATE_LIMIT_EXCEEDED",
        -                  "TIER_INSUFFICIENT",
        -                  "INVALID_INPUT",
        -                  "SCHEMA_VERSION_MISMATCH",
        -                  "SCHEMA_INVARIANT_VIOLATION",
        -                  "UPSTREAM_TIMEOUT",
        -                  "BACKEND_FAILURE",
        -                  "IP_BLOCKED",
        -                  "RESOURCE_NOT_FOUND",
        -                  "RENDER_FAILURE",
        -                  "OCR_LOW_CONFIDENCE",
        -                  "MANUAL_REVIEW_REQUIRED",
        -                  "ACCEPTANCE_REQUIRED",
        -                  "INVALID_TOKEN"
        -                ],
        -                "type": "string"
        -              },
        -              "details": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "message": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "recoverable": {
        -                "type": "boolean"
        -              },
        -              "retry_after_seconds": {
        -                "anyOf": [
        -                  {
        -                    "minimum": 0,
        -                    "type": "integer"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              }
        -            },
        -            "required": [
        -              "code",
        -              "message",
        -              "recoverable"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      }
        -    },
        -    "required": [
        -      "_meta"
        -    ],
        -    "type": "object"
        -  }
        -]New value: +[
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "_meta": {
        +        "additionalProperties": false,
        +        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        +        "properties": {
        +          "deliverables": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        +                "properties": {
        +                  "docx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "dxf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "expires_at": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  },
        +                  "pdf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "xlsx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "expires_at"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "document_id": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "issued_at": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "rate_limit_remaining": {
        +            "anyOf": [
        +              {
        +                "minimum": 0,
        +                "type": "integer"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "request_id": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "schema_version": {
        +            "const": "1.0.0",
        +            "default": "1.0.0",
        +            "type": "string"
        +          },
        +          "scope_boundary": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        +                "properties": {
        +                  "not_in_scope": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "produced": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "recommended_companions": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "type": "string"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "produced",
        +                  "not_in_scope"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tier": {
        +            "enum": [
        +              "free",
        +              "paid"
        +            ],
        +            "type": "string"
        +          },
        +          "tier_upgrade": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        +                "properties": {
        +                  "available_tiers": {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        +                      "properties": {
        +                        "billing": {
        +                          "enum": [
        +                            "one_off",
        +                            "monthly",
        +                            "annual"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "currency": {
        +                          "enum": [
        +                            "GBP",
        +                            "SGD",
        +                            "EUR",
        +                            "USD",
        +                            "CAD",
        +                            "AUD",
        +                            "NZD",
        +                            "MYR"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "display_name": {
        +                          "type": "string"
        +                        },
        +                        "price_local": {
        +                          "type": "number"
        +                        },
        +                        "tier_slug": {
        +                          "enum": [
        +                            "7_day_pass",
        +                            "solo",
        +                            "studio",
        +                            "practice"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "unlock_summary": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "tier_slug",
        +                        "display_name",
        +                        "price_local",
        +                        "currency",
        +                        "billing",
        +                        "unlock_summary"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "current_tier": {
        +                    "const": "free",
        +                    "default": "free",
        +                    "type": "string"
        +                  },
        +                  "pass_credit": {
        +                    "anyOf": [
        +                      {
        +                        "additionalProperties": false,
        +                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        +                        "properties": {
        +                          "amount_local": {
        +                            "type": "number"
        +                          },
        +                          "applies_to": {
        +                            "const": "solo_first_month",
        +                            "default": "solo_first_month",
        +                            "type": "string"
        +                          },
        +                          "currency": {
        +                            "type": "string"
        +                          },
        +                          "redeemable_until": {
        +                            "type": "string"
        +                          }
        +                        },
        +                        "required": [
        +                          "amount_local",
        +                          "currency",
        +                          "redeemable_until"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "pricing_url": {
        +                    "default": "https://civilquants.com/pricing",
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "available_tiers"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tos_url": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "upgrade_hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "warranty_disclaimer": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          }
        +        },
        +        "required": [
        +          "request_id",
        +          "issued_at",
        +          "tier"
        +        ],
        +        "type": "object"
        +      },
        +      "data": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Schema § 1.1 — the typed payload returned inside `MCPResponse[ComputeResult]`.\n\nFree-tier responses omit `drawings` (the downloadable CAD artefact\npointers — the paid differentiator); the bridge enforces this. The\n`audit_trail` and the inline `drawing` preview are present on BOTH tiers\n(V1 ALIGN / 60th-fire D + C). `text_summary` is bounded to 2000 chars —\nkeeps the LLM-facing summary token-cheap and forces longer narrative into\nBoQ row descriptions where it belongs. `warnings` is the non-fatal\ngeometry advisory list (both tiers).",
        +            "properties": {
        +              "assembly_slug": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "audit_trail": {
        +                "anyOf": [
        +                  {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.7 — paid-tier audit-trail entry.\n\nOne entry per BoQ row; `boq_row_index` ties to the row position in\n`ComputeResult.boq_rows`. `derivation` is the human-readable formula\nwalk-through; `formula` is the optional formal expression.",
        +                      "properties": {
        +                        "boq_row_index": {
        +                          "minimum": 0,
        +                          "type": "integer"
        +                        },
        +                        "derivation": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "formula": {
        +                          "anyOf": [
        +                            {
        +                              "type": "string"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ],
        +                          "default": null
        +                        },
        +                        "id": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "parameters_referenced": {
        +                          "items": {
        +                            "type": "string"
        +                          },
        +                          "type": "array"
        +                        }
        +                      },
        +                      "required": [
        +                        "id",
        +                        "boq_row_index",
        +                        "derivation"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "boq_rows": {
        +                "items": {
        +                  "additionalProperties": false,
        +                  "description": "Schema § 1.3 — a single bill row in the requested standard's format.\n\n`description` is the non-verbatim functional description per spec § 13.9 /\n§ 15 invariant — NEVER reproduces a standard's verbatim clause text.\n`rate` / `amount` ship null because rates are commodity data the customer\nowns; the engine's job is the measurement, not the pricing.",
        +                  "properties": {
        +                    "amount": {
        +                      "anyOf": [
        +                        {
        +                          "type": "number"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "attribution": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "audit_id": {
        +                      "anyOf": [
        +                        {
        +                          "type": "string"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "description": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "quantity": {
        +                      "minimum": 0,
        +                      "type": "number"
        +                    },
        +                    "rate": {
        +                      "anyOf": [
        +                        {
        +                          "type": "number"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "unit": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "work_section": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    }
        +                  },
        +                  "required": [
        +                    "work_section",
        +                    "description",
        +                    "quantity",
        +                    "unit",
        +                    "attribution"
        +                  ],
        +                  "type": "object"
        +                },
        +                "type": "array"
        +              },
        +              "drawing": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": false,
        +                    "description": "Schema § 1.6a — inline server-rendered SVG preview of the geometry.\n\nThe MCP mirror of the web ``/compute`` response's ``drawing`` field\n(``api.schemas.compute.DrawingRef``): the same on-screen dimensioned\ndrawing both tiers see in the workspace, surfaced on the MCP compute\nresponse so a chat client can render it inline (60th-fire item C). This\nis the on-screen preview — present on BOTH tiers per the free/paid\nboundary; the downloadable CAD artefacts (DXF / dimensioned PDF) remain\nthe paid differentiator via the export tools.\n\nDefined here rather than importing ``DrawingRef`` because the web\n``schemas`` package imports back into this module (``schemas.render``),\nso reusing it would create an import cycle — the MCP wire contract keeps\nits own copy, the same pattern as ``BoQRow`` / ``DrawingReference``.",
        +                    "properties": {
        +                      "entity_count": {
        +                        "minimum": 0,
        +                        "type": "integer"
        +                      },
        +                      "svg_b64": {
        +                        "minLength": 1,
        +                        "type": "string"
        +                      },
        +                      "unit_of_drawing": {
        +                        "const": "m",
        +                        "default": "m",
        +                        "type": "string"
        +                      },
        +                      "viewbox_height": {
        +                        "exclusiveMinimum": 0,
        +                        "type": "number"
        +                      },
        +                      "viewbox_width": {
        +                        "exclusiveMinimum": 0,
        +                        "type": "number"
        +                      },
        +                      "viewbox_x": {
        +                        "type": "number"
        +                      },
        +                      "viewbox_y": {
        +                        "type": "number"
        +                      }
        +                    },
        +                    "required": [
        +                      "svg_b64",
        +                      "viewbox_x",
        +                      "viewbox_y",
        +                      "viewbox_width",
        +                      "viewbox_height",
        +                      "entity_count"
        +                    ],
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "drawings": {
        +                "anyOf": [
        +                  {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.6 — paid-tier drawing artefact pointer.\n\n`url` is an R2-signed URL; expiry is carried in `_meta.deliverables.expires_at`\non the envelope (not duplicated here). `layers` is DXF-only; PDF/SVG\ncallers omit it.",
        +                      "properties": {
        +                        "drawing_type": {
        +                          "enum": [
        +                            "section",
        +                            "plan",
        +                            "elevation",
        +                            "isometric",
        +                            "detail"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "format": {
        +                          "enum": [
        +                            "DXF",
        +                            "PDF",
        +                            "SVG"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "layers": {
        +                          "anyOf": [
        +                            {
        +                              "items": {
        +                                "type": "string"
        +                              },
        +                              "type": "array"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ],
        +                          "default": null
        +                        },
        +                        "scale": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "sheet_size": {
        +                          "enum": [
        +                            "A1",
        +                            "A2",
        +                            "A3",
        +                            "A4"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "url": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "drawing_type",
        +                        "format",
        +                        "url",
        +                        "sheet_size",
        +                        "scale"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "parameters_used": {
        +                "additionalProperties": false,
        +                "description": "Schema § 1.2 — the parameter snapshot the engine actually used.\n\nSplits user-supplied values from engine defaults so customers can see\nwhich numbers came from them and which the engine filled in. Every\ndefaulted parameter SHOULD have a corresponding entry in `assumptions`\n— the bridge layer enforces this when wrapping engine output.",
        +                "properties": {
        +                  "assumptions": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "engine_defaults": {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  "resolved_from_description": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "additionalProperties": false,
        +                          "description": "Schema § 1.2 — a parameter resolved by the forgiving-input layer.\n\nPopulated by the Track B-Forgiving Haiku-4.5 resolution pass; until that\nlayer lands, instances are constructed only by tests. `source` distinguishes\nthe resolution path so customers can audit which fields were inferred.",
        +                          "properties": {
        +                            "confidence": {
        +                              "anyOf": [
        +                                {
        +                                  "enum": [
        +                                    "high",
        +                                    "medium",
        +                                    "low"
        +                                  ],
        +                                  "type": "string"
        +                                },
        +                                {
        +                                  "type": "null"
        +                                }
        +                              ],
        +                              "default": null
        +                            },
        +                            "field_name": {
        +                              "minLength": 1,
        +                              "type": "string"
        +                            },
        +                            "resolved_value": {},
        +                            "source": {
        +                              "enum": [
        +                                "description_field",
        +                                "haiku_resolution",
        +                                "engine_default"
        +                              ],
        +                              "type": "string"
        +                            }
        +                          },
        +                          "required": [
        +                            "field_name",
        +                            "resolved_value",
        +                            "source"
        +                          ],
        +                          "type": "object"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "user_supplied": {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  }
        +                },
        +                "type": "object"
        +              },
        +              "standard": {
        +                "enum": [
        +                  "CESMM4",
        +                  "NRM2",
        +                  "SMM7",
        +                  "MMHW"
        +                ],
        +                "type": "string"
        +              },
        +              "text_summary": {
        +                "maxLength": 2000,
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "totals_summary": {
        +                "additionalProperties": false,
        +                "description": "Schema § 1.4 — totals_summary as a typed wrapper around the free-form dict.\n\nWire shape is a flat object (`{\"concrete_m3\": {...}, \"rebar_t\": {...}}`).\nWe model it as `RootModel`-equivalent via `model_config(extra=\"allow\")`\n+ a single `__root__`-style `entries` dict. Pydantic v2 recommends\n`RootModel` for free-form roots; using a wrapper class keeps the import\nsurface uniform with the rest of this module.",
        +                "properties": {
        +                  "entries": {
        +                    "additionalProperties": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.4 — single material/work-class total entry.",
        +                      "properties": {
        +                        "quantity": {
        +                          "minimum": 0,
        +                          "type": "number"
        +                        },
        +                        "unit": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "quantity",
        +                        "unit"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "object"
        +                  }
        +                },
        +                "type": "object"
        +              },
        +              "warnings": {
        +                "items": {
        +                  "additionalProperties": false,
        +                  "description": "Schema § 1.8 — a non-fatal geometry advisory (56th-fire T2).\n\nThe wire projection of the engine's `core.GeometryWarning`. Advisory only:\na warning NEVER changes a measured quantity — it flags geometry that is\nvalid but likely a mistake (e.g. a stale dependent-height default). Present\non BOTH tiers — a correctness/safety signal, not a paid feature.",
        +                  "properties": {
        +                    "affected_params": {
        +                      "items": {
        +                        "type": "string"
        +                      },
        +                      "type": "array"
        +                    },
        +                    "code": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "detail": {
        +                      "additionalProperties": {
        +                        "type": "number"
        +                      },
        +                      "type": "object"
        +                    },
        +                    "message": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "severity": {
        +                      "enum": [
        +                        "info",
        +                        "advisory",
        +                        "caution"
        +                      ],
        +                      "type": "string"
        +                    }
        +                  },
        +                  "required": [
        +                    "code",
        +                    "severity",
        +                    "message"
        +                  ],
        +                  "type": "object"
        +                },
        +                "type": "array"
        +              }
        +            },
        +            "required": [
        +              "assembly_slug",
        +              "standard",
        +              "parameters_used",
        +              "boq_rows",
        +              "totals_summary",
        +              "text_summary"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      },
        +      "error": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        +            "properties": {
        +              "code": {
        +                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        +                "enum": [
        +                  "RATE_LIMIT_EXCEEDED",
        +                  "TIER_INSUFFICIENT",
        +                  "INVALID_INPUT",
        +                  "SCHEMA_VERSION_MISMATCH",
        +                  "SCHEMA_INVARIANT_VIOLATION",
        +                  "UPSTREAM_TIMEOUT",
        +                  "BACKEND_FAILURE",
        +                  "IP_BLOCKED",
        +                  "RESOURCE_NOT_FOUND",
        +                  "RENDER_FAILURE",
        +                  "OCR_LOW_CONFIDENCE",
        +                  "MANUAL_REVIEW_REQUIRED",
        +                  "ACCEPTANCE_REQUIRED",
        +                  "INVALID_TOKEN"
        +                ],
        +                "type": "string"
        +              },
        +              "details": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "message": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "recoverable": {
        +                "type": "boolean"
        +              },
        +              "retry_after_seconds": {
        +                "anyOf": [
        +                  {
        +                    "minimum": 0,
        +                    "type": "integer"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              }
        +            },
        +            "required": [
        +              "code",
        +              "message",
        +              "recoverable"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      }
        +    },
        +    "required": [
        +      "_meta"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "_meta": {
        +        "additionalProperties": false,
        +        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        +        "properties": {
        +          "deliverables": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        +                "properties": {
        +                  "docx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "dxf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "expires_at": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  },
        +                  "pdf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "xlsx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "expires_at"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "document_id": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "issued_at": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "rate_limit_remaining": {
        +            "anyOf": [
        +              {
        +                "minimum": 0,
        +                "type": "integer"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "request_id": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "schema_version": {
        +            "const": "1.0.0",
        +            "default": "1.0.0",
        +            "type": "string"
        +          },
        +          "scope_boundary": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        +                "properties": {
        +                  "not_in_scope": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "produced": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "recommended_companions": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "type": "string"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "produced",
        +                  "not_in_scope"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tier": {
        +            "enum": [
        +              "free",
        +              "paid"
        +            ],
        +            "type": "string"
        +          },
        +          "tier_upgrade": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        +                "properties": {
        +                  "available_tiers": {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        +                      "properties": {
        +                        "billing": {
        +                          "enum": [
        +                            "one_off",
        +                            "monthly",
        +                            "annual"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "currency": {
        +                          "enum": [
        +                            "GBP",
        +                            "SGD",
        +                            "EUR",
        +                            "USD",
        +                            "CAD",
        +                            "AUD",
        +                            "NZD",
        +                            "MYR"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "display_name": {
        +                          "type": "string"
        +                        },
        +                        "price_local": {
        +                          "type": "number"
        +                        },
        +                        "tier_slug": {
        +                          "enum": [
        +                            "7_day_pass",
        +                            "solo",
        +                            "studio",
        +                            "practice"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "unlock_summary": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "tier_slug",
        +                        "display_name",
        +                        "price_local",
        +                        "currency",
        +                        "billing",
        +                        "unlock_summary"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "current_tier": {
        +                    "const": "free",
        +                    "default": "free",
        +                    "type": "string"
        +                  },
        +                  "pass_credit": {
        +                    "anyOf": [
        +                      {
        +                        "additionalProperties": false,
        +                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        +                        "properties": {
        +                          "amount_local": {
        +                            "type": "number"
        +                          },
        +                          "applies_to": {
        +                            "const": "solo_first_month",
        +                            "default": "solo_first_month",
        +                            "type": "string"
        +                          },
        +                          "currency": {
        +                            "type": "string"
        +                          },
        +                          "redeemable_until": {
        +                            "type": "string"
        +                          }
        +                        },
        +                        "required": [
        +                          "amount_local",
        +                          "currency",
        +                          "redeemable_until"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "pricing_url": {
        +                    "default": "https://civilquants.com/pricing",
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "available_tiers"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tos_url": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "upgrade_hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "warranty_disclaimer": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          }
        +        },
        +        "required": [
        +          "request_id",
        +          "issued_at",
        +          "tier"
        +        ],
        +        "type": "object"
        +      },
        +      "data": {
        +        "default": null,
        +        "title": "Data"
        +      },
        +      "error": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        +            "properties": {
        +              "code": {
        +                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        +                "enum": [
        +                  "RATE_LIMIT_EXCEEDED",
        +                  "TIER_INSUFFICIENT",
        +                  "INVALID_INPUT",
        +                  "SCHEMA_VERSION_MISMATCH",
        +                  "SCHEMA_INVARIANT_VIOLATION",
        +                  "UPSTREAM_TIMEOUT",
        +                  "BACKEND_FAILURE",
        +                  "IP_BLOCKED",
        +                  "RESOURCE_NOT_FOUND",
        +                  "RENDER_FAILURE",
        +                  "OCR_LOW_CONFIDENCE",
        +                  "MANUAL_REVIEW_REQUIRED",
        +                  "ACCEPTANCE_REQUIRED",
        +                  "INVALID_TOKEN"
        +                ],
        +                "type": "string"
        +              },
        +              "details": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "message": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "recoverable": {
        +                "type": "boolean"
        +              },
        +              "retry_after_seconds": {
        +                "anyOf": [
        +                  {
        +                    "minimum": 0,
        +                    "type": "integer"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              }
        +            },
        +            "required": [
        +              "code",
        +              "message",
        +              "recoverable"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      }
        +    },
        +    "required": [
        +      "_meta"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedcompute_soakaway3 fields changed
      • addedInput schema / properties / deliverables
        Added value: +{
        +  "anyOf": [
        +    {
        +      "items": {
        +        "const": "xlsx",
        +        "type": "string"
        +      },
        +      "type": "array"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null
        +}
      • addedInput schema / properties / output_mode
        Added value: +{
        +  "default": "full_json",
        +  "enum": [
        +    "summary",
        +    "boq",
        +    "boq_with_backup",
        +    "full_json"
        +  ],
        +  "type": "string"
        +}
      • changedOutput schema / properties / result / anyOf
        Previous value: -[
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "_meta": {
        -        "additionalProperties": false,
        -        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        -        "properties": {
        -          "deliverables": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        -                "properties": {
        -                  "docx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "dxf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "expires_at": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  },
        -                  "pdf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "xlsx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "expires_at"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "document_id": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "issued_at": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "rate_limit_remaining": {
        -            "anyOf": [
        -              {
        -                "minimum": 0,
        -                "type": "integer"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "request_id": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "schema_version": {
        -            "const": "1.0.0",
        -            "default": "1.0.0",
        -            "type": "string"
        -          },
        -          "scope_boundary": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        -                "properties": {
        -                  "not_in_scope": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "produced": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "recommended_companions": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "type": "string"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "produced",
        -                  "not_in_scope"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tier": {
        -            "enum": [
        -              "free",
        -              "paid"
        -            ],
        -            "type": "string"
        -          },
        -          "tier_upgrade": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        -                "properties": {
        -                  "available_tiers": {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        -                      "properties": {
        -                        "billing": {
        -                          "enum": [
        -                            "one_off",
        -                            "monthly",
        -                            "annual"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "currency": {
        -                          "enum": [
        -                            "GBP",
        -                            "SGD",
        -                            "EUR",
        -                            "USD",
        -                            "CAD",
        -                            "AUD",
        -                            "NZD",
        -                            "MYR"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "display_name": {
        -                          "type": "string"
        -                        },
        -                        "price_local": {
        -                          "type": "number"
        -                        },
        -                        "tier_slug": {
        -                          "enum": [
        -                            "7_day_pass",
        -                            "solo",
        -                            "studio",
        -                            "practice"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "unlock_summary": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "tier_slug",
        -                        "display_name",
        -                        "price_local",
        -                        "currency",
        -                        "billing",
        -                        "unlock_summary"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "current_tier": {
        -                    "const": "free",
        -                    "default": "free",
        -                    "type": "string"
        -                  },
        -                  "pass_credit": {
        -                    "anyOf": [
        -                      {
        -                        "additionalProperties": false,
        -                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        -                        "properties": {
        -                          "amount_local": {
        -                            "type": "number"
        -                          },
        -                          "applies_to": {
        -                            "const": "solo_first_month",
        -                            "default": "solo_first_month",
        -                            "type": "string"
        -                          },
        -                          "currency": {
        -                            "type": "string"
        -                          },
        -                          "redeemable_until": {
        -                            "type": "string"
        -                          }
        -                        },
        -                        "required": [
        -                          "amount_local",
        -                          "currency",
        -                          "redeemable_until"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "pricing_url": {
        -                    "default": "https://civilquants.com/pricing",
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "available_tiers"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tos_url": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "upgrade_hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "warranty_disclaimer": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          }
        -        },
        -        "required": [
        -          "request_id",
        -          "issued_at",
        -          "tier"
        -        ],
        -        "type": "object"
        -      },
        -      "data": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Schema § 1.1 — the typed payload returned inside `MCPResponse[ComputeResult]`.\n\nFree-tier responses MUST omit `drawings` and `audit_trail` (the bridge\nenforces this); paid-tier responses populate both. `text_summary` is\nbounded to 2000 chars — keeps the LLM-facing summary token-cheap and\nforces longer narrative into BoQ row descriptions where it belongs.\n`warnings` is the non-fatal geometry advisory list (both tiers).",
        -            "properties": {
        -              "assembly_slug": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "audit_trail": {
        -                "anyOf": [
        -                  {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.7 — paid-tier audit-trail entry.\n\nOne entry per BoQ row; `boq_row_index` ties to the row position in\n`ComputeResult.boq_rows`. `derivation` is the human-readable formula\nwalk-through; `formula` is the optional formal expression.",
        -                      "properties": {
        -                        "boq_row_index": {
        -                          "minimum": 0,
        -                          "type": "integer"
        -                        },
        -                        "derivation": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "formula": {
        -                          "anyOf": [
        -                            {
        -                              "type": "string"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ],
        -                          "default": null
        -                        },
        -                        "id": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "parameters_referenced": {
        -                          "items": {
        -                            "type": "string"
        -                          },
        -                          "type": "array"
        -                        }
        -                      },
        -                      "required": [
        -                        "id",
        -                        "boq_row_index",
        -                        "derivation"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "boq_rows": {
        -                "items": {
        -                  "additionalProperties": false,
        -                  "description": "Schema § 1.3 — a single bill row in the requested standard's format.\n\n`description` is the non-verbatim functional description per spec § 13.9 /\n§ 15 invariant — NEVER reproduces a standard's verbatim clause text.\n`rate` / `amount` ship null because rates are commodity data the customer\nowns; the engine's job is the measurement, not the pricing.",
        -                  "properties": {
        -                    "amount": {
        -                      "anyOf": [
        -                        {
        -                          "type": "number"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "attribution": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "audit_id": {
        -                      "anyOf": [
        -                        {
        -                          "type": "string"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "description": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "quantity": {
        -                      "minimum": 0,
        -                      "type": "number"
        -                    },
        -                    "rate": {
        -                      "anyOf": [
        -                        {
        -                          "type": "number"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "unit": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "work_section": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    }
        -                  },
        -                  "required": [
        -                    "work_section",
        -                    "description",
        -                    "quantity",
        -                    "unit",
        -                    "attribution"
        -                  ],
        -                  "type": "object"
        -                },
        -                "type": "array"
        -              },
        -              "drawings": {
        -                "anyOf": [
        -                  {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.6 — paid-tier drawing artefact pointer.\n\n`url` is an R2-signed URL; expiry is carried in `_meta.deliverables.expires_at`\non the envelope (not duplicated here). `layers` is DXF-only; PDF/SVG\ncallers omit it.",
        -                      "properties": {
        -                        "drawing_type": {
        -                          "enum": [
        -                            "section",
        -                            "plan",
        -                            "elevation",
        -                            "isometric",
        -                            "detail"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "format": {
        -                          "enum": [
        -                            "DXF",
        -                            "PDF",
        -                            "SVG"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "layers": {
        -                          "anyOf": [
        -                            {
        -                              "items": {
        -                                "type": "string"
        -                              },
        -                              "type": "array"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ],
        -                          "default": null
        -                        },
        -                        "scale": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "sheet_size": {
        -                          "enum": [
        -                            "A1",
        -                            "A2",
        -                            "A3",
        -                            "A4"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "url": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "drawing_type",
        -                        "format",
        -                        "url",
        -                        "sheet_size",
        -                        "scale"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "parameters_used": {
        -                "additionalProperties": false,
        -                "description": "Schema § 1.2 — the parameter snapshot the engine actually used.\n\nSplits user-supplied values from engine defaults so customers can see\nwhich numbers came from them and which the engine filled in. Every\ndefaulted parameter SHOULD have a corresponding entry in `assumptions`\n— the bridge layer enforces this when wrapping engine output.",
        -                "properties": {
        -                  "assumptions": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "engine_defaults": {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  "resolved_from_description": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "additionalProperties": false,
        -                          "description": "Schema § 1.2 — a parameter resolved by the forgiving-input layer.\n\nPopulated by the Track B-Forgiving Haiku-4.5 resolution pass; until that\nlayer lands, instances are constructed only by tests. `source` distinguishes\nthe resolution path so customers can audit which fields were inferred.",
        -                          "properties": {
        -                            "confidence": {
        -                              "anyOf": [
        -                                {
        -                                  "enum": [
        -                                    "high",
        -                                    "medium",
        -                                    "low"
        -                                  ],
        -                                  "type": "string"
        -                                },
        -                                {
        -                                  "type": "null"
        -                                }
        -                              ],
        -                              "default": null
        -                            },
        -                            "field_name": {
        -                              "minLength": 1,
        -                              "type": "string"
        -                            },
        -                            "resolved_value": {},
        -                            "source": {
        -                              "enum": [
        -                                "description_field",
        -                                "haiku_resolution",
        -                                "engine_default"
        -                              ],
        -                              "type": "string"
        -                            }
        -                          },
        -                          "required": [
        -                            "field_name",
        -                            "resolved_value",
        -                            "source"
        -                          ],
        -                          "type": "object"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "user_supplied": {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  }
        -                },
        -                "type": "object"
        -              },
        -              "standard": {
        -                "enum": [
        -                  "CESMM4",
        -                  "NRM2",
        -                  "SMM7",
        -                  "MMHW"
        -                ],
        -                "type": "string"
        -              },
        -              "text_summary": {
        -                "maxLength": 2000,
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "totals_summary": {
        -                "additionalProperties": false,
        -                "description": "Schema § 1.4 — totals_summary as a typed wrapper around the free-form dict.\n\nWire shape is a flat object (`{\"concrete_m3\": {...}, \"rebar_t\": {...}}`).\nWe model it as `RootModel`-equivalent via `model_config(extra=\"allow\")`\n+ a single `__root__`-style `entries` dict. Pydantic v2 recommends\n`RootModel` for free-form roots; using a wrapper class keeps the import\nsurface uniform with the rest of this module.",
        -                "properties": {
        -                  "entries": {
        -                    "additionalProperties": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.4 — single material/work-class total entry.",
        -                      "properties": {
        -                        "quantity": {
        -                          "minimum": 0,
        -                          "type": "number"
        -                        },
        -                        "unit": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "quantity",
        -                        "unit"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "object"
        -                  }
        -                },
        -                "type": "object"
        -              },
        -              "warnings": {
        -                "items": {
        -                  "additionalProperties": false,
        -                  "description": "Schema § 1.8 — a non-fatal geometry advisory (56th-fire T2).\n\nThe wire projection of the engine's `core.GeometryWarning`. Advisory only:\na warning NEVER changes a measured quantity — it flags geometry that is\nvalid but likely a mistake (e.g. a stale dependent-height default). Present\non BOTH tiers — a correctness/safety signal, not a paid feature.",
        -                  "properties": {
        -                    "affected_params": {
        -                      "items": {
        -                        "type": "string"
        -                      },
        -                      "type": "array"
        -                    },
        -                    "code": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "detail": {
        -                      "additionalProperties": {
        -                        "type": "number"
        -                      },
        -                      "type": "object"
        -                    },
        -                    "message": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "severity": {
        -                      "enum": [
        -                        "info",
        -                        "advisory",
        -                        "caution"
        -                      ],
        -                      "type": "string"
        -                    }
        -                  },
        -                  "required": [
        -                    "code",
        -                    "severity",
        -                    "message"
        -                  ],
        -                  "type": "object"
        -                },
        -                "type": "array"
        -              }
        -            },
        -            "required": [
        -              "assembly_slug",
        -              "standard",
        -              "parameters_used",
        -              "boq_rows",
        -              "totals_summary",
        -              "text_summary"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      },
        -      "error": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        -            "properties": {
        -              "code": {
        -                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        -                "enum": [
        -                  "RATE_LIMIT_EXCEEDED",
        -                  "TIER_INSUFFICIENT",
        -                  "INVALID_INPUT",
        -                  "SCHEMA_VERSION_MISMATCH",
        -                  "SCHEMA_INVARIANT_VIOLATION",
        -                  "UPSTREAM_TIMEOUT",
        -                  "BACKEND_FAILURE",
        -                  "IP_BLOCKED",
        -                  "RESOURCE_NOT_FOUND",
        -                  "RENDER_FAILURE",
        -                  "OCR_LOW_CONFIDENCE",
        -                  "MANUAL_REVIEW_REQUIRED",
        -                  "ACCEPTANCE_REQUIRED",
        -                  "INVALID_TOKEN"
        -                ],
        -                "type": "string"
        -              },
        -              "details": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "message": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "recoverable": {
        -                "type": "boolean"
        -              },
        -              "retry_after_seconds": {
        -                "anyOf": [
        -                  {
        -                    "minimum": 0,
        -                    "type": "integer"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              }
        -            },
        -            "required": [
        -              "code",
        -              "message",
        -              "recoverable"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      }
        -    },
        -    "required": [
        -      "_meta"
        -    ],
        -    "type": "object"
        -  },
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "_meta": {
        -        "additionalProperties": false,
        -        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        -        "properties": {
        -          "deliverables": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        -                "properties": {
        -                  "docx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "dxf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "expires_at": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  },
        -                  "pdf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "xlsx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "expires_at"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "document_id": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "issued_at": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "rate_limit_remaining": {
        -            "anyOf": [
        -              {
        -                "minimum": 0,
        -                "type": "integer"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "request_id": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "schema_version": {
        -            "const": "1.0.0",
        -            "default": "1.0.0",
        -            "type": "string"
        -          },
        -          "scope_boundary": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        -                "properties": {
        -                  "not_in_scope": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "produced": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "recommended_companions": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "type": "string"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "produced",
        -                  "not_in_scope"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tier": {
        -            "enum": [
        -              "free",
        -              "paid"
        -            ],
        -            "type": "string"
        -          },
        -          "tier_upgrade": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        -                "properties": {
        -                  "available_tiers": {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        -                      "properties": {
        -                        "billing": {
        -                          "enum": [
        -                            "one_off",
        -                            "monthly",
        -                            "annual"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "currency": {
        -                          "enum": [
        -                            "GBP",
        -                            "SGD",
        -                            "EUR",
        -                            "USD",
        -                            "CAD",
        -                            "AUD",
        -                            "NZD",
        -                            "MYR"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "display_name": {
        -                          "type": "string"
        -                        },
        -                        "price_local": {
        -                          "type": "number"
        -                        },
        -                        "tier_slug": {
        -                          "enum": [
        -                            "7_day_pass",
        -                            "solo",
        -                            "studio",
        -                            "practice"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "unlock_summary": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "tier_slug",
        -                        "display_name",
        -                        "price_local",
        -                        "currency",
        -                        "billing",
        -                        "unlock_summary"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "current_tier": {
        -                    "const": "free",
        -                    "default": "free",
        -                    "type": "string"
        -                  },
        -                  "pass_credit": {
        -                    "anyOf": [
        -                      {
        -                        "additionalProperties": false,
        -                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        -                        "properties": {
        -                          "amount_local": {
        -                            "type": "number"
        -                          },
        -                          "applies_to": {
        -                            "const": "solo_first_month",
        -                            "default": "solo_first_month",
        -                            "type": "string"
        -                          },
        -                          "currency": {
        -                            "type": "string"
        -                          },
        -                          "redeemable_until": {
        -                            "type": "string"
        -                          }
        -                        },
        -                        "required": [
        -                          "amount_local",
        -                          "currency",
        -                          "redeemable_until"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "pricing_url": {
        -                    "default": "https://civilquants.com/pricing",
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "available_tiers"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tos_url": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "upgrade_hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "warranty_disclaimer": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          }
        -        },
        -        "required": [
        -          "request_id",
        -          "issued_at",
        -          "tier"
        -        ],
        -        "type": "object"
        -      },
        -      "data": {
        -        "default": null,
        -        "title": "Data"
        -      },
        -      "error": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        -            "properties": {
        -              "code": {
        -                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        -                "enum": [
        -                  "RATE_LIMIT_EXCEEDED",
        -                  "TIER_INSUFFICIENT",
        -                  "INVALID_INPUT",
        -                  "SCHEMA_VERSION_MISMATCH",
        -                  "SCHEMA_INVARIANT_VIOLATION",
        -                  "UPSTREAM_TIMEOUT",
        -                  "BACKEND_FAILURE",
        -                  "IP_BLOCKED",
        -                  "RESOURCE_NOT_FOUND",
        -                  "RENDER_FAILURE",
        -                  "OCR_LOW_CONFIDENCE",
        -                  "MANUAL_REVIEW_REQUIRED",
        -                  "ACCEPTANCE_REQUIRED",
        -                  "INVALID_TOKEN"
        -                ],
        -                "type": "string"
        -              },
        -              "details": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "message": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "recoverable": {
        -                "type": "boolean"
        -              },
        -              "retry_after_seconds": {
        -                "anyOf": [
        -                  {
        -                    "minimum": 0,
        -                    "type": "integer"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              }
        -            },
        -            "required": [
        -              "code",
        -              "message",
        -              "recoverable"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      }
        -    },
        -    "required": [
        -      "_meta"
        -    ],
        -    "type": "object"
        -  }
        -]New value: +[
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "_meta": {
        +        "additionalProperties": false,
        +        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        +        "properties": {
        +          "deliverables": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        +                "properties": {
        +                  "docx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "dxf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "expires_at": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  },
        +                  "pdf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "xlsx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "expires_at"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "document_id": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "issued_at": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "rate_limit_remaining": {
        +            "anyOf": [
        +              {
        +                "minimum": 0,
        +                "type": "integer"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "request_id": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "schema_version": {
        +            "const": "1.0.0",
        +            "default": "1.0.0",
        +            "type": "string"
        +          },
        +          "scope_boundary": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        +                "properties": {
        +                  "not_in_scope": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "produced": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "recommended_companions": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "type": "string"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "produced",
        +                  "not_in_scope"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tier": {
        +            "enum": [
        +              "free",
        +              "paid"
        +            ],
        +            "type": "string"
        +          },
        +          "tier_upgrade": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        +                "properties": {
        +                  "available_tiers": {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        +                      "properties": {
        +                        "billing": {
        +                          "enum": [
        +                            "one_off",
        +                            "monthly",
        +                            "annual"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "currency": {
        +                          "enum": [
        +                            "GBP",
        +                            "SGD",
        +                            "EUR",
        +                            "USD",
        +                            "CAD",
        +                            "AUD",
        +                            "NZD",
        +                            "MYR"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "display_name": {
        +                          "type": "string"
        +                        },
        +                        "price_local": {
        +                          "type": "number"
        +                        },
        +                        "tier_slug": {
        +                          "enum": [
        +                            "7_day_pass",
        +                            "solo",
        +                            "studio",
        +                            "practice"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "unlock_summary": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "tier_slug",
        +                        "display_name",
        +                        "price_local",
        +                        "currency",
        +                        "billing",
        +                        "unlock_summary"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "current_tier": {
        +                    "const": "free",
        +                    "default": "free",
        +                    "type": "string"
        +                  },
        +                  "pass_credit": {
        +                    "anyOf": [
        +                      {
        +                        "additionalProperties": false,
        +                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        +                        "properties": {
        +                          "amount_local": {
        +                            "type": "number"
        +                          },
        +                          "applies_to": {
        +                            "const": "solo_first_month",
        +                            "default": "solo_first_month",
        +                            "type": "string"
        +                          },
        +                          "currency": {
        +                            "type": "string"
        +                          },
        +                          "redeemable_until": {
        +                            "type": "string"
        +                          }
        +                        },
        +                        "required": [
        +                          "amount_local",
        +                          "currency",
        +                          "redeemable_until"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "pricing_url": {
        +                    "default": "https://civilquants.com/pricing",
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "available_tiers"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tos_url": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "upgrade_hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "warranty_disclaimer": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          }
        +        },
        +        "required": [
        +          "request_id",
        +          "issued_at",
        +          "tier"
        +        ],
        +        "type": "object"
        +      },
        +      "data": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Schema § 1.1 — the typed payload returned inside `MCPResponse[ComputeResult]`.\n\nFree-tier responses omit `drawings` (the downloadable CAD artefact\npointers — the paid differentiator); the bridge enforces this. The\n`audit_trail` and the inline `drawing` preview are present on BOTH tiers\n(V1 ALIGN / 60th-fire D + C). `text_summary` is bounded to 2000 chars —\nkeeps the LLM-facing summary token-cheap and forces longer narrative into\nBoQ row descriptions where it belongs. `warnings` is the non-fatal\ngeometry advisory list (both tiers).",
        +            "properties": {
        +              "assembly_slug": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "audit_trail": {
        +                "anyOf": [
        +                  {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.7 — paid-tier audit-trail entry.\n\nOne entry per BoQ row; `boq_row_index` ties to the row position in\n`ComputeResult.boq_rows`. `derivation` is the human-readable formula\nwalk-through; `formula` is the optional formal expression.",
        +                      "properties": {
        +                        "boq_row_index": {
        +                          "minimum": 0,
        +                          "type": "integer"
        +                        },
        +                        "derivation": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "formula": {
        +                          "anyOf": [
        +                            {
        +                              "type": "string"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ],
        +                          "default": null
        +                        },
        +                        "id": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "parameters_referenced": {
        +                          "items": {
        +                            "type": "string"
        +                          },
        +                          "type": "array"
        +                        }
        +                      },
        +                      "required": [
        +                        "id",
        +                        "boq_row_index",
        +                        "derivation"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "boq_rows": {
        +                "items": {
        +                  "additionalProperties": false,
        +                  "description": "Schema § 1.3 — a single bill row in the requested standard's format.\n\n`description` is the non-verbatim functional description per spec § 13.9 /\n§ 15 invariant — NEVER reproduces a standard's verbatim clause text.\n`rate` / `amount` ship null because rates are commodity data the customer\nowns; the engine's job is the measurement, not the pricing.",
        +                  "properties": {
        +                    "amount": {
        +                      "anyOf": [
        +                        {
        +                          "type": "number"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "attribution": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "audit_id": {
        +                      "anyOf": [
        +                        {
        +                          "type": "string"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "description": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "quantity": {
        +                      "minimum": 0,
        +                      "type": "number"
        +                    },
        +                    "rate": {
        +                      "anyOf": [
        +                        {
        +                          "type": "number"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "unit": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "work_section": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    }
        +                  },
        +                  "required": [
        +                    "work_section",
        +                    "description",
        +                    "quantity",
        +                    "unit",
        +                    "attribution"
        +                  ],
        +                  "type": "object"
        +                },
        +                "type": "array"
        +              },
        +              "drawing": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": false,
        +                    "description": "Schema § 1.6a — inline server-rendered SVG preview of the geometry.\n\nThe MCP mirror of the web ``/compute`` response's ``drawing`` field\n(``api.schemas.compute.DrawingRef``): the same on-screen dimensioned\ndrawing both tiers see in the workspace, surfaced on the MCP compute\nresponse so a chat client can render it inline (60th-fire item C). This\nis the on-screen preview — present on BOTH tiers per the free/paid\nboundary; the downloadable CAD artefacts (DXF / dimensioned PDF) remain\nthe paid differentiator via the export tools.\n\nDefined here rather than importing ``DrawingRef`` because the web\n``schemas`` package imports back into this module (``schemas.render``),\nso reusing it would create an import cycle — the MCP wire contract keeps\nits own copy, the same pattern as ``BoQRow`` / ``DrawingReference``.",
        +                    "properties": {
        +                      "entity_count": {
        +                        "minimum": 0,
        +                        "type": "integer"
        +                      },
        +                      "svg_b64": {
        +                        "minLength": 1,
        +                        "type": "string"
        +                      },
        +                      "unit_of_drawing": {
        +                        "const": "m",
        +                        "default": "m",
        +                        "type": "string"
        +                      },
        +                      "viewbox_height": {
        +                        "exclusiveMinimum": 0,
        +                        "type": "number"
        +                      },
        +                      "viewbox_width": {
        +                        "exclusiveMinimum": 0,
        +                        "type": "number"
        +                      },
        +                      "viewbox_x": {
        +                        "type": "number"
        +                      },
        +                      "viewbox_y": {
        +                        "type": "number"
        +                      }
        +                    },
        +                    "required": [
        +                      "svg_b64",
        +                      "viewbox_x",
        +                      "viewbox_y",
        +                      "viewbox_width",
        +                      "viewbox_height",
        +                      "entity_count"
        +                    ],
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "drawings": {
        +                "anyOf": [
        +                  {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.6 — paid-tier drawing artefact pointer.\n\n`url` is an R2-signed URL; expiry is carried in `_meta.deliverables.expires_at`\non the envelope (not duplicated here). `layers` is DXF-only; PDF/SVG\ncallers omit it.",
        +                      "properties": {
        +                        "drawing_type": {
        +                          "enum": [
        +                            "section",
        +                            "plan",
        +                            "elevation",
        +                            "isometric",
        +                            "detail"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "format": {
        +                          "enum": [
        +                            "DXF",
        +                            "PDF",
        +                            "SVG"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "layers": {
        +                          "anyOf": [
        +                            {
        +                              "items": {
        +                                "type": "string"
        +                              },
        +                              "type": "array"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ],
        +                          "default": null
        +                        },
        +                        "scale": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "sheet_size": {
        +                          "enum": [
        +                            "A1",
        +                            "A2",
        +                            "A3",
        +                            "A4"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "url": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "drawing_type",
        +                        "format",
        +                        "url",
        +                        "sheet_size",
        +                        "scale"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "parameters_used": {
        +                "additionalProperties": false,
        +                "description": "Schema § 1.2 — the parameter snapshot the engine actually used.\n\nSplits user-supplied values from engine defaults so customers can see\nwhich numbers came from them and which the engine filled in. Every\ndefaulted parameter SHOULD have a corresponding entry in `assumptions`\n— the bridge layer enforces this when wrapping engine output.",
        +                "properties": {
        +                  "assumptions": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "engine_defaults": {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  "resolved_from_description": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "additionalProperties": false,
        +                          "description": "Schema § 1.2 — a parameter resolved by the forgiving-input layer.\n\nPopulated by the Track B-Forgiving Haiku-4.5 resolution pass; until that\nlayer lands, instances are constructed only by tests. `source` distinguishes\nthe resolution path so customers can audit which fields were inferred.",
        +                          "properties": {
        +                            "confidence": {
        +                              "anyOf": [
        +                                {
        +                                  "enum": [
        +                                    "high",
        +                                    "medium",
        +                                    "low"
        +                                  ],
        +                                  "type": "string"
        +                                },
        +                                {
        +                                  "type": "null"
        +                                }
        +                              ],
        +                              "default": null
        +                            },
        +                            "field_name": {
        +                              "minLength": 1,
        +                              "type": "string"
        +                            },
        +                            "resolved_value": {},
        +                            "source": {
        +                              "enum": [
        +                                "description_field",
        +                                "haiku_resolution",
        +                                "engine_default"
        +                              ],
        +                              "type": "string"
        +                            }
        +                          },
        +                          "required": [
        +                            "field_name",
        +                            "resolved_value",
        +                            "source"
        +                          ],
        +                          "type": "object"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "user_supplied": {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  }
        +                },
        +                "type": "object"
        +              },
        +              "standard": {
        +                "enum": [
        +                  "CESMM4",
        +                  "NRM2",
        +                  "SMM7",
        +                  "MMHW"
        +                ],
        +                "type": "string"
        +              },
        +              "text_summary": {
        +                "maxLength": 2000,
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "totals_summary": {
        +                "additionalProperties": false,
        +                "description": "Schema § 1.4 — totals_summary as a typed wrapper around the free-form dict.\n\nWire shape is a flat object (`{\"concrete_m3\": {...}, \"rebar_t\": {...}}`).\nWe model it as `RootModel`-equivalent via `model_config(extra=\"allow\")`\n+ a single `__root__`-style `entries` dict. Pydantic v2 recommends\n`RootModel` for free-form roots; using a wrapper class keeps the import\nsurface uniform with the rest of this module.",
        +                "properties": {
        +                  "entries": {
        +                    "additionalProperties": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.4 — single material/work-class total entry.",
        +                      "properties": {
        +                        "quantity": {
        +                          "minimum": 0,
        +                          "type": "number"
        +                        },
        +                        "unit": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "quantity",
        +                        "unit"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "object"
        +                  }
        +                },
        +                "type": "object"
        +              },
        +              "warnings": {
        +                "items": {
        +                  "additionalProperties": false,
        +                  "description": "Schema § 1.8 — a non-fatal geometry advisory (56th-fire T2).\n\nThe wire projection of the engine's `core.GeometryWarning`. Advisory only:\na warning NEVER changes a measured quantity — it flags geometry that is\nvalid but likely a mistake (e.g. a stale dependent-height default). Present\non BOTH tiers — a correctness/safety signal, not a paid feature.",
        +                  "properties": {
        +                    "affected_params": {
        +                      "items": {
        +                        "type": "string"
        +                      },
        +                      "type": "array"
        +                    },
        +                    "code": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "detail": {
        +                      "additionalProperties": {
        +                        "type": "number"
        +                      },
        +                      "type": "object"
        +                    },
        +                    "message": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "severity": {
        +                      "enum": [
        +                        "info",
        +                        "advisory",
        +                        "caution"
        +                      ],
        +                      "type": "string"
        +                    }
        +                  },
        +                  "required": [
        +                    "code",
        +                    "severity",
        +                    "message"
        +                  ],
        +                  "type": "object"
        +                },
        +                "type": "array"
        +              }
        +            },
        +            "required": [
        +              "assembly_slug",
        +              "standard",
        +              "parameters_used",
        +              "boq_rows",
        +              "totals_summary",
        +              "text_summary"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      },
        +      "error": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        +            "properties": {
        +              "code": {
        +                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        +                "enum": [
        +                  "RATE_LIMIT_EXCEEDED",
        +                  "TIER_INSUFFICIENT",
        +                  "INVALID_INPUT",
        +                  "SCHEMA_VERSION_MISMATCH",
        +                  "SCHEMA_INVARIANT_VIOLATION",
        +                  "UPSTREAM_TIMEOUT",
        +                  "BACKEND_FAILURE",
        +                  "IP_BLOCKED",
        +                  "RESOURCE_NOT_FOUND",
        +                  "RENDER_FAILURE",
        +                  "OCR_LOW_CONFIDENCE",
        +                  "MANUAL_REVIEW_REQUIRED",
        +                  "ACCEPTANCE_REQUIRED",
        +                  "INVALID_TOKEN"
        +                ],
        +                "type": "string"
        +              },
        +              "details": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "message": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "recoverable": {
        +                "type": "boolean"
        +              },
        +              "retry_after_seconds": {
        +                "anyOf": [
        +                  {
        +                    "minimum": 0,
        +                    "type": "integer"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              }
        +            },
        +            "required": [
        +              "code",
        +              "message",
        +              "recoverable"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      }
        +    },
        +    "required": [
        +      "_meta"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "_meta": {
        +        "additionalProperties": false,
        +        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        +        "properties": {
        +          "deliverables": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        +                "properties": {
        +                  "docx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "dxf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "expires_at": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  },
        +                  "pdf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "xlsx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "expires_at"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "document_id": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "issued_at": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "rate_limit_remaining": {
        +            "anyOf": [
        +              {
        +                "minimum": 0,
        +                "type": "integer"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "request_id": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "schema_version": {
        +            "const": "1.0.0",
        +            "default": "1.0.0",
        +            "type": "string"
        +          },
        +          "scope_boundary": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        +                "properties": {
        +                  "not_in_scope": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "produced": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "recommended_companions": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "type": "string"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "produced",
        +                  "not_in_scope"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tier": {
        +            "enum": [
        +              "free",
        +              "paid"
        +            ],
        +            "type": "string"
        +          },
        +          "tier_upgrade": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        +                "properties": {
        +                  "available_tiers": {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        +                      "properties": {
        +                        "billing": {
        +                          "enum": [
        +                            "one_off",
        +                            "monthly",
        +                            "annual"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "currency": {
        +                          "enum": [
        +                            "GBP",
        +                            "SGD",
        +                            "EUR",
        +                            "USD",
        +                            "CAD",
        +                            "AUD",
        +                            "NZD",
        +                            "MYR"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "display_name": {
        +                          "type": "string"
        +                        },
        +                        "price_local": {
        +                          "type": "number"
        +                        },
        +                        "tier_slug": {
        +                          "enum": [
        +                            "7_day_pass",
        +                            "solo",
        +                            "studio",
        +                            "practice"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "unlock_summary": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "tier_slug",
        +                        "display_name",
        +                        "price_local",
        +                        "currency",
        +                        "billing",
        +                        "unlock_summary"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "current_tier": {
        +                    "const": "free",
        +                    "default": "free",
        +                    "type": "string"
        +                  },
        +                  "pass_credit": {
        +                    "anyOf": [
        +                      {
        +                        "additionalProperties": false,
        +                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        +                        "properties": {
        +                          "amount_local": {
        +                            "type": "number"
        +                          },
        +                          "applies_to": {
        +                            "const": "solo_first_month",
        +                            "default": "solo_first_month",
        +                            "type": "string"
        +                          },
        +                          "currency": {
        +                            "type": "string"
        +                          },
        +                          "redeemable_until": {
        +                            "type": "string"
        +                          }
        +                        },
        +                        "required": [
        +                          "amount_local",
        +                          "currency",
        +                          "redeemable_until"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "pricing_url": {
        +                    "default": "https://civilquants.com/pricing",
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "available_tiers"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tos_url": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "upgrade_hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "warranty_disclaimer": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          }
        +        },
        +        "required": [
        +          "request_id",
        +          "issued_at",
        +          "tier"
        +        ],
        +        "type": "object"
        +      },
        +      "data": {
        +        "default": null,
        +        "title": "Data"
        +      },
        +      "error": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        +            "properties": {
        +              "code": {
        +                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        +                "enum": [
        +                  "RATE_LIMIT_EXCEEDED",
        +                  "TIER_INSUFFICIENT",
        +                  "INVALID_INPUT",
        +                  "SCHEMA_VERSION_MISMATCH",
        +                  "SCHEMA_INVARIANT_VIOLATION",
        +                  "UPSTREAM_TIMEOUT",
        +                  "BACKEND_FAILURE",
        +                  "IP_BLOCKED",
        +                  "RESOURCE_NOT_FOUND",
        +                  "RENDER_FAILURE",
        +                  "OCR_LOW_CONFIDENCE",
        +                  "MANUAL_REVIEW_REQUIRED",
        +                  "ACCEPTANCE_REQUIRED",
        +                  "INVALID_TOKEN"
        +                ],
        +                "type": "string"
        +              },
        +              "details": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "message": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "recoverable": {
        +                "type": "boolean"
        +              },
        +              "retry_after_seconds": {
        +                "anyOf": [
        +                  {
        +                    "minimum": 0,
        +                    "type": "integer"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              }
        +            },
        +            "required": [
        +              "code",
        +              "message",
        +              "recoverable"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      }
        +    },
        +    "required": [
        +      "_meta"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedcompute_soil_nailed_slope3 fields changed
      • addedInput schema / properties / deliverables
        Added value: +{
        +  "anyOf": [
        +    {
        +      "items": {
        +        "const": "xlsx",
        +        "type": "string"
        +      },
        +      "type": "array"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null
        +}
      • addedInput schema / properties / output_mode
        Added value: +{
        +  "default": "full_json",
        +  "enum": [
        +    "summary",
        +    "boq",
        +    "boq_with_backup",
        +    "full_json"
        +  ],
        +  "type": "string"
        +}
      • changedOutput schema / properties / result / anyOf
        Previous value: -[
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "_meta": {
        -        "additionalProperties": false,
        -        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        -        "properties": {
        -          "deliverables": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        -                "properties": {
        -                  "docx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "dxf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "expires_at": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  },
        -                  "pdf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "xlsx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "expires_at"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "document_id": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "issued_at": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "rate_limit_remaining": {
        -            "anyOf": [
        -              {
        -                "minimum": 0,
        -                "type": "integer"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "request_id": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "schema_version": {
        -            "const": "1.0.0",
        -            "default": "1.0.0",
        -            "type": "string"
        -          },
        -          "scope_boundary": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        -                "properties": {
        -                  "not_in_scope": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "produced": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "recommended_companions": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "type": "string"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "produced",
        -                  "not_in_scope"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tier": {
        -            "enum": [
        -              "free",
        -              "paid"
        -            ],
        -            "type": "string"
        -          },
        -          "tier_upgrade": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        -                "properties": {
        -                  "available_tiers": {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        -                      "properties": {
        -                        "billing": {
        -                          "enum": [
        -                            "one_off",
        -                            "monthly",
        -                            "annual"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "currency": {
        -                          "enum": [
        -                            "GBP",
        -                            "SGD",
        -                            "EUR",
        -                            "USD",
        -                            "CAD",
        -                            "AUD",
        -                            "NZD",
        -                            "MYR"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "display_name": {
        -                          "type": "string"
        -                        },
        -                        "price_local": {
        -                          "type": "number"
        -                        },
        -                        "tier_slug": {
        -                          "enum": [
        -                            "7_day_pass",
        -                            "solo",
        -                            "studio",
        -                            "practice"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "unlock_summary": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "tier_slug",
        -                        "display_name",
        -                        "price_local",
        -                        "currency",
        -                        "billing",
        -                        "unlock_summary"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "current_tier": {
        -                    "const": "free",
        -                    "default": "free",
        -                    "type": "string"
        -                  },
        -                  "pass_credit": {
        -                    "anyOf": [
        -                      {
        -                        "additionalProperties": false,
        -                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        -                        "properties": {
        -                          "amount_local": {
        -                            "type": "number"
        -                          },
        -                          "applies_to": {
        -                            "const": "solo_first_month",
        -                            "default": "solo_first_month",
        -                            "type": "string"
        -                          },
        -                          "currency": {
        -                            "type": "string"
        -                          },
        -                          "redeemable_until": {
        -                            "type": "string"
        -                          }
        -                        },
        -                        "required": [
        -                          "amount_local",
        -                          "currency",
        -                          "redeemable_until"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "pricing_url": {
        -                    "default": "https://civilquants.com/pricing",
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "available_tiers"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tos_url": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "upgrade_hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "warranty_disclaimer": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          }
        -        },
        -        "required": [
        -          "request_id",
        -          "issued_at",
        -          "tier"
        -        ],
        -        "type": "object"
        -      },
        -      "data": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Schema § 1.1 — the typed payload returned inside `MCPResponse[ComputeResult]`.\n\nFree-tier responses MUST omit `drawings` and `audit_trail` (the bridge\nenforces this); paid-tier responses populate both. `text_summary` is\nbounded to 2000 chars — keeps the LLM-facing summary token-cheap and\nforces longer narrative into BoQ row descriptions where it belongs.\n`warnings` is the non-fatal geometry advisory list (both tiers).",
        -            "properties": {
        -              "assembly_slug": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "audit_trail": {
        -                "anyOf": [
        -                  {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.7 — paid-tier audit-trail entry.\n\nOne entry per BoQ row; `boq_row_index` ties to the row position in\n`ComputeResult.boq_rows`. `derivation` is the human-readable formula\nwalk-through; `formula` is the optional formal expression.",
        -                      "properties": {
        -                        "boq_row_index": {
        -                          "minimum": 0,
        -                          "type": "integer"
        -                        },
        -                        "derivation": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "formula": {
        -                          "anyOf": [
        -                            {
        -                              "type": "string"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ],
        -                          "default": null
        -                        },
        -                        "id": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "parameters_referenced": {
        -                          "items": {
        -                            "type": "string"
        -                          },
        -                          "type": "array"
        -                        }
        -                      },
        -                      "required": [
        -                        "id",
        -                        "boq_row_index",
        -                        "derivation"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "boq_rows": {
        -                "items": {
        -                  "additionalProperties": false,
        -                  "description": "Schema § 1.3 — a single bill row in the requested standard's format.\n\n`description` is the non-verbatim functional description per spec § 13.9 /\n§ 15 invariant — NEVER reproduces a standard's verbatim clause text.\n`rate` / `amount` ship null because rates are commodity data the customer\nowns; the engine's job is the measurement, not the pricing.",
        -                  "properties": {
        -                    "amount": {
        -                      "anyOf": [
        -                        {
        -                          "type": "number"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "attribution": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "audit_id": {
        -                      "anyOf": [
        -                        {
        -                          "type": "string"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "description": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "quantity": {
        -                      "minimum": 0,
        -                      "type": "number"
        -                    },
        -                    "rate": {
        -                      "anyOf": [
        -                        {
        -                          "type": "number"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "unit": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "work_section": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    }
        -                  },
        -                  "required": [
        -                    "work_section",
        -                    "description",
        -                    "quantity",
        -                    "unit",
        -                    "attribution"
        -                  ],
        -                  "type": "object"
        -                },
        -                "type": "array"
        -              },
        -              "drawings": {
        -                "anyOf": [
        -                  {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.6 — paid-tier drawing artefact pointer.\n\n`url` is an R2-signed URL; expiry is carried in `_meta.deliverables.expires_at`\non the envelope (not duplicated here). `layers` is DXF-only; PDF/SVG\ncallers omit it.",
        -                      "properties": {
        -                        "drawing_type": {
        -                          "enum": [
        -                            "section",
        -                            "plan",
        -                            "elevation",
        -                            "isometric",
        -                            "detail"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "format": {
        -                          "enum": [
        -                            "DXF",
        -                            "PDF",
        -                            "SVG"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "layers": {
        -                          "anyOf": [
        -                            {
        -                              "items": {
        -                                "type": "string"
        -                              },
        -                              "type": "array"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ],
        -                          "default": null
        -                        },
        -                        "scale": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "sheet_size": {
        -                          "enum": [
        -                            "A1",
        -                            "A2",
        -                            "A3",
        -                            "A4"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "url": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "drawing_type",
        -                        "format",
        -                        "url",
        -                        "sheet_size",
        -                        "scale"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "parameters_used": {
        -                "additionalProperties": false,
        -                "description": "Schema § 1.2 — the parameter snapshot the engine actually used.\n\nSplits user-supplied values from engine defaults so customers can see\nwhich numbers came from them and which the engine filled in. Every\ndefaulted parameter SHOULD have a corresponding entry in `assumptions`\n— the bridge layer enforces this when wrapping engine output.",
        -                "properties": {
        -                  "assumptions": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "engine_defaults": {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  "resolved_from_description": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "additionalProperties": false,
        -                          "description": "Schema § 1.2 — a parameter resolved by the forgiving-input layer.\n\nPopulated by the Track B-Forgiving Haiku-4.5 resolution pass; until that\nlayer lands, instances are constructed only by tests. `source` distinguishes\nthe resolution path so customers can audit which fields were inferred.",
        -                          "properties": {
        -                            "confidence": {
        -                              "anyOf": [
        -                                {
        -                                  "enum": [
        -                                    "high",
        -                                    "medium",
        -                                    "low"
        -                                  ],
        -                                  "type": "string"
        -                                },
        -                                {
        -                                  "type": "null"
        -                                }
        -                              ],
        -                              "default": null
        -                            },
        -                            "field_name": {
        -                              "minLength": 1,
        -                              "type": "string"
        -                            },
        -                            "resolved_value": {},
        -                            "source": {
        -                              "enum": [
        -                                "description_field",
        -                                "haiku_resolution",
        -                                "engine_default"
        -                              ],
        -                              "type": "string"
        -                            }
        -                          },
        -                          "required": [
        -                            "field_name",
        -                            "resolved_value",
        -                            "source"
        -                          ],
        -                          "type": "object"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "user_supplied": {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  }
        -                },
        -                "type": "object"
        -              },
        -              "standard": {
        -                "enum": [
        -                  "CESMM4",
        -                  "NRM2",
        -                  "SMM7",
        -                  "MMHW"
        -                ],
        -                "type": "string"
        -              },
        -              "text_summary": {
        -                "maxLength": 2000,
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "totals_summary": {
        -                "additionalProperties": false,
        -                "description": "Schema § 1.4 — totals_summary as a typed wrapper around the free-form dict.\n\nWire shape is a flat object (`{\"concrete_m3\": {...}, \"rebar_t\": {...}}`).\nWe model it as `RootModel`-equivalent via `model_config(extra=\"allow\")`\n+ a single `__root__`-style `entries` dict. Pydantic v2 recommends\n`RootModel` for free-form roots; using a wrapper class keeps the import\nsurface uniform with the rest of this module.",
        -                "properties": {
        -                  "entries": {
        -                    "additionalProperties": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.4 — single material/work-class total entry.",
        -                      "properties": {
        -                        "quantity": {
        -                          "minimum": 0,
        -                          "type": "number"
        -                        },
        -                        "unit": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "quantity",
        -                        "unit"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "object"
        -                  }
        -                },
        -                "type": "object"
        -              },
        -              "warnings": {
        -                "items": {
        -                  "additionalProperties": false,
        -                  "description": "Schema § 1.8 — a non-fatal geometry advisory (56th-fire T2).\n\nThe wire projection of the engine's `core.GeometryWarning`. Advisory only:\na warning NEVER changes a measured quantity — it flags geometry that is\nvalid but likely a mistake (e.g. a stale dependent-height default). Present\non BOTH tiers — a correctness/safety signal, not a paid feature.",
        -                  "properties": {
        -                    "affected_params": {
        -                      "items": {
        -                        "type": "string"
        -                      },
        -                      "type": "array"
        -                    },
        -                    "code": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "detail": {
        -                      "additionalProperties": {
        -                        "type": "number"
        -                      },
        -                      "type": "object"
        -                    },
        -                    "message": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "severity": {
        -                      "enum": [
        -                        "info",
        -                        "advisory",
        -                        "caution"
        -                      ],
        -                      "type": "string"
        -                    }
        -                  },
        -                  "required": [
        -                    "code",
        -                    "severity",
        -                    "message"
        -                  ],
        -                  "type": "object"
        -                },
        -                "type": "array"
        -              }
        -            },
        -            "required": [
        -              "assembly_slug",
        -              "standard",
        -              "parameters_used",
        -              "boq_rows",
        -              "totals_summary",
        -              "text_summary"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      },
        -      "error": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        -            "properties": {
        -              "code": {
        -                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        -                "enum": [
        -                  "RATE_LIMIT_EXCEEDED",
        -                  "TIER_INSUFFICIENT",
        -                  "INVALID_INPUT",
        -                  "SCHEMA_VERSION_MISMATCH",
        -                  "SCHEMA_INVARIANT_VIOLATION",
        -                  "UPSTREAM_TIMEOUT",
        -                  "BACKEND_FAILURE",
        -                  "IP_BLOCKED",
        -                  "RESOURCE_NOT_FOUND",
        -                  "RENDER_FAILURE",
        -                  "OCR_LOW_CONFIDENCE",
        -                  "MANUAL_REVIEW_REQUIRED",
        -                  "ACCEPTANCE_REQUIRED",
        -                  "INVALID_TOKEN"
        -                ],
        -                "type": "string"
        -              },
        -              "details": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "message": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "recoverable": {
        -                "type": "boolean"
        -              },
        -              "retry_after_seconds": {
        -                "anyOf": [
        -                  {
        -                    "minimum": 0,
        -                    "type": "integer"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              }
        -            },
        -            "required": [
        -              "code",
        -              "message",
        -              "recoverable"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      }
        -    },
        -    "required": [
        -      "_meta"
        -    ],
        -    "type": "object"
        -  },
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "_meta": {
        -        "additionalProperties": false,
        -        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        -        "properties": {
        -          "deliverables": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        -                "properties": {
        -                  "docx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "dxf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "expires_at": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  },
        -                  "pdf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "xlsx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "expires_at"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "document_id": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "issued_at": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "rate_limit_remaining": {
        -            "anyOf": [
        -              {
        -                "minimum": 0,
        -                "type": "integer"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "request_id": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "schema_version": {
        -            "const": "1.0.0",
        -            "default": "1.0.0",
        -            "type": "string"
        -          },
        -          "scope_boundary": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        -                "properties": {
        -                  "not_in_scope": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "produced": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "recommended_companions": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "type": "string"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "produced",
        -                  "not_in_scope"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tier": {
        -            "enum": [
        -              "free",
        -              "paid"
        -            ],
        -            "type": "string"
        -          },
        -          "tier_upgrade": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        -                "properties": {
        -                  "available_tiers": {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        -                      "properties": {
        -                        "billing": {
        -                          "enum": [
        -                            "one_off",
        -                            "monthly",
        -                            "annual"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "currency": {
        -                          "enum": [
        -                            "GBP",
        -                            "SGD",
        -                            "EUR",
        -                            "USD",
        -                            "CAD",
        -                            "AUD",
        -                            "NZD",
        -                            "MYR"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "display_name": {
        -                          "type": "string"
        -                        },
        -                        "price_local": {
        -                          "type": "number"
        -                        },
        -                        "tier_slug": {
        -                          "enum": [
        -                            "7_day_pass",
        -                            "solo",
        -                            "studio",
        -                            "practice"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "unlock_summary": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "tier_slug",
        -                        "display_name",
        -                        "price_local",
        -                        "currency",
        -                        "billing",
        -                        "unlock_summary"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "current_tier": {
        -                    "const": "free",
        -                    "default": "free",
        -                    "type": "string"
        -                  },
        -                  "pass_credit": {
        -                    "anyOf": [
        -                      {
        -                        "additionalProperties": false,
        -                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        -                        "properties": {
        -                          "amount_local": {
        -                            "type": "number"
        -                          },
        -                          "applies_to": {
        -                            "const": "solo_first_month",
        -                            "default": "solo_first_month",
        -                            "type": "string"
        -                          },
        -                          "currency": {
        -                            "type": "string"
        -                          },
        -                          "redeemable_until": {
        -                            "type": "string"
        -                          }
        -                        },
        -                        "required": [
        -                          "amount_local",
        -                          "currency",
        -                          "redeemable_until"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "pricing_url": {
        -                    "default": "https://civilquants.com/pricing",
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "available_tiers"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tos_url": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "upgrade_hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "warranty_disclaimer": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          }
        -        },
        -        "required": [
        -          "request_id",
        -          "issued_at",
        -          "tier"
        -        ],
        -        "type": "object"
        -      },
        -      "data": {
        -        "default": null,
        -        "title": "Data"
        -      },
        -      "error": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        -            "properties": {
        -              "code": {
        -                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        -                "enum": [
        -                  "RATE_LIMIT_EXCEEDED",
        -                  "TIER_INSUFFICIENT",
        -                  "INVALID_INPUT",
        -                  "SCHEMA_VERSION_MISMATCH",
        -                  "SCHEMA_INVARIANT_VIOLATION",
        -                  "UPSTREAM_TIMEOUT",
        -                  "BACKEND_FAILURE",
        -                  "IP_BLOCKED",
        -                  "RESOURCE_NOT_FOUND",
        -                  "RENDER_FAILURE",
        -                  "OCR_LOW_CONFIDENCE",
        -                  "MANUAL_REVIEW_REQUIRED",
        -                  "ACCEPTANCE_REQUIRED",
        -                  "INVALID_TOKEN"
        -                ],
        -                "type": "string"
        -              },
        -              "details": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "message": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "recoverable": {
        -                "type": "boolean"
        -              },
        -              "retry_after_seconds": {
        -                "anyOf": [
        -                  {
        -                    "minimum": 0,
        -                    "type": "integer"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              }
        -            },
        -            "required": [
        -              "code",
        -              "message",
        -              "recoverable"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      }
        -    },
        -    "required": [
        -      "_meta"
        -    ],
        -    "type": "object"
        -  }
        -]New value: +[
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "_meta": {
        +        "additionalProperties": false,
        +        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        +        "properties": {
        +          "deliverables": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        +                "properties": {
        +                  "docx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "dxf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "expires_at": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  },
        +                  "pdf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "xlsx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "expires_at"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "document_id": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "issued_at": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "rate_limit_remaining": {
        +            "anyOf": [
        +              {
        +                "minimum": 0,
        +                "type": "integer"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "request_id": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "schema_version": {
        +            "const": "1.0.0",
        +            "default": "1.0.0",
        +            "type": "string"
        +          },
        +          "scope_boundary": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        +                "properties": {
        +                  "not_in_scope": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "produced": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "recommended_companions": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "type": "string"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "produced",
        +                  "not_in_scope"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tier": {
        +            "enum": [
        +              "free",
        +              "paid"
        +            ],
        +            "type": "string"
        +          },
        +          "tier_upgrade": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        +                "properties": {
        +                  "available_tiers": {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        +                      "properties": {
        +                        "billing": {
        +                          "enum": [
        +                            "one_off",
        +                            "monthly",
        +                            "annual"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "currency": {
        +                          "enum": [
        +                            "GBP",
        +                            "SGD",
        +                            "EUR",
        +                            "USD",
        +                            "CAD",
        +                            "AUD",
        +                            "NZD",
        +                            "MYR"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "display_name": {
        +                          "type": "string"
        +                        },
        +                        "price_local": {
        +                          "type": "number"
        +                        },
        +                        "tier_slug": {
        +                          "enum": [
        +                            "7_day_pass",
        +                            "solo",
        +                            "studio",
        +                            "practice"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "unlock_summary": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "tier_slug",
        +                        "display_name",
        +                        "price_local",
        +                        "currency",
        +                        "billing",
        +                        "unlock_summary"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "current_tier": {
        +                    "const": "free",
        +                    "default": "free",
        +                    "type": "string"
        +                  },
        +                  "pass_credit": {
        +                    "anyOf": [
        +                      {
        +                        "additionalProperties": false,
        +                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        +                        "properties": {
        +                          "amount_local": {
        +                            "type": "number"
        +                          },
        +                          "applies_to": {
        +                            "const": "solo_first_month",
        +                            "default": "solo_first_month",
        +                            "type": "string"
        +                          },
        +                          "currency": {
        +                            "type": "string"
        +                          },
        +                          "redeemable_until": {
        +                            "type": "string"
        +                          }
        +                        },
        +                        "required": [
        +                          "amount_local",
        +                          "currency",
        +                          "redeemable_until"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "pricing_url": {
        +                    "default": "https://civilquants.com/pricing",
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "available_tiers"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tos_url": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "upgrade_hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "warranty_disclaimer": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          }
        +        },
        +        "required": [
        +          "request_id",
        +          "issued_at",
        +          "tier"
        +        ],
        +        "type": "object"
        +      },
        +      "data": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Schema § 1.1 — the typed payload returned inside `MCPResponse[ComputeResult]`.\n\nFree-tier responses omit `drawings` (the downloadable CAD artefact\npointers — the paid differentiator); the bridge enforces this. The\n`audit_trail` and the inline `drawing` preview are present on BOTH tiers\n(V1 ALIGN / 60th-fire D + C). `text_summary` is bounded to 2000 chars —\nkeeps the LLM-facing summary token-cheap and forces longer narrative into\nBoQ row descriptions where it belongs. `warnings` is the non-fatal\ngeometry advisory list (both tiers).",
        +            "properties": {
        +              "assembly_slug": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "audit_trail": {
        +                "anyOf": [
        +                  {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.7 — paid-tier audit-trail entry.\n\nOne entry per BoQ row; `boq_row_index` ties to the row position in\n`ComputeResult.boq_rows`. `derivation` is the human-readable formula\nwalk-through; `formula` is the optional formal expression.",
        +                      "properties": {
        +                        "boq_row_index": {
        +                          "minimum": 0,
        +                          "type": "integer"
        +                        },
        +                        "derivation": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "formula": {
        +                          "anyOf": [
        +                            {
        +                              "type": "string"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ],
        +                          "default": null
        +                        },
        +                        "id": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "parameters_referenced": {
        +                          "items": {
        +                            "type": "string"
        +                          },
        +                          "type": "array"
        +                        }
        +                      },
        +                      "required": [
        +                        "id",
        +                        "boq_row_index",
        +                        "derivation"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "boq_rows": {
        +                "items": {
        +                  "additionalProperties": false,
        +                  "description": "Schema § 1.3 — a single bill row in the requested standard's format.\n\n`description` is the non-verbatim functional description per spec § 13.9 /\n§ 15 invariant — NEVER reproduces a standard's verbatim clause text.\n`rate` / `amount` ship null because rates are commodity data the customer\nowns; the engine's job is the measurement, not the pricing.",
        +                  "properties": {
        +                    "amount": {
        +                      "anyOf": [
        +                        {
        +                          "type": "number"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "attribution": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "audit_id": {
        +                      "anyOf": [
        +                        {
        +                          "type": "string"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "description": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "quantity": {
        +                      "minimum": 0,
        +                      "type": "number"
        +                    },
        +                    "rate": {
        +                      "anyOf": [
        +                        {
        +                          "type": "number"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "unit": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "work_section": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    }
        +                  },
        +                  "required": [
        +                    "work_section",
        +                    "description",
        +                    "quantity",
        +                    "unit",
        +                    "attribution"
        +                  ],
        +                  "type": "object"
        +                },
        +                "type": "array"
        +              },
        +              "drawing": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": false,
        +                    "description": "Schema § 1.6a — inline server-rendered SVG preview of the geometry.\n\nThe MCP mirror of the web ``/compute`` response's ``drawing`` field\n(``api.schemas.compute.DrawingRef``): the same on-screen dimensioned\ndrawing both tiers see in the workspace, surfaced on the MCP compute\nresponse so a chat client can render it inline (60th-fire item C). This\nis the on-screen preview — present on BOTH tiers per the free/paid\nboundary; the downloadable CAD artefacts (DXF / dimensioned PDF) remain\nthe paid differentiator via the export tools.\n\nDefined here rather than importing ``DrawingRef`` because the web\n``schemas`` package imports back into this module (``schemas.render``),\nso reusing it would create an import cycle — the MCP wire contract keeps\nits own copy, the same pattern as ``BoQRow`` / ``DrawingReference``.",
        +                    "properties": {
        +                      "entity_count": {
        +                        "minimum": 0,
        +                        "type": "integer"
        +                      },
        +                      "svg_b64": {
        +                        "minLength": 1,
        +                        "type": "string"
        +                      },
        +                      "unit_of_drawing": {
        +                        "const": "m",
        +                        "default": "m",
        +                        "type": "string"
        +                      },
        +                      "viewbox_height": {
        +                        "exclusiveMinimum": 0,
        +                        "type": "number"
        +                      },
        +                      "viewbox_width": {
        +                        "exclusiveMinimum": 0,
        +                        "type": "number"
        +                      },
        +                      "viewbox_x": {
        +                        "type": "number"
        +                      },
        +                      "viewbox_y": {
        +                        "type": "number"
        +                      }
        +                    },
        +                    "required": [
        +                      "svg_b64",
        +                      "viewbox_x",
        +                      "viewbox_y",
        +                      "viewbox_width",
        +                      "viewbox_height",
        +                      "entity_count"
        +                    ],
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "drawings": {
        +                "anyOf": [
        +                  {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.6 — paid-tier drawing artefact pointer.\n\n`url` is an R2-signed URL; expiry is carried in `_meta.deliverables.expires_at`\non the envelope (not duplicated here). `layers` is DXF-only; PDF/SVG\ncallers omit it.",
        +                      "properties": {
        +                        "drawing_type": {
        +                          "enum": [
        +                            "section",
        +                            "plan",
        +                            "elevation",
        +                            "isometric",
        +                            "detail"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "format": {
        +                          "enum": [
        +                            "DXF",
        +                            "PDF",
        +                            "SVG"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "layers": {
        +                          "anyOf": [
        +                            {
        +                              "items": {
        +                                "type": "string"
        +                              },
        +                              "type": "array"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ],
        +                          "default": null
        +                        },
        +                        "scale": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "sheet_size": {
        +                          "enum": [
        +                            "A1",
        +                            "A2",
        +                            "A3",
        +                            "A4"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "url": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "drawing_type",
        +                        "format",
        +                        "url",
        +                        "sheet_size",
        +                        "scale"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "parameters_used": {
        +                "additionalProperties": false,
        +                "description": "Schema § 1.2 — the parameter snapshot the engine actually used.\n\nSplits user-supplied values from engine defaults so customers can see\nwhich numbers came from them and which the engine filled in. Every\ndefaulted parameter SHOULD have a corresponding entry in `assumptions`\n— the bridge layer enforces this when wrapping engine output.",
        +                "properties": {
        +                  "assumptions": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "engine_defaults": {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  "resolved_from_description": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "additionalProperties": false,
        +                          "description": "Schema § 1.2 — a parameter resolved by the forgiving-input layer.\n\nPopulated by the Track B-Forgiving Haiku-4.5 resolution pass; until that\nlayer lands, instances are constructed only by tests. `source` distinguishes\nthe resolution path so customers can audit which fields were inferred.",
        +                          "properties": {
        +                            "confidence": {
        +                              "anyOf": [
        +                                {
        +                                  "enum": [
        +                                    "high",
        +                                    "medium",
        +                                    "low"
        +                                  ],
        +                                  "type": "string"
        +                                },
        +                                {
        +                                  "type": "null"
        +                                }
        +                              ],
        +                              "default": null
        +                            },
        +                            "field_name": {
        +                              "minLength": 1,
        +                              "type": "string"
        +                            },
        +                            "resolved_value": {},
        +                            "source": {
        +                              "enum": [
        +                                "description_field",
        +                                "haiku_resolution",
        +                                "engine_default"
        +                              ],
        +                              "type": "string"
        +                            }
        +                          },
        +                          "required": [
        +                            "field_name",
        +                            "resolved_value",
        +                            "source"
        +                          ],
        +                          "type": "object"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "user_supplied": {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  }
        +                },
        +                "type": "object"
        +              },
        +              "standard": {
        +                "enum": [
        +                  "CESMM4",
        +                  "NRM2",
        +                  "SMM7",
        +                  "MMHW"
        +                ],
        +                "type": "string"
        +              },
        +              "text_summary": {
        +                "maxLength": 2000,
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "totals_summary": {
        +                "additionalProperties": false,
        +                "description": "Schema § 1.4 — totals_summary as a typed wrapper around the free-form dict.\n\nWire shape is a flat object (`{\"concrete_m3\": {...}, \"rebar_t\": {...}}`).\nWe model it as `RootModel`-equivalent via `model_config(extra=\"allow\")`\n+ a single `__root__`-style `entries` dict. Pydantic v2 recommends\n`RootModel` for free-form roots; using a wrapper class keeps the import\nsurface uniform with the rest of this module.",
        +                "properties": {
        +                  "entries": {
        +                    "additionalProperties": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.4 — single material/work-class total entry.",
        +                      "properties": {
        +                        "quantity": {
        +                          "minimum": 0,
        +                          "type": "number"
        +                        },
        +                        "unit": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "quantity",
        +                        "unit"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "object"
        +                  }
        +                },
        +                "type": "object"
        +              },
        +              "warnings": {
        +                "items": {
        +                  "additionalProperties": false,
        +                  "description": "Schema § 1.8 — a non-fatal geometry advisory (56th-fire T2).\n\nThe wire projection of the engine's `core.GeometryWarning`. Advisory only:\na warning NEVER changes a measured quantity — it flags geometry that is\nvalid but likely a mistake (e.g. a stale dependent-height default). Present\non BOTH tiers — a correctness/safety signal, not a paid feature.",
        +                  "properties": {
        +                    "affected_params": {
        +                      "items": {
        +                        "type": "string"
        +                      },
        +                      "type": "array"
        +                    },
        +                    "code": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "detail": {
        +                      "additionalProperties": {
        +                        "type": "number"
        +                      },
        +                      "type": "object"
        +                    },
        +                    "message": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "severity": {
        +                      "enum": [
        +                        "info",
        +                        "advisory",
        +                        "caution"
        +                      ],
        +                      "type": "string"
        +                    }
        +                  },
        +                  "required": [
        +                    "code",
        +                    "severity",
        +                    "message"
        +                  ],
        +                  "type": "object"
        +                },
        +                "type": "array"
        +              }
        +            },
        +            "required": [
        +              "assembly_slug",
        +              "standard",
        +              "parameters_used",
        +              "boq_rows",
        +              "totals_summary",
        +              "text_summary"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      },
        +      "error": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        +            "properties": {
        +              "code": {
        +                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        +                "enum": [
        +                  "RATE_LIMIT_EXCEEDED",
        +                  "TIER_INSUFFICIENT",
        +                  "INVALID_INPUT",
        +                  "SCHEMA_VERSION_MISMATCH",
        +                  "SCHEMA_INVARIANT_VIOLATION",
        +                  "UPSTREAM_TIMEOUT",
        +                  "BACKEND_FAILURE",
        +                  "IP_BLOCKED",
        +                  "RESOURCE_NOT_FOUND",
        +                  "RENDER_FAILURE",
        +                  "OCR_LOW_CONFIDENCE",
        +                  "MANUAL_REVIEW_REQUIRED",
        +                  "ACCEPTANCE_REQUIRED",
        +                  "INVALID_TOKEN"
        +                ],
        +                "type": "string"
        +              },
        +              "details": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "message": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "recoverable": {
        +                "type": "boolean"
        +              },
        +              "retry_after_seconds": {
        +                "anyOf": [
        +                  {
        +                    "minimum": 0,
        +                    "type": "integer"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              }
        +            },
        +            "required": [
        +              "code",
        +              "message",
        +              "recoverable"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      }
        +    },
        +    "required": [
        +      "_meta"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "_meta": {
        +        "additionalProperties": false,
        +        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        +        "properties": {
        +          "deliverables": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        +                "properties": {
        +                  "docx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "dxf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "expires_at": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  },
        +                  "pdf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "xlsx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "expires_at"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "document_id": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "issued_at": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "rate_limit_remaining": {
        +            "anyOf": [
        +              {
        +                "minimum": 0,
        +                "type": "integer"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "request_id": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "schema_version": {
        +            "const": "1.0.0",
        +            "default": "1.0.0",
        +            "type": "string"
        +          },
        +          "scope_boundary": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        +                "properties": {
        +                  "not_in_scope": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "produced": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "recommended_companions": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "type": "string"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "produced",
        +                  "not_in_scope"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tier": {
        +            "enum": [
        +              "free",
        +              "paid"
        +            ],
        +            "type": "string"
        +          },
        +          "tier_upgrade": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        +                "properties": {
        +                  "available_tiers": {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        +                      "properties": {
        +                        "billing": {
        +                          "enum": [
        +                            "one_off",
        +                            "monthly",
        +                            "annual"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "currency": {
        +                          "enum": [
        +                            "GBP",
        +                            "SGD",
        +                            "EUR",
        +                            "USD",
        +                            "CAD",
        +                            "AUD",
        +                            "NZD",
        +                            "MYR"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "display_name": {
        +                          "type": "string"
        +                        },
        +                        "price_local": {
        +                          "type": "number"
        +                        },
        +                        "tier_slug": {
        +                          "enum": [
        +                            "7_day_pass",
        +                            "solo",
        +                            "studio",
        +                            "practice"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "unlock_summary": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "tier_slug",
        +                        "display_name",
        +                        "price_local",
        +                        "currency",
        +                        "billing",
        +                        "unlock_summary"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "current_tier": {
        +                    "const": "free",
        +                    "default": "free",
        +                    "type": "string"
        +                  },
        +                  "pass_credit": {
        +                    "anyOf": [
        +                      {
        +                        "additionalProperties": false,
        +                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        +                        "properties": {
        +                          "amount_local": {
        +                            "type": "number"
        +                          },
        +                          "applies_to": {
        +                            "const": "solo_first_month",
        +                            "default": "solo_first_month",
        +                            "type": "string"
        +                          },
        +                          "currency": {
        +                            "type": "string"
        +                          },
        +                          "redeemable_until": {
        +                            "type": "string"
        +                          }
        +                        },
        +                        "required": [
        +                          "amount_local",
        +                          "currency",
        +                          "redeemable_until"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "pricing_url": {
        +                    "default": "https://civilquants.com/pricing",
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "available_tiers"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tos_url": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "upgrade_hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "warranty_disclaimer": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          }
        +        },
        +        "required": [
        +          "request_id",
        +          "issued_at",
        +          "tier"
        +        ],
        +        "type": "object"
        +      },
        +      "data": {
        +        "default": null,
        +        "title": "Data"
        +      },
        +      "error": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        +            "properties": {
        +              "code": {
        +                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        +                "enum": [
        +                  "RATE_LIMIT_EXCEEDED",
        +                  "TIER_INSUFFICIENT",
        +                  "INVALID_INPUT",
        +                  "SCHEMA_VERSION_MISMATCH",
        +                  "SCHEMA_INVARIANT_VIOLATION",
        +                  "UPSTREAM_TIMEOUT",
        +                  "BACKEND_FAILURE",
        +                  "IP_BLOCKED",
        +                  "RESOURCE_NOT_FOUND",
        +                  "RENDER_FAILURE",
        +                  "OCR_LOW_CONFIDENCE",
        +                  "MANUAL_REVIEW_REQUIRED",
        +                  "ACCEPTANCE_REQUIRED",
        +                  "INVALID_TOKEN"
        +                ],
        +                "type": "string"
        +              },
        +              "details": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "message": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "recoverable": {
        +                "type": "boolean"
        +              },
        +              "retry_after_seconds": {
        +                "anyOf": [
        +                  {
        +                    "minimum": 0,
        +                    "type": "integer"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              }
        +            },
        +            "required": [
        +              "code",
        +              "message",
        +              "recoverable"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      }
        +    },
        +    "required": [
        +      "_meta"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedcompute_strip_foundation3 fields changed
      • addedInput schema / properties / deliverables
        Added value: +{
        +  "anyOf": [
        +    {
        +      "items": {
        +        "const": "xlsx",
        +        "type": "string"
        +      },
        +      "type": "array"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null
        +}
      • addedInput schema / properties / output_mode
        Added value: +{
        +  "default": "full_json",
        +  "enum": [
        +    "summary",
        +    "boq",
        +    "boq_with_backup",
        +    "full_json"
        +  ],
        +  "type": "string"
        +}
      • changedOutput schema / properties / result / anyOf
        Previous value: -[
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "_meta": {
        -        "additionalProperties": false,
        -        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        -        "properties": {
        -          "deliverables": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        -                "properties": {
        -                  "docx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "dxf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "expires_at": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  },
        -                  "pdf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "xlsx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "expires_at"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "document_id": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "issued_at": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "rate_limit_remaining": {
        -            "anyOf": [
        -              {
        -                "minimum": 0,
        -                "type": "integer"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "request_id": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "schema_version": {
        -            "const": "1.0.0",
        -            "default": "1.0.0",
        -            "type": "string"
        -          },
        -          "scope_boundary": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        -                "properties": {
        -                  "not_in_scope": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "produced": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "recommended_companions": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "type": "string"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "produced",
        -                  "not_in_scope"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tier": {
        -            "enum": [
        -              "free",
        -              "paid"
        -            ],
        -            "type": "string"
        -          },
        -          "tier_upgrade": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        -                "properties": {
        -                  "available_tiers": {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        -                      "properties": {
        -                        "billing": {
        -                          "enum": [
        -                            "one_off",
        -                            "monthly",
        -                            "annual"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "currency": {
        -                          "enum": [
        -                            "GBP",
        -                            "SGD",
        -                            "EUR",
        -                            "USD",
        -                            "CAD",
        -                            "AUD",
        -                            "NZD",
        -                            "MYR"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "display_name": {
        -                          "type": "string"
        -                        },
        -                        "price_local": {
        -                          "type": "number"
        -                        },
        -                        "tier_slug": {
        -                          "enum": [
        -                            "7_day_pass",
        -                            "solo",
        -                            "studio",
        -                            "practice"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "unlock_summary": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "tier_slug",
        -                        "display_name",
        -                        "price_local",
        -                        "currency",
        -                        "billing",
        -                        "unlock_summary"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "current_tier": {
        -                    "const": "free",
        -                    "default": "free",
        -                    "type": "string"
        -                  },
        -                  "pass_credit": {
        -                    "anyOf": [
        -                      {
        -                        "additionalProperties": false,
        -                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        -                        "properties": {
        -                          "amount_local": {
        -                            "type": "number"
        -                          },
        -                          "applies_to": {
        -                            "const": "solo_first_month",
        -                            "default": "solo_first_month",
        -                            "type": "string"
        -                          },
        -                          "currency": {
        -                            "type": "string"
        -                          },
        -                          "redeemable_until": {
        -                            "type": "string"
        -                          }
        -                        },
        -                        "required": [
        -                          "amount_local",
        -                          "currency",
        -                          "redeemable_until"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "pricing_url": {
        -                    "default": "https://civilquants.com/pricing",
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "available_tiers"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tos_url": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "upgrade_hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "warranty_disclaimer": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          }
        -        },
        -        "required": [
        -          "request_id",
        -          "issued_at",
        -          "tier"
        -        ],
        -        "type": "object"
        -      },
        -      "data": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Schema § 1.1 — the typed payload returned inside `MCPResponse[ComputeResult]`.\n\nFree-tier responses MUST omit `drawings` and `audit_trail` (the bridge\nenforces this); paid-tier responses populate both. `text_summary` is\nbounded to 2000 chars — keeps the LLM-facing summary token-cheap and\nforces longer narrative into BoQ row descriptions where it belongs.\n`warnings` is the non-fatal geometry advisory list (both tiers).",
        -            "properties": {
        -              "assembly_slug": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "audit_trail": {
        -                "anyOf": [
        -                  {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.7 — paid-tier audit-trail entry.\n\nOne entry per BoQ row; `boq_row_index` ties to the row position in\n`ComputeResult.boq_rows`. `derivation` is the human-readable formula\nwalk-through; `formula` is the optional formal expression.",
        -                      "properties": {
        -                        "boq_row_index": {
        -                          "minimum": 0,
        -                          "type": "integer"
        -                        },
        -                        "derivation": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "formula": {
        -                          "anyOf": [
        -                            {
        -                              "type": "string"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ],
        -                          "default": null
        -                        },
        -                        "id": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "parameters_referenced": {
        -                          "items": {
        -                            "type": "string"
        -                          },
        -                          "type": "array"
        -                        }
        -                      },
        -                      "required": [
        -                        "id",
        -                        "boq_row_index",
        -                        "derivation"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "boq_rows": {
        -                "items": {
        -                  "additionalProperties": false,
        -                  "description": "Schema § 1.3 — a single bill row in the requested standard's format.\n\n`description` is the non-verbatim functional description per spec § 13.9 /\n§ 15 invariant — NEVER reproduces a standard's verbatim clause text.\n`rate` / `amount` ship null because rates are commodity data the customer\nowns; the engine's job is the measurement, not the pricing.",
        -                  "properties": {
        -                    "amount": {
        -                      "anyOf": [
        -                        {
        -                          "type": "number"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "attribution": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "audit_id": {
        -                      "anyOf": [
        -                        {
        -                          "type": "string"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "description": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "quantity": {
        -                      "minimum": 0,
        -                      "type": "number"
        -                    },
        -                    "rate": {
        -                      "anyOf": [
        -                        {
        -                          "type": "number"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "unit": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "work_section": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    }
        -                  },
        -                  "required": [
        -                    "work_section",
        -                    "description",
        -                    "quantity",
        -                    "unit",
        -                    "attribution"
        -                  ],
        -                  "type": "object"
        -                },
        -                "type": "array"
        -              },
        -              "drawings": {
        -                "anyOf": [
        -                  {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.6 — paid-tier drawing artefact pointer.\n\n`url` is an R2-signed URL; expiry is carried in `_meta.deliverables.expires_at`\non the envelope (not duplicated here). `layers` is DXF-only; PDF/SVG\ncallers omit it.",
        -                      "properties": {
        -                        "drawing_type": {
        -                          "enum": [
        -                            "section",
        -                            "plan",
        -                            "elevation",
        -                            "isometric",
        -                            "detail"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "format": {
        -                          "enum": [
        -                            "DXF",
        -                            "PDF",
        -                            "SVG"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "layers": {
        -                          "anyOf": [
        -                            {
        -                              "items": {
        -                                "type": "string"
        -                              },
        -                              "type": "array"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ],
        -                          "default": null
        -                        },
        -                        "scale": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "sheet_size": {
        -                          "enum": [
        -                            "A1",
        -                            "A2",
        -                            "A3",
        -                            "A4"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "url": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "drawing_type",
        -                        "format",
        -                        "url",
        -                        "sheet_size",
        -                        "scale"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "parameters_used": {
        -                "additionalProperties": false,
        -                "description": "Schema § 1.2 — the parameter snapshot the engine actually used.\n\nSplits user-supplied values from engine defaults so customers can see\nwhich numbers came from them and which the engine filled in. Every\ndefaulted parameter SHOULD have a corresponding entry in `assumptions`\n— the bridge layer enforces this when wrapping engine output.",
        -                "properties": {
        -                  "assumptions": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "engine_defaults": {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  "resolved_from_description": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "additionalProperties": false,
        -                          "description": "Schema § 1.2 — a parameter resolved by the forgiving-input layer.\n\nPopulated by the Track B-Forgiving Haiku-4.5 resolution pass; until that\nlayer lands, instances are constructed only by tests. `source` distinguishes\nthe resolution path so customers can audit which fields were inferred.",
        -                          "properties": {
        -                            "confidence": {
        -                              "anyOf": [
        -                                {
        -                                  "enum": [
        -                                    "high",
        -                                    "medium",
        -                                    "low"
        -                                  ],
        -                                  "type": "string"
        -                                },
        -                                {
        -                                  "type": "null"
        -                                }
        -                              ],
        -                              "default": null
        -                            },
        -                            "field_name": {
        -                              "minLength": 1,
        -                              "type": "string"
        -                            },
        -                            "resolved_value": {},
        -                            "source": {
        -                              "enum": [
        -                                "description_field",
        -                                "haiku_resolution",
        -                                "engine_default"
        -                              ],
        -                              "type": "string"
        -                            }
        -                          },
        -                          "required": [
        -                            "field_name",
        -                            "resolved_value",
        -                            "source"
        -                          ],
        -                          "type": "object"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "user_supplied": {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  }
        -                },
        -                "type": "object"
        -              },
        -              "standard": {
        -                "enum": [
        -                  "CESMM4",
        -                  "NRM2",
        -                  "SMM7",
        -                  "MMHW"
        -                ],
        -                "type": "string"
        -              },
        -              "text_summary": {
        -                "maxLength": 2000,
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "totals_summary": {
        -                "additionalProperties": false,
        -                "description": "Schema § 1.4 — totals_summary as a typed wrapper around the free-form dict.\n\nWire shape is a flat object (`{\"concrete_m3\": {...}, \"rebar_t\": {...}}`).\nWe model it as `RootModel`-equivalent via `model_config(extra=\"allow\")`\n+ a single `__root__`-style `entries` dict. Pydantic v2 recommends\n`RootModel` for free-form roots; using a wrapper class keeps the import\nsurface uniform with the rest of this module.",
        -                "properties": {
        -                  "entries": {
        -                    "additionalProperties": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.4 — single material/work-class total entry.",
        -                      "properties": {
        -                        "quantity": {
        -                          "minimum": 0,
        -                          "type": "number"
        -                        },
        -                        "unit": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "quantity",
        -                        "unit"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "object"
        -                  }
        -                },
        -                "type": "object"
        -              },
        -              "warnings": {
        -                "items": {
        -                  "additionalProperties": false,
        -                  "description": "Schema § 1.8 — a non-fatal geometry advisory (56th-fire T2).\n\nThe wire projection of the engine's `core.GeometryWarning`. Advisory only:\na warning NEVER changes a measured quantity — it flags geometry that is\nvalid but likely a mistake (e.g. a stale dependent-height default). Present\non BOTH tiers — a correctness/safety signal, not a paid feature.",
        -                  "properties": {
        -                    "affected_params": {
        -                      "items": {
        -                        "type": "string"
        -                      },
        -                      "type": "array"
        -                    },
        -                    "code": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "detail": {
        -                      "additionalProperties": {
        -                        "type": "number"
        -                      },
        -                      "type": "object"
        -                    },
        -                    "message": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "severity": {
        -                      "enum": [
        -                        "info",
        -                        "advisory",
        -                        "caution"
        -                      ],
        -                      "type": "string"
        -                    }
        -                  },
        -                  "required": [
        -                    "code",
        -                    "severity",
        -                    "message"
        -                  ],
        -                  "type": "object"
        -                },
        -                "type": "array"
        -              }
        -            },
        -            "required": [
        -              "assembly_slug",
        -              "standard",
        -              "parameters_used",
        -              "boq_rows",
        -              "totals_summary",
        -              "text_summary"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      },
        -      "error": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        -            "properties": {
        -              "code": {
        -                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        -                "enum": [
        -                  "RATE_LIMIT_EXCEEDED",
        -                  "TIER_INSUFFICIENT",
        -                  "INVALID_INPUT",
        -                  "SCHEMA_VERSION_MISMATCH",
        -                  "SCHEMA_INVARIANT_VIOLATION",
        -                  "UPSTREAM_TIMEOUT",
        -                  "BACKEND_FAILURE",
        -                  "IP_BLOCKED",
        -                  "RESOURCE_NOT_FOUND",
        -                  "RENDER_FAILURE",
        -                  "OCR_LOW_CONFIDENCE",
        -                  "MANUAL_REVIEW_REQUIRED",
        -                  "ACCEPTANCE_REQUIRED",
        -                  "INVALID_TOKEN"
        -                ],
        -                "type": "string"
        -              },
        -              "details": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "message": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "recoverable": {
        -                "type": "boolean"
        -              },
        -              "retry_after_seconds": {
        -                "anyOf": [
        -                  {
        -                    "minimum": 0,
        -                    "type": "integer"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              }
        -            },
        -            "required": [
        -              "code",
        -              "message",
        -              "recoverable"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      }
        -    },
        -    "required": [
        -      "_meta"
        -    ],
        -    "type": "object"
        -  },
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "_meta": {
        -        "additionalProperties": false,
        -        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        -        "properties": {
        -          "deliverables": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        -                "properties": {
        -                  "docx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "dxf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "expires_at": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  },
        -                  "pdf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "xlsx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "expires_at"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "document_id": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "issued_at": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "rate_limit_remaining": {
        -            "anyOf": [
        -              {
        -                "minimum": 0,
        -                "type": "integer"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "request_id": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "schema_version": {
        -            "const": "1.0.0",
        -            "default": "1.0.0",
        -            "type": "string"
        -          },
        -          "scope_boundary": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        -                "properties": {
        -                  "not_in_scope": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "produced": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "recommended_companions": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "type": "string"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "produced",
        -                  "not_in_scope"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tier": {
        -            "enum": [
        -              "free",
        -              "paid"
        -            ],
        -            "type": "string"
        -          },
        -          "tier_upgrade": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        -                "properties": {
        -                  "available_tiers": {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        -                      "properties": {
        -                        "billing": {
        -                          "enum": [
        -                            "one_off",
        -                            "monthly",
        -                            "annual"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "currency": {
        -                          "enum": [
        -                            "GBP",
        -                            "SGD",
        -                            "EUR",
        -                            "USD",
        -                            "CAD",
        -                            "AUD",
        -                            "NZD",
        -                            "MYR"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "display_name": {
        -                          "type": "string"
        -                        },
        -                        "price_local": {
        -                          "type": "number"
        -                        },
        -                        "tier_slug": {
        -                          "enum": [
        -                            "7_day_pass",
        -                            "solo",
        -                            "studio",
        -                            "practice"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "unlock_summary": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "tier_slug",
        -                        "display_name",
        -                        "price_local",
        -                        "currency",
        -                        "billing",
        -                        "unlock_summary"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "current_tier": {
        -                    "const": "free",
        -                    "default": "free",
        -                    "type": "string"
        -                  },
        -                  "pass_credit": {
        -                    "anyOf": [
        -                      {
        -                        "additionalProperties": false,
        -                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        -                        "properties": {
        -                          "amount_local": {
        -                            "type": "number"
        -                          },
        -                          "applies_to": {
        -                            "const": "solo_first_month",
        -                            "default": "solo_first_month",
        -                            "type": "string"
        -                          },
        -                          "currency": {
        -                            "type": "string"
        -                          },
        -                          "redeemable_until": {
        -                            "type": "string"
        -                          }
        -                        },
        -                        "required": [
        -                          "amount_local",
        -                          "currency",
        -                          "redeemable_until"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "pricing_url": {
        -                    "default": "https://civilquants.com/pricing",
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "available_tiers"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tos_url": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "upgrade_hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "warranty_disclaimer": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          }
        -        },
        -        "required": [
        -          "request_id",
        -          "issued_at",
        -          "tier"
        -        ],
        -        "type": "object"
        -      },
        -      "data": {
        -        "default": null,
        -        "title": "Data"
        -      },
        -      "error": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        -            "properties": {
        -              "code": {
        -                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        -                "enum": [
        -                  "RATE_LIMIT_EXCEEDED",
        -                  "TIER_INSUFFICIENT",
        -                  "INVALID_INPUT",
        -                  "SCHEMA_VERSION_MISMATCH",
        -                  "SCHEMA_INVARIANT_VIOLATION",
        -                  "UPSTREAM_TIMEOUT",
        -                  "BACKEND_FAILURE",
        -                  "IP_BLOCKED",
        -                  "RESOURCE_NOT_FOUND",
        -                  "RENDER_FAILURE",
        -                  "OCR_LOW_CONFIDENCE",
        -                  "MANUAL_REVIEW_REQUIRED",
        -                  "ACCEPTANCE_REQUIRED",
        -                  "INVALID_TOKEN"
        -                ],
        -                "type": "string"
        -              },
        -              "details": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "message": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "recoverable": {
        -                "type": "boolean"
        -              },
        -              "retry_after_seconds": {
        -                "anyOf": [
        -                  {
        -                    "minimum": 0,
        -                    "type": "integer"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              }
        -            },
        -            "required": [
        -              "code",
        -              "message",
        -              "recoverable"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      }
        -    },
        -    "required": [
        -      "_meta"
        -    ],
        -    "type": "object"
        -  }
        -]New value: +[
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "_meta": {
        +        "additionalProperties": false,
        +        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        +        "properties": {
        +          "deliverables": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        +                "properties": {
        +                  "docx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "dxf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "expires_at": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  },
        +                  "pdf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "xlsx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "expires_at"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "document_id": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "issued_at": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "rate_limit_remaining": {
        +            "anyOf": [
        +              {
        +                "minimum": 0,
        +                "type": "integer"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "request_id": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "schema_version": {
        +            "const": "1.0.0",
        +            "default": "1.0.0",
        +            "type": "string"
        +          },
        +          "scope_boundary": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        +                "properties": {
        +                  "not_in_scope": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "produced": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "recommended_companions": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "type": "string"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "produced",
        +                  "not_in_scope"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tier": {
        +            "enum": [
        +              "free",
        +              "paid"
        +            ],
        +            "type": "string"
        +          },
        +          "tier_upgrade": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        +                "properties": {
        +                  "available_tiers": {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        +                      "properties": {
        +                        "billing": {
        +                          "enum": [
        +                            "one_off",
        +                            "monthly",
        +                            "annual"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "currency": {
        +                          "enum": [
        +                            "GBP",
        +                            "SGD",
        +                            "EUR",
        +                            "USD",
        +                            "CAD",
        +                            "AUD",
        +                            "NZD",
        +                            "MYR"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "display_name": {
        +                          "type": "string"
        +                        },
        +                        "price_local": {
        +                          "type": "number"
        +                        },
        +                        "tier_slug": {
        +                          "enum": [
        +                            "7_day_pass",
        +                            "solo",
        +                            "studio",
        +                            "practice"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "unlock_summary": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "tier_slug",
        +                        "display_name",
        +                        "price_local",
        +                        "currency",
        +                        "billing",
        +                        "unlock_summary"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "current_tier": {
        +                    "const": "free",
        +                    "default": "free",
        +                    "type": "string"
        +                  },
        +                  "pass_credit": {
        +                    "anyOf": [
        +                      {
        +                        "additionalProperties": false,
        +                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        +                        "properties": {
        +                          "amount_local": {
        +                            "type": "number"
        +                          },
        +                          "applies_to": {
        +                            "const": "solo_first_month",
        +                            "default": "solo_first_month",
        +                            "type": "string"
        +                          },
        +                          "currency": {
        +                            "type": "string"
        +                          },
        +                          "redeemable_until": {
        +                            "type": "string"
        +                          }
        +                        },
        +                        "required": [
        +                          "amount_local",
        +                          "currency",
        +                          "redeemable_until"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "pricing_url": {
        +                    "default": "https://civilquants.com/pricing",
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "available_tiers"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tos_url": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "upgrade_hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "warranty_disclaimer": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          }
        +        },
        +        "required": [
        +          "request_id",
        +          "issued_at",
        +          "tier"
        +        ],
        +        "type": "object"
        +      },
        +      "data": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Schema § 1.1 — the typed payload returned inside `MCPResponse[ComputeResult]`.\n\nFree-tier responses omit `drawings` (the downloadable CAD artefact\npointers — the paid differentiator); the bridge enforces this. The\n`audit_trail` and the inline `drawing` preview are present on BOTH tiers\n(V1 ALIGN / 60th-fire D + C). `text_summary` is bounded to 2000 chars —\nkeeps the LLM-facing summary token-cheap and forces longer narrative into\nBoQ row descriptions where it belongs. `warnings` is the non-fatal\ngeometry advisory list (both tiers).",
        +            "properties": {
        +              "assembly_slug": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "audit_trail": {
        +                "anyOf": [
        +                  {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.7 — paid-tier audit-trail entry.\n\nOne entry per BoQ row; `boq_row_index` ties to the row position in\n`ComputeResult.boq_rows`. `derivation` is the human-readable formula\nwalk-through; `formula` is the optional formal expression.",
        +                      "properties": {
        +                        "boq_row_index": {
        +                          "minimum": 0,
        +                          "type": "integer"
        +                        },
        +                        "derivation": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "formula": {
        +                          "anyOf": [
        +                            {
        +                              "type": "string"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ],
        +                          "default": null
        +                        },
        +                        "id": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "parameters_referenced": {
        +                          "items": {
        +                            "type": "string"
        +                          },
        +                          "type": "array"
        +                        }
        +                      },
        +                      "required": [
        +                        "id",
        +                        "boq_row_index",
        +                        "derivation"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "boq_rows": {
        +                "items": {
        +                  "additionalProperties": false,
        +                  "description": "Schema § 1.3 — a single bill row in the requested standard's format.\n\n`description` is the non-verbatim functional description per spec § 13.9 /\n§ 15 invariant — NEVER reproduces a standard's verbatim clause text.\n`rate` / `amount` ship null because rates are commodity data the customer\nowns; the engine's job is the measurement, not the pricing.",
        +                  "properties": {
        +                    "amount": {
        +                      "anyOf": [
        +                        {
        +                          "type": "number"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "attribution": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "audit_id": {
        +                      "anyOf": [
        +                        {
        +                          "type": "string"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "description": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "quantity": {
        +                      "minimum": 0,
        +                      "type": "number"
        +                    },
        +                    "rate": {
        +                      "anyOf": [
        +                        {
        +                          "type": "number"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "unit": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "work_section": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    }
        +                  },
        +                  "required": [
        +                    "work_section",
        +                    "description",
        +                    "quantity",
        +                    "unit",
        +                    "attribution"
        +                  ],
        +                  "type": "object"
        +                },
        +                "type": "array"
        +              },
        +              "drawing": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": false,
        +                    "description": "Schema § 1.6a — inline server-rendered SVG preview of the geometry.\n\nThe MCP mirror of the web ``/compute`` response's ``drawing`` field\n(``api.schemas.compute.DrawingRef``): the same on-screen dimensioned\ndrawing both tiers see in the workspace, surfaced on the MCP compute\nresponse so a chat client can render it inline (60th-fire item C). This\nis the on-screen preview — present on BOTH tiers per the free/paid\nboundary; the downloadable CAD artefacts (DXF / dimensioned PDF) remain\nthe paid differentiator via the export tools.\n\nDefined here rather than importing ``DrawingRef`` because the web\n``schemas`` package imports back into this module (``schemas.render``),\nso reusing it would create an import cycle — the MCP wire contract keeps\nits own copy, the same pattern as ``BoQRow`` / ``DrawingReference``.",
        +                    "properties": {
        +                      "entity_count": {
        +                        "minimum": 0,
        +                        "type": "integer"
        +                      },
        +                      "svg_b64": {
        +                        "minLength": 1,
        +                        "type": "string"
        +                      },
        +                      "unit_of_drawing": {
        +                        "const": "m",
        +                        "default": "m",
        +                        "type": "string"
        +                      },
        +                      "viewbox_height": {
        +                        "exclusiveMinimum": 0,
        +                        "type": "number"
        +                      },
        +                      "viewbox_width": {
        +                        "exclusiveMinimum": 0,
        +                        "type": "number"
        +                      },
        +                      "viewbox_x": {
        +                        "type": "number"
        +                      },
        +                      "viewbox_y": {
        +                        "type": "number"
        +                      }
        +                    },
        +                    "required": [
        +                      "svg_b64",
        +                      "viewbox_x",
        +                      "viewbox_y",
        +                      "viewbox_width",
        +                      "viewbox_height",
        +                      "entity_count"
        +                    ],
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "drawings": {
        +                "anyOf": [
        +                  {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.6 — paid-tier drawing artefact pointer.\n\n`url` is an R2-signed URL; expiry is carried in `_meta.deliverables.expires_at`\non the envelope (not duplicated here). `layers` is DXF-only; PDF/SVG\ncallers omit it.",
        +                      "properties": {
        +                        "drawing_type": {
        +                          "enum": [
        +                            "section",
        +                            "plan",
        +                            "elevation",
        +                            "isometric",
        +                            "detail"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "format": {
        +                          "enum": [
        +                            "DXF",
        +                            "PDF",
        +                            "SVG"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "layers": {
        +                          "anyOf": [
        +                            {
        +                              "items": {
        +                                "type": "string"
        +                              },
        +                              "type": "array"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ],
        +                          "default": null
        +                        },
        +                        "scale": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "sheet_size": {
        +                          "enum": [
        +                            "A1",
        +                            "A2",
        +                            "A3",
        +                            "A4"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "url": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "drawing_type",
        +                        "format",
        +                        "url",
        +                        "sheet_size",
        +                        "scale"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "parameters_used": {
        +                "additionalProperties": false,
        +                "description": "Schema § 1.2 — the parameter snapshot the engine actually used.\n\nSplits user-supplied values from engine defaults so customers can see\nwhich numbers came from them and which the engine filled in. Every\ndefaulted parameter SHOULD have a corresponding entry in `assumptions`\n— the bridge layer enforces this when wrapping engine output.",
        +                "properties": {
        +                  "assumptions": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "engine_defaults": {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  "resolved_from_description": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "additionalProperties": false,
        +                          "description": "Schema § 1.2 — a parameter resolved by the forgiving-input layer.\n\nPopulated by the Track B-Forgiving Haiku-4.5 resolution pass; until that\nlayer lands, instances are constructed only by tests. `source` distinguishes\nthe resolution path so customers can audit which fields were inferred.",
        +                          "properties": {
        +                            "confidence": {
        +                              "anyOf": [
        +                                {
        +                                  "enum": [
        +                                    "high",
        +                                    "medium",
        +                                    "low"
        +                                  ],
        +                                  "type": "string"
        +                                },
        +                                {
        +                                  "type": "null"
        +                                }
        +                              ],
        +                              "default": null
        +                            },
        +                            "field_name": {
        +                              "minLength": 1,
        +                              "type": "string"
        +                            },
        +                            "resolved_value": {},
        +                            "source": {
        +                              "enum": [
        +                                "description_field",
        +                                "haiku_resolution",
        +                                "engine_default"
        +                              ],
        +                              "type": "string"
        +                            }
        +                          },
        +                          "required": [
        +                            "field_name",
        +                            "resolved_value",
        +                            "source"
        +                          ],
        +                          "type": "object"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "user_supplied": {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  }
        +                },
        +                "type": "object"
        +              },
        +              "standard": {
        +                "enum": [
        +                  "CESMM4",
        +                  "NRM2",
        +                  "SMM7",
        +                  "MMHW"
        +                ],
        +                "type": "string"
        +              },
        +              "text_summary": {
        +                "maxLength": 2000,
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "totals_summary": {
        +                "additionalProperties": false,
        +                "description": "Schema § 1.4 — totals_summary as a typed wrapper around the free-form dict.\n\nWire shape is a flat object (`{\"concrete_m3\": {...}, \"rebar_t\": {...}}`).\nWe model it as `RootModel`-equivalent via `model_config(extra=\"allow\")`\n+ a single `__root__`-style `entries` dict. Pydantic v2 recommends\n`RootModel` for free-form roots; using a wrapper class keeps the import\nsurface uniform with the rest of this module.",
        +                "properties": {
        +                  "entries": {
        +                    "additionalProperties": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.4 — single material/work-class total entry.",
        +                      "properties": {
        +                        "quantity": {
        +                          "minimum": 0,
        +                          "type": "number"
        +                        },
        +                        "unit": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "quantity",
        +                        "unit"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "object"
        +                  }
        +                },
        +                "type": "object"
        +              },
        +              "warnings": {
        +                "items": {
        +                  "additionalProperties": false,
        +                  "description": "Schema § 1.8 — a non-fatal geometry advisory (56th-fire T2).\n\nThe wire projection of the engine's `core.GeometryWarning`. Advisory only:\na warning NEVER changes a measured quantity — it flags geometry that is\nvalid but likely a mistake (e.g. a stale dependent-height default). Present\non BOTH tiers — a correctness/safety signal, not a paid feature.",
        +                  "properties": {
        +                    "affected_params": {
        +                      "items": {
        +                        "type": "string"
        +                      },
        +                      "type": "array"
        +                    },
        +                    "code": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "detail": {
        +                      "additionalProperties": {
        +                        "type": "number"
        +                      },
        +                      "type": "object"
        +                    },
        +                    "message": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "severity": {
        +                      "enum": [
        +                        "info",
        +                        "advisory",
        +                        "caution"
        +                      ],
        +                      "type": "string"
        +                    }
        +                  },
        +                  "required": [
        +                    "code",
        +                    "severity",
        +                    "message"
        +                  ],
        +                  "type": "object"
        +                },
        +                "type": "array"
        +              }
        +            },
        +            "required": [
        +              "assembly_slug",
        +              "standard",
        +              "parameters_used",
        +              "boq_rows",
        +              "totals_summary",
        +              "text_summary"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      },
        +      "error": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        +            "properties": {
        +              "code": {
        +                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        +                "enum": [
        +                  "RATE_LIMIT_EXCEEDED",
        +                  "TIER_INSUFFICIENT",
        +                  "INVALID_INPUT",
        +                  "SCHEMA_VERSION_MISMATCH",
        +                  "SCHEMA_INVARIANT_VIOLATION",
        +                  "UPSTREAM_TIMEOUT",
        +                  "BACKEND_FAILURE",
        +                  "IP_BLOCKED",
        +                  "RESOURCE_NOT_FOUND",
        +                  "RENDER_FAILURE",
        +                  "OCR_LOW_CONFIDENCE",
        +                  "MANUAL_REVIEW_REQUIRED",
        +                  "ACCEPTANCE_REQUIRED",
        +                  "INVALID_TOKEN"
        +                ],
        +                "type": "string"
        +              },
        +              "details": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "message": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "recoverable": {
        +                "type": "boolean"
        +              },
        +              "retry_after_seconds": {
        +                "anyOf": [
        +                  {
        +                    "minimum": 0,
        +                    "type": "integer"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              }
        +            },
        +            "required": [
        +              "code",
        +              "message",
        +              "recoverable"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      }
        +    },
        +    "required": [
        +      "_meta"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "_meta": {
        +        "additionalProperties": false,
        +        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        +        "properties": {
        +          "deliverables": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        +                "properties": {
        +                  "docx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "dxf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "expires_at": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  },
        +                  "pdf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "xlsx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "expires_at"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "document_id": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "issued_at": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "rate_limit_remaining": {
        +            "anyOf": [
        +              {
        +                "minimum": 0,
        +                "type": "integer"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "request_id": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "schema_version": {
        +            "const": "1.0.0",
        +            "default": "1.0.0",
        +            "type": "string"
        +          },
        +          "scope_boundary": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        +                "properties": {
        +                  "not_in_scope": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "produced": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "recommended_companions": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "type": "string"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "produced",
        +                  "not_in_scope"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tier": {
        +            "enum": [
        +              "free",
        +              "paid"
        +            ],
        +            "type": "string"
        +          },
        +          "tier_upgrade": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        +                "properties": {
        +                  "available_tiers": {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        +                      "properties": {
        +                        "billing": {
        +                          "enum": [
        +                            "one_off",
        +                            "monthly",
        +                            "annual"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "currency": {
        +                          "enum": [
        +                            "GBP",
        +                            "SGD",
        +                            "EUR",
        +                            "USD",
        +                            "CAD",
        +                            "AUD",
        +                            "NZD",
        +                            "MYR"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "display_name": {
        +                          "type": "string"
        +                        },
        +                        "price_local": {
        +                          "type": "number"
        +                        },
        +                        "tier_slug": {
        +                          "enum": [
        +                            "7_day_pass",
        +                            "solo",
        +                            "studio",
        +                            "practice"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "unlock_summary": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "tier_slug",
        +                        "display_name",
        +                        "price_local",
        +                        "currency",
        +                        "billing",
        +                        "unlock_summary"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "current_tier": {
        +                    "const": "free",
        +                    "default": "free",
        +                    "type": "string"
        +                  },
        +                  "pass_credit": {
        +                    "anyOf": [
        +                      {
        +                        "additionalProperties": false,
        +                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        +                        "properties": {
        +                          "amount_local": {
        +                            "type": "number"
        +                          },
        +                          "applies_to": {
        +                            "const": "solo_first_month",
        +                            "default": "solo_first_month",
        +                            "type": "string"
        +                          },
        +                          "currency": {
        +                            "type": "string"
        +                          },
        +                          "redeemable_until": {
        +                            "type": "string"
        +                          }
        +                        },
        +                        "required": [
        +                          "amount_local",
        +                          "currency",
        +                          "redeemable_until"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "pricing_url": {
        +                    "default": "https://civilquants.com/pricing",
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "available_tiers"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tos_url": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "upgrade_hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "warranty_disclaimer": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          }
        +        },
        +        "required": [
        +          "request_id",
        +          "issued_at",
        +          "tier"
        +        ],
        +        "type": "object"
        +      },
        +      "data": {
        +        "default": null,
        +        "title": "Data"
        +      },
        +      "error": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        +            "properties": {
        +              "code": {
        +                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        +                "enum": [
        +                  "RATE_LIMIT_EXCEEDED",
        +                  "TIER_INSUFFICIENT",
        +                  "INVALID_INPUT",
        +                  "SCHEMA_VERSION_MISMATCH",
        +                  "SCHEMA_INVARIANT_VIOLATION",
        +                  "UPSTREAM_TIMEOUT",
        +                  "BACKEND_FAILURE",
        +                  "IP_BLOCKED",
        +                  "RESOURCE_NOT_FOUND",
        +                  "RENDER_FAILURE",
        +                  "OCR_LOW_CONFIDENCE",
        +                  "MANUAL_REVIEW_REQUIRED",
        +                  "ACCEPTANCE_REQUIRED",
        +                  "INVALID_TOKEN"
        +                ],
        +                "type": "string"
        +              },
        +              "details": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "message": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "recoverable": {
        +                "type": "boolean"
        +              },
        +              "retry_after_seconds": {
        +                "anyOf": [
        +                  {
        +                    "minimum": 0,
        +                    "type": "integer"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              }
        +            },
        +            "required": [
        +              "code",
        +              "message",
        +              "recoverable"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      }
        +    },
        +    "required": [
        +      "_meta"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedcompute_swale3 fields changed
      • addedInput schema / properties / deliverables
        Added value: +{
        +  "anyOf": [
        +    {
        +      "items": {
        +        "const": "xlsx",
        +        "type": "string"
        +      },
        +      "type": "array"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null
        +}
      • addedInput schema / properties / output_mode
        Added value: +{
        +  "default": "full_json",
        +  "enum": [
        +    "summary",
        +    "boq",
        +    "boq_with_backup",
        +    "full_json"
        +  ],
        +  "type": "string"
        +}
      • changedOutput schema / properties / result / anyOf
        Previous value: -[
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "_meta": {
        -        "additionalProperties": false,
        -        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        -        "properties": {
        -          "deliverables": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        -                "properties": {
        -                  "docx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "dxf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "expires_at": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  },
        -                  "pdf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "xlsx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "expires_at"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "document_id": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "issued_at": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "rate_limit_remaining": {
        -            "anyOf": [
        -              {
        -                "minimum": 0,
        -                "type": "integer"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "request_id": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "schema_version": {
        -            "const": "1.0.0",
        -            "default": "1.0.0",
        -            "type": "string"
        -          },
        -          "scope_boundary": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        -                "properties": {
        -                  "not_in_scope": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "produced": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "recommended_companions": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "type": "string"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "produced",
        -                  "not_in_scope"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tier": {
        -            "enum": [
        -              "free",
        -              "paid"
        -            ],
        -            "type": "string"
        -          },
        -          "tier_upgrade": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        -                "properties": {
        -                  "available_tiers": {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        -                      "properties": {
        -                        "billing": {
        -                          "enum": [
        -                            "one_off",
        -                            "monthly",
        -                            "annual"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "currency": {
        -                          "enum": [
        -                            "GBP",
        -                            "SGD",
        -                            "EUR",
        -                            "USD",
        -                            "CAD",
        -                            "AUD",
        -                            "NZD",
        -                            "MYR"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "display_name": {
        -                          "type": "string"
        -                        },
        -                        "price_local": {
        -                          "type": "number"
        -                        },
        -                        "tier_slug": {
        -                          "enum": [
        -                            "7_day_pass",
        -                            "solo",
        -                            "studio",
        -                            "practice"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "unlock_summary": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "tier_slug",
        -                        "display_name",
        -                        "price_local",
        -                        "currency",
        -                        "billing",
        -                        "unlock_summary"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "current_tier": {
        -                    "const": "free",
        -                    "default": "free",
        -                    "type": "string"
        -                  },
        -                  "pass_credit": {
        -                    "anyOf": [
        -                      {
        -                        "additionalProperties": false,
        -                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        -                        "properties": {
        -                          "amount_local": {
        -                            "type": "number"
        -                          },
        -                          "applies_to": {
        -                            "const": "solo_first_month",
        -                            "default": "solo_first_month",
        -                            "type": "string"
        -                          },
        -                          "currency": {
        -                            "type": "string"
        -                          },
        -                          "redeemable_until": {
        -                            "type": "string"
        -                          }
        -                        },
        -                        "required": [
        -                          "amount_local",
        -                          "currency",
        -                          "redeemable_until"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "pricing_url": {
        -                    "default": "https://civilquants.com/pricing",
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "available_tiers"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tos_url": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "upgrade_hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "warranty_disclaimer": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          }
        -        },
        -        "required": [
        -          "request_id",
        -          "issued_at",
        -          "tier"
        -        ],
        -        "type": "object"
        -      },
        -      "data": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Schema § 1.1 — the typed payload returned inside `MCPResponse[ComputeResult]`.\n\nFree-tier responses MUST omit `drawings` and `audit_trail` (the bridge\nenforces this); paid-tier responses populate both. `text_summary` is\nbounded to 2000 chars — keeps the LLM-facing summary token-cheap and\nforces longer narrative into BoQ row descriptions where it belongs.\n`warnings` is the non-fatal geometry advisory list (both tiers).",
        -            "properties": {
        -              "assembly_slug": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "audit_trail": {
        -                "anyOf": [
        -                  {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.7 — paid-tier audit-trail entry.\n\nOne entry per BoQ row; `boq_row_index` ties to the row position in\n`ComputeResult.boq_rows`. `derivation` is the human-readable formula\nwalk-through; `formula` is the optional formal expression.",
        -                      "properties": {
        -                        "boq_row_index": {
        -                          "minimum": 0,
        -                          "type": "integer"
        -                        },
        -                        "derivation": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "formula": {
        -                          "anyOf": [
        -                            {
        -                              "type": "string"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ],
        -                          "default": null
        -                        },
        -                        "id": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "parameters_referenced": {
        -                          "items": {
        -                            "type": "string"
        -                          },
        -                          "type": "array"
        -                        }
        -                      },
        -                      "required": [
        -                        "id",
        -                        "boq_row_index",
        -                        "derivation"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "boq_rows": {
        -                "items": {
        -                  "additionalProperties": false,
        -                  "description": "Schema § 1.3 — a single bill row in the requested standard's format.\n\n`description` is the non-verbatim functional description per spec § 13.9 /\n§ 15 invariant — NEVER reproduces a standard's verbatim clause text.\n`rate` / `amount` ship null because rates are commodity data the customer\nowns; the engine's job is the measurement, not the pricing.",
        -                  "properties": {
        -                    "amount": {
        -                      "anyOf": [
        -                        {
        -                          "type": "number"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "attribution": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "audit_id": {
        -                      "anyOf": [
        -                        {
        -                          "type": "string"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "description": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "quantity": {
        -                      "minimum": 0,
        -                      "type": "number"
        -                    },
        -                    "rate": {
        -                      "anyOf": [
        -                        {
        -                          "type": "number"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "unit": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "work_section": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    }
        -                  },
        -                  "required": [
        -                    "work_section",
        -                    "description",
        -                    "quantity",
        -                    "unit",
        -                    "attribution"
        -                  ],
        -                  "type": "object"
        -                },
        -                "type": "array"
        -              },
        -              "drawings": {
        -                "anyOf": [
        -                  {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.6 — paid-tier drawing artefact pointer.\n\n`url` is an R2-signed URL; expiry is carried in `_meta.deliverables.expires_at`\non the envelope (not duplicated here). `layers` is DXF-only; PDF/SVG\ncallers omit it.",
        -                      "properties": {
        -                        "drawing_type": {
        -                          "enum": [
        -                            "section",
        -                            "plan",
        -                            "elevation",
        -                            "isometric",
        -                            "detail"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "format": {
        -                          "enum": [
        -                            "DXF",
        -                            "PDF",
        -                            "SVG"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "layers": {
        -                          "anyOf": [
        -                            {
        -                              "items": {
        -                                "type": "string"
        -                              },
        -                              "type": "array"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ],
        -                          "default": null
        -                        },
        -                        "scale": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "sheet_size": {
        -                          "enum": [
        -                            "A1",
        -                            "A2",
        -                            "A3",
        -                            "A4"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "url": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "drawing_type",
        -                        "format",
        -                        "url",
        -                        "sheet_size",
        -                        "scale"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "parameters_used": {
        -                "additionalProperties": false,
        -                "description": "Schema § 1.2 — the parameter snapshot the engine actually used.\n\nSplits user-supplied values from engine defaults so customers can see\nwhich numbers came from them and which the engine filled in. Every\ndefaulted parameter SHOULD have a corresponding entry in `assumptions`\n— the bridge layer enforces this when wrapping engine output.",
        -                "properties": {
        -                  "assumptions": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "engine_defaults": {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  "resolved_from_description": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "additionalProperties": false,
        -                          "description": "Schema § 1.2 — a parameter resolved by the forgiving-input layer.\n\nPopulated by the Track B-Forgiving Haiku-4.5 resolution pass; until that\nlayer lands, instances are constructed only by tests. `source` distinguishes\nthe resolution path so customers can audit which fields were inferred.",
        -                          "properties": {
        -                            "confidence": {
        -                              "anyOf": [
        -                                {
        -                                  "enum": [
        -                                    "high",
        -                                    "medium",
        -                                    "low"
        -                                  ],
        -                                  "type": "string"
        -                                },
        -                                {
        -                                  "type": "null"
        -                                }
        -                              ],
        -                              "default": null
        -                            },
        -                            "field_name": {
        -                              "minLength": 1,
        -                              "type": "string"
        -                            },
        -                            "resolved_value": {},
        -                            "source": {
        -                              "enum": [
        -                                "description_field",
        -                                "haiku_resolution",
        -                                "engine_default"
        -                              ],
        -                              "type": "string"
        -                            }
        -                          },
        -                          "required": [
        -                            "field_name",
        -                            "resolved_value",
        -                            "source"
        -                          ],
        -                          "type": "object"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "user_supplied": {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  }
        -                },
        -                "type": "object"
        -              },
        -              "standard": {
        -                "enum": [
        -                  "CESMM4",
        -                  "NRM2",
        -                  "SMM7",
        -                  "MMHW"
        -                ],
        -                "type": "string"
        -              },
        -              "text_summary": {
        -                "maxLength": 2000,
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "totals_summary": {
        -                "additionalProperties": false,
        -                "description": "Schema § 1.4 — totals_summary as a typed wrapper around the free-form dict.\n\nWire shape is a flat object (`{\"concrete_m3\": {...}, \"rebar_t\": {...}}`).\nWe model it as `RootModel`-equivalent via `model_config(extra=\"allow\")`\n+ a single `__root__`-style `entries` dict. Pydantic v2 recommends\n`RootModel` for free-form roots; using a wrapper class keeps the import\nsurface uniform with the rest of this module.",
        -                "properties": {
        -                  "entries": {
        -                    "additionalProperties": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.4 — single material/work-class total entry.",
        -                      "properties": {
        -                        "quantity": {
        -                          "minimum": 0,
        -                          "type": "number"
        -                        },
        -                        "unit": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "quantity",
        -                        "unit"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "object"
        -                  }
        -                },
        -                "type": "object"
        -              },
        -              "warnings": {
        -                "items": {
        -                  "additionalProperties": false,
        -                  "description": "Schema § 1.8 — a non-fatal geometry advisory (56th-fire T2).\n\nThe wire projection of the engine's `core.GeometryWarning`. Advisory only:\na warning NEVER changes a measured quantity — it flags geometry that is\nvalid but likely a mistake (e.g. a stale dependent-height default). Present\non BOTH tiers — a correctness/safety signal, not a paid feature.",
        -                  "properties": {
        -                    "affected_params": {
        -                      "items": {
        -                        "type": "string"
        -                      },
        -                      "type": "array"
        -                    },
        -                    "code": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "detail": {
        -                      "additionalProperties": {
        -                        "type": "number"
        -                      },
        -                      "type": "object"
        -                    },
        -                    "message": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "severity": {
        -                      "enum": [
        -                        "info",
        -                        "advisory",
        -                        "caution"
        -                      ],
        -                      "type": "string"
        -                    }
        -                  },
        -                  "required": [
        -                    "code",
        -                    "severity",
        -                    "message"
        -                  ],
        -                  "type": "object"
        -                },
        -                "type": "array"
        -              }
        -            },
        -            "required": [
        -              "assembly_slug",
        -              "standard",
        -              "parameters_used",
        -              "boq_rows",
        -              "totals_summary",
        -              "text_summary"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      },
        -      "error": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        -            "properties": {
        -              "code": {
        -                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        -                "enum": [
        -                  "RATE_LIMIT_EXCEEDED",
        -                  "TIER_INSUFFICIENT",
        -                  "INVALID_INPUT",
        -                  "SCHEMA_VERSION_MISMATCH",
        -                  "SCHEMA_INVARIANT_VIOLATION",
        -                  "UPSTREAM_TIMEOUT",
        -                  "BACKEND_FAILURE",
        -                  "IP_BLOCKED",
        -                  "RESOURCE_NOT_FOUND",
        -                  "RENDER_FAILURE",
        -                  "OCR_LOW_CONFIDENCE",
        -                  "MANUAL_REVIEW_REQUIRED",
        -                  "ACCEPTANCE_REQUIRED",
        -                  "INVALID_TOKEN"
        -                ],
        -                "type": "string"
        -              },
        -              "details": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "message": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "recoverable": {
        -                "type": "boolean"
        -              },
        -              "retry_after_seconds": {
        -                "anyOf": [
        -                  {
        -                    "minimum": 0,
        -                    "type": "integer"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              }
        -            },
        -            "required": [
        -              "code",
        -              "message",
        -              "recoverable"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      }
        -    },
        -    "required": [
        -      "_meta"
        -    ],
        -    "type": "object"
        -  },
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "_meta": {
        -        "additionalProperties": false,
        -        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        -        "properties": {
        -          "deliverables": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        -                "properties": {
        -                  "docx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "dxf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "expires_at": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  },
        -                  "pdf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "xlsx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "expires_at"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "document_id": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "issued_at": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "rate_limit_remaining": {
        -            "anyOf": [
        -              {
        -                "minimum": 0,
        -                "type": "integer"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "request_id": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "schema_version": {
        -            "const": "1.0.0",
        -            "default": "1.0.0",
        -            "type": "string"
        -          },
        -          "scope_boundary": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        -                "properties": {
        -                  "not_in_scope": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "produced": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "recommended_companions": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "type": "string"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "produced",
        -                  "not_in_scope"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tier": {
        -            "enum": [
        -              "free",
        -              "paid"
        -            ],
        -            "type": "string"
        -          },
        -          "tier_upgrade": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        -                "properties": {
        -                  "available_tiers": {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        -                      "properties": {
        -                        "billing": {
        -                          "enum": [
        -                            "one_off",
        -                            "monthly",
        -                            "annual"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "currency": {
        -                          "enum": [
        -                            "GBP",
        -                            "SGD",
        -                            "EUR",
        -                            "USD",
        -                            "CAD",
        -                            "AUD",
        -                            "NZD",
        -                            "MYR"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "display_name": {
        -                          "type": "string"
        -                        },
        -                        "price_local": {
        -                          "type": "number"
        -                        },
        -                        "tier_slug": {
        -                          "enum": [
        -                            "7_day_pass",
        -                            "solo",
        -                            "studio",
        -                            "practice"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "unlock_summary": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "tier_slug",
        -                        "display_name",
        -                        "price_local",
        -                        "currency",
        -                        "billing",
        -                        "unlock_summary"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "current_tier": {
        -                    "const": "free",
        -                    "default": "free",
        -                    "type": "string"
        -                  },
        -                  "pass_credit": {
        -                    "anyOf": [
        -                      {
        -                        "additionalProperties": false,
        -                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        -                        "properties": {
        -                          "amount_local": {
        -                            "type": "number"
        -                          },
        -                          "applies_to": {
        -                            "const": "solo_first_month",
        -                            "default": "solo_first_month",
        -                            "type": "string"
        -                          },
        -                          "currency": {
        -                            "type": "string"
        -                          },
        -                          "redeemable_until": {
        -                            "type": "string"
        -                          }
        -                        },
        -                        "required": [
        -                          "amount_local",
        -                          "currency",
        -                          "redeemable_until"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "pricing_url": {
        -                    "default": "https://civilquants.com/pricing",
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "available_tiers"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tos_url": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "upgrade_hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "warranty_disclaimer": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          }
        -        },
        -        "required": [
        -          "request_id",
        -          "issued_at",
        -          "tier"
        -        ],
        -        "type": "object"
        -      },
        -      "data": {
        -        "default": null,
        -        "title": "Data"
        -      },
        -      "error": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        -            "properties": {
        -              "code": {
        -                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        -                "enum": [
        -                  "RATE_LIMIT_EXCEEDED",
        -                  "TIER_INSUFFICIENT",
        -                  "INVALID_INPUT",
        -                  "SCHEMA_VERSION_MISMATCH",
        -                  "SCHEMA_INVARIANT_VIOLATION",
        -                  "UPSTREAM_TIMEOUT",
        -                  "BACKEND_FAILURE",
        -                  "IP_BLOCKED",
        -                  "RESOURCE_NOT_FOUND",
        -                  "RENDER_FAILURE",
        -                  "OCR_LOW_CONFIDENCE",
        -                  "MANUAL_REVIEW_REQUIRED",
        -                  "ACCEPTANCE_REQUIRED",
        -                  "INVALID_TOKEN"
        -                ],
        -                "type": "string"
        -              },
        -              "details": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "message": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "recoverable": {
        -                "type": "boolean"
        -              },
        -              "retry_after_seconds": {
        -                "anyOf": [
        -                  {
        -                    "minimum": 0,
        -                    "type": "integer"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              }
        -            },
        -            "required": [
        -              "code",
        -              "message",
        -              "recoverable"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      }
        -    },
        -    "required": [
        -      "_meta"
        -    ],
        -    "type": "object"
        -  }
        -]New value: +[
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "_meta": {
        +        "additionalProperties": false,
        +        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        +        "properties": {
        +          "deliverables": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        +                "properties": {
        +                  "docx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "dxf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "expires_at": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  },
        +                  "pdf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "xlsx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "expires_at"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "document_id": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "issued_at": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "rate_limit_remaining": {
        +            "anyOf": [
        +              {
        +                "minimum": 0,
        +                "type": "integer"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "request_id": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "schema_version": {
        +            "const": "1.0.0",
        +            "default": "1.0.0",
        +            "type": "string"
        +          },
        +          "scope_boundary": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        +                "properties": {
        +                  "not_in_scope": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "produced": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "recommended_companions": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "type": "string"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "produced",
        +                  "not_in_scope"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tier": {
        +            "enum": [
        +              "free",
        +              "paid"
        +            ],
        +            "type": "string"
        +          },
        +          "tier_upgrade": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        +                "properties": {
        +                  "available_tiers": {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        +                      "properties": {
        +                        "billing": {
        +                          "enum": [
        +                            "one_off",
        +                            "monthly",
        +                            "annual"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "currency": {
        +                          "enum": [
        +                            "GBP",
        +                            "SGD",
        +                            "EUR",
        +                            "USD",
        +                            "CAD",
        +                            "AUD",
        +                            "NZD",
        +                            "MYR"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "display_name": {
        +                          "type": "string"
        +                        },
        +                        "price_local": {
        +                          "type": "number"
        +                        },
        +                        "tier_slug": {
        +                          "enum": [
        +                            "7_day_pass",
        +                            "solo",
        +                            "studio",
        +                            "practice"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "unlock_summary": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "tier_slug",
        +                        "display_name",
        +                        "price_local",
        +                        "currency",
        +                        "billing",
        +                        "unlock_summary"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "current_tier": {
        +                    "const": "free",
        +                    "default": "free",
        +                    "type": "string"
        +                  },
        +                  "pass_credit": {
        +                    "anyOf": [
        +                      {
        +                        "additionalProperties": false,
        +                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        +                        "properties": {
        +                          "amount_local": {
        +                            "type": "number"
        +                          },
        +                          "applies_to": {
        +                            "const": "solo_first_month",
        +                            "default": "solo_first_month",
        +                            "type": "string"
        +                          },
        +                          "currency": {
        +                            "type": "string"
        +                          },
        +                          "redeemable_until": {
        +                            "type": "string"
        +                          }
        +                        },
        +                        "required": [
        +                          "amount_local",
        +                          "currency",
        +                          "redeemable_until"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "pricing_url": {
        +                    "default": "https://civilquants.com/pricing",
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "available_tiers"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tos_url": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "upgrade_hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "warranty_disclaimer": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          }
        +        },
        +        "required": [
        +          "request_id",
        +          "issued_at",
        +          "tier"
        +        ],
        +        "type": "object"
        +      },
        +      "data": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Schema § 1.1 — the typed payload returned inside `MCPResponse[ComputeResult]`.\n\nFree-tier responses omit `drawings` (the downloadable CAD artefact\npointers — the paid differentiator); the bridge enforces this. The\n`audit_trail` and the inline `drawing` preview are present on BOTH tiers\n(V1 ALIGN / 60th-fire D + C). `text_summary` is bounded to 2000 chars —\nkeeps the LLM-facing summary token-cheap and forces longer narrative into\nBoQ row descriptions where it belongs. `warnings` is the non-fatal\ngeometry advisory list (both tiers).",
        +            "properties": {
        +              "assembly_slug": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "audit_trail": {
        +                "anyOf": [
        +                  {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.7 — paid-tier audit-trail entry.\n\nOne entry per BoQ row; `boq_row_index` ties to the row position in\n`ComputeResult.boq_rows`. `derivation` is the human-readable formula\nwalk-through; `formula` is the optional formal expression.",
        +                      "properties": {
        +                        "boq_row_index": {
        +                          "minimum": 0,
        +                          "type": "integer"
        +                        },
        +                        "derivation": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "formula": {
        +                          "anyOf": [
        +                            {
        +                              "type": "string"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ],
        +                          "default": null
        +                        },
        +                        "id": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "parameters_referenced": {
        +                          "items": {
        +                            "type": "string"
        +                          },
        +                          "type": "array"
        +                        }
        +                      },
        +                      "required": [
        +                        "id",
        +                        "boq_row_index",
        +                        "derivation"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "boq_rows": {
        +                "items": {
        +                  "additionalProperties": false,
        +                  "description": "Schema § 1.3 — a single bill row in the requested standard's format.\n\n`description` is the non-verbatim functional description per spec § 13.9 /\n§ 15 invariant — NEVER reproduces a standard's verbatim clause text.\n`rate` / `amount` ship null because rates are commodity data the customer\nowns; the engine's job is the measurement, not the pricing.",
        +                  "properties": {
        +                    "amount": {
        +                      "anyOf": [
        +                        {
        +                          "type": "number"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "attribution": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "audit_id": {
        +                      "anyOf": [
        +                        {
        +                          "type": "string"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "description": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "quantity": {
        +                      "minimum": 0,
        +                      "type": "number"
        +                    },
        +                    "rate": {
        +                      "anyOf": [
        +                        {
        +                          "type": "number"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "unit": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "work_section": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    }
        +                  },
        +                  "required": [
        +                    "work_section",
        +                    "description",
        +                    "quantity",
        +                    "unit",
        +                    "attribution"
        +                  ],
        +                  "type": "object"
        +                },
        +                "type": "array"
        +              },
        +              "drawing": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": false,
        +                    "description": "Schema § 1.6a — inline server-rendered SVG preview of the geometry.\n\nThe MCP mirror of the web ``/compute`` response's ``drawing`` field\n(``api.schemas.compute.DrawingRef``): the same on-screen dimensioned\ndrawing both tiers see in the workspace, surfaced on the MCP compute\nresponse so a chat client can render it inline (60th-fire item C). This\nis the on-screen preview — present on BOTH tiers per the free/paid\nboundary; the downloadable CAD artefacts (DXF / dimensioned PDF) remain\nthe paid differentiator via the export tools.\n\nDefined here rather than importing ``DrawingRef`` because the web\n``schemas`` package imports back into this module (``schemas.render``),\nso reusing it would create an import cycle — the MCP wire contract keeps\nits own copy, the same pattern as ``BoQRow`` / ``DrawingReference``.",
        +                    "properties": {
        +                      "entity_count": {
        +                        "minimum": 0,
        +                        "type": "integer"
        +                      },
        +                      "svg_b64": {
        +                        "minLength": 1,
        +                        "type": "string"
        +                      },
        +                      "unit_of_drawing": {
        +                        "const": "m",
        +                        "default": "m",
        +                        "type": "string"
        +                      },
        +                      "viewbox_height": {
        +                        "exclusiveMinimum": 0,
        +                        "type": "number"
        +                      },
        +                      "viewbox_width": {
        +                        "exclusiveMinimum": 0,
        +                        "type": "number"
        +                      },
        +                      "viewbox_x": {
        +                        "type": "number"
        +                      },
        +                      "viewbox_y": {
        +                        "type": "number"
        +                      }
        +                    },
        +                    "required": [
        +                      "svg_b64",
        +                      "viewbox_x",
        +                      "viewbox_y",
        +                      "viewbox_width",
        +                      "viewbox_height",
        +                      "entity_count"
        +                    ],
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "drawings": {
        +                "anyOf": [
        +                  {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.6 — paid-tier drawing artefact pointer.\n\n`url` is an R2-signed URL; expiry is carried in `_meta.deliverables.expires_at`\non the envelope (not duplicated here). `layers` is DXF-only; PDF/SVG\ncallers omit it.",
        +                      "properties": {
        +                        "drawing_type": {
        +                          "enum": [
        +                            "section",
        +                            "plan",
        +                            "elevation",
        +                            "isometric",
        +                            "detail"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "format": {
        +                          "enum": [
        +                            "DXF",
        +                            "PDF",
        +                            "SVG"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "layers": {
        +                          "anyOf": [
        +                            {
        +                              "items": {
        +                                "type": "string"
        +                              },
        +                              "type": "array"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ],
        +                          "default": null
        +                        },
        +                        "scale": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "sheet_size": {
        +                          "enum": [
        +                            "A1",
        +                            "A2",
        +                            "A3",
        +                            "A4"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "url": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "drawing_type",
        +                        "format",
        +                        "url",
        +                        "sheet_size",
        +                        "scale"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "parameters_used": {
        +                "additionalProperties": false,
        +                "description": "Schema § 1.2 — the parameter snapshot the engine actually used.\n\nSplits user-supplied values from engine defaults so customers can see\nwhich numbers came from them and which the engine filled in. Every\ndefaulted parameter SHOULD have a corresponding entry in `assumptions`\n— the bridge layer enforces this when wrapping engine output.",
        +                "properties": {
        +                  "assumptions": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "engine_defaults": {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  "resolved_from_description": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "additionalProperties": false,
        +                          "description": "Schema § 1.2 — a parameter resolved by the forgiving-input layer.\n\nPopulated by the Track B-Forgiving Haiku-4.5 resolution pass; until that\nlayer lands, instances are constructed only by tests. `source` distinguishes\nthe resolution path so customers can audit which fields were inferred.",
        +                          "properties": {
        +                            "confidence": {
        +                              "anyOf": [
        +                                {
        +                                  "enum": [
        +                                    "high",
        +                                    "medium",
        +                                    "low"
        +                                  ],
        +                                  "type": "string"
        +                                },
        +                                {
        +                                  "type": "null"
        +                                }
        +                              ],
        +                              "default": null
        +                            },
        +                            "field_name": {
        +                              "minLength": 1,
        +                              "type": "string"
        +                            },
        +                            "resolved_value": {},
        +                            "source": {
        +                              "enum": [
        +                                "description_field",
        +                                "haiku_resolution",
        +                                "engine_default"
        +                              ],
        +                              "type": "string"
        +                            }
        +                          },
        +                          "required": [
        +                            "field_name",
        +                            "resolved_value",
        +                            "source"
        +                          ],
        +                          "type": "object"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "user_supplied": {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  }
        +                },
        +                "type": "object"
        +              },
        +              "standard": {
        +                "enum": [
        +                  "CESMM4",
        +                  "NRM2",
        +                  "SMM7",
        +                  "MMHW"
        +                ],
        +                "type": "string"
        +              },
        +              "text_summary": {
        +                "maxLength": 2000,
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "totals_summary": {
        +                "additionalProperties": false,
        +                "description": "Schema § 1.4 — totals_summary as a typed wrapper around the free-form dict.\n\nWire shape is a flat object (`{\"concrete_m3\": {...}, \"rebar_t\": {...}}`).\nWe model it as `RootModel`-equivalent via `model_config(extra=\"allow\")`\n+ a single `__root__`-style `entries` dict. Pydantic v2 recommends\n`RootModel` for free-form roots; using a wrapper class keeps the import\nsurface uniform with the rest of this module.",
        +                "properties": {
        +                  "entries": {
        +                    "additionalProperties": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.4 — single material/work-class total entry.",
        +                      "properties": {
        +                        "quantity": {
        +                          "minimum": 0,
        +                          "type": "number"
        +                        },
        +                        "unit": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "quantity",
        +                        "unit"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "object"
        +                  }
        +                },
        +                "type": "object"
        +              },
        +              "warnings": {
        +                "items": {
        +                  "additionalProperties": false,
        +                  "description": "Schema § 1.8 — a non-fatal geometry advisory (56th-fire T2).\n\nThe wire projection of the engine's `core.GeometryWarning`. Advisory only:\na warning NEVER changes a measured quantity — it flags geometry that is\nvalid but likely a mistake (e.g. a stale dependent-height default). Present\non BOTH tiers — a correctness/safety signal, not a paid feature.",
        +                  "properties": {
        +                    "affected_params": {
        +                      "items": {
        +                        "type": "string"
        +                      },
        +                      "type": "array"
        +                    },
        +                    "code": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "detail": {
        +                      "additionalProperties": {
        +                        "type": "number"
        +                      },
        +                      "type": "object"
        +                    },
        +                    "message": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "severity": {
        +                      "enum": [
        +                        "info",
        +                        "advisory",
        +                        "caution"
        +                      ],
        +                      "type": "string"
        +                    }
        +                  },
        +                  "required": [
        +                    "code",
        +                    "severity",
        +                    "message"
        +                  ],
        +                  "type": "object"
        +                },
        +                "type": "array"
        +              }
        +            },
        +            "required": [
        +              "assembly_slug",
        +              "standard",
        +              "parameters_used",
        +              "boq_rows",
        +              "totals_summary",
        +              "text_summary"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      },
        +      "error": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        +            "properties": {
        +              "code": {
        +                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        +                "enum": [
        +                  "RATE_LIMIT_EXCEEDED",
        +                  "TIER_INSUFFICIENT",
        +                  "INVALID_INPUT",
        +                  "SCHEMA_VERSION_MISMATCH",
        +                  "SCHEMA_INVARIANT_VIOLATION",
        +                  "UPSTREAM_TIMEOUT",
        +                  "BACKEND_FAILURE",
        +                  "IP_BLOCKED",
        +                  "RESOURCE_NOT_FOUND",
        +                  "RENDER_FAILURE",
        +                  "OCR_LOW_CONFIDENCE",
        +                  "MANUAL_REVIEW_REQUIRED",
        +                  "ACCEPTANCE_REQUIRED",
        +                  "INVALID_TOKEN"
        +                ],
        +                "type": "string"
        +              },
        +              "details": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "message": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "recoverable": {
        +                "type": "boolean"
        +              },
        +              "retry_after_seconds": {
        +                "anyOf": [
        +                  {
        +                    "minimum": 0,
        +                    "type": "integer"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              }
        +            },
        +            "required": [
        +              "code",
        +              "message",
        +              "recoverable"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      }
        +    },
        +    "required": [
        +      "_meta"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "_meta": {
        +        "additionalProperties": false,
        +        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        +        "properties": {
        +          "deliverables": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        +                "properties": {
        +                  "docx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "dxf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "expires_at": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  },
        +                  "pdf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "xlsx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "expires_at"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "document_id": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "issued_at": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "rate_limit_remaining": {
        +            "anyOf": [
        +              {
        +                "minimum": 0,
        +                "type": "integer"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "request_id": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "schema_version": {
        +            "const": "1.0.0",
        +            "default": "1.0.0",
        +            "type": "string"
        +          },
        +          "scope_boundary": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        +                "properties": {
        +                  "not_in_scope": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "produced": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "recommended_companions": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "type": "string"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "produced",
        +                  "not_in_scope"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tier": {
        +            "enum": [
        +              "free",
        +              "paid"
        +            ],
        +            "type": "string"
        +          },
        +          "tier_upgrade": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        +                "properties": {
        +                  "available_tiers": {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        +                      "properties": {
        +                        "billing": {
        +                          "enum": [
        +                            "one_off",
        +                            "monthly",
        +                            "annual"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "currency": {
        +                          "enum": [
        +                            "GBP",
        +                            "SGD",
        +                            "EUR",
        +                            "USD",
        +                            "CAD",
        +                            "AUD",
        +                            "NZD",
        +                            "MYR"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "display_name": {
        +                          "type": "string"
        +                        },
        +                        "price_local": {
        +                          "type": "number"
        +                        },
        +                        "tier_slug": {
        +                          "enum": [
        +                            "7_day_pass",
        +                            "solo",
        +                            "studio",
        +                            "practice"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "unlock_summary": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "tier_slug",
        +                        "display_name",
        +                        "price_local",
        +                        "currency",
        +                        "billing",
        +                        "unlock_summary"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "current_tier": {
        +                    "const": "free",
        +                    "default": "free",
        +                    "type": "string"
        +                  },
        +                  "pass_credit": {
        +                    "anyOf": [
        +                      {
        +                        "additionalProperties": false,
        +                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        +                        "properties": {
        +                          "amount_local": {
        +                            "type": "number"
        +                          },
        +                          "applies_to": {
        +                            "const": "solo_first_month",
        +                            "default": "solo_first_month",
        +                            "type": "string"
        +                          },
        +                          "currency": {
        +                            "type": "string"
        +                          },
        +                          "redeemable_until": {
        +                            "type": "string"
        +                          }
        +                        },
        +                        "required": [
        +                          "amount_local",
        +                          "currency",
        +                          "redeemable_until"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "pricing_url": {
        +                    "default": "https://civilquants.com/pricing",
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "available_tiers"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tos_url": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "upgrade_hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "warranty_disclaimer": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          }
        +        },
        +        "required": [
        +          "request_id",
        +          "issued_at",
        +          "tier"
        +        ],
        +        "type": "object"
        +      },
        +      "data": {
        +        "default": null,
        +        "title": "Data"
        +      },
        +      "error": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        +            "properties": {
        +              "code": {
        +                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        +                "enum": [
        +                  "RATE_LIMIT_EXCEEDED",
        +                  "TIER_INSUFFICIENT",
        +                  "INVALID_INPUT",
        +                  "SCHEMA_VERSION_MISMATCH",
        +                  "SCHEMA_INVARIANT_VIOLATION",
        +                  "UPSTREAM_TIMEOUT",
        +                  "BACKEND_FAILURE",
        +                  "IP_BLOCKED",
        +                  "RESOURCE_NOT_FOUND",
        +                  "RENDER_FAILURE",
        +                  "OCR_LOW_CONFIDENCE",
        +                  "MANUAL_REVIEW_REQUIRED",
        +                  "ACCEPTANCE_REQUIRED",
        +                  "INVALID_TOKEN"
        +                ],
        +                "type": "string"
        +              },
        +              "details": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "message": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "recoverable": {
        +                "type": "boolean"
        +              },
        +              "retry_after_seconds": {
        +                "anyOf": [
        +                  {
        +                    "minimum": 0,
        +                    "type": "integer"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              }
        +            },
        +            "required": [
        +              "code",
        +              "message",
        +              "recoverable"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      }
        +    },
        +    "required": [
        +      "_meta"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedcompute_traffic_sign3 fields changed
      • addedInput schema / properties / deliverables
        Added value: +{
        +  "anyOf": [
        +    {
        +      "items": {
        +        "const": "xlsx",
        +        "type": "string"
        +      },
        +      "type": "array"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null
        +}
      • addedInput schema / properties / output_mode
        Added value: +{
        +  "default": "full_json",
        +  "enum": [
        +    "summary",
        +    "boq",
        +    "boq_with_backup",
        +    "full_json"
        +  ],
        +  "type": "string"
        +}
      • changedOutput schema / properties / result / anyOf
        Previous value: -[
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "_meta": {
        -        "additionalProperties": false,
        -        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        -        "properties": {
        -          "deliverables": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        -                "properties": {
        -                  "docx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "dxf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "expires_at": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  },
        -                  "pdf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "xlsx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "expires_at"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "document_id": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "issued_at": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "rate_limit_remaining": {
        -            "anyOf": [
        -              {
        -                "minimum": 0,
        -                "type": "integer"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "request_id": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "schema_version": {
        -            "const": "1.0.0",
        -            "default": "1.0.0",
        -            "type": "string"
        -          },
        -          "scope_boundary": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        -                "properties": {
        -                  "not_in_scope": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "produced": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "recommended_companions": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "type": "string"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "produced",
        -                  "not_in_scope"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tier": {
        -            "enum": [
        -              "free",
        -              "paid"
        -            ],
        -            "type": "string"
        -          },
        -          "tier_upgrade": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        -                "properties": {
        -                  "available_tiers": {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        -                      "properties": {
        -                        "billing": {
        -                          "enum": [
        -                            "one_off",
        -                            "monthly",
        -                            "annual"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "currency": {
        -                          "enum": [
        -                            "GBP",
        -                            "SGD",
        -                            "EUR",
        -                            "USD",
        -                            "CAD",
        -                            "AUD",
        -                            "NZD",
        -                            "MYR"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "display_name": {
        -                          "type": "string"
        -                        },
        -                        "price_local": {
        -                          "type": "number"
        -                        },
        -                        "tier_slug": {
        -                          "enum": [
        -                            "7_day_pass",
        -                            "solo",
        -                            "studio",
        -                            "practice"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "unlock_summary": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "tier_slug",
        -                        "display_name",
        -                        "price_local",
        -                        "currency",
        -                        "billing",
        -                        "unlock_summary"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "current_tier": {
        -                    "const": "free",
        -                    "default": "free",
        -                    "type": "string"
        -                  },
        -                  "pass_credit": {
        -                    "anyOf": [
        -                      {
        -                        "additionalProperties": false,
        -                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        -                        "properties": {
        -                          "amount_local": {
        -                            "type": "number"
        -                          },
        -                          "applies_to": {
        -                            "const": "solo_first_month",
        -                            "default": "solo_first_month",
        -                            "type": "string"
        -                          },
        -                          "currency": {
        -                            "type": "string"
        -                          },
        -                          "redeemable_until": {
        -                            "type": "string"
        -                          }
        -                        },
        -                        "required": [
        -                          "amount_local",
        -                          "currency",
        -                          "redeemable_until"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "pricing_url": {
        -                    "default": "https://civilquants.com/pricing",
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "available_tiers"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tos_url": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "upgrade_hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "warranty_disclaimer": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          }
        -        },
        -        "required": [
        -          "request_id",
        -          "issued_at",
        -          "tier"
        -        ],
        -        "type": "object"
        -      },
        -      "data": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Schema § 1.1 — the typed payload returned inside `MCPResponse[ComputeResult]`.\n\nFree-tier responses MUST omit `drawings` and `audit_trail` (the bridge\nenforces this); paid-tier responses populate both. `text_summary` is\nbounded to 2000 chars — keeps the LLM-facing summary token-cheap and\nforces longer narrative into BoQ row descriptions where it belongs.\n`warnings` is the non-fatal geometry advisory list (both tiers).",
        -            "properties": {
        -              "assembly_slug": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "audit_trail": {
        -                "anyOf": [
        -                  {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.7 — paid-tier audit-trail entry.\n\nOne entry per BoQ row; `boq_row_index` ties to the row position in\n`ComputeResult.boq_rows`. `derivation` is the human-readable formula\nwalk-through; `formula` is the optional formal expression.",
        -                      "properties": {
        -                        "boq_row_index": {
        -                          "minimum": 0,
        -                          "type": "integer"
        -                        },
        -                        "derivation": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "formula": {
        -                          "anyOf": [
        -                            {
        -                              "type": "string"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ],
        -                          "default": null
        -                        },
        -                        "id": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "parameters_referenced": {
        -                          "items": {
        -                            "type": "string"
        -                          },
        -                          "type": "array"
        -                        }
        -                      },
        -                      "required": [
        -                        "id",
        -                        "boq_row_index",
        -                        "derivation"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "boq_rows": {
        -                "items": {
        -                  "additionalProperties": false,
        -                  "description": "Schema § 1.3 — a single bill row in the requested standard's format.\n\n`description` is the non-verbatim functional description per spec § 13.9 /\n§ 15 invariant — NEVER reproduces a standard's verbatim clause text.\n`rate` / `amount` ship null because rates are commodity data the customer\nowns; the engine's job is the measurement, not the pricing.",
        -                  "properties": {
        -                    "amount": {
        -                      "anyOf": [
        -                        {
        -                          "type": "number"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "attribution": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "audit_id": {
        -                      "anyOf": [
        -                        {
        -                          "type": "string"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "description": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "quantity": {
        -                      "minimum": 0,
        -                      "type": "number"
        -                    },
        -                    "rate": {
        -                      "anyOf": [
        -                        {
        -                          "type": "number"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "unit": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "work_section": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    }
        -                  },
        -                  "required": [
        -                    "work_section",
        -                    "description",
        -                    "quantity",
        -                    "unit",
        -                    "attribution"
        -                  ],
        -                  "type": "object"
        -                },
        -                "type": "array"
        -              },
        -              "drawings": {
        -                "anyOf": [
        -                  {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.6 — paid-tier drawing artefact pointer.\n\n`url` is an R2-signed URL; expiry is carried in `_meta.deliverables.expires_at`\non the envelope (not duplicated here). `layers` is DXF-only; PDF/SVG\ncallers omit it.",
        -                      "properties": {
        -                        "drawing_type": {
        -                          "enum": [
        -                            "section",
        -                            "plan",
        -                            "elevation",
        -                            "isometric",
        -                            "detail"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "format": {
        -                          "enum": [
        -                            "DXF",
        -                            "PDF",
        -                            "SVG"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "layers": {
        -                          "anyOf": [
        -                            {
        -                              "items": {
        -                                "type": "string"
        -                              },
        -                              "type": "array"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ],
        -                          "default": null
        -                        },
        -                        "scale": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "sheet_size": {
        -                          "enum": [
        -                            "A1",
        -                            "A2",
        -                            "A3",
        -                            "A4"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "url": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "drawing_type",
        -                        "format",
        -                        "url",
        -                        "sheet_size",
        -                        "scale"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "parameters_used": {
        -                "additionalProperties": false,
        -                "description": "Schema § 1.2 — the parameter snapshot the engine actually used.\n\nSplits user-supplied values from engine defaults so customers can see\nwhich numbers came from them and which the engine filled in. Every\ndefaulted parameter SHOULD have a corresponding entry in `assumptions`\n— the bridge layer enforces this when wrapping engine output.",
        -                "properties": {
        -                  "assumptions": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "engine_defaults": {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  "resolved_from_description": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "additionalProperties": false,
        -                          "description": "Schema § 1.2 — a parameter resolved by the forgiving-input layer.\n\nPopulated by the Track B-Forgiving Haiku-4.5 resolution pass; until that\nlayer lands, instances are constructed only by tests. `source` distinguishes\nthe resolution path so customers can audit which fields were inferred.",
        -                          "properties": {
        -                            "confidence": {
        -                              "anyOf": [
        -                                {
        -                                  "enum": [
        -                                    "high",
        -                                    "medium",
        -                                    "low"
        -                                  ],
        -                                  "type": "string"
        -                                },
        -                                {
        -                                  "type": "null"
        -                                }
        -                              ],
        -                              "default": null
        -                            },
        -                            "field_name": {
        -                              "minLength": 1,
        -                              "type": "string"
        -                            },
        -                            "resolved_value": {},
        -                            "source": {
        -                              "enum": [
        -                                "description_field",
        -                                "haiku_resolution",
        -                                "engine_default"
        -                              ],
        -                              "type": "string"
        -                            }
        -                          },
        -                          "required": [
        -                            "field_name",
        -                            "resolved_value",
        -                            "source"
        -                          ],
        -                          "type": "object"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "user_supplied": {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  }
        -                },
        -                "type": "object"
        -              },
        -              "standard": {
        -                "enum": [
        -                  "CESMM4",
        -                  "NRM2",
        -                  "SMM7",
        -                  "MMHW"
        -                ],
        -                "type": "string"
        -              },
        -              "text_summary": {
        -                "maxLength": 2000,
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "totals_summary": {
        -                "additionalProperties": false,
        -                "description": "Schema § 1.4 — totals_summary as a typed wrapper around the free-form dict.\n\nWire shape is a flat object (`{\"concrete_m3\": {...}, \"rebar_t\": {...}}`).\nWe model it as `RootModel`-equivalent via `model_config(extra=\"allow\")`\n+ a single `__root__`-style `entries` dict. Pydantic v2 recommends\n`RootModel` for free-form roots; using a wrapper class keeps the import\nsurface uniform with the rest of this module.",
        -                "properties": {
        -                  "entries": {
        -                    "additionalProperties": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.4 — single material/work-class total entry.",
        -                      "properties": {
        -                        "quantity": {
        -                          "minimum": 0,
        -                          "type": "number"
        -                        },
        -                        "unit": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "quantity",
        -                        "unit"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "object"
        -                  }
        -                },
        -                "type": "object"
        -              },
        -              "warnings": {
        -                "items": {
        -                  "additionalProperties": false,
        -                  "description": "Schema § 1.8 — a non-fatal geometry advisory (56th-fire T2).\n\nThe wire projection of the engine's `core.GeometryWarning`. Advisory only:\na warning NEVER changes a measured quantity — it flags geometry that is\nvalid but likely a mistake (e.g. a stale dependent-height default). Present\non BOTH tiers — a correctness/safety signal, not a paid feature.",
        -                  "properties": {
        -                    "affected_params": {
        -                      "items": {
        -                        "type": "string"
        -                      },
        -                      "type": "array"
        -                    },
        -                    "code": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "detail": {
        -                      "additionalProperties": {
        -                        "type": "number"
        -                      },
        -                      "type": "object"
        -                    },
        -                    "message": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "severity": {
        -                      "enum": [
        -                        "info",
        -                        "advisory",
        -                        "caution"
        -                      ],
        -                      "type": "string"
        -                    }
        -                  },
        -                  "required": [
        -                    "code",
        -                    "severity",
        -                    "message"
        -                  ],
        -                  "type": "object"
        -                },
        -                "type": "array"
        -              }
        -            },
        -            "required": [
        -              "assembly_slug",
        -              "standard",
        -              "parameters_used",
        -              "boq_rows",
        -              "totals_summary",
        -              "text_summary"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      },
        -      "error": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        -            "properties": {
        -              "code": {
        -                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        -                "enum": [
        -                  "RATE_LIMIT_EXCEEDED",
        -                  "TIER_INSUFFICIENT",
        -                  "INVALID_INPUT",
        -                  "SCHEMA_VERSION_MISMATCH",
        -                  "SCHEMA_INVARIANT_VIOLATION",
        -                  "UPSTREAM_TIMEOUT",
        -                  "BACKEND_FAILURE",
        -                  "IP_BLOCKED",
        -                  "RESOURCE_NOT_FOUND",
        -                  "RENDER_FAILURE",
        -                  "OCR_LOW_CONFIDENCE",
        -                  "MANUAL_REVIEW_REQUIRED",
        -                  "ACCEPTANCE_REQUIRED",
        -                  "INVALID_TOKEN"
        -                ],
        -                "type": "string"
        -              },
        -              "details": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "message": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "recoverable": {
        -                "type": "boolean"
        -              },
        -              "retry_after_seconds": {
        -                "anyOf": [
        -                  {
        -                    "minimum": 0,
        -                    "type": "integer"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              }
        -            },
        -            "required": [
        -              "code",
        -              "message",
        -              "recoverable"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      }
        -    },
        -    "required": [
        -      "_meta"
        -    ],
        -    "type": "object"
        -  },
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "_meta": {
        -        "additionalProperties": false,
        -        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        -        "properties": {
        -          "deliverables": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        -                "properties": {
        -                  "docx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "dxf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "expires_at": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  },
        -                  "pdf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "xlsx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "expires_at"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "document_id": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "issued_at": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "rate_limit_remaining": {
        -            "anyOf": [
        -              {
        -                "minimum": 0,
        -                "type": "integer"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "request_id": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "schema_version": {
        -            "const": "1.0.0",
        -            "default": "1.0.0",
        -            "type": "string"
        -          },
        -          "scope_boundary": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        -                "properties": {
        -                  "not_in_scope": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "produced": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "recommended_companions": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "type": "string"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "produced",
        -                  "not_in_scope"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tier": {
        -            "enum": [
        -              "free",
        -              "paid"
        -            ],
        -            "type": "string"
        -          },
        -          "tier_upgrade": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        -                "properties": {
        -                  "available_tiers": {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        -                      "properties": {
        -                        "billing": {
        -                          "enum": [
        -                            "one_off",
        -                            "monthly",
        -                            "annual"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "currency": {
        -                          "enum": [
        -                            "GBP",
        -                            "SGD",
        -                            "EUR",
        -                            "USD",
        -                            "CAD",
        -                            "AUD",
        -                            "NZD",
        -                            "MYR"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "display_name": {
        -                          "type": "string"
        -                        },
        -                        "price_local": {
        -                          "type": "number"
        -                        },
        -                        "tier_slug": {
        -                          "enum": [
        -                            "7_day_pass",
        -                            "solo",
        -                            "studio",
        -                            "practice"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "unlock_summary": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "tier_slug",
        -                        "display_name",
        -                        "price_local",
        -                        "currency",
        -                        "billing",
        -                        "unlock_summary"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "current_tier": {
        -                    "const": "free",
        -                    "default": "free",
        -                    "type": "string"
        -                  },
        -                  "pass_credit": {
        -                    "anyOf": [
        -                      {
        -                        "additionalProperties": false,
        -                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        -                        "properties": {
        -                          "amount_local": {
        -                            "type": "number"
        -                          },
        -                          "applies_to": {
        -                            "const": "solo_first_month",
        -                            "default": "solo_first_month",
        -                            "type": "string"
        -                          },
        -                          "currency": {
        -                            "type": "string"
        -                          },
        -                          "redeemable_until": {
        -                            "type": "string"
        -                          }
        -                        },
        -                        "required": [
        -                          "amount_local",
        -                          "currency",
        -                          "redeemable_until"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "pricing_url": {
        -                    "default": "https://civilquants.com/pricing",
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "available_tiers"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tos_url": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "upgrade_hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "warranty_disclaimer": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          }
        -        },
        -        "required": [
        -          "request_id",
        -          "issued_at",
        -          "tier"
        -        ],
        -        "type": "object"
        -      },
        -      "data": {
        -        "default": null,
        -        "title": "Data"
        -      },
        -      "error": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        -            "properties": {
        -              "code": {
        -                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        -                "enum": [
        -                  "RATE_LIMIT_EXCEEDED",
        -                  "TIER_INSUFFICIENT",
        -                  "INVALID_INPUT",
        -                  "SCHEMA_VERSION_MISMATCH",
        -                  "SCHEMA_INVARIANT_VIOLATION",
        -                  "UPSTREAM_TIMEOUT",
        -                  "BACKEND_FAILURE",
        -                  "IP_BLOCKED",
        -                  "RESOURCE_NOT_FOUND",
        -                  "RENDER_FAILURE",
        -                  "OCR_LOW_CONFIDENCE",
        -                  "MANUAL_REVIEW_REQUIRED",
        -                  "ACCEPTANCE_REQUIRED",
        -                  "INVALID_TOKEN"
        -                ],
        -                "type": "string"
        -              },
        -              "details": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "message": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "recoverable": {
        -                "type": "boolean"
        -              },
        -              "retry_after_seconds": {
        -                "anyOf": [
        -                  {
        -                    "minimum": 0,
        -                    "type": "integer"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              }
        -            },
        -            "required": [
        -              "code",
        -              "message",
        -              "recoverable"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      }
        -    },
        -    "required": [
        -      "_meta"
        -    ],
        -    "type": "object"
        -  }
        -]New value: +[
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "_meta": {
        +        "additionalProperties": false,
        +        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        +        "properties": {
        +          "deliverables": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        +                "properties": {
        +                  "docx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "dxf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "expires_at": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  },
        +                  "pdf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "xlsx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "expires_at"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "document_id": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "issued_at": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "rate_limit_remaining": {
        +            "anyOf": [
        +              {
        +                "minimum": 0,
        +                "type": "integer"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "request_id": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "schema_version": {
        +            "const": "1.0.0",
        +            "default": "1.0.0",
        +            "type": "string"
        +          },
        +          "scope_boundary": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        +                "properties": {
        +                  "not_in_scope": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "produced": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "recommended_companions": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "type": "string"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "produced",
        +                  "not_in_scope"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tier": {
        +            "enum": [
        +              "free",
        +              "paid"
        +            ],
        +            "type": "string"
        +          },
        +          "tier_upgrade": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        +                "properties": {
        +                  "available_tiers": {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        +                      "properties": {
        +                        "billing": {
        +                          "enum": [
        +                            "one_off",
        +                            "monthly",
        +                            "annual"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "currency": {
        +                          "enum": [
        +                            "GBP",
        +                            "SGD",
        +                            "EUR",
        +                            "USD",
        +                            "CAD",
        +                            "AUD",
        +                            "NZD",
        +                            "MYR"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "display_name": {
        +                          "type": "string"
        +                        },
        +                        "price_local": {
        +                          "type": "number"
        +                        },
        +                        "tier_slug": {
        +                          "enum": [
        +                            "7_day_pass",
        +                            "solo",
        +                            "studio",
        +                            "practice"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "unlock_summary": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "tier_slug",
        +                        "display_name",
        +                        "price_local",
        +                        "currency",
        +                        "billing",
        +                        "unlock_summary"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "current_tier": {
        +                    "const": "free",
        +                    "default": "free",
        +                    "type": "string"
        +                  },
        +                  "pass_credit": {
        +                    "anyOf": [
        +                      {
        +                        "additionalProperties": false,
        +                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        +                        "properties": {
        +                          "amount_local": {
        +                            "type": "number"
        +                          },
        +                          "applies_to": {
        +                            "const": "solo_first_month",
        +                            "default": "solo_first_month",
        +                            "type": "string"
        +                          },
        +                          "currency": {
        +                            "type": "string"
        +                          },
        +                          "redeemable_until": {
        +                            "type": "string"
        +                          }
        +                        },
        +                        "required": [
        +                          "amount_local",
        +                          "currency",
        +                          "redeemable_until"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "pricing_url": {
        +                    "default": "https://civilquants.com/pricing",
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "available_tiers"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tos_url": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "upgrade_hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "warranty_disclaimer": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          }
        +        },
        +        "required": [
        +          "request_id",
        +          "issued_at",
        +          "tier"
        +        ],
        +        "type": "object"
        +      },
        +      "data": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Schema § 1.1 — the typed payload returned inside `MCPResponse[ComputeResult]`.\n\nFree-tier responses omit `drawings` (the downloadable CAD artefact\npointers — the paid differentiator); the bridge enforces this. The\n`audit_trail` and the inline `drawing` preview are present on BOTH tiers\n(V1 ALIGN / 60th-fire D + C). `text_summary` is bounded to 2000 chars —\nkeeps the LLM-facing summary token-cheap and forces longer narrative into\nBoQ row descriptions where it belongs. `warnings` is the non-fatal\ngeometry advisory list (both tiers).",
        +            "properties": {
        +              "assembly_slug": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "audit_trail": {
        +                "anyOf": [
        +                  {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.7 — paid-tier audit-trail entry.\n\nOne entry per BoQ row; `boq_row_index` ties to the row position in\n`ComputeResult.boq_rows`. `derivation` is the human-readable formula\nwalk-through; `formula` is the optional formal expression.",
        +                      "properties": {
        +                        "boq_row_index": {
        +                          "minimum": 0,
        +                          "type": "integer"
        +                        },
        +                        "derivation": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "formula": {
        +                          "anyOf": [
        +                            {
        +                              "type": "string"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ],
        +                          "default": null
        +                        },
        +                        "id": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "parameters_referenced": {
        +                          "items": {
        +                            "type": "string"
        +                          },
        +                          "type": "array"
        +                        }
        +                      },
        +                      "required": [
        +                        "id",
        +                        "boq_row_index",
        +                        "derivation"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "boq_rows": {
        +                "items": {
        +                  "additionalProperties": false,
        +                  "description": "Schema § 1.3 — a single bill row in the requested standard's format.\n\n`description` is the non-verbatim functional description per spec § 13.9 /\n§ 15 invariant — NEVER reproduces a standard's verbatim clause text.\n`rate` / `amount` ship null because rates are commodity data the customer\nowns; the engine's job is the measurement, not the pricing.",
        +                  "properties": {
        +                    "amount": {
        +                      "anyOf": [
        +                        {
        +                          "type": "number"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "attribution": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "audit_id": {
        +                      "anyOf": [
        +                        {
        +                          "type": "string"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "description": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "quantity": {
        +                      "minimum": 0,
        +                      "type": "number"
        +                    },
        +                    "rate": {
        +                      "anyOf": [
        +                        {
        +                          "type": "number"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "unit": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "work_section": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    }
        +                  },
        +                  "required": [
        +                    "work_section",
        +                    "description",
        +                    "quantity",
        +                    "unit",
        +                    "attribution"
        +                  ],
        +                  "type": "object"
        +                },
        +                "type": "array"
        +              },
        +              "drawing": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": false,
        +                    "description": "Schema § 1.6a — inline server-rendered SVG preview of the geometry.\n\nThe MCP mirror of the web ``/compute`` response's ``drawing`` field\n(``api.schemas.compute.DrawingRef``): the same on-screen dimensioned\ndrawing both tiers see in the workspace, surfaced on the MCP compute\nresponse so a chat client can render it inline (60th-fire item C). This\nis the on-screen preview — present on BOTH tiers per the free/paid\nboundary; the downloadable CAD artefacts (DXF / dimensioned PDF) remain\nthe paid differentiator via the export tools.\n\nDefined here rather than importing ``DrawingRef`` because the web\n``schemas`` package imports back into this module (``schemas.render``),\nso reusing it would create an import cycle — the MCP wire contract keeps\nits own copy, the same pattern as ``BoQRow`` / ``DrawingReference``.",
        +                    "properties": {
        +                      "entity_count": {
        +                        "minimum": 0,
        +                        "type": "integer"
        +                      },
        +                      "svg_b64": {
        +                        "minLength": 1,
        +                        "type": "string"
        +                      },
        +                      "unit_of_drawing": {
        +                        "const": "m",
        +                        "default": "m",
        +                        "type": "string"
        +                      },
        +                      "viewbox_height": {
        +                        "exclusiveMinimum": 0,
        +                        "type": "number"
        +                      },
        +                      "viewbox_width": {
        +                        "exclusiveMinimum": 0,
        +                        "type": "number"
        +                      },
        +                      "viewbox_x": {
        +                        "type": "number"
        +                      },
        +                      "viewbox_y": {
        +                        "type": "number"
        +                      }
        +                    },
        +                    "required": [
        +                      "svg_b64",
        +                      "viewbox_x",
        +                      "viewbox_y",
        +                      "viewbox_width",
        +                      "viewbox_height",
        +                      "entity_count"
        +                    ],
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "drawings": {
        +                "anyOf": [
        +                  {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.6 — paid-tier drawing artefact pointer.\n\n`url` is an R2-signed URL; expiry is carried in `_meta.deliverables.expires_at`\non the envelope (not duplicated here). `layers` is DXF-only; PDF/SVG\ncallers omit it.",
        +                      "properties": {
        +                        "drawing_type": {
        +                          "enum": [
        +                            "section",
        +                            "plan",
        +                            "elevation",
        +                            "isometric",
        +                            "detail"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "format": {
        +                          "enum": [
        +                            "DXF",
        +                            "PDF",
        +                            "SVG"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "layers": {
        +                          "anyOf": [
        +                            {
        +                              "items": {
        +                                "type": "string"
        +                              },
        +                              "type": "array"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ],
        +                          "default": null
        +                        },
        +                        "scale": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "sheet_size": {
        +                          "enum": [
        +                            "A1",
        +                            "A2",
        +                            "A3",
        +                            "A4"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "url": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "drawing_type",
        +                        "format",
        +                        "url",
        +                        "sheet_size",
        +                        "scale"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "parameters_used": {
        +                "additionalProperties": false,
        +                "description": "Schema § 1.2 — the parameter snapshot the engine actually used.\n\nSplits user-supplied values from engine defaults so customers can see\nwhich numbers came from them and which the engine filled in. Every\ndefaulted parameter SHOULD have a corresponding entry in `assumptions`\n— the bridge layer enforces this when wrapping engine output.",
        +                "properties": {
        +                  "assumptions": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "engine_defaults": {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  "resolved_from_description": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "additionalProperties": false,
        +                          "description": "Schema § 1.2 — a parameter resolved by the forgiving-input layer.\n\nPopulated by the Track B-Forgiving Haiku-4.5 resolution pass; until that\nlayer lands, instances are constructed only by tests. `source` distinguishes\nthe resolution path so customers can audit which fields were inferred.",
        +                          "properties": {
        +                            "confidence": {
        +                              "anyOf": [
        +                                {
        +                                  "enum": [
        +                                    "high",
        +                                    "medium",
        +                                    "low"
        +                                  ],
        +                                  "type": "string"
        +                                },
        +                                {
        +                                  "type": "null"
        +                                }
        +                              ],
        +                              "default": null
        +                            },
        +                            "field_name": {
        +                              "minLength": 1,
        +                              "type": "string"
        +                            },
        +                            "resolved_value": {},
        +                            "source": {
        +                              "enum": [
        +                                "description_field",
        +                                "haiku_resolution",
        +                                "engine_default"
        +                              ],
        +                              "type": "string"
        +                            }
        +                          },
        +                          "required": [
        +                            "field_name",
        +                            "resolved_value",
        +                            "source"
        +                          ],
        +                          "type": "object"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "user_supplied": {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  }
        +                },
        +                "type": "object"
        +              },
        +              "standard": {
        +                "enum": [
        +                  "CESMM4",
        +                  "NRM2",
        +                  "SMM7",
        +                  "MMHW"
        +                ],
        +                "type": "string"
        +              },
        +              "text_summary": {
        +                "maxLength": 2000,
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "totals_summary": {
        +                "additionalProperties": false,
        +                "description": "Schema § 1.4 — totals_summary as a typed wrapper around the free-form dict.\n\nWire shape is a flat object (`{\"concrete_m3\": {...}, \"rebar_t\": {...}}`).\nWe model it as `RootModel`-equivalent via `model_config(extra=\"allow\")`\n+ a single `__root__`-style `entries` dict. Pydantic v2 recommends\n`RootModel` for free-form roots; using a wrapper class keeps the import\nsurface uniform with the rest of this module.",
        +                "properties": {
        +                  "entries": {
        +                    "additionalProperties": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.4 — single material/work-class total entry.",
        +                      "properties": {
        +                        "quantity": {
        +                          "minimum": 0,
        +                          "type": "number"
        +                        },
        +                        "unit": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "quantity",
        +                        "unit"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "object"
        +                  }
        +                },
        +                "type": "object"
        +              },
        +              "warnings": {
        +                "items": {
        +                  "additionalProperties": false,
        +                  "description": "Schema § 1.8 — a non-fatal geometry advisory (56th-fire T2).\n\nThe wire projection of the engine's `core.GeometryWarning`. Advisory only:\na warning NEVER changes a measured quantity — it flags geometry that is\nvalid but likely a mistake (e.g. a stale dependent-height default). Present\non BOTH tiers — a correctness/safety signal, not a paid feature.",
        +                  "properties": {
        +                    "affected_params": {
        +                      "items": {
        +                        "type": "string"
        +                      },
        +                      "type": "array"
        +                    },
        +                    "code": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "detail": {
        +                      "additionalProperties": {
        +                        "type": "number"
        +                      },
        +                      "type": "object"
        +                    },
        +                    "message": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "severity": {
        +                      "enum": [
        +                        "info",
        +                        "advisory",
        +                        "caution"
        +                      ],
        +                      "type": "string"
        +                    }
        +                  },
        +                  "required": [
        +                    "code",
        +                    "severity",
        +                    "message"
        +                  ],
        +                  "type": "object"
        +                },
        +                "type": "array"
        +              }
        +            },
        +            "required": [
        +              "assembly_slug",
        +              "standard",
        +              "parameters_used",
        +              "boq_rows",
        +              "totals_summary",
        +              "text_summary"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      },
        +      "error": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        +            "properties": {
        +              "code": {
        +                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        +                "enum": [
        +                  "RATE_LIMIT_EXCEEDED",
        +                  "TIER_INSUFFICIENT",
        +                  "INVALID_INPUT",
        +                  "SCHEMA_VERSION_MISMATCH",
        +                  "SCHEMA_INVARIANT_VIOLATION",
        +                  "UPSTREAM_TIMEOUT",
        +                  "BACKEND_FAILURE",
        +                  "IP_BLOCKED",
        +                  "RESOURCE_NOT_FOUND",
        +                  "RENDER_FAILURE",
        +                  "OCR_LOW_CONFIDENCE",
        +                  "MANUAL_REVIEW_REQUIRED",
        +                  "ACCEPTANCE_REQUIRED",
        +                  "INVALID_TOKEN"
        +                ],
        +                "type": "string"
        +              },
        +              "details": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "message": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "recoverable": {
        +                "type": "boolean"
        +              },
        +              "retry_after_seconds": {
        +                "anyOf": [
        +                  {
        +                    "minimum": 0,
        +                    "type": "integer"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              }
        +            },
        +            "required": [
        +              "code",
        +              "message",
        +              "recoverable"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      }
        +    },
        +    "required": [
        +      "_meta"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "_meta": {
        +        "additionalProperties": false,
        +        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        +        "properties": {
        +          "deliverables": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        +                "properties": {
        +                  "docx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "dxf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "expires_at": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  },
        +                  "pdf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "xlsx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "expires_at"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "document_id": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "issued_at": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "rate_limit_remaining": {
        +            "anyOf": [
        +              {
        +                "minimum": 0,
        +                "type": "integer"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "request_id": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "schema_version": {
        +            "const": "1.0.0",
        +            "default": "1.0.0",
        +            "type": "string"
        +          },
        +          "scope_boundary": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        +                "properties": {
        +                  "not_in_scope": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "produced": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "recommended_companions": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "type": "string"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "produced",
        +                  "not_in_scope"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tier": {
        +            "enum": [
        +              "free",
        +              "paid"
        +            ],
        +            "type": "string"
        +          },
        +          "tier_upgrade": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        +                "properties": {
        +                  "available_tiers": {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        +                      "properties": {
        +                        "billing": {
        +                          "enum": [
        +                            "one_off",
        +                            "monthly",
        +                            "annual"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "currency": {
        +                          "enum": [
        +                            "GBP",
        +                            "SGD",
        +                            "EUR",
        +                            "USD",
        +                            "CAD",
        +                            "AUD",
        +                            "NZD",
        +                            "MYR"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "display_name": {
        +                          "type": "string"
        +                        },
        +                        "price_local": {
        +                          "type": "number"
        +                        },
        +                        "tier_slug": {
        +                          "enum": [
        +                            "7_day_pass",
        +                            "solo",
        +                            "studio",
        +                            "practice"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "unlock_summary": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "tier_slug",
        +                        "display_name",
        +                        "price_local",
        +                        "currency",
        +                        "billing",
        +                        "unlock_summary"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "current_tier": {
        +                    "const": "free",
        +                    "default": "free",
        +                    "type": "string"
        +                  },
        +                  "pass_credit": {
        +                    "anyOf": [
        +                      {
        +                        "additionalProperties": false,
        +                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        +                        "properties": {
        +                          "amount_local": {
        +                            "type": "number"
        +                          },
        +                          "applies_to": {
        +                            "const": "solo_first_month",
        +                            "default": "solo_first_month",
        +                            "type": "string"
        +                          },
        +                          "currency": {
        +                            "type": "string"
        +                          },
        +                          "redeemable_until": {
        +                            "type": "string"
        +                          }
        +                        },
        +                        "required": [
        +                          "amount_local",
        +                          "currency",
        +                          "redeemable_until"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "pricing_url": {
        +                    "default": "https://civilquants.com/pricing",
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "available_tiers"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tos_url": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "upgrade_hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "warranty_disclaimer": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          }
        +        },
        +        "required": [
        +          "request_id",
        +          "issued_at",
        +          "tier"
        +        ],
        +        "type": "object"
        +      },
        +      "data": {
        +        "default": null,
        +        "title": "Data"
        +      },
        +      "error": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        +            "properties": {
        +              "code": {
        +                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        +                "enum": [
        +                  "RATE_LIMIT_EXCEEDED",
        +                  "TIER_INSUFFICIENT",
        +                  "INVALID_INPUT",
        +                  "SCHEMA_VERSION_MISMATCH",
        +                  "SCHEMA_INVARIANT_VIOLATION",
        +                  "UPSTREAM_TIMEOUT",
        +                  "BACKEND_FAILURE",
        +                  "IP_BLOCKED",
        +                  "RESOURCE_NOT_FOUND",
        +                  "RENDER_FAILURE",
        +                  "OCR_LOW_CONFIDENCE",
        +                  "MANUAL_REVIEW_REQUIRED",
        +                  "ACCEPTANCE_REQUIRED",
        +                  "INVALID_TOKEN"
        +                ],
        +                "type": "string"
        +              },
        +              "details": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "message": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "recoverable": {
        +                "type": "boolean"
        +              },
        +              "retry_after_seconds": {
        +                "anyOf": [
        +                  {
        +                    "minimum": 0,
        +                    "type": "integer"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              }
        +            },
        +            "required": [
        +              "code",
        +              "message",
        +              "recoverable"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      }
        +    },
        +    "required": [
        +      "_meta"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedcompute_utility_chamber3 fields changed
      • addedInput schema / properties / deliverables
        Added value: +{
        +  "anyOf": [
        +    {
        +      "items": {
        +        "const": "xlsx",
        +        "type": "string"
        +      },
        +      "type": "array"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null
        +}
      • addedInput schema / properties / output_mode
        Added value: +{
        +  "default": "full_json",
        +  "enum": [
        +    "summary",
        +    "boq",
        +    "boq_with_backup",
        +    "full_json"
        +  ],
        +  "type": "string"
        +}
      • changedOutput schema / properties / result / anyOf
        Previous value: -[
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "_meta": {
        -        "additionalProperties": false,
        -        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        -        "properties": {
        -          "deliverables": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        -                "properties": {
        -                  "docx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "dxf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "expires_at": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  },
        -                  "pdf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "xlsx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "expires_at"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "document_id": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "issued_at": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "rate_limit_remaining": {
        -            "anyOf": [
        -              {
        -                "minimum": 0,
        -                "type": "integer"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "request_id": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "schema_version": {
        -            "const": "1.0.0",
        -            "default": "1.0.0",
        -            "type": "string"
        -          },
        -          "scope_boundary": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        -                "properties": {
        -                  "not_in_scope": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "produced": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "recommended_companions": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "type": "string"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "produced",
        -                  "not_in_scope"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tier": {
        -            "enum": [
        -              "free",
        -              "paid"
        -            ],
        -            "type": "string"
        -          },
        -          "tier_upgrade": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        -                "properties": {
        -                  "available_tiers": {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        -                      "properties": {
        -                        "billing": {
        -                          "enum": [
        -                            "one_off",
        -                            "monthly",
        -                            "annual"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "currency": {
        -                          "enum": [
        -                            "GBP",
        -                            "SGD",
        -                            "EUR",
        -                            "USD",
        -                            "CAD",
        -                            "AUD",
        -                            "NZD",
        -                            "MYR"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "display_name": {
        -                          "type": "string"
        -                        },
        -                        "price_local": {
        -                          "type": "number"
        -                        },
        -                        "tier_slug": {
        -                          "enum": [
        -                            "7_day_pass",
        -                            "solo",
        -                            "studio",
        -                            "practice"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "unlock_summary": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "tier_slug",
        -                        "display_name",
        -                        "price_local",
        -                        "currency",
        -                        "billing",
        -                        "unlock_summary"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "current_tier": {
        -                    "const": "free",
        -                    "default": "free",
        -                    "type": "string"
        -                  },
        -                  "pass_credit": {
        -                    "anyOf": [
        -                      {
        -                        "additionalProperties": false,
        -                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        -                        "properties": {
        -                          "amount_local": {
        -                            "type": "number"
        -                          },
        -                          "applies_to": {
        -                            "const": "solo_first_month",
        -                            "default": "solo_first_month",
        -                            "type": "string"
        -                          },
        -                          "currency": {
        -                            "type": "string"
        -                          },
        -                          "redeemable_until": {
        -                            "type": "string"
        -                          }
        -                        },
        -                        "required": [
        -                          "amount_local",
        -                          "currency",
        -                          "redeemable_until"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "pricing_url": {
        -                    "default": "https://civilquants.com/pricing",
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "available_tiers"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tos_url": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "upgrade_hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "warranty_disclaimer": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          }
        -        },
        -        "required": [
        -          "request_id",
        -          "issued_at",
        -          "tier"
        -        ],
        -        "type": "object"
        -      },
        -      "data": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Schema § 1.1 — the typed payload returned inside `MCPResponse[ComputeResult]`.\n\nFree-tier responses MUST omit `drawings` and `audit_trail` (the bridge\nenforces this); paid-tier responses populate both. `text_summary` is\nbounded to 2000 chars — keeps the LLM-facing summary token-cheap and\nforces longer narrative into BoQ row descriptions where it belongs.\n`warnings` is the non-fatal geometry advisory list (both tiers).",
        -            "properties": {
        -              "assembly_slug": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "audit_trail": {
        -                "anyOf": [
        -                  {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.7 — paid-tier audit-trail entry.\n\nOne entry per BoQ row; `boq_row_index` ties to the row position in\n`ComputeResult.boq_rows`. `derivation` is the human-readable formula\nwalk-through; `formula` is the optional formal expression.",
        -                      "properties": {
        -                        "boq_row_index": {
        -                          "minimum": 0,
        -                          "type": "integer"
        -                        },
        -                        "derivation": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "formula": {
        -                          "anyOf": [
        -                            {
        -                              "type": "string"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ],
        -                          "default": null
        -                        },
        -                        "id": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "parameters_referenced": {
        -                          "items": {
        -                            "type": "string"
        -                          },
        -                          "type": "array"
        -                        }
        -                      },
        -                      "required": [
        -                        "id",
        -                        "boq_row_index",
        -                        "derivation"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "boq_rows": {
        -                "items": {
        -                  "additionalProperties": false,
        -                  "description": "Schema § 1.3 — a single bill row in the requested standard's format.\n\n`description` is the non-verbatim functional description per spec § 13.9 /\n§ 15 invariant — NEVER reproduces a standard's verbatim clause text.\n`rate` / `amount` ship null because rates are commodity data the customer\nowns; the engine's job is the measurement, not the pricing.",
        -                  "properties": {
        -                    "amount": {
        -                      "anyOf": [
        -                        {
        -                          "type": "number"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "attribution": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "audit_id": {
        -                      "anyOf": [
        -                        {
        -                          "type": "string"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "description": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "quantity": {
        -                      "minimum": 0,
        -                      "type": "number"
        -                    },
        -                    "rate": {
        -                      "anyOf": [
        -                        {
        -                          "type": "number"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "unit": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "work_section": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    }
        -                  },
        -                  "required": [
        -                    "work_section",
        -                    "description",
        -                    "quantity",
        -                    "unit",
        -                    "attribution"
        -                  ],
        -                  "type": "object"
        -                },
        -                "type": "array"
        -              },
        -              "drawings": {
        -                "anyOf": [
        -                  {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.6 — paid-tier drawing artefact pointer.\n\n`url` is an R2-signed URL; expiry is carried in `_meta.deliverables.expires_at`\non the envelope (not duplicated here). `layers` is DXF-only; PDF/SVG\ncallers omit it.",
        -                      "properties": {
        -                        "drawing_type": {
        -                          "enum": [
        -                            "section",
        -                            "plan",
        -                            "elevation",
        -                            "isometric",
        -                            "detail"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "format": {
        -                          "enum": [
        -                            "DXF",
        -                            "PDF",
        -                            "SVG"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "layers": {
        -                          "anyOf": [
        -                            {
        -                              "items": {
        -                                "type": "string"
        -                              },
        -                              "type": "array"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ],
        -                          "default": null
        -                        },
        -                        "scale": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "sheet_size": {
        -                          "enum": [
        -                            "A1",
        -                            "A2",
        -                            "A3",
        -                            "A4"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "url": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "drawing_type",
        -                        "format",
        -                        "url",
        -                        "sheet_size",
        -                        "scale"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "parameters_used": {
        -                "additionalProperties": false,
        -                "description": "Schema § 1.2 — the parameter snapshot the engine actually used.\n\nSplits user-supplied values from engine defaults so customers can see\nwhich numbers came from them and which the engine filled in. Every\ndefaulted parameter SHOULD have a corresponding entry in `assumptions`\n— the bridge layer enforces this when wrapping engine output.",
        -                "properties": {
        -                  "assumptions": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "engine_defaults": {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  "resolved_from_description": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "additionalProperties": false,
        -                          "description": "Schema § 1.2 — a parameter resolved by the forgiving-input layer.\n\nPopulated by the Track B-Forgiving Haiku-4.5 resolution pass; until that\nlayer lands, instances are constructed only by tests. `source` distinguishes\nthe resolution path so customers can audit which fields were inferred.",
        -                          "properties": {
        -                            "confidence": {
        -                              "anyOf": [
        -                                {
        -                                  "enum": [
        -                                    "high",
        -                                    "medium",
        -                                    "low"
        -                                  ],
        -                                  "type": "string"
        -                                },
        -                                {
        -                                  "type": "null"
        -                                }
        -                              ],
        -                              "default": null
        -                            },
        -                            "field_name": {
        -                              "minLength": 1,
        -                              "type": "string"
        -                            },
        -                            "resolved_value": {},
        -                            "source": {
        -                              "enum": [
        -                                "description_field",
        -                                "haiku_resolution",
        -                                "engine_default"
        -                              ],
        -                              "type": "string"
        -                            }
        -                          },
        -                          "required": [
        -                            "field_name",
        -                            "resolved_value",
        -                            "source"
        -                          ],
        -                          "type": "object"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "user_supplied": {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  }
        -                },
        -                "type": "object"
        -              },
        -              "standard": {
        -                "enum": [
        -                  "CESMM4",
        -                  "NRM2",
        -                  "SMM7",
        -                  "MMHW"
        -                ],
        -                "type": "string"
        -              },
        -              "text_summary": {
        -                "maxLength": 2000,
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "totals_summary": {
        -                "additionalProperties": false,
        -                "description": "Schema § 1.4 — totals_summary as a typed wrapper around the free-form dict.\n\nWire shape is a flat object (`{\"concrete_m3\": {...}, \"rebar_t\": {...}}`).\nWe model it as `RootModel`-equivalent via `model_config(extra=\"allow\")`\n+ a single `__root__`-style `entries` dict. Pydantic v2 recommends\n`RootModel` for free-form roots; using a wrapper class keeps the import\nsurface uniform with the rest of this module.",
        -                "properties": {
        -                  "entries": {
        -                    "additionalProperties": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.4 — single material/work-class total entry.",
        -                      "properties": {
        -                        "quantity": {
        -                          "minimum": 0,
        -                          "type": "number"
        -                        },
        -                        "unit": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "quantity",
        -                        "unit"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "object"
        -                  }
        -                },
        -                "type": "object"
        -              },
        -              "warnings": {
        -                "items": {
        -                  "additionalProperties": false,
        -                  "description": "Schema § 1.8 — a non-fatal geometry advisory (56th-fire T2).\n\nThe wire projection of the engine's `core.GeometryWarning`. Advisory only:\na warning NEVER changes a measured quantity — it flags geometry that is\nvalid but likely a mistake (e.g. a stale dependent-height default). Present\non BOTH tiers — a correctness/safety signal, not a paid feature.",
        -                  "properties": {
        -                    "affected_params": {
        -                      "items": {
        -                        "type": "string"
        -                      },
        -                      "type": "array"
        -                    },
        -                    "code": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "detail": {
        -                      "additionalProperties": {
        -                        "type": "number"
        -                      },
        -                      "type": "object"
        -                    },
        -                    "message": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "severity": {
        -                      "enum": [
        -                        "info",
        -                        "advisory",
        -                        "caution"
        -                      ],
        -                      "type": "string"
        -                    }
        -                  },
        -                  "required": [
        -                    "code",
        -                    "severity",
        -                    "message"
        -                  ],
        -                  "type": "object"
        -                },
        -                "type": "array"
        -              }
        -            },
        -            "required": [
        -              "assembly_slug",
        -              "standard",
        -              "parameters_used",
        -              "boq_rows",
        -              "totals_summary",
        -              "text_summary"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      },
        -      "error": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        -            "properties": {
        -              "code": {
        -                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        -                "enum": [
        -                  "RATE_LIMIT_EXCEEDED",
        -                  "TIER_INSUFFICIENT",
        -                  "INVALID_INPUT",
        -                  "SCHEMA_VERSION_MISMATCH",
        -                  "SCHEMA_INVARIANT_VIOLATION",
        -                  "UPSTREAM_TIMEOUT",
        -                  "BACKEND_FAILURE",
        -                  "IP_BLOCKED",
        -                  "RESOURCE_NOT_FOUND",
        -                  "RENDER_FAILURE",
        -                  "OCR_LOW_CONFIDENCE",
        -                  "MANUAL_REVIEW_REQUIRED",
        -                  "ACCEPTANCE_REQUIRED",
        -                  "INVALID_TOKEN"
        -                ],
        -                "type": "string"
        -              },
        -              "details": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "message": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "recoverable": {
        -                "type": "boolean"
        -              },
        -              "retry_after_seconds": {
        -                "anyOf": [
        -                  {
        -                    "minimum": 0,
        -                    "type": "integer"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              }
        -            },
        -            "required": [
        -              "code",
        -              "message",
        -              "recoverable"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      }
        -    },
        -    "required": [
        -      "_meta"
        -    ],
        -    "type": "object"
        -  },
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "_meta": {
        -        "additionalProperties": false,
        -        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        -        "properties": {
        -          "deliverables": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        -                "properties": {
        -                  "docx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "dxf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "expires_at": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  },
        -                  "pdf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "xlsx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "expires_at"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "document_id": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "issued_at": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "rate_limit_remaining": {
        -            "anyOf": [
        -              {
        -                "minimum": 0,
        -                "type": "integer"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "request_id": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "schema_version": {
        -            "const": "1.0.0",
        -            "default": "1.0.0",
        -            "type": "string"
        -          },
        -          "scope_boundary": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        -                "properties": {
        -                  "not_in_scope": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "produced": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "recommended_companions": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "type": "string"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "produced",
        -                  "not_in_scope"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tier": {
        -            "enum": [
        -              "free",
        -              "paid"
        -            ],
        -            "type": "string"
        -          },
        -          "tier_upgrade": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        -                "properties": {
        -                  "available_tiers": {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        -                      "properties": {
        -                        "billing": {
        -                          "enum": [
        -                            "one_off",
        -                            "monthly",
        -                            "annual"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "currency": {
        -                          "enum": [
        -                            "GBP",
        -                            "SGD",
        -                            "EUR",
        -                            "USD",
        -                            "CAD",
        -                            "AUD",
        -                            "NZD",
        -                            "MYR"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "display_name": {
        -                          "type": "string"
        -                        },
        -                        "price_local": {
        -                          "type": "number"
        -                        },
        -                        "tier_slug": {
        -                          "enum": [
        -                            "7_day_pass",
        -                            "solo",
        -                            "studio",
        -                            "practice"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "unlock_summary": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "tier_slug",
        -                        "display_name",
        -                        "price_local",
        -                        "currency",
        -                        "billing",
        -                        "unlock_summary"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "current_tier": {
        -                    "const": "free",
        -                    "default": "free",
        -                    "type": "string"
        -                  },
        -                  "pass_credit": {
        -                    "anyOf": [
        -                      {
        -                        "additionalProperties": false,
        -                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        -                        "properties": {
        -                          "amount_local": {
        -                            "type": "number"
        -                          },
        -                          "applies_to": {
        -                            "const": "solo_first_month",
        -                            "default": "solo_first_month",
        -                            "type": "string"
        -                          },
        -                          "currency": {
        -                            "type": "string"
        -                          },
        -                          "redeemable_until": {
        -                            "type": "string"
        -                          }
        -                        },
        -                        "required": [
        -                          "amount_local",
        -                          "currency",
        -                          "redeemable_until"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "pricing_url": {
        -                    "default": "https://civilquants.com/pricing",
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "available_tiers"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tos_url": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "upgrade_hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "warranty_disclaimer": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          }
        -        },
        -        "required": [
        -          "request_id",
        -          "issued_at",
        -          "tier"
        -        ],
        -        "type": "object"
        -      },
        -      "data": {
        -        "default": null,
        -        "title": "Data"
        -      },
        -      "error": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        -            "properties": {
        -              "code": {
        -                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        -                "enum": [
        -                  "RATE_LIMIT_EXCEEDED",
        -                  "TIER_INSUFFICIENT",
        -                  "INVALID_INPUT",
        -                  "SCHEMA_VERSION_MISMATCH",
        -                  "SCHEMA_INVARIANT_VIOLATION",
        -                  "UPSTREAM_TIMEOUT",
        -                  "BACKEND_FAILURE",
        -                  "IP_BLOCKED",
        -                  "RESOURCE_NOT_FOUND",
        -                  "RENDER_FAILURE",
        -                  "OCR_LOW_CONFIDENCE",
        -                  "MANUAL_REVIEW_REQUIRED",
        -                  "ACCEPTANCE_REQUIRED",
        -                  "INVALID_TOKEN"
        -                ],
        -                "type": "string"
        -              },
        -              "details": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "message": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "recoverable": {
        -                "type": "boolean"
        -              },
        -              "retry_after_seconds": {
        -                "anyOf": [
        -                  {
        -                    "minimum": 0,
        -                    "type": "integer"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              }
        -            },
        -            "required": [
        -              "code",
        -              "message",
        -              "recoverable"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      }
        -    },
        -    "required": [
        -      "_meta"
        -    ],
        -    "type": "object"
        -  }
        -]New value: +[
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "_meta": {
        +        "additionalProperties": false,
        +        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        +        "properties": {
        +          "deliverables": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        +                "properties": {
        +                  "docx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "dxf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "expires_at": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  },
        +                  "pdf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "xlsx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "expires_at"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "document_id": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "issued_at": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "rate_limit_remaining": {
        +            "anyOf": [
        +              {
        +                "minimum": 0,
        +                "type": "integer"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "request_id": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "schema_version": {
        +            "const": "1.0.0",
        +            "default": "1.0.0",
        +            "type": "string"
        +          },
        +          "scope_boundary": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        +                "properties": {
        +                  "not_in_scope": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "produced": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "recommended_companions": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "type": "string"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "produced",
        +                  "not_in_scope"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tier": {
        +            "enum": [
        +              "free",
        +              "paid"
        +            ],
        +            "type": "string"
        +          },
        +          "tier_upgrade": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        +                "properties": {
        +                  "available_tiers": {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        +                      "properties": {
        +                        "billing": {
        +                          "enum": [
        +                            "one_off",
        +                            "monthly",
        +                            "annual"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "currency": {
        +                          "enum": [
        +                            "GBP",
        +                            "SGD",
        +                            "EUR",
        +                            "USD",
        +                            "CAD",
        +                            "AUD",
        +                            "NZD",
        +                            "MYR"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "display_name": {
        +                          "type": "string"
        +                        },
        +                        "price_local": {
        +                          "type": "number"
        +                        },
        +                        "tier_slug": {
        +                          "enum": [
        +                            "7_day_pass",
        +                            "solo",
        +                            "studio",
        +                            "practice"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "unlock_summary": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "tier_slug",
        +                        "display_name",
        +                        "price_local",
        +                        "currency",
        +                        "billing",
        +                        "unlock_summary"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "current_tier": {
        +                    "const": "free",
        +                    "default": "free",
        +                    "type": "string"
        +                  },
        +                  "pass_credit": {
        +                    "anyOf": [
        +                      {
        +                        "additionalProperties": false,
        +                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        +                        "properties": {
        +                          "amount_local": {
        +                            "type": "number"
        +                          },
        +                          "applies_to": {
        +                            "const": "solo_first_month",
        +                            "default": "solo_first_month",
        +                            "type": "string"
        +                          },
        +                          "currency": {
        +                            "type": "string"
        +                          },
        +                          "redeemable_until": {
        +                            "type": "string"
        +                          }
        +                        },
        +                        "required": [
        +                          "amount_local",
        +                          "currency",
        +                          "redeemable_until"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "pricing_url": {
        +                    "default": "https://civilquants.com/pricing",
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "available_tiers"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tos_url": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "upgrade_hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "warranty_disclaimer": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          }
        +        },
        +        "required": [
        +          "request_id",
        +          "issued_at",
        +          "tier"
        +        ],
        +        "type": "object"
        +      },
        +      "data": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Schema § 1.1 — the typed payload returned inside `MCPResponse[ComputeResult]`.\n\nFree-tier responses omit `drawings` (the downloadable CAD artefact\npointers — the paid differentiator); the bridge enforces this. The\n`audit_trail` and the inline `drawing` preview are present on BOTH tiers\n(V1 ALIGN / 60th-fire D + C). `text_summary` is bounded to 2000 chars —\nkeeps the LLM-facing summary token-cheap and forces longer narrative into\nBoQ row descriptions where it belongs. `warnings` is the non-fatal\ngeometry advisory list (both tiers).",
        +            "properties": {
        +              "assembly_slug": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "audit_trail": {
        +                "anyOf": [
        +                  {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.7 — paid-tier audit-trail entry.\n\nOne entry per BoQ row; `boq_row_index` ties to the row position in\n`ComputeResult.boq_rows`. `derivation` is the human-readable formula\nwalk-through; `formula` is the optional formal expression.",
        +                      "properties": {
        +                        "boq_row_index": {
        +                          "minimum": 0,
        +                          "type": "integer"
        +                        },
        +                        "derivation": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "formula": {
        +                          "anyOf": [
        +                            {
        +                              "type": "string"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ],
        +                          "default": null
        +                        },
        +                        "id": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "parameters_referenced": {
        +                          "items": {
        +                            "type": "string"
        +                          },
        +                          "type": "array"
        +                        }
        +                      },
        +                      "required": [
        +                        "id",
        +                        "boq_row_index",
        +                        "derivation"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "boq_rows": {
        +                "items": {
        +                  "additionalProperties": false,
        +                  "description": "Schema § 1.3 — a single bill row in the requested standard's format.\n\n`description` is the non-verbatim functional description per spec § 13.9 /\n§ 15 invariant — NEVER reproduces a standard's verbatim clause text.\n`rate` / `amount` ship null because rates are commodity data the customer\nowns; the engine's job is the measurement, not the pricing.",
        +                  "properties": {
        +                    "amount": {
        +                      "anyOf": [
        +                        {
        +                          "type": "number"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "attribution": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "audit_id": {
        +                      "anyOf": [
        +                        {
        +                          "type": "string"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "description": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "quantity": {
        +                      "minimum": 0,
        +                      "type": "number"
        +                    },
        +                    "rate": {
        +                      "anyOf": [
        +                        {
        +                          "type": "number"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "unit": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "work_section": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    }
        +                  },
        +                  "required": [
        +                    "work_section",
        +                    "description",
        +                    "quantity",
        +                    "unit",
        +                    "attribution"
        +                  ],
        +                  "type": "object"
        +                },
        +                "type": "array"
        +              },
        +              "drawing": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": false,
        +                    "description": "Schema § 1.6a — inline server-rendered SVG preview of the geometry.\n\nThe MCP mirror of the web ``/compute`` response's ``drawing`` field\n(``api.schemas.compute.DrawingRef``): the same on-screen dimensioned\ndrawing both tiers see in the workspace, surfaced on the MCP compute\nresponse so a chat client can render it inline (60th-fire item C). This\nis the on-screen preview — present on BOTH tiers per the free/paid\nboundary; the downloadable CAD artefacts (DXF / dimensioned PDF) remain\nthe paid differentiator via the export tools.\n\nDefined here rather than importing ``DrawingRef`` because the web\n``schemas`` package imports back into this module (``schemas.render``),\nso reusing it would create an import cycle — the MCP wire contract keeps\nits own copy, the same pattern as ``BoQRow`` / ``DrawingReference``.",
        +                    "properties": {
        +                      "entity_count": {
        +                        "minimum": 0,
        +                        "type": "integer"
        +                      },
        +                      "svg_b64": {
        +                        "minLength": 1,
        +                        "type": "string"
        +                      },
        +                      "unit_of_drawing": {
        +                        "const": "m",
        +                        "default": "m",
        +                        "type": "string"
        +                      },
        +                      "viewbox_height": {
        +                        "exclusiveMinimum": 0,
        +                        "type": "number"
        +                      },
        +                      "viewbox_width": {
        +                        "exclusiveMinimum": 0,
        +                        "type": "number"
        +                      },
        +                      "viewbox_x": {
        +                        "type": "number"
        +                      },
        +                      "viewbox_y": {
        +                        "type": "number"
        +                      }
        +                    },
        +                    "required": [
        +                      "svg_b64",
        +                      "viewbox_x",
        +                      "viewbox_y",
        +                      "viewbox_width",
        +                      "viewbox_height",
        +                      "entity_count"
        +                    ],
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "drawings": {
        +                "anyOf": [
        +                  {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.6 — paid-tier drawing artefact pointer.\n\n`url` is an R2-signed URL; expiry is carried in `_meta.deliverables.expires_at`\non the envelope (not duplicated here). `layers` is DXF-only; PDF/SVG\ncallers omit it.",
        +                      "properties": {
        +                        "drawing_type": {
        +                          "enum": [
        +                            "section",
        +                            "plan",
        +                            "elevation",
        +                            "isometric",
        +                            "detail"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "format": {
        +                          "enum": [
        +                            "DXF",
        +                            "PDF",
        +                            "SVG"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "layers": {
        +                          "anyOf": [
        +                            {
        +                              "items": {
        +                                "type": "string"
        +                              },
        +                              "type": "array"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ],
        +                          "default": null
        +                        },
        +                        "scale": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "sheet_size": {
        +                          "enum": [
        +                            "A1",
        +                            "A2",
        +                            "A3",
        +                            "A4"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "url": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "drawing_type",
        +                        "format",
        +                        "url",
        +                        "sheet_size",
        +                        "scale"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "parameters_used": {
        +                "additionalProperties": false,
        +                "description": "Schema § 1.2 — the parameter snapshot the engine actually used.\n\nSplits user-supplied values from engine defaults so customers can see\nwhich numbers came from them and which the engine filled in. Every\ndefaulted parameter SHOULD have a corresponding entry in `assumptions`\n— the bridge layer enforces this when wrapping engine output.",
        +                "properties": {
        +                  "assumptions": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "engine_defaults": {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  "resolved_from_description": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "additionalProperties": false,
        +                          "description": "Schema § 1.2 — a parameter resolved by the forgiving-input layer.\n\nPopulated by the Track B-Forgiving Haiku-4.5 resolution pass; until that\nlayer lands, instances are constructed only by tests. `source` distinguishes\nthe resolution path so customers can audit which fields were inferred.",
        +                          "properties": {
        +                            "confidence": {
        +                              "anyOf": [
        +                                {
        +                                  "enum": [
        +                                    "high",
        +                                    "medium",
        +                                    "low"
        +                                  ],
        +                                  "type": "string"
        +                                },
        +                                {
        +                                  "type": "null"
        +                                }
        +                              ],
        +                              "default": null
        +                            },
        +                            "field_name": {
        +                              "minLength": 1,
        +                              "type": "string"
        +                            },
        +                            "resolved_value": {},
        +                            "source": {
        +                              "enum": [
        +                                "description_field",
        +                                "haiku_resolution",
        +                                "engine_default"
        +                              ],
        +                              "type": "string"
        +                            }
        +                          },
        +                          "required": [
        +                            "field_name",
        +                            "resolved_value",
        +                            "source"
        +                          ],
        +                          "type": "object"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "user_supplied": {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  }
        +                },
        +                "type": "object"
        +              },
        +              "standard": {
        +                "enum": [
        +                  "CESMM4",
        +                  "NRM2",
        +                  "SMM7",
        +                  "MMHW"
        +                ],
        +                "type": "string"
        +              },
        +              "text_summary": {
        +                "maxLength": 2000,
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "totals_summary": {
        +                "additionalProperties": false,
        +                "description": "Schema § 1.4 — totals_summary as a typed wrapper around the free-form dict.\n\nWire shape is a flat object (`{\"concrete_m3\": {...}, \"rebar_t\": {...}}`).\nWe model it as `RootModel`-equivalent via `model_config(extra=\"allow\")`\n+ a single `__root__`-style `entries` dict. Pydantic v2 recommends\n`RootModel` for free-form roots; using a wrapper class keeps the import\nsurface uniform with the rest of this module.",
        +                "properties": {
        +                  "entries": {
        +                    "additionalProperties": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.4 — single material/work-class total entry.",
        +                      "properties": {
        +                        "quantity": {
        +                          "minimum": 0,
        +                          "type": "number"
        +                        },
        +                        "unit": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "quantity",
        +                        "unit"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "object"
        +                  }
        +                },
        +                "type": "object"
        +              },
        +              "warnings": {
        +                "items": {
        +                  "additionalProperties": false,
        +                  "description": "Schema § 1.8 — a non-fatal geometry advisory (56th-fire T2).\n\nThe wire projection of the engine's `core.GeometryWarning`. Advisory only:\na warning NEVER changes a measured quantity — it flags geometry that is\nvalid but likely a mistake (e.g. a stale dependent-height default). Present\non BOTH tiers — a correctness/safety signal, not a paid feature.",
        +                  "properties": {
        +                    "affected_params": {
        +                      "items": {
        +                        "type": "string"
        +                      },
        +                      "type": "array"
        +                    },
        +                    "code": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "detail": {
        +                      "additionalProperties": {
        +                        "type": "number"
        +                      },
        +                      "type": "object"
        +                    },
        +                    "message": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "severity": {
        +                      "enum": [
        +                        "info",
        +                        "advisory",
        +                        "caution"
        +                      ],
        +                      "type": "string"
        +                    }
        +                  },
        +                  "required": [
        +                    "code",
        +                    "severity",
        +                    "message"
        +                  ],
        +                  "type": "object"
        +                },
        +                "type": "array"
        +              }
        +            },
        +            "required": [
        +              "assembly_slug",
        +              "standard",
        +              "parameters_used",
        +              "boq_rows",
        +              "totals_summary",
        +              "text_summary"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      },
        +      "error": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        +            "properties": {
        +              "code": {
        +                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        +                "enum": [
        +                  "RATE_LIMIT_EXCEEDED",
        +                  "TIER_INSUFFICIENT",
        +                  "INVALID_INPUT",
        +                  "SCHEMA_VERSION_MISMATCH",
        +                  "SCHEMA_INVARIANT_VIOLATION",
        +                  "UPSTREAM_TIMEOUT",
        +                  "BACKEND_FAILURE",
        +                  "IP_BLOCKED",
        +                  "RESOURCE_NOT_FOUND",
        +                  "RENDER_FAILURE",
        +                  "OCR_LOW_CONFIDENCE",
        +                  "MANUAL_REVIEW_REQUIRED",
        +                  "ACCEPTANCE_REQUIRED",
        +                  "INVALID_TOKEN"
        +                ],
        +                "type": "string"
        +              },
        +              "details": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "message": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "recoverable": {
        +                "type": "boolean"
        +              },
        +              "retry_after_seconds": {
        +                "anyOf": [
        +                  {
        +                    "minimum": 0,
        +                    "type": "integer"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              }
        +            },
        +            "required": [
        +              "code",
        +              "message",
        +              "recoverable"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      }
        +    },
        +    "required": [
        +      "_meta"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "_meta": {
        +        "additionalProperties": false,
        +        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        +        "properties": {
        +          "deliverables": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        +                "properties": {
        +                  "docx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "dxf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "expires_at": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  },
        +                  "pdf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "xlsx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "expires_at"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "document_id": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "issued_at": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "rate_limit_remaining": {
        +            "anyOf": [
        +              {
        +                "minimum": 0,
        +                "type": "integer"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "request_id": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "schema_version": {
        +            "const": "1.0.0",
        +            "default": "1.0.0",
        +            "type": "string"
        +          },
        +          "scope_boundary": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        +                "properties": {
        +                  "not_in_scope": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "produced": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "recommended_companions": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "type": "string"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "produced",
        +                  "not_in_scope"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tier": {
        +            "enum": [
        +              "free",
        +              "paid"
        +            ],
        +            "type": "string"
        +          },
        +          "tier_upgrade": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        +                "properties": {
        +                  "available_tiers": {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        +                      "properties": {
        +                        "billing": {
        +                          "enum": [
        +                            "one_off",
        +                            "monthly",
        +                            "annual"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "currency": {
        +                          "enum": [
        +                            "GBP",
        +                            "SGD",
        +                            "EUR",
        +                            "USD",
        +                            "CAD",
        +                            "AUD",
        +                            "NZD",
        +                            "MYR"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "display_name": {
        +                          "type": "string"
        +                        },
        +                        "price_local": {
        +                          "type": "number"
        +                        },
        +                        "tier_slug": {
        +                          "enum": [
        +                            "7_day_pass",
        +                            "solo",
        +                            "studio",
        +                            "practice"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "unlock_summary": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "tier_slug",
        +                        "display_name",
        +                        "price_local",
        +                        "currency",
        +                        "billing",
        +                        "unlock_summary"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "current_tier": {
        +                    "const": "free",
        +                    "default": "free",
        +                    "type": "string"
        +                  },
        +                  "pass_credit": {
        +                    "anyOf": [
        +                      {
        +                        "additionalProperties": false,
        +                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        +                        "properties": {
        +                          "amount_local": {
        +                            "type": "number"
        +                          },
        +                          "applies_to": {
        +                            "const": "solo_first_month",
        +                            "default": "solo_first_month",
        +                            "type": "string"
        +                          },
        +                          "currency": {
        +                            "type": "string"
        +                          },
        +                          "redeemable_until": {
        +                            "type": "string"
        +                          }
        +                        },
        +                        "required": [
        +                          "amount_local",
        +                          "currency",
        +                          "redeemable_until"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "pricing_url": {
        +                    "default": "https://civilquants.com/pricing",
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "available_tiers"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tos_url": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "upgrade_hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "warranty_disclaimer": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          }
        +        },
        +        "required": [
        +          "request_id",
        +          "issued_at",
        +          "tier"
        +        ],
        +        "type": "object"
        +      },
        +      "data": {
        +        "default": null,
        +        "title": "Data"
        +      },
        +      "error": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        +            "properties": {
        +              "code": {
        +                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        +                "enum": [
        +                  "RATE_LIMIT_EXCEEDED",
        +                  "TIER_INSUFFICIENT",
        +                  "INVALID_INPUT",
        +                  "SCHEMA_VERSION_MISMATCH",
        +                  "SCHEMA_INVARIANT_VIOLATION",
        +                  "UPSTREAM_TIMEOUT",
        +                  "BACKEND_FAILURE",
        +                  "IP_BLOCKED",
        +                  "RESOURCE_NOT_FOUND",
        +                  "RENDER_FAILURE",
        +                  "OCR_LOW_CONFIDENCE",
        +                  "MANUAL_REVIEW_REQUIRED",
        +                  "ACCEPTANCE_REQUIRED",
        +                  "INVALID_TOKEN"
        +                ],
        +                "type": "string"
        +              },
        +              "details": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "message": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "recoverable": {
        +                "type": "boolean"
        +              },
        +              "retry_after_seconds": {
        +                "anyOf": [
        +                  {
        +                    "minimum": 0,
        +                    "type": "integer"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              }
        +            },
        +            "required": [
        +              "code",
        +              "message",
        +              "recoverable"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      }
        +    },
        +    "required": [
        +      "_meta"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedcompute_utility_kiosk_base3 fields changed
      • addedInput schema / properties / deliverables
        Added value: +{
        +  "anyOf": [
        +    {
        +      "items": {
        +        "const": "xlsx",
        +        "type": "string"
        +      },
        +      "type": "array"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null
        +}
      • addedInput schema / properties / output_mode
        Added value: +{
        +  "default": "full_json",
        +  "enum": [
        +    "summary",
        +    "boq",
        +    "boq_with_backup",
        +    "full_json"
        +  ],
        +  "type": "string"
        +}
      • changedOutput schema / properties / result / anyOf
        Previous value: -[
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "_meta": {
        -        "additionalProperties": false,
        -        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        -        "properties": {
        -          "deliverables": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        -                "properties": {
        -                  "docx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "dxf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "expires_at": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  },
        -                  "pdf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "xlsx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "expires_at"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "document_id": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "issued_at": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "rate_limit_remaining": {
        -            "anyOf": [
        -              {
        -                "minimum": 0,
        -                "type": "integer"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "request_id": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "schema_version": {
        -            "const": "1.0.0",
        -            "default": "1.0.0",
        -            "type": "string"
        -          },
        -          "scope_boundary": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        -                "properties": {
        -                  "not_in_scope": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "produced": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "recommended_companions": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "type": "string"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "produced",
        -                  "not_in_scope"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tier": {
        -            "enum": [
        -              "free",
        -              "paid"
        -            ],
        -            "type": "string"
        -          },
        -          "tier_upgrade": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        -                "properties": {
        -                  "available_tiers": {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        -                      "properties": {
        -                        "billing": {
        -                          "enum": [
        -                            "one_off",
        -                            "monthly",
        -                            "annual"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "currency": {
        -                          "enum": [
        -                            "GBP",
        -                            "SGD",
        -                            "EUR",
        -                            "USD",
        -                            "CAD",
        -                            "AUD",
        -                            "NZD",
        -                            "MYR"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "display_name": {
        -                          "type": "string"
        -                        },
        -                        "price_local": {
        -                          "type": "number"
        -                        },
        -                        "tier_slug": {
        -                          "enum": [
        -                            "7_day_pass",
        -                            "solo",
        -                            "studio",
        -                            "practice"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "unlock_summary": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "tier_slug",
        -                        "display_name",
        -                        "price_local",
        -                        "currency",
        -                        "billing",
        -                        "unlock_summary"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "current_tier": {
        -                    "const": "free",
        -                    "default": "free",
        -                    "type": "string"
        -                  },
        -                  "pass_credit": {
        -                    "anyOf": [
        -                      {
        -                        "additionalProperties": false,
        -                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        -                        "properties": {
        -                          "amount_local": {
        -                            "type": "number"
        -                          },
        -                          "applies_to": {
        -                            "const": "solo_first_month",
        -                            "default": "solo_first_month",
        -                            "type": "string"
        -                          },
        -                          "currency": {
        -                            "type": "string"
        -                          },
        -                          "redeemable_until": {
        -                            "type": "string"
        -                          }
        -                        },
        -                        "required": [
        -                          "amount_local",
        -                          "currency",
        -                          "redeemable_until"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "pricing_url": {
        -                    "default": "https://civilquants.com/pricing",
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "available_tiers"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tos_url": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "upgrade_hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "warranty_disclaimer": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          }
        -        },
        -        "required": [
        -          "request_id",
        -          "issued_at",
        -          "tier"
        -        ],
        -        "type": "object"
        -      },
        -      "data": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Schema § 1.1 — the typed payload returned inside `MCPResponse[ComputeResult]`.\n\nFree-tier responses MUST omit `drawings` and `audit_trail` (the bridge\nenforces this); paid-tier responses populate both. `text_summary` is\nbounded to 2000 chars — keeps the LLM-facing summary token-cheap and\nforces longer narrative into BoQ row descriptions where it belongs.\n`warnings` is the non-fatal geometry advisory list (both tiers).",
        -            "properties": {
        -              "assembly_slug": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "audit_trail": {
        -                "anyOf": [
        -                  {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.7 — paid-tier audit-trail entry.\n\nOne entry per BoQ row; `boq_row_index` ties to the row position in\n`ComputeResult.boq_rows`. `derivation` is the human-readable formula\nwalk-through; `formula` is the optional formal expression.",
        -                      "properties": {
        -                        "boq_row_index": {
        -                          "minimum": 0,
        -                          "type": "integer"
        -                        },
        -                        "derivation": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "formula": {
        -                          "anyOf": [
        -                            {
        -                              "type": "string"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ],
        -                          "default": null
        -                        },
        -                        "id": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "parameters_referenced": {
        -                          "items": {
        -                            "type": "string"
        -                          },
        -                          "type": "array"
        -                        }
        -                      },
        -                      "required": [
        -                        "id",
        -                        "boq_row_index",
        -                        "derivation"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "boq_rows": {
        -                "items": {
        -                  "additionalProperties": false,
        -                  "description": "Schema § 1.3 — a single bill row in the requested standard's format.\n\n`description` is the non-verbatim functional description per spec § 13.9 /\n§ 15 invariant — NEVER reproduces a standard's verbatim clause text.\n`rate` / `amount` ship null because rates are commodity data the customer\nowns; the engine's job is the measurement, not the pricing.",
        -                  "properties": {
        -                    "amount": {
        -                      "anyOf": [
        -                        {
        -                          "type": "number"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "attribution": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "audit_id": {
        -                      "anyOf": [
        -                        {
        -                          "type": "string"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "description": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "quantity": {
        -                      "minimum": 0,
        -                      "type": "number"
        -                    },
        -                    "rate": {
        -                      "anyOf": [
        -                        {
        -                          "type": "number"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "unit": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "work_section": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    }
        -                  },
        -                  "required": [
        -                    "work_section",
        -                    "description",
        -                    "quantity",
        -                    "unit",
        -                    "attribution"
        -                  ],
        -                  "type": "object"
        -                },
        -                "type": "array"
        -              },
        -              "drawings": {
        -                "anyOf": [
        -                  {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.6 — paid-tier drawing artefact pointer.\n\n`url` is an R2-signed URL; expiry is carried in `_meta.deliverables.expires_at`\non the envelope (not duplicated here). `layers` is DXF-only; PDF/SVG\ncallers omit it.",
        -                      "properties": {
        -                        "drawing_type": {
        -                          "enum": [
        -                            "section",
        -                            "plan",
        -                            "elevation",
        -                            "isometric",
        -                            "detail"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "format": {
        -                          "enum": [
        -                            "DXF",
        -                            "PDF",
        -                            "SVG"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "layers": {
        -                          "anyOf": [
        -                            {
        -                              "items": {
        -                                "type": "string"
        -                              },
        -                              "type": "array"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ],
        -                          "default": null
        -                        },
        -                        "scale": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "sheet_size": {
        -                          "enum": [
        -                            "A1",
        -                            "A2",
        -                            "A3",
        -                            "A4"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "url": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "drawing_type",
        -                        "format",
        -                        "url",
        -                        "sheet_size",
        -                        "scale"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "parameters_used": {
        -                "additionalProperties": false,
        -                "description": "Schema § 1.2 — the parameter snapshot the engine actually used.\n\nSplits user-supplied values from engine defaults so customers can see\nwhich numbers came from them and which the engine filled in. Every\ndefaulted parameter SHOULD have a corresponding entry in `assumptions`\n— the bridge layer enforces this when wrapping engine output.",
        -                "properties": {
        -                  "assumptions": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "engine_defaults": {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  "resolved_from_description": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "additionalProperties": false,
        -                          "description": "Schema § 1.2 — a parameter resolved by the forgiving-input layer.\n\nPopulated by the Track B-Forgiving Haiku-4.5 resolution pass; until that\nlayer lands, instances are constructed only by tests. `source` distinguishes\nthe resolution path so customers can audit which fields were inferred.",
        -                          "properties": {
        -                            "confidence": {
        -                              "anyOf": [
        -                                {
        -                                  "enum": [
        -                                    "high",
        -                                    "medium",
        -                                    "low"
        -                                  ],
        -                                  "type": "string"
        -                                },
        -                                {
        -                                  "type": "null"
        -                                }
        -                              ],
        -                              "default": null
        -                            },
        -                            "field_name": {
        -                              "minLength": 1,
        -                              "type": "string"
        -                            },
        -                            "resolved_value": {},
        -                            "source": {
        -                              "enum": [
        -                                "description_field",
        -                                "haiku_resolution",
        -                                "engine_default"
        -                              ],
        -                              "type": "string"
        -                            }
        -                          },
        -                          "required": [
        -                            "field_name",
        -                            "resolved_value",
        -                            "source"
        -                          ],
        -                          "type": "object"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "user_supplied": {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  }
        -                },
        -                "type": "object"
        -              },
        -              "standard": {
        -                "enum": [
        -                  "CESMM4",
        -                  "NRM2",
        -                  "SMM7",
        -                  "MMHW"
        -                ],
        -                "type": "string"
        -              },
        -              "text_summary": {
        -                "maxLength": 2000,
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "totals_summary": {
        -                "additionalProperties": false,
        -                "description": "Schema § 1.4 — totals_summary as a typed wrapper around the free-form dict.\n\nWire shape is a flat object (`{\"concrete_m3\": {...}, \"rebar_t\": {...}}`).\nWe model it as `RootModel`-equivalent via `model_config(extra=\"allow\")`\n+ a single `__root__`-style `entries` dict. Pydantic v2 recommends\n`RootModel` for free-form roots; using a wrapper class keeps the import\nsurface uniform with the rest of this module.",
        -                "properties": {
        -                  "entries": {
        -                    "additionalProperties": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.4 — single material/work-class total entry.",
        -                      "properties": {
        -                        "quantity": {
        -                          "minimum": 0,
        -                          "type": "number"
        -                        },
        -                        "unit": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "quantity",
        -                        "unit"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "object"
        -                  }
        -                },
        -                "type": "object"
        -              },
        -              "warnings": {
        -                "items": {
        -                  "additionalProperties": false,
        -                  "description": "Schema § 1.8 — a non-fatal geometry advisory (56th-fire T2).\n\nThe wire projection of the engine's `core.GeometryWarning`. Advisory only:\na warning NEVER changes a measured quantity — it flags geometry that is\nvalid but likely a mistake (e.g. a stale dependent-height default). Present\non BOTH tiers — a correctness/safety signal, not a paid feature.",
        -                  "properties": {
        -                    "affected_params": {
        -                      "items": {
        -                        "type": "string"
        -                      },
        -                      "type": "array"
        -                    },
        -                    "code": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "detail": {
        -                      "additionalProperties": {
        -                        "type": "number"
        -                      },
        -                      "type": "object"
        -                    },
        -                    "message": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "severity": {
        -                      "enum": [
        -                        "info",
        -                        "advisory",
        -                        "caution"
        -                      ],
        -                      "type": "string"
        -                    }
        -                  },
        -                  "required": [
        -                    "code",
        -                    "severity",
        -                    "message"
        -                  ],
        -                  "type": "object"
        -                },
        -                "type": "array"
        -              }
        -            },
        -            "required": [
        -              "assembly_slug",
        -              "standard",
        -              "parameters_used",
        -              "boq_rows",
        -              "totals_summary",
        -              "text_summary"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      },
        -      "error": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        -            "properties": {
        -              "code": {
        -                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        -                "enum": [
        -                  "RATE_LIMIT_EXCEEDED",
        -                  "TIER_INSUFFICIENT",
        -                  "INVALID_INPUT",
        -                  "SCHEMA_VERSION_MISMATCH",
        -                  "SCHEMA_INVARIANT_VIOLATION",
        -                  "UPSTREAM_TIMEOUT",
        -                  "BACKEND_FAILURE",
        -                  "IP_BLOCKED",
        -                  "RESOURCE_NOT_FOUND",
        -                  "RENDER_FAILURE",
        -                  "OCR_LOW_CONFIDENCE",
        -                  "MANUAL_REVIEW_REQUIRED",
        -                  "ACCEPTANCE_REQUIRED",
        -                  "INVALID_TOKEN"
        -                ],
        -                "type": "string"
        -              },
        -              "details": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "message": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "recoverable": {
        -                "type": "boolean"
        -              },
        -              "retry_after_seconds": {
        -                "anyOf": [
        -                  {
        -                    "minimum": 0,
        -                    "type": "integer"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              }
        -            },
        -            "required": [
        -              "code",
        -              "message",
        -              "recoverable"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      }
        -    },
        -    "required": [
        -      "_meta"
        -    ],
        -    "type": "object"
        -  },
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "_meta": {
        -        "additionalProperties": false,
        -        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        -        "properties": {
        -          "deliverables": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        -                "properties": {
        -                  "docx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "dxf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "expires_at": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  },
        -                  "pdf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "xlsx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "expires_at"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "document_id": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "issued_at": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "rate_limit_remaining": {
        -            "anyOf": [
        -              {
        -                "minimum": 0,
        -                "type": "integer"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "request_id": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "schema_version": {
        -            "const": "1.0.0",
        -            "default": "1.0.0",
        -            "type": "string"
        -          },
        -          "scope_boundary": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        -                "properties": {
        -                  "not_in_scope": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "produced": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "recommended_companions": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "type": "string"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "produced",
        -                  "not_in_scope"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tier": {
        -            "enum": [
        -              "free",
        -              "paid"
        -            ],
        -            "type": "string"
        -          },
        -          "tier_upgrade": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        -                "properties": {
        -                  "available_tiers": {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        -                      "properties": {
        -                        "billing": {
        -                          "enum": [
        -                            "one_off",
        -                            "monthly",
        -                            "annual"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "currency": {
        -                          "enum": [
        -                            "GBP",
        -                            "SGD",
        -                            "EUR",
        -                            "USD",
        -                            "CAD",
        -                            "AUD",
        -                            "NZD",
        -                            "MYR"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "display_name": {
        -                          "type": "string"
        -                        },
        -                        "price_local": {
        -                          "type": "number"
        -                        },
        -                        "tier_slug": {
        -                          "enum": [
        -                            "7_day_pass",
        -                            "solo",
        -                            "studio",
        -                            "practice"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "unlock_summary": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "tier_slug",
        -                        "display_name",
        -                        "price_local",
        -                        "currency",
        -                        "billing",
        -                        "unlock_summary"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "current_tier": {
        -                    "const": "free",
        -                    "default": "free",
        -                    "type": "string"
        -                  },
        -                  "pass_credit": {
        -                    "anyOf": [
        -                      {
        -                        "additionalProperties": false,
        -                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        -                        "properties": {
        -                          "amount_local": {
        -                            "type": "number"
        -                          },
        -                          "applies_to": {
        -                            "const": "solo_first_month",
        -                            "default": "solo_first_month",
        -                            "type": "string"
        -                          },
        -                          "currency": {
        -                            "type": "string"
        -                          },
        -                          "redeemable_until": {
        -                            "type": "string"
        -                          }
        -                        },
        -                        "required": [
        -                          "amount_local",
        -                          "currency",
        -                          "redeemable_until"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "pricing_url": {
        -                    "default": "https://civilquants.com/pricing",
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "available_tiers"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tos_url": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "upgrade_hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "warranty_disclaimer": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          }
        -        },
        -        "required": [
        -          "request_id",
        -          "issued_at",
        -          "tier"
        -        ],
        -        "type": "object"
        -      },
        -      "data": {
        -        "default": null,
        -        "title": "Data"
        -      },
        -      "error": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        -            "properties": {
        -              "code": {
        -                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        -                "enum": [
        -                  "RATE_LIMIT_EXCEEDED",
        -                  "TIER_INSUFFICIENT",
        -                  "INVALID_INPUT",
        -                  "SCHEMA_VERSION_MISMATCH",
        -                  "SCHEMA_INVARIANT_VIOLATION",
        -                  "UPSTREAM_TIMEOUT",
        -                  "BACKEND_FAILURE",
        -                  "IP_BLOCKED",
        -                  "RESOURCE_NOT_FOUND",
        -                  "RENDER_FAILURE",
        -                  "OCR_LOW_CONFIDENCE",
        -                  "MANUAL_REVIEW_REQUIRED",
        -                  "ACCEPTANCE_REQUIRED",
        -                  "INVALID_TOKEN"
        -                ],
        -                "type": "string"
        -              },
        -              "details": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "message": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "recoverable": {
        -                "type": "boolean"
        -              },
        -              "retry_after_seconds": {
        -                "anyOf": [
        -                  {
        -                    "minimum": 0,
        -                    "type": "integer"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              }
        -            },
        -            "required": [
        -              "code",
        -              "message",
        -              "recoverable"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      }
        -    },
        -    "required": [
        -      "_meta"
        -    ],
        -    "type": "object"
        -  }
        -]New value: +[
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "_meta": {
        +        "additionalProperties": false,
        +        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        +        "properties": {
        +          "deliverables": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        +                "properties": {
        +                  "docx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "dxf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "expires_at": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  },
        +                  "pdf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "xlsx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "expires_at"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "document_id": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "issued_at": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "rate_limit_remaining": {
        +            "anyOf": [
        +              {
        +                "minimum": 0,
        +                "type": "integer"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "request_id": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "schema_version": {
        +            "const": "1.0.0",
        +            "default": "1.0.0",
        +            "type": "string"
        +          },
        +          "scope_boundary": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        +                "properties": {
        +                  "not_in_scope": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "produced": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "recommended_companions": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "type": "string"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "produced",
        +                  "not_in_scope"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tier": {
        +            "enum": [
        +              "free",
        +              "paid"
        +            ],
        +            "type": "string"
        +          },
        +          "tier_upgrade": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        +                "properties": {
        +                  "available_tiers": {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        +                      "properties": {
        +                        "billing": {
        +                          "enum": [
        +                            "one_off",
        +                            "monthly",
        +                            "annual"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "currency": {
        +                          "enum": [
        +                            "GBP",
        +                            "SGD",
        +                            "EUR",
        +                            "USD",
        +                            "CAD",
        +                            "AUD",
        +                            "NZD",
        +                            "MYR"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "display_name": {
        +                          "type": "string"
        +                        },
        +                        "price_local": {
        +                          "type": "number"
        +                        },
        +                        "tier_slug": {
        +                          "enum": [
        +                            "7_day_pass",
        +                            "solo",
        +                            "studio",
        +                            "practice"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "unlock_summary": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "tier_slug",
        +                        "display_name",
        +                        "price_local",
        +                        "currency",
        +                        "billing",
        +                        "unlock_summary"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "current_tier": {
        +                    "const": "free",
        +                    "default": "free",
        +                    "type": "string"
        +                  },
        +                  "pass_credit": {
        +                    "anyOf": [
        +                      {
        +                        "additionalProperties": false,
        +                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        +                        "properties": {
        +                          "amount_local": {
        +                            "type": "number"
        +                          },
        +                          "applies_to": {
        +                            "const": "solo_first_month",
        +                            "default": "solo_first_month",
        +                            "type": "string"
        +                          },
        +                          "currency": {
        +                            "type": "string"
        +                          },
        +                          "redeemable_until": {
        +                            "type": "string"
        +                          }
        +                        },
        +                        "required": [
        +                          "amount_local",
        +                          "currency",
        +                          "redeemable_until"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "pricing_url": {
        +                    "default": "https://civilquants.com/pricing",
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "available_tiers"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tos_url": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "upgrade_hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "warranty_disclaimer": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          }
        +        },
        +        "required": [
        +          "request_id",
        +          "issued_at",
        +          "tier"
        +        ],
        +        "type": "object"
        +      },
        +      "data": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Schema § 1.1 — the typed payload returned inside `MCPResponse[ComputeResult]`.\n\nFree-tier responses omit `drawings` (the downloadable CAD artefact\npointers — the paid differentiator); the bridge enforces this. The\n`audit_trail` and the inline `drawing` preview are present on BOTH tiers\n(V1 ALIGN / 60th-fire D + C). `text_summary` is bounded to 2000 chars —\nkeeps the LLM-facing summary token-cheap and forces longer narrative into\nBoQ row descriptions where it belongs. `warnings` is the non-fatal\ngeometry advisory list (both tiers).",
        +            "properties": {
        +              "assembly_slug": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "audit_trail": {
        +                "anyOf": [
        +                  {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.7 — paid-tier audit-trail entry.\n\nOne entry per BoQ row; `boq_row_index` ties to the row position in\n`ComputeResult.boq_rows`. `derivation` is the human-readable formula\nwalk-through; `formula` is the optional formal expression.",
        +                      "properties": {
        +                        "boq_row_index": {
        +                          "minimum": 0,
        +                          "type": "integer"
        +                        },
        +                        "derivation": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "formula": {
        +                          "anyOf": [
        +                            {
        +                              "type": "string"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ],
        +                          "default": null
        +                        },
        +                        "id": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "parameters_referenced": {
        +                          "items": {
        +                            "type": "string"
        +                          },
        +                          "type": "array"
        +                        }
        +                      },
        +                      "required": [
        +                        "id",
        +                        "boq_row_index",
        +                        "derivation"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "boq_rows": {
        +                "items": {
        +                  "additionalProperties": false,
        +                  "description": "Schema § 1.3 — a single bill row in the requested standard's format.\n\n`description` is the non-verbatim functional description per spec § 13.9 /\n§ 15 invariant — NEVER reproduces a standard's verbatim clause text.\n`rate` / `amount` ship null because rates are commodity data the customer\nowns; the engine's job is the measurement, not the pricing.",
        +                  "properties": {
        +                    "amount": {
        +                      "anyOf": [
        +                        {
        +                          "type": "number"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "attribution": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "audit_id": {
        +                      "anyOf": [
        +                        {
        +                          "type": "string"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "description": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "quantity": {
        +                      "minimum": 0,
        +                      "type": "number"
        +                    },
        +                    "rate": {
        +                      "anyOf": [
        +                        {
        +                          "type": "number"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "unit": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "work_section": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    }
        +                  },
        +                  "required": [
        +                    "work_section",
        +                    "description",
        +                    "quantity",
        +                    "unit",
        +                    "attribution"
        +                  ],
        +                  "type": "object"
        +                },
        +                "type": "array"
        +              },
        +              "drawing": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": false,
        +                    "description": "Schema § 1.6a — inline server-rendered SVG preview of the geometry.\n\nThe MCP mirror of the web ``/compute`` response's ``drawing`` field\n(``api.schemas.compute.DrawingRef``): the same on-screen dimensioned\ndrawing both tiers see in the workspace, surfaced on the MCP compute\nresponse so a chat client can render it inline (60th-fire item C). This\nis the on-screen preview — present on BOTH tiers per the free/paid\nboundary; the downloadable CAD artefacts (DXF / dimensioned PDF) remain\nthe paid differentiator via the export tools.\n\nDefined here rather than importing ``DrawingRef`` because the web\n``schemas`` package imports back into this module (``schemas.render``),\nso reusing it would create an import cycle — the MCP wire contract keeps\nits own copy, the same pattern as ``BoQRow`` / ``DrawingReference``.",
        +                    "properties": {
        +                      "entity_count": {
        +                        "minimum": 0,
        +                        "type": "integer"
        +                      },
        +                      "svg_b64": {
        +                        "minLength": 1,
        +                        "type": "string"
        +                      },
        +                      "unit_of_drawing": {
        +                        "const": "m",
        +                        "default": "m",
        +                        "type": "string"
        +                      },
        +                      "viewbox_height": {
        +                        "exclusiveMinimum": 0,
        +                        "type": "number"
        +                      },
        +                      "viewbox_width": {
        +                        "exclusiveMinimum": 0,
        +                        "type": "number"
        +                      },
        +                      "viewbox_x": {
        +                        "type": "number"
        +                      },
        +                      "viewbox_y": {
        +                        "type": "number"
        +                      }
        +                    },
        +                    "required": [
        +                      "svg_b64",
        +                      "viewbox_x",
        +                      "viewbox_y",
        +                      "viewbox_width",
        +                      "viewbox_height",
        +                      "entity_count"
        +                    ],
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "drawings": {
        +                "anyOf": [
        +                  {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.6 — paid-tier drawing artefact pointer.\n\n`url` is an R2-signed URL; expiry is carried in `_meta.deliverables.expires_at`\non the envelope (not duplicated here). `layers` is DXF-only; PDF/SVG\ncallers omit it.",
        +                      "properties": {
        +                        "drawing_type": {
        +                          "enum": [
        +                            "section",
        +                            "plan",
        +                            "elevation",
        +                            "isometric",
        +                            "detail"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "format": {
        +                          "enum": [
        +                            "DXF",
        +                            "PDF",
        +                            "SVG"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "layers": {
        +                          "anyOf": [
        +                            {
        +                              "items": {
        +                                "type": "string"
        +                              },
        +                              "type": "array"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ],
        +                          "default": null
        +                        },
        +                        "scale": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "sheet_size": {
        +                          "enum": [
        +                            "A1",
        +                            "A2",
        +                            "A3",
        +                            "A4"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "url": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "drawing_type",
        +                        "format",
        +                        "url",
        +                        "sheet_size",
        +                        "scale"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "parameters_used": {
        +                "additionalProperties": false,
        +                "description": "Schema § 1.2 — the parameter snapshot the engine actually used.\n\nSplits user-supplied values from engine defaults so customers can see\nwhich numbers came from them and which the engine filled in. Every\ndefaulted parameter SHOULD have a corresponding entry in `assumptions`\n— the bridge layer enforces this when wrapping engine output.",
        +                "properties": {
        +                  "assumptions": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "engine_defaults": {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  "resolved_from_description": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "additionalProperties": false,
        +                          "description": "Schema § 1.2 — a parameter resolved by the forgiving-input layer.\n\nPopulated by the Track B-Forgiving Haiku-4.5 resolution pass; until that\nlayer lands, instances are constructed only by tests. `source` distinguishes\nthe resolution path so customers can audit which fields were inferred.",
        +                          "properties": {
        +                            "confidence": {
        +                              "anyOf": [
        +                                {
        +                                  "enum": [
        +                                    "high",
        +                                    "medium",
        +                                    "low"
        +                                  ],
        +                                  "type": "string"
        +                                },
        +                                {
        +                                  "type": "null"
        +                                }
        +                              ],
        +                              "default": null
        +                            },
        +                            "field_name": {
        +                              "minLength": 1,
        +                              "type": "string"
        +                            },
        +                            "resolved_value": {},
        +                            "source": {
        +                              "enum": [
        +                                "description_field",
        +                                "haiku_resolution",
        +                                "engine_default"
        +                              ],
        +                              "type": "string"
        +                            }
        +                          },
        +                          "required": [
        +                            "field_name",
        +                            "resolved_value",
        +                            "source"
        +                          ],
        +                          "type": "object"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "user_supplied": {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  }
        +                },
        +                "type": "object"
        +              },
        +              "standard": {
        +                "enum": [
        +                  "CESMM4",
        +                  "NRM2",
        +                  "SMM7",
        +                  "MMHW"
        +                ],
        +                "type": "string"
        +              },
        +              "text_summary": {
        +                "maxLength": 2000,
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "totals_summary": {
        +                "additionalProperties": false,
        +                "description": "Schema § 1.4 — totals_summary as a typed wrapper around the free-form dict.\n\nWire shape is a flat object (`{\"concrete_m3\": {...}, \"rebar_t\": {...}}`).\nWe model it as `RootModel`-equivalent via `model_config(extra=\"allow\")`\n+ a single `__root__`-style `entries` dict. Pydantic v2 recommends\n`RootModel` for free-form roots; using a wrapper class keeps the import\nsurface uniform with the rest of this module.",
        +                "properties": {
        +                  "entries": {
        +                    "additionalProperties": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.4 — single material/work-class total entry.",
        +                      "properties": {
        +                        "quantity": {
        +                          "minimum": 0,
        +                          "type": "number"
        +                        },
        +                        "unit": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "quantity",
        +                        "unit"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "object"
        +                  }
        +                },
        +                "type": "object"
        +              },
        +              "warnings": {
        +                "items": {
        +                  "additionalProperties": false,
        +                  "description": "Schema § 1.8 — a non-fatal geometry advisory (56th-fire T2).\n\nThe wire projection of the engine's `core.GeometryWarning`. Advisory only:\na warning NEVER changes a measured quantity — it flags geometry that is\nvalid but likely a mistake (e.g. a stale dependent-height default). Present\non BOTH tiers — a correctness/safety signal, not a paid feature.",
        +                  "properties": {
        +                    "affected_params": {
        +                      "items": {
        +                        "type": "string"
        +                      },
        +                      "type": "array"
        +                    },
        +                    "code": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "detail": {
        +                      "additionalProperties": {
        +                        "type": "number"
        +                      },
        +                      "type": "object"
        +                    },
        +                    "message": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "severity": {
        +                      "enum": [
        +                        "info",
        +                        "advisory",
        +                        "caution"
        +                      ],
        +                      "type": "string"
        +                    }
        +                  },
        +                  "required": [
        +                    "code",
        +                    "severity",
        +                    "message"
        +                  ],
        +                  "type": "object"
        +                },
        +                "type": "array"
        +              }
        +            },
        +            "required": [
        +              "assembly_slug",
        +              "standard",
        +              "parameters_used",
        +              "boq_rows",
        +              "totals_summary",
        +              "text_summary"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      },
        +      "error": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        +            "properties": {
        +              "code": {
        +                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        +                "enum": [
        +                  "RATE_LIMIT_EXCEEDED",
        +                  "TIER_INSUFFICIENT",
        +                  "INVALID_INPUT",
        +                  "SCHEMA_VERSION_MISMATCH",
        +                  "SCHEMA_INVARIANT_VIOLATION",
        +                  "UPSTREAM_TIMEOUT",
        +                  "BACKEND_FAILURE",
        +                  "IP_BLOCKED",
        +                  "RESOURCE_NOT_FOUND",
        +                  "RENDER_FAILURE",
        +                  "OCR_LOW_CONFIDENCE",
        +                  "MANUAL_REVIEW_REQUIRED",
        +                  "ACCEPTANCE_REQUIRED",
        +                  "INVALID_TOKEN"
        +                ],
        +                "type": "string"
        +              },
        +              "details": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "message": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "recoverable": {
        +                "type": "boolean"
        +              },
        +              "retry_after_seconds": {
        +                "anyOf": [
        +                  {
        +                    "minimum": 0,
        +                    "type": "integer"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              }
        +            },
        +            "required": [
        +              "code",
        +              "message",
        +              "recoverable"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      }
        +    },
        +    "required": [
        +      "_meta"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "_meta": {
        +        "additionalProperties": false,
        +        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        +        "properties": {
        +          "deliverables": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        +                "properties": {
        +                  "docx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "dxf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "expires_at": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  },
        +                  "pdf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "xlsx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "expires_at"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "document_id": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "issued_at": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "rate_limit_remaining": {
        +            "anyOf": [
        +              {
        +                "minimum": 0,
        +                "type": "integer"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "request_id": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "schema_version": {
        +            "const": "1.0.0",
        +            "default": "1.0.0",
        +            "type": "string"
        +          },
        +          "scope_boundary": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        +                "properties": {
        +                  "not_in_scope": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "produced": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "recommended_companions": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "type": "string"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "produced",
        +                  "not_in_scope"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tier": {
        +            "enum": [
        +              "free",
        +              "paid"
        +            ],
        +            "type": "string"
        +          },
        +          "tier_upgrade": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        +                "properties": {
        +                  "available_tiers": {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        +                      "properties": {
        +                        "billing": {
        +                          "enum": [
        +                            "one_off",
        +                            "monthly",
        +                            "annual"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "currency": {
        +                          "enum": [
        +                            "GBP",
        +                            "SGD",
        +                            "EUR",
        +                            "USD",
        +                            "CAD",
        +                            "AUD",
        +                            "NZD",
        +                            "MYR"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "display_name": {
        +                          "type": "string"
        +                        },
        +                        "price_local": {
        +                          "type": "number"
        +                        },
        +                        "tier_slug": {
        +                          "enum": [
        +                            "7_day_pass",
        +                            "solo",
        +                            "studio",
        +                            "practice"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "unlock_summary": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "tier_slug",
        +                        "display_name",
        +                        "price_local",
        +                        "currency",
        +                        "billing",
        +                        "unlock_summary"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "current_tier": {
        +                    "const": "free",
        +                    "default": "free",
        +                    "type": "string"
        +                  },
        +                  "pass_credit": {
        +                    "anyOf": [
        +                      {
        +                        "additionalProperties": false,
        +                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        +                        "properties": {
        +                          "amount_local": {
        +                            "type": "number"
        +                          },
        +                          "applies_to": {
        +                            "const": "solo_first_month",
        +                            "default": "solo_first_month",
        +                            "type": "string"
        +                          },
        +                          "currency": {
        +                            "type": "string"
        +                          },
        +                          "redeemable_until": {
        +                            "type": "string"
        +                          }
        +                        },
        +                        "required": [
        +                          "amount_local",
        +                          "currency",
        +                          "redeemable_until"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "pricing_url": {
        +                    "default": "https://civilquants.com/pricing",
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "available_tiers"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tos_url": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "upgrade_hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "warranty_disclaimer": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          }
        +        },
        +        "required": [
        +          "request_id",
        +          "issued_at",
        +          "tier"
        +        ],
        +        "type": "object"
        +      },
        +      "data": {
        +        "default": null,
        +        "title": "Data"
        +      },
        +      "error": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        +            "properties": {
        +              "code": {
        +                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        +                "enum": [
        +                  "RATE_LIMIT_EXCEEDED",
        +                  "TIER_INSUFFICIENT",
        +                  "INVALID_INPUT",
        +                  "SCHEMA_VERSION_MISMATCH",
        +                  "SCHEMA_INVARIANT_VIOLATION",
        +                  "UPSTREAM_TIMEOUT",
        +                  "BACKEND_FAILURE",
        +                  "IP_BLOCKED",
        +                  "RESOURCE_NOT_FOUND",
        +                  "RENDER_FAILURE",
        +                  "OCR_LOW_CONFIDENCE",
        +                  "MANUAL_REVIEW_REQUIRED",
        +                  "ACCEPTANCE_REQUIRED",
        +                  "INVALID_TOKEN"
        +                ],
        +                "type": "string"
        +              },
        +              "details": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "message": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "recoverable": {
        +                "type": "boolean"
        +              },
        +              "retry_after_seconds": {
        +                "anyOf": [
        +                  {
        +                    "minimum": 0,
        +                    "type": "integer"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              }
        +            },
        +            "required": [
        +              "code",
        +              "message",
        +              "recoverable"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      }
        +    },
        +    "required": [
        +      "_meta"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedcompute_vehicle_restraint_system3 fields changed
      • addedInput schema / properties / deliverables
        Added value: +{
        +  "anyOf": [
        +    {
        +      "items": {
        +        "const": "xlsx",
        +        "type": "string"
        +      },
        +      "type": "array"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null
        +}
      • addedInput schema / properties / output_mode
        Added value: +{
        +  "default": "full_json",
        +  "enum": [
        +    "summary",
        +    "boq",
        +    "boq_with_backup",
        +    "full_json"
        +  ],
        +  "type": "string"
        +}
      • changedOutput schema / properties / result / anyOf
        Previous value: -[
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "_meta": {
        -        "additionalProperties": false,
        -        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        -        "properties": {
        -          "deliverables": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        -                "properties": {
        -                  "docx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "dxf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "expires_at": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  },
        -                  "pdf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "xlsx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "expires_at"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "document_id": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "issued_at": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "rate_limit_remaining": {
        -            "anyOf": [
        -              {
        -                "minimum": 0,
        -                "type": "integer"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "request_id": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "schema_version": {
        -            "const": "1.0.0",
        -            "default": "1.0.0",
        -            "type": "string"
        -          },
        -          "scope_boundary": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        -                "properties": {
        -                  "not_in_scope": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "produced": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "recommended_companions": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "type": "string"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "produced",
        -                  "not_in_scope"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tier": {
        -            "enum": [
        -              "free",
        -              "paid"
        -            ],
        -            "type": "string"
        -          },
        -          "tier_upgrade": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        -                "properties": {
        -                  "available_tiers": {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        -                      "properties": {
        -                        "billing": {
        -                          "enum": [
        -                            "one_off",
        -                            "monthly",
        -                            "annual"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "currency": {
        -                          "enum": [
        -                            "GBP",
        -                            "SGD",
        -                            "EUR",
        -                            "USD",
        -                            "CAD",
        -                            "AUD",
        -                            "NZD",
        -                            "MYR"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "display_name": {
        -                          "type": "string"
        -                        },
        -                        "price_local": {
        -                          "type": "number"
        -                        },
        -                        "tier_slug": {
        -                          "enum": [
        -                            "7_day_pass",
        -                            "solo",
        -                            "studio",
        -                            "practice"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "unlock_summary": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "tier_slug",
        -                        "display_name",
        -                        "price_local",
        -                        "currency",
        -                        "billing",
        -                        "unlock_summary"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "current_tier": {
        -                    "const": "free",
        -                    "default": "free",
        -                    "type": "string"
        -                  },
        -                  "pass_credit": {
        -                    "anyOf": [
        -                      {
        -                        "additionalProperties": false,
        -                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        -                        "properties": {
        -                          "amount_local": {
        -                            "type": "number"
        -                          },
        -                          "applies_to": {
        -                            "const": "solo_first_month",
        -                            "default": "solo_first_month",
        -                            "type": "string"
        -                          },
        -                          "currency": {
        -                            "type": "string"
        -                          },
        -                          "redeemable_until": {
        -                            "type": "string"
        -                          }
        -                        },
        -                        "required": [
        -                          "amount_local",
        -                          "currency",
        -                          "redeemable_until"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "pricing_url": {
        -                    "default": "https://civilquants.com/pricing",
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "available_tiers"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tos_url": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "upgrade_hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "warranty_disclaimer": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          }
        -        },
        -        "required": [
        -          "request_id",
        -          "issued_at",
        -          "tier"
        -        ],
        -        "type": "object"
        -      },
        -      "data": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Schema § 1.1 — the typed payload returned inside `MCPResponse[ComputeResult]`.\n\nFree-tier responses MUST omit `drawings` and `audit_trail` (the bridge\nenforces this); paid-tier responses populate both. `text_summary` is\nbounded to 2000 chars — keeps the LLM-facing summary token-cheap and\nforces longer narrative into BoQ row descriptions where it belongs.\n`warnings` is the non-fatal geometry advisory list (both tiers).",
        -            "properties": {
        -              "assembly_slug": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "audit_trail": {
        -                "anyOf": [
        -                  {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.7 — paid-tier audit-trail entry.\n\nOne entry per BoQ row; `boq_row_index` ties to the row position in\n`ComputeResult.boq_rows`. `derivation` is the human-readable formula\nwalk-through; `formula` is the optional formal expression.",
        -                      "properties": {
        -                        "boq_row_index": {
        -                          "minimum": 0,
        -                          "type": "integer"
        -                        },
        -                        "derivation": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "formula": {
        -                          "anyOf": [
        -                            {
        -                              "type": "string"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ],
        -                          "default": null
        -                        },
        -                        "id": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "parameters_referenced": {
        -                          "items": {
        -                            "type": "string"
        -                          },
        -                          "type": "array"
        -                        }
        -                      },
        -                      "required": [
        -                        "id",
        -                        "boq_row_index",
        -                        "derivation"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "boq_rows": {
        -                "items": {
        -                  "additionalProperties": false,
        -                  "description": "Schema § 1.3 — a single bill row in the requested standard's format.\n\n`description` is the non-verbatim functional description per spec § 13.9 /\n§ 15 invariant — NEVER reproduces a standard's verbatim clause text.\n`rate` / `amount` ship null because rates are commodity data the customer\nowns; the engine's job is the measurement, not the pricing.",
        -                  "properties": {
        -                    "amount": {
        -                      "anyOf": [
        -                        {
        -                          "type": "number"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "attribution": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "audit_id": {
        -                      "anyOf": [
        -                        {
        -                          "type": "string"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "description": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "quantity": {
        -                      "minimum": 0,
        -                      "type": "number"
        -                    },
        -                    "rate": {
        -                      "anyOf": [
        -                        {
        -                          "type": "number"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "unit": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "work_section": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    }
        -                  },
        -                  "required": [
        -                    "work_section",
        -                    "description",
        -                    "quantity",
        -                    "unit",
        -                    "attribution"
        -                  ],
        -                  "type": "object"
        -                },
        -                "type": "array"
        -              },
        -              "drawings": {
        -                "anyOf": [
        -                  {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.6 — paid-tier drawing artefact pointer.\n\n`url` is an R2-signed URL; expiry is carried in `_meta.deliverables.expires_at`\non the envelope (not duplicated here). `layers` is DXF-only; PDF/SVG\ncallers omit it.",
        -                      "properties": {
        -                        "drawing_type": {
        -                          "enum": [
        -                            "section",
        -                            "plan",
        -                            "elevation",
        -                            "isometric",
        -                            "detail"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "format": {
        -                          "enum": [
        -                            "DXF",
        -                            "PDF",
        -                            "SVG"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "layers": {
        -                          "anyOf": [
        -                            {
        -                              "items": {
        -                                "type": "string"
        -                              },
        -                              "type": "array"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ],
        -                          "default": null
        -                        },
        -                        "scale": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "sheet_size": {
        -                          "enum": [
        -                            "A1",
        -                            "A2",
        -                            "A3",
        -                            "A4"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "url": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "drawing_type",
        -                        "format",
        -                        "url",
        -                        "sheet_size",
        -                        "scale"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "parameters_used": {
        -                "additionalProperties": false,
        -                "description": "Schema § 1.2 — the parameter snapshot the engine actually used.\n\nSplits user-supplied values from engine defaults so customers can see\nwhich numbers came from them and which the engine filled in. Every\ndefaulted parameter SHOULD have a corresponding entry in `assumptions`\n— the bridge layer enforces this when wrapping engine output.",
        -                "properties": {
        -                  "assumptions": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "engine_defaults": {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  "resolved_from_description": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "additionalProperties": false,
        -                          "description": "Schema § 1.2 — a parameter resolved by the forgiving-input layer.\n\nPopulated by the Track B-Forgiving Haiku-4.5 resolution pass; until that\nlayer lands, instances are constructed only by tests. `source` distinguishes\nthe resolution path so customers can audit which fields were inferred.",
        -                          "properties": {
        -                            "confidence": {
        -                              "anyOf": [
        -                                {
        -                                  "enum": [
        -                                    "high",
        -                                    "medium",
        -                                    "low"
        -                                  ],
        -                                  "type": "string"
        -                                },
        -                                {
        -                                  "type": "null"
        -                                }
        -                              ],
        -                              "default": null
        -                            },
        -                            "field_name": {
        -                              "minLength": 1,
        -                              "type": "string"
        -                            },
        -                            "resolved_value": {},
        -                            "source": {
        -                              "enum": [
        -                                "description_field",
        -                                "haiku_resolution",
        -                                "engine_default"
        -                              ],
        -                              "type": "string"
        -                            }
        -                          },
        -                          "required": [
        -                            "field_name",
        -                            "resolved_value",
        -                            "source"
        -                          ],
        -                          "type": "object"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "user_supplied": {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  }
        -                },
        -                "type": "object"
        -              },
        -              "standard": {
        -                "enum": [
        -                  "CESMM4",
        -                  "NRM2",
        -                  "SMM7",
        -                  "MMHW"
        -                ],
        -                "type": "string"
        -              },
        -              "text_summary": {
        -                "maxLength": 2000,
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "totals_summary": {
        -                "additionalProperties": false,
        -                "description": "Schema § 1.4 — totals_summary as a typed wrapper around the free-form dict.\n\nWire shape is a flat object (`{\"concrete_m3\": {...}, \"rebar_t\": {...}}`).\nWe model it as `RootModel`-equivalent via `model_config(extra=\"allow\")`\n+ a single `__root__`-style `entries` dict. Pydantic v2 recommends\n`RootModel` for free-form roots; using a wrapper class keeps the import\nsurface uniform with the rest of this module.",
        -                "properties": {
        -                  "entries": {
        -                    "additionalProperties": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.4 — single material/work-class total entry.",
        -                      "properties": {
        -                        "quantity": {
        -                          "minimum": 0,
        -                          "type": "number"
        -                        },
        -                        "unit": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "quantity",
        -                        "unit"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "object"
        -                  }
        -                },
        -                "type": "object"
        -              },
        -              "warnings": {
        -                "items": {
        -                  "additionalProperties": false,
        -                  "description": "Schema § 1.8 — a non-fatal geometry advisory (56th-fire T2).\n\nThe wire projection of the engine's `core.GeometryWarning`. Advisory only:\na warning NEVER changes a measured quantity — it flags geometry that is\nvalid but likely a mistake (e.g. a stale dependent-height default). Present\non BOTH tiers — a correctness/safety signal, not a paid feature.",
        -                  "properties": {
        -                    "affected_params": {
        -                      "items": {
        -                        "type": "string"
        -                      },
        -                      "type": "array"
        -                    },
        -                    "code": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "detail": {
        -                      "additionalProperties": {
        -                        "type": "number"
        -                      },
        -                      "type": "object"
        -                    },
        -                    "message": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "severity": {
        -                      "enum": [
        -                        "info",
        -                        "advisory",
        -                        "caution"
        -                      ],
        -                      "type": "string"
        -                    }
        -                  },
        -                  "required": [
        -                    "code",
        -                    "severity",
        -                    "message"
        -                  ],
        -                  "type": "object"
        -                },
        -                "type": "array"
        -              }
        -            },
        -            "required": [
        -              "assembly_slug",
        -              "standard",
        -              "parameters_used",
        -              "boq_rows",
        -              "totals_summary",
        -              "text_summary"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      },
        -      "error": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        -            "properties": {
        -              "code": {
        -                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        -                "enum": [
        -                  "RATE_LIMIT_EXCEEDED",
        -                  "TIER_INSUFFICIENT",
        -                  "INVALID_INPUT",
        -                  "SCHEMA_VERSION_MISMATCH",
        -                  "SCHEMA_INVARIANT_VIOLATION",
        -                  "UPSTREAM_TIMEOUT",
        -                  "BACKEND_FAILURE",
        -                  "IP_BLOCKED",
        -                  "RESOURCE_NOT_FOUND",
        -                  "RENDER_FAILURE",
        -                  "OCR_LOW_CONFIDENCE",
        -                  "MANUAL_REVIEW_REQUIRED",
        -                  "ACCEPTANCE_REQUIRED",
        -                  "INVALID_TOKEN"
        -                ],
        -                "type": "string"
        -              },
        -              "details": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "message": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "recoverable": {
        -                "type": "boolean"
        -              },
        -              "retry_after_seconds": {
        -                "anyOf": [
        -                  {
        -                    "minimum": 0,
        -                    "type": "integer"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              }
        -            },
        -            "required": [
        -              "code",
        -              "message",
        -              "recoverable"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      }
        -    },
        -    "required": [
        -      "_meta"
        -    ],
        -    "type": "object"
        -  },
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "_meta": {
        -        "additionalProperties": false,
        -        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        -        "properties": {
        -          "deliverables": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        -                "properties": {
        -                  "docx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "dxf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "expires_at": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  },
        -                  "pdf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "xlsx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "expires_at"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "document_id": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "issued_at": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "rate_limit_remaining": {
        -            "anyOf": [
        -              {
        -                "minimum": 0,
        -                "type": "integer"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "request_id": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "schema_version": {
        -            "const": "1.0.0",
        -            "default": "1.0.0",
        -            "type": "string"
        -          },
        -          "scope_boundary": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        -                "properties": {
        -                  "not_in_scope": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "produced": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "recommended_companions": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "type": "string"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "produced",
        -                  "not_in_scope"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tier": {
        -            "enum": [
        -              "free",
        -              "paid"
        -            ],
        -            "type": "string"
        -          },
        -          "tier_upgrade": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        -                "properties": {
        -                  "available_tiers": {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        -                      "properties": {
        -                        "billing": {
        -                          "enum": [
        -                            "one_off",
        -                            "monthly",
        -                            "annual"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "currency": {
        -                          "enum": [
        -                            "GBP",
        -                            "SGD",
        -                            "EUR",
        -                            "USD",
        -                            "CAD",
        -                            "AUD",
        -                            "NZD",
        -                            "MYR"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "display_name": {
        -                          "type": "string"
        -                        },
        -                        "price_local": {
        -                          "type": "number"
        -                        },
        -                        "tier_slug": {
        -                          "enum": [
        -                            "7_day_pass",
        -                            "solo",
        -                            "studio",
        -                            "practice"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "unlock_summary": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "tier_slug",
        -                        "display_name",
        -                        "price_local",
        -                        "currency",
        -                        "billing",
        -                        "unlock_summary"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "current_tier": {
        -                    "const": "free",
        -                    "default": "free",
        -                    "type": "string"
        -                  },
        -                  "pass_credit": {
        -                    "anyOf": [
        -                      {
        -                        "additionalProperties": false,
        -                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        -                        "properties": {
        -                          "amount_local": {
        -                            "type": "number"
        -                          },
        -                          "applies_to": {
        -                            "const": "solo_first_month",
        -                            "default": "solo_first_month",
        -                            "type": "string"
        -                          },
        -                          "currency": {
        -                            "type": "string"
        -                          },
        -                          "redeemable_until": {
        -                            "type": "string"
        -                          }
        -                        },
        -                        "required": [
        -                          "amount_local",
        -                          "currency",
        -                          "redeemable_until"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "pricing_url": {
        -                    "default": "https://civilquants.com/pricing",
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "available_tiers"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tos_url": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "upgrade_hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "warranty_disclaimer": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          }
        -        },
        -        "required": [
        -          "request_id",
        -          "issued_at",
        -          "tier"
        -        ],
        -        "type": "object"
        -      },
        -      "data": {
        -        "default": null,
        -        "title": "Data"
        -      },
        -      "error": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        -            "properties": {
        -              "code": {
        -                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        -                "enum": [
        -                  "RATE_LIMIT_EXCEEDED",
        -                  "TIER_INSUFFICIENT",
        -                  "INVALID_INPUT",
        -                  "SCHEMA_VERSION_MISMATCH",
        -                  "SCHEMA_INVARIANT_VIOLATION",
        -                  "UPSTREAM_TIMEOUT",
        -                  "BACKEND_FAILURE",
        -                  "IP_BLOCKED",
        -                  "RESOURCE_NOT_FOUND",
        -                  "RENDER_FAILURE",
        -                  "OCR_LOW_CONFIDENCE",
        -                  "MANUAL_REVIEW_REQUIRED",
        -                  "ACCEPTANCE_REQUIRED",
        -                  "INVALID_TOKEN"
        -                ],
        -                "type": "string"
        -              },
        -              "details": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "message": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "recoverable": {
        -                "type": "boolean"
        -              },
        -              "retry_after_seconds": {
        -                "anyOf": [
        -                  {
        -                    "minimum": 0,
        -                    "type": "integer"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              }
        -            },
        -            "required": [
        -              "code",
        -              "message",
        -              "recoverable"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      }
        -    },
        -    "required": [
        -      "_meta"
        -    ],
        -    "type": "object"
        -  }
        -]New value: +[
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "_meta": {
        +        "additionalProperties": false,
        +        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        +        "properties": {
        +          "deliverables": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        +                "properties": {
        +                  "docx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "dxf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "expires_at": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  },
        +                  "pdf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "xlsx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "expires_at"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "document_id": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "issued_at": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "rate_limit_remaining": {
        +            "anyOf": [
        +              {
        +                "minimum": 0,
        +                "type": "integer"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "request_id": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "schema_version": {
        +            "const": "1.0.0",
        +            "default": "1.0.0",
        +            "type": "string"
        +          },
        +          "scope_boundary": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        +                "properties": {
        +                  "not_in_scope": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "produced": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "recommended_companions": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "type": "string"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "produced",
        +                  "not_in_scope"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tier": {
        +            "enum": [
        +              "free",
        +              "paid"
        +            ],
        +            "type": "string"
        +          },
        +          "tier_upgrade": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        +                "properties": {
        +                  "available_tiers": {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        +                      "properties": {
        +                        "billing": {
        +                          "enum": [
        +                            "one_off",
        +                            "monthly",
        +                            "annual"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "currency": {
        +                          "enum": [
        +                            "GBP",
        +                            "SGD",
        +                            "EUR",
        +                            "USD",
        +                            "CAD",
        +                            "AUD",
        +                            "NZD",
        +                            "MYR"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "display_name": {
        +                          "type": "string"
        +                        },
        +                        "price_local": {
        +                          "type": "number"
        +                        },
        +                        "tier_slug": {
        +                          "enum": [
        +                            "7_day_pass",
        +                            "solo",
        +                            "studio",
        +                            "practice"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "unlock_summary": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "tier_slug",
        +                        "display_name",
        +                        "price_local",
        +                        "currency",
        +                        "billing",
        +                        "unlock_summary"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "current_tier": {
        +                    "const": "free",
        +                    "default": "free",
        +                    "type": "string"
        +                  },
        +                  "pass_credit": {
        +                    "anyOf": [
        +                      {
        +                        "additionalProperties": false,
        +                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        +                        "properties": {
        +                          "amount_local": {
        +                            "type": "number"
        +                          },
        +                          "applies_to": {
        +                            "const": "solo_first_month",
        +                            "default": "solo_first_month",
        +                            "type": "string"
        +                          },
        +                          "currency": {
        +                            "type": "string"
        +                          },
        +                          "redeemable_until": {
        +                            "type": "string"
        +                          }
        +                        },
        +                        "required": [
        +                          "amount_local",
        +                          "currency",
        +                          "redeemable_until"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "pricing_url": {
        +                    "default": "https://civilquants.com/pricing",
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "available_tiers"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tos_url": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "upgrade_hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "warranty_disclaimer": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          }
        +        },
        +        "required": [
        +          "request_id",
        +          "issued_at",
        +          "tier"
        +        ],
        +        "type": "object"
        +      },
        +      "data": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Schema § 1.1 — the typed payload returned inside `MCPResponse[ComputeResult]`.\n\nFree-tier responses omit `drawings` (the downloadable CAD artefact\npointers — the paid differentiator); the bridge enforces this. The\n`audit_trail` and the inline `drawing` preview are present on BOTH tiers\n(V1 ALIGN / 60th-fire D + C). `text_summary` is bounded to 2000 chars —\nkeeps the LLM-facing summary token-cheap and forces longer narrative into\nBoQ row descriptions where it belongs. `warnings` is the non-fatal\ngeometry advisory list (both tiers).",
        +            "properties": {
        +              "assembly_slug": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "audit_trail": {
        +                "anyOf": [
        +                  {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.7 — paid-tier audit-trail entry.\n\nOne entry per BoQ row; `boq_row_index` ties to the row position in\n`ComputeResult.boq_rows`. `derivation` is the human-readable formula\nwalk-through; `formula` is the optional formal expression.",
        +                      "properties": {
        +                        "boq_row_index": {
        +                          "minimum": 0,
        +                          "type": "integer"
        +                        },
        +                        "derivation": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "formula": {
        +                          "anyOf": [
        +                            {
        +                              "type": "string"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ],
        +                          "default": null
        +                        },
        +                        "id": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "parameters_referenced": {
        +                          "items": {
        +                            "type": "string"
        +                          },
        +                          "type": "array"
        +                        }
        +                      },
        +                      "required": [
        +                        "id",
        +                        "boq_row_index",
        +                        "derivation"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "boq_rows": {
        +                "items": {
        +                  "additionalProperties": false,
        +                  "description": "Schema § 1.3 — a single bill row in the requested standard's format.\n\n`description` is the non-verbatim functional description per spec § 13.9 /\n§ 15 invariant — NEVER reproduces a standard's verbatim clause text.\n`rate` / `amount` ship null because rates are commodity data the customer\nowns; the engine's job is the measurement, not the pricing.",
        +                  "properties": {
        +                    "amount": {
        +                      "anyOf": [
        +                        {
        +                          "type": "number"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "attribution": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "audit_id": {
        +                      "anyOf": [
        +                        {
        +                          "type": "string"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "description": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "quantity": {
        +                      "minimum": 0,
        +                      "type": "number"
        +                    },
        +                    "rate": {
        +                      "anyOf": [
        +                        {
        +                          "type": "number"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "unit": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "work_section": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    }
        +                  },
        +                  "required": [
        +                    "work_section",
        +                    "description",
        +                    "quantity",
        +                    "unit",
        +                    "attribution"
        +                  ],
        +                  "type": "object"
        +                },
        +                "type": "array"
        +              },
        +              "drawing": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": false,
        +                    "description": "Schema § 1.6a — inline server-rendered SVG preview of the geometry.\n\nThe MCP mirror of the web ``/compute`` response's ``drawing`` field\n(``api.schemas.compute.DrawingRef``): the same on-screen dimensioned\ndrawing both tiers see in the workspace, surfaced on the MCP compute\nresponse so a chat client can render it inline (60th-fire item C). This\nis the on-screen preview — present on BOTH tiers per the free/paid\nboundary; the downloadable CAD artefacts (DXF / dimensioned PDF) remain\nthe paid differentiator via the export tools.\n\nDefined here rather than importing ``DrawingRef`` because the web\n``schemas`` package imports back into this module (``schemas.render``),\nso reusing it would create an import cycle — the MCP wire contract keeps\nits own copy, the same pattern as ``BoQRow`` / ``DrawingReference``.",
        +                    "properties": {
        +                      "entity_count": {
        +                        "minimum": 0,
        +                        "type": "integer"
        +                      },
        +                      "svg_b64": {
        +                        "minLength": 1,
        +                        "type": "string"
        +                      },
        +                      "unit_of_drawing": {
        +                        "const": "m",
        +                        "default": "m",
        +                        "type": "string"
        +                      },
        +                      "viewbox_height": {
        +                        "exclusiveMinimum": 0,
        +                        "type": "number"
        +                      },
        +                      "viewbox_width": {
        +                        "exclusiveMinimum": 0,
        +                        "type": "number"
        +                      },
        +                      "viewbox_x": {
        +                        "type": "number"
        +                      },
        +                      "viewbox_y": {
        +                        "type": "number"
        +                      }
        +                    },
        +                    "required": [
        +                      "svg_b64",
        +                      "viewbox_x",
        +                      "viewbox_y",
        +                      "viewbox_width",
        +                      "viewbox_height",
        +                      "entity_count"
        +                    ],
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "drawings": {
        +                "anyOf": [
        +                  {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.6 — paid-tier drawing artefact pointer.\n\n`url` is an R2-signed URL; expiry is carried in `_meta.deliverables.expires_at`\non the envelope (not duplicated here). `layers` is DXF-only; PDF/SVG\ncallers omit it.",
        +                      "properties": {
        +                        "drawing_type": {
        +                          "enum": [
        +                            "section",
        +                            "plan",
        +                            "elevation",
        +                            "isometric",
        +                            "detail"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "format": {
        +                          "enum": [
        +                            "DXF",
        +                            "PDF",
        +                            "SVG"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "layers": {
        +                          "anyOf": [
        +                            {
        +                              "items": {
        +                                "type": "string"
        +                              },
        +                              "type": "array"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ],
        +                          "default": null
        +                        },
        +                        "scale": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "sheet_size": {
        +                          "enum": [
        +                            "A1",
        +                            "A2",
        +                            "A3",
        +                            "A4"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "url": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "drawing_type",
        +                        "format",
        +                        "url",
        +                        "sheet_size",
        +                        "scale"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "parameters_used": {
        +                "additionalProperties": false,
        +                "description": "Schema § 1.2 — the parameter snapshot the engine actually used.\n\nSplits user-supplied values from engine defaults so customers can see\nwhich numbers came from them and which the engine filled in. Every\ndefaulted parameter SHOULD have a corresponding entry in `assumptions`\n— the bridge layer enforces this when wrapping engine output.",
        +                "properties": {
        +                  "assumptions": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "engine_defaults": {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  "resolved_from_description": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "additionalProperties": false,
        +                          "description": "Schema § 1.2 — a parameter resolved by the forgiving-input layer.\n\nPopulated by the Track B-Forgiving Haiku-4.5 resolution pass; until that\nlayer lands, instances are constructed only by tests. `source` distinguishes\nthe resolution path so customers can audit which fields were inferred.",
        +                          "properties": {
        +                            "confidence": {
        +                              "anyOf": [
        +                                {
        +                                  "enum": [
        +                                    "high",
        +                                    "medium",
        +                                    "low"
        +                                  ],
        +                                  "type": "string"
        +                                },
        +                                {
        +                                  "type": "null"
        +                                }
        +                              ],
        +                              "default": null
        +                            },
        +                            "field_name": {
        +                              "minLength": 1,
        +                              "type": "string"
        +                            },
        +                            "resolved_value": {},
        +                            "source": {
        +                              "enum": [
        +                                "description_field",
        +                                "haiku_resolution",
        +                                "engine_default"
        +                              ],
        +                              "type": "string"
        +                            }
        +                          },
        +                          "required": [
        +                            "field_name",
        +                            "resolved_value",
        +                            "source"
        +                          ],
        +                          "type": "object"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "user_supplied": {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  }
        +                },
        +                "type": "object"
        +              },
        +              "standard": {
        +                "enum": [
        +                  "CESMM4",
        +                  "NRM2",
        +                  "SMM7",
        +                  "MMHW"
        +                ],
        +                "type": "string"
        +              },
        +              "text_summary": {
        +                "maxLength": 2000,
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "totals_summary": {
        +                "additionalProperties": false,
        +                "description": "Schema § 1.4 — totals_summary as a typed wrapper around the free-form dict.\n\nWire shape is a flat object (`{\"concrete_m3\": {...}, \"rebar_t\": {...}}`).\nWe model it as `RootModel`-equivalent via `model_config(extra=\"allow\")`\n+ a single `__root__`-style `entries` dict. Pydantic v2 recommends\n`RootModel` for free-form roots; using a wrapper class keeps the import\nsurface uniform with the rest of this module.",
        +                "properties": {
        +                  "entries": {
        +                    "additionalProperties": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.4 — single material/work-class total entry.",
        +                      "properties": {
        +                        "quantity": {
        +                          "minimum": 0,
        +                          "type": "number"
        +                        },
        +                        "unit": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "quantity",
        +                        "unit"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "object"
        +                  }
        +                },
        +                "type": "object"
        +              },
        +              "warnings": {
        +                "items": {
        +                  "additionalProperties": false,
        +                  "description": "Schema § 1.8 — a non-fatal geometry advisory (56th-fire T2).\n\nThe wire projection of the engine's `core.GeometryWarning`. Advisory only:\na warning NEVER changes a measured quantity — it flags geometry that is\nvalid but likely a mistake (e.g. a stale dependent-height default). Present\non BOTH tiers — a correctness/safety signal, not a paid feature.",
        +                  "properties": {
        +                    "affected_params": {
        +                      "items": {
        +                        "type": "string"
        +                      },
        +                      "type": "array"
        +                    },
        +                    "code": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "detail": {
        +                      "additionalProperties": {
        +                        "type": "number"
        +                      },
        +                      "type": "object"
        +                    },
        +                    "message": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "severity": {
        +                      "enum": [
        +                        "info",
        +                        "advisory",
        +                        "caution"
        +                      ],
        +                      "type": "string"
        +                    }
        +                  },
        +                  "required": [
        +                    "code",
        +                    "severity",
        +                    "message"
        +                  ],
        +                  "type": "object"
        +                },
        +                "type": "array"
        +              }
        +            },
        +            "required": [
        +              "assembly_slug",
        +              "standard",
        +              "parameters_used",
        +              "boq_rows",
        +              "totals_summary",
        +              "text_summary"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      },
        +      "error": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        +            "properties": {
        +              "code": {
        +                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        +                "enum": [
        +                  "RATE_LIMIT_EXCEEDED",
        +                  "TIER_INSUFFICIENT",
        +                  "INVALID_INPUT",
        +                  "SCHEMA_VERSION_MISMATCH",
        +                  "SCHEMA_INVARIANT_VIOLATION",
        +                  "UPSTREAM_TIMEOUT",
        +                  "BACKEND_FAILURE",
        +                  "IP_BLOCKED",
        +                  "RESOURCE_NOT_FOUND",
        +                  "RENDER_FAILURE",
        +                  "OCR_LOW_CONFIDENCE",
        +                  "MANUAL_REVIEW_REQUIRED",
        +                  "ACCEPTANCE_REQUIRED",
        +                  "INVALID_TOKEN"
        +                ],
        +                "type": "string"
        +              },
        +              "details": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "message": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "recoverable": {
        +                "type": "boolean"
        +              },
        +              "retry_after_seconds": {
        +                "anyOf": [
        +                  {
        +                    "minimum": 0,
        +                    "type": "integer"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              }
        +            },
        +            "required": [
        +              "code",
        +              "message",
        +              "recoverable"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      }
        +    },
        +    "required": [
        +      "_meta"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "_meta": {
        +        "additionalProperties": false,
        +        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        +        "properties": {
        +          "deliverables": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        +                "properties": {
        +                  "docx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "dxf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "expires_at": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  },
        +                  "pdf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "xlsx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "expires_at"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "document_id": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "issued_at": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "rate_limit_remaining": {
        +            "anyOf": [
        +              {
        +                "minimum": 0,
        +                "type": "integer"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "request_id": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "schema_version": {
        +            "const": "1.0.0",
        +            "default": "1.0.0",
        +            "type": "string"
        +          },
        +          "scope_boundary": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        +                "properties": {
        +                  "not_in_scope": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "produced": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "recommended_companions": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "type": "string"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "produced",
        +                  "not_in_scope"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tier": {
        +            "enum": [
        +              "free",
        +              "paid"
        +            ],
        +            "type": "string"
        +          },
        +          "tier_upgrade": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        +                "properties": {
        +                  "available_tiers": {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        +                      "properties": {
        +                        "billing": {
        +                          "enum": [
        +                            "one_off",
        +                            "monthly",
        +                            "annual"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "currency": {
        +                          "enum": [
        +                            "GBP",
        +                            "SGD",
        +                            "EUR",
        +                            "USD",
        +                            "CAD",
        +                            "AUD",
        +                            "NZD",
        +                            "MYR"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "display_name": {
        +                          "type": "string"
        +                        },
        +                        "price_local": {
        +                          "type": "number"
        +                        },
        +                        "tier_slug": {
        +                          "enum": [
        +                            "7_day_pass",
        +                            "solo",
        +                            "studio",
        +                            "practice"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "unlock_summary": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "tier_slug",
        +                        "display_name",
        +                        "price_local",
        +                        "currency",
        +                        "billing",
        +                        "unlock_summary"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "current_tier": {
        +                    "const": "free",
        +                    "default": "free",
        +                    "type": "string"
        +                  },
        +                  "pass_credit": {
        +                    "anyOf": [
        +                      {
        +                        "additionalProperties": false,
        +                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        +                        "properties": {
        +                          "amount_local": {
        +                            "type": "number"
        +                          },
        +                          "applies_to": {
        +                            "const": "solo_first_month",
        +                            "default": "solo_first_month",
        +                            "type": "string"
        +                          },
        +                          "currency": {
        +                            "type": "string"
        +                          },
        +                          "redeemable_until": {
        +                            "type": "string"
        +                          }
        +                        },
        +                        "required": [
        +                          "amount_local",
        +                          "currency",
        +                          "redeemable_until"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "pricing_url": {
        +                    "default": "https://civilquants.com/pricing",
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "available_tiers"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tos_url": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "upgrade_hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "warranty_disclaimer": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          }
        +        },
        +        "required": [
        +          "request_id",
        +          "issued_at",
        +          "tier"
        +        ],
        +        "type": "object"
        +      },
        +      "data": {
        +        "default": null,
        +        "title": "Data"
        +      },
        +      "error": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        +            "properties": {
        +              "code": {
        +                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        +                "enum": [
        +                  "RATE_LIMIT_EXCEEDED",
        +                  "TIER_INSUFFICIENT",
        +                  "INVALID_INPUT",
        +                  "SCHEMA_VERSION_MISMATCH",
        +                  "SCHEMA_INVARIANT_VIOLATION",
        +                  "UPSTREAM_TIMEOUT",
        +                  "BACKEND_FAILURE",
        +                  "IP_BLOCKED",
        +                  "RESOURCE_NOT_FOUND",
        +                  "RENDER_FAILURE",
        +                  "OCR_LOW_CONFIDENCE",
        +                  "MANUAL_REVIEW_REQUIRED",
        +                  "ACCEPTANCE_REQUIRED",
        +                  "INVALID_TOKEN"
        +                ],
        +                "type": "string"
        +              },
        +              "details": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "message": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "recoverable": {
        +                "type": "boolean"
        +              },
        +              "retry_after_seconds": {
        +                "anyOf": [
        +                  {
        +                    "minimum": 0,
        +                    "type": "integer"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              }
        +            },
        +            "required": [
        +              "code",
        +              "message",
        +              "recoverable"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      }
        +    },
        +    "required": [
        +      "_meta"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedget_project1 field changed
      • changedOutput schema / properties / result / anyOf
        Previous value: -[
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "_meta": {
        -        "additionalProperties": false,
        -        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        -        "properties": {
        -          "deliverables": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        -                "properties": {
        -                  "docx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "dxf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "expires_at": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  },
        -                  "pdf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "xlsx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "expires_at"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "document_id": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "issued_at": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "rate_limit_remaining": {
        -            "anyOf": [
        -              {
        -                "minimum": 0,
        -                "type": "integer"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "request_id": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "schema_version": {
        -            "const": "1.0.0",
        -            "default": "1.0.0",
        -            "type": "string"
        -          },
        -          "scope_boundary": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        -                "properties": {
        -                  "not_in_scope": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "produced": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "recommended_companions": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "type": "string"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "produced",
        -                  "not_in_scope"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tier": {
        -            "enum": [
        -              "free",
        -              "paid"
        -            ],
        -            "type": "string"
        -          },
        -          "tier_upgrade": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        -                "properties": {
        -                  "available_tiers": {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        -                      "properties": {
        -                        "billing": {
        -                          "enum": [
        -                            "one_off",
        -                            "monthly",
        -                            "annual"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "currency": {
        -                          "enum": [
        -                            "GBP",
        -                            "SGD",
        -                            "EUR",
        -                            "USD",
        -                            "CAD",
        -                            "AUD",
        -                            "NZD",
        -                            "MYR"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "display_name": {
        -                          "type": "string"
        -                        },
        -                        "price_local": {
        -                          "type": "number"
        -                        },
        -                        "tier_slug": {
        -                          "enum": [
        -                            "7_day_pass",
        -                            "solo",
        -                            "studio",
        -                            "practice"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "unlock_summary": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "tier_slug",
        -                        "display_name",
        -                        "price_local",
        -                        "currency",
        -                        "billing",
        -                        "unlock_summary"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "current_tier": {
        -                    "const": "free",
        -                    "default": "free",
        -                    "type": "string"
        -                  },
        -                  "pass_credit": {
        -                    "anyOf": [
        -                      {
        -                        "additionalProperties": false,
        -                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        -                        "properties": {
        -                          "amount_local": {
        -                            "type": "number"
        -                          },
        -                          "applies_to": {
        -                            "const": "solo_first_month",
        -                            "default": "solo_first_month",
        -                            "type": "string"
        -                          },
        -                          "currency": {
        -                            "type": "string"
        -                          },
        -                          "redeemable_until": {
        -                            "type": "string"
        -                          }
        -                        },
        -                        "required": [
        -                          "amount_local",
        -                          "currency",
        -                          "redeemable_until"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "pricing_url": {
        -                    "default": "https://civilquants.com/pricing",
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "available_tiers"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tos_url": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "upgrade_hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "warranty_disclaimer": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          }
        -        },
        -        "required": [
        -          "request_id",
        -          "issued_at",
        -          "tier"
        -        ],
        -        "type": "object"
        -      },
        -      "data": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "properties": {
        -              "assemblies": {
        -                "items": {
        -                  "additionalProperties": false,
        -                  "description": "Single assembly row inside a fetched project payload.",
        -                  "properties": {
        -                    "enabled": {
        -                      "type": "boolean"
        -                    },
        -                    "id": {
        -                      "type": "string"
        -                    },
        -                    "label": {
        -                      "type": "string"
        -                    },
        -                    "notes": {
        -                      "type": "string"
        -                    },
        -                    "parameters": {
        -                      "additionalProperties": true,
        -                      "type": "object"
        -                    },
        -                    "position": {
        -                      "type": "integer"
        -                    },
        -                    "slug": {
        -                      "type": "string"
        -                    }
        -                  },
        -                  "required": [
        -                    "id",
        -                    "slug",
        -                    "label",
        -                    "position",
        -                    "parameters",
        -                    "notes",
        -                    "enabled"
        -                  ],
        -                  "type": "object"
        -                },
        -                "type": "array"
        -              },
        -              "client": {
        -                "type": "string"
        -              },
        -              "currency": {
        -                "type": "string"
        -              },
        -              "default_standard": {
        -                "type": "string"
        -              },
        -              "description": {
        -                "type": "string"
        -              },
        -              "location": {
        -                "type": "string"
        -              },
        -              "name": {
        -                "type": "string"
        -              },
        -              "project_id": {
        -                "type": "string"
        -              },
        -              "project_number": {
        -                "type": "string"
        -              },
        -              "status": {
        -                "type": "string"
        -              }
        -            },
        -            "required": [
        -              "project_id",
        -              "name",
        -              "client",
        -              "project_number",
        -              "location",
        -              "description",
        -              "status",
        -              "default_standard",
        -              "currency",
        -              "assemblies"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      },
        -      "error": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        -            "properties": {
        -              "code": {
        -                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        -                "enum": [
        -                  "RATE_LIMIT_EXCEEDED",
        -                  "TIER_INSUFFICIENT",
        -                  "INVALID_INPUT",
        -                  "SCHEMA_VERSION_MISMATCH",
        -                  "SCHEMA_INVARIANT_VIOLATION",
        -                  "UPSTREAM_TIMEOUT",
        -                  "BACKEND_FAILURE",
        -                  "IP_BLOCKED",
        -                  "RESOURCE_NOT_FOUND",
        -                  "RENDER_FAILURE",
        -                  "OCR_LOW_CONFIDENCE",
        -                  "MANUAL_REVIEW_REQUIRED",
        -                  "ACCEPTANCE_REQUIRED",
        -                  "INVALID_TOKEN"
        -                ],
        -                "type": "string"
        -              },
        -              "details": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "message": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "recoverable": {
        -                "type": "boolean"
        -              },
        -              "retry_after_seconds": {
        -                "anyOf": [
        -                  {
        -                    "minimum": 0,
        -                    "type": "integer"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              }
        -            },
        -            "required": [
        -              "code",
        -              "message",
        -              "recoverable"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      }
        -    },
        -    "required": [
        -      "_meta"
        -    ],
        -    "type": "object"
        -  },
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "_meta": {
        -        "additionalProperties": false,
        -        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        -        "properties": {
        -          "deliverables": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        -                "properties": {
        -                  "docx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "dxf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "expires_at": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  },
        -                  "pdf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "xlsx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "expires_at"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "document_id": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "issued_at": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "rate_limit_remaining": {
        -            "anyOf": [
        -              {
        -                "minimum": 0,
        -                "type": "integer"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "request_id": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "schema_version": {
        -            "const": "1.0.0",
        -            "default": "1.0.0",
        -            "type": "string"
        -          },
        -          "scope_boundary": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        -                "properties": {
        -                  "not_in_scope": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "produced": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "recommended_companions": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "type": "string"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "produced",
        -                  "not_in_scope"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tier": {
        -            "enum": [
        -              "free",
        -              "paid"
        -            ],
        -            "type": "string"
        -          },
        -          "tier_upgrade": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        -                "properties": {
        -                  "available_tiers": {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        -                      "properties": {
        -                        "billing": {
        -                          "enum": [
        -                            "one_off",
        -                            "monthly",
        -                            "annual"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "currency": {
        -                          "enum": [
        -                            "GBP",
        -                            "SGD",
        -                            "EUR",
        -                            "USD",
        -                            "CAD",
        -                            "AUD",
        -                            "NZD",
        -                            "MYR"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "display_name": {
        -                          "type": "string"
        -                        },
        -                        "price_local": {
        -                          "type": "number"
        -                        },
        -                        "tier_slug": {
        -                          "enum": [
        -                            "7_day_pass",
        -                            "solo",
        -                            "studio",
        -                            "practice"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "unlock_summary": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "tier_slug",
        -                        "display_name",
        -                        "price_local",
        -                        "currency",
        -                        "billing",
        -                        "unlock_summary"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "current_tier": {
        -                    "const": "free",
        -                    "default": "free",
        -                    "type": "string"
        -                  },
        -                  "pass_credit": {
        -                    "anyOf": [
        -                      {
        -                        "additionalProperties": false,
        -                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        -                        "properties": {
        -                          "amount_local": {
        -                            "type": "number"
        -                          },
        -                          "applies_to": {
        -                            "const": "solo_first_month",
        -                            "default": "solo_first_month",
        -                            "type": "string"
        -                          },
        -                          "currency": {
        -                            "type": "string"
        -                          },
        -                          "redeemable_until": {
        -                            "type": "string"
        -                          }
        -                        },
        -                        "required": [
        -                          "amount_local",
        -                          "currency",
        -                          "redeemable_until"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "pricing_url": {
        -                    "default": "https://civilquants.com/pricing",
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "available_tiers"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tos_url": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "upgrade_hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "warranty_disclaimer": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          }
        -        },
        -        "required": [
        -          "request_id",
        -          "issued_at",
        -          "tier"
        -        ],
        -        "type": "object"
        -      },
        -      "data": {
        -        "default": null,
        -        "title": "Data"
        -      },
        -      "error": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        -            "properties": {
        -              "code": {
        -                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        -                "enum": [
        -                  "RATE_LIMIT_EXCEEDED",
        -                  "TIER_INSUFFICIENT",
        -                  "INVALID_INPUT",
        -                  "SCHEMA_VERSION_MISMATCH",
        -                  "SCHEMA_INVARIANT_VIOLATION",
        -                  "UPSTREAM_TIMEOUT",
        -                  "BACKEND_FAILURE",
        -                  "IP_BLOCKED",
        -                  "RESOURCE_NOT_FOUND",
        -                  "RENDER_FAILURE",
        -                  "OCR_LOW_CONFIDENCE",
        -                  "MANUAL_REVIEW_REQUIRED",
        -                  "ACCEPTANCE_REQUIRED",
        -                  "INVALID_TOKEN"
        -                ],
        -                "type": "string"
        -              },
        -              "details": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "message": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "recoverable": {
        -                "type": "boolean"
        -              },
        -              "retry_after_seconds": {
        -                "anyOf": [
        -                  {
        -                    "minimum": 0,
        -                    "type": "integer"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              }
        -            },
        -            "required": [
        -              "code",
        -              "message",
        -              "recoverable"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      }
        -    },
        -    "required": [
        -      "_meta"
        -    ],
        -    "type": "object"
        -  }
        -]New value: +[
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "_meta": {
        +        "additionalProperties": false,
        +        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        +        "properties": {
        +          "deliverables": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        +                "properties": {
        +                  "docx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "dxf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "expires_at": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  },
        +                  "pdf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "xlsx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "expires_at"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "document_id": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "issued_at": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "rate_limit_remaining": {
        +            "anyOf": [
        +              {
        +                "minimum": 0,
        +                "type": "integer"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "request_id": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "schema_version": {
        +            "const": "1.0.0",
        +            "default": "1.0.0",
        +            "type": "string"
        +          },
        +          "scope_boundary": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        +                "properties": {
        +                  "not_in_scope": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "produced": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "recommended_companions": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "type": "string"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "produced",
        +                  "not_in_scope"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tier": {
        +            "enum": [
        +              "free",
        +              "paid"
        +            ],
        +            "type": "string"
        +          },
        +          "tier_upgrade": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        +                "properties": {
        +                  "available_tiers": {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        +                      "properties": {
        +                        "billing": {
        +                          "enum": [
        +                            "one_off",
        +                            "monthly",
        +                            "annual"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "currency": {
        +                          "enum": [
        +                            "GBP",
        +                            "SGD",
        +                            "EUR",
        +                            "USD",
        +                            "CAD",
        +                            "AUD",
        +                            "NZD",
        +                            "MYR"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "display_name": {
        +                          "type": "string"
        +                        },
        +                        "price_local": {
        +                          "type": "number"
        +                        },
        +                        "tier_slug": {
        +                          "enum": [
        +                            "7_day_pass",
        +                            "solo",
        +                            "studio",
        +                            "practice"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "unlock_summary": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "tier_slug",
        +                        "display_name",
        +                        "price_local",
        +                        "currency",
        +                        "billing",
        +                        "unlock_summary"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "current_tier": {
        +                    "const": "free",
        +                    "default": "free",
        +                    "type": "string"
        +                  },
        +                  "pass_credit": {
        +                    "anyOf": [
        +                      {
        +                        "additionalProperties": false,
        +                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        +                        "properties": {
        +                          "amount_local": {
        +                            "type": "number"
        +                          },
        +                          "applies_to": {
        +                            "const": "solo_first_month",
        +                            "default": "solo_first_month",
        +                            "type": "string"
        +                          },
        +                          "currency": {
        +                            "type": "string"
        +                          },
        +                          "redeemable_until": {
        +                            "type": "string"
        +                          }
        +                        },
        +                        "required": [
        +                          "amount_local",
        +                          "currency",
        +                          "redeemable_until"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "pricing_url": {
        +                    "default": "https://civilquants.com/pricing",
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "available_tiers"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tos_url": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "upgrade_hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "warranty_disclaimer": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          }
        +        },
        +        "required": [
        +          "request_id",
        +          "issued_at",
        +          "tier"
        +        ],
        +        "type": "object"
        +      },
        +      "data": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "properties": {
        +              "assemblies": {
        +                "items": {
        +                  "additionalProperties": false,
        +                  "description": "Single assembly row inside a fetched project payload.",
        +                  "properties": {
        +                    "enabled": {
        +                      "type": "boolean"
        +                    },
        +                    "id": {
        +                      "type": "string"
        +                    },
        +                    "label": {
        +                      "type": "string"
        +                    },
        +                    "notes": {
        +                      "type": "string"
        +                    },
        +                    "parameters": {
        +                      "additionalProperties": true,
        +                      "type": "object"
        +                    },
        +                    "position": {
        +                      "type": "integer"
        +                    },
        +                    "slug": {
        +                      "type": "string"
        +                    }
        +                  },
        +                  "required": [
        +                    "id",
        +                    "slug",
        +                    "label",
        +                    "position",
        +                    "parameters",
        +                    "notes",
        +                    "enabled"
        +                  ],
        +                  "type": "object"
        +                },
        +                "type": "array"
        +              },
        +              "client": {
        +                "type": "string"
        +              },
        +              "currency": {
        +                "type": "string"
        +              },
        +              "default_standard": {
        +                "type": "string"
        +              },
        +              "description": {
        +                "type": "string"
        +              },
        +              "location": {
        +                "type": "string"
        +              },
        +              "name": {
        +                "type": "string"
        +              },
        +              "project_id": {
        +                "type": "string"
        +              },
        +              "project_number": {
        +                "type": "string"
        +              },
        +              "status": {
        +                "type": "string"
        +              }
        +            },
        +            "required": [
        +              "project_id",
        +              "name",
        +              "client",
        +              "project_number",
        +              "location",
        +              "description",
        +              "status",
        +              "default_standard",
        +              "currency",
        +              "assemblies"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      },
        +      "error": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        +            "properties": {
        +              "code": {
        +                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        +                "enum": [
        +                  "RATE_LIMIT_EXCEEDED",
        +                  "TIER_INSUFFICIENT",
        +                  "INVALID_INPUT",
        +                  "SCHEMA_VERSION_MISMATCH",
        +                  "SCHEMA_INVARIANT_VIOLATION",
        +                  "UPSTREAM_TIMEOUT",
        +                  "BACKEND_FAILURE",
        +                  "IP_BLOCKED",
        +                  "RESOURCE_NOT_FOUND",
        +                  "RENDER_FAILURE",
        +                  "OCR_LOW_CONFIDENCE",
        +                  "MANUAL_REVIEW_REQUIRED",
        +                  "ACCEPTANCE_REQUIRED",
        +                  "INVALID_TOKEN"
        +                ],
        +                "type": "string"
        +              },
        +              "details": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "message": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "recoverable": {
        +                "type": "boolean"
        +              },
        +              "retry_after_seconds": {
        +                "anyOf": [
        +                  {
        +                    "minimum": 0,
        +                    "type": "integer"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              }
        +            },
        +            "required": [
        +              "code",
        +              "message",
        +              "recoverable"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      }
        +    },
        +    "required": [
        +      "_meta"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "_meta": {
        +        "additionalProperties": false,
        +        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        +        "properties": {
        +          "deliverables": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        +                "properties": {
        +                  "docx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "dxf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "expires_at": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  },
        +                  "pdf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "xlsx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "expires_at"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "document_id": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "issued_at": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "rate_limit_remaining": {
        +            "anyOf": [
        +              {
        +                "minimum": 0,
        +                "type": "integer"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "request_id": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "schema_version": {
        +            "const": "1.0.0",
        +            "default": "1.0.0",
        +            "type": "string"
        +          },
        +          "scope_boundary": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        +                "properties": {
        +                  "not_in_scope": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "produced": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "recommended_companions": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "type": "string"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "produced",
        +                  "not_in_scope"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tier": {
        +            "enum": [
        +              "free",
        +              "paid"
        +            ],
        +            "type": "string"
        +          },
        +          "tier_upgrade": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        +                "properties": {
        +                  "available_tiers": {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        +                      "properties": {
        +                        "billing": {
        +                          "enum": [
        +                            "one_off",
        +                            "monthly",
        +                            "annual"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "currency": {
        +                          "enum": [
        +                            "GBP",
        +                            "SGD",
        +                            "EUR",
        +                            "USD",
        +                            "CAD",
        +                            "AUD",
        +                            "NZD",
        +                            "MYR"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "display_name": {
        +                          "type": "string"
        +                        },
        +                        "price_local": {
        +                          "type": "number"
        +                        },
        +                        "tier_slug": {
        +                          "enum": [
        +                            "7_day_pass",
        +                            "solo",
        +                            "studio",
        +                            "practice"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "unlock_summary": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "tier_slug",
        +                        "display_name",
        +                        "price_local",
        +                        "currency",
        +                        "billing",
        +                        "unlock_summary"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "current_tier": {
        +                    "const": "free",
        +                    "default": "free",
        +                    "type": "string"
        +                  },
        +                  "pass_credit": {
        +                    "anyOf": [
        +                      {
        +                        "additionalProperties": false,
        +                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        +                        "properties": {
        +                          "amount_local": {
        +                            "type": "number"
        +                          },
        +                          "applies_to": {
        +                            "const": "solo_first_month",
        +                            "default": "solo_first_month",
        +                            "type": "string"
        +                          },
        +                          "currency": {
        +                            "type": "string"
        +                          },
        +                          "redeemable_until": {
        +                            "type": "string"
        +                          }
        +                        },
        +                        "required": [
        +                          "amount_local",
        +                          "currency",
        +                          "redeemable_until"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "pricing_url": {
        +                    "default": "https://civilquants.com/pricing",
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "available_tiers"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tos_url": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "upgrade_hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "warranty_disclaimer": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          }
        +        },
        +        "required": [
        +          "request_id",
        +          "issued_at",
        +          "tier"
        +        ],
        +        "type": "object"
        +      },
        +      "data": {
        +        "default": null,
        +        "title": "Data"
        +      },
        +      "error": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        +            "properties": {
        +              "code": {
        +                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        +                "enum": [
        +                  "RATE_LIMIT_EXCEEDED",
        +                  "TIER_INSUFFICIENT",
        +                  "INVALID_INPUT",
        +                  "SCHEMA_VERSION_MISMATCH",
        +                  "SCHEMA_INVARIANT_VIOLATION",
        +                  "UPSTREAM_TIMEOUT",
        +                  "BACKEND_FAILURE",
        +                  "IP_BLOCKED",
        +                  "RESOURCE_NOT_FOUND",
        +                  "RENDER_FAILURE",
        +                  "OCR_LOW_CONFIDENCE",
        +                  "MANUAL_REVIEW_REQUIRED",
        +                  "ACCEPTANCE_REQUIRED",
        +                  "INVALID_TOKEN"
        +                ],
        +                "type": "string"
        +              },
        +              "details": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "message": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "recoverable": {
        +                "type": "boolean"
        +              },
        +              "retry_after_seconds": {
        +                "anyOf": [
        +                  {
        +                    "minimum": 0,
        +                    "type": "integer"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              }
        +            },
        +            "required": [
        +              "code",
        +              "message",
        +              "recoverable"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      }
        +    },
        +    "required": [
        +      "_meta"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedrecompute_project1 field changed
      • changedOutput schema / properties / result / anyOf
        Previous value: -[
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "_meta": {
        -        "additionalProperties": false,
        -        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        -        "properties": {
        -          "deliverables": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        -                "properties": {
        -                  "docx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "dxf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "expires_at": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  },
        -                  "pdf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "xlsx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "expires_at"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "document_id": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "issued_at": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "rate_limit_remaining": {
        -            "anyOf": [
        -              {
        -                "minimum": 0,
        -                "type": "integer"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "request_id": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "schema_version": {
        -            "const": "1.0.0",
        -            "default": "1.0.0",
        -            "type": "string"
        -          },
        -          "scope_boundary": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        -                "properties": {
        -                  "not_in_scope": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "produced": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "recommended_companions": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "type": "string"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "produced",
        -                  "not_in_scope"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tier": {
        -            "enum": [
        -              "free",
        -              "paid"
        -            ],
        -            "type": "string"
        -          },
        -          "tier_upgrade": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        -                "properties": {
        -                  "available_tiers": {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        -                      "properties": {
        -                        "billing": {
        -                          "enum": [
        -                            "one_off",
        -                            "monthly",
        -                            "annual"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "currency": {
        -                          "enum": [
        -                            "GBP",
        -                            "SGD",
        -                            "EUR",
        -                            "USD",
        -                            "CAD",
        -                            "AUD",
        -                            "NZD",
        -                            "MYR"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "display_name": {
        -                          "type": "string"
        -                        },
        -                        "price_local": {
        -                          "type": "number"
        -                        },
        -                        "tier_slug": {
        -                          "enum": [
        -                            "7_day_pass",
        -                            "solo",
        -                            "studio",
        -                            "practice"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "unlock_summary": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "tier_slug",
        -                        "display_name",
        -                        "price_local",
        -                        "currency",
        -                        "billing",
        -                        "unlock_summary"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "current_tier": {
        -                    "const": "free",
        -                    "default": "free",
        -                    "type": "string"
        -                  },
        -                  "pass_credit": {
        -                    "anyOf": [
        -                      {
        -                        "additionalProperties": false,
        -                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        -                        "properties": {
        -                          "amount_local": {
        -                            "type": "number"
        -                          },
        -                          "applies_to": {
        -                            "const": "solo_first_month",
        -                            "default": "solo_first_month",
        -                            "type": "string"
        -                          },
        -                          "currency": {
        -                            "type": "string"
        -                          },
        -                          "redeemable_until": {
        -                            "type": "string"
        -                          }
        -                        },
        -                        "required": [
        -                          "amount_local",
        -                          "currency",
        -                          "redeemable_until"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "pricing_url": {
        -                    "default": "https://civilquants.com/pricing",
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "available_tiers"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tos_url": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "upgrade_hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "warranty_disclaimer": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          }
        -        },
        -        "required": [
        -          "request_id",
        -          "issued_at",
        -          "tier"
        -        ],
        -        "type": "object"
        -      },
        -      "data": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "properties": {
        -              "assembly_count": {
        -                "type": "integer"
        -              },
        -              "assembly_drawings": {
        -                "items": {
        -                  "additionalProperties": false,
        -                  "description": "One enabled assembly's drawing payload for the project recompute\nresponse (G.4.4b Step 2).\n\nMirrors the per-assembly drawing surface from\n``POST /api/assemblies/{slug}/compute`` (same ``DrawingRef`` shape,\nsame SVG renderer via ``build_drawing_ref``) so the project view's\ncontact-sheet centre pane renders identically to the single-assembly\ncalculator preview. ``drawing`` is nullable to stay backward-\ncompatible with assemblies that don't emit ``draw_entities`` (older\nshape); the few assemblies emitting an empty list still get a tiny\nplaceholder SVG so the UI never has to special-case absence.",
        -                  "properties": {
        -                    "assembly_id": {
        -                      "type": "string"
        -                    },
        -                    "drawing": {
        -                      "anyOf": [
        -                        {
        -                          "additionalProperties": false,
        -                          "description": "Server-rendered SVG preview of the assembly geometry.\n\nPer G.6.3 / STATUS.md decision 6 (2026-05-19): one source of\ngeometry (`DrawEntity` list emitted by `Assembly.compute`), two\noutput paths (this SVG for inline preview, the `GET .../dxf`\nendpoint for the real CAD download). The browser displays\n`svg_b64` decoded inline; `viewbox` drives client zoom/pan\ncontrols without re-parsing the SVG.\n\n`svg_b64` is base64 of a UTF-8 SVG document with one `<g\nclass=\"cq-layer cq-layer-<name>\">` per layer. Styling defaults are\ninlined so the preview renders without an external stylesheet;\nfront-end CSS may override via the class names.",
        -                          "properties": {
        -                            "entity_count": {
        -                              "description": "Number of DrawEntities rendered",
        -                              "minimum": 0,
        -                              "type": "integer"
        -                            },
        -                            "svg_b64": {
        -                              "description": "Base64-encoded SVG document",
        -                              "minLength": 1,
        -                              "type": "string"
        -                            },
        -                            "unit_of_drawing": {
        -                              "const": "m",
        -                              "default": "m",
        -                              "description": "Engine geometry is in metres. Surfaced here so the client never has to guess; if a future engine switches to mm this becomes the discriminator.",
        -                              "type": "string"
        -                            },
        -                            "viewbox_height": {
        -                              "description": "SVG viewBox height in engine units (m)",
        -                              "exclusiveMinimum": 0,
        -                              "type": "number"
        -                            },
        -                            "viewbox_width": {
        -                              "description": "SVG viewBox width in engine units (m)",
        -                              "exclusiveMinimum": 0,
        -                              "type": "number"
        -                            },
        -                            "viewbox_x": {
        -                              "description": "SVG viewBox x in engine units (m)",
        -                              "type": "number"
        -                            },
        -                            "viewbox_y": {
        -                              "description": "SVG viewBox y in engine units (m)",
        -                              "type": "number"
        -                            }
        -                          },
        -                          "required": [
        -                            "svg_b64",
        -                            "viewbox_x",
        -                            "viewbox_y",
        -                            "viewbox_width",
        -                            "viewbox_height",
        -                            "entity_count"
        -                          ],
        -                          "type": "object"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "label": {
        -                      "type": "string"
        -                    },
        -                    "position": {
        -                      "type": "integer"
        -                    },
        -                    "slug": {
        -                      "type": "string"
        -                    }
        -                  },
        -                  "required": [
        -                    "assembly_id",
        -                    "slug",
        -                    "label",
        -                    "position"
        -                  ],
        -                  "type": "object"
        -                },
        -                "type": "array"
        -              },
        -              "boqs_by_standard": {
        -                "additionalProperties": {
        -                  "items": {
        -                    "additionalProperties": false,
        -                    "description": "Slim BoQ row for the recompute response. Matches the engine's own\n``BoQItem`` columns; rate / amount stay null per the freemium-MCP\npricing-is-yours discipline (schema § 1.3).",
        -                    "properties": {
        -                      "amount": {
        -                        "anyOf": [
        -                          {
        -                            "type": "number"
        -                          },
        -                          {
        -                            "type": "null"
        -                          }
        -                        ],
        -                        "default": null
        -                      },
        -                      "code": {
        -                        "type": "string"
        -                      },
        -                      "description": {
        -                        "type": "string"
        -                      },
        -                      "group": {
        -                        "anyOf": [
        -                          {
        -                            "type": "string"
        -                          },
        -                          {
        -                            "type": "null"
        -                          }
        -                        ],
        -                        "default": null
        -                      },
        -                      "nrm1_element": {
        -                        "anyOf": [
        -                          {
        -                            "type": "string"
        -                          },
        -                          {
        -                            "type": "null"
        -                          }
        -                        ],
        -                        "default": null
        -                      },
        -                      "nrm1_group_element": {
        -                        "anyOf": [
        -                          {
        -                            "type": "integer"
        -                          },
        -                          {
        -                            "type": "null"
        -                          }
        -                        ],
        -                        "default": null
        -                      },
        -                      "nrm1_sub_element": {
        -                        "anyOf": [
        -                          {
        -                            "type": "string"
        -                          },
        -                          {
        -                            "type": "null"
        -                          }
        -                        ],
        -                        "default": null
        -                      },
        -                      "quantity": {
        -                        "minimum": 0,
        -                        "type": "number"
        -                      },
        -                      "rate": {
        -                        "anyOf": [
        -                          {
        -                            "type": "number"
        -                          },
        -                          {
        -                            "type": "null"
        -                          }
        -                        ],
        -                        "default": null
        -                      },
        -                      "sub_group": {
        -                        "anyOf": [
        -                          {
        -                            "type": "string"
        -                          },
        -                          {
        -                            "type": "null"
        -                          }
        -                        ],
        -                        "default": null
        -                      },
        -                      "unit": {
        -                        "type": "string"
        -                      }
        -                    },
        -                    "required": [
        -                      "code",
        -                      "description",
        -                      "unit",
        -                      "quantity"
        -                    ],
        -                    "type": "object"
        -                  },
        -                  "type": "array"
        -                },
        -                "type": "object"
        -              },
        -              "procurement_summary": {
        -                "items": {
        -                  "additionalProperties": false,
        -                  "description": "One row of the project's procurement summary (G.4.4b Step 1).\n\nThe procurement summary is the standard-agnostic material rollup keyed\non ``(category, spec, unit)`` — distinct from ``boqs_by_standard`` (a\nmeasurement-standard projection) and identical across all four\nstandards by construction. Drives the right pane of\n``/workspace/[project_id]`` and the ``Procurement`` sheet of the\nproject XLSX (per launch spec § 3.4.2).",
        -                  "properties": {
        -                    "category": {
        -                      "type": "string"
        -                    },
        -                    "quantity": {
        -                      "minimum": 0,
        -                      "type": "number"
        -                    },
        -                    "source_assemblies": {
        -                      "items": {
        -                        "type": "string"
        -                      },
        -                      "type": "array"
        -                    },
        -                    "spec": {
        -                      "type": "string"
        -                    },
        -                    "unit": {
        -                      "type": "string"
        -                    }
        -                  },
        -                  "required": [
        -                    "category",
        -                    "spec",
        -                    "quantity",
        -                    "unit",
        -                    "source_assemblies"
        -                  ],
        -                  "type": "object"
        -                },
        -                "type": "array"
        -              },
        -              "project_id": {
        -                "type": "string"
        -              },
        -              "standards_rendered": {
        -                "items": {
        -                  "type": "string"
        -                },
        -                "type": "array"
        -              },
        -              "work_item_count": {
        -                "type": "integer"
        -              }
        -            },
        -            "required": [
        -              "project_id",
        -              "standards_rendered",
        -              "assembly_count",
        -              "work_item_count",
        -              "boqs_by_standard",
        -              "procurement_summary",
        -              "assembly_drawings"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      },
        -      "error": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        -            "properties": {
        -              "code": {
        -                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        -                "enum": [
        -                  "RATE_LIMIT_EXCEEDED",
        -                  "TIER_INSUFFICIENT",
        -                  "INVALID_INPUT",
        -                  "SCHEMA_VERSION_MISMATCH",
        -                  "SCHEMA_INVARIANT_VIOLATION",
        -                  "UPSTREAM_TIMEOUT",
        -                  "BACKEND_FAILURE",
        -                  "IP_BLOCKED",
        -                  "RESOURCE_NOT_FOUND",
        -                  "RENDER_FAILURE",
        -                  "OCR_LOW_CONFIDENCE",
        -                  "MANUAL_REVIEW_REQUIRED",
        -                  "ACCEPTANCE_REQUIRED",
        -                  "INVALID_TOKEN"
        -                ],
        -                "type": "string"
        -              },
        -              "details": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "message": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "recoverable": {
        -                "type": "boolean"
        -              },
        -              "retry_after_seconds": {
        -                "anyOf": [
        -                  {
        -                    "minimum": 0,
        -                    "type": "integer"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              }
        -            },
        -            "required": [
        -              "code",
        -              "message",
        -              "recoverable"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      }
        -    },
        -    "required": [
        -      "_meta"
        -    ],
        -    "type": "object"
        -  },
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "_meta": {
        -        "additionalProperties": false,
        -        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        -        "properties": {
        -          "deliverables": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        -                "properties": {
        -                  "docx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "dxf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "expires_at": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  },
        -                  "pdf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "xlsx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "expires_at"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "document_id": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "issued_at": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "rate_limit_remaining": {
        -            "anyOf": [
        -              {
        -                "minimum": 0,
        -                "type": "integer"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "request_id": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "schema_version": {
        -            "const": "1.0.0",
        -            "default": "1.0.0",
        -            "type": "string"
        -          },
        -          "scope_boundary": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        -                "properties": {
        -                  "not_in_scope": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "produced": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "recommended_companions": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "type": "string"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "produced",
        -                  "not_in_scope"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tier": {
        -            "enum": [
        -              "free",
        -              "paid"
        -            ],
        -            "type": "string"
        -          },
        -          "tier_upgrade": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        -                "properties": {
        -                  "available_tiers": {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        -                      "properties": {
        -                        "billing": {
        -                          "enum": [
        -                            "one_off",
        -                            "monthly",
        -                            "annual"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "currency": {
        -                          "enum": [
        -                            "GBP",
        -                            "SGD",
        -                            "EUR",
        -                            "USD",
        -                            "CAD",
        -                            "AUD",
        -                            "NZD",
        -                            "MYR"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "display_name": {
        -                          "type": "string"
        -                        },
        -                        "price_local": {
        -                          "type": "number"
        -                        },
        -                        "tier_slug": {
        -                          "enum": [
        -                            "7_day_pass",
        -                            "solo",
        -                            "studio",
        -                            "practice"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "unlock_summary": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "tier_slug",
        -                        "display_name",
        -                        "price_local",
        -                        "currency",
        -                        "billing",
        -                        "unlock_summary"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "current_tier": {
        -                    "const": "free",
        -                    "default": "free",
        -                    "type": "string"
        -                  },
        -                  "pass_credit": {
        -                    "anyOf": [
        -                      {
        -                        "additionalProperties": false,
        -                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        -                        "properties": {
        -                          "amount_local": {
        -                            "type": "number"
        -                          },
        -                          "applies_to": {
        -                            "const": "solo_first_month",
        -                            "default": "solo_first_month",
        -                            "type": "string"
        -                          },
        -                          "currency": {
        -                            "type": "string"
        -                          },
        -                          "redeemable_until": {
        -                            "type": "string"
        -                          }
        -                        },
        -                        "required": [
        -                          "amount_local",
        -                          "currency",
        -                          "redeemable_until"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "pricing_url": {
        -                    "default": "https://civilquants.com/pricing",
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "available_tiers"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tos_url": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "upgrade_hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "warranty_disclaimer": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          }
        -        },
        -        "required": [
        -          "request_id",
        -          "issued_at",
        -          "tier"
        -        ],
        -        "type": "object"
        -      },
        -      "data": {
        -        "default": null,
        -        "title": "Data"
        -      },
        -      "error": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        -            "properties": {
        -              "code": {
        -                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        -                "enum": [
        -                  "RATE_LIMIT_EXCEEDED",
        -                  "TIER_INSUFFICIENT",
        -                  "INVALID_INPUT",
        -                  "SCHEMA_VERSION_MISMATCH",
        -                  "SCHEMA_INVARIANT_VIOLATION",
        -                  "UPSTREAM_TIMEOUT",
        -                  "BACKEND_FAILURE",
        -                  "IP_BLOCKED",
        -                  "RESOURCE_NOT_FOUND",
        -                  "RENDER_FAILURE",
        -                  "OCR_LOW_CONFIDENCE",
        -                  "MANUAL_REVIEW_REQUIRED",
        -                  "ACCEPTANCE_REQUIRED",
        -                  "INVALID_TOKEN"
        -                ],
        -                "type": "string"
        -              },
        -              "details": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "message": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "recoverable": {
        -                "type": "boolean"
        -              },
        -              "retry_after_seconds": {
        -                "anyOf": [
        -                  {
        -                    "minimum": 0,
        -                    "type": "integer"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              }
        -            },
        -            "required": [
        -              "code",
        -              "message",
        -              "recoverable"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      }
        -    },
        -    "required": [
        -      "_meta"
        -    ],
        -    "type": "object"
        -  }
        -]New value: +[
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "_meta": {
        +        "additionalProperties": false,
        +        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        +        "properties": {
        +          "deliverables": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        +                "properties": {
        +                  "docx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "dxf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "expires_at": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  },
        +                  "pdf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "xlsx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "expires_at"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "document_id": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "issued_at": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "rate_limit_remaining": {
        +            "anyOf": [
        +              {
        +                "minimum": 0,
        +                "type": "integer"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "request_id": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "schema_version": {
        +            "const": "1.0.0",
        +            "default": "1.0.0",
        +            "type": "string"
        +          },
        +          "scope_boundary": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        +                "properties": {
        +                  "not_in_scope": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "produced": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "recommended_companions": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "type": "string"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "produced",
        +                  "not_in_scope"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tier": {
        +            "enum": [
        +              "free",
        +              "paid"
        +            ],
        +            "type": "string"
        +          },
        +          "tier_upgrade": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        +                "properties": {
        +                  "available_tiers": {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        +                      "properties": {
        +                        "billing": {
        +                          "enum": [
        +                            "one_off",
        +                            "monthly",
        +                            "annual"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "currency": {
        +                          "enum": [
        +                            "GBP",
        +                            "SGD",
        +                            "EUR",
        +                            "USD",
        +                            "CAD",
        +                            "AUD",
        +                            "NZD",
        +                            "MYR"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "display_name": {
        +                          "type": "string"
        +                        },
        +                        "price_local": {
        +                          "type": "number"
        +                        },
        +                        "tier_slug": {
        +                          "enum": [
        +                            "7_day_pass",
        +                            "solo",
        +                            "studio",
        +                            "practice"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "unlock_summary": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "tier_slug",
        +                        "display_name",
        +                        "price_local",
        +                        "currency",
        +                        "billing",
        +                        "unlock_summary"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "current_tier": {
        +                    "const": "free",
        +                    "default": "free",
        +                    "type": "string"
        +                  },
        +                  "pass_credit": {
        +                    "anyOf": [
        +                      {
        +                        "additionalProperties": false,
        +                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        +                        "properties": {
        +                          "amount_local": {
        +                            "type": "number"
        +                          },
        +                          "applies_to": {
        +                            "const": "solo_first_month",
        +                            "default": "solo_first_month",
        +                            "type": "string"
        +                          },
        +                          "currency": {
        +                            "type": "string"
        +                          },
        +                          "redeemable_until": {
        +                            "type": "string"
        +                          }
        +                        },
        +                        "required": [
        +                          "amount_local",
        +                          "currency",
        +                          "redeemable_until"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "pricing_url": {
        +                    "default": "https://civilquants.com/pricing",
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "available_tiers"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tos_url": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "upgrade_hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "warranty_disclaimer": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          }
        +        },
        +        "required": [
        +          "request_id",
        +          "issued_at",
        +          "tier"
        +        ],
        +        "type": "object"
        +      },
        +      "data": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "properties": {
        +              "assembly_count": {
        +                "type": "integer"
        +              },
        +              "assembly_drawings": {
        +                "items": {
        +                  "additionalProperties": false,
        +                  "description": "One enabled assembly's drawing payload for the project recompute\nresponse (G.4.4b Step 2).\n\nMirrors the per-assembly drawing surface from\n``POST /api/assemblies/{slug}/compute`` (same ``DrawingRef`` shape,\nsame SVG renderer via ``build_drawing_ref``) so the project view's\ncontact-sheet centre pane renders identically to the single-assembly\ncalculator preview. ``drawing`` is nullable to stay backward-\ncompatible with assemblies that don't emit ``draw_entities`` (older\nshape); the few assemblies emitting an empty list still get a tiny\nplaceholder SVG so the UI never has to special-case absence.",
        +                  "properties": {
        +                    "assembly_id": {
        +                      "type": "string"
        +                    },
        +                    "drawing": {
        +                      "anyOf": [
        +                        {
        +                          "additionalProperties": false,
        +                          "description": "Server-rendered SVG preview of the assembly geometry.\n\nPer G.6.3 / STATUS.md decision 6 (2026-05-19): one source of\ngeometry (`DrawEntity` list emitted by `Assembly.compute`), two\noutput paths (this SVG for inline preview, the `GET .../dxf`\nendpoint for the real CAD download). The browser displays\n`svg_b64` decoded inline; `viewbox` drives client zoom/pan\ncontrols without re-parsing the SVG.\n\n`svg_b64` is base64 of a UTF-8 SVG document with one `<g\nclass=\"cq-layer cq-layer-<name>\">` per layer. Styling defaults are\ninlined so the preview renders without an external stylesheet;\nfront-end CSS may override via the class names.",
        +                          "properties": {
        +                            "entity_count": {
        +                              "description": "Number of DrawEntities rendered",
        +                              "minimum": 0,
        +                              "type": "integer"
        +                            },
        +                            "svg_b64": {
        +                              "description": "Base64-encoded SVG document",
        +                              "minLength": 1,
        +                              "type": "string"
        +                            },
        +                            "unit_of_drawing": {
        +                              "const": "m",
        +                              "default": "m",
        +                              "description": "Engine geometry is in metres. Surfaced here so the client never has to guess; if a future engine switches to mm this becomes the discriminator.",
        +                              "type": "string"
        +                            },
        +                            "viewbox_height": {
        +                              "description": "SVG viewBox height in engine units (m)",
        +                              "exclusiveMinimum": 0,
        +                              "type": "number"
        +                            },
        +                            "viewbox_width": {
        +                              "description": "SVG viewBox width in engine units (m)",
        +                              "exclusiveMinimum": 0,
        +                              "type": "number"
        +                            },
        +                            "viewbox_x": {
        +                              "description": "SVG viewBox x in engine units (m)",
        +                              "type": "number"
        +                            },
        +                            "viewbox_y": {
        +                              "description": "SVG viewBox y in engine units (m)",
        +                              "type": "number"
        +                            }
        +                          },
        +                          "required": [
        +                            "svg_b64",
        +                            "viewbox_x",
        +                            "viewbox_y",
        +                            "viewbox_width",
        +                            "viewbox_height",
        +                            "entity_count"
        +                          ],
        +                          "type": "object"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "label": {
        +                      "type": "string"
        +                    },
        +                    "position": {
        +                      "type": "integer"
        +                    },
        +                    "slug": {
        +                      "type": "string"
        +                    }
        +                  },
        +                  "required": [
        +                    "assembly_id",
        +                    "slug",
        +                    "label",
        +                    "position"
        +                  ],
        +                  "type": "object"
        +                },
        +                "type": "array"
        +              },
        +              "boqs_by_standard": {
        +                "additionalProperties": {
        +                  "items": {
        +                    "additionalProperties": false,
        +                    "description": "Slim BoQ row for the recompute response. Matches the engine's own\n``BoQItem`` columns; rate / amount stay null per the freemium-MCP\npricing-is-yours discipline (schema § 1.3).",
        +                    "properties": {
        +                      "amount": {
        +                        "anyOf": [
        +                          {
        +                            "type": "number"
        +                          },
        +                          {
        +                            "type": "null"
        +                          }
        +                        ],
        +                        "default": null
        +                      },
        +                      "code": {
        +                        "type": "string"
        +                      },
        +                      "description": {
        +                        "type": "string"
        +                      },
        +                      "group": {
        +                        "anyOf": [
        +                          {
        +                            "type": "string"
        +                          },
        +                          {
        +                            "type": "null"
        +                          }
        +                        ],
        +                        "default": null
        +                      },
        +                      "nrm1_element": {
        +                        "anyOf": [
        +                          {
        +                            "type": "string"
        +                          },
        +                          {
        +                            "type": "null"
        +                          }
        +                        ],
        +                        "default": null
        +                      },
        +                      "nrm1_group_element": {
        +                        "anyOf": [
        +                          {
        +                            "type": "integer"
        +                          },
        +                          {
        +                            "type": "null"
        +                          }
        +                        ],
        +                        "default": null
        +                      },
        +                      "nrm1_sub_element": {
        +                        "anyOf": [
        +                          {
        +                            "type": "string"
        +                          },
        +                          {
        +                            "type": "null"
        +                          }
        +                        ],
        +                        "default": null
        +                      },
        +                      "quantity": {
        +                        "minimum": 0,
        +                        "type": "number"
        +                      },
        +                      "rate": {
        +                        "anyOf": [
        +                          {
        +                            "type": "number"
        +                          },
        +                          {
        +                            "type": "null"
        +                          }
        +                        ],
        +                        "default": null
        +                      },
        +                      "sub_group": {
        +                        "anyOf": [
        +                          {
        +                            "type": "string"
        +                          },
        +                          {
        +                            "type": "null"
        +                          }
        +                        ],
        +                        "default": null
        +                      },
        +                      "unit": {
        +                        "type": "string"
        +                      }
        +                    },
        +                    "required": [
        +                      "code",
        +                      "description",
        +                      "unit",
        +                      "quantity"
        +                    ],
        +                    "type": "object"
        +                  },
        +                  "type": "array"
        +                },
        +                "type": "object"
        +              },
        +              "procurement_summary": {
        +                "items": {
        +                  "additionalProperties": false,
        +                  "description": "One row of the project's procurement summary (G.4.4b Step 1).\n\nThe procurement summary is the standard-agnostic material rollup keyed\non ``(category, spec, unit)`` — distinct from ``boqs_by_standard`` (a\nmeasurement-standard projection) and identical across all four\nstandards by construction. Drives the right pane of\n``/workspace/[project_id]`` and the ``Procurement`` sheet of the\nproject XLSX (per launch spec § 3.4.2).",
        +                  "properties": {
        +                    "category": {
        +                      "type": "string"
        +                    },
        +                    "quantity": {
        +                      "minimum": 0,
        +                      "type": "number"
        +                    },
        +                    "source_assemblies": {
        +                      "items": {
        +                        "type": "string"
        +                      },
        +                      "type": "array"
        +                    },
        +                    "spec": {
        +                      "type": "string"
        +                    },
        +                    "unit": {
        +                      "type": "string"
        +                    }
        +                  },
        +                  "required": [
        +                    "category",
        +                    "spec",
        +                    "quantity",
        +                    "unit",
        +                    "source_assemblies"
        +                  ],
        +                  "type": "object"
        +                },
        +                "type": "array"
        +              },
        +              "project_id": {
        +                "type": "string"
        +              },
        +              "standards_rendered": {
        +                "items": {
        +                  "type": "string"
        +                },
        +                "type": "array"
        +              },
        +              "work_item_count": {
        +                "type": "integer"
        +              }
        +            },
        +            "required": [
        +              "project_id",
        +              "standards_rendered",
        +              "assembly_count",
        +              "work_item_count",
        +              "boqs_by_standard",
        +              "procurement_summary",
        +              "assembly_drawings"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      },
        +      "error": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        +            "properties": {
        +              "code": {
        +                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        +                "enum": [
        +                  "RATE_LIMIT_EXCEEDED",
        +                  "TIER_INSUFFICIENT",
        +                  "INVALID_INPUT",
        +                  "SCHEMA_VERSION_MISMATCH",
        +                  "SCHEMA_INVARIANT_VIOLATION",
        +                  "UPSTREAM_TIMEOUT",
        +                  "BACKEND_FAILURE",
        +                  "IP_BLOCKED",
        +                  "RESOURCE_NOT_FOUND",
        +                  "RENDER_FAILURE",
        +                  "OCR_LOW_CONFIDENCE",
        +                  "MANUAL_REVIEW_REQUIRED",
        +                  "ACCEPTANCE_REQUIRED",
        +                  "INVALID_TOKEN"
        +                ],
        +                "type": "string"
        +              },
        +              "details": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "message": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "recoverable": {
        +                "type": "boolean"
        +              },
        +              "retry_after_seconds": {
        +                "anyOf": [
        +                  {
        +                    "minimum": 0,
        +                    "type": "integer"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              }
        +            },
        +            "required": [
        +              "code",
        +              "message",
        +              "recoverable"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      }
        +    },
        +    "required": [
        +      "_meta"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "_meta": {
        +        "additionalProperties": false,
        +        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        +        "properties": {
        +          "deliverables": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        +                "properties": {
        +                  "docx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "dxf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "expires_at": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  },
        +                  "pdf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "xlsx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "expires_at"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "document_id": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "issued_at": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "rate_limit_remaining": {
        +            "anyOf": [
        +              {
        +                "minimum": 0,
        +                "type": "integer"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "request_id": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "schema_version": {
        +            "const": "1.0.0",
        +            "default": "1.0.0",
        +            "type": "string"
        +          },
        +          "scope_boundary": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        +                "properties": {
        +                  "not_in_scope": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "produced": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "recommended_companions": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "type": "string"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "produced",
        +                  "not_in_scope"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tier": {
        +            "enum": [
        +              "free",
        +              "paid"
        +            ],
        +            "type": "string"
        +          },
        +          "tier_upgrade": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        +                "properties": {
        +                  "available_tiers": {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        +                      "properties": {
        +                        "billing": {
        +                          "enum": [
        +                            "one_off",
        +                            "monthly",
        +                            "annual"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "currency": {
        +                          "enum": [
        +                            "GBP",
        +                            "SGD",
        +                            "EUR",
        +                            "USD",
        +                            "CAD",
        +                            "AUD",
        +                            "NZD",
        +                            "MYR"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "display_name": {
        +                          "type": "string"
        +                        },
        +                        "price_local": {
        +                          "type": "number"
        +                        },
        +                        "tier_slug": {
        +                          "enum": [
        +                            "7_day_pass",
        +                            "solo",
        +                            "studio",
        +                            "practice"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "unlock_summary": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "tier_slug",
        +                        "display_name",
        +                        "price_local",
        +                        "currency",
        +                        "billing",
        +                        "unlock_summary"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "current_tier": {
        +                    "const": "free",
        +                    "default": "free",
        +                    "type": "string"
        +                  },
        +                  "pass_credit": {
        +                    "anyOf": [
        +                      {
        +                        "additionalProperties": false,
        +                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        +                        "properties": {
        +                          "amount_local": {
        +                            "type": "number"
        +                          },
        +                          "applies_to": {
        +                            "const": "solo_first_month",
        +                            "default": "solo_first_month",
        +                            "type": "string"
        +                          },
        +                          "currency": {
        +                            "type": "string"
        +                          },
        +                          "redeemable_until": {
        +                            "type": "string"
        +                          }
        +                        },
        +                        "required": [
        +                          "amount_local",
        +                          "currency",
        +                          "redeemable_until"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "pricing_url": {
        +                    "default": "https://civilquants.com/pricing",
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "available_tiers"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tos_url": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "upgrade_hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "warranty_disclaimer": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          }
        +        },
        +        "required": [
        +          "request_id",
        +          "issued_at",
        +          "tier"
        +        ],
        +        "type": "object"
        +      },
        +      "data": {
        +        "default": null,
        +        "title": "Data"
        +      },
        +      "error": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        +            "properties": {
        +              "code": {
        +                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        +                "enum": [
        +                  "RATE_LIMIT_EXCEEDED",
        +                  "TIER_INSUFFICIENT",
        +                  "INVALID_INPUT",
        +                  "SCHEMA_VERSION_MISMATCH",
        +                  "SCHEMA_INVARIANT_VIOLATION",
        +                  "UPSTREAM_TIMEOUT",
        +                  "BACKEND_FAILURE",
        +                  "IP_BLOCKED",
        +                  "RESOURCE_NOT_FOUND",
        +                  "RENDER_FAILURE",
        +                  "OCR_LOW_CONFIDENCE",
        +                  "MANUAL_REVIEW_REQUIRED",
        +                  "ACCEPTANCE_REQUIRED",
        +                  "INVALID_TOKEN"
        +                ],
        +                "type": "string"
        +              },
        +              "details": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "message": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "recoverable": {
        +                "type": "boolean"
        +              },
        +              "retry_after_seconds": {
        +                "anyOf": [
        +                  {
        +                    "minimum": 0,
        +                    "type": "integer"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              }
        +            },
        +            "required": [
        +              "code",
        +              "message",
        +              "recoverable"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      }
        +    },
        +    "required": [
        +      "_meta"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedrender_skill_report3 fields changed
      • changedInput schema / properties / request / properties / compute_results / items / description
        Previous value: -"Schema § 1.1 — the typed payload returned inside `MCPResponse[ComputeResult]`.\n\nFree-tier responses MUST omit `drawings` and `audit_trail` (the bridge\nenforces this); paid-tier responses populate both. `text_summary` is\nbounded to 2000 chars — keeps the LLM-facing summary token-cheap and\nforces longer narrative into BoQ row descriptions where it belongs.\n`warnings` is the non-fatal geometry advisory list (both tiers)."New value: +"Schema § 1.1 — the typed payload returned inside `MCPResponse[ComputeResult]`.\n\nFree-tier responses omit `drawings` (the downloadable CAD artefact\npointers — the paid differentiator); the bridge enforces this. The\n`audit_trail` and the inline `drawing` preview are present on BOTH tiers\n(V1 ALIGN / 60th-fire D + C). `text_summary` is bounded to 2000 chars —\nkeeps the LLM-facing summary token-cheap and forces longer narrative into\nBoQ row descriptions where it belongs. `warnings` is the non-fatal\ngeometry advisory list (both tiers)."
      • addedInput schema / properties / request / properties / compute_results / items / properties / drawing
        Added value: +{
        +  "anyOf": [
        +    {
        +      "additionalProperties": false,
        +      "description": "Schema § 1.6a — inline server-rendered SVG preview of the geometry.\n\nThe MCP mirror of the web ``/compute`` response's ``drawing`` field\n(``api.schemas.compute.DrawingRef``): the same on-screen dimensioned\ndrawing both tiers see in the workspace, surfaced on the MCP compute\nresponse so a chat client can render it inline (60th-fire item C). This\nis the on-screen preview — present on BOTH tiers per the free/paid\nboundary; the downloadable CAD artefacts (DXF / dimensioned PDF) remain\nthe paid differentiator via the export tools.\n\nDefined here rather than importing ``DrawingRef`` because the web\n``schemas`` package imports back into this module (``schemas.render``),\nso reusing it would create an import cycle — the MCP wire contract keeps\nits own copy, the same pattern as ``BoQRow`` / ``DrawingReference``.",
        +      "properties": {
        +        "entity_count": {
        +          "minimum": 0,
        +          "type": "integer"
        +        },
        +        "svg_b64": {
        +          "minLength": 1,
        +          "type": "string"
        +        },
        +        "unit_of_drawing": {
        +          "const": "m",
        +          "default": "m",
        +          "type": "string"
        +        },
        +        "viewbox_height": {
        +          "exclusiveMinimum": 0,
        +          "type": "number"
        +        },
        +        "viewbox_width": {
        +          "exclusiveMinimum": 0,
        +          "type": "number"
        +        },
        +        "viewbox_x": {
        +          "type": "number"
        +        },
        +        "viewbox_y": {
        +          "type": "number"
        +        }
        +      },
        +      "required": [
        +        "svg_b64",
        +        "viewbox_x",
        +        "viewbox_y",
        +        "viewbox_width",
        +        "viewbox_height",
        +        "entity_count"
        +      ],
        +      "type": "object"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null
        +}
      • changedOutput schema / properties / result / anyOf
        Previous value: -[
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "_meta": {
        -        "additionalProperties": false,
        -        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        -        "properties": {
        -          "deliverables": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        -                "properties": {
        -                  "docx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "dxf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "expires_at": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  },
        -                  "pdf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "xlsx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "expires_at"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "document_id": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "issued_at": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "rate_limit_remaining": {
        -            "anyOf": [
        -              {
        -                "minimum": 0,
        -                "type": "integer"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "request_id": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "schema_version": {
        -            "const": "1.0.0",
        -            "default": "1.0.0",
        -            "type": "string"
        -          },
        -          "scope_boundary": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        -                "properties": {
        -                  "not_in_scope": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "produced": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "recommended_companions": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "type": "string"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "produced",
        -                  "not_in_scope"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tier": {
        -            "enum": [
        -              "free",
        -              "paid"
        -            ],
        -            "type": "string"
        -          },
        -          "tier_upgrade": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        -                "properties": {
        -                  "available_tiers": {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        -                      "properties": {
        -                        "billing": {
        -                          "enum": [
        -                            "one_off",
        -                            "monthly",
        -                            "annual"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "currency": {
        -                          "enum": [
        -                            "GBP",
        -                            "SGD",
        -                            "EUR",
        -                            "USD",
        -                            "CAD",
        -                            "AUD",
        -                            "NZD",
        -                            "MYR"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "display_name": {
        -                          "type": "string"
        -                        },
        -                        "price_local": {
        -                          "type": "number"
        -                        },
        -                        "tier_slug": {
        -                          "enum": [
        -                            "7_day_pass",
        -                            "solo",
        -                            "studio",
        -                            "practice"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "unlock_summary": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "tier_slug",
        -                        "display_name",
        -                        "price_local",
        -                        "currency",
        -                        "billing",
        -                        "unlock_summary"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "current_tier": {
        -                    "const": "free",
        -                    "default": "free",
        -                    "type": "string"
        -                  },
        -                  "pass_credit": {
        -                    "anyOf": [
        -                      {
        -                        "additionalProperties": false,
        -                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        -                        "properties": {
        -                          "amount_local": {
        -                            "type": "number"
        -                          },
        -                          "applies_to": {
        -                            "const": "solo_first_month",
        -                            "default": "solo_first_month",
        -                            "type": "string"
        -                          },
        -                          "currency": {
        -                            "type": "string"
        -                          },
        -                          "redeemable_until": {
        -                            "type": "string"
        -                          }
        -                        },
        -                        "required": [
        -                          "amount_local",
        -                          "currency",
        -                          "redeemable_until"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "pricing_url": {
        -                    "default": "https://civilquants.com/pricing",
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "available_tiers"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tos_url": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "upgrade_hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "warranty_disclaimer": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          }
        -        },
        -        "required": [
        -          "request_id",
        -          "issued_at",
        -          "tier"
        -        ],
        -        "type": "object"
        -      },
        -      "data": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Wire response shape — schema § 4 RenderResult.\n\nPer Phase 3.4 A.3: each skill has TWO possible delivery modes that\nmap to ``CIVILQUANTS_ARTEFACT_STORE``:\n  * ``local`` (dev default) — base64-inline in ``xlsx_b64`` / ``docx_b64``\n  * ``r2`` (production) — pre-signed URL in ``xlsx_url`` / ``docx_url``\nThe validator enforces \"exactly one delivery channel per skill\" — a\nsingle render call returns exactly one of {b64, url} for its target\nformat, never both. The other skill's fields stay null.",
        -            "properties": {
        -              "byte_size": {
        -                "description": "Decoded size of whichever deliverable was rendered.",
        -                "minimum": 0,
        -                "type": "integer"
        -              },
        -              "docx_b64": {
        -                "anyOf": [
        -                  {
        -                    "type": "string"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null,
        -                "description": "Base64-encoded .docx document bytes (Word skill, local store mode only)."
        -              },
        -              "docx_url": {
        -                "anyOf": [
        -                  {
        -                    "type": "string"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null,
        -                "description": "Pre-signed R2 GET URL for .docx (Word skill, R2 store mode)."
        -              },
        -              "pdf_url": {
        -                "anyOf": [
        -                  {
        -                    "type": "string"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null,
        -                "description": "Reserved for a future PDF skill backend."
        -              },
        -              "skill": {
        -                "description": "Echoes the resolved skill slug.",
        -                "type": "string"
        -              },
        -              "watermark_state": {
        -                "description": "`free` when the free-tier sheet protection + watermark is applied; `none` for paid output.",
        -                "enum": [
        -                  "free",
        -                  "none"
        -                ],
        -                "type": "string"
        -              },
        -              "xlsx_b64": {
        -                "anyOf": [
        -                  {
        -                    "type": "string"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null,
        -                "description": "Base64-encoded .xlsx workbook bytes (Excel skill, local store mode only)."
        -              },
        -              "xlsx_url": {
        -                "anyOf": [
        -                  {
        -                    "type": "string"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null,
        -                "description": "Pre-signed R2 GET URL for .xlsx (Excel skill, R2 store mode)."
        -              }
        -            },
        -            "required": [
        -              "watermark_state",
        -              "byte_size",
        -              "skill"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      },
        -      "error": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        -            "properties": {
        -              "code": {
        -                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        -                "enum": [
        -                  "RATE_LIMIT_EXCEEDED",
        -                  "TIER_INSUFFICIENT",
        -                  "INVALID_INPUT",
        -                  "SCHEMA_VERSION_MISMATCH",
        -                  "SCHEMA_INVARIANT_VIOLATION",
        -                  "UPSTREAM_TIMEOUT",
        -                  "BACKEND_FAILURE",
        -                  "IP_BLOCKED",
        -                  "RESOURCE_NOT_FOUND",
        -                  "RENDER_FAILURE",
        -                  "OCR_LOW_CONFIDENCE",
        -                  "MANUAL_REVIEW_REQUIRED",
        -                  "ACCEPTANCE_REQUIRED",
        -                  "INVALID_TOKEN"
        -                ],
        -                "type": "string"
        -              },
        -              "details": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "message": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "recoverable": {
        -                "type": "boolean"
        -              },
        -              "retry_after_seconds": {
        -                "anyOf": [
        -                  {
        -                    "minimum": 0,
        -                    "type": "integer"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              }
        -            },
        -            "required": [
        -              "code",
        -              "message",
        -              "recoverable"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      }
        -    },
        -    "required": [
        -      "_meta"
        -    ],
        -    "type": "object"
        -  },
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "_meta": {
        -        "additionalProperties": false,
        -        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        -        "properties": {
        -          "deliverables": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        -                "properties": {
        -                  "docx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "dxf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "expires_at": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  },
        -                  "pdf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "xlsx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "expires_at"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "document_id": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "issued_at": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "rate_limit_remaining": {
        -            "anyOf": [
        -              {
        -                "minimum": 0,
        -                "type": "integer"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "request_id": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "schema_version": {
        -            "const": "1.0.0",
        -            "default": "1.0.0",
        -            "type": "string"
        -          },
        -          "scope_boundary": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        -                "properties": {
        -                  "not_in_scope": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "produced": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "recommended_companions": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "type": "string"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "produced",
        -                  "not_in_scope"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tier": {
        -            "enum": [
        -              "free",
        -              "paid"
        -            ],
        -            "type": "string"
        -          },
        -          "tier_upgrade": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        -                "properties": {
        -                  "available_tiers": {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        -                      "properties": {
        -                        "billing": {
        -                          "enum": [
        -                            "one_off",
        -                            "monthly",
        -                            "annual"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "currency": {
        -                          "enum": [
        -                            "GBP",
        -                            "SGD",
        -                            "EUR",
        -                            "USD",
        -                            "CAD",
        -                            "AUD",
        -                            "NZD",
        -                            "MYR"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "display_name": {
        -                          "type": "string"
        -                        },
        -                        "price_local": {
        -                          "type": "number"
        -                        },
        -                        "tier_slug": {
        -                          "enum": [
        -                            "7_day_pass",
        -                            "solo",
        -                            "studio",
        -                            "practice"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "unlock_summary": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "tier_slug",
        -                        "display_name",
        -                        "price_local",
        -                        "currency",
        -                        "billing",
        -                        "unlock_summary"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "current_tier": {
        -                    "const": "free",
        -                    "default": "free",
        -                    "type": "string"
        -                  },
        -                  "pass_credit": {
        -                    "anyOf": [
        -                      {
        -                        "additionalProperties": false,
        -                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        -                        "properties": {
        -                          "amount_local": {
        -                            "type": "number"
        -                          },
        -                          "applies_to": {
        -                            "const": "solo_first_month",
        -                            "default": "solo_first_month",
        -                            "type": "string"
        -                          },
        -                          "currency": {
        -                            "type": "string"
        -                          },
        -                          "redeemable_until": {
        -                            "type": "string"
        -                          }
        -                        },
        -                        "required": [
        -                          "amount_local",
        -                          "currency",
        -                          "redeemable_until"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "pricing_url": {
        -                    "default": "https://civilquants.com/pricing",
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "available_tiers"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tos_url": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "upgrade_hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "warranty_disclaimer": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          }
        -        },
        -        "required": [
        -          "request_id",
        -          "issued_at",
        -          "tier"
        -        ],
        -        "type": "object"
        -      },
        -      "data": {
        -        "default": null,
        -        "title": "Data"
        -      },
        -      "error": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        -            "properties": {
        -              "code": {
        -                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        -                "enum": [
        -                  "RATE_LIMIT_EXCEEDED",
        -                  "TIER_INSUFFICIENT",
        -                  "INVALID_INPUT",
        -                  "SCHEMA_VERSION_MISMATCH",
        -                  "SCHEMA_INVARIANT_VIOLATION",
        -                  "UPSTREAM_TIMEOUT",
        -                  "BACKEND_FAILURE",
        -                  "IP_BLOCKED",
        -                  "RESOURCE_NOT_FOUND",
        -                  "RENDER_FAILURE",
        -                  "OCR_LOW_CONFIDENCE",
        -                  "MANUAL_REVIEW_REQUIRED",
        -                  "ACCEPTANCE_REQUIRED",
        -                  "INVALID_TOKEN"
        -                ],
        -                "type": "string"
        -              },
        -              "details": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "message": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "recoverable": {
        -                "type": "boolean"
        -              },
        -              "retry_after_seconds": {
        -                "anyOf": [
        -                  {
        -                    "minimum": 0,
        -                    "type": "integer"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              }
        -            },
        -            "required": [
        -              "code",
        -              "message",
        -              "recoverable"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      }
        -    },
        -    "required": [
        -      "_meta"
        -    ],
        -    "type": "object"
        -  }
        -]New value: +[
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "_meta": {
        +        "additionalProperties": false,
        +        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        +        "properties": {
        +          "deliverables": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        +                "properties": {
        +                  "docx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "dxf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "expires_at": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  },
        +                  "pdf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "xlsx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "expires_at"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "document_id": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "issued_at": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "rate_limit_remaining": {
        +            "anyOf": [
        +              {
        +                "minimum": 0,
        +                "type": "integer"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "request_id": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "schema_version": {
        +            "const": "1.0.0",
        +            "default": "1.0.0",
        +            "type": "string"
        +          },
        +          "scope_boundary": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        +                "properties": {
        +                  "not_in_scope": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "produced": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "recommended_companions": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "type": "string"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "produced",
        +                  "not_in_scope"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tier": {
        +            "enum": [
        +              "free",
        +              "paid"
        +            ],
        +            "type": "string"
        +          },
        +          "tier_upgrade": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        +                "properties": {
        +                  "available_tiers": {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        +                      "properties": {
        +                        "billing": {
        +                          "enum": [
        +                            "one_off",
        +                            "monthly",
        +                            "annual"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "currency": {
        +                          "enum": [
        +                            "GBP",
        +                            "SGD",
        +                            "EUR",
        +                            "USD",
        +                            "CAD",
        +                            "AUD",
        +                            "NZD",
        +                            "MYR"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "display_name": {
        +                          "type": "string"
        +                        },
        +                        "price_local": {
        +                          "type": "number"
        +                        },
        +                        "tier_slug": {
        +                          "enum": [
        +                            "7_day_pass",
        +                            "solo",
        +                            "studio",
        +                            "practice"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "unlock_summary": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "tier_slug",
        +                        "display_name",
        +                        "price_local",
        +                        "currency",
        +                        "billing",
        +                        "unlock_summary"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "current_tier": {
        +                    "const": "free",
        +                    "default": "free",
        +                    "type": "string"
        +                  },
        +                  "pass_credit": {
        +                    "anyOf": [
        +                      {
        +                        "additionalProperties": false,
        +                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        +                        "properties": {
        +                          "amount_local": {
        +                            "type": "number"
        +                          },
        +                          "applies_to": {
        +                            "const": "solo_first_month",
        +                            "default": "solo_first_month",
        +                            "type": "string"
        +                          },
        +                          "currency": {
        +                            "type": "string"
        +                          },
        +                          "redeemable_until": {
        +                            "type": "string"
        +                          }
        +                        },
        +                        "required": [
        +                          "amount_local",
        +                          "currency",
        +                          "redeemable_until"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "pricing_url": {
        +                    "default": "https://civilquants.com/pricing",
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "available_tiers"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tos_url": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "upgrade_hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "warranty_disclaimer": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          }
        +        },
        +        "required": [
        +          "request_id",
        +          "issued_at",
        +          "tier"
        +        ],
        +        "type": "object"
        +      },
        +      "data": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Wire response shape — schema § 4 RenderResult.\n\nPer Phase 3.4 A.3: each skill has TWO possible delivery modes that\nmap to ``CIVILQUANTS_ARTEFACT_STORE``:\n  * ``local`` (dev default) — base64-inline in ``xlsx_b64`` / ``docx_b64``\n  * ``r2`` (production) — pre-signed URL in ``xlsx_url`` / ``docx_url``\nThe validator enforces \"exactly one delivery channel per skill\" — a\nsingle render call returns exactly one of {b64, url} for its target\nformat, never both. The other skill's fields stay null.",
        +            "properties": {
        +              "byte_size": {
        +                "description": "Decoded size of whichever deliverable was rendered.",
        +                "minimum": 0,
        +                "type": "integer"
        +              },
        +              "docx_b64": {
        +                "anyOf": [
        +                  {
        +                    "type": "string"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null,
        +                "description": "Base64-encoded .docx document bytes (Word skill, local store mode only)."
        +              },
        +              "docx_url": {
        +                "anyOf": [
        +                  {
        +                    "type": "string"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null,
        +                "description": "Pre-signed R2 GET URL for .docx (Word skill, R2 store mode)."
        +              },
        +              "pdf_url": {
        +                "anyOf": [
        +                  {
        +                    "type": "string"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null,
        +                "description": "Reserved for a future PDF skill backend."
        +              },
        +              "skill": {
        +                "description": "Echoes the resolved skill slug.",
        +                "type": "string"
        +              },
        +              "watermark_state": {
        +                "description": "`free` when the free-tier sheet protection + watermark is applied; `none` for paid output.",
        +                "enum": [
        +                  "free",
        +                  "none"
        +                ],
        +                "type": "string"
        +              },
        +              "xlsx_b64": {
        +                "anyOf": [
        +                  {
        +                    "type": "string"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null,
        +                "description": "Base64-encoded .xlsx workbook bytes (Excel skill, local store mode only)."
        +              },
        +              "xlsx_url": {
        +                "anyOf": [
        +                  {
        +                    "type": "string"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null,
        +                "description": "Pre-signed R2 GET URL for .xlsx (Excel skill, R2 store mode)."
        +              }
        +            },
        +            "required": [
        +              "watermark_state",
        +              "byte_size",
        +              "skill"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      },
        +      "error": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        +            "properties": {
        +              "code": {
        +                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        +                "enum": [
        +                  "RATE_LIMIT_EXCEEDED",
        +                  "TIER_INSUFFICIENT",
        +                  "INVALID_INPUT",
        +                  "SCHEMA_VERSION_MISMATCH",
        +                  "SCHEMA_INVARIANT_VIOLATION",
        +                  "UPSTREAM_TIMEOUT",
        +                  "BACKEND_FAILURE",
        +                  "IP_BLOCKED",
        +                  "RESOURCE_NOT_FOUND",
        +                  "RENDER_FAILURE",
        +                  "OCR_LOW_CONFIDENCE",
        +                  "MANUAL_REVIEW_REQUIRED",
        +                  "ACCEPTANCE_REQUIRED",
        +                  "INVALID_TOKEN"
        +                ],
        +                "type": "string"
        +              },
        +              "details": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "message": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "recoverable": {
        +                "type": "boolean"
        +              },
        +              "retry_after_seconds": {
        +                "anyOf": [
        +                  {
        +                    "minimum": 0,
        +                    "type": "integer"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              }
        +            },
        +            "required": [
        +              "code",
        +              "message",
        +              "recoverable"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      }
        +    },
        +    "required": [
        +      "_meta"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "_meta": {
        +        "additionalProperties": false,
        +        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        +        "properties": {
        +          "deliverables": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        +                "properties": {
        +                  "docx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "dxf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "expires_at": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  },
        +                  "pdf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "xlsx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "expires_at"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "document_id": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "issued_at": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "rate_limit_remaining": {
        +            "anyOf": [
        +              {
        +                "minimum": 0,
        +                "type": "integer"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "request_id": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "schema_version": {
        +            "const": "1.0.0",
        +            "default": "1.0.0",
        +            "type": "string"
        +          },
        +          "scope_boundary": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        +                "properties": {
        +                  "not_in_scope": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "produced": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "recommended_companions": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "type": "string"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "produced",
        +                  "not_in_scope"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tier": {
        +            "enum": [
        +              "free",
        +              "paid"
        +            ],
        +            "type": "string"
        +          },
        +          "tier_upgrade": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        +                "properties": {
        +                  "available_tiers": {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        +                      "properties": {
        +                        "billing": {
        +                          "enum": [
        +                            "one_off",
        +                            "monthly",
        +                            "annual"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "currency": {
        +                          "enum": [
        +                            "GBP",
        +                            "SGD",
        +                            "EUR",
        +                            "USD",
        +                            "CAD",
        +                            "AUD",
        +                            "NZD",
        +                            "MYR"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "display_name": {
        +                          "type": "string"
        +                        },
        +                        "price_local": {
        +                          "type": "number"
        +                        },
        +                        "tier_slug": {
        +                          "enum": [
        +                            "7_day_pass",
        +                            "solo",
        +                            "studio",
        +                            "practice"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "unlock_summary": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "tier_slug",
        +                        "display_name",
        +                        "price_local",
        +                        "currency",
        +                        "billing",
        +                        "unlock_summary"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "current_tier": {
        +                    "const": "free",
        +                    "default": "free",
        +                    "type": "string"
        +                  },
        +                  "pass_credit": {
        +                    "anyOf": [
        +                      {
        +                        "additionalProperties": false,
        +                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        +                        "properties": {
        +                          "amount_local": {
        +                            "type": "number"
        +                          },
        +                          "applies_to": {
        +                            "const": "solo_first_month",
        +                            "default": "solo_first_month",
        +                            "type": "string"
        +                          },
        +                          "currency": {
        +                            "type": "string"
        +                          },
        +                          "redeemable_until": {
        +                            "type": "string"
        +                          }
        +                        },
        +                        "required": [
        +                          "amount_local",
        +                          "currency",
        +                          "redeemable_until"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "pricing_url": {
        +                    "default": "https://civilquants.com/pricing",
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "available_tiers"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tos_url": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "upgrade_hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "warranty_disclaimer": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          }
        +        },
        +        "required": [
        +          "request_id",
        +          "issued_at",
        +          "tier"
        +        ],
        +        "type": "object"
        +      },
        +      "data": {
        +        "default": null,
        +        "title": "Data"
        +      },
        +      "error": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        +            "properties": {
        +              "code": {
        +                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        +                "enum": [
        +                  "RATE_LIMIT_EXCEEDED",
        +                  "TIER_INSUFFICIENT",
        +                  "INVALID_INPUT",
        +                  "SCHEMA_VERSION_MISMATCH",
        +                  "SCHEMA_INVARIANT_VIOLATION",
        +                  "UPSTREAM_TIMEOUT",
        +                  "BACKEND_FAILURE",
        +                  "IP_BLOCKED",
        +                  "RESOURCE_NOT_FOUND",
        +                  "RENDER_FAILURE",
        +                  "OCR_LOW_CONFIDENCE",
        +                  "MANUAL_REVIEW_REQUIRED",
        +                  "ACCEPTANCE_REQUIRED",
        +                  "INVALID_TOKEN"
        +                ],
        +                "type": "string"
        +              },
        +              "details": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "message": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "recoverable": {
        +                "type": "boolean"
        +              },
        +              "retry_after_seconds": {
        +                "anyOf": [
        +                  {
        +                    "minimum": 0,
        +                    "type": "integer"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              }
        +            },
        +            "required": [
        +              "code",
        +              "message",
        +              "recoverable"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      }
        +    },
        +    "required": [
        +      "_meta"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedsave_project1 field changed
      • changedOutput schema / properties / result / anyOf
        Previous value: -[
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "_meta": {
        -        "additionalProperties": false,
        -        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        -        "properties": {
        -          "deliverables": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        -                "properties": {
        -                  "docx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "dxf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "expires_at": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  },
        -                  "pdf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "xlsx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "expires_at"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "document_id": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "issued_at": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "rate_limit_remaining": {
        -            "anyOf": [
        -              {
        -                "minimum": 0,
        -                "type": "integer"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "request_id": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "schema_version": {
        -            "const": "1.0.0",
        -            "default": "1.0.0",
        -            "type": "string"
        -          },
        -          "scope_boundary": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        -                "properties": {
        -                  "not_in_scope": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "produced": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "recommended_companions": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "type": "string"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "produced",
        -                  "not_in_scope"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tier": {
        -            "enum": [
        -              "free",
        -              "paid"
        -            ],
        -            "type": "string"
        -          },
        -          "tier_upgrade": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        -                "properties": {
        -                  "available_tiers": {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        -                      "properties": {
        -                        "billing": {
        -                          "enum": [
        -                            "one_off",
        -                            "monthly",
        -                            "annual"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "currency": {
        -                          "enum": [
        -                            "GBP",
        -                            "SGD",
        -                            "EUR",
        -                            "USD",
        -                            "CAD",
        -                            "AUD",
        -                            "NZD",
        -                            "MYR"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "display_name": {
        -                          "type": "string"
        -                        },
        -                        "price_local": {
        -                          "type": "number"
        -                        },
        -                        "tier_slug": {
        -                          "enum": [
        -                            "7_day_pass",
        -                            "solo",
        -                            "studio",
        -                            "practice"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "unlock_summary": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "tier_slug",
        -                        "display_name",
        -                        "price_local",
        -                        "currency",
        -                        "billing",
        -                        "unlock_summary"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "current_tier": {
        -                    "const": "free",
        -                    "default": "free",
        -                    "type": "string"
        -                  },
        -                  "pass_credit": {
        -                    "anyOf": [
        -                      {
        -                        "additionalProperties": false,
        -                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        -                        "properties": {
        -                          "amount_local": {
        -                            "type": "number"
        -                          },
        -                          "applies_to": {
        -                            "const": "solo_first_month",
        -                            "default": "solo_first_month",
        -                            "type": "string"
        -                          },
        -                          "currency": {
        -                            "type": "string"
        -                          },
        -                          "redeemable_until": {
        -                            "type": "string"
        -                          }
        -                        },
        -                        "required": [
        -                          "amount_local",
        -                          "currency",
        -                          "redeemable_until"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "pricing_url": {
        -                    "default": "https://civilquants.com/pricing",
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "available_tiers"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tos_url": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "upgrade_hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "warranty_disclaimer": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          }
        -        },
        -        "required": [
        -          "request_id",
        -          "issued_at",
        -          "tier"
        -        ],
        -        "type": "object"
        -      },
        -      "data": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "properties": {
        -              "assembly_ids": {
        -                "items": {
        -                  "type": "string"
        -                },
        -                "type": "array"
        -              },
        -              "project_id": {
        -                "type": "string"
        -              }
        -            },
        -            "required": [
        -              "project_id",
        -              "assembly_ids"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      },
        -      "error": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        -            "properties": {
        -              "code": {
        -                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        -                "enum": [
        -                  "RATE_LIMIT_EXCEEDED",
        -                  "TIER_INSUFFICIENT",
        -                  "INVALID_INPUT",
        -                  "SCHEMA_VERSION_MISMATCH",
        -                  "SCHEMA_INVARIANT_VIOLATION",
        -                  "UPSTREAM_TIMEOUT",
        -                  "BACKEND_FAILURE",
        -                  "IP_BLOCKED",
        -                  "RESOURCE_NOT_FOUND",
        -                  "RENDER_FAILURE",
        -                  "OCR_LOW_CONFIDENCE",
        -                  "MANUAL_REVIEW_REQUIRED",
        -                  "ACCEPTANCE_REQUIRED",
        -                  "INVALID_TOKEN"
        -                ],
        -                "type": "string"
        -              },
        -              "details": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "message": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "recoverable": {
        -                "type": "boolean"
        -              },
        -              "retry_after_seconds": {
        -                "anyOf": [
        -                  {
        -                    "minimum": 0,
        -                    "type": "integer"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              }
        -            },
        -            "required": [
        -              "code",
        -              "message",
        -              "recoverable"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      }
        -    },
        -    "required": [
        -      "_meta"
        -    ],
        -    "type": "object"
        -  },
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "_meta": {
        -        "additionalProperties": false,
        -        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        -        "properties": {
        -          "deliverables": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        -                "properties": {
        -                  "docx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "dxf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "expires_at": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  },
        -                  "pdf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "xlsx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "expires_at"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "document_id": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "issued_at": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "rate_limit_remaining": {
        -            "anyOf": [
        -              {
        -                "minimum": 0,
        -                "type": "integer"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "request_id": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "schema_version": {
        -            "const": "1.0.0",
        -            "default": "1.0.0",
        -            "type": "string"
        -          },
        -          "scope_boundary": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        -                "properties": {
        -                  "not_in_scope": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "produced": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "recommended_companions": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "type": "string"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "produced",
        -                  "not_in_scope"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tier": {
        -            "enum": [
        -              "free",
        -              "paid"
        -            ],
        -            "type": "string"
        -          },
        -          "tier_upgrade": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        -                "properties": {
        -                  "available_tiers": {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        -                      "properties": {
        -                        "billing": {
        -                          "enum": [
        -                            "one_off",
        -                            "monthly",
        -                            "annual"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "currency": {
        -                          "enum": [
        -                            "GBP",
        -                            "SGD",
        -                            "EUR",
        -                            "USD",
        -                            "CAD",
        -                            "AUD",
        -                            "NZD",
        -                            "MYR"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "display_name": {
        -                          "type": "string"
        -                        },
        -                        "price_local": {
        -                          "type": "number"
        -                        },
        -                        "tier_slug": {
        -                          "enum": [
        -                            "7_day_pass",
        -                            "solo",
        -                            "studio",
        -                            "practice"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "unlock_summary": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "tier_slug",
        -                        "display_name",
        -                        "price_local",
        -                        "currency",
        -                        "billing",
        -                        "unlock_summary"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "current_tier": {
        -                    "const": "free",
        -                    "default": "free",
        -                    "type": "string"
        -                  },
        -                  "pass_credit": {
        -                    "anyOf": [
        -                      {
        -                        "additionalProperties": false,
        -                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        -                        "properties": {
        -                          "amount_local": {
        -                            "type": "number"
        -                          },
        -                          "applies_to": {
        -                            "const": "solo_first_month",
        -                            "default": "solo_first_month",
        -                            "type": "string"
        -                          },
        -                          "currency": {
        -                            "type": "string"
        -                          },
        -                          "redeemable_until": {
        -                            "type": "string"
        -                          }
        -                        },
        -                        "required": [
        -                          "amount_local",
        -                          "currency",
        -                          "redeemable_until"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "pricing_url": {
        -                    "default": "https://civilquants.com/pricing",
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "available_tiers"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tos_url": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "upgrade_hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "warranty_disclaimer": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          }
        -        },
        -        "required": [
        -          "request_id",
        -          "issued_at",
        -          "tier"
        -        ],
        -        "type": "object"
        -      },
        -      "data": {
        -        "default": null,
        -        "title": "Data"
        -      },
        -      "error": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        -            "properties": {
        -              "code": {
        -                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        -                "enum": [
        -                  "RATE_LIMIT_EXCEEDED",
        -                  "TIER_INSUFFICIENT",
        -                  "INVALID_INPUT",
        -                  "SCHEMA_VERSION_MISMATCH",
        -                  "SCHEMA_INVARIANT_VIOLATION",
        -                  "UPSTREAM_TIMEOUT",
        -                  "BACKEND_FAILURE",
        -                  "IP_BLOCKED",
        -                  "RESOURCE_NOT_FOUND",
        -                  "RENDER_FAILURE",
        -                  "OCR_LOW_CONFIDENCE",
        -                  "MANUAL_REVIEW_REQUIRED",
        -                  "ACCEPTANCE_REQUIRED",
        -                  "INVALID_TOKEN"
        -                ],
        -                "type": "string"
        -              },
        -              "details": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "message": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "recoverable": {
        -                "type": "boolean"
        -              },
        -              "retry_after_seconds": {
        -                "anyOf": [
        -                  {
        -                    "minimum": 0,
        -                    "type": "integer"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              }
        -            },
        -            "required": [
        -              "code",
        -              "message",
        -              "recoverable"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      }
        -    },
        -    "required": [
        -      "_meta"
        -    ],
        -    "type": "object"
        -  }
        -]New value: +[
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "_meta": {
        +        "additionalProperties": false,
        +        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        +        "properties": {
        +          "deliverables": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        +                "properties": {
        +                  "docx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "dxf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "expires_at": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  },
        +                  "pdf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "xlsx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "expires_at"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "document_id": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "issued_at": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "rate_limit_remaining": {
        +            "anyOf": [
        +              {
        +                "minimum": 0,
        +                "type": "integer"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "request_id": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "schema_version": {
        +            "const": "1.0.0",
        +            "default": "1.0.0",
        +            "type": "string"
        +          },
        +          "scope_boundary": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        +                "properties": {
        +                  "not_in_scope": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "produced": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "recommended_companions": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "type": "string"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "produced",
        +                  "not_in_scope"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tier": {
        +            "enum": [
        +              "free",
        +              "paid"
        +            ],
        +            "type": "string"
        +          },
        +          "tier_upgrade": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        +                "properties": {
        +                  "available_tiers": {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        +                      "properties": {
        +                        "billing": {
        +                          "enum": [
        +                            "one_off",
        +                            "monthly",
        +                            "annual"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "currency": {
        +                          "enum": [
        +                            "GBP",
        +                            "SGD",
        +                            "EUR",
        +                            "USD",
        +                            "CAD",
        +                            "AUD",
        +                            "NZD",
        +                            "MYR"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "display_name": {
        +                          "type": "string"
        +                        },
        +                        "price_local": {
        +                          "type": "number"
        +                        },
        +                        "tier_slug": {
        +                          "enum": [
        +                            "7_day_pass",
        +                            "solo",
        +                            "studio",
        +                            "practice"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "unlock_summary": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "tier_slug",
        +                        "display_name",
        +                        "price_local",
        +                        "currency",
        +                        "billing",
        +                        "unlock_summary"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "current_tier": {
        +                    "const": "free",
        +                    "default": "free",
        +                    "type": "string"
        +                  },
        +                  "pass_credit": {
        +                    "anyOf": [
        +                      {
        +                        "additionalProperties": false,
        +                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        +                        "properties": {
        +                          "amount_local": {
        +                            "type": "number"
        +                          },
        +                          "applies_to": {
        +                            "const": "solo_first_month",
        +                            "default": "solo_first_month",
        +                            "type": "string"
        +                          },
        +                          "currency": {
        +                            "type": "string"
        +                          },
        +                          "redeemable_until": {
        +                            "type": "string"
        +                          }
        +                        },
        +                        "required": [
        +                          "amount_local",
        +                          "currency",
        +                          "redeemable_until"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "pricing_url": {
        +                    "default": "https://civilquants.com/pricing",
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "available_tiers"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tos_url": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "upgrade_hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "warranty_disclaimer": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          }
        +        },
        +        "required": [
        +          "request_id",
        +          "issued_at",
        +          "tier"
        +        ],
        +        "type": "object"
        +      },
        +      "data": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "properties": {
        +              "assembly_ids": {
        +                "items": {
        +                  "type": "string"
        +                },
        +                "type": "array"
        +              },
        +              "project_id": {
        +                "type": "string"
        +              }
        +            },
        +            "required": [
        +              "project_id",
        +              "assembly_ids"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      },
        +      "error": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        +            "properties": {
        +              "code": {
        +                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        +                "enum": [
        +                  "RATE_LIMIT_EXCEEDED",
        +                  "TIER_INSUFFICIENT",
        +                  "INVALID_INPUT",
        +                  "SCHEMA_VERSION_MISMATCH",
        +                  "SCHEMA_INVARIANT_VIOLATION",
        +                  "UPSTREAM_TIMEOUT",
        +                  "BACKEND_FAILURE",
        +                  "IP_BLOCKED",
        +                  "RESOURCE_NOT_FOUND",
        +                  "RENDER_FAILURE",
        +                  "OCR_LOW_CONFIDENCE",
        +                  "MANUAL_REVIEW_REQUIRED",
        +                  "ACCEPTANCE_REQUIRED",
        +                  "INVALID_TOKEN"
        +                ],
        +                "type": "string"
        +              },
        +              "details": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "message": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "recoverable": {
        +                "type": "boolean"
        +              },
        +              "retry_after_seconds": {
        +                "anyOf": [
        +                  {
        +                    "minimum": 0,
        +                    "type": "integer"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              }
        +            },
        +            "required": [
        +              "code",
        +              "message",
        +              "recoverable"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      }
        +    },
        +    "required": [
        +      "_meta"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "_meta": {
        +        "additionalProperties": false,
        +        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        +        "properties": {
        +          "deliverables": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        +                "properties": {
        +                  "docx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "dxf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "expires_at": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  },
        +                  "pdf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "xlsx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "expires_at"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "document_id": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "issued_at": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "rate_limit_remaining": {
        +            "anyOf": [
        +              {
        +                "minimum": 0,
        +                "type": "integer"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "request_id": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "schema_version": {
        +            "const": "1.0.0",
        +            "default": "1.0.0",
        +            "type": "string"
        +          },
        +          "scope_boundary": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        +                "properties": {
        +                  "not_in_scope": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "produced": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "recommended_companions": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "type": "string"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "produced",
        +                  "not_in_scope"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tier": {
        +            "enum": [
        +              "free",
        +              "paid"
        +            ],
        +            "type": "string"
        +          },
        +          "tier_upgrade": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        +                "properties": {
        +                  "available_tiers": {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        +                      "properties": {
        +                        "billing": {
        +                          "enum": [
        +                            "one_off",
        +                            "monthly",
        +                            "annual"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "currency": {
        +                          "enum": [
        +                            "GBP",
        +                            "SGD",
        +                            "EUR",
        +                            "USD",
        +                            "CAD",
        +                            "AUD",
        +                            "NZD",
        +                            "MYR"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "display_name": {
        +                          "type": "string"
        +                        },
        +                        "price_local": {
        +                          "type": "number"
        +                        },
        +                        "tier_slug": {
        +                          "enum": [
        +                            "7_day_pass",
        +                            "solo",
        +                            "studio",
        +                            "practice"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "unlock_summary": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "tier_slug",
        +                        "display_name",
        +                        "price_local",
        +                        "currency",
        +                        "billing",
        +                        "unlock_summary"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "current_tier": {
        +                    "const": "free",
        +                    "default": "free",
        +                    "type": "string"
        +                  },
        +                  "pass_credit": {
        +                    "anyOf": [
        +                      {
        +                        "additionalProperties": false,
        +                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        +                        "properties": {
        +                          "amount_local": {
        +                            "type": "number"
        +                          },
        +                          "applies_to": {
        +                            "const": "solo_first_month",
        +                            "default": "solo_first_month",
        +                            "type": "string"
        +                          },
        +                          "currency": {
        +                            "type": "string"
        +                          },
        +                          "redeemable_until": {
        +                            "type": "string"
        +                          }
        +                        },
        +                        "required": [
        +                          "amount_local",
        +                          "currency",
        +                          "redeemable_until"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "pricing_url": {
        +                    "default": "https://civilquants.com/pricing",
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "available_tiers"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tos_url": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "upgrade_hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "warranty_disclaimer": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          }
        +        },
        +        "required": [
        +          "request_id",
        +          "issued_at",
        +          "tier"
        +        ],
        +        "type": "object"
        +      },
        +      "data": {
        +        "default": null,
        +        "title": "Data"
        +      },
        +      "error": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        +            "properties": {
        +              "code": {
        +                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        +                "enum": [
        +                  "RATE_LIMIT_EXCEEDED",
        +                  "TIER_INSUFFICIENT",
        +                  "INVALID_INPUT",
        +                  "SCHEMA_VERSION_MISMATCH",
        +                  "SCHEMA_INVARIANT_VIOLATION",
        +                  "UPSTREAM_TIMEOUT",
        +                  "BACKEND_FAILURE",
        +                  "IP_BLOCKED",
        +                  "RESOURCE_NOT_FOUND",
        +                  "RENDER_FAILURE",
        +                  "OCR_LOW_CONFIDENCE",
        +                  "MANUAL_REVIEW_REQUIRED",
        +                  "ACCEPTANCE_REQUIRED",
        +                  "INVALID_TOKEN"
        +                ],
        +                "type": "string"
        +              },
        +              "details": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "message": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "recoverable": {
        +                "type": "boolean"
        +              },
        +              "retry_after_seconds": {
        +                "anyOf": [
        +                  {
        +                    "minimum": 0,
        +                    "type": "integer"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              }
        +            },
        +            "required": [
        +              "code",
        +              "message",
        +              "recoverable"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      }
        +    },
        +    "required": [
        +      "_meta"
        +    ],
        +    "type": "object"
        +  }
        +]
  11. 47 tool updates
    • Changedcompute_anchored_wall1 field changed
      • changedOutput schema / properties / result / anyOf
        Previous value: -[
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "_meta": {
        -        "additionalProperties": false,
        -        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        -        "properties": {
        -          "deliverables": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        -                "properties": {
        -                  "docx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "dxf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "expires_at": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  },
        -                  "pdf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "xlsx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "expires_at"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "document_id": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "issued_at": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "rate_limit_remaining": {
        -            "anyOf": [
        -              {
        -                "minimum": 0,
        -                "type": "integer"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "request_id": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "schema_version": {
        -            "const": "1.0.0",
        -            "default": "1.0.0",
        -            "type": "string"
        -          },
        -          "scope_boundary": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        -                "properties": {
        -                  "not_in_scope": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "produced": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "recommended_companions": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "type": "string"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "produced",
        -                  "not_in_scope"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tier": {
        -            "enum": [
        -              "free",
        -              "paid"
        -            ],
        -            "type": "string"
        -          },
        -          "tier_upgrade": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        -                "properties": {
        -                  "available_tiers": {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        -                      "properties": {
        -                        "billing": {
        -                          "enum": [
        -                            "one_off",
        -                            "monthly",
        -                            "annual"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "currency": {
        -                          "enum": [
        -                            "GBP",
        -                            "SGD",
        -                            "EUR",
        -                            "USD",
        -                            "CAD",
        -                            "AUD",
        -                            "NZD",
        -                            "MYR"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "display_name": {
        -                          "type": "string"
        -                        },
        -                        "price_local": {
        -                          "type": "number"
        -                        },
        -                        "tier_slug": {
        -                          "enum": [
        -                            "7_day_pass",
        -                            "solo",
        -                            "studio",
        -                            "practice"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "unlock_summary": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "tier_slug",
        -                        "display_name",
        -                        "price_local",
        -                        "currency",
        -                        "billing",
        -                        "unlock_summary"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "current_tier": {
        -                    "const": "free",
        -                    "default": "free",
        -                    "type": "string"
        -                  },
        -                  "pass_credit": {
        -                    "anyOf": [
        -                      {
        -                        "additionalProperties": false,
        -                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        -                        "properties": {
        -                          "amount_local": {
        -                            "type": "number"
        -                          },
        -                          "applies_to": {
        -                            "const": "solo_first_month",
        -                            "default": "solo_first_month",
        -                            "type": "string"
        -                          },
        -                          "currency": {
        -                            "type": "string"
        -                          },
        -                          "redeemable_until": {
        -                            "type": "string"
        -                          }
        -                        },
        -                        "required": [
        -                          "amount_local",
        -                          "currency",
        -                          "redeemable_until"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "pricing_url": {
        -                    "default": "https://civilquants.com/pricing",
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "available_tiers"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tos_url": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "upgrade_hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "warranty_disclaimer": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          }
        -        },
        -        "required": [
        -          "request_id",
        -          "issued_at",
        -          "tier"
        -        ],
        -        "type": "object"
        -      },
        -      "data": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Schema § 1.1 — the typed payload returned inside `MCPResponse[ComputeResult]`.\n\nFree-tier responses MUST omit `drawings` and `audit_trail` (the bridge\nenforces this); paid-tier responses populate both. `text_summary` is\nbounded to 2000 chars — keeps the LLM-facing summary token-cheap and\nforces longer narrative into BoQ row descriptions where it belongs.",
        -            "properties": {
        -              "assembly_slug": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "audit_trail": {
        -                "anyOf": [
        -                  {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.7 — paid-tier audit-trail entry.\n\nOne entry per BoQ row; `boq_row_index` ties to the row position in\n`ComputeResult.boq_rows`. `derivation` is the human-readable formula\nwalk-through; `formula` is the optional formal expression.",
        -                      "properties": {
        -                        "boq_row_index": {
        -                          "minimum": 0,
        -                          "type": "integer"
        -                        },
        -                        "derivation": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "formula": {
        -                          "anyOf": [
        -                            {
        -                              "type": "string"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ],
        -                          "default": null
        -                        },
        -                        "id": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "parameters_referenced": {
        -                          "items": {
        -                            "type": "string"
        -                          },
        -                          "type": "array"
        -                        }
        -                      },
        -                      "required": [
        -                        "id",
        -                        "boq_row_index",
        -                        "derivation"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "boq_rows": {
        -                "items": {
        -                  "additionalProperties": false,
        -                  "description": "Schema § 1.3 — a single bill row in the requested standard's format.\n\n`description` is the non-verbatim functional description per spec § 13.9 /\n§ 15 invariant — NEVER reproduces a standard's verbatim clause text.\n`rate` / `amount` ship null because rates are commodity data the customer\nowns; the engine's job is the measurement, not the pricing.",
        -                  "properties": {
        -                    "amount": {
        -                      "anyOf": [
        -                        {
        -                          "type": "number"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "attribution": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "audit_id": {
        -                      "anyOf": [
        -                        {
        -                          "type": "string"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "description": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "quantity": {
        -                      "minimum": 0,
        -                      "type": "number"
        -                    },
        -                    "rate": {
        -                      "anyOf": [
        -                        {
        -                          "type": "number"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "unit": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "work_section": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    }
        -                  },
        -                  "required": [
        -                    "work_section",
        -                    "description",
        -                    "quantity",
        -                    "unit",
        -                    "attribution"
        -                  ],
        -                  "type": "object"
        -                },
        -                "type": "array"
        -              },
        -              "drawings": {
        -                "anyOf": [
        -                  {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.6 — paid-tier drawing artefact pointer.\n\n`url` is an R2-signed URL; expiry is carried in `_meta.deliverables.expires_at`\non the envelope (not duplicated here). `layers` is DXF-only; PDF/SVG\ncallers omit it.",
        -                      "properties": {
        -                        "drawing_type": {
        -                          "enum": [
        -                            "section",
        -                            "plan",
        -                            "elevation",
        -                            "isometric",
        -                            "detail"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "format": {
        -                          "enum": [
        -                            "DXF",
        -                            "PDF",
        -                            "SVG"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "layers": {
        -                          "anyOf": [
        -                            {
        -                              "items": {
        -                                "type": "string"
        -                              },
        -                              "type": "array"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ],
        -                          "default": null
        -                        },
        -                        "scale": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "sheet_size": {
        -                          "enum": [
        -                            "A1",
        -                            "A2",
        -                            "A3",
        -                            "A4"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "url": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "drawing_type",
        -                        "format",
        -                        "url",
        -                        "sheet_size",
        -                        "scale"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "parameters_used": {
        -                "additionalProperties": false,
        -                "description": "Schema § 1.2 — the parameter snapshot the engine actually used.\n\nSplits user-supplied values from engine defaults so customers can see\nwhich numbers came from them and which the engine filled in. Every\ndefaulted parameter SHOULD have a corresponding entry in `assumptions`\n— the bridge layer enforces this when wrapping engine output.",
        -                "properties": {
        -                  "assumptions": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "engine_defaults": {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  "resolved_from_description": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "additionalProperties": false,
        -                          "description": "Schema § 1.2 — a parameter resolved by the forgiving-input layer.\n\nPopulated by the Track B-Forgiving Haiku-4.5 resolution pass; until that\nlayer lands, instances are constructed only by tests. `source` distinguishes\nthe resolution path so customers can audit which fields were inferred.",
        -                          "properties": {
        -                            "confidence": {
        -                              "anyOf": [
        -                                {
        -                                  "enum": [
        -                                    "high",
        -                                    "medium",
        -                                    "low"
        -                                  ],
        -                                  "type": "string"
        -                                },
        -                                {
        -                                  "type": "null"
        -                                }
        -                              ],
        -                              "default": null
        -                            },
        -                            "field_name": {
        -                              "minLength": 1,
        -                              "type": "string"
        -                            },
        -                            "resolved_value": {},
        -                            "source": {
        -                              "enum": [
        -                                "description_field",
        -                                "haiku_resolution",
        -                                "engine_default"
        -                              ],
        -                              "type": "string"
        -                            }
        -                          },
        -                          "required": [
        -                            "field_name",
        -                            "resolved_value",
        -                            "source"
        -                          ],
        -                          "type": "object"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "user_supplied": {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  }
        -                },
        -                "type": "object"
        -              },
        -              "standard": {
        -                "enum": [
        -                  "CESMM4",
        -                  "NRM2",
        -                  "SMM7",
        -                  "MMHW"
        -                ],
        -                "type": "string"
        -              },
        -              "text_summary": {
        -                "maxLength": 2000,
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "totals_summary": {
        -                "additionalProperties": false,
        -                "description": "Schema § 1.4 — totals_summary as a typed wrapper around the free-form dict.\n\nWire shape is a flat object (`{\"concrete_m3\": {...}, \"rebar_t\": {...}}`).\nWe model it as `RootModel`-equivalent via `model_config(extra=\"allow\")`\n+ a single `__root__`-style `entries` dict. Pydantic v2 recommends\n`RootModel` for free-form roots; using a wrapper class keeps the import\nsurface uniform with the rest of this module.",
        -                "properties": {
        -                  "entries": {
        -                    "additionalProperties": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.4 — single material/work-class total entry.",
        -                      "properties": {
        -                        "quantity": {
        -                          "minimum": 0,
        -                          "type": "number"
        -                        },
        -                        "unit": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "quantity",
        -                        "unit"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "object"
        -                  }
        -                },
        -                "type": "object"
        -              }
        -            },
        -            "required": [
        -              "assembly_slug",
        -              "standard",
        -              "parameters_used",
        -              "boq_rows",
        -              "totals_summary",
        -              "text_summary"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      },
        -      "error": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        -            "properties": {
        -              "code": {
        -                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        -                "enum": [
        -                  "RATE_LIMIT_EXCEEDED",
        -                  "TIER_INSUFFICIENT",
        -                  "INVALID_INPUT",
        -                  "SCHEMA_VERSION_MISMATCH",
        -                  "SCHEMA_INVARIANT_VIOLATION",
        -                  "UPSTREAM_TIMEOUT",
        -                  "BACKEND_FAILURE",
        -                  "IP_BLOCKED",
        -                  "RESOURCE_NOT_FOUND",
        -                  "RENDER_FAILURE",
        -                  "OCR_LOW_CONFIDENCE",
        -                  "MANUAL_REVIEW_REQUIRED",
        -                  "ACCEPTANCE_REQUIRED",
        -                  "INVALID_TOKEN"
        -                ],
        -                "type": "string"
        -              },
        -              "details": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "message": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "recoverable": {
        -                "type": "boolean"
        -              },
        -              "retry_after_seconds": {
        -                "anyOf": [
        -                  {
        -                    "minimum": 0,
        -                    "type": "integer"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              }
        -            },
        -            "required": [
        -              "code",
        -              "message",
        -              "recoverable"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      }
        -    },
        -    "required": [
        -      "_meta"
        -    ],
        -    "type": "object"
        -  },
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "_meta": {
        -        "additionalProperties": false,
        -        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        -        "properties": {
        -          "deliverables": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        -                "properties": {
        -                  "docx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "dxf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "expires_at": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  },
        -                  "pdf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "xlsx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "expires_at"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "document_id": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "issued_at": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "rate_limit_remaining": {
        -            "anyOf": [
        -              {
        -                "minimum": 0,
        -                "type": "integer"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "request_id": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "schema_version": {
        -            "const": "1.0.0",
        -            "default": "1.0.0",
        -            "type": "string"
        -          },
        -          "scope_boundary": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        -                "properties": {
        -                  "not_in_scope": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "produced": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "recommended_companions": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "type": "string"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "produced",
        -                  "not_in_scope"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tier": {
        -            "enum": [
        -              "free",
        -              "paid"
        -            ],
        -            "type": "string"
        -          },
        -          "tier_upgrade": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        -                "properties": {
        -                  "available_tiers": {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        -                      "properties": {
        -                        "billing": {
        -                          "enum": [
        -                            "one_off",
        -                            "monthly",
        -                            "annual"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "currency": {
        -                          "enum": [
        -                            "GBP",
        -                            "SGD",
        -                            "EUR",
        -                            "USD",
        -                            "CAD",
        -                            "AUD",
        -                            "NZD",
        -                            "MYR"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "display_name": {
        -                          "type": "string"
        -                        },
        -                        "price_local": {
        -                          "type": "number"
        -                        },
        -                        "tier_slug": {
        -                          "enum": [
        -                            "7_day_pass",
        -                            "solo",
        -                            "studio",
        -                            "practice"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "unlock_summary": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "tier_slug",
        -                        "display_name",
        -                        "price_local",
        -                        "currency",
        -                        "billing",
        -                        "unlock_summary"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "current_tier": {
        -                    "const": "free",
        -                    "default": "free",
        -                    "type": "string"
        -                  },
        -                  "pass_credit": {
        -                    "anyOf": [
        -                      {
        -                        "additionalProperties": false,
        -                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        -                        "properties": {
        -                          "amount_local": {
        -                            "type": "number"
        -                          },
        -                          "applies_to": {
        -                            "const": "solo_first_month",
        -                            "default": "solo_first_month",
        -                            "type": "string"
        -                          },
        -                          "currency": {
        -                            "type": "string"
        -                          },
        -                          "redeemable_until": {
        -                            "type": "string"
        -                          }
        -                        },
        -                        "required": [
        -                          "amount_local",
        -                          "currency",
        -                          "redeemable_until"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "pricing_url": {
        -                    "default": "https://civilquants.com/pricing",
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "available_tiers"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tos_url": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "upgrade_hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "warranty_disclaimer": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          }
        -        },
        -        "required": [
        -          "request_id",
        -          "issued_at",
        -          "tier"
        -        ],
        -        "type": "object"
        -      },
        -      "data": {
        -        "default": null,
        -        "title": "Data"
        -      },
        -      "error": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        -            "properties": {
        -              "code": {
        -                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        -                "enum": [
        -                  "RATE_LIMIT_EXCEEDED",
        -                  "TIER_INSUFFICIENT",
        -                  "INVALID_INPUT",
        -                  "SCHEMA_VERSION_MISMATCH",
        -                  "SCHEMA_INVARIANT_VIOLATION",
        -                  "UPSTREAM_TIMEOUT",
        -                  "BACKEND_FAILURE",
        -                  "IP_BLOCKED",
        -                  "RESOURCE_NOT_FOUND",
        -                  "RENDER_FAILURE",
        -                  "OCR_LOW_CONFIDENCE",
        -                  "MANUAL_REVIEW_REQUIRED",
        -                  "ACCEPTANCE_REQUIRED",
        -                  "INVALID_TOKEN"
        -                ],
        -                "type": "string"
        -              },
        -              "details": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "message": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "recoverable": {
        -                "type": "boolean"
        -              },
        -              "retry_after_seconds": {
        -                "anyOf": [
        -                  {
        -                    "minimum": 0,
        -                    "type": "integer"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              }
        -            },
        -            "required": [
        -              "code",
        -              "message",
        -              "recoverable"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      }
        -    },
        -    "required": [
        -      "_meta"
        -    ],
        -    "type": "object"
        -  }
        -]New value: +[
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "_meta": {
        +        "additionalProperties": false,
        +        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        +        "properties": {
        +          "deliverables": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        +                "properties": {
        +                  "docx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "dxf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "expires_at": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  },
        +                  "pdf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "xlsx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "expires_at"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "document_id": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "issued_at": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "rate_limit_remaining": {
        +            "anyOf": [
        +              {
        +                "minimum": 0,
        +                "type": "integer"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "request_id": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "schema_version": {
        +            "const": "1.0.0",
        +            "default": "1.0.0",
        +            "type": "string"
        +          },
        +          "scope_boundary": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        +                "properties": {
        +                  "not_in_scope": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "produced": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "recommended_companions": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "type": "string"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "produced",
        +                  "not_in_scope"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tier": {
        +            "enum": [
        +              "free",
        +              "paid"
        +            ],
        +            "type": "string"
        +          },
        +          "tier_upgrade": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        +                "properties": {
        +                  "available_tiers": {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        +                      "properties": {
        +                        "billing": {
        +                          "enum": [
        +                            "one_off",
        +                            "monthly",
        +                            "annual"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "currency": {
        +                          "enum": [
        +                            "GBP",
        +                            "SGD",
        +                            "EUR",
        +                            "USD",
        +                            "CAD",
        +                            "AUD",
        +                            "NZD",
        +                            "MYR"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "display_name": {
        +                          "type": "string"
        +                        },
        +                        "price_local": {
        +                          "type": "number"
        +                        },
        +                        "tier_slug": {
        +                          "enum": [
        +                            "7_day_pass",
        +                            "solo",
        +                            "studio",
        +                            "practice"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "unlock_summary": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "tier_slug",
        +                        "display_name",
        +                        "price_local",
        +                        "currency",
        +                        "billing",
        +                        "unlock_summary"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "current_tier": {
        +                    "const": "free",
        +                    "default": "free",
        +                    "type": "string"
        +                  },
        +                  "pass_credit": {
        +                    "anyOf": [
        +                      {
        +                        "additionalProperties": false,
        +                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        +                        "properties": {
        +                          "amount_local": {
        +                            "type": "number"
        +                          },
        +                          "applies_to": {
        +                            "const": "solo_first_month",
        +                            "default": "solo_first_month",
        +                            "type": "string"
        +                          },
        +                          "currency": {
        +                            "type": "string"
        +                          },
        +                          "redeemable_until": {
        +                            "type": "string"
        +                          }
        +                        },
        +                        "required": [
        +                          "amount_local",
        +                          "currency",
        +                          "redeemable_until"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "pricing_url": {
        +                    "default": "https://civilquants.com/pricing",
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "available_tiers"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tos_url": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "upgrade_hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "warranty_disclaimer": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          }
        +        },
        +        "required": [
        +          "request_id",
        +          "issued_at",
        +          "tier"
        +        ],
        +        "type": "object"
        +      },
        +      "data": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Schema § 1.1 — the typed payload returned inside `MCPResponse[ComputeResult]`.\n\nFree-tier responses MUST omit `drawings` and `audit_trail` (the bridge\nenforces this); paid-tier responses populate both. `text_summary` is\nbounded to 2000 chars — keeps the LLM-facing summary token-cheap and\nforces longer narrative into BoQ row descriptions where it belongs.\n`warnings` is the non-fatal geometry advisory list (both tiers).",
        +            "properties": {
        +              "assembly_slug": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "audit_trail": {
        +                "anyOf": [
        +                  {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.7 — paid-tier audit-trail entry.\n\nOne entry per BoQ row; `boq_row_index` ties to the row position in\n`ComputeResult.boq_rows`. `derivation` is the human-readable formula\nwalk-through; `formula` is the optional formal expression.",
        +                      "properties": {
        +                        "boq_row_index": {
        +                          "minimum": 0,
        +                          "type": "integer"
        +                        },
        +                        "derivation": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "formula": {
        +                          "anyOf": [
        +                            {
        +                              "type": "string"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ],
        +                          "default": null
        +                        },
        +                        "id": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "parameters_referenced": {
        +                          "items": {
        +                            "type": "string"
        +                          },
        +                          "type": "array"
        +                        }
        +                      },
        +                      "required": [
        +                        "id",
        +                        "boq_row_index",
        +                        "derivation"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "boq_rows": {
        +                "items": {
        +                  "additionalProperties": false,
        +                  "description": "Schema § 1.3 — a single bill row in the requested standard's format.\n\n`description` is the non-verbatim functional description per spec § 13.9 /\n§ 15 invariant — NEVER reproduces a standard's verbatim clause text.\n`rate` / `amount` ship null because rates are commodity data the customer\nowns; the engine's job is the measurement, not the pricing.",
        +                  "properties": {
        +                    "amount": {
        +                      "anyOf": [
        +                        {
        +                          "type": "number"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "attribution": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "audit_id": {
        +                      "anyOf": [
        +                        {
        +                          "type": "string"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "description": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "quantity": {
        +                      "minimum": 0,
        +                      "type": "number"
        +                    },
        +                    "rate": {
        +                      "anyOf": [
        +                        {
        +                          "type": "number"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "unit": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "work_section": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    }
        +                  },
        +                  "required": [
        +                    "work_section",
        +                    "description",
        +                    "quantity",
        +                    "unit",
        +                    "attribution"
        +                  ],
        +                  "type": "object"
        +                },
        +                "type": "array"
        +              },
        +              "drawings": {
        +                "anyOf": [
        +                  {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.6 — paid-tier drawing artefact pointer.\n\n`url` is an R2-signed URL; expiry is carried in `_meta.deliverables.expires_at`\non the envelope (not duplicated here). `layers` is DXF-only; PDF/SVG\ncallers omit it.",
        +                      "properties": {
        +                        "drawing_type": {
        +                          "enum": [
        +                            "section",
        +                            "plan",
        +                            "elevation",
        +                            "isometric",
        +                            "detail"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "format": {
        +                          "enum": [
        +                            "DXF",
        +                            "PDF",
        +                            "SVG"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "layers": {
        +                          "anyOf": [
        +                            {
        +                              "items": {
        +                                "type": "string"
        +                              },
        +                              "type": "array"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ],
        +                          "default": null
        +                        },
        +                        "scale": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "sheet_size": {
        +                          "enum": [
        +                            "A1",
        +                            "A2",
        +                            "A3",
        +                            "A4"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "url": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "drawing_type",
        +                        "format",
        +                        "url",
        +                        "sheet_size",
        +                        "scale"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "parameters_used": {
        +                "additionalProperties": false,
        +                "description": "Schema § 1.2 — the parameter snapshot the engine actually used.\n\nSplits user-supplied values from engine defaults so customers can see\nwhich numbers came from them and which the engine filled in. Every\ndefaulted parameter SHOULD have a corresponding entry in `assumptions`\n— the bridge layer enforces this when wrapping engine output.",
        +                "properties": {
        +                  "assumptions": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "engine_defaults": {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  "resolved_from_description": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "additionalProperties": false,
        +                          "description": "Schema § 1.2 — a parameter resolved by the forgiving-input layer.\n\nPopulated by the Track B-Forgiving Haiku-4.5 resolution pass; until that\nlayer lands, instances are constructed only by tests. `source` distinguishes\nthe resolution path so customers can audit which fields were inferred.",
        +                          "properties": {
        +                            "confidence": {
        +                              "anyOf": [
        +                                {
        +                                  "enum": [
        +                                    "high",
        +                                    "medium",
        +                                    "low"
        +                                  ],
        +                                  "type": "string"
        +                                },
        +                                {
        +                                  "type": "null"
        +                                }
        +                              ],
        +                              "default": null
        +                            },
        +                            "field_name": {
        +                              "minLength": 1,
        +                              "type": "string"
        +                            },
        +                            "resolved_value": {},
        +                            "source": {
        +                              "enum": [
        +                                "description_field",
        +                                "haiku_resolution",
        +                                "engine_default"
        +                              ],
        +                              "type": "string"
        +                            }
        +                          },
        +                          "required": [
        +                            "field_name",
        +                            "resolved_value",
        +                            "source"
        +                          ],
        +                          "type": "object"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "user_supplied": {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  }
        +                },
        +                "type": "object"
        +              },
        +              "standard": {
        +                "enum": [
        +                  "CESMM4",
        +                  "NRM2",
        +                  "SMM7",
        +                  "MMHW"
        +                ],
        +                "type": "string"
        +              },
        +              "text_summary": {
        +                "maxLength": 2000,
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "totals_summary": {
        +                "additionalProperties": false,
        +                "description": "Schema § 1.4 — totals_summary as a typed wrapper around the free-form dict.\n\nWire shape is a flat object (`{\"concrete_m3\": {...}, \"rebar_t\": {...}}`).\nWe model it as `RootModel`-equivalent via `model_config(extra=\"allow\")`\n+ a single `__root__`-style `entries` dict. Pydantic v2 recommends\n`RootModel` for free-form roots; using a wrapper class keeps the import\nsurface uniform with the rest of this module.",
        +                "properties": {
        +                  "entries": {
        +                    "additionalProperties": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.4 — single material/work-class total entry.",
        +                      "properties": {
        +                        "quantity": {
        +                          "minimum": 0,
        +                          "type": "number"
        +                        },
        +                        "unit": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "quantity",
        +                        "unit"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "object"
        +                  }
        +                },
        +                "type": "object"
        +              },
        +              "warnings": {
        +                "items": {
        +                  "additionalProperties": false,
        +                  "description": "Schema § 1.8 — a non-fatal geometry advisory (56th-fire T2).\n\nThe wire projection of the engine's `core.GeometryWarning`. Advisory only:\na warning NEVER changes a measured quantity — it flags geometry that is\nvalid but likely a mistake (e.g. a stale dependent-height default). Present\non BOTH tiers — a correctness/safety signal, not a paid feature.",
        +                  "properties": {
        +                    "affected_params": {
        +                      "items": {
        +                        "type": "string"
        +                      },
        +                      "type": "array"
        +                    },
        +                    "code": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "detail": {
        +                      "additionalProperties": {
        +                        "type": "number"
        +                      },
        +                      "type": "object"
        +                    },
        +                    "message": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "severity": {
        +                      "enum": [
        +                        "info",
        +                        "advisory",
        +                        "caution"
        +                      ],
        +                      "type": "string"
        +                    }
        +                  },
        +                  "required": [
        +                    "code",
        +                    "severity",
        +                    "message"
        +                  ],
        +                  "type": "object"
        +                },
        +                "type": "array"
        +              }
        +            },
        +            "required": [
        +              "assembly_slug",
        +              "standard",
        +              "parameters_used",
        +              "boq_rows",
        +              "totals_summary",
        +              "text_summary"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      },
        +      "error": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        +            "properties": {
        +              "code": {
        +                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        +                "enum": [
        +                  "RATE_LIMIT_EXCEEDED",
        +                  "TIER_INSUFFICIENT",
        +                  "INVALID_INPUT",
        +                  "SCHEMA_VERSION_MISMATCH",
        +                  "SCHEMA_INVARIANT_VIOLATION",
        +                  "UPSTREAM_TIMEOUT",
        +                  "BACKEND_FAILURE",
        +                  "IP_BLOCKED",
        +                  "RESOURCE_NOT_FOUND",
        +                  "RENDER_FAILURE",
        +                  "OCR_LOW_CONFIDENCE",
        +                  "MANUAL_REVIEW_REQUIRED",
        +                  "ACCEPTANCE_REQUIRED",
        +                  "INVALID_TOKEN"
        +                ],
        +                "type": "string"
        +              },
        +              "details": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "message": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "recoverable": {
        +                "type": "boolean"
        +              },
        +              "retry_after_seconds": {
        +                "anyOf": [
        +                  {
        +                    "minimum": 0,
        +                    "type": "integer"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              }
        +            },
        +            "required": [
        +              "code",
        +              "message",
        +              "recoverable"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      }
        +    },
        +    "required": [
        +      "_meta"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "_meta": {
        +        "additionalProperties": false,
        +        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        +        "properties": {
        +          "deliverables": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        +                "properties": {
        +                  "docx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "dxf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "expires_at": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  },
        +                  "pdf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "xlsx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "expires_at"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "document_id": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "issued_at": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "rate_limit_remaining": {
        +            "anyOf": [
        +              {
        +                "minimum": 0,
        +                "type": "integer"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "request_id": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "schema_version": {
        +            "const": "1.0.0",
        +            "default": "1.0.0",
        +            "type": "string"
        +          },
        +          "scope_boundary": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        +                "properties": {
        +                  "not_in_scope": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "produced": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "recommended_companions": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "type": "string"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "produced",
        +                  "not_in_scope"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tier": {
        +            "enum": [
        +              "free",
        +              "paid"
        +            ],
        +            "type": "string"
        +          },
        +          "tier_upgrade": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        +                "properties": {
        +                  "available_tiers": {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        +                      "properties": {
        +                        "billing": {
        +                          "enum": [
        +                            "one_off",
        +                            "monthly",
        +                            "annual"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "currency": {
        +                          "enum": [
        +                            "GBP",
        +                            "SGD",
        +                            "EUR",
        +                            "USD",
        +                            "CAD",
        +                            "AUD",
        +                            "NZD",
        +                            "MYR"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "display_name": {
        +                          "type": "string"
        +                        },
        +                        "price_local": {
        +                          "type": "number"
        +                        },
        +                        "tier_slug": {
        +                          "enum": [
        +                            "7_day_pass",
        +                            "solo",
        +                            "studio",
        +                            "practice"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "unlock_summary": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "tier_slug",
        +                        "display_name",
        +                        "price_local",
        +                        "currency",
        +                        "billing",
        +                        "unlock_summary"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "current_tier": {
        +                    "const": "free",
        +                    "default": "free",
        +                    "type": "string"
        +                  },
        +                  "pass_credit": {
        +                    "anyOf": [
        +                      {
        +                        "additionalProperties": false,
        +                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        +                        "properties": {
        +                          "amount_local": {
        +                            "type": "number"
        +                          },
        +                          "applies_to": {
        +                            "const": "solo_first_month",
        +                            "default": "solo_first_month",
        +                            "type": "string"
        +                          },
        +                          "currency": {
        +                            "type": "string"
        +                          },
        +                          "redeemable_until": {
        +                            "type": "string"
        +                          }
        +                        },
        +                        "required": [
        +                          "amount_local",
        +                          "currency",
        +                          "redeemable_until"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "pricing_url": {
        +                    "default": "https://civilquants.com/pricing",
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "available_tiers"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tos_url": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "upgrade_hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "warranty_disclaimer": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          }
        +        },
        +        "required": [
        +          "request_id",
        +          "issued_at",
        +          "tier"
        +        ],
        +        "type": "object"
        +      },
        +      "data": {
        +        "default": null,
        +        "title": "Data"
        +      },
        +      "error": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        +            "properties": {
        +              "code": {
        +                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        +                "enum": [
        +                  "RATE_LIMIT_EXCEEDED",
        +                  "TIER_INSUFFICIENT",
        +                  "INVALID_INPUT",
        +                  "SCHEMA_VERSION_MISMATCH",
        +                  "SCHEMA_INVARIANT_VIOLATION",
        +                  "UPSTREAM_TIMEOUT",
        +                  "BACKEND_FAILURE",
        +                  "IP_BLOCKED",
        +                  "RESOURCE_NOT_FOUND",
        +                  "RENDER_FAILURE",
        +                  "OCR_LOW_CONFIDENCE",
        +                  "MANUAL_REVIEW_REQUIRED",
        +                  "ACCEPTANCE_REQUIRED",
        +                  "INVALID_TOKEN"
        +                ],
        +                "type": "string"
        +              },
        +              "details": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "message": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "recoverable": {
        +                "type": "boolean"
        +              },
        +              "retry_after_seconds": {
        +                "anyOf": [
        +                  {
        +                    "minimum": 0,
        +                    "type": "integer"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              }
        +            },
        +            "required": [
        +              "code",
        +              "message",
        +              "recoverable"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      }
        +    },
        +    "required": [
        +      "_meta"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedcompute_attenuation_tank1 field changed
      • changedOutput schema / properties / result / anyOf
        Previous value: -[
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "_meta": {
        -        "additionalProperties": false,
        -        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        -        "properties": {
        -          "deliverables": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        -                "properties": {
        -                  "docx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "dxf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "expires_at": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  },
        -                  "pdf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "xlsx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "expires_at"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "document_id": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "issued_at": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "rate_limit_remaining": {
        -            "anyOf": [
        -              {
        -                "minimum": 0,
        -                "type": "integer"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "request_id": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "schema_version": {
        -            "const": "1.0.0",
        -            "default": "1.0.0",
        -            "type": "string"
        -          },
        -          "scope_boundary": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        -                "properties": {
        -                  "not_in_scope": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "produced": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "recommended_companions": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "type": "string"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "produced",
        -                  "not_in_scope"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tier": {
        -            "enum": [
        -              "free",
        -              "paid"
        -            ],
        -            "type": "string"
        -          },
        -          "tier_upgrade": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        -                "properties": {
        -                  "available_tiers": {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        -                      "properties": {
        -                        "billing": {
        -                          "enum": [
        -                            "one_off",
        -                            "monthly",
        -                            "annual"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "currency": {
        -                          "enum": [
        -                            "GBP",
        -                            "SGD",
        -                            "EUR",
        -                            "USD",
        -                            "CAD",
        -                            "AUD",
        -                            "NZD",
        -                            "MYR"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "display_name": {
        -                          "type": "string"
        -                        },
        -                        "price_local": {
        -                          "type": "number"
        -                        },
        -                        "tier_slug": {
        -                          "enum": [
        -                            "7_day_pass",
        -                            "solo",
        -                            "studio",
        -                            "practice"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "unlock_summary": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "tier_slug",
        -                        "display_name",
        -                        "price_local",
        -                        "currency",
        -                        "billing",
        -                        "unlock_summary"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "current_tier": {
        -                    "const": "free",
        -                    "default": "free",
        -                    "type": "string"
        -                  },
        -                  "pass_credit": {
        -                    "anyOf": [
        -                      {
        -                        "additionalProperties": false,
        -                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        -                        "properties": {
        -                          "amount_local": {
        -                            "type": "number"
        -                          },
        -                          "applies_to": {
        -                            "const": "solo_first_month",
        -                            "default": "solo_first_month",
        -                            "type": "string"
        -                          },
        -                          "currency": {
        -                            "type": "string"
        -                          },
        -                          "redeemable_until": {
        -                            "type": "string"
        -                          }
        -                        },
        -                        "required": [
        -                          "amount_local",
        -                          "currency",
        -                          "redeemable_until"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "pricing_url": {
        -                    "default": "https://civilquants.com/pricing",
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "available_tiers"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tos_url": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "upgrade_hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "warranty_disclaimer": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          }
        -        },
        -        "required": [
        -          "request_id",
        -          "issued_at",
        -          "tier"
        -        ],
        -        "type": "object"
        -      },
        -      "data": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Schema § 1.1 — the typed payload returned inside `MCPResponse[ComputeResult]`.\n\nFree-tier responses MUST omit `drawings` and `audit_trail` (the bridge\nenforces this); paid-tier responses populate both. `text_summary` is\nbounded to 2000 chars — keeps the LLM-facing summary token-cheap and\nforces longer narrative into BoQ row descriptions where it belongs.",
        -            "properties": {
        -              "assembly_slug": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "audit_trail": {
        -                "anyOf": [
        -                  {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.7 — paid-tier audit-trail entry.\n\nOne entry per BoQ row; `boq_row_index` ties to the row position in\n`ComputeResult.boq_rows`. `derivation` is the human-readable formula\nwalk-through; `formula` is the optional formal expression.",
        -                      "properties": {
        -                        "boq_row_index": {
        -                          "minimum": 0,
        -                          "type": "integer"
        -                        },
        -                        "derivation": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "formula": {
        -                          "anyOf": [
        -                            {
        -                              "type": "string"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ],
        -                          "default": null
        -                        },
        -                        "id": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "parameters_referenced": {
        -                          "items": {
        -                            "type": "string"
        -                          },
        -                          "type": "array"
        -                        }
        -                      },
        -                      "required": [
        -                        "id",
        -                        "boq_row_index",
        -                        "derivation"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "boq_rows": {
        -                "items": {
        -                  "additionalProperties": false,
        -                  "description": "Schema § 1.3 — a single bill row in the requested standard's format.\n\n`description` is the non-verbatim functional description per spec § 13.9 /\n§ 15 invariant — NEVER reproduces a standard's verbatim clause text.\n`rate` / `amount` ship null because rates are commodity data the customer\nowns; the engine's job is the measurement, not the pricing.",
        -                  "properties": {
        -                    "amount": {
        -                      "anyOf": [
        -                        {
        -                          "type": "number"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "attribution": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "audit_id": {
        -                      "anyOf": [
        -                        {
        -                          "type": "string"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "description": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "quantity": {
        -                      "minimum": 0,
        -                      "type": "number"
        -                    },
        -                    "rate": {
        -                      "anyOf": [
        -                        {
        -                          "type": "number"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "unit": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "work_section": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    }
        -                  },
        -                  "required": [
        -                    "work_section",
        -                    "description",
        -                    "quantity",
        -                    "unit",
        -                    "attribution"
        -                  ],
        -                  "type": "object"
        -                },
        -                "type": "array"
        -              },
        -              "drawings": {
        -                "anyOf": [
        -                  {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.6 — paid-tier drawing artefact pointer.\n\n`url` is an R2-signed URL; expiry is carried in `_meta.deliverables.expires_at`\non the envelope (not duplicated here). `layers` is DXF-only; PDF/SVG\ncallers omit it.",
        -                      "properties": {
        -                        "drawing_type": {
        -                          "enum": [
        -                            "section",
        -                            "plan",
        -                            "elevation",
        -                            "isometric",
        -                            "detail"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "format": {
        -                          "enum": [
        -                            "DXF",
        -                            "PDF",
        -                            "SVG"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "layers": {
        -                          "anyOf": [
        -                            {
        -                              "items": {
        -                                "type": "string"
        -                              },
        -                              "type": "array"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ],
        -                          "default": null
        -                        },
        -                        "scale": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "sheet_size": {
        -                          "enum": [
        -                            "A1",
        -                            "A2",
        -                            "A3",
        -                            "A4"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "url": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "drawing_type",
        -                        "format",
        -                        "url",
        -                        "sheet_size",
        -                        "scale"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "parameters_used": {
        -                "additionalProperties": false,
        -                "description": "Schema § 1.2 — the parameter snapshot the engine actually used.\n\nSplits user-supplied values from engine defaults so customers can see\nwhich numbers came from them and which the engine filled in. Every\ndefaulted parameter SHOULD have a corresponding entry in `assumptions`\n— the bridge layer enforces this when wrapping engine output.",
        -                "properties": {
        -                  "assumptions": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "engine_defaults": {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  "resolved_from_description": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "additionalProperties": false,
        -                          "description": "Schema § 1.2 — a parameter resolved by the forgiving-input layer.\n\nPopulated by the Track B-Forgiving Haiku-4.5 resolution pass; until that\nlayer lands, instances are constructed only by tests. `source` distinguishes\nthe resolution path so customers can audit which fields were inferred.",
        -                          "properties": {
        -                            "confidence": {
        -                              "anyOf": [
        -                                {
        -                                  "enum": [
        -                                    "high",
        -                                    "medium",
        -                                    "low"
        -                                  ],
        -                                  "type": "string"
        -                                },
        -                                {
        -                                  "type": "null"
        -                                }
        -                              ],
        -                              "default": null
        -                            },
        -                            "field_name": {
        -                              "minLength": 1,
        -                              "type": "string"
        -                            },
        -                            "resolved_value": {},
        -                            "source": {
        -                              "enum": [
        -                                "description_field",
        -                                "haiku_resolution",
        -                                "engine_default"
        -                              ],
        -                              "type": "string"
        -                            }
        -                          },
        -                          "required": [
        -                            "field_name",
        -                            "resolved_value",
        -                            "source"
        -                          ],
        -                          "type": "object"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "user_supplied": {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  }
        -                },
        -                "type": "object"
        -              },
        -              "standard": {
        -                "enum": [
        -                  "CESMM4",
        -                  "NRM2",
        -                  "SMM7",
        -                  "MMHW"
        -                ],
        -                "type": "string"
        -              },
        -              "text_summary": {
        -                "maxLength": 2000,
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "totals_summary": {
        -                "additionalProperties": false,
        -                "description": "Schema § 1.4 — totals_summary as a typed wrapper around the free-form dict.\n\nWire shape is a flat object (`{\"concrete_m3\": {...}, \"rebar_t\": {...}}`).\nWe model it as `RootModel`-equivalent via `model_config(extra=\"allow\")`\n+ a single `__root__`-style `entries` dict. Pydantic v2 recommends\n`RootModel` for free-form roots; using a wrapper class keeps the import\nsurface uniform with the rest of this module.",
        -                "properties": {
        -                  "entries": {
        -                    "additionalProperties": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.4 — single material/work-class total entry.",
        -                      "properties": {
        -                        "quantity": {
        -                          "minimum": 0,
        -                          "type": "number"
        -                        },
        -                        "unit": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "quantity",
        -                        "unit"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "object"
        -                  }
        -                },
        -                "type": "object"
        -              }
        -            },
        -            "required": [
        -              "assembly_slug",
        -              "standard",
        -              "parameters_used",
        -              "boq_rows",
        -              "totals_summary",
        -              "text_summary"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      },
        -      "error": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        -            "properties": {
        -              "code": {
        -                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        -                "enum": [
        -                  "RATE_LIMIT_EXCEEDED",
        -                  "TIER_INSUFFICIENT",
        -                  "INVALID_INPUT",
        -                  "SCHEMA_VERSION_MISMATCH",
        -                  "SCHEMA_INVARIANT_VIOLATION",
        -                  "UPSTREAM_TIMEOUT",
        -                  "BACKEND_FAILURE",
        -                  "IP_BLOCKED",
        -                  "RESOURCE_NOT_FOUND",
        -                  "RENDER_FAILURE",
        -                  "OCR_LOW_CONFIDENCE",
        -                  "MANUAL_REVIEW_REQUIRED",
        -                  "ACCEPTANCE_REQUIRED",
        -                  "INVALID_TOKEN"
        -                ],
        -                "type": "string"
        -              },
        -              "details": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "message": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "recoverable": {
        -                "type": "boolean"
        -              },
        -              "retry_after_seconds": {
        -                "anyOf": [
        -                  {
        -                    "minimum": 0,
        -                    "type": "integer"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              }
        -            },
        -            "required": [
        -              "code",
        -              "message",
        -              "recoverable"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      }
        -    },
        -    "required": [
        -      "_meta"
        -    ],
        -    "type": "object"
        -  },
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "_meta": {
        -        "additionalProperties": false,
        -        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        -        "properties": {
        -          "deliverables": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        -                "properties": {
        -                  "docx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "dxf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "expires_at": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  },
        -                  "pdf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "xlsx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "expires_at"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "document_id": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "issued_at": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "rate_limit_remaining": {
        -            "anyOf": [
        -              {
        -                "minimum": 0,
        -                "type": "integer"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "request_id": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "schema_version": {
        -            "const": "1.0.0",
        -            "default": "1.0.0",
        -            "type": "string"
        -          },
        -          "scope_boundary": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        -                "properties": {
        -                  "not_in_scope": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "produced": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "recommended_companions": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "type": "string"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "produced",
        -                  "not_in_scope"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tier": {
        -            "enum": [
        -              "free",
        -              "paid"
        -            ],
        -            "type": "string"
        -          },
        -          "tier_upgrade": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        -                "properties": {
        -                  "available_tiers": {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        -                      "properties": {
        -                        "billing": {
        -                          "enum": [
        -                            "one_off",
        -                            "monthly",
        -                            "annual"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "currency": {
        -                          "enum": [
        -                            "GBP",
        -                            "SGD",
        -                            "EUR",
        -                            "USD",
        -                            "CAD",
        -                            "AUD",
        -                            "NZD",
        -                            "MYR"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "display_name": {
        -                          "type": "string"
        -                        },
        -                        "price_local": {
        -                          "type": "number"
        -                        },
        -                        "tier_slug": {
        -                          "enum": [
        -                            "7_day_pass",
        -                            "solo",
        -                            "studio",
        -                            "practice"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "unlock_summary": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "tier_slug",
        -                        "display_name",
        -                        "price_local",
        -                        "currency",
        -                        "billing",
        -                        "unlock_summary"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "current_tier": {
        -                    "const": "free",
        -                    "default": "free",
        -                    "type": "string"
        -                  },
        -                  "pass_credit": {
        -                    "anyOf": [
        -                      {
        -                        "additionalProperties": false,
        -                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        -                        "properties": {
        -                          "amount_local": {
        -                            "type": "number"
        -                          },
        -                          "applies_to": {
        -                            "const": "solo_first_month",
        -                            "default": "solo_first_month",
        -                            "type": "string"
        -                          },
        -                          "currency": {
        -                            "type": "string"
        -                          },
        -                          "redeemable_until": {
        -                            "type": "string"
        -                          }
        -                        },
        -                        "required": [
        -                          "amount_local",
        -                          "currency",
        -                          "redeemable_until"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "pricing_url": {
        -                    "default": "https://civilquants.com/pricing",
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "available_tiers"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tos_url": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "upgrade_hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "warranty_disclaimer": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          }
        -        },
        -        "required": [
        -          "request_id",
        -          "issued_at",
        -          "tier"
        -        ],
        -        "type": "object"
        -      },
        -      "data": {
        -        "default": null,
        -        "title": "Data"
        -      },
        -      "error": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        -            "properties": {
        -              "code": {
        -                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        -                "enum": [
        -                  "RATE_LIMIT_EXCEEDED",
        -                  "TIER_INSUFFICIENT",
        -                  "INVALID_INPUT",
        -                  "SCHEMA_VERSION_MISMATCH",
        -                  "SCHEMA_INVARIANT_VIOLATION",
        -                  "UPSTREAM_TIMEOUT",
        -                  "BACKEND_FAILURE",
        -                  "IP_BLOCKED",
        -                  "RESOURCE_NOT_FOUND",
        -                  "RENDER_FAILURE",
        -                  "OCR_LOW_CONFIDENCE",
        -                  "MANUAL_REVIEW_REQUIRED",
        -                  "ACCEPTANCE_REQUIRED",
        -                  "INVALID_TOKEN"
        -                ],
        -                "type": "string"
        -              },
        -              "details": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "message": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "recoverable": {
        -                "type": "boolean"
        -              },
        -              "retry_after_seconds": {
        -                "anyOf": [
        -                  {
        -                    "minimum": 0,
        -                    "type": "integer"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              }
        -            },
        -            "required": [
        -              "code",
        -              "message",
        -              "recoverable"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      }
        -    },
        -    "required": [
        -      "_meta"
        -    ],
        -    "type": "object"
        -  }
        -]New value: +[
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "_meta": {
        +        "additionalProperties": false,
        +        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        +        "properties": {
        +          "deliverables": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        +                "properties": {
        +                  "docx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "dxf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "expires_at": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  },
        +                  "pdf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "xlsx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "expires_at"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "document_id": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "issued_at": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "rate_limit_remaining": {
        +            "anyOf": [
        +              {
        +                "minimum": 0,
        +                "type": "integer"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "request_id": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "schema_version": {
        +            "const": "1.0.0",
        +            "default": "1.0.0",
        +            "type": "string"
        +          },
        +          "scope_boundary": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        +                "properties": {
        +                  "not_in_scope": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "produced": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "recommended_companions": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "type": "string"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "produced",
        +                  "not_in_scope"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tier": {
        +            "enum": [
        +              "free",
        +              "paid"
        +            ],
        +            "type": "string"
        +          },
        +          "tier_upgrade": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        +                "properties": {
        +                  "available_tiers": {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        +                      "properties": {
        +                        "billing": {
        +                          "enum": [
        +                            "one_off",
        +                            "monthly",
        +                            "annual"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "currency": {
        +                          "enum": [
        +                            "GBP",
        +                            "SGD",
        +                            "EUR",
        +                            "USD",
        +                            "CAD",
        +                            "AUD",
        +                            "NZD",
        +                            "MYR"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "display_name": {
        +                          "type": "string"
        +                        },
        +                        "price_local": {
        +                          "type": "number"
        +                        },
        +                        "tier_slug": {
        +                          "enum": [
        +                            "7_day_pass",
        +                            "solo",
        +                            "studio",
        +                            "practice"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "unlock_summary": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "tier_slug",
        +                        "display_name",
        +                        "price_local",
        +                        "currency",
        +                        "billing",
        +                        "unlock_summary"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "current_tier": {
        +                    "const": "free",
        +                    "default": "free",
        +                    "type": "string"
        +                  },
        +                  "pass_credit": {
        +                    "anyOf": [
        +                      {
        +                        "additionalProperties": false,
        +                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        +                        "properties": {
        +                          "amount_local": {
        +                            "type": "number"
        +                          },
        +                          "applies_to": {
        +                            "const": "solo_first_month",
        +                            "default": "solo_first_month",
        +                            "type": "string"
        +                          },
        +                          "currency": {
        +                            "type": "string"
        +                          },
        +                          "redeemable_until": {
        +                            "type": "string"
        +                          }
        +                        },
        +                        "required": [
        +                          "amount_local",
        +                          "currency",
        +                          "redeemable_until"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "pricing_url": {
        +                    "default": "https://civilquants.com/pricing",
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "available_tiers"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tos_url": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "upgrade_hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "warranty_disclaimer": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          }
        +        },
        +        "required": [
        +          "request_id",
        +          "issued_at",
        +          "tier"
        +        ],
        +        "type": "object"
        +      },
        +      "data": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Schema § 1.1 — the typed payload returned inside `MCPResponse[ComputeResult]`.\n\nFree-tier responses MUST omit `drawings` and `audit_trail` (the bridge\nenforces this); paid-tier responses populate both. `text_summary` is\nbounded to 2000 chars — keeps the LLM-facing summary token-cheap and\nforces longer narrative into BoQ row descriptions where it belongs.\n`warnings` is the non-fatal geometry advisory list (both tiers).",
        +            "properties": {
        +              "assembly_slug": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "audit_trail": {
        +                "anyOf": [
        +                  {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.7 — paid-tier audit-trail entry.\n\nOne entry per BoQ row; `boq_row_index` ties to the row position in\n`ComputeResult.boq_rows`. `derivation` is the human-readable formula\nwalk-through; `formula` is the optional formal expression.",
        +                      "properties": {
        +                        "boq_row_index": {
        +                          "minimum": 0,
        +                          "type": "integer"
        +                        },
        +                        "derivation": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "formula": {
        +                          "anyOf": [
        +                            {
        +                              "type": "string"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ],
        +                          "default": null
        +                        },
        +                        "id": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "parameters_referenced": {
        +                          "items": {
        +                            "type": "string"
        +                          },
        +                          "type": "array"
        +                        }
        +                      },
        +                      "required": [
        +                        "id",
        +                        "boq_row_index",
        +                        "derivation"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "boq_rows": {
        +                "items": {
        +                  "additionalProperties": false,
        +                  "description": "Schema § 1.3 — a single bill row in the requested standard's format.\n\n`description` is the non-verbatim functional description per spec § 13.9 /\n§ 15 invariant — NEVER reproduces a standard's verbatim clause text.\n`rate` / `amount` ship null because rates are commodity data the customer\nowns; the engine's job is the measurement, not the pricing.",
        +                  "properties": {
        +                    "amount": {
        +                      "anyOf": [
        +                        {
        +                          "type": "number"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "attribution": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "audit_id": {
        +                      "anyOf": [
        +                        {
        +                          "type": "string"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "description": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "quantity": {
        +                      "minimum": 0,
        +                      "type": "number"
        +                    },
        +                    "rate": {
        +                      "anyOf": [
        +                        {
        +                          "type": "number"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "unit": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "work_section": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    }
        +                  },
        +                  "required": [
        +                    "work_section",
        +                    "description",
        +                    "quantity",
        +                    "unit",
        +                    "attribution"
        +                  ],
        +                  "type": "object"
        +                },
        +                "type": "array"
        +              },
        +              "drawings": {
        +                "anyOf": [
        +                  {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.6 — paid-tier drawing artefact pointer.\n\n`url` is an R2-signed URL; expiry is carried in `_meta.deliverables.expires_at`\non the envelope (not duplicated here). `layers` is DXF-only; PDF/SVG\ncallers omit it.",
        +                      "properties": {
        +                        "drawing_type": {
        +                          "enum": [
        +                            "section",
        +                            "plan",
        +                            "elevation",
        +                            "isometric",
        +                            "detail"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "format": {
        +                          "enum": [
        +                            "DXF",
        +                            "PDF",
        +                            "SVG"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "layers": {
        +                          "anyOf": [
        +                            {
        +                              "items": {
        +                                "type": "string"
        +                              },
        +                              "type": "array"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ],
        +                          "default": null
        +                        },
        +                        "scale": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "sheet_size": {
        +                          "enum": [
        +                            "A1",
        +                            "A2",
        +                            "A3",
        +                            "A4"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "url": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "drawing_type",
        +                        "format",
        +                        "url",
        +                        "sheet_size",
        +                        "scale"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "parameters_used": {
        +                "additionalProperties": false,
        +                "description": "Schema § 1.2 — the parameter snapshot the engine actually used.\n\nSplits user-supplied values from engine defaults so customers can see\nwhich numbers came from them and which the engine filled in. Every\ndefaulted parameter SHOULD have a corresponding entry in `assumptions`\n— the bridge layer enforces this when wrapping engine output.",
        +                "properties": {
        +                  "assumptions": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "engine_defaults": {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  "resolved_from_description": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "additionalProperties": false,
        +                          "description": "Schema § 1.2 — a parameter resolved by the forgiving-input layer.\n\nPopulated by the Track B-Forgiving Haiku-4.5 resolution pass; until that\nlayer lands, instances are constructed only by tests. `source` distinguishes\nthe resolution path so customers can audit which fields were inferred.",
        +                          "properties": {
        +                            "confidence": {
        +                              "anyOf": [
        +                                {
        +                                  "enum": [
        +                                    "high",
        +                                    "medium",
        +                                    "low"
        +                                  ],
        +                                  "type": "string"
        +                                },
        +                                {
        +                                  "type": "null"
        +                                }
        +                              ],
        +                              "default": null
        +                            },
        +                            "field_name": {
        +                              "minLength": 1,
        +                              "type": "string"
        +                            },
        +                            "resolved_value": {},
        +                            "source": {
        +                              "enum": [
        +                                "description_field",
        +                                "haiku_resolution",
        +                                "engine_default"
        +                              ],
        +                              "type": "string"
        +                            }
        +                          },
        +                          "required": [
        +                            "field_name",
        +                            "resolved_value",
        +                            "source"
        +                          ],
        +                          "type": "object"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "user_supplied": {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  }
        +                },
        +                "type": "object"
        +              },
        +              "standard": {
        +                "enum": [
        +                  "CESMM4",
        +                  "NRM2",
        +                  "SMM7",
        +                  "MMHW"
        +                ],
        +                "type": "string"
        +              },
        +              "text_summary": {
        +                "maxLength": 2000,
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "totals_summary": {
        +                "additionalProperties": false,
        +                "description": "Schema § 1.4 — totals_summary as a typed wrapper around the free-form dict.\n\nWire shape is a flat object (`{\"concrete_m3\": {...}, \"rebar_t\": {...}}`).\nWe model it as `RootModel`-equivalent via `model_config(extra=\"allow\")`\n+ a single `__root__`-style `entries` dict. Pydantic v2 recommends\n`RootModel` for free-form roots; using a wrapper class keeps the import\nsurface uniform with the rest of this module.",
        +                "properties": {
        +                  "entries": {
        +                    "additionalProperties": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.4 — single material/work-class total entry.",
        +                      "properties": {
        +                        "quantity": {
        +                          "minimum": 0,
        +                          "type": "number"
        +                        },
        +                        "unit": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "quantity",
        +                        "unit"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "object"
        +                  }
        +                },
        +                "type": "object"
        +              },
        +              "warnings": {
        +                "items": {
        +                  "additionalProperties": false,
        +                  "description": "Schema § 1.8 — a non-fatal geometry advisory (56th-fire T2).\n\nThe wire projection of the engine's `core.GeometryWarning`. Advisory only:\na warning NEVER changes a measured quantity — it flags geometry that is\nvalid but likely a mistake (e.g. a stale dependent-height default). Present\non BOTH tiers — a correctness/safety signal, not a paid feature.",
        +                  "properties": {
        +                    "affected_params": {
        +                      "items": {
        +                        "type": "string"
        +                      },
        +                      "type": "array"
        +                    },
        +                    "code": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "detail": {
        +                      "additionalProperties": {
        +                        "type": "number"
        +                      },
        +                      "type": "object"
        +                    },
        +                    "message": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "severity": {
        +                      "enum": [
        +                        "info",
        +                        "advisory",
        +                        "caution"
        +                      ],
        +                      "type": "string"
        +                    }
        +                  },
        +                  "required": [
        +                    "code",
        +                    "severity",
        +                    "message"
        +                  ],
        +                  "type": "object"
        +                },
        +                "type": "array"
        +              }
        +            },
        +            "required": [
        +              "assembly_slug",
        +              "standard",
        +              "parameters_used",
        +              "boq_rows",
        +              "totals_summary",
        +              "text_summary"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      },
        +      "error": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        +            "properties": {
        +              "code": {
        +                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        +                "enum": [
        +                  "RATE_LIMIT_EXCEEDED",
        +                  "TIER_INSUFFICIENT",
        +                  "INVALID_INPUT",
        +                  "SCHEMA_VERSION_MISMATCH",
        +                  "SCHEMA_INVARIANT_VIOLATION",
        +                  "UPSTREAM_TIMEOUT",
        +                  "BACKEND_FAILURE",
        +                  "IP_BLOCKED",
        +                  "RESOURCE_NOT_FOUND",
        +                  "RENDER_FAILURE",
        +                  "OCR_LOW_CONFIDENCE",
        +                  "MANUAL_REVIEW_REQUIRED",
        +                  "ACCEPTANCE_REQUIRED",
        +                  "INVALID_TOKEN"
        +                ],
        +                "type": "string"
        +              },
        +              "details": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "message": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "recoverable": {
        +                "type": "boolean"
        +              },
        +              "retry_after_seconds": {
        +                "anyOf": [
        +                  {
        +                    "minimum": 0,
        +                    "type": "integer"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              }
        +            },
        +            "required": [
        +              "code",
        +              "message",
        +              "recoverable"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      }
        +    },
        +    "required": [
        +      "_meta"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "_meta": {
        +        "additionalProperties": false,
        +        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        +        "properties": {
        +          "deliverables": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        +                "properties": {
        +                  "docx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "dxf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "expires_at": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  },
        +                  "pdf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "xlsx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "expires_at"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "document_id": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "issued_at": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "rate_limit_remaining": {
        +            "anyOf": [
        +              {
        +                "minimum": 0,
        +                "type": "integer"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "request_id": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "schema_version": {
        +            "const": "1.0.0",
        +            "default": "1.0.0",
        +            "type": "string"
        +          },
        +          "scope_boundary": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        +                "properties": {
        +                  "not_in_scope": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "produced": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "recommended_companions": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "type": "string"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "produced",
        +                  "not_in_scope"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tier": {
        +            "enum": [
        +              "free",
        +              "paid"
        +            ],
        +            "type": "string"
        +          },
        +          "tier_upgrade": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        +                "properties": {
        +                  "available_tiers": {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        +                      "properties": {
        +                        "billing": {
        +                          "enum": [
        +                            "one_off",
        +                            "monthly",
        +                            "annual"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "currency": {
        +                          "enum": [
        +                            "GBP",
        +                            "SGD",
        +                            "EUR",
        +                            "USD",
        +                            "CAD",
        +                            "AUD",
        +                            "NZD",
        +                            "MYR"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "display_name": {
        +                          "type": "string"
        +                        },
        +                        "price_local": {
        +                          "type": "number"
        +                        },
        +                        "tier_slug": {
        +                          "enum": [
        +                            "7_day_pass",
        +                            "solo",
        +                            "studio",
        +                            "practice"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "unlock_summary": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "tier_slug",
        +                        "display_name",
        +                        "price_local",
        +                        "currency",
        +                        "billing",
        +                        "unlock_summary"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "current_tier": {
        +                    "const": "free",
        +                    "default": "free",
        +                    "type": "string"
        +                  },
        +                  "pass_credit": {
        +                    "anyOf": [
        +                      {
        +                        "additionalProperties": false,
        +                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        +                        "properties": {
        +                          "amount_local": {
        +                            "type": "number"
        +                          },
        +                          "applies_to": {
        +                            "const": "solo_first_month",
        +                            "default": "solo_first_month",
        +                            "type": "string"
        +                          },
        +                          "currency": {
        +                            "type": "string"
        +                          },
        +                          "redeemable_until": {
        +                            "type": "string"
        +                          }
        +                        },
        +                        "required": [
        +                          "amount_local",
        +                          "currency",
        +                          "redeemable_until"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "pricing_url": {
        +                    "default": "https://civilquants.com/pricing",
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "available_tiers"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tos_url": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "upgrade_hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "warranty_disclaimer": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          }
        +        },
        +        "required": [
        +          "request_id",
        +          "issued_at",
        +          "tier"
        +        ],
        +        "type": "object"
        +      },
        +      "data": {
        +        "default": null,
        +        "title": "Data"
        +      },
        +      "error": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        +            "properties": {
        +              "code": {
        +                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        +                "enum": [
        +                  "RATE_LIMIT_EXCEEDED",
        +                  "TIER_INSUFFICIENT",
        +                  "INVALID_INPUT",
        +                  "SCHEMA_VERSION_MISMATCH",
        +                  "SCHEMA_INVARIANT_VIOLATION",
        +                  "UPSTREAM_TIMEOUT",
        +                  "BACKEND_FAILURE",
        +                  "IP_BLOCKED",
        +                  "RESOURCE_NOT_FOUND",
        +                  "RENDER_FAILURE",
        +                  "OCR_LOW_CONFIDENCE",
        +                  "MANUAL_REVIEW_REQUIRED",
        +                  "ACCEPTANCE_REQUIRED",
        +                  "INVALID_TOKEN"
        +                ],
        +                "type": "string"
        +              },
        +              "details": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "message": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "recoverable": {
        +                "type": "boolean"
        +              },
        +              "retry_after_seconds": {
        +                "anyOf": [
        +                  {
        +                    "minimum": 0,
        +                    "type": "integer"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              }
        +            },
        +            "required": [
        +              "code",
        +              "message",
        +              "recoverable"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      }
        +    },
        +    "required": [
        +      "_meta"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedcompute_bored_pile_wall1 field changed
      • changedOutput schema / properties / result / anyOf
        Previous value: -[
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "_meta": {
        -        "additionalProperties": false,
        -        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        -        "properties": {
        -          "deliverables": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        -                "properties": {
        -                  "docx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "dxf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "expires_at": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  },
        -                  "pdf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "xlsx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "expires_at"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "document_id": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "issued_at": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "rate_limit_remaining": {
        -            "anyOf": [
        -              {
        -                "minimum": 0,
        -                "type": "integer"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "request_id": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "schema_version": {
        -            "const": "1.0.0",
        -            "default": "1.0.0",
        -            "type": "string"
        -          },
        -          "scope_boundary": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        -                "properties": {
        -                  "not_in_scope": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "produced": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "recommended_companions": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "type": "string"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "produced",
        -                  "not_in_scope"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tier": {
        -            "enum": [
        -              "free",
        -              "paid"
        -            ],
        -            "type": "string"
        -          },
        -          "tier_upgrade": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        -                "properties": {
        -                  "available_tiers": {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        -                      "properties": {
        -                        "billing": {
        -                          "enum": [
        -                            "one_off",
        -                            "monthly",
        -                            "annual"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "currency": {
        -                          "enum": [
        -                            "GBP",
        -                            "SGD",
        -                            "EUR",
        -                            "USD",
        -                            "CAD",
        -                            "AUD",
        -                            "NZD",
        -                            "MYR"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "display_name": {
        -                          "type": "string"
        -                        },
        -                        "price_local": {
        -                          "type": "number"
        -                        },
        -                        "tier_slug": {
        -                          "enum": [
        -                            "7_day_pass",
        -                            "solo",
        -                            "studio",
        -                            "practice"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "unlock_summary": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "tier_slug",
        -                        "display_name",
        -                        "price_local",
        -                        "currency",
        -                        "billing",
        -                        "unlock_summary"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "current_tier": {
        -                    "const": "free",
        -                    "default": "free",
        -                    "type": "string"
        -                  },
        -                  "pass_credit": {
        -                    "anyOf": [
        -                      {
        -                        "additionalProperties": false,
        -                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        -                        "properties": {
        -                          "amount_local": {
        -                            "type": "number"
        -                          },
        -                          "applies_to": {
        -                            "const": "solo_first_month",
        -                            "default": "solo_first_month",
        -                            "type": "string"
        -                          },
        -                          "currency": {
        -                            "type": "string"
        -                          },
        -                          "redeemable_until": {
        -                            "type": "string"
        -                          }
        -                        },
        -                        "required": [
        -                          "amount_local",
        -                          "currency",
        -                          "redeemable_until"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "pricing_url": {
        -                    "default": "https://civilquants.com/pricing",
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "available_tiers"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tos_url": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "upgrade_hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "warranty_disclaimer": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          }
        -        },
        -        "required": [
        -          "request_id",
        -          "issued_at",
        -          "tier"
        -        ],
        -        "type": "object"
        -      },
        -      "data": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Schema § 1.1 — the typed payload returned inside `MCPResponse[ComputeResult]`.\n\nFree-tier responses MUST omit `drawings` and `audit_trail` (the bridge\nenforces this); paid-tier responses populate both. `text_summary` is\nbounded to 2000 chars — keeps the LLM-facing summary token-cheap and\nforces longer narrative into BoQ row descriptions where it belongs.",
        -            "properties": {
        -              "assembly_slug": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "audit_trail": {
        -                "anyOf": [
        -                  {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.7 — paid-tier audit-trail entry.\n\nOne entry per BoQ row; `boq_row_index` ties to the row position in\n`ComputeResult.boq_rows`. `derivation` is the human-readable formula\nwalk-through; `formula` is the optional formal expression.",
        -                      "properties": {
        -                        "boq_row_index": {
        -                          "minimum": 0,
        -                          "type": "integer"
        -                        },
        -                        "derivation": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "formula": {
        -                          "anyOf": [
        -                            {
        -                              "type": "string"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ],
        -                          "default": null
        -                        },
        -                        "id": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "parameters_referenced": {
        -                          "items": {
        -                            "type": "string"
        -                          },
        -                          "type": "array"
        -                        }
        -                      },
        -                      "required": [
        -                        "id",
        -                        "boq_row_index",
        -                        "derivation"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "boq_rows": {
        -                "items": {
        -                  "additionalProperties": false,
        -                  "description": "Schema § 1.3 — a single bill row in the requested standard's format.\n\n`description` is the non-verbatim functional description per spec § 13.9 /\n§ 15 invariant — NEVER reproduces a standard's verbatim clause text.\n`rate` / `amount` ship null because rates are commodity data the customer\nowns; the engine's job is the measurement, not the pricing.",
        -                  "properties": {
        -                    "amount": {
        -                      "anyOf": [
        -                        {
        -                          "type": "number"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "attribution": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "audit_id": {
        -                      "anyOf": [
        -                        {
        -                          "type": "string"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "description": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "quantity": {
        -                      "minimum": 0,
        -                      "type": "number"
        -                    },
        -                    "rate": {
        -                      "anyOf": [
        -                        {
        -                          "type": "number"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "unit": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "work_section": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    }
        -                  },
        -                  "required": [
        -                    "work_section",
        -                    "description",
        -                    "quantity",
        -                    "unit",
        -                    "attribution"
        -                  ],
        -                  "type": "object"
        -                },
        -                "type": "array"
        -              },
        -              "drawings": {
        -                "anyOf": [
        -                  {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.6 — paid-tier drawing artefact pointer.\n\n`url` is an R2-signed URL; expiry is carried in `_meta.deliverables.expires_at`\non the envelope (not duplicated here). `layers` is DXF-only; PDF/SVG\ncallers omit it.",
        -                      "properties": {
        -                        "drawing_type": {
        -                          "enum": [
        -                            "section",
        -                            "plan",
        -                            "elevation",
        -                            "isometric",
        -                            "detail"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "format": {
        -                          "enum": [
        -                            "DXF",
        -                            "PDF",
        -                            "SVG"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "layers": {
        -                          "anyOf": [
        -                            {
        -                              "items": {
        -                                "type": "string"
        -                              },
        -                              "type": "array"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ],
        -                          "default": null
        -                        },
        -                        "scale": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "sheet_size": {
        -                          "enum": [
        -                            "A1",
        -                            "A2",
        -                            "A3",
        -                            "A4"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "url": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "drawing_type",
        -                        "format",
        -                        "url",
        -                        "sheet_size",
        -                        "scale"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "parameters_used": {
        -                "additionalProperties": false,
        -                "description": "Schema § 1.2 — the parameter snapshot the engine actually used.\n\nSplits user-supplied values from engine defaults so customers can see\nwhich numbers came from them and which the engine filled in. Every\ndefaulted parameter SHOULD have a corresponding entry in `assumptions`\n— the bridge layer enforces this when wrapping engine output.",
        -                "properties": {
        -                  "assumptions": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "engine_defaults": {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  "resolved_from_description": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "additionalProperties": false,
        -                          "description": "Schema § 1.2 — a parameter resolved by the forgiving-input layer.\n\nPopulated by the Track B-Forgiving Haiku-4.5 resolution pass; until that\nlayer lands, instances are constructed only by tests. `source` distinguishes\nthe resolution path so customers can audit which fields were inferred.",
        -                          "properties": {
        -                            "confidence": {
        -                              "anyOf": [
        -                                {
        -                                  "enum": [
        -                                    "high",
        -                                    "medium",
        -                                    "low"
        -                                  ],
        -                                  "type": "string"
        -                                },
        -                                {
        -                                  "type": "null"
        -                                }
        -                              ],
        -                              "default": null
        -                            },
        -                            "field_name": {
        -                              "minLength": 1,
        -                              "type": "string"
        -                            },
        -                            "resolved_value": {},
        -                            "source": {
        -                              "enum": [
        -                                "description_field",
        -                                "haiku_resolution",
        -                                "engine_default"
        -                              ],
        -                              "type": "string"
        -                            }
        -                          },
        -                          "required": [
        -                            "field_name",
        -                            "resolved_value",
        -                            "source"
        -                          ],
        -                          "type": "object"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "user_supplied": {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  }
        -                },
        -                "type": "object"
        -              },
        -              "standard": {
        -                "enum": [
        -                  "CESMM4",
        -                  "NRM2",
        -                  "SMM7",
        -                  "MMHW"
        -                ],
        -                "type": "string"
        -              },
        -              "text_summary": {
        -                "maxLength": 2000,
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "totals_summary": {
        -                "additionalProperties": false,
        -                "description": "Schema § 1.4 — totals_summary as a typed wrapper around the free-form dict.\n\nWire shape is a flat object (`{\"concrete_m3\": {...}, \"rebar_t\": {...}}`).\nWe model it as `RootModel`-equivalent via `model_config(extra=\"allow\")`\n+ a single `__root__`-style `entries` dict. Pydantic v2 recommends\n`RootModel` for free-form roots; using a wrapper class keeps the import\nsurface uniform with the rest of this module.",
        -                "properties": {
        -                  "entries": {
        -                    "additionalProperties": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.4 — single material/work-class total entry.",
        -                      "properties": {
        -                        "quantity": {
        -                          "minimum": 0,
        -                          "type": "number"
        -                        },
        -                        "unit": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "quantity",
        -                        "unit"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "object"
        -                  }
        -                },
        -                "type": "object"
        -              }
        -            },
        -            "required": [
        -              "assembly_slug",
        -              "standard",
        -              "parameters_used",
        -              "boq_rows",
        -              "totals_summary",
        -              "text_summary"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      },
        -      "error": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        -            "properties": {
        -              "code": {
        -                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        -                "enum": [
        -                  "RATE_LIMIT_EXCEEDED",
        -                  "TIER_INSUFFICIENT",
        -                  "INVALID_INPUT",
        -                  "SCHEMA_VERSION_MISMATCH",
        -                  "SCHEMA_INVARIANT_VIOLATION",
        -                  "UPSTREAM_TIMEOUT",
        -                  "BACKEND_FAILURE",
        -                  "IP_BLOCKED",
        -                  "RESOURCE_NOT_FOUND",
        -                  "RENDER_FAILURE",
        -                  "OCR_LOW_CONFIDENCE",
        -                  "MANUAL_REVIEW_REQUIRED",
        -                  "ACCEPTANCE_REQUIRED",
        -                  "INVALID_TOKEN"
        -                ],
        -                "type": "string"
        -              },
        -              "details": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "message": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "recoverable": {
        -                "type": "boolean"
        -              },
        -              "retry_after_seconds": {
        -                "anyOf": [
        -                  {
        -                    "minimum": 0,
        -                    "type": "integer"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              }
        -            },
        -            "required": [
        -              "code",
        -              "message",
        -              "recoverable"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      }
        -    },
        -    "required": [
        -      "_meta"
        -    ],
        -    "type": "object"
        -  },
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "_meta": {
        -        "additionalProperties": false,
        -        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        -        "properties": {
        -          "deliverables": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        -                "properties": {
        -                  "docx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "dxf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "expires_at": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  },
        -                  "pdf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "xlsx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "expires_at"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "document_id": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "issued_at": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "rate_limit_remaining": {
        -            "anyOf": [
        -              {
        -                "minimum": 0,
        -                "type": "integer"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "request_id": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "schema_version": {
        -            "const": "1.0.0",
        -            "default": "1.0.0",
        -            "type": "string"
        -          },
        -          "scope_boundary": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        -                "properties": {
        -                  "not_in_scope": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "produced": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "recommended_companions": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "type": "string"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "produced",
        -                  "not_in_scope"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tier": {
        -            "enum": [
        -              "free",
        -              "paid"
        -            ],
        -            "type": "string"
        -          },
        -          "tier_upgrade": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        -                "properties": {
        -                  "available_tiers": {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        -                      "properties": {
        -                        "billing": {
        -                          "enum": [
        -                            "one_off",
        -                            "monthly",
        -                            "annual"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "currency": {
        -                          "enum": [
        -                            "GBP",
        -                            "SGD",
        -                            "EUR",
        -                            "USD",
        -                            "CAD",
        -                            "AUD",
        -                            "NZD",
        -                            "MYR"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "display_name": {
        -                          "type": "string"
        -                        },
        -                        "price_local": {
        -                          "type": "number"
        -                        },
        -                        "tier_slug": {
        -                          "enum": [
        -                            "7_day_pass",
        -                            "solo",
        -                            "studio",
        -                            "practice"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "unlock_summary": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "tier_slug",
        -                        "display_name",
        -                        "price_local",
        -                        "currency",
        -                        "billing",
        -                        "unlock_summary"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "current_tier": {
        -                    "const": "free",
        -                    "default": "free",
        -                    "type": "string"
        -                  },
        -                  "pass_credit": {
        -                    "anyOf": [
        -                      {
        -                        "additionalProperties": false,
        -                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        -                        "properties": {
        -                          "amount_local": {
        -                            "type": "number"
        -                          },
        -                          "applies_to": {
        -                            "const": "solo_first_month",
        -                            "default": "solo_first_month",
        -                            "type": "string"
        -                          },
        -                          "currency": {
        -                            "type": "string"
        -                          },
        -                          "redeemable_until": {
        -                            "type": "string"
        -                          }
        -                        },
        -                        "required": [
        -                          "amount_local",
        -                          "currency",
        -                          "redeemable_until"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "pricing_url": {
        -                    "default": "https://civilquants.com/pricing",
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "available_tiers"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tos_url": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "upgrade_hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "warranty_disclaimer": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          }
        -        },
        -        "required": [
        -          "request_id",
        -          "issued_at",
        -          "tier"
        -        ],
        -        "type": "object"
        -      },
        -      "data": {
        -        "default": null,
        -        "title": "Data"
        -      },
        -      "error": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        -            "properties": {
        -              "code": {
        -                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        -                "enum": [
        -                  "RATE_LIMIT_EXCEEDED",
        -                  "TIER_INSUFFICIENT",
        -                  "INVALID_INPUT",
        -                  "SCHEMA_VERSION_MISMATCH",
        -                  "SCHEMA_INVARIANT_VIOLATION",
        -                  "UPSTREAM_TIMEOUT",
        -                  "BACKEND_FAILURE",
        -                  "IP_BLOCKED",
        -                  "RESOURCE_NOT_FOUND",
        -                  "RENDER_FAILURE",
        -                  "OCR_LOW_CONFIDENCE",
        -                  "MANUAL_REVIEW_REQUIRED",
        -                  "ACCEPTANCE_REQUIRED",
        -                  "INVALID_TOKEN"
        -                ],
        -                "type": "string"
        -              },
        -              "details": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "message": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "recoverable": {
        -                "type": "boolean"
        -              },
        -              "retry_after_seconds": {
        -                "anyOf": [
        -                  {
        -                    "minimum": 0,
        -                    "type": "integer"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              }
        -            },
        -            "required": [
        -              "code",
        -              "message",
        -              "recoverable"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      }
        -    },
        -    "required": [
        -      "_meta"
        -    ],
        -    "type": "object"
        -  }
        -]New value: +[
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "_meta": {
        +        "additionalProperties": false,
        +        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        +        "properties": {
        +          "deliverables": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        +                "properties": {
        +                  "docx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "dxf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "expires_at": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  },
        +                  "pdf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "xlsx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "expires_at"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "document_id": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "issued_at": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "rate_limit_remaining": {
        +            "anyOf": [
        +              {
        +                "minimum": 0,
        +                "type": "integer"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "request_id": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "schema_version": {
        +            "const": "1.0.0",
        +            "default": "1.0.0",
        +            "type": "string"
        +          },
        +          "scope_boundary": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        +                "properties": {
        +                  "not_in_scope": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "produced": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "recommended_companions": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "type": "string"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "produced",
        +                  "not_in_scope"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tier": {
        +            "enum": [
        +              "free",
        +              "paid"
        +            ],
        +            "type": "string"
        +          },
        +          "tier_upgrade": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        +                "properties": {
        +                  "available_tiers": {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        +                      "properties": {
        +                        "billing": {
        +                          "enum": [
        +                            "one_off",
        +                            "monthly",
        +                            "annual"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "currency": {
        +                          "enum": [
        +                            "GBP",
        +                            "SGD",
        +                            "EUR",
        +                            "USD",
        +                            "CAD",
        +                            "AUD",
        +                            "NZD",
        +                            "MYR"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "display_name": {
        +                          "type": "string"
        +                        },
        +                        "price_local": {
        +                          "type": "number"
        +                        },
        +                        "tier_slug": {
        +                          "enum": [
        +                            "7_day_pass",
        +                            "solo",
        +                            "studio",
        +                            "practice"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "unlock_summary": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "tier_slug",
        +                        "display_name",
        +                        "price_local",
        +                        "currency",
        +                        "billing",
        +                        "unlock_summary"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "current_tier": {
        +                    "const": "free",
        +                    "default": "free",
        +                    "type": "string"
        +                  },
        +                  "pass_credit": {
        +                    "anyOf": [
        +                      {
        +                        "additionalProperties": false,
        +                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        +                        "properties": {
        +                          "amount_local": {
        +                            "type": "number"
        +                          },
        +                          "applies_to": {
        +                            "const": "solo_first_month",
        +                            "default": "solo_first_month",
        +                            "type": "string"
        +                          },
        +                          "currency": {
        +                            "type": "string"
        +                          },
        +                          "redeemable_until": {
        +                            "type": "string"
        +                          }
        +                        },
        +                        "required": [
        +                          "amount_local",
        +                          "currency",
        +                          "redeemable_until"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "pricing_url": {
        +                    "default": "https://civilquants.com/pricing",
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "available_tiers"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tos_url": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "upgrade_hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "warranty_disclaimer": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          }
        +        },
        +        "required": [
        +          "request_id",
        +          "issued_at",
        +          "tier"
        +        ],
        +        "type": "object"
        +      },
        +      "data": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Schema § 1.1 — the typed payload returned inside `MCPResponse[ComputeResult]`.\n\nFree-tier responses MUST omit `drawings` and `audit_trail` (the bridge\nenforces this); paid-tier responses populate both. `text_summary` is\nbounded to 2000 chars — keeps the LLM-facing summary token-cheap and\nforces longer narrative into BoQ row descriptions where it belongs.\n`warnings` is the non-fatal geometry advisory list (both tiers).",
        +            "properties": {
        +              "assembly_slug": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "audit_trail": {
        +                "anyOf": [
        +                  {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.7 — paid-tier audit-trail entry.\n\nOne entry per BoQ row; `boq_row_index` ties to the row position in\n`ComputeResult.boq_rows`. `derivation` is the human-readable formula\nwalk-through; `formula` is the optional formal expression.",
        +                      "properties": {
        +                        "boq_row_index": {
        +                          "minimum": 0,
        +                          "type": "integer"
        +                        },
        +                        "derivation": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "formula": {
        +                          "anyOf": [
        +                            {
        +                              "type": "string"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ],
        +                          "default": null
        +                        },
        +                        "id": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "parameters_referenced": {
        +                          "items": {
        +                            "type": "string"
        +                          },
        +                          "type": "array"
        +                        }
        +                      },
        +                      "required": [
        +                        "id",
        +                        "boq_row_index",
        +                        "derivation"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "boq_rows": {
        +                "items": {
        +                  "additionalProperties": false,
        +                  "description": "Schema § 1.3 — a single bill row in the requested standard's format.\n\n`description` is the non-verbatim functional description per spec § 13.9 /\n§ 15 invariant — NEVER reproduces a standard's verbatim clause text.\n`rate` / `amount` ship null because rates are commodity data the customer\nowns; the engine's job is the measurement, not the pricing.",
        +                  "properties": {
        +                    "amount": {
        +                      "anyOf": [
        +                        {
        +                          "type": "number"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "attribution": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "audit_id": {
        +                      "anyOf": [
        +                        {
        +                          "type": "string"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "description": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "quantity": {
        +                      "minimum": 0,
        +                      "type": "number"
        +                    },
        +                    "rate": {
        +                      "anyOf": [
        +                        {
        +                          "type": "number"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "unit": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "work_section": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    }
        +                  },
        +                  "required": [
        +                    "work_section",
        +                    "description",
        +                    "quantity",
        +                    "unit",
        +                    "attribution"
        +                  ],
        +                  "type": "object"
        +                },
        +                "type": "array"
        +              },
        +              "drawings": {
        +                "anyOf": [
        +                  {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.6 — paid-tier drawing artefact pointer.\n\n`url` is an R2-signed URL; expiry is carried in `_meta.deliverables.expires_at`\non the envelope (not duplicated here). `layers` is DXF-only; PDF/SVG\ncallers omit it.",
        +                      "properties": {
        +                        "drawing_type": {
        +                          "enum": [
        +                            "section",
        +                            "plan",
        +                            "elevation",
        +                            "isometric",
        +                            "detail"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "format": {
        +                          "enum": [
        +                            "DXF",
        +                            "PDF",
        +                            "SVG"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "layers": {
        +                          "anyOf": [
        +                            {
        +                              "items": {
        +                                "type": "string"
        +                              },
        +                              "type": "array"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ],
        +                          "default": null
        +                        },
        +                        "scale": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "sheet_size": {
        +                          "enum": [
        +                            "A1",
        +                            "A2",
        +                            "A3",
        +                            "A4"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "url": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "drawing_type",
        +                        "format",
        +                        "url",
        +                        "sheet_size",
        +                        "scale"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "parameters_used": {
        +                "additionalProperties": false,
        +                "description": "Schema § 1.2 — the parameter snapshot the engine actually used.\n\nSplits user-supplied values from engine defaults so customers can see\nwhich numbers came from them and which the engine filled in. Every\ndefaulted parameter SHOULD have a corresponding entry in `assumptions`\n— the bridge layer enforces this when wrapping engine output.",
        +                "properties": {
        +                  "assumptions": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "engine_defaults": {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  "resolved_from_description": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "additionalProperties": false,
        +                          "description": "Schema § 1.2 — a parameter resolved by the forgiving-input layer.\n\nPopulated by the Track B-Forgiving Haiku-4.5 resolution pass; until that\nlayer lands, instances are constructed only by tests. `source` distinguishes\nthe resolution path so customers can audit which fields were inferred.",
        +                          "properties": {
        +                            "confidence": {
        +                              "anyOf": [
        +                                {
        +                                  "enum": [
        +                                    "high",
        +                                    "medium",
        +                                    "low"
        +                                  ],
        +                                  "type": "string"
        +                                },
        +                                {
        +                                  "type": "null"
        +                                }
        +                              ],
        +                              "default": null
        +                            },
        +                            "field_name": {
        +                              "minLength": 1,
        +                              "type": "string"
        +                            },
        +                            "resolved_value": {},
        +                            "source": {
        +                              "enum": [
        +                                "description_field",
        +                                "haiku_resolution",
        +                                "engine_default"
        +                              ],
        +                              "type": "string"
        +                            }
        +                          },
        +                          "required": [
        +                            "field_name",
        +                            "resolved_value",
        +                            "source"
        +                          ],
        +                          "type": "object"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "user_supplied": {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  }
        +                },
        +                "type": "object"
        +              },
        +              "standard": {
        +                "enum": [
        +                  "CESMM4",
        +                  "NRM2",
        +                  "SMM7",
        +                  "MMHW"
        +                ],
        +                "type": "string"
        +              },
        +              "text_summary": {
        +                "maxLength": 2000,
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "totals_summary": {
        +                "additionalProperties": false,
        +                "description": "Schema § 1.4 — totals_summary as a typed wrapper around the free-form dict.\n\nWire shape is a flat object (`{\"concrete_m3\": {...}, \"rebar_t\": {...}}`).\nWe model it as `RootModel`-equivalent via `model_config(extra=\"allow\")`\n+ a single `__root__`-style `entries` dict. Pydantic v2 recommends\n`RootModel` for free-form roots; using a wrapper class keeps the import\nsurface uniform with the rest of this module.",
        +                "properties": {
        +                  "entries": {
        +                    "additionalProperties": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.4 — single material/work-class total entry.",
        +                      "properties": {
        +                        "quantity": {
        +                          "minimum": 0,
        +                          "type": "number"
        +                        },
        +                        "unit": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "quantity",
        +                        "unit"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "object"
        +                  }
        +                },
        +                "type": "object"
        +              },
        +              "warnings": {
        +                "items": {
        +                  "additionalProperties": false,
        +                  "description": "Schema § 1.8 — a non-fatal geometry advisory (56th-fire T2).\n\nThe wire projection of the engine's `core.GeometryWarning`. Advisory only:\na warning NEVER changes a measured quantity — it flags geometry that is\nvalid but likely a mistake (e.g. a stale dependent-height default). Present\non BOTH tiers — a correctness/safety signal, not a paid feature.",
        +                  "properties": {
        +                    "affected_params": {
        +                      "items": {
        +                        "type": "string"
        +                      },
        +                      "type": "array"
        +                    },
        +                    "code": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "detail": {
        +                      "additionalProperties": {
        +                        "type": "number"
        +                      },
        +                      "type": "object"
        +                    },
        +                    "message": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "severity": {
        +                      "enum": [
        +                        "info",
        +                        "advisory",
        +                        "caution"
        +                      ],
        +                      "type": "string"
        +                    }
        +                  },
        +                  "required": [
        +                    "code",
        +                    "severity",
        +                    "message"
        +                  ],
        +                  "type": "object"
        +                },
        +                "type": "array"
        +              }
        +            },
        +            "required": [
        +              "assembly_slug",
        +              "standard",
        +              "parameters_used",
        +              "boq_rows",
        +              "totals_summary",
        +              "text_summary"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      },
        +      "error": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        +            "properties": {
        +              "code": {
        +                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        +                "enum": [
        +                  "RATE_LIMIT_EXCEEDED",
        +                  "TIER_INSUFFICIENT",
        +                  "INVALID_INPUT",
        +                  "SCHEMA_VERSION_MISMATCH",
        +                  "SCHEMA_INVARIANT_VIOLATION",
        +                  "UPSTREAM_TIMEOUT",
        +                  "BACKEND_FAILURE",
        +                  "IP_BLOCKED",
        +                  "RESOURCE_NOT_FOUND",
        +                  "RENDER_FAILURE",
        +                  "OCR_LOW_CONFIDENCE",
        +                  "MANUAL_REVIEW_REQUIRED",
        +                  "ACCEPTANCE_REQUIRED",
        +                  "INVALID_TOKEN"
        +                ],
        +                "type": "string"
        +              },
        +              "details": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "message": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "recoverable": {
        +                "type": "boolean"
        +              },
        +              "retry_after_seconds": {
        +                "anyOf": [
        +                  {
        +                    "minimum": 0,
        +                    "type": "integer"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              }
        +            },
        +            "required": [
        +              "code",
        +              "message",
        +              "recoverable"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      }
        +    },
        +    "required": [
        +      "_meta"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "_meta": {
        +        "additionalProperties": false,
        +        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        +        "properties": {
        +          "deliverables": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        +                "properties": {
        +                  "docx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "dxf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "expires_at": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  },
        +                  "pdf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "xlsx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "expires_at"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "document_id": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "issued_at": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "rate_limit_remaining": {
        +            "anyOf": [
        +              {
        +                "minimum": 0,
        +                "type": "integer"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "request_id": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "schema_version": {
        +            "const": "1.0.0",
        +            "default": "1.0.0",
        +            "type": "string"
        +          },
        +          "scope_boundary": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        +                "properties": {
        +                  "not_in_scope": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "produced": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "recommended_companions": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "type": "string"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "produced",
        +                  "not_in_scope"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tier": {
        +            "enum": [
        +              "free",
        +              "paid"
        +            ],
        +            "type": "string"
        +          },
        +          "tier_upgrade": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        +                "properties": {
        +                  "available_tiers": {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        +                      "properties": {
        +                        "billing": {
        +                          "enum": [
        +                            "one_off",
        +                            "monthly",
        +                            "annual"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "currency": {
        +                          "enum": [
        +                            "GBP",
        +                            "SGD",
        +                            "EUR",
        +                            "USD",
        +                            "CAD",
        +                            "AUD",
        +                            "NZD",
        +                            "MYR"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "display_name": {
        +                          "type": "string"
        +                        },
        +                        "price_local": {
        +                          "type": "number"
        +                        },
        +                        "tier_slug": {
        +                          "enum": [
        +                            "7_day_pass",
        +                            "solo",
        +                            "studio",
        +                            "practice"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "unlock_summary": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "tier_slug",
        +                        "display_name",
        +                        "price_local",
        +                        "currency",
        +                        "billing",
        +                        "unlock_summary"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "current_tier": {
        +                    "const": "free",
        +                    "default": "free",
        +                    "type": "string"
        +                  },
        +                  "pass_credit": {
        +                    "anyOf": [
        +                      {
        +                        "additionalProperties": false,
        +                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        +                        "properties": {
        +                          "amount_local": {
        +                            "type": "number"
        +                          },
        +                          "applies_to": {
        +                            "const": "solo_first_month",
        +                            "default": "solo_first_month",
        +                            "type": "string"
        +                          },
        +                          "currency": {
        +                            "type": "string"
        +                          },
        +                          "redeemable_until": {
        +                            "type": "string"
        +                          }
        +                        },
        +                        "required": [
        +                          "amount_local",
        +                          "currency",
        +                          "redeemable_until"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "pricing_url": {
        +                    "default": "https://civilquants.com/pricing",
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "available_tiers"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tos_url": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "upgrade_hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "warranty_disclaimer": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          }
        +        },
        +        "required": [
        +          "request_id",
        +          "issued_at",
        +          "tier"
        +        ],
        +        "type": "object"
        +      },
        +      "data": {
        +        "default": null,
        +        "title": "Data"
        +      },
        +      "error": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        +            "properties": {
        +              "code": {
        +                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        +                "enum": [
        +                  "RATE_LIMIT_EXCEEDED",
        +                  "TIER_INSUFFICIENT",
        +                  "INVALID_INPUT",
        +                  "SCHEMA_VERSION_MISMATCH",
        +                  "SCHEMA_INVARIANT_VIOLATION",
        +                  "UPSTREAM_TIMEOUT",
        +                  "BACKEND_FAILURE",
        +                  "IP_BLOCKED",
        +                  "RESOURCE_NOT_FOUND",
        +                  "RENDER_FAILURE",
        +                  "OCR_LOW_CONFIDENCE",
        +                  "MANUAL_REVIEW_REQUIRED",
        +                  "ACCEPTANCE_REQUIRED",
        +                  "INVALID_TOKEN"
        +                ],
        +                "type": "string"
        +              },
        +              "details": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "message": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "recoverable": {
        +                "type": "boolean"
        +              },
        +              "retry_after_seconds": {
        +                "anyOf": [
        +                  {
        +                    "minimum": 0,
        +                    "type": "integer"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              }
        +            },
        +            "required": [
        +              "code",
        +              "message",
        +              "recoverable"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      }
        +    },
        +    "required": [
        +      "_meta"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedcompute_box_culvert1 field changed
      • changedOutput schema / properties / result / anyOf
        Previous value: -[
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "_meta": {
        -        "additionalProperties": false,
        -        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        -        "properties": {
        -          "deliverables": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        -                "properties": {
        -                  "docx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "dxf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "expires_at": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  },
        -                  "pdf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "xlsx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "expires_at"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "document_id": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "issued_at": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "rate_limit_remaining": {
        -            "anyOf": [
        -              {
        -                "minimum": 0,
        -                "type": "integer"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "request_id": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "schema_version": {
        -            "const": "1.0.0",
        -            "default": "1.0.0",
        -            "type": "string"
        -          },
        -          "scope_boundary": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        -                "properties": {
        -                  "not_in_scope": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "produced": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "recommended_companions": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "type": "string"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "produced",
        -                  "not_in_scope"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tier": {
        -            "enum": [
        -              "free",
        -              "paid"
        -            ],
        -            "type": "string"
        -          },
        -          "tier_upgrade": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        -                "properties": {
        -                  "available_tiers": {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        -                      "properties": {
        -                        "billing": {
        -                          "enum": [
        -                            "one_off",
        -                            "monthly",
        -                            "annual"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "currency": {
        -                          "enum": [
        -                            "GBP",
        -                            "SGD",
        -                            "EUR",
        -                            "USD",
        -                            "CAD",
        -                            "AUD",
        -                            "NZD",
        -                            "MYR"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "display_name": {
        -                          "type": "string"
        -                        },
        -                        "price_local": {
        -                          "type": "number"
        -                        },
        -                        "tier_slug": {
        -                          "enum": [
        -                            "7_day_pass",
        -                            "solo",
        -                            "studio",
        -                            "practice"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "unlock_summary": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "tier_slug",
        -                        "display_name",
        -                        "price_local",
        -                        "currency",
        -                        "billing",
        -                        "unlock_summary"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "current_tier": {
        -                    "const": "free",
        -                    "default": "free",
        -                    "type": "string"
        -                  },
        -                  "pass_credit": {
        -                    "anyOf": [
        -                      {
        -                        "additionalProperties": false,
        -                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        -                        "properties": {
        -                          "amount_local": {
        -                            "type": "number"
        -                          },
        -                          "applies_to": {
        -                            "const": "solo_first_month",
        -                            "default": "solo_first_month",
        -                            "type": "string"
        -                          },
        -                          "currency": {
        -                            "type": "string"
        -                          },
        -                          "redeemable_until": {
        -                            "type": "string"
        -                          }
        -                        },
        -                        "required": [
        -                          "amount_local",
        -                          "currency",
        -                          "redeemable_until"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "pricing_url": {
        -                    "default": "https://civilquants.com/pricing",
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "available_tiers"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tos_url": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "upgrade_hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "warranty_disclaimer": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          }
        -        },
        -        "required": [
        -          "request_id",
        -          "issued_at",
        -          "tier"
        -        ],
        -        "type": "object"
        -      },
        -      "data": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Schema § 1.1 — the typed payload returned inside `MCPResponse[ComputeResult]`.\n\nFree-tier responses MUST omit `drawings` and `audit_trail` (the bridge\nenforces this); paid-tier responses populate both. `text_summary` is\nbounded to 2000 chars — keeps the LLM-facing summary token-cheap and\nforces longer narrative into BoQ row descriptions where it belongs.",
        -            "properties": {
        -              "assembly_slug": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "audit_trail": {
        -                "anyOf": [
        -                  {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.7 — paid-tier audit-trail entry.\n\nOne entry per BoQ row; `boq_row_index` ties to the row position in\n`ComputeResult.boq_rows`. `derivation` is the human-readable formula\nwalk-through; `formula` is the optional formal expression.",
        -                      "properties": {
        -                        "boq_row_index": {
        -                          "minimum": 0,
        -                          "type": "integer"
        -                        },
        -                        "derivation": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "formula": {
        -                          "anyOf": [
        -                            {
        -                              "type": "string"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ],
        -                          "default": null
        -                        },
        -                        "id": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "parameters_referenced": {
        -                          "items": {
        -                            "type": "string"
        -                          },
        -                          "type": "array"
        -                        }
        -                      },
        -                      "required": [
        -                        "id",
        -                        "boq_row_index",
        -                        "derivation"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "boq_rows": {
        -                "items": {
        -                  "additionalProperties": false,
        -                  "description": "Schema § 1.3 — a single bill row in the requested standard's format.\n\n`description` is the non-verbatim functional description per spec § 13.9 /\n§ 15 invariant — NEVER reproduces a standard's verbatim clause text.\n`rate` / `amount` ship null because rates are commodity data the customer\nowns; the engine's job is the measurement, not the pricing.",
        -                  "properties": {
        -                    "amount": {
        -                      "anyOf": [
        -                        {
        -                          "type": "number"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "attribution": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "audit_id": {
        -                      "anyOf": [
        -                        {
        -                          "type": "string"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "description": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "quantity": {
        -                      "minimum": 0,
        -                      "type": "number"
        -                    },
        -                    "rate": {
        -                      "anyOf": [
        -                        {
        -                          "type": "number"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "unit": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "work_section": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    }
        -                  },
        -                  "required": [
        -                    "work_section",
        -                    "description",
        -                    "quantity",
        -                    "unit",
        -                    "attribution"
        -                  ],
        -                  "type": "object"
        -                },
        -                "type": "array"
        -              },
        -              "drawings": {
        -                "anyOf": [
        -                  {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.6 — paid-tier drawing artefact pointer.\n\n`url` is an R2-signed URL; expiry is carried in `_meta.deliverables.expires_at`\non the envelope (not duplicated here). `layers` is DXF-only; PDF/SVG\ncallers omit it.",
        -                      "properties": {
        -                        "drawing_type": {
        -                          "enum": [
        -                            "section",
        -                            "plan",
        -                            "elevation",
        -                            "isometric",
        -                            "detail"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "format": {
        -                          "enum": [
        -                            "DXF",
        -                            "PDF",
        -                            "SVG"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "layers": {
        -                          "anyOf": [
        -                            {
        -                              "items": {
        -                                "type": "string"
        -                              },
        -                              "type": "array"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ],
        -                          "default": null
        -                        },
        -                        "scale": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "sheet_size": {
        -                          "enum": [
        -                            "A1",
        -                            "A2",
        -                            "A3",
        -                            "A4"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "url": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "drawing_type",
        -                        "format",
        -                        "url",
        -                        "sheet_size",
        -                        "scale"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "parameters_used": {
        -                "additionalProperties": false,
        -                "description": "Schema § 1.2 — the parameter snapshot the engine actually used.\n\nSplits user-supplied values from engine defaults so customers can see\nwhich numbers came from them and which the engine filled in. Every\ndefaulted parameter SHOULD have a corresponding entry in `assumptions`\n— the bridge layer enforces this when wrapping engine output.",
        -                "properties": {
        -                  "assumptions": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "engine_defaults": {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  "resolved_from_description": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "additionalProperties": false,
        -                          "description": "Schema § 1.2 — a parameter resolved by the forgiving-input layer.\n\nPopulated by the Track B-Forgiving Haiku-4.5 resolution pass; until that\nlayer lands, instances are constructed only by tests. `source` distinguishes\nthe resolution path so customers can audit which fields were inferred.",
        -                          "properties": {
        -                            "confidence": {
        -                              "anyOf": [
        -                                {
        -                                  "enum": [
        -                                    "high",
        -                                    "medium",
        -                                    "low"
        -                                  ],
        -                                  "type": "string"
        -                                },
        -                                {
        -                                  "type": "null"
        -                                }
        -                              ],
        -                              "default": null
        -                            },
        -                            "field_name": {
        -                              "minLength": 1,
        -                              "type": "string"
        -                            },
        -                            "resolved_value": {},
        -                            "source": {
        -                              "enum": [
        -                                "description_field",
        -                                "haiku_resolution",
        -                                "engine_default"
        -                              ],
        -                              "type": "string"
        -                            }
        -                          },
        -                          "required": [
        -                            "field_name",
        -                            "resolved_value",
        -                            "source"
        -                          ],
        -                          "type": "object"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "user_supplied": {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  }
        -                },
        -                "type": "object"
        -              },
        -              "standard": {
        -                "enum": [
        -                  "CESMM4",
        -                  "NRM2",
        -                  "SMM7",
        -                  "MMHW"
        -                ],
        -                "type": "string"
        -              },
        -              "text_summary": {
        -                "maxLength": 2000,
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "totals_summary": {
        -                "additionalProperties": false,
        -                "description": "Schema § 1.4 — totals_summary as a typed wrapper around the free-form dict.\n\nWire shape is a flat object (`{\"concrete_m3\": {...}, \"rebar_t\": {...}}`).\nWe model it as `RootModel`-equivalent via `model_config(extra=\"allow\")`\n+ a single `__root__`-style `entries` dict. Pydantic v2 recommends\n`RootModel` for free-form roots; using a wrapper class keeps the import\nsurface uniform with the rest of this module.",
        -                "properties": {
        -                  "entries": {
        -                    "additionalProperties": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.4 — single material/work-class total entry.",
        -                      "properties": {
        -                        "quantity": {
        -                          "minimum": 0,
        -                          "type": "number"
        -                        },
        -                        "unit": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "quantity",
        -                        "unit"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "object"
        -                  }
        -                },
        -                "type": "object"
        -              }
        -            },
        -            "required": [
        -              "assembly_slug",
        -              "standard",
        -              "parameters_used",
        -              "boq_rows",
        -              "totals_summary",
        -              "text_summary"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      },
        -      "error": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        -            "properties": {
        -              "code": {
        -                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        -                "enum": [
        -                  "RATE_LIMIT_EXCEEDED",
        -                  "TIER_INSUFFICIENT",
        -                  "INVALID_INPUT",
        -                  "SCHEMA_VERSION_MISMATCH",
        -                  "SCHEMA_INVARIANT_VIOLATION",
        -                  "UPSTREAM_TIMEOUT",
        -                  "BACKEND_FAILURE",
        -                  "IP_BLOCKED",
        -                  "RESOURCE_NOT_FOUND",
        -                  "RENDER_FAILURE",
        -                  "OCR_LOW_CONFIDENCE",
        -                  "MANUAL_REVIEW_REQUIRED",
        -                  "ACCEPTANCE_REQUIRED",
        -                  "INVALID_TOKEN"
        -                ],
        -                "type": "string"
        -              },
        -              "details": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "message": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "recoverable": {
        -                "type": "boolean"
        -              },
        -              "retry_after_seconds": {
        -                "anyOf": [
        -                  {
        -                    "minimum": 0,
        -                    "type": "integer"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              }
        -            },
        -            "required": [
        -              "code",
        -              "message",
        -              "recoverable"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      }
        -    },
        -    "required": [
        -      "_meta"
        -    ],
        -    "type": "object"
        -  },
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "_meta": {
        -        "additionalProperties": false,
        -        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        -        "properties": {
        -          "deliverables": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        -                "properties": {
        -                  "docx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "dxf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "expires_at": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  },
        -                  "pdf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "xlsx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "expires_at"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "document_id": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "issued_at": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "rate_limit_remaining": {
        -            "anyOf": [
        -              {
        -                "minimum": 0,
        -                "type": "integer"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "request_id": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "schema_version": {
        -            "const": "1.0.0",
        -            "default": "1.0.0",
        -            "type": "string"
        -          },
        -          "scope_boundary": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        -                "properties": {
        -                  "not_in_scope": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "produced": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "recommended_companions": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "type": "string"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "produced",
        -                  "not_in_scope"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tier": {
        -            "enum": [
        -              "free",
        -              "paid"
        -            ],
        -            "type": "string"
        -          },
        -          "tier_upgrade": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        -                "properties": {
        -                  "available_tiers": {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        -                      "properties": {
        -                        "billing": {
        -                          "enum": [
        -                            "one_off",
        -                            "monthly",
        -                            "annual"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "currency": {
        -                          "enum": [
        -                            "GBP",
        -                            "SGD",
        -                            "EUR",
        -                            "USD",
        -                            "CAD",
        -                            "AUD",
        -                            "NZD",
        -                            "MYR"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "display_name": {
        -                          "type": "string"
        -                        },
        -                        "price_local": {
        -                          "type": "number"
        -                        },
        -                        "tier_slug": {
        -                          "enum": [
        -                            "7_day_pass",
        -                            "solo",
        -                            "studio",
        -                            "practice"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "unlock_summary": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "tier_slug",
        -                        "display_name",
        -                        "price_local",
        -                        "currency",
        -                        "billing",
        -                        "unlock_summary"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "current_tier": {
        -                    "const": "free",
        -                    "default": "free",
        -                    "type": "string"
        -                  },
        -                  "pass_credit": {
        -                    "anyOf": [
        -                      {
        -                        "additionalProperties": false,
        -                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        -                        "properties": {
        -                          "amount_local": {
        -                            "type": "number"
        -                          },
        -                          "applies_to": {
        -                            "const": "solo_first_month",
        -                            "default": "solo_first_month",
        -                            "type": "string"
        -                          },
        -                          "currency": {
        -                            "type": "string"
        -                          },
        -                          "redeemable_until": {
        -                            "type": "string"
        -                          }
        -                        },
        -                        "required": [
        -                          "amount_local",
        -                          "currency",
        -                          "redeemable_until"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "pricing_url": {
        -                    "default": "https://civilquants.com/pricing",
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "available_tiers"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tos_url": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "upgrade_hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "warranty_disclaimer": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          }
        -        },
        -        "required": [
        -          "request_id",
        -          "issued_at",
        -          "tier"
        -        ],
        -        "type": "object"
        -      },
        -      "data": {
        -        "default": null,
        -        "title": "Data"
        -      },
        -      "error": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        -            "properties": {
        -              "code": {
        -                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        -                "enum": [
        -                  "RATE_LIMIT_EXCEEDED",
        -                  "TIER_INSUFFICIENT",
        -                  "INVALID_INPUT",
        -                  "SCHEMA_VERSION_MISMATCH",
        -                  "SCHEMA_INVARIANT_VIOLATION",
        -                  "UPSTREAM_TIMEOUT",
        -                  "BACKEND_FAILURE",
        -                  "IP_BLOCKED",
        -                  "RESOURCE_NOT_FOUND",
        -                  "RENDER_FAILURE",
        -                  "OCR_LOW_CONFIDENCE",
        -                  "MANUAL_REVIEW_REQUIRED",
        -                  "ACCEPTANCE_REQUIRED",
        -                  "INVALID_TOKEN"
        -                ],
        -                "type": "string"
        -              },
        -              "details": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "message": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "recoverable": {
        -                "type": "boolean"
        -              },
        -              "retry_after_seconds": {
        -                "anyOf": [
        -                  {
        -                    "minimum": 0,
        -                    "type": "integer"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              }
        -            },
        -            "required": [
        -              "code",
        -              "message",
        -              "recoverable"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      }
        -    },
        -    "required": [
        -      "_meta"
        -    ],
        -    "type": "object"
        -  }
        -]New value: +[
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "_meta": {
        +        "additionalProperties": false,
        +        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        +        "properties": {
        +          "deliverables": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        +                "properties": {
        +                  "docx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "dxf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "expires_at": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  },
        +                  "pdf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "xlsx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "expires_at"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "document_id": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "issued_at": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "rate_limit_remaining": {
        +            "anyOf": [
        +              {
        +                "minimum": 0,
        +                "type": "integer"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "request_id": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "schema_version": {
        +            "const": "1.0.0",
        +            "default": "1.0.0",
        +            "type": "string"
        +          },
        +          "scope_boundary": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        +                "properties": {
        +                  "not_in_scope": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "produced": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "recommended_companions": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "type": "string"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "produced",
        +                  "not_in_scope"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tier": {
        +            "enum": [
        +              "free",
        +              "paid"
        +            ],
        +            "type": "string"
        +          },
        +          "tier_upgrade": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        +                "properties": {
        +                  "available_tiers": {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        +                      "properties": {
        +                        "billing": {
        +                          "enum": [
        +                            "one_off",
        +                            "monthly",
        +                            "annual"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "currency": {
        +                          "enum": [
        +                            "GBP",
        +                            "SGD",
        +                            "EUR",
        +                            "USD",
        +                            "CAD",
        +                            "AUD",
        +                            "NZD",
        +                            "MYR"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "display_name": {
        +                          "type": "string"
        +                        },
        +                        "price_local": {
        +                          "type": "number"
        +                        },
        +                        "tier_slug": {
        +                          "enum": [
        +                            "7_day_pass",
        +                            "solo",
        +                            "studio",
        +                            "practice"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "unlock_summary": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "tier_slug",
        +                        "display_name",
        +                        "price_local",
        +                        "currency",
        +                        "billing",
        +                        "unlock_summary"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "current_tier": {
        +                    "const": "free",
        +                    "default": "free",
        +                    "type": "string"
        +                  },
        +                  "pass_credit": {
        +                    "anyOf": [
        +                      {
        +                        "additionalProperties": false,
        +                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        +                        "properties": {
        +                          "amount_local": {
        +                            "type": "number"
        +                          },
        +                          "applies_to": {
        +                            "const": "solo_first_month",
        +                            "default": "solo_first_month",
        +                            "type": "string"
        +                          },
        +                          "currency": {
        +                            "type": "string"
        +                          },
        +                          "redeemable_until": {
        +                            "type": "string"
        +                          }
        +                        },
        +                        "required": [
        +                          "amount_local",
        +                          "currency",
        +                          "redeemable_until"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "pricing_url": {
        +                    "default": "https://civilquants.com/pricing",
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "available_tiers"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tos_url": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "upgrade_hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "warranty_disclaimer": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          }
        +        },
        +        "required": [
        +          "request_id",
        +          "issued_at",
        +          "tier"
        +        ],
        +        "type": "object"
        +      },
        +      "data": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Schema § 1.1 — the typed payload returned inside `MCPResponse[ComputeResult]`.\n\nFree-tier responses MUST omit `drawings` and `audit_trail` (the bridge\nenforces this); paid-tier responses populate both. `text_summary` is\nbounded to 2000 chars — keeps the LLM-facing summary token-cheap and\nforces longer narrative into BoQ row descriptions where it belongs.\n`warnings` is the non-fatal geometry advisory list (both tiers).",
        +            "properties": {
        +              "assembly_slug": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "audit_trail": {
        +                "anyOf": [
        +                  {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.7 — paid-tier audit-trail entry.\n\nOne entry per BoQ row; `boq_row_index` ties to the row position in\n`ComputeResult.boq_rows`. `derivation` is the human-readable formula\nwalk-through; `formula` is the optional formal expression.",
        +                      "properties": {
        +                        "boq_row_index": {
        +                          "minimum": 0,
        +                          "type": "integer"
        +                        },
        +                        "derivation": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "formula": {
        +                          "anyOf": [
        +                            {
        +                              "type": "string"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ],
        +                          "default": null
        +                        },
        +                        "id": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "parameters_referenced": {
        +                          "items": {
        +                            "type": "string"
        +                          },
        +                          "type": "array"
        +                        }
        +                      },
        +                      "required": [
        +                        "id",
        +                        "boq_row_index",
        +                        "derivation"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "boq_rows": {
        +                "items": {
        +                  "additionalProperties": false,
        +                  "description": "Schema § 1.3 — a single bill row in the requested standard's format.\n\n`description` is the non-verbatim functional description per spec § 13.9 /\n§ 15 invariant — NEVER reproduces a standard's verbatim clause text.\n`rate` / `amount` ship null because rates are commodity data the customer\nowns; the engine's job is the measurement, not the pricing.",
        +                  "properties": {
        +                    "amount": {
        +                      "anyOf": [
        +                        {
        +                          "type": "number"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "attribution": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "audit_id": {
        +                      "anyOf": [
        +                        {
        +                          "type": "string"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "description": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "quantity": {
        +                      "minimum": 0,
        +                      "type": "number"
        +                    },
        +                    "rate": {
        +                      "anyOf": [
        +                        {
        +                          "type": "number"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "unit": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "work_section": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    }
        +                  },
        +                  "required": [
        +                    "work_section",
        +                    "description",
        +                    "quantity",
        +                    "unit",
        +                    "attribution"
        +                  ],
        +                  "type": "object"
        +                },
        +                "type": "array"
        +              },
        +              "drawings": {
        +                "anyOf": [
        +                  {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.6 — paid-tier drawing artefact pointer.\n\n`url` is an R2-signed URL; expiry is carried in `_meta.deliverables.expires_at`\non the envelope (not duplicated here). `layers` is DXF-only; PDF/SVG\ncallers omit it.",
        +                      "properties": {
        +                        "drawing_type": {
        +                          "enum": [
        +                            "section",
        +                            "plan",
        +                            "elevation",
        +                            "isometric",
        +                            "detail"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "format": {
        +                          "enum": [
        +                            "DXF",
        +                            "PDF",
        +                            "SVG"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "layers": {
        +                          "anyOf": [
        +                            {
        +                              "items": {
        +                                "type": "string"
        +                              },
        +                              "type": "array"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ],
        +                          "default": null
        +                        },
        +                        "scale": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "sheet_size": {
        +                          "enum": [
        +                            "A1",
        +                            "A2",
        +                            "A3",
        +                            "A4"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "url": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "drawing_type",
        +                        "format",
        +                        "url",
        +                        "sheet_size",
        +                        "scale"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "parameters_used": {
        +                "additionalProperties": false,
        +                "description": "Schema § 1.2 — the parameter snapshot the engine actually used.\n\nSplits user-supplied values from engine defaults so customers can see\nwhich numbers came from them and which the engine filled in. Every\ndefaulted parameter SHOULD have a corresponding entry in `assumptions`\n— the bridge layer enforces this when wrapping engine output.",
        +                "properties": {
        +                  "assumptions": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "engine_defaults": {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  "resolved_from_description": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "additionalProperties": false,
        +                          "description": "Schema § 1.2 — a parameter resolved by the forgiving-input layer.\n\nPopulated by the Track B-Forgiving Haiku-4.5 resolution pass; until that\nlayer lands, instances are constructed only by tests. `source` distinguishes\nthe resolution path so customers can audit which fields were inferred.",
        +                          "properties": {
        +                            "confidence": {
        +                              "anyOf": [
        +                                {
        +                                  "enum": [
        +                                    "high",
        +                                    "medium",
        +                                    "low"
        +                                  ],
        +                                  "type": "string"
        +                                },
        +                                {
        +                                  "type": "null"
        +                                }
        +                              ],
        +                              "default": null
        +                            },
        +                            "field_name": {
        +                              "minLength": 1,
        +                              "type": "string"
        +                            },
        +                            "resolved_value": {},
        +                            "source": {
        +                              "enum": [
        +                                "description_field",
        +                                "haiku_resolution",
        +                                "engine_default"
        +                              ],
        +                              "type": "string"
        +                            }
        +                          },
        +                          "required": [
        +                            "field_name",
        +                            "resolved_value",
        +                            "source"
        +                          ],
        +                          "type": "object"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "user_supplied": {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  }
        +                },
        +                "type": "object"
        +              },
        +              "standard": {
        +                "enum": [
        +                  "CESMM4",
        +                  "NRM2",
        +                  "SMM7",
        +                  "MMHW"
        +                ],
        +                "type": "string"
        +              },
        +              "text_summary": {
        +                "maxLength": 2000,
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "totals_summary": {
        +                "additionalProperties": false,
        +                "description": "Schema § 1.4 — totals_summary as a typed wrapper around the free-form dict.\n\nWire shape is a flat object (`{\"concrete_m3\": {...}, \"rebar_t\": {...}}`).\nWe model it as `RootModel`-equivalent via `model_config(extra=\"allow\")`\n+ a single `__root__`-style `entries` dict. Pydantic v2 recommends\n`RootModel` for free-form roots; using a wrapper class keeps the import\nsurface uniform with the rest of this module.",
        +                "properties": {
        +                  "entries": {
        +                    "additionalProperties": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.4 — single material/work-class total entry.",
        +                      "properties": {
        +                        "quantity": {
        +                          "minimum": 0,
        +                          "type": "number"
        +                        },
        +                        "unit": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "quantity",
        +                        "unit"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "object"
        +                  }
        +                },
        +                "type": "object"
        +              },
        +              "warnings": {
        +                "items": {
        +                  "additionalProperties": false,
        +                  "description": "Schema § 1.8 — a non-fatal geometry advisory (56th-fire T2).\n\nThe wire projection of the engine's `core.GeometryWarning`. Advisory only:\na warning NEVER changes a measured quantity — it flags geometry that is\nvalid but likely a mistake (e.g. a stale dependent-height default). Present\non BOTH tiers — a correctness/safety signal, not a paid feature.",
        +                  "properties": {
        +                    "affected_params": {
        +                      "items": {
        +                        "type": "string"
        +                      },
        +                      "type": "array"
        +                    },
        +                    "code": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "detail": {
        +                      "additionalProperties": {
        +                        "type": "number"
        +                      },
        +                      "type": "object"
        +                    },
        +                    "message": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "severity": {
        +                      "enum": [
        +                        "info",
        +                        "advisory",
        +                        "caution"
        +                      ],
        +                      "type": "string"
        +                    }
        +                  },
        +                  "required": [
        +                    "code",
        +                    "severity",
        +                    "message"
        +                  ],
        +                  "type": "object"
        +                },
        +                "type": "array"
        +              }
        +            },
        +            "required": [
        +              "assembly_slug",
        +              "standard",
        +              "parameters_used",
        +              "boq_rows",
        +              "totals_summary",
        +              "text_summary"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      },
        +      "error": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        +            "properties": {
        +              "code": {
        +                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        +                "enum": [
        +                  "RATE_LIMIT_EXCEEDED",
        +                  "TIER_INSUFFICIENT",
        +                  "INVALID_INPUT",
        +                  "SCHEMA_VERSION_MISMATCH",
        +                  "SCHEMA_INVARIANT_VIOLATION",
        +                  "UPSTREAM_TIMEOUT",
        +                  "BACKEND_FAILURE",
        +                  "IP_BLOCKED",
        +                  "RESOURCE_NOT_FOUND",
        +                  "RENDER_FAILURE",
        +                  "OCR_LOW_CONFIDENCE",
        +                  "MANUAL_REVIEW_REQUIRED",
        +                  "ACCEPTANCE_REQUIRED",
        +                  "INVALID_TOKEN"
        +                ],
        +                "type": "string"
        +              },
        +              "details": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "message": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "recoverable": {
        +                "type": "boolean"
        +              },
        +              "retry_after_seconds": {
        +                "anyOf": [
        +                  {
        +                    "minimum": 0,
        +                    "type": "integer"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              }
        +            },
        +            "required": [
        +              "code",
        +              "message",
        +              "recoverable"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      }
        +    },
        +    "required": [
        +      "_meta"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "_meta": {
        +        "additionalProperties": false,
        +        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        +        "properties": {
        +          "deliverables": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        +                "properties": {
        +                  "docx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "dxf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "expires_at": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  },
        +                  "pdf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "xlsx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "expires_at"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "document_id": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "issued_at": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "rate_limit_remaining": {
        +            "anyOf": [
        +              {
        +                "minimum": 0,
        +                "type": "integer"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "request_id": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "schema_version": {
        +            "const": "1.0.0",
        +            "default": "1.0.0",
        +            "type": "string"
        +          },
        +          "scope_boundary": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        +                "properties": {
        +                  "not_in_scope": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "produced": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "recommended_companions": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "type": "string"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "produced",
        +                  "not_in_scope"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tier": {
        +            "enum": [
        +              "free",
        +              "paid"
        +            ],
        +            "type": "string"
        +          },
        +          "tier_upgrade": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        +                "properties": {
        +                  "available_tiers": {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        +                      "properties": {
        +                        "billing": {
        +                          "enum": [
        +                            "one_off",
        +                            "monthly",
        +                            "annual"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "currency": {
        +                          "enum": [
        +                            "GBP",
        +                            "SGD",
        +                            "EUR",
        +                            "USD",
        +                            "CAD",
        +                            "AUD",
        +                            "NZD",
        +                            "MYR"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "display_name": {
        +                          "type": "string"
        +                        },
        +                        "price_local": {
        +                          "type": "number"
        +                        },
        +                        "tier_slug": {
        +                          "enum": [
        +                            "7_day_pass",
        +                            "solo",
        +                            "studio",
        +                            "practice"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "unlock_summary": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "tier_slug",
        +                        "display_name",
        +                        "price_local",
        +                        "currency",
        +                        "billing",
        +                        "unlock_summary"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "current_tier": {
        +                    "const": "free",
        +                    "default": "free",
        +                    "type": "string"
        +                  },
        +                  "pass_credit": {
        +                    "anyOf": [
        +                      {
        +                        "additionalProperties": false,
        +                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        +                        "properties": {
        +                          "amount_local": {
        +                            "type": "number"
        +                          },
        +                          "applies_to": {
        +                            "const": "solo_first_month",
        +                            "default": "solo_first_month",
        +                            "type": "string"
        +                          },
        +                          "currency": {
        +                            "type": "string"
        +                          },
        +                          "redeemable_until": {
        +                            "type": "string"
        +                          }
        +                        },
        +                        "required": [
        +                          "amount_local",
        +                          "currency",
        +                          "redeemable_until"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "pricing_url": {
        +                    "default": "https://civilquants.com/pricing",
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "available_tiers"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tos_url": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "upgrade_hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "warranty_disclaimer": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          }
        +        },
        +        "required": [
        +          "request_id",
        +          "issued_at",
        +          "tier"
        +        ],
        +        "type": "object"
        +      },
        +      "data": {
        +        "default": null,
        +        "title": "Data"
        +      },
        +      "error": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        +            "properties": {
        +              "code": {
        +                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        +                "enum": [
        +                  "RATE_LIMIT_EXCEEDED",
        +                  "TIER_INSUFFICIENT",
        +                  "INVALID_INPUT",
        +                  "SCHEMA_VERSION_MISMATCH",
        +                  "SCHEMA_INVARIANT_VIOLATION",
        +                  "UPSTREAM_TIMEOUT",
        +                  "BACKEND_FAILURE",
        +                  "IP_BLOCKED",
        +                  "RESOURCE_NOT_FOUND",
        +                  "RENDER_FAILURE",
        +                  "OCR_LOW_CONFIDENCE",
        +                  "MANUAL_REVIEW_REQUIRED",
        +                  "ACCEPTANCE_REQUIRED",
        +                  "INVALID_TOKEN"
        +                ],
        +                "type": "string"
        +              },
        +              "details": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "message": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "recoverable": {
        +                "type": "boolean"
        +              },
        +              "retry_after_seconds": {
        +                "anyOf": [
        +                  {
        +                    "minimum": 0,
        +                    "type": "integer"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              }
        +            },
        +            "required": [
        +              "code",
        +              "message",
        +              "recoverable"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      }
        +    },
        +    "required": [
        +      "_meta"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedcompute_cantilever_wall1 field changed
      • changedOutput schema / properties / result / anyOf
        Previous value: -[
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "_meta": {
        -        "additionalProperties": false,
        -        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        -        "properties": {
        -          "deliverables": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        -                "properties": {
        -                  "docx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "dxf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "expires_at": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  },
        -                  "pdf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "xlsx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "expires_at"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "document_id": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "issued_at": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "rate_limit_remaining": {
        -            "anyOf": [
        -              {
        -                "minimum": 0,
        -                "type": "integer"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "request_id": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "schema_version": {
        -            "const": "1.0.0",
        -            "default": "1.0.0",
        -            "type": "string"
        -          },
        -          "scope_boundary": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        -                "properties": {
        -                  "not_in_scope": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "produced": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "recommended_companions": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "type": "string"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "produced",
        -                  "not_in_scope"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tier": {
        -            "enum": [
        -              "free",
        -              "paid"
        -            ],
        -            "type": "string"
        -          },
        -          "tier_upgrade": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        -                "properties": {
        -                  "available_tiers": {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        -                      "properties": {
        -                        "billing": {
        -                          "enum": [
        -                            "one_off",
        -                            "monthly",
        -                            "annual"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "currency": {
        -                          "enum": [
        -                            "GBP",
        -                            "SGD",
        -                            "EUR",
        -                            "USD",
        -                            "CAD",
        -                            "AUD",
        -                            "NZD",
        -                            "MYR"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "display_name": {
        -                          "type": "string"
        -                        },
        -                        "price_local": {
        -                          "type": "number"
        -                        },
        -                        "tier_slug": {
        -                          "enum": [
        -                            "7_day_pass",
        -                            "solo",
        -                            "studio",
        -                            "practice"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "unlock_summary": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "tier_slug",
        -                        "display_name",
        -                        "price_local",
        -                        "currency",
        -                        "billing",
        -                        "unlock_summary"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "current_tier": {
        -                    "const": "free",
        -                    "default": "free",
        -                    "type": "string"
        -                  },
        -                  "pass_credit": {
        -                    "anyOf": [
        -                      {
        -                        "additionalProperties": false,
        -                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        -                        "properties": {
        -                          "amount_local": {
        -                            "type": "number"
        -                          },
        -                          "applies_to": {
        -                            "const": "solo_first_month",
        -                            "default": "solo_first_month",
        -                            "type": "string"
        -                          },
        -                          "currency": {
        -                            "type": "string"
        -                          },
        -                          "redeemable_until": {
        -                            "type": "string"
        -                          }
        -                        },
        -                        "required": [
        -                          "amount_local",
        -                          "currency",
        -                          "redeemable_until"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "pricing_url": {
        -                    "default": "https://civilquants.com/pricing",
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "available_tiers"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tos_url": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "upgrade_hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "warranty_disclaimer": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          }
        -        },
        -        "required": [
        -          "request_id",
        -          "issued_at",
        -          "tier"
        -        ],
        -        "type": "object"
        -      },
        -      "data": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Schema § 1.1 — the typed payload returned inside `MCPResponse[ComputeResult]`.\n\nFree-tier responses MUST omit `drawings` and `audit_trail` (the bridge\nenforces this); paid-tier responses populate both. `text_summary` is\nbounded to 2000 chars — keeps the LLM-facing summary token-cheap and\nforces longer narrative into BoQ row descriptions where it belongs.",
        -            "properties": {
        -              "assembly_slug": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "audit_trail": {
        -                "anyOf": [
        -                  {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.7 — paid-tier audit-trail entry.\n\nOne entry per BoQ row; `boq_row_index` ties to the row position in\n`ComputeResult.boq_rows`. `derivation` is the human-readable formula\nwalk-through; `formula` is the optional formal expression.",
        -                      "properties": {
        -                        "boq_row_index": {
        -                          "minimum": 0,
        -                          "type": "integer"
        -                        },
        -                        "derivation": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "formula": {
        -                          "anyOf": [
        -                            {
        -                              "type": "string"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ],
        -                          "default": null
        -                        },
        -                        "id": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "parameters_referenced": {
        -                          "items": {
        -                            "type": "string"
        -                          },
        -                          "type": "array"
        -                        }
        -                      },
        -                      "required": [
        -                        "id",
        -                        "boq_row_index",
        -                        "derivation"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "boq_rows": {
        -                "items": {
        -                  "additionalProperties": false,
        -                  "description": "Schema § 1.3 — a single bill row in the requested standard's format.\n\n`description` is the non-verbatim functional description per spec § 13.9 /\n§ 15 invariant — NEVER reproduces a standard's verbatim clause text.\n`rate` / `amount` ship null because rates are commodity data the customer\nowns; the engine's job is the measurement, not the pricing.",
        -                  "properties": {
        -                    "amount": {
        -                      "anyOf": [
        -                        {
        -                          "type": "number"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "attribution": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "audit_id": {
        -                      "anyOf": [
        -                        {
        -                          "type": "string"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "description": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "quantity": {
        -                      "minimum": 0,
        -                      "type": "number"
        -                    },
        -                    "rate": {
        -                      "anyOf": [
        -                        {
        -                          "type": "number"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "unit": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "work_section": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    }
        -                  },
        -                  "required": [
        -                    "work_section",
        -                    "description",
        -                    "quantity",
        -                    "unit",
        -                    "attribution"
        -                  ],
        -                  "type": "object"
        -                },
        -                "type": "array"
        -              },
        -              "drawings": {
        -                "anyOf": [
        -                  {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.6 — paid-tier drawing artefact pointer.\n\n`url` is an R2-signed URL; expiry is carried in `_meta.deliverables.expires_at`\non the envelope (not duplicated here). `layers` is DXF-only; PDF/SVG\ncallers omit it.",
        -                      "properties": {
        -                        "drawing_type": {
        -                          "enum": [
        -                            "section",
        -                            "plan",
        -                            "elevation",
        -                            "isometric",
        -                            "detail"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "format": {
        -                          "enum": [
        -                            "DXF",
        -                            "PDF",
        -                            "SVG"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "layers": {
        -                          "anyOf": [
        -                            {
        -                              "items": {
        -                                "type": "string"
        -                              },
        -                              "type": "array"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ],
        -                          "default": null
        -                        },
        -                        "scale": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "sheet_size": {
        -                          "enum": [
        -                            "A1",
        -                            "A2",
        -                            "A3",
        -                            "A4"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "url": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "drawing_type",
        -                        "format",
        -                        "url",
        -                        "sheet_size",
        -                        "scale"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "parameters_used": {
        -                "additionalProperties": false,
        -                "description": "Schema § 1.2 — the parameter snapshot the engine actually used.\n\nSplits user-supplied values from engine defaults so customers can see\nwhich numbers came from them and which the engine filled in. Every\ndefaulted parameter SHOULD have a corresponding entry in `assumptions`\n— the bridge layer enforces this when wrapping engine output.",
        -                "properties": {
        -                  "assumptions": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "engine_defaults": {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  "resolved_from_description": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "additionalProperties": false,
        -                          "description": "Schema § 1.2 — a parameter resolved by the forgiving-input layer.\n\nPopulated by the Track B-Forgiving Haiku-4.5 resolution pass; until that\nlayer lands, instances are constructed only by tests. `source` distinguishes\nthe resolution path so customers can audit which fields were inferred.",
        -                          "properties": {
        -                            "confidence": {
        -                              "anyOf": [
        -                                {
        -                                  "enum": [
        -                                    "high",
        -                                    "medium",
        -                                    "low"
        -                                  ],
        -                                  "type": "string"
        -                                },
        -                                {
        -                                  "type": "null"
        -                                }
        -                              ],
        -                              "default": null
        -                            },
        -                            "field_name": {
        -                              "minLength": 1,
        -                              "type": "string"
        -                            },
        -                            "resolved_value": {},
        -                            "source": {
        -                              "enum": [
        -                                "description_field",
        -                                "haiku_resolution",
        -                                "engine_default"
        -                              ],
        -                              "type": "string"
        -                            }
        -                          },
        -                          "required": [
        -                            "field_name",
        -                            "resolved_value",
        -                            "source"
        -                          ],
        -                          "type": "object"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "user_supplied": {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  }
        -                },
        -                "type": "object"
        -              },
        -              "standard": {
        -                "enum": [
        -                  "CESMM4",
        -                  "NRM2",
        -                  "SMM7",
        -                  "MMHW"
        -                ],
        -                "type": "string"
        -              },
        -              "text_summary": {
        -                "maxLength": 2000,
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "totals_summary": {
        -                "additionalProperties": false,
        -                "description": "Schema § 1.4 — totals_summary as a typed wrapper around the free-form dict.\n\nWire shape is a flat object (`{\"concrete_m3\": {...}, \"rebar_t\": {...}}`).\nWe model it as `RootModel`-equivalent via `model_config(extra=\"allow\")`\n+ a single `__root__`-style `entries` dict. Pydantic v2 recommends\n`RootModel` for free-form roots; using a wrapper class keeps the import\nsurface uniform with the rest of this module.",
        -                "properties": {
        -                  "entries": {
        -                    "additionalProperties": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.4 — single material/work-class total entry.",
        -                      "properties": {
        -                        "quantity": {
        -                          "minimum": 0,
        -                          "type": "number"
        -                        },
        -                        "unit": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "quantity",
        -                        "unit"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "object"
        -                  }
        -                },
        -                "type": "object"
        -              }
        -            },
        -            "required": [
        -              "assembly_slug",
        -              "standard",
        -              "parameters_used",
        -              "boq_rows",
        -              "totals_summary",
        -              "text_summary"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      },
        -      "error": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        -            "properties": {
        -              "code": {
        -                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        -                "enum": [
        -                  "RATE_LIMIT_EXCEEDED",
        -                  "TIER_INSUFFICIENT",
        -                  "INVALID_INPUT",
        -                  "SCHEMA_VERSION_MISMATCH",
        -                  "SCHEMA_INVARIANT_VIOLATION",
        -                  "UPSTREAM_TIMEOUT",
        -                  "BACKEND_FAILURE",
        -                  "IP_BLOCKED",
        -                  "RESOURCE_NOT_FOUND",
        -                  "RENDER_FAILURE",
        -                  "OCR_LOW_CONFIDENCE",
        -                  "MANUAL_REVIEW_REQUIRED",
        -                  "ACCEPTANCE_REQUIRED",
        -                  "INVALID_TOKEN"
        -                ],
        -                "type": "string"
        -              },
        -              "details": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "message": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "recoverable": {
        -                "type": "boolean"
        -              },
        -              "retry_after_seconds": {
        -                "anyOf": [
        -                  {
        -                    "minimum": 0,
        -                    "type": "integer"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              }
        -            },
        -            "required": [
        -              "code",
        -              "message",
        -              "recoverable"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      }
        -    },
        -    "required": [
        -      "_meta"
        -    ],
        -    "type": "object"
        -  },
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "_meta": {
        -        "additionalProperties": false,
        -        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        -        "properties": {
        -          "deliverables": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        -                "properties": {
        -                  "docx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "dxf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "expires_at": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  },
        -                  "pdf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "xlsx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "expires_at"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "document_id": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "issued_at": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "rate_limit_remaining": {
        -            "anyOf": [
        -              {
        -                "minimum": 0,
        -                "type": "integer"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "request_id": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "schema_version": {
        -            "const": "1.0.0",
        -            "default": "1.0.0",
        -            "type": "string"
        -          },
        -          "scope_boundary": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        -                "properties": {
        -                  "not_in_scope": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "produced": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "recommended_companions": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "type": "string"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "produced",
        -                  "not_in_scope"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tier": {
        -            "enum": [
        -              "free",
        -              "paid"
        -            ],
        -            "type": "string"
        -          },
        -          "tier_upgrade": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        -                "properties": {
        -                  "available_tiers": {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        -                      "properties": {
        -                        "billing": {
        -                          "enum": [
        -                            "one_off",
        -                            "monthly",
        -                            "annual"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "currency": {
        -                          "enum": [
        -                            "GBP",
        -                            "SGD",
        -                            "EUR",
        -                            "USD",
        -                            "CAD",
        -                            "AUD",
        -                            "NZD",
        -                            "MYR"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "display_name": {
        -                          "type": "string"
        -                        },
        -                        "price_local": {
        -                          "type": "number"
        -                        },
        -                        "tier_slug": {
        -                          "enum": [
        -                            "7_day_pass",
        -                            "solo",
        -                            "studio",
        -                            "practice"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "unlock_summary": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "tier_slug",
        -                        "display_name",
        -                        "price_local",
        -                        "currency",
        -                        "billing",
        -                        "unlock_summary"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "current_tier": {
        -                    "const": "free",
        -                    "default": "free",
        -                    "type": "string"
        -                  },
        -                  "pass_credit": {
        -                    "anyOf": [
        -                      {
        -                        "additionalProperties": false,
        -                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        -                        "properties": {
        -                          "amount_local": {
        -                            "type": "number"
        -                          },
        -                          "applies_to": {
        -                            "const": "solo_first_month",
        -                            "default": "solo_first_month",
        -                            "type": "string"
        -                          },
        -                          "currency": {
        -                            "type": "string"
        -                          },
        -                          "redeemable_until": {
        -                            "type": "string"
        -                          }
        -                        },
        -                        "required": [
        -                          "amount_local",
        -                          "currency",
        -                          "redeemable_until"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "pricing_url": {
        -                    "default": "https://civilquants.com/pricing",
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "available_tiers"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tos_url": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "upgrade_hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "warranty_disclaimer": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          }
        -        },
        -        "required": [
        -          "request_id",
        -          "issued_at",
        -          "tier"
        -        ],
        -        "type": "object"
        -      },
        -      "data": {
        -        "default": null,
        -        "title": "Data"
        -      },
        -      "error": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        -            "properties": {
        -              "code": {
        -                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        -                "enum": [
        -                  "RATE_LIMIT_EXCEEDED",
        -                  "TIER_INSUFFICIENT",
        -                  "INVALID_INPUT",
        -                  "SCHEMA_VERSION_MISMATCH",
        -                  "SCHEMA_INVARIANT_VIOLATION",
        -                  "UPSTREAM_TIMEOUT",
        -                  "BACKEND_FAILURE",
        -                  "IP_BLOCKED",
        -                  "RESOURCE_NOT_FOUND",
        -                  "RENDER_FAILURE",
        -                  "OCR_LOW_CONFIDENCE",
        -                  "MANUAL_REVIEW_REQUIRED",
        -                  "ACCEPTANCE_REQUIRED",
        -                  "INVALID_TOKEN"
        -                ],
        -                "type": "string"
        -              },
        -              "details": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "message": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "recoverable": {
        -                "type": "boolean"
        -              },
        -              "retry_after_seconds": {
        -                "anyOf": [
        -                  {
        -                    "minimum": 0,
        -                    "type": "integer"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              }
        -            },
        -            "required": [
        -              "code",
        -              "message",
        -              "recoverable"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      }
        -    },
        -    "required": [
        -      "_meta"
        -    ],
        -    "type": "object"
        -  }
        -]New value: +[
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "_meta": {
        +        "additionalProperties": false,
        +        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        +        "properties": {
        +          "deliverables": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        +                "properties": {
        +                  "docx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "dxf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "expires_at": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  },
        +                  "pdf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "xlsx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "expires_at"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "document_id": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "issued_at": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "rate_limit_remaining": {
        +            "anyOf": [
        +              {
        +                "minimum": 0,
        +                "type": "integer"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "request_id": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "schema_version": {
        +            "const": "1.0.0",
        +            "default": "1.0.0",
        +            "type": "string"
        +          },
        +          "scope_boundary": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        +                "properties": {
        +                  "not_in_scope": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "produced": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "recommended_companions": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "type": "string"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "produced",
        +                  "not_in_scope"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tier": {
        +            "enum": [
        +              "free",
        +              "paid"
        +            ],
        +            "type": "string"
        +          },
        +          "tier_upgrade": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        +                "properties": {
        +                  "available_tiers": {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        +                      "properties": {
        +                        "billing": {
        +                          "enum": [
        +                            "one_off",
        +                            "monthly",
        +                            "annual"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "currency": {
        +                          "enum": [
        +                            "GBP",
        +                            "SGD",
        +                            "EUR",
        +                            "USD",
        +                            "CAD",
        +                            "AUD",
        +                            "NZD",
        +                            "MYR"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "display_name": {
        +                          "type": "string"
        +                        },
        +                        "price_local": {
        +                          "type": "number"
        +                        },
        +                        "tier_slug": {
        +                          "enum": [
        +                            "7_day_pass",
        +                            "solo",
        +                            "studio",
        +                            "practice"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "unlock_summary": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "tier_slug",
        +                        "display_name",
        +                        "price_local",
        +                        "currency",
        +                        "billing",
        +                        "unlock_summary"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "current_tier": {
        +                    "const": "free",
        +                    "default": "free",
        +                    "type": "string"
        +                  },
        +                  "pass_credit": {
        +                    "anyOf": [
        +                      {
        +                        "additionalProperties": false,
        +                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        +                        "properties": {
        +                          "amount_local": {
        +                            "type": "number"
        +                          },
        +                          "applies_to": {
        +                            "const": "solo_first_month",
        +                            "default": "solo_first_month",
        +                            "type": "string"
        +                          },
        +                          "currency": {
        +                            "type": "string"
        +                          },
        +                          "redeemable_until": {
        +                            "type": "string"
        +                          }
        +                        },
        +                        "required": [
        +                          "amount_local",
        +                          "currency",
        +                          "redeemable_until"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "pricing_url": {
        +                    "default": "https://civilquants.com/pricing",
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "available_tiers"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tos_url": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "upgrade_hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "warranty_disclaimer": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          }
        +        },
        +        "required": [
        +          "request_id",
        +          "issued_at",
        +          "tier"
        +        ],
        +        "type": "object"
        +      },
        +      "data": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Schema § 1.1 — the typed payload returned inside `MCPResponse[ComputeResult]`.\n\nFree-tier responses MUST omit `drawings` and `audit_trail` (the bridge\nenforces this); paid-tier responses populate both. `text_summary` is\nbounded to 2000 chars — keeps the LLM-facing summary token-cheap and\nforces longer narrative into BoQ row descriptions where it belongs.\n`warnings` is the non-fatal geometry advisory list (both tiers).",
        +            "properties": {
        +              "assembly_slug": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "audit_trail": {
        +                "anyOf": [
        +                  {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.7 — paid-tier audit-trail entry.\n\nOne entry per BoQ row; `boq_row_index` ties to the row position in\n`ComputeResult.boq_rows`. `derivation` is the human-readable formula\nwalk-through; `formula` is the optional formal expression.",
        +                      "properties": {
        +                        "boq_row_index": {
        +                          "minimum": 0,
        +                          "type": "integer"
        +                        },
        +                        "derivation": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "formula": {
        +                          "anyOf": [
        +                            {
        +                              "type": "string"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ],
        +                          "default": null
        +                        },
        +                        "id": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "parameters_referenced": {
        +                          "items": {
        +                            "type": "string"
        +                          },
        +                          "type": "array"
        +                        }
        +                      },
        +                      "required": [
        +                        "id",
        +                        "boq_row_index",
        +                        "derivation"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "boq_rows": {
        +                "items": {
        +                  "additionalProperties": false,
        +                  "description": "Schema § 1.3 — a single bill row in the requested standard's format.\n\n`description` is the non-verbatim functional description per spec § 13.9 /\n§ 15 invariant — NEVER reproduces a standard's verbatim clause text.\n`rate` / `amount` ship null because rates are commodity data the customer\nowns; the engine's job is the measurement, not the pricing.",
        +                  "properties": {
        +                    "amount": {
        +                      "anyOf": [
        +                        {
        +                          "type": "number"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "attribution": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "audit_id": {
        +                      "anyOf": [
        +                        {
        +                          "type": "string"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "description": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "quantity": {
        +                      "minimum": 0,
        +                      "type": "number"
        +                    },
        +                    "rate": {
        +                      "anyOf": [
        +                        {
        +                          "type": "number"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "unit": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "work_section": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    }
        +                  },
        +                  "required": [
        +                    "work_section",
        +                    "description",
        +                    "quantity",
        +                    "unit",
        +                    "attribution"
        +                  ],
        +                  "type": "object"
        +                },
        +                "type": "array"
        +              },
        +              "drawings": {
        +                "anyOf": [
        +                  {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.6 — paid-tier drawing artefact pointer.\n\n`url` is an R2-signed URL; expiry is carried in `_meta.deliverables.expires_at`\non the envelope (not duplicated here). `layers` is DXF-only; PDF/SVG\ncallers omit it.",
        +                      "properties": {
        +                        "drawing_type": {
        +                          "enum": [
        +                            "section",
        +                            "plan",
        +                            "elevation",
        +                            "isometric",
        +                            "detail"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "format": {
        +                          "enum": [
        +                            "DXF",
        +                            "PDF",
        +                            "SVG"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "layers": {
        +                          "anyOf": [
        +                            {
        +                              "items": {
        +                                "type": "string"
        +                              },
        +                              "type": "array"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ],
        +                          "default": null
        +                        },
        +                        "scale": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "sheet_size": {
        +                          "enum": [
        +                            "A1",
        +                            "A2",
        +                            "A3",
        +                            "A4"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "url": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "drawing_type",
        +                        "format",
        +                        "url",
        +                        "sheet_size",
        +                        "scale"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "parameters_used": {
        +                "additionalProperties": false,
        +                "description": "Schema § 1.2 — the parameter snapshot the engine actually used.\n\nSplits user-supplied values from engine defaults so customers can see\nwhich numbers came from them and which the engine filled in. Every\ndefaulted parameter SHOULD have a corresponding entry in `assumptions`\n— the bridge layer enforces this when wrapping engine output.",
        +                "properties": {
        +                  "assumptions": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "engine_defaults": {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  "resolved_from_description": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "additionalProperties": false,
        +                          "description": "Schema § 1.2 — a parameter resolved by the forgiving-input layer.\n\nPopulated by the Track B-Forgiving Haiku-4.5 resolution pass; until that\nlayer lands, instances are constructed only by tests. `source` distinguishes\nthe resolution path so customers can audit which fields were inferred.",
        +                          "properties": {
        +                            "confidence": {
        +                              "anyOf": [
        +                                {
        +                                  "enum": [
        +                                    "high",
        +                                    "medium",
        +                                    "low"
        +                                  ],
        +                                  "type": "string"
        +                                },
        +                                {
        +                                  "type": "null"
        +                                }
        +                              ],
        +                              "default": null
        +                            },
        +                            "field_name": {
        +                              "minLength": 1,
        +                              "type": "string"
        +                            },
        +                            "resolved_value": {},
        +                            "source": {
        +                              "enum": [
        +                                "description_field",
        +                                "haiku_resolution",
        +                                "engine_default"
        +                              ],
        +                              "type": "string"
        +                            }
        +                          },
        +                          "required": [
        +                            "field_name",
        +                            "resolved_value",
        +                            "source"
        +                          ],
        +                          "type": "object"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "user_supplied": {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  }
        +                },
        +                "type": "object"
        +              },
        +              "standard": {
        +                "enum": [
        +                  "CESMM4",
        +                  "NRM2",
        +                  "SMM7",
        +                  "MMHW"
        +                ],
        +                "type": "string"
        +              },
        +              "text_summary": {
        +                "maxLength": 2000,
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "totals_summary": {
        +                "additionalProperties": false,
        +                "description": "Schema § 1.4 — totals_summary as a typed wrapper around the free-form dict.\n\nWire shape is a flat object (`{\"concrete_m3\": {...}, \"rebar_t\": {...}}`).\nWe model it as `RootModel`-equivalent via `model_config(extra=\"allow\")`\n+ a single `__root__`-style `entries` dict. Pydantic v2 recommends\n`RootModel` for free-form roots; using a wrapper class keeps the import\nsurface uniform with the rest of this module.",
        +                "properties": {
        +                  "entries": {
        +                    "additionalProperties": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.4 — single material/work-class total entry.",
        +                      "properties": {
        +                        "quantity": {
        +                          "minimum": 0,
        +                          "type": "number"
        +                        },
        +                        "unit": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "quantity",
        +                        "unit"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "object"
        +                  }
        +                },
        +                "type": "object"
        +              },
        +              "warnings": {
        +                "items": {
        +                  "additionalProperties": false,
        +                  "description": "Schema § 1.8 — a non-fatal geometry advisory (56th-fire T2).\n\nThe wire projection of the engine's `core.GeometryWarning`. Advisory only:\na warning NEVER changes a measured quantity — it flags geometry that is\nvalid but likely a mistake (e.g. a stale dependent-height default). Present\non BOTH tiers — a correctness/safety signal, not a paid feature.",
        +                  "properties": {
        +                    "affected_params": {
        +                      "items": {
        +                        "type": "string"
        +                      },
        +                      "type": "array"
        +                    },
        +                    "code": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "detail": {
        +                      "additionalProperties": {
        +                        "type": "number"
        +                      },
        +                      "type": "object"
        +                    },
        +                    "message": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "severity": {
        +                      "enum": [
        +                        "info",
        +                        "advisory",
        +                        "caution"
        +                      ],
        +                      "type": "string"
        +                    }
        +                  },
        +                  "required": [
        +                    "code",
        +                    "severity",
        +                    "message"
        +                  ],
        +                  "type": "object"
        +                },
        +                "type": "array"
        +              }
        +            },
        +            "required": [
        +              "assembly_slug",
        +              "standard",
        +              "parameters_used",
        +              "boq_rows",
        +              "totals_summary",
        +              "text_summary"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      },
        +      "error": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        +            "properties": {
        +              "code": {
        +                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        +                "enum": [
        +                  "RATE_LIMIT_EXCEEDED",
        +                  "TIER_INSUFFICIENT",
        +                  "INVALID_INPUT",
        +                  "SCHEMA_VERSION_MISMATCH",
        +                  "SCHEMA_INVARIANT_VIOLATION",
        +                  "UPSTREAM_TIMEOUT",
        +                  "BACKEND_FAILURE",
        +                  "IP_BLOCKED",
        +                  "RESOURCE_NOT_FOUND",
        +                  "RENDER_FAILURE",
        +                  "OCR_LOW_CONFIDENCE",
        +                  "MANUAL_REVIEW_REQUIRED",
        +                  "ACCEPTANCE_REQUIRED",
        +                  "INVALID_TOKEN"
        +                ],
        +                "type": "string"
        +              },
        +              "details": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "message": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "recoverable": {
        +                "type": "boolean"
        +              },
        +              "retry_after_seconds": {
        +                "anyOf": [
        +                  {
        +                    "minimum": 0,
        +                    "type": "integer"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              }
        +            },
        +            "required": [
        +              "code",
        +              "message",
        +              "recoverable"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      }
        +    },
        +    "required": [
        +      "_meta"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "_meta": {
        +        "additionalProperties": false,
        +        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        +        "properties": {
        +          "deliverables": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        +                "properties": {
        +                  "docx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "dxf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "expires_at": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  },
        +                  "pdf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "xlsx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "expires_at"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "document_id": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "issued_at": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "rate_limit_remaining": {
        +            "anyOf": [
        +              {
        +                "minimum": 0,
        +                "type": "integer"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "request_id": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "schema_version": {
        +            "const": "1.0.0",
        +            "default": "1.0.0",
        +            "type": "string"
        +          },
        +          "scope_boundary": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        +                "properties": {
        +                  "not_in_scope": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "produced": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "recommended_companions": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "type": "string"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "produced",
        +                  "not_in_scope"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tier": {
        +            "enum": [
        +              "free",
        +              "paid"
        +            ],
        +            "type": "string"
        +          },
        +          "tier_upgrade": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        +                "properties": {
        +                  "available_tiers": {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        +                      "properties": {
        +                        "billing": {
        +                          "enum": [
        +                            "one_off",
        +                            "monthly",
        +                            "annual"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "currency": {
        +                          "enum": [
        +                            "GBP",
        +                            "SGD",
        +                            "EUR",
        +                            "USD",
        +                            "CAD",
        +                            "AUD",
        +                            "NZD",
        +                            "MYR"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "display_name": {
        +                          "type": "string"
        +                        },
        +                        "price_local": {
        +                          "type": "number"
        +                        },
        +                        "tier_slug": {
        +                          "enum": [
        +                            "7_day_pass",
        +                            "solo",
        +                            "studio",
        +                            "practice"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "unlock_summary": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "tier_slug",
        +                        "display_name",
        +                        "price_local",
        +                        "currency",
        +                        "billing",
        +                        "unlock_summary"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "current_tier": {
        +                    "const": "free",
        +                    "default": "free",
        +                    "type": "string"
        +                  },
        +                  "pass_credit": {
        +                    "anyOf": [
        +                      {
        +                        "additionalProperties": false,
        +                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        +                        "properties": {
        +                          "amount_local": {
        +                            "type": "number"
        +                          },
        +                          "applies_to": {
        +                            "const": "solo_first_month",
        +                            "default": "solo_first_month",
        +                            "type": "string"
        +                          },
        +                          "currency": {
        +                            "type": "string"
        +                          },
        +                          "redeemable_until": {
        +                            "type": "string"
        +                          }
        +                        },
        +                        "required": [
        +                          "amount_local",
        +                          "currency",
        +                          "redeemable_until"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "pricing_url": {
        +                    "default": "https://civilquants.com/pricing",
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "available_tiers"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tos_url": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "upgrade_hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "warranty_disclaimer": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          }
        +        },
        +        "required": [
        +          "request_id",
        +          "issued_at",
        +          "tier"
        +        ],
        +        "type": "object"
        +      },
        +      "data": {
        +        "default": null,
        +        "title": "Data"
        +      },
        +      "error": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        +            "properties": {
        +              "code": {
        +                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        +                "enum": [
        +                  "RATE_LIMIT_EXCEEDED",
        +                  "TIER_INSUFFICIENT",
        +                  "INVALID_INPUT",
        +                  "SCHEMA_VERSION_MISMATCH",
        +                  "SCHEMA_INVARIANT_VIOLATION",
        +                  "UPSTREAM_TIMEOUT",
        +                  "BACKEND_FAILURE",
        +                  "IP_BLOCKED",
        +                  "RESOURCE_NOT_FOUND",
        +                  "RENDER_FAILURE",
        +                  "OCR_LOW_CONFIDENCE",
        +                  "MANUAL_REVIEW_REQUIRED",
        +                  "ACCEPTANCE_REQUIRED",
        +                  "INVALID_TOKEN"
        +                ],
        +                "type": "string"
        +              },
        +              "details": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "message": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "recoverable": {
        +                "type": "boolean"
        +              },
        +              "retry_after_seconds": {
        +                "anyOf": [
        +                  {
        +                    "minimum": 0,
        +                    "type": "integer"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              }
        +            },
        +            "required": [
        +              "code",
        +              "message",
        +              "recoverable"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      }
        +    },
        +    "required": [
        +      "_meta"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedcompute_carrier_pipe_run1 field changed
      • changedOutput schema / properties / result / anyOf
        Previous value: -[
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "_meta": {
        -        "additionalProperties": false,
        -        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        -        "properties": {
        -          "deliverables": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        -                "properties": {
        -                  "docx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "dxf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "expires_at": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  },
        -                  "pdf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "xlsx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "expires_at"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "document_id": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "issued_at": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "rate_limit_remaining": {
        -            "anyOf": [
        -              {
        -                "minimum": 0,
        -                "type": "integer"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "request_id": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "schema_version": {
        -            "const": "1.0.0",
        -            "default": "1.0.0",
        -            "type": "string"
        -          },
        -          "scope_boundary": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        -                "properties": {
        -                  "not_in_scope": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "produced": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "recommended_companions": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "type": "string"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "produced",
        -                  "not_in_scope"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tier": {
        -            "enum": [
        -              "free",
        -              "paid"
        -            ],
        -            "type": "string"
        -          },
        -          "tier_upgrade": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        -                "properties": {
        -                  "available_tiers": {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        -                      "properties": {
        -                        "billing": {
        -                          "enum": [
        -                            "one_off",
        -                            "monthly",
        -                            "annual"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "currency": {
        -                          "enum": [
        -                            "GBP",
        -                            "SGD",
        -                            "EUR",
        -                            "USD",
        -                            "CAD",
        -                            "AUD",
        -                            "NZD",
        -                            "MYR"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "display_name": {
        -                          "type": "string"
        -                        },
        -                        "price_local": {
        -                          "type": "number"
        -                        },
        -                        "tier_slug": {
        -                          "enum": [
        -                            "7_day_pass",
        -                            "solo",
        -                            "studio",
        -                            "practice"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "unlock_summary": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "tier_slug",
        -                        "display_name",
        -                        "price_local",
        -                        "currency",
        -                        "billing",
        -                        "unlock_summary"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "current_tier": {
        -                    "const": "free",
        -                    "default": "free",
        -                    "type": "string"
        -                  },
        -                  "pass_credit": {
        -                    "anyOf": [
        -                      {
        -                        "additionalProperties": false,
        -                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        -                        "properties": {
        -                          "amount_local": {
        -                            "type": "number"
        -                          },
        -                          "applies_to": {
        -                            "const": "solo_first_month",
        -                            "default": "solo_first_month",
        -                            "type": "string"
        -                          },
        -                          "currency": {
        -                            "type": "string"
        -                          },
        -                          "redeemable_until": {
        -                            "type": "string"
        -                          }
        -                        },
        -                        "required": [
        -                          "amount_local",
        -                          "currency",
        -                          "redeemable_until"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "pricing_url": {
        -                    "default": "https://civilquants.com/pricing",
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "available_tiers"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tos_url": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "upgrade_hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "warranty_disclaimer": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          }
        -        },
        -        "required": [
        -          "request_id",
        -          "issued_at",
        -          "tier"
        -        ],
        -        "type": "object"
        -      },
        -      "data": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Schema § 1.1 — the typed payload returned inside `MCPResponse[ComputeResult]`.\n\nFree-tier responses MUST omit `drawings` and `audit_trail` (the bridge\nenforces this); paid-tier responses populate both. `text_summary` is\nbounded to 2000 chars — keeps the LLM-facing summary token-cheap and\nforces longer narrative into BoQ row descriptions where it belongs.",
        -            "properties": {
        -              "assembly_slug": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "audit_trail": {
        -                "anyOf": [
        -                  {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.7 — paid-tier audit-trail entry.\n\nOne entry per BoQ row; `boq_row_index` ties to the row position in\n`ComputeResult.boq_rows`. `derivation` is the human-readable formula\nwalk-through; `formula` is the optional formal expression.",
        -                      "properties": {
        -                        "boq_row_index": {
        -                          "minimum": 0,
        -                          "type": "integer"
        -                        },
        -                        "derivation": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "formula": {
        -                          "anyOf": [
        -                            {
        -                              "type": "string"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ],
        -                          "default": null
        -                        },
        -                        "id": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "parameters_referenced": {
        -                          "items": {
        -                            "type": "string"
        -                          },
        -                          "type": "array"
        -                        }
        -                      },
        -                      "required": [
        -                        "id",
        -                        "boq_row_index",
        -                        "derivation"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "boq_rows": {
        -                "items": {
        -                  "additionalProperties": false,
        -                  "description": "Schema § 1.3 — a single bill row in the requested standard's format.\n\n`description` is the non-verbatim functional description per spec § 13.9 /\n§ 15 invariant — NEVER reproduces a standard's verbatim clause text.\n`rate` / `amount` ship null because rates are commodity data the customer\nowns; the engine's job is the measurement, not the pricing.",
        -                  "properties": {
        -                    "amount": {
        -                      "anyOf": [
        -                        {
        -                          "type": "number"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "attribution": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "audit_id": {
        -                      "anyOf": [
        -                        {
        -                          "type": "string"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "description": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "quantity": {
        -                      "minimum": 0,
        -                      "type": "number"
        -                    },
        -                    "rate": {
        -                      "anyOf": [
        -                        {
        -                          "type": "number"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "unit": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "work_section": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    }
        -                  },
        -                  "required": [
        -                    "work_section",
        -                    "description",
        -                    "quantity",
        -                    "unit",
        -                    "attribution"
        -                  ],
        -                  "type": "object"
        -                },
        -                "type": "array"
        -              },
        -              "drawings": {
        -                "anyOf": [
        -                  {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.6 — paid-tier drawing artefact pointer.\n\n`url` is an R2-signed URL; expiry is carried in `_meta.deliverables.expires_at`\non the envelope (not duplicated here). `layers` is DXF-only; PDF/SVG\ncallers omit it.",
        -                      "properties": {
        -                        "drawing_type": {
        -                          "enum": [
        -                            "section",
        -                            "plan",
        -                            "elevation",
        -                            "isometric",
        -                            "detail"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "format": {
        -                          "enum": [
        -                            "DXF",
        -                            "PDF",
        -                            "SVG"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "layers": {
        -                          "anyOf": [
        -                            {
        -                              "items": {
        -                                "type": "string"
        -                              },
        -                              "type": "array"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ],
        -                          "default": null
        -                        },
        -                        "scale": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "sheet_size": {
        -                          "enum": [
        -                            "A1",
        -                            "A2",
        -                            "A3",
        -                            "A4"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "url": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "drawing_type",
        -                        "format",
        -                        "url",
        -                        "sheet_size",
        -                        "scale"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "parameters_used": {
        -                "additionalProperties": false,
        -                "description": "Schema § 1.2 — the parameter snapshot the engine actually used.\n\nSplits user-supplied values from engine defaults so customers can see\nwhich numbers came from them and which the engine filled in. Every\ndefaulted parameter SHOULD have a corresponding entry in `assumptions`\n— the bridge layer enforces this when wrapping engine output.",
        -                "properties": {
        -                  "assumptions": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "engine_defaults": {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  "resolved_from_description": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "additionalProperties": false,
        -                          "description": "Schema § 1.2 — a parameter resolved by the forgiving-input layer.\n\nPopulated by the Track B-Forgiving Haiku-4.5 resolution pass; until that\nlayer lands, instances are constructed only by tests. `source` distinguishes\nthe resolution path so customers can audit which fields were inferred.",
        -                          "properties": {
        -                            "confidence": {
        -                              "anyOf": [
        -                                {
        -                                  "enum": [
        -                                    "high",
        -                                    "medium",
        -                                    "low"
        -                                  ],
        -                                  "type": "string"
        -                                },
        -                                {
        -                                  "type": "null"
        -                                }
        -                              ],
        -                              "default": null
        -                            },
        -                            "field_name": {
        -                              "minLength": 1,
        -                              "type": "string"
        -                            },
        -                            "resolved_value": {},
        -                            "source": {
        -                              "enum": [
        -                                "description_field",
        -                                "haiku_resolution",
        -                                "engine_default"
        -                              ],
        -                              "type": "string"
        -                            }
        -                          },
        -                          "required": [
        -                            "field_name",
        -                            "resolved_value",
        -                            "source"
        -                          ],
        -                          "type": "object"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "user_supplied": {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  }
        -                },
        -                "type": "object"
        -              },
        -              "standard": {
        -                "enum": [
        -                  "CESMM4",
        -                  "NRM2",
        -                  "SMM7",
        -                  "MMHW"
        -                ],
        -                "type": "string"
        -              },
        -              "text_summary": {
        -                "maxLength": 2000,
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "totals_summary": {
        -                "additionalProperties": false,
        -                "description": "Schema § 1.4 — totals_summary as a typed wrapper around the free-form dict.\n\nWire shape is a flat object (`{\"concrete_m3\": {...}, \"rebar_t\": {...}}`).\nWe model it as `RootModel`-equivalent via `model_config(extra=\"allow\")`\n+ a single `__root__`-style `entries` dict. Pydantic v2 recommends\n`RootModel` for free-form roots; using a wrapper class keeps the import\nsurface uniform with the rest of this module.",
        -                "properties": {
        -                  "entries": {
        -                    "additionalProperties": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.4 — single material/work-class total entry.",
        -                      "properties": {
        -                        "quantity": {
        -                          "minimum": 0,
        -                          "type": "number"
        -                        },
        -                        "unit": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "quantity",
        -                        "unit"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "object"
        -                  }
        -                },
        -                "type": "object"
        -              }
        -            },
        -            "required": [
        -              "assembly_slug",
        -              "standard",
        -              "parameters_used",
        -              "boq_rows",
        -              "totals_summary",
        -              "text_summary"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      },
        -      "error": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        -            "properties": {
        -              "code": {
        -                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        -                "enum": [
        -                  "RATE_LIMIT_EXCEEDED",
        -                  "TIER_INSUFFICIENT",
        -                  "INVALID_INPUT",
        -                  "SCHEMA_VERSION_MISMATCH",
        -                  "SCHEMA_INVARIANT_VIOLATION",
        -                  "UPSTREAM_TIMEOUT",
        -                  "BACKEND_FAILURE",
        -                  "IP_BLOCKED",
        -                  "RESOURCE_NOT_FOUND",
        -                  "RENDER_FAILURE",
        -                  "OCR_LOW_CONFIDENCE",
        -                  "MANUAL_REVIEW_REQUIRED",
        -                  "ACCEPTANCE_REQUIRED",
        -                  "INVALID_TOKEN"
        -                ],
        -                "type": "string"
        -              },
        -              "details": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "message": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "recoverable": {
        -                "type": "boolean"
        -              },
        -              "retry_after_seconds": {
        -                "anyOf": [
        -                  {
        -                    "minimum": 0,
        -                    "type": "integer"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              }
        -            },
        -            "required": [
        -              "code",
        -              "message",
        -              "recoverable"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      }
        -    },
        -    "required": [
        -      "_meta"
        -    ],
        -    "type": "object"
        -  },
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "_meta": {
        -        "additionalProperties": false,
        -        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        -        "properties": {
        -          "deliverables": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        -                "properties": {
        -                  "docx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "dxf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "expires_at": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  },
        -                  "pdf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "xlsx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "expires_at"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "document_id": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "issued_at": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "rate_limit_remaining": {
        -            "anyOf": [
        -              {
        -                "minimum": 0,
        -                "type": "integer"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "request_id": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "schema_version": {
        -            "const": "1.0.0",
        -            "default": "1.0.0",
        -            "type": "string"
        -          },
        -          "scope_boundary": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        -                "properties": {
        -                  "not_in_scope": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "produced": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "recommended_companions": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "type": "string"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "produced",
        -                  "not_in_scope"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tier": {
        -            "enum": [
        -              "free",
        -              "paid"
        -            ],
        -            "type": "string"
        -          },
        -          "tier_upgrade": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        -                "properties": {
        -                  "available_tiers": {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        -                      "properties": {
        -                        "billing": {
        -                          "enum": [
        -                            "one_off",
        -                            "monthly",
        -                            "annual"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "currency": {
        -                          "enum": [
        -                            "GBP",
        -                            "SGD",
        -                            "EUR",
        -                            "USD",
        -                            "CAD",
        -                            "AUD",
        -                            "NZD",
        -                            "MYR"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "display_name": {
        -                          "type": "string"
        -                        },
        -                        "price_local": {
        -                          "type": "number"
        -                        },
        -                        "tier_slug": {
        -                          "enum": [
        -                            "7_day_pass",
        -                            "solo",
        -                            "studio",
        -                            "practice"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "unlock_summary": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "tier_slug",
        -                        "display_name",
        -                        "price_local",
        -                        "currency",
        -                        "billing",
        -                        "unlock_summary"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "current_tier": {
        -                    "const": "free",
        -                    "default": "free",
        -                    "type": "string"
        -                  },
        -                  "pass_credit": {
        -                    "anyOf": [
        -                      {
        -                        "additionalProperties": false,
        -                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        -                        "properties": {
        -                          "amount_local": {
        -                            "type": "number"
        -                          },
        -                          "applies_to": {
        -                            "const": "solo_first_month",
        -                            "default": "solo_first_month",
        -                            "type": "string"
        -                          },
        -                          "currency": {
        -                            "type": "string"
        -                          },
        -                          "redeemable_until": {
        -                            "type": "string"
        -                          }
        -                        },
        -                        "required": [
        -                          "amount_local",
        -                          "currency",
        -                          "redeemable_until"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "pricing_url": {
        -                    "default": "https://civilquants.com/pricing",
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "available_tiers"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tos_url": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "upgrade_hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "warranty_disclaimer": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          }
        -        },
        -        "required": [
        -          "request_id",
        -          "issued_at",
        -          "tier"
        -        ],
        -        "type": "object"
        -      },
        -      "data": {
        -        "default": null,
        -        "title": "Data"
        -      },
        -      "error": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        -            "properties": {
        -              "code": {
        -                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        -                "enum": [
        -                  "RATE_LIMIT_EXCEEDED",
        -                  "TIER_INSUFFICIENT",
        -                  "INVALID_INPUT",
        -                  "SCHEMA_VERSION_MISMATCH",
        -                  "SCHEMA_INVARIANT_VIOLATION",
        -                  "UPSTREAM_TIMEOUT",
        -                  "BACKEND_FAILURE",
        -                  "IP_BLOCKED",
        -                  "RESOURCE_NOT_FOUND",
        -                  "RENDER_FAILURE",
        -                  "OCR_LOW_CONFIDENCE",
        -                  "MANUAL_REVIEW_REQUIRED",
        -                  "ACCEPTANCE_REQUIRED",
        -                  "INVALID_TOKEN"
        -                ],
        -                "type": "string"
        -              },
        -              "details": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "message": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "recoverable": {
        -                "type": "boolean"
        -              },
        -              "retry_after_seconds": {
        -                "anyOf": [
        -                  {
        -                    "minimum": 0,
        -                    "type": "integer"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              }
        -            },
        -            "required": [
        -              "code",
        -              "message",
        -              "recoverable"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      }
        -    },
        -    "required": [
        -      "_meta"
        -    ],
        -    "type": "object"
        -  }
        -]New value: +[
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "_meta": {
        +        "additionalProperties": false,
        +        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        +        "properties": {
        +          "deliverables": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        +                "properties": {
        +                  "docx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "dxf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "expires_at": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  },
        +                  "pdf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "xlsx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "expires_at"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "document_id": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "issued_at": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "rate_limit_remaining": {
        +            "anyOf": [
        +              {
        +                "minimum": 0,
        +                "type": "integer"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "request_id": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "schema_version": {
        +            "const": "1.0.0",
        +            "default": "1.0.0",
        +            "type": "string"
        +          },
        +          "scope_boundary": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        +                "properties": {
        +                  "not_in_scope": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "produced": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "recommended_companions": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "type": "string"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "produced",
        +                  "not_in_scope"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tier": {
        +            "enum": [
        +              "free",
        +              "paid"
        +            ],
        +            "type": "string"
        +          },
        +          "tier_upgrade": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        +                "properties": {
        +                  "available_tiers": {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        +                      "properties": {
        +                        "billing": {
        +                          "enum": [
        +                            "one_off",
        +                            "monthly",
        +                            "annual"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "currency": {
        +                          "enum": [
        +                            "GBP",
        +                            "SGD",
        +                            "EUR",
        +                            "USD",
        +                            "CAD",
        +                            "AUD",
        +                            "NZD",
        +                            "MYR"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "display_name": {
        +                          "type": "string"
        +                        },
        +                        "price_local": {
        +                          "type": "number"
        +                        },
        +                        "tier_slug": {
        +                          "enum": [
        +                            "7_day_pass",
        +                            "solo",
        +                            "studio",
        +                            "practice"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "unlock_summary": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "tier_slug",
        +                        "display_name",
        +                        "price_local",
        +                        "currency",
        +                        "billing",
        +                        "unlock_summary"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "current_tier": {
        +                    "const": "free",
        +                    "default": "free",
        +                    "type": "string"
        +                  },
        +                  "pass_credit": {
        +                    "anyOf": [
        +                      {
        +                        "additionalProperties": false,
        +                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        +                        "properties": {
        +                          "amount_local": {
        +                            "type": "number"
        +                          },
        +                          "applies_to": {
        +                            "const": "solo_first_month",
        +                            "default": "solo_first_month",
        +                            "type": "string"
        +                          },
        +                          "currency": {
        +                            "type": "string"
        +                          },
        +                          "redeemable_until": {
        +                            "type": "string"
        +                          }
        +                        },
        +                        "required": [
        +                          "amount_local",
        +                          "currency",
        +                          "redeemable_until"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "pricing_url": {
        +                    "default": "https://civilquants.com/pricing",
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "available_tiers"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tos_url": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "upgrade_hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "warranty_disclaimer": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          }
        +        },
        +        "required": [
        +          "request_id",
        +          "issued_at",
        +          "tier"
        +        ],
        +        "type": "object"
        +      },
        +      "data": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Schema § 1.1 — the typed payload returned inside `MCPResponse[ComputeResult]`.\n\nFree-tier responses MUST omit `drawings` and `audit_trail` (the bridge\nenforces this); paid-tier responses populate both. `text_summary` is\nbounded to 2000 chars — keeps the LLM-facing summary token-cheap and\nforces longer narrative into BoQ row descriptions where it belongs.\n`warnings` is the non-fatal geometry advisory list (both tiers).",
        +            "properties": {
        +              "assembly_slug": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "audit_trail": {
        +                "anyOf": [
        +                  {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.7 — paid-tier audit-trail entry.\n\nOne entry per BoQ row; `boq_row_index` ties to the row position in\n`ComputeResult.boq_rows`. `derivation` is the human-readable formula\nwalk-through; `formula` is the optional formal expression.",
        +                      "properties": {
        +                        "boq_row_index": {
        +                          "minimum": 0,
        +                          "type": "integer"
        +                        },
        +                        "derivation": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "formula": {
        +                          "anyOf": [
        +                            {
        +                              "type": "string"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ],
        +                          "default": null
        +                        },
        +                        "id": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "parameters_referenced": {
        +                          "items": {
        +                            "type": "string"
        +                          },
        +                          "type": "array"
        +                        }
        +                      },
        +                      "required": [
        +                        "id",
        +                        "boq_row_index",
        +                        "derivation"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "boq_rows": {
        +                "items": {
        +                  "additionalProperties": false,
        +                  "description": "Schema § 1.3 — a single bill row in the requested standard's format.\n\n`description` is the non-verbatim functional description per spec § 13.9 /\n§ 15 invariant — NEVER reproduces a standard's verbatim clause text.\n`rate` / `amount` ship null because rates are commodity data the customer\nowns; the engine's job is the measurement, not the pricing.",
        +                  "properties": {
        +                    "amount": {
        +                      "anyOf": [
        +                        {
        +                          "type": "number"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "attribution": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "audit_id": {
        +                      "anyOf": [
        +                        {
        +                          "type": "string"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "description": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "quantity": {
        +                      "minimum": 0,
        +                      "type": "number"
        +                    },
        +                    "rate": {
        +                      "anyOf": [
        +                        {
        +                          "type": "number"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "unit": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "work_section": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    }
        +                  },
        +                  "required": [
        +                    "work_section",
        +                    "description",
        +                    "quantity",
        +                    "unit",
        +                    "attribution"
        +                  ],
        +                  "type": "object"
        +                },
        +                "type": "array"
        +              },
        +              "drawings": {
        +                "anyOf": [
        +                  {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.6 — paid-tier drawing artefact pointer.\n\n`url` is an R2-signed URL; expiry is carried in `_meta.deliverables.expires_at`\non the envelope (not duplicated here). `layers` is DXF-only; PDF/SVG\ncallers omit it.",
        +                      "properties": {
        +                        "drawing_type": {
        +                          "enum": [
        +                            "section",
        +                            "plan",
        +                            "elevation",
        +                            "isometric",
        +                            "detail"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "format": {
        +                          "enum": [
        +                            "DXF",
        +                            "PDF",
        +                            "SVG"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "layers": {
        +                          "anyOf": [
        +                            {
        +                              "items": {
        +                                "type": "string"
        +                              },
        +                              "type": "array"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ],
        +                          "default": null
        +                        },
        +                        "scale": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "sheet_size": {
        +                          "enum": [
        +                            "A1",
        +                            "A2",
        +                            "A3",
        +                            "A4"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "url": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "drawing_type",
        +                        "format",
        +                        "url",
        +                        "sheet_size",
        +                        "scale"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "parameters_used": {
        +                "additionalProperties": false,
        +                "description": "Schema § 1.2 — the parameter snapshot the engine actually used.\n\nSplits user-supplied values from engine defaults so customers can see\nwhich numbers came from them and which the engine filled in. Every\ndefaulted parameter SHOULD have a corresponding entry in `assumptions`\n— the bridge layer enforces this when wrapping engine output.",
        +                "properties": {
        +                  "assumptions": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "engine_defaults": {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  "resolved_from_description": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "additionalProperties": false,
        +                          "description": "Schema § 1.2 — a parameter resolved by the forgiving-input layer.\n\nPopulated by the Track B-Forgiving Haiku-4.5 resolution pass; until that\nlayer lands, instances are constructed only by tests. `source` distinguishes\nthe resolution path so customers can audit which fields were inferred.",
        +                          "properties": {
        +                            "confidence": {
        +                              "anyOf": [
        +                                {
        +                                  "enum": [
        +                                    "high",
        +                                    "medium",
        +                                    "low"
        +                                  ],
        +                                  "type": "string"
        +                                },
        +                                {
        +                                  "type": "null"
        +                                }
        +                              ],
        +                              "default": null
        +                            },
        +                            "field_name": {
        +                              "minLength": 1,
        +                              "type": "string"
        +                            },
        +                            "resolved_value": {},
        +                            "source": {
        +                              "enum": [
        +                                "description_field",
        +                                "haiku_resolution",
        +                                "engine_default"
        +                              ],
        +                              "type": "string"
        +                            }
        +                          },
        +                          "required": [
        +                            "field_name",
        +                            "resolved_value",
        +                            "source"
        +                          ],
        +                          "type": "object"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "user_supplied": {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  }
        +                },
        +                "type": "object"
        +              },
        +              "standard": {
        +                "enum": [
        +                  "CESMM4",
        +                  "NRM2",
        +                  "SMM7",
        +                  "MMHW"
        +                ],
        +                "type": "string"
        +              },
        +              "text_summary": {
        +                "maxLength": 2000,
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "totals_summary": {
        +                "additionalProperties": false,
        +                "description": "Schema § 1.4 — totals_summary as a typed wrapper around the free-form dict.\n\nWire shape is a flat object (`{\"concrete_m3\": {...}, \"rebar_t\": {...}}`).\nWe model it as `RootModel`-equivalent via `model_config(extra=\"allow\")`\n+ a single `__root__`-style `entries` dict. Pydantic v2 recommends\n`RootModel` for free-form roots; using a wrapper class keeps the import\nsurface uniform with the rest of this module.",
        +                "properties": {
        +                  "entries": {
        +                    "additionalProperties": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.4 — single material/work-class total entry.",
        +                      "properties": {
        +                        "quantity": {
        +                          "minimum": 0,
        +                          "type": "number"
        +                        },
        +                        "unit": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "quantity",
        +                        "unit"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "object"
        +                  }
        +                },
        +                "type": "object"
        +              },
        +              "warnings": {
        +                "items": {
        +                  "additionalProperties": false,
        +                  "description": "Schema § 1.8 — a non-fatal geometry advisory (56th-fire T2).\n\nThe wire projection of the engine's `core.GeometryWarning`. Advisory only:\na warning NEVER changes a measured quantity — it flags geometry that is\nvalid but likely a mistake (e.g. a stale dependent-height default). Present\non BOTH tiers — a correctness/safety signal, not a paid feature.",
        +                  "properties": {
        +                    "affected_params": {
        +                      "items": {
        +                        "type": "string"
        +                      },
        +                      "type": "array"
        +                    },
        +                    "code": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "detail": {
        +                      "additionalProperties": {
        +                        "type": "number"
        +                      },
        +                      "type": "object"
        +                    },
        +                    "message": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "severity": {
        +                      "enum": [
        +                        "info",
        +                        "advisory",
        +                        "caution"
        +                      ],
        +                      "type": "string"
        +                    }
        +                  },
        +                  "required": [
        +                    "code",
        +                    "severity",
        +                    "message"
        +                  ],
        +                  "type": "object"
        +                },
        +                "type": "array"
        +              }
        +            },
        +            "required": [
        +              "assembly_slug",
        +              "standard",
        +              "parameters_used",
        +              "boq_rows",
        +              "totals_summary",
        +              "text_summary"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      },
        +      "error": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        +            "properties": {
        +              "code": {
        +                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        +                "enum": [
        +                  "RATE_LIMIT_EXCEEDED",
        +                  "TIER_INSUFFICIENT",
        +                  "INVALID_INPUT",
        +                  "SCHEMA_VERSION_MISMATCH",
        +                  "SCHEMA_INVARIANT_VIOLATION",
        +                  "UPSTREAM_TIMEOUT",
        +                  "BACKEND_FAILURE",
        +                  "IP_BLOCKED",
        +                  "RESOURCE_NOT_FOUND",
        +                  "RENDER_FAILURE",
        +                  "OCR_LOW_CONFIDENCE",
        +                  "MANUAL_REVIEW_REQUIRED",
        +                  "ACCEPTANCE_REQUIRED",
        +                  "INVALID_TOKEN"
        +                ],
        +                "type": "string"
        +              },
        +              "details": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "message": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "recoverable": {
        +                "type": "boolean"
        +              },
        +              "retry_after_seconds": {
        +                "anyOf": [
        +                  {
        +                    "minimum": 0,
        +                    "type": "integer"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              }
        +            },
        +            "required": [
        +              "code",
        +              "message",
        +              "recoverable"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      }
        +    },
        +    "required": [
        +      "_meta"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "_meta": {
        +        "additionalProperties": false,
        +        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        +        "properties": {
        +          "deliverables": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        +                "properties": {
        +                  "docx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "dxf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "expires_at": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  },
        +                  "pdf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "xlsx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "expires_at"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "document_id": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "issued_at": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "rate_limit_remaining": {
        +            "anyOf": [
        +              {
        +                "minimum": 0,
        +                "type": "integer"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "request_id": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "schema_version": {
        +            "const": "1.0.0",
        +            "default": "1.0.0",
        +            "type": "string"
        +          },
        +          "scope_boundary": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        +                "properties": {
        +                  "not_in_scope": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "produced": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "recommended_companions": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "type": "string"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "produced",
        +                  "not_in_scope"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tier": {
        +            "enum": [
        +              "free",
        +              "paid"
        +            ],
        +            "type": "string"
        +          },
        +          "tier_upgrade": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        +                "properties": {
        +                  "available_tiers": {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        +                      "properties": {
        +                        "billing": {
        +                          "enum": [
        +                            "one_off",
        +                            "monthly",
        +                            "annual"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "currency": {
        +                          "enum": [
        +                            "GBP",
        +                            "SGD",
        +                            "EUR",
        +                            "USD",
        +                            "CAD",
        +                            "AUD",
        +                            "NZD",
        +                            "MYR"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "display_name": {
        +                          "type": "string"
        +                        },
        +                        "price_local": {
        +                          "type": "number"
        +                        },
        +                        "tier_slug": {
        +                          "enum": [
        +                            "7_day_pass",
        +                            "solo",
        +                            "studio",
        +                            "practice"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "unlock_summary": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "tier_slug",
        +                        "display_name",
        +                        "price_local",
        +                        "currency",
        +                        "billing",
        +                        "unlock_summary"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "current_tier": {
        +                    "const": "free",
        +                    "default": "free",
        +                    "type": "string"
        +                  },
        +                  "pass_credit": {
        +                    "anyOf": [
        +                      {
        +                        "additionalProperties": false,
        +                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        +                        "properties": {
        +                          "amount_local": {
        +                            "type": "number"
        +                          },
        +                          "applies_to": {
        +                            "const": "solo_first_month",
        +                            "default": "solo_first_month",
        +                            "type": "string"
        +                          },
        +                          "currency": {
        +                            "type": "string"
        +                          },
        +                          "redeemable_until": {
        +                            "type": "string"
        +                          }
        +                        },
        +                        "required": [
        +                          "amount_local",
        +                          "currency",
        +                          "redeemable_until"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "pricing_url": {
        +                    "default": "https://civilquants.com/pricing",
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "available_tiers"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tos_url": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "upgrade_hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "warranty_disclaimer": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          }
        +        },
        +        "required": [
        +          "request_id",
        +          "issued_at",
        +          "tier"
        +        ],
        +        "type": "object"
        +      },
        +      "data": {
        +        "default": null,
        +        "title": "Data"
        +      },
        +      "error": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        +            "properties": {
        +              "code": {
        +                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        +                "enum": [
        +                  "RATE_LIMIT_EXCEEDED",
        +                  "TIER_INSUFFICIENT",
        +                  "INVALID_INPUT",
        +                  "SCHEMA_VERSION_MISMATCH",
        +                  "SCHEMA_INVARIANT_VIOLATION",
        +                  "UPSTREAM_TIMEOUT",
        +                  "BACKEND_FAILURE",
        +                  "IP_BLOCKED",
        +                  "RESOURCE_NOT_FOUND",
        +                  "RENDER_FAILURE",
        +                  "OCR_LOW_CONFIDENCE",
        +                  "MANUAL_REVIEW_REQUIRED",
        +                  "ACCEPTANCE_REQUIRED",
        +                  "INVALID_TOKEN"
        +                ],
        +                "type": "string"
        +              },
        +              "details": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "message": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "recoverable": {
        +                "type": "boolean"
        +              },
        +              "retry_after_seconds": {
        +                "anyOf": [
        +                  {
        +                    "minimum": 0,
        +                    "type": "integer"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              }
        +            },
        +            "required": [
        +              "code",
        +              "message",
        +              "recoverable"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      }
        +    },
        +    "required": [
        +      "_meta"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedcompute_catchpit1 field changed
      • changedOutput schema / properties / result / anyOf
        Previous value: -[
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "_meta": {
        -        "additionalProperties": false,
        -        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        -        "properties": {
        -          "deliverables": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        -                "properties": {
        -                  "docx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "dxf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "expires_at": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  },
        -                  "pdf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "xlsx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "expires_at"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "document_id": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "issued_at": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "rate_limit_remaining": {
        -            "anyOf": [
        -              {
        -                "minimum": 0,
        -                "type": "integer"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "request_id": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "schema_version": {
        -            "const": "1.0.0",
        -            "default": "1.0.0",
        -            "type": "string"
        -          },
        -          "scope_boundary": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        -                "properties": {
        -                  "not_in_scope": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "produced": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "recommended_companions": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "type": "string"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "produced",
        -                  "not_in_scope"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tier": {
        -            "enum": [
        -              "free",
        -              "paid"
        -            ],
        -            "type": "string"
        -          },
        -          "tier_upgrade": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        -                "properties": {
        -                  "available_tiers": {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        -                      "properties": {
        -                        "billing": {
        -                          "enum": [
        -                            "one_off",
        -                            "monthly",
        -                            "annual"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "currency": {
        -                          "enum": [
        -                            "GBP",
        -                            "SGD",
        -                            "EUR",
        -                            "USD",
        -                            "CAD",
        -                            "AUD",
        -                            "NZD",
        -                            "MYR"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "display_name": {
        -                          "type": "string"
        -                        },
        -                        "price_local": {
        -                          "type": "number"
        -                        },
        -                        "tier_slug": {
        -                          "enum": [
        -                            "7_day_pass",
        -                            "solo",
        -                            "studio",
        -                            "practice"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "unlock_summary": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "tier_slug",
        -                        "display_name",
        -                        "price_local",
        -                        "currency",
        -                        "billing",
        -                        "unlock_summary"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "current_tier": {
        -                    "const": "free",
        -                    "default": "free",
        -                    "type": "string"
        -                  },
        -                  "pass_credit": {
        -                    "anyOf": [
        -                      {
        -                        "additionalProperties": false,
        -                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        -                        "properties": {
        -                          "amount_local": {
        -                            "type": "number"
        -                          },
        -                          "applies_to": {
        -                            "const": "solo_first_month",
        -                            "default": "solo_first_month",
        -                            "type": "string"
        -                          },
        -                          "currency": {
        -                            "type": "string"
        -                          },
        -                          "redeemable_until": {
        -                            "type": "string"
        -                          }
        -                        },
        -                        "required": [
        -                          "amount_local",
        -                          "currency",
        -                          "redeemable_until"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "pricing_url": {
        -                    "default": "https://civilquants.com/pricing",
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "available_tiers"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tos_url": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "upgrade_hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "warranty_disclaimer": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          }
        -        },
        -        "required": [
        -          "request_id",
        -          "issued_at",
        -          "tier"
        -        ],
        -        "type": "object"
        -      },
        -      "data": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Schema § 1.1 — the typed payload returned inside `MCPResponse[ComputeResult]`.\n\nFree-tier responses MUST omit `drawings` and `audit_trail` (the bridge\nenforces this); paid-tier responses populate both. `text_summary` is\nbounded to 2000 chars — keeps the LLM-facing summary token-cheap and\nforces longer narrative into BoQ row descriptions where it belongs.",
        -            "properties": {
        -              "assembly_slug": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "audit_trail": {
        -                "anyOf": [
        -                  {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.7 — paid-tier audit-trail entry.\n\nOne entry per BoQ row; `boq_row_index` ties to the row position in\n`ComputeResult.boq_rows`. `derivation` is the human-readable formula\nwalk-through; `formula` is the optional formal expression.",
        -                      "properties": {
        -                        "boq_row_index": {
        -                          "minimum": 0,
        -                          "type": "integer"
        -                        },
        -                        "derivation": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "formula": {
        -                          "anyOf": [
        -                            {
        -                              "type": "string"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ],
        -                          "default": null
        -                        },
        -                        "id": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "parameters_referenced": {
        -                          "items": {
        -                            "type": "string"
        -                          },
        -                          "type": "array"
        -                        }
        -                      },
        -                      "required": [
        -                        "id",
        -                        "boq_row_index",
        -                        "derivation"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "boq_rows": {
        -                "items": {
        -                  "additionalProperties": false,
        -                  "description": "Schema § 1.3 — a single bill row in the requested standard's format.\n\n`description` is the non-verbatim functional description per spec § 13.9 /\n§ 15 invariant — NEVER reproduces a standard's verbatim clause text.\n`rate` / `amount` ship null because rates are commodity data the customer\nowns; the engine's job is the measurement, not the pricing.",
        -                  "properties": {
        -                    "amount": {
        -                      "anyOf": [
        -                        {
        -                          "type": "number"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "attribution": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "audit_id": {
        -                      "anyOf": [
        -                        {
        -                          "type": "string"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "description": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "quantity": {
        -                      "minimum": 0,
        -                      "type": "number"
        -                    },
        -                    "rate": {
        -                      "anyOf": [
        -                        {
        -                          "type": "number"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "unit": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "work_section": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    }
        -                  },
        -                  "required": [
        -                    "work_section",
        -                    "description",
        -                    "quantity",
        -                    "unit",
        -                    "attribution"
        -                  ],
        -                  "type": "object"
        -                },
        -                "type": "array"
        -              },
        -              "drawings": {
        -                "anyOf": [
        -                  {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.6 — paid-tier drawing artefact pointer.\n\n`url` is an R2-signed URL; expiry is carried in `_meta.deliverables.expires_at`\non the envelope (not duplicated here). `layers` is DXF-only; PDF/SVG\ncallers omit it.",
        -                      "properties": {
        -                        "drawing_type": {
        -                          "enum": [
        -                            "section",
        -                            "plan",
        -                            "elevation",
        -                            "isometric",
        -                            "detail"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "format": {
        -                          "enum": [
        -                            "DXF",
        -                            "PDF",
        -                            "SVG"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "layers": {
        -                          "anyOf": [
        -                            {
        -                              "items": {
        -                                "type": "string"
        -                              },
        -                              "type": "array"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ],
        -                          "default": null
        -                        },
        -                        "scale": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "sheet_size": {
        -                          "enum": [
        -                            "A1",
        -                            "A2",
        -                            "A3",
        -                            "A4"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "url": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "drawing_type",
        -                        "format",
        -                        "url",
        -                        "sheet_size",
        -                        "scale"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "parameters_used": {
        -                "additionalProperties": false,
        -                "description": "Schema § 1.2 — the parameter snapshot the engine actually used.\n\nSplits user-supplied values from engine defaults so customers can see\nwhich numbers came from them and which the engine filled in. Every\ndefaulted parameter SHOULD have a corresponding entry in `assumptions`\n— the bridge layer enforces this when wrapping engine output.",
        -                "properties": {
        -                  "assumptions": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "engine_defaults": {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  "resolved_from_description": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "additionalProperties": false,
        -                          "description": "Schema § 1.2 — a parameter resolved by the forgiving-input layer.\n\nPopulated by the Track B-Forgiving Haiku-4.5 resolution pass; until that\nlayer lands, instances are constructed only by tests. `source` distinguishes\nthe resolution path so customers can audit which fields were inferred.",
        -                          "properties": {
        -                            "confidence": {
        -                              "anyOf": [
        -                                {
        -                                  "enum": [
        -                                    "high",
        -                                    "medium",
        -                                    "low"
        -                                  ],
        -                                  "type": "string"
        -                                },
        -                                {
        -                                  "type": "null"
        -                                }
        -                              ],
        -                              "default": null
        -                            },
        -                            "field_name": {
        -                              "minLength": 1,
        -                              "type": "string"
        -                            },
        -                            "resolved_value": {},
        -                            "source": {
        -                              "enum": [
        -                                "description_field",
        -                                "haiku_resolution",
        -                                "engine_default"
        -                              ],
        -                              "type": "string"
        -                            }
        -                          },
        -                          "required": [
        -                            "field_name",
        -                            "resolved_value",
        -                            "source"
        -                          ],
        -                          "type": "object"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "user_supplied": {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  }
        -                },
        -                "type": "object"
        -              },
        -              "standard": {
        -                "enum": [
        -                  "CESMM4",
        -                  "NRM2",
        -                  "SMM7",
        -                  "MMHW"
        -                ],
        -                "type": "string"
        -              },
        -              "text_summary": {
        -                "maxLength": 2000,
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "totals_summary": {
        -                "additionalProperties": false,
        -                "description": "Schema § 1.4 — totals_summary as a typed wrapper around the free-form dict.\n\nWire shape is a flat object (`{\"concrete_m3\": {...}, \"rebar_t\": {...}}`).\nWe model it as `RootModel`-equivalent via `model_config(extra=\"allow\")`\n+ a single `__root__`-style `entries` dict. Pydantic v2 recommends\n`RootModel` for free-form roots; using a wrapper class keeps the import\nsurface uniform with the rest of this module.",
        -                "properties": {
        -                  "entries": {
        -                    "additionalProperties": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.4 — single material/work-class total entry.",
        -                      "properties": {
        -                        "quantity": {
        -                          "minimum": 0,
        -                          "type": "number"
        -                        },
        -                        "unit": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "quantity",
        -                        "unit"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "object"
        -                  }
        -                },
        -                "type": "object"
        -              }
        -            },
        -            "required": [
        -              "assembly_slug",
        -              "standard",
        -              "parameters_used",
        -              "boq_rows",
        -              "totals_summary",
        -              "text_summary"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      },
        -      "error": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        -            "properties": {
        -              "code": {
        -                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        -                "enum": [
        -                  "RATE_LIMIT_EXCEEDED",
        -                  "TIER_INSUFFICIENT",
        -                  "INVALID_INPUT",
        -                  "SCHEMA_VERSION_MISMATCH",
        -                  "SCHEMA_INVARIANT_VIOLATION",
        -                  "UPSTREAM_TIMEOUT",
        -                  "BACKEND_FAILURE",
        -                  "IP_BLOCKED",
        -                  "RESOURCE_NOT_FOUND",
        -                  "RENDER_FAILURE",
        -                  "OCR_LOW_CONFIDENCE",
        -                  "MANUAL_REVIEW_REQUIRED",
        -                  "ACCEPTANCE_REQUIRED",
        -                  "INVALID_TOKEN"
        -                ],
        -                "type": "string"
        -              },
        -              "details": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "message": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "recoverable": {
        -                "type": "boolean"
        -              },
        -              "retry_after_seconds": {
        -                "anyOf": [
        -                  {
        -                    "minimum": 0,
        -                    "type": "integer"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              }
        -            },
        -            "required": [
        -              "code",
        -              "message",
        -              "recoverable"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      }
        -    },
        -    "required": [
        -      "_meta"
        -    ],
        -    "type": "object"
        -  },
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "_meta": {
        -        "additionalProperties": false,
        -        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        -        "properties": {
        -          "deliverables": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        -                "properties": {
        -                  "docx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "dxf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "expires_at": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  },
        -                  "pdf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "xlsx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "expires_at"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "document_id": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "issued_at": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "rate_limit_remaining": {
        -            "anyOf": [
        -              {
        -                "minimum": 0,
        -                "type": "integer"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "request_id": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "schema_version": {
        -            "const": "1.0.0",
        -            "default": "1.0.0",
        -            "type": "string"
        -          },
        -          "scope_boundary": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        -                "properties": {
        -                  "not_in_scope": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "produced": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "recommended_companions": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "type": "string"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "produced",
        -                  "not_in_scope"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tier": {
        -            "enum": [
        -              "free",
        -              "paid"
        -            ],
        -            "type": "string"
        -          },
        -          "tier_upgrade": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        -                "properties": {
        -                  "available_tiers": {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        -                      "properties": {
        -                        "billing": {
        -                          "enum": [
        -                            "one_off",
        -                            "monthly",
        -                            "annual"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "currency": {
        -                          "enum": [
        -                            "GBP",
        -                            "SGD",
        -                            "EUR",
        -                            "USD",
        -                            "CAD",
        -                            "AUD",
        -                            "NZD",
        -                            "MYR"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "display_name": {
        -                          "type": "string"
        -                        },
        -                        "price_local": {
        -                          "type": "number"
        -                        },
        -                        "tier_slug": {
        -                          "enum": [
        -                            "7_day_pass",
        -                            "solo",
        -                            "studio",
        -                            "practice"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "unlock_summary": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "tier_slug",
        -                        "display_name",
        -                        "price_local",
        -                        "currency",
        -                        "billing",
        -                        "unlock_summary"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "current_tier": {
        -                    "const": "free",
        -                    "default": "free",
        -                    "type": "string"
        -                  },
        -                  "pass_credit": {
        -                    "anyOf": [
        -                      {
        -                        "additionalProperties": false,
        -                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        -                        "properties": {
        -                          "amount_local": {
        -                            "type": "number"
        -                          },
        -                          "applies_to": {
        -                            "const": "solo_first_month",
        -                            "default": "solo_first_month",
        -                            "type": "string"
        -                          },
        -                          "currency": {
        -                            "type": "string"
        -                          },
        -                          "redeemable_until": {
        -                            "type": "string"
        -                          }
        -                        },
        -                        "required": [
        -                          "amount_local",
        -                          "currency",
        -                          "redeemable_until"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "pricing_url": {
        -                    "default": "https://civilquants.com/pricing",
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "available_tiers"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tos_url": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "upgrade_hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "warranty_disclaimer": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          }
        -        },
        -        "required": [
        -          "request_id",
        -          "issued_at",
        -          "tier"
        -        ],
        -        "type": "object"
        -      },
        -      "data": {
        -        "default": null,
        -        "title": "Data"
        -      },
        -      "error": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        -            "properties": {
        -              "code": {
        -                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        -                "enum": [
        -                  "RATE_LIMIT_EXCEEDED",
        -                  "TIER_INSUFFICIENT",
        -                  "INVALID_INPUT",
        -                  "SCHEMA_VERSION_MISMATCH",
        -                  "SCHEMA_INVARIANT_VIOLATION",
        -                  "UPSTREAM_TIMEOUT",
        -                  "BACKEND_FAILURE",
        -                  "IP_BLOCKED",
        -                  "RESOURCE_NOT_FOUND",
        -                  "RENDER_FAILURE",
        -                  "OCR_LOW_CONFIDENCE",
        -                  "MANUAL_REVIEW_REQUIRED",
        -                  "ACCEPTANCE_REQUIRED",
        -                  "INVALID_TOKEN"
        -                ],
        -                "type": "string"
        -              },
        -              "details": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "message": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "recoverable": {
        -                "type": "boolean"
        -              },
        -              "retry_after_seconds": {
        -                "anyOf": [
        -                  {
        -                    "minimum": 0,
        -                    "type": "integer"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              }
        -            },
        -            "required": [
        -              "code",
        -              "message",
        -              "recoverable"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      }
        -    },
        -    "required": [
        -      "_meta"
        -    ],
        -    "type": "object"
        -  }
        -]New value: +[
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "_meta": {
        +        "additionalProperties": false,
        +        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        +        "properties": {
        +          "deliverables": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        +                "properties": {
        +                  "docx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "dxf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "expires_at": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  },
        +                  "pdf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "xlsx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "expires_at"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "document_id": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "issued_at": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "rate_limit_remaining": {
        +            "anyOf": [
        +              {
        +                "minimum": 0,
        +                "type": "integer"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "request_id": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "schema_version": {
        +            "const": "1.0.0",
        +            "default": "1.0.0",
        +            "type": "string"
        +          },
        +          "scope_boundary": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        +                "properties": {
        +                  "not_in_scope": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "produced": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "recommended_companions": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "type": "string"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "produced",
        +                  "not_in_scope"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tier": {
        +            "enum": [
        +              "free",
        +              "paid"
        +            ],
        +            "type": "string"
        +          },
        +          "tier_upgrade": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        +                "properties": {
        +                  "available_tiers": {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        +                      "properties": {
        +                        "billing": {
        +                          "enum": [
        +                            "one_off",
        +                            "monthly",
        +                            "annual"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "currency": {
        +                          "enum": [
        +                            "GBP",
        +                            "SGD",
        +                            "EUR",
        +                            "USD",
        +                            "CAD",
        +                            "AUD",
        +                            "NZD",
        +                            "MYR"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "display_name": {
        +                          "type": "string"
        +                        },
        +                        "price_local": {
        +                          "type": "number"
        +                        },
        +                        "tier_slug": {
        +                          "enum": [
        +                            "7_day_pass",
        +                            "solo",
        +                            "studio",
        +                            "practice"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "unlock_summary": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "tier_slug",
        +                        "display_name",
        +                        "price_local",
        +                        "currency",
        +                        "billing",
        +                        "unlock_summary"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "current_tier": {
        +                    "const": "free",
        +                    "default": "free",
        +                    "type": "string"
        +                  },
        +                  "pass_credit": {
        +                    "anyOf": [
        +                      {
        +                        "additionalProperties": false,
        +                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        +                        "properties": {
        +                          "amount_local": {
        +                            "type": "number"
        +                          },
        +                          "applies_to": {
        +                            "const": "solo_first_month",
        +                            "default": "solo_first_month",
        +                            "type": "string"
        +                          },
        +                          "currency": {
        +                            "type": "string"
        +                          },
        +                          "redeemable_until": {
        +                            "type": "string"
        +                          }
        +                        },
        +                        "required": [
        +                          "amount_local",
        +                          "currency",
        +                          "redeemable_until"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "pricing_url": {
        +                    "default": "https://civilquants.com/pricing",
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "available_tiers"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tos_url": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "upgrade_hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "warranty_disclaimer": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          }
        +        },
        +        "required": [
        +          "request_id",
        +          "issued_at",
        +          "tier"
        +        ],
        +        "type": "object"
        +      },
        +      "data": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Schema § 1.1 — the typed payload returned inside `MCPResponse[ComputeResult]`.\n\nFree-tier responses MUST omit `drawings` and `audit_trail` (the bridge\nenforces this); paid-tier responses populate both. `text_summary` is\nbounded to 2000 chars — keeps the LLM-facing summary token-cheap and\nforces longer narrative into BoQ row descriptions where it belongs.\n`warnings` is the non-fatal geometry advisory list (both tiers).",
        +            "properties": {
        +              "assembly_slug": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "audit_trail": {
        +                "anyOf": [
        +                  {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.7 — paid-tier audit-trail entry.\n\nOne entry per BoQ row; `boq_row_index` ties to the row position in\n`ComputeResult.boq_rows`. `derivation` is the human-readable formula\nwalk-through; `formula` is the optional formal expression.",
        +                      "properties": {
        +                        "boq_row_index": {
        +                          "minimum": 0,
        +                          "type": "integer"
        +                        },
        +                        "derivation": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "formula": {
        +                          "anyOf": [
        +                            {
        +                              "type": "string"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ],
        +                          "default": null
        +                        },
        +                        "id": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "parameters_referenced": {
        +                          "items": {
        +                            "type": "string"
        +                          },
        +                          "type": "array"
        +                        }
        +                      },
        +                      "required": [
        +                        "id",
        +                        "boq_row_index",
        +                        "derivation"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "boq_rows": {
        +                "items": {
        +                  "additionalProperties": false,
        +                  "description": "Schema § 1.3 — a single bill row in the requested standard's format.\n\n`description` is the non-verbatim functional description per spec § 13.9 /\n§ 15 invariant — NEVER reproduces a standard's verbatim clause text.\n`rate` / `amount` ship null because rates are commodity data the customer\nowns; the engine's job is the measurement, not the pricing.",
        +                  "properties": {
        +                    "amount": {
        +                      "anyOf": [
        +                        {
        +                          "type": "number"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "attribution": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "audit_id": {
        +                      "anyOf": [
        +                        {
        +                          "type": "string"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "description": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "quantity": {
        +                      "minimum": 0,
        +                      "type": "number"
        +                    },
        +                    "rate": {
        +                      "anyOf": [
        +                        {
        +                          "type": "number"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "unit": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "work_section": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    }
        +                  },
        +                  "required": [
        +                    "work_section",
        +                    "description",
        +                    "quantity",
        +                    "unit",
        +                    "attribution"
        +                  ],
        +                  "type": "object"
        +                },
        +                "type": "array"
        +              },
        +              "drawings": {
        +                "anyOf": [
        +                  {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.6 — paid-tier drawing artefact pointer.\n\n`url` is an R2-signed URL; expiry is carried in `_meta.deliverables.expires_at`\non the envelope (not duplicated here). `layers` is DXF-only; PDF/SVG\ncallers omit it.",
        +                      "properties": {
        +                        "drawing_type": {
        +                          "enum": [
        +                            "section",
        +                            "plan",
        +                            "elevation",
        +                            "isometric",
        +                            "detail"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "format": {
        +                          "enum": [
        +                            "DXF",
        +                            "PDF",
        +                            "SVG"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "layers": {
        +                          "anyOf": [
        +                            {
        +                              "items": {
        +                                "type": "string"
        +                              },
        +                              "type": "array"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ],
        +                          "default": null
        +                        },
        +                        "scale": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "sheet_size": {
        +                          "enum": [
        +                            "A1",
        +                            "A2",
        +                            "A3",
        +                            "A4"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "url": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "drawing_type",
        +                        "format",
        +                        "url",
        +                        "sheet_size",
        +                        "scale"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "parameters_used": {
        +                "additionalProperties": false,
        +                "description": "Schema § 1.2 — the parameter snapshot the engine actually used.\n\nSplits user-supplied values from engine defaults so customers can see\nwhich numbers came from them and which the engine filled in. Every\ndefaulted parameter SHOULD have a corresponding entry in `assumptions`\n— the bridge layer enforces this when wrapping engine output.",
        +                "properties": {
        +                  "assumptions": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "engine_defaults": {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  "resolved_from_description": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "additionalProperties": false,
        +                          "description": "Schema § 1.2 — a parameter resolved by the forgiving-input layer.\n\nPopulated by the Track B-Forgiving Haiku-4.5 resolution pass; until that\nlayer lands, instances are constructed only by tests. `source` distinguishes\nthe resolution path so customers can audit which fields were inferred.",
        +                          "properties": {
        +                            "confidence": {
        +                              "anyOf": [
        +                                {
        +                                  "enum": [
        +                                    "high",
        +                                    "medium",
        +                                    "low"
        +                                  ],
        +                                  "type": "string"
        +                                },
        +                                {
        +                                  "type": "null"
        +                                }
        +                              ],
        +                              "default": null
        +                            },
        +                            "field_name": {
        +                              "minLength": 1,
        +                              "type": "string"
        +                            },
        +                            "resolved_value": {},
        +                            "source": {
        +                              "enum": [
        +                                "description_field",
        +                                "haiku_resolution",
        +                                "engine_default"
        +                              ],
        +                              "type": "string"
        +                            }
        +                          },
        +                          "required": [
        +                            "field_name",
        +                            "resolved_value",
        +                            "source"
        +                          ],
        +                          "type": "object"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "user_supplied": {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  }
        +                },
        +                "type": "object"
        +              },
        +              "standard": {
        +                "enum": [
        +                  "CESMM4",
        +                  "NRM2",
        +                  "SMM7",
        +                  "MMHW"
        +                ],
        +                "type": "string"
        +              },
        +              "text_summary": {
        +                "maxLength": 2000,
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "totals_summary": {
        +                "additionalProperties": false,
        +                "description": "Schema § 1.4 — totals_summary as a typed wrapper around the free-form dict.\n\nWire shape is a flat object (`{\"concrete_m3\": {...}, \"rebar_t\": {...}}`).\nWe model it as `RootModel`-equivalent via `model_config(extra=\"allow\")`\n+ a single `__root__`-style `entries` dict. Pydantic v2 recommends\n`RootModel` for free-form roots; using a wrapper class keeps the import\nsurface uniform with the rest of this module.",
        +                "properties": {
        +                  "entries": {
        +                    "additionalProperties": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.4 — single material/work-class total entry.",
        +                      "properties": {
        +                        "quantity": {
        +                          "minimum": 0,
        +                          "type": "number"
        +                        },
        +                        "unit": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "quantity",
        +                        "unit"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "object"
        +                  }
        +                },
        +                "type": "object"
        +              },
        +              "warnings": {
        +                "items": {
        +                  "additionalProperties": false,
        +                  "description": "Schema § 1.8 — a non-fatal geometry advisory (56th-fire T2).\n\nThe wire projection of the engine's `core.GeometryWarning`. Advisory only:\na warning NEVER changes a measured quantity — it flags geometry that is\nvalid but likely a mistake (e.g. a stale dependent-height default). Present\non BOTH tiers — a correctness/safety signal, not a paid feature.",
        +                  "properties": {
        +                    "affected_params": {
        +                      "items": {
        +                        "type": "string"
        +                      },
        +                      "type": "array"
        +                    },
        +                    "code": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "detail": {
        +                      "additionalProperties": {
        +                        "type": "number"
        +                      },
        +                      "type": "object"
        +                    },
        +                    "message": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "severity": {
        +                      "enum": [
        +                        "info",
        +                        "advisory",
        +                        "caution"
        +                      ],
        +                      "type": "string"
        +                    }
        +                  },
        +                  "required": [
        +                    "code",
        +                    "severity",
        +                    "message"
        +                  ],
        +                  "type": "object"
        +                },
        +                "type": "array"
        +              }
        +            },
        +            "required": [
        +              "assembly_slug",
        +              "standard",
        +              "parameters_used",
        +              "boq_rows",
        +              "totals_summary",
        +              "text_summary"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      },
        +      "error": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        +            "properties": {
        +              "code": {
        +                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        +                "enum": [
        +                  "RATE_LIMIT_EXCEEDED",
        +                  "TIER_INSUFFICIENT",
        +                  "INVALID_INPUT",
        +                  "SCHEMA_VERSION_MISMATCH",
        +                  "SCHEMA_INVARIANT_VIOLATION",
        +                  "UPSTREAM_TIMEOUT",
        +                  "BACKEND_FAILURE",
        +                  "IP_BLOCKED",
        +                  "RESOURCE_NOT_FOUND",
        +                  "RENDER_FAILURE",
        +                  "OCR_LOW_CONFIDENCE",
        +                  "MANUAL_REVIEW_REQUIRED",
        +                  "ACCEPTANCE_REQUIRED",
        +                  "INVALID_TOKEN"
        +                ],
        +                "type": "string"
        +              },
        +              "details": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "message": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "recoverable": {
        +                "type": "boolean"
        +              },
        +              "retry_after_seconds": {
        +                "anyOf": [
        +                  {
        +                    "minimum": 0,
        +                    "type": "integer"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              }
        +            },
        +            "required": [
        +              "code",
        +              "message",
        +              "recoverable"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      }
        +    },
        +    "required": [
        +      "_meta"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "_meta": {
        +        "additionalProperties": false,
        +        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        +        "properties": {
        +          "deliverables": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        +                "properties": {
        +                  "docx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "dxf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "expires_at": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  },
        +                  "pdf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "xlsx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "expires_at"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "document_id": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "issued_at": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "rate_limit_remaining": {
        +            "anyOf": [
        +              {
        +                "minimum": 0,
        +                "type": "integer"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "request_id": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "schema_version": {
        +            "const": "1.0.0",
        +            "default": "1.0.0",
        +            "type": "string"
        +          },
        +          "scope_boundary": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        +                "properties": {
        +                  "not_in_scope": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "produced": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "recommended_companions": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "type": "string"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "produced",
        +                  "not_in_scope"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tier": {
        +            "enum": [
        +              "free",
        +              "paid"
        +            ],
        +            "type": "string"
        +          },
        +          "tier_upgrade": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        +                "properties": {
        +                  "available_tiers": {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        +                      "properties": {
        +                        "billing": {
        +                          "enum": [
        +                            "one_off",
        +                            "monthly",
        +                            "annual"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "currency": {
        +                          "enum": [
        +                            "GBP",
        +                            "SGD",
        +                            "EUR",
        +                            "USD",
        +                            "CAD",
        +                            "AUD",
        +                            "NZD",
        +                            "MYR"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "display_name": {
        +                          "type": "string"
        +                        },
        +                        "price_local": {
        +                          "type": "number"
        +                        },
        +                        "tier_slug": {
        +                          "enum": [
        +                            "7_day_pass",
        +                            "solo",
        +                            "studio",
        +                            "practice"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "unlock_summary": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "tier_slug",
        +                        "display_name",
        +                        "price_local",
        +                        "currency",
        +                        "billing",
        +                        "unlock_summary"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "current_tier": {
        +                    "const": "free",
        +                    "default": "free",
        +                    "type": "string"
        +                  },
        +                  "pass_credit": {
        +                    "anyOf": [
        +                      {
        +                        "additionalProperties": false,
        +                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        +                        "properties": {
        +                          "amount_local": {
        +                            "type": "number"
        +                          },
        +                          "applies_to": {
        +                            "const": "solo_first_month",
        +                            "default": "solo_first_month",
        +                            "type": "string"
        +                          },
        +                          "currency": {
        +                            "type": "string"
        +                          },
        +                          "redeemable_until": {
        +                            "type": "string"
        +                          }
        +                        },
        +                        "required": [
        +                          "amount_local",
        +                          "currency",
        +                          "redeemable_until"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "pricing_url": {
        +                    "default": "https://civilquants.com/pricing",
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "available_tiers"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tos_url": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "upgrade_hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "warranty_disclaimer": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          }
        +        },
        +        "required": [
        +          "request_id",
        +          "issued_at",
        +          "tier"
        +        ],
        +        "type": "object"
        +      },
        +      "data": {
        +        "default": null,
        +        "title": "Data"
        +      },
        +      "error": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        +            "properties": {
        +              "code": {
        +                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        +                "enum": [
        +                  "RATE_LIMIT_EXCEEDED",
        +                  "TIER_INSUFFICIENT",
        +                  "INVALID_INPUT",
        +                  "SCHEMA_VERSION_MISMATCH",
        +                  "SCHEMA_INVARIANT_VIOLATION",
        +                  "UPSTREAM_TIMEOUT",
        +                  "BACKEND_FAILURE",
        +                  "IP_BLOCKED",
        +                  "RESOURCE_NOT_FOUND",
        +                  "RENDER_FAILURE",
        +                  "OCR_LOW_CONFIDENCE",
        +                  "MANUAL_REVIEW_REQUIRED",
        +                  "ACCEPTANCE_REQUIRED",
        +                  "INVALID_TOKEN"
        +                ],
        +                "type": "string"
        +              },
        +              "details": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "message": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "recoverable": {
        +                "type": "boolean"
        +              },
        +              "retry_after_seconds": {
        +                "anyOf": [
        +                  {
        +                    "minimum": 0,
        +                    "type": "integer"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              }
        +            },
        +            "required": [
        +              "code",
        +              "message",
        +              "recoverable"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      }
        +    },
        +    "required": [
        +      "_meta"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedcompute_combined_services_trench1 field changed
      • changedOutput schema / properties / result / anyOf
        Previous value: -[
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "_meta": {
        -        "additionalProperties": false,
        -        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        -        "properties": {
        -          "deliverables": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        -                "properties": {
        -                  "docx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "dxf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "expires_at": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  },
        -                  "pdf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "xlsx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "expires_at"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "document_id": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "issued_at": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "rate_limit_remaining": {
        -            "anyOf": [
        -              {
        -                "minimum": 0,
        -                "type": "integer"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "request_id": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "schema_version": {
        -            "const": "1.0.0",
        -            "default": "1.0.0",
        -            "type": "string"
        -          },
        -          "scope_boundary": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        -                "properties": {
        -                  "not_in_scope": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "produced": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "recommended_companions": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "type": "string"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "produced",
        -                  "not_in_scope"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tier": {
        -            "enum": [
        -              "free",
        -              "paid"
        -            ],
        -            "type": "string"
        -          },
        -          "tier_upgrade": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        -                "properties": {
        -                  "available_tiers": {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        -                      "properties": {
        -                        "billing": {
        -                          "enum": [
        -                            "one_off",
        -                            "monthly",
        -                            "annual"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "currency": {
        -                          "enum": [
        -                            "GBP",
        -                            "SGD",
        -                            "EUR",
        -                            "USD",
        -                            "CAD",
        -                            "AUD",
        -                            "NZD",
        -                            "MYR"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "display_name": {
        -                          "type": "string"
        -                        },
        -                        "price_local": {
        -                          "type": "number"
        -                        },
        -                        "tier_slug": {
        -                          "enum": [
        -                            "7_day_pass",
        -                            "solo",
        -                            "studio",
        -                            "practice"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "unlock_summary": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "tier_slug",
        -                        "display_name",
        -                        "price_local",
        -                        "currency",
        -                        "billing",
        -                        "unlock_summary"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "current_tier": {
        -                    "const": "free",
        -                    "default": "free",
        -                    "type": "string"
        -                  },
        -                  "pass_credit": {
        -                    "anyOf": [
        -                      {
        -                        "additionalProperties": false,
        -                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        -                        "properties": {
        -                          "amount_local": {
        -                            "type": "number"
        -                          },
        -                          "applies_to": {
        -                            "const": "solo_first_month",
        -                            "default": "solo_first_month",
        -                            "type": "string"
        -                          },
        -                          "currency": {
        -                            "type": "string"
        -                          },
        -                          "redeemable_until": {
        -                            "type": "string"
        -                          }
        -                        },
        -                        "required": [
        -                          "amount_local",
        -                          "currency",
        -                          "redeemable_until"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "pricing_url": {
        -                    "default": "https://civilquants.com/pricing",
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "available_tiers"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tos_url": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "upgrade_hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "warranty_disclaimer": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          }
        -        },
        -        "required": [
        -          "request_id",
        -          "issued_at",
        -          "tier"
        -        ],
        -        "type": "object"
        -      },
        -      "data": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Schema § 1.1 — the typed payload returned inside `MCPResponse[ComputeResult]`.\n\nFree-tier responses MUST omit `drawings` and `audit_trail` (the bridge\nenforces this); paid-tier responses populate both. `text_summary` is\nbounded to 2000 chars — keeps the LLM-facing summary token-cheap and\nforces longer narrative into BoQ row descriptions where it belongs.",
        -            "properties": {
        -              "assembly_slug": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "audit_trail": {
        -                "anyOf": [
        -                  {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.7 — paid-tier audit-trail entry.\n\nOne entry per BoQ row; `boq_row_index` ties to the row position in\n`ComputeResult.boq_rows`. `derivation` is the human-readable formula\nwalk-through; `formula` is the optional formal expression.",
        -                      "properties": {
        -                        "boq_row_index": {
        -                          "minimum": 0,
        -                          "type": "integer"
        -                        },
        -                        "derivation": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "formula": {
        -                          "anyOf": [
        -                            {
        -                              "type": "string"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ],
        -                          "default": null
        -                        },
        -                        "id": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "parameters_referenced": {
        -                          "items": {
        -                            "type": "string"
        -                          },
        -                          "type": "array"
        -                        }
        -                      },
        -                      "required": [
        -                        "id",
        -                        "boq_row_index",
        -                        "derivation"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "boq_rows": {
        -                "items": {
        -                  "additionalProperties": false,
        -                  "description": "Schema § 1.3 — a single bill row in the requested standard's format.\n\n`description` is the non-verbatim functional description per spec § 13.9 /\n§ 15 invariant — NEVER reproduces a standard's verbatim clause text.\n`rate` / `amount` ship null because rates are commodity data the customer\nowns; the engine's job is the measurement, not the pricing.",
        -                  "properties": {
        -                    "amount": {
        -                      "anyOf": [
        -                        {
        -                          "type": "number"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "attribution": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "audit_id": {
        -                      "anyOf": [
        -                        {
        -                          "type": "string"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "description": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "quantity": {
        -                      "minimum": 0,
        -                      "type": "number"
        -                    },
        -                    "rate": {
        -                      "anyOf": [
        -                        {
        -                          "type": "number"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "unit": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "work_section": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    }
        -                  },
        -                  "required": [
        -                    "work_section",
        -                    "description",
        -                    "quantity",
        -                    "unit",
        -                    "attribution"
        -                  ],
        -                  "type": "object"
        -                },
        -                "type": "array"
        -              },
        -              "drawings": {
        -                "anyOf": [
        -                  {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.6 — paid-tier drawing artefact pointer.\n\n`url` is an R2-signed URL; expiry is carried in `_meta.deliverables.expires_at`\non the envelope (not duplicated here). `layers` is DXF-only; PDF/SVG\ncallers omit it.",
        -                      "properties": {
        -                        "drawing_type": {
        -                          "enum": [
        -                            "section",
        -                            "plan",
        -                            "elevation",
        -                            "isometric",
        -                            "detail"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "format": {
        -                          "enum": [
        -                            "DXF",
        -                            "PDF",
        -                            "SVG"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "layers": {
        -                          "anyOf": [
        -                            {
        -                              "items": {
        -                                "type": "string"
        -                              },
        -                              "type": "array"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ],
        -                          "default": null
        -                        },
        -                        "scale": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "sheet_size": {
        -                          "enum": [
        -                            "A1",
        -                            "A2",
        -                            "A3",
        -                            "A4"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "url": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "drawing_type",
        -                        "format",
        -                        "url",
        -                        "sheet_size",
        -                        "scale"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "parameters_used": {
        -                "additionalProperties": false,
        -                "description": "Schema § 1.2 — the parameter snapshot the engine actually used.\n\nSplits user-supplied values from engine defaults so customers can see\nwhich numbers came from them and which the engine filled in. Every\ndefaulted parameter SHOULD have a corresponding entry in `assumptions`\n— the bridge layer enforces this when wrapping engine output.",
        -                "properties": {
        -                  "assumptions": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "engine_defaults": {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  "resolved_from_description": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "additionalProperties": false,
        -                          "description": "Schema § 1.2 — a parameter resolved by the forgiving-input layer.\n\nPopulated by the Track B-Forgiving Haiku-4.5 resolution pass; until that\nlayer lands, instances are constructed only by tests. `source` distinguishes\nthe resolution path so customers can audit which fields were inferred.",
        -                          "properties": {
        -                            "confidence": {
        -                              "anyOf": [
        -                                {
        -                                  "enum": [
        -                                    "high",
        -                                    "medium",
        -                                    "low"
        -                                  ],
        -                                  "type": "string"
        -                                },
        -                                {
        -                                  "type": "null"
        -                                }
        -                              ],
        -                              "default": null
        -                            },
        -                            "field_name": {
        -                              "minLength": 1,
        -                              "type": "string"
        -                            },
        -                            "resolved_value": {},
        -                            "source": {
        -                              "enum": [
        -                                "description_field",
        -                                "haiku_resolution",
        -                                "engine_default"
        -                              ],
        -                              "type": "string"
        -                            }
        -                          },
        -                          "required": [
        -                            "field_name",
        -                            "resolved_value",
        -                            "source"
        -                          ],
        -                          "type": "object"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "user_supplied": {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  }
        -                },
        -                "type": "object"
        -              },
        -              "standard": {
        -                "enum": [
        -                  "CESMM4",
        -                  "NRM2",
        -                  "SMM7",
        -                  "MMHW"
        -                ],
        -                "type": "string"
        -              },
        -              "text_summary": {
        -                "maxLength": 2000,
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "totals_summary": {
        -                "additionalProperties": false,
        -                "description": "Schema § 1.4 — totals_summary as a typed wrapper around the free-form dict.\n\nWire shape is a flat object (`{\"concrete_m3\": {...}, \"rebar_t\": {...}}`).\nWe model it as `RootModel`-equivalent via `model_config(extra=\"allow\")`\n+ a single `__root__`-style `entries` dict. Pydantic v2 recommends\n`RootModel` for free-form roots; using a wrapper class keeps the import\nsurface uniform with the rest of this module.",
        -                "properties": {
        -                  "entries": {
        -                    "additionalProperties": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.4 — single material/work-class total entry.",
        -                      "properties": {
        -                        "quantity": {
        -                          "minimum": 0,
        -                          "type": "number"
        -                        },
        -                        "unit": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "quantity",
        -                        "unit"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "object"
        -                  }
        -                },
        -                "type": "object"
        -              }
        -            },
        -            "required": [
        -              "assembly_slug",
        -              "standard",
        -              "parameters_used",
        -              "boq_rows",
        -              "totals_summary",
        -              "text_summary"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      },
        -      "error": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        -            "properties": {
        -              "code": {
        -                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        -                "enum": [
        -                  "RATE_LIMIT_EXCEEDED",
        -                  "TIER_INSUFFICIENT",
        -                  "INVALID_INPUT",
        -                  "SCHEMA_VERSION_MISMATCH",
        -                  "SCHEMA_INVARIANT_VIOLATION",
        -                  "UPSTREAM_TIMEOUT",
        -                  "BACKEND_FAILURE",
        -                  "IP_BLOCKED",
        -                  "RESOURCE_NOT_FOUND",
        -                  "RENDER_FAILURE",
        -                  "OCR_LOW_CONFIDENCE",
        -                  "MANUAL_REVIEW_REQUIRED",
        -                  "ACCEPTANCE_REQUIRED",
        -                  "INVALID_TOKEN"
        -                ],
        -                "type": "string"
        -              },
        -              "details": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "message": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "recoverable": {
        -                "type": "boolean"
        -              },
        -              "retry_after_seconds": {
        -                "anyOf": [
        -                  {
        -                    "minimum": 0,
        -                    "type": "integer"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              }
        -            },
        -            "required": [
        -              "code",
        -              "message",
        -              "recoverable"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      }
        -    },
        -    "required": [
        -      "_meta"
        -    ],
        -    "type": "object"
        -  },
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "_meta": {
        -        "additionalProperties": false,
        -        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        -        "properties": {
        -          "deliverables": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        -                "properties": {
        -                  "docx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "dxf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "expires_at": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  },
        -                  "pdf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "xlsx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "expires_at"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "document_id": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "issued_at": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "rate_limit_remaining": {
        -            "anyOf": [
        -              {
        -                "minimum": 0,
        -                "type": "integer"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "request_id": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "schema_version": {
        -            "const": "1.0.0",
        -            "default": "1.0.0",
        -            "type": "string"
        -          },
        -          "scope_boundary": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        -                "properties": {
        -                  "not_in_scope": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "produced": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "recommended_companions": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "type": "string"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "produced",
        -                  "not_in_scope"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tier": {
        -            "enum": [
        -              "free",
        -              "paid"
        -            ],
        -            "type": "string"
        -          },
        -          "tier_upgrade": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        -                "properties": {
        -                  "available_tiers": {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        -                      "properties": {
        -                        "billing": {
        -                          "enum": [
        -                            "one_off",
        -                            "monthly",
        -                            "annual"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "currency": {
        -                          "enum": [
        -                            "GBP",
        -                            "SGD",
        -                            "EUR",
        -                            "USD",
        -                            "CAD",
        -                            "AUD",
        -                            "NZD",
        -                            "MYR"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "display_name": {
        -                          "type": "string"
        -                        },
        -                        "price_local": {
        -                          "type": "number"
        -                        },
        -                        "tier_slug": {
        -                          "enum": [
        -                            "7_day_pass",
        -                            "solo",
        -                            "studio",
        -                            "practice"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "unlock_summary": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "tier_slug",
        -                        "display_name",
        -                        "price_local",
        -                        "currency",
        -                        "billing",
        -                        "unlock_summary"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "current_tier": {
        -                    "const": "free",
        -                    "default": "free",
        -                    "type": "string"
        -                  },
        -                  "pass_credit": {
        -                    "anyOf": [
        -                      {
        -                        "additionalProperties": false,
        -                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        -                        "properties": {
        -                          "amount_local": {
        -                            "type": "number"
        -                          },
        -                          "applies_to": {
        -                            "const": "solo_first_month",
        -                            "default": "solo_first_month",
        -                            "type": "string"
        -                          },
        -                          "currency": {
        -                            "type": "string"
        -                          },
        -                          "redeemable_until": {
        -                            "type": "string"
        -                          }
        -                        },
        -                        "required": [
        -                          "amount_local",
        -                          "currency",
        -                          "redeemable_until"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "pricing_url": {
        -                    "default": "https://civilquants.com/pricing",
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "available_tiers"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tos_url": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "upgrade_hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "warranty_disclaimer": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          }
        -        },
        -        "required": [
        -          "request_id",
        -          "issued_at",
        -          "tier"
        -        ],
        -        "type": "object"
        -      },
        -      "data": {
        -        "default": null,
        -        "title": "Data"
        -      },
        -      "error": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        -            "properties": {
        -              "code": {
        -                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        -                "enum": [
        -                  "RATE_LIMIT_EXCEEDED",
        -                  "TIER_INSUFFICIENT",
        -                  "INVALID_INPUT",
        -                  "SCHEMA_VERSION_MISMATCH",
        -                  "SCHEMA_INVARIANT_VIOLATION",
        -                  "UPSTREAM_TIMEOUT",
        -                  "BACKEND_FAILURE",
        -                  "IP_BLOCKED",
        -                  "RESOURCE_NOT_FOUND",
        -                  "RENDER_FAILURE",
        -                  "OCR_LOW_CONFIDENCE",
        -                  "MANUAL_REVIEW_REQUIRED",
        -                  "ACCEPTANCE_REQUIRED",
        -                  "INVALID_TOKEN"
        -                ],
        -                "type": "string"
        -              },
        -              "details": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "message": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "recoverable": {
        -                "type": "boolean"
        -              },
        -              "retry_after_seconds": {
        -                "anyOf": [
        -                  {
        -                    "minimum": 0,
        -                    "type": "integer"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              }
        -            },
        -            "required": [
        -              "code",
        -              "message",
        -              "recoverable"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      }
        -    },
        -    "required": [
        -      "_meta"
        -    ],
        -    "type": "object"
        -  }
        -]New value: +[
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "_meta": {
        +        "additionalProperties": false,
        +        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        +        "properties": {
        +          "deliverables": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        +                "properties": {
        +                  "docx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "dxf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "expires_at": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  },
        +                  "pdf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "xlsx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "expires_at"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "document_id": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "issued_at": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "rate_limit_remaining": {
        +            "anyOf": [
        +              {
        +                "minimum": 0,
        +                "type": "integer"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "request_id": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "schema_version": {
        +            "const": "1.0.0",
        +            "default": "1.0.0",
        +            "type": "string"
        +          },
        +          "scope_boundary": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        +                "properties": {
        +                  "not_in_scope": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "produced": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "recommended_companions": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "type": "string"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "produced",
        +                  "not_in_scope"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tier": {
        +            "enum": [
        +              "free",
        +              "paid"
        +            ],
        +            "type": "string"
        +          },
        +          "tier_upgrade": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        +                "properties": {
        +                  "available_tiers": {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        +                      "properties": {
        +                        "billing": {
        +                          "enum": [
        +                            "one_off",
        +                            "monthly",
        +                            "annual"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "currency": {
        +                          "enum": [
        +                            "GBP",
        +                            "SGD",
        +                            "EUR",
        +                            "USD",
        +                            "CAD",
        +                            "AUD",
        +                            "NZD",
        +                            "MYR"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "display_name": {
        +                          "type": "string"
        +                        },
        +                        "price_local": {
        +                          "type": "number"
        +                        },
        +                        "tier_slug": {
        +                          "enum": [
        +                            "7_day_pass",
        +                            "solo",
        +                            "studio",
        +                            "practice"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "unlock_summary": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "tier_slug",
        +                        "display_name",
        +                        "price_local",
        +                        "currency",
        +                        "billing",
        +                        "unlock_summary"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "current_tier": {
        +                    "const": "free",
        +                    "default": "free",
        +                    "type": "string"
        +                  },
        +                  "pass_credit": {
        +                    "anyOf": [
        +                      {
        +                        "additionalProperties": false,
        +                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        +                        "properties": {
        +                          "amount_local": {
        +                            "type": "number"
        +                          },
        +                          "applies_to": {
        +                            "const": "solo_first_month",
        +                            "default": "solo_first_month",
        +                            "type": "string"
        +                          },
        +                          "currency": {
        +                            "type": "string"
        +                          },
        +                          "redeemable_until": {
        +                            "type": "string"
        +                          }
        +                        },
        +                        "required": [
        +                          "amount_local",
        +                          "currency",
        +                          "redeemable_until"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "pricing_url": {
        +                    "default": "https://civilquants.com/pricing",
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "available_tiers"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tos_url": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "upgrade_hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "warranty_disclaimer": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          }
        +        },
        +        "required": [
        +          "request_id",
        +          "issued_at",
        +          "tier"
        +        ],
        +        "type": "object"
        +      },
        +      "data": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Schema § 1.1 — the typed payload returned inside `MCPResponse[ComputeResult]`.\n\nFree-tier responses MUST omit `drawings` and `audit_trail` (the bridge\nenforces this); paid-tier responses populate both. `text_summary` is\nbounded to 2000 chars — keeps the LLM-facing summary token-cheap and\nforces longer narrative into BoQ row descriptions where it belongs.\n`warnings` is the non-fatal geometry advisory list (both tiers).",
        +            "properties": {
        +              "assembly_slug": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "audit_trail": {
        +                "anyOf": [
        +                  {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.7 — paid-tier audit-trail entry.\n\nOne entry per BoQ row; `boq_row_index` ties to the row position in\n`ComputeResult.boq_rows`. `derivation` is the human-readable formula\nwalk-through; `formula` is the optional formal expression.",
        +                      "properties": {
        +                        "boq_row_index": {
        +                          "minimum": 0,
        +                          "type": "integer"
        +                        },
        +                        "derivation": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "formula": {
        +                          "anyOf": [
        +                            {
        +                              "type": "string"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ],
        +                          "default": null
        +                        },
        +                        "id": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "parameters_referenced": {
        +                          "items": {
        +                            "type": "string"
        +                          },
        +                          "type": "array"
        +                        }
        +                      },
        +                      "required": [
        +                        "id",
        +                        "boq_row_index",
        +                        "derivation"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "boq_rows": {
        +                "items": {
        +                  "additionalProperties": false,
        +                  "description": "Schema § 1.3 — a single bill row in the requested standard's format.\n\n`description` is the non-verbatim functional description per spec § 13.9 /\n§ 15 invariant — NEVER reproduces a standard's verbatim clause text.\n`rate` / `amount` ship null because rates are commodity data the customer\nowns; the engine's job is the measurement, not the pricing.",
        +                  "properties": {
        +                    "amount": {
        +                      "anyOf": [
        +                        {
        +                          "type": "number"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "attribution": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "audit_id": {
        +                      "anyOf": [
        +                        {
        +                          "type": "string"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "description": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "quantity": {
        +                      "minimum": 0,
        +                      "type": "number"
        +                    },
        +                    "rate": {
        +                      "anyOf": [
        +                        {
        +                          "type": "number"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "unit": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "work_section": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    }
        +                  },
        +                  "required": [
        +                    "work_section",
        +                    "description",
        +                    "quantity",
        +                    "unit",
        +                    "attribution"
        +                  ],
        +                  "type": "object"
        +                },
        +                "type": "array"
        +              },
        +              "drawings": {
        +                "anyOf": [
        +                  {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.6 — paid-tier drawing artefact pointer.\n\n`url` is an R2-signed URL; expiry is carried in `_meta.deliverables.expires_at`\non the envelope (not duplicated here). `layers` is DXF-only; PDF/SVG\ncallers omit it.",
        +                      "properties": {
        +                        "drawing_type": {
        +                          "enum": [
        +                            "section",
        +                            "plan",
        +                            "elevation",
        +                            "isometric",
        +                            "detail"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "format": {
        +                          "enum": [
        +                            "DXF",
        +                            "PDF",
        +                            "SVG"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "layers": {
        +                          "anyOf": [
        +                            {
        +                              "items": {
        +                                "type": "string"
        +                              },
        +                              "type": "array"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ],
        +                          "default": null
        +                        },
        +                        "scale": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "sheet_size": {
        +                          "enum": [
        +                            "A1",
        +                            "A2",
        +                            "A3",
        +                            "A4"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "url": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "drawing_type",
        +                        "format",
        +                        "url",
        +                        "sheet_size",
        +                        "scale"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "parameters_used": {
        +                "additionalProperties": false,
        +                "description": "Schema § 1.2 — the parameter snapshot the engine actually used.\n\nSplits user-supplied values from engine defaults so customers can see\nwhich numbers came from them and which the engine filled in. Every\ndefaulted parameter SHOULD have a corresponding entry in `assumptions`\n— the bridge layer enforces this when wrapping engine output.",
        +                "properties": {
        +                  "assumptions": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "engine_defaults": {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  "resolved_from_description": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "additionalProperties": false,
        +                          "description": "Schema § 1.2 — a parameter resolved by the forgiving-input layer.\n\nPopulated by the Track B-Forgiving Haiku-4.5 resolution pass; until that\nlayer lands, instances are constructed only by tests. `source` distinguishes\nthe resolution path so customers can audit which fields were inferred.",
        +                          "properties": {
        +                            "confidence": {
        +                              "anyOf": [
        +                                {
        +                                  "enum": [
        +                                    "high",
        +                                    "medium",
        +                                    "low"
        +                                  ],
        +                                  "type": "string"
        +                                },
        +                                {
        +                                  "type": "null"
        +                                }
        +                              ],
        +                              "default": null
        +                            },
        +                            "field_name": {
        +                              "minLength": 1,
        +                              "type": "string"
        +                            },
        +                            "resolved_value": {},
        +                            "source": {
        +                              "enum": [
        +                                "description_field",
        +                                "haiku_resolution",
        +                                "engine_default"
        +                              ],
        +                              "type": "string"
        +                            }
        +                          },
        +                          "required": [
        +                            "field_name",
        +                            "resolved_value",
        +                            "source"
        +                          ],
        +                          "type": "object"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "user_supplied": {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  }
        +                },
        +                "type": "object"
        +              },
        +              "standard": {
        +                "enum": [
        +                  "CESMM4",
        +                  "NRM2",
        +                  "SMM7",
        +                  "MMHW"
        +                ],
        +                "type": "string"
        +              },
        +              "text_summary": {
        +                "maxLength": 2000,
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "totals_summary": {
        +                "additionalProperties": false,
        +                "description": "Schema § 1.4 — totals_summary as a typed wrapper around the free-form dict.\n\nWire shape is a flat object (`{\"concrete_m3\": {...}, \"rebar_t\": {...}}`).\nWe model it as `RootModel`-equivalent via `model_config(extra=\"allow\")`\n+ a single `__root__`-style `entries` dict. Pydantic v2 recommends\n`RootModel` for free-form roots; using a wrapper class keeps the import\nsurface uniform with the rest of this module.",
        +                "properties": {
        +                  "entries": {
        +                    "additionalProperties": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.4 — single material/work-class total entry.",
        +                      "properties": {
        +                        "quantity": {
        +                          "minimum": 0,
        +                          "type": "number"
        +                        },
        +                        "unit": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "quantity",
        +                        "unit"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "object"
        +                  }
        +                },
        +                "type": "object"
        +              },
        +              "warnings": {
        +                "items": {
        +                  "additionalProperties": false,
        +                  "description": "Schema § 1.8 — a non-fatal geometry advisory (56th-fire T2).\n\nThe wire projection of the engine's `core.GeometryWarning`. Advisory only:\na warning NEVER changes a measured quantity — it flags geometry that is\nvalid but likely a mistake (e.g. a stale dependent-height default). Present\non BOTH tiers — a correctness/safety signal, not a paid feature.",
        +                  "properties": {
        +                    "affected_params": {
        +                      "items": {
        +                        "type": "string"
        +                      },
        +                      "type": "array"
        +                    },
        +                    "code": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "detail": {
        +                      "additionalProperties": {
        +                        "type": "number"
        +                      },
        +                      "type": "object"
        +                    },
        +                    "message": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "severity": {
        +                      "enum": [
        +                        "info",
        +                        "advisory",
        +                        "caution"
        +                      ],
        +                      "type": "string"
        +                    }
        +                  },
        +                  "required": [
        +                    "code",
        +                    "severity",
        +                    "message"
        +                  ],
        +                  "type": "object"
        +                },
        +                "type": "array"
        +              }
        +            },
        +            "required": [
        +              "assembly_slug",
        +              "standard",
        +              "parameters_used",
        +              "boq_rows",
        +              "totals_summary",
        +              "text_summary"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      },
        +      "error": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        +            "properties": {
        +              "code": {
        +                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        +                "enum": [
        +                  "RATE_LIMIT_EXCEEDED",
        +                  "TIER_INSUFFICIENT",
        +                  "INVALID_INPUT",
        +                  "SCHEMA_VERSION_MISMATCH",
        +                  "SCHEMA_INVARIANT_VIOLATION",
        +                  "UPSTREAM_TIMEOUT",
        +                  "BACKEND_FAILURE",
        +                  "IP_BLOCKED",
        +                  "RESOURCE_NOT_FOUND",
        +                  "RENDER_FAILURE",
        +                  "OCR_LOW_CONFIDENCE",
        +                  "MANUAL_REVIEW_REQUIRED",
        +                  "ACCEPTANCE_REQUIRED",
        +                  "INVALID_TOKEN"
        +                ],
        +                "type": "string"
        +              },
        +              "details": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "message": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "recoverable": {
        +                "type": "boolean"
        +              },
        +              "retry_after_seconds": {
        +                "anyOf": [
        +                  {
        +                    "minimum": 0,
        +                    "type": "integer"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              }
        +            },
        +            "required": [
        +              "code",
        +              "message",
        +              "recoverable"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      }
        +    },
        +    "required": [
        +      "_meta"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "_meta": {
        +        "additionalProperties": false,
        +        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        +        "properties": {
        +          "deliverables": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        +                "properties": {
        +                  "docx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "dxf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "expires_at": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  },
        +                  "pdf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "xlsx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "expires_at"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "document_id": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "issued_at": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "rate_limit_remaining": {
        +            "anyOf": [
        +              {
        +                "minimum": 0,
        +                "type": "integer"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "request_id": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "schema_version": {
        +            "const": "1.0.0",
        +            "default": "1.0.0",
        +            "type": "string"
        +          },
        +          "scope_boundary": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        +                "properties": {
        +                  "not_in_scope": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "produced": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "recommended_companions": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "type": "string"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "produced",
        +                  "not_in_scope"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tier": {
        +            "enum": [
        +              "free",
        +              "paid"
        +            ],
        +            "type": "string"
        +          },
        +          "tier_upgrade": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        +                "properties": {
        +                  "available_tiers": {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        +                      "properties": {
        +                        "billing": {
        +                          "enum": [
        +                            "one_off",
        +                            "monthly",
        +                            "annual"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "currency": {
        +                          "enum": [
        +                            "GBP",
        +                            "SGD",
        +                            "EUR",
        +                            "USD",
        +                            "CAD",
        +                            "AUD",
        +                            "NZD",
        +                            "MYR"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "display_name": {
        +                          "type": "string"
        +                        },
        +                        "price_local": {
        +                          "type": "number"
        +                        },
        +                        "tier_slug": {
        +                          "enum": [
        +                            "7_day_pass",
        +                            "solo",
        +                            "studio",
        +                            "practice"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "unlock_summary": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "tier_slug",
        +                        "display_name",
        +                        "price_local",
        +                        "currency",
        +                        "billing",
        +                        "unlock_summary"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "current_tier": {
        +                    "const": "free",
        +                    "default": "free",
        +                    "type": "string"
        +                  },
        +                  "pass_credit": {
        +                    "anyOf": [
        +                      {
        +                        "additionalProperties": false,
        +                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        +                        "properties": {
        +                          "amount_local": {
        +                            "type": "number"
        +                          },
        +                          "applies_to": {
        +                            "const": "solo_first_month",
        +                            "default": "solo_first_month",
        +                            "type": "string"
        +                          },
        +                          "currency": {
        +                            "type": "string"
        +                          },
        +                          "redeemable_until": {
        +                            "type": "string"
        +                          }
        +                        },
        +                        "required": [
        +                          "amount_local",
        +                          "currency",
        +                          "redeemable_until"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "pricing_url": {
        +                    "default": "https://civilquants.com/pricing",
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "available_tiers"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tos_url": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "upgrade_hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "warranty_disclaimer": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          }
        +        },
        +        "required": [
        +          "request_id",
        +          "issued_at",
        +          "tier"
        +        ],
        +        "type": "object"
        +      },
        +      "data": {
        +        "default": null,
        +        "title": "Data"
        +      },
        +      "error": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        +            "properties": {
        +              "code": {
        +                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        +                "enum": [
        +                  "RATE_LIMIT_EXCEEDED",
        +                  "TIER_INSUFFICIENT",
        +                  "INVALID_INPUT",
        +                  "SCHEMA_VERSION_MISMATCH",
        +                  "SCHEMA_INVARIANT_VIOLATION",
        +                  "UPSTREAM_TIMEOUT",
        +                  "BACKEND_FAILURE",
        +                  "IP_BLOCKED",
        +                  "RESOURCE_NOT_FOUND",
        +                  "RENDER_FAILURE",
        +                  "OCR_LOW_CONFIDENCE",
        +                  "MANUAL_REVIEW_REQUIRED",
        +                  "ACCEPTANCE_REQUIRED",
        +                  "INVALID_TOKEN"
        +                ],
        +                "type": "string"
        +              },
        +              "details": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "message": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "recoverable": {
        +                "type": "boolean"
        +              },
        +              "retry_after_seconds": {
        +                "anyOf": [
        +                  {
        +                    "minimum": 0,
        +                    "type": "integer"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              }
        +            },
        +            "required": [
        +              "code",
        +              "message",
        +              "recoverable"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      }
        +    },
        +    "required": [
        +      "_meta"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedcompute_connection_to_existing1 field changed
      • changedOutput schema / properties / result / anyOf
        Previous value: -[
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "_meta": {
        -        "additionalProperties": false,
        -        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        -        "properties": {
        -          "deliverables": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        -                "properties": {
        -                  "docx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "dxf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "expires_at": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  },
        -                  "pdf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "xlsx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "expires_at"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "document_id": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "issued_at": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "rate_limit_remaining": {
        -            "anyOf": [
        -              {
        -                "minimum": 0,
        -                "type": "integer"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "request_id": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "schema_version": {
        -            "const": "1.0.0",
        -            "default": "1.0.0",
        -            "type": "string"
        -          },
        -          "scope_boundary": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        -                "properties": {
        -                  "not_in_scope": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "produced": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "recommended_companions": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "type": "string"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "produced",
        -                  "not_in_scope"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tier": {
        -            "enum": [
        -              "free",
        -              "paid"
        -            ],
        -            "type": "string"
        -          },
        -          "tier_upgrade": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        -                "properties": {
        -                  "available_tiers": {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        -                      "properties": {
        -                        "billing": {
        -                          "enum": [
        -                            "one_off",
        -                            "monthly",
        -                            "annual"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "currency": {
        -                          "enum": [
        -                            "GBP",
        -                            "SGD",
        -                            "EUR",
        -                            "USD",
        -                            "CAD",
        -                            "AUD",
        -                            "NZD",
        -                            "MYR"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "display_name": {
        -                          "type": "string"
        -                        },
        -                        "price_local": {
        -                          "type": "number"
        -                        },
        -                        "tier_slug": {
        -                          "enum": [
        -                            "7_day_pass",
        -                            "solo",
        -                            "studio",
        -                            "practice"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "unlock_summary": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "tier_slug",
        -                        "display_name",
        -                        "price_local",
        -                        "currency",
        -                        "billing",
        -                        "unlock_summary"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "current_tier": {
        -                    "const": "free",
        -                    "default": "free",
        -                    "type": "string"
        -                  },
        -                  "pass_credit": {
        -                    "anyOf": [
        -                      {
        -                        "additionalProperties": false,
        -                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        -                        "properties": {
        -                          "amount_local": {
        -                            "type": "number"
        -                          },
        -                          "applies_to": {
        -                            "const": "solo_first_month",
        -                            "default": "solo_first_month",
        -                            "type": "string"
        -                          },
        -                          "currency": {
        -                            "type": "string"
        -                          },
        -                          "redeemable_until": {
        -                            "type": "string"
        -                          }
        -                        },
        -                        "required": [
        -                          "amount_local",
        -                          "currency",
        -                          "redeemable_until"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "pricing_url": {
        -                    "default": "https://civilquants.com/pricing",
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "available_tiers"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tos_url": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "upgrade_hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "warranty_disclaimer": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          }
        -        },
        -        "required": [
        -          "request_id",
        -          "issued_at",
        -          "tier"
        -        ],
        -        "type": "object"
        -      },
        -      "data": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Schema § 1.1 — the typed payload returned inside `MCPResponse[ComputeResult]`.\n\nFree-tier responses MUST omit `drawings` and `audit_trail` (the bridge\nenforces this); paid-tier responses populate both. `text_summary` is\nbounded to 2000 chars — keeps the LLM-facing summary token-cheap and\nforces longer narrative into BoQ row descriptions where it belongs.",
        -            "properties": {
        -              "assembly_slug": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "audit_trail": {
        -                "anyOf": [
        -                  {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.7 — paid-tier audit-trail entry.\n\nOne entry per BoQ row; `boq_row_index` ties to the row position in\n`ComputeResult.boq_rows`. `derivation` is the human-readable formula\nwalk-through; `formula` is the optional formal expression.",
        -                      "properties": {
        -                        "boq_row_index": {
        -                          "minimum": 0,
        -                          "type": "integer"
        -                        },
        -                        "derivation": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "formula": {
        -                          "anyOf": [
        -                            {
        -                              "type": "string"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ],
        -                          "default": null
        -                        },
        -                        "id": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "parameters_referenced": {
        -                          "items": {
        -                            "type": "string"
        -                          },
        -                          "type": "array"
        -                        }
        -                      },
        -                      "required": [
        -                        "id",
        -                        "boq_row_index",
        -                        "derivation"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "boq_rows": {
        -                "items": {
        -                  "additionalProperties": false,
        -                  "description": "Schema § 1.3 — a single bill row in the requested standard's format.\n\n`description` is the non-verbatim functional description per spec § 13.9 /\n§ 15 invariant — NEVER reproduces a standard's verbatim clause text.\n`rate` / `amount` ship null because rates are commodity data the customer\nowns; the engine's job is the measurement, not the pricing.",
        -                  "properties": {
        -                    "amount": {
        -                      "anyOf": [
        -                        {
        -                          "type": "number"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "attribution": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "audit_id": {
        -                      "anyOf": [
        -                        {
        -                          "type": "string"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "description": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "quantity": {
        -                      "minimum": 0,
        -                      "type": "number"
        -                    },
        -                    "rate": {
        -                      "anyOf": [
        -                        {
        -                          "type": "number"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "unit": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "work_section": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    }
        -                  },
        -                  "required": [
        -                    "work_section",
        -                    "description",
        -                    "quantity",
        -                    "unit",
        -                    "attribution"
        -                  ],
        -                  "type": "object"
        -                },
        -                "type": "array"
        -              },
        -              "drawings": {
        -                "anyOf": [
        -                  {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.6 — paid-tier drawing artefact pointer.\n\n`url` is an R2-signed URL; expiry is carried in `_meta.deliverables.expires_at`\non the envelope (not duplicated here). `layers` is DXF-only; PDF/SVG\ncallers omit it.",
        -                      "properties": {
        -                        "drawing_type": {
        -                          "enum": [
        -                            "section",
        -                            "plan",
        -                            "elevation",
        -                            "isometric",
        -                            "detail"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "format": {
        -                          "enum": [
        -                            "DXF",
        -                            "PDF",
        -                            "SVG"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "layers": {
        -                          "anyOf": [
        -                            {
        -                              "items": {
        -                                "type": "string"
        -                              },
        -                              "type": "array"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ],
        -                          "default": null
        -                        },
        -                        "scale": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "sheet_size": {
        -                          "enum": [
        -                            "A1",
        -                            "A2",
        -                            "A3",
        -                            "A4"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "url": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "drawing_type",
        -                        "format",
        -                        "url",
        -                        "sheet_size",
        -                        "scale"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "parameters_used": {
        -                "additionalProperties": false,
        -                "description": "Schema § 1.2 — the parameter snapshot the engine actually used.\n\nSplits user-supplied values from engine defaults so customers can see\nwhich numbers came from them and which the engine filled in. Every\ndefaulted parameter SHOULD have a corresponding entry in `assumptions`\n— the bridge layer enforces this when wrapping engine output.",
        -                "properties": {
        -                  "assumptions": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "engine_defaults": {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  "resolved_from_description": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "additionalProperties": false,
        -                          "description": "Schema § 1.2 — a parameter resolved by the forgiving-input layer.\n\nPopulated by the Track B-Forgiving Haiku-4.5 resolution pass; until that\nlayer lands, instances are constructed only by tests. `source` distinguishes\nthe resolution path so customers can audit which fields were inferred.",
        -                          "properties": {
        -                            "confidence": {
        -                              "anyOf": [
        -                                {
        -                                  "enum": [
        -                                    "high",
        -                                    "medium",
        -                                    "low"
        -                                  ],
        -                                  "type": "string"
        -                                },
        -                                {
        -                                  "type": "null"
        -                                }
        -                              ],
        -                              "default": null
        -                            },
        -                            "field_name": {
        -                              "minLength": 1,
        -                              "type": "string"
        -                            },
        -                            "resolved_value": {},
        -                            "source": {
        -                              "enum": [
        -                                "description_field",
        -                                "haiku_resolution",
        -                                "engine_default"
        -                              ],
        -                              "type": "string"
        -                            }
        -                          },
        -                          "required": [
        -                            "field_name",
        -                            "resolved_value",
        -                            "source"
        -                          ],
        -                          "type": "object"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "user_supplied": {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  }
        -                },
        -                "type": "object"
        -              },
        -              "standard": {
        -                "enum": [
        -                  "CESMM4",
        -                  "NRM2",
        -                  "SMM7",
        -                  "MMHW"
        -                ],
        -                "type": "string"
        -              },
        -              "text_summary": {
        -                "maxLength": 2000,
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "totals_summary": {
        -                "additionalProperties": false,
        -                "description": "Schema § 1.4 — totals_summary as a typed wrapper around the free-form dict.\n\nWire shape is a flat object (`{\"concrete_m3\": {...}, \"rebar_t\": {...}}`).\nWe model it as `RootModel`-equivalent via `model_config(extra=\"allow\")`\n+ a single `__root__`-style `entries` dict. Pydantic v2 recommends\n`RootModel` for free-form roots; using a wrapper class keeps the import\nsurface uniform with the rest of this module.",
        -                "properties": {
        -                  "entries": {
        -                    "additionalProperties": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.4 — single material/work-class total entry.",
        -                      "properties": {
        -                        "quantity": {
        -                          "minimum": 0,
        -                          "type": "number"
        -                        },
        -                        "unit": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "quantity",
        -                        "unit"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "object"
        -                  }
        -                },
        -                "type": "object"
        -              }
        -            },
        -            "required": [
        -              "assembly_slug",
        -              "standard",
        -              "parameters_used",
        -              "boq_rows",
        -              "totals_summary",
        -              "text_summary"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      },
        -      "error": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        -            "properties": {
        -              "code": {
        -                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        -                "enum": [
        -                  "RATE_LIMIT_EXCEEDED",
        -                  "TIER_INSUFFICIENT",
        -                  "INVALID_INPUT",
        -                  "SCHEMA_VERSION_MISMATCH",
        -                  "SCHEMA_INVARIANT_VIOLATION",
        -                  "UPSTREAM_TIMEOUT",
        -                  "BACKEND_FAILURE",
        -                  "IP_BLOCKED",
        -                  "RESOURCE_NOT_FOUND",
        -                  "RENDER_FAILURE",
        -                  "OCR_LOW_CONFIDENCE",
        -                  "MANUAL_REVIEW_REQUIRED",
        -                  "ACCEPTANCE_REQUIRED",
        -                  "INVALID_TOKEN"
        -                ],
        -                "type": "string"
        -              },
        -              "details": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "message": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "recoverable": {
        -                "type": "boolean"
        -              },
        -              "retry_after_seconds": {
        -                "anyOf": [
        -                  {
        -                    "minimum": 0,
        -                    "type": "integer"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              }
        -            },
        -            "required": [
        -              "code",
        -              "message",
        -              "recoverable"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      }
        -    },
        -    "required": [
        -      "_meta"
        -    ],
        -    "type": "object"
        -  },
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "_meta": {
        -        "additionalProperties": false,
        -        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        -        "properties": {
        -          "deliverables": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        -                "properties": {
        -                  "docx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "dxf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "expires_at": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  },
        -                  "pdf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "xlsx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "expires_at"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "document_id": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "issued_at": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "rate_limit_remaining": {
        -            "anyOf": [
        -              {
        -                "minimum": 0,
        -                "type": "integer"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "request_id": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "schema_version": {
        -            "const": "1.0.0",
        -            "default": "1.0.0",
        -            "type": "string"
        -          },
        -          "scope_boundary": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        -                "properties": {
        -                  "not_in_scope": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "produced": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "recommended_companions": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "type": "string"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "produced",
        -                  "not_in_scope"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tier": {
        -            "enum": [
        -              "free",
        -              "paid"
        -            ],
        -            "type": "string"
        -          },
        -          "tier_upgrade": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        -                "properties": {
        -                  "available_tiers": {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        -                      "properties": {
        -                        "billing": {
        -                          "enum": [
        -                            "one_off",
        -                            "monthly",
        -                            "annual"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "currency": {
        -                          "enum": [
        -                            "GBP",
        -                            "SGD",
        -                            "EUR",
        -                            "USD",
        -                            "CAD",
        -                            "AUD",
        -                            "NZD",
        -                            "MYR"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "display_name": {
        -                          "type": "string"
        -                        },
        -                        "price_local": {
        -                          "type": "number"
        -                        },
        -                        "tier_slug": {
        -                          "enum": [
        -                            "7_day_pass",
        -                            "solo",
        -                            "studio",
        -                            "practice"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "unlock_summary": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "tier_slug",
        -                        "display_name",
        -                        "price_local",
        -                        "currency",
        -                        "billing",
        -                        "unlock_summary"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "current_tier": {
        -                    "const": "free",
        -                    "default": "free",
        -                    "type": "string"
        -                  },
        -                  "pass_credit": {
        -                    "anyOf": [
        -                      {
        -                        "additionalProperties": false,
        -                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        -                        "properties": {
        -                          "amount_local": {
        -                            "type": "number"
        -                          },
        -                          "applies_to": {
        -                            "const": "solo_first_month",
        -                            "default": "solo_first_month",
        -                            "type": "string"
        -                          },
        -                          "currency": {
        -                            "type": "string"
        -                          },
        -                          "redeemable_until": {
        -                            "type": "string"
        -                          }
        -                        },
        -                        "required": [
        -                          "amount_local",
        -                          "currency",
        -                          "redeemable_until"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "pricing_url": {
        -                    "default": "https://civilquants.com/pricing",
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "available_tiers"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tos_url": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "upgrade_hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "warranty_disclaimer": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          }
        -        },
        -        "required": [
        -          "request_id",
        -          "issued_at",
        -          "tier"
        -        ],
        -        "type": "object"
        -      },
        -      "data": {
        -        "default": null,
        -        "title": "Data"
        -      },
        -      "error": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        -            "properties": {
        -              "code": {
        -                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        -                "enum": [
        -                  "RATE_LIMIT_EXCEEDED",
        -                  "TIER_INSUFFICIENT",
        -                  "INVALID_INPUT",
        -                  "SCHEMA_VERSION_MISMATCH",
        -                  "SCHEMA_INVARIANT_VIOLATION",
        -                  "UPSTREAM_TIMEOUT",
        -                  "BACKEND_FAILURE",
        -                  "IP_BLOCKED",
        -                  "RESOURCE_NOT_FOUND",
        -                  "RENDER_FAILURE",
        -                  "OCR_LOW_CONFIDENCE",
        -                  "MANUAL_REVIEW_REQUIRED",
        -                  "ACCEPTANCE_REQUIRED",
        -                  "INVALID_TOKEN"
        -                ],
        -                "type": "string"
        -              },
        -              "details": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "message": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "recoverable": {
        -                "type": "boolean"
        -              },
        -              "retry_after_seconds": {
        -                "anyOf": [
        -                  {
        -                    "minimum": 0,
        -                    "type": "integer"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              }
        -            },
        -            "required": [
        -              "code",
        -              "message",
        -              "recoverable"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      }
        -    },
        -    "required": [
        -      "_meta"
        -    ],
        -    "type": "object"
        -  }
        -]New value: +[
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "_meta": {
        +        "additionalProperties": false,
        +        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        +        "properties": {
        +          "deliverables": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        +                "properties": {
        +                  "docx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "dxf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "expires_at": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  },
        +                  "pdf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "xlsx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "expires_at"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "document_id": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "issued_at": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "rate_limit_remaining": {
        +            "anyOf": [
        +              {
        +                "minimum": 0,
        +                "type": "integer"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "request_id": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "schema_version": {
        +            "const": "1.0.0",
        +            "default": "1.0.0",
        +            "type": "string"
        +          },
        +          "scope_boundary": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        +                "properties": {
        +                  "not_in_scope": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "produced": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "recommended_companions": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "type": "string"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "produced",
        +                  "not_in_scope"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tier": {
        +            "enum": [
        +              "free",
        +              "paid"
        +            ],
        +            "type": "string"
        +          },
        +          "tier_upgrade": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        +                "properties": {
        +                  "available_tiers": {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        +                      "properties": {
        +                        "billing": {
        +                          "enum": [
        +                            "one_off",
        +                            "monthly",
        +                            "annual"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "currency": {
        +                          "enum": [
        +                            "GBP",
        +                            "SGD",
        +                            "EUR",
        +                            "USD",
        +                            "CAD",
        +                            "AUD",
        +                            "NZD",
        +                            "MYR"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "display_name": {
        +                          "type": "string"
        +                        },
        +                        "price_local": {
        +                          "type": "number"
        +                        },
        +                        "tier_slug": {
        +                          "enum": [
        +                            "7_day_pass",
        +                            "solo",
        +                            "studio",
        +                            "practice"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "unlock_summary": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "tier_slug",
        +                        "display_name",
        +                        "price_local",
        +                        "currency",
        +                        "billing",
        +                        "unlock_summary"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "current_tier": {
        +                    "const": "free",
        +                    "default": "free",
        +                    "type": "string"
        +                  },
        +                  "pass_credit": {
        +                    "anyOf": [
        +                      {
        +                        "additionalProperties": false,
        +                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        +                        "properties": {
        +                          "amount_local": {
        +                            "type": "number"
        +                          },
        +                          "applies_to": {
        +                            "const": "solo_first_month",
        +                            "default": "solo_first_month",
        +                            "type": "string"
        +                          },
        +                          "currency": {
        +                            "type": "string"
        +                          },
        +                          "redeemable_until": {
        +                            "type": "string"
        +                          }
        +                        },
        +                        "required": [
        +                          "amount_local",
        +                          "currency",
        +                          "redeemable_until"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "pricing_url": {
        +                    "default": "https://civilquants.com/pricing",
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "available_tiers"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tos_url": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "upgrade_hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "warranty_disclaimer": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          }
        +        },
        +        "required": [
        +          "request_id",
        +          "issued_at",
        +          "tier"
        +        ],
        +        "type": "object"
        +      },
        +      "data": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Schema § 1.1 — the typed payload returned inside `MCPResponse[ComputeResult]`.\n\nFree-tier responses MUST omit `drawings` and `audit_trail` (the bridge\nenforces this); paid-tier responses populate both. `text_summary` is\nbounded to 2000 chars — keeps the LLM-facing summary token-cheap and\nforces longer narrative into BoQ row descriptions where it belongs.\n`warnings` is the non-fatal geometry advisory list (both tiers).",
        +            "properties": {
        +              "assembly_slug": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "audit_trail": {
        +                "anyOf": [
        +                  {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.7 — paid-tier audit-trail entry.\n\nOne entry per BoQ row; `boq_row_index` ties to the row position in\n`ComputeResult.boq_rows`. `derivation` is the human-readable formula\nwalk-through; `formula` is the optional formal expression.",
        +                      "properties": {
        +                        "boq_row_index": {
        +                          "minimum": 0,
        +                          "type": "integer"
        +                        },
        +                        "derivation": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "formula": {
        +                          "anyOf": [
        +                            {
        +                              "type": "string"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ],
        +                          "default": null
        +                        },
        +                        "id": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "parameters_referenced": {
        +                          "items": {
        +                            "type": "string"
        +                          },
        +                          "type": "array"
        +                        }
        +                      },
        +                      "required": [
        +                        "id",
        +                        "boq_row_index",
        +                        "derivation"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "boq_rows": {
        +                "items": {
        +                  "additionalProperties": false,
        +                  "description": "Schema § 1.3 — a single bill row in the requested standard's format.\n\n`description` is the non-verbatim functional description per spec § 13.9 /\n§ 15 invariant — NEVER reproduces a standard's verbatim clause text.\n`rate` / `amount` ship null because rates are commodity data the customer\nowns; the engine's job is the measurement, not the pricing.",
        +                  "properties": {
        +                    "amount": {
        +                      "anyOf": [
        +                        {
        +                          "type": "number"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "attribution": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "audit_id": {
        +                      "anyOf": [
        +                        {
        +                          "type": "string"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "description": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "quantity": {
        +                      "minimum": 0,
        +                      "type": "number"
        +                    },
        +                    "rate": {
        +                      "anyOf": [
        +                        {
        +                          "type": "number"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "unit": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "work_section": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    }
        +                  },
        +                  "required": [
        +                    "work_section",
        +                    "description",
        +                    "quantity",
        +                    "unit",
        +                    "attribution"
        +                  ],
        +                  "type": "object"
        +                },
        +                "type": "array"
        +              },
        +              "drawings": {
        +                "anyOf": [
        +                  {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.6 — paid-tier drawing artefact pointer.\n\n`url` is an R2-signed URL; expiry is carried in `_meta.deliverables.expires_at`\non the envelope (not duplicated here). `layers` is DXF-only; PDF/SVG\ncallers omit it.",
        +                      "properties": {
        +                        "drawing_type": {
        +                          "enum": [
        +                            "section",
        +                            "plan",
        +                            "elevation",
        +                            "isometric",
        +                            "detail"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "format": {
        +                          "enum": [
        +                            "DXF",
        +                            "PDF",
        +                            "SVG"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "layers": {
        +                          "anyOf": [
        +                            {
        +                              "items": {
        +                                "type": "string"
        +                              },
        +                              "type": "array"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ],
        +                          "default": null
        +                        },
        +                        "scale": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "sheet_size": {
        +                          "enum": [
        +                            "A1",
        +                            "A2",
        +                            "A3",
        +                            "A4"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "url": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "drawing_type",
        +                        "format",
        +                        "url",
        +                        "sheet_size",
        +                        "scale"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "parameters_used": {
        +                "additionalProperties": false,
        +                "description": "Schema § 1.2 — the parameter snapshot the engine actually used.\n\nSplits user-supplied values from engine defaults so customers can see\nwhich numbers came from them and which the engine filled in. Every\ndefaulted parameter SHOULD have a corresponding entry in `assumptions`\n— the bridge layer enforces this when wrapping engine output.",
        +                "properties": {
        +                  "assumptions": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "engine_defaults": {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  "resolved_from_description": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "additionalProperties": false,
        +                          "description": "Schema § 1.2 — a parameter resolved by the forgiving-input layer.\n\nPopulated by the Track B-Forgiving Haiku-4.5 resolution pass; until that\nlayer lands, instances are constructed only by tests. `source` distinguishes\nthe resolution path so customers can audit which fields were inferred.",
        +                          "properties": {
        +                            "confidence": {
        +                              "anyOf": [
        +                                {
        +                                  "enum": [
        +                                    "high",
        +                                    "medium",
        +                                    "low"
        +                                  ],
        +                                  "type": "string"
        +                                },
        +                                {
        +                                  "type": "null"
        +                                }
        +                              ],
        +                              "default": null
        +                            },
        +                            "field_name": {
        +                              "minLength": 1,
        +                              "type": "string"
        +                            },
        +                            "resolved_value": {},
        +                            "source": {
        +                              "enum": [
        +                                "description_field",
        +                                "haiku_resolution",
        +                                "engine_default"
        +                              ],
        +                              "type": "string"
        +                            }
        +                          },
        +                          "required": [
        +                            "field_name",
        +                            "resolved_value",
        +                            "source"
        +                          ],
        +                          "type": "object"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "user_supplied": {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  }
        +                },
        +                "type": "object"
        +              },
        +              "standard": {
        +                "enum": [
        +                  "CESMM4",
        +                  "NRM2",
        +                  "SMM7",
        +                  "MMHW"
        +                ],
        +                "type": "string"
        +              },
        +              "text_summary": {
        +                "maxLength": 2000,
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "totals_summary": {
        +                "additionalProperties": false,
        +                "description": "Schema § 1.4 — totals_summary as a typed wrapper around the free-form dict.\n\nWire shape is a flat object (`{\"concrete_m3\": {...}, \"rebar_t\": {...}}`).\nWe model it as `RootModel`-equivalent via `model_config(extra=\"allow\")`\n+ a single `__root__`-style `entries` dict. Pydantic v2 recommends\n`RootModel` for free-form roots; using a wrapper class keeps the import\nsurface uniform with the rest of this module.",
        +                "properties": {
        +                  "entries": {
        +                    "additionalProperties": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.4 — single material/work-class total entry.",
        +                      "properties": {
        +                        "quantity": {
        +                          "minimum": 0,
        +                          "type": "number"
        +                        },
        +                        "unit": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "quantity",
        +                        "unit"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "object"
        +                  }
        +                },
        +                "type": "object"
        +              },
        +              "warnings": {
        +                "items": {
        +                  "additionalProperties": false,
        +                  "description": "Schema § 1.8 — a non-fatal geometry advisory (56th-fire T2).\n\nThe wire projection of the engine's `core.GeometryWarning`. Advisory only:\na warning NEVER changes a measured quantity — it flags geometry that is\nvalid but likely a mistake (e.g. a stale dependent-height default). Present\non BOTH tiers — a correctness/safety signal, not a paid feature.",
        +                  "properties": {
        +                    "affected_params": {
        +                      "items": {
        +                        "type": "string"
        +                      },
        +                      "type": "array"
        +                    },
        +                    "code": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "detail": {
        +                      "additionalProperties": {
        +                        "type": "number"
        +                      },
        +                      "type": "object"
        +                    },
        +                    "message": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "severity": {
        +                      "enum": [
        +                        "info",
        +                        "advisory",
        +                        "caution"
        +                      ],
        +                      "type": "string"
        +                    }
        +                  },
        +                  "required": [
        +                    "code",
        +                    "severity",
        +                    "message"
        +                  ],
        +                  "type": "object"
        +                },
        +                "type": "array"
        +              }
        +            },
        +            "required": [
        +              "assembly_slug",
        +              "standard",
        +              "parameters_used",
        +              "boq_rows",
        +              "totals_summary",
        +              "text_summary"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      },
        +      "error": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        +            "properties": {
        +              "code": {
        +                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        +                "enum": [
        +                  "RATE_LIMIT_EXCEEDED",
        +                  "TIER_INSUFFICIENT",
        +                  "INVALID_INPUT",
        +                  "SCHEMA_VERSION_MISMATCH",
        +                  "SCHEMA_INVARIANT_VIOLATION",
        +                  "UPSTREAM_TIMEOUT",
        +                  "BACKEND_FAILURE",
        +                  "IP_BLOCKED",
        +                  "RESOURCE_NOT_FOUND",
        +                  "RENDER_FAILURE",
        +                  "OCR_LOW_CONFIDENCE",
        +                  "MANUAL_REVIEW_REQUIRED",
        +                  "ACCEPTANCE_REQUIRED",
        +                  "INVALID_TOKEN"
        +                ],
        +                "type": "string"
        +              },
        +              "details": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "message": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "recoverable": {
        +                "type": "boolean"
        +              },
        +              "retry_after_seconds": {
        +                "anyOf": [
        +                  {
        +                    "minimum": 0,
        +                    "type": "integer"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              }
        +            },
        +            "required": [
        +              "code",
        +              "message",
        +              "recoverable"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      }
        +    },
        +    "required": [
        +      "_meta"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "_meta": {
        +        "additionalProperties": false,
        +        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        +        "properties": {
        +          "deliverables": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        +                "properties": {
        +                  "docx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "dxf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "expires_at": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  },
        +                  "pdf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "xlsx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "expires_at"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "document_id": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "issued_at": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "rate_limit_remaining": {
        +            "anyOf": [
        +              {
        +                "minimum": 0,
        +                "type": "integer"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "request_id": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "schema_version": {
        +            "const": "1.0.0",
        +            "default": "1.0.0",
        +            "type": "string"
        +          },
        +          "scope_boundary": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        +                "properties": {
        +                  "not_in_scope": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "produced": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "recommended_companions": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "type": "string"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "produced",
        +                  "not_in_scope"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tier": {
        +            "enum": [
        +              "free",
        +              "paid"
        +            ],
        +            "type": "string"
        +          },
        +          "tier_upgrade": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        +                "properties": {
        +                  "available_tiers": {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        +                      "properties": {
        +                        "billing": {
        +                          "enum": [
        +                            "one_off",
        +                            "monthly",
        +                            "annual"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "currency": {
        +                          "enum": [
        +                            "GBP",
        +                            "SGD",
        +                            "EUR",
        +                            "USD",
        +                            "CAD",
        +                            "AUD",
        +                            "NZD",
        +                            "MYR"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "display_name": {
        +                          "type": "string"
        +                        },
        +                        "price_local": {
        +                          "type": "number"
        +                        },
        +                        "tier_slug": {
        +                          "enum": [
        +                            "7_day_pass",
        +                            "solo",
        +                            "studio",
        +                            "practice"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "unlock_summary": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "tier_slug",
        +                        "display_name",
        +                        "price_local",
        +                        "currency",
        +                        "billing",
        +                        "unlock_summary"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "current_tier": {
        +                    "const": "free",
        +                    "default": "free",
        +                    "type": "string"
        +                  },
        +                  "pass_credit": {
        +                    "anyOf": [
        +                      {
        +                        "additionalProperties": false,
        +                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        +                        "properties": {
        +                          "amount_local": {
        +                            "type": "number"
        +                          },
        +                          "applies_to": {
        +                            "const": "solo_first_month",
        +                            "default": "solo_first_month",
        +                            "type": "string"
        +                          },
        +                          "currency": {
        +                            "type": "string"
        +                          },
        +                          "redeemable_until": {
        +                            "type": "string"
        +                          }
        +                        },
        +                        "required": [
        +                          "amount_local",
        +                          "currency",
        +                          "redeemable_until"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "pricing_url": {
        +                    "default": "https://civilquants.com/pricing",
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "available_tiers"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tos_url": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "upgrade_hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "warranty_disclaimer": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          }
        +        },
        +        "required": [
        +          "request_id",
        +          "issued_at",
        +          "tier"
        +        ],
        +        "type": "object"
        +      },
        +      "data": {
        +        "default": null,
        +        "title": "Data"
        +      },
        +      "error": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        +            "properties": {
        +              "code": {
        +                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        +                "enum": [
        +                  "RATE_LIMIT_EXCEEDED",
        +                  "TIER_INSUFFICIENT",
        +                  "INVALID_INPUT",
        +                  "SCHEMA_VERSION_MISMATCH",
        +                  "SCHEMA_INVARIANT_VIOLATION",
        +                  "UPSTREAM_TIMEOUT",
        +                  "BACKEND_FAILURE",
        +                  "IP_BLOCKED",
        +                  "RESOURCE_NOT_FOUND",
        +                  "RENDER_FAILURE",
        +                  "OCR_LOW_CONFIDENCE",
        +                  "MANUAL_REVIEW_REQUIRED",
        +                  "ACCEPTANCE_REQUIRED",
        +                  "INVALID_TOKEN"
        +                ],
        +                "type": "string"
        +              },
        +              "details": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "message": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "recoverable": {
        +                "type": "boolean"
        +              },
        +              "retry_after_seconds": {
        +                "anyOf": [
        +                  {
        +                    "minimum": 0,
        +                    "type": "integer"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              }
        +            },
        +            "required": [
        +              "code",
        +              "message",
        +              "recoverable"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      }
        +    },
        +    "required": [
        +      "_meta"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedcompute_counterfort_wall1 field changed
      • changedOutput schema / properties / result / anyOf
        Previous value: -[
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "_meta": {
        -        "additionalProperties": false,
        -        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        -        "properties": {
        -          "deliverables": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        -                "properties": {
        -                  "docx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "dxf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "expires_at": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  },
        -                  "pdf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "xlsx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "expires_at"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "document_id": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "issued_at": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "rate_limit_remaining": {
        -            "anyOf": [
        -              {
        -                "minimum": 0,
        -                "type": "integer"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "request_id": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "schema_version": {
        -            "const": "1.0.0",
        -            "default": "1.0.0",
        -            "type": "string"
        -          },
        -          "scope_boundary": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        -                "properties": {
        -                  "not_in_scope": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "produced": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "recommended_companions": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "type": "string"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "produced",
        -                  "not_in_scope"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tier": {
        -            "enum": [
        -              "free",
        -              "paid"
        -            ],
        -            "type": "string"
        -          },
        -          "tier_upgrade": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        -                "properties": {
        -                  "available_tiers": {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        -                      "properties": {
        -                        "billing": {
        -                          "enum": [
        -                            "one_off",
        -                            "monthly",
        -                            "annual"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "currency": {
        -                          "enum": [
        -                            "GBP",
        -                            "SGD",
        -                            "EUR",
        -                            "USD",
        -                            "CAD",
        -                            "AUD",
        -                            "NZD",
        -                            "MYR"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "display_name": {
        -                          "type": "string"
        -                        },
        -                        "price_local": {
        -                          "type": "number"
        -                        },
        -                        "tier_slug": {
        -                          "enum": [
        -                            "7_day_pass",
        -                            "solo",
        -                            "studio",
        -                            "practice"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "unlock_summary": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "tier_slug",
        -                        "display_name",
        -                        "price_local",
        -                        "currency",
        -                        "billing",
        -                        "unlock_summary"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "current_tier": {
        -                    "const": "free",
        -                    "default": "free",
        -                    "type": "string"
        -                  },
        -                  "pass_credit": {
        -                    "anyOf": [
        -                      {
        -                        "additionalProperties": false,
        -                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        -                        "properties": {
        -                          "amount_local": {
        -                            "type": "number"
        -                          },
        -                          "applies_to": {
        -                            "const": "solo_first_month",
        -                            "default": "solo_first_month",
        -                            "type": "string"
        -                          },
        -                          "currency": {
        -                            "type": "string"
        -                          },
        -                          "redeemable_until": {
        -                            "type": "string"
        -                          }
        -                        },
        -                        "required": [
        -                          "amount_local",
        -                          "currency",
        -                          "redeemable_until"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "pricing_url": {
        -                    "default": "https://civilquants.com/pricing",
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "available_tiers"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tos_url": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "upgrade_hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "warranty_disclaimer": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          }
        -        },
        -        "required": [
        -          "request_id",
        -          "issued_at",
        -          "tier"
        -        ],
        -        "type": "object"
        -      },
        -      "data": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Schema § 1.1 — the typed payload returned inside `MCPResponse[ComputeResult]`.\n\nFree-tier responses MUST omit `drawings` and `audit_trail` (the bridge\nenforces this); paid-tier responses populate both. `text_summary` is\nbounded to 2000 chars — keeps the LLM-facing summary token-cheap and\nforces longer narrative into BoQ row descriptions where it belongs.",
        -            "properties": {
        -              "assembly_slug": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "audit_trail": {
        -                "anyOf": [
        -                  {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.7 — paid-tier audit-trail entry.\n\nOne entry per BoQ row; `boq_row_index` ties to the row position in\n`ComputeResult.boq_rows`. `derivation` is the human-readable formula\nwalk-through; `formula` is the optional formal expression.",
        -                      "properties": {
        -                        "boq_row_index": {
        -                          "minimum": 0,
        -                          "type": "integer"
        -                        },
        -                        "derivation": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "formula": {
        -                          "anyOf": [
        -                            {
        -                              "type": "string"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ],
        -                          "default": null
        -                        },
        -                        "id": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "parameters_referenced": {
        -                          "items": {
        -                            "type": "string"
        -                          },
        -                          "type": "array"
        -                        }
        -                      },
        -                      "required": [
        -                        "id",
        -                        "boq_row_index",
        -                        "derivation"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "boq_rows": {
        -                "items": {
        -                  "additionalProperties": false,
        -                  "description": "Schema § 1.3 — a single bill row in the requested standard's format.\n\n`description` is the non-verbatim functional description per spec § 13.9 /\n§ 15 invariant — NEVER reproduces a standard's verbatim clause text.\n`rate` / `amount` ship null because rates are commodity data the customer\nowns; the engine's job is the measurement, not the pricing.",
        -                  "properties": {
        -                    "amount": {
        -                      "anyOf": [
        -                        {
        -                          "type": "number"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "attribution": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "audit_id": {
        -                      "anyOf": [
        -                        {
        -                          "type": "string"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "description": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "quantity": {
        -                      "minimum": 0,
        -                      "type": "number"
        -                    },
        -                    "rate": {
        -                      "anyOf": [
        -                        {
        -                          "type": "number"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "unit": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "work_section": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    }
        -                  },
        -                  "required": [
        -                    "work_section",
        -                    "description",
        -                    "quantity",
        -                    "unit",
        -                    "attribution"
        -                  ],
        -                  "type": "object"
        -                },
        -                "type": "array"
        -              },
        -              "drawings": {
        -                "anyOf": [
        -                  {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.6 — paid-tier drawing artefact pointer.\n\n`url` is an R2-signed URL; expiry is carried in `_meta.deliverables.expires_at`\non the envelope (not duplicated here). `layers` is DXF-only; PDF/SVG\ncallers omit it.",
        -                      "properties": {
        -                        "drawing_type": {
        -                          "enum": [
        -                            "section",
        -                            "plan",
        -                            "elevation",
        -                            "isometric",
        -                            "detail"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "format": {
        -                          "enum": [
        -                            "DXF",
        -                            "PDF",
        -                            "SVG"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "layers": {
        -                          "anyOf": [
        -                            {
        -                              "items": {
        -                                "type": "string"
        -                              },
        -                              "type": "array"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ],
        -                          "default": null
        -                        },
        -                        "scale": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "sheet_size": {
        -                          "enum": [
        -                            "A1",
        -                            "A2",
        -                            "A3",
        -                            "A4"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "url": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "drawing_type",
        -                        "format",
        -                        "url",
        -                        "sheet_size",
        -                        "scale"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "parameters_used": {
        -                "additionalProperties": false,
        -                "description": "Schema § 1.2 — the parameter snapshot the engine actually used.\n\nSplits user-supplied values from engine defaults so customers can see\nwhich numbers came from them and which the engine filled in. Every\ndefaulted parameter SHOULD have a corresponding entry in `assumptions`\n— the bridge layer enforces this when wrapping engine output.",
        -                "properties": {
        -                  "assumptions": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "engine_defaults": {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  "resolved_from_description": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "additionalProperties": false,
        -                          "description": "Schema § 1.2 — a parameter resolved by the forgiving-input layer.\n\nPopulated by the Track B-Forgiving Haiku-4.5 resolution pass; until that\nlayer lands, instances are constructed only by tests. `source` distinguishes\nthe resolution path so customers can audit which fields were inferred.",
        -                          "properties": {
        -                            "confidence": {
        -                              "anyOf": [
        -                                {
        -                                  "enum": [
        -                                    "high",
        -                                    "medium",
        -                                    "low"
        -                                  ],
        -                                  "type": "string"
        -                                },
        -                                {
        -                                  "type": "null"
        -                                }
        -                              ],
        -                              "default": null
        -                            },
        -                            "field_name": {
        -                              "minLength": 1,
        -                              "type": "string"
        -                            },
        -                            "resolved_value": {},
        -                            "source": {
        -                              "enum": [
        -                                "description_field",
        -                                "haiku_resolution",
        -                                "engine_default"
        -                              ],
        -                              "type": "string"
        -                            }
        -                          },
        -                          "required": [
        -                            "field_name",
        -                            "resolved_value",
        -                            "source"
        -                          ],
        -                          "type": "object"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "user_supplied": {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  }
        -                },
        -                "type": "object"
        -              },
        -              "standard": {
        -                "enum": [
        -                  "CESMM4",
        -                  "NRM2",
        -                  "SMM7",
        -                  "MMHW"
        -                ],
        -                "type": "string"
        -              },
        -              "text_summary": {
        -                "maxLength": 2000,
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "totals_summary": {
        -                "additionalProperties": false,
        -                "description": "Schema § 1.4 — totals_summary as a typed wrapper around the free-form dict.\n\nWire shape is a flat object (`{\"concrete_m3\": {...}, \"rebar_t\": {...}}`).\nWe model it as `RootModel`-equivalent via `model_config(extra=\"allow\")`\n+ a single `__root__`-style `entries` dict. Pydantic v2 recommends\n`RootModel` for free-form roots; using a wrapper class keeps the import\nsurface uniform with the rest of this module.",
        -                "properties": {
        -                  "entries": {
        -                    "additionalProperties": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.4 — single material/work-class total entry.",
        -                      "properties": {
        -                        "quantity": {
        -                          "minimum": 0,
        -                          "type": "number"
        -                        },
        -                        "unit": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "quantity",
        -                        "unit"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "object"
        -                  }
        -                },
        -                "type": "object"
        -              }
        -            },
        -            "required": [
        -              "assembly_slug",
        -              "standard",
        -              "parameters_used",
        -              "boq_rows",
        -              "totals_summary",
        -              "text_summary"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      },
        -      "error": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        -            "properties": {
        -              "code": {
        -                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        -                "enum": [
        -                  "RATE_LIMIT_EXCEEDED",
        -                  "TIER_INSUFFICIENT",
        -                  "INVALID_INPUT",
        -                  "SCHEMA_VERSION_MISMATCH",
        -                  "SCHEMA_INVARIANT_VIOLATION",
        -                  "UPSTREAM_TIMEOUT",
        -                  "BACKEND_FAILURE",
        -                  "IP_BLOCKED",
        -                  "RESOURCE_NOT_FOUND",
        -                  "RENDER_FAILURE",
        -                  "OCR_LOW_CONFIDENCE",
        -                  "MANUAL_REVIEW_REQUIRED",
        -                  "ACCEPTANCE_REQUIRED",
        -                  "INVALID_TOKEN"
        -                ],
        -                "type": "string"
        -              },
        -              "details": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "message": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "recoverable": {
        -                "type": "boolean"
        -              },
        -              "retry_after_seconds": {
        -                "anyOf": [
        -                  {
        -                    "minimum": 0,
        -                    "type": "integer"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              }
        -            },
        -            "required": [
        -              "code",
        -              "message",
        -              "recoverable"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      }
        -    },
        -    "required": [
        -      "_meta"
        -    ],
        -    "type": "object"
        -  },
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "_meta": {
        -        "additionalProperties": false,
        -        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        -        "properties": {
        -          "deliverables": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        -                "properties": {
        -                  "docx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "dxf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "expires_at": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  },
        -                  "pdf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "xlsx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "expires_at"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "document_id": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "issued_at": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "rate_limit_remaining": {
        -            "anyOf": [
        -              {
        -                "minimum": 0,
        -                "type": "integer"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "request_id": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "schema_version": {
        -            "const": "1.0.0",
        -            "default": "1.0.0",
        -            "type": "string"
        -          },
        -          "scope_boundary": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        -                "properties": {
        -                  "not_in_scope": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "produced": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "recommended_companions": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "type": "string"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "produced",
        -                  "not_in_scope"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tier": {
        -            "enum": [
        -              "free",
        -              "paid"
        -            ],
        -            "type": "string"
        -          },
        -          "tier_upgrade": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        -                "properties": {
        -                  "available_tiers": {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        -                      "properties": {
        -                        "billing": {
        -                          "enum": [
        -                            "one_off",
        -                            "monthly",
        -                            "annual"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "currency": {
        -                          "enum": [
        -                            "GBP",
        -                            "SGD",
        -                            "EUR",
        -                            "USD",
        -                            "CAD",
        -                            "AUD",
        -                            "NZD",
        -                            "MYR"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "display_name": {
        -                          "type": "string"
        -                        },
        -                        "price_local": {
        -                          "type": "number"
        -                        },
        -                        "tier_slug": {
        -                          "enum": [
        -                            "7_day_pass",
        -                            "solo",
        -                            "studio",
        -                            "practice"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "unlock_summary": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "tier_slug",
        -                        "display_name",
        -                        "price_local",
        -                        "currency",
        -                        "billing",
        -                        "unlock_summary"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "current_tier": {
        -                    "const": "free",
        -                    "default": "free",
        -                    "type": "string"
        -                  },
        -                  "pass_credit": {
        -                    "anyOf": [
        -                      {
        -                        "additionalProperties": false,
        -                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        -                        "properties": {
        -                          "amount_local": {
        -                            "type": "number"
        -                          },
        -                          "applies_to": {
        -                            "const": "solo_first_month",
        -                            "default": "solo_first_month",
        -                            "type": "string"
        -                          },
        -                          "currency": {
        -                            "type": "string"
        -                          },
        -                          "redeemable_until": {
        -                            "type": "string"
        -                          }
        -                        },
        -                        "required": [
        -                          "amount_local",
        -                          "currency",
        -                          "redeemable_until"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "pricing_url": {
        -                    "default": "https://civilquants.com/pricing",
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "available_tiers"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tos_url": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "upgrade_hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "warranty_disclaimer": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          }
        -        },
        -        "required": [
        -          "request_id",
        -          "issued_at",
        -          "tier"
        -        ],
        -        "type": "object"
        -      },
        -      "data": {
        -        "default": null,
        -        "title": "Data"
        -      },
        -      "error": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        -            "properties": {
        -              "code": {
        -                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        -                "enum": [
        -                  "RATE_LIMIT_EXCEEDED",
        -                  "TIER_INSUFFICIENT",
        -                  "INVALID_INPUT",
        -                  "SCHEMA_VERSION_MISMATCH",
        -                  "SCHEMA_INVARIANT_VIOLATION",
        -                  "UPSTREAM_TIMEOUT",
        -                  "BACKEND_FAILURE",
        -                  "IP_BLOCKED",
        -                  "RESOURCE_NOT_FOUND",
        -                  "RENDER_FAILURE",
        -                  "OCR_LOW_CONFIDENCE",
        -                  "MANUAL_REVIEW_REQUIRED",
        -                  "ACCEPTANCE_REQUIRED",
        -                  "INVALID_TOKEN"
        -                ],
        -                "type": "string"
        -              },
        -              "details": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "message": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "recoverable": {
        -                "type": "boolean"
        -              },
        -              "retry_after_seconds": {
        -                "anyOf": [
        -                  {
        -                    "minimum": 0,
        -                    "type": "integer"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              }
        -            },
        -            "required": [
        -              "code",
        -              "message",
        -              "recoverable"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      }
        -    },
        -    "required": [
        -      "_meta"
        -    ],
        -    "type": "object"
        -  }
        -]New value: +[
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "_meta": {
        +        "additionalProperties": false,
        +        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        +        "properties": {
        +          "deliverables": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        +                "properties": {
        +                  "docx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "dxf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "expires_at": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  },
        +                  "pdf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "xlsx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "expires_at"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "document_id": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "issued_at": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "rate_limit_remaining": {
        +            "anyOf": [
        +              {
        +                "minimum": 0,
        +                "type": "integer"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "request_id": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "schema_version": {
        +            "const": "1.0.0",
        +            "default": "1.0.0",
        +            "type": "string"
        +          },
        +          "scope_boundary": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        +                "properties": {
        +                  "not_in_scope": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "produced": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "recommended_companions": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "type": "string"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "produced",
        +                  "not_in_scope"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tier": {
        +            "enum": [
        +              "free",
        +              "paid"
        +            ],
        +            "type": "string"
        +          },
        +          "tier_upgrade": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        +                "properties": {
        +                  "available_tiers": {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        +                      "properties": {
        +                        "billing": {
        +                          "enum": [
        +                            "one_off",
        +                            "monthly",
        +                            "annual"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "currency": {
        +                          "enum": [
        +                            "GBP",
        +                            "SGD",
        +                            "EUR",
        +                            "USD",
        +                            "CAD",
        +                            "AUD",
        +                            "NZD",
        +                            "MYR"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "display_name": {
        +                          "type": "string"
        +                        },
        +                        "price_local": {
        +                          "type": "number"
        +                        },
        +                        "tier_slug": {
        +                          "enum": [
        +                            "7_day_pass",
        +                            "solo",
        +                            "studio",
        +                            "practice"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "unlock_summary": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "tier_slug",
        +                        "display_name",
        +                        "price_local",
        +                        "currency",
        +                        "billing",
        +                        "unlock_summary"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "current_tier": {
        +                    "const": "free",
        +                    "default": "free",
        +                    "type": "string"
        +                  },
        +                  "pass_credit": {
        +                    "anyOf": [
        +                      {
        +                        "additionalProperties": false,
        +                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        +                        "properties": {
        +                          "amount_local": {
        +                            "type": "number"
        +                          },
        +                          "applies_to": {
        +                            "const": "solo_first_month",
        +                            "default": "solo_first_month",
        +                            "type": "string"
        +                          },
        +                          "currency": {
        +                            "type": "string"
        +                          },
        +                          "redeemable_until": {
        +                            "type": "string"
        +                          }
        +                        },
        +                        "required": [
        +                          "amount_local",
        +                          "currency",
        +                          "redeemable_until"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "pricing_url": {
        +                    "default": "https://civilquants.com/pricing",
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "available_tiers"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tos_url": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "upgrade_hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "warranty_disclaimer": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          }
        +        },
        +        "required": [
        +          "request_id",
        +          "issued_at",
        +          "tier"
        +        ],
        +        "type": "object"
        +      },
        +      "data": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Schema § 1.1 — the typed payload returned inside `MCPResponse[ComputeResult]`.\n\nFree-tier responses MUST omit `drawings` and `audit_trail` (the bridge\nenforces this); paid-tier responses populate both. `text_summary` is\nbounded to 2000 chars — keeps the LLM-facing summary token-cheap and\nforces longer narrative into BoQ row descriptions where it belongs.\n`warnings` is the non-fatal geometry advisory list (both tiers).",
        +            "properties": {
        +              "assembly_slug": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "audit_trail": {
        +                "anyOf": [
        +                  {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.7 — paid-tier audit-trail entry.\n\nOne entry per BoQ row; `boq_row_index` ties to the row position in\n`ComputeResult.boq_rows`. `derivation` is the human-readable formula\nwalk-through; `formula` is the optional formal expression.",
        +                      "properties": {
        +                        "boq_row_index": {
        +                          "minimum": 0,
        +                          "type": "integer"
        +                        },
        +                        "derivation": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "formula": {
        +                          "anyOf": [
        +                            {
        +                              "type": "string"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ],
        +                          "default": null
        +                        },
        +                        "id": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "parameters_referenced": {
        +                          "items": {
        +                            "type": "string"
        +                          },
        +                          "type": "array"
        +                        }
        +                      },
        +                      "required": [
        +                        "id",
        +                        "boq_row_index",
        +                        "derivation"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "boq_rows": {
        +                "items": {
        +                  "additionalProperties": false,
        +                  "description": "Schema § 1.3 — a single bill row in the requested standard's format.\n\n`description` is the non-verbatim functional description per spec § 13.9 /\n§ 15 invariant — NEVER reproduces a standard's verbatim clause text.\n`rate` / `amount` ship null because rates are commodity data the customer\nowns; the engine's job is the measurement, not the pricing.",
        +                  "properties": {
        +                    "amount": {
        +                      "anyOf": [
        +                        {
        +                          "type": "number"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "attribution": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "audit_id": {
        +                      "anyOf": [
        +                        {
        +                          "type": "string"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "description": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "quantity": {
        +                      "minimum": 0,
        +                      "type": "number"
        +                    },
        +                    "rate": {
        +                      "anyOf": [
        +                        {
        +                          "type": "number"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "unit": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "work_section": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    }
        +                  },
        +                  "required": [
        +                    "work_section",
        +                    "description",
        +                    "quantity",
        +                    "unit",
        +                    "attribution"
        +                  ],
        +                  "type": "object"
        +                },
        +                "type": "array"
        +              },
        +              "drawings": {
        +                "anyOf": [
        +                  {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.6 — paid-tier drawing artefact pointer.\n\n`url` is an R2-signed URL; expiry is carried in `_meta.deliverables.expires_at`\non the envelope (not duplicated here). `layers` is DXF-only; PDF/SVG\ncallers omit it.",
        +                      "properties": {
        +                        "drawing_type": {
        +                          "enum": [
        +                            "section",
        +                            "plan",
        +                            "elevation",
        +                            "isometric",
        +                            "detail"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "format": {
        +                          "enum": [
        +                            "DXF",
        +                            "PDF",
        +                            "SVG"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "layers": {
        +                          "anyOf": [
        +                            {
        +                              "items": {
        +                                "type": "string"
        +                              },
        +                              "type": "array"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ],
        +                          "default": null
        +                        },
        +                        "scale": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "sheet_size": {
        +                          "enum": [
        +                            "A1",
        +                            "A2",
        +                            "A3",
        +                            "A4"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "url": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "drawing_type",
        +                        "format",
        +                        "url",
        +                        "sheet_size",
        +                        "scale"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "parameters_used": {
        +                "additionalProperties": false,
        +                "description": "Schema § 1.2 — the parameter snapshot the engine actually used.\n\nSplits user-supplied values from engine defaults so customers can see\nwhich numbers came from them and which the engine filled in. Every\ndefaulted parameter SHOULD have a corresponding entry in `assumptions`\n— the bridge layer enforces this when wrapping engine output.",
        +                "properties": {
        +                  "assumptions": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "engine_defaults": {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  "resolved_from_description": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "additionalProperties": false,
        +                          "description": "Schema § 1.2 — a parameter resolved by the forgiving-input layer.\n\nPopulated by the Track B-Forgiving Haiku-4.5 resolution pass; until that\nlayer lands, instances are constructed only by tests. `source` distinguishes\nthe resolution path so customers can audit which fields were inferred.",
        +                          "properties": {
        +                            "confidence": {
        +                              "anyOf": [
        +                                {
        +                                  "enum": [
        +                                    "high",
        +                                    "medium",
        +                                    "low"
        +                                  ],
        +                                  "type": "string"
        +                                },
        +                                {
        +                                  "type": "null"
        +                                }
        +                              ],
        +                              "default": null
        +                            },
        +                            "field_name": {
        +                              "minLength": 1,
        +                              "type": "string"
        +                            },
        +                            "resolved_value": {},
        +                            "source": {
        +                              "enum": [
        +                                "description_field",
        +                                "haiku_resolution",
        +                                "engine_default"
        +                              ],
        +                              "type": "string"
        +                            }
        +                          },
        +                          "required": [
        +                            "field_name",
        +                            "resolved_value",
        +                            "source"
        +                          ],
        +                          "type": "object"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "user_supplied": {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  }
        +                },
        +                "type": "object"
        +              },
        +              "standard": {
        +                "enum": [
        +                  "CESMM4",
        +                  "NRM2",
        +                  "SMM7",
        +                  "MMHW"
        +                ],
        +                "type": "string"
        +              },
        +              "text_summary": {
        +                "maxLength": 2000,
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "totals_summary": {
        +                "additionalProperties": false,
        +                "description": "Schema § 1.4 — totals_summary as a typed wrapper around the free-form dict.\n\nWire shape is a flat object (`{\"concrete_m3\": {...}, \"rebar_t\": {...}}`).\nWe model it as `RootModel`-equivalent via `model_config(extra=\"allow\")`\n+ a single `__root__`-style `entries` dict. Pydantic v2 recommends\n`RootModel` for free-form roots; using a wrapper class keeps the import\nsurface uniform with the rest of this module.",
        +                "properties": {
        +                  "entries": {
        +                    "additionalProperties": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.4 — single material/work-class total entry.",
        +                      "properties": {
        +                        "quantity": {
        +                          "minimum": 0,
        +                          "type": "number"
        +                        },
        +                        "unit": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "quantity",
        +                        "unit"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "object"
        +                  }
        +                },
        +                "type": "object"
        +              },
        +              "warnings": {
        +                "items": {
        +                  "additionalProperties": false,
        +                  "description": "Schema § 1.8 — a non-fatal geometry advisory (56th-fire T2).\n\nThe wire projection of the engine's `core.GeometryWarning`. Advisory only:\na warning NEVER changes a measured quantity — it flags geometry that is\nvalid but likely a mistake (e.g. a stale dependent-height default). Present\non BOTH tiers — a correctness/safety signal, not a paid feature.",
        +                  "properties": {
        +                    "affected_params": {
        +                      "items": {
        +                        "type": "string"
        +                      },
        +                      "type": "array"
        +                    },
        +                    "code": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "detail": {
        +                      "additionalProperties": {
        +                        "type": "number"
        +                      },
        +                      "type": "object"
        +                    },
        +                    "message": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "severity": {
        +                      "enum": [
        +                        "info",
        +                        "advisory",
        +                        "caution"
        +                      ],
        +                      "type": "string"
        +                    }
        +                  },
        +                  "required": [
        +                    "code",
        +                    "severity",
        +                    "message"
        +                  ],
        +                  "type": "object"
        +                },
        +                "type": "array"
        +              }
        +            },
        +            "required": [
        +              "assembly_slug",
        +              "standard",
        +              "parameters_used",
        +              "boq_rows",
        +              "totals_summary",
        +              "text_summary"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      },
        +      "error": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        +            "properties": {
        +              "code": {
        +                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        +                "enum": [
        +                  "RATE_LIMIT_EXCEEDED",
        +                  "TIER_INSUFFICIENT",
        +                  "INVALID_INPUT",
        +                  "SCHEMA_VERSION_MISMATCH",
        +                  "SCHEMA_INVARIANT_VIOLATION",
        +                  "UPSTREAM_TIMEOUT",
        +                  "BACKEND_FAILURE",
        +                  "IP_BLOCKED",
        +                  "RESOURCE_NOT_FOUND",
        +                  "RENDER_FAILURE",
        +                  "OCR_LOW_CONFIDENCE",
        +                  "MANUAL_REVIEW_REQUIRED",
        +                  "ACCEPTANCE_REQUIRED",
        +                  "INVALID_TOKEN"
        +                ],
        +                "type": "string"
        +              },
        +              "details": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "message": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "recoverable": {
        +                "type": "boolean"
        +              },
        +              "retry_after_seconds": {
        +                "anyOf": [
        +                  {
        +                    "minimum": 0,
        +                    "type": "integer"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              }
        +            },
        +            "required": [
        +              "code",
        +              "message",
        +              "recoverable"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      }
        +    },
        +    "required": [
        +      "_meta"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "_meta": {
        +        "additionalProperties": false,
        +        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        +        "properties": {
        +          "deliverables": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        +                "properties": {
        +                  "docx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "dxf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "expires_at": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  },
        +                  "pdf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "xlsx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "expires_at"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "document_id": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "issued_at": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "rate_limit_remaining": {
        +            "anyOf": [
        +              {
        +                "minimum": 0,
        +                "type": "integer"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "request_id": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "schema_version": {
        +            "const": "1.0.0",
        +            "default": "1.0.0",
        +            "type": "string"
        +          },
        +          "scope_boundary": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        +                "properties": {
        +                  "not_in_scope": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "produced": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "recommended_companions": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "type": "string"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "produced",
        +                  "not_in_scope"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tier": {
        +            "enum": [
        +              "free",
        +              "paid"
        +            ],
        +            "type": "string"
        +          },
        +          "tier_upgrade": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        +                "properties": {
        +                  "available_tiers": {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        +                      "properties": {
        +                        "billing": {
        +                          "enum": [
        +                            "one_off",
        +                            "monthly",
        +                            "annual"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "currency": {
        +                          "enum": [
        +                            "GBP",
        +                            "SGD",
        +                            "EUR",
        +                            "USD",
        +                            "CAD",
        +                            "AUD",
        +                            "NZD",
        +                            "MYR"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "display_name": {
        +                          "type": "string"
        +                        },
        +                        "price_local": {
        +                          "type": "number"
        +                        },
        +                        "tier_slug": {
        +                          "enum": [
        +                            "7_day_pass",
        +                            "solo",
        +                            "studio",
        +                            "practice"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "unlock_summary": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "tier_slug",
        +                        "display_name",
        +                        "price_local",
        +                        "currency",
        +                        "billing",
        +                        "unlock_summary"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "current_tier": {
        +                    "const": "free",
        +                    "default": "free",
        +                    "type": "string"
        +                  },
        +                  "pass_credit": {
        +                    "anyOf": [
        +                      {
        +                        "additionalProperties": false,
        +                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        +                        "properties": {
        +                          "amount_local": {
        +                            "type": "number"
        +                          },
        +                          "applies_to": {
        +                            "const": "solo_first_month",
        +                            "default": "solo_first_month",
        +                            "type": "string"
        +                          },
        +                          "currency": {
        +                            "type": "string"
        +                          },
        +                          "redeemable_until": {
        +                            "type": "string"
        +                          }
        +                        },
        +                        "required": [
        +                          "amount_local",
        +                          "currency",
        +                          "redeemable_until"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "pricing_url": {
        +                    "default": "https://civilquants.com/pricing",
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "available_tiers"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tos_url": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "upgrade_hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "warranty_disclaimer": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          }
        +        },
        +        "required": [
        +          "request_id",
        +          "issued_at",
        +          "tier"
        +        ],
        +        "type": "object"
        +      },
        +      "data": {
        +        "default": null,
        +        "title": "Data"
        +      },
        +      "error": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        +            "properties": {
        +              "code": {
        +                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        +                "enum": [
        +                  "RATE_LIMIT_EXCEEDED",
        +                  "TIER_INSUFFICIENT",
        +                  "INVALID_INPUT",
        +                  "SCHEMA_VERSION_MISMATCH",
        +                  "SCHEMA_INVARIANT_VIOLATION",
        +                  "UPSTREAM_TIMEOUT",
        +                  "BACKEND_FAILURE",
        +                  "IP_BLOCKED",
        +                  "RESOURCE_NOT_FOUND",
        +                  "RENDER_FAILURE",
        +                  "OCR_LOW_CONFIDENCE",
        +                  "MANUAL_REVIEW_REQUIRED",
        +                  "ACCEPTANCE_REQUIRED",
        +                  "INVALID_TOKEN"
        +                ],
        +                "type": "string"
        +              },
        +              "details": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "message": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "recoverable": {
        +                "type": "boolean"
        +              },
        +              "retry_after_seconds": {
        +                "anyOf": [
        +                  {
        +                    "minimum": 0,
        +                    "type": "integer"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              }
        +            },
        +            "required": [
        +              "code",
        +              "message",
        +              "recoverable"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      }
        +    },
        +    "required": [
        +      "_meta"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedcompute_ditch1 field changed
      • changedOutput schema / properties / result / anyOf
        Previous value: -[
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "_meta": {
        -        "additionalProperties": false,
        -        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        -        "properties": {
        -          "deliverables": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        -                "properties": {
        -                  "docx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "dxf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "expires_at": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  },
        -                  "pdf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "xlsx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "expires_at"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "document_id": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "issued_at": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "rate_limit_remaining": {
        -            "anyOf": [
        -              {
        -                "minimum": 0,
        -                "type": "integer"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "request_id": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "schema_version": {
        -            "const": "1.0.0",
        -            "default": "1.0.0",
        -            "type": "string"
        -          },
        -          "scope_boundary": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        -                "properties": {
        -                  "not_in_scope": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "produced": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "recommended_companions": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "type": "string"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "produced",
        -                  "not_in_scope"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tier": {
        -            "enum": [
        -              "free",
        -              "paid"
        -            ],
        -            "type": "string"
        -          },
        -          "tier_upgrade": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        -                "properties": {
        -                  "available_tiers": {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        -                      "properties": {
        -                        "billing": {
        -                          "enum": [
        -                            "one_off",
        -                            "monthly",
        -                            "annual"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "currency": {
        -                          "enum": [
        -                            "GBP",
        -                            "SGD",
        -                            "EUR",
        -                            "USD",
        -                            "CAD",
        -                            "AUD",
        -                            "NZD",
        -                            "MYR"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "display_name": {
        -                          "type": "string"
        -                        },
        -                        "price_local": {
        -                          "type": "number"
        -                        },
        -                        "tier_slug": {
        -                          "enum": [
        -                            "7_day_pass",
        -                            "solo",
        -                            "studio",
        -                            "practice"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "unlock_summary": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "tier_slug",
        -                        "display_name",
        -                        "price_local",
        -                        "currency",
        -                        "billing",
        -                        "unlock_summary"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "current_tier": {
        -                    "const": "free",
        -                    "default": "free",
        -                    "type": "string"
        -                  },
        -                  "pass_credit": {
        -                    "anyOf": [
        -                      {
        -                        "additionalProperties": false,
        -                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        -                        "properties": {
        -                          "amount_local": {
        -                            "type": "number"
        -                          },
        -                          "applies_to": {
        -                            "const": "solo_first_month",
        -                            "default": "solo_first_month",
        -                            "type": "string"
        -                          },
        -                          "currency": {
        -                            "type": "string"
        -                          },
        -                          "redeemable_until": {
        -                            "type": "string"
        -                          }
        -                        },
        -                        "required": [
        -                          "amount_local",
        -                          "currency",
        -                          "redeemable_until"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "pricing_url": {
        -                    "default": "https://civilquants.com/pricing",
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "available_tiers"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tos_url": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "upgrade_hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "warranty_disclaimer": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          }
        -        },
        -        "required": [
        -          "request_id",
        -          "issued_at",
        -          "tier"
        -        ],
        -        "type": "object"
        -      },
        -      "data": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Schema § 1.1 — the typed payload returned inside `MCPResponse[ComputeResult]`.\n\nFree-tier responses MUST omit `drawings` and `audit_trail` (the bridge\nenforces this); paid-tier responses populate both. `text_summary` is\nbounded to 2000 chars — keeps the LLM-facing summary token-cheap and\nforces longer narrative into BoQ row descriptions where it belongs.",
        -            "properties": {
        -              "assembly_slug": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "audit_trail": {
        -                "anyOf": [
        -                  {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.7 — paid-tier audit-trail entry.\n\nOne entry per BoQ row; `boq_row_index` ties to the row position in\n`ComputeResult.boq_rows`. `derivation` is the human-readable formula\nwalk-through; `formula` is the optional formal expression.",
        -                      "properties": {
        -                        "boq_row_index": {
        -                          "minimum": 0,
        -                          "type": "integer"
        -                        },
        -                        "derivation": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "formula": {
        -                          "anyOf": [
        -                            {
        -                              "type": "string"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ],
        -                          "default": null
        -                        },
        -                        "id": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "parameters_referenced": {
        -                          "items": {
        -                            "type": "string"
        -                          },
        -                          "type": "array"
        -                        }
        -                      },
        -                      "required": [
        -                        "id",
        -                        "boq_row_index",
        -                        "derivation"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "boq_rows": {
        -                "items": {
        -                  "additionalProperties": false,
        -                  "description": "Schema § 1.3 — a single bill row in the requested standard's format.\n\n`description` is the non-verbatim functional description per spec § 13.9 /\n§ 15 invariant — NEVER reproduces a standard's verbatim clause text.\n`rate` / `amount` ship null because rates are commodity data the customer\nowns; the engine's job is the measurement, not the pricing.",
        -                  "properties": {
        -                    "amount": {
        -                      "anyOf": [
        -                        {
        -                          "type": "number"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "attribution": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "audit_id": {
        -                      "anyOf": [
        -                        {
        -                          "type": "string"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "description": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "quantity": {
        -                      "minimum": 0,
        -                      "type": "number"
        -                    },
        -                    "rate": {
        -                      "anyOf": [
        -                        {
        -                          "type": "number"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "unit": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "work_section": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    }
        -                  },
        -                  "required": [
        -                    "work_section",
        -                    "description",
        -                    "quantity",
        -                    "unit",
        -                    "attribution"
        -                  ],
        -                  "type": "object"
        -                },
        -                "type": "array"
        -              },
        -              "drawings": {
        -                "anyOf": [
        -                  {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.6 — paid-tier drawing artefact pointer.\n\n`url` is an R2-signed URL; expiry is carried in `_meta.deliverables.expires_at`\non the envelope (not duplicated here). `layers` is DXF-only; PDF/SVG\ncallers omit it.",
        -                      "properties": {
        -                        "drawing_type": {
        -                          "enum": [
        -                            "section",
        -                            "plan",
        -                            "elevation",
        -                            "isometric",
        -                            "detail"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "format": {
        -                          "enum": [
        -                            "DXF",
        -                            "PDF",
        -                            "SVG"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "layers": {
        -                          "anyOf": [
        -                            {
        -                              "items": {
        -                                "type": "string"
        -                              },
        -                              "type": "array"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ],
        -                          "default": null
        -                        },
        -                        "scale": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "sheet_size": {
        -                          "enum": [
        -                            "A1",
        -                            "A2",
        -                            "A3",
        -                            "A4"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "url": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "drawing_type",
        -                        "format",
        -                        "url",
        -                        "sheet_size",
        -                        "scale"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "parameters_used": {
        -                "additionalProperties": false,
        -                "description": "Schema § 1.2 — the parameter snapshot the engine actually used.\n\nSplits user-supplied values from engine defaults so customers can see\nwhich numbers came from them and which the engine filled in. Every\ndefaulted parameter SHOULD have a corresponding entry in `assumptions`\n— the bridge layer enforces this when wrapping engine output.",
        -                "properties": {
        -                  "assumptions": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "engine_defaults": {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  "resolved_from_description": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "additionalProperties": false,
        -                          "description": "Schema § 1.2 — a parameter resolved by the forgiving-input layer.\n\nPopulated by the Track B-Forgiving Haiku-4.5 resolution pass; until that\nlayer lands, instances are constructed only by tests. `source` distinguishes\nthe resolution path so customers can audit which fields were inferred.",
        -                          "properties": {
        -                            "confidence": {
        -                              "anyOf": [
        -                                {
        -                                  "enum": [
        -                                    "high",
        -                                    "medium",
        -                                    "low"
        -                                  ],
        -                                  "type": "string"
        -                                },
        -                                {
        -                                  "type": "null"
        -                                }
        -                              ],
        -                              "default": null
        -                            },
        -                            "field_name": {
        -                              "minLength": 1,
        -                              "type": "string"
        -                            },
        -                            "resolved_value": {},
        -                            "source": {
        -                              "enum": [
        -                                "description_field",
        -                                "haiku_resolution",
        -                                "engine_default"
        -                              ],
        -                              "type": "string"
        -                            }
        -                          },
        -                          "required": [
        -                            "field_name",
        -                            "resolved_value",
        -                            "source"
        -                          ],
        -                          "type": "object"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "user_supplied": {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  }
        -                },
        -                "type": "object"
        -              },
        -              "standard": {
        -                "enum": [
        -                  "CESMM4",
        -                  "NRM2",
        -                  "SMM7",
        -                  "MMHW"
        -                ],
        -                "type": "string"
        -              },
        -              "text_summary": {
        -                "maxLength": 2000,
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "totals_summary": {
        -                "additionalProperties": false,
        -                "description": "Schema § 1.4 — totals_summary as a typed wrapper around the free-form dict.\n\nWire shape is a flat object (`{\"concrete_m3\": {...}, \"rebar_t\": {...}}`).\nWe model it as `RootModel`-equivalent via `model_config(extra=\"allow\")`\n+ a single `__root__`-style `entries` dict. Pydantic v2 recommends\n`RootModel` for free-form roots; using a wrapper class keeps the import\nsurface uniform with the rest of this module.",
        -                "properties": {
        -                  "entries": {
        -                    "additionalProperties": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.4 — single material/work-class total entry.",
        -                      "properties": {
        -                        "quantity": {
        -                          "minimum": 0,
        -                          "type": "number"
        -                        },
        -                        "unit": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "quantity",
        -                        "unit"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "object"
        -                  }
        -                },
        -                "type": "object"
        -              }
        -            },
        -            "required": [
        -              "assembly_slug",
        -              "standard",
        -              "parameters_used",
        -              "boq_rows",
        -              "totals_summary",
        -              "text_summary"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      },
        -      "error": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        -            "properties": {
        -              "code": {
        -                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        -                "enum": [
        -                  "RATE_LIMIT_EXCEEDED",
        -                  "TIER_INSUFFICIENT",
        -                  "INVALID_INPUT",
        -                  "SCHEMA_VERSION_MISMATCH",
        -                  "SCHEMA_INVARIANT_VIOLATION",
        -                  "UPSTREAM_TIMEOUT",
        -                  "BACKEND_FAILURE",
        -                  "IP_BLOCKED",
        -                  "RESOURCE_NOT_FOUND",
        -                  "RENDER_FAILURE",
        -                  "OCR_LOW_CONFIDENCE",
        -                  "MANUAL_REVIEW_REQUIRED",
        -                  "ACCEPTANCE_REQUIRED",
        -                  "INVALID_TOKEN"
        -                ],
        -                "type": "string"
        -              },
        -              "details": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "message": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "recoverable": {
        -                "type": "boolean"
        -              },
        -              "retry_after_seconds": {
        -                "anyOf": [
        -                  {
        -                    "minimum": 0,
        -                    "type": "integer"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              }
        -            },
        -            "required": [
        -              "code",
        -              "message",
        -              "recoverable"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      }
        -    },
        -    "required": [
        -      "_meta"
        -    ],
        -    "type": "object"
        -  },
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "_meta": {
        -        "additionalProperties": false,
        -        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        -        "properties": {
        -          "deliverables": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        -                "properties": {
        -                  "docx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "dxf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "expires_at": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  },
        -                  "pdf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "xlsx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "expires_at"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "document_id": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "issued_at": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "rate_limit_remaining": {
        -            "anyOf": [
        -              {
        -                "minimum": 0,
        -                "type": "integer"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "request_id": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "schema_version": {
        -            "const": "1.0.0",
        -            "default": "1.0.0",
        -            "type": "string"
        -          },
        -          "scope_boundary": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        -                "properties": {
        -                  "not_in_scope": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "produced": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "recommended_companions": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "type": "string"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "produced",
        -                  "not_in_scope"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tier": {
        -            "enum": [
        -              "free",
        -              "paid"
        -            ],
        -            "type": "string"
        -          },
        -          "tier_upgrade": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        -                "properties": {
        -                  "available_tiers": {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        -                      "properties": {
        -                        "billing": {
        -                          "enum": [
        -                            "one_off",
        -                            "monthly",
        -                            "annual"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "currency": {
        -                          "enum": [
        -                            "GBP",
        -                            "SGD",
        -                            "EUR",
        -                            "USD",
        -                            "CAD",
        -                            "AUD",
        -                            "NZD",
        -                            "MYR"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "display_name": {
        -                          "type": "string"
        -                        },
        -                        "price_local": {
        -                          "type": "number"
        -                        },
        -                        "tier_slug": {
        -                          "enum": [
        -                            "7_day_pass",
        -                            "solo",
        -                            "studio",
        -                            "practice"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "unlock_summary": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "tier_slug",
        -                        "display_name",
        -                        "price_local",
        -                        "currency",
        -                        "billing",
        -                        "unlock_summary"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "current_tier": {
        -                    "const": "free",
        -                    "default": "free",
        -                    "type": "string"
        -                  },
        -                  "pass_credit": {
        -                    "anyOf": [
        -                      {
        -                        "additionalProperties": false,
        -                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        -                        "properties": {
        -                          "amount_local": {
        -                            "type": "number"
        -                          },
        -                          "applies_to": {
        -                            "const": "solo_first_month",
        -                            "default": "solo_first_month",
        -                            "type": "string"
        -                          },
        -                          "currency": {
        -                            "type": "string"
        -                          },
        -                          "redeemable_until": {
        -                            "type": "string"
        -                          }
        -                        },
        -                        "required": [
        -                          "amount_local",
        -                          "currency",
        -                          "redeemable_until"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "pricing_url": {
        -                    "default": "https://civilquants.com/pricing",
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "available_tiers"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tos_url": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "upgrade_hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "warranty_disclaimer": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          }
        -        },
        -        "required": [
        -          "request_id",
        -          "issued_at",
        -          "tier"
        -        ],
        -        "type": "object"
        -      },
        -      "data": {
        -        "default": null,
        -        "title": "Data"
        -      },
        -      "error": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        -            "properties": {
        -              "code": {
        -                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        -                "enum": [
        -                  "RATE_LIMIT_EXCEEDED",
        -                  "TIER_INSUFFICIENT",
        -                  "INVALID_INPUT",
        -                  "SCHEMA_VERSION_MISMATCH",
        -                  "SCHEMA_INVARIANT_VIOLATION",
        -                  "UPSTREAM_TIMEOUT",
        -                  "BACKEND_FAILURE",
        -                  "IP_BLOCKED",
        -                  "RESOURCE_NOT_FOUND",
        -                  "RENDER_FAILURE",
        -                  "OCR_LOW_CONFIDENCE",
        -                  "MANUAL_REVIEW_REQUIRED",
        -                  "ACCEPTANCE_REQUIRED",
        -                  "INVALID_TOKEN"
        -                ],
        -                "type": "string"
        -              },
        -              "details": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "message": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "recoverable": {
        -                "type": "boolean"
        -              },
        -              "retry_after_seconds": {
        -                "anyOf": [
        -                  {
        -                    "minimum": 0,
        -                    "type": "integer"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              }
        -            },
        -            "required": [
        -              "code",
        -              "message",
        -              "recoverable"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      }
        -    },
        -    "required": [
        -      "_meta"
        -    ],
        -    "type": "object"
        -  }
        -]New value: +[
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "_meta": {
        +        "additionalProperties": false,
        +        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        +        "properties": {
        +          "deliverables": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        +                "properties": {
        +                  "docx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "dxf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "expires_at": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  },
        +                  "pdf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "xlsx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "expires_at"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "document_id": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "issued_at": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "rate_limit_remaining": {
        +            "anyOf": [
        +              {
        +                "minimum": 0,
        +                "type": "integer"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "request_id": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "schema_version": {
        +            "const": "1.0.0",
        +            "default": "1.0.0",
        +            "type": "string"
        +          },
        +          "scope_boundary": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        +                "properties": {
        +                  "not_in_scope": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "produced": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "recommended_companions": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "type": "string"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "produced",
        +                  "not_in_scope"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tier": {
        +            "enum": [
        +              "free",
        +              "paid"
        +            ],
        +            "type": "string"
        +          },
        +          "tier_upgrade": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        +                "properties": {
        +                  "available_tiers": {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        +                      "properties": {
        +                        "billing": {
        +                          "enum": [
        +                            "one_off",
        +                            "monthly",
        +                            "annual"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "currency": {
        +                          "enum": [
        +                            "GBP",
        +                            "SGD",
        +                            "EUR",
        +                            "USD",
        +                            "CAD",
        +                            "AUD",
        +                            "NZD",
        +                            "MYR"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "display_name": {
        +                          "type": "string"
        +                        },
        +                        "price_local": {
        +                          "type": "number"
        +                        },
        +                        "tier_slug": {
        +                          "enum": [
        +                            "7_day_pass",
        +                            "solo",
        +                            "studio",
        +                            "practice"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "unlock_summary": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "tier_slug",
        +                        "display_name",
        +                        "price_local",
        +                        "currency",
        +                        "billing",
        +                        "unlock_summary"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "current_tier": {
        +                    "const": "free",
        +                    "default": "free",
        +                    "type": "string"
        +                  },
        +                  "pass_credit": {
        +                    "anyOf": [
        +                      {
        +                        "additionalProperties": false,
        +                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        +                        "properties": {
        +                          "amount_local": {
        +                            "type": "number"
        +                          },
        +                          "applies_to": {
        +                            "const": "solo_first_month",
        +                            "default": "solo_first_month",
        +                            "type": "string"
        +                          },
        +                          "currency": {
        +                            "type": "string"
        +                          },
        +                          "redeemable_until": {
        +                            "type": "string"
        +                          }
        +                        },
        +                        "required": [
        +                          "amount_local",
        +                          "currency",
        +                          "redeemable_until"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "pricing_url": {
        +                    "default": "https://civilquants.com/pricing",
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "available_tiers"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tos_url": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "upgrade_hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "warranty_disclaimer": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          }
        +        },
        +        "required": [
        +          "request_id",
        +          "issued_at",
        +          "tier"
        +        ],
        +        "type": "object"
        +      },
        +      "data": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Schema § 1.1 — the typed payload returned inside `MCPResponse[ComputeResult]`.\n\nFree-tier responses MUST omit `drawings` and `audit_trail` (the bridge\nenforces this); paid-tier responses populate both. `text_summary` is\nbounded to 2000 chars — keeps the LLM-facing summary token-cheap and\nforces longer narrative into BoQ row descriptions where it belongs.\n`warnings` is the non-fatal geometry advisory list (both tiers).",
        +            "properties": {
        +              "assembly_slug": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "audit_trail": {
        +                "anyOf": [
        +                  {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.7 — paid-tier audit-trail entry.\n\nOne entry per BoQ row; `boq_row_index` ties to the row position in\n`ComputeResult.boq_rows`. `derivation` is the human-readable formula\nwalk-through; `formula` is the optional formal expression.",
        +                      "properties": {
        +                        "boq_row_index": {
        +                          "minimum": 0,
        +                          "type": "integer"
        +                        },
        +                        "derivation": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "formula": {
        +                          "anyOf": [
        +                            {
        +                              "type": "string"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ],
        +                          "default": null
        +                        },
        +                        "id": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "parameters_referenced": {
        +                          "items": {
        +                            "type": "string"
        +                          },
        +                          "type": "array"
        +                        }
        +                      },
        +                      "required": [
        +                        "id",
        +                        "boq_row_index",
        +                        "derivation"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "boq_rows": {
        +                "items": {
        +                  "additionalProperties": false,
        +                  "description": "Schema § 1.3 — a single bill row in the requested standard's format.\n\n`description` is the non-verbatim functional description per spec § 13.9 /\n§ 15 invariant — NEVER reproduces a standard's verbatim clause text.\n`rate` / `amount` ship null because rates are commodity data the customer\nowns; the engine's job is the measurement, not the pricing.",
        +                  "properties": {
        +                    "amount": {
        +                      "anyOf": [
        +                        {
        +                          "type": "number"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "attribution": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "audit_id": {
        +                      "anyOf": [
        +                        {
        +                          "type": "string"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "description": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "quantity": {
        +                      "minimum": 0,
        +                      "type": "number"
        +                    },
        +                    "rate": {
        +                      "anyOf": [
        +                        {
        +                          "type": "number"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "unit": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "work_section": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    }
        +                  },
        +                  "required": [
        +                    "work_section",
        +                    "description",
        +                    "quantity",
        +                    "unit",
        +                    "attribution"
        +                  ],
        +                  "type": "object"
        +                },
        +                "type": "array"
        +              },
        +              "drawings": {
        +                "anyOf": [
        +                  {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.6 — paid-tier drawing artefact pointer.\n\n`url` is an R2-signed URL; expiry is carried in `_meta.deliverables.expires_at`\non the envelope (not duplicated here). `layers` is DXF-only; PDF/SVG\ncallers omit it.",
        +                      "properties": {
        +                        "drawing_type": {
        +                          "enum": [
        +                            "section",
        +                            "plan",
        +                            "elevation",
        +                            "isometric",
        +                            "detail"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "format": {
        +                          "enum": [
        +                            "DXF",
        +                            "PDF",
        +                            "SVG"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "layers": {
        +                          "anyOf": [
        +                            {
        +                              "items": {
        +                                "type": "string"
        +                              },
        +                              "type": "array"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ],
        +                          "default": null
        +                        },
        +                        "scale": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "sheet_size": {
        +                          "enum": [
        +                            "A1",
        +                            "A2",
        +                            "A3",
        +                            "A4"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "url": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "drawing_type",
        +                        "format",
        +                        "url",
        +                        "sheet_size",
        +                        "scale"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "parameters_used": {
        +                "additionalProperties": false,
        +                "description": "Schema § 1.2 — the parameter snapshot the engine actually used.\n\nSplits user-supplied values from engine defaults so customers can see\nwhich numbers came from them and which the engine filled in. Every\ndefaulted parameter SHOULD have a corresponding entry in `assumptions`\n— the bridge layer enforces this when wrapping engine output.",
        +                "properties": {
        +                  "assumptions": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "engine_defaults": {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  "resolved_from_description": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "additionalProperties": false,
        +                          "description": "Schema § 1.2 — a parameter resolved by the forgiving-input layer.\n\nPopulated by the Track B-Forgiving Haiku-4.5 resolution pass; until that\nlayer lands, instances are constructed only by tests. `source` distinguishes\nthe resolution path so customers can audit which fields were inferred.",
        +                          "properties": {
        +                            "confidence": {
        +                              "anyOf": [
        +                                {
        +                                  "enum": [
        +                                    "high",
        +                                    "medium",
        +                                    "low"
        +                                  ],
        +                                  "type": "string"
        +                                },
        +                                {
        +                                  "type": "null"
        +                                }
        +                              ],
        +                              "default": null
        +                            },
        +                            "field_name": {
        +                              "minLength": 1,
        +                              "type": "string"
        +                            },
        +                            "resolved_value": {},
        +                            "source": {
        +                              "enum": [
        +                                "description_field",
        +                                "haiku_resolution",
        +                                "engine_default"
        +                              ],
        +                              "type": "string"
        +                            }
        +                          },
        +                          "required": [
        +                            "field_name",
        +                            "resolved_value",
        +                            "source"
        +                          ],
        +                          "type": "object"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "user_supplied": {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  }
        +                },
        +                "type": "object"
        +              },
        +              "standard": {
        +                "enum": [
        +                  "CESMM4",
        +                  "NRM2",
        +                  "SMM7",
        +                  "MMHW"
        +                ],
        +                "type": "string"
        +              },
        +              "text_summary": {
        +                "maxLength": 2000,
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "totals_summary": {
        +                "additionalProperties": false,
        +                "description": "Schema § 1.4 — totals_summary as a typed wrapper around the free-form dict.\n\nWire shape is a flat object (`{\"concrete_m3\": {...}, \"rebar_t\": {...}}`).\nWe model it as `RootModel`-equivalent via `model_config(extra=\"allow\")`\n+ a single `__root__`-style `entries` dict. Pydantic v2 recommends\n`RootModel` for free-form roots; using a wrapper class keeps the import\nsurface uniform with the rest of this module.",
        +                "properties": {
        +                  "entries": {
        +                    "additionalProperties": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.4 — single material/work-class total entry.",
        +                      "properties": {
        +                        "quantity": {
        +                          "minimum": 0,
        +                          "type": "number"
        +                        },
        +                        "unit": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "quantity",
        +                        "unit"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "object"
        +                  }
        +                },
        +                "type": "object"
        +              },
        +              "warnings": {
        +                "items": {
        +                  "additionalProperties": false,
        +                  "description": "Schema § 1.8 — a non-fatal geometry advisory (56th-fire T2).\n\nThe wire projection of the engine's `core.GeometryWarning`. Advisory only:\na warning NEVER changes a measured quantity — it flags geometry that is\nvalid but likely a mistake (e.g. a stale dependent-height default). Present\non BOTH tiers — a correctness/safety signal, not a paid feature.",
        +                  "properties": {
        +                    "affected_params": {
        +                      "items": {
        +                        "type": "string"
        +                      },
        +                      "type": "array"
        +                    },
        +                    "code": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "detail": {
        +                      "additionalProperties": {
        +                        "type": "number"
        +                      },
        +                      "type": "object"
        +                    },
        +                    "message": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "severity": {
        +                      "enum": [
        +                        "info",
        +                        "advisory",
        +                        "caution"
        +                      ],
        +                      "type": "string"
        +                    }
        +                  },
        +                  "required": [
        +                    "code",
        +                    "severity",
        +                    "message"
        +                  ],
        +                  "type": "object"
        +                },
        +                "type": "array"
        +              }
        +            },
        +            "required": [
        +              "assembly_slug",
        +              "standard",
        +              "parameters_used",
        +              "boq_rows",
        +              "totals_summary",
        +              "text_summary"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      },
        +      "error": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        +            "properties": {
        +              "code": {
        +                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        +                "enum": [
        +                  "RATE_LIMIT_EXCEEDED",
        +                  "TIER_INSUFFICIENT",
        +                  "INVALID_INPUT",
        +                  "SCHEMA_VERSION_MISMATCH",
        +                  "SCHEMA_INVARIANT_VIOLATION",
        +                  "UPSTREAM_TIMEOUT",
        +                  "BACKEND_FAILURE",
        +                  "IP_BLOCKED",
        +                  "RESOURCE_NOT_FOUND",
        +                  "RENDER_FAILURE",
        +                  "OCR_LOW_CONFIDENCE",
        +                  "MANUAL_REVIEW_REQUIRED",
        +                  "ACCEPTANCE_REQUIRED",
        +                  "INVALID_TOKEN"
        +                ],
        +                "type": "string"
        +              },
        +              "details": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "message": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "recoverable": {
        +                "type": "boolean"
        +              },
        +              "retry_after_seconds": {
        +                "anyOf": [
        +                  {
        +                    "minimum": 0,
        +                    "type": "integer"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              }
        +            },
        +            "required": [
        +              "code",
        +              "message",
        +              "recoverable"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      }
        +    },
        +    "required": [
        +      "_meta"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "_meta": {
        +        "additionalProperties": false,
        +        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        +        "properties": {
        +          "deliverables": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        +                "properties": {
        +                  "docx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "dxf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "expires_at": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  },
        +                  "pdf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "xlsx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "expires_at"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "document_id": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "issued_at": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "rate_limit_remaining": {
        +            "anyOf": [
        +              {
        +                "minimum": 0,
        +                "type": "integer"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "request_id": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "schema_version": {
        +            "const": "1.0.0",
        +            "default": "1.0.0",
        +            "type": "string"
        +          },
        +          "scope_boundary": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        +                "properties": {
        +                  "not_in_scope": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "produced": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "recommended_companions": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "type": "string"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "produced",
        +                  "not_in_scope"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tier": {
        +            "enum": [
        +              "free",
        +              "paid"
        +            ],
        +            "type": "string"
        +          },
        +          "tier_upgrade": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        +                "properties": {
        +                  "available_tiers": {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        +                      "properties": {
        +                        "billing": {
        +                          "enum": [
        +                            "one_off",
        +                            "monthly",
        +                            "annual"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "currency": {
        +                          "enum": [
        +                            "GBP",
        +                            "SGD",
        +                            "EUR",
        +                            "USD",
        +                            "CAD",
        +                            "AUD",
        +                            "NZD",
        +                            "MYR"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "display_name": {
        +                          "type": "string"
        +                        },
        +                        "price_local": {
        +                          "type": "number"
        +                        },
        +                        "tier_slug": {
        +                          "enum": [
        +                            "7_day_pass",
        +                            "solo",
        +                            "studio",
        +                            "practice"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "unlock_summary": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "tier_slug",
        +                        "display_name",
        +                        "price_local",
        +                        "currency",
        +                        "billing",
        +                        "unlock_summary"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "current_tier": {
        +                    "const": "free",
        +                    "default": "free",
        +                    "type": "string"
        +                  },
        +                  "pass_credit": {
        +                    "anyOf": [
        +                      {
        +                        "additionalProperties": false,
        +                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        +                        "properties": {
        +                          "amount_local": {
        +                            "type": "number"
        +                          },
        +                          "applies_to": {
        +                            "const": "solo_first_month",
        +                            "default": "solo_first_month",
        +                            "type": "string"
        +                          },
        +                          "currency": {
        +                            "type": "string"
        +                          },
        +                          "redeemable_until": {
        +                            "type": "string"
        +                          }
        +                        },
        +                        "required": [
        +                          "amount_local",
        +                          "currency",
        +                          "redeemable_until"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "pricing_url": {
        +                    "default": "https://civilquants.com/pricing",
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "available_tiers"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tos_url": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "upgrade_hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "warranty_disclaimer": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          }
        +        },
        +        "required": [
        +          "request_id",
        +          "issued_at",
        +          "tier"
        +        ],
        +        "type": "object"
        +      },
        +      "data": {
        +        "default": null,
        +        "title": "Data"
        +      },
        +      "error": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        +            "properties": {
        +              "code": {
        +                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        +                "enum": [
        +                  "RATE_LIMIT_EXCEEDED",
        +                  "TIER_INSUFFICIENT",
        +                  "INVALID_INPUT",
        +                  "SCHEMA_VERSION_MISMATCH",
        +                  "SCHEMA_INVARIANT_VIOLATION",
        +                  "UPSTREAM_TIMEOUT",
        +                  "BACKEND_FAILURE",
        +                  "IP_BLOCKED",
        +                  "RESOURCE_NOT_FOUND",
        +                  "RENDER_FAILURE",
        +                  "OCR_LOW_CONFIDENCE",
        +                  "MANUAL_REVIEW_REQUIRED",
        +                  "ACCEPTANCE_REQUIRED",
        +                  "INVALID_TOKEN"
        +                ],
        +                "type": "string"
        +              },
        +              "details": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "message": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "recoverable": {
        +                "type": "boolean"
        +              },
        +              "retry_after_seconds": {
        +                "anyOf": [
        +                  {
        +                    "minimum": 0,
        +                    "type": "integer"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              }
        +            },
        +            "required": [
        +              "code",
        +              "message",
        +              "recoverable"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      }
        +    },
        +    "required": [
        +      "_meta"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedcompute_edge_drain1 field changed
      • changedOutput schema / properties / result / anyOf
        Previous value: -[
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "_meta": {
        -        "additionalProperties": false,
        -        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        -        "properties": {
        -          "deliverables": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        -                "properties": {
        -                  "docx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "dxf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "expires_at": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  },
        -                  "pdf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "xlsx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "expires_at"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "document_id": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "issued_at": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "rate_limit_remaining": {
        -            "anyOf": [
        -              {
        -                "minimum": 0,
        -                "type": "integer"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "request_id": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "schema_version": {
        -            "const": "1.0.0",
        -            "default": "1.0.0",
        -            "type": "string"
        -          },
        -          "scope_boundary": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        -                "properties": {
        -                  "not_in_scope": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "produced": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "recommended_companions": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "type": "string"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "produced",
        -                  "not_in_scope"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tier": {
        -            "enum": [
        -              "free",
        -              "paid"
        -            ],
        -            "type": "string"
        -          },
        -          "tier_upgrade": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        -                "properties": {
        -                  "available_tiers": {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        -                      "properties": {
        -                        "billing": {
        -                          "enum": [
        -                            "one_off",
        -                            "monthly",
        -                            "annual"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "currency": {
        -                          "enum": [
        -                            "GBP",
        -                            "SGD",
        -                            "EUR",
        -                            "USD",
        -                            "CAD",
        -                            "AUD",
        -                            "NZD",
        -                            "MYR"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "display_name": {
        -                          "type": "string"
        -                        },
        -                        "price_local": {
        -                          "type": "number"
        -                        },
        -                        "tier_slug": {
        -                          "enum": [
        -                            "7_day_pass",
        -                            "solo",
        -                            "studio",
        -                            "practice"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "unlock_summary": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "tier_slug",
        -                        "display_name",
        -                        "price_local",
        -                        "currency",
        -                        "billing",
        -                        "unlock_summary"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "current_tier": {
        -                    "const": "free",
        -                    "default": "free",
        -                    "type": "string"
        -                  },
        -                  "pass_credit": {
        -                    "anyOf": [
        -                      {
        -                        "additionalProperties": false,
        -                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        -                        "properties": {
        -                          "amount_local": {
        -                            "type": "number"
        -                          },
        -                          "applies_to": {
        -                            "const": "solo_first_month",
        -                            "default": "solo_first_month",
        -                            "type": "string"
        -                          },
        -                          "currency": {
        -                            "type": "string"
        -                          },
        -                          "redeemable_until": {
        -                            "type": "string"
        -                          }
        -                        },
        -                        "required": [
        -                          "amount_local",
        -                          "currency",
        -                          "redeemable_until"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "pricing_url": {
        -                    "default": "https://civilquants.com/pricing",
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "available_tiers"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tos_url": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "upgrade_hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "warranty_disclaimer": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          }
        -        },
        -        "required": [
        -          "request_id",
        -          "issued_at",
        -          "tier"
        -        ],
        -        "type": "object"
        -      },
        -      "data": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Schema § 1.1 — the typed payload returned inside `MCPResponse[ComputeResult]`.\n\nFree-tier responses MUST omit `drawings` and `audit_trail` (the bridge\nenforces this); paid-tier responses populate both. `text_summary` is\nbounded to 2000 chars — keeps the LLM-facing summary token-cheap and\nforces longer narrative into BoQ row descriptions where it belongs.",
        -            "properties": {
        -              "assembly_slug": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "audit_trail": {
        -                "anyOf": [
        -                  {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.7 — paid-tier audit-trail entry.\n\nOne entry per BoQ row; `boq_row_index` ties to the row position in\n`ComputeResult.boq_rows`. `derivation` is the human-readable formula\nwalk-through; `formula` is the optional formal expression.",
        -                      "properties": {
        -                        "boq_row_index": {
        -                          "minimum": 0,
        -                          "type": "integer"
        -                        },
        -                        "derivation": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "formula": {
        -                          "anyOf": [
        -                            {
        -                              "type": "string"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ],
        -                          "default": null
        -                        },
        -                        "id": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "parameters_referenced": {
        -                          "items": {
        -                            "type": "string"
        -                          },
        -                          "type": "array"
        -                        }
        -                      },
        -                      "required": [
        -                        "id",
        -                        "boq_row_index",
        -                        "derivation"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "boq_rows": {
        -                "items": {
        -                  "additionalProperties": false,
        -                  "description": "Schema § 1.3 — a single bill row in the requested standard's format.\n\n`description` is the non-verbatim functional description per spec § 13.9 /\n§ 15 invariant — NEVER reproduces a standard's verbatim clause text.\n`rate` / `amount` ship null because rates are commodity data the customer\nowns; the engine's job is the measurement, not the pricing.",
        -                  "properties": {
        -                    "amount": {
        -                      "anyOf": [
        -                        {
        -                          "type": "number"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "attribution": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "audit_id": {
        -                      "anyOf": [
        -                        {
        -                          "type": "string"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "description": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "quantity": {
        -                      "minimum": 0,
        -                      "type": "number"
        -                    },
        -                    "rate": {
        -                      "anyOf": [
        -                        {
        -                          "type": "number"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "unit": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "work_section": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    }
        -                  },
        -                  "required": [
        -                    "work_section",
        -                    "description",
        -                    "quantity",
        -                    "unit",
        -                    "attribution"
        -                  ],
        -                  "type": "object"
        -                },
        -                "type": "array"
        -              },
        -              "drawings": {
        -                "anyOf": [
        -                  {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.6 — paid-tier drawing artefact pointer.\n\n`url` is an R2-signed URL; expiry is carried in `_meta.deliverables.expires_at`\non the envelope (not duplicated here). `layers` is DXF-only; PDF/SVG\ncallers omit it.",
        -                      "properties": {
        -                        "drawing_type": {
        -                          "enum": [
        -                            "section",
        -                            "plan",
        -                            "elevation",
        -                            "isometric",
        -                            "detail"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "format": {
        -                          "enum": [
        -                            "DXF",
        -                            "PDF",
        -                            "SVG"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "layers": {
        -                          "anyOf": [
        -                            {
        -                              "items": {
        -                                "type": "string"
        -                              },
        -                              "type": "array"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ],
        -                          "default": null
        -                        },
        -                        "scale": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "sheet_size": {
        -                          "enum": [
        -                            "A1",
        -                            "A2",
        -                            "A3",
        -                            "A4"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "url": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "drawing_type",
        -                        "format",
        -                        "url",
        -                        "sheet_size",
        -                        "scale"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "parameters_used": {
        -                "additionalProperties": false,
        -                "description": "Schema § 1.2 — the parameter snapshot the engine actually used.\n\nSplits user-supplied values from engine defaults so customers can see\nwhich numbers came from them and which the engine filled in. Every\ndefaulted parameter SHOULD have a corresponding entry in `assumptions`\n— the bridge layer enforces this when wrapping engine output.",
        -                "properties": {
        -                  "assumptions": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "engine_defaults": {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  "resolved_from_description": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "additionalProperties": false,
        -                          "description": "Schema § 1.2 — a parameter resolved by the forgiving-input layer.\n\nPopulated by the Track B-Forgiving Haiku-4.5 resolution pass; until that\nlayer lands, instances are constructed only by tests. `source` distinguishes\nthe resolution path so customers can audit which fields were inferred.",
        -                          "properties": {
        -                            "confidence": {
        -                              "anyOf": [
        -                                {
        -                                  "enum": [
        -                                    "high",
        -                                    "medium",
        -                                    "low"
        -                                  ],
        -                                  "type": "string"
        -                                },
        -                                {
        -                                  "type": "null"
        -                                }
        -                              ],
        -                              "default": null
        -                            },
        -                            "field_name": {
        -                              "minLength": 1,
        -                              "type": "string"
        -                            },
        -                            "resolved_value": {},
        -                            "source": {
        -                              "enum": [
        -                                "description_field",
        -                                "haiku_resolution",
        -                                "engine_default"
        -                              ],
        -                              "type": "string"
        -                            }
        -                          },
        -                          "required": [
        -                            "field_name",
        -                            "resolved_value",
        -                            "source"
        -                          ],
        -                          "type": "object"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "user_supplied": {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  }
        -                },
        -                "type": "object"
        -              },
        -              "standard": {
        -                "enum": [
        -                  "CESMM4",
        -                  "NRM2",
        -                  "SMM7",
        -                  "MMHW"
        -                ],
        -                "type": "string"
        -              },
        -              "text_summary": {
        -                "maxLength": 2000,
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "totals_summary": {
        -                "additionalProperties": false,
        -                "description": "Schema § 1.4 — totals_summary as a typed wrapper around the free-form dict.\n\nWire shape is a flat object (`{\"concrete_m3\": {...}, \"rebar_t\": {...}}`).\nWe model it as `RootModel`-equivalent via `model_config(extra=\"allow\")`\n+ a single `__root__`-style `entries` dict. Pydantic v2 recommends\n`RootModel` for free-form roots; using a wrapper class keeps the import\nsurface uniform with the rest of this module.",
        -                "properties": {
        -                  "entries": {
        -                    "additionalProperties": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.4 — single material/work-class total entry.",
        -                      "properties": {
        -                        "quantity": {
        -                          "minimum": 0,
        -                          "type": "number"
        -                        },
        -                        "unit": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "quantity",
        -                        "unit"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "object"
        -                  }
        -                },
        -                "type": "object"
        -              }
        -            },
        -            "required": [
        -              "assembly_slug",
        -              "standard",
        -              "parameters_used",
        -              "boq_rows",
        -              "totals_summary",
        -              "text_summary"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      },
        -      "error": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        -            "properties": {
        -              "code": {
        -                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        -                "enum": [
        -                  "RATE_LIMIT_EXCEEDED",
        -                  "TIER_INSUFFICIENT",
        -                  "INVALID_INPUT",
        -                  "SCHEMA_VERSION_MISMATCH",
        -                  "SCHEMA_INVARIANT_VIOLATION",
        -                  "UPSTREAM_TIMEOUT",
        -                  "BACKEND_FAILURE",
        -                  "IP_BLOCKED",
        -                  "RESOURCE_NOT_FOUND",
        -                  "RENDER_FAILURE",
        -                  "OCR_LOW_CONFIDENCE",
        -                  "MANUAL_REVIEW_REQUIRED",
        -                  "ACCEPTANCE_REQUIRED",
        -                  "INVALID_TOKEN"
        -                ],
        -                "type": "string"
        -              },
        -              "details": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "message": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "recoverable": {
        -                "type": "boolean"
        -              },
        -              "retry_after_seconds": {
        -                "anyOf": [
        -                  {
        -                    "minimum": 0,
        -                    "type": "integer"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              }
        -            },
        -            "required": [
        -              "code",
        -              "message",
        -              "recoverable"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      }
        -    },
        -    "required": [
        -      "_meta"
        -    ],
        -    "type": "object"
        -  },
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "_meta": {
        -        "additionalProperties": false,
        -        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        -        "properties": {
        -          "deliverables": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        -                "properties": {
        -                  "docx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "dxf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "expires_at": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  },
        -                  "pdf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "xlsx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "expires_at"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "document_id": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "issued_at": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "rate_limit_remaining": {
        -            "anyOf": [
        -              {
        -                "minimum": 0,
        -                "type": "integer"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "request_id": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "schema_version": {
        -            "const": "1.0.0",
        -            "default": "1.0.0",
        -            "type": "string"
        -          },
        -          "scope_boundary": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        -                "properties": {
        -                  "not_in_scope": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "produced": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "recommended_companions": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "type": "string"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "produced",
        -                  "not_in_scope"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tier": {
        -            "enum": [
        -              "free",
        -              "paid"
        -            ],
        -            "type": "string"
        -          },
        -          "tier_upgrade": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        -                "properties": {
        -                  "available_tiers": {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        -                      "properties": {
        -                        "billing": {
        -                          "enum": [
        -                            "one_off",
        -                            "monthly",
        -                            "annual"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "currency": {
        -                          "enum": [
        -                            "GBP",
        -                            "SGD",
        -                            "EUR",
        -                            "USD",
        -                            "CAD",
        -                            "AUD",
        -                            "NZD",
        -                            "MYR"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "display_name": {
        -                          "type": "string"
        -                        },
        -                        "price_local": {
        -                          "type": "number"
        -                        },
        -                        "tier_slug": {
        -                          "enum": [
        -                            "7_day_pass",
        -                            "solo",
        -                            "studio",
        -                            "practice"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "unlock_summary": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "tier_slug",
        -                        "display_name",
        -                        "price_local",
        -                        "currency",
        -                        "billing",
        -                        "unlock_summary"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "current_tier": {
        -                    "const": "free",
        -                    "default": "free",
        -                    "type": "string"
        -                  },
        -                  "pass_credit": {
        -                    "anyOf": [
        -                      {
        -                        "additionalProperties": false,
        -                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        -                        "properties": {
        -                          "amount_local": {
        -                            "type": "number"
        -                          },
        -                          "applies_to": {
        -                            "const": "solo_first_month",
        -                            "default": "solo_first_month",
        -                            "type": "string"
        -                          },
        -                          "currency": {
        -                            "type": "string"
        -                          },
        -                          "redeemable_until": {
        -                            "type": "string"
        -                          }
        -                        },
        -                        "required": [
        -                          "amount_local",
        -                          "currency",
        -                          "redeemable_until"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "pricing_url": {
        -                    "default": "https://civilquants.com/pricing",
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "available_tiers"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tos_url": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "upgrade_hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "warranty_disclaimer": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          }
        -        },
        -        "required": [
        -          "request_id",
        -          "issued_at",
        -          "tier"
        -        ],
        -        "type": "object"
        -      },
        -      "data": {
        -        "default": null,
        -        "title": "Data"
        -      },
        -      "error": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        -            "properties": {
        -              "code": {
        -                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        -                "enum": [
        -                  "RATE_LIMIT_EXCEEDED",
        -                  "TIER_INSUFFICIENT",
        -                  "INVALID_INPUT",
        -                  "SCHEMA_VERSION_MISMATCH",
        -                  "SCHEMA_INVARIANT_VIOLATION",
        -                  "UPSTREAM_TIMEOUT",
        -                  "BACKEND_FAILURE",
        -                  "IP_BLOCKED",
        -                  "RESOURCE_NOT_FOUND",
        -                  "RENDER_FAILURE",
        -                  "OCR_LOW_CONFIDENCE",
        -                  "MANUAL_REVIEW_REQUIRED",
        -                  "ACCEPTANCE_REQUIRED",
        -                  "INVALID_TOKEN"
        -                ],
        -                "type": "string"
        -              },
        -              "details": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "message": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "recoverable": {
        -                "type": "boolean"
        -              },
        -              "retry_after_seconds": {
        -                "anyOf": [
        -                  {
        -                    "minimum": 0,
        -                    "type": "integer"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              }
        -            },
        -            "required": [
        -              "code",
        -              "message",
        -              "recoverable"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      }
        -    },
        -    "required": [
        -      "_meta"
        -    ],
        -    "type": "object"
        -  }
        -]New value: +[
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "_meta": {
        +        "additionalProperties": false,
        +        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        +        "properties": {
        +          "deliverables": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        +                "properties": {
        +                  "docx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "dxf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "expires_at": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  },
        +                  "pdf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "xlsx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "expires_at"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "document_id": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "issued_at": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "rate_limit_remaining": {
        +            "anyOf": [
        +              {
        +                "minimum": 0,
        +                "type": "integer"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "request_id": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "schema_version": {
        +            "const": "1.0.0",
        +            "default": "1.0.0",
        +            "type": "string"
        +          },
        +          "scope_boundary": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        +                "properties": {
        +                  "not_in_scope": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "produced": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "recommended_companions": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "type": "string"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "produced",
        +                  "not_in_scope"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tier": {
        +            "enum": [
        +              "free",
        +              "paid"
        +            ],
        +            "type": "string"
        +          },
        +          "tier_upgrade": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        +                "properties": {
        +                  "available_tiers": {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        +                      "properties": {
        +                        "billing": {
        +                          "enum": [
        +                            "one_off",
        +                            "monthly",
        +                            "annual"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "currency": {
        +                          "enum": [
        +                            "GBP",
        +                            "SGD",
        +                            "EUR",
        +                            "USD",
        +                            "CAD",
        +                            "AUD",
        +                            "NZD",
        +                            "MYR"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "display_name": {
        +                          "type": "string"
        +                        },
        +                        "price_local": {
        +                          "type": "number"
        +                        },
        +                        "tier_slug": {
        +                          "enum": [
        +                            "7_day_pass",
        +                            "solo",
        +                            "studio",
        +                            "practice"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "unlock_summary": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "tier_slug",
        +                        "display_name",
        +                        "price_local",
        +                        "currency",
        +                        "billing",
        +                        "unlock_summary"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "current_tier": {
        +                    "const": "free",
        +                    "default": "free",
        +                    "type": "string"
        +                  },
        +                  "pass_credit": {
        +                    "anyOf": [
        +                      {
        +                        "additionalProperties": false,
        +                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        +                        "properties": {
        +                          "amount_local": {
        +                            "type": "number"
        +                          },
        +                          "applies_to": {
        +                            "const": "solo_first_month",
        +                            "default": "solo_first_month",
        +                            "type": "string"
        +                          },
        +                          "currency": {
        +                            "type": "string"
        +                          },
        +                          "redeemable_until": {
        +                            "type": "string"
        +                          }
        +                        },
        +                        "required": [
        +                          "amount_local",
        +                          "currency",
        +                          "redeemable_until"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "pricing_url": {
        +                    "default": "https://civilquants.com/pricing",
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "available_tiers"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tos_url": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "upgrade_hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "warranty_disclaimer": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          }
        +        },
        +        "required": [
        +          "request_id",
        +          "issued_at",
        +          "tier"
        +        ],
        +        "type": "object"
        +      },
        +      "data": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Schema § 1.1 — the typed payload returned inside `MCPResponse[ComputeResult]`.\n\nFree-tier responses MUST omit `drawings` and `audit_trail` (the bridge\nenforces this); paid-tier responses populate both. `text_summary` is\nbounded to 2000 chars — keeps the LLM-facing summary token-cheap and\nforces longer narrative into BoQ row descriptions where it belongs.\n`warnings` is the non-fatal geometry advisory list (both tiers).",
        +            "properties": {
        +              "assembly_slug": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "audit_trail": {
        +                "anyOf": [
        +                  {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.7 — paid-tier audit-trail entry.\n\nOne entry per BoQ row; `boq_row_index` ties to the row position in\n`ComputeResult.boq_rows`. `derivation` is the human-readable formula\nwalk-through; `formula` is the optional formal expression.",
        +                      "properties": {
        +                        "boq_row_index": {
        +                          "minimum": 0,
        +                          "type": "integer"
        +                        },
        +                        "derivation": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "formula": {
        +                          "anyOf": [
        +                            {
        +                              "type": "string"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ],
        +                          "default": null
        +                        },
        +                        "id": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "parameters_referenced": {
        +                          "items": {
        +                            "type": "string"
        +                          },
        +                          "type": "array"
        +                        }
        +                      },
        +                      "required": [
        +                        "id",
        +                        "boq_row_index",
        +                        "derivation"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "boq_rows": {
        +                "items": {
        +                  "additionalProperties": false,
        +                  "description": "Schema § 1.3 — a single bill row in the requested standard's format.\n\n`description` is the non-verbatim functional description per spec § 13.9 /\n§ 15 invariant — NEVER reproduces a standard's verbatim clause text.\n`rate` / `amount` ship null because rates are commodity data the customer\nowns; the engine's job is the measurement, not the pricing.",
        +                  "properties": {
        +                    "amount": {
        +                      "anyOf": [
        +                        {
        +                          "type": "number"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "attribution": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "audit_id": {
        +                      "anyOf": [
        +                        {
        +                          "type": "string"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "description": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "quantity": {
        +                      "minimum": 0,
        +                      "type": "number"
        +                    },
        +                    "rate": {
        +                      "anyOf": [
        +                        {
        +                          "type": "number"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "unit": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "work_section": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    }
        +                  },
        +                  "required": [
        +                    "work_section",
        +                    "description",
        +                    "quantity",
        +                    "unit",
        +                    "attribution"
        +                  ],
        +                  "type": "object"
        +                },
        +                "type": "array"
        +              },
        +              "drawings": {
        +                "anyOf": [
        +                  {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.6 — paid-tier drawing artefact pointer.\n\n`url` is an R2-signed URL; expiry is carried in `_meta.deliverables.expires_at`\non the envelope (not duplicated here). `layers` is DXF-only; PDF/SVG\ncallers omit it.",
        +                      "properties": {
        +                        "drawing_type": {
        +                          "enum": [
        +                            "section",
        +                            "plan",
        +                            "elevation",
        +                            "isometric",
        +                            "detail"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "format": {
        +                          "enum": [
        +                            "DXF",
        +                            "PDF",
        +                            "SVG"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "layers": {
        +                          "anyOf": [
        +                            {
        +                              "items": {
        +                                "type": "string"
        +                              },
        +                              "type": "array"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ],
        +                          "default": null
        +                        },
        +                        "scale": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "sheet_size": {
        +                          "enum": [
        +                            "A1",
        +                            "A2",
        +                            "A3",
        +                            "A4"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "url": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "drawing_type",
        +                        "format",
        +                        "url",
        +                        "sheet_size",
        +                        "scale"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "parameters_used": {
        +                "additionalProperties": false,
        +                "description": "Schema § 1.2 — the parameter snapshot the engine actually used.\n\nSplits user-supplied values from engine defaults so customers can see\nwhich numbers came from them and which the engine filled in. Every\ndefaulted parameter SHOULD have a corresponding entry in `assumptions`\n— the bridge layer enforces this when wrapping engine output.",
        +                "properties": {
        +                  "assumptions": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "engine_defaults": {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  "resolved_from_description": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "additionalProperties": false,
        +                          "description": "Schema § 1.2 — a parameter resolved by the forgiving-input layer.\n\nPopulated by the Track B-Forgiving Haiku-4.5 resolution pass; until that\nlayer lands, instances are constructed only by tests. `source` distinguishes\nthe resolution path so customers can audit which fields were inferred.",
        +                          "properties": {
        +                            "confidence": {
        +                              "anyOf": [
        +                                {
        +                                  "enum": [
        +                                    "high",
        +                                    "medium",
        +                                    "low"
        +                                  ],
        +                                  "type": "string"
        +                                },
        +                                {
        +                                  "type": "null"
        +                                }
        +                              ],
        +                              "default": null
        +                            },
        +                            "field_name": {
        +                              "minLength": 1,
        +                              "type": "string"
        +                            },
        +                            "resolved_value": {},
        +                            "source": {
        +                              "enum": [
        +                                "description_field",
        +                                "haiku_resolution",
        +                                "engine_default"
        +                              ],
        +                              "type": "string"
        +                            }
        +                          },
        +                          "required": [
        +                            "field_name",
        +                            "resolved_value",
        +                            "source"
        +                          ],
        +                          "type": "object"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "user_supplied": {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  }
        +                },
        +                "type": "object"
        +              },
        +              "standard": {
        +                "enum": [
        +                  "CESMM4",
        +                  "NRM2",
        +                  "SMM7",
        +                  "MMHW"
        +                ],
        +                "type": "string"
        +              },
        +              "text_summary": {
        +                "maxLength": 2000,
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "totals_summary": {
        +                "additionalProperties": false,
        +                "description": "Schema § 1.4 — totals_summary as a typed wrapper around the free-form dict.\n\nWire shape is a flat object (`{\"concrete_m3\": {...}, \"rebar_t\": {...}}`).\nWe model it as `RootModel`-equivalent via `model_config(extra=\"allow\")`\n+ a single `__root__`-style `entries` dict. Pydantic v2 recommends\n`RootModel` for free-form roots; using a wrapper class keeps the import\nsurface uniform with the rest of this module.",
        +                "properties": {
        +                  "entries": {
        +                    "additionalProperties": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.4 — single material/work-class total entry.",
        +                      "properties": {
        +                        "quantity": {
        +                          "minimum": 0,
        +                          "type": "number"
        +                        },
        +                        "unit": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "quantity",
        +                        "unit"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "object"
        +                  }
        +                },
        +                "type": "object"
        +              },
        +              "warnings": {
        +                "items": {
        +                  "additionalProperties": false,
        +                  "description": "Schema § 1.8 — a non-fatal geometry advisory (56th-fire T2).\n\nThe wire projection of the engine's `core.GeometryWarning`. Advisory only:\na warning NEVER changes a measured quantity — it flags geometry that is\nvalid but likely a mistake (e.g. a stale dependent-height default). Present\non BOTH tiers — a correctness/safety signal, not a paid feature.",
        +                  "properties": {
        +                    "affected_params": {
        +                      "items": {
        +                        "type": "string"
        +                      },
        +                      "type": "array"
        +                    },
        +                    "code": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "detail": {
        +                      "additionalProperties": {
        +                        "type": "number"
        +                      },
        +                      "type": "object"
        +                    },
        +                    "message": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "severity": {
        +                      "enum": [
        +                        "info",
        +                        "advisory",
        +                        "caution"
        +                      ],
        +                      "type": "string"
        +                    }
        +                  },
        +                  "required": [
        +                    "code",
        +                    "severity",
        +                    "message"
        +                  ],
        +                  "type": "object"
        +                },
        +                "type": "array"
        +              }
        +            },
        +            "required": [
        +              "assembly_slug",
        +              "standard",
        +              "parameters_used",
        +              "boq_rows",
        +              "totals_summary",
        +              "text_summary"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      },
        +      "error": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        +            "properties": {
        +              "code": {
        +                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        +                "enum": [
        +                  "RATE_LIMIT_EXCEEDED",
        +                  "TIER_INSUFFICIENT",
        +                  "INVALID_INPUT",
        +                  "SCHEMA_VERSION_MISMATCH",
        +                  "SCHEMA_INVARIANT_VIOLATION",
        +                  "UPSTREAM_TIMEOUT",
        +                  "BACKEND_FAILURE",
        +                  "IP_BLOCKED",
        +                  "RESOURCE_NOT_FOUND",
        +                  "RENDER_FAILURE",
        +                  "OCR_LOW_CONFIDENCE",
        +                  "MANUAL_REVIEW_REQUIRED",
        +                  "ACCEPTANCE_REQUIRED",
        +                  "INVALID_TOKEN"
        +                ],
        +                "type": "string"
        +              },
        +              "details": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "message": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "recoverable": {
        +                "type": "boolean"
        +              },
        +              "retry_after_seconds": {
        +                "anyOf": [
        +                  {
        +                    "minimum": 0,
        +                    "type": "integer"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              }
        +            },
        +            "required": [
        +              "code",
        +              "message",
        +              "recoverable"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      }
        +    },
        +    "required": [
        +      "_meta"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "_meta": {
        +        "additionalProperties": false,
        +        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        +        "properties": {
        +          "deliverables": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        +                "properties": {
        +                  "docx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "dxf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "expires_at": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  },
        +                  "pdf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "xlsx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "expires_at"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "document_id": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "issued_at": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "rate_limit_remaining": {
        +            "anyOf": [
        +              {
        +                "minimum": 0,
        +                "type": "integer"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "request_id": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "schema_version": {
        +            "const": "1.0.0",
        +            "default": "1.0.0",
        +            "type": "string"
        +          },
        +          "scope_boundary": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        +                "properties": {
        +                  "not_in_scope": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "produced": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "recommended_companions": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "type": "string"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "produced",
        +                  "not_in_scope"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tier": {
        +            "enum": [
        +              "free",
        +              "paid"
        +            ],
        +            "type": "string"
        +          },
        +          "tier_upgrade": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        +                "properties": {
        +                  "available_tiers": {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        +                      "properties": {
        +                        "billing": {
        +                          "enum": [
        +                            "one_off",
        +                            "monthly",
        +                            "annual"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "currency": {
        +                          "enum": [
        +                            "GBP",
        +                            "SGD",
        +                            "EUR",
        +                            "USD",
        +                            "CAD",
        +                            "AUD",
        +                            "NZD",
        +                            "MYR"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "display_name": {
        +                          "type": "string"
        +                        },
        +                        "price_local": {
        +                          "type": "number"
        +                        },
        +                        "tier_slug": {
        +                          "enum": [
        +                            "7_day_pass",
        +                            "solo",
        +                            "studio",
        +                            "practice"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "unlock_summary": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "tier_slug",
        +                        "display_name",
        +                        "price_local",
        +                        "currency",
        +                        "billing",
        +                        "unlock_summary"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "current_tier": {
        +                    "const": "free",
        +                    "default": "free",
        +                    "type": "string"
        +                  },
        +                  "pass_credit": {
        +                    "anyOf": [
        +                      {
        +                        "additionalProperties": false,
        +                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        +                        "properties": {
        +                          "amount_local": {
        +                            "type": "number"
        +                          },
        +                          "applies_to": {
        +                            "const": "solo_first_month",
        +                            "default": "solo_first_month",
        +                            "type": "string"
        +                          },
        +                          "currency": {
        +                            "type": "string"
        +                          },
        +                          "redeemable_until": {
        +                            "type": "string"
        +                          }
        +                        },
        +                        "required": [
        +                          "amount_local",
        +                          "currency",
        +                          "redeemable_until"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "pricing_url": {
        +                    "default": "https://civilquants.com/pricing",
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "available_tiers"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tos_url": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "upgrade_hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "warranty_disclaimer": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          }
        +        },
        +        "required": [
        +          "request_id",
        +          "issued_at",
        +          "tier"
        +        ],
        +        "type": "object"
        +      },
        +      "data": {
        +        "default": null,
        +        "title": "Data"
        +      },
        +      "error": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        +            "properties": {
        +              "code": {
        +                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        +                "enum": [
        +                  "RATE_LIMIT_EXCEEDED",
        +                  "TIER_INSUFFICIENT",
        +                  "INVALID_INPUT",
        +                  "SCHEMA_VERSION_MISMATCH",
        +                  "SCHEMA_INVARIANT_VIOLATION",
        +                  "UPSTREAM_TIMEOUT",
        +                  "BACKEND_FAILURE",
        +                  "IP_BLOCKED",
        +                  "RESOURCE_NOT_FOUND",
        +                  "RENDER_FAILURE",
        +                  "OCR_LOW_CONFIDENCE",
        +                  "MANUAL_REVIEW_REQUIRED",
        +                  "ACCEPTANCE_REQUIRED",
        +                  "INVALID_TOKEN"
        +                ],
        +                "type": "string"
        +              },
        +              "details": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "message": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "recoverable": {
        +                "type": "boolean"
        +              },
        +              "retry_after_seconds": {
        +                "anyOf": [
        +                  {
        +                    "minimum": 0,
        +                    "type": "integer"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              }
        +            },
        +            "required": [
        +              "code",
        +              "message",
        +              "recoverable"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      }
        +    },
        +    "required": [
        +      "_meta"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedcompute_embankment_cross_section1 field changed
      • changedOutput schema / properties / result / anyOf
        Previous value: -[
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "_meta": {
        -        "additionalProperties": false,
        -        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        -        "properties": {
        -          "deliverables": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        -                "properties": {
        -                  "docx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "dxf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "expires_at": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  },
        -                  "pdf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "xlsx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "expires_at"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "document_id": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "issued_at": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "rate_limit_remaining": {
        -            "anyOf": [
        -              {
        -                "minimum": 0,
        -                "type": "integer"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "request_id": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "schema_version": {
        -            "const": "1.0.0",
        -            "default": "1.0.0",
        -            "type": "string"
        -          },
        -          "scope_boundary": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        -                "properties": {
        -                  "not_in_scope": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "produced": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "recommended_companions": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "type": "string"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "produced",
        -                  "not_in_scope"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tier": {
        -            "enum": [
        -              "free",
        -              "paid"
        -            ],
        -            "type": "string"
        -          },
        -          "tier_upgrade": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        -                "properties": {
        -                  "available_tiers": {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        -                      "properties": {
        -                        "billing": {
        -                          "enum": [
        -                            "one_off",
        -                            "monthly",
        -                            "annual"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "currency": {
        -                          "enum": [
        -                            "GBP",
        -                            "SGD",
        -                            "EUR",
        -                            "USD",
        -                            "CAD",
        -                            "AUD",
        -                            "NZD",
        -                            "MYR"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "display_name": {
        -                          "type": "string"
        -                        },
        -                        "price_local": {
        -                          "type": "number"
        -                        },
        -                        "tier_slug": {
        -                          "enum": [
        -                            "7_day_pass",
        -                            "solo",
        -                            "studio",
        -                            "practice"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "unlock_summary": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "tier_slug",
        -                        "display_name",
        -                        "price_local",
        -                        "currency",
        -                        "billing",
        -                        "unlock_summary"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "current_tier": {
        -                    "const": "free",
        -                    "default": "free",
        -                    "type": "string"
        -                  },
        -                  "pass_credit": {
        -                    "anyOf": [
        -                      {
        -                        "additionalProperties": false,
        -                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        -                        "properties": {
        -                          "amount_local": {
        -                            "type": "number"
        -                          },
        -                          "applies_to": {
        -                            "const": "solo_first_month",
        -                            "default": "solo_first_month",
        -                            "type": "string"
        -                          },
        -                          "currency": {
        -                            "type": "string"
        -                          },
        -                          "redeemable_until": {
        -                            "type": "string"
        -                          }
        -                        },
        -                        "required": [
        -                          "amount_local",
        -                          "currency",
        -                          "redeemable_until"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "pricing_url": {
        -                    "default": "https://civilquants.com/pricing",
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "available_tiers"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tos_url": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "upgrade_hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "warranty_disclaimer": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          }
        -        },
        -        "required": [
        -          "request_id",
        -          "issued_at",
        -          "tier"
        -        ],
        -        "type": "object"
        -      },
        -      "data": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Schema § 1.1 — the typed payload returned inside `MCPResponse[ComputeResult]`.\n\nFree-tier responses MUST omit `drawings` and `audit_trail` (the bridge\nenforces this); paid-tier responses populate both. `text_summary` is\nbounded to 2000 chars — keeps the LLM-facing summary token-cheap and\nforces longer narrative into BoQ row descriptions where it belongs.",
        -            "properties": {
        -              "assembly_slug": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "audit_trail": {
        -                "anyOf": [
        -                  {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.7 — paid-tier audit-trail entry.\n\nOne entry per BoQ row; `boq_row_index` ties to the row position in\n`ComputeResult.boq_rows`. `derivation` is the human-readable formula\nwalk-through; `formula` is the optional formal expression.",
        -                      "properties": {
        -                        "boq_row_index": {
        -                          "minimum": 0,
        -                          "type": "integer"
        -                        },
        -                        "derivation": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "formula": {
        -                          "anyOf": [
        -                            {
        -                              "type": "string"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ],
        -                          "default": null
        -                        },
        -                        "id": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "parameters_referenced": {
        -                          "items": {
        -                            "type": "string"
        -                          },
        -                          "type": "array"
        -                        }
        -                      },
        -                      "required": [
        -                        "id",
        -                        "boq_row_index",
        -                        "derivation"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "boq_rows": {
        -                "items": {
        -                  "additionalProperties": false,
        -                  "description": "Schema § 1.3 — a single bill row in the requested standard's format.\n\n`description` is the non-verbatim functional description per spec § 13.9 /\n§ 15 invariant — NEVER reproduces a standard's verbatim clause text.\n`rate` / `amount` ship null because rates are commodity data the customer\nowns; the engine's job is the measurement, not the pricing.",
        -                  "properties": {
        -                    "amount": {
        -                      "anyOf": [
        -                        {
        -                          "type": "number"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "attribution": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "audit_id": {
        -                      "anyOf": [
        -                        {
        -                          "type": "string"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "description": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "quantity": {
        -                      "minimum": 0,
        -                      "type": "number"
        -                    },
        -                    "rate": {
        -                      "anyOf": [
        -                        {
        -                          "type": "number"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "unit": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "work_section": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    }
        -                  },
        -                  "required": [
        -                    "work_section",
        -                    "description",
        -                    "quantity",
        -                    "unit",
        -                    "attribution"
        -                  ],
        -                  "type": "object"
        -                },
        -                "type": "array"
        -              },
        -              "drawings": {
        -                "anyOf": [
        -                  {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.6 — paid-tier drawing artefact pointer.\n\n`url` is an R2-signed URL; expiry is carried in `_meta.deliverables.expires_at`\non the envelope (not duplicated here). `layers` is DXF-only; PDF/SVG\ncallers omit it.",
        -                      "properties": {
        -                        "drawing_type": {
        -                          "enum": [
        -                            "section",
        -                            "plan",
        -                            "elevation",
        -                            "isometric",
        -                            "detail"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "format": {
        -                          "enum": [
        -                            "DXF",
        -                            "PDF",
        -                            "SVG"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "layers": {
        -                          "anyOf": [
        -                            {
        -                              "items": {
        -                                "type": "string"
        -                              },
        -                              "type": "array"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ],
        -                          "default": null
        -                        },
        -                        "scale": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "sheet_size": {
        -                          "enum": [
        -                            "A1",
        -                            "A2",
        -                            "A3",
        -                            "A4"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "url": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "drawing_type",
        -                        "format",
        -                        "url",
        -                        "sheet_size",
        -                        "scale"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "parameters_used": {
        -                "additionalProperties": false,
        -                "description": "Schema § 1.2 — the parameter snapshot the engine actually used.\n\nSplits user-supplied values from engine defaults so customers can see\nwhich numbers came from them and which the engine filled in. Every\ndefaulted parameter SHOULD have a corresponding entry in `assumptions`\n— the bridge layer enforces this when wrapping engine output.",
        -                "properties": {
        -                  "assumptions": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "engine_defaults": {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  "resolved_from_description": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "additionalProperties": false,
        -                          "description": "Schema § 1.2 — a parameter resolved by the forgiving-input layer.\n\nPopulated by the Track B-Forgiving Haiku-4.5 resolution pass; until that\nlayer lands, instances are constructed only by tests. `source` distinguishes\nthe resolution path so customers can audit which fields were inferred.",
        -                          "properties": {
        -                            "confidence": {
        -                              "anyOf": [
        -                                {
        -                                  "enum": [
        -                                    "high",
        -                                    "medium",
        -                                    "low"
        -                                  ],
        -                                  "type": "string"
        -                                },
        -                                {
        -                                  "type": "null"
        -                                }
        -                              ],
        -                              "default": null
        -                            },
        -                            "field_name": {
        -                              "minLength": 1,
        -                              "type": "string"
        -                            },
        -                            "resolved_value": {},
        -                            "source": {
        -                              "enum": [
        -                                "description_field",
        -                                "haiku_resolution",
        -                                "engine_default"
        -                              ],
        -                              "type": "string"
        -                            }
        -                          },
        -                          "required": [
        -                            "field_name",
        -                            "resolved_value",
        -                            "source"
        -                          ],
        -                          "type": "object"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "user_supplied": {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  }
        -                },
        -                "type": "object"
        -              },
        -              "standard": {
        -                "enum": [
        -                  "CESMM4",
        -                  "NRM2",
        -                  "SMM7",
        -                  "MMHW"
        -                ],
        -                "type": "string"
        -              },
        -              "text_summary": {
        -                "maxLength": 2000,
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "totals_summary": {
        -                "additionalProperties": false,
        -                "description": "Schema § 1.4 — totals_summary as a typed wrapper around the free-form dict.\n\nWire shape is a flat object (`{\"concrete_m3\": {...}, \"rebar_t\": {...}}`).\nWe model it as `RootModel`-equivalent via `model_config(extra=\"allow\")`\n+ a single `__root__`-style `entries` dict. Pydantic v2 recommends\n`RootModel` for free-form roots; using a wrapper class keeps the import\nsurface uniform with the rest of this module.",
        -                "properties": {
        -                  "entries": {
        -                    "additionalProperties": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.4 — single material/work-class total entry.",
        -                      "properties": {
        -                        "quantity": {
        -                          "minimum": 0,
        -                          "type": "number"
        -                        },
        -                        "unit": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "quantity",
        -                        "unit"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "object"
        -                  }
        -                },
        -                "type": "object"
        -              }
        -            },
        -            "required": [
        -              "assembly_slug",
        -              "standard",
        -              "parameters_used",
        -              "boq_rows",
        -              "totals_summary",
        -              "text_summary"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      },
        -      "error": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        -            "properties": {
        -              "code": {
        -                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        -                "enum": [
        -                  "RATE_LIMIT_EXCEEDED",
        -                  "TIER_INSUFFICIENT",
        -                  "INVALID_INPUT",
        -                  "SCHEMA_VERSION_MISMATCH",
        -                  "SCHEMA_INVARIANT_VIOLATION",
        -                  "UPSTREAM_TIMEOUT",
        -                  "BACKEND_FAILURE",
        -                  "IP_BLOCKED",
        -                  "RESOURCE_NOT_FOUND",
        -                  "RENDER_FAILURE",
        -                  "OCR_LOW_CONFIDENCE",
        -                  "MANUAL_REVIEW_REQUIRED",
        -                  "ACCEPTANCE_REQUIRED",
        -                  "INVALID_TOKEN"
        -                ],
        -                "type": "string"
        -              },
        -              "details": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "message": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "recoverable": {
        -                "type": "boolean"
        -              },
        -              "retry_after_seconds": {
        -                "anyOf": [
        -                  {
        -                    "minimum": 0,
        -                    "type": "integer"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              }
        -            },
        -            "required": [
        -              "code",
        -              "message",
        -              "recoverable"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      }
        -    },
        -    "required": [
        -      "_meta"
        -    ],
        -    "type": "object"
        -  },
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "_meta": {
        -        "additionalProperties": false,
        -        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        -        "properties": {
        -          "deliverables": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        -                "properties": {
        -                  "docx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "dxf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "expires_at": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  },
        -                  "pdf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "xlsx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "expires_at"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "document_id": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "issued_at": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "rate_limit_remaining": {
        -            "anyOf": [
        -              {
        -                "minimum": 0,
        -                "type": "integer"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "request_id": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "schema_version": {
        -            "const": "1.0.0",
        -            "default": "1.0.0",
        -            "type": "string"
        -          },
        -          "scope_boundary": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        -                "properties": {
        -                  "not_in_scope": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "produced": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "recommended_companions": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "type": "string"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "produced",
        -                  "not_in_scope"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tier": {
        -            "enum": [
        -              "free",
        -              "paid"
        -            ],
        -            "type": "string"
        -          },
        -          "tier_upgrade": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        -                "properties": {
        -                  "available_tiers": {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        -                      "properties": {
        -                        "billing": {
        -                          "enum": [
        -                            "one_off",
        -                            "monthly",
        -                            "annual"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "currency": {
        -                          "enum": [
        -                            "GBP",
        -                            "SGD",
        -                            "EUR",
        -                            "USD",
        -                            "CAD",
        -                            "AUD",
        -                            "NZD",
        -                            "MYR"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "display_name": {
        -                          "type": "string"
        -                        },
        -                        "price_local": {
        -                          "type": "number"
        -                        },
        -                        "tier_slug": {
        -                          "enum": [
        -                            "7_day_pass",
        -                            "solo",
        -                            "studio",
        -                            "practice"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "unlock_summary": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "tier_slug",
        -                        "display_name",
        -                        "price_local",
        -                        "currency",
        -                        "billing",
        -                        "unlock_summary"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "current_tier": {
        -                    "const": "free",
        -                    "default": "free",
        -                    "type": "string"
        -                  },
        -                  "pass_credit": {
        -                    "anyOf": [
        -                      {
        -                        "additionalProperties": false,
        -                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        -                        "properties": {
        -                          "amount_local": {
        -                            "type": "number"
        -                          },
        -                          "applies_to": {
        -                            "const": "solo_first_month",
        -                            "default": "solo_first_month",
        -                            "type": "string"
        -                          },
        -                          "currency": {
        -                            "type": "string"
        -                          },
        -                          "redeemable_until": {
        -                            "type": "string"
        -                          }
        -                        },
        -                        "required": [
        -                          "amount_local",
        -                          "currency",
        -                          "redeemable_until"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "pricing_url": {
        -                    "default": "https://civilquants.com/pricing",
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "available_tiers"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tos_url": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "upgrade_hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "warranty_disclaimer": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          }
        -        },
        -        "required": [
        -          "request_id",
        -          "issued_at",
        -          "tier"
        -        ],
        -        "type": "object"
        -      },
        -      "data": {
        -        "default": null,
        -        "title": "Data"
        -      },
        -      "error": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        -            "properties": {
        -              "code": {
        -                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        -                "enum": [
        -                  "RATE_LIMIT_EXCEEDED",
        -                  "TIER_INSUFFICIENT",
        -                  "INVALID_INPUT",
        -                  "SCHEMA_VERSION_MISMATCH",
        -                  "SCHEMA_INVARIANT_VIOLATION",
        -                  "UPSTREAM_TIMEOUT",
        -                  "BACKEND_FAILURE",
        -                  "IP_BLOCKED",
        -                  "RESOURCE_NOT_FOUND",
        -                  "RENDER_FAILURE",
        -                  "OCR_LOW_CONFIDENCE",
        -                  "MANUAL_REVIEW_REQUIRED",
        -                  "ACCEPTANCE_REQUIRED",
        -                  "INVALID_TOKEN"
        -                ],
        -                "type": "string"
        -              },
        -              "details": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "message": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "recoverable": {
        -                "type": "boolean"
        -              },
        -              "retry_after_seconds": {
        -                "anyOf": [
        -                  {
        -                    "minimum": 0,
        -                    "type": "integer"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              }
        -            },
        -            "required": [
        -              "code",
        -              "message",
        -              "recoverable"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      }
        -    },
        -    "required": [
        -      "_meta"
        -    ],
        -    "type": "object"
        -  }
        -]New value: +[
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "_meta": {
        +        "additionalProperties": false,
        +        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        +        "properties": {
        +          "deliverables": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        +                "properties": {
        +                  "docx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "dxf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "expires_at": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  },
        +                  "pdf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "xlsx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "expires_at"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "document_id": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "issued_at": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "rate_limit_remaining": {
        +            "anyOf": [
        +              {
        +                "minimum": 0,
        +                "type": "integer"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "request_id": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "schema_version": {
        +            "const": "1.0.0",
        +            "default": "1.0.0",
        +            "type": "string"
        +          },
        +          "scope_boundary": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        +                "properties": {
        +                  "not_in_scope": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "produced": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "recommended_companions": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "type": "string"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "produced",
        +                  "not_in_scope"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tier": {
        +            "enum": [
        +              "free",
        +              "paid"
        +            ],
        +            "type": "string"
        +          },
        +          "tier_upgrade": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        +                "properties": {
        +                  "available_tiers": {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        +                      "properties": {
        +                        "billing": {
        +                          "enum": [
        +                            "one_off",
        +                            "monthly",
        +                            "annual"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "currency": {
        +                          "enum": [
        +                            "GBP",
        +                            "SGD",
        +                            "EUR",
        +                            "USD",
        +                            "CAD",
        +                            "AUD",
        +                            "NZD",
        +                            "MYR"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "display_name": {
        +                          "type": "string"
        +                        },
        +                        "price_local": {
        +                          "type": "number"
        +                        },
        +                        "tier_slug": {
        +                          "enum": [
        +                            "7_day_pass",
        +                            "solo",
        +                            "studio",
        +                            "practice"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "unlock_summary": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "tier_slug",
        +                        "display_name",
        +                        "price_local",
        +                        "currency",
        +                        "billing",
        +                        "unlock_summary"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "current_tier": {
        +                    "const": "free",
        +                    "default": "free",
        +                    "type": "string"
        +                  },
        +                  "pass_credit": {
        +                    "anyOf": [
        +                      {
        +                        "additionalProperties": false,
        +                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        +                        "properties": {
        +                          "amount_local": {
        +                            "type": "number"
        +                          },
        +                          "applies_to": {
        +                            "const": "solo_first_month",
        +                            "default": "solo_first_month",
        +                            "type": "string"
        +                          },
        +                          "currency": {
        +                            "type": "string"
        +                          },
        +                          "redeemable_until": {
        +                            "type": "string"
        +                          }
        +                        },
        +                        "required": [
        +                          "amount_local",
        +                          "currency",
        +                          "redeemable_until"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "pricing_url": {
        +                    "default": "https://civilquants.com/pricing",
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "available_tiers"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tos_url": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "upgrade_hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "warranty_disclaimer": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          }
        +        },
        +        "required": [
        +          "request_id",
        +          "issued_at",
        +          "tier"
        +        ],
        +        "type": "object"
        +      },
        +      "data": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Schema § 1.1 — the typed payload returned inside `MCPResponse[ComputeResult]`.\n\nFree-tier responses MUST omit `drawings` and `audit_trail` (the bridge\nenforces this); paid-tier responses populate both. `text_summary` is\nbounded to 2000 chars — keeps the LLM-facing summary token-cheap and\nforces longer narrative into BoQ row descriptions where it belongs.\n`warnings` is the non-fatal geometry advisory list (both tiers).",
        +            "properties": {
        +              "assembly_slug": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "audit_trail": {
        +                "anyOf": [
        +                  {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.7 — paid-tier audit-trail entry.\n\nOne entry per BoQ row; `boq_row_index` ties to the row position in\n`ComputeResult.boq_rows`. `derivation` is the human-readable formula\nwalk-through; `formula` is the optional formal expression.",
        +                      "properties": {
        +                        "boq_row_index": {
        +                          "minimum": 0,
        +                          "type": "integer"
        +                        },
        +                        "derivation": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "formula": {
        +                          "anyOf": [
        +                            {
        +                              "type": "string"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ],
        +                          "default": null
        +                        },
        +                        "id": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "parameters_referenced": {
        +                          "items": {
        +                            "type": "string"
        +                          },
        +                          "type": "array"
        +                        }
        +                      },
        +                      "required": [
        +                        "id",
        +                        "boq_row_index",
        +                        "derivation"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "boq_rows": {
        +                "items": {
        +                  "additionalProperties": false,
        +                  "description": "Schema § 1.3 — a single bill row in the requested standard's format.\n\n`description` is the non-verbatim functional description per spec § 13.9 /\n§ 15 invariant — NEVER reproduces a standard's verbatim clause text.\n`rate` / `amount` ship null because rates are commodity data the customer\nowns; the engine's job is the measurement, not the pricing.",
        +                  "properties": {
        +                    "amount": {
        +                      "anyOf": [
        +                        {
        +                          "type": "number"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "attribution": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "audit_id": {
        +                      "anyOf": [
        +                        {
        +                          "type": "string"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "description": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "quantity": {
        +                      "minimum": 0,
        +                      "type": "number"
        +                    },
        +                    "rate": {
        +                      "anyOf": [
        +                        {
        +                          "type": "number"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "unit": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "work_section": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    }
        +                  },
        +                  "required": [
        +                    "work_section",
        +                    "description",
        +                    "quantity",
        +                    "unit",
        +                    "attribution"
        +                  ],
        +                  "type": "object"
        +                },
        +                "type": "array"
        +              },
        +              "drawings": {
        +                "anyOf": [
        +                  {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.6 — paid-tier drawing artefact pointer.\n\n`url` is an R2-signed URL; expiry is carried in `_meta.deliverables.expires_at`\non the envelope (not duplicated here). `layers` is DXF-only; PDF/SVG\ncallers omit it.",
        +                      "properties": {
        +                        "drawing_type": {
        +                          "enum": [
        +                            "section",
        +                            "plan",
        +                            "elevation",
        +                            "isometric",
        +                            "detail"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "format": {
        +                          "enum": [
        +                            "DXF",
        +                            "PDF",
        +                            "SVG"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "layers": {
        +                          "anyOf": [
        +                            {
        +                              "items": {
        +                                "type": "string"
        +                              },
        +                              "type": "array"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ],
        +                          "default": null
        +                        },
        +                        "scale": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "sheet_size": {
        +                          "enum": [
        +                            "A1",
        +                            "A2",
        +                            "A3",
        +                            "A4"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "url": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "drawing_type",
        +                        "format",
        +                        "url",
        +                        "sheet_size",
        +                        "scale"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "parameters_used": {
        +                "additionalProperties": false,
        +                "description": "Schema § 1.2 — the parameter snapshot the engine actually used.\n\nSplits user-supplied values from engine defaults so customers can see\nwhich numbers came from them and which the engine filled in. Every\ndefaulted parameter SHOULD have a corresponding entry in `assumptions`\n— the bridge layer enforces this when wrapping engine output.",
        +                "properties": {
        +                  "assumptions": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "engine_defaults": {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  "resolved_from_description": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "additionalProperties": false,
        +                          "description": "Schema § 1.2 — a parameter resolved by the forgiving-input layer.\n\nPopulated by the Track B-Forgiving Haiku-4.5 resolution pass; until that\nlayer lands, instances are constructed only by tests. `source` distinguishes\nthe resolution path so customers can audit which fields were inferred.",
        +                          "properties": {
        +                            "confidence": {
        +                              "anyOf": [
        +                                {
        +                                  "enum": [
        +                                    "high",
        +                                    "medium",
        +                                    "low"
        +                                  ],
        +                                  "type": "string"
        +                                },
        +                                {
        +                                  "type": "null"
        +                                }
        +                              ],
        +                              "default": null
        +                            },
        +                            "field_name": {
        +                              "minLength": 1,
        +                              "type": "string"
        +                            },
        +                            "resolved_value": {},
        +                            "source": {
        +                              "enum": [
        +                                "description_field",
        +                                "haiku_resolution",
        +                                "engine_default"
        +                              ],
        +                              "type": "string"
        +                            }
        +                          },
        +                          "required": [
        +                            "field_name",
        +                            "resolved_value",
        +                            "source"
        +                          ],
        +                          "type": "object"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "user_supplied": {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  }
        +                },
        +                "type": "object"
        +              },
        +              "standard": {
        +                "enum": [
        +                  "CESMM4",
        +                  "NRM2",
        +                  "SMM7",
        +                  "MMHW"
        +                ],
        +                "type": "string"
        +              },
        +              "text_summary": {
        +                "maxLength": 2000,
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "totals_summary": {
        +                "additionalProperties": false,
        +                "description": "Schema § 1.4 — totals_summary as a typed wrapper around the free-form dict.\n\nWire shape is a flat object (`{\"concrete_m3\": {...}, \"rebar_t\": {...}}`).\nWe model it as `RootModel`-equivalent via `model_config(extra=\"allow\")`\n+ a single `__root__`-style `entries` dict. Pydantic v2 recommends\n`RootModel` for free-form roots; using a wrapper class keeps the import\nsurface uniform with the rest of this module.",
        +                "properties": {
        +                  "entries": {
        +                    "additionalProperties": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.4 — single material/work-class total entry.",
        +                      "properties": {
        +                        "quantity": {
        +                          "minimum": 0,
        +                          "type": "number"
        +                        },
        +                        "unit": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "quantity",
        +                        "unit"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "object"
        +                  }
        +                },
        +                "type": "object"
        +              },
        +              "warnings": {
        +                "items": {
        +                  "additionalProperties": false,
        +                  "description": "Schema § 1.8 — a non-fatal geometry advisory (56th-fire T2).\n\nThe wire projection of the engine's `core.GeometryWarning`. Advisory only:\na warning NEVER changes a measured quantity — it flags geometry that is\nvalid but likely a mistake (e.g. a stale dependent-height default). Present\non BOTH tiers — a correctness/safety signal, not a paid feature.",
        +                  "properties": {
        +                    "affected_params": {
        +                      "items": {
        +                        "type": "string"
        +                      },
        +                      "type": "array"
        +                    },
        +                    "code": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "detail": {
        +                      "additionalProperties": {
        +                        "type": "number"
        +                      },
        +                      "type": "object"
        +                    },
        +                    "message": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "severity": {
        +                      "enum": [
        +                        "info",
        +                        "advisory",
        +                        "caution"
        +                      ],
        +                      "type": "string"
        +                    }
        +                  },
        +                  "required": [
        +                    "code",
        +                    "severity",
        +                    "message"
        +                  ],
        +                  "type": "object"
        +                },
        +                "type": "array"
        +              }
        +            },
        +            "required": [
        +              "assembly_slug",
        +              "standard",
        +              "parameters_used",
        +              "boq_rows",
        +              "totals_summary",
        +              "text_summary"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      },
        +      "error": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        +            "properties": {
        +              "code": {
        +                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        +                "enum": [
        +                  "RATE_LIMIT_EXCEEDED",
        +                  "TIER_INSUFFICIENT",
        +                  "INVALID_INPUT",
        +                  "SCHEMA_VERSION_MISMATCH",
        +                  "SCHEMA_INVARIANT_VIOLATION",
        +                  "UPSTREAM_TIMEOUT",
        +                  "BACKEND_FAILURE",
        +                  "IP_BLOCKED",
        +                  "RESOURCE_NOT_FOUND",
        +                  "RENDER_FAILURE",
        +                  "OCR_LOW_CONFIDENCE",
        +                  "MANUAL_REVIEW_REQUIRED",
        +                  "ACCEPTANCE_REQUIRED",
        +                  "INVALID_TOKEN"
        +                ],
        +                "type": "string"
        +              },
        +              "details": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "message": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "recoverable": {
        +                "type": "boolean"
        +              },
        +              "retry_after_seconds": {
        +                "anyOf": [
        +                  {
        +                    "minimum": 0,
        +                    "type": "integer"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              }
        +            },
        +            "required": [
        +              "code",
        +              "message",
        +              "recoverable"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      }
        +    },
        +    "required": [
        +      "_meta"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "_meta": {
        +        "additionalProperties": false,
        +        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        +        "properties": {
        +          "deliverables": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        +                "properties": {
        +                  "docx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "dxf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "expires_at": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  },
        +                  "pdf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "xlsx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "expires_at"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "document_id": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "issued_at": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "rate_limit_remaining": {
        +            "anyOf": [
        +              {
        +                "minimum": 0,
        +                "type": "integer"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "request_id": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "schema_version": {
        +            "const": "1.0.0",
        +            "default": "1.0.0",
        +            "type": "string"
        +          },
        +          "scope_boundary": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        +                "properties": {
        +                  "not_in_scope": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "produced": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "recommended_companions": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "type": "string"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "produced",
        +                  "not_in_scope"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tier": {
        +            "enum": [
        +              "free",
        +              "paid"
        +            ],
        +            "type": "string"
        +          },
        +          "tier_upgrade": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        +                "properties": {
        +                  "available_tiers": {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        +                      "properties": {
        +                        "billing": {
        +                          "enum": [
        +                            "one_off",
        +                            "monthly",
        +                            "annual"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "currency": {
        +                          "enum": [
        +                            "GBP",
        +                            "SGD",
        +                            "EUR",
        +                            "USD",
        +                            "CAD",
        +                            "AUD",
        +                            "NZD",
        +                            "MYR"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "display_name": {
        +                          "type": "string"
        +                        },
        +                        "price_local": {
        +                          "type": "number"
        +                        },
        +                        "tier_slug": {
        +                          "enum": [
        +                            "7_day_pass",
        +                            "solo",
        +                            "studio",
        +                            "practice"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "unlock_summary": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "tier_slug",
        +                        "display_name",
        +                        "price_local",
        +                        "currency",
        +                        "billing",
        +                        "unlock_summary"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "current_tier": {
        +                    "const": "free",
        +                    "default": "free",
        +                    "type": "string"
        +                  },
        +                  "pass_credit": {
        +                    "anyOf": [
        +                      {
        +                        "additionalProperties": false,
        +                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        +                        "properties": {
        +                          "amount_local": {
        +                            "type": "number"
        +                          },
        +                          "applies_to": {
        +                            "const": "solo_first_month",
        +                            "default": "solo_first_month",
        +                            "type": "string"
        +                          },
        +                          "currency": {
        +                            "type": "string"
        +                          },
        +                          "redeemable_until": {
        +                            "type": "string"
        +                          }
        +                        },
        +                        "required": [
        +                          "amount_local",
        +                          "currency",
        +                          "redeemable_until"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "pricing_url": {
        +                    "default": "https://civilquants.com/pricing",
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "available_tiers"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tos_url": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "upgrade_hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "warranty_disclaimer": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          }
        +        },
        +        "required": [
        +          "request_id",
        +          "issued_at",
        +          "tier"
        +        ],
        +        "type": "object"
        +      },
        +      "data": {
        +        "default": null,
        +        "title": "Data"
        +      },
        +      "error": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        +            "properties": {
        +              "code": {
        +                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        +                "enum": [
        +                  "RATE_LIMIT_EXCEEDED",
        +                  "TIER_INSUFFICIENT",
        +                  "INVALID_INPUT",
        +                  "SCHEMA_VERSION_MISMATCH",
        +                  "SCHEMA_INVARIANT_VIOLATION",
        +                  "UPSTREAM_TIMEOUT",
        +                  "BACKEND_FAILURE",
        +                  "IP_BLOCKED",
        +                  "RESOURCE_NOT_FOUND",
        +                  "RENDER_FAILURE",
        +                  "OCR_LOW_CONFIDENCE",
        +                  "MANUAL_REVIEW_REQUIRED",
        +                  "ACCEPTANCE_REQUIRED",
        +                  "INVALID_TOKEN"
        +                ],
        +                "type": "string"
        +              },
        +              "details": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "message": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "recoverable": {
        +                "type": "boolean"
        +              },
        +              "retry_after_seconds": {
        +                "anyOf": [
        +                  {
        +                    "minimum": 0,
        +                    "type": "integer"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              }
        +            },
        +            "required": [
        +              "code",
        +              "message",
        +              "recoverable"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      }
        +    },
        +    "required": [
        +      "_meta"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedcompute_end_area_earthworks1 field changed
      • changedOutput schema / properties / result / anyOf
        Previous value: -[
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "_meta": {
        -        "additionalProperties": false,
        -        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        -        "properties": {
        -          "deliverables": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        -                "properties": {
        -                  "docx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "dxf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "expires_at": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  },
        -                  "pdf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "xlsx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "expires_at"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "document_id": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "issued_at": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "rate_limit_remaining": {
        -            "anyOf": [
        -              {
        -                "minimum": 0,
        -                "type": "integer"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "request_id": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "schema_version": {
        -            "const": "1.0.0",
        -            "default": "1.0.0",
        -            "type": "string"
        -          },
        -          "scope_boundary": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        -                "properties": {
        -                  "not_in_scope": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "produced": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "recommended_companions": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "type": "string"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "produced",
        -                  "not_in_scope"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tier": {
        -            "enum": [
        -              "free",
        -              "paid"
        -            ],
        -            "type": "string"
        -          },
        -          "tier_upgrade": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        -                "properties": {
        -                  "available_tiers": {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        -                      "properties": {
        -                        "billing": {
        -                          "enum": [
        -                            "one_off",
        -                            "monthly",
        -                            "annual"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "currency": {
        -                          "enum": [
        -                            "GBP",
        -                            "SGD",
        -                            "EUR",
        -                            "USD",
        -                            "CAD",
        -                            "AUD",
        -                            "NZD",
        -                            "MYR"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "display_name": {
        -                          "type": "string"
        -                        },
        -                        "price_local": {
        -                          "type": "number"
        -                        },
        -                        "tier_slug": {
        -                          "enum": [
        -                            "7_day_pass",
        -                            "solo",
        -                            "studio",
        -                            "practice"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "unlock_summary": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "tier_slug",
        -                        "display_name",
        -                        "price_local",
        -                        "currency",
        -                        "billing",
        -                        "unlock_summary"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "current_tier": {
        -                    "const": "free",
        -                    "default": "free",
        -                    "type": "string"
        -                  },
        -                  "pass_credit": {
        -                    "anyOf": [
        -                      {
        -                        "additionalProperties": false,
        -                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        -                        "properties": {
        -                          "amount_local": {
        -                            "type": "number"
        -                          },
        -                          "applies_to": {
        -                            "const": "solo_first_month",
        -                            "default": "solo_first_month",
        -                            "type": "string"
        -                          },
        -                          "currency": {
        -                            "type": "string"
        -                          },
        -                          "redeemable_until": {
        -                            "type": "string"
        -                          }
        -                        },
        -                        "required": [
        -                          "amount_local",
        -                          "currency",
        -                          "redeemable_until"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "pricing_url": {
        -                    "default": "https://civilquants.com/pricing",
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "available_tiers"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tos_url": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "upgrade_hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "warranty_disclaimer": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          }
        -        },
        -        "required": [
        -          "request_id",
        -          "issued_at",
        -          "tier"
        -        ],
        -        "type": "object"
        -      },
        -      "data": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Schema § 1.1 — the typed payload returned inside `MCPResponse[ComputeResult]`.\n\nFree-tier responses MUST omit `drawings` and `audit_trail` (the bridge\nenforces this); paid-tier responses populate both. `text_summary` is\nbounded to 2000 chars — keeps the LLM-facing summary token-cheap and\nforces longer narrative into BoQ row descriptions where it belongs.",
        -            "properties": {
        -              "assembly_slug": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "audit_trail": {
        -                "anyOf": [
        -                  {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.7 — paid-tier audit-trail entry.\n\nOne entry per BoQ row; `boq_row_index` ties to the row position in\n`ComputeResult.boq_rows`. `derivation` is the human-readable formula\nwalk-through; `formula` is the optional formal expression.",
        -                      "properties": {
        -                        "boq_row_index": {
        -                          "minimum": 0,
        -                          "type": "integer"
        -                        },
        -                        "derivation": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "formula": {
        -                          "anyOf": [
        -                            {
        -                              "type": "string"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ],
        -                          "default": null
        -                        },
        -                        "id": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "parameters_referenced": {
        -                          "items": {
        -                            "type": "string"
        -                          },
        -                          "type": "array"
        -                        }
        -                      },
        -                      "required": [
        -                        "id",
        -                        "boq_row_index",
        -                        "derivation"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "boq_rows": {
        -                "items": {
        -                  "additionalProperties": false,
        -                  "description": "Schema § 1.3 — a single bill row in the requested standard's format.\n\n`description` is the non-verbatim functional description per spec § 13.9 /\n§ 15 invariant — NEVER reproduces a standard's verbatim clause text.\n`rate` / `amount` ship null because rates are commodity data the customer\nowns; the engine's job is the measurement, not the pricing.",
        -                  "properties": {
        -                    "amount": {
        -                      "anyOf": [
        -                        {
        -                          "type": "number"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "attribution": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "audit_id": {
        -                      "anyOf": [
        -                        {
        -                          "type": "string"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "description": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "quantity": {
        -                      "minimum": 0,
        -                      "type": "number"
        -                    },
        -                    "rate": {
        -                      "anyOf": [
        -                        {
        -                          "type": "number"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "unit": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "work_section": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    }
        -                  },
        -                  "required": [
        -                    "work_section",
        -                    "description",
        -                    "quantity",
        -                    "unit",
        -                    "attribution"
        -                  ],
        -                  "type": "object"
        -                },
        -                "type": "array"
        -              },
        -              "drawings": {
        -                "anyOf": [
        -                  {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.6 — paid-tier drawing artefact pointer.\n\n`url` is an R2-signed URL; expiry is carried in `_meta.deliverables.expires_at`\non the envelope (not duplicated here). `layers` is DXF-only; PDF/SVG\ncallers omit it.",
        -                      "properties": {
        -                        "drawing_type": {
        -                          "enum": [
        -                            "section",
        -                            "plan",
        -                            "elevation",
        -                            "isometric",
        -                            "detail"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "format": {
        -                          "enum": [
        -                            "DXF",
        -                            "PDF",
        -                            "SVG"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "layers": {
        -                          "anyOf": [
        -                            {
        -                              "items": {
        -                                "type": "string"
        -                              },
        -                              "type": "array"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ],
        -                          "default": null
        -                        },
        -                        "scale": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "sheet_size": {
        -                          "enum": [
        -                            "A1",
        -                            "A2",
        -                            "A3",
        -                            "A4"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "url": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "drawing_type",
        -                        "format",
        -                        "url",
        -                        "sheet_size",
        -                        "scale"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "parameters_used": {
        -                "additionalProperties": false,
        -                "description": "Schema § 1.2 — the parameter snapshot the engine actually used.\n\nSplits user-supplied values from engine defaults so customers can see\nwhich numbers came from them and which the engine filled in. Every\ndefaulted parameter SHOULD have a corresponding entry in `assumptions`\n— the bridge layer enforces this when wrapping engine output.",
        -                "properties": {
        -                  "assumptions": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "engine_defaults": {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  "resolved_from_description": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "additionalProperties": false,
        -                          "description": "Schema § 1.2 — a parameter resolved by the forgiving-input layer.\n\nPopulated by the Track B-Forgiving Haiku-4.5 resolution pass; until that\nlayer lands, instances are constructed only by tests. `source` distinguishes\nthe resolution path so customers can audit which fields were inferred.",
        -                          "properties": {
        -                            "confidence": {
        -                              "anyOf": [
        -                                {
        -                                  "enum": [
        -                                    "high",
        -                                    "medium",
        -                                    "low"
        -                                  ],
        -                                  "type": "string"
        -                                },
        -                                {
        -                                  "type": "null"
        -                                }
        -                              ],
        -                              "default": null
        -                            },
        -                            "field_name": {
        -                              "minLength": 1,
        -                              "type": "string"
        -                            },
        -                            "resolved_value": {},
        -                            "source": {
        -                              "enum": [
        -                                "description_field",
        -                                "haiku_resolution",
        -                                "engine_default"
        -                              ],
        -                              "type": "string"
        -                            }
        -                          },
        -                          "required": [
        -                            "field_name",
        -                            "resolved_value",
        -                            "source"
        -                          ],
        -                          "type": "object"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "user_supplied": {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  }
        -                },
        -                "type": "object"
        -              },
        -              "standard": {
        -                "enum": [
        -                  "CESMM4",
        -                  "NRM2",
        -                  "SMM7",
        -                  "MMHW"
        -                ],
        -                "type": "string"
        -              },
        -              "text_summary": {
        -                "maxLength": 2000,
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "totals_summary": {
        -                "additionalProperties": false,
        -                "description": "Schema § 1.4 — totals_summary as a typed wrapper around the free-form dict.\n\nWire shape is a flat object (`{\"concrete_m3\": {...}, \"rebar_t\": {...}}`).\nWe model it as `RootModel`-equivalent via `model_config(extra=\"allow\")`\n+ a single `__root__`-style `entries` dict. Pydantic v2 recommends\n`RootModel` for free-form roots; using a wrapper class keeps the import\nsurface uniform with the rest of this module.",
        -                "properties": {
        -                  "entries": {
        -                    "additionalProperties": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.4 — single material/work-class total entry.",
        -                      "properties": {
        -                        "quantity": {
        -                          "minimum": 0,
        -                          "type": "number"
        -                        },
        -                        "unit": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "quantity",
        -                        "unit"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "object"
        -                  }
        -                },
        -                "type": "object"
        -              }
        -            },
        -            "required": [
        -              "assembly_slug",
        -              "standard",
        -              "parameters_used",
        -              "boq_rows",
        -              "totals_summary",
        -              "text_summary"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      },
        -      "error": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        -            "properties": {
        -              "code": {
        -                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        -                "enum": [
        -                  "RATE_LIMIT_EXCEEDED",
        -                  "TIER_INSUFFICIENT",
        -                  "INVALID_INPUT",
        -                  "SCHEMA_VERSION_MISMATCH",
        -                  "SCHEMA_INVARIANT_VIOLATION",
        -                  "UPSTREAM_TIMEOUT",
        -                  "BACKEND_FAILURE",
        -                  "IP_BLOCKED",
        -                  "RESOURCE_NOT_FOUND",
        -                  "RENDER_FAILURE",
        -                  "OCR_LOW_CONFIDENCE",
        -                  "MANUAL_REVIEW_REQUIRED",
        -                  "ACCEPTANCE_REQUIRED",
        -                  "INVALID_TOKEN"
        -                ],
        -                "type": "string"
        -              },
        -              "details": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "message": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "recoverable": {
        -                "type": "boolean"
        -              },
        -              "retry_after_seconds": {
        -                "anyOf": [
        -                  {
        -                    "minimum": 0,
        -                    "type": "integer"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              }
        -            },
        -            "required": [
        -              "code",
        -              "message",
        -              "recoverable"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      }
        -    },
        -    "required": [
        -      "_meta"
        -    ],
        -    "type": "object"
        -  },
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "_meta": {
        -        "additionalProperties": false,
        -        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        -        "properties": {
        -          "deliverables": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        -                "properties": {
        -                  "docx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "dxf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "expires_at": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  },
        -                  "pdf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "xlsx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "expires_at"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "document_id": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "issued_at": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "rate_limit_remaining": {
        -            "anyOf": [
        -              {
        -                "minimum": 0,
        -                "type": "integer"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "request_id": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "schema_version": {
        -            "const": "1.0.0",
        -            "default": "1.0.0",
        -            "type": "string"
        -          },
        -          "scope_boundary": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        -                "properties": {
        -                  "not_in_scope": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "produced": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "recommended_companions": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "type": "string"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "produced",
        -                  "not_in_scope"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tier": {
        -            "enum": [
        -              "free",
        -              "paid"
        -            ],
        -            "type": "string"
        -          },
        -          "tier_upgrade": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        -                "properties": {
        -                  "available_tiers": {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        -                      "properties": {
        -                        "billing": {
        -                          "enum": [
        -                            "one_off",
        -                            "monthly",
        -                            "annual"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "currency": {
        -                          "enum": [
        -                            "GBP",
        -                            "SGD",
        -                            "EUR",
        -                            "USD",
        -                            "CAD",
        -                            "AUD",
        -                            "NZD",
        -                            "MYR"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "display_name": {
        -                          "type": "string"
        -                        },
        -                        "price_local": {
        -                          "type": "number"
        -                        },
        -                        "tier_slug": {
        -                          "enum": [
        -                            "7_day_pass",
        -                            "solo",
        -                            "studio",
        -                            "practice"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "unlock_summary": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "tier_slug",
        -                        "display_name",
        -                        "price_local",
        -                        "currency",
        -                        "billing",
        -                        "unlock_summary"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "current_tier": {
        -                    "const": "free",
        -                    "default": "free",
        -                    "type": "string"
        -                  },
        -                  "pass_credit": {
        -                    "anyOf": [
        -                      {
        -                        "additionalProperties": false,
        -                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        -                        "properties": {
        -                          "amount_local": {
        -                            "type": "number"
        -                          },
        -                          "applies_to": {
        -                            "const": "solo_first_month",
        -                            "default": "solo_first_month",
        -                            "type": "string"
        -                          },
        -                          "currency": {
        -                            "type": "string"
        -                          },
        -                          "redeemable_until": {
        -                            "type": "string"
        -                          }
        -                        },
        -                        "required": [
        -                          "amount_local",
        -                          "currency",
        -                          "redeemable_until"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "pricing_url": {
        -                    "default": "https://civilquants.com/pricing",
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "available_tiers"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tos_url": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "upgrade_hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "warranty_disclaimer": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          }
        -        },
        -        "required": [
        -          "request_id",
        -          "issued_at",
        -          "tier"
        -        ],
        -        "type": "object"
        -      },
        -      "data": {
        -        "default": null,
        -        "title": "Data"
        -      },
        -      "error": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        -            "properties": {
        -              "code": {
        -                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        -                "enum": [
        -                  "RATE_LIMIT_EXCEEDED",
        -                  "TIER_INSUFFICIENT",
        -                  "INVALID_INPUT",
        -                  "SCHEMA_VERSION_MISMATCH",
        -                  "SCHEMA_INVARIANT_VIOLATION",
        -                  "UPSTREAM_TIMEOUT",
        -                  "BACKEND_FAILURE",
        -                  "IP_BLOCKED",
        -                  "RESOURCE_NOT_FOUND",
        -                  "RENDER_FAILURE",
        -                  "OCR_LOW_CONFIDENCE",
        -                  "MANUAL_REVIEW_REQUIRED",
        -                  "ACCEPTANCE_REQUIRED",
        -                  "INVALID_TOKEN"
        -                ],
        -                "type": "string"
        -              },
        -              "details": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "message": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "recoverable": {
        -                "type": "boolean"
        -              },
        -              "retry_after_seconds": {
        -                "anyOf": [
        -                  {
        -                    "minimum": 0,
        -                    "type": "integer"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              }
        -            },
        -            "required": [
        -              "code",
        -              "message",
        -              "recoverable"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      }
        -    },
        -    "required": [
        -      "_meta"
        -    ],
        -    "type": "object"
        -  }
        -]New value: +[
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "_meta": {
        +        "additionalProperties": false,
        +        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        +        "properties": {
        +          "deliverables": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        +                "properties": {
        +                  "docx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "dxf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "expires_at": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  },
        +                  "pdf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "xlsx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "expires_at"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "document_id": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "issued_at": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "rate_limit_remaining": {
        +            "anyOf": [
        +              {
        +                "minimum": 0,
        +                "type": "integer"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "request_id": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "schema_version": {
        +            "const": "1.0.0",
        +            "default": "1.0.0",
        +            "type": "string"
        +          },
        +          "scope_boundary": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        +                "properties": {
        +                  "not_in_scope": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "produced": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "recommended_companions": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "type": "string"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "produced",
        +                  "not_in_scope"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tier": {
        +            "enum": [
        +              "free",
        +              "paid"
        +            ],
        +            "type": "string"
        +          },
        +          "tier_upgrade": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        +                "properties": {
        +                  "available_tiers": {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        +                      "properties": {
        +                        "billing": {
        +                          "enum": [
        +                            "one_off",
        +                            "monthly",
        +                            "annual"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "currency": {
        +                          "enum": [
        +                            "GBP",
        +                            "SGD",
        +                            "EUR",
        +                            "USD",
        +                            "CAD",
        +                            "AUD",
        +                            "NZD",
        +                            "MYR"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "display_name": {
        +                          "type": "string"
        +                        },
        +                        "price_local": {
        +                          "type": "number"
        +                        },
        +                        "tier_slug": {
        +                          "enum": [
        +                            "7_day_pass",
        +                            "solo",
        +                            "studio",
        +                            "practice"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "unlock_summary": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "tier_slug",
        +                        "display_name",
        +                        "price_local",
        +                        "currency",
        +                        "billing",
        +                        "unlock_summary"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "current_tier": {
        +                    "const": "free",
        +                    "default": "free",
        +                    "type": "string"
        +                  },
        +                  "pass_credit": {
        +                    "anyOf": [
        +                      {
        +                        "additionalProperties": false,
        +                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        +                        "properties": {
        +                          "amount_local": {
        +                            "type": "number"
        +                          },
        +                          "applies_to": {
        +                            "const": "solo_first_month",
        +                            "default": "solo_first_month",
        +                            "type": "string"
        +                          },
        +                          "currency": {
        +                            "type": "string"
        +                          },
        +                          "redeemable_until": {
        +                            "type": "string"
        +                          }
        +                        },
        +                        "required": [
        +                          "amount_local",
        +                          "currency",
        +                          "redeemable_until"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "pricing_url": {
        +                    "default": "https://civilquants.com/pricing",
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "available_tiers"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tos_url": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "upgrade_hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "warranty_disclaimer": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          }
        +        },
        +        "required": [
        +          "request_id",
        +          "issued_at",
        +          "tier"
        +        ],
        +        "type": "object"
        +      },
        +      "data": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Schema § 1.1 — the typed payload returned inside `MCPResponse[ComputeResult]`.\n\nFree-tier responses MUST omit `drawings` and `audit_trail` (the bridge\nenforces this); paid-tier responses populate both. `text_summary` is\nbounded to 2000 chars — keeps the LLM-facing summary token-cheap and\nforces longer narrative into BoQ row descriptions where it belongs.\n`warnings` is the non-fatal geometry advisory list (both tiers).",
        +            "properties": {
        +              "assembly_slug": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "audit_trail": {
        +                "anyOf": [
        +                  {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.7 — paid-tier audit-trail entry.\n\nOne entry per BoQ row; `boq_row_index` ties to the row position in\n`ComputeResult.boq_rows`. `derivation` is the human-readable formula\nwalk-through; `formula` is the optional formal expression.",
        +                      "properties": {
        +                        "boq_row_index": {
        +                          "minimum": 0,
        +                          "type": "integer"
        +                        },
        +                        "derivation": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "formula": {
        +                          "anyOf": [
        +                            {
        +                              "type": "string"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ],
        +                          "default": null
        +                        },
        +                        "id": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "parameters_referenced": {
        +                          "items": {
        +                            "type": "string"
        +                          },
        +                          "type": "array"
        +                        }
        +                      },
        +                      "required": [
        +                        "id",
        +                        "boq_row_index",
        +                        "derivation"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "boq_rows": {
        +                "items": {
        +                  "additionalProperties": false,
        +                  "description": "Schema § 1.3 — a single bill row in the requested standard's format.\n\n`description` is the non-verbatim functional description per spec § 13.9 /\n§ 15 invariant — NEVER reproduces a standard's verbatim clause text.\n`rate` / `amount` ship null because rates are commodity data the customer\nowns; the engine's job is the measurement, not the pricing.",
        +                  "properties": {
        +                    "amount": {
        +                      "anyOf": [
        +                        {
        +                          "type": "number"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "attribution": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "audit_id": {
        +                      "anyOf": [
        +                        {
        +                          "type": "string"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "description": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "quantity": {
        +                      "minimum": 0,
        +                      "type": "number"
        +                    },
        +                    "rate": {
        +                      "anyOf": [
        +                        {
        +                          "type": "number"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "unit": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "work_section": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    }
        +                  },
        +                  "required": [
        +                    "work_section",
        +                    "description",
        +                    "quantity",
        +                    "unit",
        +                    "attribution"
        +                  ],
        +                  "type": "object"
        +                },
        +                "type": "array"
        +              },
        +              "drawings": {
        +                "anyOf": [
        +                  {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.6 — paid-tier drawing artefact pointer.\n\n`url` is an R2-signed URL; expiry is carried in `_meta.deliverables.expires_at`\non the envelope (not duplicated here). `layers` is DXF-only; PDF/SVG\ncallers omit it.",
        +                      "properties": {
        +                        "drawing_type": {
        +                          "enum": [
        +                            "section",
        +                            "plan",
        +                            "elevation",
        +                            "isometric",
        +                            "detail"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "format": {
        +                          "enum": [
        +                            "DXF",
        +                            "PDF",
        +                            "SVG"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "layers": {
        +                          "anyOf": [
        +                            {
        +                              "items": {
        +                                "type": "string"
        +                              },
        +                              "type": "array"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ],
        +                          "default": null
        +                        },
        +                        "scale": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "sheet_size": {
        +                          "enum": [
        +                            "A1",
        +                            "A2",
        +                            "A3",
        +                            "A4"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "url": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "drawing_type",
        +                        "format",
        +                        "url",
        +                        "sheet_size",
        +                        "scale"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "parameters_used": {
        +                "additionalProperties": false,
        +                "description": "Schema § 1.2 — the parameter snapshot the engine actually used.\n\nSplits user-supplied values from engine defaults so customers can see\nwhich numbers came from them and which the engine filled in. Every\ndefaulted parameter SHOULD have a corresponding entry in `assumptions`\n— the bridge layer enforces this when wrapping engine output.",
        +                "properties": {
        +                  "assumptions": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "engine_defaults": {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  "resolved_from_description": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "additionalProperties": false,
        +                          "description": "Schema § 1.2 — a parameter resolved by the forgiving-input layer.\n\nPopulated by the Track B-Forgiving Haiku-4.5 resolution pass; until that\nlayer lands, instances are constructed only by tests. `source` distinguishes\nthe resolution path so customers can audit which fields were inferred.",
        +                          "properties": {
        +                            "confidence": {
        +                              "anyOf": [
        +                                {
        +                                  "enum": [
        +                                    "high",
        +                                    "medium",
        +                                    "low"
        +                                  ],
        +                                  "type": "string"
        +                                },
        +                                {
        +                                  "type": "null"
        +                                }
        +                              ],
        +                              "default": null
        +                            },
        +                            "field_name": {
        +                              "minLength": 1,
        +                              "type": "string"
        +                            },
        +                            "resolved_value": {},
        +                            "source": {
        +                              "enum": [
        +                                "description_field",
        +                                "haiku_resolution",
        +                                "engine_default"
        +                              ],
        +                              "type": "string"
        +                            }
        +                          },
        +                          "required": [
        +                            "field_name",
        +                            "resolved_value",
        +                            "source"
        +                          ],
        +                          "type": "object"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "user_supplied": {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  }
        +                },
        +                "type": "object"
        +              },
        +              "standard": {
        +                "enum": [
        +                  "CESMM4",
        +                  "NRM2",
        +                  "SMM7",
        +                  "MMHW"
        +                ],
        +                "type": "string"
        +              },
        +              "text_summary": {
        +                "maxLength": 2000,
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "totals_summary": {
        +                "additionalProperties": false,
        +                "description": "Schema § 1.4 — totals_summary as a typed wrapper around the free-form dict.\n\nWire shape is a flat object (`{\"concrete_m3\": {...}, \"rebar_t\": {...}}`).\nWe model it as `RootModel`-equivalent via `model_config(extra=\"allow\")`\n+ a single `__root__`-style `entries` dict. Pydantic v2 recommends\n`RootModel` for free-form roots; using a wrapper class keeps the import\nsurface uniform with the rest of this module.",
        +                "properties": {
        +                  "entries": {
        +                    "additionalProperties": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.4 — single material/work-class total entry.",
        +                      "properties": {
        +                        "quantity": {
        +                          "minimum": 0,
        +                          "type": "number"
        +                        },
        +                        "unit": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "quantity",
        +                        "unit"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "object"
        +                  }
        +                },
        +                "type": "object"
        +              },
        +              "warnings": {
        +                "items": {
        +                  "additionalProperties": false,
        +                  "description": "Schema § 1.8 — a non-fatal geometry advisory (56th-fire T2).\n\nThe wire projection of the engine's `core.GeometryWarning`. Advisory only:\na warning NEVER changes a measured quantity — it flags geometry that is\nvalid but likely a mistake (e.g. a stale dependent-height default). Present\non BOTH tiers — a correctness/safety signal, not a paid feature.",
        +                  "properties": {
        +                    "affected_params": {
        +                      "items": {
        +                        "type": "string"
        +                      },
        +                      "type": "array"
        +                    },
        +                    "code": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "detail": {
        +                      "additionalProperties": {
        +                        "type": "number"
        +                      },
        +                      "type": "object"
        +                    },
        +                    "message": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "severity": {
        +                      "enum": [
        +                        "info",
        +                        "advisory",
        +                        "caution"
        +                      ],
        +                      "type": "string"
        +                    }
        +                  },
        +                  "required": [
        +                    "code",
        +                    "severity",
        +                    "message"
        +                  ],
        +                  "type": "object"
        +                },
        +                "type": "array"
        +              }
        +            },
        +            "required": [
        +              "assembly_slug",
        +              "standard",
        +              "parameters_used",
        +              "boq_rows",
        +              "totals_summary",
        +              "text_summary"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      },
        +      "error": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        +            "properties": {
        +              "code": {
        +                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        +                "enum": [
        +                  "RATE_LIMIT_EXCEEDED",
        +                  "TIER_INSUFFICIENT",
        +                  "INVALID_INPUT",
        +                  "SCHEMA_VERSION_MISMATCH",
        +                  "SCHEMA_INVARIANT_VIOLATION",
        +                  "UPSTREAM_TIMEOUT",
        +                  "BACKEND_FAILURE",
        +                  "IP_BLOCKED",
        +                  "RESOURCE_NOT_FOUND",
        +                  "RENDER_FAILURE",
        +                  "OCR_LOW_CONFIDENCE",
        +                  "MANUAL_REVIEW_REQUIRED",
        +                  "ACCEPTANCE_REQUIRED",
        +                  "INVALID_TOKEN"
        +                ],
        +                "type": "string"
        +              },
        +              "details": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "message": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "recoverable": {
        +                "type": "boolean"
        +              },
        +              "retry_after_seconds": {
        +                "anyOf": [
        +                  {
        +                    "minimum": 0,
        +                    "type": "integer"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              }
        +            },
        +            "required": [
        +              "code",
        +              "message",
        +              "recoverable"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      }
        +    },
        +    "required": [
        +      "_meta"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "_meta": {
        +        "additionalProperties": false,
        +        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        +        "properties": {
        +          "deliverables": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        +                "properties": {
        +                  "docx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "dxf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "expires_at": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  },
        +                  "pdf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "xlsx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "expires_at"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "document_id": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "issued_at": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "rate_limit_remaining": {
        +            "anyOf": [
        +              {
        +                "minimum": 0,
        +                "type": "integer"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "request_id": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "schema_version": {
        +            "const": "1.0.0",
        +            "default": "1.0.0",
        +            "type": "string"
        +          },
        +          "scope_boundary": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        +                "properties": {
        +                  "not_in_scope": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "produced": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "recommended_companions": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "type": "string"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "produced",
        +                  "not_in_scope"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tier": {
        +            "enum": [
        +              "free",
        +              "paid"
        +            ],
        +            "type": "string"
        +          },
        +          "tier_upgrade": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        +                "properties": {
        +                  "available_tiers": {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        +                      "properties": {
        +                        "billing": {
        +                          "enum": [
        +                            "one_off",
        +                            "monthly",
        +                            "annual"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "currency": {
        +                          "enum": [
        +                            "GBP",
        +                            "SGD",
        +                            "EUR",
        +                            "USD",
        +                            "CAD",
        +                            "AUD",
        +                            "NZD",
        +                            "MYR"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "display_name": {
        +                          "type": "string"
        +                        },
        +                        "price_local": {
        +                          "type": "number"
        +                        },
        +                        "tier_slug": {
        +                          "enum": [
        +                            "7_day_pass",
        +                            "solo",
        +                            "studio",
        +                            "practice"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "unlock_summary": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "tier_slug",
        +                        "display_name",
        +                        "price_local",
        +                        "currency",
        +                        "billing",
        +                        "unlock_summary"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "current_tier": {
        +                    "const": "free",
        +                    "default": "free",
        +                    "type": "string"
        +                  },
        +                  "pass_credit": {
        +                    "anyOf": [
        +                      {
        +                        "additionalProperties": false,
        +                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        +                        "properties": {
        +                          "amount_local": {
        +                            "type": "number"
        +                          },
        +                          "applies_to": {
        +                            "const": "solo_first_month",
        +                            "default": "solo_first_month",
        +                            "type": "string"
        +                          },
        +                          "currency": {
        +                            "type": "string"
        +                          },
        +                          "redeemable_until": {
        +                            "type": "string"
        +                          }
        +                        },
        +                        "required": [
        +                          "amount_local",
        +                          "currency",
        +                          "redeemable_until"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "pricing_url": {
        +                    "default": "https://civilquants.com/pricing",
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "available_tiers"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tos_url": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "upgrade_hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "warranty_disclaimer": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          }
        +        },
        +        "required": [
        +          "request_id",
        +          "issued_at",
        +          "tier"
        +        ],
        +        "type": "object"
        +      },
        +      "data": {
        +        "default": null,
        +        "title": "Data"
        +      },
        +      "error": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        +            "properties": {
        +              "code": {
        +                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        +                "enum": [
        +                  "RATE_LIMIT_EXCEEDED",
        +                  "TIER_INSUFFICIENT",
        +                  "INVALID_INPUT",
        +                  "SCHEMA_VERSION_MISMATCH",
        +                  "SCHEMA_INVARIANT_VIOLATION",
        +                  "UPSTREAM_TIMEOUT",
        +                  "BACKEND_FAILURE",
        +                  "IP_BLOCKED",
        +                  "RESOURCE_NOT_FOUND",
        +                  "RENDER_FAILURE",
        +                  "OCR_LOW_CONFIDENCE",
        +                  "MANUAL_REVIEW_REQUIRED",
        +                  "ACCEPTANCE_REQUIRED",
        +                  "INVALID_TOKEN"
        +                ],
        +                "type": "string"
        +              },
        +              "details": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "message": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "recoverable": {
        +                "type": "boolean"
        +              },
        +              "retry_after_seconds": {
        +                "anyOf": [
        +                  {
        +                    "minimum": 0,
        +                    "type": "integer"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              }
        +            },
        +            "required": [
        +              "code",
        +              "message",
        +              "recoverable"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      }
        +    },
        +    "required": [
        +      "_meta"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedcompute_flexible_pavement1 field changed
      • changedOutput schema / properties / result / anyOf
        Previous value: -[
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "_meta": {
        -        "additionalProperties": false,
        -        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        -        "properties": {
        -          "deliverables": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        -                "properties": {
        -                  "docx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "dxf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "expires_at": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  },
        -                  "pdf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "xlsx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "expires_at"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "document_id": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "issued_at": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "rate_limit_remaining": {
        -            "anyOf": [
        -              {
        -                "minimum": 0,
        -                "type": "integer"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "request_id": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "schema_version": {
        -            "const": "1.0.0",
        -            "default": "1.0.0",
        -            "type": "string"
        -          },
        -          "scope_boundary": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        -                "properties": {
        -                  "not_in_scope": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "produced": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "recommended_companions": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "type": "string"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "produced",
        -                  "not_in_scope"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tier": {
        -            "enum": [
        -              "free",
        -              "paid"
        -            ],
        -            "type": "string"
        -          },
        -          "tier_upgrade": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        -                "properties": {
        -                  "available_tiers": {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        -                      "properties": {
        -                        "billing": {
        -                          "enum": [
        -                            "one_off",
        -                            "monthly",
        -                            "annual"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "currency": {
        -                          "enum": [
        -                            "GBP",
        -                            "SGD",
        -                            "EUR",
        -                            "USD",
        -                            "CAD",
        -                            "AUD",
        -                            "NZD",
        -                            "MYR"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "display_name": {
        -                          "type": "string"
        -                        },
        -                        "price_local": {
        -                          "type": "number"
        -                        },
        -                        "tier_slug": {
        -                          "enum": [
        -                            "7_day_pass",
        -                            "solo",
        -                            "studio",
        -                            "practice"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "unlock_summary": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "tier_slug",
        -                        "display_name",
        -                        "price_local",
        -                        "currency",
        -                        "billing",
        -                        "unlock_summary"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "current_tier": {
        -                    "const": "free",
        -                    "default": "free",
        -                    "type": "string"
        -                  },
        -                  "pass_credit": {
        -                    "anyOf": [
        -                      {
        -                        "additionalProperties": false,
        -                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        -                        "properties": {
        -                          "amount_local": {
        -                            "type": "number"
        -                          },
        -                          "applies_to": {
        -                            "const": "solo_first_month",
        -                            "default": "solo_first_month",
        -                            "type": "string"
        -                          },
        -                          "currency": {
        -                            "type": "string"
        -                          },
        -                          "redeemable_until": {
        -                            "type": "string"
        -                          }
        -                        },
        -                        "required": [
        -                          "amount_local",
        -                          "currency",
        -                          "redeemable_until"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "pricing_url": {
        -                    "default": "https://civilquants.com/pricing",
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "available_tiers"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tos_url": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "upgrade_hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "warranty_disclaimer": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          }
        -        },
        -        "required": [
        -          "request_id",
        -          "issued_at",
        -          "tier"
        -        ],
        -        "type": "object"
        -      },
        -      "data": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Schema § 1.1 — the typed payload returned inside `MCPResponse[ComputeResult]`.\n\nFree-tier responses MUST omit `drawings` and `audit_trail` (the bridge\nenforces this); paid-tier responses populate both. `text_summary` is\nbounded to 2000 chars — keeps the LLM-facing summary token-cheap and\nforces longer narrative into BoQ row descriptions where it belongs.",
        -            "properties": {
        -              "assembly_slug": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "audit_trail": {
        -                "anyOf": [
        -                  {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.7 — paid-tier audit-trail entry.\n\nOne entry per BoQ row; `boq_row_index` ties to the row position in\n`ComputeResult.boq_rows`. `derivation` is the human-readable formula\nwalk-through; `formula` is the optional formal expression.",
        -                      "properties": {
        -                        "boq_row_index": {
        -                          "minimum": 0,
        -                          "type": "integer"
        -                        },
        -                        "derivation": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "formula": {
        -                          "anyOf": [
        -                            {
        -                              "type": "string"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ],
        -                          "default": null
        -                        },
        -                        "id": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "parameters_referenced": {
        -                          "items": {
        -                            "type": "string"
        -                          },
        -                          "type": "array"
        -                        }
        -                      },
        -                      "required": [
        -                        "id",
        -                        "boq_row_index",
        -                        "derivation"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "boq_rows": {
        -                "items": {
        -                  "additionalProperties": false,
        -                  "description": "Schema § 1.3 — a single bill row in the requested standard's format.\n\n`description` is the non-verbatim functional description per spec § 13.9 /\n§ 15 invariant — NEVER reproduces a standard's verbatim clause text.\n`rate` / `amount` ship null because rates are commodity data the customer\nowns; the engine's job is the measurement, not the pricing.",
        -                  "properties": {
        -                    "amount": {
        -                      "anyOf": [
        -                        {
        -                          "type": "number"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "attribution": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "audit_id": {
        -                      "anyOf": [
        -                        {
        -                          "type": "string"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "description": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "quantity": {
        -                      "minimum": 0,
        -                      "type": "number"
        -                    },
        -                    "rate": {
        -                      "anyOf": [
        -                        {
        -                          "type": "number"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "unit": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "work_section": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    }
        -                  },
        -                  "required": [
        -                    "work_section",
        -                    "description",
        -                    "quantity",
        -                    "unit",
        -                    "attribution"
        -                  ],
        -                  "type": "object"
        -                },
        -                "type": "array"
        -              },
        -              "drawings": {
        -                "anyOf": [
        -                  {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.6 — paid-tier drawing artefact pointer.\n\n`url` is an R2-signed URL; expiry is carried in `_meta.deliverables.expires_at`\non the envelope (not duplicated here). `layers` is DXF-only; PDF/SVG\ncallers omit it.",
        -                      "properties": {
        -                        "drawing_type": {
        -                          "enum": [
        -                            "section",
        -                            "plan",
        -                            "elevation",
        -                            "isometric",
        -                            "detail"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "format": {
        -                          "enum": [
        -                            "DXF",
        -                            "PDF",
        -                            "SVG"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "layers": {
        -                          "anyOf": [
        -                            {
        -                              "items": {
        -                                "type": "string"
        -                              },
        -                              "type": "array"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ],
        -                          "default": null
        -                        },
        -                        "scale": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "sheet_size": {
        -                          "enum": [
        -                            "A1",
        -                            "A2",
        -                            "A3",
        -                            "A4"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "url": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "drawing_type",
        -                        "format",
        -                        "url",
        -                        "sheet_size",
        -                        "scale"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "parameters_used": {
        -                "additionalProperties": false,
        -                "description": "Schema § 1.2 — the parameter snapshot the engine actually used.\n\nSplits user-supplied values from engine defaults so customers can see\nwhich numbers came from them and which the engine filled in. Every\ndefaulted parameter SHOULD have a corresponding entry in `assumptions`\n— the bridge layer enforces this when wrapping engine output.",
        -                "properties": {
        -                  "assumptions": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "engine_defaults": {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  "resolved_from_description": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "additionalProperties": false,
        -                          "description": "Schema § 1.2 — a parameter resolved by the forgiving-input layer.\n\nPopulated by the Track B-Forgiving Haiku-4.5 resolution pass; until that\nlayer lands, instances are constructed only by tests. `source` distinguishes\nthe resolution path so customers can audit which fields were inferred.",
        -                          "properties": {
        -                            "confidence": {
        -                              "anyOf": [
        -                                {
        -                                  "enum": [
        -                                    "high",
        -                                    "medium",
        -                                    "low"
        -                                  ],
        -                                  "type": "string"
        -                                },
        -                                {
        -                                  "type": "null"
        -                                }
        -                              ],
        -                              "default": null
        -                            },
        -                            "field_name": {
        -                              "minLength": 1,
        -                              "type": "string"
        -                            },
        -                            "resolved_value": {},
        -                            "source": {
        -                              "enum": [
        -                                "description_field",
        -                                "haiku_resolution",
        -                                "engine_default"
        -                              ],
        -                              "type": "string"
        -                            }
        -                          },
        -                          "required": [
        -                            "field_name",
        -                            "resolved_value",
        -                            "source"
        -                          ],
        -                          "type": "object"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "user_supplied": {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  }
        -                },
        -                "type": "object"
        -              },
        -              "standard": {
        -                "enum": [
        -                  "CESMM4",
        -                  "NRM2",
        -                  "SMM7",
        -                  "MMHW"
        -                ],
        -                "type": "string"
        -              },
        -              "text_summary": {
        -                "maxLength": 2000,
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "totals_summary": {
        -                "additionalProperties": false,
        -                "description": "Schema § 1.4 — totals_summary as a typed wrapper around the free-form dict.\n\nWire shape is a flat object (`{\"concrete_m3\": {...}, \"rebar_t\": {...}}`).\nWe model it as `RootModel`-equivalent via `model_config(extra=\"allow\")`\n+ a single `__root__`-style `entries` dict. Pydantic v2 recommends\n`RootModel` for free-form roots; using a wrapper class keeps the import\nsurface uniform with the rest of this module.",
        -                "properties": {
        -                  "entries": {
        -                    "additionalProperties": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.4 — single material/work-class total entry.",
        -                      "properties": {
        -                        "quantity": {
        -                          "minimum": 0,
        -                          "type": "number"
        -                        },
        -                        "unit": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "quantity",
        -                        "unit"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "object"
        -                  }
        -                },
        -                "type": "object"
        -              }
        -            },
        -            "required": [
        -              "assembly_slug",
        -              "standard",
        -              "parameters_used",
        -              "boq_rows",
        -              "totals_summary",
        -              "text_summary"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      },
        -      "error": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        -            "properties": {
        -              "code": {
        -                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        -                "enum": [
        -                  "RATE_LIMIT_EXCEEDED",
        -                  "TIER_INSUFFICIENT",
        -                  "INVALID_INPUT",
        -                  "SCHEMA_VERSION_MISMATCH",
        -                  "SCHEMA_INVARIANT_VIOLATION",
        -                  "UPSTREAM_TIMEOUT",
        -                  "BACKEND_FAILURE",
        -                  "IP_BLOCKED",
        -                  "RESOURCE_NOT_FOUND",
        -                  "RENDER_FAILURE",
        -                  "OCR_LOW_CONFIDENCE",
        -                  "MANUAL_REVIEW_REQUIRED",
        -                  "ACCEPTANCE_REQUIRED",
        -                  "INVALID_TOKEN"
        -                ],
        -                "type": "string"
        -              },
        -              "details": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "message": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "recoverable": {
        -                "type": "boolean"
        -              },
        -              "retry_after_seconds": {
        -                "anyOf": [
        -                  {
        -                    "minimum": 0,
        -                    "type": "integer"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              }
        -            },
        -            "required": [
        -              "code",
        -              "message",
        -              "recoverable"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      }
        -    },
        -    "required": [
        -      "_meta"
        -    ],
        -    "type": "object"
        -  },
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "_meta": {
        -        "additionalProperties": false,
        -        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        -        "properties": {
        -          "deliverables": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        -                "properties": {
        -                  "docx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "dxf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "expires_at": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  },
        -                  "pdf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "xlsx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "expires_at"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "document_id": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "issued_at": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "rate_limit_remaining": {
        -            "anyOf": [
        -              {
        -                "minimum": 0,
        -                "type": "integer"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "request_id": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "schema_version": {
        -            "const": "1.0.0",
        -            "default": "1.0.0",
        -            "type": "string"
        -          },
        -          "scope_boundary": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        -                "properties": {
        -                  "not_in_scope": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "produced": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "recommended_companions": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "type": "string"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "produced",
        -                  "not_in_scope"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tier": {
        -            "enum": [
        -              "free",
        -              "paid"
        -            ],
        -            "type": "string"
        -          },
        -          "tier_upgrade": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        -                "properties": {
        -                  "available_tiers": {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        -                      "properties": {
        -                        "billing": {
        -                          "enum": [
        -                            "one_off",
        -                            "monthly",
        -                            "annual"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "currency": {
        -                          "enum": [
        -                            "GBP",
        -                            "SGD",
        -                            "EUR",
        -                            "USD",
        -                            "CAD",
        -                            "AUD",
        -                            "NZD",
        -                            "MYR"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "display_name": {
        -                          "type": "string"
        -                        },
        -                        "price_local": {
        -                          "type": "number"
        -                        },
        -                        "tier_slug": {
        -                          "enum": [
        -                            "7_day_pass",
        -                            "solo",
        -                            "studio",
        -                            "practice"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "unlock_summary": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "tier_slug",
        -                        "display_name",
        -                        "price_local",
        -                        "currency",
        -                        "billing",
        -                        "unlock_summary"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "current_tier": {
        -                    "const": "free",
        -                    "default": "free",
        -                    "type": "string"
        -                  },
        -                  "pass_credit": {
        -                    "anyOf": [
        -                      {
        -                        "additionalProperties": false,
        -                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        -                        "properties": {
        -                          "amount_local": {
        -                            "type": "number"
        -                          },
        -                          "applies_to": {
        -                            "const": "solo_first_month",
        -                            "default": "solo_first_month",
        -                            "type": "string"
        -                          },
        -                          "currency": {
        -                            "type": "string"
        -                          },
        -                          "redeemable_until": {
        -                            "type": "string"
        -                          }
        -                        },
        -                        "required": [
        -                          "amount_local",
        -                          "currency",
        -                          "redeemable_until"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "pricing_url": {
        -                    "default": "https://civilquants.com/pricing",
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "available_tiers"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tos_url": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "upgrade_hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "warranty_disclaimer": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          }
        -        },
        -        "required": [
        -          "request_id",
        -          "issued_at",
        -          "tier"
        -        ],
        -        "type": "object"
        -      },
        -      "data": {
        -        "default": null,
        -        "title": "Data"
        -      },
        -      "error": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        -            "properties": {
        -              "code": {
        -                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        -                "enum": [
        -                  "RATE_LIMIT_EXCEEDED",
        -                  "TIER_INSUFFICIENT",
        -                  "INVALID_INPUT",
        -                  "SCHEMA_VERSION_MISMATCH",
        -                  "SCHEMA_INVARIANT_VIOLATION",
        -                  "UPSTREAM_TIMEOUT",
        -                  "BACKEND_FAILURE",
        -                  "IP_BLOCKED",
        -                  "RESOURCE_NOT_FOUND",
        -                  "RENDER_FAILURE",
        -                  "OCR_LOW_CONFIDENCE",
        -                  "MANUAL_REVIEW_REQUIRED",
        -                  "ACCEPTANCE_REQUIRED",
        -                  "INVALID_TOKEN"
        -                ],
        -                "type": "string"
        -              },
        -              "details": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "message": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "recoverable": {
        -                "type": "boolean"
        -              },
        -              "retry_after_seconds": {
        -                "anyOf": [
        -                  {
        -                    "minimum": 0,
        -                    "type": "integer"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              }
        -            },
        -            "required": [
        -              "code",
        -              "message",
        -              "recoverable"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      }
        -    },
        -    "required": [
        -      "_meta"
        -    ],
        -    "type": "object"
        -  }
        -]New value: +[
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "_meta": {
        +        "additionalProperties": false,
        +        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        +        "properties": {
        +          "deliverables": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        +                "properties": {
        +                  "docx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "dxf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "expires_at": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  },
        +                  "pdf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "xlsx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "expires_at"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "document_id": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "issued_at": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "rate_limit_remaining": {
        +            "anyOf": [
        +              {
        +                "minimum": 0,
        +                "type": "integer"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "request_id": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "schema_version": {
        +            "const": "1.0.0",
        +            "default": "1.0.0",
        +            "type": "string"
        +          },
        +          "scope_boundary": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        +                "properties": {
        +                  "not_in_scope": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "produced": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "recommended_companions": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "type": "string"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "produced",
        +                  "not_in_scope"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tier": {
        +            "enum": [
        +              "free",
        +              "paid"
        +            ],
        +            "type": "string"
        +          },
        +          "tier_upgrade": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        +                "properties": {
        +                  "available_tiers": {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        +                      "properties": {
        +                        "billing": {
        +                          "enum": [
        +                            "one_off",
        +                            "monthly",
        +                            "annual"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "currency": {
        +                          "enum": [
        +                            "GBP",
        +                            "SGD",
        +                            "EUR",
        +                            "USD",
        +                            "CAD",
        +                            "AUD",
        +                            "NZD",
        +                            "MYR"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "display_name": {
        +                          "type": "string"
        +                        },
        +                        "price_local": {
        +                          "type": "number"
        +                        },
        +                        "tier_slug": {
        +                          "enum": [
        +                            "7_day_pass",
        +                            "solo",
        +                            "studio",
        +                            "practice"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "unlock_summary": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "tier_slug",
        +                        "display_name",
        +                        "price_local",
        +                        "currency",
        +                        "billing",
        +                        "unlock_summary"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "current_tier": {
        +                    "const": "free",
        +                    "default": "free",
        +                    "type": "string"
        +                  },
        +                  "pass_credit": {
        +                    "anyOf": [
        +                      {
        +                        "additionalProperties": false,
        +                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        +                        "properties": {
        +                          "amount_local": {
        +                            "type": "number"
        +                          },
        +                          "applies_to": {
        +                            "const": "solo_first_month",
        +                            "default": "solo_first_month",
        +                            "type": "string"
        +                          },
        +                          "currency": {
        +                            "type": "string"
        +                          },
        +                          "redeemable_until": {
        +                            "type": "string"
        +                          }
        +                        },
        +                        "required": [
        +                          "amount_local",
        +                          "currency",
        +                          "redeemable_until"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "pricing_url": {
        +                    "default": "https://civilquants.com/pricing",
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "available_tiers"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tos_url": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "upgrade_hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "warranty_disclaimer": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          }
        +        },
        +        "required": [
        +          "request_id",
        +          "issued_at",
        +          "tier"
        +        ],
        +        "type": "object"
        +      },
        +      "data": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Schema § 1.1 — the typed payload returned inside `MCPResponse[ComputeResult]`.\n\nFree-tier responses MUST omit `drawings` and `audit_trail` (the bridge\nenforces this); paid-tier responses populate both. `text_summary` is\nbounded to 2000 chars — keeps the LLM-facing summary token-cheap and\nforces longer narrative into BoQ row descriptions where it belongs.\n`warnings` is the non-fatal geometry advisory list (both tiers).",
        +            "properties": {
        +              "assembly_slug": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "audit_trail": {
        +                "anyOf": [
        +                  {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.7 — paid-tier audit-trail entry.\n\nOne entry per BoQ row; `boq_row_index` ties to the row position in\n`ComputeResult.boq_rows`. `derivation` is the human-readable formula\nwalk-through; `formula` is the optional formal expression.",
        +                      "properties": {
        +                        "boq_row_index": {
        +                          "minimum": 0,
        +                          "type": "integer"
        +                        },
        +                        "derivation": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "formula": {
        +                          "anyOf": [
        +                            {
        +                              "type": "string"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ],
        +                          "default": null
        +                        },
        +                        "id": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "parameters_referenced": {
        +                          "items": {
        +                            "type": "string"
        +                          },
        +                          "type": "array"
        +                        }
        +                      },
        +                      "required": [
        +                        "id",
        +                        "boq_row_index",
        +                        "derivation"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "boq_rows": {
        +                "items": {
        +                  "additionalProperties": false,
        +                  "description": "Schema § 1.3 — a single bill row in the requested standard's format.\n\n`description` is the non-verbatim functional description per spec § 13.9 /\n§ 15 invariant — NEVER reproduces a standard's verbatim clause text.\n`rate` / `amount` ship null because rates are commodity data the customer\nowns; the engine's job is the measurement, not the pricing.",
        +                  "properties": {
        +                    "amount": {
        +                      "anyOf": [
        +                        {
        +                          "type": "number"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "attribution": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "audit_id": {
        +                      "anyOf": [
        +                        {
        +                          "type": "string"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "description": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "quantity": {
        +                      "minimum": 0,
        +                      "type": "number"
        +                    },
        +                    "rate": {
        +                      "anyOf": [
        +                        {
        +                          "type": "number"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "unit": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "work_section": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    }
        +                  },
        +                  "required": [
        +                    "work_section",
        +                    "description",
        +                    "quantity",
        +                    "unit",
        +                    "attribution"
        +                  ],
        +                  "type": "object"
        +                },
        +                "type": "array"
        +              },
        +              "drawings": {
        +                "anyOf": [
        +                  {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.6 — paid-tier drawing artefact pointer.\n\n`url` is an R2-signed URL; expiry is carried in `_meta.deliverables.expires_at`\non the envelope (not duplicated here). `layers` is DXF-only; PDF/SVG\ncallers omit it.",
        +                      "properties": {
        +                        "drawing_type": {
        +                          "enum": [
        +                            "section",
        +                            "plan",
        +                            "elevation",
        +                            "isometric",
        +                            "detail"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "format": {
        +                          "enum": [
        +                            "DXF",
        +                            "PDF",
        +                            "SVG"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "layers": {
        +                          "anyOf": [
        +                            {
        +                              "items": {
        +                                "type": "string"
        +                              },
        +                              "type": "array"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ],
        +                          "default": null
        +                        },
        +                        "scale": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "sheet_size": {
        +                          "enum": [
        +                            "A1",
        +                            "A2",
        +                            "A3",
        +                            "A4"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "url": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "drawing_type",
        +                        "format",
        +                        "url",
        +                        "sheet_size",
        +                        "scale"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "parameters_used": {
        +                "additionalProperties": false,
        +                "description": "Schema § 1.2 — the parameter snapshot the engine actually used.\n\nSplits user-supplied values from engine defaults so customers can see\nwhich numbers came from them and which the engine filled in. Every\ndefaulted parameter SHOULD have a corresponding entry in `assumptions`\n— the bridge layer enforces this when wrapping engine output.",
        +                "properties": {
        +                  "assumptions": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "engine_defaults": {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  "resolved_from_description": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "additionalProperties": false,
        +                          "description": "Schema § 1.2 — a parameter resolved by the forgiving-input layer.\n\nPopulated by the Track B-Forgiving Haiku-4.5 resolution pass; until that\nlayer lands, instances are constructed only by tests. `source` distinguishes\nthe resolution path so customers can audit which fields were inferred.",
        +                          "properties": {
        +                            "confidence": {
        +                              "anyOf": [
        +                                {
        +                                  "enum": [
        +                                    "high",
        +                                    "medium",
        +                                    "low"
        +                                  ],
        +                                  "type": "string"
        +                                },
        +                                {
        +                                  "type": "null"
        +                                }
        +                              ],
        +                              "default": null
        +                            },
        +                            "field_name": {
        +                              "minLength": 1,
        +                              "type": "string"
        +                            },
        +                            "resolved_value": {},
        +                            "source": {
        +                              "enum": [
        +                                "description_field",
        +                                "haiku_resolution",
        +                                "engine_default"
        +                              ],
        +                              "type": "string"
        +                            }
        +                          },
        +                          "required": [
        +                            "field_name",
        +                            "resolved_value",
        +                            "source"
        +                          ],
        +                          "type": "object"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "user_supplied": {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  }
        +                },
        +                "type": "object"
        +              },
        +              "standard": {
        +                "enum": [
        +                  "CESMM4",
        +                  "NRM2",
        +                  "SMM7",
        +                  "MMHW"
        +                ],
        +                "type": "string"
        +              },
        +              "text_summary": {
        +                "maxLength": 2000,
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "totals_summary": {
        +                "additionalProperties": false,
        +                "description": "Schema § 1.4 — totals_summary as a typed wrapper around the free-form dict.\n\nWire shape is a flat object (`{\"concrete_m3\": {...}, \"rebar_t\": {...}}`).\nWe model it as `RootModel`-equivalent via `model_config(extra=\"allow\")`\n+ a single `__root__`-style `entries` dict. Pydantic v2 recommends\n`RootModel` for free-form roots; using a wrapper class keeps the import\nsurface uniform with the rest of this module.",
        +                "properties": {
        +                  "entries": {
        +                    "additionalProperties": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.4 — single material/work-class total entry.",
        +                      "properties": {
        +                        "quantity": {
        +                          "minimum": 0,
        +                          "type": "number"
        +                        },
        +                        "unit": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "quantity",
        +                        "unit"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "object"
        +                  }
        +                },
        +                "type": "object"
        +              },
        +              "warnings": {
        +                "items": {
        +                  "additionalProperties": false,
        +                  "description": "Schema § 1.8 — a non-fatal geometry advisory (56th-fire T2).\n\nThe wire projection of the engine's `core.GeometryWarning`. Advisory only:\na warning NEVER changes a measured quantity — it flags geometry that is\nvalid but likely a mistake (e.g. a stale dependent-height default). Present\non BOTH tiers — a correctness/safety signal, not a paid feature.",
        +                  "properties": {
        +                    "affected_params": {
        +                      "items": {
        +                        "type": "string"
        +                      },
        +                      "type": "array"
        +                    },
        +                    "code": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "detail": {
        +                      "additionalProperties": {
        +                        "type": "number"
        +                      },
        +                      "type": "object"
        +                    },
        +                    "message": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "severity": {
        +                      "enum": [
        +                        "info",
        +                        "advisory",
        +                        "caution"
        +                      ],
        +                      "type": "string"
        +                    }
        +                  },
        +                  "required": [
        +                    "code",
        +                    "severity",
        +                    "message"
        +                  ],
        +                  "type": "object"
        +                },
        +                "type": "array"
        +              }
        +            },
        +            "required": [
        +              "assembly_slug",
        +              "standard",
        +              "parameters_used",
        +              "boq_rows",
        +              "totals_summary",
        +              "text_summary"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      },
        +      "error": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        +            "properties": {
        +              "code": {
        +                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        +                "enum": [
        +                  "RATE_LIMIT_EXCEEDED",
        +                  "TIER_INSUFFICIENT",
        +                  "INVALID_INPUT",
        +                  "SCHEMA_VERSION_MISMATCH",
        +                  "SCHEMA_INVARIANT_VIOLATION",
        +                  "UPSTREAM_TIMEOUT",
        +                  "BACKEND_FAILURE",
        +                  "IP_BLOCKED",
        +                  "RESOURCE_NOT_FOUND",
        +                  "RENDER_FAILURE",
        +                  "OCR_LOW_CONFIDENCE",
        +                  "MANUAL_REVIEW_REQUIRED",
        +                  "ACCEPTANCE_REQUIRED",
        +                  "INVALID_TOKEN"
        +                ],
        +                "type": "string"
        +              },
        +              "details": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "message": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "recoverable": {
        +                "type": "boolean"
        +              },
        +              "retry_after_seconds": {
        +                "anyOf": [
        +                  {
        +                    "minimum": 0,
        +                    "type": "integer"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              }
        +            },
        +            "required": [
        +              "code",
        +              "message",
        +              "recoverable"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      }
        +    },
        +    "required": [
        +      "_meta"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "_meta": {
        +        "additionalProperties": false,
        +        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        +        "properties": {
        +          "deliverables": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        +                "properties": {
        +                  "docx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "dxf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "expires_at": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  },
        +                  "pdf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "xlsx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "expires_at"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "document_id": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "issued_at": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "rate_limit_remaining": {
        +            "anyOf": [
        +              {
        +                "minimum": 0,
        +                "type": "integer"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "request_id": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "schema_version": {
        +            "const": "1.0.0",
        +            "default": "1.0.0",
        +            "type": "string"
        +          },
        +          "scope_boundary": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        +                "properties": {
        +                  "not_in_scope": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "produced": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "recommended_companions": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "type": "string"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "produced",
        +                  "not_in_scope"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tier": {
        +            "enum": [
        +              "free",
        +              "paid"
        +            ],
        +            "type": "string"
        +          },
        +          "tier_upgrade": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        +                "properties": {
        +                  "available_tiers": {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        +                      "properties": {
        +                        "billing": {
        +                          "enum": [
        +                            "one_off",
        +                            "monthly",
        +                            "annual"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "currency": {
        +                          "enum": [
        +                            "GBP",
        +                            "SGD",
        +                            "EUR",
        +                            "USD",
        +                            "CAD",
        +                            "AUD",
        +                            "NZD",
        +                            "MYR"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "display_name": {
        +                          "type": "string"
        +                        },
        +                        "price_local": {
        +                          "type": "number"
        +                        },
        +                        "tier_slug": {
        +                          "enum": [
        +                            "7_day_pass",
        +                            "solo",
        +                            "studio",
        +                            "practice"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "unlock_summary": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "tier_slug",
        +                        "display_name",
        +                        "price_local",
        +                        "currency",
        +                        "billing",
        +                        "unlock_summary"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "current_tier": {
        +                    "const": "free",
        +                    "default": "free",
        +                    "type": "string"
        +                  },
        +                  "pass_credit": {
        +                    "anyOf": [
        +                      {
        +                        "additionalProperties": false,
        +                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        +                        "properties": {
        +                          "amount_local": {
        +                            "type": "number"
        +                          },
        +                          "applies_to": {
        +                            "const": "solo_first_month",
        +                            "default": "solo_first_month",
        +                            "type": "string"
        +                          },
        +                          "currency": {
        +                            "type": "string"
        +                          },
        +                          "redeemable_until": {
        +                            "type": "string"
        +                          }
        +                        },
        +                        "required": [
        +                          "amount_local",
        +                          "currency",
        +                          "redeemable_until"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "pricing_url": {
        +                    "default": "https://civilquants.com/pricing",
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "available_tiers"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tos_url": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "upgrade_hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "warranty_disclaimer": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          }
        +        },
        +        "required": [
        +          "request_id",
        +          "issued_at",
        +          "tier"
        +        ],
        +        "type": "object"
        +      },
        +      "data": {
        +        "default": null,
        +        "title": "Data"
        +      },
        +      "error": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        +            "properties": {
        +              "code": {
        +                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        +                "enum": [
        +                  "RATE_LIMIT_EXCEEDED",
        +                  "TIER_INSUFFICIENT",
        +                  "INVALID_INPUT",
        +                  "SCHEMA_VERSION_MISMATCH",
        +                  "SCHEMA_INVARIANT_VIOLATION",
        +                  "UPSTREAM_TIMEOUT",
        +                  "BACKEND_FAILURE",
        +                  "IP_BLOCKED",
        +                  "RESOURCE_NOT_FOUND",
        +                  "RENDER_FAILURE",
        +                  "OCR_LOW_CONFIDENCE",
        +                  "MANUAL_REVIEW_REQUIRED",
        +                  "ACCEPTANCE_REQUIRED",
        +                  "INVALID_TOKEN"
        +                ],
        +                "type": "string"
        +              },
        +              "details": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "message": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "recoverable": {
        +                "type": "boolean"
        +              },
        +              "retry_after_seconds": {
        +                "anyOf": [
        +                  {
        +                    "minimum": 0,
        +                    "type": "integer"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              }
        +            },
        +            "required": [
        +              "code",
        +              "message",
        +              "recoverable"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      }
        +    },
        +    "required": [
        +      "_meta"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedcompute_french_drain1 field changed
      • changedOutput schema / properties / result / anyOf
        Previous value: -[
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "_meta": {
        -        "additionalProperties": false,
        -        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        -        "properties": {
        -          "deliverables": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        -                "properties": {
        -                  "docx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "dxf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "expires_at": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  },
        -                  "pdf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "xlsx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "expires_at"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "document_id": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "issued_at": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "rate_limit_remaining": {
        -            "anyOf": [
        -              {
        -                "minimum": 0,
        -                "type": "integer"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "request_id": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "schema_version": {
        -            "const": "1.0.0",
        -            "default": "1.0.0",
        -            "type": "string"
        -          },
        -          "scope_boundary": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        -                "properties": {
        -                  "not_in_scope": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "produced": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "recommended_companions": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "type": "string"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "produced",
        -                  "not_in_scope"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tier": {
        -            "enum": [
        -              "free",
        -              "paid"
        -            ],
        -            "type": "string"
        -          },
        -          "tier_upgrade": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        -                "properties": {
        -                  "available_tiers": {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        -                      "properties": {
        -                        "billing": {
        -                          "enum": [
        -                            "one_off",
        -                            "monthly",
        -                            "annual"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "currency": {
        -                          "enum": [
        -                            "GBP",
        -                            "SGD",
        -                            "EUR",
        -                            "USD",
        -                            "CAD",
        -                            "AUD",
        -                            "NZD",
        -                            "MYR"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "display_name": {
        -                          "type": "string"
        -                        },
        -                        "price_local": {
        -                          "type": "number"
        -                        },
        -                        "tier_slug": {
        -                          "enum": [
        -                            "7_day_pass",
        -                            "solo",
        -                            "studio",
        -                            "practice"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "unlock_summary": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "tier_slug",
        -                        "display_name",
        -                        "price_local",
        -                        "currency",
        -                        "billing",
        -                        "unlock_summary"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "current_tier": {
        -                    "const": "free",
        -                    "default": "free",
        -                    "type": "string"
        -                  },
        -                  "pass_credit": {
        -                    "anyOf": [
        -                      {
        -                        "additionalProperties": false,
        -                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        -                        "properties": {
        -                          "amount_local": {
        -                            "type": "number"
        -                          },
        -                          "applies_to": {
        -                            "const": "solo_first_month",
        -                            "default": "solo_first_month",
        -                            "type": "string"
        -                          },
        -                          "currency": {
        -                            "type": "string"
        -                          },
        -                          "redeemable_until": {
        -                            "type": "string"
        -                          }
        -                        },
        -                        "required": [
        -                          "amount_local",
        -                          "currency",
        -                          "redeemable_until"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "pricing_url": {
        -                    "default": "https://civilquants.com/pricing",
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "available_tiers"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tos_url": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "upgrade_hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "warranty_disclaimer": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          }
        -        },
        -        "required": [
        -          "request_id",
        -          "issued_at",
        -          "tier"
        -        ],
        -        "type": "object"
        -      },
        -      "data": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Schema § 1.1 — the typed payload returned inside `MCPResponse[ComputeResult]`.\n\nFree-tier responses MUST omit `drawings` and `audit_trail` (the bridge\nenforces this); paid-tier responses populate both. `text_summary` is\nbounded to 2000 chars — keeps the LLM-facing summary token-cheap and\nforces longer narrative into BoQ row descriptions where it belongs.",
        -            "properties": {
        -              "assembly_slug": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "audit_trail": {
        -                "anyOf": [
        -                  {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.7 — paid-tier audit-trail entry.\n\nOne entry per BoQ row; `boq_row_index` ties to the row position in\n`ComputeResult.boq_rows`. `derivation` is the human-readable formula\nwalk-through; `formula` is the optional formal expression.",
        -                      "properties": {
        -                        "boq_row_index": {
        -                          "minimum": 0,
        -                          "type": "integer"
        -                        },
        -                        "derivation": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "formula": {
        -                          "anyOf": [
        -                            {
        -                              "type": "string"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ],
        -                          "default": null
        -                        },
        -                        "id": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "parameters_referenced": {
        -                          "items": {
        -                            "type": "string"
        -                          },
        -                          "type": "array"
        -                        }
        -                      },
        -                      "required": [
        -                        "id",
        -                        "boq_row_index",
        -                        "derivation"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "boq_rows": {
        -                "items": {
        -                  "additionalProperties": false,
        -                  "description": "Schema § 1.3 — a single bill row in the requested standard's format.\n\n`description` is the non-verbatim functional description per spec § 13.9 /\n§ 15 invariant — NEVER reproduces a standard's verbatim clause text.\n`rate` / `amount` ship null because rates are commodity data the customer\nowns; the engine's job is the measurement, not the pricing.",
        -                  "properties": {
        -                    "amount": {
        -                      "anyOf": [
        -                        {
        -                          "type": "number"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "attribution": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "audit_id": {
        -                      "anyOf": [
        -                        {
        -                          "type": "string"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "description": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "quantity": {
        -                      "minimum": 0,
        -                      "type": "number"
        -                    },
        -                    "rate": {
        -                      "anyOf": [
        -                        {
        -                          "type": "number"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "unit": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "work_section": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    }
        -                  },
        -                  "required": [
        -                    "work_section",
        -                    "description",
        -                    "quantity",
        -                    "unit",
        -                    "attribution"
        -                  ],
        -                  "type": "object"
        -                },
        -                "type": "array"
        -              },
        -              "drawings": {
        -                "anyOf": [
        -                  {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.6 — paid-tier drawing artefact pointer.\n\n`url` is an R2-signed URL; expiry is carried in `_meta.deliverables.expires_at`\non the envelope (not duplicated here). `layers` is DXF-only; PDF/SVG\ncallers omit it.",
        -                      "properties": {
        -                        "drawing_type": {
        -                          "enum": [
        -                            "section",
        -                            "plan",
        -                            "elevation",
        -                            "isometric",
        -                            "detail"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "format": {
        -                          "enum": [
        -                            "DXF",
        -                            "PDF",
        -                            "SVG"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "layers": {
        -                          "anyOf": [
        -                            {
        -                              "items": {
        -                                "type": "string"
        -                              },
        -                              "type": "array"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ],
        -                          "default": null
        -                        },
        -                        "scale": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "sheet_size": {
        -                          "enum": [
        -                            "A1",
        -                            "A2",
        -                            "A3",
        -                            "A4"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "url": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "drawing_type",
        -                        "format",
        -                        "url",
        -                        "sheet_size",
        -                        "scale"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "parameters_used": {
        -                "additionalProperties": false,
        -                "description": "Schema § 1.2 — the parameter snapshot the engine actually used.\n\nSplits user-supplied values from engine defaults so customers can see\nwhich numbers came from them and which the engine filled in. Every\ndefaulted parameter SHOULD have a corresponding entry in `assumptions`\n— the bridge layer enforces this when wrapping engine output.",
        -                "properties": {
        -                  "assumptions": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "engine_defaults": {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  "resolved_from_description": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "additionalProperties": false,
        -                          "description": "Schema § 1.2 — a parameter resolved by the forgiving-input layer.\n\nPopulated by the Track B-Forgiving Haiku-4.5 resolution pass; until that\nlayer lands, instances are constructed only by tests. `source` distinguishes\nthe resolution path so customers can audit which fields were inferred.",
        -                          "properties": {
        -                            "confidence": {
        -                              "anyOf": [
        -                                {
        -                                  "enum": [
        -                                    "high",
        -                                    "medium",
        -                                    "low"
        -                                  ],
        -                                  "type": "string"
        -                                },
        -                                {
        -                                  "type": "null"
        -                                }
        -                              ],
        -                              "default": null
        -                            },
        -                            "field_name": {
        -                              "minLength": 1,
        -                              "type": "string"
        -                            },
        -                            "resolved_value": {},
        -                            "source": {
        -                              "enum": [
        -                                "description_field",
        -                                "haiku_resolution",
        -                                "engine_default"
        -                              ],
        -                              "type": "string"
        -                            }
        -                          },
        -                          "required": [
        -                            "field_name",
        -                            "resolved_value",
        -                            "source"
        -                          ],
        -                          "type": "object"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "user_supplied": {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  }
        -                },
        -                "type": "object"
        -              },
        -              "standard": {
        -                "enum": [
        -                  "CESMM4",
        -                  "NRM2",
        -                  "SMM7",
        -                  "MMHW"
        -                ],
        -                "type": "string"
        -              },
        -              "text_summary": {
        -                "maxLength": 2000,
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "totals_summary": {
        -                "additionalProperties": false,
        -                "description": "Schema § 1.4 — totals_summary as a typed wrapper around the free-form dict.\n\nWire shape is a flat object (`{\"concrete_m3\": {...}, \"rebar_t\": {...}}`).\nWe model it as `RootModel`-equivalent via `model_config(extra=\"allow\")`\n+ a single `__root__`-style `entries` dict. Pydantic v2 recommends\n`RootModel` for free-form roots; using a wrapper class keeps the import\nsurface uniform with the rest of this module.",
        -                "properties": {
        -                  "entries": {
        -                    "additionalProperties": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.4 — single material/work-class total entry.",
        -                      "properties": {
        -                        "quantity": {
        -                          "minimum": 0,
        -                          "type": "number"
        -                        },
        -                        "unit": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "quantity",
        -                        "unit"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "object"
        -                  }
        -                },
        -                "type": "object"
        -              }
        -            },
        -            "required": [
        -              "assembly_slug",
        -              "standard",
        -              "parameters_used",
        -              "boq_rows",
        -              "totals_summary",
        -              "text_summary"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      },
        -      "error": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        -            "properties": {
        -              "code": {
        -                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        -                "enum": [
        -                  "RATE_LIMIT_EXCEEDED",
        -                  "TIER_INSUFFICIENT",
        -                  "INVALID_INPUT",
        -                  "SCHEMA_VERSION_MISMATCH",
        -                  "SCHEMA_INVARIANT_VIOLATION",
        -                  "UPSTREAM_TIMEOUT",
        -                  "BACKEND_FAILURE",
        -                  "IP_BLOCKED",
        -                  "RESOURCE_NOT_FOUND",
        -                  "RENDER_FAILURE",
        -                  "OCR_LOW_CONFIDENCE",
        -                  "MANUAL_REVIEW_REQUIRED",
        -                  "ACCEPTANCE_REQUIRED",
        -                  "INVALID_TOKEN"
        -                ],
        -                "type": "string"
        -              },
        -              "details": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "message": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "recoverable": {
        -                "type": "boolean"
        -              },
        -              "retry_after_seconds": {
        -                "anyOf": [
        -                  {
        -                    "minimum": 0,
        -                    "type": "integer"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              }
        -            },
        -            "required": [
        -              "code",
        -              "message",
        -              "recoverable"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      }
        -    },
        -    "required": [
        -      "_meta"
        -    ],
        -    "type": "object"
        -  },
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "_meta": {
        -        "additionalProperties": false,
        -        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        -        "properties": {
        -          "deliverables": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        -                "properties": {
        -                  "docx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "dxf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "expires_at": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  },
        -                  "pdf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "xlsx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "expires_at"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "document_id": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "issued_at": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "rate_limit_remaining": {
        -            "anyOf": [
        -              {
        -                "minimum": 0,
        -                "type": "integer"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "request_id": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "schema_version": {
        -            "const": "1.0.0",
        -            "default": "1.0.0",
        -            "type": "string"
        -          },
        -          "scope_boundary": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        -                "properties": {
        -                  "not_in_scope": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "produced": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "recommended_companions": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "type": "string"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "produced",
        -                  "not_in_scope"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tier": {
        -            "enum": [
        -              "free",
        -              "paid"
        -            ],
        -            "type": "string"
        -          },
        -          "tier_upgrade": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        -                "properties": {
        -                  "available_tiers": {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        -                      "properties": {
        -                        "billing": {
        -                          "enum": [
        -                            "one_off",
        -                            "monthly",
        -                            "annual"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "currency": {
        -                          "enum": [
        -                            "GBP",
        -                            "SGD",
        -                            "EUR",
        -                            "USD",
        -                            "CAD",
        -                            "AUD",
        -                            "NZD",
        -                            "MYR"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "display_name": {
        -                          "type": "string"
        -                        },
        -                        "price_local": {
        -                          "type": "number"
        -                        },
        -                        "tier_slug": {
        -                          "enum": [
        -                            "7_day_pass",
        -                            "solo",
        -                            "studio",
        -                            "practice"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "unlock_summary": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "tier_slug",
        -                        "display_name",
        -                        "price_local",
        -                        "currency",
        -                        "billing",
        -                        "unlock_summary"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "current_tier": {
        -                    "const": "free",
        -                    "default": "free",
        -                    "type": "string"
        -                  },
        -                  "pass_credit": {
        -                    "anyOf": [
        -                      {
        -                        "additionalProperties": false,
        -                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        -                        "properties": {
        -                          "amount_local": {
        -                            "type": "number"
        -                          },
        -                          "applies_to": {
        -                            "const": "solo_first_month",
        -                            "default": "solo_first_month",
        -                            "type": "string"
        -                          },
        -                          "currency": {
        -                            "type": "string"
        -                          },
        -                          "redeemable_until": {
        -                            "type": "string"
        -                          }
        -                        },
        -                        "required": [
        -                          "amount_local",
        -                          "currency",
        -                          "redeemable_until"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "pricing_url": {
        -                    "default": "https://civilquants.com/pricing",
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "available_tiers"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tos_url": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "upgrade_hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "warranty_disclaimer": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          }
        -        },
        -        "required": [
        -          "request_id",
        -          "issued_at",
        -          "tier"
        -        ],
        -        "type": "object"
        -      },
        -      "data": {
        -        "default": null,
        -        "title": "Data"
        -      },
        -      "error": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        -            "properties": {
        -              "code": {
        -                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        -                "enum": [
        -                  "RATE_LIMIT_EXCEEDED",
        -                  "TIER_INSUFFICIENT",
        -                  "INVALID_INPUT",
        -                  "SCHEMA_VERSION_MISMATCH",
        -                  "SCHEMA_INVARIANT_VIOLATION",
        -                  "UPSTREAM_TIMEOUT",
        -                  "BACKEND_FAILURE",
        -                  "IP_BLOCKED",
        -                  "RESOURCE_NOT_FOUND",
        -                  "RENDER_FAILURE",
        -                  "OCR_LOW_CONFIDENCE",
        -                  "MANUAL_REVIEW_REQUIRED",
        -                  "ACCEPTANCE_REQUIRED",
        -                  "INVALID_TOKEN"
        -                ],
        -                "type": "string"
        -              },
        -              "details": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "message": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "recoverable": {
        -                "type": "boolean"
        -              },
        -              "retry_after_seconds": {
        -                "anyOf": [
        -                  {
        -                    "minimum": 0,
        -                    "type": "integer"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              }
        -            },
        -            "required": [
        -              "code",
        -              "message",
        -              "recoverable"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      }
        -    },
        -    "required": [
        -      "_meta"
        -    ],
        -    "type": "object"
        -  }
        -]New value: +[
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "_meta": {
        +        "additionalProperties": false,
        +        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        +        "properties": {
        +          "deliverables": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        +                "properties": {
        +                  "docx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "dxf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "expires_at": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  },
        +                  "pdf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "xlsx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "expires_at"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "document_id": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "issued_at": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "rate_limit_remaining": {
        +            "anyOf": [
        +              {
        +                "minimum": 0,
        +                "type": "integer"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "request_id": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "schema_version": {
        +            "const": "1.0.0",
        +            "default": "1.0.0",
        +            "type": "string"
        +          },
        +          "scope_boundary": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        +                "properties": {
        +                  "not_in_scope": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "produced": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "recommended_companions": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "type": "string"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "produced",
        +                  "not_in_scope"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tier": {
        +            "enum": [
        +              "free",
        +              "paid"
        +            ],
        +            "type": "string"
        +          },
        +          "tier_upgrade": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        +                "properties": {
        +                  "available_tiers": {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        +                      "properties": {
        +                        "billing": {
        +                          "enum": [
        +                            "one_off",
        +                            "monthly",
        +                            "annual"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "currency": {
        +                          "enum": [
        +                            "GBP",
        +                            "SGD",
        +                            "EUR",
        +                            "USD",
        +                            "CAD",
        +                            "AUD",
        +                            "NZD",
        +                            "MYR"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "display_name": {
        +                          "type": "string"
        +                        },
        +                        "price_local": {
        +                          "type": "number"
        +                        },
        +                        "tier_slug": {
        +                          "enum": [
        +                            "7_day_pass",
        +                            "solo",
        +                            "studio",
        +                            "practice"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "unlock_summary": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "tier_slug",
        +                        "display_name",
        +                        "price_local",
        +                        "currency",
        +                        "billing",
        +                        "unlock_summary"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "current_tier": {
        +                    "const": "free",
        +                    "default": "free",
        +                    "type": "string"
        +                  },
        +                  "pass_credit": {
        +                    "anyOf": [
        +                      {
        +                        "additionalProperties": false,
        +                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        +                        "properties": {
        +                          "amount_local": {
        +                            "type": "number"
        +                          },
        +                          "applies_to": {
        +                            "const": "solo_first_month",
        +                            "default": "solo_first_month",
        +                            "type": "string"
        +                          },
        +                          "currency": {
        +                            "type": "string"
        +                          },
        +                          "redeemable_until": {
        +                            "type": "string"
        +                          }
        +                        },
        +                        "required": [
        +                          "amount_local",
        +                          "currency",
        +                          "redeemable_until"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "pricing_url": {
        +                    "default": "https://civilquants.com/pricing",
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "available_tiers"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tos_url": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "upgrade_hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "warranty_disclaimer": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          }
        +        },
        +        "required": [
        +          "request_id",
        +          "issued_at",
        +          "tier"
        +        ],
        +        "type": "object"
        +      },
        +      "data": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Schema § 1.1 — the typed payload returned inside `MCPResponse[ComputeResult]`.\n\nFree-tier responses MUST omit `drawings` and `audit_trail` (the bridge\nenforces this); paid-tier responses populate both. `text_summary` is\nbounded to 2000 chars — keeps the LLM-facing summary token-cheap and\nforces longer narrative into BoQ row descriptions where it belongs.\n`warnings` is the non-fatal geometry advisory list (both tiers).",
        +            "properties": {
        +              "assembly_slug": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "audit_trail": {
        +                "anyOf": [
        +                  {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.7 — paid-tier audit-trail entry.\n\nOne entry per BoQ row; `boq_row_index` ties to the row position in\n`ComputeResult.boq_rows`. `derivation` is the human-readable formula\nwalk-through; `formula` is the optional formal expression.",
        +                      "properties": {
        +                        "boq_row_index": {
        +                          "minimum": 0,
        +                          "type": "integer"
        +                        },
        +                        "derivation": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "formula": {
        +                          "anyOf": [
        +                            {
        +                              "type": "string"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ],
        +                          "default": null
        +                        },
        +                        "id": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "parameters_referenced": {
        +                          "items": {
        +                            "type": "string"
        +                          },
        +                          "type": "array"
        +                        }
        +                      },
        +                      "required": [
        +                        "id",
        +                        "boq_row_index",
        +                        "derivation"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "boq_rows": {
        +                "items": {
        +                  "additionalProperties": false,
        +                  "description": "Schema § 1.3 — a single bill row in the requested standard's format.\n\n`description` is the non-verbatim functional description per spec § 13.9 /\n§ 15 invariant — NEVER reproduces a standard's verbatim clause text.\n`rate` / `amount` ship null because rates are commodity data the customer\nowns; the engine's job is the measurement, not the pricing.",
        +                  "properties": {
        +                    "amount": {
        +                      "anyOf": [
        +                        {
        +                          "type": "number"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "attribution": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "audit_id": {
        +                      "anyOf": [
        +                        {
        +                          "type": "string"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "description": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "quantity": {
        +                      "minimum": 0,
        +                      "type": "number"
        +                    },
        +                    "rate": {
        +                      "anyOf": [
        +                        {
        +                          "type": "number"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "unit": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "work_section": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    }
        +                  },
        +                  "required": [
        +                    "work_section",
        +                    "description",
        +                    "quantity",
        +                    "unit",
        +                    "attribution"
        +                  ],
        +                  "type": "object"
        +                },
        +                "type": "array"
        +              },
        +              "drawings": {
        +                "anyOf": [
        +                  {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.6 — paid-tier drawing artefact pointer.\n\n`url` is an R2-signed URL; expiry is carried in `_meta.deliverables.expires_at`\non the envelope (not duplicated here). `layers` is DXF-only; PDF/SVG\ncallers omit it.",
        +                      "properties": {
        +                        "drawing_type": {
        +                          "enum": [
        +                            "section",
        +                            "plan",
        +                            "elevation",
        +                            "isometric",
        +                            "detail"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "format": {
        +                          "enum": [
        +                            "DXF",
        +                            "PDF",
        +                            "SVG"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "layers": {
        +                          "anyOf": [
        +                            {
        +                              "items": {
        +                                "type": "string"
        +                              },
        +                              "type": "array"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ],
        +                          "default": null
        +                        },
        +                        "scale": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "sheet_size": {
        +                          "enum": [
        +                            "A1",
        +                            "A2",
        +                            "A3",
        +                            "A4"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "url": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "drawing_type",
        +                        "format",
        +                        "url",
        +                        "sheet_size",
        +                        "scale"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "parameters_used": {
        +                "additionalProperties": false,
        +                "description": "Schema § 1.2 — the parameter snapshot the engine actually used.\n\nSplits user-supplied values from engine defaults so customers can see\nwhich numbers came from them and which the engine filled in. Every\ndefaulted parameter SHOULD have a corresponding entry in `assumptions`\n— the bridge layer enforces this when wrapping engine output.",
        +                "properties": {
        +                  "assumptions": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "engine_defaults": {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  "resolved_from_description": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "additionalProperties": false,
        +                          "description": "Schema § 1.2 — a parameter resolved by the forgiving-input layer.\n\nPopulated by the Track B-Forgiving Haiku-4.5 resolution pass; until that\nlayer lands, instances are constructed only by tests. `source` distinguishes\nthe resolution path so customers can audit which fields were inferred.",
        +                          "properties": {
        +                            "confidence": {
        +                              "anyOf": [
        +                                {
        +                                  "enum": [
        +                                    "high",
        +                                    "medium",
        +                                    "low"
        +                                  ],
        +                                  "type": "string"
        +                                },
        +                                {
        +                                  "type": "null"
        +                                }
        +                              ],
        +                              "default": null
        +                            },
        +                            "field_name": {
        +                              "minLength": 1,
        +                              "type": "string"
        +                            },
        +                            "resolved_value": {},
        +                            "source": {
        +                              "enum": [
        +                                "description_field",
        +                                "haiku_resolution",
        +                                "engine_default"
        +                              ],
        +                              "type": "string"
        +                            }
        +                          },
        +                          "required": [
        +                            "field_name",
        +                            "resolved_value",
        +                            "source"
        +                          ],
        +                          "type": "object"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "user_supplied": {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  }
        +                },
        +                "type": "object"
        +              },
        +              "standard": {
        +                "enum": [
        +                  "CESMM4",
        +                  "NRM2",
        +                  "SMM7",
        +                  "MMHW"
        +                ],
        +                "type": "string"
        +              },
        +              "text_summary": {
        +                "maxLength": 2000,
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "totals_summary": {
        +                "additionalProperties": false,
        +                "description": "Schema § 1.4 — totals_summary as a typed wrapper around the free-form dict.\n\nWire shape is a flat object (`{\"concrete_m3\": {...}, \"rebar_t\": {...}}`).\nWe model it as `RootModel`-equivalent via `model_config(extra=\"allow\")`\n+ a single `__root__`-style `entries` dict. Pydantic v2 recommends\n`RootModel` for free-form roots; using a wrapper class keeps the import\nsurface uniform with the rest of this module.",
        +                "properties": {
        +                  "entries": {
        +                    "additionalProperties": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.4 — single material/work-class total entry.",
        +                      "properties": {
        +                        "quantity": {
        +                          "minimum": 0,
        +                          "type": "number"
        +                        },
        +                        "unit": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "quantity",
        +                        "unit"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "object"
        +                  }
        +                },
        +                "type": "object"
        +              },
        +              "warnings": {
        +                "items": {
        +                  "additionalProperties": false,
        +                  "description": "Schema § 1.8 — a non-fatal geometry advisory (56th-fire T2).\n\nThe wire projection of the engine's `core.GeometryWarning`. Advisory only:\na warning NEVER changes a measured quantity — it flags geometry that is\nvalid but likely a mistake (e.g. a stale dependent-height default). Present\non BOTH tiers — a correctness/safety signal, not a paid feature.",
        +                  "properties": {
        +                    "affected_params": {
        +                      "items": {
        +                        "type": "string"
        +                      },
        +                      "type": "array"
        +                    },
        +                    "code": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "detail": {
        +                      "additionalProperties": {
        +                        "type": "number"
        +                      },
        +                      "type": "object"
        +                    },
        +                    "message": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "severity": {
        +                      "enum": [
        +                        "info",
        +                        "advisory",
        +                        "caution"
        +                      ],
        +                      "type": "string"
        +                    }
        +                  },
        +                  "required": [
        +                    "code",
        +                    "severity",
        +                    "message"
        +                  ],
        +                  "type": "object"
        +                },
        +                "type": "array"
        +              }
        +            },
        +            "required": [
        +              "assembly_slug",
        +              "standard",
        +              "parameters_used",
        +              "boq_rows",
        +              "totals_summary",
        +              "text_summary"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      },
        +      "error": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        +            "properties": {
        +              "code": {
        +                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        +                "enum": [
        +                  "RATE_LIMIT_EXCEEDED",
        +                  "TIER_INSUFFICIENT",
        +                  "INVALID_INPUT",
        +                  "SCHEMA_VERSION_MISMATCH",
        +                  "SCHEMA_INVARIANT_VIOLATION",
        +                  "UPSTREAM_TIMEOUT",
        +                  "BACKEND_FAILURE",
        +                  "IP_BLOCKED",
        +                  "RESOURCE_NOT_FOUND",
        +                  "RENDER_FAILURE",
        +                  "OCR_LOW_CONFIDENCE",
        +                  "MANUAL_REVIEW_REQUIRED",
        +                  "ACCEPTANCE_REQUIRED",
        +                  "INVALID_TOKEN"
        +                ],
        +                "type": "string"
        +              },
        +              "details": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "message": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "recoverable": {
        +                "type": "boolean"
        +              },
        +              "retry_after_seconds": {
        +                "anyOf": [
        +                  {
        +                    "minimum": 0,
        +                    "type": "integer"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              }
        +            },
        +            "required": [
        +              "code",
        +              "message",
        +              "recoverable"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      }
        +    },
        +    "required": [
        +      "_meta"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "_meta": {
        +        "additionalProperties": false,
        +        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        +        "properties": {
        +          "deliverables": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        +                "properties": {
        +                  "docx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "dxf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "expires_at": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  },
        +                  "pdf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "xlsx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "expires_at"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "document_id": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "issued_at": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "rate_limit_remaining": {
        +            "anyOf": [
        +              {
        +                "minimum": 0,
        +                "type": "integer"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "request_id": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "schema_version": {
        +            "const": "1.0.0",
        +            "default": "1.0.0",
        +            "type": "string"
        +          },
        +          "scope_boundary": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        +                "properties": {
        +                  "not_in_scope": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "produced": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "recommended_companions": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "type": "string"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "produced",
        +                  "not_in_scope"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tier": {
        +            "enum": [
        +              "free",
        +              "paid"
        +            ],
        +            "type": "string"
        +          },
        +          "tier_upgrade": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        +                "properties": {
        +                  "available_tiers": {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        +                      "properties": {
        +                        "billing": {
        +                          "enum": [
        +                            "one_off",
        +                            "monthly",
        +                            "annual"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "currency": {
        +                          "enum": [
        +                            "GBP",
        +                            "SGD",
        +                            "EUR",
        +                            "USD",
        +                            "CAD",
        +                            "AUD",
        +                            "NZD",
        +                            "MYR"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "display_name": {
        +                          "type": "string"
        +                        },
        +                        "price_local": {
        +                          "type": "number"
        +                        },
        +                        "tier_slug": {
        +                          "enum": [
        +                            "7_day_pass",
        +                            "solo",
        +                            "studio",
        +                            "practice"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "unlock_summary": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "tier_slug",
        +                        "display_name",
        +                        "price_local",
        +                        "currency",
        +                        "billing",
        +                        "unlock_summary"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "current_tier": {
        +                    "const": "free",
        +                    "default": "free",
        +                    "type": "string"
        +                  },
        +                  "pass_credit": {
        +                    "anyOf": [
        +                      {
        +                        "additionalProperties": false,
        +                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        +                        "properties": {
        +                          "amount_local": {
        +                            "type": "number"
        +                          },
        +                          "applies_to": {
        +                            "const": "solo_first_month",
        +                            "default": "solo_first_month",
        +                            "type": "string"
        +                          },
        +                          "currency": {
        +                            "type": "string"
        +                          },
        +                          "redeemable_until": {
        +                            "type": "string"
        +                          }
        +                        },
        +                        "required": [
        +                          "amount_local",
        +                          "currency",
        +                          "redeemable_until"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "pricing_url": {
        +                    "default": "https://civilquants.com/pricing",
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "available_tiers"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tos_url": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "upgrade_hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "warranty_disclaimer": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          }
        +        },
        +        "required": [
        +          "request_id",
        +          "issued_at",
        +          "tier"
        +        ],
        +        "type": "object"
        +      },
        +      "data": {
        +        "default": null,
        +        "title": "Data"
        +      },
        +      "error": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        +            "properties": {
        +              "code": {
        +                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        +                "enum": [
        +                  "RATE_LIMIT_EXCEEDED",
        +                  "TIER_INSUFFICIENT",
        +                  "INVALID_INPUT",
        +                  "SCHEMA_VERSION_MISMATCH",
        +                  "SCHEMA_INVARIANT_VIOLATION",
        +                  "UPSTREAM_TIMEOUT",
        +                  "BACKEND_FAILURE",
        +                  "IP_BLOCKED",
        +                  "RESOURCE_NOT_FOUND",
        +                  "RENDER_FAILURE",
        +                  "OCR_LOW_CONFIDENCE",
        +                  "MANUAL_REVIEW_REQUIRED",
        +                  "ACCEPTANCE_REQUIRED",
        +                  "INVALID_TOKEN"
        +                ],
        +                "type": "string"
        +              },
        +              "details": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "message": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "recoverable": {
        +                "type": "boolean"
        +              },
        +              "retry_after_seconds": {
        +                "anyOf": [
        +                  {
        +                    "minimum": 0,
        +                    "type": "integer"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              }
        +            },
        +            "required": [
        +              "code",
        +              "message",
        +              "recoverable"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      }
        +    },
        +    "required": [
        +      "_meta"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedcompute_gabion_wall1 field changed
      • changedOutput schema / properties / result / anyOf
        Previous value: -[
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "_meta": {
        -        "additionalProperties": false,
        -        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        -        "properties": {
        -          "deliverables": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        -                "properties": {
        -                  "docx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "dxf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "expires_at": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  },
        -                  "pdf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "xlsx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "expires_at"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "document_id": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "issued_at": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "rate_limit_remaining": {
        -            "anyOf": [
        -              {
        -                "minimum": 0,
        -                "type": "integer"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "request_id": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "schema_version": {
        -            "const": "1.0.0",
        -            "default": "1.0.0",
        -            "type": "string"
        -          },
        -          "scope_boundary": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        -                "properties": {
        -                  "not_in_scope": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "produced": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "recommended_companions": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "type": "string"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "produced",
        -                  "not_in_scope"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tier": {
        -            "enum": [
        -              "free",
        -              "paid"
        -            ],
        -            "type": "string"
        -          },
        -          "tier_upgrade": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        -                "properties": {
        -                  "available_tiers": {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        -                      "properties": {
        -                        "billing": {
        -                          "enum": [
        -                            "one_off",
        -                            "monthly",
        -                            "annual"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "currency": {
        -                          "enum": [
        -                            "GBP",
        -                            "SGD",
        -                            "EUR",
        -                            "USD",
        -                            "CAD",
        -                            "AUD",
        -                            "NZD",
        -                            "MYR"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "display_name": {
        -                          "type": "string"
        -                        },
        -                        "price_local": {
        -                          "type": "number"
        -                        },
        -                        "tier_slug": {
        -                          "enum": [
        -                            "7_day_pass",
        -                            "solo",
        -                            "studio",
        -                            "practice"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "unlock_summary": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "tier_slug",
        -                        "display_name",
        -                        "price_local",
        -                        "currency",
        -                        "billing",
        -                        "unlock_summary"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "current_tier": {
        -                    "const": "free",
        -                    "default": "free",
        -                    "type": "string"
        -                  },
        -                  "pass_credit": {
        -                    "anyOf": [
        -                      {
        -                        "additionalProperties": false,
        -                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        -                        "properties": {
        -                          "amount_local": {
        -                            "type": "number"
        -                          },
        -                          "applies_to": {
        -                            "const": "solo_first_month",
        -                            "default": "solo_first_month",
        -                            "type": "string"
        -                          },
        -                          "currency": {
        -                            "type": "string"
        -                          },
        -                          "redeemable_until": {
        -                            "type": "string"
        -                          }
        -                        },
        -                        "required": [
        -                          "amount_local",
        -                          "currency",
        -                          "redeemable_until"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "pricing_url": {
        -                    "default": "https://civilquants.com/pricing",
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "available_tiers"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tos_url": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "upgrade_hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "warranty_disclaimer": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          }
        -        },
        -        "required": [
        -          "request_id",
        -          "issued_at",
        -          "tier"
        -        ],
        -        "type": "object"
        -      },
        -      "data": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Schema § 1.1 — the typed payload returned inside `MCPResponse[ComputeResult]`.\n\nFree-tier responses MUST omit `drawings` and `audit_trail` (the bridge\nenforces this); paid-tier responses populate both. `text_summary` is\nbounded to 2000 chars — keeps the LLM-facing summary token-cheap and\nforces longer narrative into BoQ row descriptions where it belongs.",
        -            "properties": {
        -              "assembly_slug": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "audit_trail": {
        -                "anyOf": [
        -                  {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.7 — paid-tier audit-trail entry.\n\nOne entry per BoQ row; `boq_row_index` ties to the row position in\n`ComputeResult.boq_rows`. `derivation` is the human-readable formula\nwalk-through; `formula` is the optional formal expression.",
        -                      "properties": {
        -                        "boq_row_index": {
        -                          "minimum": 0,
        -                          "type": "integer"
        -                        },
        -                        "derivation": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "formula": {
        -                          "anyOf": [
        -                            {
        -                              "type": "string"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ],
        -                          "default": null
        -                        },
        -                        "id": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "parameters_referenced": {
        -                          "items": {
        -                            "type": "string"
        -                          },
        -                          "type": "array"
        -                        }
        -                      },
        -                      "required": [
        -                        "id",
        -                        "boq_row_index",
        -                        "derivation"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "boq_rows": {
        -                "items": {
        -                  "additionalProperties": false,
        -                  "description": "Schema § 1.3 — a single bill row in the requested standard's format.\n\n`description` is the non-verbatim functional description per spec § 13.9 /\n§ 15 invariant — NEVER reproduces a standard's verbatim clause text.\n`rate` / `amount` ship null because rates are commodity data the customer\nowns; the engine's job is the measurement, not the pricing.",
        -                  "properties": {
        -                    "amount": {
        -                      "anyOf": [
        -                        {
        -                          "type": "number"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "attribution": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "audit_id": {
        -                      "anyOf": [
        -                        {
        -                          "type": "string"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "description": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "quantity": {
        -                      "minimum": 0,
        -                      "type": "number"
        -                    },
        -                    "rate": {
        -                      "anyOf": [
        -                        {
        -                          "type": "number"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "unit": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "work_section": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    }
        -                  },
        -                  "required": [
        -                    "work_section",
        -                    "description",
        -                    "quantity",
        -                    "unit",
        -                    "attribution"
        -                  ],
        -                  "type": "object"
        -                },
        -                "type": "array"
        -              },
        -              "drawings": {
        -                "anyOf": [
        -                  {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.6 — paid-tier drawing artefact pointer.\n\n`url` is an R2-signed URL; expiry is carried in `_meta.deliverables.expires_at`\non the envelope (not duplicated here). `layers` is DXF-only; PDF/SVG\ncallers omit it.",
        -                      "properties": {
        -                        "drawing_type": {
        -                          "enum": [
        -                            "section",
        -                            "plan",
        -                            "elevation",
        -                            "isometric",
        -                            "detail"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "format": {
        -                          "enum": [
        -                            "DXF",
        -                            "PDF",
        -                            "SVG"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "layers": {
        -                          "anyOf": [
        -                            {
        -                              "items": {
        -                                "type": "string"
        -                              },
        -                              "type": "array"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ],
        -                          "default": null
        -                        },
        -                        "scale": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "sheet_size": {
        -                          "enum": [
        -                            "A1",
        -                            "A2",
        -                            "A3",
        -                            "A4"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "url": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "drawing_type",
        -                        "format",
        -                        "url",
        -                        "sheet_size",
        -                        "scale"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "parameters_used": {
        -                "additionalProperties": false,
        -                "description": "Schema § 1.2 — the parameter snapshot the engine actually used.\n\nSplits user-supplied values from engine defaults so customers can see\nwhich numbers came from them and which the engine filled in. Every\ndefaulted parameter SHOULD have a corresponding entry in `assumptions`\n— the bridge layer enforces this when wrapping engine output.",
        -                "properties": {
        -                  "assumptions": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "engine_defaults": {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  "resolved_from_description": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "additionalProperties": false,
        -                          "description": "Schema § 1.2 — a parameter resolved by the forgiving-input layer.\n\nPopulated by the Track B-Forgiving Haiku-4.5 resolution pass; until that\nlayer lands, instances are constructed only by tests. `source` distinguishes\nthe resolution path so customers can audit which fields were inferred.",
        -                          "properties": {
        -                            "confidence": {
        -                              "anyOf": [
        -                                {
        -                                  "enum": [
        -                                    "high",
        -                                    "medium",
        -                                    "low"
        -                                  ],
        -                                  "type": "string"
        -                                },
        -                                {
        -                                  "type": "null"
        -                                }
        -                              ],
        -                              "default": null
        -                            },
        -                            "field_name": {
        -                              "minLength": 1,
        -                              "type": "string"
        -                            },
        -                            "resolved_value": {},
        -                            "source": {
        -                              "enum": [
        -                                "description_field",
        -                                "haiku_resolution",
        -                                "engine_default"
        -                              ],
        -                              "type": "string"
        -                            }
        -                          },
        -                          "required": [
        -                            "field_name",
        -                            "resolved_value",
        -                            "source"
        -                          ],
        -                          "type": "object"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "user_supplied": {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  }
        -                },
        -                "type": "object"
        -              },
        -              "standard": {
        -                "enum": [
        -                  "CESMM4",
        -                  "NRM2",
        -                  "SMM7",
        -                  "MMHW"
        -                ],
        -                "type": "string"
        -              },
        -              "text_summary": {
        -                "maxLength": 2000,
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "totals_summary": {
        -                "additionalProperties": false,
        -                "description": "Schema § 1.4 — totals_summary as a typed wrapper around the free-form dict.\n\nWire shape is a flat object (`{\"concrete_m3\": {...}, \"rebar_t\": {...}}`).\nWe model it as `RootModel`-equivalent via `model_config(extra=\"allow\")`\n+ a single `__root__`-style `entries` dict. Pydantic v2 recommends\n`RootModel` for free-form roots; using a wrapper class keeps the import\nsurface uniform with the rest of this module.",
        -                "properties": {
        -                  "entries": {
        -                    "additionalProperties": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.4 — single material/work-class total entry.",
        -                      "properties": {
        -                        "quantity": {
        -                          "minimum": 0,
        -                          "type": "number"
        -                        },
        -                        "unit": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "quantity",
        -                        "unit"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "object"
        -                  }
        -                },
        -                "type": "object"
        -              }
        -            },
        -            "required": [
        -              "assembly_slug",
        -              "standard",
        -              "parameters_used",
        -              "boq_rows",
        -              "totals_summary",
        -              "text_summary"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      },
        -      "error": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        -            "properties": {
        -              "code": {
        -                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        -                "enum": [
        -                  "RATE_LIMIT_EXCEEDED",
        -                  "TIER_INSUFFICIENT",
        -                  "INVALID_INPUT",
        -                  "SCHEMA_VERSION_MISMATCH",
        -                  "SCHEMA_INVARIANT_VIOLATION",
        -                  "UPSTREAM_TIMEOUT",
        -                  "BACKEND_FAILURE",
        -                  "IP_BLOCKED",
        -                  "RESOURCE_NOT_FOUND",
        -                  "RENDER_FAILURE",
        -                  "OCR_LOW_CONFIDENCE",
        -                  "MANUAL_REVIEW_REQUIRED",
        -                  "ACCEPTANCE_REQUIRED",
        -                  "INVALID_TOKEN"
        -                ],
        -                "type": "string"
        -              },
        -              "details": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "message": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "recoverable": {
        -                "type": "boolean"
        -              },
        -              "retry_after_seconds": {
        -                "anyOf": [
        -                  {
        -                    "minimum": 0,
        -                    "type": "integer"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              }
        -            },
        -            "required": [
        -              "code",
        -              "message",
        -              "recoverable"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      }
        -    },
        -    "required": [
        -      "_meta"
        -    ],
        -    "type": "object"
        -  },
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "_meta": {
        -        "additionalProperties": false,
        -        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        -        "properties": {
        -          "deliverables": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        -                "properties": {
        -                  "docx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "dxf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "expires_at": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  },
        -                  "pdf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "xlsx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "expires_at"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "document_id": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "issued_at": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "rate_limit_remaining": {
        -            "anyOf": [
        -              {
        -                "minimum": 0,
        -                "type": "integer"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "request_id": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "schema_version": {
        -            "const": "1.0.0",
        -            "default": "1.0.0",
        -            "type": "string"
        -          },
        -          "scope_boundary": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        -                "properties": {
        -                  "not_in_scope": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "produced": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "recommended_companions": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "type": "string"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "produced",
        -                  "not_in_scope"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tier": {
        -            "enum": [
        -              "free",
        -              "paid"
        -            ],
        -            "type": "string"
        -          },
        -          "tier_upgrade": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        -                "properties": {
        -                  "available_tiers": {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        -                      "properties": {
        -                        "billing": {
        -                          "enum": [
        -                            "one_off",
        -                            "monthly",
        -                            "annual"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "currency": {
        -                          "enum": [
        -                            "GBP",
        -                            "SGD",
        -                            "EUR",
        -                            "USD",
        -                            "CAD",
        -                            "AUD",
        -                            "NZD",
        -                            "MYR"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "display_name": {
        -                          "type": "string"
        -                        },
        -                        "price_local": {
        -                          "type": "number"
        -                        },
        -                        "tier_slug": {
        -                          "enum": [
        -                            "7_day_pass",
        -                            "solo",
        -                            "studio",
        -                            "practice"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "unlock_summary": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "tier_slug",
        -                        "display_name",
        -                        "price_local",
        -                        "currency",
        -                        "billing",
        -                        "unlock_summary"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "current_tier": {
        -                    "const": "free",
        -                    "default": "free",
        -                    "type": "string"
        -                  },
        -                  "pass_credit": {
        -                    "anyOf": [
        -                      {
        -                        "additionalProperties": false,
        -                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        -                        "properties": {
        -                          "amount_local": {
        -                            "type": "number"
        -                          },
        -                          "applies_to": {
        -                            "const": "solo_first_month",
        -                            "default": "solo_first_month",
        -                            "type": "string"
        -                          },
        -                          "currency": {
        -                            "type": "string"
        -                          },
        -                          "redeemable_until": {
        -                            "type": "string"
        -                          }
        -                        },
        -                        "required": [
        -                          "amount_local",
        -                          "currency",
        -                          "redeemable_until"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "pricing_url": {
        -                    "default": "https://civilquants.com/pricing",
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "available_tiers"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tos_url": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "upgrade_hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "warranty_disclaimer": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          }
        -        },
        -        "required": [
        -          "request_id",
        -          "issued_at",
        -          "tier"
        -        ],
        -        "type": "object"
        -      },
        -      "data": {
        -        "default": null,
        -        "title": "Data"
        -      },
        -      "error": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        -            "properties": {
        -              "code": {
        -                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        -                "enum": [
        -                  "RATE_LIMIT_EXCEEDED",
        -                  "TIER_INSUFFICIENT",
        -                  "INVALID_INPUT",
        -                  "SCHEMA_VERSION_MISMATCH",
        -                  "SCHEMA_INVARIANT_VIOLATION",
        -                  "UPSTREAM_TIMEOUT",
        -                  "BACKEND_FAILURE",
        -                  "IP_BLOCKED",
        -                  "RESOURCE_NOT_FOUND",
        -                  "RENDER_FAILURE",
        -                  "OCR_LOW_CONFIDENCE",
        -                  "MANUAL_REVIEW_REQUIRED",
        -                  "ACCEPTANCE_REQUIRED",
        -                  "INVALID_TOKEN"
        -                ],
        -                "type": "string"
        -              },
        -              "details": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "message": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "recoverable": {
        -                "type": "boolean"
        -              },
        -              "retry_after_seconds": {
        -                "anyOf": [
        -                  {
        -                    "minimum": 0,
        -                    "type": "integer"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              }
        -            },
        -            "required": [
        -              "code",
        -              "message",
        -              "recoverable"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      }
        -    },
        -    "required": [
        -      "_meta"
        -    ],
        -    "type": "object"
        -  }
        -]New value: +[
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "_meta": {
        +        "additionalProperties": false,
        +        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        +        "properties": {
        +          "deliverables": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        +                "properties": {
        +                  "docx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "dxf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "expires_at": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  },
        +                  "pdf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "xlsx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "expires_at"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "document_id": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "issued_at": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "rate_limit_remaining": {
        +            "anyOf": [
        +              {
        +                "minimum": 0,
        +                "type": "integer"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "request_id": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "schema_version": {
        +            "const": "1.0.0",
        +            "default": "1.0.0",
        +            "type": "string"
        +          },
        +          "scope_boundary": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        +                "properties": {
        +                  "not_in_scope": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "produced": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "recommended_companions": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "type": "string"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "produced",
        +                  "not_in_scope"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tier": {
        +            "enum": [
        +              "free",
        +              "paid"
        +            ],
        +            "type": "string"
        +          },
        +          "tier_upgrade": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        +                "properties": {
        +                  "available_tiers": {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        +                      "properties": {
        +                        "billing": {
        +                          "enum": [
        +                            "one_off",
        +                            "monthly",
        +                            "annual"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "currency": {
        +                          "enum": [
        +                            "GBP",
        +                            "SGD",
        +                            "EUR",
        +                            "USD",
        +                            "CAD",
        +                            "AUD",
        +                            "NZD",
        +                            "MYR"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "display_name": {
        +                          "type": "string"
        +                        },
        +                        "price_local": {
        +                          "type": "number"
        +                        },
        +                        "tier_slug": {
        +                          "enum": [
        +                            "7_day_pass",
        +                            "solo",
        +                            "studio",
        +                            "practice"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "unlock_summary": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "tier_slug",
        +                        "display_name",
        +                        "price_local",
        +                        "currency",
        +                        "billing",
        +                        "unlock_summary"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "current_tier": {
        +                    "const": "free",
        +                    "default": "free",
        +                    "type": "string"
        +                  },
        +                  "pass_credit": {
        +                    "anyOf": [
        +                      {
        +                        "additionalProperties": false,
        +                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        +                        "properties": {
        +                          "amount_local": {
        +                            "type": "number"
        +                          },
        +                          "applies_to": {
        +                            "const": "solo_first_month",
        +                            "default": "solo_first_month",
        +                            "type": "string"
        +                          },
        +                          "currency": {
        +                            "type": "string"
        +                          },
        +                          "redeemable_until": {
        +                            "type": "string"
        +                          }
        +                        },
        +                        "required": [
        +                          "amount_local",
        +                          "currency",
        +                          "redeemable_until"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "pricing_url": {
        +                    "default": "https://civilquants.com/pricing",
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "available_tiers"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tos_url": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "upgrade_hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "warranty_disclaimer": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          }
        +        },
        +        "required": [
        +          "request_id",
        +          "issued_at",
        +          "tier"
        +        ],
        +        "type": "object"
        +      },
        +      "data": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Schema § 1.1 — the typed payload returned inside `MCPResponse[ComputeResult]`.\n\nFree-tier responses MUST omit `drawings` and `audit_trail` (the bridge\nenforces this); paid-tier responses populate both. `text_summary` is\nbounded to 2000 chars — keeps the LLM-facing summary token-cheap and\nforces longer narrative into BoQ row descriptions where it belongs.\n`warnings` is the non-fatal geometry advisory list (both tiers).",
        +            "properties": {
        +              "assembly_slug": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "audit_trail": {
        +                "anyOf": [
        +                  {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.7 — paid-tier audit-trail entry.\n\nOne entry per BoQ row; `boq_row_index` ties to the row position in\n`ComputeResult.boq_rows`. `derivation` is the human-readable formula\nwalk-through; `formula` is the optional formal expression.",
        +                      "properties": {
        +                        "boq_row_index": {
        +                          "minimum": 0,
        +                          "type": "integer"
        +                        },
        +                        "derivation": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "formula": {
        +                          "anyOf": [
        +                            {
        +                              "type": "string"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ],
        +                          "default": null
        +                        },
        +                        "id": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "parameters_referenced": {
        +                          "items": {
        +                            "type": "string"
        +                          },
        +                          "type": "array"
        +                        }
        +                      },
        +                      "required": [
        +                        "id",
        +                        "boq_row_index",
        +                        "derivation"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "boq_rows": {
        +                "items": {
        +                  "additionalProperties": false,
        +                  "description": "Schema § 1.3 — a single bill row in the requested standard's format.\n\n`description` is the non-verbatim functional description per spec § 13.9 /\n§ 15 invariant — NEVER reproduces a standard's verbatim clause text.\n`rate` / `amount` ship null because rates are commodity data the customer\nowns; the engine's job is the measurement, not the pricing.",
        +                  "properties": {
        +                    "amount": {
        +                      "anyOf": [
        +                        {
        +                          "type": "number"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "attribution": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "audit_id": {
        +                      "anyOf": [
        +                        {
        +                          "type": "string"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "description": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "quantity": {
        +                      "minimum": 0,
        +                      "type": "number"
        +                    },
        +                    "rate": {
        +                      "anyOf": [
        +                        {
        +                          "type": "number"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "unit": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "work_section": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    }
        +                  },
        +                  "required": [
        +                    "work_section",
        +                    "description",
        +                    "quantity",
        +                    "unit",
        +                    "attribution"
        +                  ],
        +                  "type": "object"
        +                },
        +                "type": "array"
        +              },
        +              "drawings": {
        +                "anyOf": [
        +                  {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.6 — paid-tier drawing artefact pointer.\n\n`url` is an R2-signed URL; expiry is carried in `_meta.deliverables.expires_at`\non the envelope (not duplicated here). `layers` is DXF-only; PDF/SVG\ncallers omit it.",
        +                      "properties": {
        +                        "drawing_type": {
        +                          "enum": [
        +                            "section",
        +                            "plan",
        +                            "elevation",
        +                            "isometric",
        +                            "detail"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "format": {
        +                          "enum": [
        +                            "DXF",
        +                            "PDF",
        +                            "SVG"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "layers": {
        +                          "anyOf": [
        +                            {
        +                              "items": {
        +                                "type": "string"
        +                              },
        +                              "type": "array"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ],
        +                          "default": null
        +                        },
        +                        "scale": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "sheet_size": {
        +                          "enum": [
        +                            "A1",
        +                            "A2",
        +                            "A3",
        +                            "A4"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "url": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "drawing_type",
        +                        "format",
        +                        "url",
        +                        "sheet_size",
        +                        "scale"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "parameters_used": {
        +                "additionalProperties": false,
        +                "description": "Schema § 1.2 — the parameter snapshot the engine actually used.\n\nSplits user-supplied values from engine defaults so customers can see\nwhich numbers came from them and which the engine filled in. Every\ndefaulted parameter SHOULD have a corresponding entry in `assumptions`\n— the bridge layer enforces this when wrapping engine output.",
        +                "properties": {
        +                  "assumptions": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "engine_defaults": {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  "resolved_from_description": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "additionalProperties": false,
        +                          "description": "Schema § 1.2 — a parameter resolved by the forgiving-input layer.\n\nPopulated by the Track B-Forgiving Haiku-4.5 resolution pass; until that\nlayer lands, instances are constructed only by tests. `source` distinguishes\nthe resolution path so customers can audit which fields were inferred.",
        +                          "properties": {
        +                            "confidence": {
        +                              "anyOf": [
        +                                {
        +                                  "enum": [
        +                                    "high",
        +                                    "medium",
        +                                    "low"
        +                                  ],
        +                                  "type": "string"
        +                                },
        +                                {
        +                                  "type": "null"
        +                                }
        +                              ],
        +                              "default": null
        +                            },
        +                            "field_name": {
        +                              "minLength": 1,
        +                              "type": "string"
        +                            },
        +                            "resolved_value": {},
        +                            "source": {
        +                              "enum": [
        +                                "description_field",
        +                                "haiku_resolution",
        +                                "engine_default"
        +                              ],
        +                              "type": "string"
        +                            }
        +                          },
        +                          "required": [
        +                            "field_name",
        +                            "resolved_value",
        +                            "source"
        +                          ],
        +                          "type": "object"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "user_supplied": {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  }
        +                },
        +                "type": "object"
        +              },
        +              "standard": {
        +                "enum": [
        +                  "CESMM4",
        +                  "NRM2",
        +                  "SMM7",
        +                  "MMHW"
        +                ],
        +                "type": "string"
        +              },
        +              "text_summary": {
        +                "maxLength": 2000,
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "totals_summary": {
        +                "additionalProperties": false,
        +                "description": "Schema § 1.4 — totals_summary as a typed wrapper around the free-form dict.\n\nWire shape is a flat object (`{\"concrete_m3\": {...}, \"rebar_t\": {...}}`).\nWe model it as `RootModel`-equivalent via `model_config(extra=\"allow\")`\n+ a single `__root__`-style `entries` dict. Pydantic v2 recommends\n`RootModel` for free-form roots; using a wrapper class keeps the import\nsurface uniform with the rest of this module.",
        +                "properties": {
        +                  "entries": {
        +                    "additionalProperties": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.4 — single material/work-class total entry.",
        +                      "properties": {
        +                        "quantity": {
        +                          "minimum": 0,
        +                          "type": "number"
        +                        },
        +                        "unit": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "quantity",
        +                        "unit"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "object"
        +                  }
        +                },
        +                "type": "object"
        +              },
        +              "warnings": {
        +                "items": {
        +                  "additionalProperties": false,
        +                  "description": "Schema § 1.8 — a non-fatal geometry advisory (56th-fire T2).\n\nThe wire projection of the engine's `core.GeometryWarning`. Advisory only:\na warning NEVER changes a measured quantity — it flags geometry that is\nvalid but likely a mistake (e.g. a stale dependent-height default). Present\non BOTH tiers — a correctness/safety signal, not a paid feature.",
        +                  "properties": {
        +                    "affected_params": {
        +                      "items": {
        +                        "type": "string"
        +                      },
        +                      "type": "array"
        +                    },
        +                    "code": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "detail": {
        +                      "additionalProperties": {
        +                        "type": "number"
        +                      },
        +                      "type": "object"
        +                    },
        +                    "message": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "severity": {
        +                      "enum": [
        +                        "info",
        +                        "advisory",
        +                        "caution"
        +                      ],
        +                      "type": "string"
        +                    }
        +                  },
        +                  "required": [
        +                    "code",
        +                    "severity",
        +                    "message"
        +                  ],
        +                  "type": "object"
        +                },
        +                "type": "array"
        +              }
        +            },
        +            "required": [
        +              "assembly_slug",
        +              "standard",
        +              "parameters_used",
        +              "boq_rows",
        +              "totals_summary",
        +              "text_summary"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      },
        +      "error": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        +            "properties": {
        +              "code": {
        +                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        +                "enum": [
        +                  "RATE_LIMIT_EXCEEDED",
        +                  "TIER_INSUFFICIENT",
        +                  "INVALID_INPUT",
        +                  "SCHEMA_VERSION_MISMATCH",
        +                  "SCHEMA_INVARIANT_VIOLATION",
        +                  "UPSTREAM_TIMEOUT",
        +                  "BACKEND_FAILURE",
        +                  "IP_BLOCKED",
        +                  "RESOURCE_NOT_FOUND",
        +                  "RENDER_FAILURE",
        +                  "OCR_LOW_CONFIDENCE",
        +                  "MANUAL_REVIEW_REQUIRED",
        +                  "ACCEPTANCE_REQUIRED",
        +                  "INVALID_TOKEN"
        +                ],
        +                "type": "string"
        +              },
        +              "details": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "message": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "recoverable": {
        +                "type": "boolean"
        +              },
        +              "retry_after_seconds": {
        +                "anyOf": [
        +                  {
        +                    "minimum": 0,
        +                    "type": "integer"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              }
        +            },
        +            "required": [
        +              "code",
        +              "message",
        +              "recoverable"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      }
        +    },
        +    "required": [
        +      "_meta"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "_meta": {
        +        "additionalProperties": false,
        +        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        +        "properties": {
        +          "deliverables": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        +                "properties": {
        +                  "docx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "dxf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "expires_at": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  },
        +                  "pdf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "xlsx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "expires_at"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "document_id": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "issued_at": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "rate_limit_remaining": {
        +            "anyOf": [
        +              {
        +                "minimum": 0,
        +                "type": "integer"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "request_id": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "schema_version": {
        +            "const": "1.0.0",
        +            "default": "1.0.0",
        +            "type": "string"
        +          },
        +          "scope_boundary": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        +                "properties": {
        +                  "not_in_scope": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "produced": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "recommended_companions": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "type": "string"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "produced",
        +                  "not_in_scope"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tier": {
        +            "enum": [
        +              "free",
        +              "paid"
        +            ],
        +            "type": "string"
        +          },
        +          "tier_upgrade": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        +                "properties": {
        +                  "available_tiers": {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        +                      "properties": {
        +                        "billing": {
        +                          "enum": [
        +                            "one_off",
        +                            "monthly",
        +                            "annual"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "currency": {
        +                          "enum": [
        +                            "GBP",
        +                            "SGD",
        +                            "EUR",
        +                            "USD",
        +                            "CAD",
        +                            "AUD",
        +                            "NZD",
        +                            "MYR"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "display_name": {
        +                          "type": "string"
        +                        },
        +                        "price_local": {
        +                          "type": "number"
        +                        },
        +                        "tier_slug": {
        +                          "enum": [
        +                            "7_day_pass",
        +                            "solo",
        +                            "studio",
        +                            "practice"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "unlock_summary": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "tier_slug",
        +                        "display_name",
        +                        "price_local",
        +                        "currency",
        +                        "billing",
        +                        "unlock_summary"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "current_tier": {
        +                    "const": "free",
        +                    "default": "free",
        +                    "type": "string"
        +                  },
        +                  "pass_credit": {
        +                    "anyOf": [
        +                      {
        +                        "additionalProperties": false,
        +                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        +                        "properties": {
        +                          "amount_local": {
        +                            "type": "number"
        +                          },
        +                          "applies_to": {
        +                            "const": "solo_first_month",
        +                            "default": "solo_first_month",
        +                            "type": "string"
        +                          },
        +                          "currency": {
        +                            "type": "string"
        +                          },
        +                          "redeemable_until": {
        +                            "type": "string"
        +                          }
        +                        },
        +                        "required": [
        +                          "amount_local",
        +                          "currency",
        +                          "redeemable_until"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "pricing_url": {
        +                    "default": "https://civilquants.com/pricing",
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "available_tiers"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tos_url": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "upgrade_hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "warranty_disclaimer": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          }
        +        },
        +        "required": [
        +          "request_id",
        +          "issued_at",
        +          "tier"
        +        ],
        +        "type": "object"
        +      },
        +      "data": {
        +        "default": null,
        +        "title": "Data"
        +      },
        +      "error": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        +            "properties": {
        +              "code": {
        +                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        +                "enum": [
        +                  "RATE_LIMIT_EXCEEDED",
        +                  "TIER_INSUFFICIENT",
        +                  "INVALID_INPUT",
        +                  "SCHEMA_VERSION_MISMATCH",
        +                  "SCHEMA_INVARIANT_VIOLATION",
        +                  "UPSTREAM_TIMEOUT",
        +                  "BACKEND_FAILURE",
        +                  "IP_BLOCKED",
        +                  "RESOURCE_NOT_FOUND",
        +                  "RENDER_FAILURE",
        +                  "OCR_LOW_CONFIDENCE",
        +                  "MANUAL_REVIEW_REQUIRED",
        +                  "ACCEPTANCE_REQUIRED",
        +                  "INVALID_TOKEN"
        +                ],
        +                "type": "string"
        +              },
        +              "details": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "message": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "recoverable": {
        +                "type": "boolean"
        +              },
        +              "retry_after_seconds": {
        +                "anyOf": [
        +                  {
        +                    "minimum": 0,
        +                    "type": "integer"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              }
        +            },
        +            "required": [
        +              "code",
        +              "message",
        +              "recoverable"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      }
        +    },
        +    "required": [
        +      "_meta"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedcompute_gravity_wall1 field changed
      • changedOutput schema / properties / result / anyOf
        Previous value: -[
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "_meta": {
        -        "additionalProperties": false,
        -        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        -        "properties": {
        -          "deliverables": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        -                "properties": {
        -                  "docx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "dxf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "expires_at": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  },
        -                  "pdf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "xlsx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "expires_at"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "document_id": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "issued_at": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "rate_limit_remaining": {
        -            "anyOf": [
        -              {
        -                "minimum": 0,
        -                "type": "integer"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "request_id": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "schema_version": {
        -            "const": "1.0.0",
        -            "default": "1.0.0",
        -            "type": "string"
        -          },
        -          "scope_boundary": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        -                "properties": {
        -                  "not_in_scope": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "produced": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "recommended_companions": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "type": "string"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "produced",
        -                  "not_in_scope"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tier": {
        -            "enum": [
        -              "free",
        -              "paid"
        -            ],
        -            "type": "string"
        -          },
        -          "tier_upgrade": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        -                "properties": {
        -                  "available_tiers": {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        -                      "properties": {
        -                        "billing": {
        -                          "enum": [
        -                            "one_off",
        -                            "monthly",
        -                            "annual"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "currency": {
        -                          "enum": [
        -                            "GBP",
        -                            "SGD",
        -                            "EUR",
        -                            "USD",
        -                            "CAD",
        -                            "AUD",
        -                            "NZD",
        -                            "MYR"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "display_name": {
        -                          "type": "string"
        -                        },
        -                        "price_local": {
        -                          "type": "number"
        -                        },
        -                        "tier_slug": {
        -                          "enum": [
        -                            "7_day_pass",
        -                            "solo",
        -                            "studio",
        -                            "practice"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "unlock_summary": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "tier_slug",
        -                        "display_name",
        -                        "price_local",
        -                        "currency",
        -                        "billing",
        -                        "unlock_summary"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "current_tier": {
        -                    "const": "free",
        -                    "default": "free",
        -                    "type": "string"
        -                  },
        -                  "pass_credit": {
        -                    "anyOf": [
        -                      {
        -                        "additionalProperties": false,
        -                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        -                        "properties": {
        -                          "amount_local": {
        -                            "type": "number"
        -                          },
        -                          "applies_to": {
        -                            "const": "solo_first_month",
        -                            "default": "solo_first_month",
        -                            "type": "string"
        -                          },
        -                          "currency": {
        -                            "type": "string"
        -                          },
        -                          "redeemable_until": {
        -                            "type": "string"
        -                          }
        -                        },
        -                        "required": [
        -                          "amount_local",
        -                          "currency",
        -                          "redeemable_until"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "pricing_url": {
        -                    "default": "https://civilquants.com/pricing",
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "available_tiers"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tos_url": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "upgrade_hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "warranty_disclaimer": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          }
        -        },
        -        "required": [
        -          "request_id",
        -          "issued_at",
        -          "tier"
        -        ],
        -        "type": "object"
        -      },
        -      "data": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Schema § 1.1 — the typed payload returned inside `MCPResponse[ComputeResult]`.\n\nFree-tier responses MUST omit `drawings` and `audit_trail` (the bridge\nenforces this); paid-tier responses populate both. `text_summary` is\nbounded to 2000 chars — keeps the LLM-facing summary token-cheap and\nforces longer narrative into BoQ row descriptions where it belongs.",
        -            "properties": {
        -              "assembly_slug": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "audit_trail": {
        -                "anyOf": [
        -                  {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.7 — paid-tier audit-trail entry.\n\nOne entry per BoQ row; `boq_row_index` ties to the row position in\n`ComputeResult.boq_rows`. `derivation` is the human-readable formula\nwalk-through; `formula` is the optional formal expression.",
        -                      "properties": {
        -                        "boq_row_index": {
        -                          "minimum": 0,
        -                          "type": "integer"
        -                        },
        -                        "derivation": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "formula": {
        -                          "anyOf": [
        -                            {
        -                              "type": "string"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ],
        -                          "default": null
        -                        },
        -                        "id": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "parameters_referenced": {
        -                          "items": {
        -                            "type": "string"
        -                          },
        -                          "type": "array"
        -                        }
        -                      },
        -                      "required": [
        -                        "id",
        -                        "boq_row_index",
        -                        "derivation"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "boq_rows": {
        -                "items": {
        -                  "additionalProperties": false,
        -                  "description": "Schema § 1.3 — a single bill row in the requested standard's format.\n\n`description` is the non-verbatim functional description per spec § 13.9 /\n§ 15 invariant — NEVER reproduces a standard's verbatim clause text.\n`rate` / `amount` ship null because rates are commodity data the customer\nowns; the engine's job is the measurement, not the pricing.",
        -                  "properties": {
        -                    "amount": {
        -                      "anyOf": [
        -                        {
        -                          "type": "number"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "attribution": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "audit_id": {
        -                      "anyOf": [
        -                        {
        -                          "type": "string"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "description": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "quantity": {
        -                      "minimum": 0,
        -                      "type": "number"
        -                    },
        -                    "rate": {
        -                      "anyOf": [
        -                        {
        -                          "type": "number"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "unit": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "work_section": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    }
        -                  },
        -                  "required": [
        -                    "work_section",
        -                    "description",
        -                    "quantity",
        -                    "unit",
        -                    "attribution"
        -                  ],
        -                  "type": "object"
        -                },
        -                "type": "array"
        -              },
        -              "drawings": {
        -                "anyOf": [
        -                  {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.6 — paid-tier drawing artefact pointer.\n\n`url` is an R2-signed URL; expiry is carried in `_meta.deliverables.expires_at`\non the envelope (not duplicated here). `layers` is DXF-only; PDF/SVG\ncallers omit it.",
        -                      "properties": {
        -                        "drawing_type": {
        -                          "enum": [
        -                            "section",
        -                            "plan",
        -                            "elevation",
        -                            "isometric",
        -                            "detail"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "format": {
        -                          "enum": [
        -                            "DXF",
        -                            "PDF",
        -                            "SVG"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "layers": {
        -                          "anyOf": [
        -                            {
        -                              "items": {
        -                                "type": "string"
        -                              },
        -                              "type": "array"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ],
        -                          "default": null
        -                        },
        -                        "scale": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "sheet_size": {
        -                          "enum": [
        -                            "A1",
        -                            "A2",
        -                            "A3",
        -                            "A4"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "url": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "drawing_type",
        -                        "format",
        -                        "url",
        -                        "sheet_size",
        -                        "scale"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "parameters_used": {
        -                "additionalProperties": false,
        -                "description": "Schema § 1.2 — the parameter snapshot the engine actually used.\n\nSplits user-supplied values from engine defaults so customers can see\nwhich numbers came from them and which the engine filled in. Every\ndefaulted parameter SHOULD have a corresponding entry in `assumptions`\n— the bridge layer enforces this when wrapping engine output.",
        -                "properties": {
        -                  "assumptions": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "engine_defaults": {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  "resolved_from_description": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "additionalProperties": false,
        -                          "description": "Schema § 1.2 — a parameter resolved by the forgiving-input layer.\n\nPopulated by the Track B-Forgiving Haiku-4.5 resolution pass; until that\nlayer lands, instances are constructed only by tests. `source` distinguishes\nthe resolution path so customers can audit which fields were inferred.",
        -                          "properties": {
        -                            "confidence": {
        -                              "anyOf": [
        -                                {
        -                                  "enum": [
        -                                    "high",
        -                                    "medium",
        -                                    "low"
        -                                  ],
        -                                  "type": "string"
        -                                },
        -                                {
        -                                  "type": "null"
        -                                }
        -                              ],
        -                              "default": null
        -                            },
        -                            "field_name": {
        -                              "minLength": 1,
        -                              "type": "string"
        -                            },
        -                            "resolved_value": {},
        -                            "source": {
        -                              "enum": [
        -                                "description_field",
        -                                "haiku_resolution",
        -                                "engine_default"
        -                              ],
        -                              "type": "string"
        -                            }
        -                          },
        -                          "required": [
        -                            "field_name",
        -                            "resolved_value",
        -                            "source"
        -                          ],
        -                          "type": "object"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "user_supplied": {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  }
        -                },
        -                "type": "object"
        -              },
        -              "standard": {
        -                "enum": [
        -                  "CESMM4",
        -                  "NRM2",
        -                  "SMM7",
        -                  "MMHW"
        -                ],
        -                "type": "string"
        -              },
        -              "text_summary": {
        -                "maxLength": 2000,
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "totals_summary": {
        -                "additionalProperties": false,
        -                "description": "Schema § 1.4 — totals_summary as a typed wrapper around the free-form dict.\n\nWire shape is a flat object (`{\"concrete_m3\": {...}, \"rebar_t\": {...}}`).\nWe model it as `RootModel`-equivalent via `model_config(extra=\"allow\")`\n+ a single `__root__`-style `entries` dict. Pydantic v2 recommends\n`RootModel` for free-form roots; using a wrapper class keeps the import\nsurface uniform with the rest of this module.",
        -                "properties": {
        -                  "entries": {
        -                    "additionalProperties": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.4 — single material/work-class total entry.",
        -                      "properties": {
        -                        "quantity": {
        -                          "minimum": 0,
        -                          "type": "number"
        -                        },
        -                        "unit": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "quantity",
        -                        "unit"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "object"
        -                  }
        -                },
        -                "type": "object"
        -              }
        -            },
        -            "required": [
        -              "assembly_slug",
        -              "standard",
        -              "parameters_used",
        -              "boq_rows",
        -              "totals_summary",
        -              "text_summary"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      },
        -      "error": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        -            "properties": {
        -              "code": {
        -                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        -                "enum": [
        -                  "RATE_LIMIT_EXCEEDED",
        -                  "TIER_INSUFFICIENT",
        -                  "INVALID_INPUT",
        -                  "SCHEMA_VERSION_MISMATCH",
        -                  "SCHEMA_INVARIANT_VIOLATION",
        -                  "UPSTREAM_TIMEOUT",
        -                  "BACKEND_FAILURE",
        -                  "IP_BLOCKED",
        -                  "RESOURCE_NOT_FOUND",
        -                  "RENDER_FAILURE",
        -                  "OCR_LOW_CONFIDENCE",
        -                  "MANUAL_REVIEW_REQUIRED",
        -                  "ACCEPTANCE_REQUIRED",
        -                  "INVALID_TOKEN"
        -                ],
        -                "type": "string"
        -              },
        -              "details": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "message": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "recoverable": {
        -                "type": "boolean"
        -              },
        -              "retry_after_seconds": {
        -                "anyOf": [
        -                  {
        -                    "minimum": 0,
        -                    "type": "integer"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              }
        -            },
        -            "required": [
        -              "code",
        -              "message",
        -              "recoverable"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      }
        -    },
        -    "required": [
        -      "_meta"
        -    ],
        -    "type": "object"
        -  },
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "_meta": {
        -        "additionalProperties": false,
        -        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        -        "properties": {
        -          "deliverables": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        -                "properties": {
        -                  "docx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "dxf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "expires_at": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  },
        -                  "pdf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "xlsx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "expires_at"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "document_id": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "issued_at": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "rate_limit_remaining": {
        -            "anyOf": [
        -              {
        -                "minimum": 0,
        -                "type": "integer"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "request_id": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "schema_version": {
        -            "const": "1.0.0",
        -            "default": "1.0.0",
        -            "type": "string"
        -          },
        -          "scope_boundary": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        -                "properties": {
        -                  "not_in_scope": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "produced": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "recommended_companions": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "type": "string"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "produced",
        -                  "not_in_scope"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tier": {
        -            "enum": [
        -              "free",
        -              "paid"
        -            ],
        -            "type": "string"
        -          },
        -          "tier_upgrade": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        -                "properties": {
        -                  "available_tiers": {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        -                      "properties": {
        -                        "billing": {
        -                          "enum": [
        -                            "one_off",
        -                            "monthly",
        -                            "annual"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "currency": {
        -                          "enum": [
        -                            "GBP",
        -                            "SGD",
        -                            "EUR",
        -                            "USD",
        -                            "CAD",
        -                            "AUD",
        -                            "NZD",
        -                            "MYR"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "display_name": {
        -                          "type": "string"
        -                        },
        -                        "price_local": {
        -                          "type": "number"
        -                        },
        -                        "tier_slug": {
        -                          "enum": [
        -                            "7_day_pass",
        -                            "solo",
        -                            "studio",
        -                            "practice"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "unlock_summary": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "tier_slug",
        -                        "display_name",
        -                        "price_local",
        -                        "currency",
        -                        "billing",
        -                        "unlock_summary"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "current_tier": {
        -                    "const": "free",
        -                    "default": "free",
        -                    "type": "string"
        -                  },
        -                  "pass_credit": {
        -                    "anyOf": [
        -                      {
        -                        "additionalProperties": false,
        -                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        -                        "properties": {
        -                          "amount_local": {
        -                            "type": "number"
        -                          },
        -                          "applies_to": {
        -                            "const": "solo_first_month",
        -                            "default": "solo_first_month",
        -                            "type": "string"
        -                          },
        -                          "currency": {
        -                            "type": "string"
        -                          },
        -                          "redeemable_until": {
        -                            "type": "string"
        -                          }
        -                        },
        -                        "required": [
        -                          "amount_local",
        -                          "currency",
        -                          "redeemable_until"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "pricing_url": {
        -                    "default": "https://civilquants.com/pricing",
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "available_tiers"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tos_url": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "upgrade_hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "warranty_disclaimer": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          }
        -        },
        -        "required": [
        -          "request_id",
        -          "issued_at",
        -          "tier"
        -        ],
        -        "type": "object"
        -      },
        -      "data": {
        -        "default": null,
        -        "title": "Data"
        -      },
        -      "error": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        -            "properties": {
        -              "code": {
        -                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        -                "enum": [
        -                  "RATE_LIMIT_EXCEEDED",
        -                  "TIER_INSUFFICIENT",
        -                  "INVALID_INPUT",
        -                  "SCHEMA_VERSION_MISMATCH",
        -                  "SCHEMA_INVARIANT_VIOLATION",
        -                  "UPSTREAM_TIMEOUT",
        -                  "BACKEND_FAILURE",
        -                  "IP_BLOCKED",
        -                  "RESOURCE_NOT_FOUND",
        -                  "RENDER_FAILURE",
        -                  "OCR_LOW_CONFIDENCE",
        -                  "MANUAL_REVIEW_REQUIRED",
        -                  "ACCEPTANCE_REQUIRED",
        -                  "INVALID_TOKEN"
        -                ],
        -                "type": "string"
        -              },
        -              "details": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "message": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "recoverable": {
        -                "type": "boolean"
        -              },
        -              "retry_after_seconds": {
        -                "anyOf": [
        -                  {
        -                    "minimum": 0,
        -                    "type": "integer"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              }
        -            },
        -            "required": [
        -              "code",
        -              "message",
        -              "recoverable"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      }
        -    },
        -    "required": [
        -      "_meta"
        -    ],
        -    "type": "object"
        -  }
        -]New value: +[
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "_meta": {
        +        "additionalProperties": false,
        +        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        +        "properties": {
        +          "deliverables": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        +                "properties": {
        +                  "docx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "dxf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "expires_at": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  },
        +                  "pdf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "xlsx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "expires_at"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "document_id": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "issued_at": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "rate_limit_remaining": {
        +            "anyOf": [
        +              {
        +                "minimum": 0,
        +                "type": "integer"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "request_id": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "schema_version": {
        +            "const": "1.0.0",
        +            "default": "1.0.0",
        +            "type": "string"
        +          },
        +          "scope_boundary": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        +                "properties": {
        +                  "not_in_scope": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "produced": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "recommended_companions": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "type": "string"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "produced",
        +                  "not_in_scope"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tier": {
        +            "enum": [
        +              "free",
        +              "paid"
        +            ],
        +            "type": "string"
        +          },
        +          "tier_upgrade": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        +                "properties": {
        +                  "available_tiers": {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        +                      "properties": {
        +                        "billing": {
        +                          "enum": [
        +                            "one_off",
        +                            "monthly",
        +                            "annual"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "currency": {
        +                          "enum": [
        +                            "GBP",
        +                            "SGD",
        +                            "EUR",
        +                            "USD",
        +                            "CAD",
        +                            "AUD",
        +                            "NZD",
        +                            "MYR"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "display_name": {
        +                          "type": "string"
        +                        },
        +                        "price_local": {
        +                          "type": "number"
        +                        },
        +                        "tier_slug": {
        +                          "enum": [
        +                            "7_day_pass",
        +                            "solo",
        +                            "studio",
        +                            "practice"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "unlock_summary": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "tier_slug",
        +                        "display_name",
        +                        "price_local",
        +                        "currency",
        +                        "billing",
        +                        "unlock_summary"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "current_tier": {
        +                    "const": "free",
        +                    "default": "free",
        +                    "type": "string"
        +                  },
        +                  "pass_credit": {
        +                    "anyOf": [
        +                      {
        +                        "additionalProperties": false,
        +                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        +                        "properties": {
        +                          "amount_local": {
        +                            "type": "number"
        +                          },
        +                          "applies_to": {
        +                            "const": "solo_first_month",
        +                            "default": "solo_first_month",
        +                            "type": "string"
        +                          },
        +                          "currency": {
        +                            "type": "string"
        +                          },
        +                          "redeemable_until": {
        +                            "type": "string"
        +                          }
        +                        },
        +                        "required": [
        +                          "amount_local",
        +                          "currency",
        +                          "redeemable_until"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "pricing_url": {
        +                    "default": "https://civilquants.com/pricing",
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "available_tiers"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tos_url": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "upgrade_hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "warranty_disclaimer": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          }
        +        },
        +        "required": [
        +          "request_id",
        +          "issued_at",
        +          "tier"
        +        ],
        +        "type": "object"
        +      },
        +      "data": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Schema § 1.1 — the typed payload returned inside `MCPResponse[ComputeResult]`.\n\nFree-tier responses MUST omit `drawings` and `audit_trail` (the bridge\nenforces this); paid-tier responses populate both. `text_summary` is\nbounded to 2000 chars — keeps the LLM-facing summary token-cheap and\nforces longer narrative into BoQ row descriptions where it belongs.\n`warnings` is the non-fatal geometry advisory list (both tiers).",
        +            "properties": {
        +              "assembly_slug": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "audit_trail": {
        +                "anyOf": [
        +                  {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.7 — paid-tier audit-trail entry.\n\nOne entry per BoQ row; `boq_row_index` ties to the row position in\n`ComputeResult.boq_rows`. `derivation` is the human-readable formula\nwalk-through; `formula` is the optional formal expression.",
        +                      "properties": {
        +                        "boq_row_index": {
        +                          "minimum": 0,
        +                          "type": "integer"
        +                        },
        +                        "derivation": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "formula": {
        +                          "anyOf": [
        +                            {
        +                              "type": "string"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ],
        +                          "default": null
        +                        },
        +                        "id": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "parameters_referenced": {
        +                          "items": {
        +                            "type": "string"
        +                          },
        +                          "type": "array"
        +                        }
        +                      },
        +                      "required": [
        +                        "id",
        +                        "boq_row_index",
        +                        "derivation"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "boq_rows": {
        +                "items": {
        +                  "additionalProperties": false,
        +                  "description": "Schema § 1.3 — a single bill row in the requested standard's format.\n\n`description` is the non-verbatim functional description per spec § 13.9 /\n§ 15 invariant — NEVER reproduces a standard's verbatim clause text.\n`rate` / `amount` ship null because rates are commodity data the customer\nowns; the engine's job is the measurement, not the pricing.",
        +                  "properties": {
        +                    "amount": {
        +                      "anyOf": [
        +                        {
        +                          "type": "number"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "attribution": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "audit_id": {
        +                      "anyOf": [
        +                        {
        +                          "type": "string"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "description": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "quantity": {
        +                      "minimum": 0,
        +                      "type": "number"
        +                    },
        +                    "rate": {
        +                      "anyOf": [
        +                        {
        +                          "type": "number"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "unit": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "work_section": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    }
        +                  },
        +                  "required": [
        +                    "work_section",
        +                    "description",
        +                    "quantity",
        +                    "unit",
        +                    "attribution"
        +                  ],
        +                  "type": "object"
        +                },
        +                "type": "array"
        +              },
        +              "drawings": {
        +                "anyOf": [
        +                  {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.6 — paid-tier drawing artefact pointer.\n\n`url` is an R2-signed URL; expiry is carried in `_meta.deliverables.expires_at`\non the envelope (not duplicated here). `layers` is DXF-only; PDF/SVG\ncallers omit it.",
        +                      "properties": {
        +                        "drawing_type": {
        +                          "enum": [
        +                            "section",
        +                            "plan",
        +                            "elevation",
        +                            "isometric",
        +                            "detail"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "format": {
        +                          "enum": [
        +                            "DXF",
        +                            "PDF",
        +                            "SVG"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "layers": {
        +                          "anyOf": [
        +                            {
        +                              "items": {
        +                                "type": "string"
        +                              },
        +                              "type": "array"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ],
        +                          "default": null
        +                        },
        +                        "scale": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "sheet_size": {
        +                          "enum": [
        +                            "A1",
        +                            "A2",
        +                            "A3",
        +                            "A4"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "url": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "drawing_type",
        +                        "format",
        +                        "url",
        +                        "sheet_size",
        +                        "scale"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "parameters_used": {
        +                "additionalProperties": false,
        +                "description": "Schema § 1.2 — the parameter snapshot the engine actually used.\n\nSplits user-supplied values from engine defaults so customers can see\nwhich numbers came from them and which the engine filled in. Every\ndefaulted parameter SHOULD have a corresponding entry in `assumptions`\n— the bridge layer enforces this when wrapping engine output.",
        +                "properties": {
        +                  "assumptions": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "engine_defaults": {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  "resolved_from_description": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "additionalProperties": false,
        +                          "description": "Schema § 1.2 — a parameter resolved by the forgiving-input layer.\n\nPopulated by the Track B-Forgiving Haiku-4.5 resolution pass; until that\nlayer lands, instances are constructed only by tests. `source` distinguishes\nthe resolution path so customers can audit which fields were inferred.",
        +                          "properties": {
        +                            "confidence": {
        +                              "anyOf": [
        +                                {
        +                                  "enum": [
        +                                    "high",
        +                                    "medium",
        +                                    "low"
        +                                  ],
        +                                  "type": "string"
        +                                },
        +                                {
        +                                  "type": "null"
        +                                }
        +                              ],
        +                              "default": null
        +                            },
        +                            "field_name": {
        +                              "minLength": 1,
        +                              "type": "string"
        +                            },
        +                            "resolved_value": {},
        +                            "source": {
        +                              "enum": [
        +                                "description_field",
        +                                "haiku_resolution",
        +                                "engine_default"
        +                              ],
        +                              "type": "string"
        +                            }
        +                          },
        +                          "required": [
        +                            "field_name",
        +                            "resolved_value",
        +                            "source"
        +                          ],
        +                          "type": "object"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "user_supplied": {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  }
        +                },
        +                "type": "object"
        +              },
        +              "standard": {
        +                "enum": [
        +                  "CESMM4",
        +                  "NRM2",
        +                  "SMM7",
        +                  "MMHW"
        +                ],
        +                "type": "string"
        +              },
        +              "text_summary": {
        +                "maxLength": 2000,
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "totals_summary": {
        +                "additionalProperties": false,
        +                "description": "Schema § 1.4 — totals_summary as a typed wrapper around the free-form dict.\n\nWire shape is a flat object (`{\"concrete_m3\": {...}, \"rebar_t\": {...}}`).\nWe model it as `RootModel`-equivalent via `model_config(extra=\"allow\")`\n+ a single `__root__`-style `entries` dict. Pydantic v2 recommends\n`RootModel` for free-form roots; using a wrapper class keeps the import\nsurface uniform with the rest of this module.",
        +                "properties": {
        +                  "entries": {
        +                    "additionalProperties": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.4 — single material/work-class total entry.",
        +                      "properties": {
        +                        "quantity": {
        +                          "minimum": 0,
        +                          "type": "number"
        +                        },
        +                        "unit": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "quantity",
        +                        "unit"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "object"
        +                  }
        +                },
        +                "type": "object"
        +              },
        +              "warnings": {
        +                "items": {
        +                  "additionalProperties": false,
        +                  "description": "Schema § 1.8 — a non-fatal geometry advisory (56th-fire T2).\n\nThe wire projection of the engine's `core.GeometryWarning`. Advisory only:\na warning NEVER changes a measured quantity — it flags geometry that is\nvalid but likely a mistake (e.g. a stale dependent-height default). Present\non BOTH tiers — a correctness/safety signal, not a paid feature.",
        +                  "properties": {
        +                    "affected_params": {
        +                      "items": {
        +                        "type": "string"
        +                      },
        +                      "type": "array"
        +                    },
        +                    "code": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "detail": {
        +                      "additionalProperties": {
        +                        "type": "number"
        +                      },
        +                      "type": "object"
        +                    },
        +                    "message": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "severity": {
        +                      "enum": [
        +                        "info",
        +                        "advisory",
        +                        "caution"
        +                      ],
        +                      "type": "string"
        +                    }
        +                  },
        +                  "required": [
        +                    "code",
        +                    "severity",
        +                    "message"
        +                  ],
        +                  "type": "object"
        +                },
        +                "type": "array"
        +              }
        +            },
        +            "required": [
        +              "assembly_slug",
        +              "standard",
        +              "parameters_used",
        +              "boq_rows",
        +              "totals_summary",
        +              "text_summary"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      },
        +      "error": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        +            "properties": {
        +              "code": {
        +                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        +                "enum": [
        +                  "RATE_LIMIT_EXCEEDED",
        +                  "TIER_INSUFFICIENT",
        +                  "INVALID_INPUT",
        +                  "SCHEMA_VERSION_MISMATCH",
        +                  "SCHEMA_INVARIANT_VIOLATION",
        +                  "UPSTREAM_TIMEOUT",
        +                  "BACKEND_FAILURE",
        +                  "IP_BLOCKED",
        +                  "RESOURCE_NOT_FOUND",
        +                  "RENDER_FAILURE",
        +                  "OCR_LOW_CONFIDENCE",
        +                  "MANUAL_REVIEW_REQUIRED",
        +                  "ACCEPTANCE_REQUIRED",
        +                  "INVALID_TOKEN"
        +                ],
        +                "type": "string"
        +              },
        +              "details": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "message": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "recoverable": {
        +                "type": "boolean"
        +              },
        +              "retry_after_seconds": {
        +                "anyOf": [
        +                  {
        +                    "minimum": 0,
        +                    "type": "integer"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              }
        +            },
        +            "required": [
        +              "code",
        +              "message",
        +              "recoverable"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      }
        +    },
        +    "required": [
        +      "_meta"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "_meta": {
        +        "additionalProperties": false,
        +        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        +        "properties": {
        +          "deliverables": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        +                "properties": {
        +                  "docx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "dxf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "expires_at": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  },
        +                  "pdf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "xlsx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "expires_at"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "document_id": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "issued_at": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "rate_limit_remaining": {
        +            "anyOf": [
        +              {
        +                "minimum": 0,
        +                "type": "integer"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "request_id": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "schema_version": {
        +            "const": "1.0.0",
        +            "default": "1.0.0",
        +            "type": "string"
        +          },
        +          "scope_boundary": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        +                "properties": {
        +                  "not_in_scope": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "produced": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "recommended_companions": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "type": "string"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "produced",
        +                  "not_in_scope"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tier": {
        +            "enum": [
        +              "free",
        +              "paid"
        +            ],
        +            "type": "string"
        +          },
        +          "tier_upgrade": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        +                "properties": {
        +                  "available_tiers": {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        +                      "properties": {
        +                        "billing": {
        +                          "enum": [
        +                            "one_off",
        +                            "monthly",
        +                            "annual"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "currency": {
        +                          "enum": [
        +                            "GBP",
        +                            "SGD",
        +                            "EUR",
        +                            "USD",
        +                            "CAD",
        +                            "AUD",
        +                            "NZD",
        +                            "MYR"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "display_name": {
        +                          "type": "string"
        +                        },
        +                        "price_local": {
        +                          "type": "number"
        +                        },
        +                        "tier_slug": {
        +                          "enum": [
        +                            "7_day_pass",
        +                            "solo",
        +                            "studio",
        +                            "practice"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "unlock_summary": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "tier_slug",
        +                        "display_name",
        +                        "price_local",
        +                        "currency",
        +                        "billing",
        +                        "unlock_summary"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "current_tier": {
        +                    "const": "free",
        +                    "default": "free",
        +                    "type": "string"
        +                  },
        +                  "pass_credit": {
        +                    "anyOf": [
        +                      {
        +                        "additionalProperties": false,
        +                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        +                        "properties": {
        +                          "amount_local": {
        +                            "type": "number"
        +                          },
        +                          "applies_to": {
        +                            "const": "solo_first_month",
        +                            "default": "solo_first_month",
        +                            "type": "string"
        +                          },
        +                          "currency": {
        +                            "type": "string"
        +                          },
        +                          "redeemable_until": {
        +                            "type": "string"
        +                          }
        +                        },
        +                        "required": [
        +                          "amount_local",
        +                          "currency",
        +                          "redeemable_until"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "pricing_url": {
        +                    "default": "https://civilquants.com/pricing",
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "available_tiers"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tos_url": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "upgrade_hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "warranty_disclaimer": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          }
        +        },
        +        "required": [
        +          "request_id",
        +          "issued_at",
        +          "tier"
        +        ],
        +        "type": "object"
        +      },
        +      "data": {
        +        "default": null,
        +        "title": "Data"
        +      },
        +      "error": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        +            "properties": {
        +              "code": {
        +                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        +                "enum": [
        +                  "RATE_LIMIT_EXCEEDED",
        +                  "TIER_INSUFFICIENT",
        +                  "INVALID_INPUT",
        +                  "SCHEMA_VERSION_MISMATCH",
        +                  "SCHEMA_INVARIANT_VIOLATION",
        +                  "UPSTREAM_TIMEOUT",
        +                  "BACKEND_FAILURE",
        +                  "IP_BLOCKED",
        +                  "RESOURCE_NOT_FOUND",
        +                  "RENDER_FAILURE",
        +                  "OCR_LOW_CONFIDENCE",
        +                  "MANUAL_REVIEW_REQUIRED",
        +                  "ACCEPTANCE_REQUIRED",
        +                  "INVALID_TOKEN"
        +                ],
        +                "type": "string"
        +              },
        +              "details": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "message": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "recoverable": {
        +                "type": "boolean"
        +              },
        +              "retry_after_seconds": {
        +                "anyOf": [
        +                  {
        +                    "minimum": 0,
        +                    "type": "integer"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              }
        +            },
        +            "required": [
        +              "code",
        +              "message",
        +              "recoverable"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      }
        +    },
        +    "required": [
        +      "_meta"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedcompute_gully1 field changed
      • changedOutput schema / properties / result / anyOf
        Previous value: -[
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "_meta": {
        -        "additionalProperties": false,
        -        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        -        "properties": {
        -          "deliverables": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        -                "properties": {
        -                  "docx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "dxf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "expires_at": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  },
        -                  "pdf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "xlsx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "expires_at"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "document_id": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "issued_at": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "rate_limit_remaining": {
        -            "anyOf": [
        -              {
        -                "minimum": 0,
        -                "type": "integer"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "request_id": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "schema_version": {
        -            "const": "1.0.0",
        -            "default": "1.0.0",
        -            "type": "string"
        -          },
        -          "scope_boundary": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        -                "properties": {
        -                  "not_in_scope": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "produced": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "recommended_companions": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "type": "string"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "produced",
        -                  "not_in_scope"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tier": {
        -            "enum": [
        -              "free",
        -              "paid"
        -            ],
        -            "type": "string"
        -          },
        -          "tier_upgrade": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        -                "properties": {
        -                  "available_tiers": {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        -                      "properties": {
        -                        "billing": {
        -                          "enum": [
        -                            "one_off",
        -                            "monthly",
        -                            "annual"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "currency": {
        -                          "enum": [
        -                            "GBP",
        -                            "SGD",
        -                            "EUR",
        -                            "USD",
        -                            "CAD",
        -                            "AUD",
        -                            "NZD",
        -                            "MYR"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "display_name": {
        -                          "type": "string"
        -                        },
        -                        "price_local": {
        -                          "type": "number"
        -                        },
        -                        "tier_slug": {
        -                          "enum": [
        -                            "7_day_pass",
        -                            "solo",
        -                            "studio",
        -                            "practice"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "unlock_summary": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "tier_slug",
        -                        "display_name",
        -                        "price_local",
        -                        "currency",
        -                        "billing",
        -                        "unlock_summary"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "current_tier": {
        -                    "const": "free",
        -                    "default": "free",
        -                    "type": "string"
        -                  },
        -                  "pass_credit": {
        -                    "anyOf": [
        -                      {
        -                        "additionalProperties": false,
        -                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        -                        "properties": {
        -                          "amount_local": {
        -                            "type": "number"
        -                          },
        -                          "applies_to": {
        -                            "const": "solo_first_month",
        -                            "default": "solo_first_month",
        -                            "type": "string"
        -                          },
        -                          "currency": {
        -                            "type": "string"
        -                          },
        -                          "redeemable_until": {
        -                            "type": "string"
        -                          }
        -                        },
        -                        "required": [
        -                          "amount_local",
        -                          "currency",
        -                          "redeemable_until"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "pricing_url": {
        -                    "default": "https://civilquants.com/pricing",
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "available_tiers"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tos_url": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "upgrade_hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "warranty_disclaimer": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          }
        -        },
        -        "required": [
        -          "request_id",
        -          "issued_at",
        -          "tier"
        -        ],
        -        "type": "object"
        -      },
        -      "data": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Schema § 1.1 — the typed payload returned inside `MCPResponse[ComputeResult]`.\n\nFree-tier responses MUST omit `drawings` and `audit_trail` (the bridge\nenforces this); paid-tier responses populate both. `text_summary` is\nbounded to 2000 chars — keeps the LLM-facing summary token-cheap and\nforces longer narrative into BoQ row descriptions where it belongs.",
        -            "properties": {
        -              "assembly_slug": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "audit_trail": {
        -                "anyOf": [
        -                  {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.7 — paid-tier audit-trail entry.\n\nOne entry per BoQ row; `boq_row_index` ties to the row position in\n`ComputeResult.boq_rows`. `derivation` is the human-readable formula\nwalk-through; `formula` is the optional formal expression.",
        -                      "properties": {
        -                        "boq_row_index": {
        -                          "minimum": 0,
        -                          "type": "integer"
        -                        },
        -                        "derivation": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "formula": {
        -                          "anyOf": [
        -                            {
        -                              "type": "string"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ],
        -                          "default": null
        -                        },
        -                        "id": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "parameters_referenced": {
        -                          "items": {
        -                            "type": "string"
        -                          },
        -                          "type": "array"
        -                        }
        -                      },
        -                      "required": [
        -                        "id",
        -                        "boq_row_index",
        -                        "derivation"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "boq_rows": {
        -                "items": {
        -                  "additionalProperties": false,
        -                  "description": "Schema § 1.3 — a single bill row in the requested standard's format.\n\n`description` is the non-verbatim functional description per spec § 13.9 /\n§ 15 invariant — NEVER reproduces a standard's verbatim clause text.\n`rate` / `amount` ship null because rates are commodity data the customer\nowns; the engine's job is the measurement, not the pricing.",
        -                  "properties": {
        -                    "amount": {
        -                      "anyOf": [
        -                        {
        -                          "type": "number"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "attribution": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "audit_id": {
        -                      "anyOf": [
        -                        {
        -                          "type": "string"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "description": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "quantity": {
        -                      "minimum": 0,
        -                      "type": "number"
        -                    },
        -                    "rate": {
        -                      "anyOf": [
        -                        {
        -                          "type": "number"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "unit": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "work_section": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    }
        -                  },
        -                  "required": [
        -                    "work_section",
        -                    "description",
        -                    "quantity",
        -                    "unit",
        -                    "attribution"
        -                  ],
        -                  "type": "object"
        -                },
        -                "type": "array"
        -              },
        -              "drawings": {
        -                "anyOf": [
        -                  {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.6 — paid-tier drawing artefact pointer.\n\n`url` is an R2-signed URL; expiry is carried in `_meta.deliverables.expires_at`\non the envelope (not duplicated here). `layers` is DXF-only; PDF/SVG\ncallers omit it.",
        -                      "properties": {
        -                        "drawing_type": {
        -                          "enum": [
        -                            "section",
        -                            "plan",
        -                            "elevation",
        -                            "isometric",
        -                            "detail"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "format": {
        -                          "enum": [
        -                            "DXF",
        -                            "PDF",
        -                            "SVG"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "layers": {
        -                          "anyOf": [
        -                            {
        -                              "items": {
        -                                "type": "string"
        -                              },
        -                              "type": "array"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ],
        -                          "default": null
        -                        },
        -                        "scale": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "sheet_size": {
        -                          "enum": [
        -                            "A1",
        -                            "A2",
        -                            "A3",
        -                            "A4"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "url": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "drawing_type",
        -                        "format",
        -                        "url",
        -                        "sheet_size",
        -                        "scale"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "parameters_used": {
        -                "additionalProperties": false,
        -                "description": "Schema § 1.2 — the parameter snapshot the engine actually used.\n\nSplits user-supplied values from engine defaults so customers can see\nwhich numbers came from them and which the engine filled in. Every\ndefaulted parameter SHOULD have a corresponding entry in `assumptions`\n— the bridge layer enforces this when wrapping engine output.",
        -                "properties": {
        -                  "assumptions": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "engine_defaults": {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  "resolved_from_description": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "additionalProperties": false,
        -                          "description": "Schema § 1.2 — a parameter resolved by the forgiving-input layer.\n\nPopulated by the Track B-Forgiving Haiku-4.5 resolution pass; until that\nlayer lands, instances are constructed only by tests. `source` distinguishes\nthe resolution path so customers can audit which fields were inferred.",
        -                          "properties": {
        -                            "confidence": {
        -                              "anyOf": [
        -                                {
        -                                  "enum": [
        -                                    "high",
        -                                    "medium",
        -                                    "low"
        -                                  ],
        -                                  "type": "string"
        -                                },
        -                                {
        -                                  "type": "null"
        -                                }
        -                              ],
        -                              "default": null
        -                            },
        -                            "field_name": {
        -                              "minLength": 1,
        -                              "type": "string"
        -                            },
        -                            "resolved_value": {},
        -                            "source": {
        -                              "enum": [
        -                                "description_field",
        -                                "haiku_resolution",
        -                                "engine_default"
        -                              ],
        -                              "type": "string"
        -                            }
        -                          },
        -                          "required": [
        -                            "field_name",
        -                            "resolved_value",
        -                            "source"
        -                          ],
        -                          "type": "object"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "user_supplied": {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  }
        -                },
        -                "type": "object"
        -              },
        -              "standard": {
        -                "enum": [
        -                  "CESMM4",
        -                  "NRM2",
        -                  "SMM7",
        -                  "MMHW"
        -                ],
        -                "type": "string"
        -              },
        -              "text_summary": {
        -                "maxLength": 2000,
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "totals_summary": {
        -                "additionalProperties": false,
        -                "description": "Schema § 1.4 — totals_summary as a typed wrapper around the free-form dict.\n\nWire shape is a flat object (`{\"concrete_m3\": {...}, \"rebar_t\": {...}}`).\nWe model it as `RootModel`-equivalent via `model_config(extra=\"allow\")`\n+ a single `__root__`-style `entries` dict. Pydantic v2 recommends\n`RootModel` for free-form roots; using a wrapper class keeps the import\nsurface uniform with the rest of this module.",
        -                "properties": {
        -                  "entries": {
        -                    "additionalProperties": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.4 — single material/work-class total entry.",
        -                      "properties": {
        -                        "quantity": {
        -                          "minimum": 0,
        -                          "type": "number"
        -                        },
        -                        "unit": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "quantity",
        -                        "unit"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "object"
        -                  }
        -                },
        -                "type": "object"
        -              }
        -            },
        -            "required": [
        -              "assembly_slug",
        -              "standard",
        -              "parameters_used",
        -              "boq_rows",
        -              "totals_summary",
        -              "text_summary"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      },
        -      "error": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        -            "properties": {
        -              "code": {
        -                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        -                "enum": [
        -                  "RATE_LIMIT_EXCEEDED",
        -                  "TIER_INSUFFICIENT",
        -                  "INVALID_INPUT",
        -                  "SCHEMA_VERSION_MISMATCH",
        -                  "SCHEMA_INVARIANT_VIOLATION",
        -                  "UPSTREAM_TIMEOUT",
        -                  "BACKEND_FAILURE",
        -                  "IP_BLOCKED",
        -                  "RESOURCE_NOT_FOUND",
        -                  "RENDER_FAILURE",
        -                  "OCR_LOW_CONFIDENCE",
        -                  "MANUAL_REVIEW_REQUIRED",
        -                  "ACCEPTANCE_REQUIRED",
        -                  "INVALID_TOKEN"
        -                ],
        -                "type": "string"
        -              },
        -              "details": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "message": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "recoverable": {
        -                "type": "boolean"
        -              },
        -              "retry_after_seconds": {
        -                "anyOf": [
        -                  {
        -                    "minimum": 0,
        -                    "type": "integer"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              }
        -            },
        -            "required": [
        -              "code",
        -              "message",
        -              "recoverable"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      }
        -    },
        -    "required": [
        -      "_meta"
        -    ],
        -    "type": "object"
        -  },
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "_meta": {
        -        "additionalProperties": false,
        -        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        -        "properties": {
        -          "deliverables": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        -                "properties": {
        -                  "docx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "dxf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "expires_at": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  },
        -                  "pdf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "xlsx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "expires_at"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "document_id": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "issued_at": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "rate_limit_remaining": {
        -            "anyOf": [
        -              {
        -                "minimum": 0,
        -                "type": "integer"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "request_id": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "schema_version": {
        -            "const": "1.0.0",
        -            "default": "1.0.0",
        -            "type": "string"
        -          },
        -          "scope_boundary": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        -                "properties": {
        -                  "not_in_scope": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "produced": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "recommended_companions": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "type": "string"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "produced",
        -                  "not_in_scope"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tier": {
        -            "enum": [
        -              "free",
        -              "paid"
        -            ],
        -            "type": "string"
        -          },
        -          "tier_upgrade": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        -                "properties": {
        -                  "available_tiers": {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        -                      "properties": {
        -                        "billing": {
        -                          "enum": [
        -                            "one_off",
        -                            "monthly",
        -                            "annual"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "currency": {
        -                          "enum": [
        -                            "GBP",
        -                            "SGD",
        -                            "EUR",
        -                            "USD",
        -                            "CAD",
        -                            "AUD",
        -                            "NZD",
        -                            "MYR"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "display_name": {
        -                          "type": "string"
        -                        },
        -                        "price_local": {
        -                          "type": "number"
        -                        },
        -                        "tier_slug": {
        -                          "enum": [
        -                            "7_day_pass",
        -                            "solo",
        -                            "studio",
        -                            "practice"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "unlock_summary": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "tier_slug",
        -                        "display_name",
        -                        "price_local",
        -                        "currency",
        -                        "billing",
        -                        "unlock_summary"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "current_tier": {
        -                    "const": "free",
        -                    "default": "free",
        -                    "type": "string"
        -                  },
        -                  "pass_credit": {
        -                    "anyOf": [
        -                      {
        -                        "additionalProperties": false,
        -                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        -                        "properties": {
        -                          "amount_local": {
        -                            "type": "number"
        -                          },
        -                          "applies_to": {
        -                            "const": "solo_first_month",
        -                            "default": "solo_first_month",
        -                            "type": "string"
        -                          },
        -                          "currency": {
        -                            "type": "string"
        -                          },
        -                          "redeemable_until": {
        -                            "type": "string"
        -                          }
        -                        },
        -                        "required": [
        -                          "amount_local",
        -                          "currency",
        -                          "redeemable_until"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "pricing_url": {
        -                    "default": "https://civilquants.com/pricing",
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "available_tiers"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tos_url": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "upgrade_hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "warranty_disclaimer": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          }
        -        },
        -        "required": [
        -          "request_id",
        -          "issued_at",
        -          "tier"
        -        ],
        -        "type": "object"
        -      },
        -      "data": {
        -        "default": null,
        -        "title": "Data"
        -      },
        -      "error": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        -            "properties": {
        -              "code": {
        -                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        -                "enum": [
        -                  "RATE_LIMIT_EXCEEDED",
        -                  "TIER_INSUFFICIENT",
        -                  "INVALID_INPUT",
        -                  "SCHEMA_VERSION_MISMATCH",
        -                  "SCHEMA_INVARIANT_VIOLATION",
        -                  "UPSTREAM_TIMEOUT",
        -                  "BACKEND_FAILURE",
        -                  "IP_BLOCKED",
        -                  "RESOURCE_NOT_FOUND",
        -                  "RENDER_FAILURE",
        -                  "OCR_LOW_CONFIDENCE",
        -                  "MANUAL_REVIEW_REQUIRED",
        -                  "ACCEPTANCE_REQUIRED",
        -                  "INVALID_TOKEN"
        -                ],
        -                "type": "string"
        -              },
        -              "details": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "message": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "recoverable": {
        -                "type": "boolean"
        -              },
        -              "retry_after_seconds": {
        -                "anyOf": [
        -                  {
        -                    "minimum": 0,
        -                    "type": "integer"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              }
        -            },
        -            "required": [
        -              "code",
        -              "message",
        -              "recoverable"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      }
        -    },
        -    "required": [
        -      "_meta"
        -    ],
        -    "type": "object"
        -  }
        -]New value: +[
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "_meta": {
        +        "additionalProperties": false,
        +        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        +        "properties": {
        +          "deliverables": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        +                "properties": {
        +                  "docx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "dxf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "expires_at": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  },
        +                  "pdf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "xlsx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "expires_at"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "document_id": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "issued_at": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "rate_limit_remaining": {
        +            "anyOf": [
        +              {
        +                "minimum": 0,
        +                "type": "integer"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "request_id": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "schema_version": {
        +            "const": "1.0.0",
        +            "default": "1.0.0",
        +            "type": "string"
        +          },
        +          "scope_boundary": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        +                "properties": {
        +                  "not_in_scope": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "produced": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "recommended_companions": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "type": "string"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "produced",
        +                  "not_in_scope"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tier": {
        +            "enum": [
        +              "free",
        +              "paid"
        +            ],
        +            "type": "string"
        +          },
        +          "tier_upgrade": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        +                "properties": {
        +                  "available_tiers": {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        +                      "properties": {
        +                        "billing": {
        +                          "enum": [
        +                            "one_off",
        +                            "monthly",
        +                            "annual"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "currency": {
        +                          "enum": [
        +                            "GBP",
        +                            "SGD",
        +                            "EUR",
        +                            "USD",
        +                            "CAD",
        +                            "AUD",
        +                            "NZD",
        +                            "MYR"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "display_name": {
        +                          "type": "string"
        +                        },
        +                        "price_local": {
        +                          "type": "number"
        +                        },
        +                        "tier_slug": {
        +                          "enum": [
        +                            "7_day_pass",
        +                            "solo",
        +                            "studio",
        +                            "practice"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "unlock_summary": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "tier_slug",
        +                        "display_name",
        +                        "price_local",
        +                        "currency",
        +                        "billing",
        +                        "unlock_summary"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "current_tier": {
        +                    "const": "free",
        +                    "default": "free",
        +                    "type": "string"
        +                  },
        +                  "pass_credit": {
        +                    "anyOf": [
        +                      {
        +                        "additionalProperties": false,
        +                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        +                        "properties": {
        +                          "amount_local": {
        +                            "type": "number"
        +                          },
        +                          "applies_to": {
        +                            "const": "solo_first_month",
        +                            "default": "solo_first_month",
        +                            "type": "string"
        +                          },
        +                          "currency": {
        +                            "type": "string"
        +                          },
        +                          "redeemable_until": {
        +                            "type": "string"
        +                          }
        +                        },
        +                        "required": [
        +                          "amount_local",
        +                          "currency",
        +                          "redeemable_until"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "pricing_url": {
        +                    "default": "https://civilquants.com/pricing",
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "available_tiers"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tos_url": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "upgrade_hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "warranty_disclaimer": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          }
        +        },
        +        "required": [
        +          "request_id",
        +          "issued_at",
        +          "tier"
        +        ],
        +        "type": "object"
        +      },
        +      "data": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Schema § 1.1 — the typed payload returned inside `MCPResponse[ComputeResult]`.\n\nFree-tier responses MUST omit `drawings` and `audit_trail` (the bridge\nenforces this); paid-tier responses populate both. `text_summary` is\nbounded to 2000 chars — keeps the LLM-facing summary token-cheap and\nforces longer narrative into BoQ row descriptions where it belongs.\n`warnings` is the non-fatal geometry advisory list (both tiers).",
        +            "properties": {
        +              "assembly_slug": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "audit_trail": {
        +                "anyOf": [
        +                  {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.7 — paid-tier audit-trail entry.\n\nOne entry per BoQ row; `boq_row_index` ties to the row position in\n`ComputeResult.boq_rows`. `derivation` is the human-readable formula\nwalk-through; `formula` is the optional formal expression.",
        +                      "properties": {
        +                        "boq_row_index": {
        +                          "minimum": 0,
        +                          "type": "integer"
        +                        },
        +                        "derivation": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "formula": {
        +                          "anyOf": [
        +                            {
        +                              "type": "string"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ],
        +                          "default": null
        +                        },
        +                        "id": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "parameters_referenced": {
        +                          "items": {
        +                            "type": "string"
        +                          },
        +                          "type": "array"
        +                        }
        +                      },
        +                      "required": [
        +                        "id",
        +                        "boq_row_index",
        +                        "derivation"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "boq_rows": {
        +                "items": {
        +                  "additionalProperties": false,
        +                  "description": "Schema § 1.3 — a single bill row in the requested standard's format.\n\n`description` is the non-verbatim functional description per spec § 13.9 /\n§ 15 invariant — NEVER reproduces a standard's verbatim clause text.\n`rate` / `amount` ship null because rates are commodity data the customer\nowns; the engine's job is the measurement, not the pricing.",
        +                  "properties": {
        +                    "amount": {
        +                      "anyOf": [
        +                        {
        +                          "type": "number"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "attribution": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "audit_id": {
        +                      "anyOf": [
        +                        {
        +                          "type": "string"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "description": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "quantity": {
        +                      "minimum": 0,
        +                      "type": "number"
        +                    },
        +                    "rate": {
        +                      "anyOf": [
        +                        {
        +                          "type": "number"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "unit": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "work_section": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    }
        +                  },
        +                  "required": [
        +                    "work_section",
        +                    "description",
        +                    "quantity",
        +                    "unit",
        +                    "attribution"
        +                  ],
        +                  "type": "object"
        +                },
        +                "type": "array"
        +              },
        +              "drawings": {
        +                "anyOf": [
        +                  {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.6 — paid-tier drawing artefact pointer.\n\n`url` is an R2-signed URL; expiry is carried in `_meta.deliverables.expires_at`\non the envelope (not duplicated here). `layers` is DXF-only; PDF/SVG\ncallers omit it.",
        +                      "properties": {
        +                        "drawing_type": {
        +                          "enum": [
        +                            "section",
        +                            "plan",
        +                            "elevation",
        +                            "isometric",
        +                            "detail"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "format": {
        +                          "enum": [
        +                            "DXF",
        +                            "PDF",
        +                            "SVG"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "layers": {
        +                          "anyOf": [
        +                            {
        +                              "items": {
        +                                "type": "string"
        +                              },
        +                              "type": "array"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ],
        +                          "default": null
        +                        },
        +                        "scale": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "sheet_size": {
        +                          "enum": [
        +                            "A1",
        +                            "A2",
        +                            "A3",
        +                            "A4"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "url": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "drawing_type",
        +                        "format",
        +                        "url",
        +                        "sheet_size",
        +                        "scale"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "parameters_used": {
        +                "additionalProperties": false,
        +                "description": "Schema § 1.2 — the parameter snapshot the engine actually used.\n\nSplits user-supplied values from engine defaults so customers can see\nwhich numbers came from them and which the engine filled in. Every\ndefaulted parameter SHOULD have a corresponding entry in `assumptions`\n— the bridge layer enforces this when wrapping engine output.",
        +                "properties": {
        +                  "assumptions": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "engine_defaults": {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  "resolved_from_description": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "additionalProperties": false,
        +                          "description": "Schema § 1.2 — a parameter resolved by the forgiving-input layer.\n\nPopulated by the Track B-Forgiving Haiku-4.5 resolution pass; until that\nlayer lands, instances are constructed only by tests. `source` distinguishes\nthe resolution path so customers can audit which fields were inferred.",
        +                          "properties": {
        +                            "confidence": {
        +                              "anyOf": [
        +                                {
        +                                  "enum": [
        +                                    "high",
        +                                    "medium",
        +                                    "low"
        +                                  ],
        +                                  "type": "string"
        +                                },
        +                                {
        +                                  "type": "null"
        +                                }
        +                              ],
        +                              "default": null
        +                            },
        +                            "field_name": {
        +                              "minLength": 1,
        +                              "type": "string"
        +                            },
        +                            "resolved_value": {},
        +                            "source": {
        +                              "enum": [
        +                                "description_field",
        +                                "haiku_resolution",
        +                                "engine_default"
        +                              ],
        +                              "type": "string"
        +                            }
        +                          },
        +                          "required": [
        +                            "field_name",
        +                            "resolved_value",
        +                            "source"
        +                          ],
        +                          "type": "object"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "user_supplied": {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  }
        +                },
        +                "type": "object"
        +              },
        +              "standard": {
        +                "enum": [
        +                  "CESMM4",
        +                  "NRM2",
        +                  "SMM7",
        +                  "MMHW"
        +                ],
        +                "type": "string"
        +              },
        +              "text_summary": {
        +                "maxLength": 2000,
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "totals_summary": {
        +                "additionalProperties": false,
        +                "description": "Schema § 1.4 — totals_summary as a typed wrapper around the free-form dict.\n\nWire shape is a flat object (`{\"concrete_m3\": {...}, \"rebar_t\": {...}}`).\nWe model it as `RootModel`-equivalent via `model_config(extra=\"allow\")`\n+ a single `__root__`-style `entries` dict. Pydantic v2 recommends\n`RootModel` for free-form roots; using a wrapper class keeps the import\nsurface uniform with the rest of this module.",
        +                "properties": {
        +                  "entries": {
        +                    "additionalProperties": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.4 — single material/work-class total entry.",
        +                      "properties": {
        +                        "quantity": {
        +                          "minimum": 0,
        +                          "type": "number"
        +                        },
        +                        "unit": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "quantity",
        +                        "unit"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "object"
        +                  }
        +                },
        +                "type": "object"
        +              },
        +              "warnings": {
        +                "items": {
        +                  "additionalProperties": false,
        +                  "description": "Schema § 1.8 — a non-fatal geometry advisory (56th-fire T2).\n\nThe wire projection of the engine's `core.GeometryWarning`. Advisory only:\na warning NEVER changes a measured quantity — it flags geometry that is\nvalid but likely a mistake (e.g. a stale dependent-height default). Present\non BOTH tiers — a correctness/safety signal, not a paid feature.",
        +                  "properties": {
        +                    "affected_params": {
        +                      "items": {
        +                        "type": "string"
        +                      },
        +                      "type": "array"
        +                    },
        +                    "code": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "detail": {
        +                      "additionalProperties": {
        +                        "type": "number"
        +                      },
        +                      "type": "object"
        +                    },
        +                    "message": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "severity": {
        +                      "enum": [
        +                        "info",
        +                        "advisory",
        +                        "caution"
        +                      ],
        +                      "type": "string"
        +                    }
        +                  },
        +                  "required": [
        +                    "code",
        +                    "severity",
        +                    "message"
        +                  ],
        +                  "type": "object"
        +                },
        +                "type": "array"
        +              }
        +            },
        +            "required": [
        +              "assembly_slug",
        +              "standard",
        +              "parameters_used",
        +              "boq_rows",
        +              "totals_summary",
        +              "text_summary"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      },
        +      "error": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        +            "properties": {
        +              "code": {
        +                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        +                "enum": [
        +                  "RATE_LIMIT_EXCEEDED",
        +                  "TIER_INSUFFICIENT",
        +                  "INVALID_INPUT",
        +                  "SCHEMA_VERSION_MISMATCH",
        +                  "SCHEMA_INVARIANT_VIOLATION",
        +                  "UPSTREAM_TIMEOUT",
        +                  "BACKEND_FAILURE",
        +                  "IP_BLOCKED",
        +                  "RESOURCE_NOT_FOUND",
        +                  "RENDER_FAILURE",
        +                  "OCR_LOW_CONFIDENCE",
        +                  "MANUAL_REVIEW_REQUIRED",
        +                  "ACCEPTANCE_REQUIRED",
        +                  "INVALID_TOKEN"
        +                ],
        +                "type": "string"
        +              },
        +              "details": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "message": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "recoverable": {
        +                "type": "boolean"
        +              },
        +              "retry_after_seconds": {
        +                "anyOf": [
        +                  {
        +                    "minimum": 0,
        +                    "type": "integer"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              }
        +            },
        +            "required": [
        +              "code",
        +              "message",
        +              "recoverable"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      }
        +    },
        +    "required": [
        +      "_meta"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "_meta": {
        +        "additionalProperties": false,
        +        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        +        "properties": {
        +          "deliverables": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        +                "properties": {
        +                  "docx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "dxf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "expires_at": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  },
        +                  "pdf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "xlsx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "expires_at"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "document_id": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "issued_at": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "rate_limit_remaining": {
        +            "anyOf": [
        +              {
        +                "minimum": 0,
        +                "type": "integer"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "request_id": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "schema_version": {
        +            "const": "1.0.0",
        +            "default": "1.0.0",
        +            "type": "string"
        +          },
        +          "scope_boundary": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        +                "properties": {
        +                  "not_in_scope": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "produced": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "recommended_companions": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "type": "string"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "produced",
        +                  "not_in_scope"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tier": {
        +            "enum": [
        +              "free",
        +              "paid"
        +            ],
        +            "type": "string"
        +          },
        +          "tier_upgrade": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        +                "properties": {
        +                  "available_tiers": {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        +                      "properties": {
        +                        "billing": {
        +                          "enum": [
        +                            "one_off",
        +                            "monthly",
        +                            "annual"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "currency": {
        +                          "enum": [
        +                            "GBP",
        +                            "SGD",
        +                            "EUR",
        +                            "USD",
        +                            "CAD",
        +                            "AUD",
        +                            "NZD",
        +                            "MYR"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "display_name": {
        +                          "type": "string"
        +                        },
        +                        "price_local": {
        +                          "type": "number"
        +                        },
        +                        "tier_slug": {
        +                          "enum": [
        +                            "7_day_pass",
        +                            "solo",
        +                            "studio",
        +                            "practice"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "unlock_summary": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "tier_slug",
        +                        "display_name",
        +                        "price_local",
        +                        "currency",
        +                        "billing",
        +                        "unlock_summary"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "current_tier": {
        +                    "const": "free",
        +                    "default": "free",
        +                    "type": "string"
        +                  },
        +                  "pass_credit": {
        +                    "anyOf": [
        +                      {
        +                        "additionalProperties": false,
        +                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        +                        "properties": {
        +                          "amount_local": {
        +                            "type": "number"
        +                          },
        +                          "applies_to": {
        +                            "const": "solo_first_month",
        +                            "default": "solo_first_month",
        +                            "type": "string"
        +                          },
        +                          "currency": {
        +                            "type": "string"
        +                          },
        +                          "redeemable_until": {
        +                            "type": "string"
        +                          }
        +                        },
        +                        "required": [
        +                          "amount_local",
        +                          "currency",
        +                          "redeemable_until"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "pricing_url": {
        +                    "default": "https://civilquants.com/pricing",
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "available_tiers"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tos_url": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "upgrade_hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "warranty_disclaimer": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          }
        +        },
        +        "required": [
        +          "request_id",
        +          "issued_at",
        +          "tier"
        +        ],
        +        "type": "object"
        +      },
        +      "data": {
        +        "default": null,
        +        "title": "Data"
        +      },
        +      "error": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        +            "properties": {
        +              "code": {
        +                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        +                "enum": [
        +                  "RATE_LIMIT_EXCEEDED",
        +                  "TIER_INSUFFICIENT",
        +                  "INVALID_INPUT",
        +                  "SCHEMA_VERSION_MISMATCH",
        +                  "SCHEMA_INVARIANT_VIOLATION",
        +                  "UPSTREAM_TIMEOUT",
        +                  "BACKEND_FAILURE",
        +                  "IP_BLOCKED",
        +                  "RESOURCE_NOT_FOUND",
        +                  "RENDER_FAILURE",
        +                  "OCR_LOW_CONFIDENCE",
        +                  "MANUAL_REVIEW_REQUIRED",
        +                  "ACCEPTANCE_REQUIRED",
        +                  "INVALID_TOKEN"
        +                ],
        +                "type": "string"
        +              },
        +              "details": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "message": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "recoverable": {
        +                "type": "boolean"
        +              },
        +              "retry_after_seconds": {
        +                "anyOf": [
        +                  {
        +                    "minimum": 0,
        +                    "type": "integer"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              }
        +            },
        +            "required": [
        +              "code",
        +              "message",
        +              "recoverable"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      }
        +    },
        +    "required": [
        +      "_meta"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedcompute_hard_material_in_trench1 field changed
      • changedOutput schema / properties / result / anyOf
        Previous value: -[
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "_meta": {
        -        "additionalProperties": false,
        -        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        -        "properties": {
        -          "deliverables": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        -                "properties": {
        -                  "docx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "dxf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "expires_at": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  },
        -                  "pdf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "xlsx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "expires_at"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "document_id": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "issued_at": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "rate_limit_remaining": {
        -            "anyOf": [
        -              {
        -                "minimum": 0,
        -                "type": "integer"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "request_id": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "schema_version": {
        -            "const": "1.0.0",
        -            "default": "1.0.0",
        -            "type": "string"
        -          },
        -          "scope_boundary": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        -                "properties": {
        -                  "not_in_scope": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "produced": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "recommended_companions": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "type": "string"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "produced",
        -                  "not_in_scope"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tier": {
        -            "enum": [
        -              "free",
        -              "paid"
        -            ],
        -            "type": "string"
        -          },
        -          "tier_upgrade": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        -                "properties": {
        -                  "available_tiers": {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        -                      "properties": {
        -                        "billing": {
        -                          "enum": [
        -                            "one_off",
        -                            "monthly",
        -                            "annual"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "currency": {
        -                          "enum": [
        -                            "GBP",
        -                            "SGD",
        -                            "EUR",
        -                            "USD",
        -                            "CAD",
        -                            "AUD",
        -                            "NZD",
        -                            "MYR"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "display_name": {
        -                          "type": "string"
        -                        },
        -                        "price_local": {
        -                          "type": "number"
        -                        },
        -                        "tier_slug": {
        -                          "enum": [
        -                            "7_day_pass",
        -                            "solo",
        -                            "studio",
        -                            "practice"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "unlock_summary": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "tier_slug",
        -                        "display_name",
        -                        "price_local",
        -                        "currency",
        -                        "billing",
        -                        "unlock_summary"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "current_tier": {
        -                    "const": "free",
        -                    "default": "free",
        -                    "type": "string"
        -                  },
        -                  "pass_credit": {
        -                    "anyOf": [
        -                      {
        -                        "additionalProperties": false,
        -                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        -                        "properties": {
        -                          "amount_local": {
        -                            "type": "number"
        -                          },
        -                          "applies_to": {
        -                            "const": "solo_first_month",
        -                            "default": "solo_first_month",
        -                            "type": "string"
        -                          },
        -                          "currency": {
        -                            "type": "string"
        -                          },
        -                          "redeemable_until": {
        -                            "type": "string"
        -                          }
        -                        },
        -                        "required": [
        -                          "amount_local",
        -                          "currency",
        -                          "redeemable_until"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "pricing_url": {
        -                    "default": "https://civilquants.com/pricing",
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "available_tiers"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tos_url": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "upgrade_hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "warranty_disclaimer": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          }
        -        },
        -        "required": [
        -          "request_id",
        -          "issued_at",
        -          "tier"
        -        ],
        -        "type": "object"
        -      },
        -      "data": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Schema § 1.1 — the typed payload returned inside `MCPResponse[ComputeResult]`.\n\nFree-tier responses MUST omit `drawings` and `audit_trail` (the bridge\nenforces this); paid-tier responses populate both. `text_summary` is\nbounded to 2000 chars — keeps the LLM-facing summary token-cheap and\nforces longer narrative into BoQ row descriptions where it belongs.",
        -            "properties": {
        -              "assembly_slug": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "audit_trail": {
        -                "anyOf": [
        -                  {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.7 — paid-tier audit-trail entry.\n\nOne entry per BoQ row; `boq_row_index` ties to the row position in\n`ComputeResult.boq_rows`. `derivation` is the human-readable formula\nwalk-through; `formula` is the optional formal expression.",
        -                      "properties": {
        -                        "boq_row_index": {
        -                          "minimum": 0,
        -                          "type": "integer"
        -                        },
        -                        "derivation": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "formula": {
        -                          "anyOf": [
        -                            {
        -                              "type": "string"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ],
        -                          "default": null
        -                        },
        -                        "id": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "parameters_referenced": {
        -                          "items": {
        -                            "type": "string"
        -                          },
        -                          "type": "array"
        -                        }
        -                      },
        -                      "required": [
        -                        "id",
        -                        "boq_row_index",
        -                        "derivation"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "boq_rows": {
        -                "items": {
        -                  "additionalProperties": false,
        -                  "description": "Schema § 1.3 — a single bill row in the requested standard's format.\n\n`description` is the non-verbatim functional description per spec § 13.9 /\n§ 15 invariant — NEVER reproduces a standard's verbatim clause text.\n`rate` / `amount` ship null because rates are commodity data the customer\nowns; the engine's job is the measurement, not the pricing.",
        -                  "properties": {
        -                    "amount": {
        -                      "anyOf": [
        -                        {
        -                          "type": "number"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "attribution": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "audit_id": {
        -                      "anyOf": [
        -                        {
        -                          "type": "string"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "description": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "quantity": {
        -                      "minimum": 0,
        -                      "type": "number"
        -                    },
        -                    "rate": {
        -                      "anyOf": [
        -                        {
        -                          "type": "number"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "unit": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "work_section": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    }
        -                  },
        -                  "required": [
        -                    "work_section",
        -                    "description",
        -                    "quantity",
        -                    "unit",
        -                    "attribution"
        -                  ],
        -                  "type": "object"
        -                },
        -                "type": "array"
        -              },
        -              "drawings": {
        -                "anyOf": [
        -                  {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.6 — paid-tier drawing artefact pointer.\n\n`url` is an R2-signed URL; expiry is carried in `_meta.deliverables.expires_at`\non the envelope (not duplicated here). `layers` is DXF-only; PDF/SVG\ncallers omit it.",
        -                      "properties": {
        -                        "drawing_type": {
        -                          "enum": [
        -                            "section",
        -                            "plan",
        -                            "elevation",
        -                            "isometric",
        -                            "detail"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "format": {
        -                          "enum": [
        -                            "DXF",
        -                            "PDF",
        -                            "SVG"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "layers": {
        -                          "anyOf": [
        -                            {
        -                              "items": {
        -                                "type": "string"
        -                              },
        -                              "type": "array"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ],
        -                          "default": null
        -                        },
        -                        "scale": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "sheet_size": {
        -                          "enum": [
        -                            "A1",
        -                            "A2",
        -                            "A3",
        -                            "A4"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "url": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "drawing_type",
        -                        "format",
        -                        "url",
        -                        "sheet_size",
        -                        "scale"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "parameters_used": {
        -                "additionalProperties": false,
        -                "description": "Schema § 1.2 — the parameter snapshot the engine actually used.\n\nSplits user-supplied values from engine defaults so customers can see\nwhich numbers came from them and which the engine filled in. Every\ndefaulted parameter SHOULD have a corresponding entry in `assumptions`\n— the bridge layer enforces this when wrapping engine output.",
        -                "properties": {
        -                  "assumptions": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "engine_defaults": {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  "resolved_from_description": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "additionalProperties": false,
        -                          "description": "Schema § 1.2 — a parameter resolved by the forgiving-input layer.\n\nPopulated by the Track B-Forgiving Haiku-4.5 resolution pass; until that\nlayer lands, instances are constructed only by tests. `source` distinguishes\nthe resolution path so customers can audit which fields were inferred.",
        -                          "properties": {
        -                            "confidence": {
        -                              "anyOf": [
        -                                {
        -                                  "enum": [
        -                                    "high",
        -                                    "medium",
        -                                    "low"
        -                                  ],
        -                                  "type": "string"
        -                                },
        -                                {
        -                                  "type": "null"
        -                                }
        -                              ],
        -                              "default": null
        -                            },
        -                            "field_name": {
        -                              "minLength": 1,
        -                              "type": "string"
        -                            },
        -                            "resolved_value": {},
        -                            "source": {
        -                              "enum": [
        -                                "description_field",
        -                                "haiku_resolution",
        -                                "engine_default"
        -                              ],
        -                              "type": "string"
        -                            }
        -                          },
        -                          "required": [
        -                            "field_name",
        -                            "resolved_value",
        -                            "source"
        -                          ],
        -                          "type": "object"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "user_supplied": {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  }
        -                },
        -                "type": "object"
        -              },
        -              "standard": {
        -                "enum": [
        -                  "CESMM4",
        -                  "NRM2",
        -                  "SMM7",
        -                  "MMHW"
        -                ],
        -                "type": "string"
        -              },
        -              "text_summary": {
        -                "maxLength": 2000,
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "totals_summary": {
        -                "additionalProperties": false,
        -                "description": "Schema § 1.4 — totals_summary as a typed wrapper around the free-form dict.\n\nWire shape is a flat object (`{\"concrete_m3\": {...}, \"rebar_t\": {...}}`).\nWe model it as `RootModel`-equivalent via `model_config(extra=\"allow\")`\n+ a single `__root__`-style `entries` dict. Pydantic v2 recommends\n`RootModel` for free-form roots; using a wrapper class keeps the import\nsurface uniform with the rest of this module.",
        -                "properties": {
        -                  "entries": {
        -                    "additionalProperties": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.4 — single material/work-class total entry.",
        -                      "properties": {
        -                        "quantity": {
        -                          "minimum": 0,
        -                          "type": "number"
        -                        },
        -                        "unit": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "quantity",
        -                        "unit"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "object"
        -                  }
        -                },
        -                "type": "object"
        -              }
        -            },
        -            "required": [
        -              "assembly_slug",
        -              "standard",
        -              "parameters_used",
        -              "boq_rows",
        -              "totals_summary",
        -              "text_summary"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      },
        -      "error": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        -            "properties": {
        -              "code": {
        -                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        -                "enum": [
        -                  "RATE_LIMIT_EXCEEDED",
        -                  "TIER_INSUFFICIENT",
        -                  "INVALID_INPUT",
        -                  "SCHEMA_VERSION_MISMATCH",
        -                  "SCHEMA_INVARIANT_VIOLATION",
        -                  "UPSTREAM_TIMEOUT",
        -                  "BACKEND_FAILURE",
        -                  "IP_BLOCKED",
        -                  "RESOURCE_NOT_FOUND",
        -                  "RENDER_FAILURE",
        -                  "OCR_LOW_CONFIDENCE",
        -                  "MANUAL_REVIEW_REQUIRED",
        -                  "ACCEPTANCE_REQUIRED",
        -                  "INVALID_TOKEN"
        -                ],
        -                "type": "string"
        -              },
        -              "details": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "message": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "recoverable": {
        -                "type": "boolean"
        -              },
        -              "retry_after_seconds": {
        -                "anyOf": [
        -                  {
        -                    "minimum": 0,
        -                    "type": "integer"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              }
        -            },
        -            "required": [
        -              "code",
        -              "message",
        -              "recoverable"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      }
        -    },
        -    "required": [
        -      "_meta"
        -    ],
        -    "type": "object"
        -  },
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "_meta": {
        -        "additionalProperties": false,
        -        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        -        "properties": {
        -          "deliverables": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        -                "properties": {
        -                  "docx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "dxf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "expires_at": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  },
        -                  "pdf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "xlsx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "expires_at"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "document_id": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "issued_at": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "rate_limit_remaining": {
        -            "anyOf": [
        -              {
        -                "minimum": 0,
        -                "type": "integer"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "request_id": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "schema_version": {
        -            "const": "1.0.0",
        -            "default": "1.0.0",
        -            "type": "string"
        -          },
        -          "scope_boundary": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        -                "properties": {
        -                  "not_in_scope": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "produced": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "recommended_companions": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "type": "string"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "produced",
        -                  "not_in_scope"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tier": {
        -            "enum": [
        -              "free",
        -              "paid"
        -            ],
        -            "type": "string"
        -          },
        -          "tier_upgrade": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        -                "properties": {
        -                  "available_tiers": {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        -                      "properties": {
        -                        "billing": {
        -                          "enum": [
        -                            "one_off",
        -                            "monthly",
        -                            "annual"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "currency": {
        -                          "enum": [
        -                            "GBP",
        -                            "SGD",
        -                            "EUR",
        -                            "USD",
        -                            "CAD",
        -                            "AUD",
        -                            "NZD",
        -                            "MYR"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "display_name": {
        -                          "type": "string"
        -                        },
        -                        "price_local": {
        -                          "type": "number"
        -                        },
        -                        "tier_slug": {
        -                          "enum": [
        -                            "7_day_pass",
        -                            "solo",
        -                            "studio",
        -                            "practice"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "unlock_summary": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "tier_slug",
        -                        "display_name",
        -                        "price_local",
        -                        "currency",
        -                        "billing",
        -                        "unlock_summary"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "current_tier": {
        -                    "const": "free",
        -                    "default": "free",
        -                    "type": "string"
        -                  },
        -                  "pass_credit": {
        -                    "anyOf": [
        -                      {
        -                        "additionalProperties": false,
        -                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        -                        "properties": {
        -                          "amount_local": {
        -                            "type": "number"
        -                          },
        -                          "applies_to": {
        -                            "const": "solo_first_month",
        -                            "default": "solo_first_month",
        -                            "type": "string"
        -                          },
        -                          "currency": {
        -                            "type": "string"
        -                          },
        -                          "redeemable_until": {
        -                            "type": "string"
        -                          }
        -                        },
        -                        "required": [
        -                          "amount_local",
        -                          "currency",
        -                          "redeemable_until"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "pricing_url": {
        -                    "default": "https://civilquants.com/pricing",
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "available_tiers"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tos_url": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "upgrade_hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "warranty_disclaimer": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          }
        -        },
        -        "required": [
        -          "request_id",
        -          "issued_at",
        -          "tier"
        -        ],
        -        "type": "object"
        -      },
        -      "data": {
        -        "default": null,
        -        "title": "Data"
        -      },
        -      "error": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        -            "properties": {
        -              "code": {
        -                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        -                "enum": [
        -                  "RATE_LIMIT_EXCEEDED",
        -                  "TIER_INSUFFICIENT",
        -                  "INVALID_INPUT",
        -                  "SCHEMA_VERSION_MISMATCH",
        -                  "SCHEMA_INVARIANT_VIOLATION",
        -                  "UPSTREAM_TIMEOUT",
        -                  "BACKEND_FAILURE",
        -                  "IP_BLOCKED",
        -                  "RESOURCE_NOT_FOUND",
        -                  "RENDER_FAILURE",
        -                  "OCR_LOW_CONFIDENCE",
        -                  "MANUAL_REVIEW_REQUIRED",
        -                  "ACCEPTANCE_REQUIRED",
        -                  "INVALID_TOKEN"
        -                ],
        -                "type": "string"
        -              },
        -              "details": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "message": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "recoverable": {
        -                "type": "boolean"
        -              },
        -              "retry_after_seconds": {
        -                "anyOf": [
        -                  {
        -                    "minimum": 0,
        -                    "type": "integer"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              }
        -            },
        -            "required": [
        -              "code",
        -              "message",
        -              "recoverable"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      }
        -    },
        -    "required": [
        -      "_meta"
        -    ],
        -    "type": "object"
        -  }
        -]New value: +[
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "_meta": {
        +        "additionalProperties": false,
        +        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        +        "properties": {
        +          "deliverables": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        +                "properties": {
        +                  "docx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "dxf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "expires_at": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  },
        +                  "pdf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "xlsx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "expires_at"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "document_id": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "issued_at": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "rate_limit_remaining": {
        +            "anyOf": [
        +              {
        +                "minimum": 0,
        +                "type": "integer"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "request_id": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "schema_version": {
        +            "const": "1.0.0",
        +            "default": "1.0.0",
        +            "type": "string"
        +          },
        +          "scope_boundary": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        +                "properties": {
        +                  "not_in_scope": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "produced": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "recommended_companions": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "type": "string"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "produced",
        +                  "not_in_scope"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tier": {
        +            "enum": [
        +              "free",
        +              "paid"
        +            ],
        +            "type": "string"
        +          },
        +          "tier_upgrade": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        +                "properties": {
        +                  "available_tiers": {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        +                      "properties": {
        +                        "billing": {
        +                          "enum": [
        +                            "one_off",
        +                            "monthly",
        +                            "annual"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "currency": {
        +                          "enum": [
        +                            "GBP",
        +                            "SGD",
        +                            "EUR",
        +                            "USD",
        +                            "CAD",
        +                            "AUD",
        +                            "NZD",
        +                            "MYR"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "display_name": {
        +                          "type": "string"
        +                        },
        +                        "price_local": {
        +                          "type": "number"
        +                        },
        +                        "tier_slug": {
        +                          "enum": [
        +                            "7_day_pass",
        +                            "solo",
        +                            "studio",
        +                            "practice"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "unlock_summary": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "tier_slug",
        +                        "display_name",
        +                        "price_local",
        +                        "currency",
        +                        "billing",
        +                        "unlock_summary"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "current_tier": {
        +                    "const": "free",
        +                    "default": "free",
        +                    "type": "string"
        +                  },
        +                  "pass_credit": {
        +                    "anyOf": [
        +                      {
        +                        "additionalProperties": false,
        +                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        +                        "properties": {
        +                          "amount_local": {
        +                            "type": "number"
        +                          },
        +                          "applies_to": {
        +                            "const": "solo_first_month",
        +                            "default": "solo_first_month",
        +                            "type": "string"
        +                          },
        +                          "currency": {
        +                            "type": "string"
        +                          },
        +                          "redeemable_until": {
        +                            "type": "string"
        +                          }
        +                        },
        +                        "required": [
        +                          "amount_local",
        +                          "currency",
        +                          "redeemable_until"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "pricing_url": {
        +                    "default": "https://civilquants.com/pricing",
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "available_tiers"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tos_url": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "upgrade_hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "warranty_disclaimer": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          }
        +        },
        +        "required": [
        +          "request_id",
        +          "issued_at",
        +          "tier"
        +        ],
        +        "type": "object"
        +      },
        +      "data": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Schema § 1.1 — the typed payload returned inside `MCPResponse[ComputeResult]`.\n\nFree-tier responses MUST omit `drawings` and `audit_trail` (the bridge\nenforces this); paid-tier responses populate both. `text_summary` is\nbounded to 2000 chars — keeps the LLM-facing summary token-cheap and\nforces longer narrative into BoQ row descriptions where it belongs.\n`warnings` is the non-fatal geometry advisory list (both tiers).",
        +            "properties": {
        +              "assembly_slug": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "audit_trail": {
        +                "anyOf": [
        +                  {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.7 — paid-tier audit-trail entry.\n\nOne entry per BoQ row; `boq_row_index` ties to the row position in\n`ComputeResult.boq_rows`. `derivation` is the human-readable formula\nwalk-through; `formula` is the optional formal expression.",
        +                      "properties": {
        +                        "boq_row_index": {
        +                          "minimum": 0,
        +                          "type": "integer"
        +                        },
        +                        "derivation": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "formula": {
        +                          "anyOf": [
        +                            {
        +                              "type": "string"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ],
        +                          "default": null
        +                        },
        +                        "id": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "parameters_referenced": {
        +                          "items": {
        +                            "type": "string"
        +                          },
        +                          "type": "array"
        +                        }
        +                      },
        +                      "required": [
        +                        "id",
        +                        "boq_row_index",
        +                        "derivation"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "boq_rows": {
        +                "items": {
        +                  "additionalProperties": false,
        +                  "description": "Schema § 1.3 — a single bill row in the requested standard's format.\n\n`description` is the non-verbatim functional description per spec § 13.9 /\n§ 15 invariant — NEVER reproduces a standard's verbatim clause text.\n`rate` / `amount` ship null because rates are commodity data the customer\nowns; the engine's job is the measurement, not the pricing.",
        +                  "properties": {
        +                    "amount": {
        +                      "anyOf": [
        +                        {
        +                          "type": "number"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "attribution": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "audit_id": {
        +                      "anyOf": [
        +                        {
        +                          "type": "string"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "description": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "quantity": {
        +                      "minimum": 0,
        +                      "type": "number"
        +                    },
        +                    "rate": {
        +                      "anyOf": [
        +                        {
        +                          "type": "number"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "unit": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "work_section": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    }
        +                  },
        +                  "required": [
        +                    "work_section",
        +                    "description",
        +                    "quantity",
        +                    "unit",
        +                    "attribution"
        +                  ],
        +                  "type": "object"
        +                },
        +                "type": "array"
        +              },
        +              "drawings": {
        +                "anyOf": [
        +                  {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.6 — paid-tier drawing artefact pointer.\n\n`url` is an R2-signed URL; expiry is carried in `_meta.deliverables.expires_at`\non the envelope (not duplicated here). `layers` is DXF-only; PDF/SVG\ncallers omit it.",
        +                      "properties": {
        +                        "drawing_type": {
        +                          "enum": [
        +                            "section",
        +                            "plan",
        +                            "elevation",
        +                            "isometric",
        +                            "detail"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "format": {
        +                          "enum": [
        +                            "DXF",
        +                            "PDF",
        +                            "SVG"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "layers": {
        +                          "anyOf": [
        +                            {
        +                              "items": {
        +                                "type": "string"
        +                              },
        +                              "type": "array"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ],
        +                          "default": null
        +                        },
        +                        "scale": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "sheet_size": {
        +                          "enum": [
        +                            "A1",
        +                            "A2",
        +                            "A3",
        +                            "A4"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "url": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "drawing_type",
        +                        "format",
        +                        "url",
        +                        "sheet_size",
        +                        "scale"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "parameters_used": {
        +                "additionalProperties": false,
        +                "description": "Schema § 1.2 — the parameter snapshot the engine actually used.\n\nSplits user-supplied values from engine defaults so customers can see\nwhich numbers came from them and which the engine filled in. Every\ndefaulted parameter SHOULD have a corresponding entry in `assumptions`\n— the bridge layer enforces this when wrapping engine output.",
        +                "properties": {
        +                  "assumptions": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "engine_defaults": {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  "resolved_from_description": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "additionalProperties": false,
        +                          "description": "Schema § 1.2 — a parameter resolved by the forgiving-input layer.\n\nPopulated by the Track B-Forgiving Haiku-4.5 resolution pass; until that\nlayer lands, instances are constructed only by tests. `source` distinguishes\nthe resolution path so customers can audit which fields were inferred.",
        +                          "properties": {
        +                            "confidence": {
        +                              "anyOf": [
        +                                {
        +                                  "enum": [
        +                                    "high",
        +                                    "medium",
        +                                    "low"
        +                                  ],
        +                                  "type": "string"
        +                                },
        +                                {
        +                                  "type": "null"
        +                                }
        +                              ],
        +                              "default": null
        +                            },
        +                            "field_name": {
        +                              "minLength": 1,
        +                              "type": "string"
        +                            },
        +                            "resolved_value": {},
        +                            "source": {
        +                              "enum": [
        +                                "description_field",
        +                                "haiku_resolution",
        +                                "engine_default"
        +                              ],
        +                              "type": "string"
        +                            }
        +                          },
        +                          "required": [
        +                            "field_name",
        +                            "resolved_value",
        +                            "source"
        +                          ],
        +                          "type": "object"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "user_supplied": {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  }
        +                },
        +                "type": "object"
        +              },
        +              "standard": {
        +                "enum": [
        +                  "CESMM4",
        +                  "NRM2",
        +                  "SMM7",
        +                  "MMHW"
        +                ],
        +                "type": "string"
        +              },
        +              "text_summary": {
        +                "maxLength": 2000,
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "totals_summary": {
        +                "additionalProperties": false,
        +                "description": "Schema § 1.4 — totals_summary as a typed wrapper around the free-form dict.\n\nWire shape is a flat object (`{\"concrete_m3\": {...}, \"rebar_t\": {...}}`).\nWe model it as `RootModel`-equivalent via `model_config(extra=\"allow\")`\n+ a single `__root__`-style `entries` dict. Pydantic v2 recommends\n`RootModel` for free-form roots; using a wrapper class keeps the import\nsurface uniform with the rest of this module.",
        +                "properties": {
        +                  "entries": {
        +                    "additionalProperties": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.4 — single material/work-class total entry.",
        +                      "properties": {
        +                        "quantity": {
        +                          "minimum": 0,
        +                          "type": "number"
        +                        },
        +                        "unit": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "quantity",
        +                        "unit"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "object"
        +                  }
        +                },
        +                "type": "object"
        +              },
        +              "warnings": {
        +                "items": {
        +                  "additionalProperties": false,
        +                  "description": "Schema § 1.8 — a non-fatal geometry advisory (56th-fire T2).\n\nThe wire projection of the engine's `core.GeometryWarning`. Advisory only:\na warning NEVER changes a measured quantity — it flags geometry that is\nvalid but likely a mistake (e.g. a stale dependent-height default). Present\non BOTH tiers — a correctness/safety signal, not a paid feature.",
        +                  "properties": {
        +                    "affected_params": {
        +                      "items": {
        +                        "type": "string"
        +                      },
        +                      "type": "array"
        +                    },
        +                    "code": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "detail": {
        +                      "additionalProperties": {
        +                        "type": "number"
        +                      },
        +                      "type": "object"
        +                    },
        +                    "message": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "severity": {
        +                      "enum": [
        +                        "info",
        +                        "advisory",
        +                        "caution"
        +                      ],
        +                      "type": "string"
        +                    }
        +                  },
        +                  "required": [
        +                    "code",
        +                    "severity",
        +                    "message"
        +                  ],
        +                  "type": "object"
        +                },
        +                "type": "array"
        +              }
        +            },
        +            "required": [
        +              "assembly_slug",
        +              "standard",
        +              "parameters_used",
        +              "boq_rows",
        +              "totals_summary",
        +              "text_summary"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      },
        +      "error": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        +            "properties": {
        +              "code": {
        +                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        +                "enum": [
        +                  "RATE_LIMIT_EXCEEDED",
        +                  "TIER_INSUFFICIENT",
        +                  "INVALID_INPUT",
        +                  "SCHEMA_VERSION_MISMATCH",
        +                  "SCHEMA_INVARIANT_VIOLATION",
        +                  "UPSTREAM_TIMEOUT",
        +                  "BACKEND_FAILURE",
        +                  "IP_BLOCKED",
        +                  "RESOURCE_NOT_FOUND",
        +                  "RENDER_FAILURE",
        +                  "OCR_LOW_CONFIDENCE",
        +                  "MANUAL_REVIEW_REQUIRED",
        +                  "ACCEPTANCE_REQUIRED",
        +                  "INVALID_TOKEN"
        +                ],
        +                "type": "string"
        +              },
        +              "details": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "message": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "recoverable": {
        +                "type": "boolean"
        +              },
        +              "retry_after_seconds": {
        +                "anyOf": [
        +                  {
        +                    "minimum": 0,
        +                    "type": "integer"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              }
        +            },
        +            "required": [
        +              "code",
        +              "message",
        +              "recoverable"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      }
        +    },
        +    "required": [
        +      "_meta"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "_meta": {
        +        "additionalProperties": false,
        +        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        +        "properties": {
        +          "deliverables": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        +                "properties": {
        +                  "docx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "dxf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "expires_at": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  },
        +                  "pdf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "xlsx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "expires_at"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "document_id": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "issued_at": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "rate_limit_remaining": {
        +            "anyOf": [
        +              {
        +                "minimum": 0,
        +                "type": "integer"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "request_id": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "schema_version": {
        +            "const": "1.0.0",
        +            "default": "1.0.0",
        +            "type": "string"
        +          },
        +          "scope_boundary": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        +                "properties": {
        +                  "not_in_scope": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "produced": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "recommended_companions": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "type": "string"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "produced",
        +                  "not_in_scope"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tier": {
        +            "enum": [
        +              "free",
        +              "paid"
        +            ],
        +            "type": "string"
        +          },
        +          "tier_upgrade": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        +                "properties": {
        +                  "available_tiers": {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        +                      "properties": {
        +                        "billing": {
        +                          "enum": [
        +                            "one_off",
        +                            "monthly",
        +                            "annual"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "currency": {
        +                          "enum": [
        +                            "GBP",
        +                            "SGD",
        +                            "EUR",
        +                            "USD",
        +                            "CAD",
        +                            "AUD",
        +                            "NZD",
        +                            "MYR"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "display_name": {
        +                          "type": "string"
        +                        },
        +                        "price_local": {
        +                          "type": "number"
        +                        },
        +                        "tier_slug": {
        +                          "enum": [
        +                            "7_day_pass",
        +                            "solo",
        +                            "studio",
        +                            "practice"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "unlock_summary": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "tier_slug",
        +                        "display_name",
        +                        "price_local",
        +                        "currency",
        +                        "billing",
        +                        "unlock_summary"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "current_tier": {
        +                    "const": "free",
        +                    "default": "free",
        +                    "type": "string"
        +                  },
        +                  "pass_credit": {
        +                    "anyOf": [
        +                      {
        +                        "additionalProperties": false,
        +                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        +                        "properties": {
        +                          "amount_local": {
        +                            "type": "number"
        +                          },
        +                          "applies_to": {
        +                            "const": "solo_first_month",
        +                            "default": "solo_first_month",
        +                            "type": "string"
        +                          },
        +                          "currency": {
        +                            "type": "string"
        +                          },
        +                          "redeemable_until": {
        +                            "type": "string"
        +                          }
        +                        },
        +                        "required": [
        +                          "amount_local",
        +                          "currency",
        +                          "redeemable_until"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "pricing_url": {
        +                    "default": "https://civilquants.com/pricing",
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "available_tiers"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tos_url": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "upgrade_hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "warranty_disclaimer": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          }
        +        },
        +        "required": [
        +          "request_id",
        +          "issued_at",
        +          "tier"
        +        ],
        +        "type": "object"
        +      },
        +      "data": {
        +        "default": null,
        +        "title": "Data"
        +      },
        +      "error": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        +            "properties": {
        +              "code": {
        +                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        +                "enum": [
        +                  "RATE_LIMIT_EXCEEDED",
        +                  "TIER_INSUFFICIENT",
        +                  "INVALID_INPUT",
        +                  "SCHEMA_VERSION_MISMATCH",
        +                  "SCHEMA_INVARIANT_VIOLATION",
        +                  "UPSTREAM_TIMEOUT",
        +                  "BACKEND_FAILURE",
        +                  "IP_BLOCKED",
        +                  "RESOURCE_NOT_FOUND",
        +                  "RENDER_FAILURE",
        +                  "OCR_LOW_CONFIDENCE",
        +                  "MANUAL_REVIEW_REQUIRED",
        +                  "ACCEPTANCE_REQUIRED",
        +                  "INVALID_TOKEN"
        +                ],
        +                "type": "string"
        +              },
        +              "details": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "message": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "recoverable": {
        +                "type": "boolean"
        +              },
        +              "retry_after_seconds": {
        +                "anyOf": [
        +                  {
        +                    "minimum": 0,
        +                    "type": "integer"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              }
        +            },
        +            "required": [
        +              "code",
        +              "message",
        +              "recoverable"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      }
        +    },
        +    "required": [
        +      "_meta"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedcompute_headwall1 field changed
      • changedOutput schema / properties / result / anyOf
        Previous value: -[
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "_meta": {
        -        "additionalProperties": false,
        -        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        -        "properties": {
        -          "deliverables": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        -                "properties": {
        -                  "docx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "dxf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "expires_at": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  },
        -                  "pdf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "xlsx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "expires_at"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "document_id": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "issued_at": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "rate_limit_remaining": {
        -            "anyOf": [
        -              {
        -                "minimum": 0,
        -                "type": "integer"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "request_id": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "schema_version": {
        -            "const": "1.0.0",
        -            "default": "1.0.0",
        -            "type": "string"
        -          },
        -          "scope_boundary": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        -                "properties": {
        -                  "not_in_scope": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "produced": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "recommended_companions": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "type": "string"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "produced",
        -                  "not_in_scope"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tier": {
        -            "enum": [
        -              "free",
        -              "paid"
        -            ],
        -            "type": "string"
        -          },
        -          "tier_upgrade": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        -                "properties": {
        -                  "available_tiers": {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        -                      "properties": {
        -                        "billing": {
        -                          "enum": [
        -                            "one_off",
        -                            "monthly",
        -                            "annual"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "currency": {
        -                          "enum": [
        -                            "GBP",
        -                            "SGD",
        -                            "EUR",
        -                            "USD",
        -                            "CAD",
        -                            "AUD",
        -                            "NZD",
        -                            "MYR"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "display_name": {
        -                          "type": "string"
        -                        },
        -                        "price_local": {
        -                          "type": "number"
        -                        },
        -                        "tier_slug": {
        -                          "enum": [
        -                            "7_day_pass",
        -                            "solo",
        -                            "studio",
        -                            "practice"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "unlock_summary": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "tier_slug",
        -                        "display_name",
        -                        "price_local",
        -                        "currency",
        -                        "billing",
        -                        "unlock_summary"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "current_tier": {
        -                    "const": "free",
        -                    "default": "free",
        -                    "type": "string"
        -                  },
        -                  "pass_credit": {
        -                    "anyOf": [
        -                      {
        -                        "additionalProperties": false,
        -                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        -                        "properties": {
        -                          "amount_local": {
        -                            "type": "number"
        -                          },
        -                          "applies_to": {
        -                            "const": "solo_first_month",
        -                            "default": "solo_first_month",
        -                            "type": "string"
        -                          },
        -                          "currency": {
        -                            "type": "string"
        -                          },
        -                          "redeemable_until": {
        -                            "type": "string"
        -                          }
        -                        },
        -                        "required": [
        -                          "amount_local",
        -                          "currency",
        -                          "redeemable_until"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "pricing_url": {
        -                    "default": "https://civilquants.com/pricing",
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "available_tiers"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tos_url": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "upgrade_hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "warranty_disclaimer": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          }
        -        },
        -        "required": [
        -          "request_id",
        -          "issued_at",
        -          "tier"
        -        ],
        -        "type": "object"
        -      },
        -      "data": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Schema § 1.1 — the typed payload returned inside `MCPResponse[ComputeResult]`.\n\nFree-tier responses MUST omit `drawings` and `audit_trail` (the bridge\nenforces this); paid-tier responses populate both. `text_summary` is\nbounded to 2000 chars — keeps the LLM-facing summary token-cheap and\nforces longer narrative into BoQ row descriptions where it belongs.",
        -            "properties": {
        -              "assembly_slug": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "audit_trail": {
        -                "anyOf": [
        -                  {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.7 — paid-tier audit-trail entry.\n\nOne entry per BoQ row; `boq_row_index` ties to the row position in\n`ComputeResult.boq_rows`. `derivation` is the human-readable formula\nwalk-through; `formula` is the optional formal expression.",
        -                      "properties": {
        -                        "boq_row_index": {
        -                          "minimum": 0,
        -                          "type": "integer"
        -                        },
        -                        "derivation": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "formula": {
        -                          "anyOf": [
        -                            {
        -                              "type": "string"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ],
        -                          "default": null
        -                        },
        -                        "id": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "parameters_referenced": {
        -                          "items": {
        -                            "type": "string"
        -                          },
        -                          "type": "array"
        -                        }
        -                      },
        -                      "required": [
        -                        "id",
        -                        "boq_row_index",
        -                        "derivation"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "boq_rows": {
        -                "items": {
        -                  "additionalProperties": false,
        -                  "description": "Schema § 1.3 — a single bill row in the requested standard's format.\n\n`description` is the non-verbatim functional description per spec § 13.9 /\n§ 15 invariant — NEVER reproduces a standard's verbatim clause text.\n`rate` / `amount` ship null because rates are commodity data the customer\nowns; the engine's job is the measurement, not the pricing.",
        -                  "properties": {
        -                    "amount": {
        -                      "anyOf": [
        -                        {
        -                          "type": "number"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "attribution": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "audit_id": {
        -                      "anyOf": [
        -                        {
        -                          "type": "string"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "description": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "quantity": {
        -                      "minimum": 0,
        -                      "type": "number"
        -                    },
        -                    "rate": {
        -                      "anyOf": [
        -                        {
        -                          "type": "number"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "unit": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "work_section": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    }
        -                  },
        -                  "required": [
        -                    "work_section",
        -                    "description",
        -                    "quantity",
        -                    "unit",
        -                    "attribution"
        -                  ],
        -                  "type": "object"
        -                },
        -                "type": "array"
        -              },
        -              "drawings": {
        -                "anyOf": [
        -                  {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.6 — paid-tier drawing artefact pointer.\n\n`url` is an R2-signed URL; expiry is carried in `_meta.deliverables.expires_at`\non the envelope (not duplicated here). `layers` is DXF-only; PDF/SVG\ncallers omit it.",
        -                      "properties": {
        -                        "drawing_type": {
        -                          "enum": [
        -                            "section",
        -                            "plan",
        -                            "elevation",
        -                            "isometric",
        -                            "detail"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "format": {
        -                          "enum": [
        -                            "DXF",
        -                            "PDF",
        -                            "SVG"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "layers": {
        -                          "anyOf": [
        -                            {
        -                              "items": {
        -                                "type": "string"
        -                              },
        -                              "type": "array"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ],
        -                          "default": null
        -                        },
        -                        "scale": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "sheet_size": {
        -                          "enum": [
        -                            "A1",
        -                            "A2",
        -                            "A3",
        -                            "A4"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "url": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "drawing_type",
        -                        "format",
        -                        "url",
        -                        "sheet_size",
        -                        "scale"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "parameters_used": {
        -                "additionalProperties": false,
        -                "description": "Schema § 1.2 — the parameter snapshot the engine actually used.\n\nSplits user-supplied values from engine defaults so customers can see\nwhich numbers came from them and which the engine filled in. Every\ndefaulted parameter SHOULD have a corresponding entry in `assumptions`\n— the bridge layer enforces this when wrapping engine output.",
        -                "properties": {
        -                  "assumptions": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "engine_defaults": {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  "resolved_from_description": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "additionalProperties": false,
        -                          "description": "Schema § 1.2 — a parameter resolved by the forgiving-input layer.\n\nPopulated by the Track B-Forgiving Haiku-4.5 resolution pass; until that\nlayer lands, instances are constructed only by tests. `source` distinguishes\nthe resolution path so customers can audit which fields were inferred.",
        -                          "properties": {
        -                            "confidence": {
        -                              "anyOf": [
        -                                {
        -                                  "enum": [
        -                                    "high",
        -                                    "medium",
        -                                    "low"
        -                                  ],
        -                                  "type": "string"
        -                                },
        -                                {
        -                                  "type": "null"
        -                                }
        -                              ],
        -                              "default": null
        -                            },
        -                            "field_name": {
        -                              "minLength": 1,
        -                              "type": "string"
        -                            },
        -                            "resolved_value": {},
        -                            "source": {
        -                              "enum": [
        -                                "description_field",
        -                                "haiku_resolution",
        -                                "engine_default"
        -                              ],
        -                              "type": "string"
        -                            }
        -                          },
        -                          "required": [
        -                            "field_name",
        -                            "resolved_value",
        -                            "source"
        -                          ],
        -                          "type": "object"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "user_supplied": {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  }
        -                },
        -                "type": "object"
        -              },
        -              "standard": {
        -                "enum": [
        -                  "CESMM4",
        -                  "NRM2",
        -                  "SMM7",
        -                  "MMHW"
        -                ],
        -                "type": "string"
        -              },
        -              "text_summary": {
        -                "maxLength": 2000,
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "totals_summary": {
        -                "additionalProperties": false,
        -                "description": "Schema § 1.4 — totals_summary as a typed wrapper around the free-form dict.\n\nWire shape is a flat object (`{\"concrete_m3\": {...}, \"rebar_t\": {...}}`).\nWe model it as `RootModel`-equivalent via `model_config(extra=\"allow\")`\n+ a single `__root__`-style `entries` dict. Pydantic v2 recommends\n`RootModel` for free-form roots; using a wrapper class keeps the import\nsurface uniform with the rest of this module.",
        -                "properties": {
        -                  "entries": {
        -                    "additionalProperties": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.4 — single material/work-class total entry.",
        -                      "properties": {
        -                        "quantity": {
        -                          "minimum": 0,
        -                          "type": "number"
        -                        },
        -                        "unit": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "quantity",
        -                        "unit"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "object"
        -                  }
        -                },
        -                "type": "object"
        -              }
        -            },
        -            "required": [
        -              "assembly_slug",
        -              "standard",
        -              "parameters_used",
        -              "boq_rows",
        -              "totals_summary",
        -              "text_summary"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      },
        -      "error": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        -            "properties": {
        -              "code": {
        -                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        -                "enum": [
        -                  "RATE_LIMIT_EXCEEDED",
        -                  "TIER_INSUFFICIENT",
        -                  "INVALID_INPUT",
        -                  "SCHEMA_VERSION_MISMATCH",
        -                  "SCHEMA_INVARIANT_VIOLATION",
        -                  "UPSTREAM_TIMEOUT",
        -                  "BACKEND_FAILURE",
        -                  "IP_BLOCKED",
        -                  "RESOURCE_NOT_FOUND",
        -                  "RENDER_FAILURE",
        -                  "OCR_LOW_CONFIDENCE",
        -                  "MANUAL_REVIEW_REQUIRED",
        -                  "ACCEPTANCE_REQUIRED",
        -                  "INVALID_TOKEN"
        -                ],
        -                "type": "string"
        -              },
        -              "details": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "message": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "recoverable": {
        -                "type": "boolean"
        -              },
        -              "retry_after_seconds": {
        -                "anyOf": [
        -                  {
        -                    "minimum": 0,
        -                    "type": "integer"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              }
        -            },
        -            "required": [
        -              "code",
        -              "message",
        -              "recoverable"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      }
        -    },
        -    "required": [
        -      "_meta"
        -    ],
        -    "type": "object"
        -  },
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "_meta": {
        -        "additionalProperties": false,
        -        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        -        "properties": {
        -          "deliverables": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        -                "properties": {
        -                  "docx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "dxf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "expires_at": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  },
        -                  "pdf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "xlsx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "expires_at"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "document_id": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "issued_at": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "rate_limit_remaining": {
        -            "anyOf": [
        -              {
        -                "minimum": 0,
        -                "type": "integer"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "request_id": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "schema_version": {
        -            "const": "1.0.0",
        -            "default": "1.0.0",
        -            "type": "string"
        -          },
        -          "scope_boundary": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        -                "properties": {
        -                  "not_in_scope": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "produced": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "recommended_companions": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "type": "string"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "produced",
        -                  "not_in_scope"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tier": {
        -            "enum": [
        -              "free",
        -              "paid"
        -            ],
        -            "type": "string"
        -          },
        -          "tier_upgrade": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        -                "properties": {
        -                  "available_tiers": {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        -                      "properties": {
        -                        "billing": {
        -                          "enum": [
        -                            "one_off",
        -                            "monthly",
        -                            "annual"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "currency": {
        -                          "enum": [
        -                            "GBP",
        -                            "SGD",
        -                            "EUR",
        -                            "USD",
        -                            "CAD",
        -                            "AUD",
        -                            "NZD",
        -                            "MYR"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "display_name": {
        -                          "type": "string"
        -                        },
        -                        "price_local": {
        -                          "type": "number"
        -                        },
        -                        "tier_slug": {
        -                          "enum": [
        -                            "7_day_pass",
        -                            "solo",
        -                            "studio",
        -                            "practice"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "unlock_summary": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "tier_slug",
        -                        "display_name",
        -                        "price_local",
        -                        "currency",
        -                        "billing",
        -                        "unlock_summary"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "current_tier": {
        -                    "const": "free",
        -                    "default": "free",
        -                    "type": "string"
        -                  },
        -                  "pass_credit": {
        -                    "anyOf": [
        -                      {
        -                        "additionalProperties": false,
        -                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        -                        "properties": {
        -                          "amount_local": {
        -                            "type": "number"
        -                          },
        -                          "applies_to": {
        -                            "const": "solo_first_month",
        -                            "default": "solo_first_month",
        -                            "type": "string"
        -                          },
        -                          "currency": {
        -                            "type": "string"
        -                          },
        -                          "redeemable_until": {
        -                            "type": "string"
        -                          }
        -                        },
        -                        "required": [
        -                          "amount_local",
        -                          "currency",
        -                          "redeemable_until"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "pricing_url": {
        -                    "default": "https://civilquants.com/pricing",
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "available_tiers"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tos_url": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "upgrade_hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "warranty_disclaimer": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          }
        -        },
        -        "required": [
        -          "request_id",
        -          "issued_at",
        -          "tier"
        -        ],
        -        "type": "object"
        -      },
        -      "data": {
        -        "default": null,
        -        "title": "Data"
        -      },
        -      "error": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        -            "properties": {
        -              "code": {
        -                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        -                "enum": [
        -                  "RATE_LIMIT_EXCEEDED",
        -                  "TIER_INSUFFICIENT",
        -                  "INVALID_INPUT",
        -                  "SCHEMA_VERSION_MISMATCH",
        -                  "SCHEMA_INVARIANT_VIOLATION",
        -                  "UPSTREAM_TIMEOUT",
        -                  "BACKEND_FAILURE",
        -                  "IP_BLOCKED",
        -                  "RESOURCE_NOT_FOUND",
        -                  "RENDER_FAILURE",
        -                  "OCR_LOW_CONFIDENCE",
        -                  "MANUAL_REVIEW_REQUIRED",
        -                  "ACCEPTANCE_REQUIRED",
        -                  "INVALID_TOKEN"
        -                ],
        -                "type": "string"
        -              },
        -              "details": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "message": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "recoverable": {
        -                "type": "boolean"
        -              },
        -              "retry_after_seconds": {
        -                "anyOf": [
        -                  {
        -                    "minimum": 0,
        -                    "type": "integer"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              }
        -            },
        -            "required": [
        -              "code",
        -              "message",
        -              "recoverable"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      }
        -    },
        -    "required": [
        -      "_meta"
        -    ],
        -    "type": "object"
        -  }
        -]New value: +[
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "_meta": {
        +        "additionalProperties": false,
        +        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        +        "properties": {
        +          "deliverables": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        +                "properties": {
        +                  "docx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "dxf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "expires_at": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  },
        +                  "pdf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "xlsx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "expires_at"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "document_id": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "issued_at": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "rate_limit_remaining": {
        +            "anyOf": [
        +              {
        +                "minimum": 0,
        +                "type": "integer"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "request_id": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "schema_version": {
        +            "const": "1.0.0",
        +            "default": "1.0.0",
        +            "type": "string"
        +          },
        +          "scope_boundary": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        +                "properties": {
        +                  "not_in_scope": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "produced": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "recommended_companions": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "type": "string"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "produced",
        +                  "not_in_scope"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tier": {
        +            "enum": [
        +              "free",
        +              "paid"
        +            ],
        +            "type": "string"
        +          },
        +          "tier_upgrade": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        +                "properties": {
        +                  "available_tiers": {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        +                      "properties": {
        +                        "billing": {
        +                          "enum": [
        +                            "one_off",
        +                            "monthly",
        +                            "annual"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "currency": {
        +                          "enum": [
        +                            "GBP",
        +                            "SGD",
        +                            "EUR",
        +                            "USD",
        +                            "CAD",
        +                            "AUD",
        +                            "NZD",
        +                            "MYR"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "display_name": {
        +                          "type": "string"
        +                        },
        +                        "price_local": {
        +                          "type": "number"
        +                        },
        +                        "tier_slug": {
        +                          "enum": [
        +                            "7_day_pass",
        +                            "solo",
        +                            "studio",
        +                            "practice"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "unlock_summary": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "tier_slug",
        +                        "display_name",
        +                        "price_local",
        +                        "currency",
        +                        "billing",
        +                        "unlock_summary"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "current_tier": {
        +                    "const": "free",
        +                    "default": "free",
        +                    "type": "string"
        +                  },
        +                  "pass_credit": {
        +                    "anyOf": [
        +                      {
        +                        "additionalProperties": false,
        +                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        +                        "properties": {
        +                          "amount_local": {
        +                            "type": "number"
        +                          },
        +                          "applies_to": {
        +                            "const": "solo_first_month",
        +                            "default": "solo_first_month",
        +                            "type": "string"
        +                          },
        +                          "currency": {
        +                            "type": "string"
        +                          },
        +                          "redeemable_until": {
        +                            "type": "string"
        +                          }
        +                        },
        +                        "required": [
        +                          "amount_local",
        +                          "currency",
        +                          "redeemable_until"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "pricing_url": {
        +                    "default": "https://civilquants.com/pricing",
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "available_tiers"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tos_url": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "upgrade_hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "warranty_disclaimer": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          }
        +        },
        +        "required": [
        +          "request_id",
        +          "issued_at",
        +          "tier"
        +        ],
        +        "type": "object"
        +      },
        +      "data": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Schema § 1.1 — the typed payload returned inside `MCPResponse[ComputeResult]`.\n\nFree-tier responses MUST omit `drawings` and `audit_trail` (the bridge\nenforces this); paid-tier responses populate both. `text_summary` is\nbounded to 2000 chars — keeps the LLM-facing summary token-cheap and\nforces longer narrative into BoQ row descriptions where it belongs.\n`warnings` is the non-fatal geometry advisory list (both tiers).",
        +            "properties": {
        +              "assembly_slug": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "audit_trail": {
        +                "anyOf": [
        +                  {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.7 — paid-tier audit-trail entry.\n\nOne entry per BoQ row; `boq_row_index` ties to the row position in\n`ComputeResult.boq_rows`. `derivation` is the human-readable formula\nwalk-through; `formula` is the optional formal expression.",
        +                      "properties": {
        +                        "boq_row_index": {
        +                          "minimum": 0,
        +                          "type": "integer"
        +                        },
        +                        "derivation": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "formula": {
        +                          "anyOf": [
        +                            {
        +                              "type": "string"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ],
        +                          "default": null
        +                        },
        +                        "id": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "parameters_referenced": {
        +                          "items": {
        +                            "type": "string"
        +                          },
        +                          "type": "array"
        +                        }
        +                      },
        +                      "required": [
        +                        "id",
        +                        "boq_row_index",
        +                        "derivation"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "boq_rows": {
        +                "items": {
        +                  "additionalProperties": false,
        +                  "description": "Schema § 1.3 — a single bill row in the requested standard's format.\n\n`description` is the non-verbatim functional description per spec § 13.9 /\n§ 15 invariant — NEVER reproduces a standard's verbatim clause text.\n`rate` / `amount` ship null because rates are commodity data the customer\nowns; the engine's job is the measurement, not the pricing.",
        +                  "properties": {
        +                    "amount": {
        +                      "anyOf": [
        +                        {
        +                          "type": "number"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "attribution": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "audit_id": {
        +                      "anyOf": [
        +                        {
        +                          "type": "string"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "description": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "quantity": {
        +                      "minimum": 0,
        +                      "type": "number"
        +                    },
        +                    "rate": {
        +                      "anyOf": [
        +                        {
        +                          "type": "number"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "unit": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "work_section": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    }
        +                  },
        +                  "required": [
        +                    "work_section",
        +                    "description",
        +                    "quantity",
        +                    "unit",
        +                    "attribution"
        +                  ],
        +                  "type": "object"
        +                },
        +                "type": "array"
        +              },
        +              "drawings": {
        +                "anyOf": [
        +                  {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.6 — paid-tier drawing artefact pointer.\n\n`url` is an R2-signed URL; expiry is carried in `_meta.deliverables.expires_at`\non the envelope (not duplicated here). `layers` is DXF-only; PDF/SVG\ncallers omit it.",
        +                      "properties": {
        +                        "drawing_type": {
        +                          "enum": [
        +                            "section",
        +                            "plan",
        +                            "elevation",
        +                            "isometric",
        +                            "detail"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "format": {
        +                          "enum": [
        +                            "DXF",
        +                            "PDF",
        +                            "SVG"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "layers": {
        +                          "anyOf": [
        +                            {
        +                              "items": {
        +                                "type": "string"
        +                              },
        +                              "type": "array"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ],
        +                          "default": null
        +                        },
        +                        "scale": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "sheet_size": {
        +                          "enum": [
        +                            "A1",
        +                            "A2",
        +                            "A3",
        +                            "A4"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "url": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "drawing_type",
        +                        "format",
        +                        "url",
        +                        "sheet_size",
        +                        "scale"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "parameters_used": {
        +                "additionalProperties": false,
        +                "description": "Schema § 1.2 — the parameter snapshot the engine actually used.\n\nSplits user-supplied values from engine defaults so customers can see\nwhich numbers came from them and which the engine filled in. Every\ndefaulted parameter SHOULD have a corresponding entry in `assumptions`\n— the bridge layer enforces this when wrapping engine output.",
        +                "properties": {
        +                  "assumptions": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "engine_defaults": {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  "resolved_from_description": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "additionalProperties": false,
        +                          "description": "Schema § 1.2 — a parameter resolved by the forgiving-input layer.\n\nPopulated by the Track B-Forgiving Haiku-4.5 resolution pass; until that\nlayer lands, instances are constructed only by tests. `source` distinguishes\nthe resolution path so customers can audit which fields were inferred.",
        +                          "properties": {
        +                            "confidence": {
        +                              "anyOf": [
        +                                {
        +                                  "enum": [
        +                                    "high",
        +                                    "medium",
        +                                    "low"
        +                                  ],
        +                                  "type": "string"
        +                                },
        +                                {
        +                                  "type": "null"
        +                                }
        +                              ],
        +                              "default": null
        +                            },
        +                            "field_name": {
        +                              "minLength": 1,
        +                              "type": "string"
        +                            },
        +                            "resolved_value": {},
        +                            "source": {
        +                              "enum": [
        +                                "description_field",
        +                                "haiku_resolution",
        +                                "engine_default"
        +                              ],
        +                              "type": "string"
        +                            }
        +                          },
        +                          "required": [
        +                            "field_name",
        +                            "resolved_value",
        +                            "source"
        +                          ],
        +                          "type": "object"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "user_supplied": {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  }
        +                },
        +                "type": "object"
        +              },
        +              "standard": {
        +                "enum": [
        +                  "CESMM4",
        +                  "NRM2",
        +                  "SMM7",
        +                  "MMHW"
        +                ],
        +                "type": "string"
        +              },
        +              "text_summary": {
        +                "maxLength": 2000,
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "totals_summary": {
        +                "additionalProperties": false,
        +                "description": "Schema § 1.4 — totals_summary as a typed wrapper around the free-form dict.\n\nWire shape is a flat object (`{\"concrete_m3\": {...}, \"rebar_t\": {...}}`).\nWe model it as `RootModel`-equivalent via `model_config(extra=\"allow\")`\n+ a single `__root__`-style `entries` dict. Pydantic v2 recommends\n`RootModel` for free-form roots; using a wrapper class keeps the import\nsurface uniform with the rest of this module.",
        +                "properties": {
        +                  "entries": {
        +                    "additionalProperties": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.4 — single material/work-class total entry.",
        +                      "properties": {
        +                        "quantity": {
        +                          "minimum": 0,
        +                          "type": "number"
        +                        },
        +                        "unit": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "quantity",
        +                        "unit"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "object"
        +                  }
        +                },
        +                "type": "object"
        +              },
        +              "warnings": {
        +                "items": {
        +                  "additionalProperties": false,
        +                  "description": "Schema § 1.8 — a non-fatal geometry advisory (56th-fire T2).\n\nThe wire projection of the engine's `core.GeometryWarning`. Advisory only:\na warning NEVER changes a measured quantity — it flags geometry that is\nvalid but likely a mistake (e.g. a stale dependent-height default). Present\non BOTH tiers — a correctness/safety signal, not a paid feature.",
        +                  "properties": {
        +                    "affected_params": {
        +                      "items": {
        +                        "type": "string"
        +                      },
        +                      "type": "array"
        +                    },
        +                    "code": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "detail": {
        +                      "additionalProperties": {
        +                        "type": "number"
        +                      },
        +                      "type": "object"
        +                    },
        +                    "message": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "severity": {
        +                      "enum": [
        +                        "info",
        +                        "advisory",
        +                        "caution"
        +                      ],
        +                      "type": "string"
        +                    }
        +                  },
        +                  "required": [
        +                    "code",
        +                    "severity",
        +                    "message"
        +                  ],
        +                  "type": "object"
        +                },
        +                "type": "array"
        +              }
        +            },
        +            "required": [
        +              "assembly_slug",
        +              "standard",
        +              "parameters_used",
        +              "boq_rows",
        +              "totals_summary",
        +              "text_summary"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      },
        +      "error": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        +            "properties": {
        +              "code": {
        +                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        +                "enum": [
        +                  "RATE_LIMIT_EXCEEDED",
        +                  "TIER_INSUFFICIENT",
        +                  "INVALID_INPUT",
        +                  "SCHEMA_VERSION_MISMATCH",
        +                  "SCHEMA_INVARIANT_VIOLATION",
        +                  "UPSTREAM_TIMEOUT",
        +                  "BACKEND_FAILURE",
        +                  "IP_BLOCKED",
        +                  "RESOURCE_NOT_FOUND",
        +                  "RENDER_FAILURE",
        +                  "OCR_LOW_CONFIDENCE",
        +                  "MANUAL_REVIEW_REQUIRED",
        +                  "ACCEPTANCE_REQUIRED",
        +                  "INVALID_TOKEN"
        +                ],
        +                "type": "string"
        +              },
        +              "details": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "message": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "recoverable": {
        +                "type": "boolean"
        +              },
        +              "retry_after_seconds": {
        +                "anyOf": [
        +                  {
        +                    "minimum": 0,
        +                    "type": "integer"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              }
        +            },
        +            "required": [
        +              "code",
        +              "message",
        +              "recoverable"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      }
        +    },
        +    "required": [
        +      "_meta"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "_meta": {
        +        "additionalProperties": false,
        +        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        +        "properties": {
        +          "deliverables": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        +                "properties": {
        +                  "docx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "dxf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "expires_at": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  },
        +                  "pdf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "xlsx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "expires_at"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "document_id": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "issued_at": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "rate_limit_remaining": {
        +            "anyOf": [
        +              {
        +                "minimum": 0,
        +                "type": "integer"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "request_id": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "schema_version": {
        +            "const": "1.0.0",
        +            "default": "1.0.0",
        +            "type": "string"
        +          },
        +          "scope_boundary": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        +                "properties": {
        +                  "not_in_scope": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "produced": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "recommended_companions": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "type": "string"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "produced",
        +                  "not_in_scope"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tier": {
        +            "enum": [
        +              "free",
        +              "paid"
        +            ],
        +            "type": "string"
        +          },
        +          "tier_upgrade": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        +                "properties": {
        +                  "available_tiers": {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        +                      "properties": {
        +                        "billing": {
        +                          "enum": [
        +                            "one_off",
        +                            "monthly",
        +                            "annual"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "currency": {
        +                          "enum": [
        +                            "GBP",
        +                            "SGD",
        +                            "EUR",
        +                            "USD",
        +                            "CAD",
        +                            "AUD",
        +                            "NZD",
        +                            "MYR"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "display_name": {
        +                          "type": "string"
        +                        },
        +                        "price_local": {
        +                          "type": "number"
        +                        },
        +                        "tier_slug": {
        +                          "enum": [
        +                            "7_day_pass",
        +                            "solo",
        +                            "studio",
        +                            "practice"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "unlock_summary": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "tier_slug",
        +                        "display_name",
        +                        "price_local",
        +                        "currency",
        +                        "billing",
        +                        "unlock_summary"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "current_tier": {
        +                    "const": "free",
        +                    "default": "free",
        +                    "type": "string"
        +                  },
        +                  "pass_credit": {
        +                    "anyOf": [
        +                      {
        +                        "additionalProperties": false,
        +                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        +                        "properties": {
        +                          "amount_local": {
        +                            "type": "number"
        +                          },
        +                          "applies_to": {
        +                            "const": "solo_first_month",
        +                            "default": "solo_first_month",
        +                            "type": "string"
        +                          },
        +                          "currency": {
        +                            "type": "string"
        +                          },
        +                          "redeemable_until": {
        +                            "type": "string"
        +                          }
        +                        },
        +                        "required": [
        +                          "amount_local",
        +                          "currency",
        +                          "redeemable_until"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "pricing_url": {
        +                    "default": "https://civilquants.com/pricing",
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "available_tiers"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tos_url": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "upgrade_hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "warranty_disclaimer": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          }
        +        },
        +        "required": [
        +          "request_id",
        +          "issued_at",
        +          "tier"
        +        ],
        +        "type": "object"
        +      },
        +      "data": {
        +        "default": null,
        +        "title": "Data"
        +      },
        +      "error": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        +            "properties": {
        +              "code": {
        +                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        +                "enum": [
        +                  "RATE_LIMIT_EXCEEDED",
        +                  "TIER_INSUFFICIENT",
        +                  "INVALID_INPUT",
        +                  "SCHEMA_VERSION_MISMATCH",
        +                  "SCHEMA_INVARIANT_VIOLATION",
        +                  "UPSTREAM_TIMEOUT",
        +                  "BACKEND_FAILURE",
        +                  "IP_BLOCKED",
        +                  "RESOURCE_NOT_FOUND",
        +                  "RENDER_FAILURE",
        +                  "OCR_LOW_CONFIDENCE",
        +                  "MANUAL_REVIEW_REQUIRED",
        +                  "ACCEPTANCE_REQUIRED",
        +                  "INVALID_TOKEN"
        +                ],
        +                "type": "string"
        +              },
        +              "details": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "message": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "recoverable": {
        +                "type": "boolean"
        +              },
        +              "retry_after_seconds": {
        +                "anyOf": [
        +                  {
        +                    "minimum": 0,
        +                    "type": "integer"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              }
        +            },
        +            "required": [
        +              "code",
        +              "message",
        +              "recoverable"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      }
        +    },
        +    "required": [
        +      "_meta"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedcompute_headwall_attenuation_outlet1 field changed
      • changedOutput schema / properties / result / anyOf
        Previous value: -[
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "_meta": {
        -        "additionalProperties": false,
        -        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        -        "properties": {
        -          "deliverables": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        -                "properties": {
        -                  "docx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "dxf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "expires_at": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  },
        -                  "pdf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "xlsx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "expires_at"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "document_id": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "issued_at": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "rate_limit_remaining": {
        -            "anyOf": [
        -              {
        -                "minimum": 0,
        -                "type": "integer"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "request_id": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "schema_version": {
        -            "const": "1.0.0",
        -            "default": "1.0.0",
        -            "type": "string"
        -          },
        -          "scope_boundary": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        -                "properties": {
        -                  "not_in_scope": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "produced": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "recommended_companions": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "type": "string"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "produced",
        -                  "not_in_scope"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tier": {
        -            "enum": [
        -              "free",
        -              "paid"
        -            ],
        -            "type": "string"
        -          },
        -          "tier_upgrade": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        -                "properties": {
        -                  "available_tiers": {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        -                      "properties": {
        -                        "billing": {
        -                          "enum": [
        -                            "one_off",
        -                            "monthly",
        -                            "annual"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "currency": {
        -                          "enum": [
        -                            "GBP",
        -                            "SGD",
        -                            "EUR",
        -                            "USD",
        -                            "CAD",
        -                            "AUD",
        -                            "NZD",
        -                            "MYR"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "display_name": {
        -                          "type": "string"
        -                        },
        -                        "price_local": {
        -                          "type": "number"
        -                        },
        -                        "tier_slug": {
        -                          "enum": [
        -                            "7_day_pass",
        -                            "solo",
        -                            "studio",
        -                            "practice"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "unlock_summary": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "tier_slug",
        -                        "display_name",
        -                        "price_local",
        -                        "currency",
        -                        "billing",
        -                        "unlock_summary"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "current_tier": {
        -                    "const": "free",
        -                    "default": "free",
        -                    "type": "string"
        -                  },
        -                  "pass_credit": {
        -                    "anyOf": [
        -                      {
        -                        "additionalProperties": false,
        -                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        -                        "properties": {
        -                          "amount_local": {
        -                            "type": "number"
        -                          },
        -                          "applies_to": {
        -                            "const": "solo_first_month",
        -                            "default": "solo_first_month",
        -                            "type": "string"
        -                          },
        -                          "currency": {
        -                            "type": "string"
        -                          },
        -                          "redeemable_until": {
        -                            "type": "string"
        -                          }
        -                        },
        -                        "required": [
        -                          "amount_local",
        -                          "currency",
        -                          "redeemable_until"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "pricing_url": {
        -                    "default": "https://civilquants.com/pricing",
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "available_tiers"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tos_url": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "upgrade_hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "warranty_disclaimer": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          }
        -        },
        -        "required": [
        -          "request_id",
        -          "issued_at",
        -          "tier"
        -        ],
        -        "type": "object"
        -      },
        -      "data": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Schema § 1.1 — the typed payload returned inside `MCPResponse[ComputeResult]`.\n\nFree-tier responses MUST omit `drawings` and `audit_trail` (the bridge\nenforces this); paid-tier responses populate both. `text_summary` is\nbounded to 2000 chars — keeps the LLM-facing summary token-cheap and\nforces longer narrative into BoQ row descriptions where it belongs.",
        -            "properties": {
        -              "assembly_slug": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "audit_trail": {
        -                "anyOf": [
        -                  {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.7 — paid-tier audit-trail entry.\n\nOne entry per BoQ row; `boq_row_index` ties to the row position in\n`ComputeResult.boq_rows`. `derivation` is the human-readable formula\nwalk-through; `formula` is the optional formal expression.",
        -                      "properties": {
        -                        "boq_row_index": {
        -                          "minimum": 0,
        -                          "type": "integer"
        -                        },
        -                        "derivation": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "formula": {
        -                          "anyOf": [
        -                            {
        -                              "type": "string"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ],
        -                          "default": null
        -                        },
        -                        "id": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "parameters_referenced": {
        -                          "items": {
        -                            "type": "string"
        -                          },
        -                          "type": "array"
        -                        }
        -                      },
        -                      "required": [
        -                        "id",
        -                        "boq_row_index",
        -                        "derivation"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "boq_rows": {
        -                "items": {
        -                  "additionalProperties": false,
        -                  "description": "Schema § 1.3 — a single bill row in the requested standard's format.\n\n`description` is the non-verbatim functional description per spec § 13.9 /\n§ 15 invariant — NEVER reproduces a standard's verbatim clause text.\n`rate` / `amount` ship null because rates are commodity data the customer\nowns; the engine's job is the measurement, not the pricing.",
        -                  "properties": {
        -                    "amount": {
        -                      "anyOf": [
        -                        {
        -                          "type": "number"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "attribution": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "audit_id": {
        -                      "anyOf": [
        -                        {
        -                          "type": "string"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "description": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "quantity": {
        -                      "minimum": 0,
        -                      "type": "number"
        -                    },
        -                    "rate": {
        -                      "anyOf": [
        -                        {
        -                          "type": "number"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "unit": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "work_section": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    }
        -                  },
        -                  "required": [
        -                    "work_section",
        -                    "description",
        -                    "quantity",
        -                    "unit",
        -                    "attribution"
        -                  ],
        -                  "type": "object"
        -                },
        -                "type": "array"
        -              },
        -              "drawings": {
        -                "anyOf": [
        -                  {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.6 — paid-tier drawing artefact pointer.\n\n`url` is an R2-signed URL; expiry is carried in `_meta.deliverables.expires_at`\non the envelope (not duplicated here). `layers` is DXF-only; PDF/SVG\ncallers omit it.",
        -                      "properties": {
        -                        "drawing_type": {
        -                          "enum": [
        -                            "section",
        -                            "plan",
        -                            "elevation",
        -                            "isometric",
        -                            "detail"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "format": {
        -                          "enum": [
        -                            "DXF",
        -                            "PDF",
        -                            "SVG"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "layers": {
        -                          "anyOf": [
        -                            {
        -                              "items": {
        -                                "type": "string"
        -                              },
        -                              "type": "array"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ],
        -                          "default": null
        -                        },
        -                        "scale": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "sheet_size": {
        -                          "enum": [
        -                            "A1",
        -                            "A2",
        -                            "A3",
        -                            "A4"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "url": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "drawing_type",
        -                        "format",
        -                        "url",
        -                        "sheet_size",
        -                        "scale"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "parameters_used": {
        -                "additionalProperties": false,
        -                "description": "Schema § 1.2 — the parameter snapshot the engine actually used.\n\nSplits user-supplied values from engine defaults so customers can see\nwhich numbers came from them and which the engine filled in. Every\ndefaulted parameter SHOULD have a corresponding entry in `assumptions`\n— the bridge layer enforces this when wrapping engine output.",
        -                "properties": {
        -                  "assumptions": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "engine_defaults": {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  "resolved_from_description": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "additionalProperties": false,
        -                          "description": "Schema § 1.2 — a parameter resolved by the forgiving-input layer.\n\nPopulated by the Track B-Forgiving Haiku-4.5 resolution pass; until that\nlayer lands, instances are constructed only by tests. `source` distinguishes\nthe resolution path so customers can audit which fields were inferred.",
        -                          "properties": {
        -                            "confidence": {
        -                              "anyOf": [
        -                                {
        -                                  "enum": [
        -                                    "high",
        -                                    "medium",
        -                                    "low"
        -                                  ],
        -                                  "type": "string"
        -                                },
        -                                {
        -                                  "type": "null"
        -                                }
        -                              ],
        -                              "default": null
        -                            },
        -                            "field_name": {
        -                              "minLength": 1,
        -                              "type": "string"
        -                            },
        -                            "resolved_value": {},
        -                            "source": {
        -                              "enum": [
        -                                "description_field",
        -                                "haiku_resolution",
        -                                "engine_default"
        -                              ],
        -                              "type": "string"
        -                            }
        -                          },
        -                          "required": [
        -                            "field_name",
        -                            "resolved_value",
        -                            "source"
        -                          ],
        -                          "type": "object"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "user_supplied": {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  }
        -                },
        -                "type": "object"
        -              },
        -              "standard": {
        -                "enum": [
        -                  "CESMM4",
        -                  "NRM2",
        -                  "SMM7",
        -                  "MMHW"
        -                ],
        -                "type": "string"
        -              },
        -              "text_summary": {
        -                "maxLength": 2000,
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "totals_summary": {
        -                "additionalProperties": false,
        -                "description": "Schema § 1.4 — totals_summary as a typed wrapper around the free-form dict.\n\nWire shape is a flat object (`{\"concrete_m3\": {...}, \"rebar_t\": {...}}`).\nWe model it as `RootModel`-equivalent via `model_config(extra=\"allow\")`\n+ a single `__root__`-style `entries` dict. Pydantic v2 recommends\n`RootModel` for free-form roots; using a wrapper class keeps the import\nsurface uniform with the rest of this module.",
        -                "properties": {
        -                  "entries": {
        -                    "additionalProperties": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.4 — single material/work-class total entry.",
        -                      "properties": {
        -                        "quantity": {
        -                          "minimum": 0,
        -                          "type": "number"
        -                        },
        -                        "unit": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "quantity",
        -                        "unit"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "object"
        -                  }
        -                },
        -                "type": "object"
        -              }
        -            },
        -            "required": [
        -              "assembly_slug",
        -              "standard",
        -              "parameters_used",
        -              "boq_rows",
        -              "totals_summary",
        -              "text_summary"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      },
        -      "error": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        -            "properties": {
        -              "code": {
        -                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        -                "enum": [
        -                  "RATE_LIMIT_EXCEEDED",
        -                  "TIER_INSUFFICIENT",
        -                  "INVALID_INPUT",
        -                  "SCHEMA_VERSION_MISMATCH",
        -                  "SCHEMA_INVARIANT_VIOLATION",
        -                  "UPSTREAM_TIMEOUT",
        -                  "BACKEND_FAILURE",
        -                  "IP_BLOCKED",
        -                  "RESOURCE_NOT_FOUND",
        -                  "RENDER_FAILURE",
        -                  "OCR_LOW_CONFIDENCE",
        -                  "MANUAL_REVIEW_REQUIRED",
        -                  "ACCEPTANCE_REQUIRED",
        -                  "INVALID_TOKEN"
        -                ],
        -                "type": "string"
        -              },
        -              "details": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "message": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "recoverable": {
        -                "type": "boolean"
        -              },
        -              "retry_after_seconds": {
        -                "anyOf": [
        -                  {
        -                    "minimum": 0,
        -                    "type": "integer"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              }
        -            },
        -            "required": [
        -              "code",
        -              "message",
        -              "recoverable"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      }
        -    },
        -    "required": [
        -      "_meta"
        -    ],
        -    "type": "object"
        -  },
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "_meta": {
        -        "additionalProperties": false,
        -        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        -        "properties": {
        -          "deliverables": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        -                "properties": {
        -                  "docx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "dxf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "expires_at": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  },
        -                  "pdf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "xlsx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "expires_at"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "document_id": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "issued_at": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "rate_limit_remaining": {
        -            "anyOf": [
        -              {
        -                "minimum": 0,
        -                "type": "integer"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "request_id": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "schema_version": {
        -            "const": "1.0.0",
        -            "default": "1.0.0",
        -            "type": "string"
        -          },
        -          "scope_boundary": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        -                "properties": {
        -                  "not_in_scope": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "produced": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "recommended_companions": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "type": "string"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "produced",
        -                  "not_in_scope"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tier": {
        -            "enum": [
        -              "free",
        -              "paid"
        -            ],
        -            "type": "string"
        -          },
        -          "tier_upgrade": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        -                "properties": {
        -                  "available_tiers": {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        -                      "properties": {
        -                        "billing": {
        -                          "enum": [
        -                            "one_off",
        -                            "monthly",
        -                            "annual"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "currency": {
        -                          "enum": [
        -                            "GBP",
        -                            "SGD",
        -                            "EUR",
        -                            "USD",
        -                            "CAD",
        -                            "AUD",
        -                            "NZD",
        -                            "MYR"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "display_name": {
        -                          "type": "string"
        -                        },
        -                        "price_local": {
        -                          "type": "number"
        -                        },
        -                        "tier_slug": {
        -                          "enum": [
        -                            "7_day_pass",
        -                            "solo",
        -                            "studio",
        -                            "practice"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "unlock_summary": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "tier_slug",
        -                        "display_name",
        -                        "price_local",
        -                        "currency",
        -                        "billing",
        -                        "unlock_summary"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "current_tier": {
        -                    "const": "free",
        -                    "default": "free",
        -                    "type": "string"
        -                  },
        -                  "pass_credit": {
        -                    "anyOf": [
        -                      {
        -                        "additionalProperties": false,
        -                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        -                        "properties": {
        -                          "amount_local": {
        -                            "type": "number"
        -                          },
        -                          "applies_to": {
        -                            "const": "solo_first_month",
        -                            "default": "solo_first_month",
        -                            "type": "string"
        -                          },
        -                          "currency": {
        -                            "type": "string"
        -                          },
        -                          "redeemable_until": {
        -                            "type": "string"
        -                          }
        -                        },
        -                        "required": [
        -                          "amount_local",
        -                          "currency",
        -                          "redeemable_until"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "pricing_url": {
        -                    "default": "https://civilquants.com/pricing",
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "available_tiers"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tos_url": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "upgrade_hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "warranty_disclaimer": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          }
        -        },
        -        "required": [
        -          "request_id",
        -          "issued_at",
        -          "tier"
        -        ],
        -        "type": "object"
        -      },
        -      "data": {
        -        "default": null,
        -        "title": "Data"
        -      },
        -      "error": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        -            "properties": {
        -              "code": {
        -                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        -                "enum": [
        -                  "RATE_LIMIT_EXCEEDED",
        -                  "TIER_INSUFFICIENT",
        -                  "INVALID_INPUT",
        -                  "SCHEMA_VERSION_MISMATCH",
        -                  "SCHEMA_INVARIANT_VIOLATION",
        -                  "UPSTREAM_TIMEOUT",
        -                  "BACKEND_FAILURE",
        -                  "IP_BLOCKED",
        -                  "RESOURCE_NOT_FOUND",
        -                  "RENDER_FAILURE",
        -                  "OCR_LOW_CONFIDENCE",
        -                  "MANUAL_REVIEW_REQUIRED",
        -                  "ACCEPTANCE_REQUIRED",
        -                  "INVALID_TOKEN"
        -                ],
        -                "type": "string"
        -              },
        -              "details": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "message": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "recoverable": {
        -                "type": "boolean"
        -              },
        -              "retry_after_seconds": {
        -                "anyOf": [
        -                  {
        -                    "minimum": 0,
        -                    "type": "integer"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              }
        -            },
        -            "required": [
        -              "code",
        -              "message",
        -              "recoverable"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      }
        -    },
        -    "required": [
        -      "_meta"
        -    ],
        -    "type": "object"
        -  }
        -]New value: +[
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "_meta": {
        +        "additionalProperties": false,
        +        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        +        "properties": {
        +          "deliverables": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        +                "properties": {
        +                  "docx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "dxf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "expires_at": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  },
        +                  "pdf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "xlsx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "expires_at"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "document_id": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "issued_at": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "rate_limit_remaining": {
        +            "anyOf": [
        +              {
        +                "minimum": 0,
        +                "type": "integer"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "request_id": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "schema_version": {
        +            "const": "1.0.0",
        +            "default": "1.0.0",
        +            "type": "string"
        +          },
        +          "scope_boundary": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        +                "properties": {
        +                  "not_in_scope": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "produced": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "recommended_companions": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "type": "string"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "produced",
        +                  "not_in_scope"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tier": {
        +            "enum": [
        +              "free",
        +              "paid"
        +            ],
        +            "type": "string"
        +          },
        +          "tier_upgrade": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        +                "properties": {
        +                  "available_tiers": {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        +                      "properties": {
        +                        "billing": {
        +                          "enum": [
        +                            "one_off",
        +                            "monthly",
        +                            "annual"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "currency": {
        +                          "enum": [
        +                            "GBP",
        +                            "SGD",
        +                            "EUR",
        +                            "USD",
        +                            "CAD",
        +                            "AUD",
        +                            "NZD",
        +                            "MYR"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "display_name": {
        +                          "type": "string"
        +                        },
        +                        "price_local": {
        +                          "type": "number"
        +                        },
        +                        "tier_slug": {
        +                          "enum": [
        +                            "7_day_pass",
        +                            "solo",
        +                            "studio",
        +                            "practice"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "unlock_summary": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "tier_slug",
        +                        "display_name",
        +                        "price_local",
        +                        "currency",
        +                        "billing",
        +                        "unlock_summary"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "current_tier": {
        +                    "const": "free",
        +                    "default": "free",
        +                    "type": "string"
        +                  },
        +                  "pass_credit": {
        +                    "anyOf": [
        +                      {
        +                        "additionalProperties": false,
        +                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        +                        "properties": {
        +                          "amount_local": {
        +                            "type": "number"
        +                          },
        +                          "applies_to": {
        +                            "const": "solo_first_month",
        +                            "default": "solo_first_month",
        +                            "type": "string"
        +                          },
        +                          "currency": {
        +                            "type": "string"
        +                          },
        +                          "redeemable_until": {
        +                            "type": "string"
        +                          }
        +                        },
        +                        "required": [
        +                          "amount_local",
        +                          "currency",
        +                          "redeemable_until"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "pricing_url": {
        +                    "default": "https://civilquants.com/pricing",
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "available_tiers"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tos_url": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "upgrade_hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "warranty_disclaimer": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          }
        +        },
        +        "required": [
        +          "request_id",
        +          "issued_at",
        +          "tier"
        +        ],
        +        "type": "object"
        +      },
        +      "data": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Schema § 1.1 — the typed payload returned inside `MCPResponse[ComputeResult]`.\n\nFree-tier responses MUST omit `drawings` and `audit_trail` (the bridge\nenforces this); paid-tier responses populate both. `text_summary` is\nbounded to 2000 chars — keeps the LLM-facing summary token-cheap and\nforces longer narrative into BoQ row descriptions where it belongs.\n`warnings` is the non-fatal geometry advisory list (both tiers).",
        +            "properties": {
        +              "assembly_slug": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "audit_trail": {
        +                "anyOf": [
        +                  {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.7 — paid-tier audit-trail entry.\n\nOne entry per BoQ row; `boq_row_index` ties to the row position in\n`ComputeResult.boq_rows`. `derivation` is the human-readable formula\nwalk-through; `formula` is the optional formal expression.",
        +                      "properties": {
        +                        "boq_row_index": {
        +                          "minimum": 0,
        +                          "type": "integer"
        +                        },
        +                        "derivation": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "formula": {
        +                          "anyOf": [
        +                            {
        +                              "type": "string"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ],
        +                          "default": null
        +                        },
        +                        "id": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "parameters_referenced": {
        +                          "items": {
        +                            "type": "string"
        +                          },
        +                          "type": "array"
        +                        }
        +                      },
        +                      "required": [
        +                        "id",
        +                        "boq_row_index",
        +                        "derivation"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "boq_rows": {
        +                "items": {
        +                  "additionalProperties": false,
        +                  "description": "Schema § 1.3 — a single bill row in the requested standard's format.\n\n`description` is the non-verbatim functional description per spec § 13.9 /\n§ 15 invariant — NEVER reproduces a standard's verbatim clause text.\n`rate` / `amount` ship null because rates are commodity data the customer\nowns; the engine's job is the measurement, not the pricing.",
        +                  "properties": {
        +                    "amount": {
        +                      "anyOf": [
        +                        {
        +                          "type": "number"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "attribution": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "audit_id": {
        +                      "anyOf": [
        +                        {
        +                          "type": "string"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "description": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "quantity": {
        +                      "minimum": 0,
        +                      "type": "number"
        +                    },
        +                    "rate": {
        +                      "anyOf": [
        +                        {
        +                          "type": "number"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "unit": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "work_section": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    }
        +                  },
        +                  "required": [
        +                    "work_section",
        +                    "description",
        +                    "quantity",
        +                    "unit",
        +                    "attribution"
        +                  ],
        +                  "type": "object"
        +                },
        +                "type": "array"
        +              },
        +              "drawings": {
        +                "anyOf": [
        +                  {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.6 — paid-tier drawing artefact pointer.\n\n`url` is an R2-signed URL; expiry is carried in `_meta.deliverables.expires_at`\non the envelope (not duplicated here). `layers` is DXF-only; PDF/SVG\ncallers omit it.",
        +                      "properties": {
        +                        "drawing_type": {
        +                          "enum": [
        +                            "section",
        +                            "plan",
        +                            "elevation",
        +                            "isometric",
        +                            "detail"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "format": {
        +                          "enum": [
        +                            "DXF",
        +                            "PDF",
        +                            "SVG"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "layers": {
        +                          "anyOf": [
        +                            {
        +                              "items": {
        +                                "type": "string"
        +                              },
        +                              "type": "array"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ],
        +                          "default": null
        +                        },
        +                        "scale": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "sheet_size": {
        +                          "enum": [
        +                            "A1",
        +                            "A2",
        +                            "A3",
        +                            "A4"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "url": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "drawing_type",
        +                        "format",
        +                        "url",
        +                        "sheet_size",
        +                        "scale"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "parameters_used": {
        +                "additionalProperties": false,
        +                "description": "Schema § 1.2 — the parameter snapshot the engine actually used.\n\nSplits user-supplied values from engine defaults so customers can see\nwhich numbers came from them and which the engine filled in. Every\ndefaulted parameter SHOULD have a corresponding entry in `assumptions`\n— the bridge layer enforces this when wrapping engine output.",
        +                "properties": {
        +                  "assumptions": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "engine_defaults": {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  "resolved_from_description": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "additionalProperties": false,
        +                          "description": "Schema § 1.2 — a parameter resolved by the forgiving-input layer.\n\nPopulated by the Track B-Forgiving Haiku-4.5 resolution pass; until that\nlayer lands, instances are constructed only by tests. `source` distinguishes\nthe resolution path so customers can audit which fields were inferred.",
        +                          "properties": {
        +                            "confidence": {
        +                              "anyOf": [
        +                                {
        +                                  "enum": [
        +                                    "high",
        +                                    "medium",
        +                                    "low"
        +                                  ],
        +                                  "type": "string"
        +                                },
        +                                {
        +                                  "type": "null"
        +                                }
        +                              ],
        +                              "default": null
        +                            },
        +                            "field_name": {
        +                              "minLength": 1,
        +                              "type": "string"
        +                            },
        +                            "resolved_value": {},
        +                            "source": {
        +                              "enum": [
        +                                "description_field",
        +                                "haiku_resolution",
        +                                "engine_default"
        +                              ],
        +                              "type": "string"
        +                            }
        +                          },
        +                          "required": [
        +                            "field_name",
        +                            "resolved_value",
        +                            "source"
        +                          ],
        +                          "type": "object"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "user_supplied": {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  }
        +                },
        +                "type": "object"
        +              },
        +              "standard": {
        +                "enum": [
        +                  "CESMM4",
        +                  "NRM2",
        +                  "SMM7",
        +                  "MMHW"
        +                ],
        +                "type": "string"
        +              },
        +              "text_summary": {
        +                "maxLength": 2000,
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "totals_summary": {
        +                "additionalProperties": false,
        +                "description": "Schema § 1.4 — totals_summary as a typed wrapper around the free-form dict.\n\nWire shape is a flat object (`{\"concrete_m3\": {...}, \"rebar_t\": {...}}`).\nWe model it as `RootModel`-equivalent via `model_config(extra=\"allow\")`\n+ a single `__root__`-style `entries` dict. Pydantic v2 recommends\n`RootModel` for free-form roots; using a wrapper class keeps the import\nsurface uniform with the rest of this module.",
        +                "properties": {
        +                  "entries": {
        +                    "additionalProperties": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.4 — single material/work-class total entry.",
        +                      "properties": {
        +                        "quantity": {
        +                          "minimum": 0,
        +                          "type": "number"
        +                        },
        +                        "unit": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "quantity",
        +                        "unit"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "object"
        +                  }
        +                },
        +                "type": "object"
        +              },
        +              "warnings": {
        +                "items": {
        +                  "additionalProperties": false,
        +                  "description": "Schema § 1.8 — a non-fatal geometry advisory (56th-fire T2).\n\nThe wire projection of the engine's `core.GeometryWarning`. Advisory only:\na warning NEVER changes a measured quantity — it flags geometry that is\nvalid but likely a mistake (e.g. a stale dependent-height default). Present\non BOTH tiers — a correctness/safety signal, not a paid feature.",
        +                  "properties": {
        +                    "affected_params": {
        +                      "items": {
        +                        "type": "string"
        +                      },
        +                      "type": "array"
        +                    },
        +                    "code": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "detail": {
        +                      "additionalProperties": {
        +                        "type": "number"
        +                      },
        +                      "type": "object"
        +                    },
        +                    "message": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "severity": {
        +                      "enum": [
        +                        "info",
        +                        "advisory",
        +                        "caution"
        +                      ],
        +                      "type": "string"
        +                    }
        +                  },
        +                  "required": [
        +                    "code",
        +                    "severity",
        +                    "message"
        +                  ],
        +                  "type": "object"
        +                },
        +                "type": "array"
        +              }
        +            },
        +            "required": [
        +              "assembly_slug",
        +              "standard",
        +              "parameters_used",
        +              "boq_rows",
        +              "totals_summary",
        +              "text_summary"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      },
        +      "error": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        +            "properties": {
        +              "code": {
        +                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        +                "enum": [
        +                  "RATE_LIMIT_EXCEEDED",
        +                  "TIER_INSUFFICIENT",
        +                  "INVALID_INPUT",
        +                  "SCHEMA_VERSION_MISMATCH",
        +                  "SCHEMA_INVARIANT_VIOLATION",
        +                  "UPSTREAM_TIMEOUT",
        +                  "BACKEND_FAILURE",
        +                  "IP_BLOCKED",
        +                  "RESOURCE_NOT_FOUND",
        +                  "RENDER_FAILURE",
        +                  "OCR_LOW_CONFIDENCE",
        +                  "MANUAL_REVIEW_REQUIRED",
        +                  "ACCEPTANCE_REQUIRED",
        +                  "INVALID_TOKEN"
        +                ],
        +                "type": "string"
        +              },
        +              "details": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "message": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "recoverable": {
        +                "type": "boolean"
        +              },
        +              "retry_after_seconds": {
        +                "anyOf": [
        +                  {
        +                    "minimum": 0,
        +                    "type": "integer"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              }
        +            },
        +            "required": [
        +              "code",
        +              "message",
        +              "recoverable"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      }
        +    },
        +    "required": [
        +      "_meta"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "_meta": {
        +        "additionalProperties": false,
        +        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        +        "properties": {
        +          "deliverables": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        +                "properties": {
        +                  "docx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "dxf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "expires_at": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  },
        +                  "pdf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "xlsx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "expires_at"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "document_id": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "issued_at": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "rate_limit_remaining": {
        +            "anyOf": [
        +              {
        +                "minimum": 0,
        +                "type": "integer"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "request_id": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "schema_version": {
        +            "const": "1.0.0",
        +            "default": "1.0.0",
        +            "type": "string"
        +          },
        +          "scope_boundary": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        +                "properties": {
        +                  "not_in_scope": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "produced": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "recommended_companions": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "type": "string"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "produced",
        +                  "not_in_scope"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tier": {
        +            "enum": [
        +              "free",
        +              "paid"
        +            ],
        +            "type": "string"
        +          },
        +          "tier_upgrade": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        +                "properties": {
        +                  "available_tiers": {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        +                      "properties": {
        +                        "billing": {
        +                          "enum": [
        +                            "one_off",
        +                            "monthly",
        +                            "annual"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "currency": {
        +                          "enum": [
        +                            "GBP",
        +                            "SGD",
        +                            "EUR",
        +                            "USD",
        +                            "CAD",
        +                            "AUD",
        +                            "NZD",
        +                            "MYR"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "display_name": {
        +                          "type": "string"
        +                        },
        +                        "price_local": {
        +                          "type": "number"
        +                        },
        +                        "tier_slug": {
        +                          "enum": [
        +                            "7_day_pass",
        +                            "solo",
        +                            "studio",
        +                            "practice"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "unlock_summary": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "tier_slug",
        +                        "display_name",
        +                        "price_local",
        +                        "currency",
        +                        "billing",
        +                        "unlock_summary"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "current_tier": {
        +                    "const": "free",
        +                    "default": "free",
        +                    "type": "string"
        +                  },
        +                  "pass_credit": {
        +                    "anyOf": [
        +                      {
        +                        "additionalProperties": false,
        +                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        +                        "properties": {
        +                          "amount_local": {
        +                            "type": "number"
        +                          },
        +                          "applies_to": {
        +                            "const": "solo_first_month",
        +                            "default": "solo_first_month",
        +                            "type": "string"
        +                          },
        +                          "currency": {
        +                            "type": "string"
        +                          },
        +                          "redeemable_until": {
        +                            "type": "string"
        +                          }
        +                        },
        +                        "required": [
        +                          "amount_local",
        +                          "currency",
        +                          "redeemable_until"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "pricing_url": {
        +                    "default": "https://civilquants.com/pricing",
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "available_tiers"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tos_url": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "upgrade_hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "warranty_disclaimer": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          }
        +        },
        +        "required": [
        +          "request_id",
        +          "issued_at",
        +          "tier"
        +        ],
        +        "type": "object"
        +      },
        +      "data": {
        +        "default": null,
        +        "title": "Data"
        +      },
        +      "error": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        +            "properties": {
        +              "code": {
        +                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        +                "enum": [
        +                  "RATE_LIMIT_EXCEEDED",
        +                  "TIER_INSUFFICIENT",
        +                  "INVALID_INPUT",
        +                  "SCHEMA_VERSION_MISMATCH",
        +                  "SCHEMA_INVARIANT_VIOLATION",
        +                  "UPSTREAM_TIMEOUT",
        +                  "BACKEND_FAILURE",
        +                  "IP_BLOCKED",
        +                  "RESOURCE_NOT_FOUND",
        +                  "RENDER_FAILURE",
        +                  "OCR_LOW_CONFIDENCE",
        +                  "MANUAL_REVIEW_REQUIRED",
        +                  "ACCEPTANCE_REQUIRED",
        +                  "INVALID_TOKEN"
        +                ],
        +                "type": "string"
        +              },
        +              "details": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "message": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "recoverable": {
        +                "type": "boolean"
        +              },
        +              "retry_after_seconds": {
        +                "anyOf": [
        +                  {
        +                    "minimum": 0,
        +                    "type": "integer"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              }
        +            },
        +            "required": [
        +              "code",
        +              "message",
        +              "recoverable"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      }
        +    },
        +    "required": [
        +      "_meta"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedcompute_headwall_precast1 field changed
      • changedOutput schema / properties / result / anyOf
        Previous value: -[
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "_meta": {
        -        "additionalProperties": false,
        -        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        -        "properties": {
        -          "deliverables": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        -                "properties": {
        -                  "docx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "dxf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "expires_at": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  },
        -                  "pdf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "xlsx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "expires_at"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "document_id": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "issued_at": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "rate_limit_remaining": {
        -            "anyOf": [
        -              {
        -                "minimum": 0,
        -                "type": "integer"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "request_id": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "schema_version": {
        -            "const": "1.0.0",
        -            "default": "1.0.0",
        -            "type": "string"
        -          },
        -          "scope_boundary": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        -                "properties": {
        -                  "not_in_scope": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "produced": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "recommended_companions": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "type": "string"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "produced",
        -                  "not_in_scope"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tier": {
        -            "enum": [
        -              "free",
        -              "paid"
        -            ],
        -            "type": "string"
        -          },
        -          "tier_upgrade": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        -                "properties": {
        -                  "available_tiers": {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        -                      "properties": {
        -                        "billing": {
        -                          "enum": [
        -                            "one_off",
        -                            "monthly",
        -                            "annual"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "currency": {
        -                          "enum": [
        -                            "GBP",
        -                            "SGD",
        -                            "EUR",
        -                            "USD",
        -                            "CAD",
        -                            "AUD",
        -                            "NZD",
        -                            "MYR"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "display_name": {
        -                          "type": "string"
        -                        },
        -                        "price_local": {
        -                          "type": "number"
        -                        },
        -                        "tier_slug": {
        -                          "enum": [
        -                            "7_day_pass",
        -                            "solo",
        -                            "studio",
        -                            "practice"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "unlock_summary": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "tier_slug",
        -                        "display_name",
        -                        "price_local",
        -                        "currency",
        -                        "billing",
        -                        "unlock_summary"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "current_tier": {
        -                    "const": "free",
        -                    "default": "free",
        -                    "type": "string"
        -                  },
        -                  "pass_credit": {
        -                    "anyOf": [
        -                      {
        -                        "additionalProperties": false,
        -                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        -                        "properties": {
        -                          "amount_local": {
        -                            "type": "number"
        -                          },
        -                          "applies_to": {
        -                            "const": "solo_first_month",
        -                            "default": "solo_first_month",
        -                            "type": "string"
        -                          },
        -                          "currency": {
        -                            "type": "string"
        -                          },
        -                          "redeemable_until": {
        -                            "type": "string"
        -                          }
        -                        },
        -                        "required": [
        -                          "amount_local",
        -                          "currency",
        -                          "redeemable_until"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "pricing_url": {
        -                    "default": "https://civilquants.com/pricing",
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "available_tiers"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tos_url": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "upgrade_hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "warranty_disclaimer": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          }
        -        },
        -        "required": [
        -          "request_id",
        -          "issued_at",
        -          "tier"
        -        ],
        -        "type": "object"
        -      },
        -      "data": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Schema § 1.1 — the typed payload returned inside `MCPResponse[ComputeResult]`.\n\nFree-tier responses MUST omit `drawings` and `audit_trail` (the bridge\nenforces this); paid-tier responses populate both. `text_summary` is\nbounded to 2000 chars — keeps the LLM-facing summary token-cheap and\nforces longer narrative into BoQ row descriptions where it belongs.",
        -            "properties": {
        -              "assembly_slug": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "audit_trail": {
        -                "anyOf": [
        -                  {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.7 — paid-tier audit-trail entry.\n\nOne entry per BoQ row; `boq_row_index` ties to the row position in\n`ComputeResult.boq_rows`. `derivation` is the human-readable formula\nwalk-through; `formula` is the optional formal expression.",
        -                      "properties": {
        -                        "boq_row_index": {
        -                          "minimum": 0,
        -                          "type": "integer"
        -                        },
        -                        "derivation": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "formula": {
        -                          "anyOf": [
        -                            {
        -                              "type": "string"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ],
        -                          "default": null
        -                        },
        -                        "id": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "parameters_referenced": {
        -                          "items": {
        -                            "type": "string"
        -                          },
        -                          "type": "array"
        -                        }
        -                      },
        -                      "required": [
        -                        "id",
        -                        "boq_row_index",
        -                        "derivation"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "boq_rows": {
        -                "items": {
        -                  "additionalProperties": false,
        -                  "description": "Schema § 1.3 — a single bill row in the requested standard's format.\n\n`description` is the non-verbatim functional description per spec § 13.9 /\n§ 15 invariant — NEVER reproduces a standard's verbatim clause text.\n`rate` / `amount` ship null because rates are commodity data the customer\nowns; the engine's job is the measurement, not the pricing.",
        -                  "properties": {
        -                    "amount": {
        -                      "anyOf": [
        -                        {
        -                          "type": "number"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "attribution": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "audit_id": {
        -                      "anyOf": [
        -                        {
        -                          "type": "string"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "description": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "quantity": {
        -                      "minimum": 0,
        -                      "type": "number"
        -                    },
        -                    "rate": {
        -                      "anyOf": [
        -                        {
        -                          "type": "number"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "unit": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "work_section": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    }
        -                  },
        -                  "required": [
        -                    "work_section",
        -                    "description",
        -                    "quantity",
        -                    "unit",
        -                    "attribution"
        -                  ],
        -                  "type": "object"
        -                },
        -                "type": "array"
        -              },
        -              "drawings": {
        -                "anyOf": [
        -                  {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.6 — paid-tier drawing artefact pointer.\n\n`url` is an R2-signed URL; expiry is carried in `_meta.deliverables.expires_at`\non the envelope (not duplicated here). `layers` is DXF-only; PDF/SVG\ncallers omit it.",
        -                      "properties": {
        -                        "drawing_type": {
        -                          "enum": [
        -                            "section",
        -                            "plan",
        -                            "elevation",
        -                            "isometric",
        -                            "detail"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "format": {
        -                          "enum": [
        -                            "DXF",
        -                            "PDF",
        -                            "SVG"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "layers": {
        -                          "anyOf": [
        -                            {
        -                              "items": {
        -                                "type": "string"
        -                              },
        -                              "type": "array"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ],
        -                          "default": null
        -                        },
        -                        "scale": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "sheet_size": {
        -                          "enum": [
        -                            "A1",
        -                            "A2",
        -                            "A3",
        -                            "A4"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "url": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "drawing_type",
        -                        "format",
        -                        "url",
        -                        "sheet_size",
        -                        "scale"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "parameters_used": {
        -                "additionalProperties": false,
        -                "description": "Schema § 1.2 — the parameter snapshot the engine actually used.\n\nSplits user-supplied values from engine defaults so customers can see\nwhich numbers came from them and which the engine filled in. Every\ndefaulted parameter SHOULD have a corresponding entry in `assumptions`\n— the bridge layer enforces this when wrapping engine output.",
        -                "properties": {
        -                  "assumptions": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "engine_defaults": {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  "resolved_from_description": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "additionalProperties": false,
        -                          "description": "Schema § 1.2 — a parameter resolved by the forgiving-input layer.\n\nPopulated by the Track B-Forgiving Haiku-4.5 resolution pass; until that\nlayer lands, instances are constructed only by tests. `source` distinguishes\nthe resolution path so customers can audit which fields were inferred.",
        -                          "properties": {
        -                            "confidence": {
        -                              "anyOf": [
        -                                {
        -                                  "enum": [
        -                                    "high",
        -                                    "medium",
        -                                    "low"
        -                                  ],
        -                                  "type": "string"
        -                                },
        -                                {
        -                                  "type": "null"
        -                                }
        -                              ],
        -                              "default": null
        -                            },
        -                            "field_name": {
        -                              "minLength": 1,
        -                              "type": "string"
        -                            },
        -                            "resolved_value": {},
        -                            "source": {
        -                              "enum": [
        -                                "description_field",
        -                                "haiku_resolution",
        -                                "engine_default"
        -                              ],
        -                              "type": "string"
        -                            }
        -                          },
        -                          "required": [
        -                            "field_name",
        -                            "resolved_value",
        -                            "source"
        -                          ],
        -                          "type": "object"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "user_supplied": {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  }
        -                },
        -                "type": "object"
        -              },
        -              "standard": {
        -                "enum": [
        -                  "CESMM4",
        -                  "NRM2",
        -                  "SMM7",
        -                  "MMHW"
        -                ],
        -                "type": "string"
        -              },
        -              "text_summary": {
        -                "maxLength": 2000,
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "totals_summary": {
        -                "additionalProperties": false,
        -                "description": "Schema § 1.4 — totals_summary as a typed wrapper around the free-form dict.\n\nWire shape is a flat object (`{\"concrete_m3\": {...}, \"rebar_t\": {...}}`).\nWe model it as `RootModel`-equivalent via `model_config(extra=\"allow\")`\n+ a single `__root__`-style `entries` dict. Pydantic v2 recommends\n`RootModel` for free-form roots; using a wrapper class keeps the import\nsurface uniform with the rest of this module.",
        -                "properties": {
        -                  "entries": {
        -                    "additionalProperties": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.4 — single material/work-class total entry.",
        -                      "properties": {
        -                        "quantity": {
        -                          "minimum": 0,
        -                          "type": "number"
        -                        },
        -                        "unit": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "quantity",
        -                        "unit"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "object"
        -                  }
        -                },
        -                "type": "object"
        -              }
        -            },
        -            "required": [
        -              "assembly_slug",
        -              "standard",
        -              "parameters_used",
        -              "boq_rows",
        -              "totals_summary",
        -              "text_summary"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      },
        -      "error": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        -            "properties": {
        -              "code": {
        -                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        -                "enum": [
        -                  "RATE_LIMIT_EXCEEDED",
        -                  "TIER_INSUFFICIENT",
        -                  "INVALID_INPUT",
        -                  "SCHEMA_VERSION_MISMATCH",
        -                  "SCHEMA_INVARIANT_VIOLATION",
        -                  "UPSTREAM_TIMEOUT",
        -                  "BACKEND_FAILURE",
        -                  "IP_BLOCKED",
        -                  "RESOURCE_NOT_FOUND",
        -                  "RENDER_FAILURE",
        -                  "OCR_LOW_CONFIDENCE",
        -                  "MANUAL_REVIEW_REQUIRED",
        -                  "ACCEPTANCE_REQUIRED",
        -                  "INVALID_TOKEN"
        -                ],
        -                "type": "string"
        -              },
        -              "details": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "message": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "recoverable": {
        -                "type": "boolean"
        -              },
        -              "retry_after_seconds": {
        -                "anyOf": [
        -                  {
        -                    "minimum": 0,
        -                    "type": "integer"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              }
        -            },
        -            "required": [
        -              "code",
        -              "message",
        -              "recoverable"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      }
        -    },
        -    "required": [
        -      "_meta"
        -    ],
        -    "type": "object"
        -  },
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "_meta": {
        -        "additionalProperties": false,
        -        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        -        "properties": {
        -          "deliverables": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        -                "properties": {
        -                  "docx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "dxf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "expires_at": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  },
        -                  "pdf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "xlsx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "expires_at"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "document_id": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "issued_at": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "rate_limit_remaining": {
        -            "anyOf": [
        -              {
        -                "minimum": 0,
        -                "type": "integer"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "request_id": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "schema_version": {
        -            "const": "1.0.0",
        -            "default": "1.0.0",
        -            "type": "string"
        -          },
        -          "scope_boundary": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        -                "properties": {
        -                  "not_in_scope": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "produced": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "recommended_companions": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "type": "string"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "produced",
        -                  "not_in_scope"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tier": {
        -            "enum": [
        -              "free",
        -              "paid"
        -            ],
        -            "type": "string"
        -          },
        -          "tier_upgrade": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        -                "properties": {
        -                  "available_tiers": {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        -                      "properties": {
        -                        "billing": {
        -                          "enum": [
        -                            "one_off",
        -                            "monthly",
        -                            "annual"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "currency": {
        -                          "enum": [
        -                            "GBP",
        -                            "SGD",
        -                            "EUR",
        -                            "USD",
        -                            "CAD",
        -                            "AUD",
        -                            "NZD",
        -                            "MYR"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "display_name": {
        -                          "type": "string"
        -                        },
        -                        "price_local": {
        -                          "type": "number"
        -                        },
        -                        "tier_slug": {
        -                          "enum": [
        -                            "7_day_pass",
        -                            "solo",
        -                            "studio",
        -                            "practice"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "unlock_summary": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "tier_slug",
        -                        "display_name",
        -                        "price_local",
        -                        "currency",
        -                        "billing",
        -                        "unlock_summary"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "current_tier": {
        -                    "const": "free",
        -                    "default": "free",
        -                    "type": "string"
        -                  },
        -                  "pass_credit": {
        -                    "anyOf": [
        -                      {
        -                        "additionalProperties": false,
        -                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        -                        "properties": {
        -                          "amount_local": {
        -                            "type": "number"
        -                          },
        -                          "applies_to": {
        -                            "const": "solo_first_month",
        -                            "default": "solo_first_month",
        -                            "type": "string"
        -                          },
        -                          "currency": {
        -                            "type": "string"
        -                          },
        -                          "redeemable_until": {
        -                            "type": "string"
        -                          }
        -                        },
        -                        "required": [
        -                          "amount_local",
        -                          "currency",
        -                          "redeemable_until"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "pricing_url": {
        -                    "default": "https://civilquants.com/pricing",
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "available_tiers"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tos_url": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "upgrade_hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "warranty_disclaimer": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          }
        -        },
        -        "required": [
        -          "request_id",
        -          "issued_at",
        -          "tier"
        -        ],
        -        "type": "object"
        -      },
        -      "data": {
        -        "default": null,
        -        "title": "Data"
        -      },
        -      "error": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        -            "properties": {
        -              "code": {
        -                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        -                "enum": [
        -                  "RATE_LIMIT_EXCEEDED",
        -                  "TIER_INSUFFICIENT",
        -                  "INVALID_INPUT",
        -                  "SCHEMA_VERSION_MISMATCH",
        -                  "SCHEMA_INVARIANT_VIOLATION",
        -                  "UPSTREAM_TIMEOUT",
        -                  "BACKEND_FAILURE",
        -                  "IP_BLOCKED",
        -                  "RESOURCE_NOT_FOUND",
        -                  "RENDER_FAILURE",
        -                  "OCR_LOW_CONFIDENCE",
        -                  "MANUAL_REVIEW_REQUIRED",
        -                  "ACCEPTANCE_REQUIRED",
        -                  "INVALID_TOKEN"
        -                ],
        -                "type": "string"
        -              },
        -              "details": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "message": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "recoverable": {
        -                "type": "boolean"
        -              },
        -              "retry_after_seconds": {
        -                "anyOf": [
        -                  {
        -                    "minimum": 0,
        -                    "type": "integer"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              }
        -            },
        -            "required": [
        -              "code",
        -              "message",
        -              "recoverable"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      }
        -    },
        -    "required": [
        -      "_meta"
        -    ],
        -    "type": "object"
        -  }
        -]New value: +[
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "_meta": {
        +        "additionalProperties": false,
        +        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        +        "properties": {
        +          "deliverables": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        +                "properties": {
        +                  "docx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "dxf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "expires_at": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  },
        +                  "pdf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "xlsx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "expires_at"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "document_id": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "issued_at": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "rate_limit_remaining": {
        +            "anyOf": [
        +              {
        +                "minimum": 0,
        +                "type": "integer"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "request_id": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "schema_version": {
        +            "const": "1.0.0",
        +            "default": "1.0.0",
        +            "type": "string"
        +          },
        +          "scope_boundary": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        +                "properties": {
        +                  "not_in_scope": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "produced": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "recommended_companions": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "type": "string"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "produced",
        +                  "not_in_scope"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tier": {
        +            "enum": [
        +              "free",
        +              "paid"
        +            ],
        +            "type": "string"
        +          },
        +          "tier_upgrade": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        +                "properties": {
        +                  "available_tiers": {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        +                      "properties": {
        +                        "billing": {
        +                          "enum": [
        +                            "one_off",
        +                            "monthly",
        +                            "annual"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "currency": {
        +                          "enum": [
        +                            "GBP",
        +                            "SGD",
        +                            "EUR",
        +                            "USD",
        +                            "CAD",
        +                            "AUD",
        +                            "NZD",
        +                            "MYR"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "display_name": {
        +                          "type": "string"
        +                        },
        +                        "price_local": {
        +                          "type": "number"
        +                        },
        +                        "tier_slug": {
        +                          "enum": [
        +                            "7_day_pass",
        +                            "solo",
        +                            "studio",
        +                            "practice"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "unlock_summary": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "tier_slug",
        +                        "display_name",
        +                        "price_local",
        +                        "currency",
        +                        "billing",
        +                        "unlock_summary"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "current_tier": {
        +                    "const": "free",
        +                    "default": "free",
        +                    "type": "string"
        +                  },
        +                  "pass_credit": {
        +                    "anyOf": [
        +                      {
        +                        "additionalProperties": false,
        +                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        +                        "properties": {
        +                          "amount_local": {
        +                            "type": "number"
        +                          },
        +                          "applies_to": {
        +                            "const": "solo_first_month",
        +                            "default": "solo_first_month",
        +                            "type": "string"
        +                          },
        +                          "currency": {
        +                            "type": "string"
        +                          },
        +                          "redeemable_until": {
        +                            "type": "string"
        +                          }
        +                        },
        +                        "required": [
        +                          "amount_local",
        +                          "currency",
        +                          "redeemable_until"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "pricing_url": {
        +                    "default": "https://civilquants.com/pricing",
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "available_tiers"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tos_url": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "upgrade_hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "warranty_disclaimer": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          }
        +        },
        +        "required": [
        +          "request_id",
        +          "issued_at",
        +          "tier"
        +        ],
        +        "type": "object"
        +      },
        +      "data": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Schema § 1.1 — the typed payload returned inside `MCPResponse[ComputeResult]`.\n\nFree-tier responses MUST omit `drawings` and `audit_trail` (the bridge\nenforces this); paid-tier responses populate both. `text_summary` is\nbounded to 2000 chars — keeps the LLM-facing summary token-cheap and\nforces longer narrative into BoQ row descriptions where it belongs.\n`warnings` is the non-fatal geometry advisory list (both tiers).",
        +            "properties": {
        +              "assembly_slug": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "audit_trail": {
        +                "anyOf": [
        +                  {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.7 — paid-tier audit-trail entry.\n\nOne entry per BoQ row; `boq_row_index` ties to the row position in\n`ComputeResult.boq_rows`. `derivation` is the human-readable formula\nwalk-through; `formula` is the optional formal expression.",
        +                      "properties": {
        +                        "boq_row_index": {
        +                          "minimum": 0,
        +                          "type": "integer"
        +                        },
        +                        "derivation": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "formula": {
        +                          "anyOf": [
        +                            {
        +                              "type": "string"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ],
        +                          "default": null
        +                        },
        +                        "id": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "parameters_referenced": {
        +                          "items": {
        +                            "type": "string"
        +                          },
        +                          "type": "array"
        +                        }
        +                      },
        +                      "required": [
        +                        "id",
        +                        "boq_row_index",
        +                        "derivation"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "boq_rows": {
        +                "items": {
        +                  "additionalProperties": false,
        +                  "description": "Schema § 1.3 — a single bill row in the requested standard's format.\n\n`description` is the non-verbatim functional description per spec § 13.9 /\n§ 15 invariant — NEVER reproduces a standard's verbatim clause text.\n`rate` / `amount` ship null because rates are commodity data the customer\nowns; the engine's job is the measurement, not the pricing.",
        +                  "properties": {
        +                    "amount": {
        +                      "anyOf": [
        +                        {
        +                          "type": "number"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "attribution": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "audit_id": {
        +                      "anyOf": [
        +                        {
        +                          "type": "string"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "description": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "quantity": {
        +                      "minimum": 0,
        +                      "type": "number"
        +                    },
        +                    "rate": {
        +                      "anyOf": [
        +                        {
        +                          "type": "number"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "unit": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "work_section": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    }
        +                  },
        +                  "required": [
        +                    "work_section",
        +                    "description",
        +                    "quantity",
        +                    "unit",
        +                    "attribution"
        +                  ],
        +                  "type": "object"
        +                },
        +                "type": "array"
        +              },
        +              "drawings": {
        +                "anyOf": [
        +                  {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.6 — paid-tier drawing artefact pointer.\n\n`url` is an R2-signed URL; expiry is carried in `_meta.deliverables.expires_at`\non the envelope (not duplicated here). `layers` is DXF-only; PDF/SVG\ncallers omit it.",
        +                      "properties": {
        +                        "drawing_type": {
        +                          "enum": [
        +                            "section",
        +                            "plan",
        +                            "elevation",
        +                            "isometric",
        +                            "detail"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "format": {
        +                          "enum": [
        +                            "DXF",
        +                            "PDF",
        +                            "SVG"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "layers": {
        +                          "anyOf": [
        +                            {
        +                              "items": {
        +                                "type": "string"
        +                              },
        +                              "type": "array"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ],
        +                          "default": null
        +                        },
        +                        "scale": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "sheet_size": {
        +                          "enum": [
        +                            "A1",
        +                            "A2",
        +                            "A3",
        +                            "A4"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "url": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "drawing_type",
        +                        "format",
        +                        "url",
        +                        "sheet_size",
        +                        "scale"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "parameters_used": {
        +                "additionalProperties": false,
        +                "description": "Schema § 1.2 — the parameter snapshot the engine actually used.\n\nSplits user-supplied values from engine defaults so customers can see\nwhich numbers came from them and which the engine filled in. Every\ndefaulted parameter SHOULD have a corresponding entry in `assumptions`\n— the bridge layer enforces this when wrapping engine output.",
        +                "properties": {
        +                  "assumptions": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "engine_defaults": {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  "resolved_from_description": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "additionalProperties": false,
        +                          "description": "Schema § 1.2 — a parameter resolved by the forgiving-input layer.\n\nPopulated by the Track B-Forgiving Haiku-4.5 resolution pass; until that\nlayer lands, instances are constructed only by tests. `source` distinguishes\nthe resolution path so customers can audit which fields were inferred.",
        +                          "properties": {
        +                            "confidence": {
        +                              "anyOf": [
        +                                {
        +                                  "enum": [
        +                                    "high",
        +                                    "medium",
        +                                    "low"
        +                                  ],
        +                                  "type": "string"
        +                                },
        +                                {
        +                                  "type": "null"
        +                                }
        +                              ],
        +                              "default": null
        +                            },
        +                            "field_name": {
        +                              "minLength": 1,
        +                              "type": "string"
        +                            },
        +                            "resolved_value": {},
        +                            "source": {
        +                              "enum": [
        +                                "description_field",
        +                                "haiku_resolution",
        +                                "engine_default"
        +                              ],
        +                              "type": "string"
        +                            }
        +                          },
        +                          "required": [
        +                            "field_name",
        +                            "resolved_value",
        +                            "source"
        +                          ],
        +                          "type": "object"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "user_supplied": {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  }
        +                },
        +                "type": "object"
        +              },
        +              "standard": {
        +                "enum": [
        +                  "CESMM4",
        +                  "NRM2",
        +                  "SMM7",
        +                  "MMHW"
        +                ],
        +                "type": "string"
        +              },
        +              "text_summary": {
        +                "maxLength": 2000,
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "totals_summary": {
        +                "additionalProperties": false,
        +                "description": "Schema § 1.4 — totals_summary as a typed wrapper around the free-form dict.\n\nWire shape is a flat object (`{\"concrete_m3\": {...}, \"rebar_t\": {...}}`).\nWe model it as `RootModel`-equivalent via `model_config(extra=\"allow\")`\n+ a single `__root__`-style `entries` dict. Pydantic v2 recommends\n`RootModel` for free-form roots; using a wrapper class keeps the import\nsurface uniform with the rest of this module.",
        +                "properties": {
        +                  "entries": {
        +                    "additionalProperties": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.4 — single material/work-class total entry.",
        +                      "properties": {
        +                        "quantity": {
        +                          "minimum": 0,
        +                          "type": "number"
        +                        },
        +                        "unit": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "quantity",
        +                        "unit"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "object"
        +                  }
        +                },
        +                "type": "object"
        +              },
        +              "warnings": {
        +                "items": {
        +                  "additionalProperties": false,
        +                  "description": "Schema § 1.8 — a non-fatal geometry advisory (56th-fire T2).\n\nThe wire projection of the engine's `core.GeometryWarning`. Advisory only:\na warning NEVER changes a measured quantity — it flags geometry that is\nvalid but likely a mistake (e.g. a stale dependent-height default). Present\non BOTH tiers — a correctness/safety signal, not a paid feature.",
        +                  "properties": {
        +                    "affected_params": {
        +                      "items": {
        +                        "type": "string"
        +                      },
        +                      "type": "array"
        +                    },
        +                    "code": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "detail": {
        +                      "additionalProperties": {
        +                        "type": "number"
        +                      },
        +                      "type": "object"
        +                    },
        +                    "message": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "severity": {
        +                      "enum": [
        +                        "info",
        +                        "advisory",
        +                        "caution"
        +                      ],
        +                      "type": "string"
        +                    }
        +                  },
        +                  "required": [
        +                    "code",
        +                    "severity",
        +                    "message"
        +                  ],
        +                  "type": "object"
        +                },
        +                "type": "array"
        +              }
        +            },
        +            "required": [
        +              "assembly_slug",
        +              "standard",
        +              "parameters_used",
        +              "boq_rows",
        +              "totals_summary",
        +              "text_summary"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      },
        +      "error": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        +            "properties": {
        +              "code": {
        +                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        +                "enum": [
        +                  "RATE_LIMIT_EXCEEDED",
        +                  "TIER_INSUFFICIENT",
        +                  "INVALID_INPUT",
        +                  "SCHEMA_VERSION_MISMATCH",
        +                  "SCHEMA_INVARIANT_VIOLATION",
        +                  "UPSTREAM_TIMEOUT",
        +                  "BACKEND_FAILURE",
        +                  "IP_BLOCKED",
        +                  "RESOURCE_NOT_FOUND",
        +                  "RENDER_FAILURE",
        +                  "OCR_LOW_CONFIDENCE",
        +                  "MANUAL_REVIEW_REQUIRED",
        +                  "ACCEPTANCE_REQUIRED",
        +                  "INVALID_TOKEN"
        +                ],
        +                "type": "string"
        +              },
        +              "details": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "message": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "recoverable": {
        +                "type": "boolean"
        +              },
        +              "retry_after_seconds": {
        +                "anyOf": [
        +                  {
        +                    "minimum": 0,
        +                    "type": "integer"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              }
        +            },
        +            "required": [
        +              "code",
        +              "message",
        +              "recoverable"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      }
        +    },
        +    "required": [
        +      "_meta"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "_meta": {
        +        "additionalProperties": false,
        +        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        +        "properties": {
        +          "deliverables": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        +                "properties": {
        +                  "docx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "dxf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "expires_at": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  },
        +                  "pdf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "xlsx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "expires_at"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "document_id": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "issued_at": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "rate_limit_remaining": {
        +            "anyOf": [
        +              {
        +                "minimum": 0,
        +                "type": "integer"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "request_id": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "schema_version": {
        +            "const": "1.0.0",
        +            "default": "1.0.0",
        +            "type": "string"
        +          },
        +          "scope_boundary": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        +                "properties": {
        +                  "not_in_scope": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "produced": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "recommended_companions": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "type": "string"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "produced",
        +                  "not_in_scope"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tier": {
        +            "enum": [
        +              "free",
        +              "paid"
        +            ],
        +            "type": "string"
        +          },
        +          "tier_upgrade": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        +                "properties": {
        +                  "available_tiers": {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        +                      "properties": {
        +                        "billing": {
        +                          "enum": [
        +                            "one_off",
        +                            "monthly",
        +                            "annual"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "currency": {
        +                          "enum": [
        +                            "GBP",
        +                            "SGD",
        +                            "EUR",
        +                            "USD",
        +                            "CAD",
        +                            "AUD",
        +                            "NZD",
        +                            "MYR"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "display_name": {
        +                          "type": "string"
        +                        },
        +                        "price_local": {
        +                          "type": "number"
        +                        },
        +                        "tier_slug": {
        +                          "enum": [
        +                            "7_day_pass",
        +                            "solo",
        +                            "studio",
        +                            "practice"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "unlock_summary": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "tier_slug",
        +                        "display_name",
        +                        "price_local",
        +                        "currency",
        +                        "billing",
        +                        "unlock_summary"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "current_tier": {
        +                    "const": "free",
        +                    "default": "free",
        +                    "type": "string"
        +                  },
        +                  "pass_credit": {
        +                    "anyOf": [
        +                      {
        +                        "additionalProperties": false,
        +                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        +                        "properties": {
        +                          "amount_local": {
        +                            "type": "number"
        +                          },
        +                          "applies_to": {
        +                            "const": "solo_first_month",
        +                            "default": "solo_first_month",
        +                            "type": "string"
        +                          },
        +                          "currency": {
        +                            "type": "string"
        +                          },
        +                          "redeemable_until": {
        +                            "type": "string"
        +                          }
        +                        },
        +                        "required": [
        +                          "amount_local",
        +                          "currency",
        +                          "redeemable_until"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "pricing_url": {
        +                    "default": "https://civilquants.com/pricing",
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "available_tiers"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tos_url": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "upgrade_hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "warranty_disclaimer": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          }
        +        },
        +        "required": [
        +          "request_id",
        +          "issued_at",
        +          "tier"
        +        ],
        +        "type": "object"
        +      },
        +      "data": {
        +        "default": null,
        +        "title": "Data"
        +      },
        +      "error": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        +            "properties": {
        +              "code": {
        +                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        +                "enum": [
        +                  "RATE_LIMIT_EXCEEDED",
        +                  "TIER_INSUFFICIENT",
        +                  "INVALID_INPUT",
        +                  "SCHEMA_VERSION_MISMATCH",
        +                  "SCHEMA_INVARIANT_VIOLATION",
        +                  "UPSTREAM_TIMEOUT",
        +                  "BACKEND_FAILURE",
        +                  "IP_BLOCKED",
        +                  "RESOURCE_NOT_FOUND",
        +                  "RENDER_FAILURE",
        +                  "OCR_LOW_CONFIDENCE",
        +                  "MANUAL_REVIEW_REQUIRED",
        +                  "ACCEPTANCE_REQUIRED",
        +                  "INVALID_TOKEN"
        +                ],
        +                "type": "string"
        +              },
        +              "details": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "message": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "recoverable": {
        +                "type": "boolean"
        +              },
        +              "retry_after_seconds": {
        +                "anyOf": [
        +                  {
        +                    "minimum": 0,
        +                    "type": "integer"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              }
        +            },
        +            "required": [
        +              "code",
        +              "message",
        +              "recoverable"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      }
        +    },
        +    "required": [
        +      "_meta"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedcompute_highway_drainage_channel1 field changed
      • changedOutput schema / properties / result / anyOf
        Previous value: -[
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "_meta": {
        -        "additionalProperties": false,
        -        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        -        "properties": {
        -          "deliverables": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        -                "properties": {
        -                  "docx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "dxf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "expires_at": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  },
        -                  "pdf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "xlsx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "expires_at"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "document_id": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "issued_at": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "rate_limit_remaining": {
        -            "anyOf": [
        -              {
        -                "minimum": 0,
        -                "type": "integer"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "request_id": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "schema_version": {
        -            "const": "1.0.0",
        -            "default": "1.0.0",
        -            "type": "string"
        -          },
        -          "scope_boundary": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        -                "properties": {
        -                  "not_in_scope": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "produced": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "recommended_companions": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "type": "string"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "produced",
        -                  "not_in_scope"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tier": {
        -            "enum": [
        -              "free",
        -              "paid"
        -            ],
        -            "type": "string"
        -          },
        -          "tier_upgrade": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        -                "properties": {
        -                  "available_tiers": {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        -                      "properties": {
        -                        "billing": {
        -                          "enum": [
        -                            "one_off",
        -                            "monthly",
        -                            "annual"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "currency": {
        -                          "enum": [
        -                            "GBP",
        -                            "SGD",
        -                            "EUR",
        -                            "USD",
        -                            "CAD",
        -                            "AUD",
        -                            "NZD",
        -                            "MYR"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "display_name": {
        -                          "type": "string"
        -                        },
        -                        "price_local": {
        -                          "type": "number"
        -                        },
        -                        "tier_slug": {
        -                          "enum": [
        -                            "7_day_pass",
        -                            "solo",
        -                            "studio",
        -                            "practice"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "unlock_summary": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "tier_slug",
        -                        "display_name",
        -                        "price_local",
        -                        "currency",
        -                        "billing",
        -                        "unlock_summary"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "current_tier": {
        -                    "const": "free",
        -                    "default": "free",
        -                    "type": "string"
        -                  },
        -                  "pass_credit": {
        -                    "anyOf": [
        -                      {
        -                        "additionalProperties": false,
        -                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        -                        "properties": {
        -                          "amount_local": {
        -                            "type": "number"
        -                          },
        -                          "applies_to": {
        -                            "const": "solo_first_month",
        -                            "default": "solo_first_month",
        -                            "type": "string"
        -                          },
        -                          "currency": {
        -                            "type": "string"
        -                          },
        -                          "redeemable_until": {
        -                            "type": "string"
        -                          }
        -                        },
        -                        "required": [
        -                          "amount_local",
        -                          "currency",
        -                          "redeemable_until"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "pricing_url": {
        -                    "default": "https://civilquants.com/pricing",
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "available_tiers"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tos_url": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "upgrade_hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "warranty_disclaimer": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          }
        -        },
        -        "required": [
        -          "request_id",
        -          "issued_at",
        -          "tier"
        -        ],
        -        "type": "object"
        -      },
        -      "data": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Schema § 1.1 — the typed payload returned inside `MCPResponse[ComputeResult]`.\n\nFree-tier responses MUST omit `drawings` and `audit_trail` (the bridge\nenforces this); paid-tier responses populate both. `text_summary` is\nbounded to 2000 chars — keeps the LLM-facing summary token-cheap and\nforces longer narrative into BoQ row descriptions where it belongs.",
        -            "properties": {
        -              "assembly_slug": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "audit_trail": {
        -                "anyOf": [
        -                  {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.7 — paid-tier audit-trail entry.\n\nOne entry per BoQ row; `boq_row_index` ties to the row position in\n`ComputeResult.boq_rows`. `derivation` is the human-readable formula\nwalk-through; `formula` is the optional formal expression.",
        -                      "properties": {
        -                        "boq_row_index": {
        -                          "minimum": 0,
        -                          "type": "integer"
        -                        },
        -                        "derivation": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "formula": {
        -                          "anyOf": [
        -                            {
        -                              "type": "string"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ],
        -                          "default": null
        -                        },
        -                        "id": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "parameters_referenced": {
        -                          "items": {
        -                            "type": "string"
        -                          },
        -                          "type": "array"
        -                        }
        -                      },
        -                      "required": [
        -                        "id",
        -                        "boq_row_index",
        -                        "derivation"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "boq_rows": {
        -                "items": {
        -                  "additionalProperties": false,
        -                  "description": "Schema § 1.3 — a single bill row in the requested standard's format.\n\n`description` is the non-verbatim functional description per spec § 13.9 /\n§ 15 invariant — NEVER reproduces a standard's verbatim clause text.\n`rate` / `amount` ship null because rates are commodity data the customer\nowns; the engine's job is the measurement, not the pricing.",
        -                  "properties": {
        -                    "amount": {
        -                      "anyOf": [
        -                        {
        -                          "type": "number"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "attribution": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "audit_id": {
        -                      "anyOf": [
        -                        {
        -                          "type": "string"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "description": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "quantity": {
        -                      "minimum": 0,
        -                      "type": "number"
        -                    },
        -                    "rate": {
        -                      "anyOf": [
        -                        {
        -                          "type": "number"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "unit": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "work_section": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    }
        -                  },
        -                  "required": [
        -                    "work_section",
        -                    "description",
        -                    "quantity",
        -                    "unit",
        -                    "attribution"
        -                  ],
        -                  "type": "object"
        -                },
        -                "type": "array"
        -              },
        -              "drawings": {
        -                "anyOf": [
        -                  {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.6 — paid-tier drawing artefact pointer.\n\n`url` is an R2-signed URL; expiry is carried in `_meta.deliverables.expires_at`\non the envelope (not duplicated here). `layers` is DXF-only; PDF/SVG\ncallers omit it.",
        -                      "properties": {
        -                        "drawing_type": {
        -                          "enum": [
        -                            "section",
        -                            "plan",
        -                            "elevation",
        -                            "isometric",
        -                            "detail"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "format": {
        -                          "enum": [
        -                            "DXF",
        -                            "PDF",
        -                            "SVG"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "layers": {
        -                          "anyOf": [
        -                            {
        -                              "items": {
        -                                "type": "string"
        -                              },
        -                              "type": "array"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ],
        -                          "default": null
        -                        },
        -                        "scale": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "sheet_size": {
        -                          "enum": [
        -                            "A1",
        -                            "A2",
        -                            "A3",
        -                            "A4"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "url": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "drawing_type",
        -                        "format",
        -                        "url",
        -                        "sheet_size",
        -                        "scale"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "parameters_used": {
        -                "additionalProperties": false,
        -                "description": "Schema § 1.2 — the parameter snapshot the engine actually used.\n\nSplits user-supplied values from engine defaults so customers can see\nwhich numbers came from them and which the engine filled in. Every\ndefaulted parameter SHOULD have a corresponding entry in `assumptions`\n— the bridge layer enforces this when wrapping engine output.",
        -                "properties": {
        -                  "assumptions": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "engine_defaults": {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  "resolved_from_description": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "additionalProperties": false,
        -                          "description": "Schema § 1.2 — a parameter resolved by the forgiving-input layer.\n\nPopulated by the Track B-Forgiving Haiku-4.5 resolution pass; until that\nlayer lands, instances are constructed only by tests. `source` distinguishes\nthe resolution path so customers can audit which fields were inferred.",
        -                          "properties": {
        -                            "confidence": {
        -                              "anyOf": [
        -                                {
        -                                  "enum": [
        -                                    "high",
        -                                    "medium",
        -                                    "low"
        -                                  ],
        -                                  "type": "string"
        -                                },
        -                                {
        -                                  "type": "null"
        -                                }
        -                              ],
        -                              "default": null
        -                            },
        -                            "field_name": {
        -                              "minLength": 1,
        -                              "type": "string"
        -                            },
        -                            "resolved_value": {},
        -                            "source": {
        -                              "enum": [
        -                                "description_field",
        -                                "haiku_resolution",
        -                                "engine_default"
        -                              ],
        -                              "type": "string"
        -                            }
        -                          },
        -                          "required": [
        -                            "field_name",
        -                            "resolved_value",
        -                            "source"
        -                          ],
        -                          "type": "object"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "user_supplied": {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  }
        -                },
        -                "type": "object"
        -              },
        -              "standard": {
        -                "enum": [
        -                  "CESMM4",
        -                  "NRM2",
        -                  "SMM7",
        -                  "MMHW"
        -                ],
        -                "type": "string"
        -              },
        -              "text_summary": {
        -                "maxLength": 2000,
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "totals_summary": {
        -                "additionalProperties": false,
        -                "description": "Schema § 1.4 — totals_summary as a typed wrapper around the free-form dict.\n\nWire shape is a flat object (`{\"concrete_m3\": {...}, \"rebar_t\": {...}}`).\nWe model it as `RootModel`-equivalent via `model_config(extra=\"allow\")`\n+ a single `__root__`-style `entries` dict. Pydantic v2 recommends\n`RootModel` for free-form roots; using a wrapper class keeps the import\nsurface uniform with the rest of this module.",
        -                "properties": {
        -                  "entries": {
        -                    "additionalProperties": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.4 — single material/work-class total entry.",
        -                      "properties": {
        -                        "quantity": {
        -                          "minimum": 0,
        -                          "type": "number"
        -                        },
        -                        "unit": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "quantity",
        -                        "unit"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "object"
        -                  }
        -                },
        -                "type": "object"
        -              }
        -            },
        -            "required": [
        -              "assembly_slug",
        -              "standard",
        -              "parameters_used",
        -              "boq_rows",
        -              "totals_summary",
        -              "text_summary"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      },
        -      "error": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        -            "properties": {
        -              "code": {
        -                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        -                "enum": [
        -                  "RATE_LIMIT_EXCEEDED",
        -                  "TIER_INSUFFICIENT",
        -                  "INVALID_INPUT",
        -                  "SCHEMA_VERSION_MISMATCH",
        -                  "SCHEMA_INVARIANT_VIOLATION",
        -                  "UPSTREAM_TIMEOUT",
        -                  "BACKEND_FAILURE",
        -                  "IP_BLOCKED",
        -                  "RESOURCE_NOT_FOUND",
        -                  "RENDER_FAILURE",
        -                  "OCR_LOW_CONFIDENCE",
        -                  "MANUAL_REVIEW_REQUIRED",
        -                  "ACCEPTANCE_REQUIRED",
        -                  "INVALID_TOKEN"
        -                ],
        -                "type": "string"
        -              },
        -              "details": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "message": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "recoverable": {
        -                "type": "boolean"
        -              },
        -              "retry_after_seconds": {
        -                "anyOf": [
        -                  {
        -                    "minimum": 0,
        -                    "type": "integer"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              }
        -            },
        -            "required": [
        -              "code",
        -              "message",
        -              "recoverable"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      }
        -    },
        -    "required": [
        -      "_meta"
        -    ],
        -    "type": "object"
        -  },
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "_meta": {
        -        "additionalProperties": false,
        -        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        -        "properties": {
        -          "deliverables": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        -                "properties": {
        -                  "docx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "dxf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "expires_at": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  },
        -                  "pdf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "xlsx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "expires_at"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "document_id": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "issued_at": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "rate_limit_remaining": {
        -            "anyOf": [
        -              {
        -                "minimum": 0,
        -                "type": "integer"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "request_id": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "schema_version": {
        -            "const": "1.0.0",
        -            "default": "1.0.0",
        -            "type": "string"
        -          },
        -          "scope_boundary": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        -                "properties": {
        -                  "not_in_scope": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "produced": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "recommended_companions": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "type": "string"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "produced",
        -                  "not_in_scope"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tier": {
        -            "enum": [
        -              "free",
        -              "paid"
        -            ],
        -            "type": "string"
        -          },
        -          "tier_upgrade": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        -                "properties": {
        -                  "available_tiers": {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        -                      "properties": {
        -                        "billing": {
        -                          "enum": [
        -                            "one_off",
        -                            "monthly",
        -                            "annual"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "currency": {
        -                          "enum": [
        -                            "GBP",
        -                            "SGD",
        -                            "EUR",
        -                            "USD",
        -                            "CAD",
        -                            "AUD",
        -                            "NZD",
        -                            "MYR"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "display_name": {
        -                          "type": "string"
        -                        },
        -                        "price_local": {
        -                          "type": "number"
        -                        },
        -                        "tier_slug": {
        -                          "enum": [
        -                            "7_day_pass",
        -                            "solo",
        -                            "studio",
        -                            "practice"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "unlock_summary": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "tier_slug",
        -                        "display_name",
        -                        "price_local",
        -                        "currency",
        -                        "billing",
        -                        "unlock_summary"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "current_tier": {
        -                    "const": "free",
        -                    "default": "free",
        -                    "type": "string"
        -                  },
        -                  "pass_credit": {
        -                    "anyOf": [
        -                      {
        -                        "additionalProperties": false,
        -                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        -                        "properties": {
        -                          "amount_local": {
        -                            "type": "number"
        -                          },
        -                          "applies_to": {
        -                            "const": "solo_first_month",
        -                            "default": "solo_first_month",
        -                            "type": "string"
        -                          },
        -                          "currency": {
        -                            "type": "string"
        -                          },
        -                          "redeemable_until": {
        -                            "type": "string"
        -                          }
        -                        },
        -                        "required": [
        -                          "amount_local",
        -                          "currency",
        -                          "redeemable_until"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "pricing_url": {
        -                    "default": "https://civilquants.com/pricing",
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "available_tiers"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tos_url": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "upgrade_hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "warranty_disclaimer": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          }
        -        },
        -        "required": [
        -          "request_id",
        -          "issued_at",
        -          "tier"
        -        ],
        -        "type": "object"
        -      },
        -      "data": {
        -        "default": null,
        -        "title": "Data"
        -      },
        -      "error": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        -            "properties": {
        -              "code": {
        -                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        -                "enum": [
        -                  "RATE_LIMIT_EXCEEDED",
        -                  "TIER_INSUFFICIENT",
        -                  "INVALID_INPUT",
        -                  "SCHEMA_VERSION_MISMATCH",
        -                  "SCHEMA_INVARIANT_VIOLATION",
        -                  "UPSTREAM_TIMEOUT",
        -                  "BACKEND_FAILURE",
        -                  "IP_BLOCKED",
        -                  "RESOURCE_NOT_FOUND",
        -                  "RENDER_FAILURE",
        -                  "OCR_LOW_CONFIDENCE",
        -                  "MANUAL_REVIEW_REQUIRED",
        -                  "ACCEPTANCE_REQUIRED",
        -                  "INVALID_TOKEN"
        -                ],
        -                "type": "string"
        -              },
        -              "details": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "message": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "recoverable": {
        -                "type": "boolean"
        -              },
        -              "retry_after_seconds": {
        -                "anyOf": [
        -                  {
        -                    "minimum": 0,
        -                    "type": "integer"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              }
        -            },
        -            "required": [
        -              "code",
        -              "message",
        -              "recoverable"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      }
        -    },
        -    "required": [
        -      "_meta"
        -    ],
        -    "type": "object"
        -  }
        -]New value: +[
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "_meta": {
        +        "additionalProperties": false,
        +        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        +        "properties": {
        +          "deliverables": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        +                "properties": {
        +                  "docx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "dxf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "expires_at": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  },
        +                  "pdf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "xlsx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "expires_at"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "document_id": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "issued_at": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "rate_limit_remaining": {
        +            "anyOf": [
        +              {
        +                "minimum": 0,
        +                "type": "integer"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "request_id": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "schema_version": {
        +            "const": "1.0.0",
        +            "default": "1.0.0",
        +            "type": "string"
        +          },
        +          "scope_boundary": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        +                "properties": {
        +                  "not_in_scope": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "produced": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "recommended_companions": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "type": "string"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "produced",
        +                  "not_in_scope"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tier": {
        +            "enum": [
        +              "free",
        +              "paid"
        +            ],
        +            "type": "string"
        +          },
        +          "tier_upgrade": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        +                "properties": {
        +                  "available_tiers": {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        +                      "properties": {
        +                        "billing": {
        +                          "enum": [
        +                            "one_off",
        +                            "monthly",
        +                            "annual"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "currency": {
        +                          "enum": [
        +                            "GBP",
        +                            "SGD",
        +                            "EUR",
        +                            "USD",
        +                            "CAD",
        +                            "AUD",
        +                            "NZD",
        +                            "MYR"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "display_name": {
        +                          "type": "string"
        +                        },
        +                        "price_local": {
        +                          "type": "number"
        +                        },
        +                        "tier_slug": {
        +                          "enum": [
        +                            "7_day_pass",
        +                            "solo",
        +                            "studio",
        +                            "practice"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "unlock_summary": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "tier_slug",
        +                        "display_name",
        +                        "price_local",
        +                        "currency",
        +                        "billing",
        +                        "unlock_summary"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "current_tier": {
        +                    "const": "free",
        +                    "default": "free",
        +                    "type": "string"
        +                  },
        +                  "pass_credit": {
        +                    "anyOf": [
        +                      {
        +                        "additionalProperties": false,
        +                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        +                        "properties": {
        +                          "amount_local": {
        +                            "type": "number"
        +                          },
        +                          "applies_to": {
        +                            "const": "solo_first_month",
        +                            "default": "solo_first_month",
        +                            "type": "string"
        +                          },
        +                          "currency": {
        +                            "type": "string"
        +                          },
        +                          "redeemable_until": {
        +                            "type": "string"
        +                          }
        +                        },
        +                        "required": [
        +                          "amount_local",
        +                          "currency",
        +                          "redeemable_until"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "pricing_url": {
        +                    "default": "https://civilquants.com/pricing",
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "available_tiers"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tos_url": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "upgrade_hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "warranty_disclaimer": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          }
        +        },
        +        "required": [
        +          "request_id",
        +          "issued_at",
        +          "tier"
        +        ],
        +        "type": "object"
        +      },
        +      "data": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Schema § 1.1 — the typed payload returned inside `MCPResponse[ComputeResult]`.\n\nFree-tier responses MUST omit `drawings` and `audit_trail` (the bridge\nenforces this); paid-tier responses populate both. `text_summary` is\nbounded to 2000 chars — keeps the LLM-facing summary token-cheap and\nforces longer narrative into BoQ row descriptions where it belongs.\n`warnings` is the non-fatal geometry advisory list (both tiers).",
        +            "properties": {
        +              "assembly_slug": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "audit_trail": {
        +                "anyOf": [
        +                  {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.7 — paid-tier audit-trail entry.\n\nOne entry per BoQ row; `boq_row_index` ties to the row position in\n`ComputeResult.boq_rows`. `derivation` is the human-readable formula\nwalk-through; `formula` is the optional formal expression.",
        +                      "properties": {
        +                        "boq_row_index": {
        +                          "minimum": 0,
        +                          "type": "integer"
        +                        },
        +                        "derivation": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "formula": {
        +                          "anyOf": [
        +                            {
        +                              "type": "string"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ],
        +                          "default": null
        +                        },
        +                        "id": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "parameters_referenced": {
        +                          "items": {
        +                            "type": "string"
        +                          },
        +                          "type": "array"
        +                        }
        +                      },
        +                      "required": [
        +                        "id",
        +                        "boq_row_index",
        +                        "derivation"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "boq_rows": {
        +                "items": {
        +                  "additionalProperties": false,
        +                  "description": "Schema § 1.3 — a single bill row in the requested standard's format.\n\n`description` is the non-verbatim functional description per spec § 13.9 /\n§ 15 invariant — NEVER reproduces a standard's verbatim clause text.\n`rate` / `amount` ship null because rates are commodity data the customer\nowns; the engine's job is the measurement, not the pricing.",
        +                  "properties": {
        +                    "amount": {
        +                      "anyOf": [
        +                        {
        +                          "type": "number"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "attribution": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "audit_id": {
        +                      "anyOf": [
        +                        {
        +                          "type": "string"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "description": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "quantity": {
        +                      "minimum": 0,
        +                      "type": "number"
        +                    },
        +                    "rate": {
        +                      "anyOf": [
        +                        {
        +                          "type": "number"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "unit": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "work_section": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    }
        +                  },
        +                  "required": [
        +                    "work_section",
        +                    "description",
        +                    "quantity",
        +                    "unit",
        +                    "attribution"
        +                  ],
        +                  "type": "object"
        +                },
        +                "type": "array"
        +              },
        +              "drawings": {
        +                "anyOf": [
        +                  {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.6 — paid-tier drawing artefact pointer.\n\n`url` is an R2-signed URL; expiry is carried in `_meta.deliverables.expires_at`\non the envelope (not duplicated here). `layers` is DXF-only; PDF/SVG\ncallers omit it.",
        +                      "properties": {
        +                        "drawing_type": {
        +                          "enum": [
        +                            "section",
        +                            "plan",
        +                            "elevation",
        +                            "isometric",
        +                            "detail"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "format": {
        +                          "enum": [
        +                            "DXF",
        +                            "PDF",
        +                            "SVG"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "layers": {
        +                          "anyOf": [
        +                            {
        +                              "items": {
        +                                "type": "string"
        +                              },
        +                              "type": "array"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ],
        +                          "default": null
        +                        },
        +                        "scale": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "sheet_size": {
        +                          "enum": [
        +                            "A1",
        +                            "A2",
        +                            "A3",
        +                            "A4"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "url": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "drawing_type",
        +                        "format",
        +                        "url",
        +                        "sheet_size",
        +                        "scale"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "parameters_used": {
        +                "additionalProperties": false,
        +                "description": "Schema § 1.2 — the parameter snapshot the engine actually used.\n\nSplits user-supplied values from engine defaults so customers can see\nwhich numbers came from them and which the engine filled in. Every\ndefaulted parameter SHOULD have a corresponding entry in `assumptions`\n— the bridge layer enforces this when wrapping engine output.",
        +                "properties": {
        +                  "assumptions": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "engine_defaults": {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  "resolved_from_description": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "additionalProperties": false,
        +                          "description": "Schema § 1.2 — a parameter resolved by the forgiving-input layer.\n\nPopulated by the Track B-Forgiving Haiku-4.5 resolution pass; until that\nlayer lands, instances are constructed only by tests. `source` distinguishes\nthe resolution path so customers can audit which fields were inferred.",
        +                          "properties": {
        +                            "confidence": {
        +                              "anyOf": [
        +                                {
        +                                  "enum": [
        +                                    "high",
        +                                    "medium",
        +                                    "low"
        +                                  ],
        +                                  "type": "string"
        +                                },
        +                                {
        +                                  "type": "null"
        +                                }
        +                              ],
        +                              "default": null
        +                            },
        +                            "field_name": {
        +                              "minLength": 1,
        +                              "type": "string"
        +                            },
        +                            "resolved_value": {},
        +                            "source": {
        +                              "enum": [
        +                                "description_field",
        +                                "haiku_resolution",
        +                                "engine_default"
        +                              ],
        +                              "type": "string"
        +                            }
        +                          },
        +                          "required": [
        +                            "field_name",
        +                            "resolved_value",
        +                            "source"
        +                          ],
        +                          "type": "object"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "user_supplied": {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  }
        +                },
        +                "type": "object"
        +              },
        +              "standard": {
        +                "enum": [
        +                  "CESMM4",
        +                  "NRM2",
        +                  "SMM7",
        +                  "MMHW"
        +                ],
        +                "type": "string"
        +              },
        +              "text_summary": {
        +                "maxLength": 2000,
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "totals_summary": {
        +                "additionalProperties": false,
        +                "description": "Schema § 1.4 — totals_summary as a typed wrapper around the free-form dict.\n\nWire shape is a flat object (`{\"concrete_m3\": {...}, \"rebar_t\": {...}}`).\nWe model it as `RootModel`-equivalent via `model_config(extra=\"allow\")`\n+ a single `__root__`-style `entries` dict. Pydantic v2 recommends\n`RootModel` for free-form roots; using a wrapper class keeps the import\nsurface uniform with the rest of this module.",
        +                "properties": {
        +                  "entries": {
        +                    "additionalProperties": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.4 — single material/work-class total entry.",
        +                      "properties": {
        +                        "quantity": {
        +                          "minimum": 0,
        +                          "type": "number"
        +                        },
        +                        "unit": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "quantity",
        +                        "unit"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "object"
        +                  }
        +                },
        +                "type": "object"
        +              },
        +              "warnings": {
        +                "items": {
        +                  "additionalProperties": false,
        +                  "description": "Schema § 1.8 — a non-fatal geometry advisory (56th-fire T2).\n\nThe wire projection of the engine's `core.GeometryWarning`. Advisory only:\na warning NEVER changes a measured quantity — it flags geometry that is\nvalid but likely a mistake (e.g. a stale dependent-height default). Present\non BOTH tiers — a correctness/safety signal, not a paid feature.",
        +                  "properties": {
        +                    "affected_params": {
        +                      "items": {
        +                        "type": "string"
        +                      },
        +                      "type": "array"
        +                    },
        +                    "code": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "detail": {
        +                      "additionalProperties": {
        +                        "type": "number"
        +                      },
        +                      "type": "object"
        +                    },
        +                    "message": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "severity": {
        +                      "enum": [
        +                        "info",
        +                        "advisory",
        +                        "caution"
        +                      ],
        +                      "type": "string"
        +                    }
        +                  },
        +                  "required": [
        +                    "code",
        +                    "severity",
        +                    "message"
        +                  ],
        +                  "type": "object"
        +                },
        +                "type": "array"
        +              }
        +            },
        +            "required": [
        +              "assembly_slug",
        +              "standard",
        +              "parameters_used",
        +              "boq_rows",
        +              "totals_summary",
        +              "text_summary"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      },
        +      "error": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        +            "properties": {
        +              "code": {
        +                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        +                "enum": [
        +                  "RATE_LIMIT_EXCEEDED",
        +                  "TIER_INSUFFICIENT",
        +                  "INVALID_INPUT",
        +                  "SCHEMA_VERSION_MISMATCH",
        +                  "SCHEMA_INVARIANT_VIOLATION",
        +                  "UPSTREAM_TIMEOUT",
        +                  "BACKEND_FAILURE",
        +                  "IP_BLOCKED",
        +                  "RESOURCE_NOT_FOUND",
        +                  "RENDER_FAILURE",
        +                  "OCR_LOW_CONFIDENCE",
        +                  "MANUAL_REVIEW_REQUIRED",
        +                  "ACCEPTANCE_REQUIRED",
        +                  "INVALID_TOKEN"
        +                ],
        +                "type": "string"
        +              },
        +              "details": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "message": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "recoverable": {
        +                "type": "boolean"
        +              },
        +              "retry_after_seconds": {
        +                "anyOf": [
        +                  {
        +                    "minimum": 0,
        +                    "type": "integer"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              }
        +            },
        +            "required": [
        +              "code",
        +              "message",
        +              "recoverable"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      }
        +    },
        +    "required": [
        +      "_meta"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "_meta": {
        +        "additionalProperties": false,
        +        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        +        "properties": {
        +          "deliverables": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        +                "properties": {
        +                  "docx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "dxf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "expires_at": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  },
        +                  "pdf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "xlsx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "expires_at"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "document_id": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "issued_at": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "rate_limit_remaining": {
        +            "anyOf": [
        +              {
        +                "minimum": 0,
        +                "type": "integer"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "request_id": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "schema_version": {
        +            "const": "1.0.0",
        +            "default": "1.0.0",
        +            "type": "string"
        +          },
        +          "scope_boundary": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        +                "properties": {
        +                  "not_in_scope": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "produced": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "recommended_companions": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "type": "string"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "produced",
        +                  "not_in_scope"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tier": {
        +            "enum": [
        +              "free",
        +              "paid"
        +            ],
        +            "type": "string"
        +          },
        +          "tier_upgrade": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        +                "properties": {
        +                  "available_tiers": {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        +                      "properties": {
        +                        "billing": {
        +                          "enum": [
        +                            "one_off",
        +                            "monthly",
        +                            "annual"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "currency": {
        +                          "enum": [
        +                            "GBP",
        +                            "SGD",
        +                            "EUR",
        +                            "USD",
        +                            "CAD",
        +                            "AUD",
        +                            "NZD",
        +                            "MYR"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "display_name": {
        +                          "type": "string"
        +                        },
        +                        "price_local": {
        +                          "type": "number"
        +                        },
        +                        "tier_slug": {
        +                          "enum": [
        +                            "7_day_pass",
        +                            "solo",
        +                            "studio",
        +                            "practice"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "unlock_summary": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "tier_slug",
        +                        "display_name",
        +                        "price_local",
        +                        "currency",
        +                        "billing",
        +                        "unlock_summary"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "current_tier": {
        +                    "const": "free",
        +                    "default": "free",
        +                    "type": "string"
        +                  },
        +                  "pass_credit": {
        +                    "anyOf": [
        +                      {
        +                        "additionalProperties": false,
        +                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        +                        "properties": {
        +                          "amount_local": {
        +                            "type": "number"
        +                          },
        +                          "applies_to": {
        +                            "const": "solo_first_month",
        +                            "default": "solo_first_month",
        +                            "type": "string"
        +                          },
        +                          "currency": {
        +                            "type": "string"
        +                          },
        +                          "redeemable_until": {
        +                            "type": "string"
        +                          }
        +                        },
        +                        "required": [
        +                          "amount_local",
        +                          "currency",
        +                          "redeemable_until"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "pricing_url": {
        +                    "default": "https://civilquants.com/pricing",
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "available_tiers"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tos_url": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "upgrade_hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "warranty_disclaimer": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          }
        +        },
        +        "required": [
        +          "request_id",
        +          "issued_at",
        +          "tier"
        +        ],
        +        "type": "object"
        +      },
        +      "data": {
        +        "default": null,
        +        "title": "Data"
        +      },
        +      "error": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        +            "properties": {
        +              "code": {
        +                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        +                "enum": [
        +                  "RATE_LIMIT_EXCEEDED",
        +                  "TIER_INSUFFICIENT",
        +                  "INVALID_INPUT",
        +                  "SCHEMA_VERSION_MISMATCH",
        +                  "SCHEMA_INVARIANT_VIOLATION",
        +                  "UPSTREAM_TIMEOUT",
        +                  "BACKEND_FAILURE",
        +                  "IP_BLOCKED",
        +                  "RESOURCE_NOT_FOUND",
        +                  "RENDER_FAILURE",
        +                  "OCR_LOW_CONFIDENCE",
        +                  "MANUAL_REVIEW_REQUIRED",
        +                  "ACCEPTANCE_REQUIRED",
        +                  "INVALID_TOKEN"
        +                ],
        +                "type": "string"
        +              },
        +              "details": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "message": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "recoverable": {
        +                "type": "boolean"
        +              },
        +              "retry_after_seconds": {
        +                "anyOf": [
        +                  {
        +                    "minimum": 0,
        +                    "type": "integer"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              }
        +            },
        +            "required": [
        +              "code",
        +              "message",
        +              "recoverable"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      }
        +    },
        +    "required": [
        +      "_meta"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedcompute_kerb_run1 field changed
      • changedOutput schema / properties / result / anyOf
        Previous value: -[
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "_meta": {
        -        "additionalProperties": false,
        -        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        -        "properties": {
        -          "deliverables": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        -                "properties": {
        -                  "docx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "dxf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "expires_at": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  },
        -                  "pdf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "xlsx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "expires_at"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "document_id": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "issued_at": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "rate_limit_remaining": {
        -            "anyOf": [
        -              {
        -                "minimum": 0,
        -                "type": "integer"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "request_id": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "schema_version": {
        -            "const": "1.0.0",
        -            "default": "1.0.0",
        -            "type": "string"
        -          },
        -          "scope_boundary": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        -                "properties": {
        -                  "not_in_scope": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "produced": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "recommended_companions": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "type": "string"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "produced",
        -                  "not_in_scope"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tier": {
        -            "enum": [
        -              "free",
        -              "paid"
        -            ],
        -            "type": "string"
        -          },
        -          "tier_upgrade": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        -                "properties": {
        -                  "available_tiers": {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        -                      "properties": {
        -                        "billing": {
        -                          "enum": [
        -                            "one_off",
        -                            "monthly",
        -                            "annual"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "currency": {
        -                          "enum": [
        -                            "GBP",
        -                            "SGD",
        -                            "EUR",
        -                            "USD",
        -                            "CAD",
        -                            "AUD",
        -                            "NZD",
        -                            "MYR"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "display_name": {
        -                          "type": "string"
        -                        },
        -                        "price_local": {
        -                          "type": "number"
        -                        },
        -                        "tier_slug": {
        -                          "enum": [
        -                            "7_day_pass",
        -                            "solo",
        -                            "studio",
        -                            "practice"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "unlock_summary": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "tier_slug",
        -                        "display_name",
        -                        "price_local",
        -                        "currency",
        -                        "billing",
        -                        "unlock_summary"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "current_tier": {
        -                    "const": "free",
        -                    "default": "free",
        -                    "type": "string"
        -                  },
        -                  "pass_credit": {
        -                    "anyOf": [
        -                      {
        -                        "additionalProperties": false,
        -                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        -                        "properties": {
        -                          "amount_local": {
        -                            "type": "number"
        -                          },
        -                          "applies_to": {
        -                            "const": "solo_first_month",
        -                            "default": "solo_first_month",
        -                            "type": "string"
        -                          },
        -                          "currency": {
        -                            "type": "string"
        -                          },
        -                          "redeemable_until": {
        -                            "type": "string"
        -                          }
        -                        },
        -                        "required": [
        -                          "amount_local",
        -                          "currency",
        -                          "redeemable_until"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "pricing_url": {
        -                    "default": "https://civilquants.com/pricing",
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "available_tiers"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tos_url": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "upgrade_hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "warranty_disclaimer": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          }
        -        },
        -        "required": [
        -          "request_id",
        -          "issued_at",
        -          "tier"
        -        ],
        -        "type": "object"
        -      },
        -      "data": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Schema § 1.1 — the typed payload returned inside `MCPResponse[ComputeResult]`.\n\nFree-tier responses MUST omit `drawings` and `audit_trail` (the bridge\nenforces this); paid-tier responses populate both. `text_summary` is\nbounded to 2000 chars — keeps the LLM-facing summary token-cheap and\nforces longer narrative into BoQ row descriptions where it belongs.",
        -            "properties": {
        -              "assembly_slug": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "audit_trail": {
        -                "anyOf": [
        -                  {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.7 — paid-tier audit-trail entry.\n\nOne entry per BoQ row; `boq_row_index` ties to the row position in\n`ComputeResult.boq_rows`. `derivation` is the human-readable formula\nwalk-through; `formula` is the optional formal expression.",
        -                      "properties": {
        -                        "boq_row_index": {
        -                          "minimum": 0,
        -                          "type": "integer"
        -                        },
        -                        "derivation": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "formula": {
        -                          "anyOf": [
        -                            {
        -                              "type": "string"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ],
        -                          "default": null
        -                        },
        -                        "id": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "parameters_referenced": {
        -                          "items": {
        -                            "type": "string"
        -                          },
        -                          "type": "array"
        -                        }
        -                      },
        -                      "required": [
        -                        "id",
        -                        "boq_row_index",
        -                        "derivation"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "boq_rows": {
        -                "items": {
        -                  "additionalProperties": false,
        -                  "description": "Schema § 1.3 — a single bill row in the requested standard's format.\n\n`description` is the non-verbatim functional description per spec § 13.9 /\n§ 15 invariant — NEVER reproduces a standard's verbatim clause text.\n`rate` / `amount` ship null because rates are commodity data the customer\nowns; the engine's job is the measurement, not the pricing.",
        -                  "properties": {
        -                    "amount": {
        -                      "anyOf": [
        -                        {
        -                          "type": "number"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "attribution": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "audit_id": {
        -                      "anyOf": [
        -                        {
        -                          "type": "string"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "description": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "quantity": {
        -                      "minimum": 0,
        -                      "type": "number"
        -                    },
        -                    "rate": {
        -                      "anyOf": [
        -                        {
        -                          "type": "number"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "unit": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "work_section": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    }
        -                  },
        -                  "required": [
        -                    "work_section",
        -                    "description",
        -                    "quantity",
        -                    "unit",
        -                    "attribution"
        -                  ],
        -                  "type": "object"
        -                },
        -                "type": "array"
        -              },
        -              "drawings": {
        -                "anyOf": [
        -                  {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.6 — paid-tier drawing artefact pointer.\n\n`url` is an R2-signed URL; expiry is carried in `_meta.deliverables.expires_at`\non the envelope (not duplicated here). `layers` is DXF-only; PDF/SVG\ncallers omit it.",
        -                      "properties": {
        -                        "drawing_type": {
        -                          "enum": [
        -                            "section",
        -                            "plan",
        -                            "elevation",
        -                            "isometric",
        -                            "detail"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "format": {
        -                          "enum": [
        -                            "DXF",
        -                            "PDF",
        -                            "SVG"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "layers": {
        -                          "anyOf": [
        -                            {
        -                              "items": {
        -                                "type": "string"
        -                              },
        -                              "type": "array"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ],
        -                          "default": null
        -                        },
        -                        "scale": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "sheet_size": {
        -                          "enum": [
        -                            "A1",
        -                            "A2",
        -                            "A3",
        -                            "A4"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "url": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "drawing_type",
        -                        "format",
        -                        "url",
        -                        "sheet_size",
        -                        "scale"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "parameters_used": {
        -                "additionalProperties": false,
        -                "description": "Schema § 1.2 — the parameter snapshot the engine actually used.\n\nSplits user-supplied values from engine defaults so customers can see\nwhich numbers came from them and which the engine filled in. Every\ndefaulted parameter SHOULD have a corresponding entry in `assumptions`\n— the bridge layer enforces this when wrapping engine output.",
        -                "properties": {
        -                  "assumptions": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "engine_defaults": {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  "resolved_from_description": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "additionalProperties": false,
        -                          "description": "Schema § 1.2 — a parameter resolved by the forgiving-input layer.\n\nPopulated by the Track B-Forgiving Haiku-4.5 resolution pass; until that\nlayer lands, instances are constructed only by tests. `source` distinguishes\nthe resolution path so customers can audit which fields were inferred.",
        -                          "properties": {
        -                            "confidence": {
        -                              "anyOf": [
        -                                {
        -                                  "enum": [
        -                                    "high",
        -                                    "medium",
        -                                    "low"
        -                                  ],
        -                                  "type": "string"
        -                                },
        -                                {
        -                                  "type": "null"
        -                                }
        -                              ],
        -                              "default": null
        -                            },
        -                            "field_name": {
        -                              "minLength": 1,
        -                              "type": "string"
        -                            },
        -                            "resolved_value": {},
        -                            "source": {
        -                              "enum": [
        -                                "description_field",
        -                                "haiku_resolution",
        -                                "engine_default"
        -                              ],
        -                              "type": "string"
        -                            }
        -                          },
        -                          "required": [
        -                            "field_name",
        -                            "resolved_value",
        -                            "source"
        -                          ],
        -                          "type": "object"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "user_supplied": {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  }
        -                },
        -                "type": "object"
        -              },
        -              "standard": {
        -                "enum": [
        -                  "CESMM4",
        -                  "NRM2",
        -                  "SMM7",
        -                  "MMHW"
        -                ],
        -                "type": "string"
        -              },
        -              "text_summary": {
        -                "maxLength": 2000,
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "totals_summary": {
        -                "additionalProperties": false,
        -                "description": "Schema § 1.4 — totals_summary as a typed wrapper around the free-form dict.\n\nWire shape is a flat object (`{\"concrete_m3\": {...}, \"rebar_t\": {...}}`).\nWe model it as `RootModel`-equivalent via `model_config(extra=\"allow\")`\n+ a single `__root__`-style `entries` dict. Pydantic v2 recommends\n`RootModel` for free-form roots; using a wrapper class keeps the import\nsurface uniform with the rest of this module.",
        -                "properties": {
        -                  "entries": {
        -                    "additionalProperties": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.4 — single material/work-class total entry.",
        -                      "properties": {
        -                        "quantity": {
        -                          "minimum": 0,
        -                          "type": "number"
        -                        },
        -                        "unit": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "quantity",
        -                        "unit"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "object"
        -                  }
        -                },
        -                "type": "object"
        -              }
        -            },
        -            "required": [
        -              "assembly_slug",
        -              "standard",
        -              "parameters_used",
        -              "boq_rows",
        -              "totals_summary",
        -              "text_summary"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      },
        -      "error": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        -            "properties": {
        -              "code": {
        -                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        -                "enum": [
        -                  "RATE_LIMIT_EXCEEDED",
        -                  "TIER_INSUFFICIENT",
        -                  "INVALID_INPUT",
        -                  "SCHEMA_VERSION_MISMATCH",
        -                  "SCHEMA_INVARIANT_VIOLATION",
        -                  "UPSTREAM_TIMEOUT",
        -                  "BACKEND_FAILURE",
        -                  "IP_BLOCKED",
        -                  "RESOURCE_NOT_FOUND",
        -                  "RENDER_FAILURE",
        -                  "OCR_LOW_CONFIDENCE",
        -                  "MANUAL_REVIEW_REQUIRED",
        -                  "ACCEPTANCE_REQUIRED",
        -                  "INVALID_TOKEN"
        -                ],
        -                "type": "string"
        -              },
        -              "details": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "message": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "recoverable": {
        -                "type": "boolean"
        -              },
        -              "retry_after_seconds": {
        -                "anyOf": [
        -                  {
        -                    "minimum": 0,
        -                    "type": "integer"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              }
        -            },
        -            "required": [
        -              "code",
        -              "message",
        -              "recoverable"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      }
        -    },
        -    "required": [
        -      "_meta"
        -    ],
        -    "type": "object"
        -  },
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "_meta": {
        -        "additionalProperties": false,
        -        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        -        "properties": {
        -          "deliverables": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        -                "properties": {
        -                  "docx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "dxf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "expires_at": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  },
        -                  "pdf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "xlsx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "expires_at"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "document_id": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "issued_at": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "rate_limit_remaining": {
        -            "anyOf": [
        -              {
        -                "minimum": 0,
        -                "type": "integer"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "request_id": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "schema_version": {
        -            "const": "1.0.0",
        -            "default": "1.0.0",
        -            "type": "string"
        -          },
        -          "scope_boundary": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        -                "properties": {
        -                  "not_in_scope": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "produced": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "recommended_companions": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "type": "string"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "produced",
        -                  "not_in_scope"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tier": {
        -            "enum": [
        -              "free",
        -              "paid"
        -            ],
        -            "type": "string"
        -          },
        -          "tier_upgrade": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        -                "properties": {
        -                  "available_tiers": {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        -                      "properties": {
        -                        "billing": {
        -                          "enum": [
        -                            "one_off",
        -                            "monthly",
        -                            "annual"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "currency": {
        -                          "enum": [
        -                            "GBP",
        -                            "SGD",
        -                            "EUR",
        -                            "USD",
        -                            "CAD",
        -                            "AUD",
        -                            "NZD",
        -                            "MYR"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "display_name": {
        -                          "type": "string"
        -                        },
        -                        "price_local": {
        -                          "type": "number"
        -                        },
        -                        "tier_slug": {
        -                          "enum": [
        -                            "7_day_pass",
        -                            "solo",
        -                            "studio",
        -                            "practice"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "unlock_summary": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "tier_slug",
        -                        "display_name",
        -                        "price_local",
        -                        "currency",
        -                        "billing",
        -                        "unlock_summary"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "current_tier": {
        -                    "const": "free",
        -                    "default": "free",
        -                    "type": "string"
        -                  },
        -                  "pass_credit": {
        -                    "anyOf": [
        -                      {
        -                        "additionalProperties": false,
        -                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        -                        "properties": {
        -                          "amount_local": {
        -                            "type": "number"
        -                          },
        -                          "applies_to": {
        -                            "const": "solo_first_month",
        -                            "default": "solo_first_month",
        -                            "type": "string"
        -                          },
        -                          "currency": {
        -                            "type": "string"
        -                          },
        -                          "redeemable_until": {
        -                            "type": "string"
        -                          }
        -                        },
        -                        "required": [
        -                          "amount_local",
        -                          "currency",
        -                          "redeemable_until"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "pricing_url": {
        -                    "default": "https://civilquants.com/pricing",
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "available_tiers"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tos_url": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "upgrade_hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "warranty_disclaimer": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          }
        -        },
        -        "required": [
        -          "request_id",
        -          "issued_at",
        -          "tier"
        -        ],
        -        "type": "object"
        -      },
        -      "data": {
        -        "default": null,
        -        "title": "Data"
        -      },
        -      "error": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        -            "properties": {
        -              "code": {
        -                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        -                "enum": [
        -                  "RATE_LIMIT_EXCEEDED",
        -                  "TIER_INSUFFICIENT",
        -                  "INVALID_INPUT",
        -                  "SCHEMA_VERSION_MISMATCH",
        -                  "SCHEMA_INVARIANT_VIOLATION",
        -                  "UPSTREAM_TIMEOUT",
        -                  "BACKEND_FAILURE",
        -                  "IP_BLOCKED",
        -                  "RESOURCE_NOT_FOUND",
        -                  "RENDER_FAILURE",
        -                  "OCR_LOW_CONFIDENCE",
        -                  "MANUAL_REVIEW_REQUIRED",
        -                  "ACCEPTANCE_REQUIRED",
        -                  "INVALID_TOKEN"
        -                ],
        -                "type": "string"
        -              },
        -              "details": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "message": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "recoverable": {
        -                "type": "boolean"
        -              },
        -              "retry_after_seconds": {
        -                "anyOf": [
        -                  {
        -                    "minimum": 0,
        -                    "type": "integer"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              }
        -            },
        -            "required": [
        -              "code",
        -              "message",
        -              "recoverable"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      }
        -    },
        -    "required": [
        -      "_meta"
        -    ],
        -    "type": "object"
        -  }
        -]New value: +[
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "_meta": {
        +        "additionalProperties": false,
        +        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        +        "properties": {
        +          "deliverables": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        +                "properties": {
        +                  "docx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "dxf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "expires_at": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  },
        +                  "pdf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "xlsx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "expires_at"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "document_id": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "issued_at": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "rate_limit_remaining": {
        +            "anyOf": [
        +              {
        +                "minimum": 0,
        +                "type": "integer"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "request_id": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "schema_version": {
        +            "const": "1.0.0",
        +            "default": "1.0.0",
        +            "type": "string"
        +          },
        +          "scope_boundary": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        +                "properties": {
        +                  "not_in_scope": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "produced": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "recommended_companions": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "type": "string"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "produced",
        +                  "not_in_scope"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tier": {
        +            "enum": [
        +              "free",
        +              "paid"
        +            ],
        +            "type": "string"
        +          },
        +          "tier_upgrade": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        +                "properties": {
        +                  "available_tiers": {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        +                      "properties": {
        +                        "billing": {
        +                          "enum": [
        +                            "one_off",
        +                            "monthly",
        +                            "annual"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "currency": {
        +                          "enum": [
        +                            "GBP",
        +                            "SGD",
        +                            "EUR",
        +                            "USD",
        +                            "CAD",
        +                            "AUD",
        +                            "NZD",
        +                            "MYR"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "display_name": {
        +                          "type": "string"
        +                        },
        +                        "price_local": {
        +                          "type": "number"
        +                        },
        +                        "tier_slug": {
        +                          "enum": [
        +                            "7_day_pass",
        +                            "solo",
        +                            "studio",
        +                            "practice"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "unlock_summary": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "tier_slug",
        +                        "display_name",
        +                        "price_local",
        +                        "currency",
        +                        "billing",
        +                        "unlock_summary"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "current_tier": {
        +                    "const": "free",
        +                    "default": "free",
        +                    "type": "string"
        +                  },
        +                  "pass_credit": {
        +                    "anyOf": [
        +                      {
        +                        "additionalProperties": false,
        +                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        +                        "properties": {
        +                          "amount_local": {
        +                            "type": "number"
        +                          },
        +                          "applies_to": {
        +                            "const": "solo_first_month",
        +                            "default": "solo_first_month",
        +                            "type": "string"
        +                          },
        +                          "currency": {
        +                            "type": "string"
        +                          },
        +                          "redeemable_until": {
        +                            "type": "string"
        +                          }
        +                        },
        +                        "required": [
        +                          "amount_local",
        +                          "currency",
        +                          "redeemable_until"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "pricing_url": {
        +                    "default": "https://civilquants.com/pricing",
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "available_tiers"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tos_url": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "upgrade_hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "warranty_disclaimer": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          }
        +        },
        +        "required": [
        +          "request_id",
        +          "issued_at",
        +          "tier"
        +        ],
        +        "type": "object"
        +      },
        +      "data": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Schema § 1.1 — the typed payload returned inside `MCPResponse[ComputeResult]`.\n\nFree-tier responses MUST omit `drawings` and `audit_trail` (the bridge\nenforces this); paid-tier responses populate both. `text_summary` is\nbounded to 2000 chars — keeps the LLM-facing summary token-cheap and\nforces longer narrative into BoQ row descriptions where it belongs.\n`warnings` is the non-fatal geometry advisory list (both tiers).",
        +            "properties": {
        +              "assembly_slug": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "audit_trail": {
        +                "anyOf": [
        +                  {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.7 — paid-tier audit-trail entry.\n\nOne entry per BoQ row; `boq_row_index` ties to the row position in\n`ComputeResult.boq_rows`. `derivation` is the human-readable formula\nwalk-through; `formula` is the optional formal expression.",
        +                      "properties": {
        +                        "boq_row_index": {
        +                          "minimum": 0,
        +                          "type": "integer"
        +                        },
        +                        "derivation": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "formula": {
        +                          "anyOf": [
        +                            {
        +                              "type": "string"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ],
        +                          "default": null
        +                        },
        +                        "id": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "parameters_referenced": {
        +                          "items": {
        +                            "type": "string"
        +                          },
        +                          "type": "array"
        +                        }
        +                      },
        +                      "required": [
        +                        "id",
        +                        "boq_row_index",
        +                        "derivation"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "boq_rows": {
        +                "items": {
        +                  "additionalProperties": false,
        +                  "description": "Schema § 1.3 — a single bill row in the requested standard's format.\n\n`description` is the non-verbatim functional description per spec § 13.9 /\n§ 15 invariant — NEVER reproduces a standard's verbatim clause text.\n`rate` / `amount` ship null because rates are commodity data the customer\nowns; the engine's job is the measurement, not the pricing.",
        +                  "properties": {
        +                    "amount": {
        +                      "anyOf": [
        +                        {
        +                          "type": "number"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "attribution": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "audit_id": {
        +                      "anyOf": [
        +                        {
        +                          "type": "string"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "description": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "quantity": {
        +                      "minimum": 0,
        +                      "type": "number"
        +                    },
        +                    "rate": {
        +                      "anyOf": [
        +                        {
        +                          "type": "number"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "unit": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "work_section": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    }
        +                  },
        +                  "required": [
        +                    "work_section",
        +                    "description",
        +                    "quantity",
        +                    "unit",
        +                    "attribution"
        +                  ],
        +                  "type": "object"
        +                },
        +                "type": "array"
        +              },
        +              "drawings": {
        +                "anyOf": [
        +                  {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.6 — paid-tier drawing artefact pointer.\n\n`url` is an R2-signed URL; expiry is carried in `_meta.deliverables.expires_at`\non the envelope (not duplicated here). `layers` is DXF-only; PDF/SVG\ncallers omit it.",
        +                      "properties": {
        +                        "drawing_type": {
        +                          "enum": [
        +                            "section",
        +                            "plan",
        +                            "elevation",
        +                            "isometric",
        +                            "detail"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "format": {
        +                          "enum": [
        +                            "DXF",
        +                            "PDF",
        +                            "SVG"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "layers": {
        +                          "anyOf": [
        +                            {
        +                              "items": {
        +                                "type": "string"
        +                              },
        +                              "type": "array"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ],
        +                          "default": null
        +                        },
        +                        "scale": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "sheet_size": {
        +                          "enum": [
        +                            "A1",
        +                            "A2",
        +                            "A3",
        +                            "A4"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "url": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "drawing_type",
        +                        "format",
        +                        "url",
        +                        "sheet_size",
        +                        "scale"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "parameters_used": {
        +                "additionalProperties": false,
        +                "description": "Schema § 1.2 — the parameter snapshot the engine actually used.\n\nSplits user-supplied values from engine defaults so customers can see\nwhich numbers came from them and which the engine filled in. Every\ndefaulted parameter SHOULD have a corresponding entry in `assumptions`\n— the bridge layer enforces this when wrapping engine output.",
        +                "properties": {
        +                  "assumptions": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "engine_defaults": {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  "resolved_from_description": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "additionalProperties": false,
        +                          "description": "Schema § 1.2 — a parameter resolved by the forgiving-input layer.\n\nPopulated by the Track B-Forgiving Haiku-4.5 resolution pass; until that\nlayer lands, instances are constructed only by tests. `source` distinguishes\nthe resolution path so customers can audit which fields were inferred.",
        +                          "properties": {
        +                            "confidence": {
        +                              "anyOf": [
        +                                {
        +                                  "enum": [
        +                                    "high",
        +                                    "medium",
        +                                    "low"
        +                                  ],
        +                                  "type": "string"
        +                                },
        +                                {
        +                                  "type": "null"
        +                                }
        +                              ],
        +                              "default": null
        +                            },
        +                            "field_name": {
        +                              "minLength": 1,
        +                              "type": "string"
        +                            },
        +                            "resolved_value": {},
        +                            "source": {
        +                              "enum": [
        +                                "description_field",
        +                                "haiku_resolution",
        +                                "engine_default"
        +                              ],
        +                              "type": "string"
        +                            }
        +                          },
        +                          "required": [
        +                            "field_name",
        +                            "resolved_value",
        +                            "source"
        +                          ],
        +                          "type": "object"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "user_supplied": {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  }
        +                },
        +                "type": "object"
        +              },
        +              "standard": {
        +                "enum": [
        +                  "CESMM4",
        +                  "NRM2",
        +                  "SMM7",
        +                  "MMHW"
        +                ],
        +                "type": "string"
        +              },
        +              "text_summary": {
        +                "maxLength": 2000,
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "totals_summary": {
        +                "additionalProperties": false,
        +                "description": "Schema § 1.4 — totals_summary as a typed wrapper around the free-form dict.\n\nWire shape is a flat object (`{\"concrete_m3\": {...}, \"rebar_t\": {...}}`).\nWe model it as `RootModel`-equivalent via `model_config(extra=\"allow\")`\n+ a single `__root__`-style `entries` dict. Pydantic v2 recommends\n`RootModel` for free-form roots; using a wrapper class keeps the import\nsurface uniform with the rest of this module.",
        +                "properties": {
        +                  "entries": {
        +                    "additionalProperties": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.4 — single material/work-class total entry.",
        +                      "properties": {
        +                        "quantity": {
        +                          "minimum": 0,
        +                          "type": "number"
        +                        },
        +                        "unit": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "quantity",
        +                        "unit"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "object"
        +                  }
        +                },
        +                "type": "object"
        +              },
        +              "warnings": {
        +                "items": {
        +                  "additionalProperties": false,
        +                  "description": "Schema § 1.8 — a non-fatal geometry advisory (56th-fire T2).\n\nThe wire projection of the engine's `core.GeometryWarning`. Advisory only:\na warning NEVER changes a measured quantity — it flags geometry that is\nvalid but likely a mistake (e.g. a stale dependent-height default). Present\non BOTH tiers — a correctness/safety signal, not a paid feature.",
        +                  "properties": {
        +                    "affected_params": {
        +                      "items": {
        +                        "type": "string"
        +                      },
        +                      "type": "array"
        +                    },
        +                    "code": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "detail": {
        +                      "additionalProperties": {
        +                        "type": "number"
        +                      },
        +                      "type": "object"
        +                    },
        +                    "message": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "severity": {
        +                      "enum": [
        +                        "info",
        +                        "advisory",
        +                        "caution"
        +                      ],
        +                      "type": "string"
        +                    }
        +                  },
        +                  "required": [
        +                    "code",
        +                    "severity",
        +                    "message"
        +                  ],
        +                  "type": "object"
        +                },
        +                "type": "array"
        +              }
        +            },
        +            "required": [
        +              "assembly_slug",
        +              "standard",
        +              "parameters_used",
        +              "boq_rows",
        +              "totals_summary",
        +              "text_summary"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      },
        +      "error": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        +            "properties": {
        +              "code": {
        +                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        +                "enum": [
        +                  "RATE_LIMIT_EXCEEDED",
        +                  "TIER_INSUFFICIENT",
        +                  "INVALID_INPUT",
        +                  "SCHEMA_VERSION_MISMATCH",
        +                  "SCHEMA_INVARIANT_VIOLATION",
        +                  "UPSTREAM_TIMEOUT",
        +                  "BACKEND_FAILURE",
        +                  "IP_BLOCKED",
        +                  "RESOURCE_NOT_FOUND",
        +                  "RENDER_FAILURE",
        +                  "OCR_LOW_CONFIDENCE",
        +                  "MANUAL_REVIEW_REQUIRED",
        +                  "ACCEPTANCE_REQUIRED",
        +                  "INVALID_TOKEN"
        +                ],
        +                "type": "string"
        +              },
        +              "details": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "message": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "recoverable": {
        +                "type": "boolean"
        +              },
        +              "retry_after_seconds": {
        +                "anyOf": [
        +                  {
        +                    "minimum": 0,
        +                    "type": "integer"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              }
        +            },
        +            "required": [
        +              "code",
        +              "message",
        +              "recoverable"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      }
        +    },
        +    "required": [
        +      "_meta"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "_meta": {
        +        "additionalProperties": false,
        +        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        +        "properties": {
        +          "deliverables": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        +                "properties": {
        +                  "docx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "dxf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "expires_at": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  },
        +                  "pdf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "xlsx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "expires_at"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "document_id": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "issued_at": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "rate_limit_remaining": {
        +            "anyOf": [
        +              {
        +                "minimum": 0,
        +                "type": "integer"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "request_id": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "schema_version": {
        +            "const": "1.0.0",
        +            "default": "1.0.0",
        +            "type": "string"
        +          },
        +          "scope_boundary": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        +                "properties": {
        +                  "not_in_scope": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "produced": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "recommended_companions": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "type": "string"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "produced",
        +                  "not_in_scope"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tier": {
        +            "enum": [
        +              "free",
        +              "paid"
        +            ],
        +            "type": "string"
        +          },
        +          "tier_upgrade": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        +                "properties": {
        +                  "available_tiers": {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        +                      "properties": {
        +                        "billing": {
        +                          "enum": [
        +                            "one_off",
        +                            "monthly",
        +                            "annual"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "currency": {
        +                          "enum": [
        +                            "GBP",
        +                            "SGD",
        +                            "EUR",
        +                            "USD",
        +                            "CAD",
        +                            "AUD",
        +                            "NZD",
        +                            "MYR"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "display_name": {
        +                          "type": "string"
        +                        },
        +                        "price_local": {
        +                          "type": "number"
        +                        },
        +                        "tier_slug": {
        +                          "enum": [
        +                            "7_day_pass",
        +                            "solo",
        +                            "studio",
        +                            "practice"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "unlock_summary": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "tier_slug",
        +                        "display_name",
        +                        "price_local",
        +                        "currency",
        +                        "billing",
        +                        "unlock_summary"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "current_tier": {
        +                    "const": "free",
        +                    "default": "free",
        +                    "type": "string"
        +                  },
        +                  "pass_credit": {
        +                    "anyOf": [
        +                      {
        +                        "additionalProperties": false,
        +                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        +                        "properties": {
        +                          "amount_local": {
        +                            "type": "number"
        +                          },
        +                          "applies_to": {
        +                            "const": "solo_first_month",
        +                            "default": "solo_first_month",
        +                            "type": "string"
        +                          },
        +                          "currency": {
        +                            "type": "string"
        +                          },
        +                          "redeemable_until": {
        +                            "type": "string"
        +                          }
        +                        },
        +                        "required": [
        +                          "amount_local",
        +                          "currency",
        +                          "redeemable_until"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "pricing_url": {
        +                    "default": "https://civilquants.com/pricing",
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "available_tiers"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tos_url": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "upgrade_hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "warranty_disclaimer": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          }
        +        },
        +        "required": [
        +          "request_id",
        +          "issued_at",
        +          "tier"
        +        ],
        +        "type": "object"
        +      },
        +      "data": {
        +        "default": null,
        +        "title": "Data"
        +      },
        +      "error": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        +            "properties": {
        +              "code": {
        +                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        +                "enum": [
        +                  "RATE_LIMIT_EXCEEDED",
        +                  "TIER_INSUFFICIENT",
        +                  "INVALID_INPUT",
        +                  "SCHEMA_VERSION_MISMATCH",
        +                  "SCHEMA_INVARIANT_VIOLATION",
        +                  "UPSTREAM_TIMEOUT",
        +                  "BACKEND_FAILURE",
        +                  "IP_BLOCKED",
        +                  "RESOURCE_NOT_FOUND",
        +                  "RENDER_FAILURE",
        +                  "OCR_LOW_CONFIDENCE",
        +                  "MANUAL_REVIEW_REQUIRED",
        +                  "ACCEPTANCE_REQUIRED",
        +                  "INVALID_TOKEN"
        +                ],
        +                "type": "string"
        +              },
        +              "details": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "message": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "recoverable": {
        +                "type": "boolean"
        +              },
        +              "retry_after_seconds": {
        +                "anyOf": [
        +                  {
        +                    "minimum": 0,
        +                    "type": "integer"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              }
        +            },
        +            "required": [
        +              "code",
        +              "message",
        +              "recoverable"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      }
        +    },
        +    "required": [
        +      "_meta"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedcompute_lighting_column1 field changed
      • changedOutput schema / properties / result / anyOf
        Previous value: -[
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "_meta": {
        -        "additionalProperties": false,
        -        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        -        "properties": {
        -          "deliverables": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        -                "properties": {
        -                  "docx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "dxf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "expires_at": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  },
        -                  "pdf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "xlsx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "expires_at"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "document_id": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "issued_at": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "rate_limit_remaining": {
        -            "anyOf": [
        -              {
        -                "minimum": 0,
        -                "type": "integer"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "request_id": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "schema_version": {
        -            "const": "1.0.0",
        -            "default": "1.0.0",
        -            "type": "string"
        -          },
        -          "scope_boundary": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        -                "properties": {
        -                  "not_in_scope": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "produced": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "recommended_companions": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "type": "string"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "produced",
        -                  "not_in_scope"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tier": {
        -            "enum": [
        -              "free",
        -              "paid"
        -            ],
        -            "type": "string"
        -          },
        -          "tier_upgrade": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        -                "properties": {
        -                  "available_tiers": {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        -                      "properties": {
        -                        "billing": {
        -                          "enum": [
        -                            "one_off",
        -                            "monthly",
        -                            "annual"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "currency": {
        -                          "enum": [
        -                            "GBP",
        -                            "SGD",
        -                            "EUR",
        -                            "USD",
        -                            "CAD",
        -                            "AUD",
        -                            "NZD",
        -                            "MYR"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "display_name": {
        -                          "type": "string"
        -                        },
        -                        "price_local": {
        -                          "type": "number"
        -                        },
        -                        "tier_slug": {
        -                          "enum": [
        -                            "7_day_pass",
        -                            "solo",
        -                            "studio",
        -                            "practice"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "unlock_summary": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "tier_slug",
        -                        "display_name",
        -                        "price_local",
        -                        "currency",
        -                        "billing",
        -                        "unlock_summary"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "current_tier": {
        -                    "const": "free",
        -                    "default": "free",
        -                    "type": "string"
        -                  },
        -                  "pass_credit": {
        -                    "anyOf": [
        -                      {
        -                        "additionalProperties": false,
        -                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        -                        "properties": {
        -                          "amount_local": {
        -                            "type": "number"
        -                          },
        -                          "applies_to": {
        -                            "const": "solo_first_month",
        -                            "default": "solo_first_month",
        -                            "type": "string"
        -                          },
        -                          "currency": {
        -                            "type": "string"
        -                          },
        -                          "redeemable_until": {
        -                            "type": "string"
        -                          }
        -                        },
        -                        "required": [
        -                          "amount_local",
        -                          "currency",
        -                          "redeemable_until"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "pricing_url": {
        -                    "default": "https://civilquants.com/pricing",
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "available_tiers"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tos_url": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "upgrade_hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "warranty_disclaimer": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          }
        -        },
        -        "required": [
        -          "request_id",
        -          "issued_at",
        -          "tier"
        -        ],
        -        "type": "object"
        -      },
        -      "data": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Schema § 1.1 — the typed payload returned inside `MCPResponse[ComputeResult]`.\n\nFree-tier responses MUST omit `drawings` and `audit_trail` (the bridge\nenforces this); paid-tier responses populate both. `text_summary` is\nbounded to 2000 chars — keeps the LLM-facing summary token-cheap and\nforces longer narrative into BoQ row descriptions where it belongs.",
        -            "properties": {
        -              "assembly_slug": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "audit_trail": {
        -                "anyOf": [
        -                  {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.7 — paid-tier audit-trail entry.\n\nOne entry per BoQ row; `boq_row_index` ties to the row position in\n`ComputeResult.boq_rows`. `derivation` is the human-readable formula\nwalk-through; `formula` is the optional formal expression.",
        -                      "properties": {
        -                        "boq_row_index": {
        -                          "minimum": 0,
        -                          "type": "integer"
        -                        },
        -                        "derivation": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "formula": {
        -                          "anyOf": [
        -                            {
        -                              "type": "string"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ],
        -                          "default": null
        -                        },
        -                        "id": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "parameters_referenced": {
        -                          "items": {
        -                            "type": "string"
        -                          },
        -                          "type": "array"
        -                        }
        -                      },
        -                      "required": [
        -                        "id",
        -                        "boq_row_index",
        -                        "derivation"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "boq_rows": {
        -                "items": {
        -                  "additionalProperties": false,
        -                  "description": "Schema § 1.3 — a single bill row in the requested standard's format.\n\n`description` is the non-verbatim functional description per spec § 13.9 /\n§ 15 invariant — NEVER reproduces a standard's verbatim clause text.\n`rate` / `amount` ship null because rates are commodity data the customer\nowns; the engine's job is the measurement, not the pricing.",
        -                  "properties": {
        -                    "amount": {
        -                      "anyOf": [
        -                        {
        -                          "type": "number"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "attribution": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "audit_id": {
        -                      "anyOf": [
        -                        {
        -                          "type": "string"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "description": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "quantity": {
        -                      "minimum": 0,
        -                      "type": "number"
        -                    },
        -                    "rate": {
        -                      "anyOf": [
        -                        {
        -                          "type": "number"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "unit": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "work_section": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    }
        -                  },
        -                  "required": [
        -                    "work_section",
        -                    "description",
        -                    "quantity",
        -                    "unit",
        -                    "attribution"
        -                  ],
        -                  "type": "object"
        -                },
        -                "type": "array"
        -              },
        -              "drawings": {
        -                "anyOf": [
        -                  {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.6 — paid-tier drawing artefact pointer.\n\n`url` is an R2-signed URL; expiry is carried in `_meta.deliverables.expires_at`\non the envelope (not duplicated here). `layers` is DXF-only; PDF/SVG\ncallers omit it.",
        -                      "properties": {
        -                        "drawing_type": {
        -                          "enum": [
        -                            "section",
        -                            "plan",
        -                            "elevation",
        -                            "isometric",
        -                            "detail"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "format": {
        -                          "enum": [
        -                            "DXF",
        -                            "PDF",
        -                            "SVG"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "layers": {
        -                          "anyOf": [
        -                            {
        -                              "items": {
        -                                "type": "string"
        -                              },
        -                              "type": "array"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ],
        -                          "default": null
        -                        },
        -                        "scale": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "sheet_size": {
        -                          "enum": [
        -                            "A1",
        -                            "A2",
        -                            "A3",
        -                            "A4"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "url": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "drawing_type",
        -                        "format",
        -                        "url",
        -                        "sheet_size",
        -                        "scale"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "parameters_used": {
        -                "additionalProperties": false,
        -                "description": "Schema § 1.2 — the parameter snapshot the engine actually used.\n\nSplits user-supplied values from engine defaults so customers can see\nwhich numbers came from them and which the engine filled in. Every\ndefaulted parameter SHOULD have a corresponding entry in `assumptions`\n— the bridge layer enforces this when wrapping engine output.",
        -                "properties": {
        -                  "assumptions": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "engine_defaults": {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  "resolved_from_description": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "additionalProperties": false,
        -                          "description": "Schema § 1.2 — a parameter resolved by the forgiving-input layer.\n\nPopulated by the Track B-Forgiving Haiku-4.5 resolution pass; until that\nlayer lands, instances are constructed only by tests. `source` distinguishes\nthe resolution path so customers can audit which fields were inferred.",
        -                          "properties": {
        -                            "confidence": {
        -                              "anyOf": [
        -                                {
        -                                  "enum": [
        -                                    "high",
        -                                    "medium",
        -                                    "low"
        -                                  ],
        -                                  "type": "string"
        -                                },
        -                                {
        -                                  "type": "null"
        -                                }
        -                              ],
        -                              "default": null
        -                            },
        -                            "field_name": {
        -                              "minLength": 1,
        -                              "type": "string"
        -                            },
        -                            "resolved_value": {},
        -                            "source": {
        -                              "enum": [
        -                                "description_field",
        -                                "haiku_resolution",
        -                                "engine_default"
        -                              ],
        -                              "type": "string"
        -                            }
        -                          },
        -                          "required": [
        -                            "field_name",
        -                            "resolved_value",
        -                            "source"
        -                          ],
        -                          "type": "object"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "user_supplied": {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  }
        -                },
        -                "type": "object"
        -              },
        -              "standard": {
        -                "enum": [
        -                  "CESMM4",
        -                  "NRM2",
        -                  "SMM7",
        -                  "MMHW"
        -                ],
        -                "type": "string"
        -              },
        -              "text_summary": {
        -                "maxLength": 2000,
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "totals_summary": {
        -                "additionalProperties": false,
        -                "description": "Schema § 1.4 — totals_summary as a typed wrapper around the free-form dict.\n\nWire shape is a flat object (`{\"concrete_m3\": {...}, \"rebar_t\": {...}}`).\nWe model it as `RootModel`-equivalent via `model_config(extra=\"allow\")`\n+ a single `__root__`-style `entries` dict. Pydantic v2 recommends\n`RootModel` for free-form roots; using a wrapper class keeps the import\nsurface uniform with the rest of this module.",
        -                "properties": {
        -                  "entries": {
        -                    "additionalProperties": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.4 — single material/work-class total entry.",
        -                      "properties": {
        -                        "quantity": {
        -                          "minimum": 0,
        -                          "type": "number"
        -                        },
        -                        "unit": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "quantity",
        -                        "unit"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "object"
        -                  }
        -                },
        -                "type": "object"
        -              }
        -            },
        -            "required": [
        -              "assembly_slug",
        -              "standard",
        -              "parameters_used",
        -              "boq_rows",
        -              "totals_summary",
        -              "text_summary"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      },
        -      "error": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        -            "properties": {
        -              "code": {
        -                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        -                "enum": [
        -                  "RATE_LIMIT_EXCEEDED",
        -                  "TIER_INSUFFICIENT",
        -                  "INVALID_INPUT",
        -                  "SCHEMA_VERSION_MISMATCH",
        -                  "SCHEMA_INVARIANT_VIOLATION",
        -                  "UPSTREAM_TIMEOUT",
        -                  "BACKEND_FAILURE",
        -                  "IP_BLOCKED",
        -                  "RESOURCE_NOT_FOUND",
        -                  "RENDER_FAILURE",
        -                  "OCR_LOW_CONFIDENCE",
        -                  "MANUAL_REVIEW_REQUIRED",
        -                  "ACCEPTANCE_REQUIRED",
        -                  "INVALID_TOKEN"
        -                ],
        -                "type": "string"
        -              },
        -              "details": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "message": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "recoverable": {
        -                "type": "boolean"
        -              },
        -              "retry_after_seconds": {
        -                "anyOf": [
        -                  {
        -                    "minimum": 0,
        -                    "type": "integer"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              }
        -            },
        -            "required": [
        -              "code",
        -              "message",
        -              "recoverable"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      }
        -    },
        -    "required": [
        -      "_meta"
        -    ],
        -    "type": "object"
        -  },
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "_meta": {
        -        "additionalProperties": false,
        -        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        -        "properties": {
        -          "deliverables": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        -                "properties": {
        -                  "docx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "dxf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "expires_at": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  },
        -                  "pdf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "xlsx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "expires_at"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "document_id": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "issued_at": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "rate_limit_remaining": {
        -            "anyOf": [
        -              {
        -                "minimum": 0,
        -                "type": "integer"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "request_id": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "schema_version": {
        -            "const": "1.0.0",
        -            "default": "1.0.0",
        -            "type": "string"
        -          },
        -          "scope_boundary": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        -                "properties": {
        -                  "not_in_scope": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "produced": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "recommended_companions": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "type": "string"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "produced",
        -                  "not_in_scope"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tier": {
        -            "enum": [
        -              "free",
        -              "paid"
        -            ],
        -            "type": "string"
        -          },
        -          "tier_upgrade": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        -                "properties": {
        -                  "available_tiers": {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        -                      "properties": {
        -                        "billing": {
        -                          "enum": [
        -                            "one_off",
        -                            "monthly",
        -                            "annual"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "currency": {
        -                          "enum": [
        -                            "GBP",
        -                            "SGD",
        -                            "EUR",
        -                            "USD",
        -                            "CAD",
        -                            "AUD",
        -                            "NZD",
        -                            "MYR"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "display_name": {
        -                          "type": "string"
        -                        },
        -                        "price_local": {
        -                          "type": "number"
        -                        },
        -                        "tier_slug": {
        -                          "enum": [
        -                            "7_day_pass",
        -                            "solo",
        -                            "studio",
        -                            "practice"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "unlock_summary": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "tier_slug",
        -                        "display_name",
        -                        "price_local",
        -                        "currency",
        -                        "billing",
        -                        "unlock_summary"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "current_tier": {
        -                    "const": "free",
        -                    "default": "free",
        -                    "type": "string"
        -                  },
        -                  "pass_credit": {
        -                    "anyOf": [
        -                      {
        -                        "additionalProperties": false,
        -                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        -                        "properties": {
        -                          "amount_local": {
        -                            "type": "number"
        -                          },
        -                          "applies_to": {
        -                            "const": "solo_first_month",
        -                            "default": "solo_first_month",
        -                            "type": "string"
        -                          },
        -                          "currency": {
        -                            "type": "string"
        -                          },
        -                          "redeemable_until": {
        -                            "type": "string"
        -                          }
        -                        },
        -                        "required": [
        -                          "amount_local",
        -                          "currency",
        -                          "redeemable_until"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "pricing_url": {
        -                    "default": "https://civilquants.com/pricing",
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "available_tiers"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tos_url": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "upgrade_hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "warranty_disclaimer": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          }
        -        },
        -        "required": [
        -          "request_id",
        -          "issued_at",
        -          "tier"
        -        ],
        -        "type": "object"
        -      },
        -      "data": {
        -        "default": null,
        -        "title": "Data"
        -      },
        -      "error": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        -            "properties": {
        -              "code": {
        -                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        -                "enum": [
        -                  "RATE_LIMIT_EXCEEDED",
        -                  "TIER_INSUFFICIENT",
        -                  "INVALID_INPUT",
        -                  "SCHEMA_VERSION_MISMATCH",
        -                  "SCHEMA_INVARIANT_VIOLATION",
        -                  "UPSTREAM_TIMEOUT",
        -                  "BACKEND_FAILURE",
        -                  "IP_BLOCKED",
        -                  "RESOURCE_NOT_FOUND",
        -                  "RENDER_FAILURE",
        -                  "OCR_LOW_CONFIDENCE",
        -                  "MANUAL_REVIEW_REQUIRED",
        -                  "ACCEPTANCE_REQUIRED",
        -                  "INVALID_TOKEN"
        -                ],
        -                "type": "string"
        -              },
        -              "details": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "message": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "recoverable": {
        -                "type": "boolean"
        -              },
        -              "retry_after_seconds": {
        -                "anyOf": [
        -                  {
        -                    "minimum": 0,
        -                    "type": "integer"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              }
        -            },
        -            "required": [
        -              "code",
        -              "message",
        -              "recoverable"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      }
        -    },
        -    "required": [
        -      "_meta"
        -    ],
        -    "type": "object"
        -  }
        -]New value: +[
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "_meta": {
        +        "additionalProperties": false,
        +        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        +        "properties": {
        +          "deliverables": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        +                "properties": {
        +                  "docx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "dxf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "expires_at": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  },
        +                  "pdf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "xlsx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "expires_at"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "document_id": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "issued_at": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "rate_limit_remaining": {
        +            "anyOf": [
        +              {
        +                "minimum": 0,
        +                "type": "integer"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "request_id": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "schema_version": {
        +            "const": "1.0.0",
        +            "default": "1.0.0",
        +            "type": "string"
        +          },
        +          "scope_boundary": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        +                "properties": {
        +                  "not_in_scope": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "produced": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "recommended_companions": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "type": "string"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "produced",
        +                  "not_in_scope"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tier": {
        +            "enum": [
        +              "free",
        +              "paid"
        +            ],
        +            "type": "string"
        +          },
        +          "tier_upgrade": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        +                "properties": {
        +                  "available_tiers": {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        +                      "properties": {
        +                        "billing": {
        +                          "enum": [
        +                            "one_off",
        +                            "monthly",
        +                            "annual"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "currency": {
        +                          "enum": [
        +                            "GBP",
        +                            "SGD",
        +                            "EUR",
        +                            "USD",
        +                            "CAD",
        +                            "AUD",
        +                            "NZD",
        +                            "MYR"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "display_name": {
        +                          "type": "string"
        +                        },
        +                        "price_local": {
        +                          "type": "number"
        +                        },
        +                        "tier_slug": {
        +                          "enum": [
        +                            "7_day_pass",
        +                            "solo",
        +                            "studio",
        +                            "practice"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "unlock_summary": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "tier_slug",
        +                        "display_name",
        +                        "price_local",
        +                        "currency",
        +                        "billing",
        +                        "unlock_summary"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "current_tier": {
        +                    "const": "free",
        +                    "default": "free",
        +                    "type": "string"
        +                  },
        +                  "pass_credit": {
        +                    "anyOf": [
        +                      {
        +                        "additionalProperties": false,
        +                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        +                        "properties": {
        +                          "amount_local": {
        +                            "type": "number"
        +                          },
        +                          "applies_to": {
        +                            "const": "solo_first_month",
        +                            "default": "solo_first_month",
        +                            "type": "string"
        +                          },
        +                          "currency": {
        +                            "type": "string"
        +                          },
        +                          "redeemable_until": {
        +                            "type": "string"
        +                          }
        +                        },
        +                        "required": [
        +                          "amount_local",
        +                          "currency",
        +                          "redeemable_until"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "pricing_url": {
        +                    "default": "https://civilquants.com/pricing",
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "available_tiers"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tos_url": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "upgrade_hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "warranty_disclaimer": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          }
        +        },
        +        "required": [
        +          "request_id",
        +          "issued_at",
        +          "tier"
        +        ],
        +        "type": "object"
        +      },
        +      "data": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Schema § 1.1 — the typed payload returned inside `MCPResponse[ComputeResult]`.\n\nFree-tier responses MUST omit `drawings` and `audit_trail` (the bridge\nenforces this); paid-tier responses populate both. `text_summary` is\nbounded to 2000 chars — keeps the LLM-facing summary token-cheap and\nforces longer narrative into BoQ row descriptions where it belongs.\n`warnings` is the non-fatal geometry advisory list (both tiers).",
        +            "properties": {
        +              "assembly_slug": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "audit_trail": {
        +                "anyOf": [
        +                  {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.7 — paid-tier audit-trail entry.\n\nOne entry per BoQ row; `boq_row_index` ties to the row position in\n`ComputeResult.boq_rows`. `derivation` is the human-readable formula\nwalk-through; `formula` is the optional formal expression.",
        +                      "properties": {
        +                        "boq_row_index": {
        +                          "minimum": 0,
        +                          "type": "integer"
        +                        },
        +                        "derivation": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "formula": {
        +                          "anyOf": [
        +                            {
        +                              "type": "string"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ],
        +                          "default": null
        +                        },
        +                        "id": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "parameters_referenced": {
        +                          "items": {
        +                            "type": "string"
        +                          },
        +                          "type": "array"
        +                        }
        +                      },
        +                      "required": [
        +                        "id",
        +                        "boq_row_index",
        +                        "derivation"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "boq_rows": {
        +                "items": {
        +                  "additionalProperties": false,
        +                  "description": "Schema § 1.3 — a single bill row in the requested standard's format.\n\n`description` is the non-verbatim functional description per spec § 13.9 /\n§ 15 invariant — NEVER reproduces a standard's verbatim clause text.\n`rate` / `amount` ship null because rates are commodity data the customer\nowns; the engine's job is the measurement, not the pricing.",
        +                  "properties": {
        +                    "amount": {
        +                      "anyOf": [
        +                        {
        +                          "type": "number"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "attribution": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "audit_id": {
        +                      "anyOf": [
        +                        {
        +                          "type": "string"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "description": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "quantity": {
        +                      "minimum": 0,
        +                      "type": "number"
        +                    },
        +                    "rate": {
        +                      "anyOf": [
        +                        {
        +                          "type": "number"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "unit": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "work_section": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    }
        +                  },
        +                  "required": [
        +                    "work_section",
        +                    "description",
        +                    "quantity",
        +                    "unit",
        +                    "attribution"
        +                  ],
        +                  "type": "object"
        +                },
        +                "type": "array"
        +              },
        +              "drawings": {
        +                "anyOf": [
        +                  {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.6 — paid-tier drawing artefact pointer.\n\n`url` is an R2-signed URL; expiry is carried in `_meta.deliverables.expires_at`\non the envelope (not duplicated here). `layers` is DXF-only; PDF/SVG\ncallers omit it.",
        +                      "properties": {
        +                        "drawing_type": {
        +                          "enum": [
        +                            "section",
        +                            "plan",
        +                            "elevation",
        +                            "isometric",
        +                            "detail"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "format": {
        +                          "enum": [
        +                            "DXF",
        +                            "PDF",
        +                            "SVG"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "layers": {
        +                          "anyOf": [
        +                            {
        +                              "items": {
        +                                "type": "string"
        +                              },
        +                              "type": "array"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ],
        +                          "default": null
        +                        },
        +                        "scale": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "sheet_size": {
        +                          "enum": [
        +                            "A1",
        +                            "A2",
        +                            "A3",
        +                            "A4"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "url": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "drawing_type",
        +                        "format",
        +                        "url",
        +                        "sheet_size",
        +                        "scale"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "parameters_used": {
        +                "additionalProperties": false,
        +                "description": "Schema § 1.2 — the parameter snapshot the engine actually used.\n\nSplits user-supplied values from engine defaults so customers can see\nwhich numbers came from them and which the engine filled in. Every\ndefaulted parameter SHOULD have a corresponding entry in `assumptions`\n— the bridge layer enforces this when wrapping engine output.",
        +                "properties": {
        +                  "assumptions": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "engine_defaults": {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  "resolved_from_description": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "additionalProperties": false,
        +                          "description": "Schema § 1.2 — a parameter resolved by the forgiving-input layer.\n\nPopulated by the Track B-Forgiving Haiku-4.5 resolution pass; until that\nlayer lands, instances are constructed only by tests. `source` distinguishes\nthe resolution path so customers can audit which fields were inferred.",
        +                          "properties": {
        +                            "confidence": {
        +                              "anyOf": [
        +                                {
        +                                  "enum": [
        +                                    "high",
        +                                    "medium",
        +                                    "low"
        +                                  ],
        +                                  "type": "string"
        +                                },
        +                                {
        +                                  "type": "null"
        +                                }
        +                              ],
        +                              "default": null
        +                            },
        +                            "field_name": {
        +                              "minLength": 1,
        +                              "type": "string"
        +                            },
        +                            "resolved_value": {},
        +                            "source": {
        +                              "enum": [
        +                                "description_field",
        +                                "haiku_resolution",
        +                                "engine_default"
        +                              ],
        +                              "type": "string"
        +                            }
        +                          },
        +                          "required": [
        +                            "field_name",
        +                            "resolved_value",
        +                            "source"
        +                          ],
        +                          "type": "object"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "user_supplied": {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  }
        +                },
        +                "type": "object"
        +              },
        +              "standard": {
        +                "enum": [
        +                  "CESMM4",
        +                  "NRM2",
        +                  "SMM7",
        +                  "MMHW"
        +                ],
        +                "type": "string"
        +              },
        +              "text_summary": {
        +                "maxLength": 2000,
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "totals_summary": {
        +                "additionalProperties": false,
        +                "description": "Schema § 1.4 — totals_summary as a typed wrapper around the free-form dict.\n\nWire shape is a flat object (`{\"concrete_m3\": {...}, \"rebar_t\": {...}}`).\nWe model it as `RootModel`-equivalent via `model_config(extra=\"allow\")`\n+ a single `__root__`-style `entries` dict. Pydantic v2 recommends\n`RootModel` for free-form roots; using a wrapper class keeps the import\nsurface uniform with the rest of this module.",
        +                "properties": {
        +                  "entries": {
        +                    "additionalProperties": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.4 — single material/work-class total entry.",
        +                      "properties": {
        +                        "quantity": {
        +                          "minimum": 0,
        +                          "type": "number"
        +                        },
        +                        "unit": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "quantity",
        +                        "unit"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "object"
        +                  }
        +                },
        +                "type": "object"
        +              },
        +              "warnings": {
        +                "items": {
        +                  "additionalProperties": false,
        +                  "description": "Schema § 1.8 — a non-fatal geometry advisory (56th-fire T2).\n\nThe wire projection of the engine's `core.GeometryWarning`. Advisory only:\na warning NEVER changes a measured quantity — it flags geometry that is\nvalid but likely a mistake (e.g. a stale dependent-height default). Present\non BOTH tiers — a correctness/safety signal, not a paid feature.",
        +                  "properties": {
        +                    "affected_params": {
        +                      "items": {
        +                        "type": "string"
        +                      },
        +                      "type": "array"
        +                    },
        +                    "code": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "detail": {
        +                      "additionalProperties": {
        +                        "type": "number"
        +                      },
        +                      "type": "object"
        +                    },
        +                    "message": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "severity": {
        +                      "enum": [
        +                        "info",
        +                        "advisory",
        +                        "caution"
        +                      ],
        +                      "type": "string"
        +                    }
        +                  },
        +                  "required": [
        +                    "code",
        +                    "severity",
        +                    "message"
        +                  ],
        +                  "type": "object"
        +                },
        +                "type": "array"
        +              }
        +            },
        +            "required": [
        +              "assembly_slug",
        +              "standard",
        +              "parameters_used",
        +              "boq_rows",
        +              "totals_summary",
        +              "text_summary"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      },
        +      "error": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        +            "properties": {
        +              "code": {
        +                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        +                "enum": [
        +                  "RATE_LIMIT_EXCEEDED",
        +                  "TIER_INSUFFICIENT",
        +                  "INVALID_INPUT",
        +                  "SCHEMA_VERSION_MISMATCH",
        +                  "SCHEMA_INVARIANT_VIOLATION",
        +                  "UPSTREAM_TIMEOUT",
        +                  "BACKEND_FAILURE",
        +                  "IP_BLOCKED",
        +                  "RESOURCE_NOT_FOUND",
        +                  "RENDER_FAILURE",
        +                  "OCR_LOW_CONFIDENCE",
        +                  "MANUAL_REVIEW_REQUIRED",
        +                  "ACCEPTANCE_REQUIRED",
        +                  "INVALID_TOKEN"
        +                ],
        +                "type": "string"
        +              },
        +              "details": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "message": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "recoverable": {
        +                "type": "boolean"
        +              },
        +              "retry_after_seconds": {
        +                "anyOf": [
        +                  {
        +                    "minimum": 0,
        +                    "type": "integer"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              }
        +            },
        +            "required": [
        +              "code",
        +              "message",
        +              "recoverable"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      }
        +    },
        +    "required": [
        +      "_meta"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "_meta": {
        +        "additionalProperties": false,
        +        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        +        "properties": {
        +          "deliverables": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        +                "properties": {
        +                  "docx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "dxf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "expires_at": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  },
        +                  "pdf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "xlsx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "expires_at"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "document_id": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "issued_at": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "rate_limit_remaining": {
        +            "anyOf": [
        +              {
        +                "minimum": 0,
        +                "type": "integer"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "request_id": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "schema_version": {
        +            "const": "1.0.0",
        +            "default": "1.0.0",
        +            "type": "string"
        +          },
        +          "scope_boundary": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        +                "properties": {
        +                  "not_in_scope": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "produced": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "recommended_companions": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "type": "string"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "produced",
        +                  "not_in_scope"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tier": {
        +            "enum": [
        +              "free",
        +              "paid"
        +            ],
        +            "type": "string"
        +          },
        +          "tier_upgrade": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        +                "properties": {
        +                  "available_tiers": {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        +                      "properties": {
        +                        "billing": {
        +                          "enum": [
        +                            "one_off",
        +                            "monthly",
        +                            "annual"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "currency": {
        +                          "enum": [
        +                            "GBP",
        +                            "SGD",
        +                            "EUR",
        +                            "USD",
        +                            "CAD",
        +                            "AUD",
        +                            "NZD",
        +                            "MYR"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "display_name": {
        +                          "type": "string"
        +                        },
        +                        "price_local": {
        +                          "type": "number"
        +                        },
        +                        "tier_slug": {
        +                          "enum": [
        +                            "7_day_pass",
        +                            "solo",
        +                            "studio",
        +                            "practice"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "unlock_summary": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "tier_slug",
        +                        "display_name",
        +                        "price_local",
        +                        "currency",
        +                        "billing",
        +                        "unlock_summary"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "current_tier": {
        +                    "const": "free",
        +                    "default": "free",
        +                    "type": "string"
        +                  },
        +                  "pass_credit": {
        +                    "anyOf": [
        +                      {
        +                        "additionalProperties": false,
        +                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        +                        "properties": {
        +                          "amount_local": {
        +                            "type": "number"
        +                          },
        +                          "applies_to": {
        +                            "const": "solo_first_month",
        +                            "default": "solo_first_month",
        +                            "type": "string"
        +                          },
        +                          "currency": {
        +                            "type": "string"
        +                          },
        +                          "redeemable_until": {
        +                            "type": "string"
        +                          }
        +                        },
        +                        "required": [
        +                          "amount_local",
        +                          "currency",
        +                          "redeemable_until"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "pricing_url": {
        +                    "default": "https://civilquants.com/pricing",
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "available_tiers"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tos_url": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "upgrade_hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "warranty_disclaimer": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          }
        +        },
        +        "required": [
        +          "request_id",
        +          "issued_at",
        +          "tier"
        +        ],
        +        "type": "object"
        +      },
        +      "data": {
        +        "default": null,
        +        "title": "Data"
        +      },
        +      "error": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        +            "properties": {
        +              "code": {
        +                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        +                "enum": [
        +                  "RATE_LIMIT_EXCEEDED",
        +                  "TIER_INSUFFICIENT",
        +                  "INVALID_INPUT",
        +                  "SCHEMA_VERSION_MISMATCH",
        +                  "SCHEMA_INVARIANT_VIOLATION",
        +                  "UPSTREAM_TIMEOUT",
        +                  "BACKEND_FAILURE",
        +                  "IP_BLOCKED",
        +                  "RESOURCE_NOT_FOUND",
        +                  "RENDER_FAILURE",
        +                  "OCR_LOW_CONFIDENCE",
        +                  "MANUAL_REVIEW_REQUIRED",
        +                  "ACCEPTANCE_REQUIRED",
        +                  "INVALID_TOKEN"
        +                ],
        +                "type": "string"
        +              },
        +              "details": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "message": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "recoverable": {
        +                "type": "boolean"
        +              },
        +              "retry_after_seconds": {
        +                "anyOf": [
        +                  {
        +                    "minimum": 0,
        +                    "type": "integer"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              }
        +            },
        +            "required": [
        +              "code",
        +              "message",
        +              "recoverable"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      }
        +    },
        +    "required": [
        +      "_meta"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedcompute_manhole1 field changed
      • changedOutput schema / properties / result / anyOf
        Previous value: -[
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "_meta": {
        -        "additionalProperties": false,
        -        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        -        "properties": {
        -          "deliverables": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        -                "properties": {
        -                  "docx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "dxf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "expires_at": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  },
        -                  "pdf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "xlsx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "expires_at"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "document_id": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "issued_at": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "rate_limit_remaining": {
        -            "anyOf": [
        -              {
        -                "minimum": 0,
        -                "type": "integer"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "request_id": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "schema_version": {
        -            "const": "1.0.0",
        -            "default": "1.0.0",
        -            "type": "string"
        -          },
        -          "scope_boundary": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        -                "properties": {
        -                  "not_in_scope": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "produced": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "recommended_companions": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "type": "string"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "produced",
        -                  "not_in_scope"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tier": {
        -            "enum": [
        -              "free",
        -              "paid"
        -            ],
        -            "type": "string"
        -          },
        -          "tier_upgrade": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        -                "properties": {
        -                  "available_tiers": {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        -                      "properties": {
        -                        "billing": {
        -                          "enum": [
        -                            "one_off",
        -                            "monthly",
        -                            "annual"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "currency": {
        -                          "enum": [
        -                            "GBP",
        -                            "SGD",
        -                            "EUR",
        -                            "USD",
        -                            "CAD",
        -                            "AUD",
        -                            "NZD",
        -                            "MYR"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "display_name": {
        -                          "type": "string"
        -                        },
        -                        "price_local": {
        -                          "type": "number"
        -                        },
        -                        "tier_slug": {
        -                          "enum": [
        -                            "7_day_pass",
        -                            "solo",
        -                            "studio",
        -                            "practice"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "unlock_summary": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "tier_slug",
        -                        "display_name",
        -                        "price_local",
        -                        "currency",
        -                        "billing",
        -                        "unlock_summary"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "current_tier": {
        -                    "const": "free",
        -                    "default": "free",
        -                    "type": "string"
        -                  },
        -                  "pass_credit": {
        -                    "anyOf": [
        -                      {
        -                        "additionalProperties": false,
        -                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        -                        "properties": {
        -                          "amount_local": {
        -                            "type": "number"
        -                          },
        -                          "applies_to": {
        -                            "const": "solo_first_month",
        -                            "default": "solo_first_month",
        -                            "type": "string"
        -                          },
        -                          "currency": {
        -                            "type": "string"
        -                          },
        -                          "redeemable_until": {
        -                            "type": "string"
        -                          }
        -                        },
        -                        "required": [
        -                          "amount_local",
        -                          "currency",
        -                          "redeemable_until"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "pricing_url": {
        -                    "default": "https://civilquants.com/pricing",
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "available_tiers"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tos_url": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "upgrade_hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "warranty_disclaimer": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          }
        -        },
        -        "required": [
        -          "request_id",
        -          "issued_at",
        -          "tier"
        -        ],
        -        "type": "object"
        -      },
        -      "data": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Schema § 1.1 — the typed payload returned inside `MCPResponse[ComputeResult]`.\n\nFree-tier responses MUST omit `drawings` and `audit_trail` (the bridge\nenforces this); paid-tier responses populate both. `text_summary` is\nbounded to 2000 chars — keeps the LLM-facing summary token-cheap and\nforces longer narrative into BoQ row descriptions where it belongs.",
        -            "properties": {
        -              "assembly_slug": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "audit_trail": {
        -                "anyOf": [
        -                  {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.7 — paid-tier audit-trail entry.\n\nOne entry per BoQ row; `boq_row_index` ties to the row position in\n`ComputeResult.boq_rows`. `derivation` is the human-readable formula\nwalk-through; `formula` is the optional formal expression.",
        -                      "properties": {
        -                        "boq_row_index": {
        -                          "minimum": 0,
        -                          "type": "integer"
        -                        },
        -                        "derivation": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "formula": {
        -                          "anyOf": [
        -                            {
        -                              "type": "string"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ],
        -                          "default": null
        -                        },
        -                        "id": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "parameters_referenced": {
        -                          "items": {
        -                            "type": "string"
        -                          },
        -                          "type": "array"
        -                        }
        -                      },
        -                      "required": [
        -                        "id",
        -                        "boq_row_index",
        -                        "derivation"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "boq_rows": {
        -                "items": {
        -                  "additionalProperties": false,
        -                  "description": "Schema § 1.3 — a single bill row in the requested standard's format.\n\n`description` is the non-verbatim functional description per spec § 13.9 /\n§ 15 invariant — NEVER reproduces a standard's verbatim clause text.\n`rate` / `amount` ship null because rates are commodity data the customer\nowns; the engine's job is the measurement, not the pricing.",
        -                  "properties": {
        -                    "amount": {
        -                      "anyOf": [
        -                        {
        -                          "type": "number"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "attribution": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "audit_id": {
        -                      "anyOf": [
        -                        {
        -                          "type": "string"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "description": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "quantity": {
        -                      "minimum": 0,
        -                      "type": "number"
        -                    },
        -                    "rate": {
        -                      "anyOf": [
        -                        {
        -                          "type": "number"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "unit": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "work_section": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    }
        -                  },
        -                  "required": [
        -                    "work_section",
        -                    "description",
        -                    "quantity",
        -                    "unit",
        -                    "attribution"
        -                  ],
        -                  "type": "object"
        -                },
        -                "type": "array"
        -              },
        -              "drawings": {
        -                "anyOf": [
        -                  {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.6 — paid-tier drawing artefact pointer.\n\n`url` is an R2-signed URL; expiry is carried in `_meta.deliverables.expires_at`\non the envelope (not duplicated here). `layers` is DXF-only; PDF/SVG\ncallers omit it.",
        -                      "properties": {
        -                        "drawing_type": {
        -                          "enum": [
        -                            "section",
        -                            "plan",
        -                            "elevation",
        -                            "isometric",
        -                            "detail"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "format": {
        -                          "enum": [
        -                            "DXF",
        -                            "PDF",
        -                            "SVG"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "layers": {
        -                          "anyOf": [
        -                            {
        -                              "items": {
        -                                "type": "string"
        -                              },
        -                              "type": "array"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ],
        -                          "default": null
        -                        },
        -                        "scale": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "sheet_size": {
        -                          "enum": [
        -                            "A1",
        -                            "A2",
        -                            "A3",
        -                            "A4"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "url": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "drawing_type",
        -                        "format",
        -                        "url",
        -                        "sheet_size",
        -                        "scale"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "parameters_used": {
        -                "additionalProperties": false,
        -                "description": "Schema § 1.2 — the parameter snapshot the engine actually used.\n\nSplits user-supplied values from engine defaults so customers can see\nwhich numbers came from them and which the engine filled in. Every\ndefaulted parameter SHOULD have a corresponding entry in `assumptions`\n— the bridge layer enforces this when wrapping engine output.",
        -                "properties": {
        -                  "assumptions": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "engine_defaults": {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  "resolved_from_description": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "additionalProperties": false,
        -                          "description": "Schema § 1.2 — a parameter resolved by the forgiving-input layer.\n\nPopulated by the Track B-Forgiving Haiku-4.5 resolution pass; until that\nlayer lands, instances are constructed only by tests. `source` distinguishes\nthe resolution path so customers can audit which fields were inferred.",
        -                          "properties": {
        -                            "confidence": {
        -                              "anyOf": [
        -                                {
        -                                  "enum": [
        -                                    "high",
        -                                    "medium",
        -                                    "low"
        -                                  ],
        -                                  "type": "string"
        -                                },
        -                                {
        -                                  "type": "null"
        -                                }
        -                              ],
        -                              "default": null
        -                            },
        -                            "field_name": {
        -                              "minLength": 1,
        -                              "type": "string"
        -                            },
        -                            "resolved_value": {},
        -                            "source": {
        -                              "enum": [
        -                                "description_field",
        -                                "haiku_resolution",
        -                                "engine_default"
        -                              ],
        -                              "type": "string"
        -                            }
        -                          },
        -                          "required": [
        -                            "field_name",
        -                            "resolved_value",
        -                            "source"
        -                          ],
        -                          "type": "object"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "user_supplied": {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  }
        -                },
        -                "type": "object"
        -              },
        -              "standard": {
        -                "enum": [
        -                  "CESMM4",
        -                  "NRM2",
        -                  "SMM7",
        -                  "MMHW"
        -                ],
        -                "type": "string"
        -              },
        -              "text_summary": {
        -                "maxLength": 2000,
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "totals_summary": {
        -                "additionalProperties": false,
        -                "description": "Schema § 1.4 — totals_summary as a typed wrapper around the free-form dict.\n\nWire shape is a flat object (`{\"concrete_m3\": {...}, \"rebar_t\": {...}}`).\nWe model it as `RootModel`-equivalent via `model_config(extra=\"allow\")`\n+ a single `__root__`-style `entries` dict. Pydantic v2 recommends\n`RootModel` for free-form roots; using a wrapper class keeps the import\nsurface uniform with the rest of this module.",
        -                "properties": {
        -                  "entries": {
        -                    "additionalProperties": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.4 — single material/work-class total entry.",
        -                      "properties": {
        -                        "quantity": {
        -                          "minimum": 0,
        -                          "type": "number"
        -                        },
        -                        "unit": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "quantity",
        -                        "unit"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "object"
        -                  }
        -                },
        -                "type": "object"
        -              }
        -            },
        -            "required": [
        -              "assembly_slug",
        -              "standard",
        -              "parameters_used",
        -              "boq_rows",
        -              "totals_summary",
        -              "text_summary"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      },
        -      "error": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        -            "properties": {
        -              "code": {
        -                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        -                "enum": [
        -                  "RATE_LIMIT_EXCEEDED",
        -                  "TIER_INSUFFICIENT",
        -                  "INVALID_INPUT",
        -                  "SCHEMA_VERSION_MISMATCH",
        -                  "SCHEMA_INVARIANT_VIOLATION",
        -                  "UPSTREAM_TIMEOUT",
        -                  "BACKEND_FAILURE",
        -                  "IP_BLOCKED",
        -                  "RESOURCE_NOT_FOUND",
        -                  "RENDER_FAILURE",
        -                  "OCR_LOW_CONFIDENCE",
        -                  "MANUAL_REVIEW_REQUIRED",
        -                  "ACCEPTANCE_REQUIRED",
        -                  "INVALID_TOKEN"
        -                ],
        -                "type": "string"
        -              },
        -              "details": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "message": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "recoverable": {
        -                "type": "boolean"
        -              },
        -              "retry_after_seconds": {
        -                "anyOf": [
        -                  {
        -                    "minimum": 0,
        -                    "type": "integer"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              }
        -            },
        -            "required": [
        -              "code",
        -              "message",
        -              "recoverable"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      }
        -    },
        -    "required": [
        -      "_meta"
        -    ],
        -    "type": "object"
        -  },
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "_meta": {
        -        "additionalProperties": false,
        -        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        -        "properties": {
        -          "deliverables": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        -                "properties": {
        -                  "docx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "dxf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "expires_at": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  },
        -                  "pdf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "xlsx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "expires_at"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "document_id": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "issued_at": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "rate_limit_remaining": {
        -            "anyOf": [
        -              {
        -                "minimum": 0,
        -                "type": "integer"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "request_id": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "schema_version": {
        -            "const": "1.0.0",
        -            "default": "1.0.0",
        -            "type": "string"
        -          },
        -          "scope_boundary": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        -                "properties": {
        -                  "not_in_scope": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "produced": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "recommended_companions": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "type": "string"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "produced",
        -                  "not_in_scope"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tier": {
        -            "enum": [
        -              "free",
        -              "paid"
        -            ],
        -            "type": "string"
        -          },
        -          "tier_upgrade": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        -                "properties": {
        -                  "available_tiers": {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        -                      "properties": {
        -                        "billing": {
        -                          "enum": [
        -                            "one_off",
        -                            "monthly",
        -                            "annual"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "currency": {
        -                          "enum": [
        -                            "GBP",
        -                            "SGD",
        -                            "EUR",
        -                            "USD",
        -                            "CAD",
        -                            "AUD",
        -                            "NZD",
        -                            "MYR"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "display_name": {
        -                          "type": "string"
        -                        },
        -                        "price_local": {
        -                          "type": "number"
        -                        },
        -                        "tier_slug": {
        -                          "enum": [
        -                            "7_day_pass",
        -                            "solo",
        -                            "studio",
        -                            "practice"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "unlock_summary": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "tier_slug",
        -                        "display_name",
        -                        "price_local",
        -                        "currency",
        -                        "billing",
        -                        "unlock_summary"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "current_tier": {
        -                    "const": "free",
        -                    "default": "free",
        -                    "type": "string"
        -                  },
        -                  "pass_credit": {
        -                    "anyOf": [
        -                      {
        -                        "additionalProperties": false,
        -                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        -                        "properties": {
        -                          "amount_local": {
        -                            "type": "number"
        -                          },
        -                          "applies_to": {
        -                            "const": "solo_first_month",
        -                            "default": "solo_first_month",
        -                            "type": "string"
        -                          },
        -                          "currency": {
        -                            "type": "string"
        -                          },
        -                          "redeemable_until": {
        -                            "type": "string"
        -                          }
        -                        },
        -                        "required": [
        -                          "amount_local",
        -                          "currency",
        -                          "redeemable_until"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "pricing_url": {
        -                    "default": "https://civilquants.com/pricing",
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "available_tiers"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tos_url": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "upgrade_hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "warranty_disclaimer": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          }
        -        },
        -        "required": [
        -          "request_id",
        -          "issued_at",
        -          "tier"
        -        ],
        -        "type": "object"
        -      },
        -      "data": {
        -        "default": null,
        -        "title": "Data"
        -      },
        -      "error": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        -            "properties": {
        -              "code": {
        -                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        -                "enum": [
        -                  "RATE_LIMIT_EXCEEDED",
        -                  "TIER_INSUFFICIENT",
        -                  "INVALID_INPUT",
        -                  "SCHEMA_VERSION_MISMATCH",
        -                  "SCHEMA_INVARIANT_VIOLATION",
        -                  "UPSTREAM_TIMEOUT",
        -                  "BACKEND_FAILURE",
        -                  "IP_BLOCKED",
        -                  "RESOURCE_NOT_FOUND",
        -                  "RENDER_FAILURE",
        -                  "OCR_LOW_CONFIDENCE",
        -                  "MANUAL_REVIEW_REQUIRED",
        -                  "ACCEPTANCE_REQUIRED",
        -                  "INVALID_TOKEN"
        -                ],
        -                "type": "string"
        -              },
        -              "details": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "message": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "recoverable": {
        -                "type": "boolean"
        -              },
        -              "retry_after_seconds": {
        -                "anyOf": [
        -                  {
        -                    "minimum": 0,
        -                    "type": "integer"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              }
        -            },
        -            "required": [
        -              "code",
        -              "message",
        -              "recoverable"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      }
        -    },
        -    "required": [
        -      "_meta"
        -    ],
        -    "type": "object"
        -  }
        -]New value: +[
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "_meta": {
        +        "additionalProperties": false,
        +        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        +        "properties": {
        +          "deliverables": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        +                "properties": {
        +                  "docx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "dxf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "expires_at": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  },
        +                  "pdf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "xlsx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "expires_at"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "document_id": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "issued_at": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "rate_limit_remaining": {
        +            "anyOf": [
        +              {
        +                "minimum": 0,
        +                "type": "integer"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "request_id": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "schema_version": {
        +            "const": "1.0.0",
        +            "default": "1.0.0",
        +            "type": "string"
        +          },
        +          "scope_boundary": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        +                "properties": {
        +                  "not_in_scope": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "produced": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "recommended_companions": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "type": "string"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "produced",
        +                  "not_in_scope"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tier": {
        +            "enum": [
        +              "free",
        +              "paid"
        +            ],
        +            "type": "string"
        +          },
        +          "tier_upgrade": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        +                "properties": {
        +                  "available_tiers": {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        +                      "properties": {
        +                        "billing": {
        +                          "enum": [
        +                            "one_off",
        +                            "monthly",
        +                            "annual"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "currency": {
        +                          "enum": [
        +                            "GBP",
        +                            "SGD",
        +                            "EUR",
        +                            "USD",
        +                            "CAD",
        +                            "AUD",
        +                            "NZD",
        +                            "MYR"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "display_name": {
        +                          "type": "string"
        +                        },
        +                        "price_local": {
        +                          "type": "number"
        +                        },
        +                        "tier_slug": {
        +                          "enum": [
        +                            "7_day_pass",
        +                            "solo",
        +                            "studio",
        +                            "practice"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "unlock_summary": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "tier_slug",
        +                        "display_name",
        +                        "price_local",
        +                        "currency",
        +                        "billing",
        +                        "unlock_summary"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "current_tier": {
        +                    "const": "free",
        +                    "default": "free",
        +                    "type": "string"
        +                  },
        +                  "pass_credit": {
        +                    "anyOf": [
        +                      {
        +                        "additionalProperties": false,
        +                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        +                        "properties": {
        +                          "amount_local": {
        +                            "type": "number"
        +                          },
        +                          "applies_to": {
        +                            "const": "solo_first_month",
        +                            "default": "solo_first_month",
        +                            "type": "string"
        +                          },
        +                          "currency": {
        +                            "type": "string"
        +                          },
        +                          "redeemable_until": {
        +                            "type": "string"
        +                          }
        +                        },
        +                        "required": [
        +                          "amount_local",
        +                          "currency",
        +                          "redeemable_until"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "pricing_url": {
        +                    "default": "https://civilquants.com/pricing",
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "available_tiers"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tos_url": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "upgrade_hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "warranty_disclaimer": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          }
        +        },
        +        "required": [
        +          "request_id",
        +          "issued_at",
        +          "tier"
        +        ],
        +        "type": "object"
        +      },
        +      "data": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Schema § 1.1 — the typed payload returned inside `MCPResponse[ComputeResult]`.\n\nFree-tier responses MUST omit `drawings` and `audit_trail` (the bridge\nenforces this); paid-tier responses populate both. `text_summary` is\nbounded to 2000 chars — keeps the LLM-facing summary token-cheap and\nforces longer narrative into BoQ row descriptions where it belongs.\n`warnings` is the non-fatal geometry advisory list (both tiers).",
        +            "properties": {
        +              "assembly_slug": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "audit_trail": {
        +                "anyOf": [
        +                  {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.7 — paid-tier audit-trail entry.\n\nOne entry per BoQ row; `boq_row_index` ties to the row position in\n`ComputeResult.boq_rows`. `derivation` is the human-readable formula\nwalk-through; `formula` is the optional formal expression.",
        +                      "properties": {
        +                        "boq_row_index": {
        +                          "minimum": 0,
        +                          "type": "integer"
        +                        },
        +                        "derivation": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "formula": {
        +                          "anyOf": [
        +                            {
        +                              "type": "string"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ],
        +                          "default": null
        +                        },
        +                        "id": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "parameters_referenced": {
        +                          "items": {
        +                            "type": "string"
        +                          },
        +                          "type": "array"
        +                        }
        +                      },
        +                      "required": [
        +                        "id",
        +                        "boq_row_index",
        +                        "derivation"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "boq_rows": {
        +                "items": {
        +                  "additionalProperties": false,
        +                  "description": "Schema § 1.3 — a single bill row in the requested standard's format.\n\n`description` is the non-verbatim functional description per spec § 13.9 /\n§ 15 invariant — NEVER reproduces a standard's verbatim clause text.\n`rate` / `amount` ship null because rates are commodity data the customer\nowns; the engine's job is the measurement, not the pricing.",
        +                  "properties": {
        +                    "amount": {
        +                      "anyOf": [
        +                        {
        +                          "type": "number"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "attribution": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "audit_id": {
        +                      "anyOf": [
        +                        {
        +                          "type": "string"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "description": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "quantity": {
        +                      "minimum": 0,
        +                      "type": "number"
        +                    },
        +                    "rate": {
        +                      "anyOf": [
        +                        {
        +                          "type": "number"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "unit": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "work_section": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    }
        +                  },
        +                  "required": [
        +                    "work_section",
        +                    "description",
        +                    "quantity",
        +                    "unit",
        +                    "attribution"
        +                  ],
        +                  "type": "object"
        +                },
        +                "type": "array"
        +              },
        +              "drawings": {
        +                "anyOf": [
        +                  {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.6 — paid-tier drawing artefact pointer.\n\n`url` is an R2-signed URL; expiry is carried in `_meta.deliverables.expires_at`\non the envelope (not duplicated here). `layers` is DXF-only; PDF/SVG\ncallers omit it.",
        +                      "properties": {
        +                        "drawing_type": {
        +                          "enum": [
        +                            "section",
        +                            "plan",
        +                            "elevation",
        +                            "isometric",
        +                            "detail"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "format": {
        +                          "enum": [
        +                            "DXF",
        +                            "PDF",
        +                            "SVG"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "layers": {
        +                          "anyOf": [
        +                            {
        +                              "items": {
        +                                "type": "string"
        +                              },
        +                              "type": "array"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ],
        +                          "default": null
        +                        },
        +                        "scale": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "sheet_size": {
        +                          "enum": [
        +                            "A1",
        +                            "A2",
        +                            "A3",
        +                            "A4"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "url": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "drawing_type",
        +                        "format",
        +                        "url",
        +                        "sheet_size",
        +                        "scale"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "parameters_used": {
        +                "additionalProperties": false,
        +                "description": "Schema § 1.2 — the parameter snapshot the engine actually used.\n\nSplits user-supplied values from engine defaults so customers can see\nwhich numbers came from them and which the engine filled in. Every\ndefaulted parameter SHOULD have a corresponding entry in `assumptions`\n— the bridge layer enforces this when wrapping engine output.",
        +                "properties": {
        +                  "assumptions": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "engine_defaults": {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  "resolved_from_description": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "additionalProperties": false,
        +                          "description": "Schema § 1.2 — a parameter resolved by the forgiving-input layer.\n\nPopulated by the Track B-Forgiving Haiku-4.5 resolution pass; until that\nlayer lands, instances are constructed only by tests. `source` distinguishes\nthe resolution path so customers can audit which fields were inferred.",
        +                          "properties": {
        +                            "confidence": {
        +                              "anyOf": [
        +                                {
        +                                  "enum": [
        +                                    "high",
        +                                    "medium",
        +                                    "low"
        +                                  ],
        +                                  "type": "string"
        +                                },
        +                                {
        +                                  "type": "null"
        +                                }
        +                              ],
        +                              "default": null
        +                            },
        +                            "field_name": {
        +                              "minLength": 1,
        +                              "type": "string"
        +                            },
        +                            "resolved_value": {},
        +                            "source": {
        +                              "enum": [
        +                                "description_field",
        +                                "haiku_resolution",
        +                                "engine_default"
        +                              ],
        +                              "type": "string"
        +                            }
        +                          },
        +                          "required": [
        +                            "field_name",
        +                            "resolved_value",
        +                            "source"
        +                          ],
        +                          "type": "object"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "user_supplied": {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  }
        +                },
        +                "type": "object"
        +              },
        +              "standard": {
        +                "enum": [
        +                  "CESMM4",
        +                  "NRM2",
        +                  "SMM7",
        +                  "MMHW"
        +                ],
        +                "type": "string"
        +              },
        +              "text_summary": {
        +                "maxLength": 2000,
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "totals_summary": {
        +                "additionalProperties": false,
        +                "description": "Schema § 1.4 — totals_summary as a typed wrapper around the free-form dict.\n\nWire shape is a flat object (`{\"concrete_m3\": {...}, \"rebar_t\": {...}}`).\nWe model it as `RootModel`-equivalent via `model_config(extra=\"allow\")`\n+ a single `__root__`-style `entries` dict. Pydantic v2 recommends\n`RootModel` for free-form roots; using a wrapper class keeps the import\nsurface uniform with the rest of this module.",
        +                "properties": {
        +                  "entries": {
        +                    "additionalProperties": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.4 — single material/work-class total entry.",
        +                      "properties": {
        +                        "quantity": {
        +                          "minimum": 0,
        +                          "type": "number"
        +                        },
        +                        "unit": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "quantity",
        +                        "unit"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "object"
        +                  }
        +                },
        +                "type": "object"
        +              },
        +              "warnings": {
        +                "items": {
        +                  "additionalProperties": false,
        +                  "description": "Schema § 1.8 — a non-fatal geometry advisory (56th-fire T2).\n\nThe wire projection of the engine's `core.GeometryWarning`. Advisory only:\na warning NEVER changes a measured quantity — it flags geometry that is\nvalid but likely a mistake (e.g. a stale dependent-height default). Present\non BOTH tiers — a correctness/safety signal, not a paid feature.",
        +                  "properties": {
        +                    "affected_params": {
        +                      "items": {
        +                        "type": "string"
        +                      },
        +                      "type": "array"
        +                    },
        +                    "code": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "detail": {
        +                      "additionalProperties": {
        +                        "type": "number"
        +                      },
        +                      "type": "object"
        +                    },
        +                    "message": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "severity": {
        +                      "enum": [
        +                        "info",
        +                        "advisory",
        +                        "caution"
        +                      ],
        +                      "type": "string"
        +                    }
        +                  },
        +                  "required": [
        +                    "code",
        +                    "severity",
        +                    "message"
        +                  ],
        +                  "type": "object"
        +                },
        +                "type": "array"
        +              }
        +            },
        +            "required": [
        +              "assembly_slug",
        +              "standard",
        +              "parameters_used",
        +              "boq_rows",
        +              "totals_summary",
        +              "text_summary"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      },
        +      "error": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        +            "properties": {
        +              "code": {
        +                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        +                "enum": [
        +                  "RATE_LIMIT_EXCEEDED",
        +                  "TIER_INSUFFICIENT",
        +                  "INVALID_INPUT",
        +                  "SCHEMA_VERSION_MISMATCH",
        +                  "SCHEMA_INVARIANT_VIOLATION",
        +                  "UPSTREAM_TIMEOUT",
        +                  "BACKEND_FAILURE",
        +                  "IP_BLOCKED",
        +                  "RESOURCE_NOT_FOUND",
        +                  "RENDER_FAILURE",
        +                  "OCR_LOW_CONFIDENCE",
        +                  "MANUAL_REVIEW_REQUIRED",
        +                  "ACCEPTANCE_REQUIRED",
        +                  "INVALID_TOKEN"
        +                ],
        +                "type": "string"
        +              },
        +              "details": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "message": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "recoverable": {
        +                "type": "boolean"
        +              },
        +              "retry_after_seconds": {
        +                "anyOf": [
        +                  {
        +                    "minimum": 0,
        +                    "type": "integer"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              }
        +            },
        +            "required": [
        +              "code",
        +              "message",
        +              "recoverable"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      }
        +    },
        +    "required": [
        +      "_meta"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "_meta": {
        +        "additionalProperties": false,
        +        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        +        "properties": {
        +          "deliverables": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        +                "properties": {
        +                  "docx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "dxf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "expires_at": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  },
        +                  "pdf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "xlsx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "expires_at"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "document_id": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "issued_at": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "rate_limit_remaining": {
        +            "anyOf": [
        +              {
        +                "minimum": 0,
        +                "type": "integer"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "request_id": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "schema_version": {
        +            "const": "1.0.0",
        +            "default": "1.0.0",
        +            "type": "string"
        +          },
        +          "scope_boundary": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        +                "properties": {
        +                  "not_in_scope": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "produced": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "recommended_companions": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "type": "string"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "produced",
        +                  "not_in_scope"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tier": {
        +            "enum": [
        +              "free",
        +              "paid"
        +            ],
        +            "type": "string"
        +          },
        +          "tier_upgrade": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        +                "properties": {
        +                  "available_tiers": {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        +                      "properties": {
        +                        "billing": {
        +                          "enum": [
        +                            "one_off",
        +                            "monthly",
        +                            "annual"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "currency": {
        +                          "enum": [
        +                            "GBP",
        +                            "SGD",
        +                            "EUR",
        +                            "USD",
        +                            "CAD",
        +                            "AUD",
        +                            "NZD",
        +                            "MYR"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "display_name": {
        +                          "type": "string"
        +                        },
        +                        "price_local": {
        +                          "type": "number"
        +                        },
        +                        "tier_slug": {
        +                          "enum": [
        +                            "7_day_pass",
        +                            "solo",
        +                            "studio",
        +                            "practice"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "unlock_summary": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "tier_slug",
        +                        "display_name",
        +                        "price_local",
        +                        "currency",
        +                        "billing",
        +                        "unlock_summary"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "current_tier": {
        +                    "const": "free",
        +                    "default": "free",
        +                    "type": "string"
        +                  },
        +                  "pass_credit": {
        +                    "anyOf": [
        +                      {
        +                        "additionalProperties": false,
        +                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        +                        "properties": {
        +                          "amount_local": {
        +                            "type": "number"
        +                          },
        +                          "applies_to": {
        +                            "const": "solo_first_month",
        +                            "default": "solo_first_month",
        +                            "type": "string"
        +                          },
        +                          "currency": {
        +                            "type": "string"
        +                          },
        +                          "redeemable_until": {
        +                            "type": "string"
        +                          }
        +                        },
        +                        "required": [
        +                          "amount_local",
        +                          "currency",
        +                          "redeemable_until"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "pricing_url": {
        +                    "default": "https://civilquants.com/pricing",
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "available_tiers"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tos_url": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "upgrade_hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "warranty_disclaimer": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          }
        +        },
        +        "required": [
        +          "request_id",
        +          "issued_at",
        +          "tier"
        +        ],
        +        "type": "object"
        +      },
        +      "data": {
        +        "default": null,
        +        "title": "Data"
        +      },
        +      "error": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        +            "properties": {
        +              "code": {
        +                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        +                "enum": [
        +                  "RATE_LIMIT_EXCEEDED",
        +                  "TIER_INSUFFICIENT",
        +                  "INVALID_INPUT",
        +                  "SCHEMA_VERSION_MISMATCH",
        +                  "SCHEMA_INVARIANT_VIOLATION",
        +                  "UPSTREAM_TIMEOUT",
        +                  "BACKEND_FAILURE",
        +                  "IP_BLOCKED",
        +                  "RESOURCE_NOT_FOUND",
        +                  "RENDER_FAILURE",
        +                  "OCR_LOW_CONFIDENCE",
        +                  "MANUAL_REVIEW_REQUIRED",
        +                  "ACCEPTANCE_REQUIRED",
        +                  "INVALID_TOKEN"
        +                ],
        +                "type": "string"
        +              },
        +              "details": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "message": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "recoverable": {
        +                "type": "boolean"
        +              },
        +              "retry_after_seconds": {
        +                "anyOf": [
        +                  {
        +                    "minimum": 0,
        +                    "type": "integer"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              }
        +            },
        +            "required": [
        +              "code",
        +              "message",
        +              "recoverable"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      }
        +    },
        +    "required": [
        +      "_meta"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedcompute_manhole_precast1 field changed
      • changedOutput schema / properties / result / anyOf
        Previous value: -[
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "_meta": {
        -        "additionalProperties": false,
        -        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        -        "properties": {
        -          "deliverables": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        -                "properties": {
        -                  "docx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "dxf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "expires_at": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  },
        -                  "pdf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "xlsx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "expires_at"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "document_id": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "issued_at": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "rate_limit_remaining": {
        -            "anyOf": [
        -              {
        -                "minimum": 0,
        -                "type": "integer"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "request_id": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "schema_version": {
        -            "const": "1.0.0",
        -            "default": "1.0.0",
        -            "type": "string"
        -          },
        -          "scope_boundary": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        -                "properties": {
        -                  "not_in_scope": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "produced": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "recommended_companions": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "type": "string"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "produced",
        -                  "not_in_scope"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tier": {
        -            "enum": [
        -              "free",
        -              "paid"
        -            ],
        -            "type": "string"
        -          },
        -          "tier_upgrade": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        -                "properties": {
        -                  "available_tiers": {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        -                      "properties": {
        -                        "billing": {
        -                          "enum": [
        -                            "one_off",
        -                            "monthly",
        -                            "annual"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "currency": {
        -                          "enum": [
        -                            "GBP",
        -                            "SGD",
        -                            "EUR",
        -                            "USD",
        -                            "CAD",
        -                            "AUD",
        -                            "NZD",
        -                            "MYR"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "display_name": {
        -                          "type": "string"
        -                        },
        -                        "price_local": {
        -                          "type": "number"
        -                        },
        -                        "tier_slug": {
        -                          "enum": [
        -                            "7_day_pass",
        -                            "solo",
        -                            "studio",
        -                            "practice"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "unlock_summary": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "tier_slug",
        -                        "display_name",
        -                        "price_local",
        -                        "currency",
        -                        "billing",
        -                        "unlock_summary"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "current_tier": {
        -                    "const": "free",
        -                    "default": "free",
        -                    "type": "string"
        -                  },
        -                  "pass_credit": {
        -                    "anyOf": [
        -                      {
        -                        "additionalProperties": false,
        -                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        -                        "properties": {
        -                          "amount_local": {
        -                            "type": "number"
        -                          },
        -                          "applies_to": {
        -                            "const": "solo_first_month",
        -                            "default": "solo_first_month",
        -                            "type": "string"
        -                          },
        -                          "currency": {
        -                            "type": "string"
        -                          },
        -                          "redeemable_until": {
        -                            "type": "string"
        -                          }
        -                        },
        -                        "required": [
        -                          "amount_local",
        -                          "currency",
        -                          "redeemable_until"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "pricing_url": {
        -                    "default": "https://civilquants.com/pricing",
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "available_tiers"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tos_url": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "upgrade_hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "warranty_disclaimer": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          }
        -        },
        -        "required": [
        -          "request_id",
        -          "issued_at",
        -          "tier"
        -        ],
        -        "type": "object"
        -      },
        -      "data": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Schema § 1.1 — the typed payload returned inside `MCPResponse[ComputeResult]`.\n\nFree-tier responses MUST omit `drawings` and `audit_trail` (the bridge\nenforces this); paid-tier responses populate both. `text_summary` is\nbounded to 2000 chars — keeps the LLM-facing summary token-cheap and\nforces longer narrative into BoQ row descriptions where it belongs.",
        -            "properties": {
        -              "assembly_slug": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "audit_trail": {
        -                "anyOf": [
        -                  {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.7 — paid-tier audit-trail entry.\n\nOne entry per BoQ row; `boq_row_index` ties to the row position in\n`ComputeResult.boq_rows`. `derivation` is the human-readable formula\nwalk-through; `formula` is the optional formal expression.",
        -                      "properties": {
        -                        "boq_row_index": {
        -                          "minimum": 0,
        -                          "type": "integer"
        -                        },
        -                        "derivation": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "formula": {
        -                          "anyOf": [
        -                            {
        -                              "type": "string"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ],
        -                          "default": null
        -                        },
        -                        "id": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "parameters_referenced": {
        -                          "items": {
        -                            "type": "string"
        -                          },
        -                          "type": "array"
        -                        }
        -                      },
        -                      "required": [
        -                        "id",
        -                        "boq_row_index",
        -                        "derivation"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "boq_rows": {
        -                "items": {
        -                  "additionalProperties": false,
        -                  "description": "Schema § 1.3 — a single bill row in the requested standard's format.\n\n`description` is the non-verbatim functional description per spec § 13.9 /\n§ 15 invariant — NEVER reproduces a standard's verbatim clause text.\n`rate` / `amount` ship null because rates are commodity data the customer\nowns; the engine's job is the measurement, not the pricing.",
        -                  "properties": {
        -                    "amount": {
        -                      "anyOf": [
        -                        {
        -                          "type": "number"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "attribution": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "audit_id": {
        -                      "anyOf": [
        -                        {
        -                          "type": "string"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "description": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "quantity": {
        -                      "minimum": 0,
        -                      "type": "number"
        -                    },
        -                    "rate": {
        -                      "anyOf": [
        -                        {
        -                          "type": "number"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "unit": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "work_section": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    }
        -                  },
        -                  "required": [
        -                    "work_section",
        -                    "description",
        -                    "quantity",
        -                    "unit",
        -                    "attribution"
        -                  ],
        -                  "type": "object"
        -                },
        -                "type": "array"
        -              },
        -              "drawings": {
        -                "anyOf": [
        -                  {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.6 — paid-tier drawing artefact pointer.\n\n`url` is an R2-signed URL; expiry is carried in `_meta.deliverables.expires_at`\non the envelope (not duplicated here). `layers` is DXF-only; PDF/SVG\ncallers omit it.",
        -                      "properties": {
        -                        "drawing_type": {
        -                          "enum": [
        -                            "section",
        -                            "plan",
        -                            "elevation",
        -                            "isometric",
        -                            "detail"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "format": {
        -                          "enum": [
        -                            "DXF",
        -                            "PDF",
        -                            "SVG"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "layers": {
        -                          "anyOf": [
        -                            {
        -                              "items": {
        -                                "type": "string"
        -                              },
        -                              "type": "array"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ],
        -                          "default": null
        -                        },
        -                        "scale": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "sheet_size": {
        -                          "enum": [
        -                            "A1",
        -                            "A2",
        -                            "A3",
        -                            "A4"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "url": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "drawing_type",
        -                        "format",
        -                        "url",
        -                        "sheet_size",
        -                        "scale"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "parameters_used": {
        -                "additionalProperties": false,
        -                "description": "Schema § 1.2 — the parameter snapshot the engine actually used.\n\nSplits user-supplied values from engine defaults so customers can see\nwhich numbers came from them and which the engine filled in. Every\ndefaulted parameter SHOULD have a corresponding entry in `assumptions`\n— the bridge layer enforces this when wrapping engine output.",
        -                "properties": {
        -                  "assumptions": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "engine_defaults": {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  "resolved_from_description": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "additionalProperties": false,
        -                          "description": "Schema § 1.2 — a parameter resolved by the forgiving-input layer.\n\nPopulated by the Track B-Forgiving Haiku-4.5 resolution pass; until that\nlayer lands, instances are constructed only by tests. `source` distinguishes\nthe resolution path so customers can audit which fields were inferred.",
        -                          "properties": {
        -                            "confidence": {
        -                              "anyOf": [
        -                                {
        -                                  "enum": [
        -                                    "high",
        -                                    "medium",
        -                                    "low"
        -                                  ],
        -                                  "type": "string"
        -                                },
        -                                {
        -                                  "type": "null"
        -                                }
        -                              ],
        -                              "default": null
        -                            },
        -                            "field_name": {
        -                              "minLength": 1,
        -                              "type": "string"
        -                            },
        -                            "resolved_value": {},
        -                            "source": {
        -                              "enum": [
        -                                "description_field",
        -                                "haiku_resolution",
        -                                "engine_default"
        -                              ],
        -                              "type": "string"
        -                            }
        -                          },
        -                          "required": [
        -                            "field_name",
        -                            "resolved_value",
        -                            "source"
        -                          ],
        -                          "type": "object"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "user_supplied": {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  }
        -                },
        -                "type": "object"
        -              },
        -              "standard": {
        -                "enum": [
        -                  "CESMM4",
        -                  "NRM2",
        -                  "SMM7",
        -                  "MMHW"
        -                ],
        -                "type": "string"
        -              },
        -              "text_summary": {
        -                "maxLength": 2000,
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "totals_summary": {
        -                "additionalProperties": false,
        -                "description": "Schema § 1.4 — totals_summary as a typed wrapper around the free-form dict.\n\nWire shape is a flat object (`{\"concrete_m3\": {...}, \"rebar_t\": {...}}`).\nWe model it as `RootModel`-equivalent via `model_config(extra=\"allow\")`\n+ a single `__root__`-style `entries` dict. Pydantic v2 recommends\n`RootModel` for free-form roots; using a wrapper class keeps the import\nsurface uniform with the rest of this module.",
        -                "properties": {
        -                  "entries": {
        -                    "additionalProperties": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.4 — single material/work-class total entry.",
        -                      "properties": {
        -                        "quantity": {
        -                          "minimum": 0,
        -                          "type": "number"
        -                        },
        -                        "unit": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "quantity",
        -                        "unit"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "object"
        -                  }
        -                },
        -                "type": "object"
        -              }
        -            },
        -            "required": [
        -              "assembly_slug",
        -              "standard",
        -              "parameters_used",
        -              "boq_rows",
        -              "totals_summary",
        -              "text_summary"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      },
        -      "error": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        -            "properties": {
        -              "code": {
        -                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        -                "enum": [
        -                  "RATE_LIMIT_EXCEEDED",
        -                  "TIER_INSUFFICIENT",
        -                  "INVALID_INPUT",
        -                  "SCHEMA_VERSION_MISMATCH",
        -                  "SCHEMA_INVARIANT_VIOLATION",
        -                  "UPSTREAM_TIMEOUT",
        -                  "BACKEND_FAILURE",
        -                  "IP_BLOCKED",
        -                  "RESOURCE_NOT_FOUND",
        -                  "RENDER_FAILURE",
        -                  "OCR_LOW_CONFIDENCE",
        -                  "MANUAL_REVIEW_REQUIRED",
        -                  "ACCEPTANCE_REQUIRED",
        -                  "INVALID_TOKEN"
        -                ],
        -                "type": "string"
        -              },
        -              "details": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "message": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "recoverable": {
        -                "type": "boolean"
        -              },
        -              "retry_after_seconds": {
        -                "anyOf": [
        -                  {
        -                    "minimum": 0,
        -                    "type": "integer"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              }
        -            },
        -            "required": [
        -              "code",
        -              "message",
        -              "recoverable"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      }
        -    },
        -    "required": [
        -      "_meta"
        -    ],
        -    "type": "object"
        -  },
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "_meta": {
        -        "additionalProperties": false,
        -        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        -        "properties": {
        -          "deliverables": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        -                "properties": {
        -                  "docx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "dxf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "expires_at": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  },
        -                  "pdf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "xlsx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "expires_at"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "document_id": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "issued_at": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "rate_limit_remaining": {
        -            "anyOf": [
        -              {
        -                "minimum": 0,
        -                "type": "integer"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "request_id": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "schema_version": {
        -            "const": "1.0.0",
        -            "default": "1.0.0",
        -            "type": "string"
        -          },
        -          "scope_boundary": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        -                "properties": {
        -                  "not_in_scope": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "produced": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "recommended_companions": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "type": "string"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "produced",
        -                  "not_in_scope"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tier": {
        -            "enum": [
        -              "free",
        -              "paid"
        -            ],
        -            "type": "string"
        -          },
        -          "tier_upgrade": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        -                "properties": {
        -                  "available_tiers": {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        -                      "properties": {
        -                        "billing": {
        -                          "enum": [
        -                            "one_off",
        -                            "monthly",
        -                            "annual"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "currency": {
        -                          "enum": [
        -                            "GBP",
        -                            "SGD",
        -                            "EUR",
        -                            "USD",
        -                            "CAD",
        -                            "AUD",
        -                            "NZD",
        -                            "MYR"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "display_name": {
        -                          "type": "string"
        -                        },
        -                        "price_local": {
        -                          "type": "number"
        -                        },
        -                        "tier_slug": {
        -                          "enum": [
        -                            "7_day_pass",
        -                            "solo",
        -                            "studio",
        -                            "practice"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "unlock_summary": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "tier_slug",
        -                        "display_name",
        -                        "price_local",
        -                        "currency",
        -                        "billing",
        -                        "unlock_summary"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "current_tier": {
        -                    "const": "free",
        -                    "default": "free",
        -                    "type": "string"
        -                  },
        -                  "pass_credit": {
        -                    "anyOf": [
        -                      {
        -                        "additionalProperties": false,
        -                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        -                        "properties": {
        -                          "amount_local": {
        -                            "type": "number"
        -                          },
        -                          "applies_to": {
        -                            "const": "solo_first_month",
        -                            "default": "solo_first_month",
        -                            "type": "string"
        -                          },
        -                          "currency": {
        -                            "type": "string"
        -                          },
        -                          "redeemable_until": {
        -                            "type": "string"
        -                          }
        -                        },
        -                        "required": [
        -                          "amount_local",
        -                          "currency",
        -                          "redeemable_until"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "pricing_url": {
        -                    "default": "https://civilquants.com/pricing",
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "available_tiers"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tos_url": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "upgrade_hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "warranty_disclaimer": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          }
        -        },
        -        "required": [
        -          "request_id",
        -          "issued_at",
        -          "tier"
        -        ],
        -        "type": "object"
        -      },
        -      "data": {
        -        "default": null,
        -        "title": "Data"
        -      },
        -      "error": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        -            "properties": {
        -              "code": {
        -                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        -                "enum": [
        -                  "RATE_LIMIT_EXCEEDED",
        -                  "TIER_INSUFFICIENT",
        -                  "INVALID_INPUT",
        -                  "SCHEMA_VERSION_MISMATCH",
        -                  "SCHEMA_INVARIANT_VIOLATION",
        -                  "UPSTREAM_TIMEOUT",
        -                  "BACKEND_FAILURE",
        -                  "IP_BLOCKED",
        -                  "RESOURCE_NOT_FOUND",
        -                  "RENDER_FAILURE",
        -                  "OCR_LOW_CONFIDENCE",
        -                  "MANUAL_REVIEW_REQUIRED",
        -                  "ACCEPTANCE_REQUIRED",
        -                  "INVALID_TOKEN"
        -                ],
        -                "type": "string"
        -              },
        -              "details": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "message": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "recoverable": {
        -                "type": "boolean"
        -              },
        -              "retry_after_seconds": {
        -                "anyOf": [
        -                  {
        -                    "minimum": 0,
        -                    "type": "integer"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              }
        -            },
        -            "required": [
        -              "code",
        -              "message",
        -              "recoverable"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      }
        -    },
        -    "required": [
        -      "_meta"
        -    ],
        -    "type": "object"
        -  }
        -]New value: +[
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "_meta": {
        +        "additionalProperties": false,
        +        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        +        "properties": {
        +          "deliverables": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        +                "properties": {
        +                  "docx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "dxf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "expires_at": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  },
        +                  "pdf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "xlsx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "expires_at"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "document_id": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "issued_at": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "rate_limit_remaining": {
        +            "anyOf": [
        +              {
        +                "minimum": 0,
        +                "type": "integer"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "request_id": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "schema_version": {
        +            "const": "1.0.0",
        +            "default": "1.0.0",
        +            "type": "string"
        +          },
        +          "scope_boundary": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        +                "properties": {
        +                  "not_in_scope": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "produced": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "recommended_companions": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "type": "string"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "produced",
        +                  "not_in_scope"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tier": {
        +            "enum": [
        +              "free",
        +              "paid"
        +            ],
        +            "type": "string"
        +          },
        +          "tier_upgrade": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        +                "properties": {
        +                  "available_tiers": {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        +                      "properties": {
        +                        "billing": {
        +                          "enum": [
        +                            "one_off",
        +                            "monthly",
        +                            "annual"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "currency": {
        +                          "enum": [
        +                            "GBP",
        +                            "SGD",
        +                            "EUR",
        +                            "USD",
        +                            "CAD",
        +                            "AUD",
        +                            "NZD",
        +                            "MYR"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "display_name": {
        +                          "type": "string"
        +                        },
        +                        "price_local": {
        +                          "type": "number"
        +                        },
        +                        "tier_slug": {
        +                          "enum": [
        +                            "7_day_pass",
        +                            "solo",
        +                            "studio",
        +                            "practice"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "unlock_summary": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "tier_slug",
        +                        "display_name",
        +                        "price_local",
        +                        "currency",
        +                        "billing",
        +                        "unlock_summary"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "current_tier": {
        +                    "const": "free",
        +                    "default": "free",
        +                    "type": "string"
        +                  },
        +                  "pass_credit": {
        +                    "anyOf": [
        +                      {
        +                        "additionalProperties": false,
        +                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        +                        "properties": {
        +                          "amount_local": {
        +                            "type": "number"
        +                          },
        +                          "applies_to": {
        +                            "const": "solo_first_month",
        +                            "default": "solo_first_month",
        +                            "type": "string"
        +                          },
        +                          "currency": {
        +                            "type": "string"
        +                          },
        +                          "redeemable_until": {
        +                            "type": "string"
        +                          }
        +                        },
        +                        "required": [
        +                          "amount_local",
        +                          "currency",
        +                          "redeemable_until"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "pricing_url": {
        +                    "default": "https://civilquants.com/pricing",
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "available_tiers"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tos_url": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "upgrade_hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "warranty_disclaimer": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          }
        +        },
        +        "required": [
        +          "request_id",
        +          "issued_at",
        +          "tier"
        +        ],
        +        "type": "object"
        +      },
        +      "data": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Schema § 1.1 — the typed payload returned inside `MCPResponse[ComputeResult]`.\n\nFree-tier responses MUST omit `drawings` and `audit_trail` (the bridge\nenforces this); paid-tier responses populate both. `text_summary` is\nbounded to 2000 chars — keeps the LLM-facing summary token-cheap and\nforces longer narrative into BoQ row descriptions where it belongs.\n`warnings` is the non-fatal geometry advisory list (both tiers).",
        +            "properties": {
        +              "assembly_slug": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "audit_trail": {
        +                "anyOf": [
        +                  {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.7 — paid-tier audit-trail entry.\n\nOne entry per BoQ row; `boq_row_index` ties to the row position in\n`ComputeResult.boq_rows`. `derivation` is the human-readable formula\nwalk-through; `formula` is the optional formal expression.",
        +                      "properties": {
        +                        "boq_row_index": {
        +                          "minimum": 0,
        +                          "type": "integer"
        +                        },
        +                        "derivation": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "formula": {
        +                          "anyOf": [
        +                            {
        +                              "type": "string"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ],
        +                          "default": null
        +                        },
        +                        "id": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "parameters_referenced": {
        +                          "items": {
        +                            "type": "string"
        +                          },
        +                          "type": "array"
        +                        }
        +                      },
        +                      "required": [
        +                        "id",
        +                        "boq_row_index",
        +                        "derivation"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "boq_rows": {
        +                "items": {
        +                  "additionalProperties": false,
        +                  "description": "Schema § 1.3 — a single bill row in the requested standard's format.\n\n`description` is the non-verbatim functional description per spec § 13.9 /\n§ 15 invariant — NEVER reproduces a standard's verbatim clause text.\n`rate` / `amount` ship null because rates are commodity data the customer\nowns; the engine's job is the measurement, not the pricing.",
        +                  "properties": {
        +                    "amount": {
        +                      "anyOf": [
        +                        {
        +                          "type": "number"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "attribution": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "audit_id": {
        +                      "anyOf": [
        +                        {
        +                          "type": "string"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "description": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "quantity": {
        +                      "minimum": 0,
        +                      "type": "number"
        +                    },
        +                    "rate": {
        +                      "anyOf": [
        +                        {
        +                          "type": "number"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "unit": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "work_section": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    }
        +                  },
        +                  "required": [
        +                    "work_section",
        +                    "description",
        +                    "quantity",
        +                    "unit",
        +                    "attribution"
        +                  ],
        +                  "type": "object"
        +                },
        +                "type": "array"
        +              },
        +              "drawings": {
        +                "anyOf": [
        +                  {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.6 — paid-tier drawing artefact pointer.\n\n`url` is an R2-signed URL; expiry is carried in `_meta.deliverables.expires_at`\non the envelope (not duplicated here). `layers` is DXF-only; PDF/SVG\ncallers omit it.",
        +                      "properties": {
        +                        "drawing_type": {
        +                          "enum": [
        +                            "section",
        +                            "plan",
        +                            "elevation",
        +                            "isometric",
        +                            "detail"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "format": {
        +                          "enum": [
        +                            "DXF",
        +                            "PDF",
        +                            "SVG"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "layers": {
        +                          "anyOf": [
        +                            {
        +                              "items": {
        +                                "type": "string"
        +                              },
        +                              "type": "array"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ],
        +                          "default": null
        +                        },
        +                        "scale": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "sheet_size": {
        +                          "enum": [
        +                            "A1",
        +                            "A2",
        +                            "A3",
        +                            "A4"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "url": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "drawing_type",
        +                        "format",
        +                        "url",
        +                        "sheet_size",
        +                        "scale"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "parameters_used": {
        +                "additionalProperties": false,
        +                "description": "Schema § 1.2 — the parameter snapshot the engine actually used.\n\nSplits user-supplied values from engine defaults so customers can see\nwhich numbers came from them and which the engine filled in. Every\ndefaulted parameter SHOULD have a corresponding entry in `assumptions`\n— the bridge layer enforces this when wrapping engine output.",
        +                "properties": {
        +                  "assumptions": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "engine_defaults": {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  "resolved_from_description": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "additionalProperties": false,
        +                          "description": "Schema § 1.2 — a parameter resolved by the forgiving-input layer.\n\nPopulated by the Track B-Forgiving Haiku-4.5 resolution pass; until that\nlayer lands, instances are constructed only by tests. `source` distinguishes\nthe resolution path so customers can audit which fields were inferred.",
        +                          "properties": {
        +                            "confidence": {
        +                              "anyOf": [
        +                                {
        +                                  "enum": [
        +                                    "high",
        +                                    "medium",
        +                                    "low"
        +                                  ],
        +                                  "type": "string"
        +                                },
        +                                {
        +                                  "type": "null"
        +                                }
        +                              ],
        +                              "default": null
        +                            },
        +                            "field_name": {
        +                              "minLength": 1,
        +                              "type": "string"
        +                            },
        +                            "resolved_value": {},
        +                            "source": {
        +                              "enum": [
        +                                "description_field",
        +                                "haiku_resolution",
        +                                "engine_default"
        +                              ],
        +                              "type": "string"
        +                            }
        +                          },
        +                          "required": [
        +                            "field_name",
        +                            "resolved_value",
        +                            "source"
        +                          ],
        +                          "type": "object"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "user_supplied": {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  }
        +                },
        +                "type": "object"
        +              },
        +              "standard": {
        +                "enum": [
        +                  "CESMM4",
        +                  "NRM2",
        +                  "SMM7",
        +                  "MMHW"
        +                ],
        +                "type": "string"
        +              },
        +              "text_summary": {
        +                "maxLength": 2000,
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "totals_summary": {
        +                "additionalProperties": false,
        +                "description": "Schema § 1.4 — totals_summary as a typed wrapper around the free-form dict.\n\nWire shape is a flat object (`{\"concrete_m3\": {...}, \"rebar_t\": {...}}`).\nWe model it as `RootModel`-equivalent via `model_config(extra=\"allow\")`\n+ a single `__root__`-style `entries` dict. Pydantic v2 recommends\n`RootModel` for free-form roots; using a wrapper class keeps the import\nsurface uniform with the rest of this module.",
        +                "properties": {
        +                  "entries": {
        +                    "additionalProperties": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.4 — single material/work-class total entry.",
        +                      "properties": {
        +                        "quantity": {
        +                          "minimum": 0,
        +                          "type": "number"
        +                        },
        +                        "unit": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "quantity",
        +                        "unit"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "object"
        +                  }
        +                },
        +                "type": "object"
        +              },
        +              "warnings": {
        +                "items": {
        +                  "additionalProperties": false,
        +                  "description": "Schema § 1.8 — a non-fatal geometry advisory (56th-fire T2).\n\nThe wire projection of the engine's `core.GeometryWarning`. Advisory only:\na warning NEVER changes a measured quantity — it flags geometry that is\nvalid but likely a mistake (e.g. a stale dependent-height default). Present\non BOTH tiers — a correctness/safety signal, not a paid feature.",
        +                  "properties": {
        +                    "affected_params": {
        +                      "items": {
        +                        "type": "string"
        +                      },
        +                      "type": "array"
        +                    },
        +                    "code": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "detail": {
        +                      "additionalProperties": {
        +                        "type": "number"
        +                      },
        +                      "type": "object"
        +                    },
        +                    "message": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "severity": {
        +                      "enum": [
        +                        "info",
        +                        "advisory",
        +                        "caution"
        +                      ],
        +                      "type": "string"
        +                    }
        +                  },
        +                  "required": [
        +                    "code",
        +                    "severity",
        +                    "message"
        +                  ],
        +                  "type": "object"
        +                },
        +                "type": "array"
        +              }
        +            },
        +            "required": [
        +              "assembly_slug",
        +              "standard",
        +              "parameters_used",
        +              "boq_rows",
        +              "totals_summary",
        +              "text_summary"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      },
        +      "error": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        +            "properties": {
        +              "code": {
        +                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        +                "enum": [
        +                  "RATE_LIMIT_EXCEEDED",
        +                  "TIER_INSUFFICIENT",
        +                  "INVALID_INPUT",
        +                  "SCHEMA_VERSION_MISMATCH",
        +                  "SCHEMA_INVARIANT_VIOLATION",
        +                  "UPSTREAM_TIMEOUT",
        +                  "BACKEND_FAILURE",
        +                  "IP_BLOCKED",
        +                  "RESOURCE_NOT_FOUND",
        +                  "RENDER_FAILURE",
        +                  "OCR_LOW_CONFIDENCE",
        +                  "MANUAL_REVIEW_REQUIRED",
        +                  "ACCEPTANCE_REQUIRED",
        +                  "INVALID_TOKEN"
        +                ],
        +                "type": "string"
        +              },
        +              "details": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "message": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "recoverable": {
        +                "type": "boolean"
        +              },
        +              "retry_after_seconds": {
        +                "anyOf": [
        +                  {
        +                    "minimum": 0,
        +                    "type": "integer"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              }
        +            },
        +            "required": [
        +              "code",
        +              "message",
        +              "recoverable"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      }
        +    },
        +    "required": [
        +      "_meta"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "_meta": {
        +        "additionalProperties": false,
        +        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        +        "properties": {
        +          "deliverables": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        +                "properties": {
        +                  "docx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "dxf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "expires_at": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  },
        +                  "pdf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "xlsx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "expires_at"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "document_id": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "issued_at": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "rate_limit_remaining": {
        +            "anyOf": [
        +              {
        +                "minimum": 0,
        +                "type": "integer"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "request_id": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "schema_version": {
        +            "const": "1.0.0",
        +            "default": "1.0.0",
        +            "type": "string"
        +          },
        +          "scope_boundary": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        +                "properties": {
        +                  "not_in_scope": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "produced": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "recommended_companions": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "type": "string"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "produced",
        +                  "not_in_scope"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tier": {
        +            "enum": [
        +              "free",
        +              "paid"
        +            ],
        +            "type": "string"
        +          },
        +          "tier_upgrade": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        +                "properties": {
        +                  "available_tiers": {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        +                      "properties": {
        +                        "billing": {
        +                          "enum": [
        +                            "one_off",
        +                            "monthly",
        +                            "annual"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "currency": {
        +                          "enum": [
        +                            "GBP",
        +                            "SGD",
        +                            "EUR",
        +                            "USD",
        +                            "CAD",
        +                            "AUD",
        +                            "NZD",
        +                            "MYR"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "display_name": {
        +                          "type": "string"
        +                        },
        +                        "price_local": {
        +                          "type": "number"
        +                        },
        +                        "tier_slug": {
        +                          "enum": [
        +                            "7_day_pass",
        +                            "solo",
        +                            "studio",
        +                            "practice"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "unlock_summary": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "tier_slug",
        +                        "display_name",
        +                        "price_local",
        +                        "currency",
        +                        "billing",
        +                        "unlock_summary"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "current_tier": {
        +                    "const": "free",
        +                    "default": "free",
        +                    "type": "string"
        +                  },
        +                  "pass_credit": {
        +                    "anyOf": [
        +                      {
        +                        "additionalProperties": false,
        +                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        +                        "properties": {
        +                          "amount_local": {
        +                            "type": "number"
        +                          },
        +                          "applies_to": {
        +                            "const": "solo_first_month",
        +                            "default": "solo_first_month",
        +                            "type": "string"
        +                          },
        +                          "currency": {
        +                            "type": "string"
        +                          },
        +                          "redeemable_until": {
        +                            "type": "string"
        +                          }
        +                        },
        +                        "required": [
        +                          "amount_local",
        +                          "currency",
        +                          "redeemable_until"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "pricing_url": {
        +                    "default": "https://civilquants.com/pricing",
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "available_tiers"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tos_url": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "upgrade_hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "warranty_disclaimer": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          }
        +        },
        +        "required": [
        +          "request_id",
        +          "issued_at",
        +          "tier"
        +        ],
        +        "type": "object"
        +      },
        +      "data": {
        +        "default": null,
        +        "title": "Data"
        +      },
        +      "error": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        +            "properties": {
        +              "code": {
        +                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        +                "enum": [
        +                  "RATE_LIMIT_EXCEEDED",
        +                  "TIER_INSUFFICIENT",
        +                  "INVALID_INPUT",
        +                  "SCHEMA_VERSION_MISMATCH",
        +                  "SCHEMA_INVARIANT_VIOLATION",
        +                  "UPSTREAM_TIMEOUT",
        +                  "BACKEND_FAILURE",
        +                  "IP_BLOCKED",
        +                  "RESOURCE_NOT_FOUND",
        +                  "RENDER_FAILURE",
        +                  "OCR_LOW_CONFIDENCE",
        +                  "MANUAL_REVIEW_REQUIRED",
        +                  "ACCEPTANCE_REQUIRED",
        +                  "INVALID_TOKEN"
        +                ],
        +                "type": "string"
        +              },
        +              "details": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "message": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "recoverable": {
        +                "type": "boolean"
        +              },
        +              "retry_after_seconds": {
        +                "anyOf": [
        +                  {
        +                    "minimum": 0,
        +                    "type": "integer"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              }
        +            },
        +            "required": [
        +              "code",
        +              "message",
        +              "recoverable"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      }
        +    },
        +    "required": [
        +      "_meta"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedcompute_pad_foundation1 field changed
      • changedOutput schema / properties / result / anyOf
        Previous value: -[
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "_meta": {
        -        "additionalProperties": false,
        -        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        -        "properties": {
        -          "deliverables": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        -                "properties": {
        -                  "docx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "dxf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "expires_at": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  },
        -                  "pdf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "xlsx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "expires_at"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "document_id": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "issued_at": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "rate_limit_remaining": {
        -            "anyOf": [
        -              {
        -                "minimum": 0,
        -                "type": "integer"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "request_id": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "schema_version": {
        -            "const": "1.0.0",
        -            "default": "1.0.0",
        -            "type": "string"
        -          },
        -          "scope_boundary": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        -                "properties": {
        -                  "not_in_scope": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "produced": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "recommended_companions": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "type": "string"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "produced",
        -                  "not_in_scope"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tier": {
        -            "enum": [
        -              "free",
        -              "paid"
        -            ],
        -            "type": "string"
        -          },
        -          "tier_upgrade": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        -                "properties": {
        -                  "available_tiers": {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        -                      "properties": {
        -                        "billing": {
        -                          "enum": [
        -                            "one_off",
        -                            "monthly",
        -                            "annual"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "currency": {
        -                          "enum": [
        -                            "GBP",
        -                            "SGD",
        -                            "EUR",
        -                            "USD",
        -                            "CAD",
        -                            "AUD",
        -                            "NZD",
        -                            "MYR"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "display_name": {
        -                          "type": "string"
        -                        },
        -                        "price_local": {
        -                          "type": "number"
        -                        },
        -                        "tier_slug": {
        -                          "enum": [
        -                            "7_day_pass",
        -                            "solo",
        -                            "studio",
        -                            "practice"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "unlock_summary": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "tier_slug",
        -                        "display_name",
        -                        "price_local",
        -                        "currency",
        -                        "billing",
        -                        "unlock_summary"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "current_tier": {
        -                    "const": "free",
        -                    "default": "free",
        -                    "type": "string"
        -                  },
        -                  "pass_credit": {
        -                    "anyOf": [
        -                      {
        -                        "additionalProperties": false,
        -                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        -                        "properties": {
        -                          "amount_local": {
        -                            "type": "number"
        -                          },
        -                          "applies_to": {
        -                            "const": "solo_first_month",
        -                            "default": "solo_first_month",
        -                            "type": "string"
        -                          },
        -                          "currency": {
        -                            "type": "string"
        -                          },
        -                          "redeemable_until": {
        -                            "type": "string"
        -                          }
        -                        },
        -                        "required": [
        -                          "amount_local",
        -                          "currency",
        -                          "redeemable_until"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "pricing_url": {
        -                    "default": "https://civilquants.com/pricing",
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "available_tiers"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tos_url": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "upgrade_hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "warranty_disclaimer": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          }
        -        },
        -        "required": [
        -          "request_id",
        -          "issued_at",
        -          "tier"
        -        ],
        -        "type": "object"
        -      },
        -      "data": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Schema § 1.1 — the typed payload returned inside `MCPResponse[ComputeResult]`.\n\nFree-tier responses MUST omit `drawings` and `audit_trail` (the bridge\nenforces this); paid-tier responses populate both. `text_summary` is\nbounded to 2000 chars — keeps the LLM-facing summary token-cheap and\nforces longer narrative into BoQ row descriptions where it belongs.",
        -            "properties": {
        -              "assembly_slug": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "audit_trail": {
        -                "anyOf": [
        -                  {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.7 — paid-tier audit-trail entry.\n\nOne entry per BoQ row; `boq_row_index` ties to the row position in\n`ComputeResult.boq_rows`. `derivation` is the human-readable formula\nwalk-through; `formula` is the optional formal expression.",
        -                      "properties": {
        -                        "boq_row_index": {
        -                          "minimum": 0,
        -                          "type": "integer"
        -                        },
        -                        "derivation": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "formula": {
        -                          "anyOf": [
        -                            {
        -                              "type": "string"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ],
        -                          "default": null
        -                        },
        -                        "id": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "parameters_referenced": {
        -                          "items": {
        -                            "type": "string"
        -                          },
        -                          "type": "array"
        -                        }
        -                      },
        -                      "required": [
        -                        "id",
        -                        "boq_row_index",
        -                        "derivation"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "boq_rows": {
        -                "items": {
        -                  "additionalProperties": false,
        -                  "description": "Schema § 1.3 — a single bill row in the requested standard's format.\n\n`description` is the non-verbatim functional description per spec § 13.9 /\n§ 15 invariant — NEVER reproduces a standard's verbatim clause text.\n`rate` / `amount` ship null because rates are commodity data the customer\nowns; the engine's job is the measurement, not the pricing.",
        -                  "properties": {
        -                    "amount": {
        -                      "anyOf": [
        -                        {
        -                          "type": "number"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "attribution": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "audit_id": {
        -                      "anyOf": [
        -                        {
        -                          "type": "string"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "description": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "quantity": {
        -                      "minimum": 0,
        -                      "type": "number"
        -                    },
        -                    "rate": {
        -                      "anyOf": [
        -                        {
        -                          "type": "number"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "unit": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "work_section": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    }
        -                  },
        -                  "required": [
        -                    "work_section",
        -                    "description",
        -                    "quantity",
        -                    "unit",
        -                    "attribution"
        -                  ],
        -                  "type": "object"
        -                },
        -                "type": "array"
        -              },
        -              "drawings": {
        -                "anyOf": [
        -                  {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.6 — paid-tier drawing artefact pointer.\n\n`url` is an R2-signed URL; expiry is carried in `_meta.deliverables.expires_at`\non the envelope (not duplicated here). `layers` is DXF-only; PDF/SVG\ncallers omit it.",
        -                      "properties": {
        -                        "drawing_type": {
        -                          "enum": [
        -                            "section",
        -                            "plan",
        -                            "elevation",
        -                            "isometric",
        -                            "detail"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "format": {
        -                          "enum": [
        -                            "DXF",
        -                            "PDF",
        -                            "SVG"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "layers": {
        -                          "anyOf": [
        -                            {
        -                              "items": {
        -                                "type": "string"
        -                              },
        -                              "type": "array"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ],
        -                          "default": null
        -                        },
        -                        "scale": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "sheet_size": {
        -                          "enum": [
        -                            "A1",
        -                            "A2",
        -                            "A3",
        -                            "A4"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "url": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "drawing_type",
        -                        "format",
        -                        "url",
        -                        "sheet_size",
        -                        "scale"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "parameters_used": {
        -                "additionalProperties": false,
        -                "description": "Schema § 1.2 — the parameter snapshot the engine actually used.\n\nSplits user-supplied values from engine defaults so customers can see\nwhich numbers came from them and which the engine filled in. Every\ndefaulted parameter SHOULD have a corresponding entry in `assumptions`\n— the bridge layer enforces this when wrapping engine output.",
        -                "properties": {
        -                  "assumptions": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "engine_defaults": {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  "resolved_from_description": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "additionalProperties": false,
        -                          "description": "Schema § 1.2 — a parameter resolved by the forgiving-input layer.\n\nPopulated by the Track B-Forgiving Haiku-4.5 resolution pass; until that\nlayer lands, instances are constructed only by tests. `source` distinguishes\nthe resolution path so customers can audit which fields were inferred.",
        -                          "properties": {
        -                            "confidence": {
        -                              "anyOf": [
        -                                {
        -                                  "enum": [
        -                                    "high",
        -                                    "medium",
        -                                    "low"
        -                                  ],
        -                                  "type": "string"
        -                                },
        -                                {
        -                                  "type": "null"
        -                                }
        -                              ],
        -                              "default": null
        -                            },
        -                            "field_name": {
        -                              "minLength": 1,
        -                              "type": "string"
        -                            },
        -                            "resolved_value": {},
        -                            "source": {
        -                              "enum": [
        -                                "description_field",
        -                                "haiku_resolution",
        -                                "engine_default"
        -                              ],
        -                              "type": "string"
        -                            }
        -                          },
        -                          "required": [
        -                            "field_name",
        -                            "resolved_value",
        -                            "source"
        -                          ],
        -                          "type": "object"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "user_supplied": {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  }
        -                },
        -                "type": "object"
        -              },
        -              "standard": {
        -                "enum": [
        -                  "CESMM4",
        -                  "NRM2",
        -                  "SMM7",
        -                  "MMHW"
        -                ],
        -                "type": "string"
        -              },
        -              "text_summary": {
        -                "maxLength": 2000,
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "totals_summary": {
        -                "additionalProperties": false,
        -                "description": "Schema § 1.4 — totals_summary as a typed wrapper around the free-form dict.\n\nWire shape is a flat object (`{\"concrete_m3\": {...}, \"rebar_t\": {...}}`).\nWe model it as `RootModel`-equivalent via `model_config(extra=\"allow\")`\n+ a single `__root__`-style `entries` dict. Pydantic v2 recommends\n`RootModel` for free-form roots; using a wrapper class keeps the import\nsurface uniform with the rest of this module.",
        -                "properties": {
        -                  "entries": {
        -                    "additionalProperties": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.4 — single material/work-class total entry.",
        -                      "properties": {
        -                        "quantity": {
        -                          "minimum": 0,
        -                          "type": "number"
        -                        },
        -                        "unit": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "quantity",
        -                        "unit"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "object"
        -                  }
        -                },
        -                "type": "object"
        -              }
        -            },
        -            "required": [
        -              "assembly_slug",
        -              "standard",
        -              "parameters_used",
        -              "boq_rows",
        -              "totals_summary",
        -              "text_summary"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      },
        -      "error": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        -            "properties": {
        -              "code": {
        -                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        -                "enum": [
        -                  "RATE_LIMIT_EXCEEDED",
        -                  "TIER_INSUFFICIENT",
        -                  "INVALID_INPUT",
        -                  "SCHEMA_VERSION_MISMATCH",
        -                  "SCHEMA_INVARIANT_VIOLATION",
        -                  "UPSTREAM_TIMEOUT",
        -                  "BACKEND_FAILURE",
        -                  "IP_BLOCKED",
        -                  "RESOURCE_NOT_FOUND",
        -                  "RENDER_FAILURE",
        -                  "OCR_LOW_CONFIDENCE",
        -                  "MANUAL_REVIEW_REQUIRED",
        -                  "ACCEPTANCE_REQUIRED",
        -                  "INVALID_TOKEN"
        -                ],
        -                "type": "string"
        -              },
        -              "details": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "message": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "recoverable": {
        -                "type": "boolean"
        -              },
        -              "retry_after_seconds": {
        -                "anyOf": [
        -                  {
        -                    "minimum": 0,
        -                    "type": "integer"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              }
        -            },
        -            "required": [
        -              "code",
        -              "message",
        -              "recoverable"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      }
        -    },
        -    "required": [
        -      "_meta"
        -    ],
        -    "type": "object"
        -  },
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "_meta": {
        -        "additionalProperties": false,
        -        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        -        "properties": {
        -          "deliverables": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        -                "properties": {
        -                  "docx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "dxf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "expires_at": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  },
        -                  "pdf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "xlsx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "expires_at"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "document_id": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "issued_at": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "rate_limit_remaining": {
        -            "anyOf": [
        -              {
        -                "minimum": 0,
        -                "type": "integer"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "request_id": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "schema_version": {
        -            "const": "1.0.0",
        -            "default": "1.0.0",
        -            "type": "string"
        -          },
        -          "scope_boundary": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        -                "properties": {
        -                  "not_in_scope": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "produced": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "recommended_companions": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "type": "string"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "produced",
        -                  "not_in_scope"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tier": {
        -            "enum": [
        -              "free",
        -              "paid"
        -            ],
        -            "type": "string"
        -          },
        -          "tier_upgrade": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        -                "properties": {
        -                  "available_tiers": {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        -                      "properties": {
        -                        "billing": {
        -                          "enum": [
        -                            "one_off",
        -                            "monthly",
        -                            "annual"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "currency": {
        -                          "enum": [
        -                            "GBP",
        -                            "SGD",
        -                            "EUR",
        -                            "USD",
        -                            "CAD",
        -                            "AUD",
        -                            "NZD",
        -                            "MYR"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "display_name": {
        -                          "type": "string"
        -                        },
        -                        "price_local": {
        -                          "type": "number"
        -                        },
        -                        "tier_slug": {
        -                          "enum": [
        -                            "7_day_pass",
        -                            "solo",
        -                            "studio",
        -                            "practice"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "unlock_summary": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "tier_slug",
        -                        "display_name",
        -                        "price_local",
        -                        "currency",
        -                        "billing",
        -                        "unlock_summary"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "current_tier": {
        -                    "const": "free",
        -                    "default": "free",
        -                    "type": "string"
        -                  },
        -                  "pass_credit": {
        -                    "anyOf": [
        -                      {
        -                        "additionalProperties": false,
        -                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        -                        "properties": {
        -                          "amount_local": {
        -                            "type": "number"
        -                          },
        -                          "applies_to": {
        -                            "const": "solo_first_month",
        -                            "default": "solo_first_month",
        -                            "type": "string"
        -                          },
        -                          "currency": {
        -                            "type": "string"
        -                          },
        -                          "redeemable_until": {
        -                            "type": "string"
        -                          }
        -                        },
        -                        "required": [
        -                          "amount_local",
        -                          "currency",
        -                          "redeemable_until"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "pricing_url": {
        -                    "default": "https://civilquants.com/pricing",
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "available_tiers"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tos_url": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "upgrade_hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "warranty_disclaimer": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          }
        -        },
        -        "required": [
        -          "request_id",
        -          "issued_at",
        -          "tier"
        -        ],
        -        "type": "object"
        -      },
        -      "data": {
        -        "default": null,
        -        "title": "Data"
        -      },
        -      "error": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        -            "properties": {
        -              "code": {
        -                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        -                "enum": [
        -                  "RATE_LIMIT_EXCEEDED",
        -                  "TIER_INSUFFICIENT",
        -                  "INVALID_INPUT",
        -                  "SCHEMA_VERSION_MISMATCH",
        -                  "SCHEMA_INVARIANT_VIOLATION",
        -                  "UPSTREAM_TIMEOUT",
        -                  "BACKEND_FAILURE",
        -                  "IP_BLOCKED",
        -                  "RESOURCE_NOT_FOUND",
        -                  "RENDER_FAILURE",
        -                  "OCR_LOW_CONFIDENCE",
        -                  "MANUAL_REVIEW_REQUIRED",
        -                  "ACCEPTANCE_REQUIRED",
        -                  "INVALID_TOKEN"
        -                ],
        -                "type": "string"
        -              },
        -              "details": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "message": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "recoverable": {
        -                "type": "boolean"
        -              },
        -              "retry_after_seconds": {
        -                "anyOf": [
        -                  {
        -                    "minimum": 0,
        -                    "type": "integer"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              }
        -            },
        -            "required": [
        -              "code",
        -              "message",
        -              "recoverable"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      }
        -    },
        -    "required": [
        -      "_meta"
        -    ],
        -    "type": "object"
        -  }
        -]New value: +[
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "_meta": {
        +        "additionalProperties": false,
        +        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        +        "properties": {
        +          "deliverables": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        +                "properties": {
        +                  "docx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "dxf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "expires_at": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  },
        +                  "pdf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "xlsx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "expires_at"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "document_id": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "issued_at": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "rate_limit_remaining": {
        +            "anyOf": [
        +              {
        +                "minimum": 0,
        +                "type": "integer"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "request_id": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "schema_version": {
        +            "const": "1.0.0",
        +            "default": "1.0.0",
        +            "type": "string"
        +          },
        +          "scope_boundary": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        +                "properties": {
        +                  "not_in_scope": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "produced": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "recommended_companions": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "type": "string"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "produced",
        +                  "not_in_scope"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tier": {
        +            "enum": [
        +              "free",
        +              "paid"
        +            ],
        +            "type": "string"
        +          },
        +          "tier_upgrade": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        +                "properties": {
        +                  "available_tiers": {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        +                      "properties": {
        +                        "billing": {
        +                          "enum": [
        +                            "one_off",
        +                            "monthly",
        +                            "annual"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "currency": {
        +                          "enum": [
        +                            "GBP",
        +                            "SGD",
        +                            "EUR",
        +                            "USD",
        +                            "CAD",
        +                            "AUD",
        +                            "NZD",
        +                            "MYR"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "display_name": {
        +                          "type": "string"
        +                        },
        +                        "price_local": {
        +                          "type": "number"
        +                        },
        +                        "tier_slug": {
        +                          "enum": [
        +                            "7_day_pass",
        +                            "solo",
        +                            "studio",
        +                            "practice"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "unlock_summary": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "tier_slug",
        +                        "display_name",
        +                        "price_local",
        +                        "currency",
        +                        "billing",
        +                        "unlock_summary"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "current_tier": {
        +                    "const": "free",
        +                    "default": "free",
        +                    "type": "string"
        +                  },
        +                  "pass_credit": {
        +                    "anyOf": [
        +                      {
        +                        "additionalProperties": false,
        +                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        +                        "properties": {
        +                          "amount_local": {
        +                            "type": "number"
        +                          },
        +                          "applies_to": {
        +                            "const": "solo_first_month",
        +                            "default": "solo_first_month",
        +                            "type": "string"
        +                          },
        +                          "currency": {
        +                            "type": "string"
        +                          },
        +                          "redeemable_until": {
        +                            "type": "string"
        +                          }
        +                        },
        +                        "required": [
        +                          "amount_local",
        +                          "currency",
        +                          "redeemable_until"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "pricing_url": {
        +                    "default": "https://civilquants.com/pricing",
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "available_tiers"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tos_url": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "upgrade_hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "warranty_disclaimer": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          }
        +        },
        +        "required": [
        +          "request_id",
        +          "issued_at",
        +          "tier"
        +        ],
        +        "type": "object"
        +      },
        +      "data": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Schema § 1.1 — the typed payload returned inside `MCPResponse[ComputeResult]`.\n\nFree-tier responses MUST omit `drawings` and `audit_trail` (the bridge\nenforces this); paid-tier responses populate both. `text_summary` is\nbounded to 2000 chars — keeps the LLM-facing summary token-cheap and\nforces longer narrative into BoQ row descriptions where it belongs.\n`warnings` is the non-fatal geometry advisory list (both tiers).",
        +            "properties": {
        +              "assembly_slug": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "audit_trail": {
        +                "anyOf": [
        +                  {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.7 — paid-tier audit-trail entry.\n\nOne entry per BoQ row; `boq_row_index` ties to the row position in\n`ComputeResult.boq_rows`. `derivation` is the human-readable formula\nwalk-through; `formula` is the optional formal expression.",
        +                      "properties": {
        +                        "boq_row_index": {
        +                          "minimum": 0,
        +                          "type": "integer"
        +                        },
        +                        "derivation": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "formula": {
        +                          "anyOf": [
        +                            {
        +                              "type": "string"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ],
        +                          "default": null
        +                        },
        +                        "id": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "parameters_referenced": {
        +                          "items": {
        +                            "type": "string"
        +                          },
        +                          "type": "array"
        +                        }
        +                      },
        +                      "required": [
        +                        "id",
        +                        "boq_row_index",
        +                        "derivation"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "boq_rows": {
        +                "items": {
        +                  "additionalProperties": false,
        +                  "description": "Schema § 1.3 — a single bill row in the requested standard's format.\n\n`description` is the non-verbatim functional description per spec § 13.9 /\n§ 15 invariant — NEVER reproduces a standard's verbatim clause text.\n`rate` / `amount` ship null because rates are commodity data the customer\nowns; the engine's job is the measurement, not the pricing.",
        +                  "properties": {
        +                    "amount": {
        +                      "anyOf": [
        +                        {
        +                          "type": "number"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "attribution": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "audit_id": {
        +                      "anyOf": [
        +                        {
        +                          "type": "string"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "description": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "quantity": {
        +                      "minimum": 0,
        +                      "type": "number"
        +                    },
        +                    "rate": {
        +                      "anyOf": [
        +                        {
        +                          "type": "number"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "unit": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "work_section": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    }
        +                  },
        +                  "required": [
        +                    "work_section",
        +                    "description",
        +                    "quantity",
        +                    "unit",
        +                    "attribution"
        +                  ],
        +                  "type": "object"
        +                },
        +                "type": "array"
        +              },
        +              "drawings": {
        +                "anyOf": [
        +                  {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.6 — paid-tier drawing artefact pointer.\n\n`url` is an R2-signed URL; expiry is carried in `_meta.deliverables.expires_at`\non the envelope (not duplicated here). `layers` is DXF-only; PDF/SVG\ncallers omit it.",
        +                      "properties": {
        +                        "drawing_type": {
        +                          "enum": [
        +                            "section",
        +                            "plan",
        +                            "elevation",
        +                            "isometric",
        +                            "detail"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "format": {
        +                          "enum": [
        +                            "DXF",
        +                            "PDF",
        +                            "SVG"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "layers": {
        +                          "anyOf": [
        +                            {
        +                              "items": {
        +                                "type": "string"
        +                              },
        +                              "type": "array"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ],
        +                          "default": null
        +                        },
        +                        "scale": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "sheet_size": {
        +                          "enum": [
        +                            "A1",
        +                            "A2",
        +                            "A3",
        +                            "A4"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "url": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "drawing_type",
        +                        "format",
        +                        "url",
        +                        "sheet_size",
        +                        "scale"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "parameters_used": {
        +                "additionalProperties": false,
        +                "description": "Schema § 1.2 — the parameter snapshot the engine actually used.\n\nSplits user-supplied values from engine defaults so customers can see\nwhich numbers came from them and which the engine filled in. Every\ndefaulted parameter SHOULD have a corresponding entry in `assumptions`\n— the bridge layer enforces this when wrapping engine output.",
        +                "properties": {
        +                  "assumptions": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "engine_defaults": {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  "resolved_from_description": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "additionalProperties": false,
        +                          "description": "Schema § 1.2 — a parameter resolved by the forgiving-input layer.\n\nPopulated by the Track B-Forgiving Haiku-4.5 resolution pass; until that\nlayer lands, instances are constructed only by tests. `source` distinguishes\nthe resolution path so customers can audit which fields were inferred.",
        +                          "properties": {
        +                            "confidence": {
        +                              "anyOf": [
        +                                {
        +                                  "enum": [
        +                                    "high",
        +                                    "medium",
        +                                    "low"
        +                                  ],
        +                                  "type": "string"
        +                                },
        +                                {
        +                                  "type": "null"
        +                                }
        +                              ],
        +                              "default": null
        +                            },
        +                            "field_name": {
        +                              "minLength": 1,
        +                              "type": "string"
        +                            },
        +                            "resolved_value": {},
        +                            "source": {
        +                              "enum": [
        +                                "description_field",
        +                                "haiku_resolution",
        +                                "engine_default"
        +                              ],
        +                              "type": "string"
        +                            }
        +                          },
        +                          "required": [
        +                            "field_name",
        +                            "resolved_value",
        +                            "source"
        +                          ],
        +                          "type": "object"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "user_supplied": {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  }
        +                },
        +                "type": "object"
        +              },
        +              "standard": {
        +                "enum": [
        +                  "CESMM4",
        +                  "NRM2",
        +                  "SMM7",
        +                  "MMHW"
        +                ],
        +                "type": "string"
        +              },
        +              "text_summary": {
        +                "maxLength": 2000,
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "totals_summary": {
        +                "additionalProperties": false,
        +                "description": "Schema § 1.4 — totals_summary as a typed wrapper around the free-form dict.\n\nWire shape is a flat object (`{\"concrete_m3\": {...}, \"rebar_t\": {...}}`).\nWe model it as `RootModel`-equivalent via `model_config(extra=\"allow\")`\n+ a single `__root__`-style `entries` dict. Pydantic v2 recommends\n`RootModel` for free-form roots; using a wrapper class keeps the import\nsurface uniform with the rest of this module.",
        +                "properties": {
        +                  "entries": {
        +                    "additionalProperties": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.4 — single material/work-class total entry.",
        +                      "properties": {
        +                        "quantity": {
        +                          "minimum": 0,
        +                          "type": "number"
        +                        },
        +                        "unit": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "quantity",
        +                        "unit"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "object"
        +                  }
        +                },
        +                "type": "object"
        +              },
        +              "warnings": {
        +                "items": {
        +                  "additionalProperties": false,
        +                  "description": "Schema § 1.8 — a non-fatal geometry advisory (56th-fire T2).\n\nThe wire projection of the engine's `core.GeometryWarning`. Advisory only:\na warning NEVER changes a measured quantity — it flags geometry that is\nvalid but likely a mistake (e.g. a stale dependent-height default). Present\non BOTH tiers — a correctness/safety signal, not a paid feature.",
        +                  "properties": {
        +                    "affected_params": {
        +                      "items": {
        +                        "type": "string"
        +                      },
        +                      "type": "array"
        +                    },
        +                    "code": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "detail": {
        +                      "additionalProperties": {
        +                        "type": "number"
        +                      },
        +                      "type": "object"
        +                    },
        +                    "message": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "severity": {
        +                      "enum": [
        +                        "info",
        +                        "advisory",
        +                        "caution"
        +                      ],
        +                      "type": "string"
        +                    }
        +                  },
        +                  "required": [
        +                    "code",
        +                    "severity",
        +                    "message"
        +                  ],
        +                  "type": "object"
        +                },
        +                "type": "array"
        +              }
        +            },
        +            "required": [
        +              "assembly_slug",
        +              "standard",
        +              "parameters_used",
        +              "boq_rows",
        +              "totals_summary",
        +              "text_summary"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      },
        +      "error": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        +            "properties": {
        +              "code": {
        +                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        +                "enum": [
        +                  "RATE_LIMIT_EXCEEDED",
        +                  "TIER_INSUFFICIENT",
        +                  "INVALID_INPUT",
        +                  "SCHEMA_VERSION_MISMATCH",
        +                  "SCHEMA_INVARIANT_VIOLATION",
        +                  "UPSTREAM_TIMEOUT",
        +                  "BACKEND_FAILURE",
        +                  "IP_BLOCKED",
        +                  "RESOURCE_NOT_FOUND",
        +                  "RENDER_FAILURE",
        +                  "OCR_LOW_CONFIDENCE",
        +                  "MANUAL_REVIEW_REQUIRED",
        +                  "ACCEPTANCE_REQUIRED",
        +                  "INVALID_TOKEN"
        +                ],
        +                "type": "string"
        +              },
        +              "details": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "message": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "recoverable": {
        +                "type": "boolean"
        +              },
        +              "retry_after_seconds": {
        +                "anyOf": [
        +                  {
        +                    "minimum": 0,
        +                    "type": "integer"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              }
        +            },
        +            "required": [
        +              "code",
        +              "message",
        +              "recoverable"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      }
        +    },
        +    "required": [
        +      "_meta"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "_meta": {
        +        "additionalProperties": false,
        +        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        +        "properties": {
        +          "deliverables": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        +                "properties": {
        +                  "docx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "dxf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "expires_at": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  },
        +                  "pdf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "xlsx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "expires_at"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "document_id": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "issued_at": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "rate_limit_remaining": {
        +            "anyOf": [
        +              {
        +                "minimum": 0,
        +                "type": "integer"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "request_id": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "schema_version": {
        +            "const": "1.0.0",
        +            "default": "1.0.0",
        +            "type": "string"
        +          },
        +          "scope_boundary": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        +                "properties": {
        +                  "not_in_scope": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "produced": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "recommended_companions": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "type": "string"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "produced",
        +                  "not_in_scope"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tier": {
        +            "enum": [
        +              "free",
        +              "paid"
        +            ],
        +            "type": "string"
        +          },
        +          "tier_upgrade": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        +                "properties": {
        +                  "available_tiers": {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        +                      "properties": {
        +                        "billing": {
        +                          "enum": [
        +                            "one_off",
        +                            "monthly",
        +                            "annual"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "currency": {
        +                          "enum": [
        +                            "GBP",
        +                            "SGD",
        +                            "EUR",
        +                            "USD",
        +                            "CAD",
        +                            "AUD",
        +                            "NZD",
        +                            "MYR"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "display_name": {
        +                          "type": "string"
        +                        },
        +                        "price_local": {
        +                          "type": "number"
        +                        },
        +                        "tier_slug": {
        +                          "enum": [
        +                            "7_day_pass",
        +                            "solo",
        +                            "studio",
        +                            "practice"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "unlock_summary": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "tier_slug",
        +                        "display_name",
        +                        "price_local",
        +                        "currency",
        +                        "billing",
        +                        "unlock_summary"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "current_tier": {
        +                    "const": "free",
        +                    "default": "free",
        +                    "type": "string"
        +                  },
        +                  "pass_credit": {
        +                    "anyOf": [
        +                      {
        +                        "additionalProperties": false,
        +                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        +                        "properties": {
        +                          "amount_local": {
        +                            "type": "number"
        +                          },
        +                          "applies_to": {
        +                            "const": "solo_first_month",
        +                            "default": "solo_first_month",
        +                            "type": "string"
        +                          },
        +                          "currency": {
        +                            "type": "string"
        +                          },
        +                          "redeemable_until": {
        +                            "type": "string"
        +                          }
        +                        },
        +                        "required": [
        +                          "amount_local",
        +                          "currency",
        +                          "redeemable_until"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "pricing_url": {
        +                    "default": "https://civilquants.com/pricing",
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "available_tiers"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tos_url": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "upgrade_hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "warranty_disclaimer": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          }
        +        },
        +        "required": [
        +          "request_id",
        +          "issued_at",
        +          "tier"
        +        ],
        +        "type": "object"
        +      },
        +      "data": {
        +        "default": null,
        +        "title": "Data"
        +      },
        +      "error": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        +            "properties": {
        +              "code": {
        +                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        +                "enum": [
        +                  "RATE_LIMIT_EXCEEDED",
        +                  "TIER_INSUFFICIENT",
        +                  "INVALID_INPUT",
        +                  "SCHEMA_VERSION_MISMATCH",
        +                  "SCHEMA_INVARIANT_VIOLATION",
        +                  "UPSTREAM_TIMEOUT",
        +                  "BACKEND_FAILURE",
        +                  "IP_BLOCKED",
        +                  "RESOURCE_NOT_FOUND",
        +                  "RENDER_FAILURE",
        +                  "OCR_LOW_CONFIDENCE",
        +                  "MANUAL_REVIEW_REQUIRED",
        +                  "ACCEPTANCE_REQUIRED",
        +                  "INVALID_TOKEN"
        +                ],
        +                "type": "string"
        +              },
        +              "details": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "message": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "recoverable": {
        +                "type": "boolean"
        +              },
        +              "retry_after_seconds": {
        +                "anyOf": [
        +                  {
        +                    "minimum": 0,
        +                    "type": "integer"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              }
        +            },
        +            "required": [
        +              "code",
        +              "message",
        +              "recoverable"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      }
        +    },
        +    "required": [
        +      "_meta"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedcompute_parapet1 field changed
      • changedOutput schema / properties / result / anyOf
        Previous value: -[
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "_meta": {
        -        "additionalProperties": false,
        -        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        -        "properties": {
        -          "deliverables": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        -                "properties": {
        -                  "docx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "dxf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "expires_at": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  },
        -                  "pdf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "xlsx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "expires_at"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "document_id": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "issued_at": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "rate_limit_remaining": {
        -            "anyOf": [
        -              {
        -                "minimum": 0,
        -                "type": "integer"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "request_id": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "schema_version": {
        -            "const": "1.0.0",
        -            "default": "1.0.0",
        -            "type": "string"
        -          },
        -          "scope_boundary": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        -                "properties": {
        -                  "not_in_scope": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "produced": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "recommended_companions": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "type": "string"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "produced",
        -                  "not_in_scope"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tier": {
        -            "enum": [
        -              "free",
        -              "paid"
        -            ],
        -            "type": "string"
        -          },
        -          "tier_upgrade": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        -                "properties": {
        -                  "available_tiers": {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        -                      "properties": {
        -                        "billing": {
        -                          "enum": [
        -                            "one_off",
        -                            "monthly",
        -                            "annual"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "currency": {
        -                          "enum": [
        -                            "GBP",
        -                            "SGD",
        -                            "EUR",
        -                            "USD",
        -                            "CAD",
        -                            "AUD",
        -                            "NZD",
        -                            "MYR"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "display_name": {
        -                          "type": "string"
        -                        },
        -                        "price_local": {
        -                          "type": "number"
        -                        },
        -                        "tier_slug": {
        -                          "enum": [
        -                            "7_day_pass",
        -                            "solo",
        -                            "studio",
        -                            "practice"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "unlock_summary": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "tier_slug",
        -                        "display_name",
        -                        "price_local",
        -                        "currency",
        -                        "billing",
        -                        "unlock_summary"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "current_tier": {
        -                    "const": "free",
        -                    "default": "free",
        -                    "type": "string"
        -                  },
        -                  "pass_credit": {
        -                    "anyOf": [
        -                      {
        -                        "additionalProperties": false,
        -                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        -                        "properties": {
        -                          "amount_local": {
        -                            "type": "number"
        -                          },
        -                          "applies_to": {
        -                            "const": "solo_first_month",
        -                            "default": "solo_first_month",
        -                            "type": "string"
        -                          },
        -                          "currency": {
        -                            "type": "string"
        -                          },
        -                          "redeemable_until": {
        -                            "type": "string"
        -                          }
        -                        },
        -                        "required": [
        -                          "amount_local",
        -                          "currency",
        -                          "redeemable_until"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "pricing_url": {
        -                    "default": "https://civilquants.com/pricing",
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "available_tiers"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tos_url": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "upgrade_hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "warranty_disclaimer": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          }
        -        },
        -        "required": [
        -          "request_id",
        -          "issued_at",
        -          "tier"
        -        ],
        -        "type": "object"
        -      },
        -      "data": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Schema § 1.1 — the typed payload returned inside `MCPResponse[ComputeResult]`.\n\nFree-tier responses MUST omit `drawings` and `audit_trail` (the bridge\nenforces this); paid-tier responses populate both. `text_summary` is\nbounded to 2000 chars — keeps the LLM-facing summary token-cheap and\nforces longer narrative into BoQ row descriptions where it belongs.",
        -            "properties": {
        -              "assembly_slug": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "audit_trail": {
        -                "anyOf": [
        -                  {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.7 — paid-tier audit-trail entry.\n\nOne entry per BoQ row; `boq_row_index` ties to the row position in\n`ComputeResult.boq_rows`. `derivation` is the human-readable formula\nwalk-through; `formula` is the optional formal expression.",
        -                      "properties": {
        -                        "boq_row_index": {
        -                          "minimum": 0,
        -                          "type": "integer"
        -                        },
        -                        "derivation": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "formula": {
        -                          "anyOf": [
        -                            {
        -                              "type": "string"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ],
        -                          "default": null
        -                        },
        -                        "id": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "parameters_referenced": {
        -                          "items": {
        -                            "type": "string"
        -                          },
        -                          "type": "array"
        -                        }
        -                      },
        -                      "required": [
        -                        "id",
        -                        "boq_row_index",
        -                        "derivation"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "boq_rows": {
        -                "items": {
        -                  "additionalProperties": false,
        -                  "description": "Schema § 1.3 — a single bill row in the requested standard's format.\n\n`description` is the non-verbatim functional description per spec § 13.9 /\n§ 15 invariant — NEVER reproduces a standard's verbatim clause text.\n`rate` / `amount` ship null because rates are commodity data the customer\nowns; the engine's job is the measurement, not the pricing.",
        -                  "properties": {
        -                    "amount": {
        -                      "anyOf": [
        -                        {
        -                          "type": "number"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "attribution": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "audit_id": {
        -                      "anyOf": [
        -                        {
        -                          "type": "string"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "description": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "quantity": {
        -                      "minimum": 0,
        -                      "type": "number"
        -                    },
        -                    "rate": {
        -                      "anyOf": [
        -                        {
        -                          "type": "number"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "unit": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "work_section": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    }
        -                  },
        -                  "required": [
        -                    "work_section",
        -                    "description",
        -                    "quantity",
        -                    "unit",
        -                    "attribution"
        -                  ],
        -                  "type": "object"
        -                },
        -                "type": "array"
        -              },
        -              "drawings": {
        -                "anyOf": [
        -                  {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.6 — paid-tier drawing artefact pointer.\n\n`url` is an R2-signed URL; expiry is carried in `_meta.deliverables.expires_at`\non the envelope (not duplicated here). `layers` is DXF-only; PDF/SVG\ncallers omit it.",
        -                      "properties": {
        -                        "drawing_type": {
        -                          "enum": [
        -                            "section",
        -                            "plan",
        -                            "elevation",
        -                            "isometric",
        -                            "detail"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "format": {
        -                          "enum": [
        -                            "DXF",
        -                            "PDF",
        -                            "SVG"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "layers": {
        -                          "anyOf": [
        -                            {
        -                              "items": {
        -                                "type": "string"
        -                              },
        -                              "type": "array"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ],
        -                          "default": null
        -                        },
        -                        "scale": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "sheet_size": {
        -                          "enum": [
        -                            "A1",
        -                            "A2",
        -                            "A3",
        -                            "A4"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "url": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "drawing_type",
        -                        "format",
        -                        "url",
        -                        "sheet_size",
        -                        "scale"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "parameters_used": {
        -                "additionalProperties": false,
        -                "description": "Schema § 1.2 — the parameter snapshot the engine actually used.\n\nSplits user-supplied values from engine defaults so customers can see\nwhich numbers came from them and which the engine filled in. Every\ndefaulted parameter SHOULD have a corresponding entry in `assumptions`\n— the bridge layer enforces this when wrapping engine output.",
        -                "properties": {
        -                  "assumptions": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "engine_defaults": {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  "resolved_from_description": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "additionalProperties": false,
        -                          "description": "Schema § 1.2 — a parameter resolved by the forgiving-input layer.\n\nPopulated by the Track B-Forgiving Haiku-4.5 resolution pass; until that\nlayer lands, instances are constructed only by tests. `source` distinguishes\nthe resolution path so customers can audit which fields were inferred.",
        -                          "properties": {
        -                            "confidence": {
        -                              "anyOf": [
        -                                {
        -                                  "enum": [
        -                                    "high",
        -                                    "medium",
        -                                    "low"
        -                                  ],
        -                                  "type": "string"
        -                                },
        -                                {
        -                                  "type": "null"
        -                                }
        -                              ],
        -                              "default": null
        -                            },
        -                            "field_name": {
        -                              "minLength": 1,
        -                              "type": "string"
        -                            },
        -                            "resolved_value": {},
        -                            "source": {
        -                              "enum": [
        -                                "description_field",
        -                                "haiku_resolution",
        -                                "engine_default"
        -                              ],
        -                              "type": "string"
        -                            }
        -                          },
        -                          "required": [
        -                            "field_name",
        -                            "resolved_value",
        -                            "source"
        -                          ],
        -                          "type": "object"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "user_supplied": {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  }
        -                },
        -                "type": "object"
        -              },
        -              "standard": {
        -                "enum": [
        -                  "CESMM4",
        -                  "NRM2",
        -                  "SMM7",
        -                  "MMHW"
        -                ],
        -                "type": "string"
        -              },
        -              "text_summary": {
        -                "maxLength": 2000,
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "totals_summary": {
        -                "additionalProperties": false,
        -                "description": "Schema § 1.4 — totals_summary as a typed wrapper around the free-form dict.\n\nWire shape is a flat object (`{\"concrete_m3\": {...}, \"rebar_t\": {...}}`).\nWe model it as `RootModel`-equivalent via `model_config(extra=\"allow\")`\n+ a single `__root__`-style `entries` dict. Pydantic v2 recommends\n`RootModel` for free-form roots; using a wrapper class keeps the import\nsurface uniform with the rest of this module.",
        -                "properties": {
        -                  "entries": {
        -                    "additionalProperties": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.4 — single material/work-class total entry.",
        -                      "properties": {
        -                        "quantity": {
        -                          "minimum": 0,
        -                          "type": "number"
        -                        },
        -                        "unit": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "quantity",
        -                        "unit"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "object"
        -                  }
        -                },
        -                "type": "object"
        -              }
        -            },
        -            "required": [
        -              "assembly_slug",
        -              "standard",
        -              "parameters_used",
        -              "boq_rows",
        -              "totals_summary",
        -              "text_summary"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      },
        -      "error": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        -            "properties": {
        -              "code": {
        -                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        -                "enum": [
        -                  "RATE_LIMIT_EXCEEDED",
        -                  "TIER_INSUFFICIENT",
        -                  "INVALID_INPUT",
        -                  "SCHEMA_VERSION_MISMATCH",
        -                  "SCHEMA_INVARIANT_VIOLATION",
        -                  "UPSTREAM_TIMEOUT",
        -                  "BACKEND_FAILURE",
        -                  "IP_BLOCKED",
        -                  "RESOURCE_NOT_FOUND",
        -                  "RENDER_FAILURE",
        -                  "OCR_LOW_CONFIDENCE",
        -                  "MANUAL_REVIEW_REQUIRED",
        -                  "ACCEPTANCE_REQUIRED",
        -                  "INVALID_TOKEN"
        -                ],
        -                "type": "string"
        -              },
        -              "details": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "message": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "recoverable": {
        -                "type": "boolean"
        -              },
        -              "retry_after_seconds": {
        -                "anyOf": [
        -                  {
        -                    "minimum": 0,
        -                    "type": "integer"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              }
        -            },
        -            "required": [
        -              "code",
        -              "message",
        -              "recoverable"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      }
        -    },
        -    "required": [
        -      "_meta"
        -    ],
        -    "type": "object"
        -  },
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "_meta": {
        -        "additionalProperties": false,
        -        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        -        "properties": {
        -          "deliverables": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        -                "properties": {
        -                  "docx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "dxf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "expires_at": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  },
        -                  "pdf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "xlsx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "expires_at"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "document_id": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "issued_at": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "rate_limit_remaining": {
        -            "anyOf": [
        -              {
        -                "minimum": 0,
        -                "type": "integer"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "request_id": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "schema_version": {
        -            "const": "1.0.0",
        -            "default": "1.0.0",
        -            "type": "string"
        -          },
        -          "scope_boundary": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        -                "properties": {
        -                  "not_in_scope": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "produced": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "recommended_companions": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "type": "string"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "produced",
        -                  "not_in_scope"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tier": {
        -            "enum": [
        -              "free",
        -              "paid"
        -            ],
        -            "type": "string"
        -          },
        -          "tier_upgrade": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        -                "properties": {
        -                  "available_tiers": {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        -                      "properties": {
        -                        "billing": {
        -                          "enum": [
        -                            "one_off",
        -                            "monthly",
        -                            "annual"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "currency": {
        -                          "enum": [
        -                            "GBP",
        -                            "SGD",
        -                            "EUR",
        -                            "USD",
        -                            "CAD",
        -                            "AUD",
        -                            "NZD",
        -                            "MYR"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "display_name": {
        -                          "type": "string"
        -                        },
        -                        "price_local": {
        -                          "type": "number"
        -                        },
        -                        "tier_slug": {
        -                          "enum": [
        -                            "7_day_pass",
        -                            "solo",
        -                            "studio",
        -                            "practice"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "unlock_summary": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "tier_slug",
        -                        "display_name",
        -                        "price_local",
        -                        "currency",
        -                        "billing",
        -                        "unlock_summary"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "current_tier": {
        -                    "const": "free",
        -                    "default": "free",
        -                    "type": "string"
        -                  },
        -                  "pass_credit": {
        -                    "anyOf": [
        -                      {
        -                        "additionalProperties": false,
        -                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        -                        "properties": {
        -                          "amount_local": {
        -                            "type": "number"
        -                          },
        -                          "applies_to": {
        -                            "const": "solo_first_month",
        -                            "default": "solo_first_month",
        -                            "type": "string"
        -                          },
        -                          "currency": {
        -                            "type": "string"
        -                          },
        -                          "redeemable_until": {
        -                            "type": "string"
        -                          }
        -                        },
        -                        "required": [
        -                          "amount_local",
        -                          "currency",
        -                          "redeemable_until"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "pricing_url": {
        -                    "default": "https://civilquants.com/pricing",
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "available_tiers"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tos_url": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "upgrade_hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "warranty_disclaimer": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          }
        -        },
        -        "required": [
        -          "request_id",
        -          "issued_at",
        -          "tier"
        -        ],
        -        "type": "object"
        -      },
        -      "data": {
        -        "default": null,
        -        "title": "Data"
        -      },
        -      "error": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        -            "properties": {
        -              "code": {
        -                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        -                "enum": [
        -                  "RATE_LIMIT_EXCEEDED",
        -                  "TIER_INSUFFICIENT",
        -                  "INVALID_INPUT",
        -                  "SCHEMA_VERSION_MISMATCH",
        -                  "SCHEMA_INVARIANT_VIOLATION",
        -                  "UPSTREAM_TIMEOUT",
        -                  "BACKEND_FAILURE",
        -                  "IP_BLOCKED",
        -                  "RESOURCE_NOT_FOUND",
        -                  "RENDER_FAILURE",
        -                  "OCR_LOW_CONFIDENCE",
        -                  "MANUAL_REVIEW_REQUIRED",
        -                  "ACCEPTANCE_REQUIRED",
        -                  "INVALID_TOKEN"
        -                ],
        -                "type": "string"
        -              },
        -              "details": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "message": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "recoverable": {
        -                "type": "boolean"
        -              },
        -              "retry_after_seconds": {
        -                "anyOf": [
        -                  {
        -                    "minimum": 0,
        -                    "type": "integer"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              }
        -            },
        -            "required": [
        -              "code",
        -              "message",
        -              "recoverable"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      }
        -    },
        -    "required": [
        -      "_meta"
        -    ],
        -    "type": "object"
        -  }
        -]New value: +[
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "_meta": {
        +        "additionalProperties": false,
        +        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        +        "properties": {
        +          "deliverables": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        +                "properties": {
        +                  "docx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "dxf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "expires_at": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  },
        +                  "pdf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "xlsx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "expires_at"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "document_id": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "issued_at": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "rate_limit_remaining": {
        +            "anyOf": [
        +              {
        +                "minimum": 0,
        +                "type": "integer"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "request_id": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "schema_version": {
        +            "const": "1.0.0",
        +            "default": "1.0.0",
        +            "type": "string"
        +          },
        +          "scope_boundary": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        +                "properties": {
        +                  "not_in_scope": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "produced": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "recommended_companions": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "type": "string"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "produced",
        +                  "not_in_scope"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tier": {
        +            "enum": [
        +              "free",
        +              "paid"
        +            ],
        +            "type": "string"
        +          },
        +          "tier_upgrade": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        +                "properties": {
        +                  "available_tiers": {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        +                      "properties": {
        +                        "billing": {
        +                          "enum": [
        +                            "one_off",
        +                            "monthly",
        +                            "annual"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "currency": {
        +                          "enum": [
        +                            "GBP",
        +                            "SGD",
        +                            "EUR",
        +                            "USD",
        +                            "CAD",
        +                            "AUD",
        +                            "NZD",
        +                            "MYR"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "display_name": {
        +                          "type": "string"
        +                        },
        +                        "price_local": {
        +                          "type": "number"
        +                        },
        +                        "tier_slug": {
        +                          "enum": [
        +                            "7_day_pass",
        +                            "solo",
        +                            "studio",
        +                            "practice"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "unlock_summary": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "tier_slug",
        +                        "display_name",
        +                        "price_local",
        +                        "currency",
        +                        "billing",
        +                        "unlock_summary"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "current_tier": {
        +                    "const": "free",
        +                    "default": "free",
        +                    "type": "string"
        +                  },
        +                  "pass_credit": {
        +                    "anyOf": [
        +                      {
        +                        "additionalProperties": false,
        +                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        +                        "properties": {
        +                          "amount_local": {
        +                            "type": "number"
        +                          },
        +                          "applies_to": {
        +                            "const": "solo_first_month",
        +                            "default": "solo_first_month",
        +                            "type": "string"
        +                          },
        +                          "currency": {
        +                            "type": "string"
        +                          },
        +                          "redeemable_until": {
        +                            "type": "string"
        +                          }
        +                        },
        +                        "required": [
        +                          "amount_local",
        +                          "currency",
        +                          "redeemable_until"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "pricing_url": {
        +                    "default": "https://civilquants.com/pricing",
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "available_tiers"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tos_url": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "upgrade_hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "warranty_disclaimer": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          }
        +        },
        +        "required": [
        +          "request_id",
        +          "issued_at",
        +          "tier"
        +        ],
        +        "type": "object"
        +      },
        +      "data": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Schema § 1.1 — the typed payload returned inside `MCPResponse[ComputeResult]`.\n\nFree-tier responses MUST omit `drawings` and `audit_trail` (the bridge\nenforces this); paid-tier responses populate both. `text_summary` is\nbounded to 2000 chars — keeps the LLM-facing summary token-cheap and\nforces longer narrative into BoQ row descriptions where it belongs.\n`warnings` is the non-fatal geometry advisory list (both tiers).",
        +            "properties": {
        +              "assembly_slug": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "audit_trail": {
        +                "anyOf": [
        +                  {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.7 — paid-tier audit-trail entry.\n\nOne entry per BoQ row; `boq_row_index` ties to the row position in\n`ComputeResult.boq_rows`. `derivation` is the human-readable formula\nwalk-through; `formula` is the optional formal expression.",
        +                      "properties": {
        +                        "boq_row_index": {
        +                          "minimum": 0,
        +                          "type": "integer"
        +                        },
        +                        "derivation": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "formula": {
        +                          "anyOf": [
        +                            {
        +                              "type": "string"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ],
        +                          "default": null
        +                        },
        +                        "id": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "parameters_referenced": {
        +                          "items": {
        +                            "type": "string"
        +                          },
        +                          "type": "array"
        +                        }
        +                      },
        +                      "required": [
        +                        "id",
        +                        "boq_row_index",
        +                        "derivation"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "boq_rows": {
        +                "items": {
        +                  "additionalProperties": false,
        +                  "description": "Schema § 1.3 — a single bill row in the requested standard's format.\n\n`description` is the non-verbatim functional description per spec § 13.9 /\n§ 15 invariant — NEVER reproduces a standard's verbatim clause text.\n`rate` / `amount` ship null because rates are commodity data the customer\nowns; the engine's job is the measurement, not the pricing.",
        +                  "properties": {
        +                    "amount": {
        +                      "anyOf": [
        +                        {
        +                          "type": "number"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "attribution": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "audit_id": {
        +                      "anyOf": [
        +                        {
        +                          "type": "string"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "description": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "quantity": {
        +                      "minimum": 0,
        +                      "type": "number"
        +                    },
        +                    "rate": {
        +                      "anyOf": [
        +                        {
        +                          "type": "number"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "unit": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "work_section": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    }
        +                  },
        +                  "required": [
        +                    "work_section",
        +                    "description",
        +                    "quantity",
        +                    "unit",
        +                    "attribution"
        +                  ],
        +                  "type": "object"
        +                },
        +                "type": "array"
        +              },
        +              "drawings": {
        +                "anyOf": [
        +                  {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.6 — paid-tier drawing artefact pointer.\n\n`url` is an R2-signed URL; expiry is carried in `_meta.deliverables.expires_at`\non the envelope (not duplicated here). `layers` is DXF-only; PDF/SVG\ncallers omit it.",
        +                      "properties": {
        +                        "drawing_type": {
        +                          "enum": [
        +                            "section",
        +                            "plan",
        +                            "elevation",
        +                            "isometric",
        +                            "detail"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "format": {
        +                          "enum": [
        +                            "DXF",
        +                            "PDF",
        +                            "SVG"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "layers": {
        +                          "anyOf": [
        +                            {
        +                              "items": {
        +                                "type": "string"
        +                              },
        +                              "type": "array"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ],
        +                          "default": null
        +                        },
        +                        "scale": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "sheet_size": {
        +                          "enum": [
        +                            "A1",
        +                            "A2",
        +                            "A3",
        +                            "A4"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "url": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "drawing_type",
        +                        "format",
        +                        "url",
        +                        "sheet_size",
        +                        "scale"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "parameters_used": {
        +                "additionalProperties": false,
        +                "description": "Schema § 1.2 — the parameter snapshot the engine actually used.\n\nSplits user-supplied values from engine defaults so customers can see\nwhich numbers came from them and which the engine filled in. Every\ndefaulted parameter SHOULD have a corresponding entry in `assumptions`\n— the bridge layer enforces this when wrapping engine output.",
        +                "properties": {
        +                  "assumptions": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "engine_defaults": {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  "resolved_from_description": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "additionalProperties": false,
        +                          "description": "Schema § 1.2 — a parameter resolved by the forgiving-input layer.\n\nPopulated by the Track B-Forgiving Haiku-4.5 resolution pass; until that\nlayer lands, instances are constructed only by tests. `source` distinguishes\nthe resolution path so customers can audit which fields were inferred.",
        +                          "properties": {
        +                            "confidence": {
        +                              "anyOf": [
        +                                {
        +                                  "enum": [
        +                                    "high",
        +                                    "medium",
        +                                    "low"
        +                                  ],
        +                                  "type": "string"
        +                                },
        +                                {
        +                                  "type": "null"
        +                                }
        +                              ],
        +                              "default": null
        +                            },
        +                            "field_name": {
        +                              "minLength": 1,
        +                              "type": "string"
        +                            },
        +                            "resolved_value": {},
        +                            "source": {
        +                              "enum": [
        +                                "description_field",
        +                                "haiku_resolution",
        +                                "engine_default"
        +                              ],
        +                              "type": "string"
        +                            }
        +                          },
        +                          "required": [
        +                            "field_name",
        +                            "resolved_value",
        +                            "source"
        +                          ],
        +                          "type": "object"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "user_supplied": {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  }
        +                },
        +                "type": "object"
        +              },
        +              "standard": {
        +                "enum": [
        +                  "CESMM4",
        +                  "NRM2",
        +                  "SMM7",
        +                  "MMHW"
        +                ],
        +                "type": "string"
        +              },
        +              "text_summary": {
        +                "maxLength": 2000,
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "totals_summary": {
        +                "additionalProperties": false,
        +                "description": "Schema § 1.4 — totals_summary as a typed wrapper around the free-form dict.\n\nWire shape is a flat object (`{\"concrete_m3\": {...}, \"rebar_t\": {...}}`).\nWe model it as `RootModel`-equivalent via `model_config(extra=\"allow\")`\n+ a single `__root__`-style `entries` dict. Pydantic v2 recommends\n`RootModel` for free-form roots; using a wrapper class keeps the import\nsurface uniform with the rest of this module.",
        +                "properties": {
        +                  "entries": {
        +                    "additionalProperties": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.4 — single material/work-class total entry.",
        +                      "properties": {
        +                        "quantity": {
        +                          "minimum": 0,
        +                          "type": "number"
        +                        },
        +                        "unit": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "quantity",
        +                        "unit"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "object"
        +                  }
        +                },
        +                "type": "object"
        +              },
        +              "warnings": {
        +                "items": {
        +                  "additionalProperties": false,
        +                  "description": "Schema § 1.8 — a non-fatal geometry advisory (56th-fire T2).\n\nThe wire projection of the engine's `core.GeometryWarning`. Advisory only:\na warning NEVER changes a measured quantity — it flags geometry that is\nvalid but likely a mistake (e.g. a stale dependent-height default). Present\non BOTH tiers — a correctness/safety signal, not a paid feature.",
        +                  "properties": {
        +                    "affected_params": {
        +                      "items": {
        +                        "type": "string"
        +                      },
        +                      "type": "array"
        +                    },
        +                    "code": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "detail": {
        +                      "additionalProperties": {
        +                        "type": "number"
        +                      },
        +                      "type": "object"
        +                    },
        +                    "message": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "severity": {
        +                      "enum": [
        +                        "info",
        +                        "advisory",
        +                        "caution"
        +                      ],
        +                      "type": "string"
        +                    }
        +                  },
        +                  "required": [
        +                    "code",
        +                    "severity",
        +                    "message"
        +                  ],
        +                  "type": "object"
        +                },
        +                "type": "array"
        +              }
        +            },
        +            "required": [
        +              "assembly_slug",
        +              "standard",
        +              "parameters_used",
        +              "boq_rows",
        +              "totals_summary",
        +              "text_summary"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      },
        +      "error": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        +            "properties": {
        +              "code": {
        +                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        +                "enum": [
        +                  "RATE_LIMIT_EXCEEDED",
        +                  "TIER_INSUFFICIENT",
        +                  "INVALID_INPUT",
        +                  "SCHEMA_VERSION_MISMATCH",
        +                  "SCHEMA_INVARIANT_VIOLATION",
        +                  "UPSTREAM_TIMEOUT",
        +                  "BACKEND_FAILURE",
        +                  "IP_BLOCKED",
        +                  "RESOURCE_NOT_FOUND",
        +                  "RENDER_FAILURE",
        +                  "OCR_LOW_CONFIDENCE",
        +                  "MANUAL_REVIEW_REQUIRED",
        +                  "ACCEPTANCE_REQUIRED",
        +                  "INVALID_TOKEN"
        +                ],
        +                "type": "string"
        +              },
        +              "details": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "message": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "recoverable": {
        +                "type": "boolean"
        +              },
        +              "retry_after_seconds": {
        +                "anyOf": [
        +                  {
        +                    "minimum": 0,
        +                    "type": "integer"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              }
        +            },
        +            "required": [
        +              "code",
        +              "message",
        +              "recoverable"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      }
        +    },
        +    "required": [
        +      "_meta"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "_meta": {
        +        "additionalProperties": false,
        +        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        +        "properties": {
        +          "deliverables": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        +                "properties": {
        +                  "docx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "dxf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "expires_at": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  },
        +                  "pdf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "xlsx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "expires_at"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "document_id": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "issued_at": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "rate_limit_remaining": {
        +            "anyOf": [
        +              {
        +                "minimum": 0,
        +                "type": "integer"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "request_id": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "schema_version": {
        +            "const": "1.0.0",
        +            "default": "1.0.0",
        +            "type": "string"
        +          },
        +          "scope_boundary": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        +                "properties": {
        +                  "not_in_scope": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "produced": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "recommended_companions": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "type": "string"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "produced",
        +                  "not_in_scope"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tier": {
        +            "enum": [
        +              "free",
        +              "paid"
        +            ],
        +            "type": "string"
        +          },
        +          "tier_upgrade": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        +                "properties": {
        +                  "available_tiers": {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        +                      "properties": {
        +                        "billing": {
        +                          "enum": [
        +                            "one_off",
        +                            "monthly",
        +                            "annual"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "currency": {
        +                          "enum": [
        +                            "GBP",
        +                            "SGD",
        +                            "EUR",
        +                            "USD",
        +                            "CAD",
        +                            "AUD",
        +                            "NZD",
        +                            "MYR"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "display_name": {
        +                          "type": "string"
        +                        },
        +                        "price_local": {
        +                          "type": "number"
        +                        },
        +                        "tier_slug": {
        +                          "enum": [
        +                            "7_day_pass",
        +                            "solo",
        +                            "studio",
        +                            "practice"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "unlock_summary": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "tier_slug",
        +                        "display_name",
        +                        "price_local",
        +                        "currency",
        +                        "billing",
        +                        "unlock_summary"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "current_tier": {
        +                    "const": "free",
        +                    "default": "free",
        +                    "type": "string"
        +                  },
        +                  "pass_credit": {
        +                    "anyOf": [
        +                      {
        +                        "additionalProperties": false,
        +                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        +                        "properties": {
        +                          "amount_local": {
        +                            "type": "number"
        +                          },
        +                          "applies_to": {
        +                            "const": "solo_first_month",
        +                            "default": "solo_first_month",
        +                            "type": "string"
        +                          },
        +                          "currency": {
        +                            "type": "string"
        +                          },
        +                          "redeemable_until": {
        +                            "type": "string"
        +                          }
        +                        },
        +                        "required": [
        +                          "amount_local",
        +                          "currency",
        +                          "redeemable_until"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "pricing_url": {
        +                    "default": "https://civilquants.com/pricing",
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "available_tiers"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tos_url": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "upgrade_hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "warranty_disclaimer": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          }
        +        },
        +        "required": [
        +          "request_id",
        +          "issued_at",
        +          "tier"
        +        ],
        +        "type": "object"
        +      },
        +      "data": {
        +        "default": null,
        +        "title": "Data"
        +      },
        +      "error": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        +            "properties": {
        +              "code": {
        +                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        +                "enum": [
        +                  "RATE_LIMIT_EXCEEDED",
        +                  "TIER_INSUFFICIENT",
        +                  "INVALID_INPUT",
        +                  "SCHEMA_VERSION_MISMATCH",
        +                  "SCHEMA_INVARIANT_VIOLATION",
        +                  "UPSTREAM_TIMEOUT",
        +                  "BACKEND_FAILURE",
        +                  "IP_BLOCKED",
        +                  "RESOURCE_NOT_FOUND",
        +                  "RENDER_FAILURE",
        +                  "OCR_LOW_CONFIDENCE",
        +                  "MANUAL_REVIEW_REQUIRED",
        +                  "ACCEPTANCE_REQUIRED",
        +                  "INVALID_TOKEN"
        +                ],
        +                "type": "string"
        +              },
        +              "details": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "message": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "recoverable": {
        +                "type": "boolean"
        +              },
        +              "retry_after_seconds": {
        +                "anyOf": [
        +                  {
        +                    "minimum": 0,
        +                    "type": "integer"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              }
        +            },
        +            "required": [
        +              "code",
        +              "message",
        +              "recoverable"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      }
        +    },
        +    "required": [
        +      "_meta"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedcompute_permeable_pavement1 field changed
      • changedOutput schema / properties / result / anyOf
        Previous value: -[
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "_meta": {
        -        "additionalProperties": false,
        -        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        -        "properties": {
        -          "deliverables": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        -                "properties": {
        -                  "docx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "dxf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "expires_at": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  },
        -                  "pdf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "xlsx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "expires_at"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "document_id": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "issued_at": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "rate_limit_remaining": {
        -            "anyOf": [
        -              {
        -                "minimum": 0,
        -                "type": "integer"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "request_id": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "schema_version": {
        -            "const": "1.0.0",
        -            "default": "1.0.0",
        -            "type": "string"
        -          },
        -          "scope_boundary": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        -                "properties": {
        -                  "not_in_scope": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "produced": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "recommended_companions": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "type": "string"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "produced",
        -                  "not_in_scope"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tier": {
        -            "enum": [
        -              "free",
        -              "paid"
        -            ],
        -            "type": "string"
        -          },
        -          "tier_upgrade": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        -                "properties": {
        -                  "available_tiers": {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        -                      "properties": {
        -                        "billing": {
        -                          "enum": [
        -                            "one_off",
        -                            "monthly",
        -                            "annual"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "currency": {
        -                          "enum": [
        -                            "GBP",
        -                            "SGD",
        -                            "EUR",
        -                            "USD",
        -                            "CAD",
        -                            "AUD",
        -                            "NZD",
        -                            "MYR"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "display_name": {
        -                          "type": "string"
        -                        },
        -                        "price_local": {
        -                          "type": "number"
        -                        },
        -                        "tier_slug": {
        -                          "enum": [
        -                            "7_day_pass",
        -                            "solo",
        -                            "studio",
        -                            "practice"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "unlock_summary": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "tier_slug",
        -                        "display_name",
        -                        "price_local",
        -                        "currency",
        -                        "billing",
        -                        "unlock_summary"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "current_tier": {
        -                    "const": "free",
        -                    "default": "free",
        -                    "type": "string"
        -                  },
        -                  "pass_credit": {
        -                    "anyOf": [
        -                      {
        -                        "additionalProperties": false,
        -                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        -                        "properties": {
        -                          "amount_local": {
        -                            "type": "number"
        -                          },
        -                          "applies_to": {
        -                            "const": "solo_first_month",
        -                            "default": "solo_first_month",
        -                            "type": "string"
        -                          },
        -                          "currency": {
        -                            "type": "string"
        -                          },
        -                          "redeemable_until": {
        -                            "type": "string"
        -                          }
        -                        },
        -                        "required": [
        -                          "amount_local",
        -                          "currency",
        -                          "redeemable_until"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "pricing_url": {
        -                    "default": "https://civilquants.com/pricing",
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "available_tiers"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tos_url": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "upgrade_hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "warranty_disclaimer": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          }
        -        },
        -        "required": [
        -          "request_id",
        -          "issued_at",
        -          "tier"
        -        ],
        -        "type": "object"
        -      },
        -      "data": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Schema § 1.1 — the typed payload returned inside `MCPResponse[ComputeResult]`.\n\nFree-tier responses MUST omit `drawings` and `audit_trail` (the bridge\nenforces this); paid-tier responses populate both. `text_summary` is\nbounded to 2000 chars — keeps the LLM-facing summary token-cheap and\nforces longer narrative into BoQ row descriptions where it belongs.",
        -            "properties": {
        -              "assembly_slug": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "audit_trail": {
        -                "anyOf": [
        -                  {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.7 — paid-tier audit-trail entry.\n\nOne entry per BoQ row; `boq_row_index` ties to the row position in\n`ComputeResult.boq_rows`. `derivation` is the human-readable formula\nwalk-through; `formula` is the optional formal expression.",
        -                      "properties": {
        -                        "boq_row_index": {
        -                          "minimum": 0,
        -                          "type": "integer"
        -                        },
        -                        "derivation": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "formula": {
        -                          "anyOf": [
        -                            {
        -                              "type": "string"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ],
        -                          "default": null
        -                        },
        -                        "id": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "parameters_referenced": {
        -                          "items": {
        -                            "type": "string"
        -                          },
        -                          "type": "array"
        -                        }
        -                      },
        -                      "required": [
        -                        "id",
        -                        "boq_row_index",
        -                        "derivation"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "boq_rows": {
        -                "items": {
        -                  "additionalProperties": false,
        -                  "description": "Schema § 1.3 — a single bill row in the requested standard's format.\n\n`description` is the non-verbatim functional description per spec § 13.9 /\n§ 15 invariant — NEVER reproduces a standard's verbatim clause text.\n`rate` / `amount` ship null because rates are commodity data the customer\nowns; the engine's job is the measurement, not the pricing.",
        -                  "properties": {
        -                    "amount": {
        -                      "anyOf": [
        -                        {
        -                          "type": "number"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "attribution": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "audit_id": {
        -                      "anyOf": [
        -                        {
        -                          "type": "string"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "description": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "quantity": {
        -                      "minimum": 0,
        -                      "type": "number"
        -                    },
        -                    "rate": {
        -                      "anyOf": [
        -                        {
        -                          "type": "number"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "unit": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "work_section": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    }
        -                  },
        -                  "required": [
        -                    "work_section",
        -                    "description",
        -                    "quantity",
        -                    "unit",
        -                    "attribution"
        -                  ],
        -                  "type": "object"
        -                },
        -                "type": "array"
        -              },
        -              "drawings": {
        -                "anyOf": [
        -                  {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.6 — paid-tier drawing artefact pointer.\n\n`url` is an R2-signed URL; expiry is carried in `_meta.deliverables.expires_at`\non the envelope (not duplicated here). `layers` is DXF-only; PDF/SVG\ncallers omit it.",
        -                      "properties": {
        -                        "drawing_type": {
        -                          "enum": [
        -                            "section",
        -                            "plan",
        -                            "elevation",
        -                            "isometric",
        -                            "detail"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "format": {
        -                          "enum": [
        -                            "DXF",
        -                            "PDF",
        -                            "SVG"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "layers": {
        -                          "anyOf": [
        -                            {
        -                              "items": {
        -                                "type": "string"
        -                              },
        -                              "type": "array"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ],
        -                          "default": null
        -                        },
        -                        "scale": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "sheet_size": {
        -                          "enum": [
        -                            "A1",
        -                            "A2",
        -                            "A3",
        -                            "A4"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "url": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "drawing_type",
        -                        "format",
        -                        "url",
        -                        "sheet_size",
        -                        "scale"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "parameters_used": {
        -                "additionalProperties": false,
        -                "description": "Schema § 1.2 — the parameter snapshot the engine actually used.\n\nSplits user-supplied values from engine defaults so customers can see\nwhich numbers came from them and which the engine filled in. Every\ndefaulted parameter SHOULD have a corresponding entry in `assumptions`\n— the bridge layer enforces this when wrapping engine output.",
        -                "properties": {
        -                  "assumptions": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "engine_defaults": {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  "resolved_from_description": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "additionalProperties": false,
        -                          "description": "Schema § 1.2 — a parameter resolved by the forgiving-input layer.\n\nPopulated by the Track B-Forgiving Haiku-4.5 resolution pass; until that\nlayer lands, instances are constructed only by tests. `source` distinguishes\nthe resolution path so customers can audit which fields were inferred.",
        -                          "properties": {
        -                            "confidence": {
        -                              "anyOf": [
        -                                {
        -                                  "enum": [
        -                                    "high",
        -                                    "medium",
        -                                    "low"
        -                                  ],
        -                                  "type": "string"
        -                                },
        -                                {
        -                                  "type": "null"
        -                                }
        -                              ],
        -                              "default": null
        -                            },
        -                            "field_name": {
        -                              "minLength": 1,
        -                              "type": "string"
        -                            },
        -                            "resolved_value": {},
        -                            "source": {
        -                              "enum": [
        -                                "description_field",
        -                                "haiku_resolution",
        -                                "engine_default"
        -                              ],
        -                              "type": "string"
        -                            }
        -                          },
        -                          "required": [
        -                            "field_name",
        -                            "resolved_value",
        -                            "source"
        -                          ],
        -                          "type": "object"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "user_supplied": {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  }
        -                },
        -                "type": "object"
        -              },
        -              "standard": {
        -                "enum": [
        -                  "CESMM4",
        -                  "NRM2",
        -                  "SMM7",
        -                  "MMHW"
        -                ],
        -                "type": "string"
        -              },
        -              "text_summary": {
        -                "maxLength": 2000,
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "totals_summary": {
        -                "additionalProperties": false,
        -                "description": "Schema § 1.4 — totals_summary as a typed wrapper around the free-form dict.\n\nWire shape is a flat object (`{\"concrete_m3\": {...}, \"rebar_t\": {...}}`).\nWe model it as `RootModel`-equivalent via `model_config(extra=\"allow\")`\n+ a single `__root__`-style `entries` dict. Pydantic v2 recommends\n`RootModel` for free-form roots; using a wrapper class keeps the import\nsurface uniform with the rest of this module.",
        -                "properties": {
        -                  "entries": {
        -                    "additionalProperties": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.4 — single material/work-class total entry.",
        -                      "properties": {
        -                        "quantity": {
        -                          "minimum": 0,
        -                          "type": "number"
        -                        },
        -                        "unit": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "quantity",
        -                        "unit"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "object"
        -                  }
        -                },
        -                "type": "object"
        -              }
        -            },
        -            "required": [
        -              "assembly_slug",
        -              "standard",
        -              "parameters_used",
        -              "boq_rows",
        -              "totals_summary",
        -              "text_summary"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      },
        -      "error": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        -            "properties": {
        -              "code": {
        -                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        -                "enum": [
        -                  "RATE_LIMIT_EXCEEDED",
        -                  "TIER_INSUFFICIENT",
        -                  "INVALID_INPUT",
        -                  "SCHEMA_VERSION_MISMATCH",
        -                  "SCHEMA_INVARIANT_VIOLATION",
        -                  "UPSTREAM_TIMEOUT",
        -                  "BACKEND_FAILURE",
        -                  "IP_BLOCKED",
        -                  "RESOURCE_NOT_FOUND",
        -                  "RENDER_FAILURE",
        -                  "OCR_LOW_CONFIDENCE",
        -                  "MANUAL_REVIEW_REQUIRED",
        -                  "ACCEPTANCE_REQUIRED",
        -                  "INVALID_TOKEN"
        -                ],
        -                "type": "string"
        -              },
        -              "details": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "message": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "recoverable": {
        -                "type": "boolean"
        -              },
        -              "retry_after_seconds": {
        -                "anyOf": [
        -                  {
        -                    "minimum": 0,
        -                    "type": "integer"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              }
        -            },
        -            "required": [
        -              "code",
        -              "message",
        -              "recoverable"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      }
        -    },
        -    "required": [
        -      "_meta"
        -    ],
        -    "type": "object"
        -  },
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "_meta": {
        -        "additionalProperties": false,
        -        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        -        "properties": {
        -          "deliverables": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        -                "properties": {
        -                  "docx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "dxf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "expires_at": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  },
        -                  "pdf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "xlsx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "expires_at"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "document_id": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "issued_at": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "rate_limit_remaining": {
        -            "anyOf": [
        -              {
        -                "minimum": 0,
        -                "type": "integer"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "request_id": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "schema_version": {
        -            "const": "1.0.0",
        -            "default": "1.0.0",
        -            "type": "string"
        -          },
        -          "scope_boundary": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        -                "properties": {
        -                  "not_in_scope": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "produced": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "recommended_companions": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "type": "string"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "produced",
        -                  "not_in_scope"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tier": {
        -            "enum": [
        -              "free",
        -              "paid"
        -            ],
        -            "type": "string"
        -          },
        -          "tier_upgrade": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        -                "properties": {
        -                  "available_tiers": {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        -                      "properties": {
        -                        "billing": {
        -                          "enum": [
        -                            "one_off",
        -                            "monthly",
        -                            "annual"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "currency": {
        -                          "enum": [
        -                            "GBP",
        -                            "SGD",
        -                            "EUR",
        -                            "USD",
        -                            "CAD",
        -                            "AUD",
        -                            "NZD",
        -                            "MYR"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "display_name": {
        -                          "type": "string"
        -                        },
        -                        "price_local": {
        -                          "type": "number"
        -                        },
        -                        "tier_slug": {
        -                          "enum": [
        -                            "7_day_pass",
        -                            "solo",
        -                            "studio",
        -                            "practice"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "unlock_summary": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "tier_slug",
        -                        "display_name",
        -                        "price_local",
        -                        "currency",
        -                        "billing",
        -                        "unlock_summary"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "current_tier": {
        -                    "const": "free",
        -                    "default": "free",
        -                    "type": "string"
        -                  },
        -                  "pass_credit": {
        -                    "anyOf": [
        -                      {
        -                        "additionalProperties": false,
        -                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        -                        "properties": {
        -                          "amount_local": {
        -                            "type": "number"
        -                          },
        -                          "applies_to": {
        -                            "const": "solo_first_month",
        -                            "default": "solo_first_month",
        -                            "type": "string"
        -                          },
        -                          "currency": {
        -                            "type": "string"
        -                          },
        -                          "redeemable_until": {
        -                            "type": "string"
        -                          }
        -                        },
        -                        "required": [
        -                          "amount_local",
        -                          "currency",
        -                          "redeemable_until"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "pricing_url": {
        -                    "default": "https://civilquants.com/pricing",
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "available_tiers"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tos_url": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "upgrade_hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "warranty_disclaimer": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          }
        -        },
        -        "required": [
        -          "request_id",
        -          "issued_at",
        -          "tier"
        -        ],
        -        "type": "object"
        -      },
        -      "data": {
        -        "default": null,
        -        "title": "Data"
        -      },
        -      "error": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        -            "properties": {
        -              "code": {
        -                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        -                "enum": [
        -                  "RATE_LIMIT_EXCEEDED",
        -                  "TIER_INSUFFICIENT",
        -                  "INVALID_INPUT",
        -                  "SCHEMA_VERSION_MISMATCH",
        -                  "SCHEMA_INVARIANT_VIOLATION",
        -                  "UPSTREAM_TIMEOUT",
        -                  "BACKEND_FAILURE",
        -                  "IP_BLOCKED",
        -                  "RESOURCE_NOT_FOUND",
        -                  "RENDER_FAILURE",
        -                  "OCR_LOW_CONFIDENCE",
        -                  "MANUAL_REVIEW_REQUIRED",
        -                  "ACCEPTANCE_REQUIRED",
        -                  "INVALID_TOKEN"
        -                ],
        -                "type": "string"
        -              },
        -              "details": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "message": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "recoverable": {
        -                "type": "boolean"
        -              },
        -              "retry_after_seconds": {
        -                "anyOf": [
        -                  {
        -                    "minimum": 0,
        -                    "type": "integer"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              }
        -            },
        -            "required": [
        -              "code",
        -              "message",
        -              "recoverable"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      }
        -    },
        -    "required": [
        -      "_meta"
        -    ],
        -    "type": "object"
        -  }
        -]New value: +[
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "_meta": {
        +        "additionalProperties": false,
        +        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        +        "properties": {
        +          "deliverables": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        +                "properties": {
        +                  "docx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "dxf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "expires_at": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  },
        +                  "pdf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "xlsx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "expires_at"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "document_id": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "issued_at": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "rate_limit_remaining": {
        +            "anyOf": [
        +              {
        +                "minimum": 0,
        +                "type": "integer"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "request_id": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "schema_version": {
        +            "const": "1.0.0",
        +            "default": "1.0.0",
        +            "type": "string"
        +          },
        +          "scope_boundary": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        +                "properties": {
        +                  "not_in_scope": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "produced": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "recommended_companions": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "type": "string"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "produced",
        +                  "not_in_scope"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tier": {
        +            "enum": [
        +              "free",
        +              "paid"
        +            ],
        +            "type": "string"
        +          },
        +          "tier_upgrade": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        +                "properties": {
        +                  "available_tiers": {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        +                      "properties": {
        +                        "billing": {
        +                          "enum": [
        +                            "one_off",
        +                            "monthly",
        +                            "annual"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "currency": {
        +                          "enum": [
        +                            "GBP",
        +                            "SGD",
        +                            "EUR",
        +                            "USD",
        +                            "CAD",
        +                            "AUD",
        +                            "NZD",
        +                            "MYR"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "display_name": {
        +                          "type": "string"
        +                        },
        +                        "price_local": {
        +                          "type": "number"
        +                        },
        +                        "tier_slug": {
        +                          "enum": [
        +                            "7_day_pass",
        +                            "solo",
        +                            "studio",
        +                            "practice"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "unlock_summary": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "tier_slug",
        +                        "display_name",
        +                        "price_local",
        +                        "currency",
        +                        "billing",
        +                        "unlock_summary"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "current_tier": {
        +                    "const": "free",
        +                    "default": "free",
        +                    "type": "string"
        +                  },
        +                  "pass_credit": {
        +                    "anyOf": [
        +                      {
        +                        "additionalProperties": false,
        +                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        +                        "properties": {
        +                          "amount_local": {
        +                            "type": "number"
        +                          },
        +                          "applies_to": {
        +                            "const": "solo_first_month",
        +                            "default": "solo_first_month",
        +                            "type": "string"
        +                          },
        +                          "currency": {
        +                            "type": "string"
        +                          },
        +                          "redeemable_until": {
        +                            "type": "string"
        +                          }
        +                        },
        +                        "required": [
        +                          "amount_local",
        +                          "currency",
        +                          "redeemable_until"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "pricing_url": {
        +                    "default": "https://civilquants.com/pricing",
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "available_tiers"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tos_url": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "upgrade_hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "warranty_disclaimer": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          }
        +        },
        +        "required": [
        +          "request_id",
        +          "issued_at",
        +          "tier"
        +        ],
        +        "type": "object"
        +      },
        +      "data": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Schema § 1.1 — the typed payload returned inside `MCPResponse[ComputeResult]`.\n\nFree-tier responses MUST omit `drawings` and `audit_trail` (the bridge\nenforces this); paid-tier responses populate both. `text_summary` is\nbounded to 2000 chars — keeps the LLM-facing summary token-cheap and\nforces longer narrative into BoQ row descriptions where it belongs.\n`warnings` is the non-fatal geometry advisory list (both tiers).",
        +            "properties": {
        +              "assembly_slug": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "audit_trail": {
        +                "anyOf": [
        +                  {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.7 — paid-tier audit-trail entry.\n\nOne entry per BoQ row; `boq_row_index` ties to the row position in\n`ComputeResult.boq_rows`. `derivation` is the human-readable formula\nwalk-through; `formula` is the optional formal expression.",
        +                      "properties": {
        +                        "boq_row_index": {
        +                          "minimum": 0,
        +                          "type": "integer"
        +                        },
        +                        "derivation": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "formula": {
        +                          "anyOf": [
        +                            {
        +                              "type": "string"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ],
        +                          "default": null
        +                        },
        +                        "id": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "parameters_referenced": {
        +                          "items": {
        +                            "type": "string"
        +                          },
        +                          "type": "array"
        +                        }
        +                      },
        +                      "required": [
        +                        "id",
        +                        "boq_row_index",
        +                        "derivation"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "boq_rows": {
        +                "items": {
        +                  "additionalProperties": false,
        +                  "description": "Schema § 1.3 — a single bill row in the requested standard's format.\n\n`description` is the non-verbatim functional description per spec § 13.9 /\n§ 15 invariant — NEVER reproduces a standard's verbatim clause text.\n`rate` / `amount` ship null because rates are commodity data the customer\nowns; the engine's job is the measurement, not the pricing.",
        +                  "properties": {
        +                    "amount": {
        +                      "anyOf": [
        +                        {
        +                          "type": "number"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "attribution": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "audit_id": {
        +                      "anyOf": [
        +                        {
        +                          "type": "string"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "description": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "quantity": {
        +                      "minimum": 0,
        +                      "type": "number"
        +                    },
        +                    "rate": {
        +                      "anyOf": [
        +                        {
        +                          "type": "number"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "unit": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "work_section": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    }
        +                  },
        +                  "required": [
        +                    "work_section",
        +                    "description",
        +                    "quantity",
        +                    "unit",
        +                    "attribution"
        +                  ],
        +                  "type": "object"
        +                },
        +                "type": "array"
        +              },
        +              "drawings": {
        +                "anyOf": [
        +                  {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.6 — paid-tier drawing artefact pointer.\n\n`url` is an R2-signed URL; expiry is carried in `_meta.deliverables.expires_at`\non the envelope (not duplicated here). `layers` is DXF-only; PDF/SVG\ncallers omit it.",
        +                      "properties": {
        +                        "drawing_type": {
        +                          "enum": [
        +                            "section",
        +                            "plan",
        +                            "elevation",
        +                            "isometric",
        +                            "detail"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "format": {
        +                          "enum": [
        +                            "DXF",
        +                            "PDF",
        +                            "SVG"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "layers": {
        +                          "anyOf": [
        +                            {
        +                              "items": {
        +                                "type": "string"
        +                              },
        +                              "type": "array"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ],
        +                          "default": null
        +                        },
        +                        "scale": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "sheet_size": {
        +                          "enum": [
        +                            "A1",
        +                            "A2",
        +                            "A3",
        +                            "A4"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "url": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "drawing_type",
        +                        "format",
        +                        "url",
        +                        "sheet_size",
        +                        "scale"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "parameters_used": {
        +                "additionalProperties": false,
        +                "description": "Schema § 1.2 — the parameter snapshot the engine actually used.\n\nSplits user-supplied values from engine defaults so customers can see\nwhich numbers came from them and which the engine filled in. Every\ndefaulted parameter SHOULD have a corresponding entry in `assumptions`\n— the bridge layer enforces this when wrapping engine output.",
        +                "properties": {
        +                  "assumptions": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "engine_defaults": {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  "resolved_from_description": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "additionalProperties": false,
        +                          "description": "Schema § 1.2 — a parameter resolved by the forgiving-input layer.\n\nPopulated by the Track B-Forgiving Haiku-4.5 resolution pass; until that\nlayer lands, instances are constructed only by tests. `source` distinguishes\nthe resolution path so customers can audit which fields were inferred.",
        +                          "properties": {
        +                            "confidence": {
        +                              "anyOf": [
        +                                {
        +                                  "enum": [
        +                                    "high",
        +                                    "medium",
        +                                    "low"
        +                                  ],
        +                                  "type": "string"
        +                                },
        +                                {
        +                                  "type": "null"
        +                                }
        +                              ],
        +                              "default": null
        +                            },
        +                            "field_name": {
        +                              "minLength": 1,
        +                              "type": "string"
        +                            },
        +                            "resolved_value": {},
        +                            "source": {
        +                              "enum": [
        +                                "description_field",
        +                                "haiku_resolution",
        +                                "engine_default"
        +                              ],
        +                              "type": "string"
        +                            }
        +                          },
        +                          "required": [
        +                            "field_name",
        +                            "resolved_value",
        +                            "source"
        +                          ],
        +                          "type": "object"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "user_supplied": {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  }
        +                },
        +                "type": "object"
        +              },
        +              "standard": {
        +                "enum": [
        +                  "CESMM4",
        +                  "NRM2",
        +                  "SMM7",
        +                  "MMHW"
        +                ],
        +                "type": "string"
        +              },
        +              "text_summary": {
        +                "maxLength": 2000,
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "totals_summary": {
        +                "additionalProperties": false,
        +                "description": "Schema § 1.4 — totals_summary as a typed wrapper around the free-form dict.\n\nWire shape is a flat object (`{\"concrete_m3\": {...}, \"rebar_t\": {...}}`).\nWe model it as `RootModel`-equivalent via `model_config(extra=\"allow\")`\n+ a single `__root__`-style `entries` dict. Pydantic v2 recommends\n`RootModel` for free-form roots; using a wrapper class keeps the import\nsurface uniform with the rest of this module.",
        +                "properties": {
        +                  "entries": {
        +                    "additionalProperties": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.4 — single material/work-class total entry.",
        +                      "properties": {
        +                        "quantity": {
        +                          "minimum": 0,
        +                          "type": "number"
        +                        },
        +                        "unit": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "quantity",
        +                        "unit"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "object"
        +                  }
        +                },
        +                "type": "object"
        +              },
        +              "warnings": {
        +                "items": {
        +                  "additionalProperties": false,
        +                  "description": "Schema § 1.8 — a non-fatal geometry advisory (56th-fire T2).\n\nThe wire projection of the engine's `core.GeometryWarning`. Advisory only:\na warning NEVER changes a measured quantity — it flags geometry that is\nvalid but likely a mistake (e.g. a stale dependent-height default). Present\non BOTH tiers — a correctness/safety signal, not a paid feature.",
        +                  "properties": {
        +                    "affected_params": {
        +                      "items": {
        +                        "type": "string"
        +                      },
        +                      "type": "array"
        +                    },
        +                    "code": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "detail": {
        +                      "additionalProperties": {
        +                        "type": "number"
        +                      },
        +                      "type": "object"
        +                    },
        +                    "message": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "severity": {
        +                      "enum": [
        +                        "info",
        +                        "advisory",
        +                        "caution"
        +                      ],
        +                      "type": "string"
        +                    }
        +                  },
        +                  "required": [
        +                    "code",
        +                    "severity",
        +                    "message"
        +                  ],
        +                  "type": "object"
        +                },
        +                "type": "array"
        +              }
        +            },
        +            "required": [
        +              "assembly_slug",
        +              "standard",
        +              "parameters_used",
        +              "boq_rows",
        +              "totals_summary",
        +              "text_summary"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      },
        +      "error": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        +            "properties": {
        +              "code": {
        +                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        +                "enum": [
        +                  "RATE_LIMIT_EXCEEDED",
        +                  "TIER_INSUFFICIENT",
        +                  "INVALID_INPUT",
        +                  "SCHEMA_VERSION_MISMATCH",
        +                  "SCHEMA_INVARIANT_VIOLATION",
        +                  "UPSTREAM_TIMEOUT",
        +                  "BACKEND_FAILURE",
        +                  "IP_BLOCKED",
        +                  "RESOURCE_NOT_FOUND",
        +                  "RENDER_FAILURE",
        +                  "OCR_LOW_CONFIDENCE",
        +                  "MANUAL_REVIEW_REQUIRED",
        +                  "ACCEPTANCE_REQUIRED",
        +                  "INVALID_TOKEN"
        +                ],
        +                "type": "string"
        +              },
        +              "details": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "message": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "recoverable": {
        +                "type": "boolean"
        +              },
        +              "retry_after_seconds": {
        +                "anyOf": [
        +                  {
        +                    "minimum": 0,
        +                    "type": "integer"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              }
        +            },
        +            "required": [
        +              "code",
        +              "message",
        +              "recoverable"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      }
        +    },
        +    "required": [
        +      "_meta"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "_meta": {
        +        "additionalProperties": false,
        +        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        +        "properties": {
        +          "deliverables": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        +                "properties": {
        +                  "docx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "dxf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "expires_at": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  },
        +                  "pdf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "xlsx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "expires_at"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "document_id": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "issued_at": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "rate_limit_remaining": {
        +            "anyOf": [
        +              {
        +                "minimum": 0,
        +                "type": "integer"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "request_id": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "schema_version": {
        +            "const": "1.0.0",
        +            "default": "1.0.0",
        +            "type": "string"
        +          },
        +          "scope_boundary": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        +                "properties": {
        +                  "not_in_scope": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "produced": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "recommended_companions": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "type": "string"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "produced",
        +                  "not_in_scope"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tier": {
        +            "enum": [
        +              "free",
        +              "paid"
        +            ],
        +            "type": "string"
        +          },
        +          "tier_upgrade": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        +                "properties": {
        +                  "available_tiers": {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        +                      "properties": {
        +                        "billing": {
        +                          "enum": [
        +                            "one_off",
        +                            "monthly",
        +                            "annual"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "currency": {
        +                          "enum": [
        +                            "GBP",
        +                            "SGD",
        +                            "EUR",
        +                            "USD",
        +                            "CAD",
        +                            "AUD",
        +                            "NZD",
        +                            "MYR"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "display_name": {
        +                          "type": "string"
        +                        },
        +                        "price_local": {
        +                          "type": "number"
        +                        },
        +                        "tier_slug": {
        +                          "enum": [
        +                            "7_day_pass",
        +                            "solo",
        +                            "studio",
        +                            "practice"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "unlock_summary": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "tier_slug",
        +                        "display_name",
        +                        "price_local",
        +                        "currency",
        +                        "billing",
        +                        "unlock_summary"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "current_tier": {
        +                    "const": "free",
        +                    "default": "free",
        +                    "type": "string"
        +                  },
        +                  "pass_credit": {
        +                    "anyOf": [
        +                      {
        +                        "additionalProperties": false,
        +                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        +                        "properties": {
        +                          "amount_local": {
        +                            "type": "number"
        +                          },
        +                          "applies_to": {
        +                            "const": "solo_first_month",
        +                            "default": "solo_first_month",
        +                            "type": "string"
        +                          },
        +                          "currency": {
        +                            "type": "string"
        +                          },
        +                          "redeemable_until": {
        +                            "type": "string"
        +                          }
        +                        },
        +                        "required": [
        +                          "amount_local",
        +                          "currency",
        +                          "redeemable_until"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "pricing_url": {
        +                    "default": "https://civilquants.com/pricing",
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "available_tiers"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tos_url": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "upgrade_hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "warranty_disclaimer": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          }
        +        },
        +        "required": [
        +          "request_id",
        +          "issued_at",
        +          "tier"
        +        ],
        +        "type": "object"
        +      },
        +      "data": {
        +        "default": null,
        +        "title": "Data"
        +      },
        +      "error": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        +            "properties": {
        +              "code": {
        +                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        +                "enum": [
        +                  "RATE_LIMIT_EXCEEDED",
        +                  "TIER_INSUFFICIENT",
        +                  "INVALID_INPUT",
        +                  "SCHEMA_VERSION_MISMATCH",
        +                  "SCHEMA_INVARIANT_VIOLATION",
        +                  "UPSTREAM_TIMEOUT",
        +                  "BACKEND_FAILURE",
        +                  "IP_BLOCKED",
        +                  "RESOURCE_NOT_FOUND",
        +                  "RENDER_FAILURE",
        +                  "OCR_LOW_CONFIDENCE",
        +                  "MANUAL_REVIEW_REQUIRED",
        +                  "ACCEPTANCE_REQUIRED",
        +                  "INVALID_TOKEN"
        +                ],
        +                "type": "string"
        +              },
        +              "details": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "message": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "recoverable": {
        +                "type": "boolean"
        +              },
        +              "retry_after_seconds": {
        +                "anyOf": [
        +                  {
        +                    "minimum": 0,
        +                    "type": "integer"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              }
        +            },
        +            "required": [
        +              "code",
        +              "message",
        +              "recoverable"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      }
        +    },
        +    "required": [
        +      "_meta"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedcompute_petrol_oil_interceptor1 field changed
      • changedOutput schema / properties / result / anyOf
        Previous value: -[
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "_meta": {
        -        "additionalProperties": false,
        -        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        -        "properties": {
        -          "deliverables": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        -                "properties": {
        -                  "docx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "dxf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "expires_at": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  },
        -                  "pdf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "xlsx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "expires_at"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "document_id": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "issued_at": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "rate_limit_remaining": {
        -            "anyOf": [
        -              {
        -                "minimum": 0,
        -                "type": "integer"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "request_id": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "schema_version": {
        -            "const": "1.0.0",
        -            "default": "1.0.0",
        -            "type": "string"
        -          },
        -          "scope_boundary": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        -                "properties": {
        -                  "not_in_scope": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "produced": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "recommended_companions": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "type": "string"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "produced",
        -                  "not_in_scope"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tier": {
        -            "enum": [
        -              "free",
        -              "paid"
        -            ],
        -            "type": "string"
        -          },
        -          "tier_upgrade": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        -                "properties": {
        -                  "available_tiers": {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        -                      "properties": {
        -                        "billing": {
        -                          "enum": [
        -                            "one_off",
        -                            "monthly",
        -                            "annual"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "currency": {
        -                          "enum": [
        -                            "GBP",
        -                            "SGD",
        -                            "EUR",
        -                            "USD",
        -                            "CAD",
        -                            "AUD",
        -                            "NZD",
        -                            "MYR"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "display_name": {
        -                          "type": "string"
        -                        },
        -                        "price_local": {
        -                          "type": "number"
        -                        },
        -                        "tier_slug": {
        -                          "enum": [
        -                            "7_day_pass",
        -                            "solo",
        -                            "studio",
        -                            "practice"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "unlock_summary": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "tier_slug",
        -                        "display_name",
        -                        "price_local",
        -                        "currency",
        -                        "billing",
        -                        "unlock_summary"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "current_tier": {
        -                    "const": "free",
        -                    "default": "free",
        -                    "type": "string"
        -                  },
        -                  "pass_credit": {
        -                    "anyOf": [
        -                      {
        -                        "additionalProperties": false,
        -                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        -                        "properties": {
        -                          "amount_local": {
        -                            "type": "number"
        -                          },
        -                          "applies_to": {
        -                            "const": "solo_first_month",
        -                            "default": "solo_first_month",
        -                            "type": "string"
        -                          },
        -                          "currency": {
        -                            "type": "string"
        -                          },
        -                          "redeemable_until": {
        -                            "type": "string"
        -                          }
        -                        },
        -                        "required": [
        -                          "amount_local",
        -                          "currency",
        -                          "redeemable_until"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "pricing_url": {
        -                    "default": "https://civilquants.com/pricing",
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "available_tiers"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tos_url": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "upgrade_hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "warranty_disclaimer": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          }
        -        },
        -        "required": [
        -          "request_id",
        -          "issued_at",
        -          "tier"
        -        ],
        -        "type": "object"
        -      },
        -      "data": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Schema § 1.1 — the typed payload returned inside `MCPResponse[ComputeResult]`.\n\nFree-tier responses MUST omit `drawings` and `audit_trail` (the bridge\nenforces this); paid-tier responses populate both. `text_summary` is\nbounded to 2000 chars — keeps the LLM-facing summary token-cheap and\nforces longer narrative into BoQ row descriptions where it belongs.",
        -            "properties": {
        -              "assembly_slug": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "audit_trail": {
        -                "anyOf": [
        -                  {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.7 — paid-tier audit-trail entry.\n\nOne entry per BoQ row; `boq_row_index` ties to the row position in\n`ComputeResult.boq_rows`. `derivation` is the human-readable formula\nwalk-through; `formula` is the optional formal expression.",
        -                      "properties": {
        -                        "boq_row_index": {
        -                          "minimum": 0,
        -                          "type": "integer"
        -                        },
        -                        "derivation": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "formula": {
        -                          "anyOf": [
        -                            {
        -                              "type": "string"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ],
        -                          "default": null
        -                        },
        -                        "id": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "parameters_referenced": {
        -                          "items": {
        -                            "type": "string"
        -                          },
        -                          "type": "array"
        -                        }
        -                      },
        -                      "required": [
        -                        "id",
        -                        "boq_row_index",
        -                        "derivation"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "boq_rows": {
        -                "items": {
        -                  "additionalProperties": false,
        -                  "description": "Schema § 1.3 — a single bill row in the requested standard's format.\n\n`description` is the non-verbatim functional description per spec § 13.9 /\n§ 15 invariant — NEVER reproduces a standard's verbatim clause text.\n`rate` / `amount` ship null because rates are commodity data the customer\nowns; the engine's job is the measurement, not the pricing.",
        -                  "properties": {
        -                    "amount": {
        -                      "anyOf": [
        -                        {
        -                          "type": "number"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "attribution": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "audit_id": {
        -                      "anyOf": [
        -                        {
        -                          "type": "string"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "description": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "quantity": {
        -                      "minimum": 0,
        -                      "type": "number"
        -                    },
        -                    "rate": {
        -                      "anyOf": [
        -                        {
        -                          "type": "number"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "unit": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "work_section": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    }
        -                  },
        -                  "required": [
        -                    "work_section",
        -                    "description",
        -                    "quantity",
        -                    "unit",
        -                    "attribution"
        -                  ],
        -                  "type": "object"
        -                },
        -                "type": "array"
        -              },
        -              "drawings": {
        -                "anyOf": [
        -                  {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.6 — paid-tier drawing artefact pointer.\n\n`url` is an R2-signed URL; expiry is carried in `_meta.deliverables.expires_at`\non the envelope (not duplicated here). `layers` is DXF-only; PDF/SVG\ncallers omit it.",
        -                      "properties": {
        -                        "drawing_type": {
        -                          "enum": [
        -                            "section",
        -                            "plan",
        -                            "elevation",
        -                            "isometric",
        -                            "detail"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "format": {
        -                          "enum": [
        -                            "DXF",
        -                            "PDF",
        -                            "SVG"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "layers": {
        -                          "anyOf": [
        -                            {
        -                              "items": {
        -                                "type": "string"
        -                              },
        -                              "type": "array"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ],
        -                          "default": null
        -                        },
        -                        "scale": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "sheet_size": {
        -                          "enum": [
        -                            "A1",
        -                            "A2",
        -                            "A3",
        -                            "A4"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "url": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "drawing_type",
        -                        "format",
        -                        "url",
        -                        "sheet_size",
        -                        "scale"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "parameters_used": {
        -                "additionalProperties": false,
        -                "description": "Schema § 1.2 — the parameter snapshot the engine actually used.\n\nSplits user-supplied values from engine defaults so customers can see\nwhich numbers came from them and which the engine filled in. Every\ndefaulted parameter SHOULD have a corresponding entry in `assumptions`\n— the bridge layer enforces this when wrapping engine output.",
        -                "properties": {
        -                  "assumptions": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "engine_defaults": {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  "resolved_from_description": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "additionalProperties": false,
        -                          "description": "Schema § 1.2 — a parameter resolved by the forgiving-input layer.\n\nPopulated by the Track B-Forgiving Haiku-4.5 resolution pass; until that\nlayer lands, instances are constructed only by tests. `source` distinguishes\nthe resolution path so customers can audit which fields were inferred.",
        -                          "properties": {
        -                            "confidence": {
        -                              "anyOf": [
        -                                {
        -                                  "enum": [
        -                                    "high",
        -                                    "medium",
        -                                    "low"
        -                                  ],
        -                                  "type": "string"
        -                                },
        -                                {
        -                                  "type": "null"
        -                                }
        -                              ],
        -                              "default": null
        -                            },
        -                            "field_name": {
        -                              "minLength": 1,
        -                              "type": "string"
        -                            },
        -                            "resolved_value": {},
        -                            "source": {
        -                              "enum": [
        -                                "description_field",
        -                                "haiku_resolution",
        -                                "engine_default"
        -                              ],
        -                              "type": "string"
        -                            }
        -                          },
        -                          "required": [
        -                            "field_name",
        -                            "resolved_value",
        -                            "source"
        -                          ],
        -                          "type": "object"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "user_supplied": {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  }
        -                },
        -                "type": "object"
        -              },
        -              "standard": {
        -                "enum": [
        -                  "CESMM4",
        -                  "NRM2",
        -                  "SMM7",
        -                  "MMHW"
        -                ],
        -                "type": "string"
        -              },
        -              "text_summary": {
        -                "maxLength": 2000,
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "totals_summary": {
        -                "additionalProperties": false,
        -                "description": "Schema § 1.4 — totals_summary as a typed wrapper around the free-form dict.\n\nWire shape is a flat object (`{\"concrete_m3\": {...}, \"rebar_t\": {...}}`).\nWe model it as `RootModel`-equivalent via `model_config(extra=\"allow\")`\n+ a single `__root__`-style `entries` dict. Pydantic v2 recommends\n`RootModel` for free-form roots; using a wrapper class keeps the import\nsurface uniform with the rest of this module.",
        -                "properties": {
        -                  "entries": {
        -                    "additionalProperties": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.4 — single material/work-class total entry.",
        -                      "properties": {
        -                        "quantity": {
        -                          "minimum": 0,
        -                          "type": "number"
        -                        },
        -                        "unit": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "quantity",
        -                        "unit"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "object"
        -                  }
        -                },
        -                "type": "object"
        -              }
        -            },
        -            "required": [
        -              "assembly_slug",
        -              "standard",
        -              "parameters_used",
        -              "boq_rows",
        -              "totals_summary",
        -              "text_summary"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      },
        -      "error": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        -            "properties": {
        -              "code": {
        -                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        -                "enum": [
        -                  "RATE_LIMIT_EXCEEDED",
        -                  "TIER_INSUFFICIENT",
        -                  "INVALID_INPUT",
        -                  "SCHEMA_VERSION_MISMATCH",
        -                  "SCHEMA_INVARIANT_VIOLATION",
        -                  "UPSTREAM_TIMEOUT",
        -                  "BACKEND_FAILURE",
        -                  "IP_BLOCKED",
        -                  "RESOURCE_NOT_FOUND",
        -                  "RENDER_FAILURE",
        -                  "OCR_LOW_CONFIDENCE",
        -                  "MANUAL_REVIEW_REQUIRED",
        -                  "ACCEPTANCE_REQUIRED",
        -                  "INVALID_TOKEN"
        -                ],
        -                "type": "string"
        -              },
        -              "details": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "message": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "recoverable": {
        -                "type": "boolean"
        -              },
        -              "retry_after_seconds": {
        -                "anyOf": [
        -                  {
        -                    "minimum": 0,
        -                    "type": "integer"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              }
        -            },
        -            "required": [
        -              "code",
        -              "message",
        -              "recoverable"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      }
        -    },
        -    "required": [
        -      "_meta"
        -    ],
        -    "type": "object"
        -  },
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "_meta": {
        -        "additionalProperties": false,
        -        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        -        "properties": {
        -          "deliverables": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        -                "properties": {
        -                  "docx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "dxf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "expires_at": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  },
        -                  "pdf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "xlsx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "expires_at"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "document_id": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "issued_at": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "rate_limit_remaining": {
        -            "anyOf": [
        -              {
        -                "minimum": 0,
        -                "type": "integer"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "request_id": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "schema_version": {
        -            "const": "1.0.0",
        -            "default": "1.0.0",
        -            "type": "string"
        -          },
        -          "scope_boundary": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        -                "properties": {
        -                  "not_in_scope": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "produced": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "recommended_companions": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "type": "string"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "produced",
        -                  "not_in_scope"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tier": {
        -            "enum": [
        -              "free",
        -              "paid"
        -            ],
        -            "type": "string"
        -          },
        -          "tier_upgrade": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        -                "properties": {
        -                  "available_tiers": {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        -                      "properties": {
        -                        "billing": {
        -                          "enum": [
        -                            "one_off",
        -                            "monthly",
        -                            "annual"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "currency": {
        -                          "enum": [
        -                            "GBP",
        -                            "SGD",
        -                            "EUR",
        -                            "USD",
        -                            "CAD",
        -                            "AUD",
        -                            "NZD",
        -                            "MYR"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "display_name": {
        -                          "type": "string"
        -                        },
        -                        "price_local": {
        -                          "type": "number"
        -                        },
        -                        "tier_slug": {
        -                          "enum": [
        -                            "7_day_pass",
        -                            "solo",
        -                            "studio",
        -                            "practice"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "unlock_summary": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "tier_slug",
        -                        "display_name",
        -                        "price_local",
        -                        "currency",
        -                        "billing",
        -                        "unlock_summary"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "current_tier": {
        -                    "const": "free",
        -                    "default": "free",
        -                    "type": "string"
        -                  },
        -                  "pass_credit": {
        -                    "anyOf": [
        -                      {
        -                        "additionalProperties": false,
        -                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        -                        "properties": {
        -                          "amount_local": {
        -                            "type": "number"
        -                          },
        -                          "applies_to": {
        -                            "const": "solo_first_month",
        -                            "default": "solo_first_month",
        -                            "type": "string"
        -                          },
        -                          "currency": {
        -                            "type": "string"
        -                          },
        -                          "redeemable_until": {
        -                            "type": "string"
        -                          }
        -                        },
        -                        "required": [
        -                          "amount_local",
        -                          "currency",
        -                          "redeemable_until"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "pricing_url": {
        -                    "default": "https://civilquants.com/pricing",
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "available_tiers"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tos_url": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "upgrade_hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "warranty_disclaimer": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          }
        -        },
        -        "required": [
        -          "request_id",
        -          "issued_at",
        -          "tier"
        -        ],
        -        "type": "object"
        -      },
        -      "data": {
        -        "default": null,
        -        "title": "Data"
        -      },
        -      "error": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        -            "properties": {
        -              "code": {
        -                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        -                "enum": [
        -                  "RATE_LIMIT_EXCEEDED",
        -                  "TIER_INSUFFICIENT",
        -                  "INVALID_INPUT",
        -                  "SCHEMA_VERSION_MISMATCH",
        -                  "SCHEMA_INVARIANT_VIOLATION",
        -                  "UPSTREAM_TIMEOUT",
        -                  "BACKEND_FAILURE",
        -                  "IP_BLOCKED",
        -                  "RESOURCE_NOT_FOUND",
        -                  "RENDER_FAILURE",
        -                  "OCR_LOW_CONFIDENCE",
        -                  "MANUAL_REVIEW_REQUIRED",
        -                  "ACCEPTANCE_REQUIRED",
        -                  "INVALID_TOKEN"
        -                ],
        -                "type": "string"
        -              },
        -              "details": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "message": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "recoverable": {
        -                "type": "boolean"
        -              },
        -              "retry_after_seconds": {
        -                "anyOf": [
        -                  {
        -                    "minimum": 0,
        -                    "type": "integer"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              }
        -            },
        -            "required": [
        -              "code",
        -              "message",
        -              "recoverable"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      }
        -    },
        -    "required": [
        -      "_meta"
        -    ],
        -    "type": "object"
        -  }
        -]New value: +[
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "_meta": {
        +        "additionalProperties": false,
        +        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        +        "properties": {
        +          "deliverables": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        +                "properties": {
        +                  "docx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "dxf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "expires_at": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  },
        +                  "pdf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "xlsx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "expires_at"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "document_id": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "issued_at": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "rate_limit_remaining": {
        +            "anyOf": [
        +              {
        +                "minimum": 0,
        +                "type": "integer"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "request_id": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "schema_version": {
        +            "const": "1.0.0",
        +            "default": "1.0.0",
        +            "type": "string"
        +          },
        +          "scope_boundary": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        +                "properties": {
        +                  "not_in_scope": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "produced": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "recommended_companions": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "type": "string"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "produced",
        +                  "not_in_scope"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tier": {
        +            "enum": [
        +              "free",
        +              "paid"
        +            ],
        +            "type": "string"
        +          },
        +          "tier_upgrade": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        +                "properties": {
        +                  "available_tiers": {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        +                      "properties": {
        +                        "billing": {
        +                          "enum": [
        +                            "one_off",
        +                            "monthly",
        +                            "annual"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "currency": {
        +                          "enum": [
        +                            "GBP",
        +                            "SGD",
        +                            "EUR",
        +                            "USD",
        +                            "CAD",
        +                            "AUD",
        +                            "NZD",
        +                            "MYR"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "display_name": {
        +                          "type": "string"
        +                        },
        +                        "price_local": {
        +                          "type": "number"
        +                        },
        +                        "tier_slug": {
        +                          "enum": [
        +                            "7_day_pass",
        +                            "solo",
        +                            "studio",
        +                            "practice"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "unlock_summary": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "tier_slug",
        +                        "display_name",
        +                        "price_local",
        +                        "currency",
        +                        "billing",
        +                        "unlock_summary"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "current_tier": {
        +                    "const": "free",
        +                    "default": "free",
        +                    "type": "string"
        +                  },
        +                  "pass_credit": {
        +                    "anyOf": [
        +                      {
        +                        "additionalProperties": false,
        +                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        +                        "properties": {
        +                          "amount_local": {
        +                            "type": "number"
        +                          },
        +                          "applies_to": {
        +                            "const": "solo_first_month",
        +                            "default": "solo_first_month",
        +                            "type": "string"
        +                          },
        +                          "currency": {
        +                            "type": "string"
        +                          },
        +                          "redeemable_until": {
        +                            "type": "string"
        +                          }
        +                        },
        +                        "required": [
        +                          "amount_local",
        +                          "currency",
        +                          "redeemable_until"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "pricing_url": {
        +                    "default": "https://civilquants.com/pricing",
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "available_tiers"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tos_url": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "upgrade_hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "warranty_disclaimer": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          }
        +        },
        +        "required": [
        +          "request_id",
        +          "issued_at",
        +          "tier"
        +        ],
        +        "type": "object"
        +      },
        +      "data": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Schema § 1.1 — the typed payload returned inside `MCPResponse[ComputeResult]`.\n\nFree-tier responses MUST omit `drawings` and `audit_trail` (the bridge\nenforces this); paid-tier responses populate both. `text_summary` is\nbounded to 2000 chars — keeps the LLM-facing summary token-cheap and\nforces longer narrative into BoQ row descriptions where it belongs.\n`warnings` is the non-fatal geometry advisory list (both tiers).",
        +            "properties": {
        +              "assembly_slug": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "audit_trail": {
        +                "anyOf": [
        +                  {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.7 — paid-tier audit-trail entry.\n\nOne entry per BoQ row; `boq_row_index` ties to the row position in\n`ComputeResult.boq_rows`. `derivation` is the human-readable formula\nwalk-through; `formula` is the optional formal expression.",
        +                      "properties": {
        +                        "boq_row_index": {
        +                          "minimum": 0,
        +                          "type": "integer"
        +                        },
        +                        "derivation": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "formula": {
        +                          "anyOf": [
        +                            {
        +                              "type": "string"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ],
        +                          "default": null
        +                        },
        +                        "id": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "parameters_referenced": {
        +                          "items": {
        +                            "type": "string"
        +                          },
        +                          "type": "array"
        +                        }
        +                      },
        +                      "required": [
        +                        "id",
        +                        "boq_row_index",
        +                        "derivation"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "boq_rows": {
        +                "items": {
        +                  "additionalProperties": false,
        +                  "description": "Schema § 1.3 — a single bill row in the requested standard's format.\n\n`description` is the non-verbatim functional description per spec § 13.9 /\n§ 15 invariant — NEVER reproduces a standard's verbatim clause text.\n`rate` / `amount` ship null because rates are commodity data the customer\nowns; the engine's job is the measurement, not the pricing.",
        +                  "properties": {
        +                    "amount": {
        +                      "anyOf": [
        +                        {
        +                          "type": "number"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "attribution": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "audit_id": {
        +                      "anyOf": [
        +                        {
        +                          "type": "string"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "description": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "quantity": {
        +                      "minimum": 0,
        +                      "type": "number"
        +                    },
        +                    "rate": {
        +                      "anyOf": [
        +                        {
        +                          "type": "number"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "unit": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "work_section": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    }
        +                  },
        +                  "required": [
        +                    "work_section",
        +                    "description",
        +                    "quantity",
        +                    "unit",
        +                    "attribution"
        +                  ],
        +                  "type": "object"
        +                },
        +                "type": "array"
        +              },
        +              "drawings": {
        +                "anyOf": [
        +                  {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.6 — paid-tier drawing artefact pointer.\n\n`url` is an R2-signed URL; expiry is carried in `_meta.deliverables.expires_at`\non the envelope (not duplicated here). `layers` is DXF-only; PDF/SVG\ncallers omit it.",
        +                      "properties": {
        +                        "drawing_type": {
        +                          "enum": [
        +                            "section",
        +                            "plan",
        +                            "elevation",
        +                            "isometric",
        +                            "detail"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "format": {
        +                          "enum": [
        +                            "DXF",
        +                            "PDF",
        +                            "SVG"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "layers": {
        +                          "anyOf": [
        +                            {
        +                              "items": {
        +                                "type": "string"
        +                              },
        +                              "type": "array"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ],
        +                          "default": null
        +                        },
        +                        "scale": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "sheet_size": {
        +                          "enum": [
        +                            "A1",
        +                            "A2",
        +                            "A3",
        +                            "A4"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "url": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "drawing_type",
        +                        "format",
        +                        "url",
        +                        "sheet_size",
        +                        "scale"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "parameters_used": {
        +                "additionalProperties": false,
        +                "description": "Schema § 1.2 — the parameter snapshot the engine actually used.\n\nSplits user-supplied values from engine defaults so customers can see\nwhich numbers came from them and which the engine filled in. Every\ndefaulted parameter SHOULD have a corresponding entry in `assumptions`\n— the bridge layer enforces this when wrapping engine output.",
        +                "properties": {
        +                  "assumptions": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "engine_defaults": {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  "resolved_from_description": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "additionalProperties": false,
        +                          "description": "Schema § 1.2 — a parameter resolved by the forgiving-input layer.\n\nPopulated by the Track B-Forgiving Haiku-4.5 resolution pass; until that\nlayer lands, instances are constructed only by tests. `source` distinguishes\nthe resolution path so customers can audit which fields were inferred.",
        +                          "properties": {
        +                            "confidence": {
        +                              "anyOf": [
        +                                {
        +                                  "enum": [
        +                                    "high",
        +                                    "medium",
        +                                    "low"
        +                                  ],
        +                                  "type": "string"
        +                                },
        +                                {
        +                                  "type": "null"
        +                                }
        +                              ],
        +                              "default": null
        +                            },
        +                            "field_name": {
        +                              "minLength": 1,
        +                              "type": "string"
        +                            },
        +                            "resolved_value": {},
        +                            "source": {
        +                              "enum": [
        +                                "description_field",
        +                                "haiku_resolution",
        +                                "engine_default"
        +                              ],
        +                              "type": "string"
        +                            }
        +                          },
        +                          "required": [
        +                            "field_name",
        +                            "resolved_value",
        +                            "source"
        +                          ],
        +                          "type": "object"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "user_supplied": {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  }
        +                },
        +                "type": "object"
        +              },
        +              "standard": {
        +                "enum": [
        +                  "CESMM4",
        +                  "NRM2",
        +                  "SMM7",
        +                  "MMHW"
        +                ],
        +                "type": "string"
        +              },
        +              "text_summary": {
        +                "maxLength": 2000,
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "totals_summary": {
        +                "additionalProperties": false,
        +                "description": "Schema § 1.4 — totals_summary as a typed wrapper around the free-form dict.\n\nWire shape is a flat object (`{\"concrete_m3\": {...}, \"rebar_t\": {...}}`).\nWe model it as `RootModel`-equivalent via `model_config(extra=\"allow\")`\n+ a single `__root__`-style `entries` dict. Pydantic v2 recommends\n`RootModel` for free-form roots; using a wrapper class keeps the import\nsurface uniform with the rest of this module.",
        +                "properties": {
        +                  "entries": {
        +                    "additionalProperties": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.4 — single material/work-class total entry.",
        +                      "properties": {
        +                        "quantity": {
        +                          "minimum": 0,
        +                          "type": "number"
        +                        },
        +                        "unit": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "quantity",
        +                        "unit"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "object"
        +                  }
        +                },
        +                "type": "object"
        +              },
        +              "warnings": {
        +                "items": {
        +                  "additionalProperties": false,
        +                  "description": "Schema § 1.8 — a non-fatal geometry advisory (56th-fire T2).\n\nThe wire projection of the engine's `core.GeometryWarning`. Advisory only:\na warning NEVER changes a measured quantity — it flags geometry that is\nvalid but likely a mistake (e.g. a stale dependent-height default). Present\non BOTH tiers — a correctness/safety signal, not a paid feature.",
        +                  "properties": {
        +                    "affected_params": {
        +                      "items": {
        +                        "type": "string"
        +                      },
        +                      "type": "array"
        +                    },
        +                    "code": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "detail": {
        +                      "additionalProperties": {
        +                        "type": "number"
        +                      },
        +                      "type": "object"
        +                    },
        +                    "message": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "severity": {
        +                      "enum": [
        +                        "info",
        +                        "advisory",
        +                        "caution"
        +                      ],
        +                      "type": "string"
        +                    }
        +                  },
        +                  "required": [
        +                    "code",
        +                    "severity",
        +                    "message"
        +                  ],
        +                  "type": "object"
        +                },
        +                "type": "array"
        +              }
        +            },
        +            "required": [
        +              "assembly_slug",
        +              "standard",
        +              "parameters_used",
        +              "boq_rows",
        +              "totals_summary",
        +              "text_summary"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      },
        +      "error": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        +            "properties": {
        +              "code": {
        +                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        +                "enum": [
        +                  "RATE_LIMIT_EXCEEDED",
        +                  "TIER_INSUFFICIENT",
        +                  "INVALID_INPUT",
        +                  "SCHEMA_VERSION_MISMATCH",
        +                  "SCHEMA_INVARIANT_VIOLATION",
        +                  "UPSTREAM_TIMEOUT",
        +                  "BACKEND_FAILURE",
        +                  "IP_BLOCKED",
        +                  "RESOURCE_NOT_FOUND",
        +                  "RENDER_FAILURE",
        +                  "OCR_LOW_CONFIDENCE",
        +                  "MANUAL_REVIEW_REQUIRED",
        +                  "ACCEPTANCE_REQUIRED",
        +                  "INVALID_TOKEN"
        +                ],
        +                "type": "string"
        +              },
        +              "details": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "message": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "recoverable": {
        +                "type": "boolean"
        +              },
        +              "retry_after_seconds": {
        +                "anyOf": [
        +                  {
        +                    "minimum": 0,
        +                    "type": "integer"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              }
        +            },
        +            "required": [
        +              "code",
        +              "message",
        +              "recoverable"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      }
        +    },
        +    "required": [
        +      "_meta"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "_meta": {
        +        "additionalProperties": false,
        +        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        +        "properties": {
        +          "deliverables": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        +                "properties": {
        +                  "docx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "dxf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "expires_at": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  },
        +                  "pdf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "xlsx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "expires_at"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "document_id": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "issued_at": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "rate_limit_remaining": {
        +            "anyOf": [
        +              {
        +                "minimum": 0,
        +                "type": "integer"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "request_id": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "schema_version": {
        +            "const": "1.0.0",
        +            "default": "1.0.0",
        +            "type": "string"
        +          },
        +          "scope_boundary": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        +                "properties": {
        +                  "not_in_scope": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "produced": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "recommended_companions": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "type": "string"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "produced",
        +                  "not_in_scope"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tier": {
        +            "enum": [
        +              "free",
        +              "paid"
        +            ],
        +            "type": "string"
        +          },
        +          "tier_upgrade": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        +                "properties": {
        +                  "available_tiers": {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        +                      "properties": {
        +                        "billing": {
        +                          "enum": [
        +                            "one_off",
        +                            "monthly",
        +                            "annual"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "currency": {
        +                          "enum": [
        +                            "GBP",
        +                            "SGD",
        +                            "EUR",
        +                            "USD",
        +                            "CAD",
        +                            "AUD",
        +                            "NZD",
        +                            "MYR"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "display_name": {
        +                          "type": "string"
        +                        },
        +                        "price_local": {
        +                          "type": "number"
        +                        },
        +                        "tier_slug": {
        +                          "enum": [
        +                            "7_day_pass",
        +                            "solo",
        +                            "studio",
        +                            "practice"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "unlock_summary": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "tier_slug",
        +                        "display_name",
        +                        "price_local",
        +                        "currency",
        +                        "billing",
        +                        "unlock_summary"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "current_tier": {
        +                    "const": "free",
        +                    "default": "free",
        +                    "type": "string"
        +                  },
        +                  "pass_credit": {
        +                    "anyOf": [
        +                      {
        +                        "additionalProperties": false,
        +                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        +                        "properties": {
        +                          "amount_local": {
        +                            "type": "number"
        +                          },
        +                          "applies_to": {
        +                            "const": "solo_first_month",
        +                            "default": "solo_first_month",
        +                            "type": "string"
        +                          },
        +                          "currency": {
        +                            "type": "string"
        +                          },
        +                          "redeemable_until": {
        +                            "type": "string"
        +                          }
        +                        },
        +                        "required": [
        +                          "amount_local",
        +                          "currency",
        +                          "redeemable_until"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "pricing_url": {
        +                    "default": "https://civilquants.com/pricing",
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "available_tiers"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tos_url": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "upgrade_hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "warranty_disclaimer": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          }
        +        },
        +        "required": [
        +          "request_id",
        +          "issued_at",
        +          "tier"
        +        ],
        +        "type": "object"
        +      },
        +      "data": {
        +        "default": null,
        +        "title": "Data"
        +      },
        +      "error": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        +            "properties": {
        +              "code": {
        +                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        +                "enum": [
        +                  "RATE_LIMIT_EXCEEDED",
        +                  "TIER_INSUFFICIENT",
        +                  "INVALID_INPUT",
        +                  "SCHEMA_VERSION_MISMATCH",
        +                  "SCHEMA_INVARIANT_VIOLATION",
        +                  "UPSTREAM_TIMEOUT",
        +                  "BACKEND_FAILURE",
        +                  "IP_BLOCKED",
        +                  "RESOURCE_NOT_FOUND",
        +                  "RENDER_FAILURE",
        +                  "OCR_LOW_CONFIDENCE",
        +                  "MANUAL_REVIEW_REQUIRED",
        +                  "ACCEPTANCE_REQUIRED",
        +                  "INVALID_TOKEN"
        +                ],
        +                "type": "string"
        +              },
        +              "details": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "message": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "recoverable": {
        +                "type": "boolean"
        +              },
        +              "retry_after_seconds": {
        +                "anyOf": [
        +                  {
        +                    "minimum": 0,
        +                    "type": "integer"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              }
        +            },
        +            "required": [
        +              "code",
        +              "message",
        +              "recoverable"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      }
        +    },
        +    "required": [
        +      "_meta"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedcompute_pipe_bedding1 field changed
      • changedOutput schema / properties / result / anyOf
        Previous value: -[
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "_meta": {
        -        "additionalProperties": false,
        -        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        -        "properties": {
        -          "deliverables": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        -                "properties": {
        -                  "docx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "dxf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "expires_at": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  },
        -                  "pdf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "xlsx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "expires_at"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "document_id": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "issued_at": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "rate_limit_remaining": {
        -            "anyOf": [
        -              {
        -                "minimum": 0,
        -                "type": "integer"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "request_id": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "schema_version": {
        -            "const": "1.0.0",
        -            "default": "1.0.0",
        -            "type": "string"
        -          },
        -          "scope_boundary": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        -                "properties": {
        -                  "not_in_scope": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "produced": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "recommended_companions": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "type": "string"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "produced",
        -                  "not_in_scope"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tier": {
        -            "enum": [
        -              "free",
        -              "paid"
        -            ],
        -            "type": "string"
        -          },
        -          "tier_upgrade": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        -                "properties": {
        -                  "available_tiers": {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        -                      "properties": {
        -                        "billing": {
        -                          "enum": [
        -                            "one_off",
        -                            "monthly",
        -                            "annual"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "currency": {
        -                          "enum": [
        -                            "GBP",
        -                            "SGD",
        -                            "EUR",
        -                            "USD",
        -                            "CAD",
        -                            "AUD",
        -                            "NZD",
        -                            "MYR"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "display_name": {
        -                          "type": "string"
        -                        },
        -                        "price_local": {
        -                          "type": "number"
        -                        },
        -                        "tier_slug": {
        -                          "enum": [
        -                            "7_day_pass",
        -                            "solo",
        -                            "studio",
        -                            "practice"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "unlock_summary": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "tier_slug",
        -                        "display_name",
        -                        "price_local",
        -                        "currency",
        -                        "billing",
        -                        "unlock_summary"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "current_tier": {
        -                    "const": "free",
        -                    "default": "free",
        -                    "type": "string"
        -                  },
        -                  "pass_credit": {
        -                    "anyOf": [
        -                      {
        -                        "additionalProperties": false,
        -                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        -                        "properties": {
        -                          "amount_local": {
        -                            "type": "number"
        -                          },
        -                          "applies_to": {
        -                            "const": "solo_first_month",
        -                            "default": "solo_first_month",
        -                            "type": "string"
        -                          },
        -                          "currency": {
        -                            "type": "string"
        -                          },
        -                          "redeemable_until": {
        -                            "type": "string"
        -                          }
        -                        },
        -                        "required": [
        -                          "amount_local",
        -                          "currency",
        -                          "redeemable_until"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "pricing_url": {
        -                    "default": "https://civilquants.com/pricing",
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "available_tiers"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tos_url": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "upgrade_hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "warranty_disclaimer": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          }
        -        },
        -        "required": [
        -          "request_id",
        -          "issued_at",
        -          "tier"
        -        ],
        -        "type": "object"
        -      },
        -      "data": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Schema § 1.1 — the typed payload returned inside `MCPResponse[ComputeResult]`.\n\nFree-tier responses MUST omit `drawings` and `audit_trail` (the bridge\nenforces this); paid-tier responses populate both. `text_summary` is\nbounded to 2000 chars — keeps the LLM-facing summary token-cheap and\nforces longer narrative into BoQ row descriptions where it belongs.",
        -            "properties": {
        -              "assembly_slug": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "audit_trail": {
        -                "anyOf": [
        -                  {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.7 — paid-tier audit-trail entry.\n\nOne entry per BoQ row; `boq_row_index` ties to the row position in\n`ComputeResult.boq_rows`. `derivation` is the human-readable formula\nwalk-through; `formula` is the optional formal expression.",
        -                      "properties": {
        -                        "boq_row_index": {
        -                          "minimum": 0,
        -                          "type": "integer"
        -                        },
        -                        "derivation": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "formula": {
        -                          "anyOf": [
        -                            {
        -                              "type": "string"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ],
        -                          "default": null
        -                        },
        -                        "id": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "parameters_referenced": {
        -                          "items": {
        -                            "type": "string"
        -                          },
        -                          "type": "array"
        -                        }
        -                      },
        -                      "required": [
        -                        "id",
        -                        "boq_row_index",
        -                        "derivation"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "boq_rows": {
        -                "items": {
        -                  "additionalProperties": false,
        -                  "description": "Schema § 1.3 — a single bill row in the requested standard's format.\n\n`description` is the non-verbatim functional description per spec § 13.9 /\n§ 15 invariant — NEVER reproduces a standard's verbatim clause text.\n`rate` / `amount` ship null because rates are commodity data the customer\nowns; the engine's job is the measurement, not the pricing.",
        -                  "properties": {
        -                    "amount": {
        -                      "anyOf": [
        -                        {
        -                          "type": "number"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "attribution": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "audit_id": {
        -                      "anyOf": [
        -                        {
        -                          "type": "string"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "description": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "quantity": {
        -                      "minimum": 0,
        -                      "type": "number"
        -                    },
        -                    "rate": {
        -                      "anyOf": [
        -                        {
        -                          "type": "number"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "unit": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "work_section": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    }
        -                  },
        -                  "required": [
        -                    "work_section",
        -                    "description",
        -                    "quantity",
        -                    "unit",
        -                    "attribution"
        -                  ],
        -                  "type": "object"
        -                },
        -                "type": "array"
        -              },
        -              "drawings": {
        -                "anyOf": [
        -                  {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.6 — paid-tier drawing artefact pointer.\n\n`url` is an R2-signed URL; expiry is carried in `_meta.deliverables.expires_at`\non the envelope (not duplicated here). `layers` is DXF-only; PDF/SVG\ncallers omit it.",
        -                      "properties": {
        -                        "drawing_type": {
        -                          "enum": [
        -                            "section",
        -                            "plan",
        -                            "elevation",
        -                            "isometric",
        -                            "detail"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "format": {
        -                          "enum": [
        -                            "DXF",
        -                            "PDF",
        -                            "SVG"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "layers": {
        -                          "anyOf": [
        -                            {
        -                              "items": {
        -                                "type": "string"
        -                              },
        -                              "type": "array"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ],
        -                          "default": null
        -                        },
        -                        "scale": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "sheet_size": {
        -                          "enum": [
        -                            "A1",
        -                            "A2",
        -                            "A3",
        -                            "A4"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "url": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "drawing_type",
        -                        "format",
        -                        "url",
        -                        "sheet_size",
        -                        "scale"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "parameters_used": {
        -                "additionalProperties": false,
        -                "description": "Schema § 1.2 — the parameter snapshot the engine actually used.\n\nSplits user-supplied values from engine defaults so customers can see\nwhich numbers came from them and which the engine filled in. Every\ndefaulted parameter SHOULD have a corresponding entry in `assumptions`\n— the bridge layer enforces this when wrapping engine output.",
        -                "properties": {
        -                  "assumptions": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "engine_defaults": {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  "resolved_from_description": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "additionalProperties": false,
        -                          "description": "Schema § 1.2 — a parameter resolved by the forgiving-input layer.\n\nPopulated by the Track B-Forgiving Haiku-4.5 resolution pass; until that\nlayer lands, instances are constructed only by tests. `source` distinguishes\nthe resolution path so customers can audit which fields were inferred.",
        -                          "properties": {
        -                            "confidence": {
        -                              "anyOf": [
        -                                {
        -                                  "enum": [
        -                                    "high",
        -                                    "medium",
        -                                    "low"
        -                                  ],
        -                                  "type": "string"
        -                                },
        -                                {
        -                                  "type": "null"
        -                                }
        -                              ],
        -                              "default": null
        -                            },
        -                            "field_name": {
        -                              "minLength": 1,
        -                              "type": "string"
        -                            },
        -                            "resolved_value": {},
        -                            "source": {
        -                              "enum": [
        -                                "description_field",
        -                                "haiku_resolution",
        -                                "engine_default"
        -                              ],
        -                              "type": "string"
        -                            }
        -                          },
        -                          "required": [
        -                            "field_name",
        -                            "resolved_value",
        -                            "source"
        -                          ],
        -                          "type": "object"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "user_supplied": {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  }
        -                },
        -                "type": "object"
        -              },
        -              "standard": {
        -                "enum": [
        -                  "CESMM4",
        -                  "NRM2",
        -                  "SMM7",
        -                  "MMHW"
        -                ],
        -                "type": "string"
        -              },
        -              "text_summary": {
        -                "maxLength": 2000,
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "totals_summary": {
        -                "additionalProperties": false,
        -                "description": "Schema § 1.4 — totals_summary as a typed wrapper around the free-form dict.\n\nWire shape is a flat object (`{\"concrete_m3\": {...}, \"rebar_t\": {...}}`).\nWe model it as `RootModel`-equivalent via `model_config(extra=\"allow\")`\n+ a single `__root__`-style `entries` dict. Pydantic v2 recommends\n`RootModel` for free-form roots; using a wrapper class keeps the import\nsurface uniform with the rest of this module.",
        -                "properties": {
        -                  "entries": {
        -                    "additionalProperties": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.4 — single material/work-class total entry.",
        -                      "properties": {
        -                        "quantity": {
        -                          "minimum": 0,
        -                          "type": "number"
        -                        },
        -                        "unit": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "quantity",
        -                        "unit"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "object"
        -                  }
        -                },
        -                "type": "object"
        -              }
        -            },
        -            "required": [
        -              "assembly_slug",
        -              "standard",
        -              "parameters_used",
        -              "boq_rows",
        -              "totals_summary",
        -              "text_summary"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      },
        -      "error": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        -            "properties": {
        -              "code": {
        -                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        -                "enum": [
        -                  "RATE_LIMIT_EXCEEDED",
        -                  "TIER_INSUFFICIENT",
        -                  "INVALID_INPUT",
        -                  "SCHEMA_VERSION_MISMATCH",
        -                  "SCHEMA_INVARIANT_VIOLATION",
        -                  "UPSTREAM_TIMEOUT",
        -                  "BACKEND_FAILURE",
        -                  "IP_BLOCKED",
        -                  "RESOURCE_NOT_FOUND",
        -                  "RENDER_FAILURE",
        -                  "OCR_LOW_CONFIDENCE",
        -                  "MANUAL_REVIEW_REQUIRED",
        -                  "ACCEPTANCE_REQUIRED",
        -                  "INVALID_TOKEN"
        -                ],
        -                "type": "string"
        -              },
        -              "details": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "message": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "recoverable": {
        -                "type": "boolean"
        -              },
        -              "retry_after_seconds": {
        -                "anyOf": [
        -                  {
        -                    "minimum": 0,
        -                    "type": "integer"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              }
        -            },
        -            "required": [
        -              "code",
        -              "message",
        -              "recoverable"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      }
        -    },
        -    "required": [
        -      "_meta"
        -    ],
        -    "type": "object"
        -  },
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "_meta": {
        -        "additionalProperties": false,
        -        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        -        "properties": {
        -          "deliverables": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        -                "properties": {
        -                  "docx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "dxf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "expires_at": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  },
        -                  "pdf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "xlsx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "expires_at"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "document_id": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "issued_at": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "rate_limit_remaining": {
        -            "anyOf": [
        -              {
        -                "minimum": 0,
        -                "type": "integer"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "request_id": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "schema_version": {
        -            "const": "1.0.0",
        -            "default": "1.0.0",
        -            "type": "string"
        -          },
        -          "scope_boundary": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        -                "properties": {
        -                  "not_in_scope": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "produced": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "recommended_companions": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "type": "string"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "produced",
        -                  "not_in_scope"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tier": {
        -            "enum": [
        -              "free",
        -              "paid"
        -            ],
        -            "type": "string"
        -          },
        -          "tier_upgrade": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        -                "properties": {
        -                  "available_tiers": {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        -                      "properties": {
        -                        "billing": {
        -                          "enum": [
        -                            "one_off",
        -                            "monthly",
        -                            "annual"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "currency": {
        -                          "enum": [
        -                            "GBP",
        -                            "SGD",
        -                            "EUR",
        -                            "USD",
        -                            "CAD",
        -                            "AUD",
        -                            "NZD",
        -                            "MYR"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "display_name": {
        -                          "type": "string"
        -                        },
        -                        "price_local": {
        -                          "type": "number"
        -                        },
        -                        "tier_slug": {
        -                          "enum": [
        -                            "7_day_pass",
        -                            "solo",
        -                            "studio",
        -                            "practice"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "unlock_summary": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "tier_slug",
        -                        "display_name",
        -                        "price_local",
        -                        "currency",
        -                        "billing",
        -                        "unlock_summary"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "current_tier": {
        -                    "const": "free",
        -                    "default": "free",
        -                    "type": "string"
        -                  },
        -                  "pass_credit": {
        -                    "anyOf": [
        -                      {
        -                        "additionalProperties": false,
        -                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        -                        "properties": {
        -                          "amount_local": {
        -                            "type": "number"
        -                          },
        -                          "applies_to": {
        -                            "const": "solo_first_month",
        -                            "default": "solo_first_month",
        -                            "type": "string"
        -                          },
        -                          "currency": {
        -                            "type": "string"
        -                          },
        -                          "redeemable_until": {
        -                            "type": "string"
        -                          }
        -                        },
        -                        "required": [
        -                          "amount_local",
        -                          "currency",
        -                          "redeemable_until"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "pricing_url": {
        -                    "default": "https://civilquants.com/pricing",
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "available_tiers"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tos_url": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "upgrade_hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "warranty_disclaimer": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          }
        -        },
        -        "required": [
        -          "request_id",
        -          "issued_at",
        -          "tier"
        -        ],
        -        "type": "object"
        -      },
        -      "data": {
        -        "default": null,
        -        "title": "Data"
        -      },
        -      "error": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        -            "properties": {
        -              "code": {
        -                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        -                "enum": [
        -                  "RATE_LIMIT_EXCEEDED",
        -                  "TIER_INSUFFICIENT",
        -                  "INVALID_INPUT",
        -                  "SCHEMA_VERSION_MISMATCH",
        -                  "SCHEMA_INVARIANT_VIOLATION",
        -                  "UPSTREAM_TIMEOUT",
        -                  "BACKEND_FAILURE",
        -                  "IP_BLOCKED",
        -                  "RESOURCE_NOT_FOUND",
        -                  "RENDER_FAILURE",
        -                  "OCR_LOW_CONFIDENCE",
        -                  "MANUAL_REVIEW_REQUIRED",
        -                  "ACCEPTANCE_REQUIRED",
        -                  "INVALID_TOKEN"
        -                ],
        -                "type": "string"
        -              },
        -              "details": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "message": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "recoverable": {
        -                "type": "boolean"
        -              },
        -              "retry_after_seconds": {
        -                "anyOf": [
        -                  {
        -                    "minimum": 0,
        -                    "type": "integer"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              }
        -            },
        -            "required": [
        -              "code",
        -              "message",
        -              "recoverable"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      }
        -    },
        -    "required": [
        -      "_meta"
        -    ],
        -    "type": "object"
        -  }
        -]New value: +[
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "_meta": {
        +        "additionalProperties": false,
        +        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        +        "properties": {
        +          "deliverables": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        +                "properties": {
        +                  "docx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "dxf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "expires_at": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  },
        +                  "pdf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "xlsx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "expires_at"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "document_id": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "issued_at": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "rate_limit_remaining": {
        +            "anyOf": [
        +              {
        +                "minimum": 0,
        +                "type": "integer"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "request_id": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "schema_version": {
        +            "const": "1.0.0",
        +            "default": "1.0.0",
        +            "type": "string"
        +          },
        +          "scope_boundary": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        +                "properties": {
        +                  "not_in_scope": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "produced": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "recommended_companions": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "type": "string"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "produced",
        +                  "not_in_scope"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tier": {
        +            "enum": [
        +              "free",
        +              "paid"
        +            ],
        +            "type": "string"
        +          },
        +          "tier_upgrade": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        +                "properties": {
        +                  "available_tiers": {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        +                      "properties": {
        +                        "billing": {
        +                          "enum": [
        +                            "one_off",
        +                            "monthly",
        +                            "annual"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "currency": {
        +                          "enum": [
        +                            "GBP",
        +                            "SGD",
        +                            "EUR",
        +                            "USD",
        +                            "CAD",
        +                            "AUD",
        +                            "NZD",
        +                            "MYR"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "display_name": {
        +                          "type": "string"
        +                        },
        +                        "price_local": {
        +                          "type": "number"
        +                        },
        +                        "tier_slug": {
        +                          "enum": [
        +                            "7_day_pass",
        +                            "solo",
        +                            "studio",
        +                            "practice"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "unlock_summary": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "tier_slug",
        +                        "display_name",
        +                        "price_local",
        +                        "currency",
        +                        "billing",
        +                        "unlock_summary"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "current_tier": {
        +                    "const": "free",
        +                    "default": "free",
        +                    "type": "string"
        +                  },
        +                  "pass_credit": {
        +                    "anyOf": [
        +                      {
        +                        "additionalProperties": false,
        +                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        +                        "properties": {
        +                          "amount_local": {
        +                            "type": "number"
        +                          },
        +                          "applies_to": {
        +                            "const": "solo_first_month",
        +                            "default": "solo_first_month",
        +                            "type": "string"
        +                          },
        +                          "currency": {
        +                            "type": "string"
        +                          },
        +                          "redeemable_until": {
        +                            "type": "string"
        +                          }
        +                        },
        +                        "required": [
        +                          "amount_local",
        +                          "currency",
        +                          "redeemable_until"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "pricing_url": {
        +                    "default": "https://civilquants.com/pricing",
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "available_tiers"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tos_url": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "upgrade_hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "warranty_disclaimer": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          }
        +        },
        +        "required": [
        +          "request_id",
        +          "issued_at",
        +          "tier"
        +        ],
        +        "type": "object"
        +      },
        +      "data": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Schema § 1.1 — the typed payload returned inside `MCPResponse[ComputeResult]`.\n\nFree-tier responses MUST omit `drawings` and `audit_trail` (the bridge\nenforces this); paid-tier responses populate both. `text_summary` is\nbounded to 2000 chars — keeps the LLM-facing summary token-cheap and\nforces longer narrative into BoQ row descriptions where it belongs.\n`warnings` is the non-fatal geometry advisory list (both tiers).",
        +            "properties": {
        +              "assembly_slug": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "audit_trail": {
        +                "anyOf": [
        +                  {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.7 — paid-tier audit-trail entry.\n\nOne entry per BoQ row; `boq_row_index` ties to the row position in\n`ComputeResult.boq_rows`. `derivation` is the human-readable formula\nwalk-through; `formula` is the optional formal expression.",
        +                      "properties": {
        +                        "boq_row_index": {
        +                          "minimum": 0,
        +                          "type": "integer"
        +                        },
        +                        "derivation": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "formula": {
        +                          "anyOf": [
        +                            {
        +                              "type": "string"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ],
        +                          "default": null
        +                        },
        +                        "id": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "parameters_referenced": {
        +                          "items": {
        +                            "type": "string"
        +                          },
        +                          "type": "array"
        +                        }
        +                      },
        +                      "required": [
        +                        "id",
        +                        "boq_row_index",
        +                        "derivation"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "boq_rows": {
        +                "items": {
        +                  "additionalProperties": false,
        +                  "description": "Schema § 1.3 — a single bill row in the requested standard's format.\n\n`description` is the non-verbatim functional description per spec § 13.9 /\n§ 15 invariant — NEVER reproduces a standard's verbatim clause text.\n`rate` / `amount` ship null because rates are commodity data the customer\nowns; the engine's job is the measurement, not the pricing.",
        +                  "properties": {
        +                    "amount": {
        +                      "anyOf": [
        +                        {
        +                          "type": "number"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "attribution": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "audit_id": {
        +                      "anyOf": [
        +                        {
        +                          "type": "string"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "description": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "quantity": {
        +                      "minimum": 0,
        +                      "type": "number"
        +                    },
        +                    "rate": {
        +                      "anyOf": [
        +                        {
        +                          "type": "number"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "unit": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "work_section": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    }
        +                  },
        +                  "required": [
        +                    "work_section",
        +                    "description",
        +                    "quantity",
        +                    "unit",
        +                    "attribution"
        +                  ],
        +                  "type": "object"
        +                },
        +                "type": "array"
        +              },
        +              "drawings": {
        +                "anyOf": [
        +                  {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.6 — paid-tier drawing artefact pointer.\n\n`url` is an R2-signed URL; expiry is carried in `_meta.deliverables.expires_at`\non the envelope (not duplicated here). `layers` is DXF-only; PDF/SVG\ncallers omit it.",
        +                      "properties": {
        +                        "drawing_type": {
        +                          "enum": [
        +                            "section",
        +                            "plan",
        +                            "elevation",
        +                            "isometric",
        +                            "detail"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "format": {
        +                          "enum": [
        +                            "DXF",
        +                            "PDF",
        +                            "SVG"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "layers": {
        +                          "anyOf": [
        +                            {
        +                              "items": {
        +                                "type": "string"
        +                              },
        +                              "type": "array"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ],
        +                          "default": null
        +                        },
        +                        "scale": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "sheet_size": {
        +                          "enum": [
        +                            "A1",
        +                            "A2",
        +                            "A3",
        +                            "A4"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "url": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "drawing_type",
        +                        "format",
        +                        "url",
        +                        "sheet_size",
        +                        "scale"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "parameters_used": {
        +                "additionalProperties": false,
        +                "description": "Schema § 1.2 — the parameter snapshot the engine actually used.\n\nSplits user-supplied values from engine defaults so customers can see\nwhich numbers came from them and which the engine filled in. Every\ndefaulted parameter SHOULD have a corresponding entry in `assumptions`\n— the bridge layer enforces this when wrapping engine output.",
        +                "properties": {
        +                  "assumptions": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "engine_defaults": {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  "resolved_from_description": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "additionalProperties": false,
        +                          "description": "Schema § 1.2 — a parameter resolved by the forgiving-input layer.\n\nPopulated by the Track B-Forgiving Haiku-4.5 resolution pass; until that\nlayer lands, instances are constructed only by tests. `source` distinguishes\nthe resolution path so customers can audit which fields were inferred.",
        +                          "properties": {
        +                            "confidence": {
        +                              "anyOf": [
        +                                {
        +                                  "enum": [
        +                                    "high",
        +                                    "medium",
        +                                    "low"
        +                                  ],
        +                                  "type": "string"
        +                                },
        +                                {
        +                                  "type": "null"
        +                                }
        +                              ],
        +                              "default": null
        +                            },
        +                            "field_name": {
        +                              "minLength": 1,
        +                              "type": "string"
        +                            },
        +                            "resolved_value": {},
        +                            "source": {
        +                              "enum": [
        +                                "description_field",
        +                                "haiku_resolution",
        +                                "engine_default"
        +                              ],
        +                              "type": "string"
        +                            }
        +                          },
        +                          "required": [
        +                            "field_name",
        +                            "resolved_value",
        +                            "source"
        +                          ],
        +                          "type": "object"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "user_supplied": {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  }
        +                },
        +                "type": "object"
        +              },
        +              "standard": {
        +                "enum": [
        +                  "CESMM4",
        +                  "NRM2",
        +                  "SMM7",
        +                  "MMHW"
        +                ],
        +                "type": "string"
        +              },
        +              "text_summary": {
        +                "maxLength": 2000,
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "totals_summary": {
        +                "additionalProperties": false,
        +                "description": "Schema § 1.4 — totals_summary as a typed wrapper around the free-form dict.\n\nWire shape is a flat object (`{\"concrete_m3\": {...}, \"rebar_t\": {...}}`).\nWe model it as `RootModel`-equivalent via `model_config(extra=\"allow\")`\n+ a single `__root__`-style `entries` dict. Pydantic v2 recommends\n`RootModel` for free-form roots; using a wrapper class keeps the import\nsurface uniform with the rest of this module.",
        +                "properties": {
        +                  "entries": {
        +                    "additionalProperties": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.4 — single material/work-class total entry.",
        +                      "properties": {
        +                        "quantity": {
        +                          "minimum": 0,
        +                          "type": "number"
        +                        },
        +                        "unit": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "quantity",
        +                        "unit"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "object"
        +                  }
        +                },
        +                "type": "object"
        +              },
        +              "warnings": {
        +                "items": {
        +                  "additionalProperties": false,
        +                  "description": "Schema § 1.8 — a non-fatal geometry advisory (56th-fire T2).\n\nThe wire projection of the engine's `core.GeometryWarning`. Advisory only:\na warning NEVER changes a measured quantity — it flags geometry that is\nvalid but likely a mistake (e.g. a stale dependent-height default). Present\non BOTH tiers — a correctness/safety signal, not a paid feature.",
        +                  "properties": {
        +                    "affected_params": {
        +                      "items": {
        +                        "type": "string"
        +                      },
        +                      "type": "array"
        +                    },
        +                    "code": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "detail": {
        +                      "additionalProperties": {
        +                        "type": "number"
        +                      },
        +                      "type": "object"
        +                    },
        +                    "message": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "severity": {
        +                      "enum": [
        +                        "info",
        +                        "advisory",
        +                        "caution"
        +                      ],
        +                      "type": "string"
        +                    }
        +                  },
        +                  "required": [
        +                    "code",
        +                    "severity",
        +                    "message"
        +                  ],
        +                  "type": "object"
        +                },
        +                "type": "array"
        +              }
        +            },
        +            "required": [
        +              "assembly_slug",
        +              "standard",
        +              "parameters_used",
        +              "boq_rows",
        +              "totals_summary",
        +              "text_summary"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      },
        +      "error": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        +            "properties": {
        +              "code": {
        +                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        +                "enum": [
        +                  "RATE_LIMIT_EXCEEDED",
        +                  "TIER_INSUFFICIENT",
        +                  "INVALID_INPUT",
        +                  "SCHEMA_VERSION_MISMATCH",
        +                  "SCHEMA_INVARIANT_VIOLATION",
        +                  "UPSTREAM_TIMEOUT",
        +                  "BACKEND_FAILURE",
        +                  "IP_BLOCKED",
        +                  "RESOURCE_NOT_FOUND",
        +                  "RENDER_FAILURE",
        +                  "OCR_LOW_CONFIDENCE",
        +                  "MANUAL_REVIEW_REQUIRED",
        +                  "ACCEPTANCE_REQUIRED",
        +                  "INVALID_TOKEN"
        +                ],
        +                "type": "string"
        +              },
        +              "details": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "message": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "recoverable": {
        +                "type": "boolean"
        +              },
        +              "retry_after_seconds": {
        +                "anyOf": [
        +                  {
        +                    "minimum": 0,
        +                    "type": "integer"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              }
        +            },
        +            "required": [
        +              "code",
        +              "message",
        +              "recoverable"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      }
        +    },
        +    "required": [
        +      "_meta"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "_meta": {
        +        "additionalProperties": false,
        +        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        +        "properties": {
        +          "deliverables": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        +                "properties": {
        +                  "docx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "dxf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "expires_at": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  },
        +                  "pdf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "xlsx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "expires_at"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "document_id": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "issued_at": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "rate_limit_remaining": {
        +            "anyOf": [
        +              {
        +                "minimum": 0,
        +                "type": "integer"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "request_id": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "schema_version": {
        +            "const": "1.0.0",
        +            "default": "1.0.0",
        +            "type": "string"
        +          },
        +          "scope_boundary": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        +                "properties": {
        +                  "not_in_scope": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "produced": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "recommended_companions": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "type": "string"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "produced",
        +                  "not_in_scope"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tier": {
        +            "enum": [
        +              "free",
        +              "paid"
        +            ],
        +            "type": "string"
        +          },
        +          "tier_upgrade": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        +                "properties": {
        +                  "available_tiers": {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        +                      "properties": {
        +                        "billing": {
        +                          "enum": [
        +                            "one_off",
        +                            "monthly",
        +                            "annual"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "currency": {
        +                          "enum": [
        +                            "GBP",
        +                            "SGD",
        +                            "EUR",
        +                            "USD",
        +                            "CAD",
        +                            "AUD",
        +                            "NZD",
        +                            "MYR"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "display_name": {
        +                          "type": "string"
        +                        },
        +                        "price_local": {
        +                          "type": "number"
        +                        },
        +                        "tier_slug": {
        +                          "enum": [
        +                            "7_day_pass",
        +                            "solo",
        +                            "studio",
        +                            "practice"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "unlock_summary": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "tier_slug",
        +                        "display_name",
        +                        "price_local",
        +                        "currency",
        +                        "billing",
        +                        "unlock_summary"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "current_tier": {
        +                    "const": "free",
        +                    "default": "free",
        +                    "type": "string"
        +                  },
        +                  "pass_credit": {
        +                    "anyOf": [
        +                      {
        +                        "additionalProperties": false,
        +                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        +                        "properties": {
        +                          "amount_local": {
        +                            "type": "number"
        +                          },
        +                          "applies_to": {
        +                            "const": "solo_first_month",
        +                            "default": "solo_first_month",
        +                            "type": "string"
        +                          },
        +                          "currency": {
        +                            "type": "string"
        +                          },
        +                          "redeemable_until": {
        +                            "type": "string"
        +                          }
        +                        },
        +                        "required": [
        +                          "amount_local",
        +                          "currency",
        +                          "redeemable_until"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "pricing_url": {
        +                    "default": "https://civilquants.com/pricing",
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "available_tiers"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tos_url": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "upgrade_hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "warranty_disclaimer": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          }
        +        },
        +        "required": [
        +          "request_id",
        +          "issued_at",
        +          "tier"
        +        ],
        +        "type": "object"
        +      },
        +      "data": {
        +        "default": null,
        +        "title": "Data"
        +      },
        +      "error": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        +            "properties": {
        +              "code": {
        +                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        +                "enum": [
        +                  "RATE_LIMIT_EXCEEDED",
        +                  "TIER_INSUFFICIENT",
        +                  "INVALID_INPUT",
        +                  "SCHEMA_VERSION_MISMATCH",
        +                  "SCHEMA_INVARIANT_VIOLATION",
        +                  "UPSTREAM_TIMEOUT",
        +                  "BACKEND_FAILURE",
        +                  "IP_BLOCKED",
        +                  "RESOURCE_NOT_FOUND",
        +                  "RENDER_FAILURE",
        +                  "OCR_LOW_CONFIDENCE",
        +                  "MANUAL_REVIEW_REQUIRED",
        +                  "ACCEPTANCE_REQUIRED",
        +                  "INVALID_TOKEN"
        +                ],
        +                "type": "string"
        +              },
        +              "details": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "message": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "recoverable": {
        +                "type": "boolean"
        +              },
        +              "retry_after_seconds": {
        +                "anyOf": [
        +                  {
        +                    "minimum": 0,
        +                    "type": "integer"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              }
        +            },
        +            "required": [
        +              "code",
        +              "message",
        +              "recoverable"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      }
        +    },
        +    "required": [
        +      "_meta"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedcompute_pipework_testing1 field changed
      • changedOutput schema / properties / result / anyOf
        Previous value: -[
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "_meta": {
        -        "additionalProperties": false,
        -        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        -        "properties": {
        -          "deliverables": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        -                "properties": {
        -                  "docx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "dxf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "expires_at": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  },
        -                  "pdf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "xlsx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "expires_at"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "document_id": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "issued_at": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "rate_limit_remaining": {
        -            "anyOf": [
        -              {
        -                "minimum": 0,
        -                "type": "integer"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "request_id": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "schema_version": {
        -            "const": "1.0.0",
        -            "default": "1.0.0",
        -            "type": "string"
        -          },
        -          "scope_boundary": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        -                "properties": {
        -                  "not_in_scope": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "produced": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "recommended_companions": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "type": "string"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "produced",
        -                  "not_in_scope"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tier": {
        -            "enum": [
        -              "free",
        -              "paid"
        -            ],
        -            "type": "string"
        -          },
        -          "tier_upgrade": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        -                "properties": {
        -                  "available_tiers": {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        -                      "properties": {
        -                        "billing": {
        -                          "enum": [
        -                            "one_off",
        -                            "monthly",
        -                            "annual"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "currency": {
        -                          "enum": [
        -                            "GBP",
        -                            "SGD",
        -                            "EUR",
        -                            "USD",
        -                            "CAD",
        -                            "AUD",
        -                            "NZD",
        -                            "MYR"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "display_name": {
        -                          "type": "string"
        -                        },
        -                        "price_local": {
        -                          "type": "number"
        -                        },
        -                        "tier_slug": {
        -                          "enum": [
        -                            "7_day_pass",
        -                            "solo",
        -                            "studio",
        -                            "practice"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "unlock_summary": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "tier_slug",
        -                        "display_name",
        -                        "price_local",
        -                        "currency",
        -                        "billing",
        -                        "unlock_summary"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "current_tier": {
        -                    "const": "free",
        -                    "default": "free",
        -                    "type": "string"
        -                  },
        -                  "pass_credit": {
        -                    "anyOf": [
        -                      {
        -                        "additionalProperties": false,
        -                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        -                        "properties": {
        -                          "amount_local": {
        -                            "type": "number"
        -                          },
        -                          "applies_to": {
        -                            "const": "solo_first_month",
        -                            "default": "solo_first_month",
        -                            "type": "string"
        -                          },
        -                          "currency": {
        -                            "type": "string"
        -                          },
        -                          "redeemable_until": {
        -                            "type": "string"
        -                          }
        -                        },
        -                        "required": [
        -                          "amount_local",
        -                          "currency",
        -                          "redeemable_until"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "pricing_url": {
        -                    "default": "https://civilquants.com/pricing",
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "available_tiers"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tos_url": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "upgrade_hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "warranty_disclaimer": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          }
        -        },
        -        "required": [
        -          "request_id",
        -          "issued_at",
        -          "tier"
        -        ],
        -        "type": "object"
        -      },
        -      "data": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Schema § 1.1 — the typed payload returned inside `MCPResponse[ComputeResult]`.\n\nFree-tier responses MUST omit `drawings` and `audit_trail` (the bridge\nenforces this); paid-tier responses populate both. `text_summary` is\nbounded to 2000 chars — keeps the LLM-facing summary token-cheap and\nforces longer narrative into BoQ row descriptions where it belongs.",
        -            "properties": {
        -              "assembly_slug": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "audit_trail": {
        -                "anyOf": [
        -                  {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.7 — paid-tier audit-trail entry.\n\nOne entry per BoQ row; `boq_row_index` ties to the row position in\n`ComputeResult.boq_rows`. `derivation` is the human-readable formula\nwalk-through; `formula` is the optional formal expression.",
        -                      "properties": {
        -                        "boq_row_index": {
        -                          "minimum": 0,
        -                          "type": "integer"
        -                        },
        -                        "derivation": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "formula": {
        -                          "anyOf": [
        -                            {
        -                              "type": "string"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ],
        -                          "default": null
        -                        },
        -                        "id": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "parameters_referenced": {
        -                          "items": {
        -                            "type": "string"
        -                          },
        -                          "type": "array"
        -                        }
        -                      },
        -                      "required": [
        -                        "id",
        -                        "boq_row_index",
        -                        "derivation"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "boq_rows": {
        -                "items": {
        -                  "additionalProperties": false,
        -                  "description": "Schema § 1.3 — a single bill row in the requested standard's format.\n\n`description` is the non-verbatim functional description per spec § 13.9 /\n§ 15 invariant — NEVER reproduces a standard's verbatim clause text.\n`rate` / `amount` ship null because rates are commodity data the customer\nowns; the engine's job is the measurement, not the pricing.",
        -                  "properties": {
        -                    "amount": {
        -                      "anyOf": [
        -                        {
        -                          "type": "number"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "attribution": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "audit_id": {
        -                      "anyOf": [
        -                        {
        -                          "type": "string"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "description": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "quantity": {
        -                      "minimum": 0,
        -                      "type": "number"
        -                    },
        -                    "rate": {
        -                      "anyOf": [
        -                        {
        -                          "type": "number"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "unit": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "work_section": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    }
        -                  },
        -                  "required": [
        -                    "work_section",
        -                    "description",
        -                    "quantity",
        -                    "unit",
        -                    "attribution"
        -                  ],
        -                  "type": "object"
        -                },
        -                "type": "array"
        -              },
        -              "drawings": {
        -                "anyOf": [
        -                  {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.6 — paid-tier drawing artefact pointer.\n\n`url` is an R2-signed URL; expiry is carried in `_meta.deliverables.expires_at`\non the envelope (not duplicated here). `layers` is DXF-only; PDF/SVG\ncallers omit it.",
        -                      "properties": {
        -                        "drawing_type": {
        -                          "enum": [
        -                            "section",
        -                            "plan",
        -                            "elevation",
        -                            "isometric",
        -                            "detail"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "format": {
        -                          "enum": [
        -                            "DXF",
        -                            "PDF",
        -                            "SVG"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "layers": {
        -                          "anyOf": [
        -                            {
        -                              "items": {
        -                                "type": "string"
        -                              },
        -                              "type": "array"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ],
        -                          "default": null
        -                        },
        -                        "scale": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "sheet_size": {
        -                          "enum": [
        -                            "A1",
        -                            "A2",
        -                            "A3",
        -                            "A4"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "url": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "drawing_type",
        -                        "format",
        -                        "url",
        -                        "sheet_size",
        -                        "scale"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "parameters_used": {
        -                "additionalProperties": false,
        -                "description": "Schema § 1.2 — the parameter snapshot the engine actually used.\n\nSplits user-supplied values from engine defaults so customers can see\nwhich numbers came from them and which the engine filled in. Every\ndefaulted parameter SHOULD have a corresponding entry in `assumptions`\n— the bridge layer enforces this when wrapping engine output.",
        -                "properties": {
        -                  "assumptions": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "engine_defaults": {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  "resolved_from_description": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "additionalProperties": false,
        -                          "description": "Schema § 1.2 — a parameter resolved by the forgiving-input layer.\n\nPopulated by the Track B-Forgiving Haiku-4.5 resolution pass; until that\nlayer lands, instances are constructed only by tests. `source` distinguishes\nthe resolution path so customers can audit which fields were inferred.",
        -                          "properties": {
        -                            "confidence": {
        -                              "anyOf": [
        -                                {
        -                                  "enum": [
        -                                    "high",
        -                                    "medium",
        -                                    "low"
        -                                  ],
        -                                  "type": "string"
        -                                },
        -                                {
        -                                  "type": "null"
        -                                }
        -                              ],
        -                              "default": null
        -                            },
        -                            "field_name": {
        -                              "minLength": 1,
        -                              "type": "string"
        -                            },
        -                            "resolved_value": {},
        -                            "source": {
        -                              "enum": [
        -                                "description_field",
        -                                "haiku_resolution",
        -                                "engine_default"
        -                              ],
        -                              "type": "string"
        -                            }
        -                          },
        -                          "required": [
        -                            "field_name",
        -                            "resolved_value",
        -                            "source"
        -                          ],
        -                          "type": "object"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "user_supplied": {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  }
        -                },
        -                "type": "object"
        -              },
        -              "standard": {
        -                "enum": [
        -                  "CESMM4",
        -                  "NRM2",
        -                  "SMM7",
        -                  "MMHW"
        -                ],
        -                "type": "string"
        -              },
        -              "text_summary": {
        -                "maxLength": 2000,
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "totals_summary": {
        -                "additionalProperties": false,
        -                "description": "Schema § 1.4 — totals_summary as a typed wrapper around the free-form dict.\n\nWire shape is a flat object (`{\"concrete_m3\": {...}, \"rebar_t\": {...}}`).\nWe model it as `RootModel`-equivalent via `model_config(extra=\"allow\")`\n+ a single `__root__`-style `entries` dict. Pydantic v2 recommends\n`RootModel` for free-form roots; using a wrapper class keeps the import\nsurface uniform with the rest of this module.",
        -                "properties": {
        -                  "entries": {
        -                    "additionalProperties": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.4 — single material/work-class total entry.",
        -                      "properties": {
        -                        "quantity": {
        -                          "minimum": 0,
        -                          "type": "number"
        -                        },
        -                        "unit": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "quantity",
        -                        "unit"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "object"
        -                  }
        -                },
        -                "type": "object"
        -              }
        -            },
        -            "required": [
        -              "assembly_slug",
        -              "standard",
        -              "parameters_used",
        -              "boq_rows",
        -              "totals_summary",
        -              "text_summary"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      },
        -      "error": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        -            "properties": {
        -              "code": {
        -                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        -                "enum": [
        -                  "RATE_LIMIT_EXCEEDED",
        -                  "TIER_INSUFFICIENT",
        -                  "INVALID_INPUT",
        -                  "SCHEMA_VERSION_MISMATCH",
        -                  "SCHEMA_INVARIANT_VIOLATION",
        -                  "UPSTREAM_TIMEOUT",
        -                  "BACKEND_FAILURE",
        -                  "IP_BLOCKED",
        -                  "RESOURCE_NOT_FOUND",
        -                  "RENDER_FAILURE",
        -                  "OCR_LOW_CONFIDENCE",
        -                  "MANUAL_REVIEW_REQUIRED",
        -                  "ACCEPTANCE_REQUIRED",
        -                  "INVALID_TOKEN"
        -                ],
        -                "type": "string"
        -              },
        -              "details": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "message": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "recoverable": {
        -                "type": "boolean"
        -              },
        -              "retry_after_seconds": {
        -                "anyOf": [
        -                  {
        -                    "minimum": 0,
        -                    "type": "integer"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              }
        -            },
        -            "required": [
        -              "code",
        -              "message",
        -              "recoverable"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      }
        -    },
        -    "required": [
        -      "_meta"
        -    ],
        -    "type": "object"
        -  },
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "_meta": {
        -        "additionalProperties": false,
        -        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        -        "properties": {
        -          "deliverables": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        -                "properties": {
        -                  "docx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "dxf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "expires_at": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  },
        -                  "pdf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "xlsx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "expires_at"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "document_id": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "issued_at": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "rate_limit_remaining": {
        -            "anyOf": [
        -              {
        -                "minimum": 0,
        -                "type": "integer"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "request_id": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "schema_version": {
        -            "const": "1.0.0",
        -            "default": "1.0.0",
        -            "type": "string"
        -          },
        -          "scope_boundary": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        -                "properties": {
        -                  "not_in_scope": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "produced": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "recommended_companions": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "type": "string"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "produced",
        -                  "not_in_scope"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tier": {
        -            "enum": [
        -              "free",
        -              "paid"
        -            ],
        -            "type": "string"
        -          },
        -          "tier_upgrade": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        -                "properties": {
        -                  "available_tiers": {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        -                      "properties": {
        -                        "billing": {
        -                          "enum": [
        -                            "one_off",
        -                            "monthly",
        -                            "annual"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "currency": {
        -                          "enum": [
        -                            "GBP",
        -                            "SGD",
        -                            "EUR",
        -                            "USD",
        -                            "CAD",
        -                            "AUD",
        -                            "NZD",
        -                            "MYR"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "display_name": {
        -                          "type": "string"
        -                        },
        -                        "price_local": {
        -                          "type": "number"
        -                        },
        -                        "tier_slug": {
        -                          "enum": [
        -                            "7_day_pass",
        -                            "solo",
        -                            "studio",
        -                            "practice"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "unlock_summary": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "tier_slug",
        -                        "display_name",
        -                        "price_local",
        -                        "currency",
        -                        "billing",
        -                        "unlock_summary"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "current_tier": {
        -                    "const": "free",
        -                    "default": "free",
        -                    "type": "string"
        -                  },
        -                  "pass_credit": {
        -                    "anyOf": [
        -                      {
        -                        "additionalProperties": false,
        -                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        -                        "properties": {
        -                          "amount_local": {
        -                            "type": "number"
        -                          },
        -                          "applies_to": {
        -                            "const": "solo_first_month",
        -                            "default": "solo_first_month",
        -                            "type": "string"
        -                          },
        -                          "currency": {
        -                            "type": "string"
        -                          },
        -                          "redeemable_until": {
        -                            "type": "string"
        -                          }
        -                        },
        -                        "required": [
        -                          "amount_local",
        -                          "currency",
        -                          "redeemable_until"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "pricing_url": {
        -                    "default": "https://civilquants.com/pricing",
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "available_tiers"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tos_url": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "upgrade_hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "warranty_disclaimer": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          }
        -        },
        -        "required": [
        -          "request_id",
        -          "issued_at",
        -          "tier"
        -        ],
        -        "type": "object"
        -      },
        -      "data": {
        -        "default": null,
        -        "title": "Data"
        -      },
        -      "error": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        -            "properties": {
        -              "code": {
        -                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        -                "enum": [
        -                  "RATE_LIMIT_EXCEEDED",
        -                  "TIER_INSUFFICIENT",
        -                  "INVALID_INPUT",
        -                  "SCHEMA_VERSION_MISMATCH",
        -                  "SCHEMA_INVARIANT_VIOLATION",
        -                  "UPSTREAM_TIMEOUT",
        -                  "BACKEND_FAILURE",
        -                  "IP_BLOCKED",
        -                  "RESOURCE_NOT_FOUND",
        -                  "RENDER_FAILURE",
        -                  "OCR_LOW_CONFIDENCE",
        -                  "MANUAL_REVIEW_REQUIRED",
        -                  "ACCEPTANCE_REQUIRED",
        -                  "INVALID_TOKEN"
        -                ],
        -                "type": "string"
        -              },
        -              "details": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "message": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "recoverable": {
        -                "type": "boolean"
        -              },
        -              "retry_after_seconds": {
        -                "anyOf": [
        -                  {
        -                    "minimum": 0,
        -                    "type": "integer"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              }
        -            },
        -            "required": [
        -              "code",
        -              "message",
        -              "recoverable"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      }
        -    },
        -    "required": [
        -      "_meta"
        -    ],
        -    "type": "object"
        -  }
        -]New value: +[
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "_meta": {
        +        "additionalProperties": false,
        +        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        +        "properties": {
        +          "deliverables": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        +                "properties": {
        +                  "docx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "dxf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "expires_at": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  },
        +                  "pdf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "xlsx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "expires_at"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "document_id": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "issued_at": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "rate_limit_remaining": {
        +            "anyOf": [
        +              {
        +                "minimum": 0,
        +                "type": "integer"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "request_id": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "schema_version": {
        +            "const": "1.0.0",
        +            "default": "1.0.0",
        +            "type": "string"
        +          },
        +          "scope_boundary": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        +                "properties": {
        +                  "not_in_scope": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "produced": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "recommended_companions": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "type": "string"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "produced",
        +                  "not_in_scope"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tier": {
        +            "enum": [
        +              "free",
        +              "paid"
        +            ],
        +            "type": "string"
        +          },
        +          "tier_upgrade": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        +                "properties": {
        +                  "available_tiers": {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        +                      "properties": {
        +                        "billing": {
        +                          "enum": [
        +                            "one_off",
        +                            "monthly",
        +                            "annual"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "currency": {
        +                          "enum": [
        +                            "GBP",
        +                            "SGD",
        +                            "EUR",
        +                            "USD",
        +                            "CAD",
        +                            "AUD",
        +                            "NZD",
        +                            "MYR"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "display_name": {
        +                          "type": "string"
        +                        },
        +                        "price_local": {
        +                          "type": "number"
        +                        },
        +                        "tier_slug": {
        +                          "enum": [
        +                            "7_day_pass",
        +                            "solo",
        +                            "studio",
        +                            "practice"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "unlock_summary": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "tier_slug",
        +                        "display_name",
        +                        "price_local",
        +                        "currency",
        +                        "billing",
        +                        "unlock_summary"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "current_tier": {
        +                    "const": "free",
        +                    "default": "free",
        +                    "type": "string"
        +                  },
        +                  "pass_credit": {
        +                    "anyOf": [
        +                      {
        +                        "additionalProperties": false,
        +                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        +                        "properties": {
        +                          "amount_local": {
        +                            "type": "number"
        +                          },
        +                          "applies_to": {
        +                            "const": "solo_first_month",
        +                            "default": "solo_first_month",
        +                            "type": "string"
        +                          },
        +                          "currency": {
        +                            "type": "string"
        +                          },
        +                          "redeemable_until": {
        +                            "type": "string"
        +                          }
        +                        },
        +                        "required": [
        +                          "amount_local",
        +                          "currency",
        +                          "redeemable_until"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "pricing_url": {
        +                    "default": "https://civilquants.com/pricing",
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "available_tiers"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tos_url": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "upgrade_hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "warranty_disclaimer": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          }
        +        },
        +        "required": [
        +          "request_id",
        +          "issued_at",
        +          "tier"
        +        ],
        +        "type": "object"
        +      },
        +      "data": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Schema § 1.1 — the typed payload returned inside `MCPResponse[ComputeResult]`.\n\nFree-tier responses MUST omit `drawings` and `audit_trail` (the bridge\nenforces this); paid-tier responses populate both. `text_summary` is\nbounded to 2000 chars — keeps the LLM-facing summary token-cheap and\nforces longer narrative into BoQ row descriptions where it belongs.\n`warnings` is the non-fatal geometry advisory list (both tiers).",
        +            "properties": {
        +              "assembly_slug": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "audit_trail": {
        +                "anyOf": [
        +                  {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.7 — paid-tier audit-trail entry.\n\nOne entry per BoQ row; `boq_row_index` ties to the row position in\n`ComputeResult.boq_rows`. `derivation` is the human-readable formula\nwalk-through; `formula` is the optional formal expression.",
        +                      "properties": {
        +                        "boq_row_index": {
        +                          "minimum": 0,
        +                          "type": "integer"
        +                        },
        +                        "derivation": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "formula": {
        +                          "anyOf": [
        +                            {
        +                              "type": "string"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ],
        +                          "default": null
        +                        },
        +                        "id": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "parameters_referenced": {
        +                          "items": {
        +                            "type": "string"
        +                          },
        +                          "type": "array"
        +                        }
        +                      },
        +                      "required": [
        +                        "id",
        +                        "boq_row_index",
        +                        "derivation"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "boq_rows": {
        +                "items": {
        +                  "additionalProperties": false,
        +                  "description": "Schema § 1.3 — a single bill row in the requested standard's format.\n\n`description` is the non-verbatim functional description per spec § 13.9 /\n§ 15 invariant — NEVER reproduces a standard's verbatim clause text.\n`rate` / `amount` ship null because rates are commodity data the customer\nowns; the engine's job is the measurement, not the pricing.",
        +                  "properties": {
        +                    "amount": {
        +                      "anyOf": [
        +                        {
        +                          "type": "number"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "attribution": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "audit_id": {
        +                      "anyOf": [
        +                        {
        +                          "type": "string"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "description": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "quantity": {
        +                      "minimum": 0,
        +                      "type": "number"
        +                    },
        +                    "rate": {
        +                      "anyOf": [
        +                        {
        +                          "type": "number"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "unit": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "work_section": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    }
        +                  },
        +                  "required": [
        +                    "work_section",
        +                    "description",
        +                    "quantity",
        +                    "unit",
        +                    "attribution"
        +                  ],
        +                  "type": "object"
        +                },
        +                "type": "array"
        +              },
        +              "drawings": {
        +                "anyOf": [
        +                  {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.6 — paid-tier drawing artefact pointer.\n\n`url` is an R2-signed URL; expiry is carried in `_meta.deliverables.expires_at`\non the envelope (not duplicated here). `layers` is DXF-only; PDF/SVG\ncallers omit it.",
        +                      "properties": {
        +                        "drawing_type": {
        +                          "enum": [
        +                            "section",
        +                            "plan",
        +                            "elevation",
        +                            "isometric",
        +                            "detail"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "format": {
        +                          "enum": [
        +                            "DXF",
        +                            "PDF",
        +                            "SVG"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "layers": {
        +                          "anyOf": [
        +                            {
        +                              "items": {
        +                                "type": "string"
        +                              },
        +                              "type": "array"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ],
        +                          "default": null
        +                        },
        +                        "scale": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "sheet_size": {
        +                          "enum": [
        +                            "A1",
        +                            "A2",
        +                            "A3",
        +                            "A4"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "url": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "drawing_type",
        +                        "format",
        +                        "url",
        +                        "sheet_size",
        +                        "scale"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "parameters_used": {
        +                "additionalProperties": false,
        +                "description": "Schema § 1.2 — the parameter snapshot the engine actually used.\n\nSplits user-supplied values from engine defaults so customers can see\nwhich numbers came from them and which the engine filled in. Every\ndefaulted parameter SHOULD have a corresponding entry in `assumptions`\n— the bridge layer enforces this when wrapping engine output.",
        +                "properties": {
        +                  "assumptions": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "engine_defaults": {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  "resolved_from_description": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "additionalProperties": false,
        +                          "description": "Schema § 1.2 — a parameter resolved by the forgiving-input layer.\n\nPopulated by the Track B-Forgiving Haiku-4.5 resolution pass; until that\nlayer lands, instances are constructed only by tests. `source` distinguishes\nthe resolution path so customers can audit which fields were inferred.",
        +                          "properties": {
        +                            "confidence": {
        +                              "anyOf": [
        +                                {
        +                                  "enum": [
        +                                    "high",
        +                                    "medium",
        +                                    "low"
        +                                  ],
        +                                  "type": "string"
        +                                },
        +                                {
        +                                  "type": "null"
        +                                }
        +                              ],
        +                              "default": null
        +                            },
        +                            "field_name": {
        +                              "minLength": 1,
        +                              "type": "string"
        +                            },
        +                            "resolved_value": {},
        +                            "source": {
        +                              "enum": [
        +                                "description_field",
        +                                "haiku_resolution",
        +                                "engine_default"
        +                              ],
        +                              "type": "string"
        +                            }
        +                          },
        +                          "required": [
        +                            "field_name",
        +                            "resolved_value",
        +                            "source"
        +                          ],
        +                          "type": "object"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "user_supplied": {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  }
        +                },
        +                "type": "object"
        +              },
        +              "standard": {
        +                "enum": [
        +                  "CESMM4",
        +                  "NRM2",
        +                  "SMM7",
        +                  "MMHW"
        +                ],
        +                "type": "string"
        +              },
        +              "text_summary": {
        +                "maxLength": 2000,
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "totals_summary": {
        +                "additionalProperties": false,
        +                "description": "Schema § 1.4 — totals_summary as a typed wrapper around the free-form dict.\n\nWire shape is a flat object (`{\"concrete_m3\": {...}, \"rebar_t\": {...}}`).\nWe model it as `RootModel`-equivalent via `model_config(extra=\"allow\")`\n+ a single `__root__`-style `entries` dict. Pydantic v2 recommends\n`RootModel` for free-form roots; using a wrapper class keeps the import\nsurface uniform with the rest of this module.",
        +                "properties": {
        +                  "entries": {
        +                    "additionalProperties": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.4 — single material/work-class total entry.",
        +                      "properties": {
        +                        "quantity": {
        +                          "minimum": 0,
        +                          "type": "number"
        +                        },
        +                        "unit": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "quantity",
        +                        "unit"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "object"
        +                  }
        +                },
        +                "type": "object"
        +              },
        +              "warnings": {
        +                "items": {
        +                  "additionalProperties": false,
        +                  "description": "Schema § 1.8 — a non-fatal geometry advisory (56th-fire T2).\n\nThe wire projection of the engine's `core.GeometryWarning`. Advisory only:\na warning NEVER changes a measured quantity — it flags geometry that is\nvalid but likely a mistake (e.g. a stale dependent-height default). Present\non BOTH tiers — a correctness/safety signal, not a paid feature.",
        +                  "properties": {
        +                    "affected_params": {
        +                      "items": {
        +                        "type": "string"
        +                      },
        +                      "type": "array"
        +                    },
        +                    "code": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "detail": {
        +                      "additionalProperties": {
        +                        "type": "number"
        +                      },
        +                      "type": "object"
        +                    },
        +                    "message": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "severity": {
        +                      "enum": [
        +                        "info",
        +                        "advisory",
        +                        "caution"
        +                      ],
        +                      "type": "string"
        +                    }
        +                  },
        +                  "required": [
        +                    "code",
        +                    "severity",
        +                    "message"
        +                  ],
        +                  "type": "object"
        +                },
        +                "type": "array"
        +              }
        +            },
        +            "required": [
        +              "assembly_slug",
        +              "standard",
        +              "parameters_used",
        +              "boq_rows",
        +              "totals_summary",
        +              "text_summary"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      },
        +      "error": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        +            "properties": {
        +              "code": {
        +                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        +                "enum": [
        +                  "RATE_LIMIT_EXCEEDED",
        +                  "TIER_INSUFFICIENT",
        +                  "INVALID_INPUT",
        +                  "SCHEMA_VERSION_MISMATCH",
        +                  "SCHEMA_INVARIANT_VIOLATION",
        +                  "UPSTREAM_TIMEOUT",
        +                  "BACKEND_FAILURE",
        +                  "IP_BLOCKED",
        +                  "RESOURCE_NOT_FOUND",
        +                  "RENDER_FAILURE",
        +                  "OCR_LOW_CONFIDENCE",
        +                  "MANUAL_REVIEW_REQUIRED",
        +                  "ACCEPTANCE_REQUIRED",
        +                  "INVALID_TOKEN"
        +                ],
        +                "type": "string"
        +              },
        +              "details": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "message": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "recoverable": {
        +                "type": "boolean"
        +              },
        +              "retry_after_seconds": {
        +                "anyOf": [
        +                  {
        +                    "minimum": 0,
        +                    "type": "integer"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              }
        +            },
        +            "required": [
        +              "code",
        +              "message",
        +              "recoverable"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      }
        +    },
        +    "required": [
        +      "_meta"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "_meta": {
        +        "additionalProperties": false,
        +        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        +        "properties": {
        +          "deliverables": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        +                "properties": {
        +                  "docx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "dxf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "expires_at": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  },
        +                  "pdf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "xlsx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "expires_at"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "document_id": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "issued_at": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "rate_limit_remaining": {
        +            "anyOf": [
        +              {
        +                "minimum": 0,
        +                "type": "integer"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "request_id": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "schema_version": {
        +            "const": "1.0.0",
        +            "default": "1.0.0",
        +            "type": "string"
        +          },
        +          "scope_boundary": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        +                "properties": {
        +                  "not_in_scope": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "produced": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "recommended_companions": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "type": "string"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "produced",
        +                  "not_in_scope"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tier": {
        +            "enum": [
        +              "free",
        +              "paid"
        +            ],
        +            "type": "string"
        +          },
        +          "tier_upgrade": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        +                "properties": {
        +                  "available_tiers": {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        +                      "properties": {
        +                        "billing": {
        +                          "enum": [
        +                            "one_off",
        +                            "monthly",
        +                            "annual"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "currency": {
        +                          "enum": [
        +                            "GBP",
        +                            "SGD",
        +                            "EUR",
        +                            "USD",
        +                            "CAD",
        +                            "AUD",
        +                            "NZD",
        +                            "MYR"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "display_name": {
        +                          "type": "string"
        +                        },
        +                        "price_local": {
        +                          "type": "number"
        +                        },
        +                        "tier_slug": {
        +                          "enum": [
        +                            "7_day_pass",
        +                            "solo",
        +                            "studio",
        +                            "practice"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "unlock_summary": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "tier_slug",
        +                        "display_name",
        +                        "price_local",
        +                        "currency",
        +                        "billing",
        +                        "unlock_summary"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "current_tier": {
        +                    "const": "free",
        +                    "default": "free",
        +                    "type": "string"
        +                  },
        +                  "pass_credit": {
        +                    "anyOf": [
        +                      {
        +                        "additionalProperties": false,
        +                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        +                        "properties": {
        +                          "amount_local": {
        +                            "type": "number"
        +                          },
        +                          "applies_to": {
        +                            "const": "solo_first_month",
        +                            "default": "solo_first_month",
        +                            "type": "string"
        +                          },
        +                          "currency": {
        +                            "type": "string"
        +                          },
        +                          "redeemable_until": {
        +                            "type": "string"
        +                          }
        +                        },
        +                        "required": [
        +                          "amount_local",
        +                          "currency",
        +                          "redeemable_until"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "pricing_url": {
        +                    "default": "https://civilquants.com/pricing",
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "available_tiers"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tos_url": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "upgrade_hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "warranty_disclaimer": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          }
        +        },
        +        "required": [
        +          "request_id",
        +          "issued_at",
        +          "tier"
        +        ],
        +        "type": "object"
        +      },
        +      "data": {
        +        "default": null,
        +        "title": "Data"
        +      },
        +      "error": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        +            "properties": {
        +              "code": {
        +                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        +                "enum": [
        +                  "RATE_LIMIT_EXCEEDED",
        +                  "TIER_INSUFFICIENT",
        +                  "INVALID_INPUT",
        +                  "SCHEMA_VERSION_MISMATCH",
        +                  "SCHEMA_INVARIANT_VIOLATION",
        +                  "UPSTREAM_TIMEOUT",
        +                  "BACKEND_FAILURE",
        +                  "IP_BLOCKED",
        +                  "RESOURCE_NOT_FOUND",
        +                  "RENDER_FAILURE",
        +                  "OCR_LOW_CONFIDENCE",
        +                  "MANUAL_REVIEW_REQUIRED",
        +                  "ACCEPTANCE_REQUIRED",
        +                  "INVALID_TOKEN"
        +                ],
        +                "type": "string"
        +              },
        +              "details": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "message": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "recoverable": {
        +                "type": "boolean"
        +              },
        +              "retry_after_seconds": {
        +                "anyOf": [
        +                  {
        +                    "minimum": 0,
        +                    "type": "integer"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              }
        +            },
        +            "required": [
        +              "code",
        +              "message",
        +              "recoverable"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      }
        +    },
        +    "required": [
        +      "_meta"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedcompute_reinforced_soil_wall1 field changed
      • changedOutput schema / properties / result / anyOf
        Previous value: -[
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "_meta": {
        -        "additionalProperties": false,
        -        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        -        "properties": {
        -          "deliverables": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        -                "properties": {
        -                  "docx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "dxf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "expires_at": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  },
        -                  "pdf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "xlsx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "expires_at"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "document_id": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "issued_at": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "rate_limit_remaining": {
        -            "anyOf": [
        -              {
        -                "minimum": 0,
        -                "type": "integer"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "request_id": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "schema_version": {
        -            "const": "1.0.0",
        -            "default": "1.0.0",
        -            "type": "string"
        -          },
        -          "scope_boundary": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        -                "properties": {
        -                  "not_in_scope": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "produced": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "recommended_companions": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "type": "string"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "produced",
        -                  "not_in_scope"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tier": {
        -            "enum": [
        -              "free",
        -              "paid"
        -            ],
        -            "type": "string"
        -          },
        -          "tier_upgrade": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        -                "properties": {
        -                  "available_tiers": {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        -                      "properties": {
        -                        "billing": {
        -                          "enum": [
        -                            "one_off",
        -                            "monthly",
        -                            "annual"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "currency": {
        -                          "enum": [
        -                            "GBP",
        -                            "SGD",
        -                            "EUR",
        -                            "USD",
        -                            "CAD",
        -                            "AUD",
        -                            "NZD",
        -                            "MYR"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "display_name": {
        -                          "type": "string"
        -                        },
        -                        "price_local": {
        -                          "type": "number"
        -                        },
        -                        "tier_slug": {
        -                          "enum": [
        -                            "7_day_pass",
        -                            "solo",
        -                            "studio",
        -                            "practice"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "unlock_summary": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "tier_slug",
        -                        "display_name",
        -                        "price_local",
        -                        "currency",
        -                        "billing",
        -                        "unlock_summary"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "current_tier": {
        -                    "const": "free",
        -                    "default": "free",
        -                    "type": "string"
        -                  },
        -                  "pass_credit": {
        -                    "anyOf": [
        -                      {
        -                        "additionalProperties": false,
        -                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        -                        "properties": {
        -                          "amount_local": {
        -                            "type": "number"
        -                          },
        -                          "applies_to": {
        -                            "const": "solo_first_month",
        -                            "default": "solo_first_month",
        -                            "type": "string"
        -                          },
        -                          "currency": {
        -                            "type": "string"
        -                          },
        -                          "redeemable_until": {
        -                            "type": "string"
        -                          }
        -                        },
        -                        "required": [
        -                          "amount_local",
        -                          "currency",
        -                          "redeemable_until"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "pricing_url": {
        -                    "default": "https://civilquants.com/pricing",
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "available_tiers"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tos_url": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "upgrade_hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "warranty_disclaimer": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          }
        -        },
        -        "required": [
        -          "request_id",
        -          "issued_at",
        -          "tier"
        -        ],
        -        "type": "object"
        -      },
        -      "data": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Schema § 1.1 — the typed payload returned inside `MCPResponse[ComputeResult]`.\n\nFree-tier responses MUST omit `drawings` and `audit_trail` (the bridge\nenforces this); paid-tier responses populate both. `text_summary` is\nbounded to 2000 chars — keeps the LLM-facing summary token-cheap and\nforces longer narrative into BoQ row descriptions where it belongs.",
        -            "properties": {
        -              "assembly_slug": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "audit_trail": {
        -                "anyOf": [
        -                  {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.7 — paid-tier audit-trail entry.\n\nOne entry per BoQ row; `boq_row_index` ties to the row position in\n`ComputeResult.boq_rows`. `derivation` is the human-readable formula\nwalk-through; `formula` is the optional formal expression.",
        -                      "properties": {
        -                        "boq_row_index": {
        -                          "minimum": 0,
        -                          "type": "integer"
        -                        },
        -                        "derivation": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "formula": {
        -                          "anyOf": [
        -                            {
        -                              "type": "string"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ],
        -                          "default": null
        -                        },
        -                        "id": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "parameters_referenced": {
        -                          "items": {
        -                            "type": "string"
        -                          },
        -                          "type": "array"
        -                        }
        -                      },
        -                      "required": [
        -                        "id",
        -                        "boq_row_index",
        -                        "derivation"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "boq_rows": {
        -                "items": {
        -                  "additionalProperties": false,
        -                  "description": "Schema § 1.3 — a single bill row in the requested standard's format.\n\n`description` is the non-verbatim functional description per spec § 13.9 /\n§ 15 invariant — NEVER reproduces a standard's verbatim clause text.\n`rate` / `amount` ship null because rates are commodity data the customer\nowns; the engine's job is the measurement, not the pricing.",
        -                  "properties": {
        -                    "amount": {
        -                      "anyOf": [
        -                        {
        -                          "type": "number"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "attribution": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "audit_id": {
        -                      "anyOf": [
        -                        {
        -                          "type": "string"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "description": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "quantity": {
        -                      "minimum": 0,
        -                      "type": "number"
        -                    },
        -                    "rate": {
        -                      "anyOf": [
        -                        {
        -                          "type": "number"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "unit": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "work_section": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    }
        -                  },
        -                  "required": [
        -                    "work_section",
        -                    "description",
        -                    "quantity",
        -                    "unit",
        -                    "attribution"
        -                  ],
        -                  "type": "object"
        -                },
        -                "type": "array"
        -              },
        -              "drawings": {
        -                "anyOf": [
        -                  {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.6 — paid-tier drawing artefact pointer.\n\n`url` is an R2-signed URL; expiry is carried in `_meta.deliverables.expires_at`\non the envelope (not duplicated here). `layers` is DXF-only; PDF/SVG\ncallers omit it.",
        -                      "properties": {
        -                        "drawing_type": {
        -                          "enum": [
        -                            "section",
        -                            "plan",
        -                            "elevation",
        -                            "isometric",
        -                            "detail"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "format": {
        -                          "enum": [
        -                            "DXF",
        -                            "PDF",
        -                            "SVG"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "layers": {
        -                          "anyOf": [
        -                            {
        -                              "items": {
        -                                "type": "string"
        -                              },
        -                              "type": "array"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ],
        -                          "default": null
        -                        },
        -                        "scale": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "sheet_size": {
        -                          "enum": [
        -                            "A1",
        -                            "A2",
        -                            "A3",
        -                            "A4"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "url": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "drawing_type",
        -                        "format",
        -                        "url",
        -                        "sheet_size",
        -                        "scale"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "parameters_used": {
        -                "additionalProperties": false,
        -                "description": "Schema § 1.2 — the parameter snapshot the engine actually used.\n\nSplits user-supplied values from engine defaults so customers can see\nwhich numbers came from them and which the engine filled in. Every\ndefaulted parameter SHOULD have a corresponding entry in `assumptions`\n— the bridge layer enforces this when wrapping engine output.",
        -                "properties": {
        -                  "assumptions": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "engine_defaults": {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  "resolved_from_description": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "additionalProperties": false,
        -                          "description": "Schema § 1.2 — a parameter resolved by the forgiving-input layer.\n\nPopulated by the Track B-Forgiving Haiku-4.5 resolution pass; until that\nlayer lands, instances are constructed only by tests. `source` distinguishes\nthe resolution path so customers can audit which fields were inferred.",
        -                          "properties": {
        -                            "confidence": {
        -                              "anyOf": [
        -                                {
        -                                  "enum": [
        -                                    "high",
        -                                    "medium",
        -                                    "low"
        -                                  ],
        -                                  "type": "string"
        -                                },
        -                                {
        -                                  "type": "null"
        -                                }
        -                              ],
        -                              "default": null
        -                            },
        -                            "field_name": {
        -                              "minLength": 1,
        -                              "type": "string"
        -                            },
        -                            "resolved_value": {},
        -                            "source": {
        -                              "enum": [
        -                                "description_field",
        -                                "haiku_resolution",
        -                                "engine_default"
        -                              ],
        -                              "type": "string"
        -                            }
        -                          },
        -                          "required": [
        -                            "field_name",
        -                            "resolved_value",
        -                            "source"
        -                          ],
        -                          "type": "object"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "user_supplied": {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  }
        -                },
        -                "type": "object"
        -              },
        -              "standard": {
        -                "enum": [
        -                  "CESMM4",
        -                  "NRM2",
        -                  "SMM7",
        -                  "MMHW"
        -                ],
        -                "type": "string"
        -              },
        -              "text_summary": {
        -                "maxLength": 2000,
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "totals_summary": {
        -                "additionalProperties": false,
        -                "description": "Schema § 1.4 — totals_summary as a typed wrapper around the free-form dict.\n\nWire shape is a flat object (`{\"concrete_m3\": {...}, \"rebar_t\": {...}}`).\nWe model it as `RootModel`-equivalent via `model_config(extra=\"allow\")`\n+ a single `__root__`-style `entries` dict. Pydantic v2 recommends\n`RootModel` for free-form roots; using a wrapper class keeps the import\nsurface uniform with the rest of this module.",
        -                "properties": {
        -                  "entries": {
        -                    "additionalProperties": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.4 — single material/work-class total entry.",
        -                      "properties": {
        -                        "quantity": {
        -                          "minimum": 0,
        -                          "type": "number"
        -                        },
        -                        "unit": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "quantity",
        -                        "unit"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "object"
        -                  }
        -                },
        -                "type": "object"
        -              }
        -            },
        -            "required": [
        -              "assembly_slug",
        -              "standard",
        -              "parameters_used",
        -              "boq_rows",
        -              "totals_summary",
        -              "text_summary"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      },
        -      "error": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        -            "properties": {
        -              "code": {
        -                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        -                "enum": [
        -                  "RATE_LIMIT_EXCEEDED",
        -                  "TIER_INSUFFICIENT",
        -                  "INVALID_INPUT",
        -                  "SCHEMA_VERSION_MISMATCH",
        -                  "SCHEMA_INVARIANT_VIOLATION",
        -                  "UPSTREAM_TIMEOUT",
        -                  "BACKEND_FAILURE",
        -                  "IP_BLOCKED",
        -                  "RESOURCE_NOT_FOUND",
        -                  "RENDER_FAILURE",
        -                  "OCR_LOW_CONFIDENCE",
        -                  "MANUAL_REVIEW_REQUIRED",
        -                  "ACCEPTANCE_REQUIRED",
        -                  "INVALID_TOKEN"
        -                ],
        -                "type": "string"
        -              },
        -              "details": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "message": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "recoverable": {
        -                "type": "boolean"
        -              },
        -              "retry_after_seconds": {
        -                "anyOf": [
        -                  {
        -                    "minimum": 0,
        -                    "type": "integer"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              }
        -            },
        -            "required": [
        -              "code",
        -              "message",
        -              "recoverable"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      }
        -    },
        -    "required": [
        -      "_meta"
        -    ],
        -    "type": "object"
        -  },
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "_meta": {
        -        "additionalProperties": false,
        -        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        -        "properties": {
        -          "deliverables": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        -                "properties": {
        -                  "docx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "dxf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "expires_at": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  },
        -                  "pdf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "xlsx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "expires_at"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "document_id": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "issued_at": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "rate_limit_remaining": {
        -            "anyOf": [
        -              {
        -                "minimum": 0,
        -                "type": "integer"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "request_id": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "schema_version": {
        -            "const": "1.0.0",
        -            "default": "1.0.0",
        -            "type": "string"
        -          },
        -          "scope_boundary": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        -                "properties": {
        -                  "not_in_scope": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "produced": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "recommended_companions": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "type": "string"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "produced",
        -                  "not_in_scope"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tier": {
        -            "enum": [
        -              "free",
        -              "paid"
        -            ],
        -            "type": "string"
        -          },
        -          "tier_upgrade": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        -                "properties": {
        -                  "available_tiers": {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        -                      "properties": {
        -                        "billing": {
        -                          "enum": [
        -                            "one_off",
        -                            "monthly",
        -                            "annual"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "currency": {
        -                          "enum": [
        -                            "GBP",
        -                            "SGD",
        -                            "EUR",
        -                            "USD",
        -                            "CAD",
        -                            "AUD",
        -                            "NZD",
        -                            "MYR"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "display_name": {
        -                          "type": "string"
        -                        },
        -                        "price_local": {
        -                          "type": "number"
        -                        },
        -                        "tier_slug": {
        -                          "enum": [
        -                            "7_day_pass",
        -                            "solo",
        -                            "studio",
        -                            "practice"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "unlock_summary": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "tier_slug",
        -                        "display_name",
        -                        "price_local",
        -                        "currency",
        -                        "billing",
        -                        "unlock_summary"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "current_tier": {
        -                    "const": "free",
        -                    "default": "free",
        -                    "type": "string"
        -                  },
        -                  "pass_credit": {
        -                    "anyOf": [
        -                      {
        -                        "additionalProperties": false,
        -                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        -                        "properties": {
        -                          "amount_local": {
        -                            "type": "number"
        -                          },
        -                          "applies_to": {
        -                            "const": "solo_first_month",
        -                            "default": "solo_first_month",
        -                            "type": "string"
        -                          },
        -                          "currency": {
        -                            "type": "string"
        -                          },
        -                          "redeemable_until": {
        -                            "type": "string"
        -                          }
        -                        },
        -                        "required": [
        -                          "amount_local",
        -                          "currency",
        -                          "redeemable_until"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "pricing_url": {
        -                    "default": "https://civilquants.com/pricing",
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "available_tiers"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tos_url": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "upgrade_hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "warranty_disclaimer": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          }
        -        },
        -        "required": [
        -          "request_id",
        -          "issued_at",
        -          "tier"
        -        ],
        -        "type": "object"
        -      },
        -      "data": {
        -        "default": null,
        -        "title": "Data"
        -      },
        -      "error": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        -            "properties": {
        -              "code": {
        -                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        -                "enum": [
        -                  "RATE_LIMIT_EXCEEDED",
        -                  "TIER_INSUFFICIENT",
        -                  "INVALID_INPUT",
        -                  "SCHEMA_VERSION_MISMATCH",
        -                  "SCHEMA_INVARIANT_VIOLATION",
        -                  "UPSTREAM_TIMEOUT",
        -                  "BACKEND_FAILURE",
        -                  "IP_BLOCKED",
        -                  "RESOURCE_NOT_FOUND",
        -                  "RENDER_FAILURE",
        -                  "OCR_LOW_CONFIDENCE",
        -                  "MANUAL_REVIEW_REQUIRED",
        -                  "ACCEPTANCE_REQUIRED",
        -                  "INVALID_TOKEN"
        -                ],
        -                "type": "string"
        -              },
        -              "details": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "message": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "recoverable": {
        -                "type": "boolean"
        -              },
        -              "retry_after_seconds": {
        -                "anyOf": [
        -                  {
        -                    "minimum": 0,
        -                    "type": "integer"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              }
        -            },
        -            "required": [
        -              "code",
        -              "message",
        -              "recoverable"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      }
        -    },
        -    "required": [
        -      "_meta"
        -    ],
        -    "type": "object"
        -  }
        -]New value: +[
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "_meta": {
        +        "additionalProperties": false,
        +        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        +        "properties": {
        +          "deliverables": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        +                "properties": {
        +                  "docx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "dxf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "expires_at": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  },
        +                  "pdf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "xlsx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "expires_at"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "document_id": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "issued_at": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "rate_limit_remaining": {
        +            "anyOf": [
        +              {
        +                "minimum": 0,
        +                "type": "integer"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "request_id": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "schema_version": {
        +            "const": "1.0.0",
        +            "default": "1.0.0",
        +            "type": "string"
        +          },
        +          "scope_boundary": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        +                "properties": {
        +                  "not_in_scope": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "produced": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "recommended_companions": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "type": "string"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "produced",
        +                  "not_in_scope"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tier": {
        +            "enum": [
        +              "free",
        +              "paid"
        +            ],
        +            "type": "string"
        +          },
        +          "tier_upgrade": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        +                "properties": {
        +                  "available_tiers": {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        +                      "properties": {
        +                        "billing": {
        +                          "enum": [
        +                            "one_off",
        +                            "monthly",
        +                            "annual"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "currency": {
        +                          "enum": [
        +                            "GBP",
        +                            "SGD",
        +                            "EUR",
        +                            "USD",
        +                            "CAD",
        +                            "AUD",
        +                            "NZD",
        +                            "MYR"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "display_name": {
        +                          "type": "string"
        +                        },
        +                        "price_local": {
        +                          "type": "number"
        +                        },
        +                        "tier_slug": {
        +                          "enum": [
        +                            "7_day_pass",
        +                            "solo",
        +                            "studio",
        +                            "practice"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "unlock_summary": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "tier_slug",
        +                        "display_name",
        +                        "price_local",
        +                        "currency",
        +                        "billing",
        +                        "unlock_summary"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "current_tier": {
        +                    "const": "free",
        +                    "default": "free",
        +                    "type": "string"
        +                  },
        +                  "pass_credit": {
        +                    "anyOf": [
        +                      {
        +                        "additionalProperties": false,
        +                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        +                        "properties": {
        +                          "amount_local": {
        +                            "type": "number"
        +                          },
        +                          "applies_to": {
        +                            "const": "solo_first_month",
        +                            "default": "solo_first_month",
        +                            "type": "string"
        +                          },
        +                          "currency": {
        +                            "type": "string"
        +                          },
        +                          "redeemable_until": {
        +                            "type": "string"
        +                          }
        +                        },
        +                        "required": [
        +                          "amount_local",
        +                          "currency",
        +                          "redeemable_until"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "pricing_url": {
        +                    "default": "https://civilquants.com/pricing",
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "available_tiers"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tos_url": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "upgrade_hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "warranty_disclaimer": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          }
        +        },
        +        "required": [
        +          "request_id",
        +          "issued_at",
        +          "tier"
        +        ],
        +        "type": "object"
        +      },
        +      "data": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Schema § 1.1 — the typed payload returned inside `MCPResponse[ComputeResult]`.\n\nFree-tier responses MUST omit `drawings` and `audit_trail` (the bridge\nenforces this); paid-tier responses populate both. `text_summary` is\nbounded to 2000 chars — keeps the LLM-facing summary token-cheap and\nforces longer narrative into BoQ row descriptions where it belongs.\n`warnings` is the non-fatal geometry advisory list (both tiers).",
        +            "properties": {
        +              "assembly_slug": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "audit_trail": {
        +                "anyOf": [
        +                  {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.7 — paid-tier audit-trail entry.\n\nOne entry per BoQ row; `boq_row_index` ties to the row position in\n`ComputeResult.boq_rows`. `derivation` is the human-readable formula\nwalk-through; `formula` is the optional formal expression.",
        +                      "properties": {
        +                        "boq_row_index": {
        +                          "minimum": 0,
        +                          "type": "integer"
        +                        },
        +                        "derivation": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "formula": {
        +                          "anyOf": [
        +                            {
        +                              "type": "string"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ],
        +                          "default": null
        +                        },
        +                        "id": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "parameters_referenced": {
        +                          "items": {
        +                            "type": "string"
        +                          },
        +                          "type": "array"
        +                        }
        +                      },
        +                      "required": [
        +                        "id",
        +                        "boq_row_index",
        +                        "derivation"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "boq_rows": {
        +                "items": {
        +                  "additionalProperties": false,
        +                  "description": "Schema § 1.3 — a single bill row in the requested standard's format.\n\n`description` is the non-verbatim functional description per spec § 13.9 /\n§ 15 invariant — NEVER reproduces a standard's verbatim clause text.\n`rate` / `amount` ship null because rates are commodity data the customer\nowns; the engine's job is the measurement, not the pricing.",
        +                  "properties": {
        +                    "amount": {
        +                      "anyOf": [
        +                        {
        +                          "type": "number"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "attribution": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "audit_id": {
        +                      "anyOf": [
        +                        {
        +                          "type": "string"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "description": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "quantity": {
        +                      "minimum": 0,
        +                      "type": "number"
        +                    },
        +                    "rate": {
        +                      "anyOf": [
        +                        {
        +                          "type": "number"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "unit": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "work_section": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    }
        +                  },
        +                  "required": [
        +                    "work_section",
        +                    "description",
        +                    "quantity",
        +                    "unit",
        +                    "attribution"
        +                  ],
        +                  "type": "object"
        +                },
        +                "type": "array"
        +              },
        +              "drawings": {
        +                "anyOf": [
        +                  {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.6 — paid-tier drawing artefact pointer.\n\n`url` is an R2-signed URL; expiry is carried in `_meta.deliverables.expires_at`\non the envelope (not duplicated here). `layers` is DXF-only; PDF/SVG\ncallers omit it.",
        +                      "properties": {
        +                        "drawing_type": {
        +                          "enum": [
        +                            "section",
        +                            "plan",
        +                            "elevation",
        +                            "isometric",
        +                            "detail"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "format": {
        +                          "enum": [
        +                            "DXF",
        +                            "PDF",
        +                            "SVG"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "layers": {
        +                          "anyOf": [
        +                            {
        +                              "items": {
        +                                "type": "string"
        +                              },
        +                              "type": "array"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ],
        +                          "default": null
        +                        },
        +                        "scale": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "sheet_size": {
        +                          "enum": [
        +                            "A1",
        +                            "A2",
        +                            "A3",
        +                            "A4"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "url": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "drawing_type",
        +                        "format",
        +                        "url",
        +                        "sheet_size",
        +                        "scale"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "parameters_used": {
        +                "additionalProperties": false,
        +                "description": "Schema § 1.2 — the parameter snapshot the engine actually used.\n\nSplits user-supplied values from engine defaults so customers can see\nwhich numbers came from them and which the engine filled in. Every\ndefaulted parameter SHOULD have a corresponding entry in `assumptions`\n— the bridge layer enforces this when wrapping engine output.",
        +                "properties": {
        +                  "assumptions": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "engine_defaults": {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  "resolved_from_description": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "additionalProperties": false,
        +                          "description": "Schema § 1.2 — a parameter resolved by the forgiving-input layer.\n\nPopulated by the Track B-Forgiving Haiku-4.5 resolution pass; until that\nlayer lands, instances are constructed only by tests. `source` distinguishes\nthe resolution path so customers can audit which fields were inferred.",
        +                          "properties": {
        +                            "confidence": {
        +                              "anyOf": [
        +                                {
        +                                  "enum": [
        +                                    "high",
        +                                    "medium",
        +                                    "low"
        +                                  ],
        +                                  "type": "string"
        +                                },
        +                                {
        +                                  "type": "null"
        +                                }
        +                              ],
        +                              "default": null
        +                            },
        +                            "field_name": {
        +                              "minLength": 1,
        +                              "type": "string"
        +                            },
        +                            "resolved_value": {},
        +                            "source": {
        +                              "enum": [
        +                                "description_field",
        +                                "haiku_resolution",
        +                                "engine_default"
        +                              ],
        +                              "type": "string"
        +                            }
        +                          },
        +                          "required": [
        +                            "field_name",
        +                            "resolved_value",
        +                            "source"
        +                          ],
        +                          "type": "object"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "user_supplied": {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  }
        +                },
        +                "type": "object"
        +              },
        +              "standard": {
        +                "enum": [
        +                  "CESMM4",
        +                  "NRM2",
        +                  "SMM7",
        +                  "MMHW"
        +                ],
        +                "type": "string"
        +              },
        +              "text_summary": {
        +                "maxLength": 2000,
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "totals_summary": {
        +                "additionalProperties": false,
        +                "description": "Schema § 1.4 — totals_summary as a typed wrapper around the free-form dict.\n\nWire shape is a flat object (`{\"concrete_m3\": {...}, \"rebar_t\": {...}}`).\nWe model it as `RootModel`-equivalent via `model_config(extra=\"allow\")`\n+ a single `__root__`-style `entries` dict. Pydantic v2 recommends\n`RootModel` for free-form roots; using a wrapper class keeps the import\nsurface uniform with the rest of this module.",
        +                "properties": {
        +                  "entries": {
        +                    "additionalProperties": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.4 — single material/work-class total entry.",
        +                      "properties": {
        +                        "quantity": {
        +                          "minimum": 0,
        +                          "type": "number"
        +                        },
        +                        "unit": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "quantity",
        +                        "unit"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "object"
        +                  }
        +                },
        +                "type": "object"
        +              },
        +              "warnings": {
        +                "items": {
        +                  "additionalProperties": false,
        +                  "description": "Schema § 1.8 — a non-fatal geometry advisory (56th-fire T2).\n\nThe wire projection of the engine's `core.GeometryWarning`. Advisory only:\na warning NEVER changes a measured quantity — it flags geometry that is\nvalid but likely a mistake (e.g. a stale dependent-height default). Present\non BOTH tiers — a correctness/safety signal, not a paid feature.",
        +                  "properties": {
        +                    "affected_params": {
        +                      "items": {
        +                        "type": "string"
        +                      },
        +                      "type": "array"
        +                    },
        +                    "code": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "detail": {
        +                      "additionalProperties": {
        +                        "type": "number"
        +                      },
        +                      "type": "object"
        +                    },
        +                    "message": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "severity": {
        +                      "enum": [
        +                        "info",
        +                        "advisory",
        +                        "caution"
        +                      ],
        +                      "type": "string"
        +                    }
        +                  },
        +                  "required": [
        +                    "code",
        +                    "severity",
        +                    "message"
        +                  ],
        +                  "type": "object"
        +                },
        +                "type": "array"
        +              }
        +            },
        +            "required": [
        +              "assembly_slug",
        +              "standard",
        +              "parameters_used",
        +              "boq_rows",
        +              "totals_summary",
        +              "text_summary"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      },
        +      "error": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        +            "properties": {
        +              "code": {
        +                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        +                "enum": [
        +                  "RATE_LIMIT_EXCEEDED",
        +                  "TIER_INSUFFICIENT",
        +                  "INVALID_INPUT",
        +                  "SCHEMA_VERSION_MISMATCH",
        +                  "SCHEMA_INVARIANT_VIOLATION",
        +                  "UPSTREAM_TIMEOUT",
        +                  "BACKEND_FAILURE",
        +                  "IP_BLOCKED",
        +                  "RESOURCE_NOT_FOUND",
        +                  "RENDER_FAILURE",
        +                  "OCR_LOW_CONFIDENCE",
        +                  "MANUAL_REVIEW_REQUIRED",
        +                  "ACCEPTANCE_REQUIRED",
        +                  "INVALID_TOKEN"
        +                ],
        +                "type": "string"
        +              },
        +              "details": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "message": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "recoverable": {
        +                "type": "boolean"
        +              },
        +              "retry_after_seconds": {
        +                "anyOf": [
        +                  {
        +                    "minimum": 0,
        +                    "type": "integer"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              }
        +            },
        +            "required": [
        +              "code",
        +              "message",
        +              "recoverable"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      }
        +    },
        +    "required": [
        +      "_meta"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "_meta": {
        +        "additionalProperties": false,
        +        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        +        "properties": {
        +          "deliverables": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        +                "properties": {
        +                  "docx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "dxf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "expires_at": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  },
        +                  "pdf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "xlsx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "expires_at"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "document_id": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "issued_at": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "rate_limit_remaining": {
        +            "anyOf": [
        +              {
        +                "minimum": 0,
        +                "type": "integer"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "request_id": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "schema_version": {
        +            "const": "1.0.0",
        +            "default": "1.0.0",
        +            "type": "string"
        +          },
        +          "scope_boundary": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        +                "properties": {
        +                  "not_in_scope": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "produced": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "recommended_companions": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "type": "string"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "produced",
        +                  "not_in_scope"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tier": {
        +            "enum": [
        +              "free",
        +              "paid"
        +            ],
        +            "type": "string"
        +          },
        +          "tier_upgrade": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        +                "properties": {
        +                  "available_tiers": {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        +                      "properties": {
        +                        "billing": {
        +                          "enum": [
        +                            "one_off",
        +                            "monthly",
        +                            "annual"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "currency": {
        +                          "enum": [
        +                            "GBP",
        +                            "SGD",
        +                            "EUR",
        +                            "USD",
        +                            "CAD",
        +                            "AUD",
        +                            "NZD",
        +                            "MYR"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "display_name": {
        +                          "type": "string"
        +                        },
        +                        "price_local": {
        +                          "type": "number"
        +                        },
        +                        "tier_slug": {
        +                          "enum": [
        +                            "7_day_pass",
        +                            "solo",
        +                            "studio",
        +                            "practice"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "unlock_summary": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "tier_slug",
        +                        "display_name",
        +                        "price_local",
        +                        "currency",
        +                        "billing",
        +                        "unlock_summary"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "current_tier": {
        +                    "const": "free",
        +                    "default": "free",
        +                    "type": "string"
        +                  },
        +                  "pass_credit": {
        +                    "anyOf": [
        +                      {
        +                        "additionalProperties": false,
        +                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        +                        "properties": {
        +                          "amount_local": {
        +                            "type": "number"
        +                          },
        +                          "applies_to": {
        +                            "const": "solo_first_month",
        +                            "default": "solo_first_month",
        +                            "type": "string"
        +                          },
        +                          "currency": {
        +                            "type": "string"
        +                          },
        +                          "redeemable_until": {
        +                            "type": "string"
        +                          }
        +                        },
        +                        "required": [
        +                          "amount_local",
        +                          "currency",
        +                          "redeemable_until"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "pricing_url": {
        +                    "default": "https://civilquants.com/pricing",
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "available_tiers"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tos_url": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "upgrade_hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "warranty_disclaimer": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          }
        +        },
        +        "required": [
        +          "request_id",
        +          "issued_at",
        +          "tier"
        +        ],
        +        "type": "object"
        +      },
        +      "data": {
        +        "default": null,
        +        "title": "Data"
        +      },
        +      "error": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        +            "properties": {
        +              "code": {
        +                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        +                "enum": [
        +                  "RATE_LIMIT_EXCEEDED",
        +                  "TIER_INSUFFICIENT",
        +                  "INVALID_INPUT",
        +                  "SCHEMA_VERSION_MISMATCH",
        +                  "SCHEMA_INVARIANT_VIOLATION",
        +                  "UPSTREAM_TIMEOUT",
        +                  "BACKEND_FAILURE",
        +                  "IP_BLOCKED",
        +                  "RESOURCE_NOT_FOUND",
        +                  "RENDER_FAILURE",
        +                  "OCR_LOW_CONFIDENCE",
        +                  "MANUAL_REVIEW_REQUIRED",
        +                  "ACCEPTANCE_REQUIRED",
        +                  "INVALID_TOKEN"
        +                ],
        +                "type": "string"
        +              },
        +              "details": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "message": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "recoverable": {
        +                "type": "boolean"
        +              },
        +              "retry_after_seconds": {
        +                "anyOf": [
        +                  {
        +                    "minimum": 0,
        +                    "type": "integer"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              }
        +            },
        +            "required": [
        +              "code",
        +              "message",
        +              "recoverable"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      }
        +    },
        +    "required": [
        +      "_meta"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedcompute_rigid_pavement1 field changed
      • changedOutput schema / properties / result / anyOf
        Previous value: -[
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "_meta": {
        -        "additionalProperties": false,
        -        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        -        "properties": {
        -          "deliverables": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        -                "properties": {
        -                  "docx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "dxf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "expires_at": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  },
        -                  "pdf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "xlsx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "expires_at"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "document_id": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "issued_at": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "rate_limit_remaining": {
        -            "anyOf": [
        -              {
        -                "minimum": 0,
        -                "type": "integer"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "request_id": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "schema_version": {
        -            "const": "1.0.0",
        -            "default": "1.0.0",
        -            "type": "string"
        -          },
        -          "scope_boundary": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        -                "properties": {
        -                  "not_in_scope": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "produced": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "recommended_companions": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "type": "string"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "produced",
        -                  "not_in_scope"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tier": {
        -            "enum": [
        -              "free",
        -              "paid"
        -            ],
        -            "type": "string"
        -          },
        -          "tier_upgrade": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        -                "properties": {
        -                  "available_tiers": {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        -                      "properties": {
        -                        "billing": {
        -                          "enum": [
        -                            "one_off",
        -                            "monthly",
        -                            "annual"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "currency": {
        -                          "enum": [
        -                            "GBP",
        -                            "SGD",
        -                            "EUR",
        -                            "USD",
        -                            "CAD",
        -                            "AUD",
        -                            "NZD",
        -                            "MYR"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "display_name": {
        -                          "type": "string"
        -                        },
        -                        "price_local": {
        -                          "type": "number"
        -                        },
        -                        "tier_slug": {
        -                          "enum": [
        -                            "7_day_pass",
        -                            "solo",
        -                            "studio",
        -                            "practice"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "unlock_summary": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "tier_slug",
        -                        "display_name",
        -                        "price_local",
        -                        "currency",
        -                        "billing",
        -                        "unlock_summary"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "current_tier": {
        -                    "const": "free",
        -                    "default": "free",
        -                    "type": "string"
        -                  },
        -                  "pass_credit": {
        -                    "anyOf": [
        -                      {
        -                        "additionalProperties": false,
        -                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        -                        "properties": {
        -                          "amount_local": {
        -                            "type": "number"
        -                          },
        -                          "applies_to": {
        -                            "const": "solo_first_month",
        -                            "default": "solo_first_month",
        -                            "type": "string"
        -                          },
        -                          "currency": {
        -                            "type": "string"
        -                          },
        -                          "redeemable_until": {
        -                            "type": "string"
        -                          }
        -                        },
        -                        "required": [
        -                          "amount_local",
        -                          "currency",
        -                          "redeemable_until"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "pricing_url": {
        -                    "default": "https://civilquants.com/pricing",
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "available_tiers"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tos_url": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "upgrade_hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "warranty_disclaimer": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          }
        -        },
        -        "required": [
        -          "request_id",
        -          "issued_at",
        -          "tier"
        -        ],
        -        "type": "object"
        -      },
        -      "data": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Schema § 1.1 — the typed payload returned inside `MCPResponse[ComputeResult]`.\n\nFree-tier responses MUST omit `drawings` and `audit_trail` (the bridge\nenforces this); paid-tier responses populate both. `text_summary` is\nbounded to 2000 chars — keeps the LLM-facing summary token-cheap and\nforces longer narrative into BoQ row descriptions where it belongs.",
        -            "properties": {
        -              "assembly_slug": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "audit_trail": {
        -                "anyOf": [
        -                  {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.7 — paid-tier audit-trail entry.\n\nOne entry per BoQ row; `boq_row_index` ties to the row position in\n`ComputeResult.boq_rows`. `derivation` is the human-readable formula\nwalk-through; `formula` is the optional formal expression.",
        -                      "properties": {
        -                        "boq_row_index": {
        -                          "minimum": 0,
        -                          "type": "integer"
        -                        },
        -                        "derivation": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "formula": {
        -                          "anyOf": [
        -                            {
        -                              "type": "string"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ],
        -                          "default": null
        -                        },
        -                        "id": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "parameters_referenced": {
        -                          "items": {
        -                            "type": "string"
        -                          },
        -                          "type": "array"
        -                        }
        -                      },
        -                      "required": [
        -                        "id",
        -                        "boq_row_index",
        -                        "derivation"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "boq_rows": {
        -                "items": {
        -                  "additionalProperties": false,
        -                  "description": "Schema § 1.3 — a single bill row in the requested standard's format.\n\n`description` is the non-verbatim functional description per spec § 13.9 /\n§ 15 invariant — NEVER reproduces a standard's verbatim clause text.\n`rate` / `amount` ship null because rates are commodity data the customer\nowns; the engine's job is the measurement, not the pricing.",
        -                  "properties": {
        -                    "amount": {
        -                      "anyOf": [
        -                        {
        -                          "type": "number"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "attribution": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "audit_id": {
        -                      "anyOf": [
        -                        {
        -                          "type": "string"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "description": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "quantity": {
        -                      "minimum": 0,
        -                      "type": "number"
        -                    },
        -                    "rate": {
        -                      "anyOf": [
        -                        {
        -                          "type": "number"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "unit": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "work_section": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    }
        -                  },
        -                  "required": [
        -                    "work_section",
        -                    "description",
        -                    "quantity",
        -                    "unit",
        -                    "attribution"
        -                  ],
        -                  "type": "object"
        -                },
        -                "type": "array"
        -              },
        -              "drawings": {
        -                "anyOf": [
        -                  {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.6 — paid-tier drawing artefact pointer.\n\n`url` is an R2-signed URL; expiry is carried in `_meta.deliverables.expires_at`\non the envelope (not duplicated here). `layers` is DXF-only; PDF/SVG\ncallers omit it.",
        -                      "properties": {
        -                        "drawing_type": {
        -                          "enum": [
        -                            "section",
        -                            "plan",
        -                            "elevation",
        -                            "isometric",
        -                            "detail"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "format": {
        -                          "enum": [
        -                            "DXF",
        -                            "PDF",
        -                            "SVG"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "layers": {
        -                          "anyOf": [
        -                            {
        -                              "items": {
        -                                "type": "string"
        -                              },
        -                              "type": "array"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ],
        -                          "default": null
        -                        },
        -                        "scale": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "sheet_size": {
        -                          "enum": [
        -                            "A1",
        -                            "A2",
        -                            "A3",
        -                            "A4"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "url": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "drawing_type",
        -                        "format",
        -                        "url",
        -                        "sheet_size",
        -                        "scale"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "parameters_used": {
        -                "additionalProperties": false,
        -                "description": "Schema § 1.2 — the parameter snapshot the engine actually used.\n\nSplits user-supplied values from engine defaults so customers can see\nwhich numbers came from them and which the engine filled in. Every\ndefaulted parameter SHOULD have a corresponding entry in `assumptions`\n— the bridge layer enforces this when wrapping engine output.",
        -                "properties": {
        -                  "assumptions": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "engine_defaults": {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  "resolved_from_description": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "additionalProperties": false,
        -                          "description": "Schema § 1.2 — a parameter resolved by the forgiving-input layer.\n\nPopulated by the Track B-Forgiving Haiku-4.5 resolution pass; until that\nlayer lands, instances are constructed only by tests. `source` distinguishes\nthe resolution path so customers can audit which fields were inferred.",
        -                          "properties": {
        -                            "confidence": {
        -                              "anyOf": [
        -                                {
        -                                  "enum": [
        -                                    "high",
        -                                    "medium",
        -                                    "low"
        -                                  ],
        -                                  "type": "string"
        -                                },
        -                                {
        -                                  "type": "null"
        -                                }
        -                              ],
        -                              "default": null
        -                            },
        -                            "field_name": {
        -                              "minLength": 1,
        -                              "type": "string"
        -                            },
        -                            "resolved_value": {},
        -                            "source": {
        -                              "enum": [
        -                                "description_field",
        -                                "haiku_resolution",
        -                                "engine_default"
        -                              ],
        -                              "type": "string"
        -                            }
        -                          },
        -                          "required": [
        -                            "field_name",
        -                            "resolved_value",
        -                            "source"
        -                          ],
        -                          "type": "object"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "user_supplied": {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  }
        -                },
        -                "type": "object"
        -              },
        -              "standard": {
        -                "enum": [
        -                  "CESMM4",
        -                  "NRM2",
        -                  "SMM7",
        -                  "MMHW"
        -                ],
        -                "type": "string"
        -              },
        -              "text_summary": {
        -                "maxLength": 2000,
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "totals_summary": {
        -                "additionalProperties": false,
        -                "description": "Schema § 1.4 — totals_summary as a typed wrapper around the free-form dict.\n\nWire shape is a flat object (`{\"concrete_m3\": {...}, \"rebar_t\": {...}}`).\nWe model it as `RootModel`-equivalent via `model_config(extra=\"allow\")`\n+ a single `__root__`-style `entries` dict. Pydantic v2 recommends\n`RootModel` for free-form roots; using a wrapper class keeps the import\nsurface uniform with the rest of this module.",
        -                "properties": {
        -                  "entries": {
        -                    "additionalProperties": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.4 — single material/work-class total entry.",
        -                      "properties": {
        -                        "quantity": {
        -                          "minimum": 0,
        -                          "type": "number"
        -                        },
        -                        "unit": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "quantity",
        -                        "unit"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "object"
        -                  }
        -                },
        -                "type": "object"
        -              }
        -            },
        -            "required": [
        -              "assembly_slug",
        -              "standard",
        -              "parameters_used",
        -              "boq_rows",
        -              "totals_summary",
        -              "text_summary"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      },
        -      "error": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        -            "properties": {
        -              "code": {
        -                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        -                "enum": [
        -                  "RATE_LIMIT_EXCEEDED",
        -                  "TIER_INSUFFICIENT",
        -                  "INVALID_INPUT",
        -                  "SCHEMA_VERSION_MISMATCH",
        -                  "SCHEMA_INVARIANT_VIOLATION",
        -                  "UPSTREAM_TIMEOUT",
        -                  "BACKEND_FAILURE",
        -                  "IP_BLOCKED",
        -                  "RESOURCE_NOT_FOUND",
        -                  "RENDER_FAILURE",
        -                  "OCR_LOW_CONFIDENCE",
        -                  "MANUAL_REVIEW_REQUIRED",
        -                  "ACCEPTANCE_REQUIRED",
        -                  "INVALID_TOKEN"
        -                ],
        -                "type": "string"
        -              },
        -              "details": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "message": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "recoverable": {
        -                "type": "boolean"
        -              },
        -              "retry_after_seconds": {
        -                "anyOf": [
        -                  {
        -                    "minimum": 0,
        -                    "type": "integer"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              }
        -            },
        -            "required": [
        -              "code",
        -              "message",
        -              "recoverable"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      }
        -    },
        -    "required": [
        -      "_meta"
        -    ],
        -    "type": "object"
        -  },
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "_meta": {
        -        "additionalProperties": false,
        -        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        -        "properties": {
        -          "deliverables": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        -                "properties": {
        -                  "docx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "dxf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "expires_at": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  },
        -                  "pdf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "xlsx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "expires_at"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "document_id": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "issued_at": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "rate_limit_remaining": {
        -            "anyOf": [
        -              {
        -                "minimum": 0,
        -                "type": "integer"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "request_id": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "schema_version": {
        -            "const": "1.0.0",
        -            "default": "1.0.0",
        -            "type": "string"
        -          },
        -          "scope_boundary": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        -                "properties": {
        -                  "not_in_scope": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "produced": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "recommended_companions": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "type": "string"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "produced",
        -                  "not_in_scope"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tier": {
        -            "enum": [
        -              "free",
        -              "paid"
        -            ],
        -            "type": "string"
        -          },
        -          "tier_upgrade": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        -                "properties": {
        -                  "available_tiers": {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        -                      "properties": {
        -                        "billing": {
        -                          "enum": [
        -                            "one_off",
        -                            "monthly",
        -                            "annual"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "currency": {
        -                          "enum": [
        -                            "GBP",
        -                            "SGD",
        -                            "EUR",
        -                            "USD",
        -                            "CAD",
        -                            "AUD",
        -                            "NZD",
        -                            "MYR"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "display_name": {
        -                          "type": "string"
        -                        },
        -                        "price_local": {
        -                          "type": "number"
        -                        },
        -                        "tier_slug": {
        -                          "enum": [
        -                            "7_day_pass",
        -                            "solo",
        -                            "studio",
        -                            "practice"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "unlock_summary": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "tier_slug",
        -                        "display_name",
        -                        "price_local",
        -                        "currency",
        -                        "billing",
        -                        "unlock_summary"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "current_tier": {
        -                    "const": "free",
        -                    "default": "free",
        -                    "type": "string"
        -                  },
        -                  "pass_credit": {
        -                    "anyOf": [
        -                      {
        -                        "additionalProperties": false,
        -                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        -                        "properties": {
        -                          "amount_local": {
        -                            "type": "number"
        -                          },
        -                          "applies_to": {
        -                            "const": "solo_first_month",
        -                            "default": "solo_first_month",
        -                            "type": "string"
        -                          },
        -                          "currency": {
        -                            "type": "string"
        -                          },
        -                          "redeemable_until": {
        -                            "type": "string"
        -                          }
        -                        },
        -                        "required": [
        -                          "amount_local",
        -                          "currency",
        -                          "redeemable_until"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "pricing_url": {
        -                    "default": "https://civilquants.com/pricing",
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "available_tiers"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tos_url": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "upgrade_hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "warranty_disclaimer": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          }
        -        },
        -        "required": [
        -          "request_id",
        -          "issued_at",
        -          "tier"
        -        ],
        -        "type": "object"
        -      },
        -      "data": {
        -        "default": null,
        -        "title": "Data"
        -      },
        -      "error": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        -            "properties": {
        -              "code": {
        -                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        -                "enum": [
        -                  "RATE_LIMIT_EXCEEDED",
        -                  "TIER_INSUFFICIENT",
        -                  "INVALID_INPUT",
        -                  "SCHEMA_VERSION_MISMATCH",
        -                  "SCHEMA_INVARIANT_VIOLATION",
        -                  "UPSTREAM_TIMEOUT",
        -                  "BACKEND_FAILURE",
        -                  "IP_BLOCKED",
        -                  "RESOURCE_NOT_FOUND",
        -                  "RENDER_FAILURE",
        -                  "OCR_LOW_CONFIDENCE",
        -                  "MANUAL_REVIEW_REQUIRED",
        -                  "ACCEPTANCE_REQUIRED",
        -                  "INVALID_TOKEN"
        -                ],
        -                "type": "string"
        -              },
        -              "details": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "message": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "recoverable": {
        -                "type": "boolean"
        -              },
        -              "retry_after_seconds": {
        -                "anyOf": [
        -                  {
        -                    "minimum": 0,
        -                    "type": "integer"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              }
        -            },
        -            "required": [
        -              "code",
        -              "message",
        -              "recoverable"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      }
        -    },
        -    "required": [
        -      "_meta"
        -    ],
        -    "type": "object"
        -  }
        -]New value: +[
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "_meta": {
        +        "additionalProperties": false,
        +        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        +        "properties": {
        +          "deliverables": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        +                "properties": {
        +                  "docx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "dxf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "expires_at": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  },
        +                  "pdf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "xlsx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "expires_at"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "document_id": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "issued_at": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "rate_limit_remaining": {
        +            "anyOf": [
        +              {
        +                "minimum": 0,
        +                "type": "integer"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "request_id": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "schema_version": {
        +            "const": "1.0.0",
        +            "default": "1.0.0",
        +            "type": "string"
        +          },
        +          "scope_boundary": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        +                "properties": {
        +                  "not_in_scope": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "produced": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "recommended_companions": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "type": "string"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "produced",
        +                  "not_in_scope"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tier": {
        +            "enum": [
        +              "free",
        +              "paid"
        +            ],
        +            "type": "string"
        +          },
        +          "tier_upgrade": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        +                "properties": {
        +                  "available_tiers": {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        +                      "properties": {
        +                        "billing": {
        +                          "enum": [
        +                            "one_off",
        +                            "monthly",
        +                            "annual"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "currency": {
        +                          "enum": [
        +                            "GBP",
        +                            "SGD",
        +                            "EUR",
        +                            "USD",
        +                            "CAD",
        +                            "AUD",
        +                            "NZD",
        +                            "MYR"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "display_name": {
        +                          "type": "string"
        +                        },
        +                        "price_local": {
        +                          "type": "number"
        +                        },
        +                        "tier_slug": {
        +                          "enum": [
        +                            "7_day_pass",
        +                            "solo",
        +                            "studio",
        +                            "practice"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "unlock_summary": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "tier_slug",
        +                        "display_name",
        +                        "price_local",
        +                        "currency",
        +                        "billing",
        +                        "unlock_summary"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "current_tier": {
        +                    "const": "free",
        +                    "default": "free",
        +                    "type": "string"
        +                  },
        +                  "pass_credit": {
        +                    "anyOf": [
        +                      {
        +                        "additionalProperties": false,
        +                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        +                        "properties": {
        +                          "amount_local": {
        +                            "type": "number"
        +                          },
        +                          "applies_to": {
        +                            "const": "solo_first_month",
        +                            "default": "solo_first_month",
        +                            "type": "string"
        +                          },
        +                          "currency": {
        +                            "type": "string"
        +                          },
        +                          "redeemable_until": {
        +                            "type": "string"
        +                          }
        +                        },
        +                        "required": [
        +                          "amount_local",
        +                          "currency",
        +                          "redeemable_until"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "pricing_url": {
        +                    "default": "https://civilquants.com/pricing",
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "available_tiers"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tos_url": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "upgrade_hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "warranty_disclaimer": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          }
        +        },
        +        "required": [
        +          "request_id",
        +          "issued_at",
        +          "tier"
        +        ],
        +        "type": "object"
        +      },
        +      "data": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Schema § 1.1 — the typed payload returned inside `MCPResponse[ComputeResult]`.\n\nFree-tier responses MUST omit `drawings` and `audit_trail` (the bridge\nenforces this); paid-tier responses populate both. `text_summary` is\nbounded to 2000 chars — keeps the LLM-facing summary token-cheap and\nforces longer narrative into BoQ row descriptions where it belongs.\n`warnings` is the non-fatal geometry advisory list (both tiers).",
        +            "properties": {
        +              "assembly_slug": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "audit_trail": {
        +                "anyOf": [
        +                  {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.7 — paid-tier audit-trail entry.\n\nOne entry per BoQ row; `boq_row_index` ties to the row position in\n`ComputeResult.boq_rows`. `derivation` is the human-readable formula\nwalk-through; `formula` is the optional formal expression.",
        +                      "properties": {
        +                        "boq_row_index": {
        +                          "minimum": 0,
        +                          "type": "integer"
        +                        },
        +                        "derivation": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "formula": {
        +                          "anyOf": [
        +                            {
        +                              "type": "string"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ],
        +                          "default": null
        +                        },
        +                        "id": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "parameters_referenced": {
        +                          "items": {
        +                            "type": "string"
        +                          },
        +                          "type": "array"
        +                        }
        +                      },
        +                      "required": [
        +                        "id",
        +                        "boq_row_index",
        +                        "derivation"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "boq_rows": {
        +                "items": {
        +                  "additionalProperties": false,
        +                  "description": "Schema § 1.3 — a single bill row in the requested standard's format.\n\n`description` is the non-verbatim functional description per spec § 13.9 /\n§ 15 invariant — NEVER reproduces a standard's verbatim clause text.\n`rate` / `amount` ship null because rates are commodity data the customer\nowns; the engine's job is the measurement, not the pricing.",
        +                  "properties": {
        +                    "amount": {
        +                      "anyOf": [
        +                        {
        +                          "type": "number"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "attribution": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "audit_id": {
        +                      "anyOf": [
        +                        {
        +                          "type": "string"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "description": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "quantity": {
        +                      "minimum": 0,
        +                      "type": "number"
        +                    },
        +                    "rate": {
        +                      "anyOf": [
        +                        {
        +                          "type": "number"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "unit": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "work_section": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    }
        +                  },
        +                  "required": [
        +                    "work_section",
        +                    "description",
        +                    "quantity",
        +                    "unit",
        +                    "attribution"
        +                  ],
        +                  "type": "object"
        +                },
        +                "type": "array"
        +              },
        +              "drawings": {
        +                "anyOf": [
        +                  {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.6 — paid-tier drawing artefact pointer.\n\n`url` is an R2-signed URL; expiry is carried in `_meta.deliverables.expires_at`\non the envelope (not duplicated here). `layers` is DXF-only; PDF/SVG\ncallers omit it.",
        +                      "properties": {
        +                        "drawing_type": {
        +                          "enum": [
        +                            "section",
        +                            "plan",
        +                            "elevation",
        +                            "isometric",
        +                            "detail"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "format": {
        +                          "enum": [
        +                            "DXF",
        +                            "PDF",
        +                            "SVG"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "layers": {
        +                          "anyOf": [
        +                            {
        +                              "items": {
        +                                "type": "string"
        +                              },
        +                              "type": "array"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ],
        +                          "default": null
        +                        },
        +                        "scale": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "sheet_size": {
        +                          "enum": [
        +                            "A1",
        +                            "A2",
        +                            "A3",
        +                            "A4"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "url": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "drawing_type",
        +                        "format",
        +                        "url",
        +                        "sheet_size",
        +                        "scale"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "parameters_used": {
        +                "additionalProperties": false,
        +                "description": "Schema § 1.2 — the parameter snapshot the engine actually used.\n\nSplits user-supplied values from engine defaults so customers can see\nwhich numbers came from them and which the engine filled in. Every\ndefaulted parameter SHOULD have a corresponding entry in `assumptions`\n— the bridge layer enforces this when wrapping engine output.",
        +                "properties": {
        +                  "assumptions": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "engine_defaults": {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  "resolved_from_description": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "additionalProperties": false,
        +                          "description": "Schema § 1.2 — a parameter resolved by the forgiving-input layer.\n\nPopulated by the Track B-Forgiving Haiku-4.5 resolution pass; until that\nlayer lands, instances are constructed only by tests. `source` distinguishes\nthe resolution path so customers can audit which fields were inferred.",
        +                          "properties": {
        +                            "confidence": {
        +                              "anyOf": [
        +                                {
        +                                  "enum": [
        +                                    "high",
        +                                    "medium",
        +                                    "low"
        +                                  ],
        +                                  "type": "string"
        +                                },
        +                                {
        +                                  "type": "null"
        +                                }
        +                              ],
        +                              "default": null
        +                            },
        +                            "field_name": {
        +                              "minLength": 1,
        +                              "type": "string"
        +                            },
        +                            "resolved_value": {},
        +                            "source": {
        +                              "enum": [
        +                                "description_field",
        +                                "haiku_resolution",
        +                                "engine_default"
        +                              ],
        +                              "type": "string"
        +                            }
        +                          },
        +                          "required": [
        +                            "field_name",
        +                            "resolved_value",
        +                            "source"
        +                          ],
        +                          "type": "object"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "user_supplied": {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  }
        +                },
        +                "type": "object"
        +              },
        +              "standard": {
        +                "enum": [
        +                  "CESMM4",
        +                  "NRM2",
        +                  "SMM7",
        +                  "MMHW"
        +                ],
        +                "type": "string"
        +              },
        +              "text_summary": {
        +                "maxLength": 2000,
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "totals_summary": {
        +                "additionalProperties": false,
        +                "description": "Schema § 1.4 — totals_summary as a typed wrapper around the free-form dict.\n\nWire shape is a flat object (`{\"concrete_m3\": {...}, \"rebar_t\": {...}}`).\nWe model it as `RootModel`-equivalent via `model_config(extra=\"allow\")`\n+ a single `__root__`-style `entries` dict. Pydantic v2 recommends\n`RootModel` for free-form roots; using a wrapper class keeps the import\nsurface uniform with the rest of this module.",
        +                "properties": {
        +                  "entries": {
        +                    "additionalProperties": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.4 — single material/work-class total entry.",
        +                      "properties": {
        +                        "quantity": {
        +                          "minimum": 0,
        +                          "type": "number"
        +                        },
        +                        "unit": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "quantity",
        +                        "unit"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "object"
        +                  }
        +                },
        +                "type": "object"
        +              },
        +              "warnings": {
        +                "items": {
        +                  "additionalProperties": false,
        +                  "description": "Schema § 1.8 — a non-fatal geometry advisory (56th-fire T2).\n\nThe wire projection of the engine's `core.GeometryWarning`. Advisory only:\na warning NEVER changes a measured quantity — it flags geometry that is\nvalid but likely a mistake (e.g. a stale dependent-height default). Present\non BOTH tiers — a correctness/safety signal, not a paid feature.",
        +                  "properties": {
        +                    "affected_params": {
        +                      "items": {
        +                        "type": "string"
        +                      },
        +                      "type": "array"
        +                    },
        +                    "code": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "detail": {
        +                      "additionalProperties": {
        +                        "type": "number"
        +                      },
        +                      "type": "object"
        +                    },
        +                    "message": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "severity": {
        +                      "enum": [
        +                        "info",
        +                        "advisory",
        +                        "caution"
        +                      ],
        +                      "type": "string"
        +                    }
        +                  },
        +                  "required": [
        +                    "code",
        +                    "severity",
        +                    "message"
        +                  ],
        +                  "type": "object"
        +                },
        +                "type": "array"
        +              }
        +            },
        +            "required": [
        +              "assembly_slug",
        +              "standard",
        +              "parameters_used",
        +              "boq_rows",
        +              "totals_summary",
        +              "text_summary"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      },
        +      "error": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        +            "properties": {
        +              "code": {
        +                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        +                "enum": [
        +                  "RATE_LIMIT_EXCEEDED",
        +                  "TIER_INSUFFICIENT",
        +                  "INVALID_INPUT",
        +                  "SCHEMA_VERSION_MISMATCH",
        +                  "SCHEMA_INVARIANT_VIOLATION",
        +                  "UPSTREAM_TIMEOUT",
        +                  "BACKEND_FAILURE",
        +                  "IP_BLOCKED",
        +                  "RESOURCE_NOT_FOUND",
        +                  "RENDER_FAILURE",
        +                  "OCR_LOW_CONFIDENCE",
        +                  "MANUAL_REVIEW_REQUIRED",
        +                  "ACCEPTANCE_REQUIRED",
        +                  "INVALID_TOKEN"
        +                ],
        +                "type": "string"
        +              },
        +              "details": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "message": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "recoverable": {
        +                "type": "boolean"
        +              },
        +              "retry_after_seconds": {
        +                "anyOf": [
        +                  {
        +                    "minimum": 0,
        +                    "type": "integer"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              }
        +            },
        +            "required": [
        +              "code",
        +              "message",
        +              "recoverable"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      }
        +    },
        +    "required": [
        +      "_meta"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "_meta": {
        +        "additionalProperties": false,
        +        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        +        "properties": {
        +          "deliverables": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        +                "properties": {
        +                  "docx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "dxf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "expires_at": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  },
        +                  "pdf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "xlsx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "expires_at"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "document_id": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "issued_at": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "rate_limit_remaining": {
        +            "anyOf": [
        +              {
        +                "minimum": 0,
        +                "type": "integer"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "request_id": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "schema_version": {
        +            "const": "1.0.0",
        +            "default": "1.0.0",
        +            "type": "string"
        +          },
        +          "scope_boundary": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        +                "properties": {
        +                  "not_in_scope": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "produced": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "recommended_companions": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "type": "string"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "produced",
        +                  "not_in_scope"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tier": {
        +            "enum": [
        +              "free",
        +              "paid"
        +            ],
        +            "type": "string"
        +          },
        +          "tier_upgrade": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        +                "properties": {
        +                  "available_tiers": {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        +                      "properties": {
        +                        "billing": {
        +                          "enum": [
        +                            "one_off",
        +                            "monthly",
        +                            "annual"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "currency": {
        +                          "enum": [
        +                            "GBP",
        +                            "SGD",
        +                            "EUR",
        +                            "USD",
        +                            "CAD",
        +                            "AUD",
        +                            "NZD",
        +                            "MYR"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "display_name": {
        +                          "type": "string"
        +                        },
        +                        "price_local": {
        +                          "type": "number"
        +                        },
        +                        "tier_slug": {
        +                          "enum": [
        +                            "7_day_pass",
        +                            "solo",
        +                            "studio",
        +                            "practice"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "unlock_summary": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "tier_slug",
        +                        "display_name",
        +                        "price_local",
        +                        "currency",
        +                        "billing",
        +                        "unlock_summary"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "current_tier": {
        +                    "const": "free",
        +                    "default": "free",
        +                    "type": "string"
        +                  },
        +                  "pass_credit": {
        +                    "anyOf": [
        +                      {
        +                        "additionalProperties": false,
        +                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        +                        "properties": {
        +                          "amount_local": {
        +                            "type": "number"
        +                          },
        +                          "applies_to": {
        +                            "const": "solo_first_month",
        +                            "default": "solo_first_month",
        +                            "type": "string"
        +                          },
        +                          "currency": {
        +                            "type": "string"
        +                          },
        +                          "redeemable_until": {
        +                            "type": "string"
        +                          }
        +                        },
        +                        "required": [
        +                          "amount_local",
        +                          "currency",
        +                          "redeemable_until"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "pricing_url": {
        +                    "default": "https://civilquants.com/pricing",
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "available_tiers"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tos_url": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "upgrade_hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "warranty_disclaimer": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          }
        +        },
        +        "required": [
        +          "request_id",
        +          "issued_at",
        +          "tier"
        +        ],
        +        "type": "object"
        +      },
        +      "data": {
        +        "default": null,
        +        "title": "Data"
        +      },
        +      "error": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        +            "properties": {
        +              "code": {
        +                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        +                "enum": [
        +                  "RATE_LIMIT_EXCEEDED",
        +                  "TIER_INSUFFICIENT",
        +                  "INVALID_INPUT",
        +                  "SCHEMA_VERSION_MISMATCH",
        +                  "SCHEMA_INVARIANT_VIOLATION",
        +                  "UPSTREAM_TIMEOUT",
        +                  "BACKEND_FAILURE",
        +                  "IP_BLOCKED",
        +                  "RESOURCE_NOT_FOUND",
        +                  "RENDER_FAILURE",
        +                  "OCR_LOW_CONFIDENCE",
        +                  "MANUAL_REVIEW_REQUIRED",
        +                  "ACCEPTANCE_REQUIRED",
        +                  "INVALID_TOKEN"
        +                ],
        +                "type": "string"
        +              },
        +              "details": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "message": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "recoverable": {
        +                "type": "boolean"
        +              },
        +              "retry_after_seconds": {
        +                "anyOf": [
        +                  {
        +                    "minimum": 0,
        +                    "type": "integer"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              }
        +            },
        +            "required": [
        +              "code",
        +              "message",
        +              "recoverable"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      }
        +    },
        +    "required": [
        +      "_meta"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedcompute_road_marking1 field changed
      • changedOutput schema / properties / result / anyOf
        Previous value: -[
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "_meta": {
        -        "additionalProperties": false,
        -        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        -        "properties": {
        -          "deliverables": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        -                "properties": {
        -                  "docx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "dxf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "expires_at": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  },
        -                  "pdf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "xlsx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "expires_at"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "document_id": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "issued_at": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "rate_limit_remaining": {
        -            "anyOf": [
        -              {
        -                "minimum": 0,
        -                "type": "integer"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "request_id": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "schema_version": {
        -            "const": "1.0.0",
        -            "default": "1.0.0",
        -            "type": "string"
        -          },
        -          "scope_boundary": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        -                "properties": {
        -                  "not_in_scope": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "produced": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "recommended_companions": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "type": "string"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "produced",
        -                  "not_in_scope"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tier": {
        -            "enum": [
        -              "free",
        -              "paid"
        -            ],
        -            "type": "string"
        -          },
        -          "tier_upgrade": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        -                "properties": {
        -                  "available_tiers": {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        -                      "properties": {
        -                        "billing": {
        -                          "enum": [
        -                            "one_off",
        -                            "monthly",
        -                            "annual"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "currency": {
        -                          "enum": [
        -                            "GBP",
        -                            "SGD",
        -                            "EUR",
        -                            "USD",
        -                            "CAD",
        -                            "AUD",
        -                            "NZD",
        -                            "MYR"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "display_name": {
        -                          "type": "string"
        -                        },
        -                        "price_local": {
        -                          "type": "number"
        -                        },
        -                        "tier_slug": {
        -                          "enum": [
        -                            "7_day_pass",
        -                            "solo",
        -                            "studio",
        -                            "practice"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "unlock_summary": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "tier_slug",
        -                        "display_name",
        -                        "price_local",
        -                        "currency",
        -                        "billing",
        -                        "unlock_summary"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "current_tier": {
        -                    "const": "free",
        -                    "default": "free",
        -                    "type": "string"
        -                  },
        -                  "pass_credit": {
        -                    "anyOf": [
        -                      {
        -                        "additionalProperties": false,
        -                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        -                        "properties": {
        -                          "amount_local": {
        -                            "type": "number"
        -                          },
        -                          "applies_to": {
        -                            "const": "solo_first_month",
        -                            "default": "solo_first_month",
        -                            "type": "string"
        -                          },
        -                          "currency": {
        -                            "type": "string"
        -                          },
        -                          "redeemable_until": {
        -                            "type": "string"
        -                          }
        -                        },
        -                        "required": [
        -                          "amount_local",
        -                          "currency",
        -                          "redeemable_until"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "pricing_url": {
        -                    "default": "https://civilquants.com/pricing",
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "available_tiers"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tos_url": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "upgrade_hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "warranty_disclaimer": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          }
        -        },
        -        "required": [
        -          "request_id",
        -          "issued_at",
        -          "tier"
        -        ],
        -        "type": "object"
        -      },
        -      "data": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Schema § 1.1 — the typed payload returned inside `MCPResponse[ComputeResult]`.\n\nFree-tier responses MUST omit `drawings` and `audit_trail` (the bridge\nenforces this); paid-tier responses populate both. `text_summary` is\nbounded to 2000 chars — keeps the LLM-facing summary token-cheap and\nforces longer narrative into BoQ row descriptions where it belongs.",
        -            "properties": {
        -              "assembly_slug": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "audit_trail": {
        -                "anyOf": [
        -                  {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.7 — paid-tier audit-trail entry.\n\nOne entry per BoQ row; `boq_row_index` ties to the row position in\n`ComputeResult.boq_rows`. `derivation` is the human-readable formula\nwalk-through; `formula` is the optional formal expression.",
        -                      "properties": {
        -                        "boq_row_index": {
        -                          "minimum": 0,
        -                          "type": "integer"
        -                        },
        -                        "derivation": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "formula": {
        -                          "anyOf": [
        -                            {
        -                              "type": "string"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ],
        -                          "default": null
        -                        },
        -                        "id": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "parameters_referenced": {
        -                          "items": {
        -                            "type": "string"
        -                          },
        -                          "type": "array"
        -                        }
        -                      },
        -                      "required": [
        -                        "id",
        -                        "boq_row_index",
        -                        "derivation"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "boq_rows": {
        -                "items": {
        -                  "additionalProperties": false,
        -                  "description": "Schema § 1.3 — a single bill row in the requested standard's format.\n\n`description` is the non-verbatim functional description per spec § 13.9 /\n§ 15 invariant — NEVER reproduces a standard's verbatim clause text.\n`rate` / `amount` ship null because rates are commodity data the customer\nowns; the engine's job is the measurement, not the pricing.",
        -                  "properties": {
        -                    "amount": {
        -                      "anyOf": [
        -                        {
        -                          "type": "number"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "attribution": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "audit_id": {
        -                      "anyOf": [
        -                        {
        -                          "type": "string"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "description": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "quantity": {
        -                      "minimum": 0,
        -                      "type": "number"
        -                    },
        -                    "rate": {
        -                      "anyOf": [
        -                        {
        -                          "type": "number"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "unit": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "work_section": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    }
        -                  },
        -                  "required": [
        -                    "work_section",
        -                    "description",
        -                    "quantity",
        -                    "unit",
        -                    "attribution"
        -                  ],
        -                  "type": "object"
        -                },
        -                "type": "array"
        -              },
        -              "drawings": {
        -                "anyOf": [
        -                  {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.6 — paid-tier drawing artefact pointer.\n\n`url` is an R2-signed URL; expiry is carried in `_meta.deliverables.expires_at`\non the envelope (not duplicated here). `layers` is DXF-only; PDF/SVG\ncallers omit it.",
        -                      "properties": {
        -                        "drawing_type": {
        -                          "enum": [
        -                            "section",
        -                            "plan",
        -                            "elevation",
        -                            "isometric",
        -                            "detail"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "format": {
        -                          "enum": [
        -                            "DXF",
        -                            "PDF",
        -                            "SVG"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "layers": {
        -                          "anyOf": [
        -                            {
        -                              "items": {
        -                                "type": "string"
        -                              },
        -                              "type": "array"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ],
        -                          "default": null
        -                        },
        -                        "scale": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "sheet_size": {
        -                          "enum": [
        -                            "A1",
        -                            "A2",
        -                            "A3",
        -                            "A4"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "url": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "drawing_type",
        -                        "format",
        -                        "url",
        -                        "sheet_size",
        -                        "scale"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "parameters_used": {
        -                "additionalProperties": false,
        -                "description": "Schema § 1.2 — the parameter snapshot the engine actually used.\n\nSplits user-supplied values from engine defaults so customers can see\nwhich numbers came from them and which the engine filled in. Every\ndefaulted parameter SHOULD have a corresponding entry in `assumptions`\n— the bridge layer enforces this when wrapping engine output.",
        -                "properties": {
        -                  "assumptions": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "engine_defaults": {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  "resolved_from_description": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "additionalProperties": false,
        -                          "description": "Schema § 1.2 — a parameter resolved by the forgiving-input layer.\n\nPopulated by the Track B-Forgiving Haiku-4.5 resolution pass; until that\nlayer lands, instances are constructed only by tests. `source` distinguishes\nthe resolution path so customers can audit which fields were inferred.",
        -                          "properties": {
        -                            "confidence": {
        -                              "anyOf": [
        -                                {
        -                                  "enum": [
        -                                    "high",
        -                                    "medium",
        -                                    "low"
        -                                  ],
        -                                  "type": "string"
        -                                },
        -                                {
        -                                  "type": "null"
        -                                }
        -                              ],
        -                              "default": null
        -                            },
        -                            "field_name": {
        -                              "minLength": 1,
        -                              "type": "string"
        -                            },
        -                            "resolved_value": {},
        -                            "source": {
        -                              "enum": [
        -                                "description_field",
        -                                "haiku_resolution",
        -                                "engine_default"
        -                              ],
        -                              "type": "string"
        -                            }
        -                          },
        -                          "required": [
        -                            "field_name",
        -                            "resolved_value",
        -                            "source"
        -                          ],
        -                          "type": "object"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "user_supplied": {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  }
        -                },
        -                "type": "object"
        -              },
        -              "standard": {
        -                "enum": [
        -                  "CESMM4",
        -                  "NRM2",
        -                  "SMM7",
        -                  "MMHW"
        -                ],
        -                "type": "string"
        -              },
        -              "text_summary": {
        -                "maxLength": 2000,
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "totals_summary": {
        -                "additionalProperties": false,
        -                "description": "Schema § 1.4 — totals_summary as a typed wrapper around the free-form dict.\n\nWire shape is a flat object (`{\"concrete_m3\": {...}, \"rebar_t\": {...}}`).\nWe model it as `RootModel`-equivalent via `model_config(extra=\"allow\")`\n+ a single `__root__`-style `entries` dict. Pydantic v2 recommends\n`RootModel` for free-form roots; using a wrapper class keeps the import\nsurface uniform with the rest of this module.",
        -                "properties": {
        -                  "entries": {
        -                    "additionalProperties": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.4 — single material/work-class total entry.",
        -                      "properties": {
        -                        "quantity": {
        -                          "minimum": 0,
        -                          "type": "number"
        -                        },
        -                        "unit": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "quantity",
        -                        "unit"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "object"
        -                  }
        -                },
        -                "type": "object"
        -              }
        -            },
        -            "required": [
        -              "assembly_slug",
        -              "standard",
        -              "parameters_used",
        -              "boq_rows",
        -              "totals_summary",
        -              "text_summary"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      },
        -      "error": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        -            "properties": {
        -              "code": {
        -                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        -                "enum": [
        -                  "RATE_LIMIT_EXCEEDED",
        -                  "TIER_INSUFFICIENT",
        -                  "INVALID_INPUT",
        -                  "SCHEMA_VERSION_MISMATCH",
        -                  "SCHEMA_INVARIANT_VIOLATION",
        -                  "UPSTREAM_TIMEOUT",
        -                  "BACKEND_FAILURE",
        -                  "IP_BLOCKED",
        -                  "RESOURCE_NOT_FOUND",
        -                  "RENDER_FAILURE",
        -                  "OCR_LOW_CONFIDENCE",
        -                  "MANUAL_REVIEW_REQUIRED",
        -                  "ACCEPTANCE_REQUIRED",
        -                  "INVALID_TOKEN"
        -                ],
        -                "type": "string"
        -              },
        -              "details": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "message": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "recoverable": {
        -                "type": "boolean"
        -              },
        -              "retry_after_seconds": {
        -                "anyOf": [
        -                  {
        -                    "minimum": 0,
        -                    "type": "integer"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              }
        -            },
        -            "required": [
        -              "code",
        -              "message",
        -              "recoverable"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      }
        -    },
        -    "required": [
        -      "_meta"
        -    ],
        -    "type": "object"
        -  },
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "_meta": {
        -        "additionalProperties": false,
        -        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        -        "properties": {
        -          "deliverables": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        -                "properties": {
        -                  "docx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "dxf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "expires_at": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  },
        -                  "pdf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "xlsx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "expires_at"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "document_id": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "issued_at": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "rate_limit_remaining": {
        -            "anyOf": [
        -              {
        -                "minimum": 0,
        -                "type": "integer"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "request_id": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "schema_version": {
        -            "const": "1.0.0",
        -            "default": "1.0.0",
        -            "type": "string"
        -          },
        -          "scope_boundary": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        -                "properties": {
        -                  "not_in_scope": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "produced": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "recommended_companions": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "type": "string"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "produced",
        -                  "not_in_scope"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tier": {
        -            "enum": [
        -              "free",
        -              "paid"
        -            ],
        -            "type": "string"
        -          },
        -          "tier_upgrade": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        -                "properties": {
        -                  "available_tiers": {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        -                      "properties": {
        -                        "billing": {
        -                          "enum": [
        -                            "one_off",
        -                            "monthly",
        -                            "annual"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "currency": {
        -                          "enum": [
        -                            "GBP",
        -                            "SGD",
        -                            "EUR",
        -                            "USD",
        -                            "CAD",
        -                            "AUD",
        -                            "NZD",
        -                            "MYR"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "display_name": {
        -                          "type": "string"
        -                        },
        -                        "price_local": {
        -                          "type": "number"
        -                        },
        -                        "tier_slug": {
        -                          "enum": [
        -                            "7_day_pass",
        -                            "solo",
        -                            "studio",
        -                            "practice"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "unlock_summary": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "tier_slug",
        -                        "display_name",
        -                        "price_local",
        -                        "currency",
        -                        "billing",
        -                        "unlock_summary"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "current_tier": {
        -                    "const": "free",
        -                    "default": "free",
        -                    "type": "string"
        -                  },
        -                  "pass_credit": {
        -                    "anyOf": [
        -                      {
        -                        "additionalProperties": false,
        -                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        -                        "properties": {
        -                          "amount_local": {
        -                            "type": "number"
        -                          },
        -                          "applies_to": {
        -                            "const": "solo_first_month",
        -                            "default": "solo_first_month",
        -                            "type": "string"
        -                          },
        -                          "currency": {
        -                            "type": "string"
        -                          },
        -                          "redeemable_until": {
        -                            "type": "string"
        -                          }
        -                        },
        -                        "required": [
        -                          "amount_local",
        -                          "currency",
        -                          "redeemable_until"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "pricing_url": {
        -                    "default": "https://civilquants.com/pricing",
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "available_tiers"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tos_url": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "upgrade_hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "warranty_disclaimer": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          }
        -        },
        -        "required": [
        -          "request_id",
        -          "issued_at",
        -          "tier"
        -        ],
        -        "type": "object"
        -      },
        -      "data": {
        -        "default": null,
        -        "title": "Data"
        -      },
        -      "error": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        -            "properties": {
        -              "code": {
        -                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        -                "enum": [
        -                  "RATE_LIMIT_EXCEEDED",
        -                  "TIER_INSUFFICIENT",
        -                  "INVALID_INPUT",
        -                  "SCHEMA_VERSION_MISMATCH",
        -                  "SCHEMA_INVARIANT_VIOLATION",
        -                  "UPSTREAM_TIMEOUT",
        -                  "BACKEND_FAILURE",
        -                  "IP_BLOCKED",
        -                  "RESOURCE_NOT_FOUND",
        -                  "RENDER_FAILURE",
        -                  "OCR_LOW_CONFIDENCE",
        -                  "MANUAL_REVIEW_REQUIRED",
        -                  "ACCEPTANCE_REQUIRED",
        -                  "INVALID_TOKEN"
        -                ],
        -                "type": "string"
        -              },
        -              "details": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "message": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "recoverable": {
        -                "type": "boolean"
        -              },
        -              "retry_after_seconds": {
        -                "anyOf": [
        -                  {
        -                    "minimum": 0,
        -                    "type": "integer"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              }
        -            },
        -            "required": [
        -              "code",
        -              "message",
        -              "recoverable"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      }
        -    },
        -    "required": [
        -      "_meta"
        -    ],
        -    "type": "object"
        -  }
        -]New value: +[
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "_meta": {
        +        "additionalProperties": false,
        +        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        +        "properties": {
        +          "deliverables": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        +                "properties": {
        +                  "docx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "dxf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "expires_at": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  },
        +                  "pdf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "xlsx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "expires_at"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "document_id": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "issued_at": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "rate_limit_remaining": {
        +            "anyOf": [
        +              {
        +                "minimum": 0,
        +                "type": "integer"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "request_id": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "schema_version": {
        +            "const": "1.0.0",
        +            "default": "1.0.0",
        +            "type": "string"
        +          },
        +          "scope_boundary": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        +                "properties": {
        +                  "not_in_scope": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "produced": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "recommended_companions": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "type": "string"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "produced",
        +                  "not_in_scope"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tier": {
        +            "enum": [
        +              "free",
        +              "paid"
        +            ],
        +            "type": "string"
        +          },
        +          "tier_upgrade": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        +                "properties": {
        +                  "available_tiers": {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        +                      "properties": {
        +                        "billing": {
        +                          "enum": [
        +                            "one_off",
        +                            "monthly",
        +                            "annual"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "currency": {
        +                          "enum": [
        +                            "GBP",
        +                            "SGD",
        +                            "EUR",
        +                            "USD",
        +                            "CAD",
        +                            "AUD",
        +                            "NZD",
        +                            "MYR"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "display_name": {
        +                          "type": "string"
        +                        },
        +                        "price_local": {
        +                          "type": "number"
        +                        },
        +                        "tier_slug": {
        +                          "enum": [
        +                            "7_day_pass",
        +                            "solo",
        +                            "studio",
        +                            "practice"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "unlock_summary": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "tier_slug",
        +                        "display_name",
        +                        "price_local",
        +                        "currency",
        +                        "billing",
        +                        "unlock_summary"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "current_tier": {
        +                    "const": "free",
        +                    "default": "free",
        +                    "type": "string"
        +                  },
        +                  "pass_credit": {
        +                    "anyOf": [
        +                      {
        +                        "additionalProperties": false,
        +                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        +                        "properties": {
        +                          "amount_local": {
        +                            "type": "number"
        +                          },
        +                          "applies_to": {
        +                            "const": "solo_first_month",
        +                            "default": "solo_first_month",
        +                            "type": "string"
        +                          },
        +                          "currency": {
        +                            "type": "string"
        +                          },
        +                          "redeemable_until": {
        +                            "type": "string"
        +                          }
        +                        },
        +                        "required": [
        +                          "amount_local",
        +                          "currency",
        +                          "redeemable_until"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "pricing_url": {
        +                    "default": "https://civilquants.com/pricing",
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "available_tiers"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tos_url": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "upgrade_hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "warranty_disclaimer": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          }
        +        },
        +        "required": [
        +          "request_id",
        +          "issued_at",
        +          "tier"
        +        ],
        +        "type": "object"
        +      },
        +      "data": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Schema § 1.1 — the typed payload returned inside `MCPResponse[ComputeResult]`.\n\nFree-tier responses MUST omit `drawings` and `audit_trail` (the bridge\nenforces this); paid-tier responses populate both. `text_summary` is\nbounded to 2000 chars — keeps the LLM-facing summary token-cheap and\nforces longer narrative into BoQ row descriptions where it belongs.\n`warnings` is the non-fatal geometry advisory list (both tiers).",
        +            "properties": {
        +              "assembly_slug": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "audit_trail": {
        +                "anyOf": [
        +                  {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.7 — paid-tier audit-trail entry.\n\nOne entry per BoQ row; `boq_row_index` ties to the row position in\n`ComputeResult.boq_rows`. `derivation` is the human-readable formula\nwalk-through; `formula` is the optional formal expression.",
        +                      "properties": {
        +                        "boq_row_index": {
        +                          "minimum": 0,
        +                          "type": "integer"
        +                        },
        +                        "derivation": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "formula": {
        +                          "anyOf": [
        +                            {
        +                              "type": "string"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ],
        +                          "default": null
        +                        },
        +                        "id": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "parameters_referenced": {
        +                          "items": {
        +                            "type": "string"
        +                          },
        +                          "type": "array"
        +                        }
        +                      },
        +                      "required": [
        +                        "id",
        +                        "boq_row_index",
        +                        "derivation"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "boq_rows": {
        +                "items": {
        +                  "additionalProperties": false,
        +                  "description": "Schema § 1.3 — a single bill row in the requested standard's format.\n\n`description` is the non-verbatim functional description per spec § 13.9 /\n§ 15 invariant — NEVER reproduces a standard's verbatim clause text.\n`rate` / `amount` ship null because rates are commodity data the customer\nowns; the engine's job is the measurement, not the pricing.",
        +                  "properties": {
        +                    "amount": {
        +                      "anyOf": [
        +                        {
        +                          "type": "number"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "attribution": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "audit_id": {
        +                      "anyOf": [
        +                        {
        +                          "type": "string"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "description": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "quantity": {
        +                      "minimum": 0,
        +                      "type": "number"
        +                    },
        +                    "rate": {
        +                      "anyOf": [
        +                        {
        +                          "type": "number"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "unit": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "work_section": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    }
        +                  },
        +                  "required": [
        +                    "work_section",
        +                    "description",
        +                    "quantity",
        +                    "unit",
        +                    "attribution"
        +                  ],
        +                  "type": "object"
        +                },
        +                "type": "array"
        +              },
        +              "drawings": {
        +                "anyOf": [
        +                  {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.6 — paid-tier drawing artefact pointer.\n\n`url` is an R2-signed URL; expiry is carried in `_meta.deliverables.expires_at`\non the envelope (not duplicated here). `layers` is DXF-only; PDF/SVG\ncallers omit it.",
        +                      "properties": {
        +                        "drawing_type": {
        +                          "enum": [
        +                            "section",
        +                            "plan",
        +                            "elevation",
        +                            "isometric",
        +                            "detail"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "format": {
        +                          "enum": [
        +                            "DXF",
        +                            "PDF",
        +                            "SVG"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "layers": {
        +                          "anyOf": [
        +                            {
        +                              "items": {
        +                                "type": "string"
        +                              },
        +                              "type": "array"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ],
        +                          "default": null
        +                        },
        +                        "scale": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "sheet_size": {
        +                          "enum": [
        +                            "A1",
        +                            "A2",
        +                            "A3",
        +                            "A4"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "url": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "drawing_type",
        +                        "format",
        +                        "url",
        +                        "sheet_size",
        +                        "scale"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "parameters_used": {
        +                "additionalProperties": false,
        +                "description": "Schema § 1.2 — the parameter snapshot the engine actually used.\n\nSplits user-supplied values from engine defaults so customers can see\nwhich numbers came from them and which the engine filled in. Every\ndefaulted parameter SHOULD have a corresponding entry in `assumptions`\n— the bridge layer enforces this when wrapping engine output.",
        +                "properties": {
        +                  "assumptions": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "engine_defaults": {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  "resolved_from_description": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "additionalProperties": false,
        +                          "description": "Schema § 1.2 — a parameter resolved by the forgiving-input layer.\n\nPopulated by the Track B-Forgiving Haiku-4.5 resolution pass; until that\nlayer lands, instances are constructed only by tests. `source` distinguishes\nthe resolution path so customers can audit which fields were inferred.",
        +                          "properties": {
        +                            "confidence": {
        +                              "anyOf": [
        +                                {
        +                                  "enum": [
        +                                    "high",
        +                                    "medium",
        +                                    "low"
        +                                  ],
        +                                  "type": "string"
        +                                },
        +                                {
        +                                  "type": "null"
        +                                }
        +                              ],
        +                              "default": null
        +                            },
        +                            "field_name": {
        +                              "minLength": 1,
        +                              "type": "string"
        +                            },
        +                            "resolved_value": {},
        +                            "source": {
        +                              "enum": [
        +                                "description_field",
        +                                "haiku_resolution",
        +                                "engine_default"
        +                              ],
        +                              "type": "string"
        +                            }
        +                          },
        +                          "required": [
        +                            "field_name",
        +                            "resolved_value",
        +                            "source"
        +                          ],
        +                          "type": "object"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "user_supplied": {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  }
        +                },
        +                "type": "object"
        +              },
        +              "standard": {
        +                "enum": [
        +                  "CESMM4",
        +                  "NRM2",
        +                  "SMM7",
        +                  "MMHW"
        +                ],
        +                "type": "string"
        +              },
        +              "text_summary": {
        +                "maxLength": 2000,
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "totals_summary": {
        +                "additionalProperties": false,
        +                "description": "Schema § 1.4 — totals_summary as a typed wrapper around the free-form dict.\n\nWire shape is a flat object (`{\"concrete_m3\": {...}, \"rebar_t\": {...}}`).\nWe model it as `RootModel`-equivalent via `model_config(extra=\"allow\")`\n+ a single `__root__`-style `entries` dict. Pydantic v2 recommends\n`RootModel` for free-form roots; using a wrapper class keeps the import\nsurface uniform with the rest of this module.",
        +                "properties": {
        +                  "entries": {
        +                    "additionalProperties": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.4 — single material/work-class total entry.",
        +                      "properties": {
        +                        "quantity": {
        +                          "minimum": 0,
        +                          "type": "number"
        +                        },
        +                        "unit": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "quantity",
        +                        "unit"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "object"
        +                  }
        +                },
        +                "type": "object"
        +              },
        +              "warnings": {
        +                "items": {
        +                  "additionalProperties": false,
        +                  "description": "Schema § 1.8 — a non-fatal geometry advisory (56th-fire T2).\n\nThe wire projection of the engine's `core.GeometryWarning`. Advisory only:\na warning NEVER changes a measured quantity — it flags geometry that is\nvalid but likely a mistake (e.g. a stale dependent-height default). Present\non BOTH tiers — a correctness/safety signal, not a paid feature.",
        +                  "properties": {
        +                    "affected_params": {
        +                      "items": {
        +                        "type": "string"
        +                      },
        +                      "type": "array"
        +                    },
        +                    "code": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "detail": {
        +                      "additionalProperties": {
        +                        "type": "number"
        +                      },
        +                      "type": "object"
        +                    },
        +                    "message": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "severity": {
        +                      "enum": [
        +                        "info",
        +                        "advisory",
        +                        "caution"
        +                      ],
        +                      "type": "string"
        +                    }
        +                  },
        +                  "required": [
        +                    "code",
        +                    "severity",
        +                    "message"
        +                  ],
        +                  "type": "object"
        +                },
        +                "type": "array"
        +              }
        +            },
        +            "required": [
        +              "assembly_slug",
        +              "standard",
        +              "parameters_used",
        +              "boq_rows",
        +              "totals_summary",
        +              "text_summary"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      },
        +      "error": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        +            "properties": {
        +              "code": {
        +                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        +                "enum": [
        +                  "RATE_LIMIT_EXCEEDED",
        +                  "TIER_INSUFFICIENT",
        +                  "INVALID_INPUT",
        +                  "SCHEMA_VERSION_MISMATCH",
        +                  "SCHEMA_INVARIANT_VIOLATION",
        +                  "UPSTREAM_TIMEOUT",
        +                  "BACKEND_FAILURE",
        +                  "IP_BLOCKED",
        +                  "RESOURCE_NOT_FOUND",
        +                  "RENDER_FAILURE",
        +                  "OCR_LOW_CONFIDENCE",
        +                  "MANUAL_REVIEW_REQUIRED",
        +                  "ACCEPTANCE_REQUIRED",
        +                  "INVALID_TOKEN"
        +                ],
        +                "type": "string"
        +              },
        +              "details": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "message": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "recoverable": {
        +                "type": "boolean"
        +              },
        +              "retry_after_seconds": {
        +                "anyOf": [
        +                  {
        +                    "minimum": 0,
        +                    "type": "integer"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              }
        +            },
        +            "required": [
        +              "code",
        +              "message",
        +              "recoverable"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      }
        +    },
        +    "required": [
        +      "_meta"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "_meta": {
        +        "additionalProperties": false,
        +        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        +        "properties": {
        +          "deliverables": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        +                "properties": {
        +                  "docx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "dxf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "expires_at": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  },
        +                  "pdf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "xlsx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "expires_at"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "document_id": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "issued_at": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "rate_limit_remaining": {
        +            "anyOf": [
        +              {
        +                "minimum": 0,
        +                "type": "integer"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "request_id": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "schema_version": {
        +            "const": "1.0.0",
        +            "default": "1.0.0",
        +            "type": "string"
        +          },
        +          "scope_boundary": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        +                "properties": {
        +                  "not_in_scope": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "produced": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "recommended_companions": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "type": "string"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "produced",
        +                  "not_in_scope"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tier": {
        +            "enum": [
        +              "free",
        +              "paid"
        +            ],
        +            "type": "string"
        +          },
        +          "tier_upgrade": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        +                "properties": {
        +                  "available_tiers": {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        +                      "properties": {
        +                        "billing": {
        +                          "enum": [
        +                            "one_off",
        +                            "monthly",
        +                            "annual"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "currency": {
        +                          "enum": [
        +                            "GBP",
        +                            "SGD",
        +                            "EUR",
        +                            "USD",
        +                            "CAD",
        +                            "AUD",
        +                            "NZD",
        +                            "MYR"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "display_name": {
        +                          "type": "string"
        +                        },
        +                        "price_local": {
        +                          "type": "number"
        +                        },
        +                        "tier_slug": {
        +                          "enum": [
        +                            "7_day_pass",
        +                            "solo",
        +                            "studio",
        +                            "practice"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "unlock_summary": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "tier_slug",
        +                        "display_name",
        +                        "price_local",
        +                        "currency",
        +                        "billing",
        +                        "unlock_summary"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "current_tier": {
        +                    "const": "free",
        +                    "default": "free",
        +                    "type": "string"
        +                  },
        +                  "pass_credit": {
        +                    "anyOf": [
        +                      {
        +                        "additionalProperties": false,
        +                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        +                        "properties": {
        +                          "amount_local": {
        +                            "type": "number"
        +                          },
        +                          "applies_to": {
        +                            "const": "solo_first_month",
        +                            "default": "solo_first_month",
        +                            "type": "string"
        +                          },
        +                          "currency": {
        +                            "type": "string"
        +                          },
        +                          "redeemable_until": {
        +                            "type": "string"
        +                          }
        +                        },
        +                        "required": [
        +                          "amount_local",
        +                          "currency",
        +                          "redeemable_until"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "pricing_url": {
        +                    "default": "https://civilquants.com/pricing",
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "available_tiers"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tos_url": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "upgrade_hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "warranty_disclaimer": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          }
        +        },
        +        "required": [
        +          "request_id",
        +          "issued_at",
        +          "tier"
        +        ],
        +        "type": "object"
        +      },
        +      "data": {
        +        "default": null,
        +        "title": "Data"
        +      },
        +      "error": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        +            "properties": {
        +              "code": {
        +                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        +                "enum": [
        +                  "RATE_LIMIT_EXCEEDED",
        +                  "TIER_INSUFFICIENT",
        +                  "INVALID_INPUT",
        +                  "SCHEMA_VERSION_MISMATCH",
        +                  "SCHEMA_INVARIANT_VIOLATION",
        +                  "UPSTREAM_TIMEOUT",
        +                  "BACKEND_FAILURE",
        +                  "IP_BLOCKED",
        +                  "RESOURCE_NOT_FOUND",
        +                  "RENDER_FAILURE",
        +                  "OCR_LOW_CONFIDENCE",
        +                  "MANUAL_REVIEW_REQUIRED",
        +                  "ACCEPTANCE_REQUIRED",
        +                  "INVALID_TOKEN"
        +                ],
        +                "type": "string"
        +              },
        +              "details": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "message": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "recoverable": {
        +                "type": "boolean"
        +              },
        +              "retry_after_seconds": {
        +                "anyOf": [
        +                  {
        +                    "minimum": 0,
        +                    "type": "integer"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              }
        +            },
        +            "required": [
        +              "code",
        +              "message",
        +              "recoverable"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      }
        +    },
        +    "required": [
        +      "_meta"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedcompute_single_service_run1 field changed
      • changedOutput schema / properties / result / anyOf
        Previous value: -[
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "_meta": {
        -        "additionalProperties": false,
        -        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        -        "properties": {
        -          "deliverables": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        -                "properties": {
        -                  "docx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "dxf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "expires_at": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  },
        -                  "pdf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "xlsx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "expires_at"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "document_id": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "issued_at": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "rate_limit_remaining": {
        -            "anyOf": [
        -              {
        -                "minimum": 0,
        -                "type": "integer"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "request_id": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "schema_version": {
        -            "const": "1.0.0",
        -            "default": "1.0.0",
        -            "type": "string"
        -          },
        -          "scope_boundary": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        -                "properties": {
        -                  "not_in_scope": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "produced": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "recommended_companions": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "type": "string"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "produced",
        -                  "not_in_scope"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tier": {
        -            "enum": [
        -              "free",
        -              "paid"
        -            ],
        -            "type": "string"
        -          },
        -          "tier_upgrade": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        -                "properties": {
        -                  "available_tiers": {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        -                      "properties": {
        -                        "billing": {
        -                          "enum": [
        -                            "one_off",
        -                            "monthly",
        -                            "annual"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "currency": {
        -                          "enum": [
        -                            "GBP",
        -                            "SGD",
        -                            "EUR",
        -                            "USD",
        -                            "CAD",
        -                            "AUD",
        -                            "NZD",
        -                            "MYR"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "display_name": {
        -                          "type": "string"
        -                        },
        -                        "price_local": {
        -                          "type": "number"
        -                        },
        -                        "tier_slug": {
        -                          "enum": [
        -                            "7_day_pass",
        -                            "solo",
        -                            "studio",
        -                            "practice"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "unlock_summary": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "tier_slug",
        -                        "display_name",
        -                        "price_local",
        -                        "currency",
        -                        "billing",
        -                        "unlock_summary"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "current_tier": {
        -                    "const": "free",
        -                    "default": "free",
        -                    "type": "string"
        -                  },
        -                  "pass_credit": {
        -                    "anyOf": [
        -                      {
        -                        "additionalProperties": false,
        -                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        -                        "properties": {
        -                          "amount_local": {
        -                            "type": "number"
        -                          },
        -                          "applies_to": {
        -                            "const": "solo_first_month",
        -                            "default": "solo_first_month",
        -                            "type": "string"
        -                          },
        -                          "currency": {
        -                            "type": "string"
        -                          },
        -                          "redeemable_until": {
        -                            "type": "string"
        -                          }
        -                        },
        -                        "required": [
        -                          "amount_local",
        -                          "currency",
        -                          "redeemable_until"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "pricing_url": {
        -                    "default": "https://civilquants.com/pricing",
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "available_tiers"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tos_url": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "upgrade_hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "warranty_disclaimer": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          }
        -        },
        -        "required": [
        -          "request_id",
        -          "issued_at",
        -          "tier"
        -        ],
        -        "type": "object"
        -      },
        -      "data": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Schema § 1.1 — the typed payload returned inside `MCPResponse[ComputeResult]`.\n\nFree-tier responses MUST omit `drawings` and `audit_trail` (the bridge\nenforces this); paid-tier responses populate both. `text_summary` is\nbounded to 2000 chars — keeps the LLM-facing summary token-cheap and\nforces longer narrative into BoQ row descriptions where it belongs.",
        -            "properties": {
        -              "assembly_slug": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "audit_trail": {
        -                "anyOf": [
        -                  {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.7 — paid-tier audit-trail entry.\n\nOne entry per BoQ row; `boq_row_index` ties to the row position in\n`ComputeResult.boq_rows`. `derivation` is the human-readable formula\nwalk-through; `formula` is the optional formal expression.",
        -                      "properties": {
        -                        "boq_row_index": {
        -                          "minimum": 0,
        -                          "type": "integer"
        -                        },
        -                        "derivation": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "formula": {
        -                          "anyOf": [
        -                            {
        -                              "type": "string"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ],
        -                          "default": null
        -                        },
        -                        "id": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "parameters_referenced": {
        -                          "items": {
        -                            "type": "string"
        -                          },
        -                          "type": "array"
        -                        }
        -                      },
        -                      "required": [
        -                        "id",
        -                        "boq_row_index",
        -                        "derivation"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "boq_rows": {
        -                "items": {
        -                  "additionalProperties": false,
        -                  "description": "Schema § 1.3 — a single bill row in the requested standard's format.\n\n`description` is the non-verbatim functional description per spec § 13.9 /\n§ 15 invariant — NEVER reproduces a standard's verbatim clause text.\n`rate` / `amount` ship null because rates are commodity data the customer\nowns; the engine's job is the measurement, not the pricing.",
        -                  "properties": {
        -                    "amount": {
        -                      "anyOf": [
        -                        {
        -                          "type": "number"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "attribution": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "audit_id": {
        -                      "anyOf": [
        -                        {
        -                          "type": "string"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "description": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "quantity": {
        -                      "minimum": 0,
        -                      "type": "number"
        -                    },
        -                    "rate": {
        -                      "anyOf": [
        -                        {
        -                          "type": "number"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "unit": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "work_section": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    }
        -                  },
        -                  "required": [
        -                    "work_section",
        -                    "description",
        -                    "quantity",
        -                    "unit",
        -                    "attribution"
        -                  ],
        -                  "type": "object"
        -                },
        -                "type": "array"
        -              },
        -              "drawings": {
        -                "anyOf": [
        -                  {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.6 — paid-tier drawing artefact pointer.\n\n`url` is an R2-signed URL; expiry is carried in `_meta.deliverables.expires_at`\non the envelope (not duplicated here). `layers` is DXF-only; PDF/SVG\ncallers omit it.",
        -                      "properties": {
        -                        "drawing_type": {
        -                          "enum": [
        -                            "section",
        -                            "plan",
        -                            "elevation",
        -                            "isometric",
        -                            "detail"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "format": {
        -                          "enum": [
        -                            "DXF",
        -                            "PDF",
        -                            "SVG"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "layers": {
        -                          "anyOf": [
        -                            {
        -                              "items": {
        -                                "type": "string"
        -                              },
        -                              "type": "array"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ],
        -                          "default": null
        -                        },
        -                        "scale": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "sheet_size": {
        -                          "enum": [
        -                            "A1",
        -                            "A2",
        -                            "A3",
        -                            "A4"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "url": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "drawing_type",
        -                        "format",
        -                        "url",
        -                        "sheet_size",
        -                        "scale"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "parameters_used": {
        -                "additionalProperties": false,
        -                "description": "Schema § 1.2 — the parameter snapshot the engine actually used.\n\nSplits user-supplied values from engine defaults so customers can see\nwhich numbers came from them and which the engine filled in. Every\ndefaulted parameter SHOULD have a corresponding entry in `assumptions`\n— the bridge layer enforces this when wrapping engine output.",
        -                "properties": {
        -                  "assumptions": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "engine_defaults": {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  "resolved_from_description": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "additionalProperties": false,
        -                          "description": "Schema § 1.2 — a parameter resolved by the forgiving-input layer.\n\nPopulated by the Track B-Forgiving Haiku-4.5 resolution pass; until that\nlayer lands, instances are constructed only by tests. `source` distinguishes\nthe resolution path so customers can audit which fields were inferred.",
        -                          "properties": {
        -                            "confidence": {
        -                              "anyOf": [
        -                                {
        -                                  "enum": [
        -                                    "high",
        -                                    "medium",
        -                                    "low"
        -                                  ],
        -                                  "type": "string"
        -                                },
        -                                {
        -                                  "type": "null"
        -                                }
        -                              ],
        -                              "default": null
        -                            },
        -                            "field_name": {
        -                              "minLength": 1,
        -                              "type": "string"
        -                            },
        -                            "resolved_value": {},
        -                            "source": {
        -                              "enum": [
        -                                "description_field",
        -                                "haiku_resolution",
        -                                "engine_default"
        -                              ],
        -                              "type": "string"
        -                            }
        -                          },
        -                          "required": [
        -                            "field_name",
        -                            "resolved_value",
        -                            "source"
        -                          ],
        -                          "type": "object"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "user_supplied": {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  }
        -                },
        -                "type": "object"
        -              },
        -              "standard": {
        -                "enum": [
        -                  "CESMM4",
        -                  "NRM2",
        -                  "SMM7",
        -                  "MMHW"
        -                ],
        -                "type": "string"
        -              },
        -              "text_summary": {
        -                "maxLength": 2000,
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "totals_summary": {
        -                "additionalProperties": false,
        -                "description": "Schema § 1.4 — totals_summary as a typed wrapper around the free-form dict.\n\nWire shape is a flat object (`{\"concrete_m3\": {...}, \"rebar_t\": {...}}`).\nWe model it as `RootModel`-equivalent via `model_config(extra=\"allow\")`\n+ a single `__root__`-style `entries` dict. Pydantic v2 recommends\n`RootModel` for free-form roots; using a wrapper class keeps the import\nsurface uniform with the rest of this module.",
        -                "properties": {
        -                  "entries": {
        -                    "additionalProperties": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.4 — single material/work-class total entry.",
        -                      "properties": {
        -                        "quantity": {
        -                          "minimum": 0,
        -                          "type": "number"
        -                        },
        -                        "unit": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "quantity",
        -                        "unit"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "object"
        -                  }
        -                },
        -                "type": "object"
        -              }
        -            },
        -            "required": [
        -              "assembly_slug",
        -              "standard",
        -              "parameters_used",
        -              "boq_rows",
        -              "totals_summary",
        -              "text_summary"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      },
        -      "error": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        -            "properties": {
        -              "code": {
        -                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        -                "enum": [
        -                  "RATE_LIMIT_EXCEEDED",
        -                  "TIER_INSUFFICIENT",
        -                  "INVALID_INPUT",
        -                  "SCHEMA_VERSION_MISMATCH",
        -                  "SCHEMA_INVARIANT_VIOLATION",
        -                  "UPSTREAM_TIMEOUT",
        -                  "BACKEND_FAILURE",
        -                  "IP_BLOCKED",
        -                  "RESOURCE_NOT_FOUND",
        -                  "RENDER_FAILURE",
        -                  "OCR_LOW_CONFIDENCE",
        -                  "MANUAL_REVIEW_REQUIRED",
        -                  "ACCEPTANCE_REQUIRED",
        -                  "INVALID_TOKEN"
        -                ],
        -                "type": "string"
        -              },
        -              "details": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "message": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "recoverable": {
        -                "type": "boolean"
        -              },
        -              "retry_after_seconds": {
        -                "anyOf": [
        -                  {
        -                    "minimum": 0,
        -                    "type": "integer"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              }
        -            },
        -            "required": [
        -              "code",
        -              "message",
        -              "recoverable"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      }
        -    },
        -    "required": [
        -      "_meta"
        -    ],
        -    "type": "object"
        -  },
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "_meta": {
        -        "additionalProperties": false,
        -        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        -        "properties": {
        -          "deliverables": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        -                "properties": {
        -                  "docx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "dxf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "expires_at": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  },
        -                  "pdf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "xlsx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "expires_at"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "document_id": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "issued_at": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "rate_limit_remaining": {
        -            "anyOf": [
        -              {
        -                "minimum": 0,
        -                "type": "integer"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "request_id": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "schema_version": {
        -            "const": "1.0.0",
        -            "default": "1.0.0",
        -            "type": "string"
        -          },
        -          "scope_boundary": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        -                "properties": {
        -                  "not_in_scope": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "produced": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "recommended_companions": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "type": "string"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "produced",
        -                  "not_in_scope"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tier": {
        -            "enum": [
        -              "free",
        -              "paid"
        -            ],
        -            "type": "string"
        -          },
        -          "tier_upgrade": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        -                "properties": {
        -                  "available_tiers": {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        -                      "properties": {
        -                        "billing": {
        -                          "enum": [
        -                            "one_off",
        -                            "monthly",
        -                            "annual"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "currency": {
        -                          "enum": [
        -                            "GBP",
        -                            "SGD",
        -                            "EUR",
        -                            "USD",
        -                            "CAD",
        -                            "AUD",
        -                            "NZD",
        -                            "MYR"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "display_name": {
        -                          "type": "string"
        -                        },
        -                        "price_local": {
        -                          "type": "number"
        -                        },
        -                        "tier_slug": {
        -                          "enum": [
        -                            "7_day_pass",
        -                            "solo",
        -                            "studio",
        -                            "practice"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "unlock_summary": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "tier_slug",
        -                        "display_name",
        -                        "price_local",
        -                        "currency",
        -                        "billing",
        -                        "unlock_summary"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "current_tier": {
        -                    "const": "free",
        -                    "default": "free",
        -                    "type": "string"
        -                  },
        -                  "pass_credit": {
        -                    "anyOf": [
        -                      {
        -                        "additionalProperties": false,
        -                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        -                        "properties": {
        -                          "amount_local": {
        -                            "type": "number"
        -                          },
        -                          "applies_to": {
        -                            "const": "solo_first_month",
        -                            "default": "solo_first_month",
        -                            "type": "string"
        -                          },
        -                          "currency": {
        -                            "type": "string"
        -                          },
        -                          "redeemable_until": {
        -                            "type": "string"
        -                          }
        -                        },
        -                        "required": [
        -                          "amount_local",
        -                          "currency",
        -                          "redeemable_until"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "pricing_url": {
        -                    "default": "https://civilquants.com/pricing",
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "available_tiers"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tos_url": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "upgrade_hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "warranty_disclaimer": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          }
        -        },
        -        "required": [
        -          "request_id",
        -          "issued_at",
        -          "tier"
        -        ],
        -        "type": "object"
        -      },
        -      "data": {
        -        "default": null,
        -        "title": "Data"
        -      },
        -      "error": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        -            "properties": {
        -              "code": {
        -                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        -                "enum": [
        -                  "RATE_LIMIT_EXCEEDED",
        -                  "TIER_INSUFFICIENT",
        -                  "INVALID_INPUT",
        -                  "SCHEMA_VERSION_MISMATCH",
        -                  "SCHEMA_INVARIANT_VIOLATION",
        -                  "UPSTREAM_TIMEOUT",
        -                  "BACKEND_FAILURE",
        -                  "IP_BLOCKED",
        -                  "RESOURCE_NOT_FOUND",
        -                  "RENDER_FAILURE",
        -                  "OCR_LOW_CONFIDENCE",
        -                  "MANUAL_REVIEW_REQUIRED",
        -                  "ACCEPTANCE_REQUIRED",
        -                  "INVALID_TOKEN"
        -                ],
        -                "type": "string"
        -              },
        -              "details": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "message": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "recoverable": {
        -                "type": "boolean"
        -              },
        -              "retry_after_seconds": {
        -                "anyOf": [
        -                  {
        -                    "minimum": 0,
        -                    "type": "integer"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              }
        -            },
        -            "required": [
        -              "code",
        -              "message",
        -              "recoverable"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      }
        -    },
        -    "required": [
        -      "_meta"
        -    ],
        -    "type": "object"
        -  }
        -]New value: +[
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "_meta": {
        +        "additionalProperties": false,
        +        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        +        "properties": {
        +          "deliverables": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        +                "properties": {
        +                  "docx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "dxf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "expires_at": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  },
        +                  "pdf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "xlsx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "expires_at"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "document_id": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "issued_at": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "rate_limit_remaining": {
        +            "anyOf": [
        +              {
        +                "minimum": 0,
        +                "type": "integer"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "request_id": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "schema_version": {
        +            "const": "1.0.0",
        +            "default": "1.0.0",
        +            "type": "string"
        +          },
        +          "scope_boundary": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        +                "properties": {
        +                  "not_in_scope": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "produced": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "recommended_companions": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "type": "string"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "produced",
        +                  "not_in_scope"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tier": {
        +            "enum": [
        +              "free",
        +              "paid"
        +            ],
        +            "type": "string"
        +          },
        +          "tier_upgrade": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        +                "properties": {
        +                  "available_tiers": {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        +                      "properties": {
        +                        "billing": {
        +                          "enum": [
        +                            "one_off",
        +                            "monthly",
        +                            "annual"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "currency": {
        +                          "enum": [
        +                            "GBP",
        +                            "SGD",
        +                            "EUR",
        +                            "USD",
        +                            "CAD",
        +                            "AUD",
        +                            "NZD",
        +                            "MYR"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "display_name": {
        +                          "type": "string"
        +                        },
        +                        "price_local": {
        +                          "type": "number"
        +                        },
        +                        "tier_slug": {
        +                          "enum": [
        +                            "7_day_pass",
        +                            "solo",
        +                            "studio",
        +                            "practice"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "unlock_summary": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "tier_slug",
        +                        "display_name",
        +                        "price_local",
        +                        "currency",
        +                        "billing",
        +                        "unlock_summary"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "current_tier": {
        +                    "const": "free",
        +                    "default": "free",
        +                    "type": "string"
        +                  },
        +                  "pass_credit": {
        +                    "anyOf": [
        +                      {
        +                        "additionalProperties": false,
        +                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        +                        "properties": {
        +                          "amount_local": {
        +                            "type": "number"
        +                          },
        +                          "applies_to": {
        +                            "const": "solo_first_month",
        +                            "default": "solo_first_month",
        +                            "type": "string"
        +                          },
        +                          "currency": {
        +                            "type": "string"
        +                          },
        +                          "redeemable_until": {
        +                            "type": "string"
        +                          }
        +                        },
        +                        "required": [
        +                          "amount_local",
        +                          "currency",
        +                          "redeemable_until"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "pricing_url": {
        +                    "default": "https://civilquants.com/pricing",
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "available_tiers"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tos_url": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "upgrade_hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "warranty_disclaimer": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          }
        +        },
        +        "required": [
        +          "request_id",
        +          "issued_at",
        +          "tier"
        +        ],
        +        "type": "object"
        +      },
        +      "data": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Schema § 1.1 — the typed payload returned inside `MCPResponse[ComputeResult]`.\n\nFree-tier responses MUST omit `drawings` and `audit_trail` (the bridge\nenforces this); paid-tier responses populate both. `text_summary` is\nbounded to 2000 chars — keeps the LLM-facing summary token-cheap and\nforces longer narrative into BoQ row descriptions where it belongs.\n`warnings` is the non-fatal geometry advisory list (both tiers).",
        +            "properties": {
        +              "assembly_slug": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "audit_trail": {
        +                "anyOf": [
        +                  {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.7 — paid-tier audit-trail entry.\n\nOne entry per BoQ row; `boq_row_index` ties to the row position in\n`ComputeResult.boq_rows`. `derivation` is the human-readable formula\nwalk-through; `formula` is the optional formal expression.",
        +                      "properties": {
        +                        "boq_row_index": {
        +                          "minimum": 0,
        +                          "type": "integer"
        +                        },
        +                        "derivation": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "formula": {
        +                          "anyOf": [
        +                            {
        +                              "type": "string"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ],
        +                          "default": null
        +                        },
        +                        "id": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "parameters_referenced": {
        +                          "items": {
        +                            "type": "string"
        +                          },
        +                          "type": "array"
        +                        }
        +                      },
        +                      "required": [
        +                        "id",
        +                        "boq_row_index",
        +                        "derivation"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "boq_rows": {
        +                "items": {
        +                  "additionalProperties": false,
        +                  "description": "Schema § 1.3 — a single bill row in the requested standard's format.\n\n`description` is the non-verbatim functional description per spec § 13.9 /\n§ 15 invariant — NEVER reproduces a standard's verbatim clause text.\n`rate` / `amount` ship null because rates are commodity data the customer\nowns; the engine's job is the measurement, not the pricing.",
        +                  "properties": {
        +                    "amount": {
        +                      "anyOf": [
        +                        {
        +                          "type": "number"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "attribution": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "audit_id": {
        +                      "anyOf": [
        +                        {
        +                          "type": "string"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "description": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "quantity": {
        +                      "minimum": 0,
        +                      "type": "number"
        +                    },
        +                    "rate": {
        +                      "anyOf": [
        +                        {
        +                          "type": "number"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "unit": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "work_section": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    }
        +                  },
        +                  "required": [
        +                    "work_section",
        +                    "description",
        +                    "quantity",
        +                    "unit",
        +                    "attribution"
        +                  ],
        +                  "type": "object"
        +                },
        +                "type": "array"
        +              },
        +              "drawings": {
        +                "anyOf": [
        +                  {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.6 — paid-tier drawing artefact pointer.\n\n`url` is an R2-signed URL; expiry is carried in `_meta.deliverables.expires_at`\non the envelope (not duplicated here). `layers` is DXF-only; PDF/SVG\ncallers omit it.",
        +                      "properties": {
        +                        "drawing_type": {
        +                          "enum": [
        +                            "section",
        +                            "plan",
        +                            "elevation",
        +                            "isometric",
        +                            "detail"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "format": {
        +                          "enum": [
        +                            "DXF",
        +                            "PDF",
        +                            "SVG"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "layers": {
        +                          "anyOf": [
        +                            {
        +                              "items": {
        +                                "type": "string"
        +                              },
        +                              "type": "array"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ],
        +                          "default": null
        +                        },
        +                        "scale": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "sheet_size": {
        +                          "enum": [
        +                            "A1",
        +                            "A2",
        +                            "A3",
        +                            "A4"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "url": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "drawing_type",
        +                        "format",
        +                        "url",
        +                        "sheet_size",
        +                        "scale"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "parameters_used": {
        +                "additionalProperties": false,
        +                "description": "Schema § 1.2 — the parameter snapshot the engine actually used.\n\nSplits user-supplied values from engine defaults so customers can see\nwhich numbers came from them and which the engine filled in. Every\ndefaulted parameter SHOULD have a corresponding entry in `assumptions`\n— the bridge layer enforces this when wrapping engine output.",
        +                "properties": {
        +                  "assumptions": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "engine_defaults": {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  "resolved_from_description": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "additionalProperties": false,
        +                          "description": "Schema § 1.2 — a parameter resolved by the forgiving-input layer.\n\nPopulated by the Track B-Forgiving Haiku-4.5 resolution pass; until that\nlayer lands, instances are constructed only by tests. `source` distinguishes\nthe resolution path so customers can audit which fields were inferred.",
        +                          "properties": {
        +                            "confidence": {
        +                              "anyOf": [
        +                                {
        +                                  "enum": [
        +                                    "high",
        +                                    "medium",
        +                                    "low"
        +                                  ],
        +                                  "type": "string"
        +                                },
        +                                {
        +                                  "type": "null"
        +                                }
        +                              ],
        +                              "default": null
        +                            },
        +                            "field_name": {
        +                              "minLength": 1,
        +                              "type": "string"
        +                            },
        +                            "resolved_value": {},
        +                            "source": {
        +                              "enum": [
        +                                "description_field",
        +                                "haiku_resolution",
        +                                "engine_default"
        +                              ],
        +                              "type": "string"
        +                            }
        +                          },
        +                          "required": [
        +                            "field_name",
        +                            "resolved_value",
        +                            "source"
        +                          ],
        +                          "type": "object"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "user_supplied": {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  }
        +                },
        +                "type": "object"
        +              },
        +              "standard": {
        +                "enum": [
        +                  "CESMM4",
        +                  "NRM2",
        +                  "SMM7",
        +                  "MMHW"
        +                ],
        +                "type": "string"
        +              },
        +              "text_summary": {
        +                "maxLength": 2000,
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "totals_summary": {
        +                "additionalProperties": false,
        +                "description": "Schema § 1.4 — totals_summary as a typed wrapper around the free-form dict.\n\nWire shape is a flat object (`{\"concrete_m3\": {...}, \"rebar_t\": {...}}`).\nWe model it as `RootModel`-equivalent via `model_config(extra=\"allow\")`\n+ a single `__root__`-style `entries` dict. Pydantic v2 recommends\n`RootModel` for free-form roots; using a wrapper class keeps the import\nsurface uniform with the rest of this module.",
        +                "properties": {
        +                  "entries": {
        +                    "additionalProperties": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.4 — single material/work-class total entry.",
        +                      "properties": {
        +                        "quantity": {
        +                          "minimum": 0,
        +                          "type": "number"
        +                        },
        +                        "unit": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "quantity",
        +                        "unit"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "object"
        +                  }
        +                },
        +                "type": "object"
        +              },
        +              "warnings": {
        +                "items": {
        +                  "additionalProperties": false,
        +                  "description": "Schema § 1.8 — a non-fatal geometry advisory (56th-fire T2).\n\nThe wire projection of the engine's `core.GeometryWarning`. Advisory only:\na warning NEVER changes a measured quantity — it flags geometry that is\nvalid but likely a mistake (e.g. a stale dependent-height default). Present\non BOTH tiers — a correctness/safety signal, not a paid feature.",
        +                  "properties": {
        +                    "affected_params": {
        +                      "items": {
        +                        "type": "string"
        +                      },
        +                      "type": "array"
        +                    },
        +                    "code": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "detail": {
        +                      "additionalProperties": {
        +                        "type": "number"
        +                      },
        +                      "type": "object"
        +                    },
        +                    "message": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "severity": {
        +                      "enum": [
        +                        "info",
        +                        "advisory",
        +                        "caution"
        +                      ],
        +                      "type": "string"
        +                    }
        +                  },
        +                  "required": [
        +                    "code",
        +                    "severity",
        +                    "message"
        +                  ],
        +                  "type": "object"
        +                },
        +                "type": "array"
        +              }
        +            },
        +            "required": [
        +              "assembly_slug",
        +              "standard",
        +              "parameters_used",
        +              "boq_rows",
        +              "totals_summary",
        +              "text_summary"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      },
        +      "error": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        +            "properties": {
        +              "code": {
        +                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        +                "enum": [
        +                  "RATE_LIMIT_EXCEEDED",
        +                  "TIER_INSUFFICIENT",
        +                  "INVALID_INPUT",
        +                  "SCHEMA_VERSION_MISMATCH",
        +                  "SCHEMA_INVARIANT_VIOLATION",
        +                  "UPSTREAM_TIMEOUT",
        +                  "BACKEND_FAILURE",
        +                  "IP_BLOCKED",
        +                  "RESOURCE_NOT_FOUND",
        +                  "RENDER_FAILURE",
        +                  "OCR_LOW_CONFIDENCE",
        +                  "MANUAL_REVIEW_REQUIRED",
        +                  "ACCEPTANCE_REQUIRED",
        +                  "INVALID_TOKEN"
        +                ],
        +                "type": "string"
        +              },
        +              "details": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "message": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "recoverable": {
        +                "type": "boolean"
        +              },
        +              "retry_after_seconds": {
        +                "anyOf": [
        +                  {
        +                    "minimum": 0,
        +                    "type": "integer"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              }
        +            },
        +            "required": [
        +              "code",
        +              "message",
        +              "recoverable"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      }
        +    },
        +    "required": [
        +      "_meta"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "_meta": {
        +        "additionalProperties": false,
        +        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        +        "properties": {
        +          "deliverables": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        +                "properties": {
        +                  "docx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "dxf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "expires_at": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  },
        +                  "pdf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "xlsx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "expires_at"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "document_id": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "issued_at": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "rate_limit_remaining": {
        +            "anyOf": [
        +              {
        +                "minimum": 0,
        +                "type": "integer"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "request_id": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "schema_version": {
        +            "const": "1.0.0",
        +            "default": "1.0.0",
        +            "type": "string"
        +          },
        +          "scope_boundary": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        +                "properties": {
        +                  "not_in_scope": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "produced": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "recommended_companions": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "type": "string"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "produced",
        +                  "not_in_scope"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tier": {
        +            "enum": [
        +              "free",
        +              "paid"
        +            ],
        +            "type": "string"
        +          },
        +          "tier_upgrade": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        +                "properties": {
        +                  "available_tiers": {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        +                      "properties": {
        +                        "billing": {
        +                          "enum": [
        +                            "one_off",
        +                            "monthly",
        +                            "annual"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "currency": {
        +                          "enum": [
        +                            "GBP",
        +                            "SGD",
        +                            "EUR",
        +                            "USD",
        +                            "CAD",
        +                            "AUD",
        +                            "NZD",
        +                            "MYR"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "display_name": {
        +                          "type": "string"
        +                        },
        +                        "price_local": {
        +                          "type": "number"
        +                        },
        +                        "tier_slug": {
        +                          "enum": [
        +                            "7_day_pass",
        +                            "solo",
        +                            "studio",
        +                            "practice"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "unlock_summary": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "tier_slug",
        +                        "display_name",
        +                        "price_local",
        +                        "currency",
        +                        "billing",
        +                        "unlock_summary"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "current_tier": {
        +                    "const": "free",
        +                    "default": "free",
        +                    "type": "string"
        +                  },
        +                  "pass_credit": {
        +                    "anyOf": [
        +                      {
        +                        "additionalProperties": false,
        +                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        +                        "properties": {
        +                          "amount_local": {
        +                            "type": "number"
        +                          },
        +                          "applies_to": {
        +                            "const": "solo_first_month",
        +                            "default": "solo_first_month",
        +                            "type": "string"
        +                          },
        +                          "currency": {
        +                            "type": "string"
        +                          },
        +                          "redeemable_until": {
        +                            "type": "string"
        +                          }
        +                        },
        +                        "required": [
        +                          "amount_local",
        +                          "currency",
        +                          "redeemable_until"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "pricing_url": {
        +                    "default": "https://civilquants.com/pricing",
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "available_tiers"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tos_url": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "upgrade_hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "warranty_disclaimer": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          }
        +        },
        +        "required": [
        +          "request_id",
        +          "issued_at",
        +          "tier"
        +        ],
        +        "type": "object"
        +      },
        +      "data": {
        +        "default": null,
        +        "title": "Data"
        +      },
        +      "error": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        +            "properties": {
        +              "code": {
        +                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        +                "enum": [
        +                  "RATE_LIMIT_EXCEEDED",
        +                  "TIER_INSUFFICIENT",
        +                  "INVALID_INPUT",
        +                  "SCHEMA_VERSION_MISMATCH",
        +                  "SCHEMA_INVARIANT_VIOLATION",
        +                  "UPSTREAM_TIMEOUT",
        +                  "BACKEND_FAILURE",
        +                  "IP_BLOCKED",
        +                  "RESOURCE_NOT_FOUND",
        +                  "RENDER_FAILURE",
        +                  "OCR_LOW_CONFIDENCE",
        +                  "MANUAL_REVIEW_REQUIRED",
        +                  "ACCEPTANCE_REQUIRED",
        +                  "INVALID_TOKEN"
        +                ],
        +                "type": "string"
        +              },
        +              "details": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "message": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "recoverable": {
        +                "type": "boolean"
        +              },
        +              "retry_after_seconds": {
        +                "anyOf": [
        +                  {
        +                    "minimum": 0,
        +                    "type": "integer"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              }
        +            },
        +            "required": [
        +              "code",
        +              "message",
        +              "recoverable"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      }
        +    },
        +    "required": [
        +      "_meta"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedcompute_soakaway1 field changed
      • changedOutput schema / properties / result / anyOf
        Previous value: -[
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "_meta": {
        -        "additionalProperties": false,
        -        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        -        "properties": {
        -          "deliverables": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        -                "properties": {
        -                  "docx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "dxf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "expires_at": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  },
        -                  "pdf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "xlsx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "expires_at"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "document_id": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "issued_at": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "rate_limit_remaining": {
        -            "anyOf": [
        -              {
        -                "minimum": 0,
        -                "type": "integer"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "request_id": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "schema_version": {
        -            "const": "1.0.0",
        -            "default": "1.0.0",
        -            "type": "string"
        -          },
        -          "scope_boundary": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        -                "properties": {
        -                  "not_in_scope": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "produced": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "recommended_companions": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "type": "string"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "produced",
        -                  "not_in_scope"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tier": {
        -            "enum": [
        -              "free",
        -              "paid"
        -            ],
        -            "type": "string"
        -          },
        -          "tier_upgrade": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        -                "properties": {
        -                  "available_tiers": {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        -                      "properties": {
        -                        "billing": {
        -                          "enum": [
        -                            "one_off",
        -                            "monthly",
        -                            "annual"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "currency": {
        -                          "enum": [
        -                            "GBP",
        -                            "SGD",
        -                            "EUR",
        -                            "USD",
        -                            "CAD",
        -                            "AUD",
        -                            "NZD",
        -                            "MYR"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "display_name": {
        -                          "type": "string"
        -                        },
        -                        "price_local": {
        -                          "type": "number"
        -                        },
        -                        "tier_slug": {
        -                          "enum": [
        -                            "7_day_pass",
        -                            "solo",
        -                            "studio",
        -                            "practice"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "unlock_summary": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "tier_slug",
        -                        "display_name",
        -                        "price_local",
        -                        "currency",
        -                        "billing",
        -                        "unlock_summary"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "current_tier": {
        -                    "const": "free",
        -                    "default": "free",
        -                    "type": "string"
        -                  },
        -                  "pass_credit": {
        -                    "anyOf": [
        -                      {
        -                        "additionalProperties": false,
        -                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        -                        "properties": {
        -                          "amount_local": {
        -                            "type": "number"
        -                          },
        -                          "applies_to": {
        -                            "const": "solo_first_month",
        -                            "default": "solo_first_month",
        -                            "type": "string"
        -                          },
        -                          "currency": {
        -                            "type": "string"
        -                          },
        -                          "redeemable_until": {
        -                            "type": "string"
        -                          }
        -                        },
        -                        "required": [
        -                          "amount_local",
        -                          "currency",
        -                          "redeemable_until"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "pricing_url": {
        -                    "default": "https://civilquants.com/pricing",
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "available_tiers"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tos_url": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "upgrade_hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "warranty_disclaimer": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          }
        -        },
        -        "required": [
        -          "request_id",
        -          "issued_at",
        -          "tier"
        -        ],
        -        "type": "object"
        -      },
        -      "data": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Schema § 1.1 — the typed payload returned inside `MCPResponse[ComputeResult]`.\n\nFree-tier responses MUST omit `drawings` and `audit_trail` (the bridge\nenforces this); paid-tier responses populate both. `text_summary` is\nbounded to 2000 chars — keeps the LLM-facing summary token-cheap and\nforces longer narrative into BoQ row descriptions where it belongs.",
        -            "properties": {
        -              "assembly_slug": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "audit_trail": {
        -                "anyOf": [
        -                  {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.7 — paid-tier audit-trail entry.\n\nOne entry per BoQ row; `boq_row_index` ties to the row position in\n`ComputeResult.boq_rows`. `derivation` is the human-readable formula\nwalk-through; `formula` is the optional formal expression.",
        -                      "properties": {
        -                        "boq_row_index": {
        -                          "minimum": 0,
        -                          "type": "integer"
        -                        },
        -                        "derivation": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "formula": {
        -                          "anyOf": [
        -                            {
        -                              "type": "string"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ],
        -                          "default": null
        -                        },
        -                        "id": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "parameters_referenced": {
        -                          "items": {
        -                            "type": "string"
        -                          },
        -                          "type": "array"
        -                        }
        -                      },
        -                      "required": [
        -                        "id",
        -                        "boq_row_index",
        -                        "derivation"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "boq_rows": {
        -                "items": {
        -                  "additionalProperties": false,
        -                  "description": "Schema § 1.3 — a single bill row in the requested standard's format.\n\n`description` is the non-verbatim functional description per spec § 13.9 /\n§ 15 invariant — NEVER reproduces a standard's verbatim clause text.\n`rate` / `amount` ship null because rates are commodity data the customer\nowns; the engine's job is the measurement, not the pricing.",
        -                  "properties": {
        -                    "amount": {
        -                      "anyOf": [
        -                        {
        -                          "type": "number"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "attribution": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "audit_id": {
        -                      "anyOf": [
        -                        {
        -                          "type": "string"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "description": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "quantity": {
        -                      "minimum": 0,
        -                      "type": "number"
        -                    },
        -                    "rate": {
        -                      "anyOf": [
        -                        {
        -                          "type": "number"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "unit": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "work_section": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    }
        -                  },
        -                  "required": [
        -                    "work_section",
        -                    "description",
        -                    "quantity",
        -                    "unit",
        -                    "attribution"
        -                  ],
        -                  "type": "object"
        -                },
        -                "type": "array"
        -              },
        -              "drawings": {
        -                "anyOf": [
        -                  {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.6 — paid-tier drawing artefact pointer.\n\n`url` is an R2-signed URL; expiry is carried in `_meta.deliverables.expires_at`\non the envelope (not duplicated here). `layers` is DXF-only; PDF/SVG\ncallers omit it.",
        -                      "properties": {
        -                        "drawing_type": {
        -                          "enum": [
        -                            "section",
        -                            "plan",
        -                            "elevation",
        -                            "isometric",
        -                            "detail"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "format": {
        -                          "enum": [
        -                            "DXF",
        -                            "PDF",
        -                            "SVG"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "layers": {
        -                          "anyOf": [
        -                            {
        -                              "items": {
        -                                "type": "string"
        -                              },
        -                              "type": "array"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ],
        -                          "default": null
        -                        },
        -                        "scale": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "sheet_size": {
        -                          "enum": [
        -                            "A1",
        -                            "A2",
        -                            "A3",
        -                            "A4"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "url": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "drawing_type",
        -                        "format",
        -                        "url",
        -                        "sheet_size",
        -                        "scale"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "parameters_used": {
        -                "additionalProperties": false,
        -                "description": "Schema § 1.2 — the parameter snapshot the engine actually used.\n\nSplits user-supplied values from engine defaults so customers can see\nwhich numbers came from them and which the engine filled in. Every\ndefaulted parameter SHOULD have a corresponding entry in `assumptions`\n— the bridge layer enforces this when wrapping engine output.",
        -                "properties": {
        -                  "assumptions": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "engine_defaults": {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  "resolved_from_description": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "additionalProperties": false,
        -                          "description": "Schema § 1.2 — a parameter resolved by the forgiving-input layer.\n\nPopulated by the Track B-Forgiving Haiku-4.5 resolution pass; until that\nlayer lands, instances are constructed only by tests. `source` distinguishes\nthe resolution path so customers can audit which fields were inferred.",
        -                          "properties": {
        -                            "confidence": {
        -                              "anyOf": [
        -                                {
        -                                  "enum": [
        -                                    "high",
        -                                    "medium",
        -                                    "low"
        -                                  ],
        -                                  "type": "string"
        -                                },
        -                                {
        -                                  "type": "null"
        -                                }
        -                              ],
        -                              "default": null
        -                            },
        -                            "field_name": {
        -                              "minLength": 1,
        -                              "type": "string"
        -                            },
        -                            "resolved_value": {},
        -                            "source": {
        -                              "enum": [
        -                                "description_field",
        -                                "haiku_resolution",
        -                                "engine_default"
        -                              ],
        -                              "type": "string"
        -                            }
        -                          },
        -                          "required": [
        -                            "field_name",
        -                            "resolved_value",
        -                            "source"
        -                          ],
        -                          "type": "object"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "user_supplied": {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  }
        -                },
        -                "type": "object"
        -              },
        -              "standard": {
        -                "enum": [
        -                  "CESMM4",
        -                  "NRM2",
        -                  "SMM7",
        -                  "MMHW"
        -                ],
        -                "type": "string"
        -              },
        -              "text_summary": {
        -                "maxLength": 2000,
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "totals_summary": {
        -                "additionalProperties": false,
        -                "description": "Schema § 1.4 — totals_summary as a typed wrapper around the free-form dict.\n\nWire shape is a flat object (`{\"concrete_m3\": {...}, \"rebar_t\": {...}}`).\nWe model it as `RootModel`-equivalent via `model_config(extra=\"allow\")`\n+ a single `__root__`-style `entries` dict. Pydantic v2 recommends\n`RootModel` for free-form roots; using a wrapper class keeps the import\nsurface uniform with the rest of this module.",
        -                "properties": {
        -                  "entries": {
        -                    "additionalProperties": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.4 — single material/work-class total entry.",
        -                      "properties": {
        -                        "quantity": {
        -                          "minimum": 0,
        -                          "type": "number"
        -                        },
        -                        "unit": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "quantity",
        -                        "unit"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "object"
        -                  }
        -                },
        -                "type": "object"
        -              }
        -            },
        -            "required": [
        -              "assembly_slug",
        -              "standard",
        -              "parameters_used",
        -              "boq_rows",
        -              "totals_summary",
        -              "text_summary"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      },
        -      "error": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        -            "properties": {
        -              "code": {
        -                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        -                "enum": [
        -                  "RATE_LIMIT_EXCEEDED",
        -                  "TIER_INSUFFICIENT",
        -                  "INVALID_INPUT",
        -                  "SCHEMA_VERSION_MISMATCH",
        -                  "SCHEMA_INVARIANT_VIOLATION",
        -                  "UPSTREAM_TIMEOUT",
        -                  "BACKEND_FAILURE",
        -                  "IP_BLOCKED",
        -                  "RESOURCE_NOT_FOUND",
        -                  "RENDER_FAILURE",
        -                  "OCR_LOW_CONFIDENCE",
        -                  "MANUAL_REVIEW_REQUIRED",
        -                  "ACCEPTANCE_REQUIRED",
        -                  "INVALID_TOKEN"
        -                ],
        -                "type": "string"
        -              },
        -              "details": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "message": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "recoverable": {
        -                "type": "boolean"
        -              },
        -              "retry_after_seconds": {
        -                "anyOf": [
        -                  {
        -                    "minimum": 0,
        -                    "type": "integer"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              }
        -            },
        -            "required": [
        -              "code",
        -              "message",
        -              "recoverable"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      }
        -    },
        -    "required": [
        -      "_meta"
        -    ],
        -    "type": "object"
        -  },
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "_meta": {
        -        "additionalProperties": false,
        -        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        -        "properties": {
        -          "deliverables": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        -                "properties": {
        -                  "docx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "dxf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "expires_at": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  },
        -                  "pdf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "xlsx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "expires_at"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "document_id": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "issued_at": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "rate_limit_remaining": {
        -            "anyOf": [
        -              {
        -                "minimum": 0,
        -                "type": "integer"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "request_id": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "schema_version": {
        -            "const": "1.0.0",
        -            "default": "1.0.0",
        -            "type": "string"
        -          },
        -          "scope_boundary": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        -                "properties": {
        -                  "not_in_scope": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "produced": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "recommended_companions": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "type": "string"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "produced",
        -                  "not_in_scope"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tier": {
        -            "enum": [
        -              "free",
        -              "paid"
        -            ],
        -            "type": "string"
        -          },
        -          "tier_upgrade": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        -                "properties": {
        -                  "available_tiers": {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        -                      "properties": {
        -                        "billing": {
        -                          "enum": [
        -                            "one_off",
        -                            "monthly",
        -                            "annual"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "currency": {
        -                          "enum": [
        -                            "GBP",
        -                            "SGD",
        -                            "EUR",
        -                            "USD",
        -                            "CAD",
        -                            "AUD",
        -                            "NZD",
        -                            "MYR"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "display_name": {
        -                          "type": "string"
        -                        },
        -                        "price_local": {
        -                          "type": "number"
        -                        },
        -                        "tier_slug": {
        -                          "enum": [
        -                            "7_day_pass",
        -                            "solo",
        -                            "studio",
        -                            "practice"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "unlock_summary": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "tier_slug",
        -                        "display_name",
        -                        "price_local",
        -                        "currency",
        -                        "billing",
        -                        "unlock_summary"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "current_tier": {
        -                    "const": "free",
        -                    "default": "free",
        -                    "type": "string"
        -                  },
        -                  "pass_credit": {
        -                    "anyOf": [
        -                      {
        -                        "additionalProperties": false,
        -                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        -                        "properties": {
        -                          "amount_local": {
        -                            "type": "number"
        -                          },
        -                          "applies_to": {
        -                            "const": "solo_first_month",
        -                            "default": "solo_first_month",
        -                            "type": "string"
        -                          },
        -                          "currency": {
        -                            "type": "string"
        -                          },
        -                          "redeemable_until": {
        -                            "type": "string"
        -                          }
        -                        },
        -                        "required": [
        -                          "amount_local",
        -                          "currency",
        -                          "redeemable_until"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "pricing_url": {
        -                    "default": "https://civilquants.com/pricing",
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "available_tiers"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tos_url": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "upgrade_hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "warranty_disclaimer": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          }
        -        },
        -        "required": [
        -          "request_id",
        -          "issued_at",
        -          "tier"
        -        ],
        -        "type": "object"
        -      },
        -      "data": {
        -        "default": null,
        -        "title": "Data"
        -      },
        -      "error": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        -            "properties": {
        -              "code": {
        -                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        -                "enum": [
        -                  "RATE_LIMIT_EXCEEDED",
        -                  "TIER_INSUFFICIENT",
        -                  "INVALID_INPUT",
        -                  "SCHEMA_VERSION_MISMATCH",
        -                  "SCHEMA_INVARIANT_VIOLATION",
        -                  "UPSTREAM_TIMEOUT",
        -                  "BACKEND_FAILURE",
        -                  "IP_BLOCKED",
        -                  "RESOURCE_NOT_FOUND",
        -                  "RENDER_FAILURE",
        -                  "OCR_LOW_CONFIDENCE",
        -                  "MANUAL_REVIEW_REQUIRED",
        -                  "ACCEPTANCE_REQUIRED",
        -                  "INVALID_TOKEN"
        -                ],
        -                "type": "string"
        -              },
        -              "details": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "message": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "recoverable": {
        -                "type": "boolean"
        -              },
        -              "retry_after_seconds": {
        -                "anyOf": [
        -                  {
        -                    "minimum": 0,
        -                    "type": "integer"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              }
        -            },
        -            "required": [
        -              "code",
        -              "message",
        -              "recoverable"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      }
        -    },
        -    "required": [
        -      "_meta"
        -    ],
        -    "type": "object"
        -  }
        -]New value: +[
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "_meta": {
        +        "additionalProperties": false,
        +        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        +        "properties": {
        +          "deliverables": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        +                "properties": {
        +                  "docx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "dxf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "expires_at": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  },
        +                  "pdf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "xlsx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "expires_at"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "document_id": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "issued_at": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "rate_limit_remaining": {
        +            "anyOf": [
        +              {
        +                "minimum": 0,
        +                "type": "integer"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "request_id": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "schema_version": {
        +            "const": "1.0.0",
        +            "default": "1.0.0",
        +            "type": "string"
        +          },
        +          "scope_boundary": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        +                "properties": {
        +                  "not_in_scope": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "produced": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "recommended_companions": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "type": "string"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "produced",
        +                  "not_in_scope"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tier": {
        +            "enum": [
        +              "free",
        +              "paid"
        +            ],
        +            "type": "string"
        +          },
        +          "tier_upgrade": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        +                "properties": {
        +                  "available_tiers": {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        +                      "properties": {
        +                        "billing": {
        +                          "enum": [
        +                            "one_off",
        +                            "monthly",
        +                            "annual"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "currency": {
        +                          "enum": [
        +                            "GBP",
        +                            "SGD",
        +                            "EUR",
        +                            "USD",
        +                            "CAD",
        +                            "AUD",
        +                            "NZD",
        +                            "MYR"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "display_name": {
        +                          "type": "string"
        +                        },
        +                        "price_local": {
        +                          "type": "number"
        +                        },
        +                        "tier_slug": {
        +                          "enum": [
        +                            "7_day_pass",
        +                            "solo",
        +                            "studio",
        +                            "practice"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "unlock_summary": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "tier_slug",
        +                        "display_name",
        +                        "price_local",
        +                        "currency",
        +                        "billing",
        +                        "unlock_summary"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "current_tier": {
        +                    "const": "free",
        +                    "default": "free",
        +                    "type": "string"
        +                  },
        +                  "pass_credit": {
        +                    "anyOf": [
        +                      {
        +                        "additionalProperties": false,
        +                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        +                        "properties": {
        +                          "amount_local": {
        +                            "type": "number"
        +                          },
        +                          "applies_to": {
        +                            "const": "solo_first_month",
        +                            "default": "solo_first_month",
        +                            "type": "string"
        +                          },
        +                          "currency": {
        +                            "type": "string"
        +                          },
        +                          "redeemable_until": {
        +                            "type": "string"
        +                          }
        +                        },
        +                        "required": [
        +                          "amount_local",
        +                          "currency",
        +                          "redeemable_until"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "pricing_url": {
        +                    "default": "https://civilquants.com/pricing",
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "available_tiers"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tos_url": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "upgrade_hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "warranty_disclaimer": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          }
        +        },
        +        "required": [
        +          "request_id",
        +          "issued_at",
        +          "tier"
        +        ],
        +        "type": "object"
        +      },
        +      "data": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Schema § 1.1 — the typed payload returned inside `MCPResponse[ComputeResult]`.\n\nFree-tier responses MUST omit `drawings` and `audit_trail` (the bridge\nenforces this); paid-tier responses populate both. `text_summary` is\nbounded to 2000 chars — keeps the LLM-facing summary token-cheap and\nforces longer narrative into BoQ row descriptions where it belongs.\n`warnings` is the non-fatal geometry advisory list (both tiers).",
        +            "properties": {
        +              "assembly_slug": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "audit_trail": {
        +                "anyOf": [
        +                  {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.7 — paid-tier audit-trail entry.\n\nOne entry per BoQ row; `boq_row_index` ties to the row position in\n`ComputeResult.boq_rows`. `derivation` is the human-readable formula\nwalk-through; `formula` is the optional formal expression.",
        +                      "properties": {
        +                        "boq_row_index": {
        +                          "minimum": 0,
        +                          "type": "integer"
        +                        },
        +                        "derivation": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "formula": {
        +                          "anyOf": [
        +                            {
        +                              "type": "string"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ],
        +                          "default": null
        +                        },
        +                        "id": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "parameters_referenced": {
        +                          "items": {
        +                            "type": "string"
        +                          },
        +                          "type": "array"
        +                        }
        +                      },
        +                      "required": [
        +                        "id",
        +                        "boq_row_index",
        +                        "derivation"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "boq_rows": {
        +                "items": {
        +                  "additionalProperties": false,
        +                  "description": "Schema § 1.3 — a single bill row in the requested standard's format.\n\n`description` is the non-verbatim functional description per spec § 13.9 /\n§ 15 invariant — NEVER reproduces a standard's verbatim clause text.\n`rate` / `amount` ship null because rates are commodity data the customer\nowns; the engine's job is the measurement, not the pricing.",
        +                  "properties": {
        +                    "amount": {
        +                      "anyOf": [
        +                        {
        +                          "type": "number"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "attribution": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "audit_id": {
        +                      "anyOf": [
        +                        {
        +                          "type": "string"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "description": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "quantity": {
        +                      "minimum": 0,
        +                      "type": "number"
        +                    },
        +                    "rate": {
        +                      "anyOf": [
        +                        {
        +                          "type": "number"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "unit": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "work_section": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    }
        +                  },
        +                  "required": [
        +                    "work_section",
        +                    "description",
        +                    "quantity",
        +                    "unit",
        +                    "attribution"
        +                  ],
        +                  "type": "object"
        +                },
        +                "type": "array"
        +              },
        +              "drawings": {
        +                "anyOf": [
        +                  {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.6 — paid-tier drawing artefact pointer.\n\n`url` is an R2-signed URL; expiry is carried in `_meta.deliverables.expires_at`\non the envelope (not duplicated here). `layers` is DXF-only; PDF/SVG\ncallers omit it.",
        +                      "properties": {
        +                        "drawing_type": {
        +                          "enum": [
        +                            "section",
        +                            "plan",
        +                            "elevation",
        +                            "isometric",
        +                            "detail"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "format": {
        +                          "enum": [
        +                            "DXF",
        +                            "PDF",
        +                            "SVG"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "layers": {
        +                          "anyOf": [
        +                            {
        +                              "items": {
        +                                "type": "string"
        +                              },
        +                              "type": "array"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ],
        +                          "default": null
        +                        },
        +                        "scale": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "sheet_size": {
        +                          "enum": [
        +                            "A1",
        +                            "A2",
        +                            "A3",
        +                            "A4"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "url": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "drawing_type",
        +                        "format",
        +                        "url",
        +                        "sheet_size",
        +                        "scale"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "parameters_used": {
        +                "additionalProperties": false,
        +                "description": "Schema § 1.2 — the parameter snapshot the engine actually used.\n\nSplits user-supplied values from engine defaults so customers can see\nwhich numbers came from them and which the engine filled in. Every\ndefaulted parameter SHOULD have a corresponding entry in `assumptions`\n— the bridge layer enforces this when wrapping engine output.",
        +                "properties": {
        +                  "assumptions": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "engine_defaults": {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  "resolved_from_description": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "additionalProperties": false,
        +                          "description": "Schema § 1.2 — a parameter resolved by the forgiving-input layer.\n\nPopulated by the Track B-Forgiving Haiku-4.5 resolution pass; until that\nlayer lands, instances are constructed only by tests. `source` distinguishes\nthe resolution path so customers can audit which fields were inferred.",
        +                          "properties": {
        +                            "confidence": {
        +                              "anyOf": [
        +                                {
        +                                  "enum": [
        +                                    "high",
        +                                    "medium",
        +                                    "low"
        +                                  ],
        +                                  "type": "string"
        +                                },
        +                                {
        +                                  "type": "null"
        +                                }
        +                              ],
        +                              "default": null
        +                            },
        +                            "field_name": {
        +                              "minLength": 1,
        +                              "type": "string"
        +                            },
        +                            "resolved_value": {},
        +                            "source": {
        +                              "enum": [
        +                                "description_field",
        +                                "haiku_resolution",
        +                                "engine_default"
        +                              ],
        +                              "type": "string"
        +                            }
        +                          },
        +                          "required": [
        +                            "field_name",
        +                            "resolved_value",
        +                            "source"
        +                          ],
        +                          "type": "object"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "user_supplied": {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  }
        +                },
        +                "type": "object"
        +              },
        +              "standard": {
        +                "enum": [
        +                  "CESMM4",
        +                  "NRM2",
        +                  "SMM7",
        +                  "MMHW"
        +                ],
        +                "type": "string"
        +              },
        +              "text_summary": {
        +                "maxLength": 2000,
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "totals_summary": {
        +                "additionalProperties": false,
        +                "description": "Schema § 1.4 — totals_summary as a typed wrapper around the free-form dict.\n\nWire shape is a flat object (`{\"concrete_m3\": {...}, \"rebar_t\": {...}}`).\nWe model it as `RootModel`-equivalent via `model_config(extra=\"allow\")`\n+ a single `__root__`-style `entries` dict. Pydantic v2 recommends\n`RootModel` for free-form roots; using a wrapper class keeps the import\nsurface uniform with the rest of this module.",
        +                "properties": {
        +                  "entries": {
        +                    "additionalProperties": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.4 — single material/work-class total entry.",
        +                      "properties": {
        +                        "quantity": {
        +                          "minimum": 0,
        +                          "type": "number"
        +                        },
        +                        "unit": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "quantity",
        +                        "unit"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "object"
        +                  }
        +                },
        +                "type": "object"
        +              },
        +              "warnings": {
        +                "items": {
        +                  "additionalProperties": false,
        +                  "description": "Schema § 1.8 — a non-fatal geometry advisory (56th-fire T2).\n\nThe wire projection of the engine's `core.GeometryWarning`. Advisory only:\na warning NEVER changes a measured quantity — it flags geometry that is\nvalid but likely a mistake (e.g. a stale dependent-height default). Present\non BOTH tiers — a correctness/safety signal, not a paid feature.",
        +                  "properties": {
        +                    "affected_params": {
        +                      "items": {
        +                        "type": "string"
        +                      },
        +                      "type": "array"
        +                    },
        +                    "code": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "detail": {
        +                      "additionalProperties": {
        +                        "type": "number"
        +                      },
        +                      "type": "object"
        +                    },
        +                    "message": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "severity": {
        +                      "enum": [
        +                        "info",
        +                        "advisory",
        +                        "caution"
        +                      ],
        +                      "type": "string"
        +                    }
        +                  },
        +                  "required": [
        +                    "code",
        +                    "severity",
        +                    "message"
        +                  ],
        +                  "type": "object"
        +                },
        +                "type": "array"
        +              }
        +            },
        +            "required": [
        +              "assembly_slug",
        +              "standard",
        +              "parameters_used",
        +              "boq_rows",
        +              "totals_summary",
        +              "text_summary"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      },
        +      "error": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        +            "properties": {
        +              "code": {
        +                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        +                "enum": [
        +                  "RATE_LIMIT_EXCEEDED",
        +                  "TIER_INSUFFICIENT",
        +                  "INVALID_INPUT",
        +                  "SCHEMA_VERSION_MISMATCH",
        +                  "SCHEMA_INVARIANT_VIOLATION",
        +                  "UPSTREAM_TIMEOUT",
        +                  "BACKEND_FAILURE",
        +                  "IP_BLOCKED",
        +                  "RESOURCE_NOT_FOUND",
        +                  "RENDER_FAILURE",
        +                  "OCR_LOW_CONFIDENCE",
        +                  "MANUAL_REVIEW_REQUIRED",
        +                  "ACCEPTANCE_REQUIRED",
        +                  "INVALID_TOKEN"
        +                ],
        +                "type": "string"
        +              },
        +              "details": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "message": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "recoverable": {
        +                "type": "boolean"
        +              },
        +              "retry_after_seconds": {
        +                "anyOf": [
        +                  {
        +                    "minimum": 0,
        +                    "type": "integer"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              }
        +            },
        +            "required": [
        +              "code",
        +              "message",
        +              "recoverable"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      }
        +    },
        +    "required": [
        +      "_meta"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "_meta": {
        +        "additionalProperties": false,
        +        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        +        "properties": {
        +          "deliverables": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        +                "properties": {
        +                  "docx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "dxf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "expires_at": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  },
        +                  "pdf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "xlsx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "expires_at"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "document_id": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "issued_at": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "rate_limit_remaining": {
        +            "anyOf": [
        +              {
        +                "minimum": 0,
        +                "type": "integer"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "request_id": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "schema_version": {
        +            "const": "1.0.0",
        +            "default": "1.0.0",
        +            "type": "string"
        +          },
        +          "scope_boundary": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        +                "properties": {
        +                  "not_in_scope": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "produced": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "recommended_companions": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "type": "string"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "produced",
        +                  "not_in_scope"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tier": {
        +            "enum": [
        +              "free",
        +              "paid"
        +            ],
        +            "type": "string"
        +          },
        +          "tier_upgrade": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        +                "properties": {
        +                  "available_tiers": {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        +                      "properties": {
        +                        "billing": {
        +                          "enum": [
        +                            "one_off",
        +                            "monthly",
        +                            "annual"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "currency": {
        +                          "enum": [
        +                            "GBP",
        +                            "SGD",
        +                            "EUR",
        +                            "USD",
        +                            "CAD",
        +                            "AUD",
        +                            "NZD",
        +                            "MYR"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "display_name": {
        +                          "type": "string"
        +                        },
        +                        "price_local": {
        +                          "type": "number"
        +                        },
        +                        "tier_slug": {
        +                          "enum": [
        +                            "7_day_pass",
        +                            "solo",
        +                            "studio",
        +                            "practice"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "unlock_summary": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "tier_slug",
        +                        "display_name",
        +                        "price_local",
        +                        "currency",
        +                        "billing",
        +                        "unlock_summary"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "current_tier": {
        +                    "const": "free",
        +                    "default": "free",
        +                    "type": "string"
        +                  },
        +                  "pass_credit": {
        +                    "anyOf": [
        +                      {
        +                        "additionalProperties": false,
        +                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        +                        "properties": {
        +                          "amount_local": {
        +                            "type": "number"
        +                          },
        +                          "applies_to": {
        +                            "const": "solo_first_month",
        +                            "default": "solo_first_month",
        +                            "type": "string"
        +                          },
        +                          "currency": {
        +                            "type": "string"
        +                          },
        +                          "redeemable_until": {
        +                            "type": "string"
        +                          }
        +                        },
        +                        "required": [
        +                          "amount_local",
        +                          "currency",
        +                          "redeemable_until"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "pricing_url": {
        +                    "default": "https://civilquants.com/pricing",
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "available_tiers"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tos_url": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "upgrade_hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "warranty_disclaimer": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          }
        +        },
        +        "required": [
        +          "request_id",
        +          "issued_at",
        +          "tier"
        +        ],
        +        "type": "object"
        +      },
        +      "data": {
        +        "default": null,
        +        "title": "Data"
        +      },
        +      "error": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        +            "properties": {
        +              "code": {
        +                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        +                "enum": [
        +                  "RATE_LIMIT_EXCEEDED",
        +                  "TIER_INSUFFICIENT",
        +                  "INVALID_INPUT",
        +                  "SCHEMA_VERSION_MISMATCH",
        +                  "SCHEMA_INVARIANT_VIOLATION",
        +                  "UPSTREAM_TIMEOUT",
        +                  "BACKEND_FAILURE",
        +                  "IP_BLOCKED",
        +                  "RESOURCE_NOT_FOUND",
        +                  "RENDER_FAILURE",
        +                  "OCR_LOW_CONFIDENCE",
        +                  "MANUAL_REVIEW_REQUIRED",
        +                  "ACCEPTANCE_REQUIRED",
        +                  "INVALID_TOKEN"
        +                ],
        +                "type": "string"
        +              },
        +              "details": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "message": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "recoverable": {
        +                "type": "boolean"
        +              },
        +              "retry_after_seconds": {
        +                "anyOf": [
        +                  {
        +                    "minimum": 0,
        +                    "type": "integer"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              }
        +            },
        +            "required": [
        +              "code",
        +              "message",
        +              "recoverable"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      }
        +    },
        +    "required": [
        +      "_meta"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedcompute_soil_nailed_slope1 field changed
      • changedOutput schema / properties / result / anyOf
        Previous value: -[
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "_meta": {
        -        "additionalProperties": false,
        -        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        -        "properties": {
        -          "deliverables": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        -                "properties": {
        -                  "docx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "dxf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "expires_at": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  },
        -                  "pdf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "xlsx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "expires_at"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "document_id": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "issued_at": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "rate_limit_remaining": {
        -            "anyOf": [
        -              {
        -                "minimum": 0,
        -                "type": "integer"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "request_id": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "schema_version": {
        -            "const": "1.0.0",
        -            "default": "1.0.0",
        -            "type": "string"
        -          },
        -          "scope_boundary": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        -                "properties": {
        -                  "not_in_scope": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "produced": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "recommended_companions": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "type": "string"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "produced",
        -                  "not_in_scope"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tier": {
        -            "enum": [
        -              "free",
        -              "paid"
        -            ],
        -            "type": "string"
        -          },
        -          "tier_upgrade": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        -                "properties": {
        -                  "available_tiers": {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        -                      "properties": {
        -                        "billing": {
        -                          "enum": [
        -                            "one_off",
        -                            "monthly",
        -                            "annual"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "currency": {
        -                          "enum": [
        -                            "GBP",
        -                            "SGD",
        -                            "EUR",
        -                            "USD",
        -                            "CAD",
        -                            "AUD",
        -                            "NZD",
        -                            "MYR"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "display_name": {
        -                          "type": "string"
        -                        },
        -                        "price_local": {
        -                          "type": "number"
        -                        },
        -                        "tier_slug": {
        -                          "enum": [
        -                            "7_day_pass",
        -                            "solo",
        -                            "studio",
        -                            "practice"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "unlock_summary": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "tier_slug",
        -                        "display_name",
        -                        "price_local",
        -                        "currency",
        -                        "billing",
        -                        "unlock_summary"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "current_tier": {
        -                    "const": "free",
        -                    "default": "free",
        -                    "type": "string"
        -                  },
        -                  "pass_credit": {
        -                    "anyOf": [
        -                      {
        -                        "additionalProperties": false,
        -                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        -                        "properties": {
        -                          "amount_local": {
        -                            "type": "number"
        -                          },
        -                          "applies_to": {
        -                            "const": "solo_first_month",
        -                            "default": "solo_first_month",
        -                            "type": "string"
        -                          },
        -                          "currency": {
        -                            "type": "string"
        -                          },
        -                          "redeemable_until": {
        -                            "type": "string"
        -                          }
        -                        },
        -                        "required": [
        -                          "amount_local",
        -                          "currency",
        -                          "redeemable_until"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "pricing_url": {
        -                    "default": "https://civilquants.com/pricing",
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "available_tiers"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tos_url": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "upgrade_hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "warranty_disclaimer": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          }
        -        },
        -        "required": [
        -          "request_id",
        -          "issued_at",
        -          "tier"
        -        ],
        -        "type": "object"
        -      },
        -      "data": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Schema § 1.1 — the typed payload returned inside `MCPResponse[ComputeResult]`.\n\nFree-tier responses MUST omit `drawings` and `audit_trail` (the bridge\nenforces this); paid-tier responses populate both. `text_summary` is\nbounded to 2000 chars — keeps the LLM-facing summary token-cheap and\nforces longer narrative into BoQ row descriptions where it belongs.",
        -            "properties": {
        -              "assembly_slug": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "audit_trail": {
        -                "anyOf": [
        -                  {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.7 — paid-tier audit-trail entry.\n\nOne entry per BoQ row; `boq_row_index` ties to the row position in\n`ComputeResult.boq_rows`. `derivation` is the human-readable formula\nwalk-through; `formula` is the optional formal expression.",
        -                      "properties": {
        -                        "boq_row_index": {
        -                          "minimum": 0,
        -                          "type": "integer"
        -                        },
        -                        "derivation": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "formula": {
        -                          "anyOf": [
        -                            {
        -                              "type": "string"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ],
        -                          "default": null
        -                        },
        -                        "id": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "parameters_referenced": {
        -                          "items": {
        -                            "type": "string"
        -                          },
        -                          "type": "array"
        -                        }
        -                      },
        -                      "required": [
        -                        "id",
        -                        "boq_row_index",
        -                        "derivation"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "boq_rows": {
        -                "items": {
        -                  "additionalProperties": false,
        -                  "description": "Schema § 1.3 — a single bill row in the requested standard's format.\n\n`description` is the non-verbatim functional description per spec § 13.9 /\n§ 15 invariant — NEVER reproduces a standard's verbatim clause text.\n`rate` / `amount` ship null because rates are commodity data the customer\nowns; the engine's job is the measurement, not the pricing.",
        -                  "properties": {
        -                    "amount": {
        -                      "anyOf": [
        -                        {
        -                          "type": "number"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "attribution": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "audit_id": {
        -                      "anyOf": [
        -                        {
        -                          "type": "string"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "description": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "quantity": {
        -                      "minimum": 0,
        -                      "type": "number"
        -                    },
        -                    "rate": {
        -                      "anyOf": [
        -                        {
        -                          "type": "number"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "unit": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "work_section": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    }
        -                  },
        -                  "required": [
        -                    "work_section",
        -                    "description",
        -                    "quantity",
        -                    "unit",
        -                    "attribution"
        -                  ],
        -                  "type": "object"
        -                },
        -                "type": "array"
        -              },
        -              "drawings": {
        -                "anyOf": [
        -                  {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.6 — paid-tier drawing artefact pointer.\n\n`url` is an R2-signed URL; expiry is carried in `_meta.deliverables.expires_at`\non the envelope (not duplicated here). `layers` is DXF-only; PDF/SVG\ncallers omit it.",
        -                      "properties": {
        -                        "drawing_type": {
        -                          "enum": [
        -                            "section",
        -                            "plan",
        -                            "elevation",
        -                            "isometric",
        -                            "detail"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "format": {
        -                          "enum": [
        -                            "DXF",
        -                            "PDF",
        -                            "SVG"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "layers": {
        -                          "anyOf": [
        -                            {
        -                              "items": {
        -                                "type": "string"
        -                              },
        -                              "type": "array"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ],
        -                          "default": null
        -                        },
        -                        "scale": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "sheet_size": {
        -                          "enum": [
        -                            "A1",
        -                            "A2",
        -                            "A3",
        -                            "A4"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "url": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "drawing_type",
        -                        "format",
        -                        "url",
        -                        "sheet_size",
        -                        "scale"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "parameters_used": {
        -                "additionalProperties": false,
        -                "description": "Schema § 1.2 — the parameter snapshot the engine actually used.\n\nSplits user-supplied values from engine defaults so customers can see\nwhich numbers came from them and which the engine filled in. Every\ndefaulted parameter SHOULD have a corresponding entry in `assumptions`\n— the bridge layer enforces this when wrapping engine output.",
        -                "properties": {
        -                  "assumptions": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "engine_defaults": {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  "resolved_from_description": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "additionalProperties": false,
        -                          "description": "Schema § 1.2 — a parameter resolved by the forgiving-input layer.\n\nPopulated by the Track B-Forgiving Haiku-4.5 resolution pass; until that\nlayer lands, instances are constructed only by tests. `source` distinguishes\nthe resolution path so customers can audit which fields were inferred.",
        -                          "properties": {
        -                            "confidence": {
        -                              "anyOf": [
        -                                {
        -                                  "enum": [
        -                                    "high",
        -                                    "medium",
        -                                    "low"
        -                                  ],
        -                                  "type": "string"
        -                                },
        -                                {
        -                                  "type": "null"
        -                                }
        -                              ],
        -                              "default": null
        -                            },
        -                            "field_name": {
        -                              "minLength": 1,
        -                              "type": "string"
        -                            },
        -                            "resolved_value": {},
        -                            "source": {
        -                              "enum": [
        -                                "description_field",
        -                                "haiku_resolution",
        -                                "engine_default"
        -                              ],
        -                              "type": "string"
        -                            }
        -                          },
        -                          "required": [
        -                            "field_name",
        -                            "resolved_value",
        -                            "source"
        -                          ],
        -                          "type": "object"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "user_supplied": {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  }
        -                },
        -                "type": "object"
        -              },
        -              "standard": {
        -                "enum": [
        -                  "CESMM4",
        -                  "NRM2",
        -                  "SMM7",
        -                  "MMHW"
        -                ],
        -                "type": "string"
        -              },
        -              "text_summary": {
        -                "maxLength": 2000,
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "totals_summary": {
        -                "additionalProperties": false,
        -                "description": "Schema § 1.4 — totals_summary as a typed wrapper around the free-form dict.\n\nWire shape is a flat object (`{\"concrete_m3\": {...}, \"rebar_t\": {...}}`).\nWe model it as `RootModel`-equivalent via `model_config(extra=\"allow\")`\n+ a single `__root__`-style `entries` dict. Pydantic v2 recommends\n`RootModel` for free-form roots; using a wrapper class keeps the import\nsurface uniform with the rest of this module.",
        -                "properties": {
        -                  "entries": {
        -                    "additionalProperties": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.4 — single material/work-class total entry.",
        -                      "properties": {
        -                        "quantity": {
        -                          "minimum": 0,
        -                          "type": "number"
        -                        },
        -                        "unit": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "quantity",
        -                        "unit"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "object"
        -                  }
        -                },
        -                "type": "object"
        -              }
        -            },
        -            "required": [
        -              "assembly_slug",
        -              "standard",
        -              "parameters_used",
        -              "boq_rows",
        -              "totals_summary",
        -              "text_summary"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      },
        -      "error": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        -            "properties": {
        -              "code": {
        -                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        -                "enum": [
        -                  "RATE_LIMIT_EXCEEDED",
        -                  "TIER_INSUFFICIENT",
        -                  "INVALID_INPUT",
        -                  "SCHEMA_VERSION_MISMATCH",
        -                  "SCHEMA_INVARIANT_VIOLATION",
        -                  "UPSTREAM_TIMEOUT",
        -                  "BACKEND_FAILURE",
        -                  "IP_BLOCKED",
        -                  "RESOURCE_NOT_FOUND",
        -                  "RENDER_FAILURE",
        -                  "OCR_LOW_CONFIDENCE",
        -                  "MANUAL_REVIEW_REQUIRED",
        -                  "ACCEPTANCE_REQUIRED",
        -                  "INVALID_TOKEN"
        -                ],
        -                "type": "string"
        -              },
        -              "details": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "message": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "recoverable": {
        -                "type": "boolean"
        -              },
        -              "retry_after_seconds": {
        -                "anyOf": [
        -                  {
        -                    "minimum": 0,
        -                    "type": "integer"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              }
        -            },
        -            "required": [
        -              "code",
        -              "message",
        -              "recoverable"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      }
        -    },
        -    "required": [
        -      "_meta"
        -    ],
        -    "type": "object"
        -  },
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "_meta": {
        -        "additionalProperties": false,
        -        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        -        "properties": {
        -          "deliverables": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        -                "properties": {
        -                  "docx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "dxf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "expires_at": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  },
        -                  "pdf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "xlsx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "expires_at"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "document_id": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "issued_at": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "rate_limit_remaining": {
        -            "anyOf": [
        -              {
        -                "minimum": 0,
        -                "type": "integer"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "request_id": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "schema_version": {
        -            "const": "1.0.0",
        -            "default": "1.0.0",
        -            "type": "string"
        -          },
        -          "scope_boundary": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        -                "properties": {
        -                  "not_in_scope": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "produced": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "recommended_companions": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "type": "string"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "produced",
        -                  "not_in_scope"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tier": {
        -            "enum": [
        -              "free",
        -              "paid"
        -            ],
        -            "type": "string"
        -          },
        -          "tier_upgrade": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        -                "properties": {
        -                  "available_tiers": {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        -                      "properties": {
        -                        "billing": {
        -                          "enum": [
        -                            "one_off",
        -                            "monthly",
        -                            "annual"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "currency": {
        -                          "enum": [
        -                            "GBP",
        -                            "SGD",
        -                            "EUR",
        -                            "USD",
        -                            "CAD",
        -                            "AUD",
        -                            "NZD",
        -                            "MYR"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "display_name": {
        -                          "type": "string"
        -                        },
        -                        "price_local": {
        -                          "type": "number"
        -                        },
        -                        "tier_slug": {
        -                          "enum": [
        -                            "7_day_pass",
        -                            "solo",
        -                            "studio",
        -                            "practice"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "unlock_summary": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "tier_slug",
        -                        "display_name",
        -                        "price_local",
        -                        "currency",
        -                        "billing",
        -                        "unlock_summary"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "current_tier": {
        -                    "const": "free",
        -                    "default": "free",
        -                    "type": "string"
        -                  },
        -                  "pass_credit": {
        -                    "anyOf": [
        -                      {
        -                        "additionalProperties": false,
        -                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        -                        "properties": {
        -                          "amount_local": {
        -                            "type": "number"
        -                          },
        -                          "applies_to": {
        -                            "const": "solo_first_month",
        -                            "default": "solo_first_month",
        -                            "type": "string"
        -                          },
        -                          "currency": {
        -                            "type": "string"
        -                          },
        -                          "redeemable_until": {
        -                            "type": "string"
        -                          }
        -                        },
        -                        "required": [
        -                          "amount_local",
        -                          "currency",
        -                          "redeemable_until"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "pricing_url": {
        -                    "default": "https://civilquants.com/pricing",
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "available_tiers"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tos_url": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "upgrade_hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "warranty_disclaimer": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          }
        -        },
        -        "required": [
        -          "request_id",
        -          "issued_at",
        -          "tier"
        -        ],
        -        "type": "object"
        -      },
        -      "data": {
        -        "default": null,
        -        "title": "Data"
        -      },
        -      "error": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        -            "properties": {
        -              "code": {
        -                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        -                "enum": [
        -                  "RATE_LIMIT_EXCEEDED",
        -                  "TIER_INSUFFICIENT",
        -                  "INVALID_INPUT",
        -                  "SCHEMA_VERSION_MISMATCH",
        -                  "SCHEMA_INVARIANT_VIOLATION",
        -                  "UPSTREAM_TIMEOUT",
        -                  "BACKEND_FAILURE",
        -                  "IP_BLOCKED",
        -                  "RESOURCE_NOT_FOUND",
        -                  "RENDER_FAILURE",
        -                  "OCR_LOW_CONFIDENCE",
        -                  "MANUAL_REVIEW_REQUIRED",
        -                  "ACCEPTANCE_REQUIRED",
        -                  "INVALID_TOKEN"
        -                ],
        -                "type": "string"
        -              },
        -              "details": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "message": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "recoverable": {
        -                "type": "boolean"
        -              },
        -              "retry_after_seconds": {
        -                "anyOf": [
        -                  {
        -                    "minimum": 0,
        -                    "type": "integer"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              }
        -            },
        -            "required": [
        -              "code",
        -              "message",
        -              "recoverable"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      }
        -    },
        -    "required": [
        -      "_meta"
        -    ],
        -    "type": "object"
        -  }
        -]New value: +[
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "_meta": {
        +        "additionalProperties": false,
        +        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        +        "properties": {
        +          "deliverables": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        +                "properties": {
        +                  "docx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "dxf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "expires_at": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  },
        +                  "pdf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "xlsx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "expires_at"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "document_id": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "issued_at": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "rate_limit_remaining": {
        +            "anyOf": [
        +              {
        +                "minimum": 0,
        +                "type": "integer"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "request_id": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "schema_version": {
        +            "const": "1.0.0",
        +            "default": "1.0.0",
        +            "type": "string"
        +          },
        +          "scope_boundary": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        +                "properties": {
        +                  "not_in_scope": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "produced": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "recommended_companions": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "type": "string"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "produced",
        +                  "not_in_scope"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tier": {
        +            "enum": [
        +              "free",
        +              "paid"
        +            ],
        +            "type": "string"
        +          },
        +          "tier_upgrade": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        +                "properties": {
        +                  "available_tiers": {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        +                      "properties": {
        +                        "billing": {
        +                          "enum": [
        +                            "one_off",
        +                            "monthly",
        +                            "annual"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "currency": {
        +                          "enum": [
        +                            "GBP",
        +                            "SGD",
        +                            "EUR",
        +                            "USD",
        +                            "CAD",
        +                            "AUD",
        +                            "NZD",
        +                            "MYR"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "display_name": {
        +                          "type": "string"
        +                        },
        +                        "price_local": {
        +                          "type": "number"
        +                        },
        +                        "tier_slug": {
        +                          "enum": [
        +                            "7_day_pass",
        +                            "solo",
        +                            "studio",
        +                            "practice"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "unlock_summary": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "tier_slug",
        +                        "display_name",
        +                        "price_local",
        +                        "currency",
        +                        "billing",
        +                        "unlock_summary"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "current_tier": {
        +                    "const": "free",
        +                    "default": "free",
        +                    "type": "string"
        +                  },
        +                  "pass_credit": {
        +                    "anyOf": [
        +                      {
        +                        "additionalProperties": false,
        +                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        +                        "properties": {
        +                          "amount_local": {
        +                            "type": "number"
        +                          },
        +                          "applies_to": {
        +                            "const": "solo_first_month",
        +                            "default": "solo_first_month",
        +                            "type": "string"
        +                          },
        +                          "currency": {
        +                            "type": "string"
        +                          },
        +                          "redeemable_until": {
        +                            "type": "string"
        +                          }
        +                        },
        +                        "required": [
        +                          "amount_local",
        +                          "currency",
        +                          "redeemable_until"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "pricing_url": {
        +                    "default": "https://civilquants.com/pricing",
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "available_tiers"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tos_url": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "upgrade_hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "warranty_disclaimer": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          }
        +        },
        +        "required": [
        +          "request_id",
        +          "issued_at",
        +          "tier"
        +        ],
        +        "type": "object"
        +      },
        +      "data": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Schema § 1.1 — the typed payload returned inside `MCPResponse[ComputeResult]`.\n\nFree-tier responses MUST omit `drawings` and `audit_trail` (the bridge\nenforces this); paid-tier responses populate both. `text_summary` is\nbounded to 2000 chars — keeps the LLM-facing summary token-cheap and\nforces longer narrative into BoQ row descriptions where it belongs.\n`warnings` is the non-fatal geometry advisory list (both tiers).",
        +            "properties": {
        +              "assembly_slug": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "audit_trail": {
        +                "anyOf": [
        +                  {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.7 — paid-tier audit-trail entry.\n\nOne entry per BoQ row; `boq_row_index` ties to the row position in\n`ComputeResult.boq_rows`. `derivation` is the human-readable formula\nwalk-through; `formula` is the optional formal expression.",
        +                      "properties": {
        +                        "boq_row_index": {
        +                          "minimum": 0,
        +                          "type": "integer"
        +                        },
        +                        "derivation": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "formula": {
        +                          "anyOf": [
        +                            {
        +                              "type": "string"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ],
        +                          "default": null
        +                        },
        +                        "id": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "parameters_referenced": {
        +                          "items": {
        +                            "type": "string"
        +                          },
        +                          "type": "array"
        +                        }
        +                      },
        +                      "required": [
        +                        "id",
        +                        "boq_row_index",
        +                        "derivation"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "boq_rows": {
        +                "items": {
        +                  "additionalProperties": false,
        +                  "description": "Schema § 1.3 — a single bill row in the requested standard's format.\n\n`description` is the non-verbatim functional description per spec § 13.9 /\n§ 15 invariant — NEVER reproduces a standard's verbatim clause text.\n`rate` / `amount` ship null because rates are commodity data the customer\nowns; the engine's job is the measurement, not the pricing.",
        +                  "properties": {
        +                    "amount": {
        +                      "anyOf": [
        +                        {
        +                          "type": "number"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "attribution": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "audit_id": {
        +                      "anyOf": [
        +                        {
        +                          "type": "string"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "description": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "quantity": {
        +                      "minimum": 0,
        +                      "type": "number"
        +                    },
        +                    "rate": {
        +                      "anyOf": [
        +                        {
        +                          "type": "number"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "unit": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "work_section": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    }
        +                  },
        +                  "required": [
        +                    "work_section",
        +                    "description",
        +                    "quantity",
        +                    "unit",
        +                    "attribution"
        +                  ],
        +                  "type": "object"
        +                },
        +                "type": "array"
        +              },
        +              "drawings": {
        +                "anyOf": [
        +                  {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.6 — paid-tier drawing artefact pointer.\n\n`url` is an R2-signed URL; expiry is carried in `_meta.deliverables.expires_at`\non the envelope (not duplicated here). `layers` is DXF-only; PDF/SVG\ncallers omit it.",
        +                      "properties": {
        +                        "drawing_type": {
        +                          "enum": [
        +                            "section",
        +                            "plan",
        +                            "elevation",
        +                            "isometric",
        +                            "detail"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "format": {
        +                          "enum": [
        +                            "DXF",
        +                            "PDF",
        +                            "SVG"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "layers": {
        +                          "anyOf": [
        +                            {
        +                              "items": {
        +                                "type": "string"
        +                              },
        +                              "type": "array"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ],
        +                          "default": null
        +                        },
        +                        "scale": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "sheet_size": {
        +                          "enum": [
        +                            "A1",
        +                            "A2",
        +                            "A3",
        +                            "A4"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "url": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "drawing_type",
        +                        "format",
        +                        "url",
        +                        "sheet_size",
        +                        "scale"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "parameters_used": {
        +                "additionalProperties": false,
        +                "description": "Schema § 1.2 — the parameter snapshot the engine actually used.\n\nSplits user-supplied values from engine defaults so customers can see\nwhich numbers came from them and which the engine filled in. Every\ndefaulted parameter SHOULD have a corresponding entry in `assumptions`\n— the bridge layer enforces this when wrapping engine output.",
        +                "properties": {
        +                  "assumptions": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "engine_defaults": {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  "resolved_from_description": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "additionalProperties": false,
        +                          "description": "Schema § 1.2 — a parameter resolved by the forgiving-input layer.\n\nPopulated by the Track B-Forgiving Haiku-4.5 resolution pass; until that\nlayer lands, instances are constructed only by tests. `source` distinguishes\nthe resolution path so customers can audit which fields were inferred.",
        +                          "properties": {
        +                            "confidence": {
        +                              "anyOf": [
        +                                {
        +                                  "enum": [
        +                                    "high",
        +                                    "medium",
        +                                    "low"
        +                                  ],
        +                                  "type": "string"
        +                                },
        +                                {
        +                                  "type": "null"
        +                                }
        +                              ],
        +                              "default": null
        +                            },
        +                            "field_name": {
        +                              "minLength": 1,
        +                              "type": "string"
        +                            },
        +                            "resolved_value": {},
        +                            "source": {
        +                              "enum": [
        +                                "description_field",
        +                                "haiku_resolution",
        +                                "engine_default"
        +                              ],
        +                              "type": "string"
        +                            }
        +                          },
        +                          "required": [
        +                            "field_name",
        +                            "resolved_value",
        +                            "source"
        +                          ],
        +                          "type": "object"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "user_supplied": {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  }
        +                },
        +                "type": "object"
        +              },
        +              "standard": {
        +                "enum": [
        +                  "CESMM4",
        +                  "NRM2",
        +                  "SMM7",
        +                  "MMHW"
        +                ],
        +                "type": "string"
        +              },
        +              "text_summary": {
        +                "maxLength": 2000,
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "totals_summary": {
        +                "additionalProperties": false,
        +                "description": "Schema § 1.4 — totals_summary as a typed wrapper around the free-form dict.\n\nWire shape is a flat object (`{\"concrete_m3\": {...}, \"rebar_t\": {...}}`).\nWe model it as `RootModel`-equivalent via `model_config(extra=\"allow\")`\n+ a single `__root__`-style `entries` dict. Pydantic v2 recommends\n`RootModel` for free-form roots; using a wrapper class keeps the import\nsurface uniform with the rest of this module.",
        +                "properties": {
        +                  "entries": {
        +                    "additionalProperties": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.4 — single material/work-class total entry.",
        +                      "properties": {
        +                        "quantity": {
        +                          "minimum": 0,
        +                          "type": "number"
        +                        },
        +                        "unit": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "quantity",
        +                        "unit"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "object"
        +                  }
        +                },
        +                "type": "object"
        +              },
        +              "warnings": {
        +                "items": {
        +                  "additionalProperties": false,
        +                  "description": "Schema § 1.8 — a non-fatal geometry advisory (56th-fire T2).\n\nThe wire projection of the engine's `core.GeometryWarning`. Advisory only:\na warning NEVER changes a measured quantity — it flags geometry that is\nvalid but likely a mistake (e.g. a stale dependent-height default). Present\non BOTH tiers — a correctness/safety signal, not a paid feature.",
        +                  "properties": {
        +                    "affected_params": {
        +                      "items": {
        +                        "type": "string"
        +                      },
        +                      "type": "array"
        +                    },
        +                    "code": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "detail": {
        +                      "additionalProperties": {
        +                        "type": "number"
        +                      },
        +                      "type": "object"
        +                    },
        +                    "message": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "severity": {
        +                      "enum": [
        +                        "info",
        +                        "advisory",
        +                        "caution"
        +                      ],
        +                      "type": "string"
        +                    }
        +                  },
        +                  "required": [
        +                    "code",
        +                    "severity",
        +                    "message"
        +                  ],
        +                  "type": "object"
        +                },
        +                "type": "array"
        +              }
        +            },
        +            "required": [
        +              "assembly_slug",
        +              "standard",
        +              "parameters_used",
        +              "boq_rows",
        +              "totals_summary",
        +              "text_summary"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      },
        +      "error": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        +            "properties": {
        +              "code": {
        +                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        +                "enum": [
        +                  "RATE_LIMIT_EXCEEDED",
        +                  "TIER_INSUFFICIENT",
        +                  "INVALID_INPUT",
        +                  "SCHEMA_VERSION_MISMATCH",
        +                  "SCHEMA_INVARIANT_VIOLATION",
        +                  "UPSTREAM_TIMEOUT",
        +                  "BACKEND_FAILURE",
        +                  "IP_BLOCKED",
        +                  "RESOURCE_NOT_FOUND",
        +                  "RENDER_FAILURE",
        +                  "OCR_LOW_CONFIDENCE",
        +                  "MANUAL_REVIEW_REQUIRED",
        +                  "ACCEPTANCE_REQUIRED",
        +                  "INVALID_TOKEN"
        +                ],
        +                "type": "string"
        +              },
        +              "details": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "message": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "recoverable": {
        +                "type": "boolean"
        +              },
        +              "retry_after_seconds": {
        +                "anyOf": [
        +                  {
        +                    "minimum": 0,
        +                    "type": "integer"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              }
        +            },
        +            "required": [
        +              "code",
        +              "message",
        +              "recoverable"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      }
        +    },
        +    "required": [
        +      "_meta"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "_meta": {
        +        "additionalProperties": false,
        +        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        +        "properties": {
        +          "deliverables": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        +                "properties": {
        +                  "docx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "dxf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "expires_at": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  },
        +                  "pdf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "xlsx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "expires_at"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "document_id": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "issued_at": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "rate_limit_remaining": {
        +            "anyOf": [
        +              {
        +                "minimum": 0,
        +                "type": "integer"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "request_id": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "schema_version": {
        +            "const": "1.0.0",
        +            "default": "1.0.0",
        +            "type": "string"
        +          },
        +          "scope_boundary": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        +                "properties": {
        +                  "not_in_scope": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "produced": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "recommended_companions": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "type": "string"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "produced",
        +                  "not_in_scope"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tier": {
        +            "enum": [
        +              "free",
        +              "paid"
        +            ],
        +            "type": "string"
        +          },
        +          "tier_upgrade": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        +                "properties": {
        +                  "available_tiers": {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        +                      "properties": {
        +                        "billing": {
        +                          "enum": [
        +                            "one_off",
        +                            "monthly",
        +                            "annual"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "currency": {
        +                          "enum": [
        +                            "GBP",
        +                            "SGD",
        +                            "EUR",
        +                            "USD",
        +                            "CAD",
        +                            "AUD",
        +                            "NZD",
        +                            "MYR"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "display_name": {
        +                          "type": "string"
        +                        },
        +                        "price_local": {
        +                          "type": "number"
        +                        },
        +                        "tier_slug": {
        +                          "enum": [
        +                            "7_day_pass",
        +                            "solo",
        +                            "studio",
        +                            "practice"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "unlock_summary": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "tier_slug",
        +                        "display_name",
        +                        "price_local",
        +                        "currency",
        +                        "billing",
        +                        "unlock_summary"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "current_tier": {
        +                    "const": "free",
        +                    "default": "free",
        +                    "type": "string"
        +                  },
        +                  "pass_credit": {
        +                    "anyOf": [
        +                      {
        +                        "additionalProperties": false,
        +                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        +                        "properties": {
        +                          "amount_local": {
        +                            "type": "number"
        +                          },
        +                          "applies_to": {
        +                            "const": "solo_first_month",
        +                            "default": "solo_first_month",
        +                            "type": "string"
        +                          },
        +                          "currency": {
        +                            "type": "string"
        +                          },
        +                          "redeemable_until": {
        +                            "type": "string"
        +                          }
        +                        },
        +                        "required": [
        +                          "amount_local",
        +                          "currency",
        +                          "redeemable_until"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "pricing_url": {
        +                    "default": "https://civilquants.com/pricing",
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "available_tiers"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tos_url": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "upgrade_hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "warranty_disclaimer": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          }
        +        },
        +        "required": [
        +          "request_id",
        +          "issued_at",
        +          "tier"
        +        ],
        +        "type": "object"
        +      },
        +      "data": {
        +        "default": null,
        +        "title": "Data"
        +      },
        +      "error": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        +            "properties": {
        +              "code": {
        +                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        +                "enum": [
        +                  "RATE_LIMIT_EXCEEDED",
        +                  "TIER_INSUFFICIENT",
        +                  "INVALID_INPUT",
        +                  "SCHEMA_VERSION_MISMATCH",
        +                  "SCHEMA_INVARIANT_VIOLATION",
        +                  "UPSTREAM_TIMEOUT",
        +                  "BACKEND_FAILURE",
        +                  "IP_BLOCKED",
        +                  "RESOURCE_NOT_FOUND",
        +                  "RENDER_FAILURE",
        +                  "OCR_LOW_CONFIDENCE",
        +                  "MANUAL_REVIEW_REQUIRED",
        +                  "ACCEPTANCE_REQUIRED",
        +                  "INVALID_TOKEN"
        +                ],
        +                "type": "string"
        +              },
        +              "details": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "message": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "recoverable": {
        +                "type": "boolean"
        +              },
        +              "retry_after_seconds": {
        +                "anyOf": [
        +                  {
        +                    "minimum": 0,
        +                    "type": "integer"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              }
        +            },
        +            "required": [
        +              "code",
        +              "message",
        +              "recoverable"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      }
        +    },
        +    "required": [
        +      "_meta"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedcompute_strip_foundation1 field changed
      • changedOutput schema / properties / result / anyOf
        Previous value: -[
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "_meta": {
        -        "additionalProperties": false,
        -        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        -        "properties": {
        -          "deliverables": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        -                "properties": {
        -                  "docx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "dxf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "expires_at": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  },
        -                  "pdf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "xlsx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "expires_at"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "document_id": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "issued_at": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "rate_limit_remaining": {
        -            "anyOf": [
        -              {
        -                "minimum": 0,
        -                "type": "integer"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "request_id": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "schema_version": {
        -            "const": "1.0.0",
        -            "default": "1.0.0",
        -            "type": "string"
        -          },
        -          "scope_boundary": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        -                "properties": {
        -                  "not_in_scope": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "produced": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "recommended_companions": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "type": "string"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "produced",
        -                  "not_in_scope"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tier": {
        -            "enum": [
        -              "free",
        -              "paid"
        -            ],
        -            "type": "string"
        -          },
        -          "tier_upgrade": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        -                "properties": {
        -                  "available_tiers": {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        -                      "properties": {
        -                        "billing": {
        -                          "enum": [
        -                            "one_off",
        -                            "monthly",
        -                            "annual"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "currency": {
        -                          "enum": [
        -                            "GBP",
        -                            "SGD",
        -                            "EUR",
        -                            "USD",
        -                            "CAD",
        -                            "AUD",
        -                            "NZD",
        -                            "MYR"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "display_name": {
        -                          "type": "string"
        -                        },
        -                        "price_local": {
        -                          "type": "number"
        -                        },
        -                        "tier_slug": {
        -                          "enum": [
        -                            "7_day_pass",
        -                            "solo",
        -                            "studio",
        -                            "practice"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "unlock_summary": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "tier_slug",
        -                        "display_name",
        -                        "price_local",
        -                        "currency",
        -                        "billing",
        -                        "unlock_summary"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "current_tier": {
        -                    "const": "free",
        -                    "default": "free",
        -                    "type": "string"
        -                  },
        -                  "pass_credit": {
        -                    "anyOf": [
        -                      {
        -                        "additionalProperties": false,
        -                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        -                        "properties": {
        -                          "amount_local": {
        -                            "type": "number"
        -                          },
        -                          "applies_to": {
        -                            "const": "solo_first_month",
        -                            "default": "solo_first_month",
        -                            "type": "string"
        -                          },
        -                          "currency": {
        -                            "type": "string"
        -                          },
        -                          "redeemable_until": {
        -                            "type": "string"
        -                          }
        -                        },
        -                        "required": [
        -                          "amount_local",
        -                          "currency",
        -                          "redeemable_until"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "pricing_url": {
        -                    "default": "https://civilquants.com/pricing",
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "available_tiers"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tos_url": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "upgrade_hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "warranty_disclaimer": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          }
        -        },
        -        "required": [
        -          "request_id",
        -          "issued_at",
        -          "tier"
        -        ],
        -        "type": "object"
        -      },
        -      "data": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Schema § 1.1 — the typed payload returned inside `MCPResponse[ComputeResult]`.\n\nFree-tier responses MUST omit `drawings` and `audit_trail` (the bridge\nenforces this); paid-tier responses populate both. `text_summary` is\nbounded to 2000 chars — keeps the LLM-facing summary token-cheap and\nforces longer narrative into BoQ row descriptions where it belongs.",
        -            "properties": {
        -              "assembly_slug": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "audit_trail": {
        -                "anyOf": [
        -                  {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.7 — paid-tier audit-trail entry.\n\nOne entry per BoQ row; `boq_row_index` ties to the row position in\n`ComputeResult.boq_rows`. `derivation` is the human-readable formula\nwalk-through; `formula` is the optional formal expression.",
        -                      "properties": {
        -                        "boq_row_index": {
        -                          "minimum": 0,
        -                          "type": "integer"
        -                        },
        -                        "derivation": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "formula": {
        -                          "anyOf": [
        -                            {
        -                              "type": "string"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ],
        -                          "default": null
        -                        },
        -                        "id": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "parameters_referenced": {
        -                          "items": {
        -                            "type": "string"
        -                          },
        -                          "type": "array"
        -                        }
        -                      },
        -                      "required": [
        -                        "id",
        -                        "boq_row_index",
        -                        "derivation"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "boq_rows": {
        -                "items": {
        -                  "additionalProperties": false,
        -                  "description": "Schema § 1.3 — a single bill row in the requested standard's format.\n\n`description` is the non-verbatim functional description per spec § 13.9 /\n§ 15 invariant — NEVER reproduces a standard's verbatim clause text.\n`rate` / `amount` ship null because rates are commodity data the customer\nowns; the engine's job is the measurement, not the pricing.",
        -                  "properties": {
        -                    "amount": {
        -                      "anyOf": [
        -                        {
        -                          "type": "number"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "attribution": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "audit_id": {
        -                      "anyOf": [
        -                        {
        -                          "type": "string"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "description": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "quantity": {
        -                      "minimum": 0,
        -                      "type": "number"
        -                    },
        -                    "rate": {
        -                      "anyOf": [
        -                        {
        -                          "type": "number"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "unit": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "work_section": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    }
        -                  },
        -                  "required": [
        -                    "work_section",
        -                    "description",
        -                    "quantity",
        -                    "unit",
        -                    "attribution"
        -                  ],
        -                  "type": "object"
        -                },
        -                "type": "array"
        -              },
        -              "drawings": {
        -                "anyOf": [
        -                  {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.6 — paid-tier drawing artefact pointer.\n\n`url` is an R2-signed URL; expiry is carried in `_meta.deliverables.expires_at`\non the envelope (not duplicated here). `layers` is DXF-only; PDF/SVG\ncallers omit it.",
        -                      "properties": {
        -                        "drawing_type": {
        -                          "enum": [
        -                            "section",
        -                            "plan",
        -                            "elevation",
        -                            "isometric",
        -                            "detail"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "format": {
        -                          "enum": [
        -                            "DXF",
        -                            "PDF",
        -                            "SVG"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "layers": {
        -                          "anyOf": [
        -                            {
        -                              "items": {
        -                                "type": "string"
        -                              },
        -                              "type": "array"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ],
        -                          "default": null
        -                        },
        -                        "scale": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "sheet_size": {
        -                          "enum": [
        -                            "A1",
        -                            "A2",
        -                            "A3",
        -                            "A4"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "url": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "drawing_type",
        -                        "format",
        -                        "url",
        -                        "sheet_size",
        -                        "scale"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "parameters_used": {
        -                "additionalProperties": false,
        -                "description": "Schema § 1.2 — the parameter snapshot the engine actually used.\n\nSplits user-supplied values from engine defaults so customers can see\nwhich numbers came from them and which the engine filled in. Every\ndefaulted parameter SHOULD have a corresponding entry in `assumptions`\n— the bridge layer enforces this when wrapping engine output.",
        -                "properties": {
        -                  "assumptions": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "engine_defaults": {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  "resolved_from_description": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "additionalProperties": false,
        -                          "description": "Schema § 1.2 — a parameter resolved by the forgiving-input layer.\n\nPopulated by the Track B-Forgiving Haiku-4.5 resolution pass; until that\nlayer lands, instances are constructed only by tests. `source` distinguishes\nthe resolution path so customers can audit which fields were inferred.",
        -                          "properties": {
        -                            "confidence": {
        -                              "anyOf": [
        -                                {
        -                                  "enum": [
        -                                    "high",
        -                                    "medium",
        -                                    "low"
        -                                  ],
        -                                  "type": "string"
        -                                },
        -                                {
        -                                  "type": "null"
        -                                }
        -                              ],
        -                              "default": null
        -                            },
        -                            "field_name": {
        -                              "minLength": 1,
        -                              "type": "string"
        -                            },
        -                            "resolved_value": {},
        -                            "source": {
        -                              "enum": [
        -                                "description_field",
        -                                "haiku_resolution",
        -                                "engine_default"
        -                              ],
        -                              "type": "string"
        -                            }
        -                          },
        -                          "required": [
        -                            "field_name",
        -                            "resolved_value",
        -                            "source"
        -                          ],
        -                          "type": "object"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "user_supplied": {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  }
        -                },
        -                "type": "object"
        -              },
        -              "standard": {
        -                "enum": [
        -                  "CESMM4",
        -                  "NRM2",
        -                  "SMM7",
        -                  "MMHW"
        -                ],
        -                "type": "string"
        -              },
        -              "text_summary": {
        -                "maxLength": 2000,
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "totals_summary": {
        -                "additionalProperties": false,
        -                "description": "Schema § 1.4 — totals_summary as a typed wrapper around the free-form dict.\n\nWire shape is a flat object (`{\"concrete_m3\": {...}, \"rebar_t\": {...}}`).\nWe model it as `RootModel`-equivalent via `model_config(extra=\"allow\")`\n+ a single `__root__`-style `entries` dict. Pydantic v2 recommends\n`RootModel` for free-form roots; using a wrapper class keeps the import\nsurface uniform with the rest of this module.",
        -                "properties": {
        -                  "entries": {
        -                    "additionalProperties": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.4 — single material/work-class total entry.",
        -                      "properties": {
        -                        "quantity": {
        -                          "minimum": 0,
        -                          "type": "number"
        -                        },
        -                        "unit": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "quantity",
        -                        "unit"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "object"
        -                  }
        -                },
        -                "type": "object"
        -              }
        -            },
        -            "required": [
        -              "assembly_slug",
        -              "standard",
        -              "parameters_used",
        -              "boq_rows",
        -              "totals_summary",
        -              "text_summary"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      },
        -      "error": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        -            "properties": {
        -              "code": {
        -                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        -                "enum": [
        -                  "RATE_LIMIT_EXCEEDED",
        -                  "TIER_INSUFFICIENT",
        -                  "INVALID_INPUT",
        -                  "SCHEMA_VERSION_MISMATCH",
        -                  "SCHEMA_INVARIANT_VIOLATION",
        -                  "UPSTREAM_TIMEOUT",
        -                  "BACKEND_FAILURE",
        -                  "IP_BLOCKED",
        -                  "RESOURCE_NOT_FOUND",
        -                  "RENDER_FAILURE",
        -                  "OCR_LOW_CONFIDENCE",
        -                  "MANUAL_REVIEW_REQUIRED",
        -                  "ACCEPTANCE_REQUIRED",
        -                  "INVALID_TOKEN"
        -                ],
        -                "type": "string"
        -              },
        -              "details": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "message": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "recoverable": {
        -                "type": "boolean"
        -              },
        -              "retry_after_seconds": {
        -                "anyOf": [
        -                  {
        -                    "minimum": 0,
        -                    "type": "integer"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              }
        -            },
        -            "required": [
        -              "code",
        -              "message",
        -              "recoverable"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      }
        -    },
        -    "required": [
        -      "_meta"
        -    ],
        -    "type": "object"
        -  },
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "_meta": {
        -        "additionalProperties": false,
        -        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        -        "properties": {
        -          "deliverables": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        -                "properties": {
        -                  "docx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "dxf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "expires_at": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  },
        -                  "pdf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "xlsx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "expires_at"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "document_id": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "issued_at": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "rate_limit_remaining": {
        -            "anyOf": [
        -              {
        -                "minimum": 0,
        -                "type": "integer"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "request_id": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "schema_version": {
        -            "const": "1.0.0",
        -            "default": "1.0.0",
        -            "type": "string"
        -          },
        -          "scope_boundary": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        -                "properties": {
        -                  "not_in_scope": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "produced": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "recommended_companions": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "type": "string"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "produced",
        -                  "not_in_scope"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tier": {
        -            "enum": [
        -              "free",
        -              "paid"
        -            ],
        -            "type": "string"
        -          },
        -          "tier_upgrade": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        -                "properties": {
        -                  "available_tiers": {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        -                      "properties": {
        -                        "billing": {
        -                          "enum": [
        -                            "one_off",
        -                            "monthly",
        -                            "annual"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "currency": {
        -                          "enum": [
        -                            "GBP",
        -                            "SGD",
        -                            "EUR",
        -                            "USD",
        -                            "CAD",
        -                            "AUD",
        -                            "NZD",
        -                            "MYR"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "display_name": {
        -                          "type": "string"
        -                        },
        -                        "price_local": {
        -                          "type": "number"
        -                        },
        -                        "tier_slug": {
        -                          "enum": [
        -                            "7_day_pass",
        -                            "solo",
        -                            "studio",
        -                            "practice"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "unlock_summary": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "tier_slug",
        -                        "display_name",
        -                        "price_local",
        -                        "currency",
        -                        "billing",
        -                        "unlock_summary"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "current_tier": {
        -                    "const": "free",
        -                    "default": "free",
        -                    "type": "string"
        -                  },
        -                  "pass_credit": {
        -                    "anyOf": [
        -                      {
        -                        "additionalProperties": false,
        -                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        -                        "properties": {
        -                          "amount_local": {
        -                            "type": "number"
        -                          },
        -                          "applies_to": {
        -                            "const": "solo_first_month",
        -                            "default": "solo_first_month",
        -                            "type": "string"
        -                          },
        -                          "currency": {
        -                            "type": "string"
        -                          },
        -                          "redeemable_until": {
        -                            "type": "string"
        -                          }
        -                        },
        -                        "required": [
        -                          "amount_local",
        -                          "currency",
        -                          "redeemable_until"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "pricing_url": {
        -                    "default": "https://civilquants.com/pricing",
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "available_tiers"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tos_url": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "upgrade_hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "warranty_disclaimer": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          }
        -        },
        -        "required": [
        -          "request_id",
        -          "issued_at",
        -          "tier"
        -        ],
        -        "type": "object"
        -      },
        -      "data": {
        -        "default": null,
        -        "title": "Data"
        -      },
        -      "error": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        -            "properties": {
        -              "code": {
        -                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        -                "enum": [
        -                  "RATE_LIMIT_EXCEEDED",
        -                  "TIER_INSUFFICIENT",
        -                  "INVALID_INPUT",
        -                  "SCHEMA_VERSION_MISMATCH",
        -                  "SCHEMA_INVARIANT_VIOLATION",
        -                  "UPSTREAM_TIMEOUT",
        -                  "BACKEND_FAILURE",
        -                  "IP_BLOCKED",
        -                  "RESOURCE_NOT_FOUND",
        -                  "RENDER_FAILURE",
        -                  "OCR_LOW_CONFIDENCE",
        -                  "MANUAL_REVIEW_REQUIRED",
        -                  "ACCEPTANCE_REQUIRED",
        -                  "INVALID_TOKEN"
        -                ],
        -                "type": "string"
        -              },
        -              "details": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "message": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "recoverable": {
        -                "type": "boolean"
        -              },
        -              "retry_after_seconds": {
        -                "anyOf": [
        -                  {
        -                    "minimum": 0,
        -                    "type": "integer"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              }
        -            },
        -            "required": [
        -              "code",
        -              "message",
        -              "recoverable"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      }
        -    },
        -    "required": [
        -      "_meta"
        -    ],
        -    "type": "object"
        -  }
        -]New value: +[
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "_meta": {
        +        "additionalProperties": false,
        +        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        +        "properties": {
        +          "deliverables": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        +                "properties": {
        +                  "docx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "dxf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "expires_at": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  },
        +                  "pdf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "xlsx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "expires_at"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "document_id": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "issued_at": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "rate_limit_remaining": {
        +            "anyOf": [
        +              {
        +                "minimum": 0,
        +                "type": "integer"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "request_id": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "schema_version": {
        +            "const": "1.0.0",
        +            "default": "1.0.0",
        +            "type": "string"
        +          },
        +          "scope_boundary": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        +                "properties": {
        +                  "not_in_scope": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "produced": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "recommended_companions": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "type": "string"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "produced",
        +                  "not_in_scope"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tier": {
        +            "enum": [
        +              "free",
        +              "paid"
        +            ],
        +            "type": "string"
        +          },
        +          "tier_upgrade": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        +                "properties": {
        +                  "available_tiers": {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        +                      "properties": {
        +                        "billing": {
        +                          "enum": [
        +                            "one_off",
        +                            "monthly",
        +                            "annual"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "currency": {
        +                          "enum": [
        +                            "GBP",
        +                            "SGD",
        +                            "EUR",
        +                            "USD",
        +                            "CAD",
        +                            "AUD",
        +                            "NZD",
        +                            "MYR"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "display_name": {
        +                          "type": "string"
        +                        },
        +                        "price_local": {
        +                          "type": "number"
        +                        },
        +                        "tier_slug": {
        +                          "enum": [
        +                            "7_day_pass",
        +                            "solo",
        +                            "studio",
        +                            "practice"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "unlock_summary": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "tier_slug",
        +                        "display_name",
        +                        "price_local",
        +                        "currency",
        +                        "billing",
        +                        "unlock_summary"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "current_tier": {
        +                    "const": "free",
        +                    "default": "free",
        +                    "type": "string"
        +                  },
        +                  "pass_credit": {
        +                    "anyOf": [
        +                      {
        +                        "additionalProperties": false,
        +                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        +                        "properties": {
        +                          "amount_local": {
        +                            "type": "number"
        +                          },
        +                          "applies_to": {
        +                            "const": "solo_first_month",
        +                            "default": "solo_first_month",
        +                            "type": "string"
        +                          },
        +                          "currency": {
        +                            "type": "string"
        +                          },
        +                          "redeemable_until": {
        +                            "type": "string"
        +                          }
        +                        },
        +                        "required": [
        +                          "amount_local",
        +                          "currency",
        +                          "redeemable_until"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "pricing_url": {
        +                    "default": "https://civilquants.com/pricing",
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "available_tiers"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tos_url": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "upgrade_hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "warranty_disclaimer": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          }
        +        },
        +        "required": [
        +          "request_id",
        +          "issued_at",
        +          "tier"
        +        ],
        +        "type": "object"
        +      },
        +      "data": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Schema § 1.1 — the typed payload returned inside `MCPResponse[ComputeResult]`.\n\nFree-tier responses MUST omit `drawings` and `audit_trail` (the bridge\nenforces this); paid-tier responses populate both. `text_summary` is\nbounded to 2000 chars — keeps the LLM-facing summary token-cheap and\nforces longer narrative into BoQ row descriptions where it belongs.\n`warnings` is the non-fatal geometry advisory list (both tiers).",
        +            "properties": {
        +              "assembly_slug": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "audit_trail": {
        +                "anyOf": [
        +                  {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.7 — paid-tier audit-trail entry.\n\nOne entry per BoQ row; `boq_row_index` ties to the row position in\n`ComputeResult.boq_rows`. `derivation` is the human-readable formula\nwalk-through; `formula` is the optional formal expression.",
        +                      "properties": {
        +                        "boq_row_index": {
        +                          "minimum": 0,
        +                          "type": "integer"
        +                        },
        +                        "derivation": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "formula": {
        +                          "anyOf": [
        +                            {
        +                              "type": "string"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ],
        +                          "default": null
        +                        },
        +                        "id": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "parameters_referenced": {
        +                          "items": {
        +                            "type": "string"
        +                          },
        +                          "type": "array"
        +                        }
        +                      },
        +                      "required": [
        +                        "id",
        +                        "boq_row_index",
        +                        "derivation"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "boq_rows": {
        +                "items": {
        +                  "additionalProperties": false,
        +                  "description": "Schema § 1.3 — a single bill row in the requested standard's format.\n\n`description` is the non-verbatim functional description per spec § 13.9 /\n§ 15 invariant — NEVER reproduces a standard's verbatim clause text.\n`rate` / `amount` ship null because rates are commodity data the customer\nowns; the engine's job is the measurement, not the pricing.",
        +                  "properties": {
        +                    "amount": {
        +                      "anyOf": [
        +                        {
        +                          "type": "number"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "attribution": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "audit_id": {
        +                      "anyOf": [
        +                        {
        +                          "type": "string"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "description": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "quantity": {
        +                      "minimum": 0,
        +                      "type": "number"
        +                    },
        +                    "rate": {
        +                      "anyOf": [
        +                        {
        +                          "type": "number"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "unit": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "work_section": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    }
        +                  },
        +                  "required": [
        +                    "work_section",
        +                    "description",
        +                    "quantity",
        +                    "unit",
        +                    "attribution"
        +                  ],
        +                  "type": "object"
        +                },
        +                "type": "array"
        +              },
        +              "drawings": {
        +                "anyOf": [
        +                  {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.6 — paid-tier drawing artefact pointer.\n\n`url` is an R2-signed URL; expiry is carried in `_meta.deliverables.expires_at`\non the envelope (not duplicated here). `layers` is DXF-only; PDF/SVG\ncallers omit it.",
        +                      "properties": {
        +                        "drawing_type": {
        +                          "enum": [
        +                            "section",
        +                            "plan",
        +                            "elevation",
        +                            "isometric",
        +                            "detail"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "format": {
        +                          "enum": [
        +                            "DXF",
        +                            "PDF",
        +                            "SVG"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "layers": {
        +                          "anyOf": [
        +                            {
        +                              "items": {
        +                                "type": "string"
        +                              },
        +                              "type": "array"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ],
        +                          "default": null
        +                        },
        +                        "scale": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "sheet_size": {
        +                          "enum": [
        +                            "A1",
        +                            "A2",
        +                            "A3",
        +                            "A4"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "url": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "drawing_type",
        +                        "format",
        +                        "url",
        +                        "sheet_size",
        +                        "scale"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "parameters_used": {
        +                "additionalProperties": false,
        +                "description": "Schema § 1.2 — the parameter snapshot the engine actually used.\n\nSplits user-supplied values from engine defaults so customers can see\nwhich numbers came from them and which the engine filled in. Every\ndefaulted parameter SHOULD have a corresponding entry in `assumptions`\n— the bridge layer enforces this when wrapping engine output.",
        +                "properties": {
        +                  "assumptions": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "engine_defaults": {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  "resolved_from_description": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "additionalProperties": false,
        +                          "description": "Schema § 1.2 — a parameter resolved by the forgiving-input layer.\n\nPopulated by the Track B-Forgiving Haiku-4.5 resolution pass; until that\nlayer lands, instances are constructed only by tests. `source` distinguishes\nthe resolution path so customers can audit which fields were inferred.",
        +                          "properties": {
        +                            "confidence": {
        +                              "anyOf": [
        +                                {
        +                                  "enum": [
        +                                    "high",
        +                                    "medium",
        +                                    "low"
        +                                  ],
        +                                  "type": "string"
        +                                },
        +                                {
        +                                  "type": "null"
        +                                }
        +                              ],
        +                              "default": null
        +                            },
        +                            "field_name": {
        +                              "minLength": 1,
        +                              "type": "string"
        +                            },
        +                            "resolved_value": {},
        +                            "source": {
        +                              "enum": [
        +                                "description_field",
        +                                "haiku_resolution",
        +                                "engine_default"
        +                              ],
        +                              "type": "string"
        +                            }
        +                          },
        +                          "required": [
        +                            "field_name",
        +                            "resolved_value",
        +                            "source"
        +                          ],
        +                          "type": "object"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "user_supplied": {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  }
        +                },
        +                "type": "object"
        +              },
        +              "standard": {
        +                "enum": [
        +                  "CESMM4",
        +                  "NRM2",
        +                  "SMM7",
        +                  "MMHW"
        +                ],
        +                "type": "string"
        +              },
        +              "text_summary": {
        +                "maxLength": 2000,
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "totals_summary": {
        +                "additionalProperties": false,
        +                "description": "Schema § 1.4 — totals_summary as a typed wrapper around the free-form dict.\n\nWire shape is a flat object (`{\"concrete_m3\": {...}, \"rebar_t\": {...}}`).\nWe model it as `RootModel`-equivalent via `model_config(extra=\"allow\")`\n+ a single `__root__`-style `entries` dict. Pydantic v2 recommends\n`RootModel` for free-form roots; using a wrapper class keeps the import\nsurface uniform with the rest of this module.",
        +                "properties": {
        +                  "entries": {
        +                    "additionalProperties": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.4 — single material/work-class total entry.",
        +                      "properties": {
        +                        "quantity": {
        +                          "minimum": 0,
        +                          "type": "number"
        +                        },
        +                        "unit": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "quantity",
        +                        "unit"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "object"
        +                  }
        +                },
        +                "type": "object"
        +              },
        +              "warnings": {
        +                "items": {
        +                  "additionalProperties": false,
        +                  "description": "Schema § 1.8 — a non-fatal geometry advisory (56th-fire T2).\n\nThe wire projection of the engine's `core.GeometryWarning`. Advisory only:\na warning NEVER changes a measured quantity — it flags geometry that is\nvalid but likely a mistake (e.g. a stale dependent-height default). Present\non BOTH tiers — a correctness/safety signal, not a paid feature.",
        +                  "properties": {
        +                    "affected_params": {
        +                      "items": {
        +                        "type": "string"
        +                      },
        +                      "type": "array"
        +                    },
        +                    "code": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "detail": {
        +                      "additionalProperties": {
        +                        "type": "number"
        +                      },
        +                      "type": "object"
        +                    },
        +                    "message": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "severity": {
        +                      "enum": [
        +                        "info",
        +                        "advisory",
        +                        "caution"
        +                      ],
        +                      "type": "string"
        +                    }
        +                  },
        +                  "required": [
        +                    "code",
        +                    "severity",
        +                    "message"
        +                  ],
        +                  "type": "object"
        +                },
        +                "type": "array"
        +              }
        +            },
        +            "required": [
        +              "assembly_slug",
        +              "standard",
        +              "parameters_used",
        +              "boq_rows",
        +              "totals_summary",
        +              "text_summary"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      },
        +      "error": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        +            "properties": {
        +              "code": {
        +                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        +                "enum": [
        +                  "RATE_LIMIT_EXCEEDED",
        +                  "TIER_INSUFFICIENT",
        +                  "INVALID_INPUT",
        +                  "SCHEMA_VERSION_MISMATCH",
        +                  "SCHEMA_INVARIANT_VIOLATION",
        +                  "UPSTREAM_TIMEOUT",
        +                  "BACKEND_FAILURE",
        +                  "IP_BLOCKED",
        +                  "RESOURCE_NOT_FOUND",
        +                  "RENDER_FAILURE",
        +                  "OCR_LOW_CONFIDENCE",
        +                  "MANUAL_REVIEW_REQUIRED",
        +                  "ACCEPTANCE_REQUIRED",
        +                  "INVALID_TOKEN"
        +                ],
        +                "type": "string"
        +              },
        +              "details": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "message": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "recoverable": {
        +                "type": "boolean"
        +              },
        +              "retry_after_seconds": {
        +                "anyOf": [
        +                  {
        +                    "minimum": 0,
        +                    "type": "integer"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              }
        +            },
        +            "required": [
        +              "code",
        +              "message",
        +              "recoverable"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      }
        +    },
        +    "required": [
        +      "_meta"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "_meta": {
        +        "additionalProperties": false,
        +        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        +        "properties": {
        +          "deliverables": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        +                "properties": {
        +                  "docx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "dxf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "expires_at": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  },
        +                  "pdf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "xlsx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "expires_at"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "document_id": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "issued_at": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "rate_limit_remaining": {
        +            "anyOf": [
        +              {
        +                "minimum": 0,
        +                "type": "integer"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "request_id": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "schema_version": {
        +            "const": "1.0.0",
        +            "default": "1.0.0",
        +            "type": "string"
        +          },
        +          "scope_boundary": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        +                "properties": {
        +                  "not_in_scope": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "produced": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "recommended_companions": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "type": "string"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "produced",
        +                  "not_in_scope"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tier": {
        +            "enum": [
        +              "free",
        +              "paid"
        +            ],
        +            "type": "string"
        +          },
        +          "tier_upgrade": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        +                "properties": {
        +                  "available_tiers": {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        +                      "properties": {
        +                        "billing": {
        +                          "enum": [
        +                            "one_off",
        +                            "monthly",
        +                            "annual"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "currency": {
        +                          "enum": [
        +                            "GBP",
        +                            "SGD",
        +                            "EUR",
        +                            "USD",
        +                            "CAD",
        +                            "AUD",
        +                            "NZD",
        +                            "MYR"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "display_name": {
        +                          "type": "string"
        +                        },
        +                        "price_local": {
        +                          "type": "number"
        +                        },
        +                        "tier_slug": {
        +                          "enum": [
        +                            "7_day_pass",
        +                            "solo",
        +                            "studio",
        +                            "practice"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "unlock_summary": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "tier_slug",
        +                        "display_name",
        +                        "price_local",
        +                        "currency",
        +                        "billing",
        +                        "unlock_summary"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "current_tier": {
        +                    "const": "free",
        +                    "default": "free",
        +                    "type": "string"
        +                  },
        +                  "pass_credit": {
        +                    "anyOf": [
        +                      {
        +                        "additionalProperties": false,
        +                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        +                        "properties": {
        +                          "amount_local": {
        +                            "type": "number"
        +                          },
        +                          "applies_to": {
        +                            "const": "solo_first_month",
        +                            "default": "solo_first_month",
        +                            "type": "string"
        +                          },
        +                          "currency": {
        +                            "type": "string"
        +                          },
        +                          "redeemable_until": {
        +                            "type": "string"
        +                          }
        +                        },
        +                        "required": [
        +                          "amount_local",
        +                          "currency",
        +                          "redeemable_until"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "pricing_url": {
        +                    "default": "https://civilquants.com/pricing",
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "available_tiers"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tos_url": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "upgrade_hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "warranty_disclaimer": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          }
        +        },
        +        "required": [
        +          "request_id",
        +          "issued_at",
        +          "tier"
        +        ],
        +        "type": "object"
        +      },
        +      "data": {
        +        "default": null,
        +        "title": "Data"
        +      },
        +      "error": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        +            "properties": {
        +              "code": {
        +                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        +                "enum": [
        +                  "RATE_LIMIT_EXCEEDED",
        +                  "TIER_INSUFFICIENT",
        +                  "INVALID_INPUT",
        +                  "SCHEMA_VERSION_MISMATCH",
        +                  "SCHEMA_INVARIANT_VIOLATION",
        +                  "UPSTREAM_TIMEOUT",
        +                  "BACKEND_FAILURE",
        +                  "IP_BLOCKED",
        +                  "RESOURCE_NOT_FOUND",
        +                  "RENDER_FAILURE",
        +                  "OCR_LOW_CONFIDENCE",
        +                  "MANUAL_REVIEW_REQUIRED",
        +                  "ACCEPTANCE_REQUIRED",
        +                  "INVALID_TOKEN"
        +                ],
        +                "type": "string"
        +              },
        +              "details": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "message": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "recoverable": {
        +                "type": "boolean"
        +              },
        +              "retry_after_seconds": {
        +                "anyOf": [
        +                  {
        +                    "minimum": 0,
        +                    "type": "integer"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              }
        +            },
        +            "required": [
        +              "code",
        +              "message",
        +              "recoverable"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      }
        +    },
        +    "required": [
        +      "_meta"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedcompute_swale1 field changed
      • changedOutput schema / properties / result / anyOf
        Previous value: -[
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "_meta": {
        -        "additionalProperties": false,
        -        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        -        "properties": {
        -          "deliverables": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        -                "properties": {
        -                  "docx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "dxf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "expires_at": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  },
        -                  "pdf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "xlsx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "expires_at"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "document_id": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "issued_at": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "rate_limit_remaining": {
        -            "anyOf": [
        -              {
        -                "minimum": 0,
        -                "type": "integer"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "request_id": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "schema_version": {
        -            "const": "1.0.0",
        -            "default": "1.0.0",
        -            "type": "string"
        -          },
        -          "scope_boundary": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        -                "properties": {
        -                  "not_in_scope": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "produced": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "recommended_companions": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "type": "string"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "produced",
        -                  "not_in_scope"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tier": {
        -            "enum": [
        -              "free",
        -              "paid"
        -            ],
        -            "type": "string"
        -          },
        -          "tier_upgrade": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        -                "properties": {
        -                  "available_tiers": {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        -                      "properties": {
        -                        "billing": {
        -                          "enum": [
        -                            "one_off",
        -                            "monthly",
        -                            "annual"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "currency": {
        -                          "enum": [
        -                            "GBP",
        -                            "SGD",
        -                            "EUR",
        -                            "USD",
        -                            "CAD",
        -                            "AUD",
        -                            "NZD",
        -                            "MYR"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "display_name": {
        -                          "type": "string"
        -                        },
        -                        "price_local": {
        -                          "type": "number"
        -                        },
        -                        "tier_slug": {
        -                          "enum": [
        -                            "7_day_pass",
        -                            "solo",
        -                            "studio",
        -                            "practice"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "unlock_summary": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "tier_slug",
        -                        "display_name",
        -                        "price_local",
        -                        "currency",
        -                        "billing",
        -                        "unlock_summary"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "current_tier": {
        -                    "const": "free",
        -                    "default": "free",
        -                    "type": "string"
        -                  },
        -                  "pass_credit": {
        -                    "anyOf": [
        -                      {
        -                        "additionalProperties": false,
        -                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        -                        "properties": {
        -                          "amount_local": {
        -                            "type": "number"
        -                          },
        -                          "applies_to": {
        -                            "const": "solo_first_month",
        -                            "default": "solo_first_month",
        -                            "type": "string"
        -                          },
        -                          "currency": {
        -                            "type": "string"
        -                          },
        -                          "redeemable_until": {
        -                            "type": "string"
        -                          }
        -                        },
        -                        "required": [
        -                          "amount_local",
        -                          "currency",
        -                          "redeemable_until"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "pricing_url": {
        -                    "default": "https://civilquants.com/pricing",
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "available_tiers"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tos_url": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "upgrade_hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "warranty_disclaimer": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          }
        -        },
        -        "required": [
        -          "request_id",
        -          "issued_at",
        -          "tier"
        -        ],
        -        "type": "object"
        -      },
        -      "data": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Schema § 1.1 — the typed payload returned inside `MCPResponse[ComputeResult]`.\n\nFree-tier responses MUST omit `drawings` and `audit_trail` (the bridge\nenforces this); paid-tier responses populate both. `text_summary` is\nbounded to 2000 chars — keeps the LLM-facing summary token-cheap and\nforces longer narrative into BoQ row descriptions where it belongs.",
        -            "properties": {
        -              "assembly_slug": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "audit_trail": {
        -                "anyOf": [
        -                  {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.7 — paid-tier audit-trail entry.\n\nOne entry per BoQ row; `boq_row_index` ties to the row position in\n`ComputeResult.boq_rows`. `derivation` is the human-readable formula\nwalk-through; `formula` is the optional formal expression.",
        -                      "properties": {
        -                        "boq_row_index": {
        -                          "minimum": 0,
        -                          "type": "integer"
        -                        },
        -                        "derivation": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "formula": {
        -                          "anyOf": [
        -                            {
        -                              "type": "string"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ],
        -                          "default": null
        -                        },
        -                        "id": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "parameters_referenced": {
        -                          "items": {
        -                            "type": "string"
        -                          },
        -                          "type": "array"
        -                        }
        -                      },
        -                      "required": [
        -                        "id",
        -                        "boq_row_index",
        -                        "derivation"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "boq_rows": {
        -                "items": {
        -                  "additionalProperties": false,
        -                  "description": "Schema § 1.3 — a single bill row in the requested standard's format.\n\n`description` is the non-verbatim functional description per spec § 13.9 /\n§ 15 invariant — NEVER reproduces a standard's verbatim clause text.\n`rate` / `amount` ship null because rates are commodity data the customer\nowns; the engine's job is the measurement, not the pricing.",
        -                  "properties": {
        -                    "amount": {
        -                      "anyOf": [
        -                        {
        -                          "type": "number"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "attribution": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "audit_id": {
        -                      "anyOf": [
        -                        {
        -                          "type": "string"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "description": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "quantity": {
        -                      "minimum": 0,
        -                      "type": "number"
        -                    },
        -                    "rate": {
        -                      "anyOf": [
        -                        {
        -                          "type": "number"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "unit": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "work_section": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    }
        -                  },
        -                  "required": [
        -                    "work_section",
        -                    "description",
        -                    "quantity",
        -                    "unit",
        -                    "attribution"
        -                  ],
        -                  "type": "object"
        -                },
        -                "type": "array"
        -              },
        -              "drawings": {
        -                "anyOf": [
        -                  {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.6 — paid-tier drawing artefact pointer.\n\n`url` is an R2-signed URL; expiry is carried in `_meta.deliverables.expires_at`\non the envelope (not duplicated here). `layers` is DXF-only; PDF/SVG\ncallers omit it.",
        -                      "properties": {
        -                        "drawing_type": {
        -                          "enum": [
        -                            "section",
        -                            "plan",
        -                            "elevation",
        -                            "isometric",
        -                            "detail"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "format": {
        -                          "enum": [
        -                            "DXF",
        -                            "PDF",
        -                            "SVG"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "layers": {
        -                          "anyOf": [
        -                            {
        -                              "items": {
        -                                "type": "string"
        -                              },
        -                              "type": "array"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ],
        -                          "default": null
        -                        },
        -                        "scale": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "sheet_size": {
        -                          "enum": [
        -                            "A1",
        -                            "A2",
        -                            "A3",
        -                            "A4"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "url": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "drawing_type",
        -                        "format",
        -                        "url",
        -                        "sheet_size",
        -                        "scale"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "parameters_used": {
        -                "additionalProperties": false,
        -                "description": "Schema § 1.2 — the parameter snapshot the engine actually used.\n\nSplits user-supplied values from engine defaults so customers can see\nwhich numbers came from them and which the engine filled in. Every\ndefaulted parameter SHOULD have a corresponding entry in `assumptions`\n— the bridge layer enforces this when wrapping engine output.",
        -                "properties": {
        -                  "assumptions": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "engine_defaults": {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  "resolved_from_description": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "additionalProperties": false,
        -                          "description": "Schema § 1.2 — a parameter resolved by the forgiving-input layer.\n\nPopulated by the Track B-Forgiving Haiku-4.5 resolution pass; until that\nlayer lands, instances are constructed only by tests. `source` distinguishes\nthe resolution path so customers can audit which fields were inferred.",
        -                          "properties": {
        -                            "confidence": {
        -                              "anyOf": [
        -                                {
        -                                  "enum": [
        -                                    "high",
        -                                    "medium",
        -                                    "low"
        -                                  ],
        -                                  "type": "string"
        -                                },
        -                                {
        -                                  "type": "null"
        -                                }
        -                              ],
        -                              "default": null
        -                            },
        -                            "field_name": {
        -                              "minLength": 1,
        -                              "type": "string"
        -                            },
        -                            "resolved_value": {},
        -                            "source": {
        -                              "enum": [
        -                                "description_field",
        -                                "haiku_resolution",
        -                                "engine_default"
        -                              ],
        -                              "type": "string"
        -                            }
        -                          },
        -                          "required": [
        -                            "field_name",
        -                            "resolved_value",
        -                            "source"
        -                          ],
        -                          "type": "object"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "user_supplied": {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  }
        -                },
        -                "type": "object"
        -              },
        -              "standard": {
        -                "enum": [
        -                  "CESMM4",
        -                  "NRM2",
        -                  "SMM7",
        -                  "MMHW"
        -                ],
        -                "type": "string"
        -              },
        -              "text_summary": {
        -                "maxLength": 2000,
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "totals_summary": {
        -                "additionalProperties": false,
        -                "description": "Schema § 1.4 — totals_summary as a typed wrapper around the free-form dict.\n\nWire shape is a flat object (`{\"concrete_m3\": {...}, \"rebar_t\": {...}}`).\nWe model it as `RootModel`-equivalent via `model_config(extra=\"allow\")`\n+ a single `__root__`-style `entries` dict. Pydantic v2 recommends\n`RootModel` for free-form roots; using a wrapper class keeps the import\nsurface uniform with the rest of this module.",
        -                "properties": {
        -                  "entries": {
        -                    "additionalProperties": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.4 — single material/work-class total entry.",
        -                      "properties": {
        -                        "quantity": {
        -                          "minimum": 0,
        -                          "type": "number"
        -                        },
        -                        "unit": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "quantity",
        -                        "unit"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "object"
        -                  }
        -                },
        -                "type": "object"
        -              }
        -            },
        -            "required": [
        -              "assembly_slug",
        -              "standard",
        -              "parameters_used",
        -              "boq_rows",
        -              "totals_summary",
        -              "text_summary"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      },
        -      "error": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        -            "properties": {
        -              "code": {
        -                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        -                "enum": [
        -                  "RATE_LIMIT_EXCEEDED",
        -                  "TIER_INSUFFICIENT",
        -                  "INVALID_INPUT",
        -                  "SCHEMA_VERSION_MISMATCH",
        -                  "SCHEMA_INVARIANT_VIOLATION",
        -                  "UPSTREAM_TIMEOUT",
        -                  "BACKEND_FAILURE",
        -                  "IP_BLOCKED",
        -                  "RESOURCE_NOT_FOUND",
        -                  "RENDER_FAILURE",
        -                  "OCR_LOW_CONFIDENCE",
        -                  "MANUAL_REVIEW_REQUIRED",
        -                  "ACCEPTANCE_REQUIRED",
        -                  "INVALID_TOKEN"
        -                ],
        -                "type": "string"
        -              },
        -              "details": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "message": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "recoverable": {
        -                "type": "boolean"
        -              },
        -              "retry_after_seconds": {
        -                "anyOf": [
        -                  {
        -                    "minimum": 0,
        -                    "type": "integer"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              }
        -            },
        -            "required": [
        -              "code",
        -              "message",
        -              "recoverable"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      }
        -    },
        -    "required": [
        -      "_meta"
        -    ],
        -    "type": "object"
        -  },
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "_meta": {
        -        "additionalProperties": false,
        -        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        -        "properties": {
        -          "deliverables": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        -                "properties": {
        -                  "docx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "dxf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "expires_at": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  },
        -                  "pdf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "xlsx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "expires_at"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "document_id": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "issued_at": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "rate_limit_remaining": {
        -            "anyOf": [
        -              {
        -                "minimum": 0,
        -                "type": "integer"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "request_id": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "schema_version": {
        -            "const": "1.0.0",
        -            "default": "1.0.0",
        -            "type": "string"
        -          },
        -          "scope_boundary": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        -                "properties": {
        -                  "not_in_scope": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "produced": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "recommended_companions": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "type": "string"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "produced",
        -                  "not_in_scope"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tier": {
        -            "enum": [
        -              "free",
        -              "paid"
        -            ],
        -            "type": "string"
        -          },
        -          "tier_upgrade": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        -                "properties": {
        -                  "available_tiers": {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        -                      "properties": {
        -                        "billing": {
        -                          "enum": [
        -                            "one_off",
        -                            "monthly",
        -                            "annual"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "currency": {
        -                          "enum": [
        -                            "GBP",
        -                            "SGD",
        -                            "EUR",
        -                            "USD",
        -                            "CAD",
        -                            "AUD",
        -                            "NZD",
        -                            "MYR"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "display_name": {
        -                          "type": "string"
        -                        },
        -                        "price_local": {
        -                          "type": "number"
        -                        },
        -                        "tier_slug": {
        -                          "enum": [
        -                            "7_day_pass",
        -                            "solo",
        -                            "studio",
        -                            "practice"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "unlock_summary": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "tier_slug",
        -                        "display_name",
        -                        "price_local",
        -                        "currency",
        -                        "billing",
        -                        "unlock_summary"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "current_tier": {
        -                    "const": "free",
        -                    "default": "free",
        -                    "type": "string"
        -                  },
        -                  "pass_credit": {
        -                    "anyOf": [
        -                      {
        -                        "additionalProperties": false,
        -                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        -                        "properties": {
        -                          "amount_local": {
        -                            "type": "number"
        -                          },
        -                          "applies_to": {
        -                            "const": "solo_first_month",
        -                            "default": "solo_first_month",
        -                            "type": "string"
        -                          },
        -                          "currency": {
        -                            "type": "string"
        -                          },
        -                          "redeemable_until": {
        -                            "type": "string"
        -                          }
        -                        },
        -                        "required": [
        -                          "amount_local",
        -                          "currency",
        -                          "redeemable_until"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "pricing_url": {
        -                    "default": "https://civilquants.com/pricing",
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "available_tiers"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tos_url": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "upgrade_hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "warranty_disclaimer": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          }
        -        },
        -        "required": [
        -          "request_id",
        -          "issued_at",
        -          "tier"
        -        ],
        -        "type": "object"
        -      },
        -      "data": {
        -        "default": null,
        -        "title": "Data"
        -      },
        -      "error": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        -            "properties": {
        -              "code": {
        -                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        -                "enum": [
        -                  "RATE_LIMIT_EXCEEDED",
        -                  "TIER_INSUFFICIENT",
        -                  "INVALID_INPUT",
        -                  "SCHEMA_VERSION_MISMATCH",
        -                  "SCHEMA_INVARIANT_VIOLATION",
        -                  "UPSTREAM_TIMEOUT",
        -                  "BACKEND_FAILURE",
        -                  "IP_BLOCKED",
        -                  "RESOURCE_NOT_FOUND",
        -                  "RENDER_FAILURE",
        -                  "OCR_LOW_CONFIDENCE",
        -                  "MANUAL_REVIEW_REQUIRED",
        -                  "ACCEPTANCE_REQUIRED",
        -                  "INVALID_TOKEN"
        -                ],
        -                "type": "string"
        -              },
        -              "details": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "message": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "recoverable": {
        -                "type": "boolean"
        -              },
        -              "retry_after_seconds": {
        -                "anyOf": [
        -                  {
        -                    "minimum": 0,
        -                    "type": "integer"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              }
        -            },
        -            "required": [
        -              "code",
        -              "message",
        -              "recoverable"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      }
        -    },
        -    "required": [
        -      "_meta"
        -    ],
        -    "type": "object"
        -  }
        -]New value: +[
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "_meta": {
        +        "additionalProperties": false,
        +        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        +        "properties": {
        +          "deliverables": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        +                "properties": {
        +                  "docx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "dxf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "expires_at": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  },
        +                  "pdf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "xlsx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "expires_at"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "document_id": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "issued_at": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "rate_limit_remaining": {
        +            "anyOf": [
        +              {
        +                "minimum": 0,
        +                "type": "integer"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "request_id": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "schema_version": {
        +            "const": "1.0.0",
        +            "default": "1.0.0",
        +            "type": "string"
        +          },
        +          "scope_boundary": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        +                "properties": {
        +                  "not_in_scope": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "produced": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "recommended_companions": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "type": "string"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "produced",
        +                  "not_in_scope"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tier": {
        +            "enum": [
        +              "free",
        +              "paid"
        +            ],
        +            "type": "string"
        +          },
        +          "tier_upgrade": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        +                "properties": {
        +                  "available_tiers": {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        +                      "properties": {
        +                        "billing": {
        +                          "enum": [
        +                            "one_off",
        +                            "monthly",
        +                            "annual"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "currency": {
        +                          "enum": [
        +                            "GBP",
        +                            "SGD",
        +                            "EUR",
        +                            "USD",
        +                            "CAD",
        +                            "AUD",
        +                            "NZD",
        +                            "MYR"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "display_name": {
        +                          "type": "string"
        +                        },
        +                        "price_local": {
        +                          "type": "number"
        +                        },
        +                        "tier_slug": {
        +                          "enum": [
        +                            "7_day_pass",
        +                            "solo",
        +                            "studio",
        +                            "practice"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "unlock_summary": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "tier_slug",
        +                        "display_name",
        +                        "price_local",
        +                        "currency",
        +                        "billing",
        +                        "unlock_summary"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "current_tier": {
        +                    "const": "free",
        +                    "default": "free",
        +                    "type": "string"
        +                  },
        +                  "pass_credit": {
        +                    "anyOf": [
        +                      {
        +                        "additionalProperties": false,
        +                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        +                        "properties": {
        +                          "amount_local": {
        +                            "type": "number"
        +                          },
        +                          "applies_to": {
        +                            "const": "solo_first_month",
        +                            "default": "solo_first_month",
        +                            "type": "string"
        +                          },
        +                          "currency": {
        +                            "type": "string"
        +                          },
        +                          "redeemable_until": {
        +                            "type": "string"
        +                          }
        +                        },
        +                        "required": [
        +                          "amount_local",
        +                          "currency",
        +                          "redeemable_until"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "pricing_url": {
        +                    "default": "https://civilquants.com/pricing",
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "available_tiers"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tos_url": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "upgrade_hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "warranty_disclaimer": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          }
        +        },
        +        "required": [
        +          "request_id",
        +          "issued_at",
        +          "tier"
        +        ],
        +        "type": "object"
        +      },
        +      "data": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Schema § 1.1 — the typed payload returned inside `MCPResponse[ComputeResult]`.\n\nFree-tier responses MUST omit `drawings` and `audit_trail` (the bridge\nenforces this); paid-tier responses populate both. `text_summary` is\nbounded to 2000 chars — keeps the LLM-facing summary token-cheap and\nforces longer narrative into BoQ row descriptions where it belongs.\n`warnings` is the non-fatal geometry advisory list (both tiers).",
        +            "properties": {
        +              "assembly_slug": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "audit_trail": {
        +                "anyOf": [
        +                  {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.7 — paid-tier audit-trail entry.\n\nOne entry per BoQ row; `boq_row_index` ties to the row position in\n`ComputeResult.boq_rows`. `derivation` is the human-readable formula\nwalk-through; `formula` is the optional formal expression.",
        +                      "properties": {
        +                        "boq_row_index": {
        +                          "minimum": 0,
        +                          "type": "integer"
        +                        },
        +                        "derivation": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "formula": {
        +                          "anyOf": [
        +                            {
        +                              "type": "string"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ],
        +                          "default": null
        +                        },
        +                        "id": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "parameters_referenced": {
        +                          "items": {
        +                            "type": "string"
        +                          },
        +                          "type": "array"
        +                        }
        +                      },
        +                      "required": [
        +                        "id",
        +                        "boq_row_index",
        +                        "derivation"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "boq_rows": {
        +                "items": {
        +                  "additionalProperties": false,
        +                  "description": "Schema § 1.3 — a single bill row in the requested standard's format.\n\n`description` is the non-verbatim functional description per spec § 13.9 /\n§ 15 invariant — NEVER reproduces a standard's verbatim clause text.\n`rate` / `amount` ship null because rates are commodity data the customer\nowns; the engine's job is the measurement, not the pricing.",
        +                  "properties": {
        +                    "amount": {
        +                      "anyOf": [
        +                        {
        +                          "type": "number"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "attribution": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "audit_id": {
        +                      "anyOf": [
        +                        {
        +                          "type": "string"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "description": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "quantity": {
        +                      "minimum": 0,
        +                      "type": "number"
        +                    },
        +                    "rate": {
        +                      "anyOf": [
        +                        {
        +                          "type": "number"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "unit": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "work_section": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    }
        +                  },
        +                  "required": [
        +                    "work_section",
        +                    "description",
        +                    "quantity",
        +                    "unit",
        +                    "attribution"
        +                  ],
        +                  "type": "object"
        +                },
        +                "type": "array"
        +              },
        +              "drawings": {
        +                "anyOf": [
        +                  {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.6 — paid-tier drawing artefact pointer.\n\n`url` is an R2-signed URL; expiry is carried in `_meta.deliverables.expires_at`\non the envelope (not duplicated here). `layers` is DXF-only; PDF/SVG\ncallers omit it.",
        +                      "properties": {
        +                        "drawing_type": {
        +                          "enum": [
        +                            "section",
        +                            "plan",
        +                            "elevation",
        +                            "isometric",
        +                            "detail"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "format": {
        +                          "enum": [
        +                            "DXF",
        +                            "PDF",
        +                            "SVG"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "layers": {
        +                          "anyOf": [
        +                            {
        +                              "items": {
        +                                "type": "string"
        +                              },
        +                              "type": "array"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ],
        +                          "default": null
        +                        },
        +                        "scale": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "sheet_size": {
        +                          "enum": [
        +                            "A1",
        +                            "A2",
        +                            "A3",
        +                            "A4"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "url": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "drawing_type",
        +                        "format",
        +                        "url",
        +                        "sheet_size",
        +                        "scale"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "parameters_used": {
        +                "additionalProperties": false,
        +                "description": "Schema § 1.2 — the parameter snapshot the engine actually used.\n\nSplits user-supplied values from engine defaults so customers can see\nwhich numbers came from them and which the engine filled in. Every\ndefaulted parameter SHOULD have a corresponding entry in `assumptions`\n— the bridge layer enforces this when wrapping engine output.",
        +                "properties": {
        +                  "assumptions": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "engine_defaults": {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  "resolved_from_description": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "additionalProperties": false,
        +                          "description": "Schema § 1.2 — a parameter resolved by the forgiving-input layer.\n\nPopulated by the Track B-Forgiving Haiku-4.5 resolution pass; until that\nlayer lands, instances are constructed only by tests. `source` distinguishes\nthe resolution path so customers can audit which fields were inferred.",
        +                          "properties": {
        +                            "confidence": {
        +                              "anyOf": [
        +                                {
        +                                  "enum": [
        +                                    "high",
        +                                    "medium",
        +                                    "low"
        +                                  ],
        +                                  "type": "string"
        +                                },
        +                                {
        +                                  "type": "null"
        +                                }
        +                              ],
        +                              "default": null
        +                            },
        +                            "field_name": {
        +                              "minLength": 1,
        +                              "type": "string"
        +                            },
        +                            "resolved_value": {},
        +                            "source": {
        +                              "enum": [
        +                                "description_field",
        +                                "haiku_resolution",
        +                                "engine_default"
        +                              ],
        +                              "type": "string"
        +                            }
        +                          },
        +                          "required": [
        +                            "field_name",
        +                            "resolved_value",
        +                            "source"
        +                          ],
        +                          "type": "object"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "user_supplied": {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  }
        +                },
        +                "type": "object"
        +              },
        +              "standard": {
        +                "enum": [
        +                  "CESMM4",
        +                  "NRM2",
        +                  "SMM7",
        +                  "MMHW"
        +                ],
        +                "type": "string"
        +              },
        +              "text_summary": {
        +                "maxLength": 2000,
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "totals_summary": {
        +                "additionalProperties": false,
        +                "description": "Schema § 1.4 — totals_summary as a typed wrapper around the free-form dict.\n\nWire shape is a flat object (`{\"concrete_m3\": {...}, \"rebar_t\": {...}}`).\nWe model it as `RootModel`-equivalent via `model_config(extra=\"allow\")`\n+ a single `__root__`-style `entries` dict. Pydantic v2 recommends\n`RootModel` for free-form roots; using a wrapper class keeps the import\nsurface uniform with the rest of this module.",
        +                "properties": {
        +                  "entries": {
        +                    "additionalProperties": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.4 — single material/work-class total entry.",
        +                      "properties": {
        +                        "quantity": {
        +                          "minimum": 0,
        +                          "type": "number"
        +                        },
        +                        "unit": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "quantity",
        +                        "unit"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "object"
        +                  }
        +                },
        +                "type": "object"
        +              },
        +              "warnings": {
        +                "items": {
        +                  "additionalProperties": false,
        +                  "description": "Schema § 1.8 — a non-fatal geometry advisory (56th-fire T2).\n\nThe wire projection of the engine's `core.GeometryWarning`. Advisory only:\na warning NEVER changes a measured quantity — it flags geometry that is\nvalid but likely a mistake (e.g. a stale dependent-height default). Present\non BOTH tiers — a correctness/safety signal, not a paid feature.",
        +                  "properties": {
        +                    "affected_params": {
        +                      "items": {
        +                        "type": "string"
        +                      },
        +                      "type": "array"
        +                    },
        +                    "code": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "detail": {
        +                      "additionalProperties": {
        +                        "type": "number"
        +                      },
        +                      "type": "object"
        +                    },
        +                    "message": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "severity": {
        +                      "enum": [
        +                        "info",
        +                        "advisory",
        +                        "caution"
        +                      ],
        +                      "type": "string"
        +                    }
        +                  },
        +                  "required": [
        +                    "code",
        +                    "severity",
        +                    "message"
        +                  ],
        +                  "type": "object"
        +                },
        +                "type": "array"
        +              }
        +            },
        +            "required": [
        +              "assembly_slug",
        +              "standard",
        +              "parameters_used",
        +              "boq_rows",
        +              "totals_summary",
        +              "text_summary"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      },
        +      "error": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        +            "properties": {
        +              "code": {
        +                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        +                "enum": [
        +                  "RATE_LIMIT_EXCEEDED",
        +                  "TIER_INSUFFICIENT",
        +                  "INVALID_INPUT",
        +                  "SCHEMA_VERSION_MISMATCH",
        +                  "SCHEMA_INVARIANT_VIOLATION",
        +                  "UPSTREAM_TIMEOUT",
        +                  "BACKEND_FAILURE",
        +                  "IP_BLOCKED",
        +                  "RESOURCE_NOT_FOUND",
        +                  "RENDER_FAILURE",
        +                  "OCR_LOW_CONFIDENCE",
        +                  "MANUAL_REVIEW_REQUIRED",
        +                  "ACCEPTANCE_REQUIRED",
        +                  "INVALID_TOKEN"
        +                ],
        +                "type": "string"
        +              },
        +              "details": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "message": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "recoverable": {
        +                "type": "boolean"
        +              },
        +              "retry_after_seconds": {
        +                "anyOf": [
        +                  {
        +                    "minimum": 0,
        +                    "type": "integer"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              }
        +            },
        +            "required": [
        +              "code",
        +              "message",
        +              "recoverable"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      }
        +    },
        +    "required": [
        +      "_meta"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "_meta": {
        +        "additionalProperties": false,
        +        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        +        "properties": {
        +          "deliverables": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        +                "properties": {
        +                  "docx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "dxf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "expires_at": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  },
        +                  "pdf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "xlsx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "expires_at"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "document_id": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "issued_at": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "rate_limit_remaining": {
        +            "anyOf": [
        +              {
        +                "minimum": 0,
        +                "type": "integer"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "request_id": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "schema_version": {
        +            "const": "1.0.0",
        +            "default": "1.0.0",
        +            "type": "string"
        +          },
        +          "scope_boundary": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        +                "properties": {
        +                  "not_in_scope": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "produced": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "recommended_companions": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "type": "string"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "produced",
        +                  "not_in_scope"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tier": {
        +            "enum": [
        +              "free",
        +              "paid"
        +            ],
        +            "type": "string"
        +          },
        +          "tier_upgrade": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        +                "properties": {
        +                  "available_tiers": {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        +                      "properties": {
        +                        "billing": {
        +                          "enum": [
        +                            "one_off",
        +                            "monthly",
        +                            "annual"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "currency": {
        +                          "enum": [
        +                            "GBP",
        +                            "SGD",
        +                            "EUR",
        +                            "USD",
        +                            "CAD",
        +                            "AUD",
        +                            "NZD",
        +                            "MYR"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "display_name": {
        +                          "type": "string"
        +                        },
        +                        "price_local": {
        +                          "type": "number"
        +                        },
        +                        "tier_slug": {
        +                          "enum": [
        +                            "7_day_pass",
        +                            "solo",
        +                            "studio",
        +                            "practice"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "unlock_summary": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "tier_slug",
        +                        "display_name",
        +                        "price_local",
        +                        "currency",
        +                        "billing",
        +                        "unlock_summary"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "current_tier": {
        +                    "const": "free",
        +                    "default": "free",
        +                    "type": "string"
        +                  },
        +                  "pass_credit": {
        +                    "anyOf": [
        +                      {
        +                        "additionalProperties": false,
        +                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        +                        "properties": {
        +                          "amount_local": {
        +                            "type": "number"
        +                          },
        +                          "applies_to": {
        +                            "const": "solo_first_month",
        +                            "default": "solo_first_month",
        +                            "type": "string"
        +                          },
        +                          "currency": {
        +                            "type": "string"
        +                          },
        +                          "redeemable_until": {
        +                            "type": "string"
        +                          }
        +                        },
        +                        "required": [
        +                          "amount_local",
        +                          "currency",
        +                          "redeemable_until"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "pricing_url": {
        +                    "default": "https://civilquants.com/pricing",
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "available_tiers"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tos_url": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "upgrade_hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "warranty_disclaimer": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          }
        +        },
        +        "required": [
        +          "request_id",
        +          "issued_at",
        +          "tier"
        +        ],
        +        "type": "object"
        +      },
        +      "data": {
        +        "default": null,
        +        "title": "Data"
        +      },
        +      "error": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        +            "properties": {
        +              "code": {
        +                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        +                "enum": [
        +                  "RATE_LIMIT_EXCEEDED",
        +                  "TIER_INSUFFICIENT",
        +                  "INVALID_INPUT",
        +                  "SCHEMA_VERSION_MISMATCH",
        +                  "SCHEMA_INVARIANT_VIOLATION",
        +                  "UPSTREAM_TIMEOUT",
        +                  "BACKEND_FAILURE",
        +                  "IP_BLOCKED",
        +                  "RESOURCE_NOT_FOUND",
        +                  "RENDER_FAILURE",
        +                  "OCR_LOW_CONFIDENCE",
        +                  "MANUAL_REVIEW_REQUIRED",
        +                  "ACCEPTANCE_REQUIRED",
        +                  "INVALID_TOKEN"
        +                ],
        +                "type": "string"
        +              },
        +              "details": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "message": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "recoverable": {
        +                "type": "boolean"
        +              },
        +              "retry_after_seconds": {
        +                "anyOf": [
        +                  {
        +                    "minimum": 0,
        +                    "type": "integer"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              }
        +            },
        +            "required": [
        +              "code",
        +              "message",
        +              "recoverable"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      }
        +    },
        +    "required": [
        +      "_meta"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedcompute_traffic_sign1 field changed
      • changedOutput schema / properties / result / anyOf
        Previous value: -[
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "_meta": {
        -        "additionalProperties": false,
        -        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        -        "properties": {
        -          "deliverables": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        -                "properties": {
        -                  "docx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "dxf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "expires_at": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  },
        -                  "pdf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "xlsx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "expires_at"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "document_id": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "issued_at": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "rate_limit_remaining": {
        -            "anyOf": [
        -              {
        -                "minimum": 0,
        -                "type": "integer"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "request_id": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "schema_version": {
        -            "const": "1.0.0",
        -            "default": "1.0.0",
        -            "type": "string"
        -          },
        -          "scope_boundary": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        -                "properties": {
        -                  "not_in_scope": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "produced": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "recommended_companions": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "type": "string"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "produced",
        -                  "not_in_scope"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tier": {
        -            "enum": [
        -              "free",
        -              "paid"
        -            ],
        -            "type": "string"
        -          },
        -          "tier_upgrade": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        -                "properties": {
        -                  "available_tiers": {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        -                      "properties": {
        -                        "billing": {
        -                          "enum": [
        -                            "one_off",
        -                            "monthly",
        -                            "annual"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "currency": {
        -                          "enum": [
        -                            "GBP",
        -                            "SGD",
        -                            "EUR",
        -                            "USD",
        -                            "CAD",
        -                            "AUD",
        -                            "NZD",
        -                            "MYR"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "display_name": {
        -                          "type": "string"
        -                        },
        -                        "price_local": {
        -                          "type": "number"
        -                        },
        -                        "tier_slug": {
        -                          "enum": [
        -                            "7_day_pass",
        -                            "solo",
        -                            "studio",
        -                            "practice"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "unlock_summary": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "tier_slug",
        -                        "display_name",
        -                        "price_local",
        -                        "currency",
        -                        "billing",
        -                        "unlock_summary"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "current_tier": {
        -                    "const": "free",
        -                    "default": "free",
        -                    "type": "string"
        -                  },
        -                  "pass_credit": {
        -                    "anyOf": [
        -                      {
        -                        "additionalProperties": false,
        -                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        -                        "properties": {
        -                          "amount_local": {
        -                            "type": "number"
        -                          },
        -                          "applies_to": {
        -                            "const": "solo_first_month",
        -                            "default": "solo_first_month",
        -                            "type": "string"
        -                          },
        -                          "currency": {
        -                            "type": "string"
        -                          },
        -                          "redeemable_until": {
        -                            "type": "string"
        -                          }
        -                        },
        -                        "required": [
        -                          "amount_local",
        -                          "currency",
        -                          "redeemable_until"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "pricing_url": {
        -                    "default": "https://civilquants.com/pricing",
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "available_tiers"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tos_url": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "upgrade_hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "warranty_disclaimer": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          }
        -        },
        -        "required": [
        -          "request_id",
        -          "issued_at",
        -          "tier"
        -        ],
        -        "type": "object"
        -      },
        -      "data": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Schema § 1.1 — the typed payload returned inside `MCPResponse[ComputeResult]`.\n\nFree-tier responses MUST omit `drawings` and `audit_trail` (the bridge\nenforces this); paid-tier responses populate both. `text_summary` is\nbounded to 2000 chars — keeps the LLM-facing summary token-cheap and\nforces longer narrative into BoQ row descriptions where it belongs.",
        -            "properties": {
        -              "assembly_slug": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "audit_trail": {
        -                "anyOf": [
        -                  {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.7 — paid-tier audit-trail entry.\n\nOne entry per BoQ row; `boq_row_index` ties to the row position in\n`ComputeResult.boq_rows`. `derivation` is the human-readable formula\nwalk-through; `formula` is the optional formal expression.",
        -                      "properties": {
        -                        "boq_row_index": {
        -                          "minimum": 0,
        -                          "type": "integer"
        -                        },
        -                        "derivation": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "formula": {
        -                          "anyOf": [
        -                            {
        -                              "type": "string"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ],
        -                          "default": null
        -                        },
        -                        "id": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "parameters_referenced": {
        -                          "items": {
        -                            "type": "string"
        -                          },
        -                          "type": "array"
        -                        }
        -                      },
        -                      "required": [
        -                        "id",
        -                        "boq_row_index",
        -                        "derivation"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "boq_rows": {
        -                "items": {
        -                  "additionalProperties": false,
        -                  "description": "Schema § 1.3 — a single bill row in the requested standard's format.\n\n`description` is the non-verbatim functional description per spec § 13.9 /\n§ 15 invariant — NEVER reproduces a standard's verbatim clause text.\n`rate` / `amount` ship null because rates are commodity data the customer\nowns; the engine's job is the measurement, not the pricing.",
        -                  "properties": {
        -                    "amount": {
        -                      "anyOf": [
        -                        {
        -                          "type": "number"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "attribution": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "audit_id": {
        -                      "anyOf": [
        -                        {
        -                          "type": "string"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "description": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "quantity": {
        -                      "minimum": 0,
        -                      "type": "number"
        -                    },
        -                    "rate": {
        -                      "anyOf": [
        -                        {
        -                          "type": "number"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "unit": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "work_section": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    }
        -                  },
        -                  "required": [
        -                    "work_section",
        -                    "description",
        -                    "quantity",
        -                    "unit",
        -                    "attribution"
        -                  ],
        -                  "type": "object"
        -                },
        -                "type": "array"
        -              },
        -              "drawings": {
        -                "anyOf": [
        -                  {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.6 — paid-tier drawing artefact pointer.\n\n`url` is an R2-signed URL; expiry is carried in `_meta.deliverables.expires_at`\non the envelope (not duplicated here). `layers` is DXF-only; PDF/SVG\ncallers omit it.",
        -                      "properties": {
        -                        "drawing_type": {
        -                          "enum": [
        -                            "section",
        -                            "plan",
        -                            "elevation",
        -                            "isometric",
        -                            "detail"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "format": {
        -                          "enum": [
        -                            "DXF",
        -                            "PDF",
        -                            "SVG"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "layers": {
        -                          "anyOf": [
        -                            {
        -                              "items": {
        -                                "type": "string"
        -                              },
        -                              "type": "array"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ],
        -                          "default": null
        -                        },
        -                        "scale": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "sheet_size": {
        -                          "enum": [
        -                            "A1",
        -                            "A2",
        -                            "A3",
        -                            "A4"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "url": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "drawing_type",
        -                        "format",
        -                        "url",
        -                        "sheet_size",
        -                        "scale"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "parameters_used": {
        -                "additionalProperties": false,
        -                "description": "Schema § 1.2 — the parameter snapshot the engine actually used.\n\nSplits user-supplied values from engine defaults so customers can see\nwhich numbers came from them and which the engine filled in. Every\ndefaulted parameter SHOULD have a corresponding entry in `assumptions`\n— the bridge layer enforces this when wrapping engine output.",
        -                "properties": {
        -                  "assumptions": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "engine_defaults": {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  "resolved_from_description": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "additionalProperties": false,
        -                          "description": "Schema § 1.2 — a parameter resolved by the forgiving-input layer.\n\nPopulated by the Track B-Forgiving Haiku-4.5 resolution pass; until that\nlayer lands, instances are constructed only by tests. `source` distinguishes\nthe resolution path so customers can audit which fields were inferred.",
        -                          "properties": {
        -                            "confidence": {
        -                              "anyOf": [
        -                                {
        -                                  "enum": [
        -                                    "high",
        -                                    "medium",
        -                                    "low"
        -                                  ],
        -                                  "type": "string"
        -                                },
        -                                {
        -                                  "type": "null"
        -                                }
        -                              ],
        -                              "default": null
        -                            },
        -                            "field_name": {
        -                              "minLength": 1,
        -                              "type": "string"
        -                            },
        -                            "resolved_value": {},
        -                            "source": {
        -                              "enum": [
        -                                "description_field",
        -                                "haiku_resolution",
        -                                "engine_default"
        -                              ],
        -                              "type": "string"
        -                            }
        -                          },
        -                          "required": [
        -                            "field_name",
        -                            "resolved_value",
        -                            "source"
        -                          ],
        -                          "type": "object"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "user_supplied": {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  }
        -                },
        -                "type": "object"
        -              },
        -              "standard": {
        -                "enum": [
        -                  "CESMM4",
        -                  "NRM2",
        -                  "SMM7",
        -                  "MMHW"
        -                ],
        -                "type": "string"
        -              },
        -              "text_summary": {
        -                "maxLength": 2000,
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "totals_summary": {
        -                "additionalProperties": false,
        -                "description": "Schema § 1.4 — totals_summary as a typed wrapper around the free-form dict.\n\nWire shape is a flat object (`{\"concrete_m3\": {...}, \"rebar_t\": {...}}`).\nWe model it as `RootModel`-equivalent via `model_config(extra=\"allow\")`\n+ a single `__root__`-style `entries` dict. Pydantic v2 recommends\n`RootModel` for free-form roots; using a wrapper class keeps the import\nsurface uniform with the rest of this module.",
        -                "properties": {
        -                  "entries": {
        -                    "additionalProperties": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.4 — single material/work-class total entry.",
        -                      "properties": {
        -                        "quantity": {
        -                          "minimum": 0,
        -                          "type": "number"
        -                        },
        -                        "unit": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "quantity",
        -                        "unit"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "object"
        -                  }
        -                },
        -                "type": "object"
        -              }
        -            },
        -            "required": [
        -              "assembly_slug",
        -              "standard",
        -              "parameters_used",
        -              "boq_rows",
        -              "totals_summary",
        -              "text_summary"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      },
        -      "error": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        -            "properties": {
        -              "code": {
        -                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        -                "enum": [
        -                  "RATE_LIMIT_EXCEEDED",
        -                  "TIER_INSUFFICIENT",
        -                  "INVALID_INPUT",
        -                  "SCHEMA_VERSION_MISMATCH",
        -                  "SCHEMA_INVARIANT_VIOLATION",
        -                  "UPSTREAM_TIMEOUT",
        -                  "BACKEND_FAILURE",
        -                  "IP_BLOCKED",
        -                  "RESOURCE_NOT_FOUND",
        -                  "RENDER_FAILURE",
        -                  "OCR_LOW_CONFIDENCE",
        -                  "MANUAL_REVIEW_REQUIRED",
        -                  "ACCEPTANCE_REQUIRED",
        -                  "INVALID_TOKEN"
        -                ],
        -                "type": "string"
        -              },
        -              "details": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "message": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "recoverable": {
        -                "type": "boolean"
        -              },
        -              "retry_after_seconds": {
        -                "anyOf": [
        -                  {
        -                    "minimum": 0,
        -                    "type": "integer"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              }
        -            },
        -            "required": [
        -              "code",
        -              "message",
        -              "recoverable"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      }
        -    },
        -    "required": [
        -      "_meta"
        -    ],
        -    "type": "object"
        -  },
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "_meta": {
        -        "additionalProperties": false,
        -        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        -        "properties": {
        -          "deliverables": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        -                "properties": {
        -                  "docx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "dxf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "expires_at": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  },
        -                  "pdf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "xlsx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "expires_at"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "document_id": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "issued_at": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "rate_limit_remaining": {
        -            "anyOf": [
        -              {
        -                "minimum": 0,
        -                "type": "integer"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "request_id": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "schema_version": {
        -            "const": "1.0.0",
        -            "default": "1.0.0",
        -            "type": "string"
        -          },
        -          "scope_boundary": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        -                "properties": {
        -                  "not_in_scope": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "produced": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "recommended_companions": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "type": "string"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "produced",
        -                  "not_in_scope"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tier": {
        -            "enum": [
        -              "free",
        -              "paid"
        -            ],
        -            "type": "string"
        -          },
        -          "tier_upgrade": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        -                "properties": {
        -                  "available_tiers": {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        -                      "properties": {
        -                        "billing": {
        -                          "enum": [
        -                            "one_off",
        -                            "monthly",
        -                            "annual"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "currency": {
        -                          "enum": [
        -                            "GBP",
        -                            "SGD",
        -                            "EUR",
        -                            "USD",
        -                            "CAD",
        -                            "AUD",
        -                            "NZD",
        -                            "MYR"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "display_name": {
        -                          "type": "string"
        -                        },
        -                        "price_local": {
        -                          "type": "number"
        -                        },
        -                        "tier_slug": {
        -                          "enum": [
        -                            "7_day_pass",
        -                            "solo",
        -                            "studio",
        -                            "practice"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "unlock_summary": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "tier_slug",
        -                        "display_name",
        -                        "price_local",
        -                        "currency",
        -                        "billing",
        -                        "unlock_summary"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "current_tier": {
        -                    "const": "free",
        -                    "default": "free",
        -                    "type": "string"
        -                  },
        -                  "pass_credit": {
        -                    "anyOf": [
        -                      {
        -                        "additionalProperties": false,
        -                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        -                        "properties": {
        -                          "amount_local": {
        -                            "type": "number"
        -                          },
        -                          "applies_to": {
        -                            "const": "solo_first_month",
        -                            "default": "solo_first_month",
        -                            "type": "string"
        -                          },
        -                          "currency": {
        -                            "type": "string"
        -                          },
        -                          "redeemable_until": {
        -                            "type": "string"
        -                          }
        -                        },
        -                        "required": [
        -                          "amount_local",
        -                          "currency",
        -                          "redeemable_until"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "pricing_url": {
        -                    "default": "https://civilquants.com/pricing",
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "available_tiers"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tos_url": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "upgrade_hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "warranty_disclaimer": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          }
        -        },
        -        "required": [
        -          "request_id",
        -          "issued_at",
        -          "tier"
        -        ],
        -        "type": "object"
        -      },
        -      "data": {
        -        "default": null,
        -        "title": "Data"
        -      },
        -      "error": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        -            "properties": {
        -              "code": {
        -                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        -                "enum": [
        -                  "RATE_LIMIT_EXCEEDED",
        -                  "TIER_INSUFFICIENT",
        -                  "INVALID_INPUT",
        -                  "SCHEMA_VERSION_MISMATCH",
        -                  "SCHEMA_INVARIANT_VIOLATION",
        -                  "UPSTREAM_TIMEOUT",
        -                  "BACKEND_FAILURE",
        -                  "IP_BLOCKED",
        -                  "RESOURCE_NOT_FOUND",
        -                  "RENDER_FAILURE",
        -                  "OCR_LOW_CONFIDENCE",
        -                  "MANUAL_REVIEW_REQUIRED",
        -                  "ACCEPTANCE_REQUIRED",
        -                  "INVALID_TOKEN"
        -                ],
        -                "type": "string"
        -              },
        -              "details": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "message": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "recoverable": {
        -                "type": "boolean"
        -              },
        -              "retry_after_seconds": {
        -                "anyOf": [
        -                  {
        -                    "minimum": 0,
        -                    "type": "integer"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              }
        -            },
        -            "required": [
        -              "code",
        -              "message",
        -              "recoverable"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      }
        -    },
        -    "required": [
        -      "_meta"
        -    ],
        -    "type": "object"
        -  }
        -]New value: +[
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "_meta": {
        +        "additionalProperties": false,
        +        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        +        "properties": {
        +          "deliverables": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        +                "properties": {
        +                  "docx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "dxf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "expires_at": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  },
        +                  "pdf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "xlsx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "expires_at"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "document_id": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "issued_at": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "rate_limit_remaining": {
        +            "anyOf": [
        +              {
        +                "minimum": 0,
        +                "type": "integer"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "request_id": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "schema_version": {
        +            "const": "1.0.0",
        +            "default": "1.0.0",
        +            "type": "string"
        +          },
        +          "scope_boundary": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        +                "properties": {
        +                  "not_in_scope": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "produced": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "recommended_companions": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "type": "string"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "produced",
        +                  "not_in_scope"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tier": {
        +            "enum": [
        +              "free",
        +              "paid"
        +            ],
        +            "type": "string"
        +          },
        +          "tier_upgrade": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        +                "properties": {
        +                  "available_tiers": {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        +                      "properties": {
        +                        "billing": {
        +                          "enum": [
        +                            "one_off",
        +                            "monthly",
        +                            "annual"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "currency": {
        +                          "enum": [
        +                            "GBP",
        +                            "SGD",
        +                            "EUR",
        +                            "USD",
        +                            "CAD",
        +                            "AUD",
        +                            "NZD",
        +                            "MYR"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "display_name": {
        +                          "type": "string"
        +                        },
        +                        "price_local": {
        +                          "type": "number"
        +                        },
        +                        "tier_slug": {
        +                          "enum": [
        +                            "7_day_pass",
        +                            "solo",
        +                            "studio",
        +                            "practice"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "unlock_summary": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "tier_slug",
        +                        "display_name",
        +                        "price_local",
        +                        "currency",
        +                        "billing",
        +                        "unlock_summary"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "current_tier": {
        +                    "const": "free",
        +                    "default": "free",
        +                    "type": "string"
        +                  },
        +                  "pass_credit": {
        +                    "anyOf": [
        +                      {
        +                        "additionalProperties": false,
        +                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        +                        "properties": {
        +                          "amount_local": {
        +                            "type": "number"
        +                          },
        +                          "applies_to": {
        +                            "const": "solo_first_month",
        +                            "default": "solo_first_month",
        +                            "type": "string"
        +                          },
        +                          "currency": {
        +                            "type": "string"
        +                          },
        +                          "redeemable_until": {
        +                            "type": "string"
        +                          }
        +                        },
        +                        "required": [
        +                          "amount_local",
        +                          "currency",
        +                          "redeemable_until"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "pricing_url": {
        +                    "default": "https://civilquants.com/pricing",
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "available_tiers"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tos_url": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "upgrade_hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "warranty_disclaimer": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          }
        +        },
        +        "required": [
        +          "request_id",
        +          "issued_at",
        +          "tier"
        +        ],
        +        "type": "object"
        +      },
        +      "data": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Schema § 1.1 — the typed payload returned inside `MCPResponse[ComputeResult]`.\n\nFree-tier responses MUST omit `drawings` and `audit_trail` (the bridge\nenforces this); paid-tier responses populate both. `text_summary` is\nbounded to 2000 chars — keeps the LLM-facing summary token-cheap and\nforces longer narrative into BoQ row descriptions where it belongs.\n`warnings` is the non-fatal geometry advisory list (both tiers).",
        +            "properties": {
        +              "assembly_slug": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "audit_trail": {
        +                "anyOf": [
        +                  {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.7 — paid-tier audit-trail entry.\n\nOne entry per BoQ row; `boq_row_index` ties to the row position in\n`ComputeResult.boq_rows`. `derivation` is the human-readable formula\nwalk-through; `formula` is the optional formal expression.",
        +                      "properties": {
        +                        "boq_row_index": {
        +                          "minimum": 0,
        +                          "type": "integer"
        +                        },
        +                        "derivation": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "formula": {
        +                          "anyOf": [
        +                            {
        +                              "type": "string"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ],
        +                          "default": null
        +                        },
        +                        "id": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "parameters_referenced": {
        +                          "items": {
        +                            "type": "string"
        +                          },
        +                          "type": "array"
        +                        }
        +                      },
        +                      "required": [
        +                        "id",
        +                        "boq_row_index",
        +                        "derivation"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "boq_rows": {
        +                "items": {
        +                  "additionalProperties": false,
        +                  "description": "Schema § 1.3 — a single bill row in the requested standard's format.\n\n`description` is the non-verbatim functional description per spec § 13.9 /\n§ 15 invariant — NEVER reproduces a standard's verbatim clause text.\n`rate` / `amount` ship null because rates are commodity data the customer\nowns; the engine's job is the measurement, not the pricing.",
        +                  "properties": {
        +                    "amount": {
        +                      "anyOf": [
        +                        {
        +                          "type": "number"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "attribution": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "audit_id": {
        +                      "anyOf": [
        +                        {
        +                          "type": "string"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "description": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "quantity": {
        +                      "minimum": 0,
        +                      "type": "number"
        +                    },
        +                    "rate": {
        +                      "anyOf": [
        +                        {
        +                          "type": "number"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "unit": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "work_section": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    }
        +                  },
        +                  "required": [
        +                    "work_section",
        +                    "description",
        +                    "quantity",
        +                    "unit",
        +                    "attribution"
        +                  ],
        +                  "type": "object"
        +                },
        +                "type": "array"
        +              },
        +              "drawings": {
        +                "anyOf": [
        +                  {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.6 — paid-tier drawing artefact pointer.\n\n`url` is an R2-signed URL; expiry is carried in `_meta.deliverables.expires_at`\non the envelope (not duplicated here). `layers` is DXF-only; PDF/SVG\ncallers omit it.",
        +                      "properties": {
        +                        "drawing_type": {
        +                          "enum": [
        +                            "section",
        +                            "plan",
        +                            "elevation",
        +                            "isometric",
        +                            "detail"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "format": {
        +                          "enum": [
        +                            "DXF",
        +                            "PDF",
        +                            "SVG"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "layers": {
        +                          "anyOf": [
        +                            {
        +                              "items": {
        +                                "type": "string"
        +                              },
        +                              "type": "array"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ],
        +                          "default": null
        +                        },
        +                        "scale": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "sheet_size": {
        +                          "enum": [
        +                            "A1",
        +                            "A2",
        +                            "A3",
        +                            "A4"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "url": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "drawing_type",
        +                        "format",
        +                        "url",
        +                        "sheet_size",
        +                        "scale"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "parameters_used": {
        +                "additionalProperties": false,
        +                "description": "Schema § 1.2 — the parameter snapshot the engine actually used.\n\nSplits user-supplied values from engine defaults so customers can see\nwhich numbers came from them and which the engine filled in. Every\ndefaulted parameter SHOULD have a corresponding entry in `assumptions`\n— the bridge layer enforces this when wrapping engine output.",
        +                "properties": {
        +                  "assumptions": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "engine_defaults": {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  "resolved_from_description": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "additionalProperties": false,
        +                          "description": "Schema § 1.2 — a parameter resolved by the forgiving-input layer.\n\nPopulated by the Track B-Forgiving Haiku-4.5 resolution pass; until that\nlayer lands, instances are constructed only by tests. `source` distinguishes\nthe resolution path so customers can audit which fields were inferred.",
        +                          "properties": {
        +                            "confidence": {
        +                              "anyOf": [
        +                                {
        +                                  "enum": [
        +                                    "high",
        +                                    "medium",
        +                                    "low"
        +                                  ],
        +                                  "type": "string"
        +                                },
        +                                {
        +                                  "type": "null"
        +                                }
        +                              ],
        +                              "default": null
        +                            },
        +                            "field_name": {
        +                              "minLength": 1,
        +                              "type": "string"
        +                            },
        +                            "resolved_value": {},
        +                            "source": {
        +                              "enum": [
        +                                "description_field",
        +                                "haiku_resolution",
        +                                "engine_default"
        +                              ],
        +                              "type": "string"
        +                            }
        +                          },
        +                          "required": [
        +                            "field_name",
        +                            "resolved_value",
        +                            "source"
        +                          ],
        +                          "type": "object"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "user_supplied": {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  }
        +                },
        +                "type": "object"
        +              },
        +              "standard": {
        +                "enum": [
        +                  "CESMM4",
        +                  "NRM2",
        +                  "SMM7",
        +                  "MMHW"
        +                ],
        +                "type": "string"
        +              },
        +              "text_summary": {
        +                "maxLength": 2000,
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "totals_summary": {
        +                "additionalProperties": false,
        +                "description": "Schema § 1.4 — totals_summary as a typed wrapper around the free-form dict.\n\nWire shape is a flat object (`{\"concrete_m3\": {...}, \"rebar_t\": {...}}`).\nWe model it as `RootModel`-equivalent via `model_config(extra=\"allow\")`\n+ a single `__root__`-style `entries` dict. Pydantic v2 recommends\n`RootModel` for free-form roots; using a wrapper class keeps the import\nsurface uniform with the rest of this module.",
        +                "properties": {
        +                  "entries": {
        +                    "additionalProperties": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.4 — single material/work-class total entry.",
        +                      "properties": {
        +                        "quantity": {
        +                          "minimum": 0,
        +                          "type": "number"
        +                        },
        +                        "unit": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "quantity",
        +                        "unit"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "object"
        +                  }
        +                },
        +                "type": "object"
        +              },
        +              "warnings": {
        +                "items": {
        +                  "additionalProperties": false,
        +                  "description": "Schema § 1.8 — a non-fatal geometry advisory (56th-fire T2).\n\nThe wire projection of the engine's `core.GeometryWarning`. Advisory only:\na warning NEVER changes a measured quantity — it flags geometry that is\nvalid but likely a mistake (e.g. a stale dependent-height default). Present\non BOTH tiers — a correctness/safety signal, not a paid feature.",
        +                  "properties": {
        +                    "affected_params": {
        +                      "items": {
        +                        "type": "string"
        +                      },
        +                      "type": "array"
        +                    },
        +                    "code": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "detail": {
        +                      "additionalProperties": {
        +                        "type": "number"
        +                      },
        +                      "type": "object"
        +                    },
        +                    "message": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "severity": {
        +                      "enum": [
        +                        "info",
        +                        "advisory",
        +                        "caution"
        +                      ],
        +                      "type": "string"
        +                    }
        +                  },
        +                  "required": [
        +                    "code",
        +                    "severity",
        +                    "message"
        +                  ],
        +                  "type": "object"
        +                },
        +                "type": "array"
        +              }
        +            },
        +            "required": [
        +              "assembly_slug",
        +              "standard",
        +              "parameters_used",
        +              "boq_rows",
        +              "totals_summary",
        +              "text_summary"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      },
        +      "error": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        +            "properties": {
        +              "code": {
        +                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        +                "enum": [
        +                  "RATE_LIMIT_EXCEEDED",
        +                  "TIER_INSUFFICIENT",
        +                  "INVALID_INPUT",
        +                  "SCHEMA_VERSION_MISMATCH",
        +                  "SCHEMA_INVARIANT_VIOLATION",
        +                  "UPSTREAM_TIMEOUT",
        +                  "BACKEND_FAILURE",
        +                  "IP_BLOCKED",
        +                  "RESOURCE_NOT_FOUND",
        +                  "RENDER_FAILURE",
        +                  "OCR_LOW_CONFIDENCE",
        +                  "MANUAL_REVIEW_REQUIRED",
        +                  "ACCEPTANCE_REQUIRED",
        +                  "INVALID_TOKEN"
        +                ],
        +                "type": "string"
        +              },
        +              "details": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "message": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "recoverable": {
        +                "type": "boolean"
        +              },
        +              "retry_after_seconds": {
        +                "anyOf": [
        +                  {
        +                    "minimum": 0,
        +                    "type": "integer"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              }
        +            },
        +            "required": [
        +              "code",
        +              "message",
        +              "recoverable"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      }
        +    },
        +    "required": [
        +      "_meta"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "_meta": {
        +        "additionalProperties": false,
        +        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        +        "properties": {
        +          "deliverables": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        +                "properties": {
        +                  "docx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "dxf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "expires_at": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  },
        +                  "pdf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "xlsx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "expires_at"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "document_id": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "issued_at": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "rate_limit_remaining": {
        +            "anyOf": [
        +              {
        +                "minimum": 0,
        +                "type": "integer"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "request_id": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "schema_version": {
        +            "const": "1.0.0",
        +            "default": "1.0.0",
        +            "type": "string"
        +          },
        +          "scope_boundary": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        +                "properties": {
        +                  "not_in_scope": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "produced": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "recommended_companions": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "type": "string"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "produced",
        +                  "not_in_scope"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tier": {
        +            "enum": [
        +              "free",
        +              "paid"
        +            ],
        +            "type": "string"
        +          },
        +          "tier_upgrade": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        +                "properties": {
        +                  "available_tiers": {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        +                      "properties": {
        +                        "billing": {
        +                          "enum": [
        +                            "one_off",
        +                            "monthly",
        +                            "annual"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "currency": {
        +                          "enum": [
        +                            "GBP",
        +                            "SGD",
        +                            "EUR",
        +                            "USD",
        +                            "CAD",
        +                            "AUD",
        +                            "NZD",
        +                            "MYR"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "display_name": {
        +                          "type": "string"
        +                        },
        +                        "price_local": {
        +                          "type": "number"
        +                        },
        +                        "tier_slug": {
        +                          "enum": [
        +                            "7_day_pass",
        +                            "solo",
        +                            "studio",
        +                            "practice"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "unlock_summary": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "tier_slug",
        +                        "display_name",
        +                        "price_local",
        +                        "currency",
        +                        "billing",
        +                        "unlock_summary"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "current_tier": {
        +                    "const": "free",
        +                    "default": "free",
        +                    "type": "string"
        +                  },
        +                  "pass_credit": {
        +                    "anyOf": [
        +                      {
        +                        "additionalProperties": false,
        +                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        +                        "properties": {
        +                          "amount_local": {
        +                            "type": "number"
        +                          },
        +                          "applies_to": {
        +                            "const": "solo_first_month",
        +                            "default": "solo_first_month",
        +                            "type": "string"
        +                          },
        +                          "currency": {
        +                            "type": "string"
        +                          },
        +                          "redeemable_until": {
        +                            "type": "string"
        +                          }
        +                        },
        +                        "required": [
        +                          "amount_local",
        +                          "currency",
        +                          "redeemable_until"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "pricing_url": {
        +                    "default": "https://civilquants.com/pricing",
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "available_tiers"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tos_url": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "upgrade_hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "warranty_disclaimer": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          }
        +        },
        +        "required": [
        +          "request_id",
        +          "issued_at",
        +          "tier"
        +        ],
        +        "type": "object"
        +      },
        +      "data": {
        +        "default": null,
        +        "title": "Data"
        +      },
        +      "error": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        +            "properties": {
        +              "code": {
        +                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        +                "enum": [
        +                  "RATE_LIMIT_EXCEEDED",
        +                  "TIER_INSUFFICIENT",
        +                  "INVALID_INPUT",
        +                  "SCHEMA_VERSION_MISMATCH",
        +                  "SCHEMA_INVARIANT_VIOLATION",
        +                  "UPSTREAM_TIMEOUT",
        +                  "BACKEND_FAILURE",
        +                  "IP_BLOCKED",
        +                  "RESOURCE_NOT_FOUND",
        +                  "RENDER_FAILURE",
        +                  "OCR_LOW_CONFIDENCE",
        +                  "MANUAL_REVIEW_REQUIRED",
        +                  "ACCEPTANCE_REQUIRED",
        +                  "INVALID_TOKEN"
        +                ],
        +                "type": "string"
        +              },
        +              "details": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "message": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "recoverable": {
        +                "type": "boolean"
        +              },
        +              "retry_after_seconds": {
        +                "anyOf": [
        +                  {
        +                    "minimum": 0,
        +                    "type": "integer"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              }
        +            },
        +            "required": [
        +              "code",
        +              "message",
        +              "recoverable"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      }
        +    },
        +    "required": [
        +      "_meta"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedcompute_utility_chamber1 field changed
      • changedOutput schema / properties / result / anyOf
        Previous value: -[
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "_meta": {
        -        "additionalProperties": false,
        -        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        -        "properties": {
        -          "deliverables": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        -                "properties": {
        -                  "docx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "dxf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "expires_at": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  },
        -                  "pdf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "xlsx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "expires_at"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "document_id": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "issued_at": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "rate_limit_remaining": {
        -            "anyOf": [
        -              {
        -                "minimum": 0,
        -                "type": "integer"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "request_id": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "schema_version": {
        -            "const": "1.0.0",
        -            "default": "1.0.0",
        -            "type": "string"
        -          },
        -          "scope_boundary": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        -                "properties": {
        -                  "not_in_scope": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "produced": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "recommended_companions": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "type": "string"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "produced",
        -                  "not_in_scope"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tier": {
        -            "enum": [
        -              "free",
        -              "paid"
        -            ],
        -            "type": "string"
        -          },
        -          "tier_upgrade": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        -                "properties": {
        -                  "available_tiers": {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        -                      "properties": {
        -                        "billing": {
        -                          "enum": [
        -                            "one_off",
        -                            "monthly",
        -                            "annual"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "currency": {
        -                          "enum": [
        -                            "GBP",
        -                            "SGD",
        -                            "EUR",
        -                            "USD",
        -                            "CAD",
        -                            "AUD",
        -                            "NZD",
        -                            "MYR"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "display_name": {
        -                          "type": "string"
        -                        },
        -                        "price_local": {
        -                          "type": "number"
        -                        },
        -                        "tier_slug": {
        -                          "enum": [
        -                            "7_day_pass",
        -                            "solo",
        -                            "studio",
        -                            "practice"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "unlock_summary": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "tier_slug",
        -                        "display_name",
        -                        "price_local",
        -                        "currency",
        -                        "billing",
        -                        "unlock_summary"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "current_tier": {
        -                    "const": "free",
        -                    "default": "free",
        -                    "type": "string"
        -                  },
        -                  "pass_credit": {
        -                    "anyOf": [
        -                      {
        -                        "additionalProperties": false,
        -                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        -                        "properties": {
        -                          "amount_local": {
        -                            "type": "number"
        -                          },
        -                          "applies_to": {
        -                            "const": "solo_first_month",
        -                            "default": "solo_first_month",
        -                            "type": "string"
        -                          },
        -                          "currency": {
        -                            "type": "string"
        -                          },
        -                          "redeemable_until": {
        -                            "type": "string"
        -                          }
        -                        },
        -                        "required": [
        -                          "amount_local",
        -                          "currency",
        -                          "redeemable_until"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "pricing_url": {
        -                    "default": "https://civilquants.com/pricing",
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "available_tiers"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tos_url": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "upgrade_hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "warranty_disclaimer": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          }
        -        },
        -        "required": [
        -          "request_id",
        -          "issued_at",
        -          "tier"
        -        ],
        -        "type": "object"
        -      },
        -      "data": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Schema § 1.1 — the typed payload returned inside `MCPResponse[ComputeResult]`.\n\nFree-tier responses MUST omit `drawings` and `audit_trail` (the bridge\nenforces this); paid-tier responses populate both. `text_summary` is\nbounded to 2000 chars — keeps the LLM-facing summary token-cheap and\nforces longer narrative into BoQ row descriptions where it belongs.",
        -            "properties": {
        -              "assembly_slug": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "audit_trail": {
        -                "anyOf": [
        -                  {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.7 — paid-tier audit-trail entry.\n\nOne entry per BoQ row; `boq_row_index` ties to the row position in\n`ComputeResult.boq_rows`. `derivation` is the human-readable formula\nwalk-through; `formula` is the optional formal expression.",
        -                      "properties": {
        -                        "boq_row_index": {
        -                          "minimum": 0,
        -                          "type": "integer"
        -                        },
        -                        "derivation": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "formula": {
        -                          "anyOf": [
        -                            {
        -                              "type": "string"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ],
        -                          "default": null
        -                        },
        -                        "id": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "parameters_referenced": {
        -                          "items": {
        -                            "type": "string"
        -                          },
        -                          "type": "array"
        -                        }
        -                      },
        -                      "required": [
        -                        "id",
        -                        "boq_row_index",
        -                        "derivation"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "boq_rows": {
        -                "items": {
        -                  "additionalProperties": false,
        -                  "description": "Schema § 1.3 — a single bill row in the requested standard's format.\n\n`description` is the non-verbatim functional description per spec § 13.9 /\n§ 15 invariant — NEVER reproduces a standard's verbatim clause text.\n`rate` / `amount` ship null because rates are commodity data the customer\nowns; the engine's job is the measurement, not the pricing.",
        -                  "properties": {
        -                    "amount": {
        -                      "anyOf": [
        -                        {
        -                          "type": "number"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "attribution": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "audit_id": {
        -                      "anyOf": [
        -                        {
        -                          "type": "string"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "description": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "quantity": {
        -                      "minimum": 0,
        -                      "type": "number"
        -                    },
        -                    "rate": {
        -                      "anyOf": [
        -                        {
        -                          "type": "number"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "unit": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "work_section": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    }
        -                  },
        -                  "required": [
        -                    "work_section",
        -                    "description",
        -                    "quantity",
        -                    "unit",
        -                    "attribution"
        -                  ],
        -                  "type": "object"
        -                },
        -                "type": "array"
        -              },
        -              "drawings": {
        -                "anyOf": [
        -                  {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.6 — paid-tier drawing artefact pointer.\n\n`url` is an R2-signed URL; expiry is carried in `_meta.deliverables.expires_at`\non the envelope (not duplicated here). `layers` is DXF-only; PDF/SVG\ncallers omit it.",
        -                      "properties": {
        -                        "drawing_type": {
        -                          "enum": [
        -                            "section",
        -                            "plan",
        -                            "elevation",
        -                            "isometric",
        -                            "detail"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "format": {
        -                          "enum": [
        -                            "DXF",
        -                            "PDF",
        -                            "SVG"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "layers": {
        -                          "anyOf": [
        -                            {
        -                              "items": {
        -                                "type": "string"
        -                              },
        -                              "type": "array"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ],
        -                          "default": null
        -                        },
        -                        "scale": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "sheet_size": {
        -                          "enum": [
        -                            "A1",
        -                            "A2",
        -                            "A3",
        -                            "A4"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "url": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "drawing_type",
        -                        "format",
        -                        "url",
        -                        "sheet_size",
        -                        "scale"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "parameters_used": {
        -                "additionalProperties": false,
        -                "description": "Schema § 1.2 — the parameter snapshot the engine actually used.\n\nSplits user-supplied values from engine defaults so customers can see\nwhich numbers came from them and which the engine filled in. Every\ndefaulted parameter SHOULD have a corresponding entry in `assumptions`\n— the bridge layer enforces this when wrapping engine output.",
        -                "properties": {
        -                  "assumptions": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "engine_defaults": {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  "resolved_from_description": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "additionalProperties": false,
        -                          "description": "Schema § 1.2 — a parameter resolved by the forgiving-input layer.\n\nPopulated by the Track B-Forgiving Haiku-4.5 resolution pass; until that\nlayer lands, instances are constructed only by tests. `source` distinguishes\nthe resolution path so customers can audit which fields were inferred.",
        -                          "properties": {
        -                            "confidence": {
        -                              "anyOf": [
        -                                {
        -                                  "enum": [
        -                                    "high",
        -                                    "medium",
        -                                    "low"
        -                                  ],
        -                                  "type": "string"
        -                                },
        -                                {
        -                                  "type": "null"
        -                                }
        -                              ],
        -                              "default": null
        -                            },
        -                            "field_name": {
        -                              "minLength": 1,
        -                              "type": "string"
        -                            },
        -                            "resolved_value": {},
        -                            "source": {
        -                              "enum": [
        -                                "description_field",
        -                                "haiku_resolution",
        -                                "engine_default"
        -                              ],
        -                              "type": "string"
        -                            }
        -                          },
        -                          "required": [
        -                            "field_name",
        -                            "resolved_value",
        -                            "source"
        -                          ],
        -                          "type": "object"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "user_supplied": {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  }
        -                },
        -                "type": "object"
        -              },
        -              "standard": {
        -                "enum": [
        -                  "CESMM4",
        -                  "NRM2",
        -                  "SMM7",
        -                  "MMHW"
        -                ],
        -                "type": "string"
        -              },
        -              "text_summary": {
        -                "maxLength": 2000,
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "totals_summary": {
        -                "additionalProperties": false,
        -                "description": "Schema § 1.4 — totals_summary as a typed wrapper around the free-form dict.\n\nWire shape is a flat object (`{\"concrete_m3\": {...}, \"rebar_t\": {...}}`).\nWe model it as `RootModel`-equivalent via `model_config(extra=\"allow\")`\n+ a single `__root__`-style `entries` dict. Pydantic v2 recommends\n`RootModel` for free-form roots; using a wrapper class keeps the import\nsurface uniform with the rest of this module.",
        -                "properties": {
        -                  "entries": {
        -                    "additionalProperties": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.4 — single material/work-class total entry.",
        -                      "properties": {
        -                        "quantity": {
        -                          "minimum": 0,
        -                          "type": "number"
        -                        },
        -                        "unit": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "quantity",
        -                        "unit"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "object"
        -                  }
        -                },
        -                "type": "object"
        -              }
        -            },
        -            "required": [
        -              "assembly_slug",
        -              "standard",
        -              "parameters_used",
        -              "boq_rows",
        -              "totals_summary",
        -              "text_summary"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      },
        -      "error": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        -            "properties": {
        -              "code": {
        -                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        -                "enum": [
        -                  "RATE_LIMIT_EXCEEDED",
        -                  "TIER_INSUFFICIENT",
        -                  "INVALID_INPUT",
        -                  "SCHEMA_VERSION_MISMATCH",
        -                  "SCHEMA_INVARIANT_VIOLATION",
        -                  "UPSTREAM_TIMEOUT",
        -                  "BACKEND_FAILURE",
        -                  "IP_BLOCKED",
        -                  "RESOURCE_NOT_FOUND",
        -                  "RENDER_FAILURE",
        -                  "OCR_LOW_CONFIDENCE",
        -                  "MANUAL_REVIEW_REQUIRED",
        -                  "ACCEPTANCE_REQUIRED",
        -                  "INVALID_TOKEN"
        -                ],
        -                "type": "string"
        -              },
        -              "details": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "message": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "recoverable": {
        -                "type": "boolean"
        -              },
        -              "retry_after_seconds": {
        -                "anyOf": [
        -                  {
        -                    "minimum": 0,
        -                    "type": "integer"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              }
        -            },
        -            "required": [
        -              "code",
        -              "message",
        -              "recoverable"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      }
        -    },
        -    "required": [
        -      "_meta"
        -    ],
        -    "type": "object"
        -  },
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "_meta": {
        -        "additionalProperties": false,
        -        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        -        "properties": {
        -          "deliverables": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        -                "properties": {
        -                  "docx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "dxf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "expires_at": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  },
        -                  "pdf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "xlsx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "expires_at"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "document_id": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "issued_at": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "rate_limit_remaining": {
        -            "anyOf": [
        -              {
        -                "minimum": 0,
        -                "type": "integer"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "request_id": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "schema_version": {
        -            "const": "1.0.0",
        -            "default": "1.0.0",
        -            "type": "string"
        -          },
        -          "scope_boundary": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        -                "properties": {
        -                  "not_in_scope": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "produced": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "recommended_companions": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "type": "string"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "produced",
        -                  "not_in_scope"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tier": {
        -            "enum": [
        -              "free",
        -              "paid"
        -            ],
        -            "type": "string"
        -          },
        -          "tier_upgrade": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        -                "properties": {
        -                  "available_tiers": {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        -                      "properties": {
        -                        "billing": {
        -                          "enum": [
        -                            "one_off",
        -                            "monthly",
        -                            "annual"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "currency": {
        -                          "enum": [
        -                            "GBP",
        -                            "SGD",
        -                            "EUR",
        -                            "USD",
        -                            "CAD",
        -                            "AUD",
        -                            "NZD",
        -                            "MYR"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "display_name": {
        -                          "type": "string"
        -                        },
        -                        "price_local": {
        -                          "type": "number"
        -                        },
        -                        "tier_slug": {
        -                          "enum": [
        -                            "7_day_pass",
        -                            "solo",
        -                            "studio",
        -                            "practice"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "unlock_summary": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "tier_slug",
        -                        "display_name",
        -                        "price_local",
        -                        "currency",
        -                        "billing",
        -                        "unlock_summary"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "current_tier": {
        -                    "const": "free",
        -                    "default": "free",
        -                    "type": "string"
        -                  },
        -                  "pass_credit": {
        -                    "anyOf": [
        -                      {
        -                        "additionalProperties": false,
        -                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        -                        "properties": {
        -                          "amount_local": {
        -                            "type": "number"
        -                          },
        -                          "applies_to": {
        -                            "const": "solo_first_month",
        -                            "default": "solo_first_month",
        -                            "type": "string"
        -                          },
        -                          "currency": {
        -                            "type": "string"
        -                          },
        -                          "redeemable_until": {
        -                            "type": "string"
        -                          }
        -                        },
        -                        "required": [
        -                          "amount_local",
        -                          "currency",
        -                          "redeemable_until"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "pricing_url": {
        -                    "default": "https://civilquants.com/pricing",
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "available_tiers"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tos_url": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "upgrade_hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "warranty_disclaimer": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          }
        -        },
        -        "required": [
        -          "request_id",
        -          "issued_at",
        -          "tier"
        -        ],
        -        "type": "object"
        -      },
        -      "data": {
        -        "default": null,
        -        "title": "Data"
        -      },
        -      "error": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        -            "properties": {
        -              "code": {
        -                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        -                "enum": [
        -                  "RATE_LIMIT_EXCEEDED",
        -                  "TIER_INSUFFICIENT",
        -                  "INVALID_INPUT",
        -                  "SCHEMA_VERSION_MISMATCH",
        -                  "SCHEMA_INVARIANT_VIOLATION",
        -                  "UPSTREAM_TIMEOUT",
        -                  "BACKEND_FAILURE",
        -                  "IP_BLOCKED",
        -                  "RESOURCE_NOT_FOUND",
        -                  "RENDER_FAILURE",
        -                  "OCR_LOW_CONFIDENCE",
        -                  "MANUAL_REVIEW_REQUIRED",
        -                  "ACCEPTANCE_REQUIRED",
        -                  "INVALID_TOKEN"
        -                ],
        -                "type": "string"
        -              },
        -              "details": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "message": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "recoverable": {
        -                "type": "boolean"
        -              },
        -              "retry_after_seconds": {
        -                "anyOf": [
        -                  {
        -                    "minimum": 0,
        -                    "type": "integer"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              }
        -            },
        -            "required": [
        -              "code",
        -              "message",
        -              "recoverable"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      }
        -    },
        -    "required": [
        -      "_meta"
        -    ],
        -    "type": "object"
        -  }
        -]New value: +[
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "_meta": {
        +        "additionalProperties": false,
        +        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        +        "properties": {
        +          "deliverables": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        +                "properties": {
        +                  "docx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "dxf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "expires_at": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  },
        +                  "pdf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "xlsx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "expires_at"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "document_id": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "issued_at": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "rate_limit_remaining": {
        +            "anyOf": [
        +              {
        +                "minimum": 0,
        +                "type": "integer"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "request_id": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "schema_version": {
        +            "const": "1.0.0",
        +            "default": "1.0.0",
        +            "type": "string"
        +          },
        +          "scope_boundary": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        +                "properties": {
        +                  "not_in_scope": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "produced": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "recommended_companions": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "type": "string"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "produced",
        +                  "not_in_scope"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tier": {
        +            "enum": [
        +              "free",
        +              "paid"
        +            ],
        +            "type": "string"
        +          },
        +          "tier_upgrade": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        +                "properties": {
        +                  "available_tiers": {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        +                      "properties": {
        +                        "billing": {
        +                          "enum": [
        +                            "one_off",
        +                            "monthly",
        +                            "annual"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "currency": {
        +                          "enum": [
        +                            "GBP",
        +                            "SGD",
        +                            "EUR",
        +                            "USD",
        +                            "CAD",
        +                            "AUD",
        +                            "NZD",
        +                            "MYR"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "display_name": {
        +                          "type": "string"
        +                        },
        +                        "price_local": {
        +                          "type": "number"
        +                        },
        +                        "tier_slug": {
        +                          "enum": [
        +                            "7_day_pass",
        +                            "solo",
        +                            "studio",
        +                            "practice"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "unlock_summary": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "tier_slug",
        +                        "display_name",
        +                        "price_local",
        +                        "currency",
        +                        "billing",
        +                        "unlock_summary"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "current_tier": {
        +                    "const": "free",
        +                    "default": "free",
        +                    "type": "string"
        +                  },
        +                  "pass_credit": {
        +                    "anyOf": [
        +                      {
        +                        "additionalProperties": false,
        +                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        +                        "properties": {
        +                          "amount_local": {
        +                            "type": "number"
        +                          },
        +                          "applies_to": {
        +                            "const": "solo_first_month",
        +                            "default": "solo_first_month",
        +                            "type": "string"
        +                          },
        +                          "currency": {
        +                            "type": "string"
        +                          },
        +                          "redeemable_until": {
        +                            "type": "string"
        +                          }
        +                        },
        +                        "required": [
        +                          "amount_local",
        +                          "currency",
        +                          "redeemable_until"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "pricing_url": {
        +                    "default": "https://civilquants.com/pricing",
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "available_tiers"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tos_url": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "upgrade_hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "warranty_disclaimer": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          }
        +        },
        +        "required": [
        +          "request_id",
        +          "issued_at",
        +          "tier"
        +        ],
        +        "type": "object"
        +      },
        +      "data": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Schema § 1.1 — the typed payload returned inside `MCPResponse[ComputeResult]`.\n\nFree-tier responses MUST omit `drawings` and `audit_trail` (the bridge\nenforces this); paid-tier responses populate both. `text_summary` is\nbounded to 2000 chars — keeps the LLM-facing summary token-cheap and\nforces longer narrative into BoQ row descriptions where it belongs.\n`warnings` is the non-fatal geometry advisory list (both tiers).",
        +            "properties": {
        +              "assembly_slug": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "audit_trail": {
        +                "anyOf": [
        +                  {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.7 — paid-tier audit-trail entry.\n\nOne entry per BoQ row; `boq_row_index` ties to the row position in\n`ComputeResult.boq_rows`. `derivation` is the human-readable formula\nwalk-through; `formula` is the optional formal expression.",
        +                      "properties": {
        +                        "boq_row_index": {
        +                          "minimum": 0,
        +                          "type": "integer"
        +                        },
        +                        "derivation": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "formula": {
        +                          "anyOf": [
        +                            {
        +                              "type": "string"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ],
        +                          "default": null
        +                        },
        +                        "id": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "parameters_referenced": {
        +                          "items": {
        +                            "type": "string"
        +                          },
        +                          "type": "array"
        +                        }
        +                      },
        +                      "required": [
        +                        "id",
        +                        "boq_row_index",
        +                        "derivation"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "boq_rows": {
        +                "items": {
        +                  "additionalProperties": false,
        +                  "description": "Schema § 1.3 — a single bill row in the requested standard's format.\n\n`description` is the non-verbatim functional description per spec § 13.9 /\n§ 15 invariant — NEVER reproduces a standard's verbatim clause text.\n`rate` / `amount` ship null because rates are commodity data the customer\nowns; the engine's job is the measurement, not the pricing.",
        +                  "properties": {
        +                    "amount": {
        +                      "anyOf": [
        +                        {
        +                          "type": "number"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "attribution": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "audit_id": {
        +                      "anyOf": [
        +                        {
        +                          "type": "string"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "description": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "quantity": {
        +                      "minimum": 0,
        +                      "type": "number"
        +                    },
        +                    "rate": {
        +                      "anyOf": [
        +                        {
        +                          "type": "number"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "unit": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "work_section": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    }
        +                  },
        +                  "required": [
        +                    "work_section",
        +                    "description",
        +                    "quantity",
        +                    "unit",
        +                    "attribution"
        +                  ],
        +                  "type": "object"
        +                },
        +                "type": "array"
        +              },
        +              "drawings": {
        +                "anyOf": [
        +                  {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.6 — paid-tier drawing artefact pointer.\n\n`url` is an R2-signed URL; expiry is carried in `_meta.deliverables.expires_at`\non the envelope (not duplicated here). `layers` is DXF-only; PDF/SVG\ncallers omit it.",
        +                      "properties": {
        +                        "drawing_type": {
        +                          "enum": [
        +                            "section",
        +                            "plan",
        +                            "elevation",
        +                            "isometric",
        +                            "detail"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "format": {
        +                          "enum": [
        +                            "DXF",
        +                            "PDF",
        +                            "SVG"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "layers": {
        +                          "anyOf": [
        +                            {
        +                              "items": {
        +                                "type": "string"
        +                              },
        +                              "type": "array"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ],
        +                          "default": null
        +                        },
        +                        "scale": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "sheet_size": {
        +                          "enum": [
        +                            "A1",
        +                            "A2",
        +                            "A3",
        +                            "A4"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "url": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "drawing_type",
        +                        "format",
        +                        "url",
        +                        "sheet_size",
        +                        "scale"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "parameters_used": {
        +                "additionalProperties": false,
        +                "description": "Schema § 1.2 — the parameter snapshot the engine actually used.\n\nSplits user-supplied values from engine defaults so customers can see\nwhich numbers came from them and which the engine filled in. Every\ndefaulted parameter SHOULD have a corresponding entry in `assumptions`\n— the bridge layer enforces this when wrapping engine output.",
        +                "properties": {
        +                  "assumptions": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "engine_defaults": {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  "resolved_from_description": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "additionalProperties": false,
        +                          "description": "Schema § 1.2 — a parameter resolved by the forgiving-input layer.\n\nPopulated by the Track B-Forgiving Haiku-4.5 resolution pass; until that\nlayer lands, instances are constructed only by tests. `source` distinguishes\nthe resolution path so customers can audit which fields were inferred.",
        +                          "properties": {
        +                            "confidence": {
        +                              "anyOf": [
        +                                {
        +                                  "enum": [
        +                                    "high",
        +                                    "medium",
        +                                    "low"
        +                                  ],
        +                                  "type": "string"
        +                                },
        +                                {
        +                                  "type": "null"
        +                                }
        +                              ],
        +                              "default": null
        +                            },
        +                            "field_name": {
        +                              "minLength": 1,
        +                              "type": "string"
        +                            },
        +                            "resolved_value": {},
        +                            "source": {
        +                              "enum": [
        +                                "description_field",
        +                                "haiku_resolution",
        +                                "engine_default"
        +                              ],
        +                              "type": "string"
        +                            }
        +                          },
        +                          "required": [
        +                            "field_name",
        +                            "resolved_value",
        +                            "source"
        +                          ],
        +                          "type": "object"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "user_supplied": {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  }
        +                },
        +                "type": "object"
        +              },
        +              "standard": {
        +                "enum": [
        +                  "CESMM4",
        +                  "NRM2",
        +                  "SMM7",
        +                  "MMHW"
        +                ],
        +                "type": "string"
        +              },
        +              "text_summary": {
        +                "maxLength": 2000,
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "totals_summary": {
        +                "additionalProperties": false,
        +                "description": "Schema § 1.4 — totals_summary as a typed wrapper around the free-form dict.\n\nWire shape is a flat object (`{\"concrete_m3\": {...}, \"rebar_t\": {...}}`).\nWe model it as `RootModel`-equivalent via `model_config(extra=\"allow\")`\n+ a single `__root__`-style `entries` dict. Pydantic v2 recommends\n`RootModel` for free-form roots; using a wrapper class keeps the import\nsurface uniform with the rest of this module.",
        +                "properties": {
        +                  "entries": {
        +                    "additionalProperties": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.4 — single material/work-class total entry.",
        +                      "properties": {
        +                        "quantity": {
        +                          "minimum": 0,
        +                          "type": "number"
        +                        },
        +                        "unit": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "quantity",
        +                        "unit"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "object"
        +                  }
        +                },
        +                "type": "object"
        +              },
        +              "warnings": {
        +                "items": {
        +                  "additionalProperties": false,
        +                  "description": "Schema § 1.8 — a non-fatal geometry advisory (56th-fire T2).\n\nThe wire projection of the engine's `core.GeometryWarning`. Advisory only:\na warning NEVER changes a measured quantity — it flags geometry that is\nvalid but likely a mistake (e.g. a stale dependent-height default). Present\non BOTH tiers — a correctness/safety signal, not a paid feature.",
        +                  "properties": {
        +                    "affected_params": {
        +                      "items": {
        +                        "type": "string"
        +                      },
        +                      "type": "array"
        +                    },
        +                    "code": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "detail": {
        +                      "additionalProperties": {
        +                        "type": "number"
        +                      },
        +                      "type": "object"
        +                    },
        +                    "message": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "severity": {
        +                      "enum": [
        +                        "info",
        +                        "advisory",
        +                        "caution"
        +                      ],
        +                      "type": "string"
        +                    }
        +                  },
        +                  "required": [
        +                    "code",
        +                    "severity",
        +                    "message"
        +                  ],
        +                  "type": "object"
        +                },
        +                "type": "array"
        +              }
        +            },
        +            "required": [
        +              "assembly_slug",
        +              "standard",
        +              "parameters_used",
        +              "boq_rows",
        +              "totals_summary",
        +              "text_summary"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      },
        +      "error": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        +            "properties": {
        +              "code": {
        +                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        +                "enum": [
        +                  "RATE_LIMIT_EXCEEDED",
        +                  "TIER_INSUFFICIENT",
        +                  "INVALID_INPUT",
        +                  "SCHEMA_VERSION_MISMATCH",
        +                  "SCHEMA_INVARIANT_VIOLATION",
        +                  "UPSTREAM_TIMEOUT",
        +                  "BACKEND_FAILURE",
        +                  "IP_BLOCKED",
        +                  "RESOURCE_NOT_FOUND",
        +                  "RENDER_FAILURE",
        +                  "OCR_LOW_CONFIDENCE",
        +                  "MANUAL_REVIEW_REQUIRED",
        +                  "ACCEPTANCE_REQUIRED",
        +                  "INVALID_TOKEN"
        +                ],
        +                "type": "string"
        +              },
        +              "details": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "message": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "recoverable": {
        +                "type": "boolean"
        +              },
        +              "retry_after_seconds": {
        +                "anyOf": [
        +                  {
        +                    "minimum": 0,
        +                    "type": "integer"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              }
        +            },
        +            "required": [
        +              "code",
        +              "message",
        +              "recoverable"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      }
        +    },
        +    "required": [
        +      "_meta"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "_meta": {
        +        "additionalProperties": false,
        +        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        +        "properties": {
        +          "deliverables": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        +                "properties": {
        +                  "docx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "dxf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "expires_at": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  },
        +                  "pdf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "xlsx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "expires_at"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "document_id": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "issued_at": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "rate_limit_remaining": {
        +            "anyOf": [
        +              {
        +                "minimum": 0,
        +                "type": "integer"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "request_id": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "schema_version": {
        +            "const": "1.0.0",
        +            "default": "1.0.0",
        +            "type": "string"
        +          },
        +          "scope_boundary": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        +                "properties": {
        +                  "not_in_scope": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "produced": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "recommended_companions": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "type": "string"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "produced",
        +                  "not_in_scope"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tier": {
        +            "enum": [
        +              "free",
        +              "paid"
        +            ],
        +            "type": "string"
        +          },
        +          "tier_upgrade": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        +                "properties": {
        +                  "available_tiers": {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        +                      "properties": {
        +                        "billing": {
        +                          "enum": [
        +                            "one_off",
        +                            "monthly",
        +                            "annual"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "currency": {
        +                          "enum": [
        +                            "GBP",
        +                            "SGD",
        +                            "EUR",
        +                            "USD",
        +                            "CAD",
        +                            "AUD",
        +                            "NZD",
        +                            "MYR"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "display_name": {
        +                          "type": "string"
        +                        },
        +                        "price_local": {
        +                          "type": "number"
        +                        },
        +                        "tier_slug": {
        +                          "enum": [
        +                            "7_day_pass",
        +                            "solo",
        +                            "studio",
        +                            "practice"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "unlock_summary": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "tier_slug",
        +                        "display_name",
        +                        "price_local",
        +                        "currency",
        +                        "billing",
        +                        "unlock_summary"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "current_tier": {
        +                    "const": "free",
        +                    "default": "free",
        +                    "type": "string"
        +                  },
        +                  "pass_credit": {
        +                    "anyOf": [
        +                      {
        +                        "additionalProperties": false,
        +                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        +                        "properties": {
        +                          "amount_local": {
        +                            "type": "number"
        +                          },
        +                          "applies_to": {
        +                            "const": "solo_first_month",
        +                            "default": "solo_first_month",
        +                            "type": "string"
        +                          },
        +                          "currency": {
        +                            "type": "string"
        +                          },
        +                          "redeemable_until": {
        +                            "type": "string"
        +                          }
        +                        },
        +                        "required": [
        +                          "amount_local",
        +                          "currency",
        +                          "redeemable_until"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "pricing_url": {
        +                    "default": "https://civilquants.com/pricing",
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "available_tiers"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tos_url": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "upgrade_hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "warranty_disclaimer": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          }
        +        },
        +        "required": [
        +          "request_id",
        +          "issued_at",
        +          "tier"
        +        ],
        +        "type": "object"
        +      },
        +      "data": {
        +        "default": null,
        +        "title": "Data"
        +      },
        +      "error": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        +            "properties": {
        +              "code": {
        +                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        +                "enum": [
        +                  "RATE_LIMIT_EXCEEDED",
        +                  "TIER_INSUFFICIENT",
        +                  "INVALID_INPUT",
        +                  "SCHEMA_VERSION_MISMATCH",
        +                  "SCHEMA_INVARIANT_VIOLATION",
        +                  "UPSTREAM_TIMEOUT",
        +                  "BACKEND_FAILURE",
        +                  "IP_BLOCKED",
        +                  "RESOURCE_NOT_FOUND",
        +                  "RENDER_FAILURE",
        +                  "OCR_LOW_CONFIDENCE",
        +                  "MANUAL_REVIEW_REQUIRED",
        +                  "ACCEPTANCE_REQUIRED",
        +                  "INVALID_TOKEN"
        +                ],
        +                "type": "string"
        +              },
        +              "details": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "message": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "recoverable": {
        +                "type": "boolean"
        +              },
        +              "retry_after_seconds": {
        +                "anyOf": [
        +                  {
        +                    "minimum": 0,
        +                    "type": "integer"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              }
        +            },
        +            "required": [
        +              "code",
        +              "message",
        +              "recoverable"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      }
        +    },
        +    "required": [
        +      "_meta"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedcompute_utility_kiosk_base1 field changed
      • changedOutput schema / properties / result / anyOf
        Previous value: -[
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "_meta": {
        -        "additionalProperties": false,
        -        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        -        "properties": {
        -          "deliverables": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        -                "properties": {
        -                  "docx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "dxf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "expires_at": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  },
        -                  "pdf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "xlsx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "expires_at"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "document_id": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "issued_at": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "rate_limit_remaining": {
        -            "anyOf": [
        -              {
        -                "minimum": 0,
        -                "type": "integer"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "request_id": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "schema_version": {
        -            "const": "1.0.0",
        -            "default": "1.0.0",
        -            "type": "string"
        -          },
        -          "scope_boundary": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        -                "properties": {
        -                  "not_in_scope": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "produced": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "recommended_companions": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "type": "string"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "produced",
        -                  "not_in_scope"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tier": {
        -            "enum": [
        -              "free",
        -              "paid"
        -            ],
        -            "type": "string"
        -          },
        -          "tier_upgrade": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        -                "properties": {
        -                  "available_tiers": {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        -                      "properties": {
        -                        "billing": {
        -                          "enum": [
        -                            "one_off",
        -                            "monthly",
        -                            "annual"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "currency": {
        -                          "enum": [
        -                            "GBP",
        -                            "SGD",
        -                            "EUR",
        -                            "USD",
        -                            "CAD",
        -                            "AUD",
        -                            "NZD",
        -                            "MYR"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "display_name": {
        -                          "type": "string"
        -                        },
        -                        "price_local": {
        -                          "type": "number"
        -                        },
        -                        "tier_slug": {
        -                          "enum": [
        -                            "7_day_pass",
        -                            "solo",
        -                            "studio",
        -                            "practice"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "unlock_summary": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "tier_slug",
        -                        "display_name",
        -                        "price_local",
        -                        "currency",
        -                        "billing",
        -                        "unlock_summary"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "current_tier": {
        -                    "const": "free",
        -                    "default": "free",
        -                    "type": "string"
        -                  },
        -                  "pass_credit": {
        -                    "anyOf": [
        -                      {
        -                        "additionalProperties": false,
        -                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        -                        "properties": {
        -                          "amount_local": {
        -                            "type": "number"
        -                          },
        -                          "applies_to": {
        -                            "const": "solo_first_month",
        -                            "default": "solo_first_month",
        -                            "type": "string"
        -                          },
        -                          "currency": {
        -                            "type": "string"
        -                          },
        -                          "redeemable_until": {
        -                            "type": "string"
        -                          }
        -                        },
        -                        "required": [
        -                          "amount_local",
        -                          "currency",
        -                          "redeemable_until"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "pricing_url": {
        -                    "default": "https://civilquants.com/pricing",
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "available_tiers"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tos_url": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "upgrade_hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "warranty_disclaimer": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          }
        -        },
        -        "required": [
        -          "request_id",
        -          "issued_at",
        -          "tier"
        -        ],
        -        "type": "object"
        -      },
        -      "data": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Schema § 1.1 — the typed payload returned inside `MCPResponse[ComputeResult]`.\n\nFree-tier responses MUST omit `drawings` and `audit_trail` (the bridge\nenforces this); paid-tier responses populate both. `text_summary` is\nbounded to 2000 chars — keeps the LLM-facing summary token-cheap and\nforces longer narrative into BoQ row descriptions where it belongs.",
        -            "properties": {
        -              "assembly_slug": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "audit_trail": {
        -                "anyOf": [
        -                  {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.7 — paid-tier audit-trail entry.\n\nOne entry per BoQ row; `boq_row_index` ties to the row position in\n`ComputeResult.boq_rows`. `derivation` is the human-readable formula\nwalk-through; `formula` is the optional formal expression.",
        -                      "properties": {
        -                        "boq_row_index": {
        -                          "minimum": 0,
        -                          "type": "integer"
        -                        },
        -                        "derivation": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "formula": {
        -                          "anyOf": [
        -                            {
        -                              "type": "string"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ],
        -                          "default": null
        -                        },
        -                        "id": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "parameters_referenced": {
        -                          "items": {
        -                            "type": "string"
        -                          },
        -                          "type": "array"
        -                        }
        -                      },
        -                      "required": [
        -                        "id",
        -                        "boq_row_index",
        -                        "derivation"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "boq_rows": {
        -                "items": {
        -                  "additionalProperties": false,
        -                  "description": "Schema § 1.3 — a single bill row in the requested standard's format.\n\n`description` is the non-verbatim functional description per spec § 13.9 /\n§ 15 invariant — NEVER reproduces a standard's verbatim clause text.\n`rate` / `amount` ship null because rates are commodity data the customer\nowns; the engine's job is the measurement, not the pricing.",
        -                  "properties": {
        -                    "amount": {
        -                      "anyOf": [
        -                        {
        -                          "type": "number"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "attribution": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "audit_id": {
        -                      "anyOf": [
        -                        {
        -                          "type": "string"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "description": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "quantity": {
        -                      "minimum": 0,
        -                      "type": "number"
        -                    },
        -                    "rate": {
        -                      "anyOf": [
        -                        {
        -                          "type": "number"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "unit": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "work_section": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    }
        -                  },
        -                  "required": [
        -                    "work_section",
        -                    "description",
        -                    "quantity",
        -                    "unit",
        -                    "attribution"
        -                  ],
        -                  "type": "object"
        -                },
        -                "type": "array"
        -              },
        -              "drawings": {
        -                "anyOf": [
        -                  {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.6 — paid-tier drawing artefact pointer.\n\n`url` is an R2-signed URL; expiry is carried in `_meta.deliverables.expires_at`\non the envelope (not duplicated here). `layers` is DXF-only; PDF/SVG\ncallers omit it.",
        -                      "properties": {
        -                        "drawing_type": {
        -                          "enum": [
        -                            "section",
        -                            "plan",
        -                            "elevation",
        -                            "isometric",
        -                            "detail"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "format": {
        -                          "enum": [
        -                            "DXF",
        -                            "PDF",
        -                            "SVG"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "layers": {
        -                          "anyOf": [
        -                            {
        -                              "items": {
        -                                "type": "string"
        -                              },
        -                              "type": "array"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ],
        -                          "default": null
        -                        },
        -                        "scale": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "sheet_size": {
        -                          "enum": [
        -                            "A1",
        -                            "A2",
        -                            "A3",
        -                            "A4"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "url": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "drawing_type",
        -                        "format",
        -                        "url",
        -                        "sheet_size",
        -                        "scale"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "parameters_used": {
        -                "additionalProperties": false,
        -                "description": "Schema § 1.2 — the parameter snapshot the engine actually used.\n\nSplits user-supplied values from engine defaults so customers can see\nwhich numbers came from them and which the engine filled in. Every\ndefaulted parameter SHOULD have a corresponding entry in `assumptions`\n— the bridge layer enforces this when wrapping engine output.",
        -                "properties": {
        -                  "assumptions": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "engine_defaults": {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  "resolved_from_description": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "additionalProperties": false,
        -                          "description": "Schema § 1.2 — a parameter resolved by the forgiving-input layer.\n\nPopulated by the Track B-Forgiving Haiku-4.5 resolution pass; until that\nlayer lands, instances are constructed only by tests. `source` distinguishes\nthe resolution path so customers can audit which fields were inferred.",
        -                          "properties": {
        -                            "confidence": {
        -                              "anyOf": [
        -                                {
        -                                  "enum": [
        -                                    "high",
        -                                    "medium",
        -                                    "low"
        -                                  ],
        -                                  "type": "string"
        -                                },
        -                                {
        -                                  "type": "null"
        -                                }
        -                              ],
        -                              "default": null
        -                            },
        -                            "field_name": {
        -                              "minLength": 1,
        -                              "type": "string"
        -                            },
        -                            "resolved_value": {},
        -                            "source": {
        -                              "enum": [
        -                                "description_field",
        -                                "haiku_resolution",
        -                                "engine_default"
        -                              ],
        -                              "type": "string"
        -                            }
        -                          },
        -                          "required": [
        -                            "field_name",
        -                            "resolved_value",
        -                            "source"
        -                          ],
        -                          "type": "object"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "user_supplied": {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  }
        -                },
        -                "type": "object"
        -              },
        -              "standard": {
        -                "enum": [
        -                  "CESMM4",
        -                  "NRM2",
        -                  "SMM7",
        -                  "MMHW"
        -                ],
        -                "type": "string"
        -              },
        -              "text_summary": {
        -                "maxLength": 2000,
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "totals_summary": {
        -                "additionalProperties": false,
        -                "description": "Schema § 1.4 — totals_summary as a typed wrapper around the free-form dict.\n\nWire shape is a flat object (`{\"concrete_m3\": {...}, \"rebar_t\": {...}}`).\nWe model it as `RootModel`-equivalent via `model_config(extra=\"allow\")`\n+ a single `__root__`-style `entries` dict. Pydantic v2 recommends\n`RootModel` for free-form roots; using a wrapper class keeps the import\nsurface uniform with the rest of this module.",
        -                "properties": {
        -                  "entries": {
        -                    "additionalProperties": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.4 — single material/work-class total entry.",
        -                      "properties": {
        -                        "quantity": {
        -                          "minimum": 0,
        -                          "type": "number"
        -                        },
        -                        "unit": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "quantity",
        -                        "unit"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "object"
        -                  }
        -                },
        -                "type": "object"
        -              }
        -            },
        -            "required": [
        -              "assembly_slug",
        -              "standard",
        -              "parameters_used",
        -              "boq_rows",
        -              "totals_summary",
        -              "text_summary"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      },
        -      "error": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        -            "properties": {
        -              "code": {
        -                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        -                "enum": [
        -                  "RATE_LIMIT_EXCEEDED",
        -                  "TIER_INSUFFICIENT",
        -                  "INVALID_INPUT",
        -                  "SCHEMA_VERSION_MISMATCH",
        -                  "SCHEMA_INVARIANT_VIOLATION",
        -                  "UPSTREAM_TIMEOUT",
        -                  "BACKEND_FAILURE",
        -                  "IP_BLOCKED",
        -                  "RESOURCE_NOT_FOUND",
        -                  "RENDER_FAILURE",
        -                  "OCR_LOW_CONFIDENCE",
        -                  "MANUAL_REVIEW_REQUIRED",
        -                  "ACCEPTANCE_REQUIRED",
        -                  "INVALID_TOKEN"
        -                ],
        -                "type": "string"
        -              },
        -              "details": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "message": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "recoverable": {
        -                "type": "boolean"
        -              },
        -              "retry_after_seconds": {
        -                "anyOf": [
        -                  {
        -                    "minimum": 0,
        -                    "type": "integer"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              }
        -            },
        -            "required": [
        -              "code",
        -              "message",
        -              "recoverable"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      }
        -    },
        -    "required": [
        -      "_meta"
        -    ],
        -    "type": "object"
        -  },
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "_meta": {
        -        "additionalProperties": false,
        -        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        -        "properties": {
        -          "deliverables": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        -                "properties": {
        -                  "docx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "dxf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "expires_at": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  },
        -                  "pdf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "xlsx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "expires_at"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "document_id": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "issued_at": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "rate_limit_remaining": {
        -            "anyOf": [
        -              {
        -                "minimum": 0,
        -                "type": "integer"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "request_id": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "schema_version": {
        -            "const": "1.0.0",
        -            "default": "1.0.0",
        -            "type": "string"
        -          },
        -          "scope_boundary": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        -                "properties": {
        -                  "not_in_scope": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "produced": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "recommended_companions": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "type": "string"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "produced",
        -                  "not_in_scope"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tier": {
        -            "enum": [
        -              "free",
        -              "paid"
        -            ],
        -            "type": "string"
        -          },
        -          "tier_upgrade": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        -                "properties": {
        -                  "available_tiers": {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        -                      "properties": {
        -                        "billing": {
        -                          "enum": [
        -                            "one_off",
        -                            "monthly",
        -                            "annual"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "currency": {
        -                          "enum": [
        -                            "GBP",
        -                            "SGD",
        -                            "EUR",
        -                            "USD",
        -                            "CAD",
        -                            "AUD",
        -                            "NZD",
        -                            "MYR"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "display_name": {
        -                          "type": "string"
        -                        },
        -                        "price_local": {
        -                          "type": "number"
        -                        },
        -                        "tier_slug": {
        -                          "enum": [
        -                            "7_day_pass",
        -                            "solo",
        -                            "studio",
        -                            "practice"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "unlock_summary": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "tier_slug",
        -                        "display_name",
        -                        "price_local",
        -                        "currency",
        -                        "billing",
        -                        "unlock_summary"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "current_tier": {
        -                    "const": "free",
        -                    "default": "free",
        -                    "type": "string"
        -                  },
        -                  "pass_credit": {
        -                    "anyOf": [
        -                      {
        -                        "additionalProperties": false,
        -                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        -                        "properties": {
        -                          "amount_local": {
        -                            "type": "number"
        -                          },
        -                          "applies_to": {
        -                            "const": "solo_first_month",
        -                            "default": "solo_first_month",
        -                            "type": "string"
        -                          },
        -                          "currency": {
        -                            "type": "string"
        -                          },
        -                          "redeemable_until": {
        -                            "type": "string"
        -                          }
        -                        },
        -                        "required": [
        -                          "amount_local",
        -                          "currency",
        -                          "redeemable_until"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "pricing_url": {
        -                    "default": "https://civilquants.com/pricing",
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "available_tiers"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tos_url": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "upgrade_hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "warranty_disclaimer": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          }
        -        },
        -        "required": [
        -          "request_id",
        -          "issued_at",
        -          "tier"
        -        ],
        -        "type": "object"
        -      },
        -      "data": {
        -        "default": null,
        -        "title": "Data"
        -      },
        -      "error": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        -            "properties": {
        -              "code": {
        -                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        -                "enum": [
        -                  "RATE_LIMIT_EXCEEDED",
        -                  "TIER_INSUFFICIENT",
        -                  "INVALID_INPUT",
        -                  "SCHEMA_VERSION_MISMATCH",
        -                  "SCHEMA_INVARIANT_VIOLATION",
        -                  "UPSTREAM_TIMEOUT",
        -                  "BACKEND_FAILURE",
        -                  "IP_BLOCKED",
        -                  "RESOURCE_NOT_FOUND",
        -                  "RENDER_FAILURE",
        -                  "OCR_LOW_CONFIDENCE",
        -                  "MANUAL_REVIEW_REQUIRED",
        -                  "ACCEPTANCE_REQUIRED",
        -                  "INVALID_TOKEN"
        -                ],
        -                "type": "string"
        -              },
        -              "details": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "message": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "recoverable": {
        -                "type": "boolean"
        -              },
        -              "retry_after_seconds": {
        -                "anyOf": [
        -                  {
        -                    "minimum": 0,
        -                    "type": "integer"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              }
        -            },
        -            "required": [
        -              "code",
        -              "message",
        -              "recoverable"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      }
        -    },
        -    "required": [
        -      "_meta"
        -    ],
        -    "type": "object"
        -  }
        -]New value: +[
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "_meta": {
        +        "additionalProperties": false,
        +        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        +        "properties": {
        +          "deliverables": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        +                "properties": {
        +                  "docx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "dxf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "expires_at": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  },
        +                  "pdf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "xlsx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "expires_at"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "document_id": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "issued_at": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "rate_limit_remaining": {
        +            "anyOf": [
        +              {
        +                "minimum": 0,
        +                "type": "integer"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "request_id": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "schema_version": {
        +            "const": "1.0.0",
        +            "default": "1.0.0",
        +            "type": "string"
        +          },
        +          "scope_boundary": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        +                "properties": {
        +                  "not_in_scope": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "produced": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "recommended_companions": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "type": "string"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "produced",
        +                  "not_in_scope"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tier": {
        +            "enum": [
        +              "free",
        +              "paid"
        +            ],
        +            "type": "string"
        +          },
        +          "tier_upgrade": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        +                "properties": {
        +                  "available_tiers": {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        +                      "properties": {
        +                        "billing": {
        +                          "enum": [
        +                            "one_off",
        +                            "monthly",
        +                            "annual"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "currency": {
        +                          "enum": [
        +                            "GBP",
        +                            "SGD",
        +                            "EUR",
        +                            "USD",
        +                            "CAD",
        +                            "AUD",
        +                            "NZD",
        +                            "MYR"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "display_name": {
        +                          "type": "string"
        +                        },
        +                        "price_local": {
        +                          "type": "number"
        +                        },
        +                        "tier_slug": {
        +                          "enum": [
        +                            "7_day_pass",
        +                            "solo",
        +                            "studio",
        +                            "practice"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "unlock_summary": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "tier_slug",
        +                        "display_name",
        +                        "price_local",
        +                        "currency",
        +                        "billing",
        +                        "unlock_summary"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "current_tier": {
        +                    "const": "free",
        +                    "default": "free",
        +                    "type": "string"
        +                  },
        +                  "pass_credit": {
        +                    "anyOf": [
        +                      {
        +                        "additionalProperties": false,
        +                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        +                        "properties": {
        +                          "amount_local": {
        +                            "type": "number"
        +                          },
        +                          "applies_to": {
        +                            "const": "solo_first_month",
        +                            "default": "solo_first_month",
        +                            "type": "string"
        +                          },
        +                          "currency": {
        +                            "type": "string"
        +                          },
        +                          "redeemable_until": {
        +                            "type": "string"
        +                          }
        +                        },
        +                        "required": [
        +                          "amount_local",
        +                          "currency",
        +                          "redeemable_until"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "pricing_url": {
        +                    "default": "https://civilquants.com/pricing",
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "available_tiers"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tos_url": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "upgrade_hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "warranty_disclaimer": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          }
        +        },
        +        "required": [
        +          "request_id",
        +          "issued_at",
        +          "tier"
        +        ],
        +        "type": "object"
        +      },
        +      "data": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Schema § 1.1 — the typed payload returned inside `MCPResponse[ComputeResult]`.\n\nFree-tier responses MUST omit `drawings` and `audit_trail` (the bridge\nenforces this); paid-tier responses populate both. `text_summary` is\nbounded to 2000 chars — keeps the LLM-facing summary token-cheap and\nforces longer narrative into BoQ row descriptions where it belongs.\n`warnings` is the non-fatal geometry advisory list (both tiers).",
        +            "properties": {
        +              "assembly_slug": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "audit_trail": {
        +                "anyOf": [
        +                  {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.7 — paid-tier audit-trail entry.\n\nOne entry per BoQ row; `boq_row_index` ties to the row position in\n`ComputeResult.boq_rows`. `derivation` is the human-readable formula\nwalk-through; `formula` is the optional formal expression.",
        +                      "properties": {
        +                        "boq_row_index": {
        +                          "minimum": 0,
        +                          "type": "integer"
        +                        },
        +                        "derivation": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "formula": {
        +                          "anyOf": [
        +                            {
        +                              "type": "string"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ],
        +                          "default": null
        +                        },
        +                        "id": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "parameters_referenced": {
        +                          "items": {
        +                            "type": "string"
        +                          },
        +                          "type": "array"
        +                        }
        +                      },
        +                      "required": [
        +                        "id",
        +                        "boq_row_index",
        +                        "derivation"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "boq_rows": {
        +                "items": {
        +                  "additionalProperties": false,
        +                  "description": "Schema § 1.3 — a single bill row in the requested standard's format.\n\n`description` is the non-verbatim functional description per spec § 13.9 /\n§ 15 invariant — NEVER reproduces a standard's verbatim clause text.\n`rate` / `amount` ship null because rates are commodity data the customer\nowns; the engine's job is the measurement, not the pricing.",
        +                  "properties": {
        +                    "amount": {
        +                      "anyOf": [
        +                        {
        +                          "type": "number"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "attribution": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "audit_id": {
        +                      "anyOf": [
        +                        {
        +                          "type": "string"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "description": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "quantity": {
        +                      "minimum": 0,
        +                      "type": "number"
        +                    },
        +                    "rate": {
        +                      "anyOf": [
        +                        {
        +                          "type": "number"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "unit": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "work_section": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    }
        +                  },
        +                  "required": [
        +                    "work_section",
        +                    "description",
        +                    "quantity",
        +                    "unit",
        +                    "attribution"
        +                  ],
        +                  "type": "object"
        +                },
        +                "type": "array"
        +              },
        +              "drawings": {
        +                "anyOf": [
        +                  {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.6 — paid-tier drawing artefact pointer.\n\n`url` is an R2-signed URL; expiry is carried in `_meta.deliverables.expires_at`\non the envelope (not duplicated here). `layers` is DXF-only; PDF/SVG\ncallers omit it.",
        +                      "properties": {
        +                        "drawing_type": {
        +                          "enum": [
        +                            "section",
        +                            "plan",
        +                            "elevation",
        +                            "isometric",
        +                            "detail"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "format": {
        +                          "enum": [
        +                            "DXF",
        +                            "PDF",
        +                            "SVG"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "layers": {
        +                          "anyOf": [
        +                            {
        +                              "items": {
        +                                "type": "string"
        +                              },
        +                              "type": "array"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ],
        +                          "default": null
        +                        },
        +                        "scale": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "sheet_size": {
        +                          "enum": [
        +                            "A1",
        +                            "A2",
        +                            "A3",
        +                            "A4"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "url": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "drawing_type",
        +                        "format",
        +                        "url",
        +                        "sheet_size",
        +                        "scale"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "parameters_used": {
        +                "additionalProperties": false,
        +                "description": "Schema § 1.2 — the parameter snapshot the engine actually used.\n\nSplits user-supplied values from engine defaults so customers can see\nwhich numbers came from them and which the engine filled in. Every\ndefaulted parameter SHOULD have a corresponding entry in `assumptions`\n— the bridge layer enforces this when wrapping engine output.",
        +                "properties": {
        +                  "assumptions": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "engine_defaults": {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  "resolved_from_description": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "additionalProperties": false,
        +                          "description": "Schema § 1.2 — a parameter resolved by the forgiving-input layer.\n\nPopulated by the Track B-Forgiving Haiku-4.5 resolution pass; until that\nlayer lands, instances are constructed only by tests. `source` distinguishes\nthe resolution path so customers can audit which fields were inferred.",
        +                          "properties": {
        +                            "confidence": {
        +                              "anyOf": [
        +                                {
        +                                  "enum": [
        +                                    "high",
        +                                    "medium",
        +                                    "low"
        +                                  ],
        +                                  "type": "string"
        +                                },
        +                                {
        +                                  "type": "null"
        +                                }
        +                              ],
        +                              "default": null
        +                            },
        +                            "field_name": {
        +                              "minLength": 1,
        +                              "type": "string"
        +                            },
        +                            "resolved_value": {},
        +                            "source": {
        +                              "enum": [
        +                                "description_field",
        +                                "haiku_resolution",
        +                                "engine_default"
        +                              ],
        +                              "type": "string"
        +                            }
        +                          },
        +                          "required": [
        +                            "field_name",
        +                            "resolved_value",
        +                            "source"
        +                          ],
        +                          "type": "object"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "user_supplied": {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  }
        +                },
        +                "type": "object"
        +              },
        +              "standard": {
        +                "enum": [
        +                  "CESMM4",
        +                  "NRM2",
        +                  "SMM7",
        +                  "MMHW"
        +                ],
        +                "type": "string"
        +              },
        +              "text_summary": {
        +                "maxLength": 2000,
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "totals_summary": {
        +                "additionalProperties": false,
        +                "description": "Schema § 1.4 — totals_summary as a typed wrapper around the free-form dict.\n\nWire shape is a flat object (`{\"concrete_m3\": {...}, \"rebar_t\": {...}}`).\nWe model it as `RootModel`-equivalent via `model_config(extra=\"allow\")`\n+ a single `__root__`-style `entries` dict. Pydantic v2 recommends\n`RootModel` for free-form roots; using a wrapper class keeps the import\nsurface uniform with the rest of this module.",
        +                "properties": {
        +                  "entries": {
        +                    "additionalProperties": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.4 — single material/work-class total entry.",
        +                      "properties": {
        +                        "quantity": {
        +                          "minimum": 0,
        +                          "type": "number"
        +                        },
        +                        "unit": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "quantity",
        +                        "unit"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "object"
        +                  }
        +                },
        +                "type": "object"
        +              },
        +              "warnings": {
        +                "items": {
        +                  "additionalProperties": false,
        +                  "description": "Schema § 1.8 — a non-fatal geometry advisory (56th-fire T2).\n\nThe wire projection of the engine's `core.GeometryWarning`. Advisory only:\na warning NEVER changes a measured quantity — it flags geometry that is\nvalid but likely a mistake (e.g. a stale dependent-height default). Present\non BOTH tiers — a correctness/safety signal, not a paid feature.",
        +                  "properties": {
        +                    "affected_params": {
        +                      "items": {
        +                        "type": "string"
        +                      },
        +                      "type": "array"
        +                    },
        +                    "code": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "detail": {
        +                      "additionalProperties": {
        +                        "type": "number"
        +                      },
        +                      "type": "object"
        +                    },
        +                    "message": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "severity": {
        +                      "enum": [
        +                        "info",
        +                        "advisory",
        +                        "caution"
        +                      ],
        +                      "type": "string"
        +                    }
        +                  },
        +                  "required": [
        +                    "code",
        +                    "severity",
        +                    "message"
        +                  ],
        +                  "type": "object"
        +                },
        +                "type": "array"
        +              }
        +            },
        +            "required": [
        +              "assembly_slug",
        +              "standard",
        +              "parameters_used",
        +              "boq_rows",
        +              "totals_summary",
        +              "text_summary"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      },
        +      "error": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        +            "properties": {
        +              "code": {
        +                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        +                "enum": [
        +                  "RATE_LIMIT_EXCEEDED",
        +                  "TIER_INSUFFICIENT",
        +                  "INVALID_INPUT",
        +                  "SCHEMA_VERSION_MISMATCH",
        +                  "SCHEMA_INVARIANT_VIOLATION",
        +                  "UPSTREAM_TIMEOUT",
        +                  "BACKEND_FAILURE",
        +                  "IP_BLOCKED",
        +                  "RESOURCE_NOT_FOUND",
        +                  "RENDER_FAILURE",
        +                  "OCR_LOW_CONFIDENCE",
        +                  "MANUAL_REVIEW_REQUIRED",
        +                  "ACCEPTANCE_REQUIRED",
        +                  "INVALID_TOKEN"
        +                ],
        +                "type": "string"
        +              },
        +              "details": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "message": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "recoverable": {
        +                "type": "boolean"
        +              },
        +              "retry_after_seconds": {
        +                "anyOf": [
        +                  {
        +                    "minimum": 0,
        +                    "type": "integer"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              }
        +            },
        +            "required": [
        +              "code",
        +              "message",
        +              "recoverable"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      }
        +    },
        +    "required": [
        +      "_meta"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "_meta": {
        +        "additionalProperties": false,
        +        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        +        "properties": {
        +          "deliverables": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        +                "properties": {
        +                  "docx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "dxf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "expires_at": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  },
        +                  "pdf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "xlsx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "expires_at"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "document_id": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "issued_at": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "rate_limit_remaining": {
        +            "anyOf": [
        +              {
        +                "minimum": 0,
        +                "type": "integer"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "request_id": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "schema_version": {
        +            "const": "1.0.0",
        +            "default": "1.0.0",
        +            "type": "string"
        +          },
        +          "scope_boundary": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        +                "properties": {
        +                  "not_in_scope": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "produced": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "recommended_companions": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "type": "string"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "produced",
        +                  "not_in_scope"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tier": {
        +            "enum": [
        +              "free",
        +              "paid"
        +            ],
        +            "type": "string"
        +          },
        +          "tier_upgrade": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        +                "properties": {
        +                  "available_tiers": {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        +                      "properties": {
        +                        "billing": {
        +                          "enum": [
        +                            "one_off",
        +                            "monthly",
        +                            "annual"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "currency": {
        +                          "enum": [
        +                            "GBP",
        +                            "SGD",
        +                            "EUR",
        +                            "USD",
        +                            "CAD",
        +                            "AUD",
        +                            "NZD",
        +                            "MYR"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "display_name": {
        +                          "type": "string"
        +                        },
        +                        "price_local": {
        +                          "type": "number"
        +                        },
        +                        "tier_slug": {
        +                          "enum": [
        +                            "7_day_pass",
        +                            "solo",
        +                            "studio",
        +                            "practice"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "unlock_summary": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "tier_slug",
        +                        "display_name",
        +                        "price_local",
        +                        "currency",
        +                        "billing",
        +                        "unlock_summary"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "current_tier": {
        +                    "const": "free",
        +                    "default": "free",
        +                    "type": "string"
        +                  },
        +                  "pass_credit": {
        +                    "anyOf": [
        +                      {
        +                        "additionalProperties": false,
        +                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        +                        "properties": {
        +                          "amount_local": {
        +                            "type": "number"
        +                          },
        +                          "applies_to": {
        +                            "const": "solo_first_month",
        +                            "default": "solo_first_month",
        +                            "type": "string"
        +                          },
        +                          "currency": {
        +                            "type": "string"
        +                          },
        +                          "redeemable_until": {
        +                            "type": "string"
        +                          }
        +                        },
        +                        "required": [
        +                          "amount_local",
        +                          "currency",
        +                          "redeemable_until"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "pricing_url": {
        +                    "default": "https://civilquants.com/pricing",
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "available_tiers"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tos_url": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "upgrade_hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "warranty_disclaimer": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          }
        +        },
        +        "required": [
        +          "request_id",
        +          "issued_at",
        +          "tier"
        +        ],
        +        "type": "object"
        +      },
        +      "data": {
        +        "default": null,
        +        "title": "Data"
        +      },
        +      "error": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        +            "properties": {
        +              "code": {
        +                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        +                "enum": [
        +                  "RATE_LIMIT_EXCEEDED",
        +                  "TIER_INSUFFICIENT",
        +                  "INVALID_INPUT",
        +                  "SCHEMA_VERSION_MISMATCH",
        +                  "SCHEMA_INVARIANT_VIOLATION",
        +                  "UPSTREAM_TIMEOUT",
        +                  "BACKEND_FAILURE",
        +                  "IP_BLOCKED",
        +                  "RESOURCE_NOT_FOUND",
        +                  "RENDER_FAILURE",
        +                  "OCR_LOW_CONFIDENCE",
        +                  "MANUAL_REVIEW_REQUIRED",
        +                  "ACCEPTANCE_REQUIRED",
        +                  "INVALID_TOKEN"
        +                ],
        +                "type": "string"
        +              },
        +              "details": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "message": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "recoverable": {
        +                "type": "boolean"
        +              },
        +              "retry_after_seconds": {
        +                "anyOf": [
        +                  {
        +                    "minimum": 0,
        +                    "type": "integer"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              }
        +            },
        +            "required": [
        +              "code",
        +              "message",
        +              "recoverable"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      }
        +    },
        +    "required": [
        +      "_meta"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedcompute_vehicle_restraint_system1 field changed
      • changedOutput schema / properties / result / anyOf
        Previous value: -[
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "_meta": {
        -        "additionalProperties": false,
        -        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        -        "properties": {
        -          "deliverables": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        -                "properties": {
        -                  "docx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "dxf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "expires_at": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  },
        -                  "pdf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "xlsx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "expires_at"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "document_id": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "issued_at": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "rate_limit_remaining": {
        -            "anyOf": [
        -              {
        -                "minimum": 0,
        -                "type": "integer"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "request_id": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "schema_version": {
        -            "const": "1.0.0",
        -            "default": "1.0.0",
        -            "type": "string"
        -          },
        -          "scope_boundary": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        -                "properties": {
        -                  "not_in_scope": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "produced": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "recommended_companions": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "type": "string"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "produced",
        -                  "not_in_scope"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tier": {
        -            "enum": [
        -              "free",
        -              "paid"
        -            ],
        -            "type": "string"
        -          },
        -          "tier_upgrade": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        -                "properties": {
        -                  "available_tiers": {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        -                      "properties": {
        -                        "billing": {
        -                          "enum": [
        -                            "one_off",
        -                            "monthly",
        -                            "annual"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "currency": {
        -                          "enum": [
        -                            "GBP",
        -                            "SGD",
        -                            "EUR",
        -                            "USD",
        -                            "CAD",
        -                            "AUD",
        -                            "NZD",
        -                            "MYR"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "display_name": {
        -                          "type": "string"
        -                        },
        -                        "price_local": {
        -                          "type": "number"
        -                        },
        -                        "tier_slug": {
        -                          "enum": [
        -                            "7_day_pass",
        -                            "solo",
        -                            "studio",
        -                            "practice"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "unlock_summary": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "tier_slug",
        -                        "display_name",
        -                        "price_local",
        -                        "currency",
        -                        "billing",
        -                        "unlock_summary"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "current_tier": {
        -                    "const": "free",
        -                    "default": "free",
        -                    "type": "string"
        -                  },
        -                  "pass_credit": {
        -                    "anyOf": [
        -                      {
        -                        "additionalProperties": false,
        -                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        -                        "properties": {
        -                          "amount_local": {
        -                            "type": "number"
        -                          },
        -                          "applies_to": {
        -                            "const": "solo_first_month",
        -                            "default": "solo_first_month",
        -                            "type": "string"
        -                          },
        -                          "currency": {
        -                            "type": "string"
        -                          },
        -                          "redeemable_until": {
        -                            "type": "string"
        -                          }
        -                        },
        -                        "required": [
        -                          "amount_local",
        -                          "currency",
        -                          "redeemable_until"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "pricing_url": {
        -                    "default": "https://civilquants.com/pricing",
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "available_tiers"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tos_url": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "upgrade_hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "warranty_disclaimer": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          }
        -        },
        -        "required": [
        -          "request_id",
        -          "issued_at",
        -          "tier"
        -        ],
        -        "type": "object"
        -      },
        -      "data": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Schema § 1.1 — the typed payload returned inside `MCPResponse[ComputeResult]`.\n\nFree-tier responses MUST omit `drawings` and `audit_trail` (the bridge\nenforces this); paid-tier responses populate both. `text_summary` is\nbounded to 2000 chars — keeps the LLM-facing summary token-cheap and\nforces longer narrative into BoQ row descriptions where it belongs.",
        -            "properties": {
        -              "assembly_slug": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "audit_trail": {
        -                "anyOf": [
        -                  {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.7 — paid-tier audit-trail entry.\n\nOne entry per BoQ row; `boq_row_index` ties to the row position in\n`ComputeResult.boq_rows`. `derivation` is the human-readable formula\nwalk-through; `formula` is the optional formal expression.",
        -                      "properties": {
        -                        "boq_row_index": {
        -                          "minimum": 0,
        -                          "type": "integer"
        -                        },
        -                        "derivation": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "formula": {
        -                          "anyOf": [
        -                            {
        -                              "type": "string"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ],
        -                          "default": null
        -                        },
        -                        "id": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "parameters_referenced": {
        -                          "items": {
        -                            "type": "string"
        -                          },
        -                          "type": "array"
        -                        }
        -                      },
        -                      "required": [
        -                        "id",
        -                        "boq_row_index",
        -                        "derivation"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "boq_rows": {
        -                "items": {
        -                  "additionalProperties": false,
        -                  "description": "Schema § 1.3 — a single bill row in the requested standard's format.\n\n`description` is the non-verbatim functional description per spec § 13.9 /\n§ 15 invariant — NEVER reproduces a standard's verbatim clause text.\n`rate` / `amount` ship null because rates are commodity data the customer\nowns; the engine's job is the measurement, not the pricing.",
        -                  "properties": {
        -                    "amount": {
        -                      "anyOf": [
        -                        {
        -                          "type": "number"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "attribution": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "audit_id": {
        -                      "anyOf": [
        -                        {
        -                          "type": "string"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "description": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "quantity": {
        -                      "minimum": 0,
        -                      "type": "number"
        -                    },
        -                    "rate": {
        -                      "anyOf": [
        -                        {
        -                          "type": "number"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null
        -                    },
        -                    "unit": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    },
        -                    "work_section": {
        -                      "minLength": 1,
        -                      "type": "string"
        -                    }
        -                  },
        -                  "required": [
        -                    "work_section",
        -                    "description",
        -                    "quantity",
        -                    "unit",
        -                    "attribution"
        -                  ],
        -                  "type": "object"
        -                },
        -                "type": "array"
        -              },
        -              "drawings": {
        -                "anyOf": [
        -                  {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.6 — paid-tier drawing artefact pointer.\n\n`url` is an R2-signed URL; expiry is carried in `_meta.deliverables.expires_at`\non the envelope (not duplicated here). `layers` is DXF-only; PDF/SVG\ncallers omit it.",
        -                      "properties": {
        -                        "drawing_type": {
        -                          "enum": [
        -                            "section",
        -                            "plan",
        -                            "elevation",
        -                            "isometric",
        -                            "detail"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "format": {
        -                          "enum": [
        -                            "DXF",
        -                            "PDF",
        -                            "SVG"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "layers": {
        -                          "anyOf": [
        -                            {
        -                              "items": {
        -                                "type": "string"
        -                              },
        -                              "type": "array"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ],
        -                          "default": null
        -                        },
        -                        "scale": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        "sheet_size": {
        -                          "enum": [
        -                            "A1",
        -                            "A2",
        -                            "A3",
        -                            "A4"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "url": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "drawing_type",
        -                        "format",
        -                        "url",
        -                        "sheet_size",
        -                        "scale"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "parameters_used": {
        -                "additionalProperties": false,
        -                "description": "Schema § 1.2 — the parameter snapshot the engine actually used.\n\nSplits user-supplied values from engine defaults so customers can see\nwhich numbers came from them and which the engine filled in. Every\ndefaulted parameter SHOULD have a corresponding entry in `assumptions`\n— the bridge layer enforces this when wrapping engine output.",
        -                "properties": {
        -                  "assumptions": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "engine_defaults": {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  "resolved_from_description": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "additionalProperties": false,
        -                          "description": "Schema § 1.2 — a parameter resolved by the forgiving-input layer.\n\nPopulated by the Track B-Forgiving Haiku-4.5 resolution pass; until that\nlayer lands, instances are constructed only by tests. `source` distinguishes\nthe resolution path so customers can audit which fields were inferred.",
        -                          "properties": {
        -                            "confidence": {
        -                              "anyOf": [
        -                                {
        -                                  "enum": [
        -                                    "high",
        -                                    "medium",
        -                                    "low"
        -                                  ],
        -                                  "type": "string"
        -                                },
        -                                {
        -                                  "type": "null"
        -                                }
        -                              ],
        -                              "default": null
        -                            },
        -                            "field_name": {
        -                              "minLength": 1,
        -                              "type": "string"
        -                            },
        -                            "resolved_value": {},
        -                            "source": {
        -                              "enum": [
        -                                "description_field",
        -                                "haiku_resolution",
        -                                "engine_default"
        -                              ],
        -                              "type": "string"
        -                            }
        -                          },
        -                          "required": [
        -                            "field_name",
        -                            "resolved_value",
        -                            "source"
        -                          ],
        -                          "type": "object"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "user_supplied": {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  }
        -                },
        -                "type": "object"
        -              },
        -              "standard": {
        -                "enum": [
        -                  "CESMM4",
        -                  "NRM2",
        -                  "SMM7",
        -                  "MMHW"
        -                ],
        -                "type": "string"
        -              },
        -              "text_summary": {
        -                "maxLength": 2000,
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "totals_summary": {
        -                "additionalProperties": false,
        -                "description": "Schema § 1.4 — totals_summary as a typed wrapper around the free-form dict.\n\nWire shape is a flat object (`{\"concrete_m3\": {...}, \"rebar_t\": {...}}`).\nWe model it as `RootModel`-equivalent via `model_config(extra=\"allow\")`\n+ a single `__root__`-style `entries` dict. Pydantic v2 recommends\n`RootModel` for free-form roots; using a wrapper class keeps the import\nsurface uniform with the rest of this module.",
        -                "properties": {
        -                  "entries": {
        -                    "additionalProperties": {
        -                      "additionalProperties": false,
        -                      "description": "Schema § 1.4 — single material/work-class total entry.",
        -                      "properties": {
        -                        "quantity": {
        -                          "minimum": 0,
        -                          "type": "number"
        -                        },
        -                        "unit": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "quantity",
        -                        "unit"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "object"
        -                  }
        -                },
        -                "type": "object"
        -              }
        -            },
        -            "required": [
        -              "assembly_slug",
        -              "standard",
        -              "parameters_used",
        -              "boq_rows",
        -              "totals_summary",
        -              "text_summary"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      },
        -      "error": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        -            "properties": {
        -              "code": {
        -                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        -                "enum": [
        -                  "RATE_LIMIT_EXCEEDED",
        -                  "TIER_INSUFFICIENT",
        -                  "INVALID_INPUT",
        -                  "SCHEMA_VERSION_MISMATCH",
        -                  "SCHEMA_INVARIANT_VIOLATION",
        -                  "UPSTREAM_TIMEOUT",
        -                  "BACKEND_FAILURE",
        -                  "IP_BLOCKED",
        -                  "RESOURCE_NOT_FOUND",
        -                  "RENDER_FAILURE",
        -                  "OCR_LOW_CONFIDENCE",
        -                  "MANUAL_REVIEW_REQUIRED",
        -                  "ACCEPTANCE_REQUIRED",
        -                  "INVALID_TOKEN"
        -                ],
        -                "type": "string"
        -              },
        -              "details": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "message": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "recoverable": {
        -                "type": "boolean"
        -              },
        -              "retry_after_seconds": {
        -                "anyOf": [
        -                  {
        -                    "minimum": 0,
        -                    "type": "integer"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              }
        -            },
        -            "required": [
        -              "code",
        -              "message",
        -              "recoverable"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      }
        -    },
        -    "required": [
        -      "_meta"
        -    ],
        -    "type": "object"
        -  },
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "_meta": {
        -        "additionalProperties": false,
        -        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        -        "properties": {
        -          "deliverables": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        -                "properties": {
        -                  "docx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "dxf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "expires_at": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  },
        -                  "pdf_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "xlsx_url": {
        -                    "anyOf": [
        -                      {
        -                        "type": "string"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "expires_at"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "document_id": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "issued_at": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "rate_limit_remaining": {
        -            "anyOf": [
        -              {
        -                "minimum": 0,
        -                "type": "integer"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "request_id": {
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          "schema_version": {
        -            "const": "1.0.0",
        -            "default": "1.0.0",
        -            "type": "string"
        -          },
        -          "scope_boundary": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        -                "properties": {
        -                  "not_in_scope": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "produced": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "recommended_companions": {
        -                    "anyOf": [
        -                      {
        -                        "items": {
        -                          "type": "string"
        -                        },
        -                        "type": "array"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  }
        -                },
        -                "required": [
        -                  "produced",
        -                  "not_in_scope"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tier": {
        -            "enum": [
        -              "free",
        -              "paid"
        -            ],
        -            "type": "string"
        -          },
        -          "tier_upgrade": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": false,
        -                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        -                "properties": {
        -                  "available_tiers": {
        -                    "items": {
        -                      "additionalProperties": false,
        -                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        -                      "properties": {
        -                        "billing": {
        -                          "enum": [
        -                            "one_off",
        -                            "monthly",
        -                            "annual"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "currency": {
        -                          "enum": [
        -                            "GBP",
        -                            "SGD",
        -                            "EUR",
        -                            "USD",
        -                            "CAD",
        -                            "AUD",
        -                            "NZD",
        -                            "MYR"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "display_name": {
        -                          "type": "string"
        -                        },
        -                        "price_local": {
        -                          "type": "number"
        -                        },
        -                        "tier_slug": {
        -                          "enum": [
        -                            "7_day_pass",
        -                            "solo",
        -                            "studio",
        -                            "practice"
        -                          ],
        -                          "type": "string"
        -                        },
        -                        "unlock_summary": {
        -                          "minLength": 1,
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "tier_slug",
        -                        "display_name",
        -                        "price_local",
        -                        "currency",
        -                        "billing",
        -                        "unlock_summary"
        -                      ],
        -                      "type": "object"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "current_tier": {
        -                    "const": "free",
        -                    "default": "free",
        -                    "type": "string"
        -                  },
        -                  "pass_credit": {
        -                    "anyOf": [
        -                      {
        -                        "additionalProperties": false,
        -                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        -                        "properties": {
        -                          "amount_local": {
        -                            "type": "number"
        -                          },
        -                          "applies_to": {
        -                            "const": "solo_first_month",
        -                            "default": "solo_first_month",
        -                            "type": "string"
        -                          },
        -                          "currency": {
        -                            "type": "string"
        -                          },
        -                          "redeemable_until": {
        -                            "type": "string"
        -                          }
        -                        },
        -                        "required": [
        -                          "amount_local",
        -                          "currency",
        -                          "redeemable_until"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ],
        -                    "default": null
        -                  },
        -                  "pricing_url": {
        -                    "default": "https://civilquants.com/pricing",
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "available_tiers"
        -                ],
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "tos_url": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "upgrade_hint": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "warranty_disclaimer": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          }
        -        },
        -        "required": [
        -          "request_id",
        -          "issued_at",
        -          "tier"
        -        ],
        -        "type": "object"
        -      },
        -      "data": {
        -        "default": null,
        -        "title": "Data"
        -      },
        -      "error": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": false,
        -            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        -            "properties": {
        -              "code": {
        -                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        -                "enum": [
        -                  "RATE_LIMIT_EXCEEDED",
        -                  "TIER_INSUFFICIENT",
        -                  "INVALID_INPUT",
        -                  "SCHEMA_VERSION_MISMATCH",
        -                  "SCHEMA_INVARIANT_VIOLATION",
        -                  "UPSTREAM_TIMEOUT",
        -                  "BACKEND_FAILURE",
        -                  "IP_BLOCKED",
        -                  "RESOURCE_NOT_FOUND",
        -                  "RENDER_FAILURE",
        -                  "OCR_LOW_CONFIDENCE",
        -                  "MANUAL_REVIEW_REQUIRED",
        -                  "ACCEPTANCE_REQUIRED",
        -                  "INVALID_TOKEN"
        -                ],
        -                "type": "string"
        -              },
        -              "details": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": true,
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              },
        -              "message": {
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "recoverable": {
        -                "type": "boolean"
        -              },
        -              "retry_after_seconds": {
        -                "anyOf": [
        -                  {
        -                    "minimum": 0,
        -                    "type": "integer"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ],
        -                "default": null
        -              }
        -            },
        -            "required": [
        -              "code",
        -              "message",
        -              "recoverable"
        -            ],
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      }
        -    },
        -    "required": [
        -      "_meta"
        -    ],
        -    "type": "object"
        -  }
        -]New value: +[
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "_meta": {
        +        "additionalProperties": false,
        +        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        +        "properties": {
        +          "deliverables": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        +                "properties": {
        +                  "docx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "dxf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "expires_at": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  },
        +                  "pdf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "xlsx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "expires_at"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "document_id": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "issued_at": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "rate_limit_remaining": {
        +            "anyOf": [
        +              {
        +                "minimum": 0,
        +                "type": "integer"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "request_id": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "schema_version": {
        +            "const": "1.0.0",
        +            "default": "1.0.0",
        +            "type": "string"
        +          },
        +          "scope_boundary": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        +                "properties": {
        +                  "not_in_scope": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "produced": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "recommended_companions": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "type": "string"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "produced",
        +                  "not_in_scope"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tier": {
        +            "enum": [
        +              "free",
        +              "paid"
        +            ],
        +            "type": "string"
        +          },
        +          "tier_upgrade": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        +                "properties": {
        +                  "available_tiers": {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        +                      "properties": {
        +                        "billing": {
        +                          "enum": [
        +                            "one_off",
        +                            "monthly",
        +                            "annual"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "currency": {
        +                          "enum": [
        +                            "GBP",
        +                            "SGD",
        +                            "EUR",
        +                            "USD",
        +                            "CAD",
        +                            "AUD",
        +                            "NZD",
        +                            "MYR"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "display_name": {
        +                          "type": "string"
        +                        },
        +                        "price_local": {
        +                          "type": "number"
        +                        },
        +                        "tier_slug": {
        +                          "enum": [
        +                            "7_day_pass",
        +                            "solo",
        +                            "studio",
        +                            "practice"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "unlock_summary": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "tier_slug",
        +                        "display_name",
        +                        "price_local",
        +                        "currency",
        +                        "billing",
        +                        "unlock_summary"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "current_tier": {
        +                    "const": "free",
        +                    "default": "free",
        +                    "type": "string"
        +                  },
        +                  "pass_credit": {
        +                    "anyOf": [
        +                      {
        +                        "additionalProperties": false,
        +                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        +                        "properties": {
        +                          "amount_local": {
        +                            "type": "number"
        +                          },
        +                          "applies_to": {
        +                            "const": "solo_first_month",
        +                            "default": "solo_first_month",
        +                            "type": "string"
        +                          },
        +                          "currency": {
        +                            "type": "string"
        +                          },
        +                          "redeemable_until": {
        +                            "type": "string"
        +                          }
        +                        },
        +                        "required": [
        +                          "amount_local",
        +                          "currency",
        +                          "redeemable_until"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "pricing_url": {
        +                    "default": "https://civilquants.com/pricing",
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "available_tiers"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tos_url": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "upgrade_hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "warranty_disclaimer": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          }
        +        },
        +        "required": [
        +          "request_id",
        +          "issued_at",
        +          "tier"
        +        ],
        +        "type": "object"
        +      },
        +      "data": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Schema § 1.1 — the typed payload returned inside `MCPResponse[ComputeResult]`.\n\nFree-tier responses MUST omit `drawings` and `audit_trail` (the bridge\nenforces this); paid-tier responses populate both. `text_summary` is\nbounded to 2000 chars — keeps the LLM-facing summary token-cheap and\nforces longer narrative into BoQ row descriptions where it belongs.\n`warnings` is the non-fatal geometry advisory list (both tiers).",
        +            "properties": {
        +              "assembly_slug": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "audit_trail": {
        +                "anyOf": [
        +                  {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.7 — paid-tier audit-trail entry.\n\nOne entry per BoQ row; `boq_row_index` ties to the row position in\n`ComputeResult.boq_rows`. `derivation` is the human-readable formula\nwalk-through; `formula` is the optional formal expression.",
        +                      "properties": {
        +                        "boq_row_index": {
        +                          "minimum": 0,
        +                          "type": "integer"
        +                        },
        +                        "derivation": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "formula": {
        +                          "anyOf": [
        +                            {
        +                              "type": "string"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ],
        +                          "default": null
        +                        },
        +                        "id": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "parameters_referenced": {
        +                          "items": {
        +                            "type": "string"
        +                          },
        +                          "type": "array"
        +                        }
        +                      },
        +                      "required": [
        +                        "id",
        +                        "boq_row_index",
        +                        "derivation"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "boq_rows": {
        +                "items": {
        +                  "additionalProperties": false,
        +                  "description": "Schema § 1.3 — a single bill row in the requested standard's format.\n\n`description` is the non-verbatim functional description per spec § 13.9 /\n§ 15 invariant — NEVER reproduces a standard's verbatim clause text.\n`rate` / `amount` ship null because rates are commodity data the customer\nowns; the engine's job is the measurement, not the pricing.",
        +                  "properties": {
        +                    "amount": {
        +                      "anyOf": [
        +                        {
        +                          "type": "number"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "attribution": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "audit_id": {
        +                      "anyOf": [
        +                        {
        +                          "type": "string"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "description": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "quantity": {
        +                      "minimum": 0,
        +                      "type": "number"
        +                    },
        +                    "rate": {
        +                      "anyOf": [
        +                        {
        +                          "type": "number"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "unit": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "work_section": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    }
        +                  },
        +                  "required": [
        +                    "work_section",
        +                    "description",
        +                    "quantity",
        +                    "unit",
        +                    "attribution"
        +                  ],
        +                  "type": "object"
        +                },
        +                "type": "array"
        +              },
        +              "drawings": {
        +                "anyOf": [
        +                  {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.6 — paid-tier drawing artefact pointer.\n\n`url` is an R2-signed URL; expiry is carried in `_meta.deliverables.expires_at`\non the envelope (not duplicated here). `layers` is DXF-only; PDF/SVG\ncallers omit it.",
        +                      "properties": {
        +                        "drawing_type": {
        +                          "enum": [
        +                            "section",
        +                            "plan",
        +                            "elevation",
        +                            "isometric",
        +                            "detail"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "format": {
        +                          "enum": [
        +                            "DXF",
        +                            "PDF",
        +                            "SVG"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "layers": {
        +                          "anyOf": [
        +                            {
        +                              "items": {
        +                                "type": "string"
        +                              },
        +                              "type": "array"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ],
        +                          "default": null
        +                        },
        +                        "scale": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        },
        +                        "sheet_size": {
        +                          "enum": [
        +                            "A1",
        +                            "A2",
        +                            "A3",
        +                            "A4"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "url": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "drawing_type",
        +                        "format",
        +                        "url",
        +                        "sheet_size",
        +                        "scale"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "parameters_used": {
        +                "additionalProperties": false,
        +                "description": "Schema § 1.2 — the parameter snapshot the engine actually used.\n\nSplits user-supplied values from engine defaults so customers can see\nwhich numbers came from them and which the engine filled in. Every\ndefaulted parameter SHOULD have a corresponding entry in `assumptions`\n— the bridge layer enforces this when wrapping engine output.",
        +                "properties": {
        +                  "assumptions": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "engine_defaults": {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  "resolved_from_description": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "additionalProperties": false,
        +                          "description": "Schema § 1.2 — a parameter resolved by the forgiving-input layer.\n\nPopulated by the Track B-Forgiving Haiku-4.5 resolution pass; until that\nlayer lands, instances are constructed only by tests. `source` distinguishes\nthe resolution path so customers can audit which fields were inferred.",
        +                          "properties": {
        +                            "confidence": {
        +                              "anyOf": [
        +                                {
        +                                  "enum": [
        +                                    "high",
        +                                    "medium",
        +                                    "low"
        +                                  ],
        +                                  "type": "string"
        +                                },
        +                                {
        +                                  "type": "null"
        +                                }
        +                              ],
        +                              "default": null
        +                            },
        +                            "field_name": {
        +                              "minLength": 1,
        +                              "type": "string"
        +                            },
        +                            "resolved_value": {},
        +                            "source": {
        +                              "enum": [
        +                                "description_field",
        +                                "haiku_resolution",
        +                                "engine_default"
        +                              ],
        +                              "type": "string"
        +                            }
        +                          },
        +                          "required": [
        +                            "field_name",
        +                            "resolved_value",
        +                            "source"
        +                          ],
        +                          "type": "object"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "user_supplied": {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  }
        +                },
        +                "type": "object"
        +              },
        +              "standard": {
        +                "enum": [
        +                  "CESMM4",
        +                  "NRM2",
        +                  "SMM7",
        +                  "MMHW"
        +                ],
        +                "type": "string"
        +              },
        +              "text_summary": {
        +                "maxLength": 2000,
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "totals_summary": {
        +                "additionalProperties": false,
        +                "description": "Schema § 1.4 — totals_summary as a typed wrapper around the free-form dict.\n\nWire shape is a flat object (`{\"concrete_m3\": {...}, \"rebar_t\": {...}}`).\nWe model it as `RootModel`-equivalent via `model_config(extra=\"allow\")`\n+ a single `__root__`-style `entries` dict. Pydantic v2 recommends\n`RootModel` for free-form roots; using a wrapper class keeps the import\nsurface uniform with the rest of this module.",
        +                "properties": {
        +                  "entries": {
        +                    "additionalProperties": {
        +                      "additionalProperties": false,
        +                      "description": "Schema § 1.4 — single material/work-class total entry.",
        +                      "properties": {
        +                        "quantity": {
        +                          "minimum": 0,
        +                          "type": "number"
        +                        },
        +                        "unit": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "quantity",
        +                        "unit"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "object"
        +                  }
        +                },
        +                "type": "object"
        +              },
        +              "warnings": {
        +                "items": {
        +                  "additionalProperties": false,
        +                  "description": "Schema § 1.8 — a non-fatal geometry advisory (56th-fire T2).\n\nThe wire projection of the engine's `core.GeometryWarning`. Advisory only:\na warning NEVER changes a measured quantity — it flags geometry that is\nvalid but likely a mistake (e.g. a stale dependent-height default). Present\non BOTH tiers — a correctness/safety signal, not a paid feature.",
        +                  "properties": {
        +                    "affected_params": {
        +                      "items": {
        +                        "type": "string"
        +                      },
        +                      "type": "array"
        +                    },
        +                    "code": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "detail": {
        +                      "additionalProperties": {
        +                        "type": "number"
        +                      },
        +                      "type": "object"
        +                    },
        +                    "message": {
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "severity": {
        +                      "enum": [
        +                        "info",
        +                        "advisory",
        +                        "caution"
        +                      ],
        +                      "type": "string"
        +                    }
        +                  },
        +                  "required": [
        +                    "code",
        +                    "severity",
        +                    "message"
        +                  ],
        +                  "type": "object"
        +                },
        +                "type": "array"
        +              }
        +            },
        +            "required": [
        +              "assembly_slug",
        +              "standard",
        +              "parameters_used",
        +              "boq_rows",
        +              "totals_summary",
        +              "text_summary"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      },
        +      "error": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        +            "properties": {
        +              "code": {
        +                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        +                "enum": [
        +                  "RATE_LIMIT_EXCEEDED",
        +                  "TIER_INSUFFICIENT",
        +                  "INVALID_INPUT",
        +                  "SCHEMA_VERSION_MISMATCH",
        +                  "SCHEMA_INVARIANT_VIOLATION",
        +                  "UPSTREAM_TIMEOUT",
        +                  "BACKEND_FAILURE",
        +                  "IP_BLOCKED",
        +                  "RESOURCE_NOT_FOUND",
        +                  "RENDER_FAILURE",
        +                  "OCR_LOW_CONFIDENCE",
        +                  "MANUAL_REVIEW_REQUIRED",
        +                  "ACCEPTANCE_REQUIRED",
        +                  "INVALID_TOKEN"
        +                ],
        +                "type": "string"
        +              },
        +              "details": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "message": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "recoverable": {
        +                "type": "boolean"
        +              },
        +              "retry_after_seconds": {
        +                "anyOf": [
        +                  {
        +                    "minimum": 0,
        +                    "type": "integer"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              }
        +            },
        +            "required": [
        +              "code",
        +              "message",
        +              "recoverable"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      }
        +    },
        +    "required": [
        +      "_meta"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "_meta": {
        +        "additionalProperties": false,
        +        "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
        +        "properties": {
        +          "deliverables": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
        +                "properties": {
        +                  "docx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "dxf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "expires_at": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  },
        +                  "pdf_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "xlsx_url": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "expires_at"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "document_id": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "issued_at": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "rate_limit_remaining": {
        +            "anyOf": [
        +              {
        +                "minimum": 0,
        +                "type": "integer"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "request_id": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "schema_version": {
        +            "const": "1.0.0",
        +            "default": "1.0.0",
        +            "type": "string"
        +          },
        +          "scope_boundary": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
        +                "properties": {
        +                  "not_in_scope": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "produced": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "recommended_companions": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "type": "string"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  }
        +                },
        +                "required": [
        +                  "produced",
        +                  "not_in_scope"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tier": {
        +            "enum": [
        +              "free",
        +              "paid"
        +            ],
        +            "type": "string"
        +          },
        +          "tier_upgrade": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "description": "Canonical schema § 0.7 — present on free-tier responses only.",
        +                "properties": {
        +                  "available_tiers": {
        +                    "items": {
        +                      "additionalProperties": false,
        +                      "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
        +                      "properties": {
        +                        "billing": {
        +                          "enum": [
        +                            "one_off",
        +                            "monthly",
        +                            "annual"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "currency": {
        +                          "enum": [
        +                            "GBP",
        +                            "SGD",
        +                            "EUR",
        +                            "USD",
        +                            "CAD",
        +                            "AUD",
        +                            "NZD",
        +                            "MYR"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "display_name": {
        +                          "type": "string"
        +                        },
        +                        "price_local": {
        +                          "type": "number"
        +                        },
        +                        "tier_slug": {
        +                          "enum": [
        +                            "7_day_pass",
        +                            "solo",
        +                            "studio",
        +                            "practice"
        +                          ],
        +                          "type": "string"
        +                        },
        +                        "unlock_summary": {
        +                          "minLength": 1,
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "tier_slug",
        +                        "display_name",
        +                        "price_local",
        +                        "currency",
        +                        "billing",
        +                        "unlock_summary"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "current_tier": {
        +                    "const": "free",
        +                    "default": "free",
        +                    "type": "string"
        +                  },
        +                  "pass_credit": {
        +                    "anyOf": [
        +                      {
        +                        "additionalProperties": false,
        +                        "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
        +                        "properties": {
        +                          "amount_local": {
        +                            "type": "number"
        +                          },
        +                          "applies_to": {
        +                            "const": "solo_first_month",
        +                            "default": "solo_first_month",
        +                            "type": "string"
        +                          },
        +                          "currency": {
        +                            "type": "string"
        +                          },
        +                          "redeemable_until": {
        +                            "type": "string"
        +                          }
        +                        },
        +                        "required": [
        +                          "amount_local",
        +                          "currency",
        +                          "redeemable_until"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null
        +                  },
        +                  "pricing_url": {
        +                    "default": "https://civilquants.com/pricing",
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "available_tiers"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "tos_url": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "upgrade_hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "warranty_disclaimer": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          }
        +        },
        +        "required": [
        +          "request_id",
        +          "issued_at",
        +          "tier"
        +        ],
        +        "type": "object"
        +      },
        +      "data": {
        +        "default": null,
        +        "title": "Data"
        +      },
        +      "error": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": false,
        +            "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
        +            "properties": {
        +              "code": {
        +                "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
        +                "enum": [
        +                  "RATE_LIMIT_EXCEEDED",
        +                  "TIER_INSUFFICIENT",
        +                  "INVALID_INPUT",
        +                  "SCHEMA_VERSION_MISMATCH",
        +                  "SCHEMA_INVARIANT_VIOLATION",
        +                  "UPSTREAM_TIMEOUT",
        +                  "BACKEND_FAILURE",
        +                  "IP_BLOCKED",
        +                  "RESOURCE_NOT_FOUND",
        +                  "RENDER_FAILURE",
        +                  "OCR_LOW_CONFIDENCE",
        +                  "MANUAL_REVIEW_REQUIRED",
        +                  "ACCEPTANCE_REQUIRED",
        +                  "INVALID_TOKEN"
        +                ],
        +                "type": "string"
        +              },
        +              "details": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": true,
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "message": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "recoverable": {
        +                "type": "boolean"
        +              },
        +              "retry_after_seconds": {
        +                "anyOf": [
        +                  {
        +                    "minimum": 0,
        +                    "type": "integer"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              }
        +            },
        +            "required": [
        +              "code",
        +              "message",
        +              "recoverable"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      }
        +    },
        +    "required": [
        +      "_meta"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedrender_skill_report2 fields changed
      • changedInput schema / properties / request / properties / compute_results / items / description
        Previous value: -"Schema § 1.1 — the typed payload returned inside `MCPResponse[ComputeResult]`.\n\nFree-tier responses MUST omit `drawings` and `audit_trail` (the bridge\nenforces this); paid-tier responses populate both. `text_summary` is\nbounded to 2000 chars — keeps the LLM-facing summary token-cheap and\nforces longer narrative into BoQ row descriptions where it belongs."New value: +"Schema § 1.1 — the typed payload returned inside `MCPResponse[ComputeResult]`.\n\nFree-tier responses MUST omit `drawings` and `audit_trail` (the bridge\nenforces this); paid-tier responses populate both. `text_summary` is\nbounded to 2000 chars — keeps the LLM-facing summary token-cheap and\nforces longer narrative into BoQ row descriptions where it belongs.\n`warnings` is the non-fatal geometry advisory list (both tiers)."
      • addedInput schema / properties / request / properties / compute_results / items / properties / warnings
        Added value: +{
        +  "items": {
        +    "additionalProperties": false,
        +    "description": "Schema § 1.8 — a non-fatal geometry advisory (56th-fire T2).\n\nThe wire projection of the engine's `core.GeometryWarning`. Advisory only:\na warning NEVER changes a measured quantity — it flags geometry that is\nvalid but likely a mistake (e.g. a stale dependent-height default). Present\non BOTH tiers — a correctness/safety signal, not a paid feature.",
        +    "properties": {
        +      "affected_params": {
        +        "items": {
        +          "type": "string"
        +        },
        +        "type": "array"
        +      },
        +      "code": {
        +        "minLength": 1,
        +        "type": "string"
        +      },
        +      "detail": {
        +        "additionalProperties": {
        +          "type": "number"
        +        },
        +        "type": "object"
        +      },
        +      "message": {
        +        "minLength": 1,
        +        "type": "string"
        +      },
        +      "severity": {
        +        "enum": [
        +          "info",
        +          "advisory",
        +          "caution"
        +        ],
        +        "type": "string"
        +      }
        +    },
        +    "required": [
        +      "code",
        +      "severity",
        +      "message"
        +    ],
        +    "type": "object"
        +  },
        +  "type": "array"
        +}
  12. 50 tool updates
    • First observedcompute_anchored_wall
    • First observedcompute_attenuation_tank
    • First observedcompute_bored_pile_wall
    • First observedcompute_box_culvert
    • First observedcompute_cantilever_wall
    • First observedcompute_carrier_pipe_run
    • First observedcompute_catchpit
    • First observedcompute_combined_services_trench
    • First observedcompute_connection_to_existing
    • First observedcompute_counterfort_wall
    • First observedcompute_ditch
    • First observedcompute_edge_drain
    • First observedcompute_embankment_cross_section
    • First observedcompute_end_area_earthworks
    • First observedcompute_flexible_pavement
    • First observedcompute_french_drain
    • First observedcompute_gabion_wall
    • First observedcompute_gravity_wall
    • First observedcompute_gully
    • First observedcompute_hard_material_in_trench
    • First observedcompute_headwall
    • First observedcompute_headwall_attenuation_outlet
    • First observedcompute_headwall_precast
    • First observedcompute_highway_drainage_channel
    • First observedcompute_kerb_run
    • First observedcompute_lighting_column
    • First observedcompute_manhole
    • First observedcompute_manhole_precast
    • First observedcompute_pad_foundation
    • First observedcompute_parapet
    • First observedcompute_permeable_pavement
    • First observedcompute_petrol_oil_interceptor
    • First observedcompute_pipe_bedding
    • First observedcompute_pipework_testing
    • First observedcompute_reinforced_soil_wall
    • First observedcompute_rigid_pavement
    • First observedcompute_road_marking
    • First observedcompute_single_service_run
    • First observedcompute_soakaway
    • First observedcompute_soil_nailed_slope
    • First observedcompute_strip_foundation
    • First observedcompute_swale
    • First observedcompute_traffic_sign
    • First observedcompute_utility_chamber
    • First observedcompute_utility_kiosk_base
    • First observedcompute_vehicle_restraint_system
    • First observedget_project
    • First observedrecompute_project
    • First observedrender_skill_report
    • First observedsave_project

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    B
    maintenance
    Enables AI assistants to search and manage construction project economic data, including unit price analyses, resource catalogs, budget trees, and price lists, with secure multi-tenant access.
    MIT
  • A
    license
    A
    quality
    B
    maintenance
    Provides construction-supervision tools for small-to-medium building projects, including stage guidance, inspection checklists, progress tracking, next-stage recommendations, and quotation analysis. It enables local, standards-based MCP interaction over stdio without third-party MCP SDKs.
    5
    MIT
  • A
    license
    A
    quality
    B
    maintenance
    Enables construction teams to create local projects, record sourced field evidence, run deterministic quantity calculations, and draft daily logs, estimates, and change orders with visible assumptions and human approval gates. Keeps all data local and portable with no external side effects.
    10
    Apache 2.0
Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources